From 0f186904e643fe99f178357746cc81fcfed0b7c7 Mon Sep 17 00:00:00 2001
From: Kevin Smith <git@kismith.co.uk>
Date: Fri, 9 Nov 2012 22:58:09 +0000
Subject: Remember single window size

Change-Id: Ic65eef49b415a7b8e1575b517cc758cb9c95defc

diff --git a/Swift/QtUI/QtSingleWindow.cpp b/Swift/QtUI/QtSingleWindow.cpp
index 6a87825..2a19dd4 100644
--- a/Swift/QtUI/QtSingleWindow.cpp
+++ b/Swift/QtUI/QtSingleWindow.cpp
@@ -6,9 +6,19 @@
 
 #include <Swift/QtUI/QtSingleWindow.h>
 
+#include <Swift/QtUI/QtSettingsProvider.h>
+
 namespace Swift {
 
-QtSingleWindow::QtSingleWindow() : QSplitter() {
+static const QString SINGLE_WINDOW_GEOMETRY = QString("SINGLE_WINDOW_GEOMETRY");
+
+QtSingleWindow::QtSingleWindow(QtSettingsProvider* settings) : QSplitter() {
+	settings_ = settings;
+	QVariant geometryVariant = settings_->getQSettings()->value(SINGLE_WINDOW_GEOMETRY);
+	if (geometryVariant.isValid()) {
+		restoreGeometry(geometryVariant.toByteArray());
+	}
+
 
 }
 
@@ -16,4 +26,17 @@ QtSingleWindow::~QtSingleWindow() {
 
 }
 
+void QtSingleWindow::handleGeometryChanged() {
+	settings_->getQSettings()->setValue(SINGLE_WINDOW_GEOMETRY, saveGeometry());
+
+}
+
+void QtSingleWindow::resizeEvent(QResizeEvent*) {
+	handleGeometryChanged();
+}
+
+void QtSingleWindow::moveEvent(QMoveEvent*) {
+	handleGeometryChanged();
+}
+
 }
diff --git a/Swift/QtUI/QtSingleWindow.h b/Swift/QtUI/QtSingleWindow.h
index 996ab20..861eda7 100644
--- a/Swift/QtUI/QtSingleWindow.h
+++ b/Swift/QtUI/QtSingleWindow.h
@@ -9,12 +9,21 @@
 #include <QSplitter>
 
 namespace Swift {
+	class QtSettingsProvider;
 
 	class QtSingleWindow : public QSplitter {
 		public:
-			QtSingleWindow();
+			QtSingleWindow(QtSettingsProvider* settings);
 			virtual ~QtSingleWindow();
+		protected:
+			void resizeEvent(QResizeEvent*);
+			void moveEvent(QMoveEvent*);
+		private:
+			void handleGeometryChanged();
 
+		private:
+
+			QtSettingsProvider* settings_;
 	};
 
 }
diff --git a/Swift/QtUI/QtSwift.cpp b/Swift/QtUI/QtSwift.cpp
index c11c3fe..57386d4 100644
--- a/Swift/QtUI/QtSwift.cpp
+++ b/Swift/QtUI/QtSwift.cpp
@@ -124,11 +124,6 @@ QMap<QString, QString> QtSwift::loadEmoticonsFile(const QString& fileName) {
 }
 
 QtSwift::QtSwift(const po::variables_map& options) : networkFactories_(&clientMainThreadCaller_), autoUpdater_(NULL), idleDetector_(&idleQuerier_, networkFactories_.getTimerFactory(), 1000) {
-	if (options.count("netbook-mode")) {
-		splitter_ = new QtSingleWindow();
-	} else {
-		splitter_ = NULL;
-	}
 	QCoreApplication::setApplicationName(SWIFT_APPLICATION_NAME);
 	QCoreApplication::setOrganizationName(SWIFT_ORGANIZATION_NAME);
 	QCoreApplication::setOrganizationDomain(SWIFT_ORGANIZATION_DOMAIN);
@@ -142,6 +137,12 @@ QtSwift::QtSwift(const po::variables_map& options) : networkFactories_(&clientMa
 
 	QMap<QString, QString> emoticons = loadEmoticonsFile(P2QSTRING((Paths::getExecutablePath() / "emoticons.txt").string()));
 
+	if (options.count("netbook-mode")) {
+		splitter_ = new QtSingleWindow(qtSettings_);
+	} else {
+		splitter_ = NULL;
+	}
+
 	int numberOfAccounts = 1;
 	try {
 		numberOfAccounts = options["multi-account"].as<int>();
-- 
cgit v0.10.2-6-g49f6