In planner / add dive use 'ESC' to hide the gas selection popup

Not sure if there are other keys we should support.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2013-09-21 08:50:09 -07:00
parent a8888eaf26
commit 5e6ed53e40
2 changed files with 12 additions and 0 deletions

View file

@ -164,6 +164,7 @@ DivePlannerGraphics::DivePlannerGraphics(QWidget* parent): QGraphicsView(parent)
gasListView->setWindowFlags(Qt::Popup);
gasListView->setModel(airTypes());
gasListView->hide();
gasListView->installEventFilter(this);
connect(gasListView, SIGNAL(activated(QModelIndex)), this, SLOT(selectGas(QModelIndex)));
connect(plannerModel, SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SLOT(drawProfile()));
@ -175,6 +176,16 @@ DivePlannerGraphics::DivePlannerGraphics(QWidget* parent): QGraphicsView(parent)
setRenderHint(QPainter::Antialiasing);
}
bool DivePlannerGraphics::eventFilter(QObject *object, QEvent* event)
{
if (object == gasListView && event->type() == QEvent::KeyPress) {
QKeyEvent *ke = static_cast<QKeyEvent *>(event);
if (ke->key() == Qt::Key_Escape)
gasListView->hide();
}
return false;
}
void DivePlannerGraphics::pointInserted(const QModelIndex& parent, int start , int end)
{
DiveHandler *item = new DiveHandler ();

View file

@ -153,6 +153,7 @@ private slots:
void selectGas(const QModelIndex& index);
void pointInserted(const QModelIndex&, int start, int end);
void pointsRemoved(const QModelIndex&, int start, int end);
bool eventFilter(QObject *object, QEvent* event);
private:
void moveActiveHandler(const QPointF& MappedPos, const int pos);