mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Merge branch 'microFixes' of https://github.com/tcanabrava/subsurface
This commit is contained in:
commit
ace8b4f2ea
2 changed files with 38 additions and 3 deletions
|
@ -10,8 +10,10 @@
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
#include <QHeaderView>
|
#include <QHeaderView>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
#include <QSettings>
|
||||||
#include <QKeyEvent>
|
#include <QKeyEvent>
|
||||||
#include <QSortFilterProxyModel>
|
#include <QSortFilterProxyModel>
|
||||||
|
#include <QAction>
|
||||||
|
|
||||||
|
|
||||||
DiveListView::DiveListView(QWidget *parent) : QTreeView(parent), mouseClickSelection(false)
|
DiveListView::DiveListView(QWidget *parent) : QTreeView(parent), mouseClickSelection(false)
|
||||||
|
@ -20,6 +22,7 @@ DiveListView::DiveListView(QWidget *parent) : QTreeView(parent), mouseClickSelec
|
||||||
setItemDelegateForColumn(TreeItemDT::RATING, new StarWidgetsDelegate());
|
setItemDelegateForColumn(TreeItemDT::RATING, new StarWidgetsDelegate());
|
||||||
QSortFilterProxyModel *model = new QSortFilterProxyModel(this);
|
QSortFilterProxyModel *model = new QSortFilterProxyModel(this);
|
||||||
setModel(model);
|
setModel(model);
|
||||||
|
header()->setContextMenuPolicy(Qt::ActionsContextMenu);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DiveListView::reload()
|
void DiveListView::reload()
|
||||||
|
@ -37,11 +40,41 @@ void DiveListView::reload()
|
||||||
else
|
else
|
||||||
setCurrentIndex(firstDiveOrTrip);
|
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)
|
void DiveListView::setSelection(const QRect& rect, QItemSelectionModel::SelectionFlags command)
|
||||||
|
|
|
@ -23,7 +23,6 @@ public:
|
||||||
DiveListView(QWidget *parent = 0);
|
DiveListView(QWidget *parent = 0);
|
||||||
void selectionChanged(const QItemSelection& selected, const QItemSelection& deselected);
|
void selectionChanged(const QItemSelection& selected, const QItemSelection& deselected);
|
||||||
void currentChanged(const QModelIndex& current, const QModelIndex& previous);
|
void currentChanged(const QModelIndex& current, const QModelIndex& previous);
|
||||||
void setModel(QAbstractItemModel* model);
|
|
||||||
void mousePressEvent(QMouseEvent* event);
|
void mousePressEvent(QMouseEvent* event);
|
||||||
void mouseReleaseEvent(QMouseEvent* event);
|
void mouseReleaseEvent(QMouseEvent* event);
|
||||||
void keyPressEvent(QKeyEvent* event);
|
void keyPressEvent(QKeyEvent* event);
|
||||||
|
@ -31,6 +30,9 @@ public:
|
||||||
void setSelection(const QRect& rect, QItemSelectionModel::SelectionFlags command);
|
void setSelection(const QRect& rect, QItemSelectionModel::SelectionFlags command);
|
||||||
void reload();
|
void reload();
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
void hideColumnByIndex();
|
||||||
|
|
||||||
Q_SIGNALS:
|
Q_SIGNALS:
|
||||||
void currentDiveChanged(int divenr);
|
void currentDiveChanged(int divenr);
|
||||||
private:
|
private:
|
||||||
|
|
Loading…
Add table
Reference in a new issue