mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-28 13:10:19 +00:00
Remember the column we are sorting by
A call to DiveListView::reload always reset our sortcolumn to be 0. Instead we are tracking the correct sort column and sort direction. This also removes an obsolete private member that was unused. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
eaa0d647b7
commit
01d515b5d8
2 changed files with 9 additions and 5 deletions
|
@ -22,7 +22,7 @@
|
||||||
#include <QFileDialog>
|
#include <QFileDialog>
|
||||||
|
|
||||||
DiveListView::DiveListView(QWidget *parent) : QTreeView(parent), mouseClickSelection(false),
|
DiveListView::DiveListView(QWidget *parent) : QTreeView(parent), mouseClickSelection(false),
|
||||||
currentHeaderClicked(-1), searchBox(new QLineEdit(this))
|
sortColumn(0), currentOrder(Qt::DescendingOrder), searchBox(new QLineEdit(this))
|
||||||
{
|
{
|
||||||
setUniformRowHeights(true);
|
setUniformRowHeights(true);
|
||||||
setItemDelegateForColumn(DiveTripModel::RATING, new StarWidgetsDelegate());
|
setItemDelegateForColumn(DiveTripModel::RATING, new StarWidgetsDelegate());
|
||||||
|
@ -107,6 +107,7 @@ bool DiveListView::eventFilter(QObject* , QEvent* event)
|
||||||
// index. TRIP_ROLE vs DIVE_ROLE?
|
// index. TRIP_ROLE vs DIVE_ROLE?
|
||||||
void DiveListView::headerClicked(int i)
|
void DiveListView::headerClicked(int i)
|
||||||
{
|
{
|
||||||
|
sortColumn = i;
|
||||||
QItemSelection oldSelection = selectionModel()->selection();
|
QItemSelection oldSelection = selectionModel()->selection();
|
||||||
QList<struct dive*> currentSelectedDives;
|
QList<struct dive*> currentSelectedDives;
|
||||||
DiveTripModel::Layout newLayout;
|
DiveTripModel::Layout newLayout;
|
||||||
|
@ -127,11 +128,13 @@ void DiveListView::headerClicked(int i)
|
||||||
|
|
||||||
/* No layout change? Just re-sort, and scroll to first selection, making sure all selections are expanded */
|
/* No layout change? Just re-sort, and scroll to first selection, making sure all selections are expanded */
|
||||||
if (currentLayout == newLayout) {
|
if (currentLayout == newLayout) {
|
||||||
sortByColumn(i);
|
currentOrder = (currentOrder == Qt::DescendingOrder) ? Qt::AscendingOrder : Qt::DescendingOrder;
|
||||||
|
sortByColumn(i, currentOrder);
|
||||||
} else {
|
} else {
|
||||||
// clear the model, repopulate with new indexes.
|
// clear the model, repopulate with new indexes.
|
||||||
reload(newLayout, false);
|
reload(newLayout, false);
|
||||||
sortByColumn(i, Qt::DescendingOrder);
|
currentOrder = Qt::DescendingOrder;
|
||||||
|
sortByColumn(i, currentOrder);
|
||||||
}
|
}
|
||||||
|
|
||||||
// repopulate the selections.
|
// repopulate the selections.
|
||||||
|
@ -163,7 +166,7 @@ void DiveListView::reload(DiveTripModel::Layout layout, bool forceSort)
|
||||||
if(!forceSort)
|
if(!forceSort)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
sortByColumn(0, Qt::DescendingOrder);
|
sortByColumn(sortColumn, currentOrder);
|
||||||
if (amount_selected && selected_dive >= 0) {
|
if (amount_selected && selected_dive >= 0) {
|
||||||
selectDive(current_dive, true);
|
selectDive(current_dive, true);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -48,7 +48,8 @@ signals:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool mouseClickSelection;
|
bool mouseClickSelection;
|
||||||
int currentHeaderClicked;
|
int sortColumn;
|
||||||
|
Qt::SortOrder currentOrder;
|
||||||
DiveTripModel::Layout currentLayout;
|
DiveTripModel::Layout currentLayout;
|
||||||
QLineEdit *searchBox;
|
QLineEdit *searchBox;
|
||||||
QModelIndex contextMenuIndex;
|
QModelIndex contextMenuIndex;
|
||||||
|
|
Loading…
Reference in a new issue