Center on the dive site also via keyboard

Now mouse and keyboard navigation over the list of current
dive sites will update the marble globe position.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Tomaz Canabrava 2015-09-25 13:21:23 -03:00 committed by Dirk Hohndel
parent 6633ab302d
commit 1239056fb6
3 changed files with 13 additions and 0 deletions

View file

@ -385,6 +385,7 @@ DiveLocationLineEdit::DiveLocationLineEdit(QWidget *parent) : QLineEdit(parent),
connect(this, &QLineEdit::textEdited, this, &DiveLocationLineEdit::setTemporaryDiveSiteName);
connect(view, &QAbstractItemView::activated, this, &DiveLocationLineEdit::itemActivated);
connect(view, &QAbstractItemView::entered, this, &DiveLocationLineEdit::entered);
connect(view, &DiveLocationListView::currentIndexChanged, this, &DiveLocationLineEdit::currentChanged);
}
bool DiveLocationLineEdit::eventFilter(QObject *o, QEvent *e)
@ -561,3 +562,9 @@ DiveLocationListView::DiveLocationListView(QWidget *parent)
{
}
void DiveLocationListView::currentChanged(const QModelIndex& current, const QModelIndex& previous)
{
QListView::currentChanged(current, previous);
emit currentIndexChanged(current);
}

View file

@ -72,6 +72,10 @@ class DiveLocationListView : public QListView {
Q_OBJECT
public:
DiveLocationListView(QWidget *parent = 0);
protected:
virtual void currentChanged(const QModelIndex& current, const QModelIndex& previous);
signals:
void currentIndexChanged(const QModelIndex& current);
};
class DiveLocationLineEdit : public QLineEdit {
@ -90,6 +94,7 @@ public:
signals:
void diveSiteSelected(uint32_t uuid);
void entered(const QModelIndex& index);
void currentChanged(const QModelIndex& index);
protected:
void keyPressEvent(QKeyEvent *ev);

View file

@ -58,6 +58,7 @@ MainTab::MainTab(QWidget *parent) : QTabWidget(parent),
connect(ui.editDiveSiteButton, SIGNAL(clicked()), MainWindow::instance(), SIGNAL(startDiveSiteEdit()));
#ifndef NO_MARBLE
connect(ui.location, &DiveLocationLineEdit::entered, GlobeGPS::instance(), &GlobeGPS::centerOnIndex);
connect(ui.location, &DiveLocationLineEdit::currentChanged, GlobeGPS::instance(), &GlobeGPS::centerOnIndex);
#endif
QAction *action = new QAction(tr("Apply changes"), this);