summaryrefslogtreecommitdiffstats
path: root/qt-ui
diff options
context:
space:
mode:
authorGravatar Tomaz Canabrava <tcanabrava@kde.org>2013-05-04 16:12:43 -0300
committerGravatar Dirk Hohndel <dirk@hohndel.org>2013-05-04 19:49:52 -0700
commit8353d571643c83514012a84cdc904353d2c4972e (patch)
treed862bb5b805ffae00f075723ce72788837dbb684 /qt-ui
parentfcd6903621da975a83bfb6c9a9769221c4203ad9 (diff)
downloadsubsurface-8353d571643c83514012a84cdc904353d2c4972e.tar.gz
Started the code for the Profile Plotting
This small patch adds a new class - ProfileGraphicsView it's a QGraphicsView based class that will holds all graphics-items for the plotting. The setup is simple, just call ui->ListView->plot( dive ) ( that's already a ProfileGraphicsView and magic will happen. Since Im using a QGraphicsView , the size of the canvas doesn't matter and I'm fixing it at 0,0,100,100. when a resize is done, the resizeEvent will be called, fitting the scene's rectangle on the view. Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'qt-ui')
-rw-r--r--qt-ui/mainwindow.cpp2
-rw-r--r--qt-ui/mainwindow.ui9
-rw-r--r--qt-ui/profilegraphics.cpp26
-rw-r--r--qt-ui/profilegraphics.h17
4 files changed, 51 insertions, 3 deletions
diff --git a/qt-ui/mainwindow.cpp b/qt-ui/mainwindow.cpp
index 3f545171e..8ac0ad871 100644
--- a/qt-ui/mainwindow.cpp
+++ b/qt-ui/mainwindow.cpp
@@ -67,7 +67,6 @@ void MainWindow::on_actionOpen_triggered()
g_error_free(error);
error = NULL;
}
-
process_dives(FALSE, FALSE);
ui->InfoWidget->reload();
@@ -94,6 +93,7 @@ void MainWindow::dive_selection_changed(const QItemSelection& newSelection, cons
continue;
select_dive(get_divenr(d));
}
+ ui->ProfileWidget->plot(get_dive(selected_dive));
}
void MainWindow::on_actionSave_triggered()
diff --git a/qt-ui/mainwindow.ui b/qt-ui/mainwindow.ui
index fe97d98b4..7dfbae746 100644
--- a/qt-ui/mainwindow.ui
+++ b/qt-ui/mainwindow.ui
@@ -25,7 +25,7 @@
<enum>Qt::Horizontal</enum>
</property>
<widget class="MainTab" name="InfoWidget" native="true"/>
- <widget class="QGraphicsView" name="ProfileWidget"/>
+ <widget class="ProfileGraphicsView" name="ProfileWidget"/>
</widget>
<widget class="DiveListView" name="ListWidget">
<property name="styleSheet">
@@ -88,7 +88,7 @@
<x>0</x>
<y>0</y>
<width>763</width>
- <height>19</height>
+ <height>25</height>
</rect>
</property>
<widget class="QMenu" name="menuFile">
@@ -339,6 +339,11 @@
<extends>QTreeView</extends>
<header>divelistview.h</header>
</customwidget>
+ <customwidget>
+ <class>ProfileGraphicsView</class>
+ <extends>QGraphicsView</extends>
+ <header>profilegraphics.h</header>
+ </customwidget>
</customwidgets>
<resources/>
<connections/>
diff --git a/qt-ui/profilegraphics.cpp b/qt-ui/profilegraphics.cpp
new file mode 100644
index 000000000..59a47826f
--- /dev/null
+++ b/qt-ui/profilegraphics.cpp
@@ -0,0 +1,26 @@
+#include "profilegraphics.h"
+
+#include <QGraphicsScene>
+#include <QResizeEvent>
+
+#include <QDebug>
+
+ProfileGraphicsView::ProfileGraphicsView(QWidget* parent) : QGraphicsView(parent)
+{
+ setScene(new QGraphicsScene());
+ scene()->setSceneRect(0,0,100,100);
+}
+
+void ProfileGraphicsView::plot(struct dive *d)
+{
+ qDebug() << "Start the plotting of the dive here.";
+}
+
+void ProfileGraphicsView::resizeEvent(QResizeEvent *event)
+{
+ // Fits the scene's rectangle on the view.
+ // I can pass some parameters to this -
+ // like Qt::IgnoreAspectRatio or Qt::KeepAspectRatio
+ QRectF r = scene()->sceneRect();
+ fitInView ( r.x() - 2, r.y() -2, r.width() + 4, r.height() + 4); // do a little bit of spacing;
+}
diff --git a/qt-ui/profilegraphics.h b/qt-ui/profilegraphics.h
new file mode 100644
index 000000000..e3380abcd
--- /dev/null
+++ b/qt-ui/profilegraphics.h
@@ -0,0 +1,17 @@
+#ifndef PROFILEGRAPHICS_H
+#define PROFILEGRAPHICS_H
+
+#include <QGraphicsView>
+
+class ProfileGraphicsView : public QGraphicsView {
+Q_OBJECT
+public:
+ ProfileGraphicsView(QWidget* parent = 0);
+ void plot(struct dive *d);
+
+protected:
+ void resizeEvent(QResizeEvent *event);
+
+};
+
+#endif