mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-28 13:10:19 +00:00
215e5a4544
Add a small proxy-model on top of DiveComputerModel so that clicking on table headers makes the table sortable. The UI feature here is not as important as the fact that the UI does its own sorting and we can keep the device-table in the core sorted differently. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
63 lines
1.9 KiB
C++
63 lines
1.9 KiB
C++
// SPDX-License-Identifier: GPL-2.0
|
|
#include "desktop-widgets/divecomputermanagementdialog.h"
|
|
#include "desktop-widgets/mainwindow.h"
|
|
#include "core/qthelper.h"
|
|
#include "qt-models/divecomputermodel.h"
|
|
#include <QMessageBox>
|
|
#include <QShortcut>
|
|
|
|
DiveComputerManagementDialog::DiveComputerManagementDialog(QWidget *parent, Qt::WindowFlags f) : QDialog(parent, f)
|
|
{
|
|
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()
|
|
{
|
|
model.reset(new DiveComputerModel);
|
|
proxyModel.setSourceModel(model.get());
|
|
ui.tableView->setModel(&proxyModel);
|
|
ui.tableView->setSortingEnabled(true);
|
|
ui.tableView->resizeColumnsToContents();
|
|
ui.tableView->setColumnWidth(DiveComputerModel::REMOVE, 22);
|
|
layout()->activate();
|
|
}
|
|
|
|
DiveComputerManagementDialog *DiveComputerManagementDialog::instance()
|
|
{
|
|
static DiveComputerManagementDialog *self = new DiveComputerManagementDialog(MainWindow::instance());
|
|
return self;
|
|
}
|
|
|
|
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()
|
|
{
|
|
hide();
|
|
close();
|
|
}
|