mirror of
https://github.com/keepassxreboot/keepassxc.git
synced 2025-05-10 10:35:17 -04:00
New actions: new, save and close database.
This commit is contained in:
parent
0ba03920df
commit
5df933be25
5 changed files with 113 additions and 16 deletions
|
@ -42,6 +42,15 @@ DatabaseManager::DatabaseManager(QTabWidget* tabWidget)
|
|||
connect(m_tabWidget, SIGNAL(tabCloseRequested(int)), SLOT(closeDatabase(int)));
|
||||
}
|
||||
|
||||
void DatabaseManager::newDatabase()
|
||||
{
|
||||
DatabaseManagerStruct dbStruct;
|
||||
Database* db = new Database();
|
||||
dbStruct.dbWidget = new DatabaseWidget(db, m_tabWidget);
|
||||
|
||||
insertDatabase(db, dbStruct);
|
||||
}
|
||||
|
||||
void DatabaseManager::openDatabase()
|
||||
{
|
||||
QString fileName = QFileDialog::getOpenFileName(m_window, tr("Open database"), QString(),
|
||||
|
@ -82,12 +91,7 @@ void DatabaseManager::openDatabase(const QString& fileName)
|
|||
dbStruct.file = file.take();
|
||||
dbStruct.dbWidget = new DatabaseWidget(db, m_tabWidget);
|
||||
|
||||
m_dbList.insert(db, dbStruct);
|
||||
|
||||
m_tabWidget->addTab(dbStruct.dbWidget, "");
|
||||
updateTabName(db);
|
||||
|
||||
connect(db->metadata(), SIGNAL(nameTextChanged(Database*)), SLOT(updateTabName(Database*)));
|
||||
insertDatabase(db, dbStruct);
|
||||
}
|
||||
|
||||
void DatabaseManager::closeDatabase(Database* db)
|
||||
|
@ -108,11 +112,38 @@ void DatabaseManager::closeDatabase(Database* db)
|
|||
delete db;
|
||||
}
|
||||
|
||||
void DatabaseManager::saveDatabase(Database* db)
|
||||
{
|
||||
DatabaseManagerStruct& dbStruct = m_dbList[db];
|
||||
|
||||
// TODO ensure that the data is actually written to disk
|
||||
dbStruct.file->reset();
|
||||
m_writer.writeDatabase(dbStruct.file, db);
|
||||
dbStruct.file->resize(dbStruct.file->pos());
|
||||
dbStruct.file->flush();
|
||||
|
||||
dbStruct.modified = false;
|
||||
updateTabName(db);
|
||||
}
|
||||
|
||||
void DatabaseManager::closeDatabase(int index)
|
||||
{
|
||||
if (index == -1) {
|
||||
index = m_tabWidget->currentIndex();
|
||||
}
|
||||
|
||||
closeDatabase(indexDatabase(index));
|
||||
}
|
||||
|
||||
void DatabaseManager::saveDatabase(int index)
|
||||
{
|
||||
if (index == -1) {
|
||||
index = m_tabWidget->currentIndex();
|
||||
}
|
||||
|
||||
saveDatabase(indexDatabase(index));
|
||||
}
|
||||
|
||||
void DatabaseManager::updateTabName(Database* db)
|
||||
{
|
||||
int index = databaseIndex(db);
|
||||
|
@ -120,14 +151,26 @@ void DatabaseManager::updateTabName(Database* db)
|
|||
|
||||
const DatabaseManagerStruct& dbStruct = m_dbList.value(db);
|
||||
|
||||
QString filename = QFileInfo(*dbStruct.file).completeBaseName();
|
||||
|
||||
QString tabName;
|
||||
if (db->metadata()->name().isEmpty()) {
|
||||
tabName = filename;
|
||||
|
||||
if (dbStruct.file) {
|
||||
|
||||
QString filename = QFileInfo(*dbStruct.file).completeBaseName();
|
||||
|
||||
if (db->metadata()->name().isEmpty()) {
|
||||
tabName = filename;
|
||||
}
|
||||
else {
|
||||
tabName = QString("%1 [%2]").arg(db->metadata()->name().arg(filename));
|
||||
}
|
||||
}
|
||||
else {
|
||||
tabName = QString("%1 [%2]").arg(db->metadata()->name().arg(filename));
|
||||
if (db->metadata()->name().isEmpty()) {
|
||||
tabName = tr("New database");
|
||||
}
|
||||
else {
|
||||
tabName = QString("%1 [%2]").arg(db->metadata()->name().arg(tr("New database")));
|
||||
}
|
||||
}
|
||||
|
||||
m_tabWidget->setTabText(index, tabName);
|
||||
|
@ -153,3 +196,13 @@ Database* DatabaseManager::indexDatabase(int index)
|
|||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void DatabaseManager::insertDatabase(Database* db, const DatabaseManagerStruct& dbStruct)
|
||||
{
|
||||
m_dbList.insert(db, dbStruct);
|
||||
|
||||
m_tabWidget->addTab(dbStruct.dbWidget, "");
|
||||
updateTabName(db);
|
||||
|
||||
connect(db->metadata(), SIGNAL(nameTextChanged(Database*)), SLOT(updateTabName(Database*)));
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue