forked from qt-creator/qt-creator
Fix saving of XML configuration files
... when removing settings Change-Id: If85061321082a8cd0e35752f71d2498fd4693dfd Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
This commit is contained in:
@@ -373,20 +373,12 @@ static void writeVariantValue(QXmlStreamWriter &w, const Context &ctx,
|
|||||||
}
|
}
|
||||||
|
|
||||||
PersistentSettingsWriter::PersistentSettingsWriter(const FileName &fileName, const QString &docType) :
|
PersistentSettingsWriter::PersistentSettingsWriter(const FileName &fileName, const QString &docType) :
|
||||||
m_fileName(fileName), m_docType(docType), m_mustSave(false)
|
m_fileName(fileName), m_docType(docType)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
void PersistentSettingsWriter::saveValue(const QString &variable, const QVariant &value)
|
bool PersistentSettingsWriter::save(const QVariantMap &data, QWidget *parent) const
|
||||||
{
|
{
|
||||||
if (m_valueMap.contains(variable) && m_valueMap.value(variable) == value)
|
if (data == m_savedData)
|
||||||
return;
|
|
||||||
m_mustSave = true;
|
|
||||||
m_valueMap.insert(variable, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool PersistentSettingsWriter::save(QWidget *parent) const
|
|
||||||
{
|
|
||||||
if (!m_mustSave)
|
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
QDir tmp;
|
QDir tmp;
|
||||||
@@ -403,8 +395,8 @@ bool PersistentSettingsWriter::save(QWidget *parent) const
|
|||||||
arg(QLatin1String(Core::Constants::IDE_VERSION_LONG),
|
arg(QLatin1String(Core::Constants::IDE_VERSION_LONG),
|
||||||
QDateTime::currentDateTime().toString(Qt::ISODate)));
|
QDateTime::currentDateTime().toString(Qt::ISODate)));
|
||||||
w.writeStartElement(ctx.qtCreatorElement);
|
w.writeStartElement(ctx.qtCreatorElement);
|
||||||
const QVariantMap::const_iterator cend = m_valueMap.constEnd();
|
const QVariantMap::const_iterator cend = data.constEnd();
|
||||||
for (QVariantMap::const_iterator it = m_valueMap.constBegin(); it != cend; ++it) {
|
for (QVariantMap::const_iterator it = data.constBegin(); it != cend; ++it) {
|
||||||
w.writeStartElement(ctx.dataElement);
|
w.writeStartElement(ctx.dataElement);
|
||||||
w.writeTextElement(ctx.variableElement, it.key());
|
w.writeTextElement(ctx.variableElement, it.key());
|
||||||
writeVariantValue(w, ctx, it.value());
|
writeVariantValue(w, ctx, it.value());
|
||||||
@@ -416,7 +408,7 @@ bool PersistentSettingsWriter::save(QWidget *parent) const
|
|||||||
}
|
}
|
||||||
bool ok = saver.finalize(parent);
|
bool ok = saver.finalize(parent);
|
||||||
if (ok)
|
if (ok)
|
||||||
m_mustSave = false;
|
m_savedData = data;
|
||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -60,16 +60,14 @@ class QTCREATOR_UTILS_EXPORT PersistentSettingsWriter
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
PersistentSettingsWriter(const FileName &fileName, const QString &docType);
|
PersistentSettingsWriter(const FileName &fileName, const QString &docType);
|
||||||
void saveValue(const QString &variable, const QVariant &value);
|
bool save(const QVariantMap &data, QWidget *parent) const;
|
||||||
bool save(QWidget *parent) const;
|
|
||||||
|
|
||||||
Utils::FileName fileName() const;
|
Utils::FileName fileName() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QMap<QString, QVariant> m_valueMap;
|
|
||||||
const Utils::FileName m_fileName;
|
const Utils::FileName m_fileName;
|
||||||
const QString m_docType;
|
const QString m_docType;
|
||||||
mutable bool m_mustSave;
|
mutable QMap<QString, QVariant> m_savedData;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Utils
|
} // namespace Utils
|
||||||
|
@@ -136,8 +136,9 @@ void DeviceManager::copy(const DeviceManager *source, DeviceManager *target, boo
|
|||||||
|
|
||||||
void DeviceManager::save()
|
void DeviceManager::save()
|
||||||
{
|
{
|
||||||
d->writer->saveValue(QLatin1String(DeviceManagerKey), toMap());
|
QVariantMap data;
|
||||||
d->writer->save(Core::ICore::mainWindow());
|
data.insert(QLatin1String(DeviceManagerKey), toMap());
|
||||||
|
d->writer->save(data, Core::ICore::mainWindow());
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeviceManager::load()
|
void DeviceManager::load()
|
||||||
|
@@ -227,20 +227,21 @@ void ProfileManager::saveProfiles()
|
|||||||
if (!d->m_initialized) // ignore save requests while we are not initialized.
|
if (!d->m_initialized) // ignore save requests while we are not initialized.
|
||||||
return;
|
return;
|
||||||
|
|
||||||
d->m_writer->saveValue(QLatin1String(PROFILE_FILE_VERSION_KEY), 1);
|
QVariantMap data;
|
||||||
|
data.insert(QLatin1String(PROFILE_FILE_VERSION_KEY), 1);
|
||||||
|
|
||||||
int count = 0;
|
int count = 0;
|
||||||
foreach (Profile *p, profiles()) {
|
foreach (Profile *p, profiles()) {
|
||||||
QVariantMap tmp = p->toMap();
|
QVariantMap tmp = p->toMap();
|
||||||
if (tmp.isEmpty())
|
if (tmp.isEmpty())
|
||||||
continue;
|
continue;
|
||||||
d->m_writer->saveValue(QString::fromLatin1(PROFILE_DATA_KEY) + QString::number(count), tmp);
|
data.insert(QString::fromLatin1(PROFILE_DATA_KEY) + QString::number(count), tmp);
|
||||||
++count;
|
++count;
|
||||||
}
|
}
|
||||||
d->m_writer->saveValue(QLatin1String(PROFILE_COUNT_KEY), count);
|
data.insert(QLatin1String(PROFILE_COUNT_KEY), count);
|
||||||
d->m_writer->saveValue(QLatin1String(PROFILE_DEFAULT_KEY),
|
data.insert(QLatin1String(PROFILE_DEFAULT_KEY),
|
||||||
d->m_defaultProfile ? QString::fromLatin1(d->m_defaultProfile->id().name()) : QString());
|
d->m_defaultProfile ? QString::fromLatin1(d->m_defaultProfile->id().name()) : QString());
|
||||||
d->m_writer->save(Core::ICore::mainWindow());
|
d->m_writer->save(data, Core::ICore::mainWindow());
|
||||||
}
|
}
|
||||||
|
|
||||||
bool greaterPriority(ProfileInformation *a, ProfileInformation *b)
|
bool greaterPriority(ProfileInformation *a, ProfileInformation *b)
|
||||||
|
@@ -312,9 +312,10 @@ bool SessionManager::save()
|
|||||||
QLatin1String("QtCreatorSession"));
|
QLatin1String("QtCreatorSession"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QVariantMap data;
|
||||||
// save the startup project
|
// save the startup project
|
||||||
if (m_startupProject)
|
if (m_startupProject)
|
||||||
m_writer->saveValue(QLatin1String("StartupProject"), m_startupProject->document()->fileName());
|
data.insert(QLatin1String("StartupProject"), m_startupProject->document()->fileName());
|
||||||
|
|
||||||
QStringList projectFiles;
|
QStringList projectFiles;
|
||||||
foreach (Project *pro, m_projects)
|
foreach (Project *pro, m_projects)
|
||||||
@@ -326,7 +327,7 @@ bool SessionManager::save()
|
|||||||
if (!projectFiles.contains(failed))
|
if (!projectFiles.contains(failed))
|
||||||
projectFiles << failed;
|
projectFiles << failed;
|
||||||
|
|
||||||
m_writer->saveValue(QLatin1String("ProjectList"), projectFiles);
|
data.insert(QLatin1String("ProjectList"), projectFiles);
|
||||||
|
|
||||||
QMap<QString, QVariant> depMap;
|
QMap<QString, QVariant> depMap;
|
||||||
QMap<QString, QStringList>::const_iterator i = m_depMap.constBegin();
|
QMap<QString, QStringList>::const_iterator i = m_depMap.constBegin();
|
||||||
@@ -339,7 +340,7 @@ bool SessionManager::save()
|
|||||||
depMap.insert(key, values);
|
depMap.insert(key, values);
|
||||||
++i;
|
++i;
|
||||||
}
|
}
|
||||||
m_writer->saveValue(QLatin1String("ProjectDependencies"), QVariant(depMap));
|
data.insert(QLatin1String("ProjectDependencies"), QVariant(depMap));
|
||||||
|
|
||||||
int editorCount = 0;
|
int editorCount = 0;
|
||||||
QList<Core::IEditor *> editors = ICore::editorManager()->openedEditors();
|
QList<Core::IEditor *> editors = ICore::editorManager()->openedEditors();
|
||||||
@@ -348,21 +349,20 @@ bool SessionManager::save()
|
|||||||
if (!editor->isTemporary())
|
if (!editor->isTemporary())
|
||||||
++editorCount;
|
++editorCount;
|
||||||
}
|
}
|
||||||
m_writer->saveValue(QLatin1String("OpenEditors"), editorCount);
|
data.insert(QLatin1String("OpenEditors"), editorCount);
|
||||||
m_writer->saveValue(QLatin1String("EditorSettings"),
|
data.insert(QLatin1String("EditorSettings"), ICore::editorManager()->saveState().toBase64());
|
||||||
ICore::editorManager()->saveState().toBase64());
|
|
||||||
|
|
||||||
QMap<QString, QVariant>::const_iterator it, end;
|
QMap<QString, QVariant>::const_iterator it, end;
|
||||||
end = m_values.constEnd();
|
end = m_values.constEnd();
|
||||||
QStringList keys;
|
QStringList keys;
|
||||||
for (it = m_values.constBegin(); it != end; ++it) {
|
for (it = m_values.constBegin(); it != end; ++it) {
|
||||||
m_writer->saveValue(QLatin1String("value-") + it.key(), it.value());
|
data.insert(QLatin1String("value-") + it.key(), it.value());
|
||||||
keys << it.key();
|
keys << it.key();
|
||||||
}
|
}
|
||||||
|
|
||||||
m_writer->saveValue(QLatin1String("valueKeys"), keys);
|
data.insert(QLatin1String("valueKeys"), keys);
|
||||||
|
|
||||||
bool result = m_writer->save(Core::ICore::mainWindow());
|
bool result = m_writer->save(data, Core::ICore::mainWindow());
|
||||||
if (!result) {
|
if (!result) {
|
||||||
QMessageBox::warning(0, tr("Error while saving session"),
|
QMessageBox::warning(0, tr("Error while saving session"),
|
||||||
tr("Could not save session to file %1").arg(m_writer->fileName().toUserOutput()));
|
tr("Could not save session to file %1").arg(m_writer->fileName().toUserOutput()));
|
||||||
|
@@ -936,18 +936,20 @@ bool SettingsAccessor::FileAccessor::writeFile(const SettingsData *settings) con
|
|||||||
m_writer = new Utils::PersistentSettingsWriter(settings->m_fileName, QLatin1String("QtCreatorProject"));
|
m_writer = new Utils::PersistentSettingsWriter(settings->m_fileName, QLatin1String("QtCreatorProject"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QVariantMap data;
|
||||||
|
|
||||||
for (QVariantMap::const_iterator i = settings->m_map.constBegin();
|
for (QVariantMap::const_iterator i = settings->m_map.constBegin();
|
||||||
i != settings->m_map.constEnd();
|
i != settings->m_map.constEnd();
|
||||||
++i) {
|
++i) {
|
||||||
m_writer->saveValue(i.key(), i.value());
|
data.insert(i.key(), i.value());
|
||||||
}
|
}
|
||||||
|
|
||||||
m_writer->saveValue(QLatin1String(VERSION_KEY), m_accessor->m_lastVersion + 1);
|
data.insert(QLatin1String(VERSION_KEY), m_accessor->m_lastVersion + 1);
|
||||||
|
|
||||||
if (m_environmentSpecific)
|
if (m_environmentSpecific)
|
||||||
m_writer->saveValue(QLatin1String(ENVIRONMENT_ID_KEY),
|
data.insert(QLatin1String(ENVIRONMENT_ID_KEY),
|
||||||
ProjectExplorerPlugin::instance()->projectExplorerSettings().environmentId.toString());
|
ProjectExplorerPlugin::instance()->projectExplorerSettings().environmentId.toString());
|
||||||
return m_writer->save(Core::ICore::mainWindow());
|
return m_writer->save(data, Core::ICore::mainWindow());
|
||||||
}
|
}
|
||||||
|
|
||||||
// -------------------------------------------------------------------------
|
// -------------------------------------------------------------------------
|
||||||
|
@@ -209,7 +209,8 @@ ToolChainManager::~ToolChainManager()
|
|||||||
|
|
||||||
void ToolChainManager::saveToolChains()
|
void ToolChainManager::saveToolChains()
|
||||||
{
|
{
|
||||||
d->m_writer->saveValue(QLatin1String(TOOLCHAIN_FILE_VERSION_KEY), 1);
|
QVariantMap data;
|
||||||
|
data.insert(QLatin1String(TOOLCHAIN_FILE_VERSION_KEY), 1);
|
||||||
|
|
||||||
int count = 0;
|
int count = 0;
|
||||||
foreach (ToolChain *tc, d->toolChains()) {
|
foreach (ToolChain *tc, d->toolChains()) {
|
||||||
@@ -217,12 +218,12 @@ void ToolChainManager::saveToolChains()
|
|||||||
QVariantMap tmp = tc->toMap();
|
QVariantMap tmp = tc->toMap();
|
||||||
if (tmp.isEmpty())
|
if (tmp.isEmpty())
|
||||||
continue;
|
continue;
|
||||||
d->m_writer->saveValue(QString::fromLatin1(TOOLCHAIN_DATA_KEY) + QString::number(count), tmp);
|
data.insert(QString::fromLatin1(TOOLCHAIN_DATA_KEY) + QString::number(count), tmp);
|
||||||
++count;
|
++count;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
d->m_writer->saveValue(QLatin1String(TOOLCHAIN_COUNT_KEY), count);
|
data.insert(QLatin1String(TOOLCHAIN_COUNT_KEY), count);
|
||||||
d->m_writer->save(Core::ICore::mainWindow());
|
d->m_writer->save(data, Core::ICore::mainWindow());
|
||||||
|
|
||||||
// Do not save default debuggers! Those are set by the SDK!
|
// Do not save default debuggers! Those are set by the SDK!
|
||||||
}
|
}
|
||||||
|
@@ -364,7 +364,9 @@ void QtVersionManager::saveQtVersions()
|
|||||||
if (!m_writer)
|
if (!m_writer)
|
||||||
m_writer = new Utils::PersistentSettingsWriter(settingsFileName(QLatin1String(QTVERSION_FILENAME)),
|
m_writer = new Utils::PersistentSettingsWriter(settingsFileName(QLatin1String(QTVERSION_FILENAME)),
|
||||||
QLatin1String("QtCreatorQtVersions"));
|
QLatin1String("QtCreatorQtVersions"));
|
||||||
m_writer->saveValue(QLatin1String(QTVERSION_FILE_VERSION_KEY), 1);
|
|
||||||
|
QVariantMap data;
|
||||||
|
data.insert(QLatin1String(QTVERSION_FILE_VERSION_KEY), 1);
|
||||||
|
|
||||||
int count = 0;
|
int count = 0;
|
||||||
foreach (BaseQtVersion *qtv, m_versions) {
|
foreach (BaseQtVersion *qtv, m_versions) {
|
||||||
@@ -372,11 +374,11 @@ void QtVersionManager::saveQtVersions()
|
|||||||
if (tmp.isEmpty())
|
if (tmp.isEmpty())
|
||||||
continue;
|
continue;
|
||||||
tmp.insert(QLatin1String(QTVERSION_TYPE_KEY), qtv->type());
|
tmp.insert(QLatin1String(QTVERSION_TYPE_KEY), qtv->type());
|
||||||
m_writer->saveValue(QString::fromLatin1(QTVERSION_DATA_KEY) + QString::number(count), tmp);
|
data.insert(QString::fromLatin1(QTVERSION_DATA_KEY) + QString::number(count), tmp);
|
||||||
++count;
|
++count;
|
||||||
|
|
||||||
}
|
}
|
||||||
m_writer->save(Core::ICore::mainWindow());
|
m_writer->save(data, Core::ICore::mainWindow());
|
||||||
}
|
}
|
||||||
|
|
||||||
void QtVersionManager::findSystemQt()
|
void QtVersionManager::findSystemQt()
|
||||||
|
@@ -286,9 +286,11 @@ void CodeStylePool::exportCodeStyle(const Utils::FileName &fileName, ICodeStyleP
|
|||||||
{
|
{
|
||||||
QVariantMap map;
|
QVariantMap map;
|
||||||
codeStyle->toMap(QString::null, &map);
|
codeStyle->toMap(QString::null, &map);
|
||||||
|
|
||||||
|
QVariantMap tmp;
|
||||||
|
tmp.insert(QLatin1String(displayNameKey), codeStyle->displayName());
|
||||||
|
tmp.insert(QLatin1String(codeStyleDataKey), map);
|
||||||
Utils::PersistentSettingsWriter writer(fileName, QLatin1String(codeStyleDocKey));
|
Utils::PersistentSettingsWriter writer(fileName, QLatin1String(codeStyleDocKey));
|
||||||
writer.saveValue(QLatin1String(displayNameKey), codeStyle->displayName());
|
writer.save(map, 0);
|
||||||
writer.saveValue(QLatin1String(codeStyleDataKey), map);
|
|
||||||
writer.save(0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user