Fix saving of xml files

Do not save XML config files (profiles.xml, toolchains.xml, etc.)
if the file has not changed.

Change-Id: I5f0dea374b33a05e7c428f4031d53c83d92de595
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
This commit is contained in:
Tobias Hunger
2012-08-17 13:18:31 +02:00
parent 29ec32a531
commit 96d8009693
17 changed files with 214 additions and 144 deletions

View File

@@ -76,21 +76,27 @@ class ToolChainManagerPrivate
{
public:
ToolChainManagerPrivate(ToolChainManager *parent);
~ToolChainManagerPrivate();
QList<ToolChain *> &toolChains();
ToolChainManager *q;
bool m_initialized;
QMap<QString, Utils::FileName> m_abiToDebugger;
Utils::PersistentSettingsWriter *m_writer;
private:
QList<ToolChain *> m_toolChains;
};
ToolChainManagerPrivate::ToolChainManagerPrivate(ToolChainManager *parent)
: q(parent), m_initialized(false)
: q(parent), m_initialized(false),
m_writer(new Utils::PersistentSettingsWriter(settingsFileName(QLatin1String(TOOLCHAIN_FILENAME)), QLatin1String("QtCreatorToolChains")))
{ }
ToolChainManagerPrivate::~ToolChainManagerPrivate()
{ delete m_writer; }
QList<ToolChain *> &ToolChainManagerPrivate::toolChains()
{
if (!m_initialized) {
@@ -203,8 +209,7 @@ ToolChainManager::~ToolChainManager()
void ToolChainManager::saveToolChains()
{
PersistentSettingsWriter writer;
writer.saveValue(QLatin1String(TOOLCHAIN_FILE_VERSION_KEY), 1);
d->m_writer->saveValue(QLatin1String(TOOLCHAIN_FILE_VERSION_KEY), 1);
int count = 0;
foreach (ToolChain *tc, d->toolChains()) {
@@ -212,12 +217,12 @@ void ToolChainManager::saveToolChains()
QVariantMap tmp = tc->toMap();
if (tmp.isEmpty())
continue;
writer.saveValue(QString::fromLatin1(TOOLCHAIN_DATA_KEY) + QString::number(count), tmp);
d->m_writer->saveValue(QString::fromLatin1(TOOLCHAIN_DATA_KEY) + QString::number(count), tmp);
++count;
}
}
writer.saveValue(QLatin1String(TOOLCHAIN_COUNT_KEY), count);
writer.save(settingsFileName(QLatin1String(TOOLCHAIN_FILENAME)), QLatin1String("QtCreatorToolChains"), Core::ICore::mainWindow());
d->m_writer->saveValue(QLatin1String(TOOLCHAIN_COUNT_KEY), count);
d->m_writer->save(Core::ICore::mainWindow());
// Do not save default debuggers! Those are set by the SDK!
}