diff --git a/src/app/application.cpp b/src/app/application.cpp index 9c0d10bc5..49b4dfbf0 100644 --- a/src/app/application.cpp +++ b/src/app/application.cpp @@ -48,7 +48,7 @@ #endif // Q_OS_MAC #include "mainwindow.h" #include "addnewtorrentdialog.h" -#include "shutdownconfirm.h" +#include "shutdownconfirmdlg.h" #else // DISABLE_GUI #include #endif // DISABLE_GUI @@ -97,7 +97,7 @@ Application::Application(const QString &id, int &argc, char **argv) : BaseApplication(id, argc, argv) , m_running(false) #ifndef DISABLE_GUI - , m_shutdownAct(ShutdownAction::None) + , m_shutdownAct(ShutdownDialogAction::Exit) #endif { Logger::initInstance(); @@ -298,15 +298,15 @@ void Application::allTorrentsFinished() bool shutdown = pref->shutdownWhenDownloadsComplete(); // Confirm shutdown - ShutdownAction action = ShutdownAction::None; + ShutdownDialogAction action = ShutdownDialogAction::Exit; if (suspend) - action = ShutdownAction::Suspend; + action = ShutdownDialogAction::Suspend; else if (hibernate) - action = ShutdownAction::Hibernate; + action = ShutdownDialogAction::Hibernate; else if (shutdown) - action = ShutdownAction::Shutdown; + action = ShutdownDialogAction::Shutdown; - if ((action == ShutdownAction::None) && (!pref->dontConfirmAutoExit())) { + if ((action == ShutdownDialogAction::Exit) && (!pref->dontConfirmAutoExit())) { if (!ShutdownConfirmDlg::askForConfirmation(action)) return; } @@ -604,7 +604,7 @@ void Application::cleanup() shutdownBRDestroy((HWND)m_window->effectiveWinId()); #endif // Q_OS_WIN delete m_window; - if (m_shutdownAct != ShutdownAction::None) { + if (m_shutdownAct != ShutdownDialogAction::Exit) { qDebug() << "Sending computer shutdown/suspend/hibernate signal..."; Utils::Misc::shutdownComputer(m_shutdownAct); } diff --git a/src/app/application.h b/src/app/application.h index f8f1de796..c399c2645 100644 --- a/src/app/application.h +++ b/src/app/application.h @@ -114,7 +114,7 @@ private: #ifndef DISABLE_GUI QPointer m_window; - ShutdownAction m_shutdownAct; + ShutdownDialogAction m_shutdownAct; #endif #ifndef DISABLE_WEBUI diff --git a/src/base/types.h b/src/base/types.h index 795b0ace6..bd18b1a40 100644 --- a/src/base/types.h +++ b/src/base/types.h @@ -33,9 +33,9 @@ const qlonglong MAX_ETA = 8640000; -enum class ShutdownAction +enum class ShutdownDialogAction { - None, + Exit, Shutdown, Suspend, Hibernate diff --git a/src/base/utils/misc.cpp b/src/base/utils/misc.cpp index e822656bc..37ac7c0b8 100644 --- a/src/base/utils/misc.cpp +++ b/src/base/utils/misc.cpp @@ -92,16 +92,16 @@ static struct { const char *source; const char *comment; } units[] = { }; #ifndef DISABLE_GUI -void Utils::Misc::shutdownComputer(ShutdownAction action) +void Utils::Misc::shutdownComputer(const ShutdownDialogAction &action) { #if (defined(Q_OS_UNIX) && !defined(Q_OS_MAC)) && defined(QT_DBUS_LIB) // Use dbus to power off / suspend the system - if (action != ShutdownAction::Shutdown) { + if (action != ShutdownDialogAction::Shutdown) { // Some recent systems use systemd's logind QDBusInterface login1Iface("org.freedesktop.login1", "/org/freedesktop/login1", "org.freedesktop.login1.Manager", QDBusConnection::systemBus()); if (login1Iface.isValid()) { - if (action == ShutdownAction::Suspend) + if (action == ShutdownDialogAction::Suspend) login1Iface.call("Suspend", false); else login1Iface.call("Hibernate", false); @@ -111,7 +111,7 @@ void Utils::Misc::shutdownComputer(ShutdownAction action) QDBusInterface upowerIface("org.freedesktop.UPower", "/org/freedesktop/UPower", "org.freedesktop.UPower", QDBusConnection::systemBus()); if (upowerIface.isValid()) { - if (action == ShutdownAction::Suspend) + if (action == ShutdownDialogAction::Suspend) upowerIface.call("Suspend"); else upowerIface.call("Hibernate"); @@ -121,7 +121,7 @@ void Utils::Misc::shutdownComputer(ShutdownAction action) QDBusInterface halIface("org.freedesktop.Hal", "/org/freedesktop/Hal/devices/computer", "org.freedesktop.Hal.Device.SystemPowerManagement", QDBusConnection::systemBus()); - if (action == ShutdownAction::Suspend) + if (action == ShutdownDialogAction::Suspend) halIface.call("Suspend", 5); else halIface.call("Hibernate"); @@ -150,7 +150,7 @@ void Utils::Misc::shutdownComputer(ShutdownAction action) #endif #ifdef Q_OS_MAC AEEventID EventToSend; - if (action != ShutdownAction::Shutdown) + if (action != ShutdownDialogAction::Shutdown) EventToSend = kAESleep; else EventToSend = kAEShutDown; @@ -203,9 +203,9 @@ void Utils::Misc::shutdownComputer(ShutdownAction action) if (GetLastError() != ERROR_SUCCESS) return; - if (action == ShutdownAction::Suspend) + if (action == ShutdownDialogAction::Suspend) SetSuspendState(false, false, false); - else if (action == ShutdownAction::Hibernate) + else if (action == ShutdownDialogAction::Hibernate) SetSuspendState(true, false, false); else InitiateSystemShutdownA(0, QCoreApplication::translate("misc", "qBittorrent will shutdown the computer now because all downloads are complete.").toLocal8Bit().data(), 10, true, false); diff --git a/src/base/utils/misc.h b/src/base/utils/misc.h index f942fa860..f6e566ae0 100644 --- a/src/base/utils/misc.h +++ b/src/base/utils/misc.h @@ -68,7 +68,7 @@ namespace Utils bool isUrl(const QString &s); #ifndef DISABLE_GUI - void shutdownComputer(ShutdownAction action); + void shutdownComputer(const ShutdownDialogAction &action); // Get screen center QPoint screenCenter(QWidget *win); QSize smallIconSize(); diff --git a/src/gui/CMakeLists.txt b/src/gui/CMakeLists.txt index a8f5119e6..31e1c28e2 100644 --- a/src/gui/CMakeLists.txt +++ b/src/gui/CMakeLists.txt @@ -47,7 +47,7 @@ options_imp.h previewlistdelegate.h previewselect.h scanfoldersdelegate.h -shutdownconfirm.h +shutdownconfirmdlg.h speedlimitdlg.h statsdialog.h statusbar.h @@ -83,7 +83,7 @@ messageboxraised.cpp options_imp.cpp previewselect.cpp scanfoldersdelegate.cpp -shutdownconfirm.cpp +shutdownconfirmdlg.cpp speedlimitdlg.cpp statsdialog.cpp statusbar.cpp @@ -126,6 +126,7 @@ autoexpandabledialog.ui statsdialog.ui options.ui torrentcreatordlg.ui +shutdownconfirmdlg.ui ) qbt_target_sources(about.qrc) diff --git a/src/gui/gui.pri b/src/gui/gui.pri index 41eca6818..7c6fcfb8e 100644 --- a/src/gui/gui.pri +++ b/src/gui/gui.pri @@ -39,7 +39,7 @@ HEADERS += \ $$PWD/messageboxraised.h \ $$PWD/options_imp.h \ $$PWD/advancedsettings.h \ - $$PWD/shutdownconfirm.h \ + $$PWD/shutdownconfirmdlg.h \ $$PWD/torrentmodel.h \ $$PWD/torrentcreatordlg.h \ $$PWD/scanfoldersdelegate.h \ @@ -80,7 +80,7 @@ SOURCES += \ $$PWD/advancedsettings.cpp \ $$PWD/trackerlogin.cpp \ $$PWD/options_imp.cpp \ - $$PWD/shutdownconfirm.cpp \ + $$PWD/shutdownconfirmdlg.cpp \ $$PWD/torrentmodel.cpp \ $$PWD/torrentcreatordlg.cpp \ $$PWD/scanfoldersdelegate.cpp \ @@ -107,7 +107,7 @@ FORMS += \ $$PWD/bandwidth_limit.ui \ $$PWD/updownratiodlg.ui \ $$PWD/confirmdeletiondlg.ui \ - $$PWD/confirmshutdowndlg.ui \ + $$PWD/shutdownconfirmdlg.ui \ $$PWD/torrentimportdlg.ui \ $$PWD/executionlog.ui \ $$PWD/addnewtorrentdialog.ui \ diff --git a/src/gui/shutdownconfirm.cpp b/src/gui/shutdownconfirmdlg.cpp similarity index 75% rename from src/gui/shutdownconfirm.cpp rename to src/gui/shutdownconfirmdlg.cpp index d5025e1f4..3fbbe0c97 100644 --- a/src/gui/shutdownconfirm.cpp +++ b/src/gui/shutdownconfirmdlg.cpp @@ -30,34 +30,30 @@ * Contact : hammered999@gmail.com */ -#include -#include +#include "shutdownconfirmdlg.h" +#include "ui_shutdownconfirmdlg.h" + #include #include -#include #include -#include #include #include "base/preferences.h" -#include "base/types.h" +#include "base/utils/misc.h" -#include "shutdownconfirm.h" -#include "ui_confirmshutdowndlg.h" -ShutdownConfirmDlg::ShutdownConfirmDlg(const ShutdownAction &action) +ShutdownConfirmDlg::ShutdownConfirmDlg(const ShutdownDialogAction &action) : ui(new Ui::confirmShutdownDlg) , m_timeout(15) , m_action(action) { ui->setupUi(this); + initText(); QIcon warningIcon(style()->standardIcon(QStyle::SP_MessageBoxWarning)); ui->warningLabel->setPixmap(warningIcon.pixmap(32)); - updateText(); - - if (m_action == ShutdownAction::None) + if (m_action == ShutdownDialogAction::Exit) ui->neverShowAgainCheckbox->setVisible(true); else ui->neverShowAgainCheckbox->setVisible(false); @@ -66,12 +62,13 @@ ShutdownConfirmDlg::ShutdownConfirmDlg(const ShutdownAction &action) QPushButton *cancelButton = ui->buttonBox->button(QDialogButtonBox::Cancel); cancelButton->setFocus(); cancelButton->setDefault(true); + // Always on top - setWindowFlags(windowFlags()|Qt::WindowStaysOnTopHint); + setWindowFlags(windowFlags() | Qt::WindowStaysOnTopHint); + move(Utils::Misc::screenCenter(this)); + m_timer.setInterval(1000); // 1sec connect(&m_timer, SIGNAL(timeout()), this, SLOT(updateSeconds())); - // Move to center - move(Utils::Misc::screenCenter(this)); } ShutdownConfirmDlg::~ShutdownConfirmDlg() @@ -85,11 +82,10 @@ void ShutdownConfirmDlg::showEvent(QShowEvent *event) m_timer.start(); } -bool ShutdownConfirmDlg::askForConfirmation(const ShutdownAction &action) +bool ShutdownConfirmDlg::askForConfirmation(const ShutdownDialogAction &action) { ShutdownConfirmDlg dlg(action); - dlg.exec(); - return dlg.shutdown(); + return (dlg.exec() == QDialog::Accepted); } void ShutdownConfirmDlg::updateSeconds() @@ -108,43 +104,43 @@ void ShutdownConfirmDlg::accept() QDialog::accept(); } -bool ShutdownConfirmDlg::shutdown() const -{ - return (result() == QDialog::Accepted); -} - -void ShutdownConfirmDlg::updateText() +void ShutdownConfirmDlg::initText() { - QString text; QPushButton *okButton = ui->buttonBox->button(QDialogButtonBox::Ok); switch (m_action) { - case ShutdownAction::None: - text = tr("qBittorrent will now exit."); + case ShutdownDialogAction::Exit: + m_msg = tr("qBittorrent will now exit."); okButton->setText(tr("E&xit Now")); setWindowTitle(tr("Exit confirmation")); break; - case ShutdownAction::Shutdown: - text = tr("The computer is going to shutdown."); + case ShutdownDialogAction::Shutdown: + m_msg = tr("The computer is going to shutdown."); okButton->setText(tr("&Shutdown Now")); setWindowTitle(tr("Shutdown confirmation")); break; - case ShutdownAction::Suspend: - text = tr("The computer is going to enter suspend mode."); + case ShutdownDialogAction::Suspend: + m_msg = tr("The computer is going to enter suspend mode."); okButton->setText(tr("&Suspend Now")); setWindowTitle(tr("Suspend confirmation")); break; - case ShutdownAction::Hibernate: - text = tr("The computer is going to enter hibernation mode."); + case ShutdownDialogAction::Hibernate: + m_msg = tr("The computer is going to enter hibernation mode."); okButton->setText(tr("&Hibernate Now")); setWindowTitle(tr("Hibernate confirmation")); break; } - text += "\n" + tr("You can cancel the action within %1 seconds.").arg(QString::number(m_timeout)) + "\n"; - ui->shutdownText->setText(text); + m_msg += "\n"; + updateText(); +} + +void ShutdownConfirmDlg::updateText() +{ + QString t = tr("You can cancel the action within %1 seconds.").arg(QString::number(m_timeout)) + "\n"; + ui->shutdownText->setText(m_msg + t); } diff --git a/src/gui/shutdownconfirm.h b/src/gui/shutdownconfirmdlg.h similarity index 82% rename from src/gui/shutdownconfirm.h rename to src/gui/shutdownconfirmdlg.h index 6b2f0ae04..88b7c48de 100644 --- a/src/gui/shutdownconfirm.h +++ b/src/gui/shutdownconfirmdlg.h @@ -28,34 +28,30 @@ * Contact : chris@qbittorrent.org */ -#ifndef SHUTDOWNCONFIRM_H -#define SHUTDOWNCONFIRM_H +#ifndef SHUTDOWNCONFIRMDLG_H +#define SHUTDOWNCONFIRMDLG_H #include #include -#include "base/utils/misc.h" - -class QLabel; -class QCheckBox; +#include "base/types.h" namespace Ui { class confirmShutdownDlg; } -class ShutdownConfirmDlg : public QDialog +class ShutdownConfirmDlg: public QDialog { Q_OBJECT public: - ShutdownConfirmDlg(const ShutdownAction &action); + ShutdownConfirmDlg(const ShutdownDialogAction &action); ~ShutdownConfirmDlg(); - bool shutdown() const; - static bool askForConfirmation(const ShutdownAction &action); + static bool askForConfirmation(const ShutdownDialogAction &action); protected: - void showEvent(QShowEvent *event); + void showEvent(QShowEvent *event) override; private slots: void updateSeconds(); @@ -63,13 +59,15 @@ private slots: private: // Methods + void initText(); void updateText(); // Vars Ui::confirmShutdownDlg *ui; QTimer m_timer; int m_timeout; - ShutdownAction m_action; + ShutdownDialogAction m_action; + QString m_msg; }; #endif // SHUTDOWNCONFIRM_H diff --git a/src/gui/confirmshutdowndlg.ui b/src/gui/shutdownconfirmdlg.ui similarity index 98% rename from src/gui/confirmshutdowndlg.ui rename to src/gui/shutdownconfirmdlg.ui index e2a62b620..5c46f40a4 100644 --- a/src/gui/confirmshutdowndlg.ui +++ b/src/gui/shutdownconfirmdlg.ui @@ -6,8 +6,8 @@ 0 0 - 407 - 103 + 410 + 140