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 <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Tomaz Canabrava 2013-11-28 09:17:30 -02:00 committed by Dirk Hohndel
parent c1102a38f3
commit 3264255a7a
3 changed files with 46 additions and 2 deletions

View file

@ -20,6 +20,7 @@
#include <QCompleter>
#include <QDebug>
#include <QSet>
#include <QSettings>
#include <QTableView>
#include <QPalette>
@ -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<QAction*>(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()

View file

@ -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;

View file

@ -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();