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);