mirror of
https://github.com/qbittorrent/qBittorrent
synced 2025-08-19 04:49:47 -07:00
Show current label in the torrent context menu. Closes #3776.
This commit is contained in:
parent
3f9e528633
commit
4eb6e74dd6
1 changed files with 17 additions and 3 deletions
|
@ -782,6 +782,8 @@ void TransferListWidget::displayListMenu(const QPoint&)
|
||||||
bool all_same_sequential_download_mode = true, all_same_prio_firstlast = true;
|
bool all_same_sequential_download_mode = true, all_same_prio_firstlast = true;
|
||||||
bool sequential_download_mode = false, prioritize_first_last = false;
|
bool sequential_download_mode = false, prioritize_first_last = false;
|
||||||
bool one_has_metadata = false, one_not_seed = false;
|
bool one_has_metadata = false, one_not_seed = false;
|
||||||
|
bool all_same_label = true;
|
||||||
|
QString first_label;
|
||||||
bool first = true;
|
bool first = true;
|
||||||
QTorrentHandle h;
|
QTorrentHandle h;
|
||||||
qDebug("Displaying menu");
|
qDebug("Displaying menu");
|
||||||
|
@ -791,6 +793,12 @@ void TransferListWidget::displayListMenu(const QPoint&)
|
||||||
// Get handle and pause the torrent
|
// Get handle and pause the torrent
|
||||||
h = BTSession->getTorrentHandle(hash);
|
h = BTSession->getTorrentHandle(hash);
|
||||||
if (!h.is_valid()) continue;
|
if (!h.is_valid()) continue;
|
||||||
|
|
||||||
|
if (first_label.isEmpty() && first)
|
||||||
|
first_label = listModel->data(listModel->index(mapToSource(index).row(), TorrentModelItem::TR_LABEL)).toString();
|
||||||
|
|
||||||
|
all_same_label = (first_label == (listModel->data(listModel->index(mapToSource(index).row(), TorrentModelItem::TR_LABEL)).toString()));
|
||||||
|
|
||||||
if (h.has_metadata())
|
if (h.has_metadata())
|
||||||
one_has_metadata = true;
|
one_has_metadata = true;
|
||||||
if (!h.is_seed()) {
|
if (!h.is_seed()) {
|
||||||
|
@ -832,8 +840,8 @@ void TransferListWidget::displayListMenu(const QPoint&)
|
||||||
first = false;
|
first = false;
|
||||||
|
|
||||||
if (one_has_metadata && one_not_seed && !all_same_sequential_download_mode
|
if (one_has_metadata && one_not_seed && !all_same_sequential_download_mode
|
||||||
&& !all_same_prio_firstlast && !all_same_super_seeding && needs_start
|
&& !all_same_prio_firstlast && !all_same_super_seeding && !all_same_label
|
||||||
&& needs_force && needs_pause && needs_preview) {
|
&& needs_start && needs_force && needs_pause && needs_preview) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -860,7 +868,13 @@ void TransferListWidget::displayListMenu(const QPoint&)
|
||||||
labelMenu->addSeparator();
|
labelMenu->addSeparator();
|
||||||
foreach (QString label, customLabels) {
|
foreach (QString label, customLabels) {
|
||||||
label.replace('&', "&&"); // avoid '&' becomes accelerator key
|
label.replace('&', "&&"); // avoid '&' becomes accelerator key
|
||||||
labelActions << labelMenu->addAction(IconProvider::instance()->getIcon("inode-directory"), label);
|
QAction *lb = new QAction(IconProvider::instance()->getIcon("inode-directory"), label, labelMenu);
|
||||||
|
if (all_same_label && (label == first_label)) {
|
||||||
|
lb->setCheckable(true);
|
||||||
|
lb->setChecked(true);
|
||||||
|
}
|
||||||
|
labelMenu->addAction(lb);
|
||||||
|
labelActions << lb;
|
||||||
}
|
}
|
||||||
listMenu.addSeparator();
|
listMenu.addSeparator();
|
||||||
if (one_not_seed)
|
if (one_not_seed)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue