summaryrefslogtreecommitdiffstats
path: root/qt-ui
diff options
context:
space:
mode:
authorGravatar Maximilian Güntner <maximilian.guentner@gmail.com>2013-09-25 02:39:21 +0200
committerGravatar Maximilian Güntner <maximilian.guentner@gmail.com>2013-09-27 18:45:04 +0200
commit88172571ca3105fcccf6f7a23a0c60fb0f078e0e (patch)
treebca7ea4c372b05cef6cfe79b8cdad951aeb5c5dd /qt-ui
parent248f1b86d15b63fe5774667f8408e2abbd5f9504 (diff)
downloadsubsurface-88172571ca3105fcccf6f7a23a0c60fb0f078e0e.tar.gz
Added a toolbar to the profile
The toolbar adds two buttons to the profile. The user can now toggle the scaling (zoomed to dive/round up to 30 mins) and adding /removing ruler to/from the profile using this toolbar. Signed-off-by: Maximilian Güntner <maximilian.guentner@gmail.com>
Diffstat (limited to 'qt-ui')
-rw-r--r--qt-ui/profilegraphics.cpp40
-rw-r--r--qt-ui/profilegraphics.h6
2 files changed, 45 insertions, 1 deletions
diff --git a/qt-ui/profilegraphics.cpp b/qt-ui/profilegraphics.cpp
index c0f1431b7..f6550a7d8 100644
--- a/qt-ui/profilegraphics.cpp
+++ b/qt-ui/profilegraphics.cpp
@@ -15,6 +15,7 @@
#include <QPropertyAnimation>
#include <QGraphicsSceneHoverEvent>
#include <QMouseEvent>
+#include <QToolBar>
#include <qtextdocument.h>
#include <limits>
@@ -44,7 +45,7 @@ extern struct ev_select *ev_namelist;
extern int evn_allocated;
extern int evn_used;
-ProfileGraphicsView::ProfileGraphicsView(QWidget* parent) : QGraphicsView(parent), toolTip(0) , dive(0), diveDC(0), rulerItem(0)
+ProfileGraphicsView::ProfileGraphicsView(QWidget* parent) : QGraphicsView(parent), toolTip(0) , dive(0), diveDC(0), rulerItem(0), toolBarProxy(0)
{
printMode = false;
isGrayscale = false;
@@ -182,6 +183,11 @@ void ProfileGraphicsView::clear()
toolTip->deleteLater();
toolTip = 0;
}
+ if(toolBarProxy) {
+ scene()->removeItem(toolBarProxy);
+ toolBarProxy->deleteLater();
+ toolBarProxy = 0;
+ }
if(rulerItem) {
remove_ruler();
rulerItem->destNode()->deleteLater();
@@ -349,6 +355,9 @@ void ProfileGraphicsView::plot(struct dive *d, bool forceRedraw)
scene()->addItem(timeEditor);
}
+ if (!printMode)
+ addControlItems();
+
if (rulerEnabled && !printMode)
add_ruler();
}
@@ -383,6 +392,23 @@ void ProfileGraphicsView::plot_depth_scale()
depthMarkers->setPos(depthMarkers->pos().x() - 10, 0);
}
+void ProfileGraphicsView::addControlItems()
+{
+ QAction *scaleAction = new QAction(QIcon(":scale"), tr("Scale"), this);
+ QAction *rulerAction = new QAction(QIcon(":ruler"), tr("Ruler"), this);
+ QToolBar *toolBar = new QToolBar("", 0);
+ toolBar->addAction(rulerAction);
+ toolBar->addAction(scaleAction);
+ //make toolbar transparent
+ toolBar->setStyleSheet(QString::fromUtf8 ("background-color: rgba(255,255,255,0);"));
+
+ connect(scaleAction, SIGNAL(triggered()), this, SLOT(on_scaleAction()));
+ connect(rulerAction, SIGNAL(triggered()), this, SLOT(on_rulerAction()));
+ toolBarProxy = scene()->addWidget(toolBar);
+ //Put it into the lower right corner of the profile
+ toolBarProxy->setPos(gc.maxx-toolBar->width(), gc.maxy-toolBar->height());
+}
+
void ProfileGraphicsView::plot_pp_text()
{
double pp, dpp, m;
@@ -1241,6 +1267,18 @@ void ProfileGraphicsView::edit_dive_time(const QString& time)
refresh();
}
+void ProfileGraphicsView::on_rulerAction()
+{
+ rulerEnabled = !rulerEnabled;
+ refresh();
+}
+
+void ProfileGraphicsView::on_scaleAction()
+{
+ zoomed_plot = !zoomed_plot;
+ refresh();
+}
+
void ToolTipItem::addToolTip(const QString& toolTip, const QIcon& icon)
{
QGraphicsPixmapItem *iconItem = 0;
diff --git a/qt-ui/profilegraphics.h b/qt-ui/profilegraphics.h
index deb729023..7cbc53e15 100644
--- a/qt-ui/profilegraphics.h
+++ b/qt-ui/profilegraphics.h
@@ -149,6 +149,8 @@ protected:
public slots:
void refresh();
void edit_dive_time(const QString& time);
+ void on_rulerAction();
+ void on_scaleAction();
private:
void plot_depth_profile();
@@ -171,6 +173,9 @@ private:
void plot_pp_text();
void plot_depth_scale();
+
+ void addControlItems();
+
void create_ruler();
void add_ruler();
void remove_ruler();
@@ -197,6 +202,7 @@ private:
QGraphicsItem* depthMarkers;
QGraphicsItem* diveComputer;
RulerItem *rulerItem;
+ QGraphicsProxyWidget *toolBarProxy;
// For 'Plan' mode.:
GraphicsTextEditor *depthEditor;