diff options
author | kh1 <karsten.heimrich@digia.com> | 2013-06-17 12:40:23 +0200 |
---|---|---|
committer | Kai Koehne <kai.koehne@digia.com> | 2013-06-26 11:55:19 +0200 |
commit | 5e5c0a10ff9b4cd4f2b1cfdec4f976861b1de160 (patch) | |
tree | 756d4870a32bf4dfb75d93ee9b9802e4486b5ba8 /src/libs/installer/settings.cpp | |
parent | 61ffbff8ab9fcdf8bbc73ee00fb9db7f40e0182b (diff) |
Implement dedicated translation settings support.
Change-Id: I41dd23f01e9b511c217fee7f736d9187b8a8623a
Reviewed-by: Niels Weber <niels.weber@digia.com>
Reviewed-by: Tim Jenssen <tim.jenssen@digia.com>
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
Diffstat (limited to 'src/libs/installer/settings.cpp')
-rw-r--r-- | src/libs/installer/settings.cpp | 40 |
1 files changed, 38 insertions, 2 deletions
diff --git a/src/libs/installer/settings.cpp b/src/libs/installer/settings.cpp index 8ef248db8..d8f409f46 100644 --- a/src/libs/installer/settings.cpp +++ b/src/libs/installer/settings.cpp @@ -67,6 +67,7 @@ static const QLatin1String scTmpRepositories("TemporaryRepositories"); static const QLatin1String scUninstallerIniFile("UninstallerIniFile"); static const QLatin1String scRemoteRepositories("RemoteRepositories"); static const QLatin1String scDependsOnLocalInstallerBinary("DependsOnLocalInstallerBinary"); +static const QLatin1String scTranslations("Translations"); static const QLatin1String scFtpProxy("FtpProxy"); static const QLatin1String scHttpProxy("HttpProxy"); @@ -97,6 +98,25 @@ static void raiseError(QXmlStreamReader &reader, const QString &error, Settings: } } +static QStringList readTranslations(QXmlStreamReader &reader, Settings::ParseMode parseMode) +{ + QStringList translations; + while (reader.readNextStartElement()) { + if (reader.name() == QLatin1String("Translation")) { + translations.append(reader.readElementText().toLower()); + } else { + raiseError(reader, QString::fromLatin1("Unexpected element '%1'.").arg(reader.name().toString()), + parseMode); + } + + if (!reader.attributes().isEmpty()) { + raiseError(reader, QString::fromLatin1("Unexpected attribute for element '%1'.").arg(reader + .name().toString()), parseMode); + } + } + return translations; +} + static QSet<Repository> readRepositories(QXmlStreamReader &reader, bool isDefault, Settings::ParseMode parseMode) { QSet<Repository> set; @@ -212,7 +232,7 @@ Settings Settings::fromFileAndPrefix(const QString &path, const QString &prefix, << scDependsOnLocalInstallerBinary << scAllowSpaceInPath << scAllowNonAsciiCharacters << scRepositorySettingsPageVisible << scTargetConfigurationFile - << scRemoteRepositories; + << scRemoteRepositories << scTranslations; Settings s; s.d->m_data.insert(scPrefix, prefix); @@ -232,7 +252,9 @@ Settings Settings::fromFileAndPrefix(const QString &path, const QString &prefix, if (s.d->m_data.contains(name)) reader.raiseError(QString::fromLatin1("Element '%1' has been defined before.").arg(name)); - if (name == scRemoteRepositories) { + if (name == scTranslations) { + s.setTranslations(readTranslations(reader, parseMode)); + } else if (name == scRemoteRepositories) { s.addDefaultRepositories(readRepositories(reader, true, parseMode)); } else { s.d->m_data.insert(name, reader.readElementText(QXmlStreamReader::SkipChildElements)); @@ -576,3 +598,17 @@ void Settings::setHttpProxy(const QNetworkProxy &proxy) { d->m_data.insert(scHttpProxy, QVariant::fromValue(proxy)); } + +QStringList Settings::translations() const +{ + const QVariant variant = d->m_data.values(scTranslations); + if (variant.canConvert<QStringList>()) + return variant.value<QStringList>(); + return QStringList(); +} + +void Settings::setTranslations(const QStringList &translations) +{ + d->m_data.remove(scTranslations); + d->m_data.insert(scTranslations, translations); +} |