Remember last opened files.

This commit is contained in:
Florian Geyer 2012-05-27 23:01:14 +02:00
parent 20c95737cb
commit 6f48983efe
3 changed files with 31 additions and 0 deletions

View File

@ -67,6 +67,7 @@ Config::Config()
m_settings.reset(new QSettings(userPath, QSettings::IniFormat));
m_defaults.insert("RememberLastDatabases", true);
m_defaults.insert("security/clearclipboard", true);
m_defaults.insert("security/clearclipboardtimeout", 10);
}

View File

@ -21,6 +21,7 @@
#include <QtGui/QTabWidget>
#include <QtGui/QMessageBox>
#include "core/Config.h"
#include "core/Database.h"
#include "core/Group.h"
#include "core/Metadata.h"
@ -40,6 +41,8 @@ DatabaseManagerStruct::DatabaseManagerStruct()
{
}
const int DatabaseTabWidget::LastDatabasesCount = 5;
DatabaseTabWidget::DatabaseTabWidget(QWidget* parent)
: QTabWidget(parent)
, m_window(parent->window())
@ -153,8 +156,11 @@ void DatabaseTabWidget::openDatabaseRead()
m_curKeyDialog = 0;
m_curDbStruct.dbWidget = new DatabaseWidget(db, this);
QString filename = m_curDbStruct.fileName;
insertDatabase(db, m_curDbStruct);
m_curDbStruct = DatabaseManagerStruct();
updateLastDatabases(filename);
}
void DatabaseTabWidget::openDatabaseCleanup()
@ -247,6 +253,7 @@ void DatabaseTabWidget::saveDatabase(Database* db)
dbStruct.modified = false;
updateTabName(db);
updateLastDatabases(dbStruct.fileName);
}
else {
saveDatabaseAs(db);
@ -278,6 +285,7 @@ void DatabaseTabWidget::saveDatabaseAs(Database* db)
dbStruct.modified = false;
dbStruct.fileName = QFileInfo(fileName).absoluteFilePath();
updateTabName(db);
updateLastDatabases(dbStruct.fileName);
}
}
@ -497,3 +505,20 @@ void DatabaseTabWidget::modified()
updateTabName(db);
}
}
void DatabaseTabWidget::updateLastDatabases(const QString& filename)
{
if (!config()->get("RememberLastDatabases").toBool()) {
config()->set("LastDatabases", QVariant());
}
else {
QStringList lastDatabases = config()->get("LastDatabases", QVariant()).toStringList();
lastDatabases.prepend(filename);
lastDatabases.removeDuplicates();
while (lastDatabases.count() > LastDatabasesCount) {
lastDatabases.removeLast();
}
config()->set("LastDatabases", lastDatabases);
}
}

View File

@ -51,6 +51,8 @@ public:
const QString& keyFile = QString());
DatabaseWidget* currentDatabaseWidget();
static const int LastDatabasesCount;
public Q_SLOTS:
void newDatabase();
void openDatabase();
@ -96,12 +98,15 @@ private:
Database* indexDatabase(int index);
Database* databaseFromDatabaseWidget(DatabaseWidget* dbWidget);
void insertDatabase(Database* db, const DatabaseManagerStruct& dbStruct);
void updateLastDatabases(const QString& filename);
QWidget* const m_window;
KeePass2Writer m_writer;
QHash<Database*, DatabaseManagerStruct> m_dbList;
DatabaseManagerStruct m_curDbStruct;
DatabaseOpenDialog* m_curKeyDialog;
};
#endif // KEEPASSX_DATABASETABWIDGET_H