From 3264255a7a2466f1a7d093cf3c26ae564e846472 Mon Sep 17 00:00:00 2001 From: Tomaz Canabrava Date: Thu, 28 Nov 2013 09:17:30 -0200 Subject: Make it possible to hide some columns on the Cylinders Equipment pane. This patch makes it possible to hide some columns on the Cylinders Equipment pane. The 'remove' and 'type' are impossible to hide, since they are the most important ones for a non-tech diver. Fixes #281 Signed-off-by: Tomaz Canabrava Signed-off-by: Dirk Hohndel --- qt-ui/maintab.cpp | 43 +++++++++++++++++++++++++++++++++++++++++++ qt-ui/maintab.h | 3 ++- qt-ui/models.h | 2 +- 3 files changed, 46 insertions(+), 2 deletions(-) diff --git a/qt-ui/maintab.cpp b/qt-ui/maintab.cpp index 8c0f6849a..0400aa7ed 100644 --- a/qt-ui/maintab.cpp +++ b/qt-ui/maintab.cpp @@ -20,6 +20,7 @@ #include #include #include +#include #include #include @@ -109,6 +110,48 @@ MainTab::MainTab(QWidget *parent) : QTabWidget(parent), ui.scrollArea_3->viewport()->setPalette(p); ui.scrollArea_4->viewport()->setPalette(p); } + ui.cylinders->view()->horizontalHeader()->setContextMenuPolicy(Qt::ActionsContextMenu); + + QSettings s; + s.beginGroup("cylinders_dialog"); + for(int i = 0; i < CylindersModel::COLUMNS; i++){ + if ((i == CylindersModel::REMOVE) || (i == CylindersModel::TYPE)) + continue; + bool checked = s.value(QString("column%1_hidden").arg(i)).toBool(); + QAction *action = new QAction(cylindersModel->headerData(i, Qt::Horizontal, Qt::DisplayRole).toString(), ui.cylinders->view()); + action->setCheckable(true); + action->setData(i); + action->setChecked(!checked); + connect(action, SIGNAL(triggered(bool)), this, SLOT(toggleTriggeredColumn())); + ui.cylinders->view()->setColumnHidden(i, checked); + ui.cylinders->view()->horizontalHeader()->addAction(action); + } +} + +MainTab::~MainTab() +{ + QSettings s; + s.beginGroup("cylinders_dialog"); + for(int i = 0; i < CylindersModel::COLUMNS; i++){ + if ((i == CylindersModel::REMOVE) || (i == CylindersModel::TYPE)) + continue; + s.setValue(QString("column%1_hidden").arg(i), ui.cylinders->view()->isColumnHidden(i)); + } +} + +void MainTab::toggleTriggeredColumn() +{ + QAction *action = qobject_cast(sender()); + int col = action->data().toInt(); + QTableView *view = ui.cylinders->view(); + + if(action->isChecked()){ + view->showColumn(col); + if(view->columnWidth(col) <= 15) + view->setColumnWidth(col, 80); + } + else + view->hideColumn(col); } void MainTab::addDiveStarted() diff --git a/qt-ui/maintab.h b/qt-ui/maintab.h index 233aa9439..5750fb378 100644 --- a/qt-ui/maintab.h +++ b/qt-ui/maintab.h @@ -51,6 +51,7 @@ public: enum EditMode { NONE, DIVE, TRIP, ADD, MANUALLY_ADDED_DIVE }; MainTab(QWidget *parent); + ~MainTab(); void clearStats(); void clearInfo(); void clearEquipment(); @@ -82,7 +83,7 @@ public slots: void editWeightWidget(const QModelIndex& index); void addDiveStarted(); void enableEdition(EditMode newEditMode = NONE); - + void toggleTriggeredColumn(); private: Ui::MainTab ui; WeightModel *weightModel; diff --git a/qt-ui/models.h b/qt-ui/models.h index d7b2eedd2..9dd7b2bf6 100644 --- a/qt-ui/models.h +++ b/qt-ui/models.h @@ -80,7 +80,7 @@ private: class CylindersModel : public CleanerTableModel { Q_OBJECT public: - enum Column {REMOVE, TYPE, SIZE, WORKINGPRESS, START, END, O2, HE, DEPTH}; + enum Column {REMOVE, TYPE, SIZE, WORKINGPRESS, START, END, O2, HE, DEPTH, COLUMNS}; explicit CylindersModel(QObject* parent = 0); static CylindersModel *instance(); -- cgit v1.2.3-70-g09d2