Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/keepassxreboot/keepassxc.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFelix Geyer <debfx@fobos.de>2011-12-25 23:36:45 +0400
committerFelix Geyer <debfx@fobos.de>2011-12-25 23:36:45 +0400
commit256dc894664922e48e663ea12a1c8c92669e205e (patch)
tree3f336cd1e864b4841199a0d9f34095493b586faa /src
parent62e7ba6e55dc6044a97fbfb5bff0550e3f200b26 (diff)
Remember last key file.
Diffstat (limited to 'src')
-rw-r--r--src/gui/DatabaseManager.cpp2
-rw-r--r--src/gui/KeyOpenDialog.cpp24
-rw-r--r--src/gui/KeyOpenDialog.h3
3 files changed, 23 insertions, 6 deletions
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<KeyOpenDialog> keyDialog(new KeyOpenDialog(m_window));
+ QScopedPointer<KeyOpenDialog> 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 <QtGui/QFileDialog>
#include <QtGui/QMessageBox>
+#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<QString,QVariant> 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<QString,QVariant> 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<Ui::KeyOpenDialog> m_ui;
CompositeKey m_key;
+ QString m_filename;
Q_DISABLE_COPY(KeyOpenDialog)
};