void MainWin::closeEvent(QCloseEvent *event) {
QtUiSettings s;
- if(s.value("UseSystemTrayIcon").toBool() && s.value("MinimizeOnClose").toBool()) {
+ QtUiApplication* app = qobject_cast<QtUiApplication*> qApp;
+ Q_ASSERT(app);
+ if(!app->aboutToQuit() && s.value("UseSystemTrayIcon").toBool() && s.value("MinimizeOnClose").toBool()) {
toggleVisibility();
event->ignore();
} else {
#include "qtui.h"
#include "sessionsettings.h"
-
-// void myMessageOutput(QtMsgType type, const char *msg) {
-// Client::debugLog() << "Debug:" << msg << '\n';
-// return;
-// // switch (type) {
-// // case QtDebugMsg:
-// // break;
-// // case QtWarningMsg:
-// // fprintf(stderr, "Warning: %s\n", msg);
-// // break;
-// // case QtCriticalMsg:
-// // fprintf(stderr, "Critical: %s\n", msg);
-// // break;
-// // case QtFatalMsg:
-// // fprintf(stderr, "Fatal: %s\n", msg);
-// // abort();
-// // }
-// }
-
QtUiApplication::QtUiApplication(int &argc, char **argv)
#ifdef HAVE_KDE
- : KApplication(), Quassel() {
- Q_UNUSED(argc); Q_UNUSED(argv);
+ : KApplication(),
#else
- : QApplication(argc, argv), Quassel() {
+ : QApplication(argc, argv),
+#endif
+ Quassel(),
+ _aboutToQuit(false)
+{
+#ifdef HAVE_KDE
+ Q_UNUSED(argc)
+ Q_UNUSED(argv)
#endif
setRunMode(Quassel::ClientOnly);
Client::destroy();
}
+void QtUiApplication::commitData(QSessionManager &manager) {
+ _aboutToQuit = true;
+}
+
void QtUiApplication::saveState(QSessionManager & manager) {
//qDebug() << QString("saving session state to id %1").arg(manager.sessionId());
AccountId activeCore = Client::currentCoreAccount();
Q_OBJECT
- public:
+public:
QtUiApplication(int &, char **);
~QtUiApplication();
virtual bool init();
void resumeSessionIfPossible();
- virtual void saveState(QSessionManager & manager);
+ virtual void commitData(QSessionManager &manager);
+ virtual void saveState(QSessionManager &manager);
+
+ inline bool aboutToQuit() const { return _aboutToQuit; }
signals:
void saveStateToSession(const QString &sessionId);
void saveStateToSessionSettings(SessionSettings &s); // FIXME refs in signals won't probably work
void resumeFromSession(const QString sessionId);
void resumeFromSessionSettings(SessionSettings &s);
+
+private:
+ bool _aboutToQuit;
};
#endif