|
|
|
@ -600,12 +600,13 @@ void PropertiesWidget::displayFilesListMenu(const QPoint &)
@@ -600,12 +600,13 @@ void PropertiesWidget::displayFilesListMenu(const QPoint &)
|
|
|
|
|
|
|
|
|
|
if (!m_torrent->isSeed()) |
|
|
|
|
{ |
|
|
|
|
const auto applyPriorities = [this, selectedRows](const BitTorrent::DownloadPriority prio) |
|
|
|
|
const auto applyPriorities = [this](const BitTorrent::DownloadPriority prio) |
|
|
|
|
{ |
|
|
|
|
const QModelIndexList selectedRows = m_ui->filesList->selectionModel()->selectedRows(0); |
|
|
|
|
for (const QModelIndex &index : selectedRows) |
|
|
|
|
{ |
|
|
|
|
m_propListModel->setData( |
|
|
|
|
m_propListModel->index(index.row(), PRIORITY, index.parent()), static_cast<int>(prio)); |
|
|
|
|
m_propListModel->setData(index.sibling(index.row(), PRIORITY) |
|
|
|
|
, static_cast<int>(prio)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Save changes
|
|
|
|
@ -630,6 +631,40 @@ void PropertiesWidget::displayFilesListMenu(const QPoint &)
@@ -630,6 +631,40 @@ void PropertiesWidget::displayFilesListMenu(const QPoint &)
|
|
|
|
|
{ |
|
|
|
|
applyPriorities(BitTorrent::DownloadPriority::Maximum); |
|
|
|
|
}); |
|
|
|
|
subMenu->addSeparator(); |
|
|
|
|
subMenu->addAction(tr("By shown file order"), subMenu, [this]() |
|
|
|
|
{ |
|
|
|
|
// Equally distribute the selected items into groups and for each group assign
|
|
|
|
|
// a download priority that will apply to each item. The number of groups depends on how
|
|
|
|
|
// many "download priority" are available to be assigned
|
|
|
|
|
|
|
|
|
|
const QModelIndexList selectedRows = m_ui->filesList->selectionModel()->selectedRows(0); |
|
|
|
|
|
|
|
|
|
const int priorityGroups = 3; |
|
|
|
|
const int priorityGroupSize = std::max((selectedRows.length() / priorityGroups), 1); |
|
|
|
|
|
|
|
|
|
for (int i = 0; i < selectedRows.length(); ++i) |
|
|
|
|
{ |
|
|
|
|
auto priority = BitTorrent::DownloadPriority::Ignored; |
|
|
|
|
switch (i / priorityGroupSize) |
|
|
|
|
{ |
|
|
|
|
case 0: |
|
|
|
|
priority = BitTorrent::DownloadPriority::Maximum; |
|
|
|
|
break; |
|
|
|
|
case 1: |
|
|
|
|
priority = BitTorrent::DownloadPriority::High; |
|
|
|
|
break; |
|
|
|
|
default: |
|
|
|
|
case 2: |
|
|
|
|
priority = BitTorrent::DownloadPriority::Normal; |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
const QModelIndex &index = selectedRows[i]; |
|
|
|
|
m_propListModel->setData(index.sibling(index.row(), PRIORITY) |
|
|
|
|
, static_cast<int>(priority)); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// The selected torrent might have disappeared during exec()
|
|
|
|
|