void DatabaseOpenWidget::openDatabase() { KeePass2Reader reader; CompositeKey masterKey = databaseKey(); if (masterKey.isEmpty()) { return; } QFile file(m_filename); if (!file.open(QIODevice::ReadOnly)) { // TODO: error message return; } if (m_db) { delete m_db; } QApplication::setOverrideCursor(QCursor(Qt::WaitCursor)); m_db = reader.readDatabase(&file, masterKey); QApplication::restoreOverrideCursor(); if (m_db) { Q_EMIT editFinished(true); // this is a c++11 equivalent foreach construct // if c++11 is not available another iteration loop style is needed! for (auto widget : qApp->topLevelWidgets()) { if(widget->inherits("QMainWindow")) static_cast<MainWindow*>(widget)->configuredMinimizeWindow(); } } else { MessageBox::warning(this, tr("Error"), tr("Unable to open the database.").append("\n") .append(reader.errorString())); m_ui->editPassword->clear(); } }
void DatabaseOpenWidget::openDatabase() { KeePass2Reader reader; CompositeKey masterKey = databaseKey(); if (masterKey.isEmpty()) { return; } QFile file(m_filename); if (!file.open(QIODevice::ReadOnly)) { // TODO: error message return; } if (m_db) { delete m_db; } QApplication::setOverrideCursor(QCursor(Qt::WaitCursor)); m_db = reader.readDatabase(&file, masterKey); QApplication::restoreOverrideCursor(); if (m_db) { Q_EMIT editFinished(true); } else { MessageBox::warning(this, tr("Error"), tr("Unable to open the database.").append("\n") .append(reader.errorString())); m_ui->editPassword->clear(); } }
void DatabaseOpenWidget::openDatabase() { CompositeKey masterKey = databaseKey(); if (masterKey.isEmpty()) { return; } openDatabase(masterKey); }
void DatabaseOpenWidget::openDatabase() { QSharedPointer<CompositeKey> masterKey = databaseKey(); if (!masterKey) { return; } m_ui->editPassword->setShowPassword(false); QCoreApplication::processEvents(); m_db.reset(new Database()); QString error; QApplication::setOverrideCursor(QCursor(Qt::WaitCursor)); bool ok = m_db->open(m_filename, masterKey, &error, false); QApplication::restoreOverrideCursor(); if (!ok) { m_ui->messageWidget->showMessage(error, MessageWidget::MessageType::Error); return; } if (m_db) { #ifdef WITH_XC_TOUCHID QHash<QString, QVariant> useTouchID = config()->get("UseTouchID").toHash(); // check if TouchID can & should be used to unlock the database next time if (m_ui->checkTouchID->isChecked() && TouchID::getInstance().isAvailable()) { // encrypt and store key blob if (TouchID::getInstance().storeKey(m_filename, PasswordKey(m_ui->editPassword->text()).rawKey())) { useTouchID.insert(m_filename, true); } } else { // when TouchID not available or unchecked, reset for the current database TouchID::getInstance().reset(m_filename); useTouchID.insert(m_filename, false); } config()->set("UseTouchID", useTouchID); #endif if (m_ui->messageWidget->isVisible()) { m_ui->messageWidget->animatedHide(); } emit dialogFinished(true); } else { m_ui->messageWidget->showMessage(error, MessageWidget::Error); m_ui->editPassword->setText(""); #ifdef WITH_XC_TOUCHID // unable to unlock database, reset TouchID for the current database TouchID::getInstance().reset(m_filename); #endif } }
void DatabaseOpenWidget::openDatabase() { KeePass2Reader reader; CompositeKey masterKey = databaseKey(); if (m_db) { delete m_db; } QApplication::setOverrideCursor(QCursor(Qt::WaitCursor)); m_db = reader.readDatabase(m_filename, masterKey); QApplication::restoreOverrideCursor(); if (m_db) { // signal switched focus to opened database view Q_EMIT editFinished(true); } else { MessageBox::warning(this, tr("Error"), tr("Unable to open the database.").append("\n") .append(reader.errorString())); m_ui->editPassword->clear(); } }