diff --git a/src/TransferListWidget.cpp b/src/TransferListWidget.cpp index 950940921..b3123de46 100644 --- a/src/TransferListWidget.cpp +++ b/src/TransferListWidget.cpp @@ -79,6 +79,11 @@ TransferListWidget::TransferListWidget(QWidget *parent, bittorrent *_BTSession): hideColumn(PRIORITY); hideColumn(HASH); loadHiddenColumns(); + // Load last columns width for transfer list + if(!loadColWidthList()) { + header()->resizeSection(0, 200); + } + loadLastSortedColumn(); setContextMenuPolicy(Qt::CustomContextMenu); // Listen for BTSession events @@ -97,7 +102,11 @@ TransferListWidget::TransferListWidget(QWidget *parent, bittorrent *_BTSession): } TransferListWidget::~TransferListWidget() { + // Save settings + saveLastSortedColumn(); + saveColWidthList(); saveHiddenColumns(); + // Clean up delete refreshTimer; delete proxyModel; delete listModel; @@ -564,7 +573,6 @@ void TransferListWidget::displayDLHoSMenu(const QPoint&){ setColumnHidden(col, !isColumnHidden(col)); } -// FIXME: Not everything should be displayed for seeding torrents void TransferListWidget::displayListMenu(const QPoint&) { // Create actions QAction actionStart(QIcon(QString::fromUtf8(":/Icons/skin/play.png")), tr("Start"), 0); @@ -652,3 +660,101 @@ void TransferListWidget::displayListMenu(const QPoint&) { // Call menu listMenu.exec(QCursor::pos()); } + +// Save columns width in a file to remember them +void TransferListWidget::saveColWidthList() { + qDebug("Saving columns width in transfer list"); + QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent")); + QStringList width_list; + QStringList new_width_list; + short nbColumns = listModel->columnCount()-1; + QString line = settings.value("TransferListColsWidth", QString()).toString(); + if(!line.isEmpty()) { + width_list = line.split(' '); + } + for(short i=0; i=1) { + // load the former width + new_width_list << width_list.at(i); + } else if(columnWidth(i)>=1) { + // usual case, save the current width + new_width_list << misc::toQString(columnWidth(i)); + } else { + // default width + resizeColumnToContents(i); + new_width_list << misc::toQString(columnWidth(i)); + } + } + settings.setValue(QString::fromUtf8("TransferListColsWidth"), new_width_list.join(QString::fromUtf8(" "))); + QVariantList visualIndexes; + for(int i=0; ivisualIndex(i)); + } + settings.setValue(QString::fromUtf8("TransferListVisualIndexes"), visualIndexes); + qDebug("Download list columns width saved"); +} + +// Load columns width in a file that were saved previously +bool TransferListWidget::loadColWidthList() { + qDebug("Loading columns width for download list"); + QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent")); + QString line = settings.value(QString::fromUtf8("TransferListColsWidth"), QString()).toString(); + if(line.isEmpty()) + return false; + QStringList width_list = line.split(QString::fromUtf8(" ")); + if(width_list.size() != listModel->columnCount()-1) { + qDebug("Corrupted values for download list columns sizes"); + return false; + } + unsigned int listSize = width_list.size(); + for(unsigned int i=0; iresizeSection(i, width_list.at(i).toInt()); + } + QVariantList visualIndexes = settings.value(QString::fromUtf8("TransferListVisualIndexes"), QVariantList()).toList(); + if(visualIndexes.size() != listModel->columnCount()-1) { + qDebug("Corrupted values for download list columns sizes"); + return false; + } + bool change = false; + do { + change = false; + for(int i=0;ilogicalIndex(i)).toInt(); + if(i != new_visual_index) { + qDebug("Moving column from %d to %d", header()->logicalIndex(i), new_visual_index); + header()->moveSection(i, new_visual_index); + change = true; + } + } + }while(change); + qDebug("Transfer list columns width loaded"); + return true; +} + +void TransferListWidget::saveLastSortedColumn() { + QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent")); + Qt::SortOrder sortOrder = header()->sortIndicatorOrder(); + QString sortOrderLetter; + if(sortOrder == Qt::AscendingOrder) + sortOrderLetter = QString::fromUtf8("a"); + else + sortOrderLetter = QString::fromUtf8("d"); + int index = header()->sortIndicatorSection(); + settings.setValue(QString::fromUtf8("TransferListSortedCol"), misc::toQString(index)+sortOrderLetter); +} + +void TransferListWidget::loadLastSortedColumn() { + // Loading last sorted column + QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent")); + QString sortedCol = settings.value(QString::fromUtf8("TransferListSortedCol"), QString()).toString(); + if(!sortedCol.isEmpty()) { + Qt::SortOrder sortOrder; + if(sortedCol.endsWith(QString::fromUtf8("d"))) + sortOrder = Qt::DescendingOrder; + else + sortOrder = Qt::AscendingOrder; + sortedCol = sortedCol.left(sortedCol.size()-1); + int index = sortedCol.toInt(); + sortByColumn(index, sortOrder); + } +} diff --git a/src/TransferListWidget.h b/src/TransferListWidget.h index c081a8961..3b8c1e45a 100644 --- a/src/TransferListWidget.h +++ b/src/TransferListWidget.h @@ -57,6 +57,10 @@ public: protected: int getRowFromHash(QString hash) const; QString getHashFromRow(int row) const; + void saveColWidthList(); + bool loadColWidthList(); + void saveLastSortedColumn(); + void loadLastSortedColumn(); protected slots: void updateTorrent(int row);