aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/utils/settingsaccessor.cpp
diff options
context:
space:
mode:
authorTobias Hunger <tobias.hunger@qt.io>2018-02-27 16:03:33 +0100
committerTobias Hunger <tobias.hunger@qt.io>2018-04-10 09:41:50 +0000
commit990d26deba2889d70bed7287520e3cf006af45ae (patch)
tree6065278e2f37f41b91b0d2ead20fc3be8fe12bb8 /src/libs/utils/settingsaccessor.cpp
parent5c4abeaffe2d3bcd6e3647addc52fe548439f1dd (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.cpp11
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);
}
/*!