mirror of
https://github.com/keepassxreboot/keepassxc.git
synced 2025-02-17 13:02:49 -05:00
Show KeyOpenDialog with show() instead of exec().
This commit is contained in:
parent
57388ac896
commit
509328343f
@ -62,14 +62,12 @@ void DatabaseManager::openDatabase()
|
|||||||
|
|
||||||
void DatabaseManager::openDatabase(const QString& fileName)
|
void DatabaseManager::openDatabase(const QString& fileName)
|
||||||
{
|
{
|
||||||
DatabaseManagerStruct dbStruct;
|
|
||||||
|
|
||||||
QScopedPointer<QFile> file(new QFile(fileName));
|
QScopedPointer<QFile> file(new QFile(fileName));
|
||||||
// TODO error handling
|
// TODO error handling
|
||||||
if (!file->open(QIODevice::ReadWrite)) {
|
if (!file->open(QIODevice::ReadWrite)) {
|
||||||
if (!file->open(QIODevice::ReadOnly)) {
|
if (!file->open(QIODevice::ReadOnly)) {
|
||||||
// can only open read-only
|
// can only open read-only
|
||||||
dbStruct.readOnly = true;
|
m_curDbStruct.readOnly = true;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// can't open
|
// can't open
|
||||||
@ -77,22 +75,47 @@ void DatabaseManager::openDatabase(const QString& fileName)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Database* db;
|
m_curDbStruct.file = file.take();
|
||||||
|
m_curDbStruct.fileName = QFileInfo(fileName).absoluteFilePath();
|
||||||
|
|
||||||
do {
|
openDatabaseDialog();
|
||||||
QScopedPointer<KeyOpenDialog> keyDialog(new KeyOpenDialog(fileName, m_window));
|
}
|
||||||
if (keyDialog->exec() == QDialog::Rejected) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
file->reset();
|
void DatabaseManager::openDatabaseDialog()
|
||||||
db = m_reader.readDatabase(file.data(), keyDialog->key());
|
{
|
||||||
} while (!db);
|
m_curKeyDialog = new KeyOpenDialog(m_curDbStruct.fileName, m_window);
|
||||||
|
connect(m_curKeyDialog, SIGNAL(accepted()), SLOT(openDatabaseRead()));
|
||||||
|
connect(m_curKeyDialog, SIGNAL(rejected()), SLOT(openDatabaseCleanup()));
|
||||||
|
m_curKeyDialog->setModal(true);
|
||||||
|
m_curKeyDialog->show();
|
||||||
|
}
|
||||||
|
|
||||||
dbStruct.file = file.take();
|
void DatabaseManager::openDatabaseRead()
|
||||||
dbStruct.dbWidget = new DatabaseWidget(db, m_tabWidget);
|
{
|
||||||
|
m_curDbStruct.file->reset();
|
||||||
|
Database* db = m_reader.readDatabase(m_curDbStruct.file, m_curKeyDialog->key());
|
||||||
|
delete m_curKeyDialog;
|
||||||
|
m_curKeyDialog = 0;
|
||||||
|
|
||||||
insertDatabase(db, dbStruct);
|
if (!db) {
|
||||||
|
openDatabaseDialog();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
m_curDbStruct.dbWidget = new DatabaseWidget(db, m_tabWidget);
|
||||||
|
insertDatabase(db, m_curDbStruct);
|
||||||
|
m_curDbStruct = DatabaseManagerStruct();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void DatabaseManager::openDatabaseCleanup()
|
||||||
|
{
|
||||||
|
delete m_curKeyDialog;
|
||||||
|
m_curKeyDialog = 0;
|
||||||
|
|
||||||
|
if (m_curDbStruct.file) {
|
||||||
|
delete m_curDbStruct.file;
|
||||||
|
}
|
||||||
|
m_curDbStruct = DatabaseManagerStruct();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DatabaseManager::closeDatabase(Database* db)
|
void DatabaseManager::closeDatabase(Database* db)
|
||||||
@ -151,6 +174,7 @@ void DatabaseManager::saveDatabaseAs(Database* db)
|
|||||||
dbStruct.file->flush();
|
dbStruct.file->flush();
|
||||||
|
|
||||||
dbStruct.modified = false;
|
dbStruct.modified = false;
|
||||||
|
dbStruct.fileName = QFileInfo(fileName).absoluteFilePath();
|
||||||
updateTabName(db);
|
updateTabName(db);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -200,7 +224,7 @@ void DatabaseManager::updateTabName(Database* db)
|
|||||||
tabName = db->metadata()->name();
|
tabName = db->metadata()->name();
|
||||||
}
|
}
|
||||||
|
|
||||||
m_tabWidget->setTabToolTip(index, fileInfo.absoluteFilePath());
|
m_tabWidget->setTabToolTip(index, dbStruct.fileName);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (db->metadata()->name().isEmpty()) {
|
if (db->metadata()->name().isEmpty()) {
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
#include "format/KeePass2Reader.h"
|
#include "format/KeePass2Reader.h"
|
||||||
#include "format/KeePass2Writer.h"
|
#include "format/KeePass2Writer.h"
|
||||||
|
|
||||||
|
class KeyOpenDialog;
|
||||||
class QFile;
|
class QFile;
|
||||||
class QTabWidget;
|
class QTabWidget;
|
||||||
|
|
||||||
@ -33,6 +34,7 @@ struct DatabaseManagerStruct
|
|||||||
|
|
||||||
QFile* file;
|
QFile* file;
|
||||||
QWidget* dbWidget;
|
QWidget* dbWidget;
|
||||||
|
QString fileName;
|
||||||
bool modified;
|
bool modified;
|
||||||
bool readOnly;
|
bool readOnly;
|
||||||
};
|
};
|
||||||
@ -57,6 +59,9 @@ public Q_SLOTS:
|
|||||||
|
|
||||||
private Q_SLOTS:
|
private Q_SLOTS:
|
||||||
void updateTabName(Database* db);
|
void updateTabName(Database* db);
|
||||||
|
void openDatabaseDialog();
|
||||||
|
void openDatabaseRead();
|
||||||
|
void openDatabaseCleanup();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int databaseIndex(Database* db);
|
int databaseIndex(Database* db);
|
||||||
@ -68,6 +73,8 @@ private:
|
|||||||
KeePass2Reader m_reader;
|
KeePass2Reader m_reader;
|
||||||
KeePass2Writer m_writer;
|
KeePass2Writer m_writer;
|
||||||
QHash<Database*, DatabaseManagerStruct> m_dbList;
|
QHash<Database*, DatabaseManagerStruct> m_dbList;
|
||||||
|
DatabaseManagerStruct m_curDbStruct;
|
||||||
|
KeyOpenDialog* m_curKeyDialog;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // KEEPASSX_DATABASEMANAGER_H
|
#endif // KEEPASSX_DATABASEMANAGER_H
|
||||||
|
Loading…
x
Reference in New Issue
Block a user