From dbfef8665b3933c2f0d9e3b4f89fb8432ea04d67 Mon Sep 17 00:00:00 2001 From: Christophe Dumez Date: Sat, 24 Jul 2010 13:16:57 +0000 Subject: [PATCH] Fix "Select All/None" buttons in torrent properties --- src/propertieswidget.cpp | 27 +++++++++++++++++++++++++-- src/propertieswidget.h | 2 ++ src/torrentfilesmodel.h | 4 +++- 3 files changed, 30 insertions(+), 3 deletions(-) diff --git a/src/propertieswidget.cpp b/src/propertieswidget.cpp index 4a5c7abdd..33df37761 100644 --- a/src/propertieswidget.cpp +++ b/src/propertieswidget.cpp @@ -83,8 +83,8 @@ PropertiesWidget::PropertiesWidget(QWidget *parent, GUI* main_window, TransferLi // SIGNAL/SLOTS connect(filesList, SIGNAL(clicked(const QModelIndex&)), filesList, SLOT(edit(const QModelIndex&))); - connect(selectAllButton, SIGNAL(clicked()), PropListModel, SLOT(selectAll())); - connect(selectNoneButton, SIGNAL(clicked()), PropListModel, SLOT(selectNone())); + connect(selectAllButton, SIGNAL(clicked()), this, SLOT(selectAllFiles())); + connect(selectNoneButton, SIGNAL(clicked()), this, SLOT(selectNoneFiles())); connect(filesList, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(displayFilesListMenu(const QPoint&))); connect(filesList, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(openDoubleClickedFile(QModelIndex))); connect(PropListModel, SIGNAL(filteredFilesChanged()), this, SLOT(filteredFilesChanged())); @@ -395,6 +395,7 @@ void PropertiesWidget::loadDynamicData() { // Expand first item if possible filesList->expand(PropListModel->index(0, 0)); } + qDebug("Updating priorities in files tab"); std::vector fp; h.file_progress(fp); PropListModel->updateFilesPriorities(h.file_priorities()); @@ -404,6 +405,28 @@ void PropertiesWidget::loadDynamicData() { } catch(invalid_handle e) {} } +void PropertiesWidget::selectAllFiles() { + // Update torrent properties + std::vector prio = h.file_priorities(); + for(std::vector::iterator it = prio.begin(); it != prio.end(); it++) { + if(*it == IGNORED) { + *it = NORMAL; + } + } + h.prioritize_files(prio); + // Update model + PropListModel->selectAll(); +} + +void PropertiesWidget::selectNoneFiles() { + // Update torrent properties + std::vector prio; + prio.assign(h.num_files(), IGNORED); + h.prioritize_files(prio); + // Update model + PropListModel->selectNone(); +} + void PropertiesWidget::loadUrlSeeds(){ listWebSeeds->clear(); qDebug("Loading URL seeds"); diff --git a/src/propertieswidget.h b/src/propertieswidget.h index cbd334e8a..ded74a386 100644 --- a/src/propertieswidget.h +++ b/src/propertieswidget.h @@ -101,6 +101,8 @@ protected slots: void showPiecesAvailability(bool show); void updateSavePath(QTorrentHandle& h); void renameSelectedFile(); + void selectAllFiles(); + void selectNoneFiles(); public slots: void loadDynamicData(); diff --git a/src/torrentfilesmodel.h b/src/torrentfilesmodel.h index f981c9ce7..9f5e39040 100644 --- a/src/torrentfilesmodel.h +++ b/src/torrentfilesmodel.h @@ -558,7 +558,9 @@ public: public slots: void selectAll() { for(int i=0; ichildCount(); ++i) { - rootItem->child(i)->setPriority(NORMAL); + TreeItem *child = rootItem->child(i); + if(child->getPriority() == IGNORED) + child->setPriority(NORMAL); } emit layoutChanged(); }