This commit is contained in:
Dirk Hohndel 2013-05-21 13:24:32 -07:00
commit ace8b4f2ea
2 changed files with 38 additions and 3 deletions

View file

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

View file

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