Merge pull request #5111 from Chocobo1/refactor_shutdowndlg

Cleanup shutdowndlg
This commit is contained in:
sledgehammer999 2016-04-17 11:23:07 -05:00
commit 2d0b9e6538
10 changed files with 68 additions and 73 deletions

View file

@ -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);
}

View file

@ -114,7 +114,7 @@ private:
#ifndef DISABLE_GUI
QPointer<MainWindow> m_window;
ShutdownAction m_shutdownAct;
ShutdownDialogAction m_shutdownAct;
#endif
#ifndef DISABLE_WEBUI

View file

@ -33,9 +33,9 @@
const qlonglong MAX_ETA = 8640000;
enum class ShutdownAction
enum class ShutdownDialogAction
{
None,
Exit,
Shutdown,
Suspend,
Hibernate

View file

@ -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);

View file

@ -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();

View file

@ -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)

View file

@ -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 \

View file

@ -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);
}

View file

@ -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

View file

@ -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">