diff options
author | Niels Weber <niels.weber@digia.com> | 2013-03-19 14:41:17 +0100 |
---|---|---|
committer | Niels Weber <niels.weber@digia.com> | 2013-03-21 13:32:31 +0100 |
commit | 44fc5acd5c44da29306558ef5a081afb0ea92304 (patch) | |
tree | 40a24e8fad5bcc3ed8968f214263de1bb8947673 | |
parent | 5eaf779bfa35eb9dd825a802550263af666d58e9 (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.qdoc | 10 | ||||
-rw-r--r-- | src/libs/installer/packagemanagergui.cpp | 2 | ||||
-rw-r--r-- | src/libs/installer/settings.cpp | 35 | ||||
-rw-r--r-- | src/libs/installer/settings.h | 3 | ||||
-rw-r--r-- | tests/auto/installer/settings/data/full_config.xml | 2 | ||||
-rw-r--r-- | tests/auto/installer/settings/tst_settings.cpp | 7 | ||||
-rw-r--r-- | tools/binarycreator/binarycreator.cpp | 17 |
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) { |