From 76d3e9033d24f7b6065092021714fb02d655fe51 Mon Sep 17 00:00:00 2001 From: Christophe Dumez Date: Sat, 5 Feb 2011 14:51:31 +0000 Subject: [PATCH] FEATURE: Added auto-shutdown confirmation dialog --- Changelog | 1 + src/qtlibtorrent/qbtsession.cpp | 13 ++++++ src/qtlibtorrent/qtlibtorrent.pri | 4 +- src/qtlibtorrent/shutdownconfirm.h | 68 ++++++++++++++++++++++++++++++ 4 files changed, 85 insertions(+), 1 deletion(-) create mode 100644 src/qtlibtorrent/shutdownconfirm.h diff --git a/Changelog b/Changelog index a7612e7c9..167d82134 100644 --- a/Changelog +++ b/Changelog @@ -1,4 +1,5 @@ * Unknown - Christophe Dumez - v2.7.0 + - FEATURE: Added auto-shutdown confirmation dialog - FEATURE: Added option to skip torrent deletion confirmation (Ville Kiiskinen) * Sun Jan 9 2011 - Christophe Dumez - v2.6.0 diff --git a/src/qtlibtorrent/qbtsession.cpp b/src/qtlibtorrent/qbtsession.cpp index 402b400a3..56575de5e 100644 --- a/src/qtlibtorrent/qbtsession.cpp +++ b/src/qtlibtorrent/qbtsession.cpp @@ -47,6 +47,7 @@ #include "preferences.h" #include "scannedfoldersmodel.h" #ifndef DISABLE_GUI +#include "shutdownconfirm.h" #include "geoipmanager.h" #endif #include "torrentpersistentdata.h" @@ -1987,6 +1988,18 @@ void QBtSession::readAlerts() { if(will_shutdown) { bool suspend = pref.suspendWhenDownloadsComplete(); bool shutdown = pref.shutdownWhenDownloadsComplete(); + // Confirm shutdown + QString confirm_msg; + if(suspend) { + confirm_msg = tr("The computer will now go to sleep mode unless you cancel within the next 15 seconds..."); + } else if(shutdown) { + confirm_msg = tr("The computer will now be switched off unless you cancel within the next 15 seconds..."); + } else { + confirm_msg = tr("qBittorrent will now exit unless you cancel within the next 15 seconds..."); + } + if(!ShutdownConfirmDlg::askForConfirmation(confirm_msg)) + return; + // Actually shut down if(suspend || shutdown) { qDebug("Preparing for auto-shutdown because all downloads are complete!"); // Disabling it for next time diff --git a/src/qtlibtorrent/qtlibtorrent.pri b/src/qtlibtorrent/qtlibtorrent.pri index ae1517bb7..5ded68dcd 100644 --- a/src/qtlibtorrent/qtlibtorrent.pri +++ b/src/qtlibtorrent/qtlibtorrent.pri @@ -12,6 +12,8 @@ SOURCES += $$PWD/qbtsession.cpp \ $$PWD/torrentspeedmonitor.cpp !contains(DEFINES, DISABLE_GUI) { - HEADERS += $$PWD/torrentmodel.h + HEADERS += $$PWD/torrentmodel.h \ + $$PWD/shutdownconfirm.h + SOURCES += $$PWD/torrentmodel.cpp } diff --git a/src/qtlibtorrent/shutdownconfirm.h b/src/qtlibtorrent/shutdownconfirm.h new file mode 100644 index 000000000..afb7ac051 --- /dev/null +++ b/src/qtlibtorrent/shutdownconfirm.h @@ -0,0 +1,68 @@ +/* + * Bittorrent Client using Qt4 and libtorrent. + * Copyright (C) 2011 Christophe Dumez + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * In addition, as a special exception, the copyright holders give permission to + * link this program with the OpenSSL project's "OpenSSL" library (or with + * modified versions of it that use the same license as the "OpenSSL" library), + * and distribute the linked executables. You must obey the GNU General Public + * License in all respects for all of the code used other than "OpenSSL". If you + * modify file(s), you may extend this exception to your version of the file(s), + * but you are not obligated to do so. If you do not wish to do so, delete this + * exception statement from your version. + * + * Contact : chris@qbittorrent.org + */ + +#ifndef SHUTDOWNCONFIRM_H +#define SHUTDOWNCONFIRM_H + +#include +#include +#include "misc.h" + +class ShutdownConfirmDlg : public QMessageBox { + Q_OBJECT + +public: + ShutdownConfirmDlg(const QString &message) { + // Text + setWindowTitle(tr("Shutdown confirmation")); + setText(message); + // Cancel Button + addButton(QMessageBox::Cancel); + // Icon + setIcon(QMessageBox::Warning); + // Always on top + setWindowFlags(windowFlags()|Qt::WindowStaysOnTopHint); + show(); + // Move to center + move(misc::screenCenter(this)); + } + + static bool askForConfirmation(const QString &message) { + ShutdownConfirmDlg dlg(message); + // Auto shutdown timer + QTimer timer; + connect(&timer, SIGNAL(timeout()), &dlg, SLOT(accept())); + timer.start(15000); // 15sec + dlg.exec(); + return (dlg.result() == QDialog::Accepted); + } +}; + +#endif // SHUTDOWNCONFIRM_H