summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Tomaz Canabrava <tcanabrava@kde.org>2013-07-21 13:54:21 -0300
committerGravatar Tomaz Canabrava <tcanabrava@kde.org>2013-07-21 13:54:21 -0300
commit67fec4da704086f40f5d6699fc93603fdd0baaef (patch)
treec6008b7d002f852d862ba1950616f47f373bfae1
parent83c73168b035064899cc992398d55dd03b422b6f (diff)
downloadsubsurface-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.cpp29
-rw-r--r--qt-ui/diveplanner.h10
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;