mirror of
https://github.com/keepassxreboot/keepassxc.git
synced 2024-12-25 15:29:44 -05:00
parent
3404b4ac58
commit
28a3824d2d
@ -137,10 +137,15 @@ void DatabaseTabWidget::openDatabase()
|
||||
* database has been opened already.
|
||||
*
|
||||
* @param filePath database file path
|
||||
* @param password optional, password to unlock database
|
||||
* @param inBackground optional, don't focus tab after opening
|
||||
* @param password optional, password to unlock database
|
||||
* @param keyfile optional, path to keyfile to unlock database
|
||||
*
|
||||
*/
|
||||
void DatabaseTabWidget::addDatabaseTab(const QString& filePath, bool inBackground, const QString& password)
|
||||
void DatabaseTabWidget::addDatabaseTab(const QString& filePath,
|
||||
bool inBackground,
|
||||
const QString& password,
|
||||
const QString& keyfile)
|
||||
{
|
||||
QFileInfo fileInfo(filePath);
|
||||
QString canonicalFilePath = fileInfo.canonicalFilePath();
|
||||
@ -154,7 +159,7 @@ void DatabaseTabWidget::addDatabaseTab(const QString& filePath, bool inBackgroun
|
||||
Q_ASSERT(dbWidget);
|
||||
if (dbWidget && dbWidget->database()->filePath() == canonicalFilePath) {
|
||||
if (!password.isEmpty()) {
|
||||
dbWidget->performUnlockDatabase(password);
|
||||
dbWidget->performUnlockDatabase(password, keyfile);
|
||||
}
|
||||
if (!inBackground) {
|
||||
// switch to existing tab if file is already open
|
||||
@ -167,7 +172,7 @@ void DatabaseTabWidget::addDatabaseTab(const QString& filePath, bool inBackgroun
|
||||
auto* dbWidget = new DatabaseWidget(QSharedPointer<Database>::create(filePath), this);
|
||||
addDatabaseTab(dbWidget, inBackground);
|
||||
if (!password.isEmpty()) {
|
||||
dbWidget->performUnlockDatabase(password);
|
||||
dbWidget->performUnlockDatabase(password, keyfile);
|
||||
}
|
||||
updateLastDatabases(filePath);
|
||||
}
|
||||
|
@ -48,7 +48,10 @@ public:
|
||||
bool hasLockableDatabases() const;
|
||||
|
||||
public slots:
|
||||
void addDatabaseTab(const QString& filePath, bool inBackground = false, const QString& password = {});
|
||||
void addDatabaseTab(const QString& filePath,
|
||||
bool inBackground = false,
|
||||
const QString& password = {},
|
||||
const QString& keyfile = {});
|
||||
void addDatabaseTab(DatabaseWidget* dbWidget, bool inBackground = false);
|
||||
bool closeDatabaseTab(int index);
|
||||
bool closeDatabaseTab(DatabaseWidget* dbWidget);
|
||||
|
@ -496,28 +496,9 @@ void MainWindow::clearLastDatabases()
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::openDatabase(const QString& filePath, const QString& pw, const QString& keyFile)
|
||||
void MainWindow::openDatabase(const QString& filePath, const QString& password, const QString& keyfile)
|
||||
{
|
||||
if (pw.isEmpty() && keyFile.isEmpty()) {
|
||||
m_ui->tabWidget->addDatabaseTab(filePath);
|
||||
return;
|
||||
}
|
||||
|
||||
auto db = QSharedPointer<Database>::create();
|
||||
auto key = QSharedPointer<CompositeKey>::create();
|
||||
if (!pw.isEmpty()) {
|
||||
key->addKey(QSharedPointer<PasswordKey>::create(pw));
|
||||
}
|
||||
if (!keyFile.isEmpty()) {
|
||||
auto fileKey = QSharedPointer<FileKey>::create();
|
||||
fileKey->load(keyFile);
|
||||
key->addKey(fileKey);
|
||||
}
|
||||
if (db->open(filePath, key, nullptr, false)) {
|
||||
auto* dbWidget = new DatabaseWidget(db, this);
|
||||
m_ui->tabWidget->addDatabaseTab(dbWidget);
|
||||
dbWidget->switchToMainView(true);
|
||||
}
|
||||
m_ui->tabWidget->addDatabaseTab(filePath, false, password, keyfile);
|
||||
}
|
||||
|
||||
void MainWindow::setMenuActionState(DatabaseWidget::Mode mode)
|
||||
|
@ -56,7 +56,7 @@ public:
|
||||
};
|
||||
|
||||
public slots:
|
||||
void openDatabase(const QString& filePath, const QString& pw = {}, const QString& keyFile = {});
|
||||
void openDatabase(const QString& filePath, const QString& password = {}, const QString& keyfile = {});
|
||||
void appExit();
|
||||
void displayGlobalMessage(const QString& text,
|
||||
MessageWidget::MessageType type,
|
||||
|
Loading…
Reference in New Issue
Block a user