diff options
author | Dirk Hohndel <dirk@hohndel.org> | 2013-05-21 13:24:32 -0700 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2013-05-21 13:24:32 -0700 |
commit | ace8b4f2ea9835bc63597f07d0740d0b7bfc434d (patch) | |
tree | 9a37aba458f9aca77e8deda8fc8d256748ac5fb3 | |
parent | 3009930aee44e34fec75f380e85f716e95e28af6 (diff) | |
parent | 37ada91000dc14e0d154e1a3f4fd7f1f842ce956 (diff) | |
download | subsurface-ace8b4f2ea9835bc63597f07d0740d0b7bfc434d.tar.gz |
Merge branch 'microFixes' of https://github.com/tcanabrava/subsurface
-rw-r--r-- | qt-ui/divelistview.cpp | 37 | ||||
-rw-r--r-- | qt-ui/divelistview.h | 4 |
2 files changed, 38 insertions, 3 deletions
diff --git a/qt-ui/divelistview.cpp b/qt-ui/divelistview.cpp index 5c8a93ff0..248a29634 100644 --- a/qt-ui/divelistview.cpp +++ b/qt-ui/divelistview.cpp @@ -10,8 +10,10 @@ #include <QApplication> #include <QHeaderView> #include <QDebug> +#include <QSettings> #include <QKeyEvent> #include <QSortFilterProxyModel> +#include <QAction> DiveListView::DiveListView(QWidget *parent) : QTreeView(parent), mouseClickSelection(false) @@ -20,6 +22,7 @@ DiveListView::DiveListView(QWidget *parent) : QTreeView(parent), mouseClickSelec setItemDelegateForColumn(TreeItemDT::RATING, new StarWidgetsDelegate()); QSortFilterProxyModel *model = new QSortFilterProxyModel(this); setModel(model); + header()->setContextMenuPolicy(Qt::ActionsContextMenu); } void DiveListView::reload() @@ -37,11 +40,41 @@ void DiveListView::reload() else setCurrentIndex(firstDiveOrTrip); } + // Populate the context menu of the headers that will show + // the menu to show / hide columns. + if (!header()->actions().size()){ + QAction *visibleAction = new QAction("Visible:", header()); + header()->addAction(visibleAction); + QSettings s; + s.beginGroup("DiveListColumnState"); + for(int i = 0; i < model()->columnCount(); i++){ + QString title = QString("show %1").arg( model()->headerData( i, Qt::Horizontal).toString()); + QAction *a = new QAction(title, header()); + a->setCheckable(true); + a->setChecked( s.value(title, true).toBool()); + a->setProperty("index", i); + connect(a, SIGNAL(triggered(bool)), this, SLOT(hideColumnByIndex())); + header()->addAction(a); + } + s.endGroup(); + } } -void DiveListView::setModel(QAbstractItemModel* model) +void DiveListView::hideColumnByIndex() { - QTreeView::setModel(model); + QAction *action = qobject_cast<QAction*>(sender()); + if (!action) + return; + + QSettings s; + s.beginGroup("DiveListColumnState"); + s.setValue(action->text(), action->isChecked()); + s.endGroup(); + + if (action->isChecked()) + showColumn(action->property("index").toInt()); + else + hideColumn(action->property("index").toInt()); } void DiveListView::setSelection(const QRect& rect, QItemSelectionModel::SelectionFlags command) diff --git a/qt-ui/divelistview.h b/qt-ui/divelistview.h index 09830b7b5..6cbcd8319 100644 --- a/qt-ui/divelistview.h +++ b/qt-ui/divelistview.h @@ -23,7 +23,6 @@ public: DiveListView(QWidget *parent = 0); void selectionChanged(const QItemSelection& selected, const QItemSelection& deselected); void currentChanged(const QModelIndex& current, const QModelIndex& previous); - void setModel(QAbstractItemModel* model); void mousePressEvent(QMouseEvent* event); void mouseReleaseEvent(QMouseEvent* event); void keyPressEvent(QKeyEvent* event); @@ -31,6 +30,9 @@ public: void setSelection(const QRect& rect, QItemSelectionModel::SelectionFlags command); void reload(); +public slots: + void hideColumnByIndex(); + Q_SIGNALS: void currentDiveChanged(int divenr); private: |