diff --git a/Changelog b/Changelog index 8cb79b999..6ac40feae 100644 --- a/Changelog +++ b/Changelog @@ -1,6 +1,8 @@ * Unknown - Christophe Dumez - v1.4.0 - FEATURE: Allow to define temporary download folder - FEATURE: Display total amount of uploaded data in finished list + - FEATURE: Resizing a column in a search results tab affects all tabs + - FEATURE: Search results tab columns are now remembered upon startup - COSMETIC: Redesigned program preferences - COSMETIC: Updated icons set diff --git a/src/FinishedTorrents.cpp b/src/FinishedTorrents.cpp index 25e011727..597a20f83 100644 --- a/src/FinishedTorrents.cpp +++ b/src/FinishedTorrents.cpp @@ -202,7 +202,7 @@ void FinishedTorrents::saveColWidthFinishedList() const{ width_list = line.split(' '); } for(short i=0; icolumnWidth(i)<1 && width_list.size() == finishedListModel->columnCount()-1 && width_list.at(i).toInt()>=1) { + if(finishedList->columnWidth(i)<1 && width_list.size() == nbColumns && width_list.at(i).toInt()>=1) { // load the former width new_width_list << width_list.at(i); } else if(finishedList->columnWidth(i)>=1) { diff --git a/src/SearchTab.cpp b/src/SearchTab.cpp index d4c043945..57cbeda4b 100644 --- a/src/SearchTab.cpp +++ b/src/SearchTab.cpp @@ -65,19 +65,36 @@ SearchTab::SearchTab(SearchEngine *parent) : QWidget() connect(resultsBrowser->header(), SIGNAL(sectionPressed(int)), this, SLOT(sortSearchList(int))); // Load last columns width for search results list - if(!loadColWidthSearchList()){ + if(!loadColWidthResultsList()){ resultsBrowser->header()->resizeSection(0, 275); } } -SearchTab::~SearchTab() -{ - saveColWidthSearchList(); +SearchTab::~SearchTab() { delete resultsBrowser; delete SearchListModel; delete SearchDelegate; } +QHeaderView* SearchTab::header() const { + return resultsBrowser->header(); +} + +bool SearchTab::loadColWidthResultsList() { + QSettings settings("qBittorrent", "qBittorrent"); + QString line = settings.value("SearchResultsColsWidth", QString()).toString(); + if(line.isEmpty()) + return false; + QStringList width_list = line.split(' '); + if(width_list.size() < SearchListModel->columnCount()) + return false; + unsigned int listSize = width_list.size(); + for(unsigned int i=0; iheader()->resizeSection(i, width_list.at(i).toInt()); + } + return true; +} + QLabel* SearchTab::getCurrentLabel() { return results_lbl; @@ -157,33 +174,3 @@ void SearchTab::sortSearchListString(int index, Qt::SortOrder sortOrder){ SearchListModel->removeRows(0, nbRows_old); } -// Save columns width in a file to remember them -// (download list) -void SearchTab::saveColWidthSearchList() const{ - qDebug("Saving columns width in search list"); - QSettings settings("qBittorrent", "qBittorrent"); - QStringList width_list; - for(int i=0; icolumnCount(); ++i){ - width_list << misc::toQString(resultsBrowser->columnWidth(i)); - } - settings.setValue("SearchListColsWidth", width_list.join(" ")); - qDebug("Search list columns width saved"); -} - -// Load columns width in a file that were saved previously -// (search list) -bool SearchTab::loadColWidthSearchList(){ - qDebug("Loading columns width for search list"); - QSettings settings("qBittorrent", "qBittorrent"); - QString line = settings.value("SearchListColsWidth", QString()).toString(); - if(line.isEmpty()) - return false; - QStringList width_list = line.split(' '); - if(width_list.size() != SearchListModel->columnCount()) - return false; - for(int i=0; iheader()->resizeSection(i, width_list.at(i).toInt()); - } - qDebug("Search list columns width loaded"); - return true; -} diff --git a/src/SearchTab.h b/src/SearchTab.h index 0b371d3f8..0c6e62299 100644 --- a/src/SearchTab.h +++ b/src/SearchTab.h @@ -42,16 +42,17 @@ class SearchTab : public QWidget, public Ui::search_engine public: SearchTab(SearchEngine *parent); ~SearchTab(); - bool loadColWidthSearchList(); + bool loadColWidthResultsList(); QLabel * getCurrentLabel(); QStandardItemModel * getCurrentSearchListModel(); QTreeView * getCurrentTreeView(); void setRowColor(int row, QString color); + QHeaderView* header() const; + protected slots: void sortSearchList(int index); void sortSearchListInt(int index, Qt::SortOrder sortOrder); void sortSearchListString(int index, Qt::SortOrder sortOrder); - void saveColWidthSearchList() const; }; diff --git a/src/searchEngine.cpp b/src/searchEngine.cpp index 43e148ef7..736b24f22 100644 --- a/src/searchEngine.cpp +++ b/src/searchEngine.cpp @@ -152,6 +152,7 @@ void SearchEngine::on_search_button_clicked(){ } // Tab Addition currentSearchTab=new SearchTab(this); + connect(currentSearchTab->header(), SIGNAL(sectionResized(int, int, int)), this, SLOT(propagateSectionResized(int,int,int))); all_tab.append(currentSearchTab); tabWidget->addTab(currentSearchTab, pattern); tabWidget->setCurrentWidget(currentSearchTab); @@ -188,6 +189,42 @@ void SearchEngine::on_search_button_clicked(){ searchTimeout->start(180000); // 3min } +void SearchEngine::propagateSectionResized(int index, int , int newsize) { + foreach(SearchTab * tab, all_tab) { + tab->getCurrentTreeView()->setColumnWidth(index, newsize); + } + saveResultsColumnsWidth(); +} + +void SearchEngine::saveResultsColumnsWidth() { + if(all_tab.size() > 0) { + QTreeView* treeview = all_tab.first()->getCurrentTreeView(); + QSettings settings("qBittorrent", "qBittorrent"); + QStringList width_list; + QStringList new_width_list; + short nbColumns = all_tab.first()->getCurrentSearchListModel()->columnCount(); + + QString line = settings.value("SearchResultsColsWidth", QString()).toString(); + if(!line.isEmpty()) { + width_list = line.split(' '); + } + for(short i=0; icolumnWidth(i)<1 && width_list.size() == nbColumns && width_list.at(i).toInt()>=1) { + // load the former width + new_width_list << width_list.at(i); + } else if(treeview->columnWidth(i)>=1) { + // usual case, save the current width + new_width_list << QString::fromUtf8(misc::toString(treeview->columnWidth(i)).c_str()); + } else { + // default width + treeview->resizeColumnToContents(i); + new_width_list << QString::fromUtf8(misc::toString(treeview->columnWidth(i)).c_str()); + } + } + settings.setValue("SearchResultsColsWidth", new_width_list.join(" ")); + } +} + void SearchEngine::searchStarted(){ // Update SearchEngine widgets search_status->setText(tr("Searching...")); diff --git a/src/searchEngine.h b/src/searchEngine.h index bac43bdc4..d796f66b3 100644 --- a/src/searchEngine.h +++ b/src/searchEngine.h @@ -81,6 +81,8 @@ class SearchEngine : public QWidget, public Ui::search_engine{ void saveSearchHistory(); void on_enginesButton_clicked(); void on_clearPatternButton_clicked(); + void propagateSectionResized(int index, int oldsize , int newsize); + void saveResultsColumnsWidth(); }; #endif