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
\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
void SettingsForm::on_applyPushButton_clicked()\r
{\r
saveSync();\r
+ shown();\r
}\r
\r
void SettingsForm::on_savePushButton_clicked()\r
{\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