From fe4c1859a82013f998b32e59b82432139293c81c Mon Sep 17 00:00:00 2001 From: Christophe Dumez Date: Mon, 7 May 2007 21:14:44 +0000 Subject: [PATCH] Remember sorted column in download list on restart --- src/GUI.cpp | 46 +++++++++++++++++++++++++++++++++++++--------- src/GUI.h | 2 +- 2 files changed, 38 insertions(+), 10 deletions(-) diff --git a/src/GUI.cpp b/src/GUI.cpp index 069d81dc6..67d9afc72 100644 --- a/src/GUI.cpp +++ b/src/GUI.cpp @@ -109,11 +109,8 @@ GUI::GUI(QWidget *parent, QStringList torrentCmdLine) : QMainWindow(parent){ downloadList->setItemDelegate(DLDelegate); // Hide hash column downloadList->hideColumn(HASH); - // Load last columns width for download list - if(!loadColWidthDLList()){ - downloadList->header()->resizeSection(0, 200); - } - nbTorrents = 0; + + nbTorrents = 0; tabs->setTabText(0, tr("Transfers") +" (0)"); connect(&BTSession, SIGNAL(addedTorrent(const QString&, torrent_handle&, bool)), this, SLOT(torrentAdded(const QString&, torrent_handle&, bool))); connect(&BTSession, SIGNAL(duplicateTorrent(const QString&)), this, SLOT(torrentDuplicate(const QString&))); @@ -135,6 +132,10 @@ GUI::GUI(QWidget *parent, QStringList torrentCmdLine) : QMainWindow(parent){ connect(&BTSession, SIGNAL(updateFileSize(QString)), this, SLOT(updateFileSize(QString))); // Resume unfinished torrents BTSession.resumeUnfinishedTorrents(); + // Load last columns width for download list + if(!loadColWidthDLList()){ + downloadList->header()->resizeSection(0, 200); + } // Add torrent given on command line processParams(torrentCmdLine); // Make download list header clickable for sorting @@ -611,16 +612,29 @@ void GUI::sortDownloadListString(int index, Qt::SortOrder sortOrder){ DLListModel->removeRows(0, nbRows_old); } -void GUI::sortDownloadList(int index){ - static Qt::SortOrder sortOrder = Qt::AscendingOrder; - if(downloadList->header()->sortIndicatorSection() == index){ +void GUI::sortDownloadList(int index, Qt::SortOrder startSortOrder, bool fromLoadColWidth){ + static Qt::SortOrder sortOrder = startSortOrder; + if(!fromLoadColWidth && downloadList->header()->sortIndicatorSection() == index){ if(sortOrder == Qt::AscendingOrder){ sortOrder = Qt::DescendingOrder; }else{ sortOrder = Qt::AscendingOrder; } } - downloadList->header()->setSortIndicator(index, sortOrder); + QString sortOrderLetter; + if(sortOrder == Qt::AscendingOrder) + sortOrderLetter = "a"; + else + sortOrderLetter = "d"; + if(fromLoadColWidth) { + // XXX: Why is this needed? + if(sortOrder == Qt::DescendingOrder) + downloadList->header()->setSortIndicator(index, Qt::AscendingOrder); + else + downloadList->header()->setSortIndicator(index, Qt::DescendingOrder); + } else { + downloadList->header()->setSortIndicator(index, sortOrder); + } switch(index){ case SIZE: case ETA: @@ -632,6 +646,8 @@ void GUI::sortDownloadList(int index){ default: sortDownloadListString(index, sortOrder); } + QSettings settings("qBittorrent", "qBittorrent"); + settings.setValue("DownloadListSortedCol", QString(misc::toString(index).c_str())+sortOrderLetter); } void GUI::sortSearchList(int index){ @@ -771,6 +787,18 @@ bool GUI::loadColWidthDLList(){ for(int i=0; iheader()->resizeSection(i, width_list.at(i).toInt()); } + // Loading last sorted column + QString sortedCol = settings.value("DownloadListSortedCol", QString()).toString(); + if(!sortedCol.isEmpty()){ + Qt::SortOrder sortOrder; + if(sortedCol.endsWith("d")) + sortOrder = Qt::DescendingOrder; + else + sortOrder = Qt::AscendingOrder; + sortedCol = sortedCol.left(sortedCol.size()-1); + int index = sortedCol.toInt(); + sortDownloadList(index, sortOrder, true); + } qDebug("Download list columns width loaded"); return true; } diff --git a/src/GUI.h b/src/GUI.h index 74fd4eca4..8e4afece5 100644 --- a/src/GUI.h +++ b/src/GUI.h @@ -117,7 +117,7 @@ class GUI : public QMainWindow, private Ui::MainWindow{ void loadCheckedSearchEngines(); bool loadColWidthDLList(); bool loadColWidthSearchList(); - void sortDownloadList(int index); + void sortDownloadList(int index, Qt::SortOrder startSortOrder=Qt::AscendingOrder, bool fromLoadColWidth=false); void sortDownloadListFloat(int index, Qt::SortOrder sortOrder); void sortDownloadListString(int index, Qt::SortOrder sortOrder); void sortSearchList(int index);