Uncategorized tools would no longer be configurable after first run.

Avoid writing empty string prefixed arrays into settings, and some
isNull vs isEmpty confusion (xml reader seems to read null instead of
empty strings in some cases).
This commit is contained in:
con
2011-02-28 12:46:58 +01:00
parent 1e8efe58a7
commit a8928ba191
2 changed files with 16 additions and 5 deletions

View File

@@ -82,11 +82,14 @@ namespace {
const char * const kNo = "no";
const char * const kTrue= "true";
const char * const kFalse = "false";
const char * const kSpecialUncategorizedSetting = "SpecialEmptyCategoryForUncategorizedTools";
}
// #pragma mark -- ExternalTool
ExternalTool::ExternalTool() :
m_displayCategory(QLatin1String("")), // difference between isNull and isEmpty
m_order(-1),
m_outputHandling(ShowInPane),
m_errorHandling(ShowInPane),
@@ -318,6 +321,8 @@ static void localizedText(const QStringList &locales, QXmlStreamReader *reader,
reader->skipCurrentElement();
}
}
if (currentText->isNull()) // prefer isEmpty over isNull
*currentText = QLatin1String("");
}
static bool parseOutputAttribute(const QString &attribute, QXmlStreamReader *reader, ExternalTool::OutputHandling *value)
@@ -866,8 +871,11 @@ void ExternalToolManager::readSettings(const QMap<QString, ExternalTool *> &tool
if (categoryMap) {
settings->beginGroup(QLatin1String("OverrideCategories"));
foreach (const QString &category, settings->childGroups()) {
int count = settings->beginReadArray(category);
foreach (const QString &settingsCategory, settings->childGroups()) {
QString displayCategory = settingsCategory;
if (displayCategory == QLatin1String(kSpecialUncategorizedSetting))
displayCategory = QLatin1String("");
int count = settings->beginReadArray(settingsCategory);
for (int i = 0; i < count; ++i) {
settings->setArrayIndex(i);
const QString &toolId = settings->value(QLatin1String("Tool")).toString();
@@ -878,7 +886,7 @@ void ExternalToolManager::readSettings(const QMap<QString, ExternalTool *> &tool
if (categoryMap->value(tool->displayCategory()).isEmpty())
categoryMap->remove(tool->displayCategory());
// add to new category
(*categoryMap)[category].append(tool);
(*categoryMap)[displayCategory].append(tool);
}
}
settings->endArray();
@@ -899,7 +907,9 @@ void ExternalToolManager::writeSettings()
QMapIterator<QString, QList<ExternalTool *> > it(m_categoryMap);
while (it.hasNext()) {
it.next();
const QString &category = it.key();
QString category = it.key();
if (category.isEmpty())
category = QLatin1String(kSpecialUncategorizedSetting);
settings->beginWriteArray(category, it.value().count());
int i = 0;
foreach (ExternalTool *tool, it.value()) {