Remember sorted column in download list on restart

This commit is contained in:
Christophe Dumez 2007-05-07 21:14:44 +00:00
commit fe4c1859a8
2 changed files with 38 additions and 10 deletions

View file

@ -109,10 +109,7 @@ 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;
tabs->setTabText(0, tr("Transfers") +" (0)");
connect(&BTSession, SIGNAL(addedTorrent(const QString&, torrent_handle&, bool)), this, SLOT(torrentAdded(const QString&, torrent_handle&, bool)));
@ -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;
}
}
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; i<width_list.size(); ++i){
downloadList->header()->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;
}

View file

@ -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);