From 566b239a502bfd499cfaccf92d2c7543a9062263 Mon Sep 17 00:00:00 2001 From: Felix Geyer Date: Sat, 24 Dec 2011 19:19:52 +0100 Subject: Implement opening databases with key files. --- src/gui/KeyOpenDialog.cpp | 48 ++++++++++++++++++++++++++++++++++++++++++++++- src/gui/KeyOpenDialog.h | 3 +++ src/gui/KeyOpenDialog.ui | 38 ++++--------------------------------- 3 files changed, 54 insertions(+), 35 deletions(-) (limited to 'src') diff --git a/src/gui/KeyOpenDialog.cpp b/src/gui/KeyOpenDialog.cpp index 225534ed0..aa2d30e46 100644 --- a/src/gui/KeyOpenDialog.cpp +++ b/src/gui/KeyOpenDialog.cpp @@ -18,6 +18,10 @@ #include "KeyOpenDialog.h" #include "ui_KeyOpenDialog.h" +#include +#include + +#include "keys/FileKey.h" #include "keys/PasswordKey.h" KeyOpenDialog::KeyOpenDialog(QWidget* parent) @@ -26,9 +30,21 @@ KeyOpenDialog::KeyOpenDialog(QWidget* parent) { 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))); + connect(m_ui->buttonBrowseFile, SIGNAL(clicked()), SLOT(browseKeyFile())); + connect(m_ui->editPassword, SIGNAL(textChanged(QString)), SLOT(activatePassword())); + connect(m_ui->comboKeyFile, SIGNAL(editTextChanged(QString)), SLOT(activateKeyFile())); + + connect(m_ui->checkPassword, SIGNAL(toggled(bool)), SLOT(setOkButtonEnabled())); + connect(m_ui->checkKeyFile, SIGNAL(toggled(bool)), SLOT(setOkButtonEnabled())); + connect(m_ui->comboKeyFile, SIGNAL(editTextChanged(QString)), SLOT(setOkButtonEnabled())); + connect(m_ui->buttonBox, SIGNAL(accepted()), SLOT(createKey())); + connect(m_ui->buttonBox, SIGNAL(rejected()), SLOT(reject())); } KeyOpenDialog::~KeyOpenDialog() @@ -47,8 +63,16 @@ void KeyOpenDialog::createKey() } if (m_ui->checkKeyFile->isChecked()) { - // TODO read key file + FileKey key; + QString errorMsg; + if (!key.load(m_ui->comboKeyFile->currentText(), &errorMsg)) { + QMessageBox::warning(this, tr("Error"), tr("Can't open key file:\n%1").arg(errorMsg)); + return; + } + m_key.addKey(key); } + + accept(); } void KeyOpenDialog::togglePassword(bool checked) @@ -60,3 +84,25 @@ void KeyOpenDialog::activatePassword() { m_ui->checkPassword->setChecked(true); } + +void KeyOpenDialog::activateKeyFile() +{ + m_ui->checkKeyFile->setChecked(true); +} + +void KeyOpenDialog::setOkButtonEnabled() +{ + bool enable = m_ui->checkPassword->isChecked() || (m_ui->checkKeyFile->isChecked() && !m_ui->comboKeyFile->currentText().isEmpty()); + + m_ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(enable); +} + +void KeyOpenDialog::browseKeyFile() +{ + QString filters = QString("%1 (*);;%2 (*.key)").arg(tr("All files"), tr("Key files")); + QString filename = QFileDialog::getOpenFileName(this, "Select key file", QString(), filters); + + if (!filename.isEmpty()) { + m_ui->comboKeyFile->setItemText(0, filename); + } +} diff --git a/src/gui/KeyOpenDialog.h b/src/gui/KeyOpenDialog.h index a92ded7a6..26ab91cfd 100644 --- a/src/gui/KeyOpenDialog.h +++ b/src/gui/KeyOpenDialog.h @@ -40,6 +40,9 @@ private Q_SLOTS: void createKey(); void togglePassword(bool checked); void activatePassword(); + void activateKeyFile(); + void setOkButtonEnabled(); + void browseKeyFile(); private: QScopedPointer m_ui; diff --git a/src/gui/KeyOpenDialog.ui b/src/gui/KeyOpenDialog.ui index 4fcee5207..6f4aee6e7 100644 --- a/src/gui/KeyOpenDialog.ui +++ b/src/gui/KeyOpenDialog.ui @@ -62,6 +62,9 @@ 0 + + true + @@ -86,38 +89,5 @@ - - - buttonBox - accepted() - KeyOpenDialog - accept() - - - 248 - 254 - - - 157 - 274 - - - - - buttonBox - rejected() - KeyOpenDialog - reject() - - - 316 - 260 - - - 286 - 274 - - - - + -- cgit v1.2.3