summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNiels Weber <niels.weber@digia.com>2013-03-19 14:41:17 +0100
committerNiels Weber <niels.weber@digia.com>2013-03-21 13:32:31 +0100
commit44fc5acd5c44da29306558ef5a081afb0ea92304 (patch)
tree40a24e8fad5bcc3ed8968f214263de1bb8947673
parent5eaf779bfa35eb9dd825a802550263af666d58e9 (diff)
Deprecate Icon, introduce replacements.
InstallerApplicationIcon is used on Mac and Windows for a custom icon of the installer. InstallerWindowIcon is used to set the window icon of the installer on all platforms. Change-Id: I1f555441875b96e4d8e4ca9a808cf18b3a566c3c Reviewed-by: Karsten Heimrich <karsten.heimrich@digia.com>
-rw-r--r--doc/installerfw.qdoc10
-rw-r--r--src/libs/installer/packagemanagergui.cpp2
-rw-r--r--src/libs/installer/settings.cpp35
-rw-r--r--src/libs/installer/settings.h3
-rw-r--r--tests/auto/installer/settings/data/full_config.xml2
-rw-r--r--tests/auto/installer/settings/tst_settings.cpp7
-rw-r--r--tools/binarycreator/binarycreator.cpp17
7 files changed, 65 insertions, 11 deletions
diff --git a/doc/installerfw.qdoc b/doc/installerfw.qdoc
index 19253c2df..f47eb4b6c 100644
--- a/doc/installerfw.qdoc
+++ b/doc/installerfw.qdoc
@@ -182,7 +182,15 @@
\row
\o Icon
\o Filename for a custom installer icon. The actual file is looked up by attaching
- a '.icns' (Mac OS X), '.ico' (Windows) or '.png' (Unix) suffix.
+ a '.icns' (Mac OS X), '.ico' (Windows) or '.png' (Unix) suffix. Deprecated,
+ use InstallerApplicationIcon and / or InstallerWindowIcon instead.
+ \row
+ \o InstallerApplicationIcon
+ \o Filename for a custom installer icon. The actual file is looked up by attaching
+ a '.icns' (Mac OS X), '.ico' (Windows). No functionality on Unix.
+ \row
+ \o InstallerWindowIcon
+ \o Filename for a custom window icon in PNG format for the Installer application.
\row
\o Logo
\o Filename for a logo used as \a QWizard::LogoPixmap.
diff --git a/src/libs/installer/packagemanagergui.cpp b/src/libs/installer/packagemanagergui.cpp
index d0d67aa7a..49bf546e5 100644
--- a/src/libs/installer/packagemanagergui.cpp
+++ b/src/libs/installer/packagemanagergui.cpp
@@ -243,7 +243,7 @@ PackageManagerGui::PackageManagerGui(PackageManagerCore *core, QWidget *parent)
setWindowTitle(tr("Maintain %1").arg(m_core->value(scTitle)));
#ifndef Q_OS_MAC
- setWindowIcon(QIcon(m_core->settings().icon()));
+ setWindowIcon(QIcon(m_core->settings().installerWindowIcon()));
#else
setPixmap(QWizard::BackgroundPixmap, m_core->settings().background());
#endif
diff --git a/src/libs/installer/settings.cpp b/src/libs/installer/settings.cpp
index b019b12ba..f08989ff7 100644
--- a/src/libs/installer/settings.cpp
+++ b/src/libs/installer/settings.cpp
@@ -51,6 +51,8 @@
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");
@@ -214,7 +216,8 @@ 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 << scBackground
<< scStartMenuDir << scUninstallerName << scUninstallerIniFile << scRemoveTargetDir
<< scRunProgram << scRunProgramArguments << scRunProgramDescription
<< scDependsOnLocalInstallerBinary
@@ -236,6 +239,9 @@ Settings Settings::fromFileAndPrefix(const QString &path, const QString &prefix)
if (!reader.attributes().isEmpty())
reader.raiseError(QString::fromLatin1("Unexpected attribute for element '%1'.").arg(name));
+ if (name == scIcon)
+ qWarning() << "Deprecated element 'Icon'.";
+
if (blackList.contains(name)) {
if (name == scRemoteRepositories)
s.addDefaultRepositories(readRepositories(reader, true));
@@ -267,6 +273,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))
@@ -325,15 +335,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();
diff --git a/src/libs/installer/settings.h b/src/libs/installer/settings.h
index 35a61a841..a6893d973 100644
--- a/src/libs/installer/settings.h
+++ b/src/libs/installer/settings.h
@@ -89,6 +89,9 @@ public:
QString watermark() const;
QString background() const;
QString icon() const;
+ QString installerApplicationIcon() const;
+ QString installerWindowIcon() const;
+ QString systemIconSuffix() const;
QString applicationName() const;
QString applicationVersion() const;
diff --git a/tests/auto/installer/settings/data/full_config.xml b/tests/auto/installer/settings/data/full_config.xml
index b66764a6e..899cb4b7c 100644
--- a/tests/auto/installer/settings/data/full_config.xml
+++ b/tests/auto/installer/settings/data/full_config.xml
@@ -15,6 +15,8 @@ File should contain all elements we allow in a config.xml
<AdminTargetDir>@rootDir@InstallationDirectory</AdminTargetDir>
<Icon>icon</Icon>
+ <InstallerApplicationIcon>icon</InstallerApplicationIcon>
+ <InstallerWindowIcon>icon</InstallerWindowIcon>
<Logo>logo</Logo>
<Watermark>watermark</Watermark>
<Background>background</Background>
diff --git a/tests/auto/installer/settings/tst_settings.cpp b/tests/auto/installer/settings/tst_settings.cpp
index a4239c1dc..0accbc4e8 100644
--- a/tests/auto/installer/settings/tst_settings.cpp
+++ b/tests/auto/installer/settings/tst_settings.cpp
@@ -40,10 +40,16 @@ void tst_Settings::loadTutorialConfig()
QCOMPARE(settings.background(), QLatin1String(":///data/"));
#if defined(Q_OS_WIN)
QCOMPARE(settings.icon(), QLatin1String(":/installer.ico"));
+ QCOMPARE(settings.installerApplicationIcon(), QLatin1String(":/installer.ico"));
+ QCOMPARE(settings.installerWindowIcon(), QLatin1String(":/installer.ico"));
#elif defined(Q_OS_MAC)
QCOMPARE(settings.icon(), QLatin1String(":/installer.icns"));
+ QCOMPARE(settings.installerApplicationIcon(), QLatin1String(":/installer.icns"));
+ QCOMPARE(settings.installerWindowIcon(), QLatin1String(":/installer.icns"));
#else
QCOMPARE(settings.icon(), QLatin1String(":/installer.png"));
+ QCOMPARE(settings.installerApplicationIcon(), QLatin1String(":/installer.png"));
+ QCOMPARE(settings.installerWindowIcon(), QLatin1String(":/installer.png"));
#endif
QCOMPARE(settings.runProgram(), QString());
QCOMPARE(settings.runProgramArguments(), QString());
@@ -73,6 +79,7 @@ void tst_Settings::loadTutorialConfig()
void tst_Settings::loadFullConfig()
{
QTest::ignoreMessage(QtWarningMsg, "Deprecated element 'Pages'. ");
+ QTest::ignoreMessage(QtWarningMsg, "Deprecated element 'Icon'. ");
Settings settings =
Settings::fromFileAndPrefix(":///data/full_config.xml", ":///data");
}
diff --git a/tools/binarycreator/binarycreator.cpp b/tools/binarycreator/binarycreator.cpp
index a6a38a9da..433b9832c 100644
--- a/tools/binarycreator/binarycreator.cpp
+++ b/tools/binarycreator/binarycreator.cpp
@@ -154,8 +154,13 @@ Q_UNUSED(settings)
pkgInfoStream << QLatin1String("APPL????") << endl;
}
- const QString iconFile = QFile::exists(settings.icon()) ? settings.icon()
- : QString::fromLatin1(":/resources/default_icon_mac.icns");
+ if (QFile::exists(settings.installerApplicationIcon())) {
+ const QString iconFile = settings.installerApplicationIcon();
+ } else {
+ const QString iconFile = QFile::exists(settings.icon()) ? settings.icon()
+ : QString::fromLatin1(":/resources/default_icon_mac.icns");
+ }
+
const QString iconTargetFile = fi.completeBaseName() + QLatin1String(".icns");
QFile::copy(iconFile, fi.filePath() + QLatin1String("/Contents/Resources/") + iconTargetFile);
@@ -218,9 +223,13 @@ Q_UNUSED(settings)
#if defined(Q_OS_WIN)
// setting the windows icon must happen before we append our binary data - otherwise they get lost :-/
- if (QFile::exists(settings.icon())) {
+ if (QFile::exists(settings.installerApplicationIcon())) {
// no error handling as this is not fatal
- setApplicationIcon(tempFile, settings.icon());
+ setApplicationIcon(tempFile, settings.installerApplicationIcon());
+ } else {
+ if (QFile::exists(settings.icon())) {
+ setApplicationIcon(tempFile, settings.icon());
+ }
}
#elif defined(Q_OS_MAC)
if (isBundle) {