diff options
author | Dirk Hohndel <dirk@hohndel.org> | 2015-11-02 19:54:34 -0800 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2015-11-02 19:54:34 -0800 |
commit | 8ea7f404574c2ee571d2dde6bb6be3791e962150 (patch) | |
tree | 6a050178bfc71bf10558968f2a3bc0a12d8c525f /desktop-widgets/divecomputermanagementdialog.cpp | |
parent | b273c1b0ca7bfe933e7c83742f1610f6bbe3f4d3 (diff) | |
parent | df7818a9b8495285b4d9812e5d6d50d6f9c08813 (diff) | |
download | subsurface-8ea7f404574c2ee571d2dde6bb6be3791e962150.tar.gz |
Merge branch 'cmakeAndPreferences'
Diffstat (limited to 'desktop-widgets/divecomputermanagementdialog.cpp')
-rw-r--r-- | desktop-widgets/divecomputermanagementdialog.cpp | 69 |
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(); +} |