diff --git a/share/qtcreator/templates/shared/deployment.pri b/share/qtcreator/templates/shared/deployment.pri
index f147e99417c9ed5f88bda80970e93c2f63a0fdae..51a39db035e0e16b8273bf4e181e765202647265 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
Binary files /dev/null and b/share/qtcreator/templates/shared/maemoicon80.png differ
diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemodeployablelistmodel.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemodeployablelistmodel.cpp
index 1eafceacd2d3415abf2242f015aa251528825145..f3d6b3a4a4b329f951d5527e5f41739c037378d0 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 cf9b07783a717c1264ae04806efb1e1c63f012e4..88b4ee2dbc0508288c117364e9a3c209da834792 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 ff5af3dc4e0c5142b67f5a85ede1e9fb757c7c60..c84ffe4c02ceed66f3224b80415534a00ab62633 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 c21c242f5e7830ee0346b2a5cbfb42d1e76777b2..315083dcb05c95f3e0de6e0cc660fe65a944eff8 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 65ee14a539a006898db7a024776c0b83407ab67b..9a6925e597ef5fc006425bbc781684e33a9c91cc 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 f308711afc645dc1c11afd4f3868d276269f8f8b..b993bb13b3503a789d843439b057ff6427d1d924 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 9c5824e65701f190a36ad1cc321583f70a2a3ab0..f3264f54ed83b8e31dbe10a43163fbaf82d3c73d 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 ee4584ab96ff0b06d26b1ca15fe086e1776a73b4..45ad70691e449d7e922f852db267e8173f0cdbd7 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
+        else if (isFremantleTargetSelected() || isMeegoTargetSelected())
             return m_maemoOptionsPageId;
+        else
+            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<Utils::WizardProgressItem *>() << m_genericItem << m_maemoItem << itemOfNextGenericPage());
-        m_genericItem->setNextItems(QList<Utils::WizardProgressItem *>() << m_symbianItem << m_maemoItem);
-        m_symbianItem->setNextItems(QList<Utils::WizardProgressItem *>() << m_maemoItem << itemOfNextGenericPage());
+        m_targetItem->setNextItems(QList<Utils::WizardProgressItem *>()
+            << m_genericItem << m_maemoItem << m_harmattanItem << itemOfNextGenericPage());
+        m_genericItem->setNextItems(QList<Utils::WizardProgressItem *>()
+            << m_symbianItem << m_maemoItem);
+        m_symbianItem->setNextItems(QList<Utils::WizardProgressItem *>()
+            << 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<Utils::WizardProgressItem *> 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 &params,
     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 276f05a3fe0c06dff7ed6b9ff38608681baa543c..7e75a3e1d69cc9d6a8cc93892229293642e40853 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 20f1f979d215ace0f5416f8615cd46b031d6489b..c21869d7cc605d298c6659ec98403afe4a0bbd82 100644
--- a/src/plugins/qt4projectmanager/wizards/mobileappwizardmaemooptionspage.ui
+++ b/src/plugins/qt4projectmanager/wizards/mobileappwizardmaemooptionspage.ui
@@ -17,7 +17,7 @@
    <item row="0" column="0">
     <widget class="QLabel" name="appIconLabel">
      <property name="text">
-      <string>Application icon (64x64):</string>
+      <string>Application icon (%%w%%x%%h%%):</string>
      </property>
     </widget>
    </item>
diff --git a/src/plugins/qt4projectmanager/wizards/mobileappwizardpages.cpp b/src/plugins/qt4projectmanager/wizards/mobileappwizardpages.cpp
index cfe53d100c5455e9ede8b0db99ed4d981b8a176c..285d0610c3b9d0a93fcc4004b97da9cf8b14cc1d 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 1b75f14247e6c455f1a0a053ff242e2908f28541..3ff8dbf459100638afe8b5e7dfe7ff8d3c0e7fb9 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 f7442f8c9175d2b556788bd944204ceb52dbb989..826e54768779fb51897c0e2b2d85e9ffcaafcd71 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));
 }