More windowstate-related changes
authorManuel Nickschas <sputnick@quassel-irc.org>
Tue, 26 May 2009 08:25:35 +0000 (10:25 +0200)
committerManuel Nickschas <sputnick@quassel-irc.org>
Mon, 8 Jun 2009 12:56:00 +0000 (14:56 +0200)
* Properly save/restore state to/from session
* Fix minimize on close on Windows, fixes #703
* Various tweaks, hoping to solve the remaining issues with that

Please test if you had problems with window behavior before, and get back to me.

src/qtui/mainwin.cpp
src/qtui/mainwin.h
src/qtui/qtuiapplication.cpp
src/qtui/qtuiapplication.h

index 37d89d3..8578ad0 100644 (file)
@@ -130,8 +130,6 @@ MainWin::MainWin(QWidget *parent)
   installEventFilter(new JumpKeyHandler(this));
 
   QtUiApplication* app = qobject_cast<QtUiApplication*> qApp;
-  connect(app, SIGNAL(saveStateToSession(const QString&)), SLOT(saveStateToSession(const QString&)));
-  connect(app, SIGNAL(saveStateToSessionSettings(SessionSettings&)), SLOT(saveStateToSessionSettings(SessionSettings&)));
   connect(app, SIGNAL(aboutToQuit()), SLOT(aboutToQuit()));
 }
 
@@ -212,11 +210,14 @@ void MainWin::saveStateToSettings(UiSettings &s) {
 }
 
 void MainWin::restoreStateFromSettings(UiSettings &s) {
+  _normalSize = s.value("MainWinSize", size()).toSize();
+  _normalPos = s.value("MainWinPos", pos()).toPoint();
+
   restoreGeometry(s.value("MainWinGeometry").toByteArray());
   if(isMaximized()) {
     // restoreGeometry() fails if the windows was maximized, so we resize and position explicitly
-    resize(s.value("MainWinSize", QSize(800, 500)).toSize());
-    move(s.value("MainWinPos").toPoint());
+    resize(_normalSize);
+    move(_normalPos);
   }
 
   restoreState(s.value("MainWinState").toByteArray());
@@ -774,22 +775,22 @@ void MainWin::moveEvent(QMoveEvent *event) {
   if(!(windowState() & Qt::WindowMaximized))
     _normalPos = event->pos();
 
-  event->ignore();
+  QMainWindow::moveEvent(event);
 }
 
 void MainWin::resizeEvent(QResizeEvent *event) {
   if(!(windowState() & Qt::WindowMaximized))
     _normalSize = event->size();
 
-  event->ignore();
+  QMainWindow::resizeEvent(event);
 }
 
 void MainWin::closeEvent(QCloseEvent *event) {
   QtUiSettings s;
   QtUiApplication* app = qobject_cast<QtUiApplication*> qApp;
   Q_ASSERT(app);
-  if(!app->aboutToQuit() && s.value("UseSystemTrayIcon").toBool() && s.value("MinimizeOnClose").toBool()) {
-    toggleMinimizedToTray();
+  if(!app->isAboutToQuit() && s.value("UseSystemTrayIcon").toBool() && s.value("MinimizeOnClose").toBool()) {
+    hideToTray();
     event->ignore();
   } else {
     event->accept();
@@ -974,24 +975,6 @@ void MainWin::on_actionDebugLog_triggered() {
   logWidget->show();
 }
 
-// FIXME
-void MainWin::saveStateToSession(const QString &sessionId) {
-  return;
-  SessionSettings s(sessionId);
-
-  s.setValue("MainWinSize", size());
-  s.setValue("MainWinPos", pos());
-  s.setValue("MainWinState", saveState());
-}
-
-// FIXME
-void MainWin::saveStateToSessionSettings(SessionSettings & s)
-{
-  s.setValue("MainWinSize", size());
-  s.setValue("MainWinPos", pos());
-  s.setValue("MainWinState", saveState());
-}
-
 void MainWin::showStatusBarMessage(const QString &message) {
   statusBar()->showMessage(message, 10000);
 }
index ac79a8d..13aa2f3 100644 (file)
@@ -83,8 +83,6 @@ class MainWin
     void restoreStateFromSettings(UiSettings &);
 
   public slots:
-    void saveStateToSession(const QString &sessionId);
-    void saveStateToSessionSettings(SessionSettings &s);
     void showStatusBarMessage(const QString &message);
 
     void toggleMinimizedToTray();
index 047b1f5..9d1b1ba 100644 (file)
@@ -131,11 +131,10 @@ void QtUiApplication::commitData(QSessionManager &manager) {
 
 void QtUiApplication::saveState(QSessionManager & manager) {
   //qDebug() << QString("saving session state to id %1").arg(manager.sessionId());
-  AccountId activeCore = Client::currentCoreAccount();
+  AccountId activeCore = Client::currentCoreAccount(); // FIXME store this!
   SessionSettings s(manager.sessionId());
   s.setSessionAge(0);
-  emit saveStateToSession(manager.sessionId());
-  emit saveStateToSessionSettings(s);
+  QtUi::mainWindow()->saveStateToSettings(s);
 }
 
 void QtUiApplication::resumeSessionIfPossible() {
@@ -145,8 +144,7 @@ void QtUiApplication::resumeSessionIfPossible() {
     SessionSettings s(sessionId());
     s.sessionAging();
     s.setSessionAge(0);
-    emit resumeFromSession(sessionId());
-    emit resumeFromSessionSettings(s);
+    QtUi::mainWindow()->restoreStateFromSettings(s);
     s.cleanup();
   } else {
     SessionSettings s(QString("1"));
index fad3ea8..4d34683 100644 (file)
@@ -51,13 +51,7 @@ public:
   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);
+  inline bool isAboutToQuit() const { return _aboutToQuit; }
 
 private:
   bool _aboutToQuit;