diff --git a/src/gui/transferlistfilterswidget.cpp b/src/gui/transferlistfilterswidget.cpp index fa0ba662f..1efb555eb 100644 --- a/src/gui/transferlistfilterswidget.cpp +++ b/src/gui/transferlistfilterswidget.cpp @@ -295,10 +295,13 @@ void TransferListFiltersWidget::addLabel(QString& label) { void TransferListFiltersWidget::showLabelMenu(QPoint) { QMenu labelMenu(labelFilters); + QAction *addAct = labelMenu.addAction(IconProvider::instance()->getIcon("list-add"), tr("Add label...")); QAction *removeAct = 0; + QAction *removeEmptyAct = 0; if (!labelFilters->selectedItems().empty() && labelFilters->row(labelFilters->selectedItems().first()) > 1) removeAct = labelMenu.addAction(IconProvider::instance()->getIcon("list-remove"), tr("Remove label")); - QAction *addAct = labelMenu.addAction(IconProvider::instance()->getIcon("list-add"), tr("Add label...")); + else + removeEmptyAct = labelMenu.addAction(IconProvider::instance()->getIcon("list-remove"), tr("Remove empty labels")); labelMenu.addSeparator(); QAction *startAct = labelMenu.addAction(IconProvider::instance()->getIcon("media-playback-start"), tr("Resume torrents")); QAction *pauseAct = labelMenu.addAction(IconProvider::instance()->getIcon("media-playback-pause"), tr("Pause torrents")); @@ -310,6 +313,10 @@ void TransferListFiltersWidget::showLabelMenu(QPoint) { removeSelectedLabel(); return; } + if (act == removeEmptyAct) { + removeEmptyLabels(); + return; + } if (act == deleteTorrentsAct) { transferList->deleteVisibleTorrents(); return; @@ -360,6 +367,20 @@ void TransferListFiltersWidget::removeSelectedLabel() { Preferences::instance()->removeTorrentLabel(label); } +void TransferListFiltersWidget::removeEmptyLabels() { + QStringList emptyLabels; + QHash::const_iterator i; + for (i = customLabels.begin(); i != customLabels.end(); ++i) { + if (i.value() == 0) + emptyLabels << i.key(); + } + foreach (const QString &label, emptyLabels) { + customLabels.remove(label); + delete labelFilters->takeItem(labelFilters->rowFromLabel(label)); + Preferences::instance()->removeTorrentLabel(label); + } +} + void TransferListFiltersWidget::applyLabelFilter(int row) { switch(row) { case 0: diff --git a/src/gui/transferlistfilterswidget.h b/src/gui/transferlistfilterswidget.h index 3aa35b6ae..543790bba 100644 --- a/src/gui/transferlistfilterswidget.h +++ b/src/gui/transferlistfilterswidget.h @@ -108,6 +108,7 @@ protected slots: void addLabel(QString& label); void showLabelMenu(QPoint); void removeSelectedLabel(); + void removeEmptyLabels(); void applyLabelFilter(int row); void torrentChangedLabel(TorrentModelItem *torrentItem, QString old_label, QString new_label); void handleNewTorrent(TorrentModelItem* torrentItem);