From 4019fdaa24eb96a615632b8374e22434ec4069c2 Mon Sep 17 00:00:00 2001 From: Tomaz Canabrava Date: Tue, 28 May 2013 17:07:43 -0300 Subject: Switch between Tree / list on column - click. This patch adds support for switching Tree / List while clicking on a column header. This triggers a sad-painting bug on the list - I guess I'll have to fix it too. I'd apreciate some help on it, tougth. next: keep the selection. Signed-off-by: Tomaz Canabrava --- qt-ui/divelistview.cpp | 14 ++++++++++++-- qt-ui/divelistview.h | 4 +++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/qt-ui/divelistview.cpp b/qt-ui/divelistview.cpp index d53fce5f5..8852eda3e 100644 --- a/qt-ui/divelistview.cpp +++ b/qt-ui/divelistview.cpp @@ -24,16 +24,26 @@ DiveListView::DiveListView(QWidget *parent) : QTreeView(parent), mouseClickSelec setModel(model); setSortingEnabled(false); header()->setContextMenuPolicy(Qt::ActionsContextMenu); + connect(header(), SIGNAL(sectionClicked(int)), this, SLOT(headerClicked(int))); } -void DiveListView::reload() +void DiveListView::headerClicked(int i ) +{ + if (i == (int) TreeItemDT::NR){ + reload(DiveTripModel::TREE); + }else{ + reload(DiveTripModel::LIST); + } +} + +void DiveListView::reload(DiveTripModel::Layout layout) { QSortFilterProxyModel *m = qobject_cast(model()); QAbstractItemModel *oldModel = m->sourceModel(); if (oldModel) oldModel->deleteLater(); DiveTripModel *tripModel = new DiveTripModel(this); - tripModel->setLayout(DiveTripModel::LIST); + tripModel->setLayout(layout); m->setSourceModel(tripModel); sortByColumn(0, Qt::DescendingOrder); diff --git a/qt-ui/divelistview.h b/qt-ui/divelistview.h index c1a33db51..99154d4ac 100644 --- a/qt-ui/divelistview.h +++ b/qt-ui/divelistview.h @@ -15,6 +15,7 @@ */ #include +#include "models.h" class DiveListView : public QTreeView { @@ -28,11 +29,12 @@ public: void keyPressEvent(QKeyEvent* event); void keyReleaseEvent(QKeyEvent*); void setSelection(const QRect& rect, QItemSelectionModel::SelectionFlags command); - void reload(); + void reload(DiveTripModel::Layout layout = DiveTripModel::TREE); public slots: void toggleColumnVisibilityByIndex(); void reloadHeaderActions(); + void headerClicked(int); Q_SIGNALS: void currentDiveChanged(int divenr); -- cgit v1.2.3-70-g09d2