diff --git a/src/gui/mainwindow.cpp b/src/gui/mainwindow.cpp
index 0b777301f..d7ab5332d 100644
--- a/src/gui/mainwindow.cpp
+++ b/src/gui/mainwindow.cpp
@@ -172,10 +172,7 @@ MainWindow::MainWindow(QWidget *parent)
m_ui->actionOpen->setIcon(UIThemeManager::instance()->getIcon("list-add"));
m_ui->actionDownloadFromURL->setIcon(UIThemeManager::instance()->getIcon("insert-link"));
- m_ui->actionSetUploadLimit->setIcon(UIThemeManager::instance()->getIcon("kt-set-max-upload-speed"));
- m_ui->actionSetDownloadLimit->setIcon(UIThemeManager::instance()->getIcon("kt-set-max-download-speed"));
- m_ui->actionSetGlobalUploadLimit->setIcon(UIThemeManager::instance()->getIcon("kt-set-max-upload-speed"));
- m_ui->actionSetGlobalDownloadLimit->setIcon(UIThemeManager::instance()->getIcon("kt-set-max-download-speed"));
+ m_ui->actionSetGlobalSpeedLimits->setIcon(UIThemeManager::instance()->getIcon("speedometer"));
m_ui->actionCreateTorrent->setIcon(UIThemeManager::instance()->getIcon("document-edit"));
m_ui->actionAbout->setIcon(UIThemeManager::instance()->getIcon("help-about"));
m_ui->actionStatistics->setIcon(UIThemeManager::instance()->getIcon("view-statistics"));
@@ -1008,36 +1005,11 @@ void MainWindow::handleDownloadFromUrlFailure(const QString &url, const QString
, tr("Couldn't download file at URL '%1', reason: %2.").arg(url, reason));
}
-void MainWindow::on_actionSetGlobalUploadLimit_triggered()
+void MainWindow::on_actionSetGlobalSpeedLimits_triggered()
{
- qDebug() << Q_FUNC_INFO;
-
- BitTorrent::Session *const session = BitTorrent::Session::instance();
- bool ok = false;
- const long newLimit = SpeedLimitDialog::askSpeedLimit(
- this, &ok, tr("Global Upload Speed Limit"), session->uploadSpeedLimit());
-
- if (ok)
- {
- qDebug("Setting global upload rate limit to %.1fKb/s", newLimit / 1024.);
- session->setUploadSpeedLimit(newLimit);
- }
-}
-
-void MainWindow::on_actionSetGlobalDownloadLimit_triggered()
-{
- qDebug() << Q_FUNC_INFO;
-
- BitTorrent::Session *const session = BitTorrent::Session::instance();
- bool ok = false;
- const long newLimit = SpeedLimitDialog::askSpeedLimit(
- this, &ok, tr("Global Download Speed Limit"), session->downloadSpeedLimit());
-
- if (ok)
- {
- qDebug("Setting global download rate limit to %.1fKb/s", newLimit / 1024.);
- session->setDownloadSpeedLimit(newLimit);
- }
+ auto dialog = new SpeedLimitDialog {this};
+ dialog->setAttribute(Qt::WA_DeleteOnClose);
+ dialog->open();
}
// Necessary if we want to close the window
@@ -1808,8 +1780,7 @@ QMenu *MainWindow::trayIconMenu()
updateAltSpeedsBtn(isAltBWEnabled);
m_ui->actionUseAlternativeSpeedLimits->setChecked(isAltBWEnabled);
m_trayIconMenu->addAction(m_ui->actionUseAlternativeSpeedLimits);
- m_trayIconMenu->addAction(m_ui->actionSetGlobalDownloadLimit);
- m_trayIconMenu->addAction(m_ui->actionSetGlobalUploadLimit);
+ m_trayIconMenu->addAction(m_ui->actionSetGlobalSpeedLimits);
m_trayIconMenu->addSeparator();
m_trayIconMenu->addAction(m_ui->actionStartAll);
m_trayIconMenu->addAction(m_ui->actionPauseAll);
diff --git a/src/gui/mainwindow.h b/src/gui/mainwindow.h
index b646a6e17..41c852918 100644
--- a/src/gui/mainwindow.h
+++ b/src/gui/mainwindow.h
@@ -171,8 +171,7 @@ private slots:
void on_actionStatistics_triggered();
void on_actionCreateTorrent_triggered();
void on_actionOptions_triggered();
- void on_actionSetGlobalUploadLimit_triggered();
- void on_actionSetGlobalDownloadLimit_triggered();
+ void on_actionSetGlobalSpeedLimits_triggered();
void on_actionDocumentation_triggered() const;
void on_actionOpen_triggered();
void on_actionDownloadFromURL_triggered();
diff --git a/src/gui/mainwindow.ui b/src/gui/mainwindow.ui
index d59b1e689..12cfc3eee 100644
--- a/src/gui/mainwindow.ui
+++ b/src/gui/mainwindow.ui
@@ -223,29 +223,14 @@
Torrent &Creator
-
-
- Set Upload Limit...
-
-
-
-
- Set Download Limit...
-
-
&Documentation
-
+
- Set Global Download Limit...
-
-
-
-
- Set Global Upload Limit...
+ Set Global Speed Limits...
diff --git a/src/gui/speedlimitdialog.cpp b/src/gui/speedlimitdialog.cpp
index 59058eca9..334dd75ac 100644
--- a/src/gui/speedlimitdialog.cpp
+++ b/src/gui/speedlimitdialog.cpp
@@ -28,19 +28,80 @@
#include "speedlimitdialog.h"
+#include
+
+#include "base/bittorrent/session.h"
#include "ui_speedlimitdialog.h"
+#include "uithememanager.h"
#include "utils.h"
+namespace
+{
+ void updateSliderValue(QSlider *slider, const int value)
+ {
+ if (value > slider->maximum())
+ slider->setMaximum(value);
+ slider->setValue(value);
+ }
+}
+
SpeedLimitDialog::SpeedLimitDialog(QWidget *parent)
- : QDialog(parent)
- , m_ui(new Ui::SpeedLimitDialog)
+ : QDialog {parent}
+ , m_ui {new Ui::SpeedLimitDialog}
{
m_ui->setupUi(this);
- // Connect to slots
- connect(m_ui->bandwidthSlider, &QSlider::valueChanged, this, &SpeedLimitDialog::updateSpinValue);
- connect(m_ui->spinBandwidth, qOverload(&QSpinBox::valueChanged)
- , this, &SpeedLimitDialog::updateSliderValue);
+ m_ui->labelGlobalSpeedIcon->setPixmap(Utils::Gui::scaledPixmap(UIThemeManager::instance()->getIcon(QLatin1String("slow_off"))
+ , this, style()->pixelMetric(QStyle::PM_SmallIconSize, nullptr, this)));
+ m_ui->labelAltGlobalSpeedIcon->setPixmap(Utils::Gui::scaledPixmap(UIThemeManager::instance()->getIcon(QLatin1String("slow"))
+ , this, style()->pixelMetric(QStyle::PM_SmallIconSize, nullptr, this)));
+
+ const auto initSlider = [](QSlider *slider, const int value, const int maximum)
+ {
+ slider->setMaximum(maximum);
+ slider->setValue(value);
+ };
+ const auto *session = BitTorrent::Session::instance();
+ const int uploadVal = qMax(0, (session->globalUploadSpeedLimit() / 1024));
+ const int downloadVal = qMax(0, (session->globalDownloadSpeedLimit() / 1024));
+ const int maxUpload = qMax(10000, (session->globalUploadSpeedLimit() / 1024));
+ const int maxDownload = qMax(10000, (session->globalDownloadSpeedLimit() / 1024));
+ initSlider(m_ui->sliderUploadLimit, uploadVal, maxUpload);
+ initSlider(m_ui->sliderDownloadLimit, downloadVal, maxDownload);
+
+ const int altUploadVal = qMax(0, (session->altGlobalUploadSpeedLimit() / 1024));
+ const int altDownloadVal = qMax(0, (session->altGlobalDownloadSpeedLimit() / 1024));
+ const int altMaxUpload = qMax(10000, (session->altGlobalUploadSpeedLimit() / 1024));
+ const int altMaxDownload = qMax(10000, (session->altGlobalDownloadSpeedLimit() / 1024));
+ initSlider(m_ui->sliderAltUploadLimit, altUploadVal, altMaxUpload);
+ initSlider(m_ui->sliderAltDownloadLimit, altDownloadVal, altMaxDownload);
+
+ m_ui->spinUploadLimit->setValue(uploadVal);
+ m_ui->spinDownloadLimit->setValue(downloadVal);
+ m_ui->spinAltUploadLimit->setValue(altUploadVal);
+ m_ui->spinAltDownloadLimit->setValue(altDownloadVal);
+
+ m_initialValues =
+ {
+ m_ui->spinUploadLimit->value(),
+ m_ui->spinDownloadLimit->value(),
+ m_ui->spinAltUploadLimit->value(),
+ m_ui->spinAltDownloadLimit->value()
+ };
+
+ // Sync up/down speed limit sliders with their corresponding spinboxes
+ connect(m_ui->sliderUploadLimit, &QSlider::valueChanged, m_ui->spinUploadLimit, &QSpinBox::setValue);
+ connect(m_ui->sliderDownloadLimit, &QSlider::valueChanged, m_ui->spinDownloadLimit, &QSpinBox::setValue);
+ connect(m_ui->spinUploadLimit, qOverload(&QSpinBox::valueChanged)
+ , this, [this](const int value) { updateSliderValue(m_ui->sliderUploadLimit, value); });
+ connect(m_ui->spinDownloadLimit, qOverload(&QSpinBox::valueChanged)
+ , this, [this](const int value) { updateSliderValue(m_ui->sliderDownloadLimit, value); });
+ connect(m_ui->sliderAltUploadLimit, &QSlider::valueChanged, m_ui->spinAltUploadLimit, &QSpinBox::setValue);
+ connect(m_ui->sliderAltDownloadLimit, &QSlider::valueChanged, m_ui->spinAltDownloadLimit, &QSpinBox::setValue);
+ connect(m_ui->spinAltUploadLimit, qOverload(&QSpinBox::valueChanged)
+ , this, [this](const int value) { updateSliderValue(m_ui->sliderAltUploadLimit, value); });
+ connect(m_ui->spinAltDownloadLimit, qOverload(&QSpinBox::valueChanged)
+ , this, [this](const int value) { updateSliderValue(m_ui->sliderAltDownloadLimit, value); });
Utils::Gui::resize(this);
}
@@ -50,58 +111,24 @@ SpeedLimitDialog::~SpeedLimitDialog()
delete m_ui;
}
-// -2: if cancel
-long SpeedLimitDialog::askSpeedLimit(QWidget *parent, bool *ok, const QString &title, const long defaultVal, const long maxVal)
+void SpeedLimitDialog::accept()
{
- if (ok) *ok = false;
+ auto *session = BitTorrent::Session::instance();
+ const int uploadLimit = (m_ui->spinUploadLimit->value() * 1024);
+ if (m_initialValues.uploadSpeedLimit != m_ui->spinUploadLimit->value())
+ session->setGlobalUploadSpeedLimit(uploadLimit);
- SpeedLimitDialog dlg(parent);
- dlg.setWindowTitle(title);
- dlg.setupDialog((maxVal / 1024.), (defaultVal / 1024.));
+ const int downloadLimit = (m_ui->spinDownloadLimit->value() * 1024);
+ if (m_initialValues.downloadSpeedLimit != m_ui->spinDownloadLimit->value())
+ session->setGlobalDownloadSpeedLimit(downloadLimit);
- if (dlg.exec() == QDialog::Accepted)
- {
- if (ok) *ok = true;
+ const int altUploadLimit = (m_ui->spinAltUploadLimit->value() * 1024);
+ if (m_initialValues.altUploadSpeedLimit != m_ui->spinAltUploadLimit->value())
+ session->setAltGlobalUploadSpeedLimit(altUploadLimit);
- const int val = dlg.getSpeedLimit();
- if (val < 0)
- return 0;
- return (val * 1024);
- }
+ const int altDownloadLimit = (m_ui->spinAltDownloadLimit->value() * 1024);
+ if (m_initialValues.altDownloadSpeedLimit != m_ui->spinAltDownloadLimit->value())
+ session->setAltGlobalDownloadSpeedLimit(altDownloadLimit);
- return -2;
-}
-
-void SpeedLimitDialog::updateSpinValue(const int value)
-{
- m_ui->spinBandwidth->setValue(value);
-}
-
-void SpeedLimitDialog::updateSliderValue(const int value)
-{
- if (value > m_ui->bandwidthSlider->maximum())
- m_ui->bandwidthSlider->setMaximum(value);
- m_ui->bandwidthSlider->setValue(value);
-}
-
-int SpeedLimitDialog::getSpeedLimit() const
-{
- return m_ui->spinBandwidth->value();
-}
-
-void SpeedLimitDialog::setupDialog(long maxSlider, long val)
-{
- val = qMax(0, val);
-
- if (maxSlider <= 0)
- maxSlider = 10000;
-
- // This can happen for example if global rate limit is lower
- // than torrent rate limit.
- if (val > maxSlider)
- maxSlider = val;
-
- m_ui->bandwidthSlider->setMaximum(maxSlider);
- m_ui->bandwidthSlider->setValue(val);
- updateSpinValue(val);
+ QDialog::accept();
}
diff --git a/src/gui/speedlimitdialog.h b/src/gui/speedlimitdialog.h
index b83702e02..1c3d77676 100644
--- a/src/gui/speedlimitdialog.h
+++ b/src/gui/speedlimitdialog.h
@@ -35,22 +35,24 @@ namespace Ui
class SpeedLimitDialog;
}
-class SpeedLimitDialog : public QDialog
+class SpeedLimitDialog final : public QDialog
{
Q_OBJECT
public:
explicit SpeedLimitDialog(QWidget *parent);
- ~SpeedLimitDialog();
- static long askSpeedLimit(QWidget *parent, bool *ok, const QString &title, long defaultVal, long maxVal = 10240000);
+ ~SpeedLimitDialog() override;
-private slots:
- void updateSpinValue(int val);
- void updateSliderValue(int val);
+public slots:
+ void accept() override;
private:
- void setupDialog(long maxSlider, long val);
- int getSpeedLimit() const;
-
Ui::SpeedLimitDialog *m_ui;
+ struct
+ {
+ int uploadSpeedLimit;
+ int downloadSpeedLimit;
+ int altUploadSpeedLimit;
+ int altDownloadSpeedLimit;
+ } m_initialValues;
};
diff --git a/src/gui/speedlimitdialog.ui b/src/gui/speedlimitdialog.ui
index 959676cc7..ea680b6a2 100644
--- a/src/gui/speedlimitdialog.ui
+++ b/src/gui/speedlimitdialog.ui
@@ -6,34 +6,166 @@
0
0
- 338
- 83
+ 481
+ 272
+
+ Global Speed Limits
+
-
-
-
-
-
-
- Qt::Horizontal
-
-
-
- -
-
-
- ∞
-
-
- KiB/s
-
-
- 65535
-
-
-
-
+
+
+ Speed limits
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+ Upload:
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
+ ∞
+
+
+ KiB/s
+
+
+ 2000000
+
+
+
+ -
+
+
+ Download:
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
+ ∞
+
+
+ KiB/s
+
+
+ 2000000
+
+
+
+
+
+
+ -
+
+
+ Alternative speed limits
+
+
+
-
+
+
+
+
+
+
+ -
+
+
+ Upload:
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
+ ∞
+
+
+ KiB/s
+
+
+ 2000000
+
+
+
+ -
+
+
+ Download:
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
+ ∞
+
+
+ KiB/s
+
+
+ 2000000
+
+
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 0
+
+
+
-
diff --git a/src/gui/statusbar.cpp b/src/gui/statusbar.cpp
index 2554608b4..c990cca89 100644
--- a/src/gui/statusbar.cpp
+++ b/src/gui/statusbar.cpp
@@ -71,7 +71,7 @@ StatusBar::StatusBar(QWidget *parent)
m_dlSpeedLbl = new QPushButton(this);
m_dlSpeedLbl->setIcon(UIThemeManager::instance()->getIcon(QLatin1String("downloading_small")));
- connect(m_dlSpeedLbl, &QAbstractButton::clicked, this, &StatusBar::capDownloadSpeed);
+ connect(m_dlSpeedLbl, &QAbstractButton::clicked, this, &StatusBar::capSpeed);
m_dlSpeedLbl->setFlat(true);
m_dlSpeedLbl->setFocusPolicy(Qt::NoFocus);
m_dlSpeedLbl->setCursor(Qt::PointingHandCursor);
@@ -80,7 +80,7 @@ StatusBar::StatusBar(QWidget *parent)
m_upSpeedLbl = new QPushButton(this);
m_upSpeedLbl->setIcon(UIThemeManager::instance()->getIcon(QLatin1String("seeding")));
- connect(m_upSpeedLbl, &QAbstractButton::clicked, this, &StatusBar::capUploadSpeed);
+ connect(m_upSpeedLbl, &QAbstractButton::clicked, this, &StatusBar::capSpeed);
m_upSpeedLbl->setFlat(true);
m_upSpeedLbl->setFocusPolicy(Qt::NoFocus);
m_upSpeedLbl->setCursor(Qt::PointingHandCursor);
@@ -251,32 +251,9 @@ void StatusBar::updateAltSpeedsBtn(bool alternative)
refresh();
}
-void StatusBar::capDownloadSpeed()
+void StatusBar::capSpeed()
{
- BitTorrent::Session *const session = BitTorrent::Session::instance();
-
- bool ok = false;
- const long newLimit = SpeedLimitDialog::askSpeedLimit(
- parentWidget(), &ok, tr("Global Download Speed Limit"), session->downloadSpeedLimit());
- if (ok)
- {
- qDebug("Setting global download rate limit to %.1fKb/s", newLimit / 1024.);
- session->setDownloadSpeedLimit(newLimit);
- refresh();
- }
-}
-
-void StatusBar::capUploadSpeed()
-{
- BitTorrent::Session *const session = BitTorrent::Session::instance();
-
- bool ok = false;
- const long newLimit = SpeedLimitDialog::askSpeedLimit(
- parentWidget(), &ok, tr("Global Upload Speed Limit"), session->uploadSpeedLimit());
- if (ok)
- {
- qDebug("Setting global upload rate limit to %.1fKb/s", newLimit / 1024.);
- session->setUploadSpeedLimit(newLimit);
- refresh();
- }
+ auto dialog = new SpeedLimitDialog {parentWidget()};
+ dialog->setAttribute(Qt::WA_DeleteOnClose);
+ dialog->open();
}
diff --git a/src/gui/statusbar.h b/src/gui/statusbar.h
index 2bcebd1c7..8961385f7 100644
--- a/src/gui/statusbar.h
+++ b/src/gui/statusbar.h
@@ -57,8 +57,7 @@ public slots:
private slots:
void refresh();
void updateAltSpeedsBtn(bool alternative);
- void capDownloadSpeed();
- void capUploadSpeed();
+ void capSpeed();
private:
void updateConnectionStatus();
diff --git a/src/gui/transferlistwidget.cpp b/src/gui/transferlistwidget.cpp
index 4e17233cb..908732d42 100644
--- a/src/gui/transferlistwidget.cpp
+++ b/src/gui/transferlistwidget.cpp
@@ -551,65 +551,47 @@ void TransferListWidget::previewSelectedTorrents()
}
}
-void TransferListWidget::setDlLimitSelectedTorrents()
+void TransferListWidget::setSpeedLimitsSelectedTorrents()
{
- QVector torrentsList;
- for (BitTorrent::TorrentHandle *const torrent : asConst(getSelectedTorrents()))
- {
- if (torrent->isSeed())
- continue;
- torrentsList += torrent;
- }
+ const QVector torrentsList = getSelectedTorrents();
if (torrentsList.empty()) return;
- int oldLimit = torrentsList.first()->downloadLimit();
- for (BitTorrent::TorrentHandle *const torrent : asConst(torrentsList))
+ int oldUploadLimit = torrentsList.first()->uploadLimit();
+ int oldDownloadLimit = torrentsList.first()->downloadLimit();
+
+ for (const BitTorrent::TorrentHandle *torrent : torrentsList)
{
- if (torrent->downloadLimit() != oldLimit)
+ if (torrent->uploadLimit() != oldUploadLimit)
{
- oldLimit = -1;
+ oldUploadLimit = -1;
break;
}
}
- bool ok = false;
- const long newLimit = SpeedLimitDialog::askSpeedLimit(
- this, &ok, tr("Torrent Download Speed Limiting"), oldLimit
- , BitTorrent::Session::instance()->globalDownloadSpeedLimit());
- if (!ok) return;
-
- for (BitTorrent::TorrentHandle *const torrent : asConst(torrentsList))
+ for (const BitTorrent::TorrentHandle *torrent : torrentsList)
{
- qDebug("Applying download speed limit of %ld Kb/s to torrent %s", (newLimit / 1024l), qUtf8Printable(torrent->hash()));
- torrent->setDownloadLimit(newLimit);
- }
-}
-
-void TransferListWidget::setUpLimitSelectedTorrents()
-{
- QVector torrentsList = getSelectedTorrents();
- if (torrentsList.empty()) return;
-
- int oldLimit = torrentsList.first()->uploadLimit();
- for (BitTorrent::TorrentHandle *const torrent : asConst(torrentsList))
- {
- if (torrent->uploadLimit() != oldLimit)
+ if (torrent->downloadLimit() != oldDownloadLimit)
{
- oldLimit = -1;
+ oldDownloadLimit = -1;
break;
}
}
- bool ok = false;
- const long newLimit = SpeedLimitDialog::askSpeedLimit(
- this, &ok, tr("Torrent Upload Speed Limiting"), oldLimit
- , BitTorrent::Session::instance()->globalUploadSpeedLimit());
+ const BitTorrent::Session *session = BitTorrent::Session::instance();
+ const bool isAltLimitEnabled = session->isAltGlobalSpeedLimitEnabled();
+ OldSpeedLimits oldSpeedLimits = {
+ oldUploadLimit,
+ oldDownloadLimit,
+ isAltLimitEnabled ? session->altGlobalUploadSpeedLimit() : session->globalUploadSpeedLimit(),
+ isAltLimitEnabled ? session->altGlobalDownloadSpeedLimit() : session->globalDownloadSpeedLimit(),
+ };
+ NewSpeedLimits newSpeedLimits;
+ const bool ok = SpeedLimitDialog::askNewSpeedLimits(this, oldSpeedLimits, newSpeedLimits);
if (!ok) return;
- for (BitTorrent::TorrentHandle *const torrent : asConst(torrentsList))
- {
- qDebug("Applying upload speed limit of %ld Kb/s to torrent %s", (newLimit / 1024l), qUtf8Printable(torrent->hash()));
- torrent->setUploadLimit(newLimit);
+ for (BitTorrent::TorrentHandle *const torrent : torrentsList) {
+ torrent->setUploadLimit(newSpeedLimits.uploadLimit);
+ torrent->setDownloadLimit(newSpeedLimits.downloadLimit);
}
}
@@ -899,10 +881,8 @@ void TransferListWidget::displayListMenu(const QPoint &)
connect(actionPreviewFile, &QAction::triggered, this, &TransferListWidget::previewSelectedTorrents);
auto *actionSetMaxRatio = new QAction(UIThemeManager::instance()->getIcon(QLatin1String("ratio")), tr("Limit share ratio..."), listMenu);
connect(actionSetMaxRatio, &QAction::triggered, this, &TransferListWidget::setMaxRatioSelectedTorrents);
- auto *actionSetUploadLimit = new QAction(UIThemeManager::instance()->getIcon("kt-set-max-upload-speed"), tr("Limit upload rate..."), listMenu);
- connect(actionSetUploadLimit, &QAction::triggered, this, &TransferListWidget::setUpLimitSelectedTorrents);
- auto *actionSetDownloadLimit = new QAction(UIThemeManager::instance()->getIcon("kt-set-max-download-speed"), tr("Limit download rate..."), listMenu);
- connect(actionSetDownloadLimit, &QAction::triggered, this, &TransferListWidget::setDlLimitSelectedTorrents);
+ auto *actionSetSpeedLimits = new QAction(UIThemeManager::instance()->getIcon("speedometer"), tr("Limit speed rates..."), listMenu);
+ connect(actionSetSpeedLimits, &QAction::triggered, this, &TransferListWidget::setSpeedLimitsSelectedTorrents);
auto *actionOpenDestinationFolder = new QAction(UIThemeManager::instance()->getIcon("inode-directory"), tr("Open destination folder"), listMenu);
connect(actionOpenDestinationFolder, &QAction::triggered, this, &TransferListWidget::openSelectedTorrentsFolder);
auto *actionIncreaseQueuePos = new QAction(UIThemeManager::instance()->getIcon("go-up"), tr("Move up", "i.e. move up in the queue"), listMenu);
@@ -1132,9 +1112,7 @@ void TransferListWidget::displayListMenu(const QPoint &)
listMenu->addAction(actionAutoTMM);
listMenu->addSeparator();
- if (oneNotSeed)
- listMenu->addAction(actionSetDownloadLimit);
- listMenu->addAction(actionSetUploadLimit);
+ listMenu->addAction(actionSetSpeedLimits);
listMenu->addAction(actionSetMaxRatio);
if (!oneNotSeed && oneHasMetadata)
{
diff --git a/src/gui/transferlistwidget.h b/src/gui/transferlistwidget.h
index b809f50eb..e9ae74db3 100644
--- a/src/gui/transferlistwidget.h
+++ b/src/gui/transferlistwidget.h
@@ -79,8 +79,7 @@ public slots:
void openSelectedTorrentsFolder() const;
void recheckSelectedTorrents();
void reannounceSelectedTorrents();
- void setDlLimitSelectedTorrents();
- void setUpLimitSelectedTorrents();
+ void setSpeedLimitsSelectedTorrents();
void setMaxRatioSelectedTorrents();
void previewSelectedTorrents();
void hideQueuePosColumn(bool hide);