diff options
Diffstat (limited to 'desktop-widgets/tab-widgets/TabDiveSite.cpp')
-rw-r--r-- | desktop-widgets/tab-widgets/TabDiveSite.cpp | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/desktop-widgets/tab-widgets/TabDiveSite.cpp b/desktop-widgets/tab-widgets/TabDiveSite.cpp index 3ff693e59..9e269ee26 100644 --- a/desktop-widgets/tab-widgets/TabDiveSite.cpp +++ b/desktop-widgets/tab-widgets/TabDiveSite.cpp @@ -4,9 +4,10 @@ #include "core/divesite.h" #include "core/divefilter.h" #include "qt-models/divelocationmodel.h" +#include "desktop-widgets/mainwindow.h" // to place message box #include "commands/command.h" -#include <qt-models/divecomputerextradatamodel.h> +#include <QMessageBox> TabDiveSite::TabDiveSite(QWidget *parent) : TabBase(parent) { @@ -25,6 +26,7 @@ TabDiveSite::TabDiveSite(QWidget *parent) : TabBase(parent) ui.diveSites->view()->setColumnHidden(i, true); connect(ui.diveSites, &TableView::addButtonClicked, this, &TabDiveSite::add); + connect(ui.diveSites, &TableView::itemClicked, this, &TabDiveSite::diveSiteClicked); connect(ui.diveSites->view()->selectionModel(), &QItemSelectionModel::selectionChanged, this, &TabDiveSite::selectionChanged); // Subtle: We depend on this slot being executed after the slot in the model. @@ -40,6 +42,26 @@ void TabDiveSite::clear() { } +void TabDiveSite::diveSiteClicked(const QModelIndex &index) +{ + struct dive_site *ds = model.getDiveSite(index); + if (!ds) + return; + switch (index.column()) { + case LocationInformationModel::EDIT: + MainWindow::instance()->editDiveSite(ds); + break; + case LocationInformationModel::REMOVE: + if (ds->dives.nr > 0 && + QMessageBox::warning(MainWindow::instance(), tr("Delete dive site?"), + tr("This dive site has %n dive(s). Do you really want to delete it?\n", "", ds->dives.nr), + QMessageBox::Yes|QMessageBox::No) == QMessageBox::No) + return; + Command::deleteDiveSites(QVector<dive_site *>{ds}); + break; + } +} + void TabDiveSite::add() { // This is mighty dirty: We hook into the "dive site added" signal and |