summaryrefslogtreecommitdiffstats
path: root/desktop-widgets/divecomputermanagementdialog.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'desktop-widgets/divecomputermanagementdialog.cpp')
-rw-r--r--desktop-widgets/divecomputermanagementdialog.cpp69
1 files changed, 69 insertions, 0 deletions
diff --git a/desktop-widgets/divecomputermanagementdialog.cpp b/desktop-widgets/divecomputermanagementdialog.cpp
new file mode 100644
index 000000000..fd9273ffb
--- /dev/null
+++ b/desktop-widgets/divecomputermanagementdialog.cpp
@@ -0,0 +1,69 @@
+#include "divecomputermanagementdialog.h"
+#include "mainwindow.h"
+#include "helpers.h"
+#include "divecomputermodel.h"
+#include <QMessageBox>
+#include <QShortcut>
+
+DiveComputerManagementDialog::DiveComputerManagementDialog(QWidget *parent, Qt::WindowFlags f) : QDialog(parent, f),
+ model(0)
+{
+ ui.setupUi(this);
+ init();
+ connect(ui.tableView, SIGNAL(clicked(QModelIndex)), this, SLOT(tryRemove(QModelIndex)));
+ QShortcut *close = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_W), this);
+ connect(close, SIGNAL(activated()), this, SLOT(close()));
+ QShortcut *quit = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_Q), this);
+ connect(quit, SIGNAL(activated()), parent, SLOT(close()));
+}
+
+void DiveComputerManagementDialog::init()
+{
+ delete model;
+ model = new DiveComputerModel(dcList.dcMap);
+ ui.tableView->setModel(model);
+}
+
+DiveComputerManagementDialog *DiveComputerManagementDialog::instance()
+{
+ static DiveComputerManagementDialog *self = new DiveComputerManagementDialog(MainWindow::instance());
+ self->setAttribute(Qt::WA_QuitOnClose, false);
+ return self;
+}
+
+void DiveComputerManagementDialog::update()
+{
+ model->update();
+ ui.tableView->resizeColumnsToContents();
+ ui.tableView->setColumnWidth(DiveComputerModel::REMOVE, 22);
+ layout()->activate();
+}
+
+void DiveComputerManagementDialog::tryRemove(const QModelIndex &index)
+{
+ if (index.column() != DiveComputerModel::REMOVE)
+ return;
+
+ QMessageBox::StandardButton response = QMessageBox::question(
+ this, TITLE_OR_TEXT(
+ tr("Remove the selected dive computer?"),
+ tr("Are you sure that you want to \n remove the selected dive computer?")),
+ QMessageBox::Ok | QMessageBox::Cancel);
+
+ if (response == QMessageBox::Ok)
+ model->remove(index);
+}
+
+void DiveComputerManagementDialog::accept()
+{
+ model->keepWorkingList();
+ hide();
+ close();
+}
+
+void DiveComputerManagementDialog::reject()
+{
+ model->dropWorkingList();
+ hide();
+ close();
+}