From cf5e833898ad7b57cd228baf0bff5548059c4f8c Mon Sep 17 00:00:00 2001 From: jagannatharjun Date: Sat, 13 Mar 2021 11:36:01 +0530 Subject: [PATCH] Remember sub sort column of transfer list --- src/gui/transferlistsortmodel.cpp | 16 ++++++++++++---- src/gui/transferlistsortmodel.h | 5 +++-- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/gui/transferlistsortmodel.cpp b/src/gui/transferlistsortmodel.cpp index 2e804887c..9cd78d8fa 100644 --- a/src/gui/transferlistsortmodel.cpp +++ b/src/gui/transferlistsortmodel.cpp @@ -61,10 +61,17 @@ namespace return 0; return isLeftValid ? -1 : 1; } + + int adjustSubSortColumn(const int column) + { + return ((column >= 0) && (column < TransferListModel::NB_COLUMNS)) + ? column : TransferListModel::TR_NAME; + } } TransferListSortModel::TransferListSortModel(QObject *parent) : QSortFilterProxyModel {parent} + , m_subSortColumn {"TransferList/SubSortColumn", TransferListModel::TR_NAME, adjustSubSortColumn} { setSortRole(TransferListModel::UnderlyingDataRole); } @@ -186,14 +193,15 @@ bool TransferListSortModel::lessThan(const QModelIndex &left, const QModelIndex { Q_ASSERT(left.column() == right.column()); - if (m_sortColumn != left.column()) + if (m_lastSortColumn != left.column()) { - m_subSortColumn = m_sortColumn; - m_sortColumn = left.column(); + if (m_lastSortColumn != -1) + m_subSortColumn = m_lastSortColumn; + m_lastSortColumn = left.column(); } const int result = compare(left, right); - if ((result == 0) && (m_subSortColumn != -1)) + if (result == 0) return compare(left.sibling(left.row(), m_subSortColumn), right.sibling(right.row(), m_subSortColumn)) < 0; return result < 0; diff --git a/src/gui/transferlistsortmodel.h b/src/gui/transferlistsortmodel.h index a8ea23dac..393a7ba6b 100644 --- a/src/gui/transferlistsortmodel.h +++ b/src/gui/transferlistsortmodel.h @@ -30,6 +30,7 @@ #include +#include "base/settingvalue.h" #include "base/torrentfilter.h" namespace BitTorrent @@ -61,6 +62,6 @@ private: bool matchFilter(int sourceRow, const QModelIndex &sourceParent) const; TorrentFilter m_filter; - mutable int m_subSortColumn = -1; - mutable int m_sortColumn = -1; + mutable CachedSettingValue m_subSortColumn; + mutable int m_lastSortColumn = -1; };