From 256dc894664922e48e663ea12a1c8c92669e205e Mon Sep 17 00:00:00 2001 From: Felix Geyer Date: Sun, 25 Dec 2011 20:36:45 +0100 Subject: Remember last key file. --- src/gui/DatabaseManager.cpp | 2 +- src/gui/KeyOpenDialog.cpp | 24 ++++++++++++++++++++---- src/gui/KeyOpenDialog.h | 3 ++- 3 files changed, 23 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/gui/DatabaseManager.cpp b/src/gui/DatabaseManager.cpp index 1096982cd..0f6ac0f6c 100644 --- a/src/gui/DatabaseManager.cpp +++ b/src/gui/DatabaseManager.cpp @@ -80,7 +80,7 @@ void DatabaseManager::openDatabase(const QString& fileName) Database* db; do { - QScopedPointer keyDialog(new KeyOpenDialog(m_window)); + QScopedPointer keyDialog(new KeyOpenDialog(fileName, m_window)); if (keyDialog->exec() == QDialog::Rejected) { return; } diff --git a/src/gui/KeyOpenDialog.cpp b/src/gui/KeyOpenDialog.cpp index 62441e2dd..c28ee825b 100644 --- a/src/gui/KeyOpenDialog.cpp +++ b/src/gui/KeyOpenDialog.cpp @@ -21,16 +21,17 @@ #include #include +#include "core/Config.h" #include "keys/FileKey.h" #include "keys/PasswordKey.h" -KeyOpenDialog::KeyOpenDialog(QWidget* parent) +KeyOpenDialog::KeyOpenDialog(const QString& filename, QWidget* parent) : QDialog(parent) , m_ui(new Ui::KeyOpenDialog()) + , m_filename(filename) { m_ui->setupUi(this); - m_ui->comboKeyFile->addItem(""); m_ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false); connect(m_ui->buttonTogglePassword, SIGNAL(toggled(bool)), SLOT(togglePassword(bool))); @@ -45,6 +46,12 @@ KeyOpenDialog::KeyOpenDialog(QWidget* parent) connect(m_ui->buttonBox, SIGNAL(accepted()), SLOT(createKey())); connect(m_ui->buttonBox, SIGNAL(rejected()), SLOT(reject())); + + QHash lastKeyFiles = config()->get("LastKeyFiles").toHash(); + if (lastKeyFiles.contains(m_filename)) { + m_ui->checkKeyFile->setChecked(true); + m_ui->comboKeyFile->addItem(lastKeyFiles[m_filename].toString()); + } } KeyOpenDialog::~KeyOpenDialog() @@ -62,15 +69,24 @@ void KeyOpenDialog::createKey() m_key.addKey(PasswordKey(m_ui->editPassword->text())); } + QHash lastKeyFiles = config()->get("LastKeyFiles").toHash(); + if (m_ui->checkKeyFile->isChecked()) { FileKey key; + QString keyFilename = m_ui->comboKeyFile->currentText(); QString errorMsg; - if (!key.load(m_ui->comboKeyFile->currentText(), &errorMsg)) { + if (!key.load(keyFilename, &errorMsg)) { QMessageBox::warning(this, tr("Error"), tr("Can't open key file:\n%1").arg(errorMsg)); return; } m_key.addKey(key); + lastKeyFiles[m_filename] = keyFilename; } + else { + lastKeyFiles.remove(m_filename); + } + + config()->set("LastKeyFiles", lastKeyFiles); accept(); } @@ -103,6 +119,6 @@ void KeyOpenDialog::browseKeyFile() QString filename = QFileDialog::getOpenFileName(this, tr("Select key file"), QString(), filters); if (!filename.isEmpty()) { - m_ui->comboKeyFile->setItemText(0, filename); + m_ui->comboKeyFile->lineEdit()->setText(filename); } } diff --git a/src/gui/KeyOpenDialog.h b/src/gui/KeyOpenDialog.h index 26ab91cfd..1962f80d5 100644 --- a/src/gui/KeyOpenDialog.h +++ b/src/gui/KeyOpenDialog.h @@ -32,7 +32,7 @@ class KeyOpenDialog : public QDialog Q_OBJECT public: - explicit KeyOpenDialog(QWidget* parent = 0); + explicit KeyOpenDialog(const QString& filename, QWidget* parent = 0); ~KeyOpenDialog(); CompositeKey key(); @@ -47,6 +47,7 @@ private Q_SLOTS: private: QScopedPointer m_ui; CompositeKey m_key; + QString m_filename; Q_DISABLE_COPY(KeyOpenDialog) }; -- cgit v1.2.3