summaryrefslogtreecommitdiffstats
path: root/src/libs/installer/settings.cpp
diff options
context:
space:
mode:
authorkh1 <karsten.heimrich@digia.com>2013-06-17 12:40:23 +0200
committerKai Koehne <kai.koehne@digia.com>2013-06-26 11:55:19 +0200
commit5e5c0a10ff9b4cd4f2b1cfdec4f976861b1de160 (patch)
tree756d4870a32bf4dfb75d93ee9b9802e4486b5ba8 /src/libs/installer/settings.cpp
parent61ffbff8ab9fcdf8bbc73ee00fb9db7f40e0182b (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.cpp40
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);
+}