Пример #1
0
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();
    }
}
Пример #2
0
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();
    }
}
Пример #3
0
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();
  }
}