JsonWizard: Add helper to deal with string lists

Change-Id: I5d30f22367b365a71417c473cba3ce7125567a77
Reviewed-by: Alessandro Portale <alessandro.portale@theqtcompany.com>
This commit is contained in:
Tobias Hunger
2015-05-27 15:10:54 +02:00
parent b70d63952a
commit f09a87e5ba
2 changed files with 23 additions and 6 deletions

View File

@@ -133,12 +133,9 @@ QString JsonWizard::stringValue(const QString &n) const
if (v.type() == QVariant::String)
return m_expander.expand(v.toString());
if (v.type() == QVariant::StringList) {
QStringList tmp = Utils::transform(v.toStringList(), [this](const QString &i) -> QString {
return m_expander.expand(i).replace(QLatin1Char('\''), QLatin1String("\\'"));
});
return QString(QString(QLatin1Char('\'')) + tmp.join(QLatin1String("', '")) + QString(QLatin1Char('\'')));
}
if (v.type() == QVariant::StringList)
return stringListToArrayString(v.toStringList(), &m_expander);
return v.toString();
}
@@ -166,6 +163,24 @@ bool JsonWizard::boolFromVariant(const QVariant &v, Utils::MacroExpander *expand
return v.toBool();
}
QString JsonWizard::stringListToArrayString(const QStringList &list, const Utils::MacroExpander *expander)
{
// Todo: Handle ' embedded in the strings better.
if (list.isEmpty())
return QString();
QStringList tmp = Utils::transform(list, [expander](const QString &i) {
return expander->expand(i).replace(QLatin1Char('\''), QLatin1String("\\'"));
});
QString result;
result.append(QLatin1Char('\''));
result.append(tmp.join(QLatin1String("', '")));
result.append(QLatin1Char('\''));
return result;
}
void JsonWizard::removeAttributeFromAllFiles(Core::GeneratedFile::Attribute a)
{
for (int i = 0; i < m_files.count(); ++i) {

View File

@@ -79,6 +79,8 @@ public:
void setValue(const QString &key, const QVariant &value);
static bool boolFromVariant(const QVariant &v, Utils::MacroExpander *expander);
static QString stringListToArrayString(const QStringList &list,
const Utils::MacroExpander *expander);
void removeAttributeFromAllFiles(Core::GeneratedFile::Attribute a);