mirror of
https://github.com/qbittorrent/qBittorrent.git
synced 2024-11-28 21:38:51 +03:00
Merge pull request #5111 from Chocobo1/refactor_shutdowndlg
Cleanup shutdowndlg
This commit is contained in:
commit
2d0b9e6538
10 changed files with 68 additions and 73 deletions
|
@ -48,7 +48,7 @@
|
|||
#endif // Q_OS_MAC
|
||||
#include "mainwindow.h"
|
||||
#include "addnewtorrentdialog.h"
|
||||
#include "shutdownconfirm.h"
|
||||
#include "shutdownconfirmdlg.h"
|
||||
#else // DISABLE_GUI
|
||||
#include <iostream>
|
||||
#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);
|
||||
}
|
||||
|
|
|
@ -114,7 +114,7 @@ private:
|
|||
|
||||
#ifndef DISABLE_GUI
|
||||
QPointer<MainWindow> m_window;
|
||||
ShutdownAction m_shutdownAct;
|
||||
ShutdownDialogAction m_shutdownAct;
|
||||
#endif
|
||||
|
||||
#ifndef DISABLE_WEBUI
|
||||
|
|
|
@ -33,9 +33,9 @@
|
|||
|
||||
const qlonglong MAX_ETA = 8640000;
|
||||
|
||||
enum class ShutdownAction
|
||||
enum class ShutdownDialogAction
|
||||
{
|
||||
None,
|
||||
Exit,
|
||||
Shutdown,
|
||||
Suspend,
|
||||
Hibernate
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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 \
|
||||
|
|
|
@ -30,34 +30,30 @@
|
|||
* Contact : hammered999@gmail.com
|
||||
*/
|
||||
|
||||
#include <QVBoxLayout>
|
||||
#include <QHBoxLayout>
|
||||
#include "shutdownconfirmdlg.h"
|
||||
#include "ui_shutdownconfirmdlg.h"
|
||||
|
||||
#include <QStyle>
|
||||
#include <QIcon>
|
||||
#include <QLabel>
|
||||
#include <QDialogButtonBox>
|
||||
#include <QCheckBox>
|
||||
#include <QPushButton>
|
||||
|
||||
#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
|
||||
void ShutdownConfirmDlg::initText()
|
||||
{
|
||||
return (result() == QDialog::Accepted);
|
||||
}
|
||||
|
||||
void ShutdownConfirmDlg::updateText()
|
||||
{
|
||||
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);
|
||||
}
|
|
@ -28,34 +28,30 @@
|
|||
* Contact : chris@qbittorrent.org
|
||||
*/
|
||||
|
||||
#ifndef SHUTDOWNCONFIRM_H
|
||||
#define SHUTDOWNCONFIRM_H
|
||||
#ifndef SHUTDOWNCONFIRMDLG_H
|
||||
#define SHUTDOWNCONFIRMDLG_H
|
||||
|
||||
#include <QDialog>
|
||||
#include <QTimer>
|
||||
#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
|
|
@ -6,8 +6,8 @@
|
|||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>407</width>
|
||||
<height>103</height>
|
||||
<width>410</width>
|
||||
<height>140</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_3">
|
Loading…
Reference in a new issue