diff --git a/src/base/preferences.cpp b/src/base/preferences.cpp
index 5cbbce647..d8bc790ca 100644
--- a/src/base/preferences.cpp
+++ b/src/base/preferences.cpp
@@ -1224,6 +1224,16 @@ void Preferences::setConfirmRemoveAllTags(const bool enabled)
setValue(u"Preferences/Advanced/confirmRemoveAllTags"_qs, enabled);
}
+bool Preferences::confirmPauseAndResumeAll() const
+{
+ return value(u"GUI/ConfirmActions/PauseAndResumeAllTorrents"_qs, true);
+}
+
+void Preferences::setConfirmPauseAndResumeAll(const bool enabled)
+{
+ setValue(u"GUI/ConfirmActions/PauseAndResumeAllTorrents"_qs, enabled);
+}
+
#ifndef Q_OS_MACOS
TrayIcon::Style Preferences::trayIconStyle() const
{
diff --git a/src/base/preferences.h b/src/base/preferences.h
index f7c719966..93f9e8b2c 100644
--- a/src/base/preferences.h
+++ b/src/base/preferences.h
@@ -315,6 +315,8 @@ public:
void setConfirmTorrentRecheck(bool enabled);
bool confirmRemoveAllTags() const;
void setConfirmRemoveAllTags(bool enabled);
+ bool confirmPauseAndResumeAll() const;
+ void setConfirmPauseAndResumeAll(bool enabled);
#ifndef Q_OS_MACOS
bool systemTrayEnabled() const;
void setSystemTrayEnabled(bool enabled);
diff --git a/src/gui/optionsdialog.cpp b/src/gui/optionsdialog.cpp
index fc975c4fc..f10c37727 100644
--- a/src/gui/optionsdialog.cpp
+++ b/src/gui/optionsdialog.cpp
@@ -253,6 +253,7 @@ void OptionsDialog::loadBehaviorTabOptions()
m_ui->checkShowSplash->setChecked(!pref->isSplashScreenDisabled());
m_ui->checkProgramExitConfirm->setChecked(pref->confirmOnExit());
m_ui->checkProgramAutoExitConfirm->setChecked(!pref->dontConfirmAutoExit());
+ m_ui->checkConfirmPauseAndResumeAll->setChecked(pref->confirmPauseAndResumeAll());
m_ui->windowStateComboBox->addItem(tr("Normal"), QVariant::fromValue(WindowState::Normal));
m_ui->windowStateComboBox->addItem(tr("Minimized"), QVariant::fromValue(WindowState::Minimized));
@@ -354,6 +355,7 @@ void OptionsDialog::loadBehaviorTabOptions()
connect(m_ui->checkShowSplash, &QAbstractButton::toggled, this, &ThisType::enableApplyButton);
connect(m_ui->checkProgramExitConfirm, &QAbstractButton::toggled, this, &ThisType::enableApplyButton);
connect(m_ui->checkProgramAutoExitConfirm, &QAbstractButton::toggled, this, &ThisType::enableApplyButton);
+ connect(m_ui->checkConfirmPauseAndResumeAll, &QAbstractButton::toggled, this, &ThisType::enableApplyButton);
connect(m_ui->checkShowSystray, &QGroupBox::toggled, this, &ThisType::enableApplyButton);
connect(m_ui->checkMinimizeToSysTray, &QAbstractButton::toggled, this, &ThisType::enableApplyButton);
connect(m_ui->checkCloseToSystray, &QAbstractButton::toggled, this, &ThisType::enableApplyButton);
@@ -425,6 +427,7 @@ void OptionsDialog::saveBehaviorTabOptions() const
pref->setSplashScreenDisabled(isSplashScreenDisabled());
pref->setConfirmOnExit(m_ui->checkProgramExitConfirm->isChecked());
pref->setDontConfirmAutoExit(!m_ui->checkProgramAutoExitConfirm->isChecked());
+ pref->setConfirmPauseAndResumeAll(m_ui->checkConfirmPauseAndResumeAll->isChecked());
#ifdef Q_OS_WIN
pref->setWinStartup(WinStartup());
diff --git a/src/gui/optionsdialog.ui b/src/gui/optionsdialog.ui
index 06c7ebb61..8be4a9fd1 100644
--- a/src/gui/optionsdialog.ui
+++ b/src/gui/optionsdialog.ui
@@ -239,6 +239,19 @@
+ -
+
+
+ Shows a confirmation dialog upon pausing/resuming all the torrents
+
+
+ Confirm "Pause/Resume all" actions
+
+
+ true
+
+
+
-
diff --git a/src/gui/transferlistwidget.cpp b/src/gui/transferlistwidget.cpp
index 0ed31f203..2bcc09eef 100644
--- a/src/gui/transferlistwidget.cpp
+++ b/src/gui/transferlistwidget.cpp
@@ -362,14 +362,15 @@ void TransferListWidget::setSelectedTorrentsLocation()
void TransferListWidget::pauseAllTorrents()
{
- // Show confirmation if user would really like to Pause All
- const QMessageBox::StandardButton ret =
- QMessageBox::question(this, tr("Confirm pause")
- , tr("Would you like to pause all torrents?")
- , (QMessageBox::Yes | QMessageBox::No));
+ if (Preferences::instance()->confirmPauseAndResumeAll())
+ {
+ // Show confirmation if user would really like to Pause All
+ const QMessageBox::StandardButton ret = QMessageBox::question(this, tr("Confirm pause")
+ , tr("Would you like to pause all torrents?"), (QMessageBox::Yes | QMessageBox::No));
- if (ret != QMessageBox::Yes)
- return;
+ if (ret != QMessageBox::Yes)
+ return;
+ }
for (BitTorrent::Torrent *const torrent : asConst(BitTorrent::Session::instance()->torrents()))
torrent->pause();
@@ -377,14 +378,15 @@ void TransferListWidget::pauseAllTorrents()
void TransferListWidget::resumeAllTorrents()
{
- // Show confirmation if user would really like to Resume All
- const QMessageBox::StandardButton ret =
- QMessageBox::question(this, tr("Confirm resume")
- , tr("Would you like to resume all torrents?")
- , (QMessageBox::Yes | QMessageBox::No));
+ if (Preferences::instance()->confirmPauseAndResumeAll())
+ {
+ // Show confirmation if user would really like to Resume All
+ const QMessageBox::StandardButton ret = QMessageBox::question(this, tr("Confirm resume")
+ , tr("Would you like to resume all torrents?"), (QMessageBox::Yes | QMessageBox::No));
- if (ret != QMessageBox::Yes)
- return;
+ if (ret != QMessageBox::Yes)
+ return;
+ }
for (BitTorrent::Torrent *const torrent : asConst(BitTorrent::Session::instance()->torrents()))
torrent->resume();