diff options
author | Tobias Hunger <tobias.hunger@qt.io> | 2018-02-27 16:03:33 +0100 |
---|---|---|
committer | Tobias Hunger <tobias.hunger@qt.io> | 2018-04-10 09:41:50 +0000 |
commit | 990d26deba2889d70bed7287520e3cf006af45ae (patch) | |
tree | 6065278e2f37f41b91b0d2ead20fc3be8fe12bb8 /src/libs/utils/settingsaccessor.cpp | |
parent | 5c4abeaffe2d3bcd6e3647addc52fe548439f1dd (diff) |
SettingsAccessor: Remember last saved state
Remember last saved data and do not save it again if nothing had
changed.
Change-Id: I093859ff5edc8d1d6e7b17ecd97985ca6fb0e579
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Diffstat (limited to 'src/libs/utils/settingsaccessor.cpp')
-rw-r--r-- | src/libs/utils/settingsaccessor.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/libs/utils/settingsaccessor.cpp b/src/libs/utils/settingsaccessor.cpp index 0d161a59b1..fa359358db 100644 --- a/src/libs/utils/settingsaccessor.cpp +++ b/src/libs/utils/settingsaccessor.cpp @@ -82,6 +82,7 @@ QVariantMap SettingsAccessor::restoreSettings(QWidget *parent) const QTC_ASSERT(!m_baseFilePath.isEmpty(), return QVariantMap()); const RestoreData result = readData(m_baseFilePath, parent); + const ProceedInfo pi = result.hasIssue() ? reportIssues(result.issue.value(), result.path, parent) : ProceedInfo::Continue; return pi == ProceedInfo::DiscardAndContinue ? QVariantMap() : result.data; } @@ -92,6 +93,7 @@ QVariantMap SettingsAccessor::restoreSettings(QWidget *parent) const bool SettingsAccessor::saveSettings(const QVariantMap &data, QWidget *parent) const { const optional<Issue> result = writeData(m_baseFilePath, data, parent); + const ProceedInfo pi = result ? reportIssues(result.value(), m_baseFilePath, parent) : ProceedInfo::Continue; return pi == ProceedInfo::Continue; } @@ -132,7 +134,14 @@ SettingsAccessor::RestoreData SettingsAccessor::readFile(const FileName &path) c .arg(path.toUserOutput()), Issue::Type::ERROR)); } - return RestoreData(path, reader.restoreValues()); + const QVariantMap data = reader.restoreValues(); + if (path == m_baseFilePath) { + if (!m_writer) + m_writer = std::make_unique<PersistentSettingsWriter>(m_baseFilePath, docType); + m_writer->setContents(data); + } + + return RestoreData(path, data); } /*! |