summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pref.h1
-rw-r--r--qt-ui/preferences.cpp10
-rw-r--r--qt-ui/preferences.h1
-rw-r--r--qt-ui/subsurfacewebservices.cpp6
-rw-r--r--qt-ui/subsurfacewebservices.h1
5 files changed, 17 insertions, 2 deletions
diff --git a/pref.h b/pref.h
index fcb051bd9..3791f62e7 100644
--- a/pref.h
+++ b/pref.h
@@ -109,6 +109,7 @@ struct preferences {
short default_file_behavior;
facebook_prefs_t facebook;
char *cloud_storage_password;
+ char *cloud_storage_newpassword;
char *cloud_storage_email;
char *cloud_storage_email_encoded;
bool save_password_local;
diff --git a/qt-ui/preferences.cpp b/qt-ui/preferences.cpp
index b5fbc601c..04fb3a825 100644
--- a/qt-ui/preferences.cpp
+++ b/qt-ui/preferences.cpp
@@ -423,10 +423,11 @@ void PreferencesDialog::syncSettings()
} else {
CloudStorageAuthenticate *cloudAuth = new CloudStorageAuthenticate(this);
connect(cloudAuth, SIGNAL(finishedAuthenticate()), this, SLOT(cloudPinNeeded()));
+ connect(cloudAuth, SIGNAL(passwordChangeSuccessful()), this, SLOT(passwordUpdateSuccessfull()));
QNetworkReply *reply = cloudAuth->backend(email, password, "", newpassword);
ui.cloud_storage_new_passwd->setText("");
- ui.cloud_storage_password->setText(newpassword);
- password = newpassword;
+ free(prefs.cloud_storage_newpassword);
+ prefs.cloud_storage_newpassword = strdup(qPrintable(newpassword));
}
}
} else if (prefs.cloud_verification_status == CS_UNKNOWN ||
@@ -688,6 +689,11 @@ void PreferencesDialog::on_resetSettings_clicked()
}
}
+void PreferencesDialog::passwordUpdateSuccessfull()
+{
+ ui.cloud_storage_password->setText(prefs.cloud_storage_password);
+}
+
void PreferencesDialog::emitSettingsChanged()
{
emit settingsChanged();
diff --git a/qt-ui/preferences.h b/qt-ui/preferences.h
index 2402a7964..326b1f964 100644
--- a/qt-ui/preferences.h
+++ b/qt-ui/preferences.h
@@ -40,6 +40,7 @@ slots:
void facebookLoggedIn();
void facebookDisconnect();
void cloudPinNeeded();
+ void passwordUpdateSuccessfull();
private:
explicit PreferencesDialog(QWidget *parent = 0, Qt::WindowFlags f = 0);
void setUiFromPrefs();
diff --git a/qt-ui/subsurfacewebservices.cpp b/qt-ui/subsurfacewebservices.cpp
index 875b8e65c..8154ce5fb 100644
--- a/qt-ui/subsurfacewebservices.cpp
+++ b/qt-ui/subsurfacewebservices.cpp
@@ -1029,6 +1029,12 @@ void CloudStorageAuthenticate::uploadFinished()
myLastError.clear();
} else if (cloudAuthReply == "[VERIFY]") {
prefs.cloud_verification_status = CS_NEED_TO_VERIFY;
+ } else if (cloudAuthReply == "[PASSWDCHANGED]") {
+ free(prefs.cloud_storage_password);
+ prefs.cloud_storage_password = prefs.cloud_storage_newpassword;
+ prefs.cloud_storage_newpassword = NULL;
+ emit passwordChangeSuccessful();
+ return;
} else {
prefs.cloud_verification_status = CS_INCORRECT_USER_PASSWD;
myLastError = cloudAuthReply;
diff --git a/qt-ui/subsurfacewebservices.h b/qt-ui/subsurfacewebservices.h
index 01aa11713..2b454ebc7 100644
--- a/qt-ui/subsurfacewebservices.h
+++ b/qt-ui/subsurfacewebservices.h
@@ -118,6 +118,7 @@ public:
explicit CloudStorageAuthenticate(QObject *parent);
signals:
void finishedAuthenticate();
+ void passwordChangeSuccessful();
private
slots:
void uploadError(QNetworkReply::NetworkError error);