diff --git a/main.cpp b/main.cpp index 019780c0a48d13042c5c6a5fafdaf39da8939698..1f25c8cd57e1e6aced26df6b56304f1727772a33 100644 --- a/main.cpp +++ b/main.cpp @@ -197,12 +197,12 @@ main(int argc, char *argv[]) delete sem; }); #endif - - auto ret = a.exec(); - - QCoreApplication::exit(); - GlobalSystemTray::instance().deleteLater(); - GlobalSystemTray::instance().hide(); - + + auto ret = a.exec(); + + QCoreApplication::exit(); + GlobalSystemTray::instance().deleteLater(); + GlobalSystemTray::instance().hide(); + return ret; } diff --git a/mainwindow.cpp b/mainwindow.cpp index 531d9c30db2787cc0f55f00838c7eaed8b429132..ed7b5aa252d29fed6cdf0bd974a0ffcc1774fe31 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -83,17 +83,7 @@ MainWindow::MainWindow(QWidget* parent) : } #endif - QSettings settings; - QVariant size = settings.value(SettingsKey::savedSize); - QVariant posV = settings.value(SettingsKey::savedPos); - if (size.isValid() && posV.isValid()) { - resize(size.toSize()); - auto screenSize = QApplication::desktop()->screenGeometry(); - auto pos = posV.toPoint(); - if (pos.rx() < screenSize.width() && pos.ry() < screenSize.height()) - move(pos); - } else - resize(800, 600); + readSettingsFromRegistry(); win_sparkle_set_appcast_url("http://dl.ring.cx/windows/winsparkle-ring.xml"); win_sparkle_set_app_details(L"Savoir-faire Linux", L"Ring", QString(NIGHTLY_VERSION).toStdWString().c_str()); @@ -111,9 +101,6 @@ MainWindow::MainWindow(QWidget* parent) : setContextMenuPolicy(Qt::NoContextMenu); - if (not settings.contains(SettingsKey::enableNotifications)) { - settings.setValue(SettingsKey::enableNotifications, true); - } connect(&GlobalSystemTray::instance(), SIGNAL(messageClicked()), this, SLOT(notificationClicked())); connect(&netManager_, &QNetworkConfigurationManager::onlineStateChanged, [=](bool online) { @@ -227,7 +214,19 @@ MainWindow::closeEvent(QCloseEvent* event) this->hide(); event->ignore(); } else { - settings.setValue(SettingsKey::savedSize, size()); - settings.setValue(SettingsKey::savedPos, pos()); + settings.setValue(SettingsKey::geometry, saveGeometry()); + settings.setValue(SettingsKey::windowState, saveState()); } + QMainWindow::closeEvent(event); } + +void +MainWindow::readSettingsFromRegistry() +{ + QSettings settings; + restoreGeometry(settings.value(SettingsKey::geometry).toByteArray()); + restoreState(settings.value(SettingsKey::windowState).toByteArray()); + if (not settings.contains(SettingsKey::enableNotifications)) { + settings.setValue(SettingsKey::enableNotifications, true); + } +} \ No newline at end of file diff --git a/mainwindow.h b/mainwindow.h index 54c19fa4dd266cf236bf3c6cde148fb8a8d0ced3..25306eae76dd023451657b1a1214594f3fa5a693 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -62,7 +62,10 @@ private slots: private: explicit MainWindow(QWidget* parent = 0); - ~MainWindow(); + ~MainWindow(); + + void readSettingsFromRegistry(); + Ui::MainWindow* ui; QNetworkConfigurationManager netManager_; }; diff --git a/settingskey.h b/settingskey.h index d09a91e3931eb97dc8ddad0666e24c56d3a073b8..9fd4234c27928fac71b4f24dab1b8547a83d93ed 100644 --- a/settingskey.h +++ b/settingskey.h @@ -22,8 +22,8 @@ namespace SettingsKey { constexpr static char closeOrMinimized[] = "closeOrMin"; constexpr static char autoAnswer[] = "autoAnswer"; -constexpr static char savedSize[] = "savedSize"; -constexpr static char savedPos[] = "savedPos"; +constexpr static char geometry[] = "geometry"; +constexpr static char windowState[] = "windowState"; constexpr static char imShowAuthor[] = "imShowAuthor"; constexpr static char imShowDate[] = "imShowDate"; constexpr static char enableNotifications[] = "enableNotifications";