diff options
author | Tomaz Canabrava <tcanabrava@kde.org> | 2013-07-21 13:54:21 -0300 |
---|---|---|
committer | Tomaz Canabrava <tcanabrava@kde.org> | 2013-07-21 13:54:21 -0300 |
commit | 67fec4da704086f40f5d6699fc93603fdd0baaef (patch) | |
tree | c6008b7d002f852d862ba1950616f47f373bfae1 | |
parent | 83c73168b035064899cc992398d55dd03b422b6f (diff) | |
download | subsurface-67fec4da704086f40f5d6699fc93603fdd0baaef.tar.gz |
Added the possibility to choose gases in the planner.
Added the possibility to choose gases in the planner,
now the user should click on the name of the gas, a
popup window will appear, asking the user to choose
what gas he wants for that ascent / descent.
now we need to hook that up with the createDecoStops
method that calculates the decompression.
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
-rw-r--r-- | qt-ui/diveplanner.cpp | 29 | ||||
-rw-r--r-- | qt-ui/diveplanner.h | 10 |
2 files changed, 34 insertions, 5 deletions
diff --git a/qt-ui/diveplanner.cpp b/qt-ui/diveplanner.cpp index fa959cf97..25d5df11d 100644 --- a/qt-ui/diveplanner.cpp +++ b/qt-ui/diveplanner.cpp @@ -11,7 +11,10 @@ #include <QGraphicsSceneMouseEvent> #include <QMessageBox> #include <QStringListModel> -#include <boost/graph/graph_concepts.hpp> +#include <QGraphicsProxyWidget> +#include <QListView> +#include <QDesktopWidget> +#include <QModelIndex> #include "ui_diveplanner.h" #include "mainwindow.h" @@ -136,8 +139,14 @@ DivePlannerGraphics::DivePlannerGraphics(QWidget* parent): QGraphicsView(parent) ADD_ACTION(Qt::Key_Right, keyRightAction()); #undef ADD_ACTION - QStringListModel *model = new QStringListModel(QStringList() << tr("AIR") << tr("EAN32") << tr("EAN36")); + // Prepare the stuff for the gas-choices. + gasChoices = new QStringListModel(QStringList() << tr("AIR") << tr("EAN32") << tr("EAN36")); + gasListView = new QListView(); + gasListView->setWindowFlags(Qt::FramelessWindowHint); + gasListView->setModel(gasChoices); + gasListView->hide(); + connect(gasListView, SIGNAL(activated(QModelIndex)), this, SLOT(selectGas(QModelIndex))); setRenderHint(QPainter::Antialiasing); } @@ -363,16 +372,28 @@ void DivePlannerGraphics::mouseDoubleClickEvent(QMouseEvent* event) gasChooseBtn ->setText(tr("Air")); scene()->addItem(gasChooseBtn); gasChooseBtn->setZValue(10); - connect(gasChooseBtn, SIGNAL(clicked()), this, SLOT(selectGasClicked())); + connect(gasChooseBtn, SIGNAL(clicked()), this, SLOT(prepareSelectGas())); gases << gasChooseBtn; createDecoStops(); } -void DivePlannerGraphics::selectGasClicked() +void DivePlannerGraphics::prepareSelectGas() { + currentGasChoice = static_cast<Button*>(sender()); + QPoint c = QCursor::pos(); + gasListView->setGeometry(c.x(), c.y(), 150, 100); + gasListView->show(); } +void DivePlannerGraphics::selectGas(const QModelIndex& index) +{ + QString gasSelected = gasListView->model()->data(index, Qt::DisplayRole).toString(); + currentGasChoice->setText(gasSelected); + gasListView->hide(); +} + + void DivePlannerGraphics::createDecoStops() { qDeleteAll(lines); diff --git a/qt-ui/diveplanner.h b/qt-ui/diveplanner.h index cf8bb0c80..2239e013d 100644 --- a/qt-ui/diveplanner.h +++ b/qt-ui/diveplanner.h @@ -5,6 +5,10 @@ #include <QGraphicsPathItem> #include <QDialog> +class QListView; +class QStringListModel; +class QModelIndex; + class Button : public QObject, public QGraphicsRectItem { Q_OBJECT public: @@ -86,7 +90,8 @@ private slots: void decreaseDepth();; void okClicked(); void cancelClicked(); - void selectGasClicked(); + void prepareSelectGas(); + void selectGas(const QModelIndex& index); private: void moveActiveHandler(const QPointF& pos); @@ -102,6 +107,9 @@ private: user cna click to choose a new gas. */ QList<Button*> gases; + QListView *gasListView; + QStringListModel *gasChoices; + Button *currentGasChoice; /* those are the lines that follows the mouse. */ QGraphicsLineItem *verticalLine; |