From 056447fad98a874fd3813100482eef55798e746c Mon Sep 17 00:00:00 2001 From: Florian Geyer Date: Thu, 14 Jun 2012 21:18:04 +0200 Subject: [PATCH] Add editFinished signal which can be used to auto save the database. --- src/gui/DatabaseTabWidget.cpp | 19 ++++++++++++++----- src/gui/DatabaseTabWidget.h | 1 + src/gui/DatabaseWidget.cpp | 11 +++++++++++ src/gui/DatabaseWidget.h | 1 + src/gui/group/GroupView.cpp | 1 + src/gui/group/GroupView.h | 1 + 6 files changed, 29 insertions(+), 5 deletions(-) diff --git a/src/gui/DatabaseTabWidget.cpp b/src/gui/DatabaseTabWidget.cpp index a0ddaf84..f7e348a3 100644 --- a/src/gui/DatabaseTabWidget.cpp +++ b/src/gui/DatabaseTabWidget.cpp @@ -511,6 +511,7 @@ void DatabaseTabWidget::insertDatabase(Database* db, const DatabaseManagerStruct connect(db, SIGNAL(modified()), SLOT(modified())); connect(dbStruct.dbWidget, SIGNAL(currentModeChanged(DatabaseWidget::Mode)), SIGNAL(currentWidgetModeChanged(DatabaseWidget::Mode))); + connect(dbStruct.dbWidget, SIGNAL(editFinished()), SLOT(autoSave())); } DatabaseWidget* DatabaseTabWidget::currentDatabaseWidget() @@ -531,17 +532,25 @@ void DatabaseTabWidget::modified() Database* db = static_cast(sender()); DatabaseManagerStruct& dbStruct = m_dbList[db]; - if (config()->get("AutoSaveAfterEveryChange").toBool() && dbStruct.file) { - saveDatabase(db); - return; - } - if (!dbStruct.modified) { dbStruct.modified = true; updateTabName(db); } } +void DatabaseTabWidget::autoSave() +{ + Q_ASSERT(qobject_cast(sender())); + + DatabaseWidget* dbWidget = static_cast(sender()); + Database* db = databaseFromDatabaseWidget(dbWidget); + DatabaseManagerStruct& dbStruct = m_dbList[db]; + + if (dbStruct.modified && config()->get("AutoSaveAfterEveryChange").toBool() && dbStruct.file) { + saveDatabase(db); + } +} + void DatabaseTabWidget::updateLastDatabases(const QString& filename) { if (!config()->get("RememberLastDatabases").toBool()) { diff --git a/src/gui/DatabaseTabWidget.h b/src/gui/DatabaseTabWidget.h index c43682a6..4ecd0aa9 100644 --- a/src/gui/DatabaseTabWidget.h +++ b/src/gui/DatabaseTabWidget.h @@ -82,6 +82,7 @@ Q_SIGNALS: void tabNameChanged(); private Q_SLOTS: + void autoSave(); void updateTabName(Database* db); void updateTabNameFromSender(); void openDatabaseDialog(const QString& pw = QString(), const QString& keyFile = QString()); diff --git a/src/gui/DatabaseWidget.cpp b/src/gui/DatabaseWidget.cpp index d1327cd5..cb21c132 100644 --- a/src/gui/DatabaseWidget.cpp +++ b/src/gui/DatabaseWidget.cpp @@ -147,6 +147,7 @@ DatabaseWidget::DatabaseWidget(Database* db, QWidget* parent) connect(m_groupView, SIGNAL(groupChanged(Group*)), this, SLOT(clearLastGroup(Group*))); connect(m_groupView, SIGNAL(groupChanged(Group*)), SLOT(updateGroupActions(Group*))); connect(m_groupView, SIGNAL(groupChanged(Group*)), m_entryView, SLOT(setGroup(Group*))); + connect(m_groupView, SIGNAL(editFinished()), this, SIGNAL(editFinished())); connect(m_entryView, SIGNAL(entryActivated(Entry*)), SLOT(switchToEntryEdit(Entry*))); connect(m_editEntryWidget, SIGNAL(editFinished(bool)), SLOT(switchToView(bool))); connect(m_editEntryWidget, SIGNAL(historyEntryActivated(Entry*)), SLOT(switchToHistoryView(Entry*))); @@ -258,6 +259,8 @@ void DatabaseWidget::cloneEntry() entry->setGroup(currentEntry->group()); m_entryView->setFocus(); m_entryView->setCurrentEntry(entry); + + Q_EMIT editFinished(); } void DatabaseWidget::deleteEntry() @@ -282,6 +285,8 @@ void DatabaseWidget::deleteEntry() else { m_db->recycleEntry(currentEntry); } + + Q_EMIT editFinished(); } void DatabaseWidget::copyUsername() @@ -341,6 +346,8 @@ void DatabaseWidget::deleteGroup() else { m_db->recycleGroup(currentGroup); } + + Q_EMIT editFinished(); } int DatabaseWidget::addWidget(QWidget* w) @@ -398,6 +405,8 @@ void DatabaseWidget::switchToView(bool accepted) m_newParent = 0; } + Q_EMIT editFinished(); + setCurrentIndex(0); } @@ -446,6 +455,8 @@ void DatabaseWidget::updateMasterKey(bool accepted) return; } + Q_EMIT editFinished(); + setCurrentIndex(0); } diff --git a/src/gui/DatabaseWidget.h b/src/gui/DatabaseWidget.h index c055db7c..9c800eda 100644 --- a/src/gui/DatabaseWidget.h +++ b/src/gui/DatabaseWidget.h @@ -74,6 +74,7 @@ public: Q_SIGNALS: void closeRequest(); void currentModeChanged(DatabaseWidget::Mode mode); + void editFinished(); public Q_SLOTS: void createEntry(); diff --git a/src/gui/group/GroupView.cpp b/src/gui/group/GroupView.cpp index 6d971577..51100ea5 100644 --- a/src/gui/group/GroupView.cpp +++ b/src/gui/group/GroupView.cpp @@ -74,6 +74,7 @@ void GroupView::expandedChanged(const QModelIndex& index) { Group* group = m_model->groupFromIndex(index); group->setExpanded(isExpanded(index)); + Q_EMIT editFinished(); } void GroupView::recInitExpanded(Group* group) diff --git a/src/gui/group/GroupView.h b/src/gui/group/GroupView.h index af87dbe8..08ed5ddb 100644 --- a/src/gui/group/GroupView.h +++ b/src/gui/group/GroupView.h @@ -37,6 +37,7 @@ public: Q_SIGNALS: void groupChanged(Group* group); + void editFinished(); private Q_SLOTS: void expandedChanged(const QModelIndex& index);