diff options
author | Tomaz Canabrava <tcanabrava@kde.org> | 2013-05-04 16:12:43 -0300 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2013-05-04 19:49:52 -0700 |
commit | 8353d571643c83514012a84cdc904353d2c4972e (patch) | |
tree | d862bb5b805ffae00f075723ce72788837dbb684 /qt-ui | |
parent | fcd6903621da975a83bfb6c9a9769221c4203ad9 (diff) | |
download | subsurface-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.cpp | 2 | ||||
-rw-r--r-- | qt-ui/mainwindow.ui | 9 | ||||
-rw-r--r-- | qt-ui/profilegraphics.cpp | 26 | ||||
-rw-r--r-- | qt-ui/profilegraphics.h | 17 |
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 |