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

@@ -120,9 +120,11 @@ QString CodeStylePool::settingsDir() const
return customCodeStylesPath().append(suffix);
}
QString CodeStylePool::settingsPath(const QString &id) const
Utils::FileName CodeStylePool::settingsPath(const QString &id) const
{
return settingsDir() + QLatin1Char('/') + id + QLatin1String(".xml");
Utils::FileName path = Utils::FileName::fromString(settingsDir());
path.appendPath(id + QLatin1String(".xml"));
return path;
}
QList<ICodeStylePreferences *> CodeStylePool::codeStyles() const
@@ -200,7 +202,7 @@ void CodeStylePool::removeCodeStyle(ICodeStylePreferences *codeStyle)
d->m_idToCodeStyle.remove(codeStyle->id());
QDir dir(settingsDir());
dir.remove(QFileInfo(settingsPath(codeStyle->id())).fileName());
dir.remove(settingsPath(codeStyle->id()).toFileInfo().fileName());
delete codeStyle;
}
@@ -218,11 +220,11 @@ void CodeStylePool::loadCustomCodeStyles()
const QString codeStyleFile = codeStyleFiles.at(i);
// filter out styles which id is the same as one of built-in styles
if (!d->m_idToCodeStyle.contains(QFileInfo(codeStyleFile).completeBaseName()))
loadCodeStyle(dir.absoluteFilePath(codeStyleFile));
loadCodeStyle(Utils::FileName::fromString(dir.absoluteFilePath(codeStyleFile)));
}
}
ICodeStylePreferences *CodeStylePool::importCodeStyle(const QString &fileName)
ICodeStylePreferences *CodeStylePool::importCodeStyle(const Utils::FileName &fileName)
{
TextEditor::ICodeStylePreferences *codeStyle = loadCodeStyle(fileName);
if (codeStyle)
@@ -230,14 +232,14 @@ ICodeStylePreferences *CodeStylePool::importCodeStyle(const QString &fileName)
return codeStyle;
}
ICodeStylePreferences *CodeStylePool::loadCodeStyle(const QString &fileName)
ICodeStylePreferences *CodeStylePool::loadCodeStyle(const Utils::FileName &fileName)
{
TextEditor::ICodeStylePreferences *codeStyle = 0;
Utils::PersistentSettingsReader reader;
reader.load(Utils::FileName::fromString(fileName));
reader.load(fileName);
QVariantMap m = reader.restoreValues();
if (m.contains(QLatin1String(codeStyleDataKey))) {
const QString id = QFileInfo(fileName).completeBaseName();
const QString id = fileName.toFileInfo().completeBaseName();
const QString displayName = reader.restoreValue(QLatin1String(displayNameKey)).toString();
const QVariantMap map = reader.restoreValue(QLatin1String(codeStyleDataKey)).toMap();
if (d->m_factory) {
@@ -280,14 +282,13 @@ void CodeStylePool::saveCodeStyle(ICodeStylePreferences *codeStyle) const
exportCodeStyle(settingsPath(codeStyle->id()), codeStyle);
}
void CodeStylePool::exportCodeStyle(const QString &fileName, ICodeStylePreferences *codeStyle) const
void CodeStylePool::exportCodeStyle(const Utils::FileName &fileName, ICodeStylePreferences *codeStyle) const
{
QVariantMap map;
codeStyle->toMap(QString::null, &map);
Utils::PersistentSettingsWriter writer;
Utils::PersistentSettingsWriter writer(fileName, QLatin1String(codeStyleDocKey));
writer.saveValue(QLatin1String(displayNameKey), codeStyle->displayName());
writer.saveValue(QLatin1String(codeStyleDataKey), map);
writer.save(Utils::FileName::fromString(fileName), QLatin1String(codeStyleDocKey), 0);
writer.save(0);
}