summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin Smith <git@kismith.co.uk>2009-11-26 18:26:34 (GMT)
committerKevin Smith <git@kismith.co.uk>2009-11-26 18:26:34 (GMT)
commit7ac33c721c12e94404cddff2b5c12b15deafe527 (patch)
treee75f99b242bcdce3c02fc02f0c3f3b3117840d9f
parenteebdef9a7724ff7fa86a5d1cca37759d37bbb336 (diff)
downloadswift-7ac33c721c12e94404cddff2b5c12b15deafe527.zip
swift-7ac33c721c12e94404cddff2b5c12b15deafe527.tar.bz2
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
-rw-r--r--Swift/Controllers/MainController.cpp2
-rw-r--r--Swift/Controllers/UIInterfaces/LoginWindow.h1
-rw-r--r--Swift/QtUI/QtLoginWindow.cpp9
-rw-r--r--Swift/QtUI/QtLoginWindow.h1
4 files changed, 13 insertions, 0 deletions
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
@@ -79,12 +79,13 @@ MainController::MainController(ChatWindowFactory* chatWindowFactory, MainWindowF
loginWindow_ = loginWindowFactory_->createLoginWindow(uiEventStream_);
foreach (String profile, settings->getAvailableProfiles()) {
ProfileSettingsProvider* profileSettings = new ProfileSettingsProvider(profile, settings);
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));
idleDetector_.setIdleTimeSeconds(600);
idleDetector_.onIdleChanged.connect(boost::bind(&MainController::handleInputIdleChanged, this, _1));
@@ -255,12 +256,13 @@ void MainController::handleIncomingPresence(boost::shared_ptr<Presence> presence
void MainController::handleLoginRequest(const String &username, const String &password, const String& certificateFile, bool remember) {
loginWindow_->setMessage("");
ProfileSettingsProvider* profileSettings = new ProfileSettingsProvider(username, settings_);
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);
password_ = password;
certificateFile_ = certificateFile;
performLoginFromCachedCredentials();
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
@@ -8,12 +8,13 @@
namespace Swift {
class MainWindow;
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;
virtual void addAvailableAccount(const String& defaultJID, const String& defaultPassword, const String& defaultCertificate) = 0;
boost::signal<void (const String&, const String&, const String& /* certificateFile */, bool)> onLoginRequest;
boost::signal<void ()> onCancelLoginRequest;
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
@@ -130,12 +130,21 @@ QtLoginWindow::QtLoginWindow(UIEventStream* uiEventStream) : QMainWindow() {
*/
void QtLoginWindow::setGentleGeometry(const QRect& rect) {
resize(rect.size());
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;
int windowHeight = 500;
QRect screen = desktop.screenGeometry(-1); //appear on default screen
windowWidth = std::min(windowWidth, screen.width());
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
@@ -27,12 +27,13 @@ namespace Swift {
void morphInto(MainWindow *mainWindow);
virtual void loggedOut();
virtual void setMessage(const String& message);
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();
private slots:
void loginClicked();
void handleCertficateChecked(bool);