summaryrefslogtreecommitdiffstats
path: root/src/libs/installer/settings.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/libs/installer/settings.cpp')
-rw-r--r--src/libs/installer/settings.cpp124
1 files changed, 47 insertions, 77 deletions
diff --git a/src/libs/installer/settings.cpp b/src/libs/installer/settings.cpp
index acc664fb4..2635dc10c 100644
--- a/src/libs/installer/settings.cpp
+++ b/src/libs/installer/settings.cpp
@@ -52,10 +52,12 @@
using namespace QInstaller;
static const QLatin1String scIcon("Icon");
+static const QLatin1String scInstallerApplicationIcon("InstallerApplicationIcon");
+static const QLatin1String scInstallerWindowIcon("InstallerWindowIcon");
static const QLatin1String scLogo("Logo");
-static const QLatin1String scPages("Pages");
static const QLatin1String scPrefix("Prefix");
static const QLatin1String scWatermark("Watermark");
+static const QLatin1String scBanner("Banner");
static const QLatin1String scProductUrl("ProductUrl");
static const QLatin1String scBackground("Background");
static const QLatin1String scAdminTargetDir("AdminTargetDir");
@@ -134,40 +136,6 @@ static QSet<Repository> readRepositories(QXmlStreamReader &reader, bool isDefaul
return set;
}
-static QVariantHash readTitles(QXmlStreamReader &reader)
-{
- QVariantHash hash;
- while (reader.readNextStartElement())
- hash.insert(reader.name().toString(), reader.readElementText(QXmlStreamReader::SkipChildElements));
- return hash;
-}
-
-static QHash<QString, QVariantHash> readPages(QXmlStreamReader &reader, Settings::ParseMode parseMode)
-{
- QHash<QString, QVariantHash> hash;
- while (reader.readNextStartElement()) {
- if (reader.name() == QLatin1String("Page")) {
- QVariantHash pageElements;
- const QString pageName = reader.attributes().value(QLatin1String("name")).toString();
- if (pageName.isEmpty()) {
- raiseError(reader, QLatin1String("Expected non-empty attribute 'name' for element 'Page'."),
- parseMode);
- }
- while (reader.readNextStartElement()) {
- const QString name = reader.name().toString();
- if (name == QLatin1String("Title") || name == QLatin1String("SubTitle"))
- pageElements.insert(name, readTitles(reader));
- else
- pageElements.insert(name, reader.readElementText(QXmlStreamReader::SkipChildElements));
- }
- hash.insert(pageName, pageElements);
- } else {
- raiseError(reader, QString::fromLatin1("Unexpected element '%1'.").arg(reader.name().toString()),
- parseMode);
- }
- }
- return hash;
-}
// -- Settings::Private
@@ -235,16 +203,14 @@ Settings Settings::fromFileAndPrefix(const QString &path, const QString &prefix,
QStringList elementList;
elementList << scName << scVersion << scTitle << scPublisher << scProductUrl
<< scTargetDir << scAdminTargetDir
- << scIcon << scLogo << scWatermark << scBackground
+ << scIcon << scInstallerApplicationIcon << scInstallerWindowIcon
+ << scLogo << scWatermark << scBanner << scBackground
<< scStartMenuDir << scUninstallerName << scUninstallerIniFile << scRemoveTargetDir
- << scRunProgram << scRunProgramDescription
+ << scRunProgram << scRunProgramArguments << scRunProgramDescription
<< scDependsOnLocalInstallerBinary
<< scAllowSpaceInPath << scAllowNonAsciiCharacters
<< scRepositorySettingsPageVisible << scTargetConfigurationFile
- << scRemoteRepositories << scPages;
-
- QStringList blackList;
- blackList << scRemoteRepositories << scPages;
+ << scRemoteRepositories;
Settings s;
s.d->m_data.insert(scPrefix, prefix);
@@ -258,22 +224,15 @@ Settings Settings::fromFileAndPrefix(const QString &path, const QString &prefix,
parseMode);
}
- if (blackList.contains(name)) {
- if (name == scRemoteRepositories)
- s.addDefaultRepositories(readRepositories(reader, true, parseMode));
+ if (name == scIcon)
+ qWarning() << "Deprecated element 'Icon'.";
- if (name == scPages) {
- qWarning() << "Deprecated element 'Pages'.";
- QHash<QString, QVariantHash> pages = readPages(reader, parseMode);
- const QStringList &keys = pages.keys();
- foreach (const QString &key, keys)
- s.d->m_data.insert(key, pages.value(key));
- }
+ if (s.d->m_data.contains(name))
+ reader.raiseError(QString::fromLatin1("Element '%1' has been defined before.").arg(name));
+
+ if (name == scRemoteRepositories) {
+ s.addDefaultRepositories(readRepositories(reader, true, parseMode));
} else {
- if (s.d->m_data.contains(name)) {
- // instead of raising parse mode based error, raise a real error
- reader.raiseError(QString::fromLatin1("Element '%1' has been defined before.").arg(name));
- }
s.d->m_data.insert(name, reader.readElementText(QXmlStreamReader::SkipChildElements));
}
}
@@ -291,6 +250,10 @@ Settings Settings::fromFileAndPrefix(const QString &path, const QString &prefix,
// Add some possible missing values
if (!s.d->m_data.contains(scIcon))
s.d->m_data.insert(scIcon, QLatin1String(":/installer"));
+ if (!s.d->m_data.contains(scInstallerApplicationIcon))
+ s.d->m_data.insert(scInstallerApplicationIcon, s.d->m_data.value(scIcon));
+ if (!s.d->m_data.contains(scInstallerWindowIcon))
+ s.d->m_data.insert(scInstallerWindowIcon, s.d->m_data.value(scIcon).toString() + s.systemIconSuffix());
if (!s.d->m_data.contains(scRemoveTargetDir))
s.d->m_data.insert(scRemoveTargetDir, scTrue);
if (!s.d->m_data.contains(scUninstallerName))
@@ -342,6 +305,11 @@ QString Settings::watermark() const
return d->makeAbsolutePath(d->m_data.value(scWatermark).toString());
}
+QString Settings::banner() const
+{
+ return d->makeAbsolutePath(d->m_data.value(scBanner).toString());
+}
+
QString Settings::background() const
{
return d->makeAbsolutePath(d->m_data.value(scBackground).toString());
@@ -349,15 +317,30 @@ QString Settings::background() const
QString Settings::icon() const
{
- const QString icon = d->makeAbsolutePath(d->m_data.value(scIcon).toString());
+ return d->makeAbsolutePath(d->m_data.value(scIcon).toString() + systemIconSuffix());
+}
+
+QString Settings::installerApplicationIcon() const
+{
+ return d->makeAbsolutePath(d->m_data.value(scInstallerApplicationIcon).toString() + systemIconSuffix());
+}
+
+QString Settings::installerWindowIcon() const
+{
+ return d->makeAbsolutePath(d->m_data.value(scInstallerWindowIcon).toString());
+}
+
+QString Settings::systemIconSuffix() const
+{
#if defined(Q_OS_MAC)
- return icon + QLatin1String(".icns");
+ return QLatin1String(".icns");
#elif defined(Q_OS_WIN)
- return icon + QLatin1String(".ico");
+ return QLatin1String(".ico");
#endif
- return icon + QLatin1String(".png");
+ return QLatin1String(".png");
}
+
QString Settings::removeTargetDir() const
{
return d->m_data.value(scRemoveTargetDir).toString();
@@ -378,6 +361,11 @@ QString Settings::runProgram() const
return d->m_data.value(scRunProgram).toString();
}
+QString Settings::runProgramArguments() const
+{
+ return d->m_data.value(scRunProgramArguments).toString();
+}
+
QString Settings::runProgramDescription() const
{
return d->m_data.value(scRunProgramDescription).toString();
@@ -546,24 +534,6 @@ QVariantList Settings::values(const QString &key, const QVariantList &defaultVal
return list.isEmpty() ? defaultValue : list;
}
-QVariantHash Settings::titlesForPage(const QString &pageName) const
-{
- const QVariantHash hash = d->m_data.value(pageName).toHash();
- const QVariant variant = hash.value(QLatin1String("Title"), QVariant());
- if (!variant.canConvert<QVariantHash>())
- return QVariantHash();
- return variant.value<QVariantHash>();
-}
-
-QVariantHash Settings::subTitlesForPage(const QString &pageName) const
-{
- const QVariantHash hash = d->m_data.value(pageName).toHash();
- const QVariant variant = hash.value(QLatin1String("SubTitle"), QVariant());
- if (!variant.canConvert<QVariantHash>())
- return QVariantHash();
- return variant.value<QVariantHash>();
-}
-
bool Settings::repositorySettingsPageVisible() const
{
return d->m_data.value(scRepositorySettingsPageVisible, true).toBool();