Fixed merge conflict
[easylist] / settingsform.cpp
index be7f6c6..38003db 100755 (executable)
@@ -10,6 +10,7 @@ SettingsForm::SettingsForm(QWidget *parent) :
     ui->syncPasswordLineEdit->setInputMethodHints(Qt::ImhNoAutoUppercase);\r
     ui->syncUrlLineEdit->setInputMethodHints(Qt::ImhNoAutoUppercase);\r
     settings = new QSettings(WILLEM_LIU, EASY_LIST);\r
+    ui->syncPasswordLineEdit->installEventFilter(this);\r
     shown();\r
 }\r
 \r
@@ -20,12 +21,31 @@ SettingsForm::~SettingsForm()
 \r
 void SettingsForm::shown()\r
 {\r
-    ui->syncUsernameLineEdit->clear();\r
-    ui->syncPasswordLineEdit->clear();\r
+    ui->syncUsernameLineEdit->setText(settings->value(USERNAME,"").toString());\r
+    ui->syncPasswordLineEdit->setText(settings->value(PASSWORD,"").toString());\r
+    if(settings->contains(PASSWORD))\r
+        ui->syncPasswordLineEdit->setReadOnly(true);\r
+\r
     ui->syncUrlLineEdit->setText(settings->value(SYNC_URL, DEFAULT_SYNC_URL).toString());\r
     ui->syncUsernameLineEdit->setFocus(Qt::ActiveWindowFocusReason);\r
 }\r
-\r
+bool SettingsForm::eventFilter(QObject *obj, QEvent *e)\r
+{\r
+    if(obj == ui->syncPasswordLineEdit && ui->syncPasswordLineEdit->isReadOnly() && e->type() == QEvent::MouseButtonRelease)\r
+    {\r
+        int res = QMessageBox::warning(this, "Clear Password",\r
+                                       "Are you sure you would like to change the password?",\r
+                                       QMessageBox::Yes, QMessageBox::Cancel);\r
+        if(res==QMessageBox::Yes)\r
+        {\r
+            ui->syncPasswordLineEdit->setReadOnly(false);\r
+            ui->syncPasswordLineEdit->clear();\r
+        }\r
+    }\r
+    else\r
+        return QWidget::eventFilter(obj,e);\r
+    return true;\r
+}\r
 void SettingsForm::on_restoreSyncPushButton_clicked()\r
 {\r
     ui->syncUrlLineEdit->setText(DEFAULT_SYNC_URL);\r
@@ -34,6 +54,7 @@ void SettingsForm::on_restoreSyncPushButton_clicked()
 void SettingsForm::on_applyPushButton_clicked()\r
 {\r
     saveSync();\r
+    shown();\r
 }\r
 \r
 void SettingsForm::on_savePushButton_clicked()\r
@@ -46,10 +67,19 @@ void SettingsForm::saveSync()
 {\r
     settings->setValue(USERNAME, ui->syncUsernameLineEdit->text());\r
     QVariant passString = ui->syncPasswordLineEdit->text();\r
-    QString passMd5 = QCryptographicHash::hash(passString.toByteArray(), QCryptographicHash::Md5).toHex().constData();\r
-    // We save the md5 hash of the password instead of the real password so it won't be retrievable.\r
-    settings->setValue(PASSWORD, passMd5);\r
+\r
+    if(ui->syncPasswordLineEdit->isReadOnly()) //Password is already a hash\r
+    {\r
+        settings->setValue(PASSWORD,passString);\r
+    }\r
+    else\r
+    {\r
+        QString passMd5 = QCryptographicHash::hash(passString.toByteArray(), QCryptographicHash::Md5).toHex().constData();\r
+        // We save the md5 hash of the password instead of the real password so it won't be retrievable.\r
+        settings->setValue(PASSWORD, passMd5);\r
+    }\r
     settings->setValue(SYNC_URL, ui->syncUrlLineEdit->text());\r
+    settings->sync();\r
 }\r
 \r
 void SettingsForm::on_cancelPushButton_clicked()\r