diff options
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(); +} |