Remember last key file.

This commit is contained in:
Felix Geyer 2011-12-25 20:36:45 +01:00
parent 62e7ba6e55
commit 256dc89466
3 changed files with 23 additions and 6 deletions

View File

@ -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;
}

View File

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

View File

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