Fix double warning display for database open

This commit is contained in:
Louis-Bertrand Varin 2017-10-05 14:44:05 -04:00 committed by Janek Bevendorff
parent 86cd2c09a4
commit 0fe06b3fbb
2 changed files with 22 additions and 17 deletions

View File

@ -162,7 +162,10 @@ void DatabaseOpenWidget::enterKey(const QString& pw, const QString& keyFile)
void DatabaseOpenWidget::openDatabase() void DatabaseOpenWidget::openDatabase()
{ {
KeePass2Reader reader; KeePass2Reader reader;
CompositeKey masterKey = databaseKey(); CompositeKey* masterKey = databaseKey();
if (masterKey == nullptr) {
return;
}
QFile file(m_filename); QFile file(m_filename);
if (!file.open(QIODevice::ReadOnly)) { if (!file.open(QIODevice::ReadOnly)) {
@ -174,7 +177,7 @@ void DatabaseOpenWidget::openDatabase()
delete m_db; delete m_db;
} }
QApplication::setOverrideCursor(QCursor(Qt::WaitCursor)); QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
m_db = reader.readDatabase(&file, masterKey); m_db = reader.readDatabase(&file, *masterKey);
QApplication::restoreOverrideCursor(); QApplication::restoreOverrideCursor();
if (m_db) { if (m_db) {
@ -182,20 +185,21 @@ void DatabaseOpenWidget::openDatabase()
m_ui->messageWidget->animatedHide(); m_ui->messageWidget->animatedHide();
} }
emit editFinished(true); emit editFinished(true);
} } else {
else { m_ui->messageWidget->showMessage(tr("Unable to open the database.").append("\n").append(reader.errorString()),
m_ui->messageWidget->showMessage(tr("Unable to open the database.") MessageWidget::Error);
.append("\n").append(reader.errorString()), MessageWidget::Error);
m_ui->editPassword->clear(); m_ui->editPassword->clear();
} }
delete masterKey;
} }
CompositeKey DatabaseOpenWidget::databaseKey() CompositeKey* DatabaseOpenWidget::databaseKey()
{ {
CompositeKey masterKey; CompositeKey* masterKey = new CompositeKey();
if (m_ui->checkPassword->isChecked()) { if (m_ui->checkPassword->isChecked()) {
masterKey.addKey(PasswordKey(m_ui->editPassword->text())); masterKey->addKey(PasswordKey(m_ui->editPassword->text()));
} }
QHash<QString, QVariant> lastKeyFiles = config()->get("LastKeyFiles").toHash(); QHash<QString, QVariant> lastKeyFiles = config()->get("LastKeyFiles").toHash();
@ -206,11 +210,12 @@ CompositeKey DatabaseOpenWidget::databaseKey()
QString keyFilename = m_ui->comboKeyFile->currentText(); QString keyFilename = m_ui->comboKeyFile->currentText();
QString errorMsg; QString errorMsg;
if (!key.load(keyFilename, &errorMsg)) { if (!key.load(keyFilename, &errorMsg)) {
m_ui->messageWidget->showMessage(tr("Can't open key file").append(":\n") m_ui->messageWidget->showMessage(tr("Can't open key file").append(":\n").append(errorMsg),
.append(errorMsg), MessageWidget::Error); MessageWidget::Error);
return CompositeKey(); delete masterKey;
return nullptr;
} }
masterKey.addKey(key); masterKey->addKey(key);
lastKeyFiles[m_filename] = keyFilename; lastKeyFiles[m_filename] = keyFilename;
} else { } else {
lastKeyFiles.remove(m_filename); lastKeyFiles.remove(m_filename);
@ -239,7 +244,7 @@ CompositeKey DatabaseOpenWidget::databaseKey()
bool blocking = comboPayload & 1; bool blocking = comboPayload & 1;
int slot = comboPayload >> 1; int slot = comboPayload >> 1;
auto key = QSharedPointer<YkChallengeResponseKey>(new YkChallengeResponseKey(slot, blocking)); auto key = QSharedPointer<YkChallengeResponseKey>(new YkChallengeResponseKey(slot, blocking));
masterKey.addChallengeResponseKey(key); masterKey->addChallengeResponseKey(key);
} }
#endif #endif

View File

@ -52,7 +52,7 @@ signals:
protected: protected:
void showEvent(QShowEvent* event) override; void showEvent(QShowEvent* event) override;
void hideEvent(QHideEvent* event) override; void hideEvent(QHideEvent* event) override;
CompositeKey databaseKey(); CompositeKey* databaseKey();
protected slots: protected slots:
virtual void openDatabase(); virtual void openDatabase();