diff --git a/src/gui/mainwindow.cpp b/src/gui/mainwindow.cpp index 48b54dd6f..5983ab8a6 100644 --- a/src/gui/mainwindow.cpp +++ b/src/gui/mainwindow.cpp @@ -1897,35 +1897,57 @@ void MainWindow::on_actionDownloadFromURL_triggered() } #if defined(Q_OS_WIN) || defined(Q_OS_MACOS) -void MainWindow::handleUpdateCheckFinished(bool updateAvailable, QString newVersion, bool invokedByUser) +void MainWindow::handleUpdateCheckFinished(const bool updateAvailable, const QString &newVersion, const bool invokedByUser) { - QMessageBox::StandardButton answer = QMessageBox::Yes; - if (updateAvailable) - { - answer = QMessageBox::question(this, tr("qBittorrent Update Available") - , tr("A new version is available.") + "
" - + tr("Do you want to download %1?").arg(newVersion) + "

" - + QString::fromLatin1("%1").arg(tr("Open changelog...")) - , QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes); - if (answer == QMessageBox::Yes) - { - // The user want to update, let's download the update - ProgramUpdater *updater = dynamic_cast(sender()); - updater->updateProgram(); - } - } - else if (invokedByUser) - { - QMessageBox::information(this, tr("qBittorrent"), - tr("No updates available.\nYou are already using the latest version.")); - } - sender()->deleteLater(); m_ui->actionCheckForUpdates->setEnabled(true); m_ui->actionCheckForUpdates->setText(tr("&Check for Updates")); m_ui->actionCheckForUpdates->setToolTip(tr("Check for program updates")); - // Don't bother the user again in this session if he chose to ignore the update - if (Preferences::instance()->isUpdateCheckEnabled() && (answer == QMessageBox::Yes)) - m_programUpdateTimer->start(); + + QObject *signalSender = sender(); + + if (updateAvailable) + { + const QString msg {tr("A new version is available.") + "
" + + tr("Do you want to download %1?").arg(newVersion) + "

" + + QString::fromLatin1("%1").arg(tr("Open changelog..."))}; + auto *msgBox = new QMessageBox {QMessageBox::Question, tr("qBittorrent Update Available"), msg + , (QMessageBox::Yes | QMessageBox::No), this}; + msgBox->setAttribute(Qt::WA_DeleteOnClose); + msgBox->setAttribute(Qt::WA_ShowWithoutActivating); + msgBox->setDefaultButton(QMessageBox::Yes); + connect(msgBox, &QMessageBox::buttonClicked, this, [this, msgBox, signalSender](QAbstractButton *button) + { + if (msgBox->buttonRole(button) == QMessageBox::YesRole) + { + // The user want to update, let's download the update + auto *updater = dynamic_cast(signalSender); + updater->updateProgram(); + } + else + { + if (Preferences::instance()->isUpdateCheckEnabled()) + m_programUpdateTimer->start(); + } + + signalSender->deleteLater(); + }); + msgBox->open(); + } + else if (invokedByUser) + { + auto *msgBox = new QMessageBox {QMessageBox::Information, QLatin1String("qBittorrent") + , tr("No updates available.\nYou are already using the latest version.") + , QMessageBox::Ok, this}; + msgBox->setAttribute(Qt::WA_DeleteOnClose); + connect(msgBox, &QDialog::finished, this, [this, signalSender](const int) + { + if (Preferences::instance()->isUpdateCheckEnabled()) + m_programUpdateTimer->start(); + + signalSender->deleteLater(); + }); + msgBox->open(); + } } #endif diff --git a/src/gui/mainwindow.h b/src/gui/mainwindow.h index cea1140fb..6f0ee5998 100644 --- a/src/gui/mainwindow.h +++ b/src/gui/mainwindow.h @@ -135,7 +135,7 @@ private slots: void askRecursiveTorrentDownloadConfirmation(BitTorrent::Torrent *const torrent); void optionsSaved(); #if defined(Q_OS_WIN) || defined(Q_OS_MACOS) - void handleUpdateCheckFinished(bool updateAvailable, QString newVersion, bool invokedByUser); + void handleUpdateCheckFinished(bool updateAvailable, const QString &newVersion, bool invokedByUser); #endif void toggleAlternativeSpeeds(); diff --git a/src/gui/optionsdialog.cpp b/src/gui/optionsdialog.cpp index e867b614f..20119e850 100644 --- a/src/gui/optionsdialog.cpp +++ b/src/gui/optionsdialog.cpp @@ -211,8 +211,8 @@ OptionsDialog::OptionsDialog(QWidget *parent) m_ui->IpFilterRefreshBtn->setIcon(UIThemeManager::instance()->getIcon("view-refresh")); - m_ui->labelGlobalRate->setPixmap(Utils::Gui::scaledPixmap(UIThemeManager::instance()->getIcon(QLatin1String("slow_off")), this, 16)); - m_ui->labelAltRate->setPixmap(Utils::Gui::scaledPixmap(UIThemeManager::instance()->getIcon(QLatin1String("slow")), this, 16)); + m_ui->labelGlobalRate->setPixmap(Utils::Gui::scaledPixmap(UIThemeManager::instance()->getIcon(QLatin1String("slow_off")), this, 24)); + m_ui->labelAltRate->setPixmap(Utils::Gui::scaledPixmap(UIThemeManager::instance()->getIcon(QLatin1String("slow")), this, 24)); m_ui->deleteTorrentWarningIcon->setPixmap(QApplication::style()->standardIcon(QStyle::SP_MessageBoxCritical).pixmap(16, 16)); m_ui->deleteTorrentWarningIcon->hide(); diff --git a/src/gui/properties/propertieswidget.cpp b/src/gui/properties/propertieswidget.cpp index 3c692ab44..cdb68da86 100644 --- a/src/gui/properties/propertieswidget.cpp +++ b/src/gui/properties/propertieswidget.cpp @@ -800,7 +800,7 @@ void PropertiesWidget::editWebSeed() if (!m_ui->listWebSeeds->findItems(newSeed, Qt::MatchFixedString).empty()) { - QMessageBox::warning(this, tr("qBittorrent"), + QMessageBox::warning(this, QLatin1String("qBittorrent"), tr("This URL seed is already in the list."), QMessageBox::Ok); return;