From 12b2a5fff0df1f20b117d3ad9ba4782ee944ccac Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Thu, 28 Apr 2011 15:11:42 +0200 Subject: [PATCH] Maemo: Harmattan application icons are now 80x80 pixels big. Task-number: https://projects.maemo.org/bugzilla/show_bug.cgi?id=250237 --- .../qtcreator/templates/shared/deployment.pri | 6 +- .../shared/{maemoicon.png => maemoicon64.png} | Bin .../templates/shared/maemoicon80.png | Bin 0 -> 4945 bytes .../qt-maemo/maemodeployablelistmodel.cpp | 17 ++-- .../qt-maemo/maemodeployablelistmodel.h | 3 +- .../maemodeployconfigurationwidget.cpp | 5 +- .../qt-maemo/maemoglobal.cpp | 5 + .../qt4projectmanager/qt-maemo/maemoglobal.h | 1 + .../wizards/abstractmobileapp.cpp | 39 ++++++-- .../wizards/abstractmobileapp.h | 18 ++-- .../wizards/abstractmobileappwizard.cpp | 91 ++++++++++++------ .../wizards/abstractmobileappwizard.h | 7 ++ .../mobileappwizardmaemooptionspage.ui | 2 +- .../wizards/mobileappwizardpages.cpp | 20 ++-- .../wizards/mobileappwizardpages.h | 3 +- tests/manual/appwizards/helpers.cpp | 6 +- 16 files changed, 154 insertions(+), 69 deletions(-) rename share/qtcreator/templates/shared/{maemoicon.png => maemoicon64.png} (100%) create mode 100644 share/qtcreator/templates/shared/maemoicon80.png diff --git a/share/qtcreator/templates/shared/deployment.pri b/share/qtcreator/templates/shared/deployment.pri index f147e99417c..51a39db035e 100644 --- a/share/qtcreator/templates/shared/deployment.pri +++ b/share/qtcreator/templates/shared/deployment.pri @@ -52,8 +52,12 @@ symbian { } else:unix { maemo5 { desktopfile.path = /usr/share/applications/hildon + icon.files = $${TARGET}64.png + icon.path = /usr/share/icons/hicolor/64x64/apps } else { desktopfile.path = /usr/share/applications + icon.files = $${TARGET}80.png + icon.path = /usr/share/icons/hicolor/80x80/apps copyCommand = for(deploymentfolder, DEPLOYMENTFOLDERS) { source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source) @@ -92,8 +96,6 @@ symbian { export($$itempath) INSTALLS += $$item } - icon.files = $${TARGET}.png - icon.path = /usr/share/icons/hicolor/64x64/apps desktopfile.files = $${TARGET}.desktop target.path = $${installPrefix}/bin export(icon.files) diff --git a/share/qtcreator/templates/shared/maemoicon.png b/share/qtcreator/templates/shared/maemoicon64.png similarity index 100% rename from share/qtcreator/templates/shared/maemoicon.png rename to share/qtcreator/templates/shared/maemoicon64.png diff --git a/share/qtcreator/templates/shared/maemoicon80.png b/share/qtcreator/templates/shared/maemoicon80.png new file mode 100644 index 0000000000000000000000000000000000000000..6ad8096c45a52356c197727402ef4fab769257b7 GIT binary patch literal 4945 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 O3=E#GelF{r5}E)$K6@$v literal 0 HcmV?d00001 diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemodeployablelistmodel.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemodeployablelistmodel.cpp index 1eafceacd2d..f3d6b3a4a4b 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemodeployablelistmodel.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemodeployablelistmodel.cpp @@ -52,9 +52,6 @@ namespace Qt4ProjectManager { namespace Internal { -namespace { -const QLatin1String RemoteIconPath("/usr/share/icons/hicolor/64x64/apps"); -} // anonymous namespace MaemoDeployableListModel::MaemoDeployableListModel(const Qt4ProFileNode *proFileNode, ProFileUpdateSetting updateSetting, QObject *parent) @@ -269,7 +266,7 @@ bool MaemoDeployableListModel::addIcon(const QString &fileName) return true; const QString filesLine = QLatin1String("icon.files = ") + fileName; - const QString pathLine = QLatin1String("icon.path = ") + RemoteIconPath; + const QString pathLine = QLatin1String("icon.path = ") + remoteIconDir(); const QLatin1String installsLine("INSTALLS += icon"); if (!addLinesToProFile(QStringList() << filesLine << pathLine << installsLine)) @@ -278,7 +275,7 @@ bool MaemoDeployableListModel::addIcon(const QString &fileName) beginInsertRows(QModelIndex(), rowCount(), rowCount()); const QString filePath = QFileInfo(m_proFilePath).path() + QLatin1Char('/') + fileName; - m_deployables << MaemoDeployable(filePath, RemoteIconPath); + m_deployables << MaemoDeployable(filePath, remoteIconDir()); endInsertRows(); return true; } @@ -291,7 +288,7 @@ QString MaemoDeployableListModel::remoteIconFilePath() const foreach (const MaemoDeployable &d, m_deployables) { const QByteArray extension = QFileInfo(d.localFilePath).suffix().toLocal8Bit(); - if (d.remoteDir.startsWith(RemoteIconPath) + if (d.remoteDir.startsWith(remoteIconDir()) && imageTypes.contains(extension)) return d.remoteDir + QLatin1Char('/') + QFileInfo(d.localFilePath).fileName(); @@ -339,5 +336,13 @@ QString MaemoDeployableListModel::installPrefix() const return QLatin1String("/opt/") + m_projectName; } +QString MaemoDeployableListModel::remoteIconDir() const +{ + const QtVersion *const qv = qtVersion(); + QTC_ASSERT(qv, return QString()); + return QString::fromLocal8Bit("/usr/share/icons/hicolor/%1x%1/apps") + .arg(MaemoGlobal::applicationIconSize(MaemoGlobal::version(qv))); +} + } // namespace Qt4ProjectManager } // namespace Internal diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemodeployablelistmodel.h b/src/plugins/qt4projectmanager/qt-maemo/maemodeployablelistmodel.h index cf9b07783a7..88b4ee2dbc0 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemodeployablelistmodel.h +++ b/src/plugins/qt4projectmanager/qt-maemo/maemodeployablelistmodel.h @@ -64,6 +64,7 @@ public: MaemoDeployable deployableAt(int row) const; bool isModified() const { return m_modified; } void setUnModified() { m_modified = false; } + const QtVersion *qtVersion() const; QString localExecutableFilePath() const; QString remoteExecutableFilePath() const; QString projectName() const { return m_projectName; } @@ -97,9 +98,9 @@ private: bool isEditable(const QModelIndex &index) const; bool buildModel(); bool addLinesToProFile(const QStringList &lines); - const QtVersion *qtVersion() const; QString proFileScope() const; QString installPrefix() const; + QString remoteIconDir() const; const Qt4ProjectType m_projectType; const QString m_proFilePath; diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemodeployconfigurationwidget.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemodeployconfigurationwidget.cpp index ff5af3dc4e0..c84ffe4c02c 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemodeployconfigurationwidget.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemodeployconfigurationwidget.cpp @@ -133,8 +133,9 @@ void MaemoDeployConfigurationWidget::addIcon() MaemoDeployableListModel *const model = m_deployConfig->deployables()->modelAt(modelRow); + const int iconDim = MaemoGlobal::applicationIconSize(MaemoGlobal::version(model->qtVersion())); const QString origFilePath = QFileDialog::getOpenFileName(this, - tr("Choose Icon (will be scaled to 64x64 pixels, if necessary)"), + tr("Choose Icon (will be scaled to %1x%1 pixels, if necessary)").arg(iconDim), model->projectDir(), QLatin1String("(*.png)")); if (origFilePath.isEmpty()) return; @@ -144,7 +145,7 @@ void MaemoDeployConfigurationWidget::addIcon() tr("Unable to read image")); return; } - const QSize iconSize(64, 64); + const QSize iconSize(iconDim, iconDim); if (pixmap.size() != iconSize) pixmap = pixmap.scaled(iconSize); const QString newFileName = model->projectName() + QLatin1Char('.') diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemoglobal.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemoglobal.cpp index c21c242f5e7..315083dcb05 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemoglobal.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemoglobal.cpp @@ -127,6 +127,11 @@ QString MaemoGlobal::devrootshPath() return QLatin1String("/usr/lib/mad-developer/devrootsh"); } +int MaemoGlobal::applicationIconSize(MaemoDeviceConfig::OsVersion osVersion) +{ + return osVersion == MaemoDeviceConfig::Maemo6 ? 80 : 64; +} + QString MaemoGlobal::remoteSudo(MaemoDeviceConfig::OsVersion osVersion, const QString &uname) { diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemoglobal.h b/src/plugins/qt4projectmanager/qt-maemo/maemoglobal.h index 65ee14a539a..9a6925e597e 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemoglobal.h +++ b/src/plugins/qt4projectmanager/qt-maemo/maemoglobal.h @@ -83,6 +83,7 @@ public: static QString homeDirOnDevice(const QString &uname); static QString devrootshPath(); + static int applicationIconSize(MaemoDeviceConfig::OsVersion osVersion); static QString remoteSudo(MaemoDeviceConfig::OsVersion, const QString &uname); static QString remoteCommandPrefix(MaemoDeviceConfig::OsVersion osVersion, diff --git a/src/plugins/qt4projectmanager/wizards/abstractmobileapp.cpp b/src/plugins/qt4projectmanager/wizards/abstractmobileapp.cpp index f308711afc6..b993bb13b35 100644 --- a/src/plugins/qt4projectmanager/wizards/abstractmobileapp.cpp +++ b/src/plugins/qt4projectmanager/wizards/abstractmobileapp.cpp @@ -115,14 +115,24 @@ QString AbstractMobileApp::symbianSvgIcon() const return path(SymbianSvgIconOrigin); } -void AbstractMobileApp::setMaemoPngIcon(const QString &icon) +void AbstractMobileApp::setMaemoPngIcon64(const QString &icon) { - m_maemoPngIcon = icon; + m_maemoPngIcon64 = icon; } -QString AbstractMobileApp::maemoPngIcon() const +QString AbstractMobileApp::maemoPngIcon64() const { - return path(MaemoPngIconOrigin); + return path(MaemoPngIconOrigin64); +} + +void AbstractMobileApp::setMaemoPngIcon80(const QString &icon) +{ + m_maemoPngIcon80 = icon; +} + +QString AbstractMobileApp::maemoPngIcon80() const +{ + return path(MaemoPngIconOrigin80); } void AbstractMobileApp::setSymbianTargetUid(const QString &uid) @@ -167,9 +177,12 @@ QString AbstractMobileApp::path(int fileType) const case SymbianSvgIcon: return outputPathBase() + cleanProjectName + QLatin1String(".svg"); case SymbianSvgIconOrigin: return !m_symbianSvgIcon.isEmpty() ? m_symbianSvgIcon : originsRootShared + symbianIconFileName; - case MaemoPngIcon: return outputPathBase() + cleanProjectName + QLatin1String(".png"); - case MaemoPngIconOrigin: return !m_maemoPngIcon.isEmpty() ? m_maemoPngIcon - : originsRootShared + QLatin1String("maemoicon.png"); + case MaemoPngIcon64: return outputPathBase() + cleanProjectName + QLatin1String("64.png"); + case MaemoPngIconOrigin64: return !m_maemoPngIcon64.isEmpty() ? m_maemoPngIcon64 + : originsRootShared + QLatin1String("maemoicon64.png"); + case MaemoPngIcon80: return outputPathBase() + cleanProjectName + QLatin1String("80.png"); + case MaemoPngIconOrigin80: return !m_maemoPngIcon80.isEmpty() ? m_maemoPngIcon80 + : originsRootShared + QLatin1String("maemoicon80.png"); default: return pathExtended(fileType); } return QString(); @@ -189,6 +202,8 @@ QByteArray AbstractMobileApp::generateDesktopFile(QString *errorMessage) const QByteArray desktopFileContent; if (!readTemplate(DesktopOrigin, &desktopFileContent, errorMessage)) return QByteArray(); + desktopFileContent.replace("Icon=thisApp", + "Icon=" + projectName().toUtf8() + "64"); return desktopFileContent.replace("thisApp", projectName().toUtf8()); } @@ -378,7 +393,8 @@ Core::GeneratedFiles AbstractMobileApp::generateFiles(QString *errorMessage) con files.last().setAttributes(Core::GeneratedFile::OpenProjectAttribute); files << file(generateFile(AbstractGeneratedFileInfo::MainCppFile, errorMessage), path(MainCpp)); files << file(generateFile(AbstractGeneratedFileInfo::SymbianSvgIconFile, errorMessage), path(SymbianSvgIcon)); - files << file(generateFile(AbstractGeneratedFileInfo::MaemoPngIconFile, errorMessage), path(MaemoPngIcon)); + files << file(generateFile(AbstractGeneratedFileInfo::MaemoPngIconFile64, errorMessage), path(MaemoPngIcon64)); + files << file(generateFile(AbstractGeneratedFileInfo::MaemoPngIconFile80, errorMessage), path(MaemoPngIcon80)); files << file(generateFile(AbstractGeneratedFileInfo::DesktopFile, errorMessage), path(Desktop)); return files; } @@ -415,8 +431,11 @@ QByteArray AbstractMobileApp::generateFile(int fileType, case AbstractGeneratedFileInfo::SymbianSvgIconFile: data = readBlob(path(SymbianSvgIconOrigin), errorMessage); break; - case AbstractGeneratedFileInfo::MaemoPngIconFile: - data = readBlob(path(MaemoPngIconOrigin), errorMessage); + case AbstractGeneratedFileInfo::MaemoPngIconFile64: + data = readBlob(path(MaemoPngIconOrigin64), errorMessage); + break; + case AbstractGeneratedFileInfo::MaemoPngIconFile80: + data = readBlob(path(MaemoPngIconOrigin80), errorMessage); break; case AbstractGeneratedFileInfo::DesktopFile: data = generateDesktopFile(errorMessage); diff --git a/src/plugins/qt4projectmanager/wizards/abstractmobileapp.h b/src/plugins/qt4projectmanager/wizards/abstractmobileapp.h index 9c5824e6570..f3264f54ed8 100644 --- a/src/plugins/qt4projectmanager/wizards/abstractmobileapp.h +++ b/src/plugins/qt4projectmanager/wizards/abstractmobileapp.h @@ -57,7 +57,8 @@ struct AppProFile, DeploymentPriFile, SymbianSvgIconFile, - MaemoPngIconFile, + MaemoPngIconFile64, + MaemoPngIconFile80, DesktopFile, ExtendedFile }; @@ -102,8 +103,10 @@ public: DeploymentPriOrigin, SymbianSvgIcon, SymbianSvgIconOrigin, - MaemoPngIcon, - MaemoPngIconOrigin, + MaemoPngIcon64, + MaemoPngIconOrigin64, + MaemoPngIcon80, + MaemoPngIconOrigin80, ExtendedFile }; @@ -116,8 +119,10 @@ public: void setProjectPath(const QString &path); void setSymbianSvgIcon(const QString &icon); QString symbianSvgIcon() const; - void setMaemoPngIcon(const QString &icon); - QString maemoPngIcon() const; + void setMaemoPngIcon64(const QString &icon); + QString maemoPngIcon64() const; + void setMaemoPngIcon80(const QString &icon); + QString maemoPngIcon80() const; void setSymbianTargetUid(const QString &uid); QString symbianTargetUid() const; void setNetworkEnabled(bool enabled); @@ -181,7 +186,8 @@ private: QString m_projectName; QFileInfo m_projectPath; QString m_symbianSvgIcon; - QString m_maemoPngIcon; + QString m_maemoPngIcon64; + QString m_maemoPngIcon80; QString m_symbianTargetUid; ScreenOrientation m_orientation; bool m_networkEnabled; diff --git a/src/plugins/qt4projectmanager/wizards/abstractmobileappwizard.cpp b/src/plugins/qt4projectmanager/wizards/abstractmobileappwizard.cpp index ee4584ab96f..45ad70691e4 100644 --- a/src/plugins/qt4projectmanager/wizards/abstractmobileappwizard.cpp +++ b/src/plugins/qt4projectmanager/wizards/abstractmobileappwizard.cpp @@ -63,14 +63,18 @@ AbstractMobileAppWizardDialog::AbstractMobileAppWizardDialog(QWidget *parent, co m_symbianOptionsPage = new Internal::MobileAppWizardSymbianOptionsPage; m_symbianOptionsPageId = addPageWithTitle(m_symbianOptionsPage, QLatin1String(" ") + tr("Symbian Specific")); - m_maemoOptionsPage = new Internal::MobileAppWizardMaemoOptionsPage; + m_maemoOptionsPage = new Internal::MobileAppWizardMaemoOptionsPage(64); m_maemoOptionsPageId = addPageWithTitle(m_maemoOptionsPage, - QLatin1String(" ") + tr("Maemo Specific")); + QLatin1String(" ") + tr("Maemo5 And Meego Specific")); + m_harmattanOptionsPage = new Internal::MobileAppWizardMaemoOptionsPage(80); + m_harmattanOptionsPageId = addPageWithTitle(m_harmattanOptionsPage, + QLatin1String(" ") + tr("Harmattan Specific")); m_targetItem = wizardProgress()->item(m_targetsPageId); m_genericItem = wizardProgress()->item(m_genericOptionsPageId); m_symbianItem = wizardProgress()->item(m_symbianOptionsPageId); m_maemoItem = wizardProgress()->item(m_maemoOptionsPageId); + m_harmattanItem = wizardProgress()->item(m_harmattanOptionsPageId); m_targetItem->setNextShownItem(0); m_genericItem->setNextShownItem(0); @@ -91,30 +95,32 @@ int AbstractMobileAppWizardDialog::addPageWithTitle(QWizardPage *page, const QSt int AbstractMobileAppWizardDialog::nextId() const { - const bool symbianTargetSelected = - m_targetsPage->isTargetSelected(QLatin1String(Constants::S60_EMULATOR_TARGET_ID)) - || m_targetsPage->isTargetSelected(QLatin1String(Constants::S60_DEVICE_TARGET_ID)); - const bool fremantleTargetSelected - = m_targetsPage->isTargetSelected(QLatin1String(Constants::MAEMO5_DEVICE_TARGET_ID)); - const bool maemoTargetSelected = fremantleTargetSelected - || m_targetsPage->isTargetSelected(QLatin1String(Constants::HARMATTAN_DEVICE_TARGET_ID)) - || m_targetsPage->isTargetSelected(QLatin1String(Constants::MEEGO_DEVICE_TARGET_ID)); - if (currentPage() == m_targetsPage) { - if (symbianTargetSelected || fremantleTargetSelected) + if (isSymbianTargetSelected() || isFremantleTargetSelected()) return m_genericOptionsPageId; - else if (maemoTargetSelected) + else if (isMeegoTargetSelected()) return m_maemoOptionsPageId; + else if (isHarmattanTargetSelected()) + return m_harmattanOptionsPageId; else return idOfNextGenericPage(); } else if (currentPage() == m_genericOptionsPage) { - if (symbianTargetSelected) + if (isSymbianTargetSelected()) return m_symbianOptionsPageId; + else if (isFremantleTargetSelected() || isMeegoTargetSelected()) + return m_maemoOptionsPageId; else - return m_maemoOptionsPageId; + return m_harmattanOptionsPageId; } else if (currentPage() == m_symbianOptionsPage) { - if (maemoTargetSelected) + if (isFremantleTargetSelected() || isMeegoTargetSelected()) return m_maemoOptionsPageId; + else if (isHarmattanTargetSelected()) + return m_harmattanOptionsPageId; + else + return idOfNextGenericPage(); + } else if (currentPage() == m_maemoOptionsPage) { + if (isHarmattanTargetSelected()) + return m_harmattanOptionsPageId; else return idOfNextGenericPage(); } else { @@ -125,24 +131,21 @@ int AbstractMobileAppWizardDialog::nextId() const void AbstractMobileAppWizardDialog::initializePage(int id) { if (id == startId()) { - m_targetItem->setNextItems(QList() << m_genericItem << m_maemoItem << itemOfNextGenericPage()); - m_genericItem->setNextItems(QList() << m_symbianItem << m_maemoItem); - m_symbianItem->setNextItems(QList() << m_maemoItem << itemOfNextGenericPage()); + m_targetItem->setNextItems(QList() + << m_genericItem << m_maemoItem << m_harmattanItem << itemOfNextGenericPage()); + m_genericItem->setNextItems(QList() + << m_symbianItem << m_maemoItem); + m_symbianItem->setNextItems(QList() + << m_maemoItem << m_harmattanItem << itemOfNextGenericPage()); } else if (id == m_genericOptionsPageId) { - const bool symbianTargetSelected = - m_targetsPage->isTargetSelected(QLatin1String(Constants::S60_EMULATOR_TARGET_ID)) - || m_targetsPage->isTargetSelected(QLatin1String(Constants::S60_DEVICE_TARGET_ID)); - const bool maemoTargetSelected = - m_targetsPage->isTargetSelected(QLatin1String(Constants::MAEMO5_DEVICE_TARGET_ID)) - || m_targetsPage->isTargetSelected(QLatin1String(Constants::HARMATTAN_DEVICE_TARGET_ID)) - || m_targetsPage->isTargetSelected(QLatin1String(Constants::MEEGO_DEVICE_TARGET_ID)); - QList order; order << m_genericItem; - if (symbianTargetSelected) + if (isSymbianTargetSelected()) order << m_symbianItem; - if (maemoTargetSelected) + if (isFremantleTargetSelected() || isMeegoTargetSelected()) order << m_maemoItem; + if (isHarmattanTargetSelected()) + order << m_harmattanItem; order << itemOfNextGenericPage(); for (int i = 0; i < order.count() - 1; i++) @@ -162,7 +165,7 @@ void AbstractMobileAppWizardDialog::cleanupPage(int id) int AbstractMobileAppWizardDialog::idOfNextGenericPage() const { - return pageIds().at(pageIds().indexOf(m_maemoOptionsPageId) + 1); + return pageIds().at(pageIds().indexOf(m_harmattanOptionsPageId) + 1); } Utils::WizardProgressItem *AbstractMobileAppWizardDialog::itemOfNextGenericPage() const @@ -170,6 +173,28 @@ Utils::WizardProgressItem *AbstractMobileAppWizardDialog::itemOfNextGenericPage( return wizardProgress()->item(idOfNextGenericPage()); } +bool AbstractMobileAppWizardDialog::isSymbianTargetSelected() const +{ + return m_targetsPage->isTargetSelected(QLatin1String(Constants::S60_EMULATOR_TARGET_ID)) + || m_targetsPage->isTargetSelected(QLatin1String(Constants::S60_DEVICE_TARGET_ID)); +} + +bool AbstractMobileAppWizardDialog::isFremantleTargetSelected() const +{ + return m_targetsPage->isTargetSelected(QLatin1String(Constants::MAEMO5_DEVICE_TARGET_ID)); +} + +bool AbstractMobileAppWizardDialog::isHarmattanTargetSelected() const +{ + return m_targetsPage->isTargetSelected(QLatin1String(Constants::HARMATTAN_DEVICE_TARGET_ID)); +} + +bool AbstractMobileAppWizardDialog::isMeegoTargetSelected() const +{ + return m_targetsPage->isTargetSelected(QLatin1String(Constants::MEEGO_DEVICE_TARGET_ID)); +} + + AbstractMobileAppWizard::AbstractMobileAppWizard(const Core::BaseFileWizardParameters ¶ms, QObject *parent) : Core::BaseFileWizard(params, parent) { @@ -185,7 +210,8 @@ QWizard *AbstractMobileAppWizard::createWizardDialog(QWidget *parent, wdlg->m_genericOptionsPage->setOrientation(app()->orientation()); wdlg->m_symbianOptionsPage->setSvgIcon(app()->symbianSvgIcon()); wdlg->m_symbianOptionsPage->setNetworkEnabled(app()->networkEnabled()); - wdlg->m_maemoOptionsPage->setPngIcon(app()->maemoPngIcon()); + wdlg->m_maemoOptionsPage->setPngIcon(app()->maemoPngIcon64()); + wdlg->m_harmattanOptionsPage->setPngIcon(app()->maemoPngIcon80()); connect(wdlg, SIGNAL(projectParametersChanged(QString, QString)), SLOT(useProjectPath(QString, QString))); foreach (QWizardPage *p, extensionPages) @@ -203,7 +229,8 @@ Core::GeneratedFiles AbstractMobileAppWizard::generateFiles(const QWizard *wizar app()->setSymbianTargetUid(wdlg->m_symbianOptionsPage->symbianUid()); app()->setSymbianSvgIcon(wdlg->m_symbianOptionsPage->svgIcon()); app()->setNetworkEnabled(wdlg->m_symbianOptionsPage->networkEnabled()); - app()->setMaemoPngIcon(wdlg->m_maemoOptionsPage->pngIcon()); + app()->setMaemoPngIcon64(wdlg->m_maemoOptionsPage->pngIcon()); + app()->setMaemoPngIcon80(wdlg->m_harmattanOptionsPage->pngIcon()); return app()->generateFiles(errorMessage); } diff --git a/src/plugins/qt4projectmanager/wizards/abstractmobileappwizard.h b/src/plugins/qt4projectmanager/wizards/abstractmobileappwizard.h index 276f05a3fe0..7e75a3e1d69 100644 --- a/src/plugins/qt4projectmanager/wizards/abstractmobileappwizard.h +++ b/src/plugins/qt4projectmanager/wizards/abstractmobileappwizard.h @@ -71,20 +71,27 @@ private: int idOfNextGenericPage() const; Utils::WizardProgressItem *itemOfNextGenericPage() const; + bool isSymbianTargetSelected() const; + bool isFremantleTargetSelected() const; + bool isHarmattanTargetSelected() const; + bool isMeegoTargetSelected() const; Internal::MobileAppWizardGenericOptionsPage *m_genericOptionsPage; Internal::MobileAppWizardSymbianOptionsPage *m_symbianOptionsPage; Internal::MobileAppWizardMaemoOptionsPage *m_maemoOptionsPage; + Internal::MobileAppWizardMaemoOptionsPage *m_harmattanOptionsPage; TargetSetupPage *m_targetsPage; int m_genericOptionsPageId; int m_symbianOptionsPageId; int m_maemoOptionsPageId; + int m_harmattanOptionsPageId; int m_targetsPageId; Utils::WizardProgressItem *m_targetItem; Utils::WizardProgressItem *m_genericItem; Utils::WizardProgressItem *m_symbianItem; Utils::WizardProgressItem *m_maemoItem; + Utils::WizardProgressItem *m_harmattanItem; friend class AbstractMobileAppWizard; }; diff --git a/src/plugins/qt4projectmanager/wizards/mobileappwizardmaemooptionspage.ui b/src/plugins/qt4projectmanager/wizards/mobileappwizardmaemooptionspage.ui index 20f1f979d21..c21869d7cc6 100644 --- a/src/plugins/qt4projectmanager/wizards/mobileappwizardmaemooptionspage.ui +++ b/src/plugins/qt4projectmanager/wizards/mobileappwizardmaemooptionspage.ui @@ -17,7 +17,7 @@ - Application icon (64x64): + Application icon (%%w%%x%%h%%): diff --git a/src/plugins/qt4projectmanager/wizards/mobileappwizardpages.cpp b/src/plugins/qt4projectmanager/wizards/mobileappwizardpages.cpp index cfe53d100c5..285d0610c3b 100644 --- a/src/plugins/qt4projectmanager/wizards/mobileappwizardpages.cpp +++ b/src/plugins/qt4projectmanager/wizards/mobileappwizardpages.cpp @@ -62,6 +62,7 @@ class MobileAppWizardSymbianOptionsPagePrivate class MobileAppWizardMaemoOptionsPagePrivate { Ui::MobileAppWizardMaemoOptionsPage ui; + QSize iconSize; QString pngIcon; friend class MobileAppWizardMaemoOptionsPage; }; @@ -166,11 +167,18 @@ void MobileAppWizardSymbianOptionsPage::openSvgIcon() } -MobileAppWizardMaemoOptionsPage::MobileAppWizardMaemoOptionsPage(QWidget *parent) +MobileAppWizardMaemoOptionsPage::MobileAppWizardMaemoOptionsPage(int appIconSize, + QWidget *parent) : QWizardPage(parent) , m_d(new MobileAppWizardMaemoOptionsPagePrivate) { m_d->ui.setupUi(this); + QString iconLabelText = m_d->ui.appIconLabel->text(); + iconLabelText.replace(QLatin1String("%%w%%"), QString::number(appIconSize)); + iconLabelText.replace(QLatin1String("%%h%%"), QString::number(appIconSize)); + m_d->ui.appIconLabel->setText(iconLabelText); + m_d->iconSize = QSize(appIconSize, appIconSize); + m_d->ui.pngIconButton->setIconSize(m_d->iconSize); connect(m_d->ui.pngIconButton, SIGNAL(clicked()), this, SLOT(openPngIcon())); } @@ -194,18 +202,18 @@ void MobileAppWizardMaemoOptionsPage::setPngIcon(const QString &icon) return; } - const QSize iconSize(64, 64); QString actualIconPath; - if (iconPixmap.size() == iconSize) { + if (iconPixmap.size() == m_d->iconSize) { actualIconPath = icon; } else { const QMessageBox::StandardButton button = QMessageBox::warning(this, - tr("Wrong Icon Size"), tr("The icon needs to be 64x64 pixels big, " - "but is not. Do you want Creator to scale it?"), + tr("Wrong Icon Size"), tr("The icon needs to be %1x%2 pixels big, " + "but is not. Do you want Creator to scale it?") + .arg(m_d->iconSize.width()).arg(m_d->iconSize.height()), QMessageBox::Ok | QMessageBox::Cancel); if (button != QMessageBox::Ok) return; - iconPixmap = iconPixmap.scaled(iconSize); + iconPixmap = iconPixmap.scaled(m_d->iconSize); Utils::TempFileSaver saver; saver.setAutoRemove(false); if (!saver.hasError()) diff --git a/src/plugins/qt4projectmanager/wizards/mobileappwizardpages.h b/src/plugins/qt4projectmanager/wizards/mobileappwizardpages.h index 1b75f14247e..3ff8dbf4591 100644 --- a/src/plugins/qt4projectmanager/wizards/mobileappwizardpages.h +++ b/src/plugins/qt4projectmanager/wizards/mobileappwizardpages.h @@ -85,7 +85,8 @@ class MobileAppWizardMaemoOptionsPage : public QWizardPage Q_DISABLE_COPY(MobileAppWizardMaemoOptionsPage) public: - explicit MobileAppWizardMaemoOptionsPage(QWidget *parent = 0); + explicit MobileAppWizardMaemoOptionsPage(int appIconSize, + QWidget *parent = 0); virtual ~MobileAppWizardMaemoOptionsPage(); QString pngIcon() const; diff --git a/tests/manual/appwizards/helpers.cpp b/tests/manual/appwizards/helpers.cpp index f7442f8c917..826e5476877 100644 --- a/tests/manual/appwizards/helpers.cpp +++ b/tests/manual/appwizards/helpers.cpp @@ -56,7 +56,8 @@ bool QtQuickApp::generateFiles(QString *errorMessage) const && writeFile(generateFile(QtQuickAppGeneratedFileInfo::AppViewerCppFile, errorMessage), path(AppViewerCpp)) && writeFile(generateFile(QtQuickAppGeneratedFileInfo::AppViewerHFile, errorMessage), path(AppViewerH)) && writeFile(generateFile(QtQuickAppGeneratedFileInfo::SymbianSvgIconFile, errorMessage), path(SymbianSvgIcon)) - && writeFile(generateFile(QtQuickAppGeneratedFileInfo::MaemoPngIconFile, errorMessage), path(MaemoPngIcon)) + && writeFile(generateFile(QtQuickAppGeneratedFileInfo::MaemoPngIconFile64, errorMessage), path(MaemoPngIcon64)) + && writeFile(generateFile(QtQuickAppGeneratedFileInfo::MaemoPngIconFile80, errorMessage), path(MaemoPngIcon80)) && writeFile(generateFile(QtQuickAppGeneratedFileInfo::DesktopFile, errorMessage), path(Desktop)); } @@ -69,7 +70,8 @@ bool Html5App::generateFiles(QString *errorMessage) const && writeFile(generateFile(Html5AppGeneratedFileInfo::AppViewerCppFile, errorMessage), path(AppViewerCpp)) && writeFile(generateFile(Html5AppGeneratedFileInfo::AppViewerHFile, errorMessage), path(AppViewerH)) && writeFile(generateFile(Html5AppGeneratedFileInfo::SymbianSvgIconFile, errorMessage), path(SymbianSvgIcon)) - && writeFile(generateFile(Html5AppGeneratedFileInfo::MaemoPngIconFile, errorMessage), path(MaemoPngIcon)) + && writeFile(generateFile(Html5AppGeneratedFileInfo::MaemoPngIconFile64, errorMessage), path(MaemoPngIcon64)) + && writeFile(generateFile(Html5AppGeneratedFileInfo::MaemoPngIconFile80, errorMessage), path(MaemoPngIcon80)) && writeFile(generateFile(Html5AppGeneratedFileInfo::DesktopFile, errorMessage), path(Desktop)); }