From 3c4e63320987ce24e7fa44b8d3b8704a860aaee3 Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Mon, 24 Sep 2012 18:20:10 +0200 Subject: [PATCH] Always save settings on exit Task-number: QTCREATORBUG-7904 Change-Id: I1f7e1462db287cfda2d131f380c7235a94832e69 Reviewed-by: Eike Ziller Reviewed-by: Daniel Teske --- src/libs/utils/persistentsettings.cpp | 16 +++++++++++++--- src/libs/utils/persistentsettings.h | 4 ++++ 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/libs/utils/persistentsettings.cpp b/src/libs/utils/persistentsettings.cpp index 733ebef39d5..ef6d519ce3c 100644 --- a/src/libs/utils/persistentsettings.cpp +++ b/src/libs/utils/persistentsettings.cpp @@ -376,11 +376,24 @@ PersistentSettingsWriter::PersistentSettingsWriter(const FileName &fileName, con m_fileName(fileName), m_docType(docType) { } +PersistentSettingsWriter::~PersistentSettingsWriter() +{ + write(m_savedData, 0); +} + bool PersistentSettingsWriter::save(const QVariantMap &data, QWidget *parent) const { if (data == m_savedData) return true; + return write(data, parent); +} + +FileName PersistentSettingsWriter::fileName() const +{ return m_fileName; } + +bool PersistentSettingsWriter::write(const QVariantMap &data, QWidget *parent) const +{ QDir tmp; tmp.mkpath(m_fileName.toFileInfo().path()); Utils::FileSaver saver(m_fileName.toString(), QIODevice::Text); @@ -412,7 +425,4 @@ bool PersistentSettingsWriter::save(const QVariantMap &data, QWidget *parent) co return ok; } -FileName PersistentSettingsWriter::fileName() const -{ return m_fileName; } - } // namespace Utils diff --git a/src/libs/utils/persistentsettings.h b/src/libs/utils/persistentsettings.h index c5547f4a99f..0e45f5df872 100644 --- a/src/libs/utils/persistentsettings.h +++ b/src/libs/utils/persistentsettings.h @@ -60,11 +60,15 @@ class QTCREATOR_UTILS_EXPORT PersistentSettingsWriter { public: PersistentSettingsWriter(const FileName &fileName, const QString &docType); + ~PersistentSettingsWriter(); + bool save(const QVariantMap &data, QWidget *parent) const; Utils::FileName fileName() const; private: + bool write(const QVariantMap &data, QWidget *parent) const; + const Utils::FileName m_fileName; const QString m_docType; mutable QMap m_savedData;