From 7ac33c721c12e94404cddff2b5c12b15deafe527 Mon Sep 17 00:00:00 2001
From: Kevin Smith <git@kismith.co.uk>
Date: Thu, 26 Nov 2009 18:26:34 +0000
Subject: Remember the last used account.

This is the last account to be logged in with, not the last account to be logged out. If you want that, open a new ticket.

Resolves: #241

diff --git a/Swift/Controllers/MainController.cpp b/Swift/Controllers/MainController.cpp
index 0705eb4..39c63dd 100644
--- a/Swift/Controllers/MainController.cpp
+++ b/Swift/Controllers/MainController.cpp
@@ -82,6 +82,7 @@ MainController::MainController(ChatWindowFactory* chatWindowFactory, MainWindowF
 		loginWindow_->addAvailableAccount(profileSettings->getStringSetting("jid"), profileSettings->getStringSetting("pass"), profileSettings->getStringSetting("certificate"));
 		delete profileSettings;
 	}
+	loginWindow_->selectUser(settings_->getStringSetting("lastLoginJID"));
 	loginWindow_->onLoginRequest.connect(boost::bind(&MainController::handleLoginRequest, this, _1, _2, _3, _4));
 	loginWindow_->onCancelLoginRequest.connect(boost::bind(&MainController::handleCancelLoginRequest, this));
 
@@ -258,6 +259,7 @@ void MainController::handleLoginRequest(const String &username, const String &pa
 	profileSettings->storeString("jid", username);
 	profileSettings->storeString("certificate", certificateFile);
 	profileSettings->storeString("pass", remember ? password : "");
+	settings_->storeString("lastLoginJID", username);
 	loginWindow_->addAvailableAccount(profileSettings->getStringSetting("jid"), profileSettings->getStringSetting("pass"), profileSettings->getStringSetting("certificate"));
 	delete profileSettings;
 	jid_ = JID(username);
diff --git a/Swift/Controllers/UIInterfaces/LoginWindow.h b/Swift/Controllers/UIInterfaces/LoginWindow.h
index cfa20c7..d165125 100644
--- a/Swift/Controllers/UIInterfaces/LoginWindow.h
+++ b/Swift/Controllers/UIInterfaces/LoginWindow.h
@@ -11,6 +11,7 @@ namespace Swift {
 	class LoginWindow {
 		public:
 			virtual ~LoginWindow() {};
+			virtual void selectUser(const String&) = 0;
 			virtual void morphInto(MainWindow *mainWindow) = 0;
 			virtual void loggedOut() = 0;
 			virtual void setMessage(const String&) = 0;
diff --git a/Swift/QtUI/QtLoginWindow.cpp b/Swift/QtUI/QtLoginWindow.cpp
index 2fd27c6..a222e8e 100644
--- a/Swift/QtUI/QtLoginWindow.cpp
+++ b/Swift/QtUI/QtLoginWindow.cpp
@@ -133,6 +133,15 @@ void QtLoginWindow::setGentleGeometry(const QRect& rect) {
 	move(rect.topLeft());
 }
 
+void QtLoginWindow::selectUser(const String& username) {
+	for (int i = 0; i < usernames_.count(); i++) {
+		if (P2QSTRING(username) == usernames_[i]) {
+			username_->setCurrentIndex(i);
+			break;
+		}
+	}
+}
+
 QRect QtLoginWindow::defaultPosition() {
 	QDesktopWidget desktop;
 	int windowWidth = 200;
diff --git a/Swift/QtUI/QtLoginWindow.h b/Swift/QtUI/QtLoginWindow.h
index 491521b..38852ce 100644
--- a/Swift/QtUI/QtLoginWindow.h
+++ b/Swift/QtUI/QtLoginWindow.h
@@ -30,6 +30,7 @@ namespace Swift {
 			virtual void addAvailableAccount(const String& defaultJID, const String& defaultPassword, const String& defaultCertificate);
 			static QRect defaultPosition();
 			void setGentleGeometry(const QRect&);
+			void selectUser(const String& user);
 		signals:
 			void geometryChanged();
 
-- 
cgit v0.10.2-6-g49f6