201027
authorhgs
Fri, 09 Jul 2010 14:36:01 +0300
changeset 63 52b0f64eeb51
parent 62 341166945d65
child 67 474929a40a0f
201027
homescreenapp/common.pri
homescreenapp/examples/batterywidgetplugin/sis/batterywidgetplugin.bat
homescreenapp/examples/minibrowserwidgetplugin/inc/minibrowserwidget.h
homescreenapp/examples/minibrowserwidgetplugin/inc/minibrowserwidgetplugin.h
homescreenapp/examples/minibrowserwidgetplugin/minibrowserwidgetplugin.pro
homescreenapp/examples/minibrowserwidgetplugin/resource/minibrowserwidgetplugin.manifest
homescreenapp/examples/minibrowserwidgetplugin/resource/minibrowserwidgetplugin.svg
homescreenapp/examples/minibrowserwidgetplugin/resource/minibrowserwidgetplugin.xml
homescreenapp/examples/minibrowserwidgetplugin/resource/minibrowserwidgetpluginpreview.png
homescreenapp/examples/minibrowserwidgetplugin/sis/minibrowserwidgetplugin.bat
homescreenapp/examples/minibrowserwidgetplugin/sis/minibrowserwidgetplugin.pkg
homescreenapp/examples/minibrowserwidgetplugin/sis/minibrowserwidgetplugin_winscw.pkg
homescreenapp/examples/minibrowserwidgetplugin/src/minibrowserwidget.cpp
homescreenapp/examples/minibrowserwidgetplugin/src/minibrowserwidgetplugin.cpp
homescreenapp/homescreenapp.pro
homescreenapp/hsapplication/conf/base/confml/CI_homescreendb.confml
homescreenapp/hsapplication/conf/base/confml/homescreendb.confml
homescreenapp/hsapplication/conf/base/implml/homescreendb.implml
homescreenapp/hsapplication/hsapplication.pri
homescreenapp/hsapplication/hsapplication.pro
homescreenapp/hsapplication/hsapplication_exports_to_rom.pri
homescreenapp/hsapplication/inc/hshomescreen.h
homescreenapp/hsapplication/inc/hsrecoverymanager.h
homescreenapp/hsapplication/inc/hsstatemachine.h
homescreenapp/hsapplication/installs_symbian.pri
homescreenapp/hsapplication/installs_win.pri
homescreenapp/hsapplication/resource/bg_1.png
homescreenapp/hsapplication/resource/bg_2.png
homescreenapp/hsapplication/resource/bg_3.png
homescreenapp/hsapplication/resource/page/1_landscape.png
homescreenapp/hsapplication/resource/page/1_portrait.png
homescreenapp/hsapplication/resource/page/2_landscape.png
homescreenapp/hsapplication/resource/page/2_portrait.png
homescreenapp/hsapplication/resource/page/3_landscape.png
homescreenapp/hsapplication/resource/page/3_portrait.png
homescreenapp/hsapplication/resource/page/default_landscape.png
homescreenapp/hsapplication/resource/page/default_portrait.png
homescreenapp/hsapplication/resource/resource_win/homescreen.db
homescreenapp/hsapplication/resource/scene/default_landscape.png
homescreenapp/hsapplication/resource/scene/default_portrait.png
homescreenapp/hsapplication/resource/wallpapers/page/1_landscape.png
homescreenapp/hsapplication/resource/wallpapers/page/1_portrait.png
homescreenapp/hsapplication/resource/wallpapers/page/2_landscape.png
homescreenapp/hsapplication/resource/wallpapers/page/2_portrait.png
homescreenapp/hsapplication/resource/wallpapers/page/3_landscape.png
homescreenapp/hsapplication/resource/wallpapers/page/3_portrait.png
homescreenapp/hsapplication/resource/wallpapers/page/default_landscape.png
homescreenapp/hsapplication/resource/wallpapers/page/default_portrait.png
homescreenapp/hsapplication/resource/wallpapers/page/originals/car.png
homescreenapp/hsapplication/resource/wallpapers/page/originals/shapes.png
homescreenapp/hsapplication/resource/wallpapers/page/originals/shoes.png
homescreenapp/hsapplication/resource/wallpapers/scene/default_landscape.png
homescreenapp/hsapplication/resource/wallpapers/scene/default_portrait.png
homescreenapp/hsapplication/resource/wallpapers/scene/originals/kites.png
homescreenapp/hsapplication/src/hshomescreen.cpp
homescreenapp/hsapplication/src/hsrecoverymanager.cpp
homescreenapp/hsapplication/src/hsstatemachine.cpp
homescreenapp/hsapplication/src/main.cpp
homescreenapp/hsapplicationlauncher/group/hsapplicationlauncher.mmp
homescreenapp/hsapplicationlauncher/hsapplicationlauncher.pro
homescreenapp/hsapplicationlauncher/inc/hsapplicationlauncher.h
homescreenapp/hsapplicationlauncher/inc/hsprocessmonitor.h
homescreenapp/hsapplicationlauncher/inc/hsshutdownmonitor.h
homescreenapp/hsapplicationlauncher/src/hsapplicationlauncher.cpp
homescreenapp/hsapplicationlauncher/src/hsprocessmonitor.cpp
homescreenapp/hsapplicationlauncher/src/hsshutdownmonitor.cpp
homescreenapp/hsdomainmodel/inc/hsconfiguration.h
homescreenapp/hsdomainmodel/inc/hspage.h
homescreenapp/hsdomainmodel/src/hsconfiguration.cpp
homescreenapp/hsdomainmodel/src/hspage.cpp
homescreenapp/hsdomainmodel/src/hspagenewwidgetlayout.cpp
homescreenapp/hsdomainmodel/src/hsscene.cpp
homescreenapp/hsutils/inc/hsmenudialogfactory.h
homescreenapp/hsutils/inc/hsmenuevent.h
homescreenapp/hsutils/inc/hsmenueventfactory.h
homescreenapp/hsutils/inc/hsmessageboxwrapper.h
homescreenapp/hsutils/inc/hspropertyanimationwrapper.h
homescreenapp/hsutils/inc/hswidgetpositioningonwidgetmove.h
homescreenapp/hsutils/src/hsmenudialogfactory.cpp
homescreenapp/hsutils/src/hsmenuevent.cpp
homescreenapp/hsutils/src/hsmenueventfactory.cpp
homescreenapp/hsutils/src/hsmessageboxwrapper.cpp
homescreenapp/hsutils/src/hspageindicator.cpp
homescreenapp/hsutils/src/hspageindicatoritem.cpp
homescreenapp/hsutils/src/hspropertyanimationwrapper.cpp
homescreenapp/hsutils/src/hswidgetpositioningonwidgetmove.cpp
homescreenapp/inc/hsapp_defs.h
homescreenapp/inc/hsapp_defs.inl
homescreenapp/rom/homescreenapp_core.iby
homescreenapp/runtimeplugins/hsdefaultruntimeplugin/hsdefaultruntimeplugin.pri
homescreenapp/runtimeplugins/hsdefaultruntimeplugin/hsdefaultruntimeplugin.pro
homescreenapp/runtimeplugins/hsdefaultruntimeplugin/inc/hsdefaultruntime.h
homescreenapp/runtimeplugins/hsdefaultruntimeplugin/inc/hsdefaultruntimeplugin.h
homescreenapp/runtimeplugins/hsdefaultruntimeplugin/resource/hsdefaultruntimeplugin.xml
homescreenapp/runtimeplugins/hsdefaultruntimeplugin/src/hsdefaultruntime.cpp
homescreenapp/runtimeplugins/hsdefaultruntimeplugin/src/hsdefaultruntimeplugin.cpp
homescreenapp/runtimeplugins/runtimeplugins.pro
homescreenapp/serviceproviders/hsmenuserviceprovider/inc/hsmenuservice.h
homescreenapp/serviceproviders/hsmenuserviceprovider/src/hsmenuitemmodel.cpp
homescreenapp/serviceproviders/hsmenuserviceprovider/src/hsmenuservice.cpp
homescreenapp/sis/homescreenapp.pkg
homescreenapp/sis/homescreenapp_ut_hs.pkg
homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsallappsstate.h
homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsallcollectionsstate.h
homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsapplibrarystate.h
homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsbaseviewstate.h
homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hscollectionstate.h
homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsinstalledappsstate.h
homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsmainwindow.h
homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsmenuview.h
homescreenapp/stateplugins/hsapplibrarystateplugin/resource/applibrary.docml
homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsallappsstate.cpp
homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsallcollectionsstate.cpp
homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsapplibrarystate.cpp
homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsbaseviewstate.cpp
homescreenapp/stateplugins/hsapplibrarystateplugin/src/hscollectionstate.cpp
homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsinstalledappsstate.cpp
homescreenapp/stateplugins/hsapplibrarystateplugin/src/hslistviewitem.cpp
homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsmainwindow.cpp
homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsmenuview.cpp
homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsmenuviewbuilder.cpp
homescreenapp/stateplugins/hshomescreenstateplugin/inc/hsidlestate.h
homescreenapp/stateplugins/hshomescreenstateplugin/src/hsidlestate.cpp
homescreenapp/stateplugins/hshomescreenstateplugin/src/hsidlewidget.cpp
homescreenapp/stateplugins/hsmenuworkerstateplugin/hsmenuworkerstateplugin.qrc
homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsaddappstocollectionstate.h
homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsaddtohomescreenstate.h
homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsarrangestate.h
homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hscollectionslistdialog.h
homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsdeletecollectionitemstate.h
homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsdeletecollectionstate.h
homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsinstallationlogstate.h
homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsmenustates_global.h
homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hspreviewhswidgetstate.h
homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsuninstallitemstate.h
homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsviewappdetailsstate.h
homescreenapp/stateplugins/hsmenuworkerstateplugin/resource/hsarrangedialog.docml
homescreenapp/stateplugins/hsmenuworkerstateplugin/resource/hsdetailsdialog.docml
homescreenapp/stateplugins/hsmenuworkerstateplugin/resource/hsinstallationlogdialog.docml
homescreenapp/stateplugins/hsmenuworkerstateplugin/resource/hswidgetpreviewdialog.docml
homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsaddappstocollectionstate.cpp
homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsaddtohomescreenstate.cpp
homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsarrangestate.cpp
homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hscollectionslistdialog.cpp
homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsdeletecollectionitemstate.cpp
homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsdeletecollectionstate.cpp
homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsinstallationlogstate.cpp
homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsmenuworkerstate.cpp
homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hspreviewhswidgetstate.cpp
homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsuninstallitemstate.cpp
homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsviewappdetailsstate.cpp
homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsviewappsettingsstate.cpp
--- a/homescreenapp/common.pri	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/common.pri	Fri Jul 09 14:36:01 2010 +0300
@@ -73,8 +73,7 @@
 win32 {
     # add platfrom API for windows
     INCLUDEPATH += \                
-                $$PWD/../../homescreensrv/homescreensrv_plat/contentstorage_api \
-                $$PWD/../../homescreensrv/homescreensrv_plat/hswidgetmodel_api \               
+                $$PWD/../../homescreensrv/homescreensrv_plat/contentstorage_api \                
                 $$PWD/../../homescreensrv/homescreensrv_plat/homescreen_information_api/inc
 }
 
--- a/homescreenapp/examples/batterywidgetplugin/sis/batterywidgetplugin.bat	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/examples/batterywidgetplugin/sis/batterywidgetplugin.bat	Fri Jul 09 14:36:01 2010 +0300
@@ -19,7 +19,7 @@
 if exist batterywidgetplugin.sisx del batterywidgetplugin.sisx
 
 makesis batterywidgetplugin.pkg
-signsis batterywidgetplugin.sis batterywidgetplugin.sisx ../../../../sis/rd.cer ../../../../sis/rd-key.pem
+signsis batterywidgetplugin.sis batterywidgetplugin.sisx ../../../sis/rd.cer ../../../sis/rd-key.pem
 
 if exist batterywidgetplugin.sisx (
 echo batterywidgetplugin.sisx creation SUCCEEDED
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/examples/minibrowserwidgetplugin/inc/minibrowserwidget.h	Fri Jul 09 14:36:01 2010 +0300
@@ -0,0 +1,77 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Example of home screen widget
+*
+*/
+
+#ifndef MINIBROWSERWIDGET_H
+#define MINIBROWSERWIDGET_H
+
+#include <HbWidget>
+class HbLineEdit;
+class QGraphicsWebView;
+class HbIconItem;
+class HbPushButton;
+
+class MiniBrowserWidget : public HbWidget
+{
+    Q_OBJECT
+// Start of snippet 1
+    Q_PROPERTY(bool isOnline READ isOnline WRITE setOnline)
+// End of snippet 1
+// Start of snippet 2
+    Q_PROPERTY(QString url READ url WRITE setUrl)
+// End of snippet 2
+    
+public:
+    MiniBrowserWidget(QGraphicsItem *parent = 0, Qt::WindowFlags flags = 0);
+    ~MiniBrowserWidget();
+    
+public:
+    bool isOnline();
+    void setOnline(bool online);
+    QString url() const;
+    void setUrl(const QString& url);
+    
+public slots:
+    void onInitialize();
+    void onShow();
+    void onHide();
+
+public slots:
+    void pressGoButton();
+    void pressStopButton();
+    void loadFinished(bool ok);
+    void loadProgress(int progress);
+    void loadStarted();
+
+// Start of snippet 3
+signals:
+    void setPreferences(const QStringList &names);
+// End of snippet 3
+
+private:
+    Q_DISABLE_COPY(MiniBrowserWidget)
+    
+    HbPushButton *mGoButton;
+    HbPushButton *mStopButton;
+    HbLineEdit *mEditor;
+    QGraphicsWebView *mWeb;
+    HbIconItem *mSpinnerAnimationWidget;
+    bool mOnline;    
+    QString mUrl;
+    
+};
+
+#endif // MINIBROWSERWIDGET_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/examples/minibrowserwidgetplugin/inc/minibrowserwidgetplugin.h	Fri Jul 09 14:36:01 2010 +0300
@@ -0,0 +1,38 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Example of home screen widget
+*
+*/
+
+#ifndef MINIBROWSERWIDGETPLUGIN_H
+#define MINIBROWSERWIDGETPLUGIN_H
+
+#include <QObject>
+#include <qserviceplugininterface.h>
+
+QTM_USE_NAMESPACE
+// Start of snippet 1
+class MiniBrowserWidgetPlugin : public QObject, public QServicePluginInterface
+{
+    Q_OBJECT
+    Q_INTERFACES(QtMobility::QServicePluginInterface)
+
+public:
+    QObject *createInstance(const QServiceInterfaceDescriptor &descriptor,
+                            QServiceContext *context,
+                            QAbstractSecuritySession *session);
+};
+// End of snippet 1
+
+#endif // HELLOWORLDWIDGETPLUGIN_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/examples/minibrowserwidgetplugin/minibrowserwidgetplugin.pro	Fri Jul 09 14:36:01 2010 +0300
@@ -0,0 +1,67 @@
+#
+# Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: Example of home screen widget
+#
+
+TEMPLATE = lib
+CONFIG += plugin mobility hb
+MOBILITY = serviceframework
+
+QT      += webkit
+
+HEADERS += ./inc/*.h
+SOURCES += ./src/*.cpp
+
+INCLUDEPATH += ./inc               
+
+symbian: {
+
+    DESTDIR = /private/20022F35/import/widgetregistry/20022F6F
+    INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
+
+    TARGET.UID3 = 0x20022F6F
+    TARGET.EPOCALLOWDLLDATA=1
+    TARGET.CAPABILITY = ALL -TCB
+    
+    plugins.path = $${DESTDIR}
+    plugins.sources = $${TARGET}.dll 
+    
+    widgetResources.path = $${DESTDIR}
+    widgetResources.sources += resource/$${TARGET}.xml    
+    widgetResources.sources += resource/$${TARGET}.manifest
+    widgetResources.sources += resource/$${TARGET}preview.png
+    widgetResources.sources += resource/$${TARGET}.svg
+        
+    DEPLOYMENT += plugins \
+                  widgetResources
+}
+
+win32: {
+
+    CONFIG(debug, debug|release) {
+      SUBDIRPART = debug
+    } else {
+      SUBDIRPART = release
+    }    
+    
+    PLUGIN_SUBDIR = /private/20022F35/import/widgetregistry/20022F6F
+    
+    DESTDIR = $$PWD/../../../../bin/$${SUBDIRPART}/$${PLUGIN_SUBDIR}
+
+    manifest.path = $${DESTDIR}
+    manifest.files = ./resource/*.manifest ./resource/*.xml ./resource/*.png ./resource/*.svg
+    
+    INSTALLS += manifest    
+    
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/examples/minibrowserwidgetplugin/resource/minibrowserwidgetplugin.manifest	Fri Jul 09 14:36:01 2010 +0300
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<hswidgetmanifest>
+    <uri>minibrowserwidgetplugin</uri>
+    <title>Mini browser</title>
+    <description>Home screen example widget</description>
+    <icon>minibrowserwidgetplugin.svg</icon>
+    <previewimage>minibrowserwidgetpluginpreview.png</previewimage>
+    <hidden>false</hidden>
+    <servicexml>minibrowserwidgetplugin.xml</servicexml>
+</hswidgetmanifest>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/examples/minibrowserwidgetplugin/resource/minibrowserwidgetplugin.svg	Fri Jul 09 14:36:01 2010 +0300
@@ -0,0 +1,1566 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd" [
+	<!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/">
+	<!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/">
+	<!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/">
+	<!ENTITY ns_vars "http://ns.adobe.com/Variables/1.0/">
+	<!ENTITY ns_imrep "http://ns.adobe.com/ImageReplacement/1.0/">
+	<!ENTITY ns_sfw "http://ns.adobe.com/SaveForWeb/1.0/">
+	<!ENTITY ns_custom "http://ns.adobe.com/GenericCustomNamespace/1.0/">
+	<!ENTITY ns_adobe_xpath "http://ns.adobe.com/XPath/1.0/">
+]>
+<svg version="1.1" baseProfile="tiny" id="Layer_1" xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;"
+	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="88px" height="88px"
+	 viewBox="0 0 88 88" xml:space="preserve">
+<switch>
+	<foreignObject requiredExtensions="&ns_ai;" x="0" y="0" width="1" height="1">
+		<i:pgfRef  xlink:href="#adobe_illustrator_pgf">
+		</i:pgfRef>
+	</foreignObject>
+	<g i:extraneous="self">
+		<rect x="0.25" y="0.25" fill="none" width="87.5" height="87.5"/>
+		<g>
+			
+				<image width="75" height="75" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAYAAAA4TnrqAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAATRJREFUeNrs3EsOgzAMRVGCuiPv
+fwneU0VHqKpUJ9j5+b5ZJx0cnpMgAeWYI3LMGb3/KCDZ0QpQdrDzIOYUWmUPzQILLLDAAouABdba
+h1IBa3OcSCxhDEFywUqD9BQrHVQLVkqkFqzUUDVY6aGsWEAZsYAyYgHFjbR/s2iVEQsoxtC/WbSK
+Zvk3i1bRLP9m0ar/4ZEjKxRjWAF15ZUdoHaBZ71iNwQLLLDmjoBFs8ACCyySHkvBollgLYulMNAs
+sEbthHcsRpFmgTVkBL+xGEWa5VeG0/sPaRat+iTDY5Ia3SzGsaJZuzTM9aLvvGZp72at2i4dMYYr
+goWtt7u9bxi6MbW8ySoZoVqxZgPrdsx5+va9ZIHywBqFNuTQ7P3FENkRKQorAm6aW6+eX5OUlWB+
+5S3AAP7hH3db+S5HAAAAAElFTkSuQmCC" transform="matrix(1 0 0 1 8 8)">
+			</image>
+			
+				<image width="58" height="41" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADoAAAApCAYAAABk+TodAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAALdJREFUeNrs2UsOgCAMBFCmJ+/R
+jRsSDYkRqPYzPYD02SEBRVsvbfa1vAacwrb3gWC46f4QGPeqZyQBPhqQEDn0IDHy4kJyZMdKAWSP
+bgmotCJFKKGEEkoooUYnozIT5cmI0IDXNClyTWN0U8X2DlVONPg0zyrzuVOSQktEdzio0r8komJ1
+Jbpp9muG34a6E+oVq7sn6hGrFtH1BlarPeoFPL0e/m7gq+fDW0NWLw+OJmGaikOAAQAEaxk/SH/M
+kwAAAABJRU5ErkJggg==" transform="matrix(1 0 0 1 10 40)">
+			</image>
+			
+				<image width="58" height="58" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADoAAAA6CAYAAADhu0ooAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAehJREFUeNrsm98rBFEUx+dM8y94
+kmVta/1MiU2S+BtEQpIHSnnx5h8gL1JEJGlDIn8DSdImRdau3daw5c+wY69tM2Z3tpmduTNzz51v
+zTzt1v30OWfunToDAsVE1xTFzO/jKwC01gJugjkJDV6CowkNXga0ExhYgbQKDCwBWoEFFiFrgQVW
+Ic0CA+uQRmEBA6QRWBELZE2lyzKknlVRQBY9SYC1ZLVmRcx9ibp09aSJPNhEbVQrT+TBJnqjXIGW
+qpUfozz0J1dGoW/1mwujksBH5QqSks/7oMhK1zeKDNQ36veob9TjPYr/wPC8XgeS4D91kR3qya1z
++Qt1/b5s1BdKtxDMD6TEZgMUt5ciKR+lS9K+JKMs39etoMookYrQanI7BGVGSVoXM6ispnbC8HcE
+VAeR1dRuBCr2aCmRhSQKq297bdVBSVrmE0zDpvc7oPztpVIY3lfTB11QdXvRJjz3xJzVzGG3+akU
+8ifyZsPSZejAoJfQ7CMTZrNHPWAJ9Bd25sHTsNlYr/URuVKap+OehH0/jhpiMDUKGpy69wysfNJP
+Z4z1H/DknavA8ukA3cFkdZombh2H/TgbdHbUXJ3G8RvqwJ/nQ+59PFApgbFrW6FzF8O2rY/aBzWB
+0SvT0LnLEWrr+RFgANIeQHR191JCAAAAAElFTkSuQmCC" transform="matrix(1 0 0 1 10 21)">
+			</image>
+			
+				<image width="58" height="57" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADoAAAA5CAYAAABnLziGAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAVhJREFUeNrkmkkOxCAMBDHiR/7/
+E/pPc5pDRqOwGW9wyyWhaC+NFSp+Fv88Q/Ll5BSySENTAEgRYAoEuQVcS8zFt4BOw0YN3elQJqMN
+Qxi0C9scqCEZHZAE5YgJXZNB8i4oB1KSV0FPAkILtjoIVWjITMqQUD5Q9KouR1QtqwWcytWapU/2
+VnMCiQ0bKdpHNfITJ7/VjKqs+sE2YxXVc5Qzwp3IUdeQX2fkTc0jA7Me6MgkQM2Y78CPKPoG6xny
+sU/ra5qaFczudZcmDFeAlptAEa13/psw8AKoyj1SWlEkz9NHe0kNS1oWzNowkKJysAStioXHckzz
+2l4sYcW/7dkwqP5+w04gtgtkFAuIzKErejhVuyh4NvUIGL5YDV1EDVmJa5pHVSFVjJA5R0OHbDZQ
+3KDoUDq17ICjXveEBzYpaDXSZk/eXqTVRWTQUWhEV3QE2jzUPwIMAN7BQw1ftQrxAAAAAElFTkSu
+QmCC" transform="matrix(1 0 0 1 10 22)">
+			</image>
+			
+				<image width="58" height="57" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADoAAAA5CAYAAABnLziGAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAodJREFUeNrkWEtKA0EQnWrmEn52
+5ga6EMGViIgLf8SFiHgCEUXREyiI4EZEEQn+Fop4BhFFRG+gJiZoTmFGezEyzLc/1dOVsaBIyGSq
+3quurqpucBBl46XD45+bvU1QfdcXFRtpApgEVYHGvY9NGrAJygLMsoFFGEwQlAEnY0uHMJgiKApO
+1aYsWZYHSYz3de0xGyCxVorjEsXG8iQpaks2LUXsMiorqesz6z0Xy2FwFajt58Sqq+uIk06yEZeW
+mMSS0h7yTFkTPVXUj5Xo5hHcsG9GqdeZFOYUVMJBdilG38Q4yWwAMnUUS7MBNqus6r5WsetSIWha
+3CKTQydKhWTaNMYwxj3qFTez6nKjVIjo3lIID9+6N322j3WuTKSDRvMiidX6SI+AmP2dUR3Isf2T
+u0qx1kc5WX8/Uh8KUle0ncFLp+5/IMvaZVZFLUacrPdbfsK6/hwtSvw3X00Ai8Oho5Gqu9XXhFYL
+nLCuPXX+EeLfk55hSRwGVeWcEtN19VEe/Hb/F1r6q/hPw5UKbOWhC8XZzsCndACwfPv+WdYfMPbH
+8r08aCzfnhe4M8qSpTuc6O4Oyq+srm/fpytaGGxJODiLt91KxIWIei06/VAVC/kV1cGyN9QASaIO
+IaIGD977ww3AaNx5DhIcs9INw8FIHfj+0FEMEcWhdZVyOFoH2ysqgoM/174zOhr7AL5PVBR7r8Yp
+x6d1C0itCsdhqIzXQKu9xB2hrPdTSQyuatpQazOnUzXAJ/pNIHUDGM7LVTCyolRS92KmCoZT1/6K
+ypDMdY9ezr5bjY6y8/JZj1ACX829kTgRaIOYPkknfD1fEKJBmayUIqRvFl6LfTk+cVzyuFLB8yPA
+AFDHuVDEzUzkAAAAAElFTkSuQmCC" transform="matrix(1 0 0 1 10 22)">
+			</image>
+			
+				<image width="29" height="15" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAPCAYAAAAYjcSfAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAE1JREFUeNrUkzEOACAMAqmf5U39
+rXFzcVCTqzJ0vVAgJKU4eZwmVlkBVRk0Zts0FAXHKmwaugP3N0Vqt0Mnoaadmn6v6Uz9QpGO1QUY
+AHWdBoFn9+uOAAAAAElFTkSuQmCC" transform="matrix(1 0 0 1 38 37)">
+			</image>
+			
+				<image width="56" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADgAAAArCAYAAAAtxEsrAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAOhJREFUeNrc2UEOwyAMBMAs4i39
+/3v6GapKTaWiiBRkY+/6lEMOjNag4OBwrNbaY+Z9AE/rNSAStAOLTCgPLDLDLKBgwa1CwQRbQYIR
+N4MEK+5fKNhxd0go4EbIooKbalFmXJ9iOcSqDweyrflJsijipFu0D6sopyed4BkalNN7HzRVFXY+
+V1WYFHB4m1D6LLuqqgqjA65O1qoqLD3QavBbVWHpgB7/JVIAvWDhQG9YCHAXajswArYFGAlzBWaA
+uQAzwb5rsrjRZ4SZJJgZtgxkQC0B2WA/e3C0D1lhtwmywy5LcT76EmAAdRZnpsQcRz8AAAAASUVO
+RK5CYII=" transform="matrix(1 0 0 1 10 21)">
+			</image>
+			<g>
+				
+					<image width="19" height="7" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAAHCAYAAADqF3ZBAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACxJREFUeNpiZGBgaGCgEmCE0lQx
+kImBioARiU2p6xqo6jKaeZNcr8L1AAQYACc2AwuT3AwCAAAAAElFTkSuQmCC" transform="matrix(1 0 0 1 63 36)">
+				</image>
+			</g>
+			
+				<image width="44" height="40" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAoCAYAAACFFRgXAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANVJREFUeNrsl8sKgzAQRTMl+gPF
+PhDFx///lLpq+wMmhdSILkqtfVEyA/cuohvlcLgzIqkp1l6dYpwo0uSv42EMb9g5caxJG2MHWBG8
+Y6jvrRzaIdo5UbweWCkY/iewpIFDJWAYhrElUAkY/jgbpWAYHZZuGEMHwxg6GMaWCJQ03ZL2R9dd
+xGim+aZtz6yhsyyhO+A5TcMLPM8TWjT8CH5yr1+2owD/dMvhujxWgNeJi2JPzICfP1SWYWC/MlxV
+BxJTibo+UugOv/2l4wD709CFyk2AAQCXFWkw2gJhPgAAAABJRU5ErkJggg==" transform="matrix(1 0 0 1 38 10)">
+			</image>
+			
+				<image width="37" height="39" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACUAAAAnCAYAAACIVoEIAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAG9JREFUeNrs2MENwCAMQ1Gn6kbZ
+fwTv1Eu5Fk7Fan8k7k+2EApSzvR9dChwKiwpxSYFChQoUKBAgQIFChQoUKA+jfK5urX+OSnP/hL6
+bcyYWgA5ob7e3WFNQN6NigA93T4n1NcpoIGKAsW+fZcAAwDWawmu22GKXgAAAABJRU5ErkJggg==" transform="matrix(1 0 0 1 45 11)">
+			</image>
+			
+				<image width="42" height="30" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACoAAAAeCAYAAABaKIzgAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEtJREFUeNrs2MEJwDAQA0ErxaYo
+N3vBkIdLuIPZCgY9lfVXVe9q3DMBecqNTLJbLzohUFBQUFBQUFBQUFBQUFDQwdDO78jIRT8BBgC8
+VwueoiHqZwAAAABJRU5ErkJggg==" transform="matrix(1 0 0 1 38 10)">
+			</image>
+			
+				<image width="7" height="4" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAECAYAAABCxiV9AAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAB5JREFUeNpiYIAAYwYsgBGXBEwS
+r05kgKzoLECAAQA0iQGdP+VRswAAAABJRU5ErkJggg==" transform="matrix(1 0 0 1 39 38)">
+			</image>
+			
+				<image width="2" height="11" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAALCAYAAABVuVzsAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAB9JREFUeNpiYACC////pzGBCBCH
+iQEKKGQwwEwGCDAAcREKPHaGqlwAAAAASUVORK5CYII=" transform="matrix(1 0 0 1 44 39)">
+			</image>
+			<rect x="40.804" y="18.635" fill="none" width="37.431" height="14.661"/>
+			<text transform="matrix(1 0 0 1 40.8037 30.208)" font-family="'NokiaSans-Regular'" font-size="14.9724">Hello!</text>
+		</g>
+	</g>
+</switch>
+<i:pgf  id="adobe_illustrator_pgf">
+	<![CDATA[
+	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
+	]]>
+	<![CDATA[
+	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
+	]]>
+	<![CDATA[
+	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
+	]]>
+	<![CDATA[
+	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
+	]]>
+	<![CDATA[
+	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
+	]]>
+	<![CDATA[
+	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
+	]]>
+	<![CDATA[
+	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
+	]]>
+	<![CDATA[
+	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
+	]]>
+	<![CDATA[
+	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
+	]]>
+	<![CDATA[
+	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
+	]]>
+	<![CDATA[
+	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
+	]]>
+	<![CDATA[
+	JCXbsU7QNKwJJsrgGlY3UMER1IYVs13bZdrLZUUx7ZjpmIYEFAFs3dZNf2PLjiHkIj9aD8hpEIVq
+GZyUztZtxYfWxNSYruOngQNZBFsQLDX2WJPQVo5DwBC2ptKUMKgLSv62FKDG1Ei9a1u3KjPCdGgF
+RR/xg1RN/N3Of6AMOVBcj5BjWP4gdjRtszBtZC+ralDcWYXsPYtULbbgxU3wmobyScPzocPrCBA2
+tLZli7/b+Q+MHVU3qLE0NKdKedg5qGCI17tC3rADWyEsKlCcvUoVQ18zco5gef8LUMnQ0k1tWpUM
+g/vMYTHPOgFzR9JMaJhFYmaFjJnTM7tkTJuYuSBjGsTMHRmhiJlrMgISc37IqEvM+SRjCmLOPxlV
+iWkUGU1FyUXNVK+jeSi5qJkqqzQJGRc1EyXRJ/pEn+gTfS6ET1PZ4oiSsk+TuG1N6FE31X6nUZRU
+3QM2hJhalJxnYqYg43wSU5eM80NMQDLmmphQZMwdMdMgY9bpmQkNs0jMrJAxE3pml4BpUDU7OBcs
+WCg+dVJWFyy8ePHyFdeyz4rli6eoHQKVWa7fsH3fwQHyObhv+4brr1xUfpGAfRYuWrFux+DEQx/6
+OPt86KGJQ9tWL62auXvx0tt60g997Imv/sdz7PMfX33io2893n5tFfQXL227+6HHv/rsT14+9xr7
+nHv5J//5pQ9ke25benFF4433PvrMcy+fk+vh/PK1V3/2rb976O62subQ+P3/8kJlCaDXfv7cM4/e
+u9HXnDb+WbVLmb8898K/vN/XfIrGgP5nuHnbUs7qwqVtUzQmzR+9+7ZFrIbPotvufnSKxrj5C888
+1LOC0nLxip6Hnnlhyouk5557PL1+MalAtGhd+vHnpr71/MuXv/buPoJ84ZU7Hvrqy7VrQFHkzz+e
+XgeUX3z94EefrXeh+pcvf/WhHVcuvGjB4g0TT/yk7vXXc89+dPD6iy9asHx7fULwsPzkiYkNixcs
+XLHvQ/9R/2Y3kLJ9+YKF1w489lyAe7jn/uND+1YsxK0/HqT1a889NnBtiNYfb5rWjO4wYxJqvAPO
+5S9/+pksnsuAcvLa8395dOXFAWUQyI6vWBhQvhnZbO08Xwc5LDWyGvC67Hv316ZG/trPxDJesHh9
+nYX5y59/6wPHuYqou+jPPfd/Z9u5+qmnUECd9F4rVBtVVlV0JiEDK0JPVUn6uFqRP6pkPTUodP3f
+fetn5yqqmdVQ4Lf1ZD9A1f0vedPaxmHhomvbj2NT8p/P/5TaEtz02dqGZwE1Ux/6y89QO4Vt1Mce
+rm3UiAncHj+apTYQ27/BHVMYTFKUbMUN1L5S2zqVMaa3V5jtntpuyz1q+gT1K3JVv0MsinJV5tFM
+NEceTTPkEwXJ5WFFuTQXXlmqYRLsmGsgBcUc19SVdjrc+C9kWS7ks1ou/kpydEwd0avFCJKQIfVK
+h1eRwvuM+RfxC2YRaNUtmiBrqciqKNIl5x1XTwBsa9chzdl0dSk9sbu7K5ksTRzKFRPQuDyTWo0Z
+U16coVnB1aSo7JdpyRFNGJ6ZJNH86ZnJEs+fnok0TZG5HGJi5j7JWek4kCseSiVz+REs6OT3emLc
+cSiVyOxPYJwP0CsAPV17drEVchjSYelv1XJc8WgMFs9mUkMeCbXyW235fbwlL+dU4S9SR77sfaHj
+DB0TrJm0vp1j60zFSWCHri0AmjEd/6GQF5HjibNEbh2SgezykxuzHKussYkgZ9KHVIDo45luYkD8
+tw7p8D58Jlymckz/wzmQPVxQKjcWPMloy/mnF6+aoK6fqcf4PQDlhAKZjzXuW/kbEjBpTP8MVIlA
+q3fn6pNQZeaXP/0kfP8xdUN+DN+Zx3YOvrOSZM+R9qS23Q//lvZ+/PkfPT6VFY/u5MykUEo4QZ27
+y4FNJbCrjK5du7vNVfBdu2vy1/7bqeM6fN86/uaHHv4f93fCd/3eN7z1rf/9PgO+37rzvlOnhm5X
+aO9N27ZtigR2rgTWL4RT3/qqZp/Kf5iOhaI4pm2jqM8zEytFCZiRnTrf170qnA5nLi7V7M5NpMrv
+0ZRdpYnB3UUEFxNVV0UuXOgwTAcPDRWrmGVptgF7DguZeDqqeD51Lt/oZswxbJv6qAgmdILf6HZs
+UkvX0OB2gqnEy+FWTHWwA8jgRsxACE0FN2Kq6jgcDpKiMTy6pmsMbroxZGq6RA+D2zHd4D59Vbhm
+xCwbcxLnTpmra9YUcLy7QrA5i3M/yrKROwXcjwdTYTsWmgLup7NynOPE/eK78nL3FViDagUOLAQd
+Lz9Nd9jUYGtiw61VDx4vh5sxTcXbz3g5nlpwD8+omDUdWRWPNlT6r/JHS3DfIyQ8teC+Rwfav05r
+re3JwgaEbqEql9ym873s8NhrDlTP0nQD7/lcg88thps6m0OofsO0Kt5mIgp0VKbrrZipO4je9DFt
+jEtsCEyN3KsFQTMdTaHj7egaA4q7ufBkkwAdjAtvVJN8R4TBBLNLcVGghrHBesVcm5ZeBsRqQfNo
+8OB6zFI1kz2OFEPDQBNrAt1lZsyxHZcCDWCSYcA8GWSTDfwwJlwsQi6DGa7LrZBG1ZEZw9t7URQD
+L2LdcKjasSyHNMZAHjzR8WNdAVRJ6QqgWjcNDwOHa2LIMFA3iJxjILJUjQEdkwgzHgVLt21va6er
+iI0Osl2bGVjXVTU6jq5rUjdRw4LkyECGQYd67npZY8yQo8uP8wM1PNWmVByEwy08PrQ+HbCGlSB1
+BnSDYiBC5roSUMwEpkMva4znUrWZO6EiRIEa1idIo3Ph6pZcHIT5HlhDuSzOg0eS1mrHw65yIfOA
+CBsRgUCAsUDqLg2uQAvXYgrVRshlJBBbUrEosE/hqGwFGSqTXrwoXEIXXoNQa4oH2DRqB/DysL1h
+sLF4agSDHrO5s2MYqkFByLLLYFhANFPqzcB4MDABvC27Xo9XPaLygX0xW6NKmQE9cbSMssaSFsGy
+ZppmGRBPiI4dqJ4aKifD1T0WShMmkdz+d028CifK4Vht4ElkS851DOBFczBGGzGyiSh6QMG4TteG
+3BgveuwGUrSGxgbeA2IaNFGEUoIbMd0xbf/QaXiJmCxkh4fOtGWgGDrVIHZRaiyxhjdnSLOVquNA
+YySb7uRlHAJuSadlogZTiXxyvIp1kuNc58UhxP6bQqr2qBgLN/1YaHTHZqsFdL1wkEgrurS4adI1
+pDOrryMeuXZNh6024usLCTGhqANZRbrj8PnVLUPny0isTENna8hwNY3JNTZeCFlMcGyIwAtPDI+P
+rrBKQ4iXH+JuId6QYIFgQM0lFS41K4Y541oDE2qZLpNT/AgivERXuEyiietSddB6pqhqpLKqByAD
+SjI3MZkrZUeUwnhiMqVM5EZS/k1IIJ8IhUJZZSNaknejRNTgr3KvlAbiq0kI/aXq2FQdxYoh7/Gw
+l/0S936pMndVZ7lCJDj2SiHi2KuKXFXZrBBkCXnZL3HvlyorosrKqVhkPTUHneCuKWNt2GGwTMO0
+6x4lhBOdylCNV42ri/4FiqtGEK667iGdDtWVrqoaiAcXpq+D+OzPQAtRwqvpIV7qZiaaiC+tmeii
+KQIo4bRR5fy3DSSK46Pp7EgqrwyW0sXURjbpxwZmS1vNveHjFZyQVAmQ7QuR0ksNlcO319ibdC3P
+RXJcsokCR5lVYTDx5CG+1SHhiXZ6buiqzEXX8MR41fdMi0TGdJgvulkyXbz7c3QqqbahawytpVMh
+xVsSG+neNsFwacwBe8rg0lI3jdTcoy6nozGXk8m+tFeDteSwgAVxMemCwsOoUUfcBq+xygAk2cGz
+GB4ElUPIgiMBoAkecHFMXkdQ7KPwIjNURpyr0ZqFJuwFyZ4Pr0HLNqUy5Iaqs6VsaJRCPECqbiO6
+eXVVukM0bepjErINw/MA8R4SLzFGuc1CnZo4OsZrixc9camfS/dRpm56uyDXIUsYdjNw7s50jKmz
+XbWFXO4Jl42D50POtjsgS6iqHJrOKgFXEzY/WLudUSxl/7JI0qtKeiGS9ECSXpgbSb8TpJyo7WW1
+nNdNzIXtlT3YGCwHHYr+Ic1lRXViKqwBRNcDIOOObaXUcddj+nLHPZfpSx4/gJnJ4qNJODNbfszZ
+VOkAV5ViMVwzk2OOfSaSLBzyGcgyPzmbyapmo1Z7TTSHo162eEJ77VVMRvPIbcMXcNa/cKoakNkR
+tvm0+LJTL5w53bfMZM8xbT+s6m7F55359iyofM8yd6dng+M5mkVRNTiJzuvJmRbTdaINNHj1jsa9
+LwInkgWRZlYGHS8dpDosVu1CMkE7ORNRLYsDXRHuw0KvaqYMZ+sM+wscrekIoGFzGmzHw0CO58j2
+XVdV3ljVVbb7NzEKToNtsGABWUDCwUXI0CU4Z01EBVzDVaqOw1SF1NtIXUhka27QnN92cu6iGSqL
+Odi2bninwByO1Qo/FoAy/C47uCDj2E7OY9hJEweK8xhbd/WyxqDIiTqS0XpARoNw5jkcDkJVfh7J
+0Eqj59HgH2qPYLmxx5qEtmIc6FBLh8bTXfOUDnKSSDS5AUudCbSF9alrSPC4yGbX6ZEpgvxw3TuD
+11R6smhgb5eAB2Fx7sVL6f5lFKNr87Mlx/FO9TEFOj1KY3DatepPnggArzStA8bJ66LC0R37CZtT
+foBATuQclgniwrDQLmy9L6OrwkX0WFGjBlhkPGjYf/cPxaA4F0MO6+Lqqi1txtiZYXkX/HjTVtmJ
+rwXciRMOnZ404S6uoxvSU7CxMgxmtlwoqymGgZwRenDapbL+d5XUsDk9TDqcGK6irJG/Sq8RXO06
+2LrbJI9HQ/T8f6IMjgdTRy6XRglu0sEEoEpfUEFSzhAMKAbaTkw1LBlIz3UQBGt1JMEpZqhV67jI
+jwRp9PTf9zgJyGhjmAWc81JOswSH2x9V3xvnoo1k8Fx6QOKv1eq9KA7uA+CFo9igsLBNYT8QxeIY
+5Q88NuHr6wboi1xIRXCU7iRMog5+r2EEfBxcHlEVOOuExVanjxnD+s9kffDywqYM1emjs8QH2gcP
+L9aA9frAwT5WY7QL1iCWhYWjThcdY8Yi0R1+9CCBwYWdQXfSf4+mbupmrUVR9ou0LMp/mc7CIDiq
+Lg36y8wWB8VRbXnU4DfOHHUvU9IUoUnmEBoOydBR4SwF6knjL7qtmSZ5kQ8xhCoU+Fddh9QNZy9k
+MF1LxX4VS4VzgC2LPdh0hRny4KC8YZMUL4fb2IDRDANMvarTsXFFEojtxjTLsSQg0xEmdiWogWPw
+ONcdmDLXjwTB9Omu/3ESkNHGMAs456WcZgk+GinfasqXvgYK3tkBdebbXfKCDddAujOFJm4Hpxxv
+jNurKQSkCnJt7OjgXbNfFbdjbaJBYk6d3jbc+cIPodpYDfowqu1CNm/HjoxjwS4jZC/sE2Nvql4v
+He81HKmXBnlrdTrpkL4rDEs7giQt8O7r9MLaGHvHZfo76JBr2Ou3VbOKBo90djCdbQ==
+	]]>
+	<![CDATA[
+	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
+	]]>
+	<![CDATA[
+	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
+	]]>
+	<![CDATA[
+	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
+	]]>
+	<![CDATA[
+	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
+	]]>
+	<![CDATA[
+	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
+	]]>
+	<![CDATA[
+	NplG0WK6vJ5XviwCAFU5I2SZimkNCUlmHd2RTwcmSp3BSZiFt69m4qu/1ZvSTRzKLoZa/VavPBpt
+C6Wdq8dmIr7Sz0vxtQ2uFl8fXJzFhY2L49Tm10YptbM92ktdHb2vcdU/Q5GrFap7XO3xEXMKuXr6
+95xr5Ev3XOP+7oU7Xh9nuYvNNZm7aO2WuKu/nS53vdZ/564b/A93PTxc5m52OxXu8eTziHucZG+5
+1kGmzz2vn69wz1tPydHoT2ZtNC4+KqPxYPVg9LsxwVt+x0vD0mtWbKi/Wrbp2+B0R1mLH1+VVoR8
+or3WO126vrvcWe6PcrVVQWr9WXu+2FAXLw9fMqnL2unaztlWT0kZSYlr+72HaibfWP0L05KqYfYd
+nv0QH3085lZOPo7PiTHgIgDYlNfkx1chnvqSziwXZOJ1m1KymdraymzY8EWQhUgjGIExr3LPx4kz
+23BtY01tvkjwObe7w9Uub2pcfWlwOhqrN12S22qkq16mtnMZclXnopEhWa3+zY3GD4NNLF6yKfSU
+W0w22tkeMuow1TE0L22jwO7pWDCxoF28GV9/rP3i5aG39IrR9PHNbTyRaS9i3u8h/tnEa0dP45nc
+6hNibgfvI33Am0YL2Dvm8muq4/QmeyqZr+L3oIEX1haPbm6eUpX0ym8tsX9wAGbq90Otlbw/Au5u
+yqiGLKOwAbv8eSlDTasd+WGMjzlNJMv7a8avBN5s+IWOI7xXaH+d5CJrm15pLEnT7GSQ0Fl8zBpf
+5lLV69t97M6DuHs9LJU/2jmey+1ICdJVfPHIdROJDf3Fxrr5gq8+beDFm/q7vbT5Dpa8xo7+opZl
+Xjz+Pu3pLxqc+YKFX99I4liTJmiyetb3Ukb9JwJdr1/LmC+Irg1ljRxdJnL1Ew5PtEuJy4XvCTxe
+Cdj4OoiYSUFr4LScwirkfIH1Yr4PJQcZXbD80gwqKGtkSS1ykQ88nnMov3n408XHW9quuHvZz9I5
+TC5nk8Ru5HLNAzKbAKbMb5pIa55kCRixpIrqZu8p+Vp+V2onpS91SWV4lMwvSlfamt3E1RcCaO88
+Z7YHYObR5BVnNqlcbW+Ui1erm8/l9/zRsHhZ7N9Q27NREEr360+UjJMvtx97m434CIjsUjSI7Jmd
+5E7DpJc28Gj2G8rOs4ilNCYSJemv9uJ1hvyiFsHFOnkQSnfiPrJ9Ewhq68C+FlpXPvgCJlgXABue
+AkAXNq4CIPnnLgEcvwYC4HeDHAGwH08ndy9dBID9gmGNDrebCUIWMLhigi5rS+s6K14MtVrtHwxz
+bIJZcColuNwkgSzbmtSqwrGqsT3GTff+9jDHZD9JE4df137II/xpDggOwRTdiz8CGDIjyPtpYpwS
+fOU+bidZam9/pDdSRH6CJlg9dPOewKT9OaJUYvzBF1cAJg+ctpNHXycjFygH7WynmLL24gEI+J0y
+mcsETN/Vri4FDnKc3DnCBf4IdJb89X75+bPYtckDJMFjjdLyQC0qT3FZv0qoMHlvJzaNxWpurFp0
+jIexTcfQFQzbtW7i6lYVUCWfVPl9pbHBZ1bWitzh5+1BalfI5fnUZ7nMv6ysK+KqeHSUe39N7Yi7
+VxubYI+dbwrJPQ60SCG9gfjaEJK/3W2+3mjvcIeT2xoMoI7rjVisZnb5l3yhALAK+9BGdltovdTy
+VliikHg73+X3s8uCLyxVqGS6Nf7lYJdpD/mGNJl+X6/w+3nxGG+UKIT40u0zIal098TVavWP7TMc
+jQ1fIb+M8tmGFjKiI3Q4BPSdbx1iAFvBxKYzqx9vA95uXmiLqdVtubO0tQbdGdbxF4rC1Ja+sYKX
+LuQJpWHklYq/RIfzh4hJhzdXl7O2vH6qp+b+6s4UotJyvUU5Z2ospGxF+lM547or/QrUH6VYc4u0
+sbV7QdqgDRw8pLPWBt53rlrraF2fTwAM3pt+ZTmNg96lvsRooqt3wiGjtJODOKpbJ7QNrHzmbOCX
+aQBF5+r+6r5pLSBa6JkSZD0H++KPgKdZgohL76fwV9YoyxllIAXSFz8o+0bVl8+fAsclsncmL+ux
+HPRIjpWt+DNz1zfeIG8ciPIAYkeqwws+a4mWIVdD45CkJJ5QApovvXC9Mr7gcrVWnGi9C+TMFNA1
+nUeD6LMKcwPqdjeXcr80XL9n1ThHxTi1495EpLbvuc4M6X4kdvQhbfCWnpMrCl16brsqnmTWIOX8
+Pu+JpHcapRF8DcwOUgPUaMNQwR9N7RuU9pNjLnfSWzSvWzcmI2vr9oJ23bsOWJuMZGL3/tFjMvZ+
+Q0yGbSbsG5IkQIC28cC2sfl9brRx6zObdEeTNvBoNoCUZmnD3g9LGw8/U3bCiIHSDrObZSDE0eaO
+TUJpYQby7jEj0AkLCzwM3eoRpNno8bTlQbf2JntG95t3Zj2udrR1aqk3iFN/mnuToYZ5Olo0YH0z
+sPaPmy/WPemd5oNBX80HtlvssT0C2bqxPF70LY+9ieXxK24Dc3ptqX/aHFgeOyPL47ultdPPX/ax
+2bIcFdXs/NgordmztNZ8H1sePy2NN/vWxkdxy+PvIvt4t7RkY89Ox9KZTu9H19LRdJ3splCpkxn7
+3bJCvaNeDbr28e15fPl4+8TUsI2QEduSy3ovKh/GGV2irmvDakR1bVCNqRbZXjwk5kZKr/InSVoh
+3i6UafXGYgYVPtBE/jxuk2Kw0O9HutcRur+bqKYNZxm8baaqKetRYLboC5SMP1T11+wbu93wyjfK
+Quubw1CB6x+qfcNamLOpIbjKZi0aLlgJelPrZMDUfGDCR0tuZ5UZhlKZXy91K6bZt9G9222C+XD+
+gwbKDW2cSy6rHH+wtok7GAnb1hlVB70Uyd/SkdYJNEANc4PfzwzLfL38hBn5j+tCNV6oavtdt58Z
+ggS9s89gDCnXquZVP2dVuuYox78sv1WIvzb3Ub8q6bGLjs/DfktVjoshmv+mv3YTTP3JkWaU1S/X
+hGS38EezwkClzH10nuqgvm5kcIeGy70PpC0YYY1z5Es9J5O5j51zdHeTmA4bbnLHl4uyWLw5a8AU
+PCigKu9tCZXfewWb3BSL191n5+CaBS4nb6d1mtsYa2QJdrMen0amNv93bX/H2ANbRGdVkd9fWd4n
+liTfGb7VESqO4bZmTMY1sPHnWGh9NfJ4Mc8e6uZx4+jie5JgQPmGtXiEZ1Es8mn+qkYsKCDojaJQ
++YZuUKtmsLKLJkCLWLyYfPFot1LADtoCtvgrodHwB42GIoJ52T/RzLNe56qi7WnIfMKwmpPmjIDR
+sJHFWc0a6CvanNyUjajDQH+h73iYOj+xgf19fdEdfZTSIvr6ojv6GLddeF9fdEcfAya8ry+6o29B
+PwQoiq8vuqNvgdyIGdHXF93RRza9ovr6ojv6dKRF8vVFd/QRCR3V1xfg6EO7wtxnIkbmAs0mWoZ5
+U9c0Y5PS/ulAo43bz5TOcU8wh5+L2dzH4ukqJRVYVsfU2MzJWXp+Ltk4hUcpSS5EgX7uDcho5I0U
+D5J2h3KcwVjw0TVH2Q536tBhkCVRfHz9KXtHudA9cmGfIzt/RgCMefPFjnyUIOYcn+b6zzqmjyjb
+8+nySscoS2tlVzzy/lGWETvpt+1c5XBrwBE+NLxt5OJNs1a99KNQVxroP+uGIxFH/1Bk3GuD/7uz
+8I/KS/msHFMFUYZ/cue/X73Ryejj7aMfA01mc+GfXPGA56/63UFt1Otd9v53Uhm8/H73+pPYRixX
+vCgfHKhypfcy6PZiaSr0nvOM0kLpUSNi0ctlS1bgUuW1UP/cXzrfbldeueaOY29L3N9Gzy1uV6Hf
+diu+0uOP0L97gY81qtDTPSNbdAVdp8l6ur5U6Y1Kv9XUceOmcnQQv7DtSspfnepP5a4m4/Ja3Jc3
+Viq7qff70vMf4SJ/tLebhseXjO4LASFk3bllTpJ114Mnq/Hk1h8JB3KN3cYcrfhyRc3F08m9Pc0z
+fbb4B7XlP/hiFzepuqg378fXf5ZGqLmp+v4YOatWSGksY4qpWqulE9TpgKyehuqTfnvbYfRQwj+a
+Y4zyD1FLl4kyqP3621vXFl+yKpk+avK4kUB07GfM7aqGpLXxerUx0bnxgFk4WDm+k0+yPmdzDDbH
+83J5W39Rzlgc1TYvNLM+LW++FfUXJ7y55Gjypr69zqxPDOh6OW3Z42Oh1w+yeIzoOoiJhxRhLFhM
+/oKpXT/nySMoUnF4PN0zG29pMui0RlaUdZBBvRKhOdylVzV/uAqC8wTm9/QkR5ctPCkEHq94ukjR
+tfD0XswdX3yiV+aSKKhLZJHSpHGzYa6szzoYQvh3iLRKrr21uvHWX7uqbVWlvzatB0MLztgYaD0Q
+2jCPCtDFftls0q09zZwL3aSwtrNY0ZtMHqpnBbVe21vrXVYOutopsDCuW15XAi8FIuxwSwTlnZD8
+ai1pRNZsS8z6xBBZ54QuSJqy0LnKadTfueX4TuMgCb/ueW2B6TwJO4UDAear0ybBHvgQHCOhCwCD
+PUMKAGTyLU2mkW3pXSoF0j/DE3cBYD+sOrdKdmP0lfK4rw3kpLdOV0pjGSZSABQJ9IfjEboyR9oQ
+d2+qbbrBBGyf1RRU9I2Cgpq2Kqg5oZK5TxGjxFDLMyTiBMrKWQxAuTWizOFPUjM25FrOPcYeJINO
+JRgpr4fLE5UWF/CsTZslY3VuWtMNKWrb2jTYceez9LXYr/HpYZnTF1CbPIA1gE4fCAVdK/iT0gma
+DbvwDFTQTAzdj+DqzDDYQrfVyaKT2r6odom+SLcJXlad2wRHN+Y2gVC+7Ei2fQY8SvtYb+B5xd7A
+b+f0h7j4jfAIl22CeHy7+W1sEzj3GaTmKbvPIA9q9gbEg/tvdq/igrahb9rKVLmhXFhrgan9Xcoj
+oSZAuXrjkLSTWln7Z10r+1xM4RzKhorWtR4OQbmAusk3+JTlmO82CaaBF9kMWQsNN/aXJbAknWC9
+1Zrz/MkSukIcj17+84Q+N8rScv48+cf1vPD95+zA3y1q+vU6IH6snn9Xtz8JU3b2/MHau7S3d9+2
+L7Exnslvvcsfjs1uU5VD7znZDdEmg6i27pOBmiDnPxm2mViwH4qvXXw4/W7ImrnfY3aCELRfP+xt
+kAM9I3eCdR+usfM71UDoBSIu2NR2xcIMhB7H4mzj0cYCLNZtSHuwV3XBr1uT5vg9991IvQVyooZn
+L8MMM2ESHrdfuegYsPqOPT5i5a5p3bosGdPSfDSEXRmV5py2omw3pUj6Omo22sr639TXDdH539XX
+CdJAZf8v6+usRfBf1Ne1EGP1v6yvk7nx0K/nqK9bhM1/T1+3+Cf+e/o6dVG1RUNfL5nzRlk2/MYR
+sBsQTRYV2ATjyEUNRDMKH7SwKZmnkg/+bA/hMU8UVBT/F5LGVRuJH52r9jLkjg3kuTtQmq9HeixW
+XpMbwIL3XhkAr097D4ZevWrk6pX59No7Bi8cJVlnUWGCbH+UYssaKeT9o4zmY3rK9w==
+	]]>
+	<![CDATA[
+	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
+	]]>
+	<![CDATA[
+	yMIq3d4EJhVwf9dgSu2ZMiUn090yUkRd1AWZJxuyMt3OQxc0rNZk3wXda7RIUYjgElGkwqNK/Fbo
+fQJdEtsgDjnt+YVwtsjTJAFaRSEecAwp4PiYTRK4iwu7UGGkmV5kl0t20cVIMzYRRC+i250qVEYl
+BaZHEFCY2WYwwDCIplq5kAcptBMIKYxGIuQTO5GYhRHIhCj5dkIh+3w2UiFldmIhhRHJBb6JSDCM
+IWLSh5ZcYyUagoKoZEOVChvhMIWhSWdeeqglz8PFjJEYGYQ7qLjpTcYjk8wGvUinlwZThLqamkd/
+pUDUjbxMlQtF0J5Y1ULRMvCAjDhR0mvAkyKDEZDHvVmFKAgmRXOiJsFM3AiKrrTyVKWRFXylkmQA
+oqyoNLPG0GdU6rVltR4sYtQtvciiOOWlmEW3yiusuqUjiHVuFEjQDsanqDLZu6a0C73nJUIyvEi3
+QABungQ5FKg3knZFVFWqnSq4cWROBCeplmcCd66ixWXWzUJm3pnCMDNv8pQx91AUdfZtkk9QTHU/
+IgUwuXImDZAxRaUCixtGpwPG4xKaEgh0Oy2QwqjUMC9pIZrSYhZlRicGsgzwBSJIeCra9CJKOxh+
+I+SJkWLgQaA5byy+JF5nE5nk4OXplqikmWi6fLbbVGVXw0umbiS9Iw1ndxtzZS8nLkiwTzRskKAu
+Oz4o9UbEiOnlY5c6F6w4u96YH6FFWpZY/YGj9rRWRHom6+EO9pm2GoKWErKPCq1wIk0zA8ImCoap
+lNAdVDvs+ZKGc2BmITM0jylzDI8tCztAZy/mOMuaOCFHXOIBBdgEF8vhSZd44iV+RR7BDjvod3v/
+qxVcTAajf40C7AV+eLuNTdNTAyr2lCZYAEhMAgZeoceIqi4kJksvaphFSoGG1TXMD12KmA8BHbep
+hX82Y7nyoP/60f/ov522J+/aEZ7uEdvGRDfQisZDGKr9LjkmIUOOVzwQ6akM5dFgOAZWGPdGXUB2
+LIdv+gMsPm6PPsexz/7gf/qx/mAS+z+WIxR03yJFyXkEmZ24PwfI48mIJHg+Jgn73d55nceArkjn
+iQyZArxEH4OIu0SApAv8IkMkHPwrKloZi4pf8hl0SPuOBlGSDwt5+iFPtwGcH6Jng3yINYwP4Qf9
+En74fcrpX3Lmh7Sv+MO1s+zv/yf28apNGsyiNmUrK6ftt97lqP3xhedqvI3b/+nF2v0+Js72hvAq
+9jbqjYGYe7Hx++B/sAQ/Mj5YWame1Bb++X8B1IaZMw==
+	]]>
+</i:pgf>
+</svg>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/examples/minibrowserwidgetplugin/resource/minibrowserwidgetplugin.xml	Fri Jul 09 14:36:01 2010 +0300
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<service>
+    <name>minibrowserwidgetplugin</name>
+    <filepath>minibrowserwidgetplugin</filepath>
+    <description>Example widget</description>
+    <interface>
+        <name>com.nokia.symbian.IHomeScreenWidget</name>
+        <version>1.0</version>
+        <description>Example of home screen widget</description>
+    </interface>
+</service>
Binary file homescreenapp/examples/minibrowserwidgetplugin/resource/minibrowserwidgetpluginpreview.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/examples/minibrowserwidgetplugin/sis/minibrowserwidgetplugin.bat	Fri Jul 09 14:36:01 2010 +0300
@@ -0,0 +1,30 @@
+@rem
+@rem Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+@echo off
+
+if exist minibrowserwidgetplugin.sisx del minibrowserwidgetplugin.sisx
+
+makesis minibrowserwidgetplugin.pkg
+signsis minibrowserwidgetplugin.sis minibrowserwidgetplugin.sisx ../../../sis/rd.cer ../../../sis/rd-key.pem
+
+if exist minibrowserwidgetplugin.sisx (
+echo minibrowserwidgetplugin.sisx creation SUCCEEDED
+del minibrowserwidgetplugin.sis
+)
+
+if not exist minibrowserwidgetplugin.sisx (
+echo minibrowserwidgetplugin.sisx creation FAILED
+)
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/examples/minibrowserwidgetplugin/sis/minibrowserwidgetplugin.pkg	Fri Jul 09 14:36:01 2010 +0300
@@ -0,0 +1,45 @@
+;
+; Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+; All rights reserved.
+; This component and the accompanying materials are made available
+; under the terms of "Eclipse Public License v1.0"
+; which accompanies this distribution, and is available
+; at the URL "http://www.eclipse.org/legal/epl-v10.html".
+;
+; Initial Contributors:
+; Nokia Corporation - initial contribution.
+;
+; Contributors:
+;
+; Description:
+;
+
+; Language
+&EN
+
+; SIS header: name, uid, version
+#{"minibrowserwidgetplugin"},(0x20022F6F),1,0,0
+
+; Localised Vendor name
+%{"Vendor"}
+
+; Unique Vendor name
+:"Vendor"
+
+; Manual PKG pre-rules from PRO files
+; Default HW/platform dependencies
+[0x101F7961],0,0,0,{"S60ProductID"}
+[0x102032BE],0,0,0,{"S60ProductID"}
+[0x102752AE],0,0,0,{"S60ProductID"}
+[0x1028315F],0,0,0,{"S60ProductID"}
+
+
+"../resource/minibrowserwidgetplugin.manifest"                                                      - "!:/private/20022F35/import/widgetregistry/20022F6F/minibrowserwidgetplugin.manifest",FM,"application/hs-widget-uninstall+xml",RR,RW
+ 
+"/epoc32/release/armv5/urel/minibrowserwidgetplugin.dll"                                            - "!:/sys/bin/minibrowserwidgetplugin.dll"
+"/epoc32/data/z/private/20022F35/import/widgetregistry/20022F6F/minibrowserwidgetplugin.qtplugin"   - "!:/private/20022F35/import/widgetregistry/20022F6F/minibrowserwidgetplugin.qtplugin"
+"../resource/minibrowserwidgetplugin.manifest"                                                      - "!:/private/20022F35/import/widgetregistry/20022F6F/minibrowserwidgetplugin.manifest"
+"../resource/minibrowserwidgetplugin.xml"                                                           - "!:/private/20022F35/import/widgetregistry/20022F6F/minibrowserwidgetplugin.xml"
+"/epoc32/data/z/private/20022F35/import/widgetregistry/20022F6F/minibrowserwidgetplugin.svg"        - "!:/private/20022F35/import/widgetregistry/20022F6F/minibrowserwidgetplugin.svg"
+"/epoc32/data/z/private/20022F35/import/widgetregistry/20022F6F/minibrowserwidgetpluginpreview.png" - "!:/private/20022F35/import/widgetregistry/20022F6F/minibrowserwidgetpluginpreview.png"
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/examples/minibrowserwidgetplugin/sis/minibrowserwidgetplugin_winscw.pkg	Fri Jul 09 14:36:01 2010 +0300
@@ -0,0 +1,44 @@
+;
+; Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+; All rights reserved.
+; This component and the accompanying materials are made available
+; under the terms of "Eclipse Public License v1.0"
+; which accompanies this distribution, and is available
+; at the URL "http://www.eclipse.org/legal/epl-v10.html".
+;
+; Initial Contributors:
+; Nokia Corporation - initial contribution.
+;
+; Contributors:
+;
+; Description:
+;
+
+; Language
+&EN
+
+; SIS header: name, uid, version
+#{"minibrowserwidgetplugin"},(0x20022F6F),1,0,0
+
+; Localised Vendor name
+%{"Vendor"}
+
+; Unique Vendor name
+:"Vendor"
+
+; Manual PKG pre-rules from PRO files
+; Default HW/platform dependencies
+[0x101F7961],0,0,0,{"S60ProductID"}
+[0x102032BE],0,0,0,{"S60ProductID"}
+[0x102752AE],0,0,0,{"S60ProductID"}
+[0x1028315F],0,0,0,{"S60ProductID"}
+
+
+"../resource/minibrowserwidgetplugin.manifest"                                                      - "!:/private/20022F35/import/widgetregistry/20022F6F/minibrowserwidgetplugin.manifest",FM,"application/hs-widget-uninstall+xml",RR,RW
+ 
+"/epoc32/release/winscw/udeb/minibrowserwidgetplugin.dll"                                           - "!:/sys/bin/minibrowserwidgetplugin.dll"
+"/epoc32/data/z/private/20022F35/import/widgetregistry/20022F6F/minibrowserwidgetplugin.qtplugin"   - "!:/private/20022F35/import/widgetregistry/20022F6F/minibrowserwidgetplugin.qtplugin"
+"../resource/minibrowserwidgetplugin.manifest"                                                      - "!:/private/20022F35/import/widgetregistry/20022F6F/minibrowserwidgetplugin.manifest"
+"../resource/minibrowserwidgetplugin.xml"                                                           - "!:/private/20022F35/import/widgetregistry/20022F6F/minibrowserwidgetplugin.xml"
+"/epoc32/data/z/private/20022F35/import/widgetregistry/20022F6F/minibrowserwidgetplugin.svg"        - "!:/private/20022F35/import/widgetregistry/20022F6F/minibrowserwidgetplugin.svg"
+"/epoc32/data/z/private/20022F35/import/widgetregistry/20022F6F/minibrowserwidgetpluginpreview.png" - "!:/private/20022F35/import/widgetregistry/20022F6F/minibrowserwidgetpluginpreview.png"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/examples/minibrowserwidgetplugin/src/minibrowserwidget.cpp	Fri Jul 09 14:36:01 2010 +0300
@@ -0,0 +1,221 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Example of home screen widget
+*
+*/
+
+#include <QDebug>
+#include <QGraphicsLinearLayout>
+#include <QGraphicsWebView>
+#include <HbPushButton>
+#include <HbLineEdit>
+#include <HbFrameDrawer>
+#include <HbFrameItem>
+#include <HbDeviceProfile>
+#include "minibrowserwidget.h"
+
+/*!
+    \ingroup group_minibrowser_widget
+    \class MiniBrowserWidget
+    \brief Example implementation for home screen widget.
+
+    MiniBrowserWidget derived from the HbWidget and implements 
+    needed functions for the home screen widget. 
+    As name suggests MiniBrowserWidget is a small web browser widget in
+    the home screen. 
+    
+    Mini browser widget demonstrates the following home screen widget features:
+    <ol>
+    <li> home screen online/offline state, see \ref sssection_isonline </li>
+    <li> preferences, see \ref sssection_setpreferences </li>
+    </ol>
+    It also shows use of HbPushButton and HbLineEdit widgets. 
+    @image html hs_minibrowser.png
+    
+    
+*/
+
+/*!
+    Constructs a widget which is a child of \a parent, with widget flags set to \a flags.
+    Widget creates two buttons ('go' and 'stop'), text field to write url and browser view.
+    Note that this is just an simple example so this creates child widgets directly to the layout.
+    For more complicated widget layouting, see Orbit documentation and especially WidgetML section of it.
+*/
+MiniBrowserWidget::MiniBrowserWidget(QGraphicsItem* parent, Qt::WindowFlags flags)
+    : HbWidget(parent, flags)
+{
+    QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Vertical);
+    setLayout(layout);
+    
+    QGraphicsLinearLayout *buttonLayout = new QGraphicsLinearLayout(Qt::Horizontal);
+    mGoButton = new HbPushButton("Go");
+    connect(mGoButton, SIGNAL(pressed()), SLOT(pressGoButton()));
+    buttonLayout->addItem(mGoButton);
+    mStopButton = new HbPushButton("Stop");
+    connect(mStopButton, SIGNAL(pressed()), SLOT(pressStopButton()));
+    buttonLayout->addItem(mStopButton);
+    mStopButton->setEnabled(false);
+    mEditor = new HbLineEdit();
+    buttonLayout->addItem(mEditor);
+    
+    layout->addItem(buttonLayout);
+
+    mWeb = new QGraphicsWebView();
+    layout->addItem(mWeb);
+    
+    connect(mWeb, SIGNAL(loadStarted()), SLOT(loadStarted()));
+    connect(mWeb, SIGNAL(loadProgress(int)), SLOT(loadProgress(int)));
+    connect(mWeb, SIGNAL(loadFinished(bool)), SLOT(loadFinished(bool)));
+
+    // maximum size of the home screen widget is (48,39) units. Convert units to pixels and 
+    // resize minibrowser as maximum size
+    HbFrameDrawer *drawer = new HbFrameDrawer(
+        QLatin1String("qtg_fr_hsshortcut_normal"), HbFrameDrawer::NinePieces);
+    setBackgroundItem(new HbFrameItem(drawer));
+    
+    HbDeviceProfile profile;
+    qreal factor = profile.unitValue();
+    setPreferredSize(48*factor, 39*factor);
+    resize(preferredSize());
+    
+    mUrl = QString("http://www.nokia.com");
+}
+
+/*!
+    Destructor
+*/
+MiniBrowserWidget::~MiniBrowserWidget()
+{
+}
+
+/*!
+    Returns widget's online state
+*/
+// Start of snippet 1
+bool MiniBrowserWidget::isOnline()
+{ 
+    return mOnline;
+}
+
+/*!
+    Sets online state of the widget as \a online
+*/
+void MiniBrowserWidget::setOnline(bool online)
+{ 
+    mOnline = online;
+}
+// End of snippet 1
+
+/*!
+    Returns url of the widget currently showing.
+*/
+// Start of snippet 2
+QString MiniBrowserWidget::url() const
+{
+    return mUrl;
+}
+
+/*!
+    Sets url of the widget as \a url
+*/
+void MiniBrowserWidget::setUrl(const QString& url)
+{
+    mUrl = url;
+}
+// End of snippet 2
+
+/*!
+    Called when widget is initialized and all to properties are set
+*/
+void MiniBrowserWidget::onInitialize()
+{
+    mGoButton->setEnabled(mOnline);
+    mEditor->setText(mUrl);
+}
+
+/*!
+    Called when widget is shown in the home screen
+*/
+// Start of snippet 3
+void MiniBrowserWidget::onShow()
+{
+    if (mOnline) {
+        mWeb->load(QUrl(mUrl));
+        mStopButton->setEnabled(true);
+        }
+}
+// End of snippet 3
+
+/*!
+    Called when widget is hidden from the home screen.
+    Widget can decide what is appropriate action when 
+    widget is not visible on the screen. At least it
+    should not update itself as often as when on the 
+    screen to save battery etc.
+*/
+// Start of snippet 4
+void MiniBrowserWidget::onHide()
+{
+    mWeb->stop();
+}
+// End of snippet 4
+
+/*!
+    Slot connected to 'go' button
+*/
+// Start of snippet 5
+void MiniBrowserWidget::pressGoButton()
+{
+    setUrl(mEditor->text());
+    if (mOnline) {
+        mWeb->load(QUrl(mUrl));
+        mStopButton->setEnabled(true);
+        }
+    QStringList list;
+    list.append("url");
+    emit setPreferences(list);
+}
+// End of snippet 5
+
+/*!
+    Slot connected to 'stop' button
+*/
+void MiniBrowserWidget::pressStopButton()
+{
+    mWeb->stop();
+    //mStopButton->setEnabled(false);
+}
+
+/*!
+    Slot connected to webview's loadProgress signal
+    TODO: check if this is needed.
+*/
+void MiniBrowserWidget::loadProgress(int progress)
+{
+    Q_UNUSED(progress)
+    qDebug() << progress;
+}
+
+/*!
+    Slot connected to webview's loadFinished signal
+*/
+void MiniBrowserWidget::loadFinished(bool ok)
+{
+    Q_UNUSED(ok)
+    mStopButton->setEnabled(false);
+}
+void MiniBrowserWidget::loadStarted()
+{
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/examples/minibrowserwidgetplugin/src/minibrowserwidgetplugin.cpp	Fri Jul 09 14:36:01 2010 +0300
@@ -0,0 +1,49 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Example of home screen widget
+*
+*/
+
+#include <qserviceinterfacedescriptor.h>
+#include <qabstractsecuritysession.h>
+#include <qservicecontext.h>
+
+#include "minibrowserwidgetplugin.h"
+#include "minibrowserwidget.h"
+
+/*!
+    \ingroup group_minibrowser_widget
+    \class MiniBrowserWidgetPlugin
+    \brief Example implementation for home screen widget plugin.
+*/    
+    
+/*!
+    Initialize plugin for minibrowser widget. Contains necessary information about 
+    the minibrowser widget that it can be loaded through QT Service Framework.
+*/
+QObject *MiniBrowserWidgetPlugin::createInstance(const QServiceInterfaceDescriptor &descriptor,
+                                             QServiceContext *context,
+                                             QAbstractSecuritySession *session)
+{
+    Q_UNUSED(context);
+    Q_UNUSED(session);
+
+    if (descriptor.interfaceName() == QLatin1String("com.nokia.symbian.IHomeScreenWidget")) {
+        return new MiniBrowserWidget();
+    } else {
+        return 0;
+    }
+}
+
+Q_EXPORT_PLUGIN2(minibrowserwidgetplugin, MiniBrowserWidgetPlugin)
--- a/homescreenapp/homescreenapp.pro	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/homescreenapp.pro	Fri Jul 09 14:36:01 2010 +0300
@@ -18,7 +18,6 @@
 
 SUBDIRS  += hsutils \
             hsdomainmodel \
-            runtimeplugins \
             serviceproviders \
             stateplugins \
             widgetplugins \
@@ -27,7 +26,8 @@
 
 symbian: {
 SUBDIRS  += hshomescreenclientplugin \
-            hswidgetuninstaller
+            hswidgetuninstaller \
+            hsapplicationlauncher
 }
 
 SUBDIRS  += ./../tsrc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/conf/base/confml/CI_homescreendb.confml	Fri Jul 09 14:36:01 2010 +0300
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<confml:configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:confml="http://www.s60.com/xml/confml/2" xsi:schemaLocation="http://www.s60.com/xml/confml/2 http://www.s60.com/xml/confml/1#//confml2" name="HomeScreen database settings">
+  <confml:feature ref="HomeScreenDbSettings" name="HomeScreen database settings">
+    <confml:setting ref="Pages" mapKey="id" mapValue="id" name="Pages" type="sequence">
+      <confml:setting ref="id" name="ID" type="int"/>
+      <confml:setting ref="indexPosition" name="Index Position" type="int"/>
+    </confml:setting>
+    <confml:setting ref="Widgets" mapKey="id" mapValue="id" name="Widgets" type="sequence">
+      <confml:setting ref="id" name="ID" type="int"/>
+      <confml:setting ref="uri" name="URI" type="string"/>
+      <confml:setting ref="pageId" name="Page ID" type="selection">
+        <confml:option map="HomeScreenDbSettings/Pages"/>
+      </confml:setting>
+    </confml:setting>
+    <confml:setting ref="WidgetPresentations" name="Widget presentations" type="sequence">
+      <confml:setting ref="key" name="Key" type="string"/>
+      <confml:setting ref="x" name="X position" type="real"/>
+      <confml:setting ref="y" name="Y position" type="real"/>
+      <confml:setting ref="zValue" name="Z value" type="real"/>
+      <confml:setting ref="widgetId" name="Widget ID" type="selection">
+        <confml:option map="HomeScreenDbSettings/Widgets"/>
+      </confml:setting>
+    </confml:setting>
+    <confml:setting ref="WidgetPreferences" name="Widget preferences" type="sequence">
+      <confml:setting ref="key" name="Key" type="string"/>
+      <confml:setting ref="value" name="Value" type="string"/>
+      <confml:setting ref="widgetId" name="Widget ID" type="selection">
+        <confml:option map="HomeScreenDbSettings/Widgets"/>
+      </confml:setting>
+    </confml:setting>
+    <confml:setting ref="Configuration" name="Configuration" type="sequence">
+      <confml:setting ref="key" name="Key" type="string"/>
+      <confml:setting ref="value" name="Value" type="string"/>
+    </confml:setting>
+  </confml:feature>
+  <confml:data>
+    <confml:HomeScreenDbSettings>
+      <confml:Widgets><confml:id>1</confml:id><confml:uri>hsclockwidgetplugin</confml:uri><confml:pageId  map="HomeScreenDbSettings/Pages[@key='1']"></confml:pageId></confml:Widgets>
+      <confml:Widgets><confml:id>2</confml:id><confml:uri>dialerwidgetplugin</confml:uri><confml:pageId map="HomeScreenDbSettings/Pages[@key='1']"></confml:pageId></confml:Widgets>
+      <confml:Widgets><confml:id>3</confml:id><confml:uri>ftuhswidget</confml:uri><confml:pageId map="HomeScreenDbSettings/Pages[@key='1']"></confml:pageId></confml:Widgets>
+      <confml:Widgets><confml:id>4</confml:id><confml:uri>hsshortcutwidgetplugin</confml:uri><confml:pageId map="HomeScreenDbSettings/Pages[@key='2']"></confml:pageId></confml:Widgets>
+      <confml:Widgets><confml:id>5</confml:id><confml:uri>hsshortcutwidgetplugin</confml:uri><confml:pageId map="HomeScreenDbSettings/Pages[@key='2']"></confml:pageId></confml:Widgets>
+      <confml:Widgets><confml:id>6</confml:id><confml:uri>hsshortcutwidgetplugin</confml:uri><confml:pageId map="HomeScreenDbSettings/Pages[@key='2']"></confml:pageId></confml:Widgets>
+      <confml:Widgets><confml:id>7</confml:id><confml:uri>hsshortcutwidgetplugin</confml:uri><confml:pageId map="HomeScreenDbSettings/Pages[@key='2']"></confml:pageId></confml:Widgets>
+      <confml:Widgets><confml:id>8</confml:id><confml:uri>hsshortcutwidgetplugin</confml:uri><confml:pageId map="HomeScreenDbSettings/Pages[@key='2']"></confml:pageId></confml:Widgets>
+      <confml:Widgets><confml:id>9</confml:id><confml:uri>hsshortcutwidgetplugin</confml:uri><confml:pageId map="HomeScreenDbSettings/Pages[@key='2']"></confml:pageId></confml:Widgets>
+      <confml:Widgets><confml:id>10</confml:id><confml:uri>hsshortcutwidgetplugin</confml:uri><confml:pageId map="HomeScreenDbSettings/Pages[@key='2']"></confml:pageId></confml:Widgets>
+      <confml:Widgets><confml:id>11</confml:id><confml:uri>hsshortcutwidgetplugin</confml:uri><confml:pageId map="HomeScreenDbSettings/Pages[@key='3']"></confml:pageId></confml:Widgets>
+      <confml:Widgets><confml:id>12</confml:id><confml:uri>hsshortcutwidgetplugin</confml:uri><confml:pageId map="HomeScreenDbSettings/Pages[@key='3']"></confml:pageId></confml:Widgets>
+      <confml:Widgets><confml:id>13</confml:id><confml:uri>hsshortcutwidgetplugin</confml:uri><confml:pageId map="HomeScreenDbSettings/Pages[@key='3']"></confml:pageId></confml:Widgets>
+      <confml:WidgetPresentations><confml:key>portrait</confml:key><confml:x>15</confml:x><confml:y>80</confml:y><confml:zValue>0.0</confml:zValue><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='1']"></confml:widgetId></confml:WidgetPresentations>
+      <confml:WidgetPresentations><confml:key>landscape</confml:key><confml:x>15</confml:x><confml:y>80</confml:y><confml:zValue>0.0</confml:zValue><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='1']"></confml:widgetId></confml:WidgetPresentations>
+      <confml:WidgetPresentations><confml:key>portrait</confml:key><confml:x>136</confml:x><confml:y>276</confml:y><confml:zValue>0.0</confml:zValue><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='2']"></confml:widgetId></confml:WidgetPresentations>
+      <confml:WidgetPresentations><confml:key>landscape</confml:key><confml:x>136</confml:x><confml:y>176</confml:y><confml:zValue>0.0</confml:zValue><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='2']"></confml:widgetId></confml:WidgetPresentations>
+      <confml:WidgetPresentations><confml:key>portrait</confml:key><confml:x>15</confml:x><confml:y>400</confml:y><confml:zValue>0.0</confml:zValue><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='3']"></confml:widgetId></confml:WidgetPresentations>
+      <confml:WidgetPresentations><confml:key>landscape</confml:key><confml:x>300</confml:x><confml:y>150</confml:y><confml:zValue>0.0</confml:zValue><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='3']"></confml:widgetId></confml:WidgetPresentations>
+      <confml:WidgetPresentations><confml:key>portrait</confml:key><confml:x>15</confml:x><confml:y>80</confml:y><confml:zValue>0.0</confml:zValue><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='4']"></confml:widgetId></confml:WidgetPresentations>
+      <confml:WidgetPresentations><confml:key>portrait</confml:key><confml:x>100</confml:x><confml:y>80</confml:y><confml:zValue>0.0</confml:zValue><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='5']"></confml:widgetId></confml:WidgetPresentations>
+      <confml:WidgetPresentations><confml:key>portrait</confml:key><confml:x>185</confml:x><confml:y>80</confml:y><confml:zValue>0.0</confml:zValue><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='6']"></confml:widgetId></confml:WidgetPresentations>
+      <confml:WidgetPresentations><confml:key>portrait</confml:key><confml:x>270</confml:x><confml:y>80</confml:y><confml:zValue>0.0</confml:zValue><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='7']"></confml:widgetId></confml:WidgetPresentations>
+      <confml:WidgetPresentations><confml:key>portrait</confml:key><confml:x>15</confml:x><confml:y>185</confml:y><confml:zValue>0.0</confml:zValue><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='8']"></confml:widgetId></confml:WidgetPresentations>
+      <confml:WidgetPresentations><confml:key>portrait</confml:key><confml:x>100</confml:x><confml:y>185</confml:y><confml:zValue>0.0</confml:zValue><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='9']"></confml:widgetId></confml:WidgetPresentations>
+      <confml:WidgetPresentations><confml:key>portrait</confml:key><confml:x>185</confml:x><confml:y>185</confml:y><confml:zValue>0.0</confml:zValue><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='10']"></confml:widgetId></confml:WidgetPresentations>
+      <confml:WidgetPresentations><confml:key>portrait</confml:key><confml:x>15</confml:x><confml:y>80</confml:y><confml:zValue>0.0</confml:zValue><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='11']"></confml:widgetId></confml:WidgetPresentations>
+      <confml:WidgetPresentations><confml:key>portrait</confml:key><confml:x>100</confml:x><confml:y>80</confml:y><confml:zValue>0.0</confml:zValue><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='12']"></confml:widgetId></confml:WidgetPresentations>
+      <confml:WidgetPresentations><confml:key>portrait</confml:key><confml:x>185</confml:x><confml:y>80</confml:y><confml:zValue>0.0</confml:zValue><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='13']"></confml:widgetId></confml:WidgetPresentations>
+      <confml:WidgetPreferences><confml:key>clockType</confml:key><confml:value>Analog</confml:value><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='1']"></confml:widgetId></confml:WidgetPreferences>
+      <confml:WidgetPreferences><confml:key>uid</confml:key><confml:value>0x20022EF9</confml:value><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='4']"></confml:widgetId></confml:WidgetPreferences>
+      <confml:WidgetPreferences><confml:key>uid</confml:key><confml:value>0x10005901</confml:value><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='5']"></confml:widgetId></confml:WidgetPreferences>
+      <confml:WidgetPreferences><confml:key>uid</confml:key><confml:value>0x20029F80</confml:value><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='6']"></confml:widgetId></confml:WidgetPreferences>
+      <confml:WidgetPreferences><confml:key>uid</confml:key><confml:value>0x2001FE79</confml:value><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='7']"></confml:widgetId></confml:WidgetPreferences>
+      <confml:WidgetPreferences><confml:key>uid</confml:key><confml:value>0x10207C62</confml:value><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='8']"></confml:widgetId></confml:WidgetPreferences>
+      <confml:WidgetPreferences><confml:key>uid</confml:key><confml:value>0x10005951</confml:value><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='9']"></confml:widgetId></confml:WidgetPreferences>
+      <confml:WidgetPreferences><confml:key>uid</confml:key><confml:value>0x20025FD9</confml:value><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='10']"></confml:widgetId></confml:WidgetPreferences>
+      <confml:WidgetPreferences><confml:key>uid</confml:key><confml:value>0x102828D6</confml:value><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='11']"></confml:widgetId></confml:WidgetPreferences>
+      <confml:WidgetPreferences><confml:key>uid</confml:key><confml:value>0x101FB751</confml:value><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='12']"></confml:widgetId></confml:WidgetPreferences>
+      <confml:WidgetPreferences><confml:key>uid</confml:key><confml:value>0x100059EE</confml:value><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='13']"></confml:widgetId></confml:WidgetPreferences>
+      <confml:Pages><confml:id>1</confml:id><confml:indexPosition>0</confml:indexPosition></confml:Pages>
+      <confml:Pages><confml:id>2</confml:id><confml:indexPosition>1</confml:indexPosition></confml:Pages>
+      <confml:Pages><confml:id>3</confml:id><confml:indexPosition>2</confml:indexPosition></confml:Pages>
+      <confml:Configuration><confml:key>bounceEffect</confml:key><confml:value>20</confml:value></confml:Configuration>
+      <confml:Configuration><confml:key>widgetTapAndHoldTimeout</confml:key><confml:value>500</confml:value></confml:Configuration>
+      <confml:Configuration><confml:key>sceneTapAndHoldTimeout</confml:key><confml:value>500</confml:value></confml:Configuration>
+      <confml:Configuration><confml:key>pageChangeAnimationDuration</confml:key><confml:value>200</confml:value></confml:Configuration>
+      <confml:Configuration><confml:key>pageChangeZoneAnimationDuration</confml:key><confml:value>800</confml:value></confml:Configuration>
+      <confml:Configuration><confml:key>pageChangeZoneReverseAnimationDuration</confml:key><confml:value>200</confml:value></confml:Configuration>
+      <confml:Configuration><confml:key>pageRemovedAnimationDuration</confml:key><confml:value>200</confml:value></confml:Configuration>
+      <confml:Configuration><confml:key>newPageAddedAnimationDuration</confml:key><confml:value>200</confml:value></confml:Configuration>
+      <confml:Configuration><confml:key>widgetDragEffectDuration</confml:key><confml:value>200</confml:value></confml:Configuration>
+      <confml:Configuration><confml:key>widgetDropEffectDuration</confml:key><confml:value>200</confml:value></confml:Configuration>
+      <confml:Configuration><confml:key>defaultPageId</confml:key><confml:value>1</confml:value></confml:Configuration>
+      <confml:Configuration><confml:key>maximumPageCount</confml:key><confml:value>8</confml:value></confml:Configuration>
+      <confml:Configuration><confml:key>isShortcutLabelVisible</confml:key><confml:value>true</confml:value></confml:Configuration>
+      <confml:Configuration><confml:key>bounceFeedbackEffectDistance</confml:key><confml:value>3</confml:value></confml:Configuration>
+      <confml:Configuration><confml:key>pageChangePanDistanceInPixels</confml:key><confml:value>120</confml:value></confml:Configuration>
+      <confml:Configuration><confml:key>tapAndHoldDistance</confml:key><confml:value>16</confml:value></confml:Configuration>
+      <confml:Configuration><confml:key>pageChangeZoneWidth</confml:key><confml:value>60</confml:value></confml:Configuration>
+      <confml:Configuration><confml:key>pageIndicatorSpacing</confml:key><confml:value>8</confml:value></confml:Configuration>
+      <confml:Configuration><confml:key>maximumWidgetHeight</confml:key><confml:value>39</confml:value></confml:Configuration>
+      <confml:Configuration><confml:key>maximumWidgetWidth</confml:key><confml:value>48</confml:value></confml:Configuration>
+      <confml:Configuration><confml:key>minimumWidgetHeight</confml:key><confml:value>8.75</confml:value></confml:Configuration>
+      <confml:Configuration><confml:key>minimumWidgetWidth</confml:key><confml:value>8.75</confml:value></confml:Configuration>
+      <confml:Configuration><confml:key>pageChangePanDistance</confml:key><confml:value>17.91</confml:value></confml:Configuration>
+      <confml:Configuration><confml:key>pageChangeFeedbackEffect</confml:key><confml:value>Sensitive</confml:value></confml:Configuration>
+      <confml:Configuration><confml:key>widgetPickFeedbackEffect</confml:key><confml:value>ItemPick</confml:value></confml:Configuration>
+      <confml:Configuration><confml:key>widgetDropFeedbackEffect</confml:key><confml:value>ItemDrop</confml:value></confml:Configuration>
+      <confml:Configuration><confml:key>widgetRepositionFeedbackEffect</confml:key><confml:value>BounceEffect</confml:value></confml:Configuration>
+      <confml:Configuration><confml:key>widgetOverTrashbinFeedbackEffect</confml:key><confml:value>ItemMoveOver</confml:value></confml:Configuration>
+      <confml:Configuration><confml:key>widgetDropToTrashbinFeedbackEffect</confml:key><confml:value>ItemDrop</confml:value></confml:Configuration>
+      <confml:Configuration><confml:key>shortcutWidgetTapFeedbackEffect</confml:key><confml:value>BasicItem</confml:value></confml:Configuration>
+      <confml:Configuration><confml:key>widgetMoveBlockedFeedbackEffect</confml:key><confml:value>Basic</confml:value></confml:Configuration>
+      <confml:Configuration><confml:key>clockWidgetTapFeedbackEffect</confml:key><confml:value>BasicItem</confml:value></confml:Configuration>
+      <confml:Configuration><confml:key>widgetSnappingFeedbackEffect</confml:key><confml:value>ItemMoveOver</confml:value></confml:Configuration>
+      <confml:Configuration><confml:key>isSnapEnabled</confml:key><confml:value>true</confml:value></confml:Configuration>
+      <confml:Configuration><confml:key>snapTimeout</confml:key><confml:value>100</confml:value></confml:Configuration>
+      <confml:Configuration><confml:key>snapForce</confml:key><confml:value>30</confml:value></confml:Configuration>
+      <confml:Configuration><confml:key>snapGap</confml:key><confml:value>6</confml:value></confml:Configuration>
+      <confml:Configuration><confml:key>pageMargin</confml:key><confml:value>0</confml:value></confml:Configuration>
+      <confml:Configuration><confml:key>snapLineFadeInDuration</confml:key><confml:value>200</confml:value></confml:Configuration>
+      <confml:Configuration><confml:key>snapLineFadeOutDuration</confml:key><confml:value>100</confml:value></confml:Configuration>
+      <confml:Configuration><confml:key>isSnapEffectsEnabled</confml:key><confml:value>true</confml:value></confml:Configuration>
+      <confml:Configuration><confml:key>sceneType</confml:key><confml:value>PageWallpapers</confml:value></confml:Configuration>
+    </confml:HomeScreenDbSettings>
+  </confml:data>
+</confml:configuration>
--- a/homescreenapp/hsapplication/conf/base/confml/homescreendb.confml	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/hsapplication/conf/base/confml/homescreendb.confml	Fri Jul 09 14:36:01 2010 +0300
@@ -1,125 +1,125 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<confml:configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:confml="http://www.s60.com/xml/confml/2" xsi:schemaLocation="http://www.s60.com/xml/confml/2 http://www.s60.com/xml/confml/1#//confml2" name="HomeScreen database settings">
-  <confml:feature ref="HomeScreenDbSettings" name="HomeScreen database settings">
-    <confml:setting ref="Pages" mapKey="id" mapValue="id" name="Pages" type="sequence">
-      <confml:setting ref="id" name="ID" type="int"/>
-      <confml:setting ref="indexPosition" name="Index Position" type="int"/>
-    </confml:setting>
-    <confml:setting ref="Widgets" mapKey="id" mapValue="id" name="Widgets" type="sequence">
-      <confml:setting ref="id" name="ID" type="int"/>
-      <confml:setting ref="uri" name="URI" type="string"/>
-      <confml:setting ref="pageId" name="Page ID" type="selection">
-        <confml:option map="HomeScreenDbSettings/Pages"/>
-      </confml:setting>
-    </confml:setting>
-    <confml:setting ref="WidgetPresentations" name="Widget presentations" type="sequence">
-      <confml:setting ref="key" name="Key" type="string"/>
-      <confml:setting ref="x" name="X position" type="real"/>
-      <confml:setting ref="y" name="Y position" type="real"/>
-      <confml:setting ref="zValue" name="Z value" type="real"/>
-      <confml:setting ref="widgetId" name="Widget ID" type="selection">
-        <confml:option map="HomeScreenDbSettings/Widgets"/>
-      </confml:setting>
-    </confml:setting>
-    <confml:setting ref="WidgetPreferences" name="Widget preferences" type="sequence">
-      <confml:setting ref="key" name="Key" type="string"/>
-      <confml:setting ref="value" name="Value" type="string"/>
-      <confml:setting ref="widgetId" name="Widget ID" type="selection">
-        <confml:option map="HomeScreenDbSettings/Widgets"/>
-      </confml:setting>
-    </confml:setting>
-    <confml:setting ref="Configuration" name="Configuration" type="sequence">
-      <confml:setting ref="key" name="Key" type="string"/>
-      <confml:setting ref="value" name="Value" type="string"/>
-    </confml:setting>
-  </confml:feature>
-  <confml:data>
-    <confml:HomeScreenDbSettings>
-      <confml:Widgets><confml:id>1</confml:id><confml:uri>hsclockwidgetplugin</confml:uri><confml:pageId  map="HomeScreenDbSettings/Pages[@key='1']"></confml:pageId></confml:Widgets>
-      <confml:Widgets><confml:id>2</confml:id><confml:uri>hsdialerwidgetplugin</confml:uri><confml:pageId map="HomeScreenDbSettings/Pages[@key='1']"></confml:pageId></confml:Widgets>
-      <confml:Widgets><confml:id>3</confml:id><confml:uri>ftuhswidget</confml:uri><confml:pageId map="HomeScreenDbSettings/Pages[@key='1']"></confml:pageId></confml:Widgets>
-      <confml:Widgets><confml:id>4</confml:id><confml:uri>hsshortcutwidgetplugin</confml:uri><confml:pageId map="HomeScreenDbSettings/Pages[@key='2']"></confml:pageId></confml:Widgets>
-      <confml:Widgets><confml:id>5</confml:id><confml:uri>hsshortcutwidgetplugin</confml:uri><confml:pageId map="HomeScreenDbSettings/Pages[@key='2']"></confml:pageId></confml:Widgets>
-      <confml:Widgets><confml:id>6</confml:id><confml:uri>hsshortcutwidgetplugin</confml:uri><confml:pageId map="HomeScreenDbSettings/Pages[@key='2']"></confml:pageId></confml:Widgets>
-      <confml:Widgets><confml:id>7</confml:id><confml:uri>hsshortcutwidgetplugin</confml:uri><confml:pageId map="HomeScreenDbSettings/Pages[@key='2']"></confml:pageId></confml:Widgets>
-      <confml:Widgets><confml:id>8</confml:id><confml:uri>hsshortcutwidgetplugin</confml:uri><confml:pageId map="HomeScreenDbSettings/Pages[@key='2']"></confml:pageId></confml:Widgets>
-      <confml:Widgets><confml:id>9</confml:id><confml:uri>hsshortcutwidgetplugin</confml:uri><confml:pageId map="HomeScreenDbSettings/Pages[@key='2']"></confml:pageId></confml:Widgets>
-      <confml:Widgets><confml:id>10</confml:id><confml:uri>hsshortcutwidgetplugin</confml:uri><confml:pageId map="HomeScreenDbSettings/Pages[@key='2']"></confml:pageId></confml:Widgets>
-      <confml:Widgets><confml:id>11</confml:id><confml:uri>hsshortcutwidgetplugin</confml:uri><confml:pageId map="HomeScreenDbSettings/Pages[@key='3']"></confml:pageId></confml:Widgets>
-      <confml:Widgets><confml:id>12</confml:id><confml:uri>hsshortcutwidgetplugin</confml:uri><confml:pageId map="HomeScreenDbSettings/Pages[@key='3']"></confml:pageId></confml:Widgets>
-      <confml:Widgets><confml:id>13</confml:id><confml:uri>hsshortcutwidgetplugin</confml:uri><confml:pageId map="HomeScreenDbSettings/Pages[@key='3']"></confml:pageId></confml:Widgets>
-      <confml:WidgetPresentations><confml:key>portrait</confml:key><confml:x>15</confml:x><confml:y>80</confml:y><confml:zValue>0.0</confml:zValue><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='1']"></confml:widgetId></confml:WidgetPresentations>
-      <confml:WidgetPresentations><confml:key>landscape</confml:key><confml:x>15</confml:x><confml:y>80</confml:y><confml:zValue>0.0</confml:zValue><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='1']"></confml:widgetId></confml:WidgetPresentations>
-      <confml:WidgetPresentations><confml:key>portrait</confml:key><confml:x>136</confml:x><confml:y>276</confml:y><confml:zValue>0.0</confml:zValue><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='2']"></confml:widgetId></confml:WidgetPresentations>
-      <confml:WidgetPresentations><confml:key>landscape</confml:key><confml:x>136</confml:x><confml:y>176</confml:y><confml:zValue>0.0</confml:zValue><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='2']"></confml:widgetId></confml:WidgetPresentations>
-      <confml:WidgetPresentations><confml:key>portrait</confml:key><confml:x>15</confml:x><confml:y>400</confml:y><confml:zValue>0.0</confml:zValue><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='3']"></confml:widgetId></confml:WidgetPresentations>
-      <confml:WidgetPresentations><confml:key>landscape</confml:key><confml:x>300</confml:x><confml:y>150</confml:y><confml:zValue>0.0</confml:zValue><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='3']"></confml:widgetId></confml:WidgetPresentations>
-      <confml:WidgetPresentations><confml:key>portrait</confml:key><confml:x>15</confml:x><confml:y>80</confml:y><confml:zValue>0.0</confml:zValue><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='4']"></confml:widgetId></confml:WidgetPresentations>
-      <confml:WidgetPresentations><confml:key>portrait</confml:key><confml:x>100</confml:x><confml:y>80</confml:y><confml:zValue>0.0</confml:zValue><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='5']"></confml:widgetId></confml:WidgetPresentations>
-      <confml:WidgetPresentations><confml:key>portrait</confml:key><confml:x>185</confml:x><confml:y>80</confml:y><confml:zValue>0.0</confml:zValue><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='6']"></confml:widgetId></confml:WidgetPresentations>
-      <confml:WidgetPresentations><confml:key>portrait</confml:key><confml:x>270</confml:x><confml:y>80</confml:y><confml:zValue>0.0</confml:zValue><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='7']"></confml:widgetId></confml:WidgetPresentations>
-      <confml:WidgetPresentations><confml:key>portrait</confml:key><confml:x>15</confml:x><confml:y>185</confml:y><confml:zValue>0.0</confml:zValue><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='8']"></confml:widgetId></confml:WidgetPresentations>
-      <confml:WidgetPresentations><confml:key>portrait</confml:key><confml:x>100</confml:x><confml:y>185</confml:y><confml:zValue>0.0</confml:zValue><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='9']"></confml:widgetId></confml:WidgetPresentations>
-      <confml:WidgetPresentations><confml:key>portrait</confml:key><confml:x>185</confml:x><confml:y>185</confml:y><confml:zValue>0.0</confml:zValue><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='10']"></confml:widgetId></confml:WidgetPresentations>
-      <confml:WidgetPresentations><confml:key>portrait</confml:key><confml:x>15</confml:x><confml:y>80</confml:y><confml:zValue>0.0</confml:zValue><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='11']"></confml:widgetId></confml:WidgetPresentations>
-      <confml:WidgetPresentations><confml:key>portrait</confml:key><confml:x>100</confml:x><confml:y>80</confml:y><confml:zValue>0.0</confml:zValue><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='12']"></confml:widgetId></confml:WidgetPresentations>
-      <confml:WidgetPresentations><confml:key>portrait</confml:key><confml:x>185</confml:x><confml:y>80</confml:y><confml:zValue>0.0</confml:zValue><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='13']"></confml:widgetId></confml:WidgetPresentations>
-      <confml:WidgetPreferences><confml:key>clockType</confml:key><confml:value>Analog</confml:value><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='1']"></confml:widgetId></confml:WidgetPreferences>
-      <confml:WidgetPreferences><confml:key>uid</confml:key><confml:value>0x20022EF9</confml:value><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='4']"></confml:widgetId></confml:WidgetPreferences>
-      <confml:WidgetPreferences><confml:key>uid</confml:key><confml:value>0x10005901</confml:value><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='5']"></confml:widgetId></confml:WidgetPreferences>
-      <confml:WidgetPreferences><confml:key>uid</confml:key><confml:value>0x20029F80</confml:value><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='6']"></confml:widgetId></confml:WidgetPreferences>
-      <confml:WidgetPreferences><confml:key>uid</confml:key><confml:value>0x2001FE79</confml:value><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='7']"></confml:widgetId></confml:WidgetPreferences>
-      <confml:WidgetPreferences><confml:key>uid</confml:key><confml:value>0x10207C62</confml:value><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='8']"></confml:widgetId></confml:WidgetPreferences>
-      <confml:WidgetPreferences><confml:key>uid</confml:key><confml:value>0x10005951</confml:value><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='9']"></confml:widgetId></confml:WidgetPreferences>
-      <confml:WidgetPreferences><confml:key>uid</confml:key><confml:value>0x20025FD9</confml:value><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='10']"></confml:widgetId></confml:WidgetPreferences>
-      <confml:WidgetPreferences><confml:key>uid</confml:key><confml:value>0x102828D6</confml:value><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='11']"></confml:widgetId></confml:WidgetPreferences>
-      <confml:WidgetPreferences><confml:key>uid</confml:key><confml:value>0x101FB751</confml:value><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='12']"></confml:widgetId></confml:WidgetPreferences>
-      <confml:WidgetPreferences><confml:key>uid</confml:key><confml:value>0x100059EE</confml:value><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='13']"></confml:widgetId></confml:WidgetPreferences>
-      <confml:Pages><confml:id>1</confml:id><confml:indexPosition>0</confml:indexPosition></confml:Pages>
-      <confml:Pages><confml:id>2</confml:id><confml:indexPosition>1</confml:indexPosition></confml:Pages>
-      <confml:Pages><confml:id>3</confml:id><confml:indexPosition>2</confml:indexPosition></confml:Pages>
-      <confml:Configuration><confml:key>bounceEffect</confml:key><confml:value>20</confml:value></confml:Configuration>
-      <confml:Configuration><confml:key>widgetTapAndHoldTimeout</confml:key><confml:value>500</confml:value></confml:Configuration>
-      <confml:Configuration><confml:key>sceneTapAndHoldTimeout</confml:key><confml:value>500</confml:value></confml:Configuration>
-      <confml:Configuration><confml:key>pageChangeAnimationDuration</confml:key><confml:value>200</confml:value></confml:Configuration>
-      <confml:Configuration><confml:key>pageChangeZoneAnimationDuration</confml:key><confml:value>800</confml:value></confml:Configuration>
-      <confml:Configuration><confml:key>pageChangeZoneReverseAnimationDuration</confml:key><confml:value>200</confml:value></confml:Configuration>
-      <confml:Configuration><confml:key>pageRemovedAnimationDuration</confml:key><confml:value>200</confml:value></confml:Configuration>
-      <confml:Configuration><confml:key>newPageAddedAnimationDuration</confml:key><confml:value>200</confml:value></confml:Configuration>
-      <confml:Configuration><confml:key>widgetDragEffectDuration</confml:key><confml:value>200</confml:value></confml:Configuration>
-      <confml:Configuration><confml:key>widgetDropEffectDuration</confml:key><confml:value>200</confml:value></confml:Configuration>
-      <confml:Configuration><confml:key>defaultPageId</confml:key><confml:value>1</confml:value></confml:Configuration>
-      <confml:Configuration><confml:key>maximumPageCount</confml:key><confml:value>8</confml:value></confml:Configuration>
-      <confml:Configuration><confml:key>isShortcutLabelVisible</confml:key><confml:value>true</confml:value></confml:Configuration>
-      <confml:Configuration><confml:key>bounceFeedbackEffectDistance</confml:key><confml:value>3</confml:value></confml:Configuration>
-      <confml:Configuration><confml:key>pageChangePanDistanceInPixels</confml:key><confml:value>120</confml:value></confml:Configuration>
-      <confml:Configuration><confml:key>tapAndHoldDistance</confml:key><confml:value>16</confml:value></confml:Configuration>
-      <confml:Configuration><confml:key>pageChangeZoneWidth</confml:key><confml:value>60</confml:value></confml:Configuration>
-      <confml:Configuration><confml:key>pageIndicatorSpacing</confml:key><confml:value>8</confml:value></confml:Configuration>
-      <confml:Configuration><confml:key>maximumWidgetHeight</confml:key><confml:value>39</confml:value></confml:Configuration>
-      <confml:Configuration><confml:key>maximumWidgetWidth</confml:key><confml:value>48</confml:value></confml:Configuration>
-      <confml:Configuration><confml:key>minimumWidgetHeight</confml:key><confml:value>8.75</confml:value></confml:Configuration>
-      <confml:Configuration><confml:key>minimumWidgetWidth</confml:key><confml:value>8.75</confml:value></confml:Configuration>
-      <confml:Configuration><confml:key>pageChangePanDistance</confml:key><confml:value>17.91</confml:value></confml:Configuration>
-      <confml:Configuration><confml:key>pageChangeFeedbackEffect</confml:key><confml:value>Sensitive</confml:value></confml:Configuration>
-      <confml:Configuration><confml:key>widgetPickFeedbackEffect</confml:key><confml:value>ItemPick</confml:value></confml:Configuration>
-      <confml:Configuration><confml:key>widgetDropFeedbackEffect</confml:key><confml:value>ItemDrop</confml:value></confml:Configuration>
-      <confml:Configuration><confml:key>widgetRepositionFeedbackEffect</confml:key><confml:value>BounceEffect</confml:value></confml:Configuration>
-      <confml:Configuration><confml:key>widgetOverTrashbinFeedbackEffect</confml:key><confml:value>ItemMoveOver</confml:value></confml:Configuration>
-      <confml:Configuration><confml:key>widgetDropToTrashbinFeedbackEffect</confml:key><confml:value>ItemDrop</confml:value></confml:Configuration>
-      <confml:Configuration><confml:key>shortcutWidgetTapFeedbackEffect</confml:key><confml:value>BasicItem</confml:value></confml:Configuration>
-      <confml:Configuration><confml:key>widgetMoveBlockedFeedbackEffect</confml:key><confml:value>Basic</confml:value></confml:Configuration>
-      <confml:Configuration><confml:key>clockWidgetTapFeedbackEffect</confml:key><confml:value>BasicItem</confml:value></confml:Configuration>
-      <confml:Configuration><confml:key>widgetSnappingFeedbackEffect</confml:key><confml:value>ItemMoveOver</confml:value></confml:Configuration>
-      <confml:Configuration><confml:key>isSnapEnabled</confml:key><confml:value>true</confml:value></confml:Configuration>
-      <confml:Configuration><confml:key>snapTimeout</confml:key><confml:value>100</confml:value></confml:Configuration>
-      <confml:Configuration><confml:key>snapForce</confml:key><confml:value>30</confml:value></confml:Configuration>
-      <confml:Configuration><confml:key>snapGap</confml:key><confml:value>6</confml:value></confml:Configuration>
-      <confml:Configuration><confml:key>snapBorderGap</confml:key><confml:value>0</confml:value></confml:Configuration>
-      <confml:Configuration><confml:key>snapLineFadeInDuration</confml:key><confml:value>200</confml:value></confml:Configuration>
-      <confml:Configuration><confml:key>snapLineFadeOutDuration</confml:key><confml:value>100</confml:value></confml:Configuration>
-      <confml:Configuration><confml:key>isSnapEffectsEnabled</confml:key><confml:value>true</confml:value></confml:Configuration>
-      <confml:Configuration><confml:key>sceneType</confml:key><confml:value>PageWallpapers</confml:value></confml:Configuration>
-    </confml:HomeScreenDbSettings>
-  </confml:data>
-</confml:configuration>
+<configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:confml="http://www.s60.com/xml/confml/2" xsi:schemaLocation="http://www.s60.com/xml/confml/2 http://www.s60.com/xml/confml/1#//confml2" name="HomeScreen database settings">
+  <feature ref="HomeScreenDbSettings" name="HomeScreen database settings">
+    <setting ref="Pages" mapKey="id" mapValue="id" name="Pages" type="sequence">
+      <setting ref="id" name="ID" type="int"/>
+      <setting ref="indexPosition" name="Index Position" type="int"/>
+    </setting>
+    <setting ref="Widgets" mapKey="id" mapValue="id" name="Widgets" type="sequence">
+      <setting ref="id" name="ID" type="int"/>
+      <setting ref="uri" name="URI" type="string"/>
+      <setting ref="pageId" name="Page ID" type="selection">
+        <option map="HomeScreenDbSettings/Pages"/>
+      </setting>
+    </setting>
+    <setting ref="WidgetPresentations" name="Widget presentations" type="sequence">
+      <setting ref="key" name="Key" type="string"/>
+      <setting ref="x" name="X position" type="real"/>
+      <setting ref="y" name="Y position" type="real"/>
+      <setting ref="zValue" name="Z value" type="real"/>
+      <setting ref="widgetId" name="Widget ID" type="selection">
+        <option map="HomeScreenDbSettings/Widgets"/>
+      </setting>
+    </setting>
+    <setting ref="WidgetPreferences" name="Widget preferences" type="sequence">
+      <setting ref="key" name="Key" type="string"/>
+      <setting ref="value" name="Value" type="string"/>
+      <setting ref="widgetId" name="Widget ID" type="selection">
+        <option map="HomeScreenDbSettings/Widgets"/>
+      </setting>
+    </setting>
+    <setting ref="Configuration" name="Configuration" type="sequence">
+      <setting ref="key" name="Key" type="string"/>
+      <setting ref="value" name="Value" type="string"/>
+    </setting>
+  </feature>
+  <data>
+    <HomeScreenDbSettings>
+      <Widgets><id>1</id><uri>hsclockwidgetplugin</uri><pageId  map="HomeScreenDbSettings/Pages[@key='1']"></pageId></Widgets>
+      <Widgets><id>2</id><uri>hsdialerwidgetplugin</uri><pageId map="HomeScreenDbSettings/Pages[@key='1']"></pageId></Widgets>
+      <Widgets><id>3</id><uri>ftuhswidget</uri><pageId map="HomeScreenDbSettings/Pages[@key='1']"></pageId></Widgets>
+      <Widgets><id>4</id><uri>hsshortcutwidgetplugin</uri><pageId map="HomeScreenDbSettings/Pages[@key='2']"></pageId></Widgets>
+      <Widgets><id>5</id><uri>hsshortcutwidgetplugin</uri><pageId map="HomeScreenDbSettings/Pages[@key='2']"></pageId></Widgets>
+      <Widgets><id>6</id><uri>hsshortcutwidgetplugin</uri><pageId map="HomeScreenDbSettings/Pages[@key='2']"></pageId></Widgets>
+      <Widgets><id>7</id><uri>hsshortcutwidgetplugin</uri><pageId map="HomeScreenDbSettings/Pages[@key='2']"></pageId></Widgets>
+      <Widgets><id>8</id><uri>hsshortcutwidgetplugin</uri><pageId map="HomeScreenDbSettings/Pages[@key='2']"></pageId></Widgets>
+      <Widgets><id>9</id><uri>hsshortcutwidgetplugin</uri><pageId map="HomeScreenDbSettings/Pages[@key='2']"></pageId></Widgets>
+      <Widgets><id>10</id><uri>hsshortcutwidgetplugin</uri><pageId map="HomeScreenDbSettings/Pages[@key='2']"></pageId></Widgets>
+      <Widgets><id>11</id><uri>hsshortcutwidgetplugin</uri><pageId map="HomeScreenDbSettings/Pages[@key='3']"></pageId></Widgets>
+      <Widgets><id>12</id><uri>hsshortcutwidgetplugin</uri><pageId map="HomeScreenDbSettings/Pages[@key='3']"></pageId></Widgets>
+      <Widgets><id>13</id><uri>hsshortcutwidgetplugin</uri><pageId map="HomeScreenDbSettings/Pages[@key='3']"></pageId></Widgets>
+      <WidgetPresentations><key>portrait</key><x>15</x><y>80</y><zValue>0.0</zValue><widgetId map="HomeScreenDbSettings/Widgets[@key='1']"></widgetId></WidgetPresentations>
+      <WidgetPresentations><key>landscape</key><x>15</x><y>80</y><zValue>0.0</zValue><widgetId map="HomeScreenDbSettings/Widgets[@key='1']"></widgetId></WidgetPresentations>
+      <WidgetPresentations><key>portrait</key><x>136</x><y>276</y><zValue>0.0</zValue><widgetId map="HomeScreenDbSettings/Widgets[@key='2']"></widgetId></WidgetPresentations>
+      <WidgetPresentations><key>landscape</key><x>136</x><y>176</y><zValue>0.0</zValue><widgetId map="HomeScreenDbSettings/Widgets[@key='2']"></widgetId></WidgetPresentations>
+      <WidgetPresentations><key>portrait</key><x>15</x><y>400</y><zValue>0.0</zValue><widgetId map="HomeScreenDbSettings/Widgets[@key='3']"></widgetId></WidgetPresentations>
+      <WidgetPresentations><key>landscape</key><x>300</x><y>150</y><zValue>0.0</zValue><widgetId map="HomeScreenDbSettings/Widgets[@key='3']"></widgetId></WidgetPresentations>
+      <WidgetPresentations><key>portrait</key><x>15</x><y>80</y><zValue>0.0</zValue><widgetId map="HomeScreenDbSettings/Widgets[@key='4']"></widgetId></WidgetPresentations>
+      <WidgetPresentations><key>portrait</key><x>100</x><y>80</y><zValue>0.0</zValue><widgetId map="HomeScreenDbSettings/Widgets[@key='5']"></widgetId></WidgetPresentations>
+      <WidgetPresentations><key>portrait</key><x>185</x><y>80</y><zValue>0.0</zValue><widgetId map="HomeScreenDbSettings/Widgets[@key='6']"></widgetId></WidgetPresentations>
+      <WidgetPresentations><key>portrait</key><x>270</x><y>80</y><zValue>0.0</zValue><widgetId map="HomeScreenDbSettings/Widgets[@key='7']"></widgetId></WidgetPresentations>
+      <WidgetPresentations><key>portrait</key><x>15</x><y>185</y><zValue>0.0</zValue><widgetId map="HomeScreenDbSettings/Widgets[@key='8']"></widgetId></WidgetPresentations>
+      <WidgetPresentations><key>portrait</key><x>100</x><y>185</y><zValue>0.0</zValue><widgetId map="HomeScreenDbSettings/Widgets[@key='9']"></widgetId></WidgetPresentations>
+      <WidgetPresentations><key>portrait</key><x>185</x><y>185</y><zValue>0.0</zValue><widgetId map="HomeScreenDbSettings/Widgets[@key='10']"></widgetId></WidgetPresentations>
+      <WidgetPresentations><key>portrait</key><x>15</x><y>80</y><zValue>0.0</zValue><widgetId map="HomeScreenDbSettings/Widgets[@key='11']"></widgetId></WidgetPresentations>
+      <WidgetPresentations><key>portrait</key><x>100</x><y>80</y><zValue>0.0</zValue><widgetId map="HomeScreenDbSettings/Widgets[@key='12']"></widgetId></WidgetPresentations>
+      <WidgetPresentations><key>portrait</key><x>185</x><y>80</y><zValue>0.0</zValue><widgetId map="HomeScreenDbSettings/Widgets[@key='13']"></widgetId></WidgetPresentations>
+      <WidgetPreferences><key>clockType</key><value>Analog</value><widgetId map="HomeScreenDbSettings/Widgets[@key='1']"></widgetId></WidgetPreferences>
+      <WidgetPreferences><key>uid</key><value>0x20022EF9</value><widgetId map="HomeScreenDbSettings/Widgets[@key='4']"></widgetId></WidgetPreferences>
+      <WidgetPreferences><key>uid</key><value>0x10005901</value><widgetId map="HomeScreenDbSettings/Widgets[@key='5']"></widgetId></WidgetPreferences>
+      <WidgetPreferences><key>uid</key><value>0x20029F80</value><widgetId map="HomeScreenDbSettings/Widgets[@key='6']"></widgetId></WidgetPreferences>
+      <WidgetPreferences><key>uid</key><value>0x2001FE79</value><widgetId map="HomeScreenDbSettings/Widgets[@key='7']"></widgetId></WidgetPreferences>
+      <WidgetPreferences><key>uid</key><value>0x10207C62</value><widgetId map="HomeScreenDbSettings/Widgets[@key='8']"></widgetId></WidgetPreferences>
+      <WidgetPreferences><key>uid</key><value>0x10005951</value><widgetId map="HomeScreenDbSettings/Widgets[@key='9']"></widgetId></WidgetPreferences>
+      <WidgetPreferences><key>uid</key><value>0x20025FD9</value><widgetId map="HomeScreenDbSettings/Widgets[@key='10']"></widgetId></WidgetPreferences>
+      <WidgetPreferences><key>uid</key><value>0x102828D6</value><widgetId map="HomeScreenDbSettings/Widgets[@key='11']"></widgetId></WidgetPreferences>
+      <WidgetPreferences><key>uid</key><value>0x101FB751</value><widgetId map="HomeScreenDbSettings/Widgets[@key='12']"></widgetId></WidgetPreferences>
+      <WidgetPreferences><key>uid</key><value>0x100059EE</value><widgetId map="HomeScreenDbSettings/Widgets[@key='13']"></widgetId></WidgetPreferences>
+      <Pages><id>1</id><indexPosition>0</indexPosition></Pages>
+      <Pages><id>2</id><indexPosition>1</indexPosition></Pages>
+      <Pages><id>3</id><indexPosition>2</indexPosition></Pages>
+      <Configuration><key>bounceEffect</key><value>20</value></Configuration>
+      <Configuration><key>widgetTapAndHoldTimeout</key><value>500</value></Configuration>
+      <Configuration><key>sceneTapAndHoldTimeout</key><value>500</value></Configuration>
+      <Configuration><key>pageChangeAnimationDuration</key><value>200</value></Configuration>
+      <Configuration><key>pageChangeZoneAnimationDuration</key><value>800</value></Configuration>
+      <Configuration><key>pageChangeZoneReverseAnimationDuration</key><value>200</value></Configuration>
+      <Configuration><key>pageRemovedAnimationDuration</key><value>200</value></Configuration>
+      <Configuration><key>newPageAddedAnimationDuration</key><value>200</value></Configuration>
+      <Configuration><key>widgetDragEffectDuration</key><value>200</value></Configuration>
+      <Configuration><key>widgetDropEffectDuration</key><value>200</value></Configuration>
+      <Configuration><key>defaultPageId</key><value>1</value></Configuration>
+      <Configuration><key>maximumPageCount</key><value>8</value></Configuration>
+      <Configuration><key>isShortcutLabelVisible</key><value>true</value></Configuration>
+      <Configuration><key>bounceFeedbackEffectDistance</key><value>3</value></Configuration>
+      <Configuration><key>pageChangePanDistanceInPixels</key><value>120</value></Configuration>
+      <Configuration><key>tapAndHoldDistance</key><value>16</value></Configuration>
+      <Configuration><key>pageChangeZoneWidth</key><value>60</value></Configuration>
+      <Configuration><key>pageIndicatorSpacing</key><value>8</value></Configuration>
+      <Configuration><key>maximumWidgetHeight</key><value>39</value></Configuration>
+      <Configuration><key>maximumWidgetWidth</key><value>48</value></Configuration>
+      <Configuration><key>minimumWidgetHeight</key><value>8.75</value></Configuration>
+      <Configuration><key>minimumWidgetWidth</key><value>8.75</value></Configuration>
+      <Configuration><key>pageChangePanDistance</key><value>17.91</value></Configuration>
+      <Configuration><key>pageChangeFeedbackEffect</key><value>Sensitive</value></Configuration>
+      <Configuration><key>widgetPickFeedbackEffect</key><value>ItemPick</value></Configuration>
+      <Configuration><key>widgetDropFeedbackEffect</key><value>ItemDrop</value></Configuration>
+      <Configuration><key>widgetRepositionFeedbackEffect</key><value>BounceEffect</value></Configuration>
+      <Configuration><key>widgetOverTrashbinFeedbackEffect</key><value>ItemMoveOver</value></Configuration>
+      <Configuration><key>widgetDropToTrashbinFeedbackEffect</key><value>ItemDrop</value></Configuration>
+      <Configuration><key>shortcutWidgetTapFeedbackEffect</key><value>BasicItem</value></Configuration>
+      <Configuration><key>widgetMoveBlockedFeedbackEffect</key><value>Basic</value></Configuration>
+      <Configuration><key>clockWidgetTapFeedbackEffect</key><value>BasicItem</value></Configuration>
+      <Configuration><key>widgetSnappingFeedbackEffect</key><value>ItemMoveOver</value></Configuration>
+      <Configuration><key>isSnapEnabled</key><value>true</value></Configuration>
+      <Configuration><key>snapTimeout</key><value>100</value></Configuration>
+      <Configuration><key>snapForce</key><value>30</value></Configuration>
+      <Configuration><key>snapGap</key><value>6</value></Configuration>
+      <Configuration><key>snapBorderGap</key><value>0</value></Configuration>
+      <Configuration><key>snapLineFadeInDuration</key><value>200</value></Configuration>
+      <Configuration><key>snapLineFadeOutDuration</key><value>100</value></Configuration>
+      <Configuration><key>isSnapEffectsEnabled</key><value>true</value></Configuration>
+      <Configuration><key>sceneType</key><value>PageWallpapers</value></Configuration>
+    </HomeScreenDbSettings>
+  </data>
+</configuration>
--- a/homescreenapp/hsapplication/conf/base/implml/homescreendb.implml	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/hsapplication/conf/base/implml/homescreendb.implml	Fri Jul 09 14:36:01 2010 +0300
@@ -1,7 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <container xmlns="http://www.symbianfoundation.org/xml/implml/1">
-    <tag name="target" value="rofs3"/>
-    
+  <tag name="target" value="rofs2"/> 
+  <tag name="target" value="rofs3"/> 
+  
     <!--
     Override the setting refs so that modifying HomeScreenDbSettings
     causes the execution of both the TemplateML and CommandML
@@ -15,6 +16,10 @@
     
     <!-- TemplateML implementation to create the .sql files -->
     <templateml xmlns="http://www.s60.com/xml/templateml/1">
+    
+    <!-- just to create empty folder -->
+    <output dir="content/private/20022f35/" file="homescreen.db" encoding="UTF-8"></output>
+    
         <output dir="private/20022f35/sql/" file="create.sql" encoding="UTF-8">
             <template file="homescreendb_templates/create.sql"></template>
         </output>
@@ -26,13 +31,13 @@
     <!-- CommandML implementation to create the database using the .sql files -->
     <commandml xmlns="http://www.s60.com/xml/commandml/1">
         <command executable="sqlite3" shell="true" cwd="%CONE_OUT_ABSOLUTE%/private/20022f35/sql">
-            <argument value='../homescreen.db ".read create.sql"'/>
+            <argument value='%CONE_OUT_ABSOLUTE%/content/private/20022f35/homescreen.db ".read create.sql"'/>
         </command>
         <command executable="sqlite3" shell="true" cwd="%CONE_OUT_ABSOLUTE%/private/20022f35/sql">
-            <argument value='../homescreen.db ".genfkey --exec"'/>
+            <argument value='%CONE_OUT_ABSOLUTE%/content/private/20022f35/homescreen.db ".genfkey --exec"'/>
         </command>
         <command executable="sqlite3" shell="true" cwd="%CONE_OUT_ABSOLUTE%/private/20022f35/sql">
-            <argument value='../homescreen.db ".read fill.sql"'/>
+            <argument value='%CONE_OUT_ABSOLUTE%/content/private/20022f35/homescreen.db ".read fill.sql"'/>
         </command>
     </commandml>
 </container>
\ No newline at end of file
--- a/homescreenapp/hsapplication/hsapplication.pri	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/hsapplication/hsapplication.pri	Fri Jul 09 14:36:01 2010 +0300
@@ -14,10 +14,14 @@
 # Description:
 #
 
-HEADERS += ./inc/hshomescreen.h
+HEADERS += ./inc/hshomescreen.h \
+           ./inc/hsstatemachine.h
 SOURCES += ./src/hshomescreen.cpp \
+           ./src/hsstatemachine.cpp \        
            ./src/main.cpp
 symbian:{
-    HEADERS += ./inc/hshomescreenclientserviceprovider.h
-    SOURCES += ./src/hshomescreenclientserviceprovider.cpp 
+    HEADERS += ./inc/hshomescreenclientserviceprovider.h \
+               ./inc/hsrecoverymanager.h
+    SOURCES += ./src/hshomescreenclientserviceprovider.cpp \
+               ./src/hsrecoverymanager.cpp
 }
--- a/homescreenapp/hsapplication/hsapplication.pro	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/hsapplication/hsapplication.pro	Fri Jul 09 14:36:01 2010 +0300
@@ -18,13 +18,12 @@
 
 include(../common.pri)
 
-LIBS += -lhsutils -lhsdomainmodel
 CONFIG += console
 
-QT += xml
+#QT += xml
 
 CONFIG += hb mobility
-MOBILITY = serviceframework
+MOBILITY = serviceframework publishsubscribe
 
 fute:DEFINES += FUTE
 
@@ -56,7 +55,7 @@
     include(hsapplication_exports_to_rom.pri)    
 
     CONFIG += service
-    LIBS +=  -lxqservice -lxqserviceutil 
+    LIBS +=  -lxqservice -lxqserviceutil -lXQKeyCapture
            
     SERVICE.FILE = ipc_service_conf.xml
 }
--- a/homescreenapp/hsapplication/hsapplication_exports_to_rom.pri	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/hsapplication/hsapplication_exports_to_rom.pri	Fri Jul 09 14:36:01 2010 +0300
@@ -16,6 +16,7 @@
 
 # configuration file exports
 BLD_INF_RULES.prj_exports += \
+    "conf/base/confml/CI_homescreendb.confml                APP_LAYER_CONFML(CI_homescreendb.confml)" \
     "conf/base/confml/homescreendb.confml                   APP_LAYER_CONFML(homescreendb.confml)" \
     "conf/base/implml/homescreendb.implml                   APP_LAYER_CRML(homescreendb.implml)" \
     "conf/base/implml/homescreendb_templates/create.sql     APP_LAYER_CRML(homescreendb_templates/create.sql)" \
--- a/homescreenapp/hsapplication/inc/hshomescreen.h	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/hsapplication/inc/hshomescreen.h	Fri Jul 09 14:36:01 2010 +0300
@@ -53,7 +53,7 @@
     bool eventFilter(QObject *watched, QEvent *event);
 
 private:
-    void registerServicePlugins(QServiceManager &serviceManager);
+    void registerServicePlugins();
     void registerServicePlugins(const QString &root, QServiceManager &serviceManager);
 
 private slots:
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/inc/hsrecoverymanager.h	Fri Jul 09 14:36:01 2010 +0300
@@ -0,0 +1,51 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#ifndef HSRECOVERYMANAGER_H
+#define HSRECOVERYMANAGER_H
+
+#include <QObject>
+#include <QTimer>
+
+#include "hstest_global.h"
+HOMESCREEN_TEST_CLASS(t_hsapplication)
+
+class HsRecoveryManager : public QObject
+{
+    Q_OBJECT
+
+public:
+    HsRecoveryManager(QObject *parent = 0);
+    ~HsRecoveryManager();
+
+    void execute();
+    
+private slots:
+    void restoreRomDatabase();
+    void resetCrashCount();
+           
+private:
+    Q_DISABLE_COPY(HsRecoveryManager)
+    int crashCount();
+    
+private:
+    QTimer mTimer;
+
+    HOMESCREEN_TEST_FRIEND_CLASS(t_hsapplication)
+};
+
+#endif // HSRECOVERYMANAGER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/inc/hsstatemachine.h	Fri Jul 09 14:36:01 2010 +0300
@@ -0,0 +1,84 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Default implementation of the home screen runtime.
+*
+*/
+
+#ifndef HSSTATEMACHINE_H
+#define HSSTATEMACHINE_H
+
+#include <QStateMachine>
+#include <qmobilityglobal.h>
+
+#ifdef Q_OS_SYMBIAN
+#include <XQKeyCapture>
+#endif
+
+#include "hstest_global.h"
+
+class HsContentService;
+QTM_BEGIN_NAMESPACE
+class QValueSpacePublisher;
+QTM_END_NAMESPACE
+
+QTM_USE_NAMESPACE
+
+HOMESCREEN_TEST_CLASS(t_hsapplication)
+
+class HsStateMachine : public QStateMachine
+{
+    Q_OBJECT
+
+public:
+    HsStateMachine(QObject *parent = 0);
+    ~HsStateMachine();
+
+signals:
+    void event_exit();
+    void event_toIdle();
+protected:
+    bool eventFilter(QObject *watched, QEvent *event);
+
+private:
+    Q_DISABLE_COPY(HsStateMachine)
+
+
+    void registerAnimations();
+    void createStatePublisher();
+    void createContentServiceParts();
+    void createStates();
+	void updatePSKeys();
+
+private slots:
+	void onIdleStateEntered();
+	void onIdleStateExited();
+	void activityRequested(const QString &name);
+	
+
+private:
+    HsContentService *mContentService;	
+	
+	bool mHomeScreenActive;
+	bool mIdleStateActive;
+
+	QValueSpacePublisher *mPublisher;
+	
+#ifdef Q_OS_SYMBIAN
+    XQKeyCapture keyCapture;
+#endif
+    
+    HOMESCREEN_TEST_FRIEND_CLASS(t_hsapplication)
+};
+
+#endif
--- a/homescreenapp/hsapplication/installs_symbian.pri	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/hsapplication/installs_symbian.pri	Fri Jul 09 14:36:01 2010 +0300
@@ -21,17 +21,23 @@
 for(export1, exports1.sources):BLD_INF_RULES.prj_exports += "./$$export1 $$deploy.path$$exports1.path/$$basename(export1)"
 
 exports2.path = /private/20022f35/wallpapers/scene
-exports2.sources += resource/scene/default_landscape.png
-exports2.sources += resource/scene/default_portrait.png
+exports2.sources += resource/wallpapers/scene/default_landscape.png
+exports2.sources += resource/wallpapers/scene/default_portrait.png
 for(export2, exports2.sources):BLD_INF_RULES.prj_exports += "./$$export2 $$deploy.path$$exports2.path/$$basename(export2)"
 
 exports3.path = /private/20022f35/wallpapers/page
-exports3.sources += resource/page/default_landscape.png
-exports3.sources += resource/page/default_portrait.png
-exports3.sources += resource/page/1_landscape.png
-exports3.sources += resource/page/1_portrait.png
-exports3.sources += resource/page/2_landscape.png
-exports3.sources += resource/page/2_portrait.png
-exports3.sources += resource/page/3_landscape.png
-exports3.sources += resource/page/3_portrait.png
+exports3.sources += resource/wallpapers/page/default_landscape.png
+exports3.sources += resource/wallpapers/page/default_portrait.png
+exports3.sources += resource/wallpapers/page/1_landscape.png
+exports3.sources += resource/wallpapers/page/1_portrait.png
+exports3.sources += resource/wallpapers/page/2_landscape.png
+exports3.sources += resource/wallpapers/page/2_portrait.png
+exports3.sources += resource/wallpapers/page/3_landscape.png
+exports3.sources += resource/wallpapers/page/3_portrait.png
 for(export3, exports3.sources):BLD_INF_RULES.prj_exports += "./$$export3 $$deploy.path$$exports3.path/$$basename(export3)"
+
+exports4.path = /private/20022f35/wallpapers/originals
+exports4.sources += resource/wallpapers/page/originals/car.png
+exports4.sources += resource/wallpapers/page/originals/shapes.png
+exports4.sources += resource/wallpapers/page/originals/shoes.png
+for(export4, exports4.sources):BLD_INF_RULES.prj_exports += "./$$export4 $$deploy.path$$exports4.path/$$basename(export4)"
--- a/homescreenapp/hsapplication/installs_win.pri	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/hsapplication/installs_win.pri	Fri Jul 09 14:36:01 2010 +0300
@@ -16,9 +16,9 @@
 
 kqtihswallpapers.CONFIG += no_build
 kqtihswallpapers.path = $$DESTDIR/resource/kqtihswallpapers
-kqtihswallpapers.files = ./resource/bg_1.png \
-                         ./resource/bg_2.png \
-                         ./resource/bg_3.png
+kqtihswallpapers.files = ./resource/wallpapers/page/originals/car.png \
+                         ./resource/wallpapers/page/originals/shapes.png \
+                         ./resource/wallpapers/page/originals/shoes.png
 
 homescreendb.CONFIG += no_build
 homescreendb.path = $$DESTDIR/private/20022f35
@@ -26,19 +26,19 @@
 
 scenewallpapers.CONFIG += no_build
 scenewallpapers.path = $$DESTDIR/private/20022f35/wallpapers/scene
-scenewallpapers.files = ./resource/scene/default_landscape.png \
-                   ./resource/scene/default_portrait.png
+scenewallpapers.files = ./resource/wallpapers/scene/default_landscape.png \
+                        ./resource/wallpapers/scene/default_portrait.png
 
 pagewallpapers.CONFIG += no_build
 pagewallpapers.path = $$DESTDIR/private/20022f35/wallpapers/page
-pagewallpapers.files = ./resource/page/default_landscape.png \
-                       ./resource/page/default_portrait.png \
-                       ./resource/page/1_portrait.png \
-                       ./resource/page/1_landscape.png \
-                       ./resource/page/2_portrait.png \
-                       ./resource/page/2_landscape.png \
-                       ./resource/page/3_portrait.png \
-                       ./resource/page/3_landscape.png
+pagewallpapers.files = ./resource/wallpapers/page/default_landscape.png \
+                       ./resource/wallpapers/page/default_portrait.png \
+                       ./resource/wallpapers/page/1_portrait.png \
+                       ./resource/wallpapers/page/1_landscape.png \
+                       ./resource/wallpapers/page/2_portrait.png \
+                       ./resource/wallpapers/page/2_landscape.png \
+                       ./resource/wallpapers/page/3_portrait.png \
+                       ./resource/wallpapers/page/3_landscape.png
 
 INSTALLS += kqtihswallpapers homescreendb scenewallpapers pagewallpapers
 PRE_TARGETDEPS += install_kqtihswallpapers install_homescreendb install_scenewallpapers install_pagewallpapers
Binary file homescreenapp/hsapplication/resource/bg_1.png has changed
Binary file homescreenapp/hsapplication/resource/bg_2.png has changed
Binary file homescreenapp/hsapplication/resource/bg_3.png has changed
Binary file homescreenapp/hsapplication/resource/page/1_landscape.png has changed
Binary file homescreenapp/hsapplication/resource/page/1_portrait.png has changed
Binary file homescreenapp/hsapplication/resource/page/2_landscape.png has changed
Binary file homescreenapp/hsapplication/resource/page/2_portrait.png has changed
Binary file homescreenapp/hsapplication/resource/page/3_landscape.png has changed
Binary file homescreenapp/hsapplication/resource/page/3_portrait.png has changed
Binary file homescreenapp/hsapplication/resource/page/default_landscape.png has changed
Binary file homescreenapp/hsapplication/resource/page/default_portrait.png has changed
Binary file homescreenapp/hsapplication/resource/resource_win/homescreen.db has changed
Binary file homescreenapp/hsapplication/resource/scene/default_landscape.png has changed
Binary file homescreenapp/hsapplication/resource/scene/default_portrait.png has changed
Binary file homescreenapp/hsapplication/resource/wallpapers/page/1_landscape.png has changed
Binary file homescreenapp/hsapplication/resource/wallpapers/page/1_portrait.png has changed
Binary file homescreenapp/hsapplication/resource/wallpapers/page/2_landscape.png has changed
Binary file homescreenapp/hsapplication/resource/wallpapers/page/2_portrait.png has changed
Binary file homescreenapp/hsapplication/resource/wallpapers/page/3_landscape.png has changed
Binary file homescreenapp/hsapplication/resource/wallpapers/page/3_portrait.png has changed
Binary file homescreenapp/hsapplication/resource/wallpapers/page/default_landscape.png has changed
Binary file homescreenapp/hsapplication/resource/wallpapers/page/default_portrait.png has changed
Binary file homescreenapp/hsapplication/resource/wallpapers/page/originals/car.png has changed
Binary file homescreenapp/hsapplication/resource/wallpapers/page/originals/shapes.png has changed
Binary file homescreenapp/hsapplication/resource/wallpapers/page/originals/shoes.png has changed
Binary file homescreenapp/hsapplication/resource/wallpapers/scene/default_landscape.png has changed
Binary file homescreenapp/hsapplication/resource/wallpapers/scene/default_portrait.png has changed
Binary file homescreenapp/hsapplication/resource/wallpapers/scene/originals/kites.png has changed
--- a/homescreenapp/hsapplication/src/hshomescreen.cpp	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/hsapplication/src/hshomescreen.cpp	Fri Jul 09 14:36:01 2010 +0300
@@ -26,6 +26,7 @@
 
 #include "hshomescreen.h"
 #include "hstest_global.h"
+#include "hsstatemachine.h"
 #ifdef Q_OS_SYMBIAN
 #include "hshomescreenclientserviceprovider.h"
 #endif
@@ -35,8 +36,7 @@
     \class HsHomeScreen
     \ingroup group_hsapplication
     \brief Homescreen application main class.
-    Loads a runtime from a runtime provider plugin. Manages
-    the state machine execution.
+    Manages the state machine execution.
 */
 
 /*!
@@ -52,34 +52,17 @@
 {
     HSTEST_FUNC_ENTRY("HS::HsHomeScreen::HsHomeScreen");
 
-    QServiceManager serviceManager;
-
-    registerServicePlugins(serviceManager);
+    registerServicePlugins();
     
-    QServiceFilter filter("com.nokia.symbian.IHomeScreenRuntime");
-    QList<QServiceInterfaceDescriptor> interfaces = serviceManager.findInterfaces(filter);
-
-    if (interfaces.isEmpty()) {
-        emit exit();
-        return;
-    }
+    mRuntime = new HsStateMachine(this);
 
-    QObject *object = serviceManager.loadInterface(interfaces.first().interfaceName());
-    mRuntime = qobject_cast<QStateMachine *>(object);
-
-    if (mRuntime) {
-        mRuntime->setParent(this);
-        connect(mRuntime, SIGNAL(started()), SLOT(onRuntimeStarted()));
-        connect(mRuntime, SIGNAL(stopped()), SLOT(onRuntimeStopped()));
-        hbInstance->allMainWindows().first()->installEventFilter(this);
+    connect(mRuntime, SIGNAL(started()), SLOT(onRuntimeStarted()));
+    connect(mRuntime, SIGNAL(stopped()), SLOT(onRuntimeStopped()));
+    hbInstance->allMainWindows().first()->installEventFilter(this);
 #ifdef Q_OS_SYMBIAN
-        mHomeScreenClientServiceProvider = new HsHomeScreenClientServiceProvider;
-        mHomeScreenClientServiceProvider->setParent(this);
+    mHomeScreenClientServiceProvider = new HsHomeScreenClientServiceProvider;
+    mHomeScreenClientServiceProvider->setParent(this);
 #endif
-    } else {
-        delete object;
-        emit exit();
-    }
 
     HSTEST_FUNC_EXIT("HS::HsHomeScreen::HsHomeScreen");
 }
@@ -97,26 +80,21 @@
 */
 
 /*!
-    Starts the runtime.
+    Starts the state machine.
 */
 void HsHomeScreen::start()
 {
     HSTEST_FUNC_ENTRY("HS::HsHomeScreen::start");
-    if (mRuntime) {
-        mRuntime->start();
-    } else {
-        HSTEST_FUNC_EXIT("HS::HsHomeScreen::start, mRuntime not created, exit application");
-        emit exit();
-    }
+    mRuntime->start();
     HSTEST_FUNC_EXIT("HS::HsHomeScreen::start");
 }
 
 /*!
-    Stops the runtime.
+    Stops the state machine.
 */
 void HsHomeScreen::stop()
 {
-	if (mRuntime && mRuntime->isRunning()) {
+	if (mRuntime->isRunning()) {
         QEventLoop eventLoop;
         connect(mRuntime, SIGNAL(finished()), &eventLoop, SLOT(quit()));
         QMetaObject::invokeMethod(mRuntime, "event_exit", Qt::QueuedConnection);
@@ -137,14 +115,14 @@
 }
 
 /*!
-    Called after the runtime has started.
+    Called after the state machine has started.
 */
 void HsHomeScreen::onRuntimeStarted()
 {
 }
 
 /*!
-    Called after the runtime has stopped.
+    Called after the state machine has stopped.
 */
 void HsHomeScreen::onRuntimeStopped()
 {
@@ -154,9 +132,12 @@
 /*!
     Registers service plugins pre-installed on the device.
 */
-void HsHomeScreen::registerServicePlugins(QServiceManager &serviceManager)
-{
+void HsHomeScreen::registerServicePlugins()
+{    
     HSTEST_FUNC_ENTRY("HS::HsHomeScreen::registerServicePlugins()");
+    
+    QServiceManager serviceManager;
+    
     QStringList pluginPaths;
     
     pluginPaths << "private/20022F35";    
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/src/hsrecoverymanager.cpp	Fri Jul 09 14:36:01 2010 +0300
@@ -0,0 +1,104 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#include <e32property.h>
+
+#include <QFile>
+
+#include "hsrecoverymanager.h"
+
+const TInt KPSCategoryUid(0x20022F36);
+const TInt KPSCrashCountKey(1);
+const int KCrashCountThreshold(3);
+const int KResetCrashCountInterval(60000);
+
+/*!
+    \class HsRecoveryManager
+    \ingroup group_hsapplication
+    \brief Used during homescreen startup for recovering from possible crash situations.
+*/
+
+/*!
+    Constructs a new recovery manager with the given \a parent item.
+*/
+HsRecoveryManager::HsRecoveryManager(QObject *parent)
+  : QObject(parent)
+{    
+    mTimer.setInterval(KResetCrashCountInterval);
+    mTimer.setSingleShot(true);
+    connect(&mTimer, SIGNAL(timeout()), SLOT(resetCrashCount()));
+}
+
+/*!
+    Destructor.
+*/
+HsRecoveryManager::~HsRecoveryManager()
+{
+}
+
+/*!
+    Executes this recovery manager. If crash count exceeds the
+    threshold, the ROM configuration is selected. Otherwise,
+    the existing one is used.
+*/
+void HsRecoveryManager::execute()
+{
+    int count = crashCount();    
+    if (KCrashCountThreshold <= count) {
+        restoreRomDatabase();
+        resetCrashCount();
+        return;
+    }
+    if (0 < count) {
+        mTimer.start();
+    }
+}
+
+/*!
+    Restores the ROM database to c: drive.
+*/
+void HsRecoveryManager::restoreRomDatabase()
+{
+    // If exists, remove the database from c:
+    QFile file("c:/private/20022f35/homescreen.db");
+    if (file.exists()) {        
+        file.remove();
+    }          
+    // Copy the rom database to c: and set permissions.
+    file.setFileName("z:/private/20022f35/homescreen.db");     
+    file.copy("c:/private/20022f35/homescreen.db");
+    file.setFileName("c:/private/20022f35/homescreen.db");
+    file.setPermissions(QFile::ReadOwner | QFile::WriteOwner);
+}
+
+/*!
+    Resets the crash count to zero.
+*/
+void HsRecoveryManager::resetCrashCount()
+{
+    RProperty::Set(TUid::Uid(KPSCategoryUid), KPSCrashCountKey, 0); 
+}
+
+/*!
+    Returns the current crash count.
+*/
+int HsRecoveryManager::crashCount()
+{
+    TInt count = 0;
+    RProperty::Get(TUid::Uid(KPSCategoryUid), KPSCrashCountKey, count);    
+    return count;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/src/hsstatemachine.cpp	Fri Jul 09 14:36:01 2010 +0300
@@ -0,0 +1,412 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Default implementation of the home state machine.
+*
+*/
+
+#include <QState>
+#include <QFinalState>
+#include <QHistoryState>
+#include <QSignalTransition>
+#include <QKeyEventTransition>
+#include <QKeyEvent>
+
+#include <qvaluespacepublisher.h>
+#include <qservicemanager.h>
+#include <qservicefilter.h>
+#include <qserviceinterfacedescriptor.h>
+
+#include <HbApplication>
+#include <HbActivityManager>
+#include <HbInstance>
+#include <HbIconAnimationManager>
+#include <HbIconAnimationDefinition>
+
+#include "hsmenueventfactory.h"
+#include "homescreendomainpskeys.h"
+#include "hsstatemachine.h"
+#include "hsdatabase.h"
+#include "hscontentservice.h"
+#include "hsshortcutservice.h"
+#include "hsmenueventtransition.h"
+#include "hswidgetpositioningonorientationchange.h"
+#include "hswidgetpositioningonwidgetadd.h"
+#include "hsconfiguration.h"
+#include "hstest_global.h"
+#include "hswidgetpositioningonwidgetmove.h"
+
+QTM_USE_NAMESPACE
+#define hbApp qobject_cast<HbApplication*>(qApp)
+
+#ifdef Q_OS_SYMBIAN
+const static Qt::Key applicationKey = Qt::Key_Menu;
+#else
+const static Qt::Key applicationKey = Qt::Key_Home;
+#endif
+
+namespace
+{
+    const char KHsRootStateInterface[] = "com.nokia.homescreen.state.HsRootState";
+    const char KHsLoadSceneStateInterface[] = "com.nokia.homescreen.state.HsLoadSceneState";
+    const char KHsIdleStateInterface[] = "com.nokia.homescreen.state.HsIdleState";
+    const char KHsAppLibraryStateInterface[] = "com.nokia.homescreen.state.HsAppLibraryState";
+    const char KHsMenuWorkerStateInterface[] = "com.nokia.homescreen.state.HsMenuWorkerState";
+    const char KHsBacupRestoreStateInterface[] = "com.nokia.homescreen.state.HsBackupRestoreState";
+}
+
+
+/*!
+    \class HsStateMachine
+    \ingroup group_hsstatemachine
+    \brief Default implementation of the home screen state machine.
+    Creates an execution context (EC) and populates it with
+    runtime services. States are loaded from state plugins.
+    Each state is given an access to the EC. States
+    are added to a state machine. Finally, the state machine
+    is started.
+*/
+
+/*!
+    Constructs state machine with \a parent as the parent object.
+*/
+HsStateMachine::HsStateMachine(QObject *parent)
+    : QStateMachine(parent),
+      mContentService(0),	  
+      mHomeScreenActive(false),
+      mIdleStateActive(false),
+      mPublisher(NULL)
+#ifdef Q_OS_SYMBIAN
+	  ,keyCapture()
+#endif
+{
+    HSTEST_FUNC_ENTRY("HS::HsStateMachine::HsStateMachine");
+
+    HsDatabase *db = new HsDatabase;
+    db->setConnectionName("homescreen.dbc");
+#ifdef Q_OS_SYMBIAN
+    db->setDatabaseName("c:/private/20022f35/homescreen.db");
+#else
+    db->setDatabaseName("private/20022f35/homescreen.db");
+#endif    
+    db->open();
+    HsDatabase::setInstance(db);
+
+    HsConfiguration::setInstance(new HsConfiguration);
+    HsConfiguration::instance()->load();
+            
+    HsWidgetPositioningOnOrientationChange::setInstance(
+        new HsAdvancedWidgetPositioningOnOrientationChange);
+
+    HsWidgetPositioningOnWidgetAdd::setInstance(
+        new HsAnchorPointInBottomRight);
+
+    HsWidgetPositioningOnWidgetMove::setInstance(
+        new HsSnapToLines);
+
+    registerAnimations();
+
+    createStatePublisher();
+    createContentServiceParts();
+    createStates();    
+
+    // create the instance so that singleton is accessible from elsewhere
+    HsShortcutService::instance(this);
+
+    QCoreApplication::instance()->installEventFilter(this);
+
+    if (hbApp) { // Qt test framework uses QApplication.
+        connect(hbApp->activityManager(), SIGNAL(activityRequested(QString)), 
+                this, SLOT(activityRequested(QString)));
+    }
+    HSTEST_FUNC_EXIT("HS::HsStateMachine::HsStateMachine");
+}
+
+/*!
+    Destructor.
+*/
+HsStateMachine::~HsStateMachine()
+{
+    HsWidgetPositioningOnOrientationChange::setInstance(0);
+    delete mPublisher;
+}
+
+/*!
+    \fn void HsStateMachine::stopStateMachine()
+    Emission of this signal initiates a transition to the final state.
+*/
+
+/*!
+    \copydoc QObject::eventFilter(QObject *watched, QEvent *event)
+*/
+bool HsStateMachine::eventFilter(QObject *watched, QEvent *event)
+{
+    Q_UNUSED(watched);
+
+    switch (event->type()) {
+        case QEvent::ApplicationActivate:
+            qDebug() << "HsStateMachine::eventFilter: QEvent::ApplicationActivate";
+#ifdef Q_OS_SYMBIAN
+            keyCapture.captureKey(applicationKey);
+#endif
+            mHomeScreenActive = true;
+            updatePSKeys();
+            break;
+        case QEvent::ApplicationDeactivate:
+            qDebug() << "HsStateMachine::eventFilter: QEvent::ApplicationDeactivate";
+#ifdef Q_OS_SYMBIAN
+            keyCapture.cancelCaptureKey(applicationKey);
+#endif
+            mHomeScreenActive = false;
+            updatePSKeys();
+            break;
+        default:
+            break;
+    }
+   
+    bool result =  QStateMachine::eventFilter(watched, event);
+    // temporary hack as we should not register twice for events
+    if (event->type() == QEvent::KeyPress ) {
+        QKeyEvent* ke = static_cast<QKeyEvent *>(event);         
+        // Key_Launch0 should be removed when QT starts to send Key_Menu
+        result = (ke->key() == applicationKey) || ke->key() == Qt::Key_Launch0;        
+    }
+    return result;
+}
+
+
+/*!
+    Registers framework animations.
+*/
+void HsStateMachine::registerAnimations()
+{
+    HbIconAnimationManager *manager = HbIconAnimationManager::global();
+    manager->addDefinitionFile(QLatin1String("qtg_anim_loading.axml"));
+}
+
+/*!
+    Creates Home screen state publisher.
+*/
+void HsStateMachine::createStatePublisher()
+{
+    mPublisher = new QValueSpacePublisher(QValueSpace::PermanentLayer, HsStatePSKeyPath);
+
+    if (!mPublisher->isConnected()){
+    	// No permanent layer available
+    	mPublisher = new QValueSpacePublisher(HsStatePSKeyPath);
+    }
+
+    mPublisher->setValue(HsStatePSKeySubPath, EHomeScreenInactive);
+}
+
+/*!
+    Creates content service parts.
+*/
+void HsStateMachine::createContentServiceParts()
+{
+    HSTEST_FUNC_ENTRY("HS::HsStateMachine::createContentServiceParts");
+
+    mContentService = new HsContentService(this);
+
+    HSTEST_FUNC_EXIT("HS::HsStateMachine::createContentServiceParts");
+}
+
+/*!
+    Creates states.
+*/
+void HsStateMachine::createStates()
+{
+    HSTEST_FUNC_ENTRY("HS::HsStateMachine::createStates");
+
+    QFinalState *finalState = new QFinalState();
+    addState(finalState);
+
+    QState *guiRootState = new QState();
+    addState(guiRootState);
+
+    guiRootState->addTransition(this, SIGNAL(event_exit()), finalState);
+
+    QServiceManager manager;
+
+    
+    QObject *loadSceneStateObj = manager.loadInterface(KHsLoadSceneStateInterface);
+    QState *loadSceneState = qobject_cast<QState *>(loadSceneStateObj);
+    loadSceneState->setParent(guiRootState);
+    loadSceneState->setObjectName(KHsLoadSceneStateInterface);
+
+    QObject *rootStateObj = manager.loadInterface(KHsRootStateInterface);
+    QState *rootState = qobject_cast<QState *>(rootStateObj);   
+    rootState->setParent(guiRootState);
+    rootState->setObjectName(KHsRootStateInterface);       
+
+    QObject *idleStateObj = manager.loadInterface(KHsIdleStateInterface);
+    QState *idleState = qobject_cast<QState *>(idleStateObj);
+    idleState->setParent(rootState);
+    idleState->setObjectName(KHsIdleStateInterface);
+	connect(idleState, SIGNAL(entered()), SLOT(onIdleStateEntered()));
+	connect(idleState, SIGNAL(exited()), SLOT(onIdleStateExited()));
+
+
+    //menu state
+    QState *menuParallelState = new QState(
+            QState::ParallelStates, rootState);
+    QState *menuRootState = new QState(menuParallelState);
+
+    QObject *appLibraryStateObj = manager.loadInterface(KHsAppLibraryStateInterface);
+    QState *appLibraryState = qobject_cast<QState *>(appLibraryStateObj);
+    appLibraryState->setParent(menuRootState);
+    appLibraryState->setObjectName(KHsAppLibraryStateInterface);
+    menuRootState->setInitialState(appLibraryState);
+
+    QHistoryState *historyState = new QHistoryState(rootState);
+    historyState->setDefaultState(idleState);
+    
+    loadSceneState->addTransition(
+            loadSceneState, SIGNAL(event_history()), historyState);            
+
+    QObject *menuWorkerStateObj = manager.loadInterface(KHsMenuWorkerStateInterface);
+    QState *menuWorkerState = qobject_cast<QState *>(menuWorkerStateObj);
+    menuWorkerState->setParent(menuParallelState);
+    menuWorkerState->setObjectName(KHsMenuWorkerStateInterface);
+
+    connect(appLibraryState, SIGNAL(collectionEntered()), 
+            menuWorkerState, SIGNAL(reset()));
+
+    //Backup/Restore state
+    QObject *backupRestoreStateObj = manager.loadInterface(KHsBacupRestoreStateInterface);
+    QState *backupRestoreState = qobject_cast<QState *>(backupRestoreStateObj);   
+    backupRestoreState->setParent(guiRootState);
+    backupRestoreState->setObjectName(KHsBacupRestoreStateInterface);
+    backupRestoreState->addTransition(
+            backupRestoreState, SIGNAL(event_loadScene()), loadSceneState);
+
+    // root state transitions
+    idleState->addTransition(idleState, SIGNAL(event_applicationLibrary()), menuRootState);
+    appLibraryState->addTransition(
+            appLibraryState, SIGNAL(toHomescreenState()), idleState);
+    rootState->addTransition(rootState, SIGNAL(event_backupRestore()), backupRestoreState);
+    // opening shortcut to Application Library
+    HsMenuEventTransition *idleToAppLibTransition =
+        new HsMenuEventTransition(HsMenuEvent::OpenApplicationLibrary,
+                                  idleState, appLibraryState);
+    idleState->addTransition(idleToAppLibTransition);
+
+    HsMenuEventTransition *appLibToIdleTransition =
+        new HsMenuEventTransition(
+            HsMenuEvent::OpenHomeScreen, appLibraryState, idleState);
+    appLibraryState->addTransition(appLibToIdleTransition);
+
+    HbMainWindow *window = hbInstance->allMainWindows().first();
+
+    // key driven transition from idle to menu
+    QKeyEventTransition *idleToMenuRootTransition =
+        new QKeyEventTransition(
+                window, QEvent::KeyPress, applicationKey);
+    idleToMenuRootTransition->setTargetState(menuRootState);
+    idleState->addTransition(idleToMenuRootTransition);
+    // key driven transition from menu to idle
+    QKeyEventTransition *menuToIdleTransition =
+        new QKeyEventTransition(
+                window, QEvent::KeyPress, applicationKey);
+    menuToIdleTransition->setTargetState(idleState);
+    menuRootState->addTransition(menuToIdleTransition);
+    
+    // transition for Key_Launch0 should be removed 
+    // when OT starts to send Key_Menu (maybe wk14)
+    QKeyEventTransition *idleToMenuRootTransition2 =
+        new QKeyEventTransition(
+                window, QEvent::KeyPress, Qt::Key_Launch0);
+    idleToMenuRootTransition2->setTargetState(menuRootState);
+    idleState->addTransition(idleToMenuRootTransition2);
+    // key driven transition from menu to idle
+    QKeyEventTransition *menuToIdleTransition2 =
+        new QKeyEventTransition(
+                window, QEvent::KeyPress, Qt::Key_Launch0);
+    menuToIdleTransition2->setTargetState(idleState);
+    menuRootState->addTransition(menuToIdleTransition2);
+    // add transition to switch to idle
+    menuRootState->addTransition( this, SIGNAL(event_toIdle()), idleState);    
+    
+    // transitions to child states
+    // opening shortcut to a colleciton
+    QList<QState *> collectionStates =
+        appLibraryState->
+            findChildren<QState *>
+                ("homescreen.nokia.com/state/applibrarystate/collectionstate");
+    qDebug(
+        "Found %d \"collectionstate\" children for Application Library State",
+            collectionStates.count());
+    if (collectionStates.count()) {
+        HsMenuEventTransition *idleToCollectionTransition =
+            new HsMenuEventTransition(HsMenuEvent::OpenCollection,
+                                      idleState, collectionStates[0]);
+        idleState->addTransition(idleToCollectionTransition);
+    }
+
+    guiRootState->setInitialState(loadSceneState);
+    setInitialState(guiRootState);
+    
+    HSTEST_FUNC_EXIT("HS::HsStateMachine::createStates");
+}
+
+
+/*!
+    Publishes Home screen states via Publish & Subscribe.
+*/
+void HsStateMachine::updatePSKeys()
+{	
+	if (!mPublisher){
+		createStatePublisher();
+	}
+
+	if (mHomeScreenActive && mIdleStateActive){
+    	qDebug() << "HsStateMachine::updatePSKeys: EHomeScreenIdleState";
+    	mPublisher->setValue(HsStatePSKeySubPath, EHomeScreenIdleState);
+    }
+    else{
+    	qDebug() << "HsStateMachine::updatePSKeys: EHomeScreenInactive";
+    	mPublisher->setValue(HsStatePSKeySubPath, EHomeScreenInactive);
+    }	
+}
+
+/*!
+    Called when state machine is in Idle state.
+*/
+void HsStateMachine::onIdleStateEntered()
+{
+	mIdleStateActive = true;
+	updatePSKeys();
+}
+
+/*!
+    Called when state machine leaves the Idle state.
+*/
+void HsStateMachine::onIdleStateExited()
+{
+	mIdleStateActive = false;
+	updatePSKeys();
+}
+
+/*!
+    Activity requested by another client 
+*/
+void HsStateMachine::activityRequested(const QString &name) 
+{
+    if (name == groupAppLibRecentView()) {
+        this->postEvent(
+            HsMenuEventFactory::createOpenCollectionEvent(0,
+            collectionDownloadedTypeName()));
+    } else if (name == activityHsIdleView()) {
+        emit event_toIdle();
+    }
+}
--- a/homescreenapp/hsapplication/src/main.cpp	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/hsapplication/src/main.cpp	Fri Jul 09 14:36:01 2010 +0300
@@ -36,6 +36,7 @@
 #include <e32debug.h>
 #include <apgwgnam.h>
 
+#include "hsrecoverymanager.h"
 
 void loadTranslationFilesOnSymbian(QTranslator &commonTranslator, 
                                     QTranslator &hsTranslator, 
@@ -43,6 +44,7 @@
 void copyWallpapersFromRom();
 void copyHsDatabaseFileFromRom();
 void createPrivateFolder();
+void copyWallpaperOriginalsFromRomToPhotos();
 
 /*!
     \fn setHomescreenAsSystemAppL(CEikonEnv* eikonEnv)
@@ -133,6 +135,8 @@
     
 #ifdef Q_OS_SYMBIAN
     copyHsDatabaseFileFromRom();
+    HsRecoveryManager recoveryManager;
+    recoveryManager.execute();
     copyWallpapersFromRom();
 #endif
     
@@ -203,7 +207,7 @@
         HSTEST("HS::main() - homescreen.db not in c:");
         file.setFileName("z:/private/20022f35/homescreen.db");
         if(!file.exists()) {
-            HSTEST("HS::main() - homescreen.db not in ROM!");
+            qWarning() << "HS::main() - homescreen.db not in ROM!";
         } else {
             HSTEST("HS::main() - homescreen.db found from z:");
             createPrivateFolder();
@@ -214,10 +218,12 @@
             HSTEST("HS::main() - homescreen.db copied from ROM to c:!");
             file.setFileName("c:/private/20022f35/homescreen.db");
             if(!file.setPermissions(QFile::ReadOwner | QFile::WriteOwner)) {
-                HSTEST("HS::main() - homescreen.db ReadWrite permission settings on c: failed!");
+                qWarning() << "HS::main() - homescreen.db ReadWrite permission settings on c: failed!";
             }
             HSTEST("HS::main() - homescreen.db permission set to ReadWrite!");
         }
+        // Copy wallpaper originals to C drive user data to be visible in Photos
+        copyWallpaperOriginalsFromRomToPhotos();
     }
 #ifdef __WINS__
     else if(!file.setPermissions(QFile::ReadOwner | QFile::WriteOwner)) {
@@ -280,6 +286,36 @@
 }
 
 /*!
+    \fn copyWallpaperOriginalFromRomToPhotos()
+    \ingroup group_hsapplication
+    \internal    
+    \brief Wallpaper original copier
+    Copies homescreen wallpaper originals from rom to C for Photos
+    does not exist on c: drive
+*/
+void copyWallpaperOriginalsFromRomToPhotos()
+{
+    QString targetPath("e:/data/images/wallpapers");
+    QDir dir(targetPath);
+    if(!dir.exists()) {
+        dir.mkpath(targetPath);    
+        QDir dir2("z:/private/20022f35/wallpapers/originals");
+        dir2.setFilter(QDir::Files);
+        QStringList files = dir2.entryList();
+        foreach(QString file, files) {
+            QString targetFile(targetPath + "/" + file);
+            if ( QFile::copy(dir2.absoluteFilePath(file), targetFile) ) {
+                qDebug() << "Wallpaper original copied from " << dir2.absoluteFilePath(file) << "to " << targetFile;
+            } 
+            QFile createdFile(targetFile);
+            if(!createdFile.setPermissions(QFile::ReadOwner | QFile::WriteOwner)) {
+                qDebug() << "Read write permission set failed for wallpaper original" << targetFile;
+            }
+        }
+    }
+}
+
+/*!
     \fn loadTranslationFilesOnSymbian(QTranslator &commonTranslator, 
                                       QTranslator &hsTranslator, 
                                       QTranslator &alTranslator)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplicationlauncher/group/hsapplicationlauncher.mmp	Fri Jul 09 14:36:01 2010 +0300
@@ -0,0 +1,50 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Makefile of hsapplicationlauncher
+*
+*/
+
+#include <platform_paths.hrh>
+
+TARGET hsapplicationlauncher.exe
+
+targettype exe
+
+UID             0x1000008d 0x20022F36
+CAPABILITY      ReadDeviceData WriteDeviceData
+VENDORID        VID_DEFAULT
+SECUREID        0x20022F36
+
+EPOCHEAPSIZE	0x1000 0x100000   // 4KB - 1 MB
+EPOCSTACKSIZE	0x5000
+
+SOURCEPATH		../src
+SOURCE			hsapplicationlauncher.cpp
+SOURCE			hsprocessmonitor.cpp
+SOURCE			hsshutdownmonitor.cpp
+
+USERINCLUDE		. 
+USERINCLUDE		../inc
+
+MW_LAYER_SYSTEMINCLUDE
+
+LIBRARY			euser.lib  // CBase etc
+LIBRARY			bafl.lib   // descriptors
+LIBRARY			ssmcmn.lib // state manager
+LIBRARY         centralrepository.lib
+LIBRARY         cenrepnotifhandler.lib
+
+LANG			SC
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplicationlauncher/hsapplicationlauncher.pro	Fri Jul 09 14:36:01 2010 +0300
@@ -0,0 +1,21 @@
+#
+# Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: Main project file for homescreen application
+#
+
+TEMPLATE = subdirs
+
+symbian: {
+    BLD_INF_RULES.prj_mmpfiles += "./group/hsapplicationlauncher.mmp"    
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplicationlauncher/inc/hsapplicationlauncher.h	Fri Jul 09 14:36:01 2010 +0300
@@ -0,0 +1,186 @@
+/*
+* Copyright (c) 1020 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: application class.
+*/
+
+#ifndef __HS_LAUNCH_
+#define __HS_LAUNCH_
+
+#include <e32base.h>
+#include <centralrepository.h>
+#include <cenrepnotifyhandler.h>
+#include "hsprocessmonitor.h"
+#include "hsshutdownmonitor.h"
+
+class t_hsapplicationlauncher;
+
+/**
+ * CHsLaunch
+ * 
+ * application class.
+ * 
+ * @since S60 5.2  
+ */
+class CHsLaunch : public CActive,
+                         MCenRepNotifyHandlerCallback,
+                         MHsProcessMonitorObserver,
+                         MHsShutdownMonitorObserver
+    {
+    public:
+        /**
+         * Create new launcher
+         *
+         * @since S60 5.2     
+         */    
+        static CHsLaunch* NewL();
+        
+        /**
+         * Destructor.
+         *
+         * @since S60 5.2     
+         */
+        virtual ~CHsLaunch();
+
+        /**
+         * Set active object to be ran
+         * 
+         * @since S60 5.2
+         */        
+        void Activate();        
+
+        /**
+         * Get application return value
+         * 
+         * @return TInt     Application return value
+         * @since S60 5.2
+         */        
+        TInt ApplicationReturnValue();      
+        
+    protected:
+        /**
+         * C++ constructor.
+         *
+         * @since S60 5.2      
+         */        
+        CHsLaunch();    
+        
+        /**
+         * Symbian 2nd phase constructor
+         * 
+         * @since S60 5.2
+         */        
+        void ConstructL();
+    
+    private: // From CActive.
+        /**
+         * From CActive
+         */        
+        void RunL();
+
+        /**
+         * From CActive
+         * 
+         * @since S60 5.2
+         */        
+        void DoCancel(); 
+
+        /**
+         * From CActive
+         * 
+         * @since S60 5.2
+         */        
+        TInt RunError( TInt aError );
+
+    private: // From MCenRepNotifyHandlerCallback
+        /**
+         * From MCenRepNotifyHandlerCallback
+         */
+        void HandleNotifyInt(TUint32 aId, TInt aNewValue);
+        
+    private: // From MHsProcessMonitorObserver
+        /**
+         * From MHsProcessMonitorObserver
+         */
+        void ProcessEnded( const TExitType& aExitType,
+                           const TInt aExitReason,
+                           const TExitCategoryName& aExitCategory );
+
+        /**
+         * From MHsProcessMonitorObserver
+         */
+        void ProcessMonitoringError( TInt aError );
+
+    private: // From MHsShutdownMonitorObserver
+        /**
+         * From MHsShutdownMonitorObserver
+         */
+        void SystemShutdownEvent();
+
+    private:
+        /**
+         * Initialize process monitor
+         * 
+         * @param aProcessId    Id of process to monitor 
+         */
+        void InitProcessMonitorL( const TInt aProcessId );
+        
+        /**
+         * Shut down application 
+         * 
+         * @param aApplicationReturnValue   Application return value.
+         */
+        void ShutdownApp( const TInt aApplicationReturnValue );         
+        
+        /**
+         * Starts the home screen application.
+         */
+        void StartHomeScreen();
+        
+        /**
+         * Checks if the language is selected.
+         */
+        TBool IsLanguageSelectedL();
+        
+        /**
+         * Starts listening the repository notifications for
+         * language selection.
+         */
+        void StartListeningLanguageSelectionL();
+        
+        /**
+         * Stops listening the repository notifications for
+         * language selection.
+         */
+        void StopListeningLanguageSelection();
+        
+    private: // data.
+        // Process monitor. Owned.
+        CHsProcessMonitor* iProcessMonitor;
+        
+        // Shutdown monitor. Owned.
+        CHsShutdownMonitor* iShutdownMonitor;
+        
+        // Repository.
+        CRepository *iRepository;
+
+        // Repository notify handler.
+        CCenRepNotifyHandler* iCenRepNotifyHandler;
+        
+        // Application return value
+        TInt iApplicationReturnValue;
+
+        friend class t_hsapplicationlauncher;
+    };
+
+#endif // __HS_LAUNCH_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplicationlauncher/inc/hsprocessmonitor.h	Fri Jul 09 14:36:01 2010 +0300
@@ -0,0 +1,159 @@
+/*
+* Copyright (c) 1020 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: process monitor.
+*/
+
+
+#ifndef __HS_PROCESS_MONITOR__
+#define __HS_PROCESS_MONITOR__
+
+#include <e32base.h>
+
+class t_hsapplicationlauncher;
+
+/**
+ * MHsProcessMonitorObserver
+ * 
+ * Monitor component observer.
+ * 
+ * @since S60 5.2
+ */
+class MHsProcessMonitorObserver
+    {    
+    public:
+        /**
+         * Called when monitored process is ended.
+         * 
+         * @param aExitType         Exit type
+         * @param aExitReason       Exit reason
+         * @param aExitCategory     Exit category
+         */
+        virtual void ProcessEnded( const TExitType& aExitType,
+                                   const TInt aExitReason,
+                                   const TExitCategoryName& aExitCategory ) = 0;
+
+        /**
+         * Called when error occured during monitoring.
+         * 
+         * @param aError System wide error code.
+         */        
+        virtual void ProcessMonitoringError( TInt aError ) = 0;											
+    };
+
+/**
+ * HsProcessMonitor
+ * 
+ * Component for monitoring process states.
+ * 
+ * @since S60 5.2
+ */  
+class CHsProcessMonitor : public CActive
+    {
+    public:
+        /**
+         * Create new monitor
+         * 
+         * @param aProcessName	process id
+         * @param aObserver monitor observer
+         * @since S60 5.2     
+         */    
+        static CHsProcessMonitor* NewL( const TInt aProcessId,
+                                        MHsProcessMonitorObserver& aObserver );   
+        
+        /**
+         * Destructor
+         * 
+         * @since S60 5.2     
+         */    
+        ~CHsProcessMonitor();
+    
+        /**
+         * Attach monitor
+         * 
+         * @return TInt     System wide error code.       
+         * @since S60 5.2
+         */        
+        TInt AttachMonitor();
+        
+        /**
+         * Start monitor
+         * 
+         * @return TInt     System wide error code.
+         * @since S60 5.2
+         */        
+        TInt StartMonitor();        
+
+    protected:
+        /** 
+         * C++ constructor
+         *
+         * @param aProcessName  process id
+         * @param aObserver     watchdog observer.   
+         * @since S60 5.2      
+         */        
+        CHsProcessMonitor( const TInt aProcessId,
+                           MHsProcessMonitorObserver& aObserver );    
+
+        /**
+         * Symbian 2nd phase constructor
+         * 
+         * @since S60 5.2
+         */        
+        void ConstructL();
+
+    private: // From CActive
+        /**
+         * From CActive
+         */        
+        void RunL();
+
+        /**
+         * From CActive
+         * 
+         * @since S60 5.2
+         */        
+        void DoCancel(); 
+
+        /**
+         * From CActive
+         * 
+         * @since S60 5.2
+         */        
+        TInt RunError( TInt aError );
+
+    private: // New methods
+        /**
+         * Close process handle if open
+         * 
+         * @since S60 5.2
+         */        
+        void SecureProcessHandleAsClosed();     
+
+    private:	
+        // process id
+        TInt iProcessId;        
+        
+        // watchdog observer
+        MHsProcessMonitorObserver& iObserver;
+        
+        // Process handle
+        RProcess iProcess;
+        
+        // boolean to represent whether process handle is open
+        TBool iProcessHandleOpen;        
+
+        friend class t_hsapplicationlauncher;
+    };
+
+#endif // __HS_PROCESS_MONITOR__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplicationlauncher/inc/hsshutdownmonitor.h	Fri Jul 09 14:36:01 2010 +0300
@@ -0,0 +1,121 @@
+/*
+* Copyright (c) 1020 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: shutdown monitor.
+*/
+
+
+#ifndef __HS_SHUTDOWN_MONITOR__
+#define __HS_SHUTDOWN_MONITOR__
+
+#include <e32base.h>
+#include <ssm/ssmstateawaresession.h>
+
+class t_hsapplicationlauncher;
+
+/**
+ * MHsShutdownMonitorObserver
+ * 
+ * Monitor component observer.
+ * 
+ * @since S60 5.2
+ */
+class MHsShutdownMonitorObserver
+    {    
+    public:
+        /**
+         * Called when shutdown occurs 
+         */
+        virtual void SystemShutdownEvent() = 0;
+    };
+
+/**
+ * HsShutdownMonitor
+ * 
+ * Component for monitoring shutdown
+ * 
+ * @since S60 5.2
+ */  
+class CHsShutdownMonitor : public CActive
+    {
+    public:
+        /**
+         * Create new monitor
+         * 
+         * @param aObserver monitor observer
+         * @since S60 5.2     
+         */    
+        static CHsShutdownMonitor* NewL(
+                MHsShutdownMonitorObserver& aObserver );   
+        
+        /**
+         * Destructor
+         * 
+         * @since S60 5.2     
+         */    
+        ~CHsShutdownMonitor();
+    
+        /**
+         * Start monitor
+         * 
+         * @since S60 5.2
+         */        
+        void StartMonitor();        
+
+    protected:
+        /** 
+         * C++ constructor
+         *
+         * @param aObserver     monitor observer.   
+         * @since S60 5.2      
+         */        
+        CHsShutdownMonitor( MHsShutdownMonitorObserver& aObserver );    
+
+        /**
+         * Symbian 2nd phase constructor
+         * 
+         * @since S60 5.2
+         */        
+        void ConstructL();
+
+    private: // From CActive
+        /**
+         * From CActive
+         */        
+        void RunL();
+
+        /**
+         * From CActive
+         * 
+         * @since S60 5.2
+         */        
+        void DoCancel(); 
+
+        /**
+         * From CActive
+         * 
+         * @since S60 5.2
+         */        
+        TInt RunError( TInt aError );
+
+    private:	
+        // watchdog observer
+        MHsShutdownMonitorObserver& iObserver;
+
+        // State aware session.
+        RSsmStateAwareSession iSAS;
+
+        friend class t_hsapplicationlauncher;
+    };
+
+#endif // __HS_PROCESS_MONITOR__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplicationlauncher/src/hsapplicationlauncher.cpp	Fri Jul 09 14:36:01 2010 +0300
@@ -0,0 +1,452 @@
+/*
+ * Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description: application class.                 
+ *
+ */
+
+#include <e32property.h>
+#include <e32debug.h>
+#include "hsapplicationlauncher.h"
+
+// ========================= DECLARATIONS ==================================
+_LIT( KHsExeName, "hsapplication.exe" );
+_LIT( KHsProcessName, "hsapplication.exe" );
+const TInt KSleepOnRetry = 250000; // 250ms
+const TUid KPSCategoryUid = TUid::Uid( 0x20022F36 );
+const TInt KPSCrashCountKey = 1;
+_LIT_SECURITY_POLICY_C1( KPSReadPolicy, ECapabilityReadDeviceData );
+_LIT_SECURITY_POLICY_C1( KPSWritePolicy, ECapabilityWriteDeviceData );
+
+// ========================= LOCAL FUNCTIONS ==================================
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC SKIP
+#endif //COVERAGE_MEASUREMENT
+void RunAppL()
+    {
+    // Construct active scheduler.
+    CActiveScheduler* activeScheduler = new ( ELeave )CActiveScheduler();
+    CleanupStack::PushL( activeScheduler );
+    CActiveScheduler::Install( activeScheduler );
+
+    // Construct app.
+    CHsLaunch* app = CHsLaunch::NewL();
+    CleanupStack::PushL( app );
+    
+    app->Activate();
+    
+    // Signal startup.
+    RProcess::Rendezvous(KErrNone);
+    
+    // Start active scheduler.
+    CActiveScheduler::Start();
+    
+    User::LeaveIfError( app->ApplicationReturnValue() );
+    
+    // Cleanup.
+    CleanupStack::PopAndDestroy( app );
+    CleanupStack::PopAndDestroy( activeScheduler );
+    }
+
+#ifndef HOMESCREEN_TEST
+// -----------------------------------------------------------------------------
+// E32Main
+// entry-point
+// -----------------------------------------------------------------------------
+//
+TInt E32Main()
+    {            
+    TInt error = KErrNone;
+    
+    __UHEAP_MARK;    
+    
+    // Construct cleanup stack.
+    CTrapCleanup* cleanupstack = CTrapCleanup::New();
+    if( !cleanupstack )
+        {
+        error  = KErrNoMemory;
+        }
+    
+    // Call next phase of startup.
+    if( !error )
+        {
+        TRAP( error, RunAppL() );
+        }
+    
+    // Cleanup.
+    delete cleanupstack;
+    cleanupstack = NULL;
+    
+    __UHEAP_MARKEND;
+    
+    return error;
+    }
+#endif //HOMESCREEN_TEST
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC ENDSKIP
+#endif //COVERAGE_MEASUREMENT
+// ========================= MEMBER FUNCTIONS ==================================
+
+// -----------------------------------------------------------------------------
+// CHsLaunch::NewL()
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+CHsLaunch* CHsLaunch::NewL()
+    {
+    CHsLaunch* self = new ( ELeave ) CHsLaunch();
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CHsLaunch::ConstructL()
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CHsLaunch::ConstructL()
+    {
+    iRepository = CRepository::NewL(TUid::Uid(0x2002b3aa));
+    
+    iShutdownMonitor = CHsShutdownMonitor::NewL( *this );
+    iShutdownMonitor->StartMonitor();
+    
+    // Create property to pub/sub.    
+    TInt error = RProperty::Define( KPSCrashCountKey,
+                                    RProperty::EInt,
+                                    KPSReadPolicy,
+                                    KPSWritePolicy );    
+    if( error == KErrNone )
+        {
+        // Init it to zero.
+        error = RProperty::Set( KPSCategoryUid, KPSCrashCountKey, 0 );
+        }                
+    else if( error == KErrAlreadyExists )
+        {
+        error = KErrNone;        
+        }        
+    
+    User::LeaveIfError( error );
+    }
+
+// -----------------------------------------------------------------------------
+// CHsLaunch::CHsLaunch()
+// C++ default constructor can NOT contain any code, that might leave.
+// -----------------------------------------------------------------------------
+CHsLaunch::CHsLaunch() :
+        CActive( EPriorityStandard ),
+        iApplicationReturnValue( KErrNone )
+    {
+    CActiveScheduler::Add( this );
+    }
+
+// -----------------------------------------------------------------------------
+// CHsLaunch::~CHsLaunch()
+// Destructor.
+// -----------------------------------------------------------------------------
+//
+CHsLaunch::~CHsLaunch()
+    {
+    Cancel();
+    
+    delete iRepository;
+    iRepository = NULL;
+    
+    delete iProcessMonitor;
+    iProcessMonitor = NULL;
+    
+    delete iShutdownMonitor;
+    iShutdownMonitor = NULL;
+    }
+
+// -----------------------------------------------------------------------------
+// CHsLaunch::Activate()
+// Set active object to be ran
+// -----------------------------------------------------------------------------
+//
+void CHsLaunch::Activate()
+    {   
+    SetActive();
+    TRequestStatus* tmp = &iStatus;
+    User::RequestComplete( tmp, KErrNone );
+    }
+
+// -----------------------------------------------------------------------------
+// CHsLaunch::ApplicationReturnValue()
+// Get application return value
+// -----------------------------------------------------------------------------
+//
+TInt CHsLaunch::ApplicationReturnValue()
+    {
+    return iApplicationReturnValue;
+    }
+
+// -----------------------------------------------------------------------------
+// CHsLaunch::RunL
+// -----------------------------------------------------------------------------
+//
+void CHsLaunch::RunL()
+    {
+#if defined( __WINS__ )
+    StartHomeScreen();
+#else 
+    if (IsLanguageSelectedL()) 
+        {
+        StartHomeScreen();
+        } 
+    else 
+        {
+        StartListeningLanguageSelectionL();
+        }
+#endif //__WINS__
+    }
+
+// -----------------------------------------------------------------------------
+// CHsLaunch::DoCancel()
+// From CActive.
+// -----------------------------------------------------------------------------
+//
+void CHsLaunch::DoCancel()
+    {
+    if( iProcessMonitor )
+        {
+        iProcessMonitor->Cancel();
+        }
+    
+    if( iShutdownMonitor )
+        {
+        iShutdownMonitor->Cancel();
+        }
+    }      
+
+// -----------------------------------------------------------------------------
+// CHsLaunch::RunError()
+// From CActive.
+// -----------------------------------------------------------------------------
+//
+TInt CHsLaunch::RunError( TInt aError )
+    {
+    /* Shutdown. This application
+     * will be restarted by startup sw. */
+    ShutdownApp( KErrGeneral );
+    return KErrNone;
+    } 
+
+// -----------------------------------------------------------------------------
+// CHsLaunch::HandleNotifyInt()
+// From MCenRepNotifyHandlerCallback
+// -----------------------------------------------------------------------------
+//
+void CHsLaunch::HandleNotifyInt(TUint32 aId, TInt aNewValue)
+{
+    if (aId == 0x00000007 && aNewValue) 
+        {
+        StopListeningLanguageSelection();
+        StartHomeScreen();
+        }
+}
+
+// -----------------------------------------------------------------------------
+// CHsLaunch::ProcessEndedL()
+// From MHsProcessMonitorObserver
+// -----------------------------------------------------------------------------
+//
+void CHsLaunch::ProcessEnded( const TExitType& aExitType,
+                              const TInt aExitReason,
+                              const TExitCategoryName& /*aExitCategory*/ )
+    {    
+    TInt crashCount = 0;
+    TInt error = RProperty::Get( KPSCategoryUid,
+                                 KPSCrashCountKey,
+                                 crashCount );
+    
+    // increment crash count in cenrep if the process has panic'd or killed with
+    // an error code
+    if( aExitType == EExitPanic ||
+        ( aExitType == EExitKill && aExitReason != KErrNone ) )
+        {
+        if( error == KErrNone )
+            {
+            crashCount++;
+            error = RProperty::Set( KPSCategoryUid,
+                                    KPSCrashCountKey,
+                                    crashCount );                          
+            }
+        
+        if( error == KErrNone )
+            {      
+            User::After( KSleepOnRetry ); 
+            Activate();
+            }
+        else
+            {           
+            ShutdownApp( error );
+            }
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CHsLaunch::ProcessMonitoringErrorL()
+// From MHsProcessMonitorObserver
+// -----------------------------------------------------------------------------
+//
+void CHsLaunch::ProcessMonitoringError( TInt aError )
+    {
+    /* Error in this method is critical and it might cause
+     * endless active scheduler loop if no active objects are
+     * not triggered. Therefore shutdown. This application
+     * will be restarted by startup sw. */
+    ShutdownApp( aError );
+    }
+
+// -----------------------------------------------------------------------------
+// CHsLaunch::SystemShutdownEvent()
+// From MHsShutdownMonitorObserver
+// -----------------------------------------------------------------------------
+//
+void CHsLaunch::SystemShutdownEvent()
+    {
+    // Do not shut down app. Startup app would try to restart this app.
+    // Just deactivate all active objects and wait for power off.
+    if( IsActive() )
+        {
+        Cancel();
+        }
+    else
+        {
+        DoCancel();
+        }    
+    }
+
+// -----------------------------------------------------------------------------
+// CHsLaunch::InitProcessMonitorL()
+// Initialize process monitor
+// -----------------------------------------------------------------------------
+//
+void CHsLaunch::InitProcessMonitorL( const TInt aProcessId )
+    {
+    if( iProcessMonitor )
+        {
+        delete iProcessMonitor;
+        iProcessMonitor = NULL;
+        }
+    iProcessMonitor = CHsProcessMonitor::NewL( aProcessId, *this );    
+    User::LeaveIfError( iProcessMonitor->StartMonitor() );
+    }
+
+// -----------------------------------------------------------------------------
+// CHsLaunch::ShutdownApp()
+// Shut down application
+// -----------------------------------------------------------------------------
+//
+void CHsLaunch::ShutdownApp( const TInt aApplicationReturnValue )
+    {
+    if( IsActive() )
+        {
+        Cancel();
+        }
+    else
+        {
+        DoCancel();
+        }
+    
+    iApplicationReturnValue = aApplicationReturnValue;
+#ifndef HOMESCREEN_TEST    
+    CActiveScheduler::Stop();
+#endif //HOMESCREEN_TEST
+    }
+
+// -----------------------------------------------------------------------------
+// CHsLaunch::StartHomeScreen()
+// Starts the homescreen application.
+// -----------------------------------------------------------------------------
+//
+void CHsLaunch::StartHomeScreen()
+    {
+    // Create app or connect to existing.
+    TInt processExisted = EFalse;
+    
+    RProcess process;
+    TInt processError = process.Create( KHsExeName, KNullDesC );    
+    if( processError == KErrAlreadyExists )
+        {        
+        processError = process.Open( KHsProcessName, EOwnerProcess );
+        processExisted = ETrue;
+        }
+    TInt monitorError = KErrNone;
+    if( processError == KErrNone )
+        {
+        TRAP( monitorError, InitProcessMonitorL( process.Id() ) );
+        }
+    
+    if( processError == KErrNone &&
+        !processExisted )
+        {
+        // Make sure process is started even if monitor startup
+        // fails. This will assure that process is not left in
+        // suspended state. Resume can not be called for
+        // already running process (will cause KERN-EXEC 46).
+        process.Resume();
+        }
+                     
+    process.Close();
+    
+    if( processError != KErrNone ||
+        monitorError != KErrNone )
+        {
+        /* Error in this method is critical and it might cause
+         * endless active scheduler loop if no active objects are
+         * not triggered. Therefore shutdown. This application
+         * will be restarted by startup sw. */
+        ShutdownApp( KErrGeneral );
+        }
+    }
+        
+// -----------------------------------------------------------------------------
+// CHsLaunch::IsLanguageSelected()
+// Checks if the language is selected.
+// -----------------------------------------------------------------------------
+//  
+TBool CHsLaunch::IsLanguageSelectedL()
+    {
+    TInt value;
+    User::LeaveIfError(iRepository->Get(0x00000007, value));
+    return value;
+    }
+
+// -----------------------------------------------------------------------------
+// CHsLaunch::StartListeningLanguageSelection()
+// Starts to listen repository notifications.
+// -----------------------------------------------------------------------------
+//  
+void CHsLaunch::StartListeningLanguageSelectionL()
+    {
+    iCenRepNotifyHandler = CCenRepNotifyHandler::NewL(
+            *this, *iRepository, CCenRepNotifyHandler::EIntKey, 0x00000007);
+    iCenRepNotifyHandler->StartListeningL();
+    }
+        
+// -----------------------------------------------------------------------------
+// CHsLaunch::StopListeningLanguageSelection()
+// Stops to listen repository notifications.
+// -----------------------------------------------------------------------------
+//      
+void CHsLaunch::StopListeningLanguageSelection()
+    {
+    iCenRepNotifyHandler->StopListening();
+    delete iCenRepNotifyHandler;
+    iCenRepNotifyHandler = NULL;
+    }
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplicationlauncher/src/hsprocessmonitor.cpp	Fri Jul 09 14:36:01 2010 +0300
@@ -0,0 +1,184 @@
+/* 
+ * Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description: process monitor.                 
+ *
+ */
+
+#include "hsprocessmonitor.h"
+
+// ========================= MEMBER FUNCTIONS ==================================
+
+// -----------------------------------------------------------------------------
+// CHsProcessMonitor::NewL()
+// Two-phased constructor
+// -----------------------------------------------------------------------------
+CHsProcessMonitor* CHsProcessMonitor::NewL( const TInt iProcessId,
+                                            MHsProcessMonitorObserver& aObserver )
+    {
+    CHsProcessMonitor* self = new ( ELeave ) CHsProcessMonitor( iProcessId,
+                                                                aObserver );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CHsProcessMonitor::~CHsProcessMonitor()
+// Destructor.
+// -----------------------------------------------------------------------------
+//
+CHsProcessMonitor::~CHsProcessMonitor()
+    {
+    Cancel();
+    SecureProcessHandleAsClosed();    	
+    iProcessId = KErrNotFound;
+    }
+
+// -----------------------------------------------------------------------------
+// CHsProcessMonitor::AttachMonitor()
+// Attach monitor
+// -----------------------------------------------------------------------------
+//
+TInt CHsProcessMonitor::AttachMonitor()
+    {   
+    SecureProcessHandleAsClosed();
+    
+    TInt error = iProcess.Open( iProcessId, EOwnerProcess );
+    
+    if( error == KErrNone )
+        {
+        iProcessHandleOpen = ETrue;
+        }
+    
+    return error;
+    }   
+
+// -----------------------------------------------------------------------------
+// CHsProcessMonitor::StartMonitor()
+// Start monitor
+// -----------------------------------------------------------------------------
+//
+TInt CHsProcessMonitor::StartMonitor()
+    {
+    TInt error = KErrNone;
+    
+    if( !iProcessHandleOpen )
+        {
+        error = AttachMonitor();
+        }
+    
+    if( error == KErrNone )
+        {
+        iProcess.Logon( iStatus );
+        SetActive();                
+        }
+    
+    return error;
+    }   
+
+// -----------------------------------------------------------------------------
+// CHsProcessMonitor::CHsProcessMonitor()
+// C++ default constructor can NOT contain any code, that might leave.
+// -----------------------------------------------------------------------------
+CHsProcessMonitor::CHsProcessMonitor( const TInt aProcessId,
+                                      MHsProcessMonitorObserver& aObserver ) :
+        CActive( EPriorityStandard ),
+        iProcessId( aProcessId ),
+        iObserver( aObserver ),
+        iProcessHandleOpen( EFalse )
+    {
+    CActiveScheduler::Add( this );
+    }
+
+// -----------------------------------------------------------------------------
+// CHsProcessMonitor::ConstructL()
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CHsProcessMonitor::ConstructL()
+    {    
+    }
+
+// -----------------------------------------------------------------------------
+// CHsProcessMonitor::RunL
+// -----------------------------------------------------------------------------
+//
+void CHsProcessMonitor::RunL()
+    {
+    iProcess.LogonCancel( iStatus );    	
+    
+    const TInt error = iStatus.Int();        
+    
+    if( error == KErrCancel )
+        {
+        }
+    else if( error == KErrNoMemory )
+        {
+        User::Leave( KErrNoMemory );
+        }
+    else
+        {
+        const TExitType exitType = iProcess.ExitType();									
+        if( exitType == EExitPending )
+            {
+            User::LeaveIfError( StartMonitor() );
+            }
+        else
+            {
+            iObserver.ProcessEnded( exitType,
+                                    iProcess.ExitReason(),
+                                    iProcess.ExitCategory() );
+            }
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CHsProcessMonitor::DoCancel()
+// From CActive.
+// -----------------------------------------------------------------------------
+//
+void CHsProcessMonitor::DoCancel()
+    {
+    iProcess.LogonCancel( iStatus );
+    }      
+
+// -----------------------------------------------------------------------------
+// CHsProcessMonitor::RunError()
+// From CActive.
+// -----------------------------------------------------------------------------
+//
+TInt CHsProcessMonitor::RunError( TInt aError )
+    {    
+    iObserver.ProcessMonitoringError( aError );
+
+    // Observer will handle error. Return green light.
+    return KErrNone;    
+    }  
+
+// -----------------------------------------------------------------------------
+// CHsProcessMonitor::SecureProcessHandleAsClosed()
+// Close process handle if open
+// -----------------------------------------------------------------------------
+//
+void CHsProcessMonitor::SecureProcessHandleAsClosed()
+    {
+    if( iProcessHandleOpen )
+        {
+        iProcess.Close();
+        iProcessHandleOpen = EFalse;
+        }
+    } 
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplicationlauncher/src/hsshutdownmonitor.cpp	Fri Jul 09 14:36:01 2010 +0300
@@ -0,0 +1,130 @@
+/* 
+ * Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description: shutdown monitor.                 
+ *
+ */
+
+#include <ssm/ssmstate.h>
+#include <ssm/ssmdomaindefs.h>
+
+#include "hsshutdownmonitor.h"
+
+// ========================= MEMBER FUNCTIONS ==================================
+
+// -----------------------------------------------------------------------------
+// CHsShutdownMonitor::NewL()
+// Two-phased constructor
+// -----------------------------------------------------------------------------
+CHsShutdownMonitor* CHsShutdownMonitor::NewL(
+        MHsShutdownMonitorObserver& aObserver )
+    {
+    CHsShutdownMonitor* self = new ( ELeave ) CHsShutdownMonitor( aObserver );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CHsShutdownMonitor::~CHsShutdownMonitor()
+// Destructor.
+// -----------------------------------------------------------------------------
+//
+CHsShutdownMonitor::~CHsShutdownMonitor()
+    {
+    Cancel();
+    iSAS.Close();
+    }
+
+// -----------------------------------------------------------------------------
+// CHsShutdownMonitor::StartMonitor()
+// Start monitor
+// -----------------------------------------------------------------------------
+//
+void CHsShutdownMonitor::StartMonitor()
+    {
+    iSAS.RequestStateNotification( iStatus );
+    SetActive();    
+    }   
+
+// -----------------------------------------------------------------------------
+// CHsShutdownMonitor::CHsShutdownMonitor()
+// C++ default constructor can NOT contain any code, that might leave.
+// -----------------------------------------------------------------------------
+CHsShutdownMonitor::CHsShutdownMonitor( MHsShutdownMonitorObserver& aObserver ) :
+        CActive( EPriorityStandard ),
+        iObserver( aObserver )
+    {
+    CActiveScheduler::Add( this );
+    }
+
+// -----------------------------------------------------------------------------
+// CHsShutdownMonitor::ConstructL()
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CHsShutdownMonitor::ConstructL()
+    {
+    User::LeaveIfError( iSAS.Connect( KSM2GenMiddlewareDomain3 ) );
+    }
+
+// -----------------------------------------------------------------------------
+// CHsShutdownMonitor::RunL
+// -----------------------------------------------------------------------------
+//
+void CHsShutdownMonitor::RunL()
+    {
+    User::LeaveIfError( iStatus.Int() );
+    
+    TBool registerForMoreEvents = ETrue;
+    
+    TSsmState state = iSAS.State();
+    if( state.MainState() == ESsmShutdown )
+        {
+        iObserver.SystemShutdownEvent();
+        registerForMoreEvents = EFalse;
+        }
+    
+    if( registerForMoreEvents )
+        {
+        iSAS.AcknowledgeAndRequestStateNotification( KErrNone, iStatus );
+        SetActive();
+        }
+    else
+        {
+        iSAS.AcknowledgeStateNotification( KErrNone );
+        }        
+    }
+
+// -----------------------------------------------------------------------------
+// CHsShutdownMonitor::DoCancel()
+// From CActive.
+// -----------------------------------------------------------------------------
+//
+void CHsShutdownMonitor::DoCancel()
+    {
+    iSAS.RequestStateNotificationCancel();
+    }      
+
+// -----------------------------------------------------------------------------
+// CHsShutdownMonitor::RunError()
+// From CActive.
+// -----------------------------------------------------------------------------
+//
+TInt CHsShutdownMonitor::RunError( TInt aError )
+    {
+    return aError;
+    }
+
+// End of File
--- a/homescreenapp/hsdomainmodel/inc/hsconfiguration.h	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/hsdomainmodel/inc/hsconfiguration.h	Fri Jul 09 14:36:01 2010 +0300
@@ -47,7 +47,7 @@
     Q_PROPERTY(int widgetDragEffectDuration READ widgetDragEffectDuration WRITE setWidgetDragEffectDuration)
     Q_PROPERTY(int widgetDropEffectDuration READ widgetDropEffectDuration WRITE setWidgetDropEffectDuration)
     Q_PROPERTY(int defaultPageId READ defaultPageId WRITE setDefaultPageId)
-    Q_PROPERTY(int maximumPageCount READ maximumPageCount WRITE setMaximumPageCount)    
+    Q_PROPERTY(int maximumPageCount READ maximumPageCount WRITE setMaximumPageCount)
     Q_PROPERTY(bool isShortcutLabelVisible READ isShortcutLabelVisible WRITE setShortcutLabelVisible)
     Q_PROPERTY(qreal bounceFeedbackEffectDistance READ bounceFeedbackEffectDistance WRITE setBounceFeedbackEffectDistance)
     Q_PROPERTY(qreal pageChangePanDistanceInPixels READ pageChangePanDistanceInPixels WRITE setPageChangePanDistanceInPixels)
@@ -73,7 +73,7 @@
     Q_PROPERTY(int snapTimeout READ snapTimeout WRITE setSnapTimeout)
     Q_PROPERTY(qreal snapForce READ snapForce WRITE setSnapForce)
     Q_PROPERTY(qreal snapGap READ snapGap WRITE setSnapGap)
-    Q_PROPERTY(qreal snapBorderGap READ snapBorderGap WRITE setSnapBorderGap)
+    Q_PROPERTY(qreal pageMargin READ pageMargin WRITE setPageMargin)
     Q_PROPERTY(int snapLineFadeInDuration READ snapLineFadeInDuration WRITE setSnapLineFadeInDuration)
     Q_PROPERTY(int snapLineFadeOutDuration READ snapLineFadeOutDuration WRITE setSnapLineFadeOutDuration)
     Q_PROPERTY(bool isSnapEffectsEnabled READ isSnapEffectsEnabled WRITE setSnapEffectsEnabled)
@@ -91,107 +91,117 @@
         SceneWallpaper
     };
 
+#define SETVALUE(member, name) \
+    if (member != value) { \
+        member = value; \
+        emit propertyChanged(name); \
+    }
+
     int bounceEffect() const { return mBounceEffect; }
-    void setBounceEffect(int effect) { mBounceEffect = effect; }
+    void setBounceEffect(int value) { SETVALUE(mBounceEffect, "bounceEffect") }
     int widgetTapAndHoldTimeout() const { return mWidgetTapAndHoldTimeout; }
-    void setWidgetTapAndHoldTimeout(int timeout) { mWidgetTapAndHoldTimeout = timeout; }
+    void setWidgetTapAndHoldTimeout(int value) { SETVALUE(mWidgetTapAndHoldTimeout, "widgetTapAndHoldTimeout") }
     int sceneTapAndHoldTimeout() const { return mSceneTapAndHoldTimeout; }
-    void setSceneTapAndHoldTimeout(int timeout) { mSceneTapAndHoldTimeout = timeout; }
+    void setSceneTapAndHoldTimeout(int value) { SETVALUE(mSceneTapAndHoldTimeout, "sceneTapAndHoldTimeout") }
     int pageChangeAnimationDuration() const { return mPageChangeAnimationDuration; }
-    void setPageChangeAnimationDuration(int duration) { mPageChangeAnimationDuration = duration; }    
+    void setPageChangeAnimationDuration(int value) { SETVALUE(mPageChangeAnimationDuration, "pageChangeAnimationDuration") }
     int pageChangeZoneAnimationDuration() const { return mPageChangeZoneAnimationDuration; }
-    void setPageChangeZoneAnimationDuration(int duration) { mPageChangeZoneAnimationDuration = duration; }    
+    void setPageChangeZoneAnimationDuration(int value) { SETVALUE(mPageChangeZoneAnimationDuration, "pageChangeZoneAnimationDuration") }
     int pageChangeZoneReverseAnimationDuration() const { return mPageChangeZoneReverseAnimationDuration; }
-    void setPageChangeZoneReverseAnimationDuration(int duration) { mPageChangeZoneReverseAnimationDuration = duration; }
+    void setPageChangeZoneReverseAnimationDuration(int value) { SETVALUE(mPageChangeZoneReverseAnimationDuration, "pageChangeZoneReverseAnimationDuration") }
     int pageRemovedAnimationDuration() const { return mPageRemovedAnimationDuration; }
-    void setPageRemovedAnimationDuration(int duration) { mPageRemovedAnimationDuration = duration; }    
+    void setPageRemovedAnimationDuration(int value) { SETVALUE(mPageRemovedAnimationDuration, "pageRemovedAnimationDuration") }
     int newPageAddedAnimationDuration() const { return mNewPageAddedAnimationDuration; }
-    void setNewPageAddedAnimationDuration(int duration) { mNewPageAddedAnimationDuration = duration; }  
+    void setNewPageAddedAnimationDuration(int value) { SETVALUE(mNewPageAddedAnimationDuration, "newPageAddedAnimationDuration") }
     int widgetDragEffectDuration() const { return mWidgetDragEffectDuration; }
-    void setWidgetDragEffectDuration(int duration) { mWidgetDragEffectDuration = duration; }  
+    void setWidgetDragEffectDuration(int value) { SETVALUE(mWidgetDragEffectDuration, "widgetDragEffectDuration") }
     int widgetDropEffectDuration() const { return mWidgetDropEffectDuration; }
-    void setWidgetDropEffectDuration(int duration) { mWidgetDropEffectDuration = duration; }  
+    void setWidgetDropEffectDuration(int value) { SETVALUE(mWidgetDropEffectDuration, "widgetDropEffectDuration") }
     int defaultPageId() const { return mDefaultPageId; }
-    void setDefaultPageId(int id) { mDefaultPageId = id; }
+    void setDefaultPageId(int value) { SETVALUE(mDefaultPageId, "defaultPageId") }
     int maximumPageCount() const { return mMaximumPageCount; }
-    void setMaximumPageCount(int count) { mMaximumPageCount = count; }  
+    void setMaximumPageCount(int value) { SETVALUE(mMaximumPageCount, "maximumPageCount") }
     bool isShortcutLabelVisible() const { return mIsShortcutLabelVisible; }
-    void setShortcutLabelVisible(bool visible) { mIsShortcutLabelVisible = visible; }  
+    void setShortcutLabelVisible(bool value) { SETVALUE(mIsShortcutLabelVisible, "isShortcutLabelVisible") }
     qreal bounceFeedbackEffectDistance() const { return mBounceFeedbackEffectDistance; }
-    void setBounceFeedbackEffectDistance(qreal distance) { mBounceFeedbackEffectDistance = distance; }  
+    void setBounceFeedbackEffectDistance(qreal value) { SETVALUE(mBounceFeedbackEffectDistance, "bounceFeedbackEffectDistance") }
     qreal pageChangePanDistanceInPixels() const { return mPageChangePanDistanceInPixels; }
-    void setPageChangePanDistanceInPixels(qreal distance) { mPageChangePanDistanceInPixels = distance; }  
+    void setPageChangePanDistanceInPixels(qreal value) { SETVALUE(mPageChangePanDistanceInPixels, "pageChangePanDistanceInPixels") }
     qreal tapAndHoldDistance() const { return mTapAndHoldDistance; }
-    void setTapAndHoldDistance(qreal distance) { mTapAndHoldDistance = distance; }  
+    void setTapAndHoldDistance(qreal value) { SETVALUE(mTapAndHoldDistance, "tapAndHoldDistance") }
     qreal pageChangeZoneWidth() const { return mPageChangeZoneWidth; }
-    void setPageChangeZoneWidth(qreal width) { mPageChangeZoneWidth = width; }  
+    void setPageChangeZoneWidth(qreal value) { SETVALUE(mPageChangeZoneWidth, "pageChangeZoneWidth") }
     qreal pageIndicatorSpacing() const { return mPageIndicatorSpacing; }
-    void setPageIndicatorSpacing(qreal spacing) { mPageIndicatorSpacing = spacing; }
+    void setPageIndicatorSpacing(qreal value) { SETVALUE(mPageIndicatorSpacing, "pageIndicatorSpacing") }
     qreal maximumWidgetHeight() const { return mMaximumWidgetHeight; }
-    void setMaximumWidgetHeight(qreal height) { mMaximumWidgetHeight = height; }  
+    void setMaximumWidgetHeight(qreal value) { SETVALUE(mMaximumWidgetHeight, "maximumWidgetHeight") }
     qreal maximumWidgetWidth() const { return mMaximumWidgetWidth; }
-    void setMaximumWidgetWidth(qreal width) { mMaximumWidgetWidth = width; }  
+    void setMaximumWidgetWidth(qreal value) { SETVALUE(mMaximumWidgetWidth, "maximumWidgetWidth") }
     qreal minimumWidgetHeight() const { return mMinimumWidgetHeight; }
-    void setMinimumWidgetHeight(qreal height) { mMinimumWidgetHeight = height; }
+    void setMinimumWidgetHeight(qreal value) { SETVALUE(mMinimumWidgetHeight, "minimumWidgetHeight") }
     qreal minimumWidgetWidth() const { return mMinimumWidgetWidth; }
-    void setMinimumWidgetWidth(qreal width) { mMinimumWidgetWidth = width; }  
+    void setMinimumWidgetWidth(qreal value) { SETVALUE(mMinimumWidgetWidth, "minimumWidgetWidth") }
     qreal pageChangePanDistance() const { return mPageChangePanDistance; }
-    void setPageChangePanDistance(qreal distance) { mPageChangePanDistance = distance; }  
+    void setPageChangePanDistance(qreal value) { SETVALUE(mPageChangePanDistance, "pageChangePanDistance") }
     HbFeedback::InstantEffect pageChangeFeedbackEffect() const { return mPageChangeFeedbackEffect; }
-    void setPageChangeFeedbackEffect(HbFeedback::InstantEffect effect) { mPageChangeFeedbackEffect = effect; }   
+    void setPageChangeFeedbackEffect(HbFeedback::InstantEffect value) { SETVALUE(mPageChangeFeedbackEffect, "pageChangeFeedbackEffect") }
     HbFeedback::InstantEffect widgetPickFeedbackEffect() const { return mWidgetPickFeedbackEffect; }
-    void setWidgetPickFeedbackEffect(HbFeedback::InstantEffect effect) { mWidgetPickFeedbackEffect = effect; }  
+    void setWidgetPickFeedbackEffect(HbFeedback::InstantEffect value) { SETVALUE(mWidgetPickFeedbackEffect, "widgetPickFeedbackEffect") }
     HbFeedback::InstantEffect widgetDropFeedbackEffect() const { return mWidgetDropFeedbackEffect; }
-    void setWidgetDropFeedbackEffect(HbFeedback::InstantEffect effect) { mWidgetDropFeedbackEffect = effect; }  
+    void setWidgetDropFeedbackEffect(HbFeedback::InstantEffect value) { SETVALUE(mWidgetDropFeedbackEffect, "widgetDropFeedbackEffect") }
     HbFeedback::InstantEffect widgetRepositionFeedbackEffect() const { return mWidgetRepositionFeedbackEffect; }
-    void setWidgetRepositionFeedbackEffect(HbFeedback::InstantEffect effect) { mWidgetRepositionFeedbackEffect = effect; } 
+    void setWidgetRepositionFeedbackEffect(HbFeedback::InstantEffect value) { SETVALUE(mWidgetRepositionFeedbackEffect, "widgetRepositionFeedbackEffect") }
     HbFeedback::InstantEffect widgetOverTrashbinFeedbackEffect() const { return mWidgetOverTrashbinFeedbackEffect; }
-    void setWidgetOverTrashbinFeedbackEffect(HbFeedback::InstantEffect effect) { mWidgetOverTrashbinFeedbackEffect = effect; } 
+    void setWidgetOverTrashbinFeedbackEffect(HbFeedback::InstantEffect value) { SETVALUE(mWidgetOverTrashbinFeedbackEffect, "widgetOverTrashbinFeedbackEffect") }
     HbFeedback::InstantEffect widgetDropToTrashbinFeedbackEffect() const { return mWidgetDropToTrashbinFeedbackEffect; }
-    void setWidgetDropToTrashbinFeedbackEffect(HbFeedback::InstantEffect effect) { mWidgetDropToTrashbinFeedbackEffect = effect; } 
+    void setWidgetDropToTrashbinFeedbackEffect(HbFeedback::InstantEffect value) { SETVALUE(mWidgetDropToTrashbinFeedbackEffect, "widgetDropToTrashbinFeedbackEffect") }
     HbFeedback::InstantEffect shortcutWidgetTapFeedbackEffect() const { return mShortcutWidgetTapFeedbackEffect; }
-    void setShortcutWidgetTapFeedbackEffect(HbFeedback::InstantEffect effect) { mShortcutWidgetTapFeedbackEffect = effect; } 
+    void setShortcutWidgetTapFeedbackEffect(HbFeedback::InstantEffect value) { SETVALUE(mShortcutWidgetTapFeedbackEffect, "shortcutWidgetTapFeedbackEffect") }
     HbFeedback::InstantEffect widgetMoveBlockedFeedbackEffect() const { return mWidgetMoveBlockedFeedbackEffect; }
-    void setWidgetMoveBlockedFeedbackEffect(HbFeedback::InstantEffect effect) { mWidgetMoveBlockedFeedbackEffect = effect; } 
+    void setWidgetMoveBlockedFeedbackEffect(HbFeedback::InstantEffect value) { SETVALUE(mWidgetMoveBlockedFeedbackEffect, "widgetMoveBlockedFeedbackEffect") }
     HbFeedback::InstantEffect clockWidgetTapFeedbackEffect() const { return mClockWidgetTapFeedbackEffect; }
-    void setClockWidgetTapFeedbackEffect(HbFeedback::InstantEffect effect) { mClockWidgetTapFeedbackEffect = effect; } 
+    void setClockWidgetTapFeedbackEffect(HbFeedback::InstantEffect value) { SETVALUE(mClockWidgetTapFeedbackEffect, "clockWidgetTapFeedbackEffect") }
     HbFeedback::InstantEffect widgetSnappingFeedbackEffect() const { return mWidgetSnappingFeedbackEffect; }
-    void setWidgetSnappingFeedbackEffect(HbFeedback::InstantEffect effect) { mWidgetSnappingFeedbackEffect = effect; }
+    void setWidgetSnappingFeedbackEffect(HbFeedback::InstantEffect value) { SETVALUE(mWidgetSnappingFeedbackEffect, "widgetSnappingFeedbackEffect") }
     bool isSnapEnabled() const { return mIsSnapEnabled; }
-    void setSnapEnabled(bool enabled) { mIsSnapEnabled = enabled; }
+    void setSnapEnabled(bool value) { SETVALUE(mIsSnapEnabled, "isSnapEnabled") }
     int snapTimeout() const { return mSnapTimeout; }
-    void setSnapTimeout(int timeout) { mSnapTimeout = timeout; }
+    void setSnapTimeout(int value) { SETVALUE(mSnapTimeout, "snapTimeout") }
     qreal snapForce() const { return mSnapForce; }
-    void setSnapForce(qreal force) { mSnapForce = force; }  
+    void setSnapForce(qreal value) { SETVALUE(mSnapForce, "snapForce") }
     qreal snapGap() const { return mSnapGap; }
-    void setSnapGap(qreal gap) { mSnapGap = gap; }  
-    qreal snapBorderGap() const { return mSnapBorderGap; }
-    void setSnapBorderGap(qreal gap) { mSnapBorderGap = gap; }
+    void setSnapGap(qreal value) { SETVALUE(mSnapGap, "snapGap") }
+    qreal pageMargin() const { return mPageMargin; }
+    void setPageMargin(qreal value) { SETVALUE(mPageMargin, "pageMargin") }
     int snapLineFadeInDuration() const { return mSnapLineFadeInDuration; }
-    void setSnapLineFadeInDuration(int duration) { mSnapLineFadeInDuration = duration; }
+    void setSnapLineFadeInDuration(int value) { SETVALUE(mSnapLineFadeInDuration, "snapLineFadeInDuration") }
     int snapLineFadeOutDuration() const { return mSnapLineFadeOutDuration; }
-    void setSnapLineFadeOutDuration(int duration) { mSnapLineFadeOutDuration = duration; }
+    void setSnapLineFadeOutDuration(int value) { SETVALUE(mSnapLineFadeOutDuration, "snapLineFadeOutDuration") }
     bool isSnapEffectsEnabled() const { return mIsSnapEffectsEnabled; }
-    void setSnapEffectsEnabled(bool enabled) { mIsSnapEffectsEnabled = enabled; }
+    void setSnapEffectsEnabled(bool value) { SETVALUE(mIsSnapEffectsEnabled, "isSnapEffectsEnabled") }
     SceneType sceneType() const { return mSceneType; }
-    void setSceneType(SceneType type) { mSceneType = type; }
-     
+    void setSceneType(SceneType value) { SETVALUE(mSceneType, "sceneType") }
+#undef SETVALUE
+
     QSizeF minimumWidgetSizeInUnits() const;
     QSizeF maximumWidgetSizeInUnits() const;
     QSizeF minimumWidgetSizeInPixels() const;
     QSizeF maximumWidgetSizeInPixels() const;
-    
+
     bool load();
     bool importFromFile(const QString &path);
     bool exportToFile(const QString &path);
-        
+
     static HsConfiguration *instance();
     static HsConfiguration *takeInstance();
     static void setInstance(HsConfiguration *instance);
 
+signals:
+    void propertyChanged(const QString &name);
+
 private:
     Q_DISABLE_COPY(HsConfiguration)
-    
+
 private:
     int mBounceEffect;
     int mWidgetTapAndHoldTimeout;
@@ -230,7 +240,7 @@
     int mSnapTimeout;
     qreal mSnapForce;
     qreal mSnapGap;
-    qreal mSnapBorderGap;
+    qreal mPageMargin;
     int mSnapLineFadeInDuration;
     int mSnapLineFadeOutDuration;
     bool mIsSnapEffectsEnabled;
--- a/homescreenapp/hsdomainmodel/inc/hspage.h	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/hsdomainmodel/inc/hspage.h	Fri Jul 09 14:36:01 2010 +0300
@@ -18,6 +18,7 @@
 #ifndef HSPAGE_H
 #define HSPAGE_H
 
+#include <QPointF>
 #include <HbWidget>
 #include <HbIconItem>
 #include "hsdomainmodel_global.h"
@@ -38,44 +39,35 @@
 public:
     HsPage(QGraphicsItem *parent = 0);
     ~HsPage();
-
     int databaseId() const;
     void setDatabaseId(int id);
-
     void setGeometry(const QRectF &rect);
-
     bool load();
-
     HsWallpaper *wallpaper() const;
-
     bool addExistingWidget(HsWidgetHost *widgetHost);
     bool removeWidget(HsWidgetHost *widgeHost);
-
     QList<HsWidgetHost *> newWidgets();
     bool addNewWidget(HsWidgetHost *widgetHost, const QPointF &position = QPointF());
     void layoutNewWidgets();
     void resetNewWidgets();
     bool deleteFromDatabase();
-
     QList<HsWidgetHost *> widgets() const;
-
     bool isRemovable() const;
     void setRemovable(bool removable);
-
     bool isDefaultPage() const;
     bool isActivePage() const;
-    
     static HsPage *createInstance(const HsPageData &pageData);
-
-    QPointF mTouchPoint;
+    QPointF adjustedWidgetPosition(const QRectF &origWidgetRect);
+    QRectF contentGeometry();
+    QRectF contentGeometry(Qt::Orientation orientation);
+    QRectF contentRect();
+    QRectF contentRect(Qt::Orientation orientation);
 
 public slots:
     void showWidgets();
     void hideWidgets();
     void setOnline(bool online = true);
-
     void updateZValues();
-
     int pageIndex();
 
 private:
@@ -90,8 +82,8 @@
     void onWidgetResized();
     void onWidgetAvailable();
     void onWidgetUnavailable();
-
     void onOrientationChanged(Qt::Orientation orientation);
+    void onPageMarginChanged(const QString &value);
 
 private:
     int mDatabaseId;
@@ -101,7 +93,8 @@
     QList<HsWidgetHost*> mNewWidgets;
     QList<HsWidgetHost*> mUnavailableWidgets;
     HsPageTouchArea *mTouchArea;
-    
+    QPointF mTouchPoint;    
+    qreal mPageMargin;
     HOMESCREEN_TEST_FRIEND_CLASS(TestHsDomainModel)
 };
 
--- a/homescreenapp/hsdomainmodel/src/hsconfiguration.cpp	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/hsdomainmodel/src/hsconfiguration.cpp	Fri Jul 09 14:36:01 2010 +0300
@@ -73,7 +73,7 @@
     mSnapTimeout(100),
     mSnapForce(30),
     mSnapGap(6),
-    mSnapBorderGap(0),
+    mPageMargin(0),
     mSnapLineFadeInDuration(200),
     mSnapLineFadeOutDuration(100),
     mIsSnapEffectsEnabled(true),    
--- a/homescreenapp/hsdomainmodel/src/hspage.cpp	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/hsdomainmodel/src/hspage.cpp	Fri Jul 09 14:36:01 2010 +0300
@@ -48,13 +48,18 @@
       mDatabaseId(-1),
       mWallpaper(0),
       mRemovable(true),
-      mTouchArea(0)
+      mTouchArea(0),
+      mPageMargin(0.0)
 {
     setFlag(QGraphicsItem::ItemHasNoContents);
     setSizePolicy(QSizePolicy(QSizePolicy::Ignored,
                               QSizePolicy::Ignored));
 
     setupTouchArea();
+
+    //Page margin
+    mPageMargin = HSCONFIGURATION_GET(pageMargin);
+    connect(HsConfiguration::instance(), SIGNAL(propertyChanged(QString)), SLOT(onPageMarginChanged(QString)));
 }
 
 /*!
@@ -127,7 +132,7 @@
 }
 
 /*!
-    Return wallpaper. 
+    Return wallpaper.
 */
 HsWallpaper *HsPage::wallpaper() const
 {
@@ -156,6 +161,7 @@
 
     return true;
  }
+
 /*!
     Remove given \a widgetHost from a page. Widget is not deleted. 
     Returns true if successful
@@ -172,6 +178,7 @@
 
     return true;
 }
+
 /*!
     Returns list of new widgets belonging to a page. Widgets which are
     not yet layouted are considered as new widgets. 
@@ -197,16 +204,17 @@
     }
 
     HsWidgetPresentationData presentation;
+    QPointF adjustedWidgetPos = adjustedWidgetPosition(widgetHost->geometry());
     presentation.orientation = HsScene::orientation();
     if (!widgetHost->getPresentation(presentation)) {
         presentation.orientation = HsScene::orientation();
-        presentation.setPos(mTouchPoint);
+        presentation.setPos(adjustedWidgetPos);
         presentation.zValue = 0;
         widgetHost->savePresentation(presentation);
     }
 
     widgetHost->hide();
-    widgetHost->setPos(presentation.x, presentation.y);
+    widgetHost->setPos(adjustedWidgetPos);
     widgetHost->setZValue(presentation.zValue);
 
     connectWidget(widgetHost);
@@ -244,6 +252,15 @@
 }
 
 /*!
+    Clears new widgets list and resets layout.
+*/
+void HsPage::resetNewWidgets()
+{
+    mNewWidgets.clear();
+    setLayout(0);
+}
+
+/*!
     Remove page and all it's contained widgets from database 
 */
 bool HsPage::deleteFromDatabase()
@@ -262,9 +279,13 @@
         widget->remove();
     }
     mUnavailableWidgets.clear();
-
+    
+    if (mWallpaper) {
+        mWallpaper->remove();
+    }
     return HsDatabase::instance()->deletePage(mDatabaseId);
 }
+
 /*!
     Return list of widgets belonging to a page 
 */
@@ -289,6 +310,7 @@
 {
     mRemovable = removable;
 }
+
 /*!
     Return true if page is default page.
 */
@@ -296,6 +318,7 @@
 {
     return mDatabaseId == HSCONFIGURATION_GET(defaultPageId);
 }
+
 /*!
     Return true if page is active page.
 */
@@ -303,6 +326,7 @@
 {
     return this == HsScene::instance()->activePage();
 }
+
 /*!
     Create page into database and return instance of a new page.
 */
@@ -322,6 +346,65 @@
 }
 
 /*!
+    The widget is bounded in the rectangle which is smaller by pageMargin on all sides of page.
+*/
+QPointF HsPage::adjustedWidgetPosition(const QRectF &origWidgetRect)
+{
+    QRectF widgetAreaRect = contentGeometry();
+    qreal widgetX = qBound(widgetAreaRect.left(), origWidgetRect.x(), widgetAreaRect.right() - origWidgetRect.width());
+    qreal widgetY = qBound(widgetAreaRect.top(), origWidgetRect.y(), widgetAreaRect.bottom() - origWidgetRect.height());
+
+    return QPointF(widgetX, widgetY);
+}
+
+/*!
+    Returns rect of rectangular where widgets are allowed to be placed in the page.
+*/
+QRectF HsPage::contentGeometry()
+{
+    return contentGeometry(HsScene::mainWindow()->orientation());
+}
+
+/*!
+    Returns rect of rectangular where widgets are allowed to be placed in the page.
+*/
+QRectF HsPage::contentGeometry(Qt::Orientation orientation)
+{
+    QRectF pageRect = HsScene::mainWindow()->layoutRect();
+
+    if (orientation != HsScene::orientation()) {
+        qreal width = pageRect.width();
+        qreal height = pageRect.height();
+        pageRect.setWidth(height);
+        pageRect.setHeight(width);
+    }
+
+    //Take care of chrome in both orientation
+    pageRect.setTop(64);
+
+    //Shrink by page margins at each side
+    return pageRect.adjusted(mPageMargin, mPageMargin, -mPageMargin, -mPageMargin);
+}
+
+/*!
+    Returns rect of rectangular where widgets are allowed to be placed in the page.
+*/
+QRectF HsPage::contentRect()
+{
+    return contentRect(HsScene::mainWindow()->orientation());
+}
+
+/*!
+    Returns rect of rectangular where widgets are allowed to be placed in the page.
+*/
+QRectF HsPage::contentRect(Qt::Orientation orientation)
+{
+    QRectF rect = contentGeometry(orientation);
+    rect.moveTopLeft(QPointF(0,0));
+    return rect;
+}
+
+/*!
     Calls onShow() for contained widgets.
 */
 void HsPage::showWidgets()
@@ -346,7 +429,7 @@
 }
 
 /*!
-    Propogate online state to widgets.
+    Propagate online state to widgets.
 */
 void HsPage::setOnline(bool online)
 {
@@ -357,6 +440,7 @@
         widget->setOnline(online);
     }
 }
+
 /*!
     Update widgets z-values and persist those. Active widget has top most 
     z-value.
@@ -457,11 +541,7 @@
 {
     if ( !layout() ) {
         HsWidgetHost *widget = qobject_cast<HsWidgetHost *>(sender());
-        QRectF widgetRect = widget->geometry();
-        QRectF pageRect = HsScene::mainWindow()->layoutRect();
-        qreal widgetX = qBound(qreal(0), widgetRect.x(), pageRect.width() - widgetRect.width());
-        qreal widgetY = qBound(qreal(64), widgetRect.y(), pageRect.height() - widgetRect.height());
-        widget->setPos(widgetX, widgetY);
+        widget->setPos(adjustedWidgetPosition(widget->geometry()));
     } else {
         layout()->invalidate();
     }
@@ -500,20 +580,19 @@
     widget->hide();
     widget->setParentItem(0);
 }
+
 /*!
     Run positioning algorithm for widgets which don't have position on 
     target orientation. Otherwise set orientation positions for widgets.
 */
 void HsPage::onOrientationChanged(Qt::Orientation orientation)
 {
-    QRectF rect = HsScene::mainWindow()->layoutRect();
-
     HsWidgetPositioningOnOrientationChange *converter =
         HsWidgetPositioningOnOrientationChange::instance();
 
-    qreal chrome = 64;
-    QRectF from(0, chrome, rect.height(), rect.width() - chrome);
-    QRectF to(0, chrome, rect.width(), rect.height() - chrome);
+    Qt::Orientation orientationFrom = orientation == Qt::Vertical ? Qt::Horizontal : Qt::Vertical;
+    QRectF from = contentGeometry(orientationFrom);
+    QRectF to = contentGeometry(orientation);
 
     HsWidgetPresentationData presentation;
     presentation.orientation = orientation;
@@ -525,18 +604,33 @@
             widget->setGeometry(geometries.first());
             widget->savePresentation();
         } else {
-            widget->setPos(presentation.pos());
+            QRectF adjustWidgetPosition;
+            adjustWidgetPosition = widget->geometry();
+            adjustWidgetPosition.moveTopLeft(presentation.pos());
+            widget->setPos(adjustedWidgetPosition(adjustWidgetPosition));
             widget->setZValue(presentation.zValue);
+            widget->savePresentation(); //Needed to follow pageMargin dynamic change
         }
     }
 }
 
-/*!
-    Clears new widgets list and resets layout.
-*/
-void HsPage::resetNewWidgets()
+void HsPage::onPageMarginChanged(const QString &value)
 {
-    mNewWidgets.clear();
-    setLayout(0);
+    if (value == "pageMargin") {
+        mPageMargin = HSCONFIGURATION_GET(pageMargin);
+
+        if (!mWidgets.isEmpty()) {
+            foreach (HsWidgetHost *widget, mWidgets) {
+                widget->setPos(adjustedWidgetPosition(widget->geometry()));
+                widget->savePresentation();
+            }
+        }
+
+        if (!mNewWidgets.isEmpty()) {
+            foreach (HsWidgetHost *widget, mNewWidgets) {
+                widget->setPos(adjustedWidgetPosition(widget->geometry()));
+                widget->savePresentation();
+            }
+        }
+    }
 }
-
--- a/homescreenapp/hsdomainmodel/src/hspagenewwidgetlayout.cpp	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/hsdomainmodel/src/hspagenewwidgetlayout.cpp	Fri Jul 09 14:36:01 2010 +0300
@@ -20,6 +20,7 @@
 #include "hsdomainmodeldatastructures.h"
 #include "hspagenewwidgetlayout.h"
 #include "hsscene.h"
+#include "hspage.h"
 #include "hsdatabase.h"
 #include "hswidgethost.h"
 #include "hswallpaper.h"
@@ -113,13 +114,10 @@
        -> set widget center point to this touch point
     */
     if (mTouchPoint != QPointF() && mNewWidgets.count() == 1) {
-        QRectF pageRect = HsScene::mainWindow()->layoutRect();
-        qreal widgetX = qBound(qreal(0), mTouchPoint.x() - rects.at(0).width() / 2, pageRect.width() - rects.at(0).width());
-        qreal widgetY = qBound(qreal(64), mTouchPoint.y() - rects.at(0).height() / 2, pageRect.height() - rects.at(0).height());
-        mNewWidgets.at(0)->setGeometry(widgetX,
-                                       widgetY,
-                                       rects.at(0).width(), 
-                                       rects.at(0).height());
+        QRectF widgetRect = rects.at(0);
+        widgetRect.moveCenter(mTouchPoint);
+        widgetRect.moveTopLeft(HsScene::instance()->activePage()->adjustedWidgetPosition(widgetRect));
+        mNewWidgets.at(0)->setGeometry(widgetRect);
         /* we have to save widget presentation data here after drawing
            to get correct position for later use
         */
@@ -129,8 +127,7 @@
     else {
         HsWidgetPositioningOnWidgetAdd *algorithm =
             HsWidgetPositioningOnWidgetAdd::instance();
-        QRectF pageRect = HsScene::mainWindow()->layoutRect();
-        pageRect.adjust( (qreal)0,(qreal)64,(qreal)0,(qreal)0);
+        QRectF pageRect = HsScene::instance()->activePage()->contentGeometry();
         QList<QRectF> calculatedRects =
             algorithm->convert(pageRect, rects, QPointF());
 
--- a/homescreenapp/hsdomainmodel/src/hsscene.cpp	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/hsdomainmodel/src/hsscene.cpp	Fri Jul 09 14:36:01 2010 +0300
@@ -164,29 +164,41 @@
         return true;
     }
 
-    int index = mPages.indexOf(page) + 1;
+    int nextIndex = mPages.indexOf(page) + 1;
 
     HsDatabase *db = HsDatabase::instance();
     db->transaction();
-
+    // update page indexes
     HsPageData data;
-    for (int i = index; i < mPages.count(); ++i) {
-        data.id = mPages.at(i)->databaseId();
-        data.indexPosition = i - 1;
+    int pageCount(mPages.count());
+    for (;nextIndex < pageCount; ++nextIndex) {
+        data.id = mPages.at(nextIndex)->databaseId();
+        data.indexPosition = nextIndex - 1;
         if (!db->updatePage(data)) {
             db->rollback();
             return false;
         }
     }
-
+    // page will remove itself from database
     if (!page->deleteFromDatabase()) {
         db->rollback();
         return false;
     }
 
     db->commit();
-
+    // update internal list
+    int index = mPages.indexOf(page);
+    bool lastPage(mPages.last() == page);
     mPages.removeOne(page);
+    if (mPages.isEmpty()) {
+        mActivePage = NULL;
+    }else if (mActivePage == page) {
+        if (lastPage) {
+            index--;
+        }
+        setActivePageIndex(index);
+    }
+    
     return true;
 }
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsutils/inc/hsmenudialogfactory.h	Fri Jul 09 14:36:01 2010 +0300
@@ -0,0 +1,44 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Menu Dialog
+*
+*/
+
+
+#ifndef HSMENUDIALOG_H
+#define HSMENUDIALOG_H
+
+#include <QScopedPointer>
+
+class QStringList;
+class HbAction;
+class HbMessageBox;
+
+#include "hsutils_global.h"
+
+class HSUTILS_EXPORT HsMenuDialogFactory
+{
+public:
+    enum Options { OkCancel, Close };
+
+    virtual HbMessageBox *create(const QString &text,
+                                 Options options = OkCancel) const;
+    virtual ~HsMenuDialogFactory();
+private:
+    void setUpActions(HbMessageBox *box,
+                      const QStringList &translationIdentifiers) const;
+};
+
+#endif
+
--- a/homescreenapp/hsutils/inc/hsmenuevent.h	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/hsutils/inc/hsmenuevent.h	Fri Jul 09 14:36:01 2010 +0300
@@ -46,10 +46,12 @@
         OpenInstalledView,
         OpenHomeScreen,
         ArrangeCollection,
+        ArrangeAllCollections,
         CreateCollection,
         PreviewHSWidget,
         ShowAppSettings,
         ShowAppDetails,
+        ShowInstallationLog,
         Unknown
     };
 
--- a/homescreenapp/hsutils/inc/hsmenueventfactory.h	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/hsutils/inc/hsmenueventfactory.h	Fri Jul 09 14:36:01 2010 +0300
@@ -63,19 +63,20 @@
 
     static QEvent *createAddAppsFromApplicationsViewEvent(
         HsSortAttribute aApplicationsSortOder,
-        HsSortAttribute aCollectionsSortOder,
         int aItemId = 0);
 
-    static QEvent *createAddAppsFromCallectionViewEvent(
+    static QEvent *createAddAppsFromCollectionViewEvent(
         int aCollectionId,
-        int aApplicationId = 0,
-        HsSortAttribute aCollectionsSortOder = NoHsSortAttribute);
+        int aApplicationId = 0);
 
     static QEvent *createRemoveAppFromCollectionEvent(int aItemId, int aCollectionId);
 
     static QEvent *createUninstallApplicationEvent(int aItemId);
 
-    static QEvent *createArrangeCollectionEvent(int aTopItemId);
+    static QEvent *createArrangeCollectionEvent(int aTopItemId,
+        int aCollectionId);
+
+    static QEvent *createArrangeAllCollectionsEvent(int aTopItemId);
 
     static QEvent *createPreviewHSWidgetEvent(
         int entryId,
@@ -87,6 +88,8 @@
     static QEvent *createAppSettingsViewEvent(int entryId);
     
     static QEvent *createAppDetailsViewEvent(int entryId);
+    
+    static QEvent *createInstallationLogEvent();
 
     static QEvent *createUnknownEvent();
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsutils/inc/hsmessageboxwrapper.h	Fri Jul 09 14:36:01 2010 +0300
@@ -0,0 +1,60 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#ifndef HSMESSAGEBOXWRAPPER_H
+#define HSMESSAGEBOXWRAPPER_H
+
+#include <HbWidget>
+
+#include "hsutils_global.h"
+
+#include "hstest_global.h"
+HOMESCREEN_TEST_CLASS(t_hsUtils)
+
+class HbAction;
+struct HsMessageBoxWrapperImpl;
+
+class HSUTILS_EXPORT HsMessageBoxWrapper : public QObject
+{
+    Q_OBJECT
+
+public:
+    HsMessageBoxWrapper(QObject *parent=0);
+    ~HsMessageBoxWrapper();
+
+    void setHeader(const QString &header);
+    void setQueryText(const QString &queryText);
+
+signals:
+    void accepted();
+    void rejected();
+public slots:
+    void show();
+
+private:
+    Q_DISABLE_COPY(HsMessageBoxWrapper)
+
+private slots:
+    void onDialogClosed(int action);
+ 
+private:
+    HsMessageBoxWrapperImpl *mImpl;
+
+    HOMESCREEN_TEST_FRIEND_CLASS(t_hsUtils)
+};
+
+#endif // HSPAGEINDICATOR_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsutils/inc/hspropertyanimationwrapper.h	Fri Jul 09 14:36:01 2010 +0300
@@ -0,0 +1,57 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#ifndef HSPROPERTYANIMATIONWRAPPER_H
+#define HSPROPERTYANIMATIONWRAPPER_H
+
+#include <QScopedPointer>
+#include "hsutils_global.h"
+
+#include "hstest_global.h"
+HOMESCREEN_TEST_CLASS(t_hsUtils)
+
+struct HsPropertyAnimationWrapperImpl;
+class HSUTILS_EXPORT HsPropertyAnimationWrapper : public QObject
+{
+    Q_OBJECT
+
+public:
+    HsPropertyAnimationWrapper(QObject *parent=0);
+    ~HsPropertyAnimationWrapper();
+    
+    void setTargetObject(QObject *target);
+    void setPropertyName(const QByteArray &propertyName);
+    bool isRunning();
+    void setEndValue(const QVariant &value);
+    void setDuration(int msecs);
+signals:
+    void finished();
+
+public slots:
+    void start();
+    void stop();
+
+private:
+    Q_DISABLE_COPY(HsPropertyAnimationWrapper)
+
+ 
+private:
+    QScopedPointer<HsPropertyAnimationWrapperImpl> mImpl;
+    HOMESCREEN_TEST_FRIEND_CLASS(t_hsUtils)
+};
+
+#endif // HSPAGEINDICATOR_H
--- a/homescreenapp/hsutils/inc/hswidgetpositioningonwidgetmove.h	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/hsutils/inc/hswidgetpositioningonwidgetmove.h	Fri Jul 09 14:36:01 2010 +0300
@@ -156,7 +156,6 @@
     bool mSnapEnabled;
     qreal mSnapForce;
     qreal mSnapGap;
-    qreal mSnapBorderGap;
 
     bool mRectVerticalEdgeLiesInLineWithVerticalLine;
     bool mRectLieAboveVerticalLine;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsutils/src/hsmenudialogfactory.cpp	Fri Jul 09 14:36:01 2010 +0300
@@ -0,0 +1,110 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Menu Dialog
+*
+*/
+
+#include <QString>
+#include <QStringList>
+#include <QList>
+#include <QAction>
+
+#include <HbAction>
+#include <HbMessageBox>
+#include "hsmenudialogfactory.h"
+
+/*!
+    \class HsMenuDialogFactory
+    \ingroup group_hsutils
+
+    \brief Creates dialog instances for Application Library.
+
+    \sa HsMenuEvent
+*/
+
+/*! \enum HsMenuDialogFactory::Options
+ Describes what actions the dialog will have.
+ */
+
+/*! \var HsMenuDialogFactory::Options HsMenuDialogFactory::OkCancel
+ Requested dialog should have two actions in the following order: Ok (confirm) and Cancel (reject).
+ */
+/*! \var HsMenuDialogFactory::Options HsMenuDialogFactory::Close
+ Requested dialog should have one action: Close.
+ */
+/*!
+    Creates dialog.
+    \param text to be displayed in the dialog.
+    \param options specify dialog actions.
+    \return requested dialog.
+*/
+HbMessageBox *HsMenuDialogFactory::create(const QString &text,
+                                 Options options) const
+{
+
+    QStringList actionIdentifiers; // head of the list will be first action in dialog
+    HbMessageBox::MessageBoxType type(HbMessageBox::MessageTypeNone);
+
+    switch (options) {
+
+    case OkCancel:
+
+        actionIdentifiers << hbTrId("txt_common_button_ok");
+        actionIdentifiers << hbTrId("txt_common_button_cancel");
+        type = HbMessageBox::MessageTypeQuestion;
+        break;
+
+    case Close:
+
+        actionIdentifiers << hbTrId("txt_common_button_close");
+        type = HbMessageBox::MessageTypeInformation;
+        break;
+
+    default:
+        break;
+    }
+
+    QScopedPointer<HbMessageBox> box(new HbMessageBox(type));
+
+    setUpActions(box.data(), actionIdentifiers);
+
+    box->setText(text);
+    box->setAttribute(Qt::WA_DeleteOnClose);
+
+    return box.take();
+}
+
+
+/*!
+    Destructor.
+*/
+HsMenuDialogFactory::~HsMenuDialogFactory() {}
+
+/*!
+    Sets up dialog actions
+    \param box dialog to operate on.
+    \param actionIdentifiers list of translation identifiers for actions. Order of
+    actions in the dialog will reflect the identifiers order in the list.
+*/
+void HsMenuDialogFactory::setUpActions(HbMessageBox *box,
+                                    const QStringList &translationIdentifiers) const
+{
+    box->clearActions();
+
+    foreach (QString identifier, translationIdentifiers) {
+        QScopedPointer<HbAction> action(new HbAction(identifier));
+        action->setParent(box);
+        box->addAction(action.take());
+    }
+}
--- a/homescreenapp/hsutils/src/hsmenuevent.cpp	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/hsutils/src/hsmenuevent.cpp	Fri Jul 09 14:36:01 2010 +0300
@@ -57,7 +57,7 @@
     Opening application library from shortcut.
 */
 /*! \var HsMenuEvent::OperationType HsMenuEvent::ArrangeCollection
-    Swith to arrange mode.
+    Switch to arrange mode.
 */
 /*! \var HsMenuEvent::OperationType HsMenuEvent::Unknown
     Unknown menu event.
--- a/homescreenapp/hsutils/src/hsmenueventfactory.cpp	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/hsutils/src/hsmenueventfactory.cpp	Fri Jul 09 14:36:01 2010 +0300
@@ -177,18 +177,15 @@
     Creates an HsMenuEvent::AddAppsToCollection event.
 
     \param aApplicationsSortOder applications sort order.
-    \param aCollectionsSortOder collections sort order.
     \param aItemId item id.
     \return Add applications to collection event.
  */
 QEvent *HsMenuEventFactory::createAddAppsFromApplicationsViewEvent(
     HsSortAttribute aApplicationsSortOder,
-    HsSortAttribute aCollectionsSortOder,
     int aItemId)
 {
     QVariantMap params;
     params.insert(appSortOrderKey(), aApplicationsSortOder);
-    params.insert(collectionSortOrderKey(), aCollectionsSortOder);
     params.insert(itemIdKey(), aItemId);
     return  new HsMenuEvent(HsMenuEvent::AddAppsToCollection, params);
 }
@@ -198,18 +195,15 @@
 
     \param aCollectionId collection id.
     \param aApplicationId application id.
-    \param aCollectionsSortOder collections sort order.
     \return Add applications to collection event.
  */
-QEvent *HsMenuEventFactory::createAddAppsFromCallectionViewEvent(
+QEvent *HsMenuEventFactory::createAddAppsFromCollectionViewEvent(
     int aCollectionId,
-    int aApplicationId,
-    HsSortAttribute aCollectionsSortOder)
+    int aApplicationId)
 {
     QVariantMap params;
     params.insert(itemIdKey(), aApplicationId);
     params.insert(collectionIdKey(), aCollectionId);
-    params.insert(collectionSortOrderKey(), aCollectionsSortOder);
     return new HsMenuEvent(HsMenuEvent::AddAppsToCollection, params);
 }
 
@@ -247,16 +241,33 @@
     Creates an HsMenuEvent::ArrangeCollection event.
 
     \param aTopItemId Item id to be scrolled.
-    \return ArrangeCollection event.
+    \param aCollectionId Collection id.
+    \retval ArrangeCollection event.
  */
-QEvent *HsMenuEventFactory::createArrangeCollectionEvent(int aTopItemId)
+QEvent *HsMenuEventFactory::createArrangeCollectionEvent(
+    int aTopItemId,
+    int aCollectionId)
 {
     QVariantMap params;
     params.insert(itemIdKey(), aTopItemId);
+    params.insert(collectionIdKey(), aCollectionId);
     return new HsMenuEvent(HsMenuEvent::ArrangeCollection, params);
 }
 
 /*!
+    Creates an HsMenuEvent::ArrangeAllCollections event.
+
+    \param aTopItemId Item id to be scrolled.
+    \retval ArrangeAllCollections event.
+ */
+QEvent *HsMenuEventFactory::createArrangeAllCollectionsEvent(int aTopItemId)
+{
+    QVariantMap params;
+    params.insert(itemIdKey(), aTopItemId);
+    return new HsMenuEvent(HsMenuEvent::ArrangeAllCollections, params);
+}
+
+/*!
     Prepares event triggered on tap on Widget.
     \param entryId Id of an item.
     \param entryTypeName Name of the entry type (e.g. application, widget).
@@ -315,6 +326,16 @@
 }
 
 /*!
+    Creates an HsMenuEvent::ShowInstallationLog event.
+
+    \return Event for installation log.
+*/
+QEvent *HsMenuEventFactory::createInstallationLogEvent()
+{
+    return new HsMenuEvent(HsMenuEvent::ShowInstallationLog);
+}
+
+/*!
     Creates an HsMenuEvent::Unknown event.
 
     \return Unknown event.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsutils/src/hsmessageboxwrapper.cpp	Fri Jul 09 14:36:01 2010 +0300
@@ -0,0 +1,95 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#include <HbMessageBox>
+#include <HbLabel>
+#include <HbAction>
+#include "hsmessageboxwrapper.h"
+
+/*!
+    \class HsMessageBoxWrapper
+    \ingroup group_hsutils
+    \brief 
+*/
+
+
+struct HsMessageBoxWrapperImpl{
+	 QString mHeader;
+   QString mQueryText;
+
+};
+/*!
+
+*/
+HsMessageBoxWrapper::HsMessageBoxWrapper(QObject *parent)
+  : QObject(parent),mImpl(new HsMessageBoxWrapperImpl)
+{
+}
+
+/*!
+
+*/
+HsMessageBoxWrapper::~HsMessageBoxWrapper()
+{
+  delete mImpl;
+}
+
+/*!
+
+*/
+void HsMessageBoxWrapper::setHeader(const QString &header)
+{
+    mImpl->mHeader = header;
+}
+/*!
+
+*/
+void HsMessageBoxWrapper::setQueryText(const QString &queryText)
+{
+    mImpl->mQueryText = queryText;
+}
+/*!
+
+*/
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC SKIP
+#endif 
+
+void HsMessageBoxWrapper::show()
+{
+    HbMessageBox *box = new HbMessageBox(HbMessageBox::MessageTypeQuestion);
+    box->setAttribute(Qt::WA_DeleteOnClose);
+    box->setHeadingWidget(new HbLabel(mImpl->mHeader));
+    box->setText(mImpl->mQueryText);
+    box->setStandardButtons(HbMessageBox::Yes | HbMessageBox::No);
+
+    box->open(this,SLOT(onDialogClosed(int)));
+}
+/*!
+
+*/
+void HsMessageBoxWrapper::onDialogClosed(int action)
+{
+    if (action == HbMessageBox::Yes){
+       emit accepted();  
+    } else {
+       emit rejected();
+    }
+}
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC ENDSKIP
+#endif //COVERAGE_MEASUREMENT
--- a/homescreenapp/hsutils/src/hspageindicator.cpp	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/hsutils/src/hspageindicator.cpp	Fri Jul 09 14:36:01 2010 +0300
@@ -79,7 +79,7 @@
 */
 void HsPageIndicator::setActiveItemIndex(int activeItemIndex)
 {
-    if (activeItemIndex < 0 || itemCount() <= activeItemIndex) {
+    if (activeItemIndex < 0 || itemCount()-1 < activeItemIndex) {
         return;
     }
 
@@ -116,13 +116,18 @@
 */
 void HsPageIndicator::removeItem(int activeItemIndex)
 {
-    if (activeItemIndex < 0 || itemCount() - 1 <= activeItemIndex) {
+    if (activeItemIndex < 0 || itemCount() <= activeItemIndex) {
         return;
     }
 
+    if (activeItemIndex == itemCount()-1) {
+        activeItemIndex--;
+    }
+
     delete mItems.last();
     mItems.removeLast();
     layoutItems();
+    
     setActiveItemIndex(activeItemIndex);
 }
 
--- a/homescreenapp/hsutils/src/hspageindicatoritem.cpp	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/hsutils/src/hspageindicatoritem.cpp	Fri Jul 09 14:36:01 2010 +0300
@@ -111,9 +111,12 @@
     setTransformOriginPoint(rect().center());
     QPropertyAnimation *animation = 
         new QPropertyAnimation(graphicsEffect(), "strength");
+    
     animation->setDuration(800);
     animation->setKeyValueAt(0.2, 1);
     animation->setEndValue(0);
+    
+    connect(this,SIGNAL(destroyed()),animation,SLOT(stop()));
     connect(animation, SIGNAL(finished()), SLOT(animationFinished()));
     animation->start(QAbstractAnimation::DeleteWhenStopped);
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsutils/src/hspropertyanimationwrapper.cpp	Fri Jul 09 14:36:01 2010 +0300
@@ -0,0 +1,91 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#include <QPropertyAnimation>
+#include "hspropertyanimationwrapper.h"
+
+/*!
+    \class HsMessageBoxWrapper
+    \ingroup group_hsutils
+    \brief 
+*/
+
+struct HsPropertyAnimationWrapperImpl
+{
+public:
+    QPropertyAnimation *mPropertyAnimation;
+};
+
+/*!
+
+*/
+HsPropertyAnimationWrapper::HsPropertyAnimationWrapper(QObject *parent)
+  : QObject(parent),mImpl(new HsPropertyAnimationWrapperImpl)
+{
+    mImpl->mPropertyAnimation = new QPropertyAnimation(parent);
+    connect(mImpl->mPropertyAnimation,SIGNAL(finished()),SIGNAL(finished()));
+}
+
+/*!
+
+*/
+HsPropertyAnimationWrapper::~HsPropertyAnimationWrapper()
+{
+
+}
+
+/*!
+
+*/
+void HsPropertyAnimationWrapper::setTargetObject(QObject *target)
+{
+   mImpl->mPropertyAnimation->setTargetObject(target);
+}
+/*!
+
+*/
+void HsPropertyAnimationWrapper::setPropertyName(const QByteArray &propertyName)
+{
+   mImpl->mPropertyAnimation->setPropertyName(propertyName);
+}
+
+bool HsPropertyAnimationWrapper::isRunning()
+{
+    return (mImpl->mPropertyAnimation->state() == QAbstractAnimation::Running);
+}
+void HsPropertyAnimationWrapper::setEndValue(const QVariant &value)
+{
+    mImpl->mPropertyAnimation->setEndValue(value);
+}
+void HsPropertyAnimationWrapper::setDuration(int msecs)
+{
+    mImpl->mPropertyAnimation->setDuration(msecs);
+}
+/*!
+
+*/
+void HsPropertyAnimationWrapper::start()
+{
+    mImpl->mPropertyAnimation->start();
+}
+/*!
+
+*/
+void HsPropertyAnimationWrapper::stop()
+{
+    mImpl->mPropertyAnimation->stop();
+}
--- a/homescreenapp/hsutils/src/hswidgetpositioningonwidgetmove.cpp	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/hsutils/src/hswidgetpositioningonwidgetmove.cpp	Fri Jul 09 14:36:01 2010 +0300
@@ -63,7 +63,7 @@
     mRectLieLeft(false), mTopInRange(false), mBottomInRange(false),
     mMinHorizontalEdgesDistance(0.0), mHorizontalDistance(0.0),
     mHorizontalDistanceFromSelectedRect(0.0), mContainerHorizontalEdgeDistance(0.0),
-    mSnapEnabled(false), mSnapForce(0.0), mSnapGap(0.0), mSnapBorderGap(0.0),
+    mSnapEnabled(false), mSnapForce(0.0), mSnapGap(0.0),
     mRectVerticalEdgeLiesInLineWithVerticalLine(false), mRectLieAboveVerticalLine(false), mRectLieBelowVerticalLine(false),
     mRectHorizontalEdgeLiesInLineWithHorizontalLine(false), mRectLieLeftOfHorizontalLine(false), mRectLiesRightOfHorizontalLine(false)
 {
@@ -80,7 +80,6 @@
     //The following values should be in qreal, so the status received in canConvert is ignored
     mSnapForce = configuration[SNAPFORCE].toDouble(&canConvert);
     mSnapGap = configuration[SNAPGAP].toDouble(&canConvert);
-    mSnapBorderGap = configuration[SNAPBORDERGAP].toDouble(&canConvert);
 }
 
 /*!
@@ -91,11 +90,7 @@
                                         const QList<QRectF> &inactiveRects,
                                         const QRectF &activeRect)
 {
-    mContainerRect.setLeft(containerRect.left() + mSnapBorderGap);
-    mContainerRect.setTop(containerRect.top() + mSnapBorderGap);
-    mContainerRect.setRight(containerRect.right() - mSnapBorderGap);
-    mContainerRect.setBottom(containerRect.bottom() - mSnapBorderGap);
-
+    mContainerRect = containerRect;
     mActiveRectWidth = activeRect.width();
     mActiveRectHeight = activeRect.height();
 
--- a/homescreenapp/inc/hsapp_defs.h	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/inc/hsapp_defs.h	Fri Jul 09 14:36:01 2010 +0300
@@ -47,7 +47,7 @@
 inline const QString groupNameAttributeName();
 inline const QString componentIdAttributeName();
 inline const QString entryShortName();
-inline const QString appLibActivity();
+
 // Sort attribute
 enum HsSortAttribute {
     NoHsSortAttribute,
--- a/homescreenapp/inc/hsapp_defs.inl	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/inc/hsapp_defs.inl	Fri Jul 09 14:36:01 2010 +0300
@@ -308,15 +308,6 @@
 }
 
 /*!
-    \return app lib activity name
-*/
-inline const QString appLibActivity()
-{
-    static const QString key("AppLibMainView");
-    return key;
-}
-
-/*!
     \return homescreen activitity name to open idle iew
 */
 inline const QString activityHsIdleView()
--- a/homescreenapp/rom/homescreenapp_core.iby	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/rom/homescreenapp_core.iby	Fri Jul 09 14:36:01 2010 +0300
@@ -20,6 +20,7 @@
 
 // ---- hsapplication --------------------------------------------
 
+file=ABI_DIR\BUILD_DIR\hsapplicationlauncher.exe                PROGRAMS_DIR\hsapplicationlauncher.exe
 file=ABI_DIR\BUILD_DIR\hsapplication.exe                        PROGRAMS_DIR\hsapplication.exe
 data=ZPRIVATE\10003a3f\import\apps\hsapplication_reg.rsc        private\10003a3f\import\apps\hsapplication_reg.rsc
 data=\epoc32\data\z\resource\apps\hsapplication.mif             resource\apps\hsapplication.mif
@@ -34,6 +35,9 @@
 data=ZPRIVATE\20022f35\wallpapers\page\2_landscape.png          private\20022f35\wallpapers\page\2_landscape.png
 data=ZPRIVATE\20022f35\wallpapers\page\3_portrait.png           private\20022f35\wallpapers\page\3_portrait.png
 data=ZPRIVATE\20022f35\wallpapers\page\3_landscape.png          private\20022f35\wallpapers\page\3_landscape.png
+data=ZPRIVATE\20022f35\wallpapers\originals\car.png             private\20022f35\wallpapers\originals\car.png
+data=ZPRIVATE\20022f35\wallpapers\originals\shapes.png          private\20022f35\wallpapers\originals\shapes.png
+data=ZPRIVATE\20022f35\wallpapers\originals\shoes.png           private\20022f35\wallpapers\originals\shoes.png
 
 // ---- hswidgetuninstaller --------------------------------------------
 file=ABI_DIR\BUILD_DIR\hswidgetuninstaller.exe            PROGRAMS_DIR\hswidgetuninstaller.exe
@@ -53,12 +57,10 @@
 data=\epoc32\data\z\resource\qt\plugins\hshomescreenclientplugin.qtplugin  resource\qt\plugins\hshomescreenclientplugin.qtplugin
 data=ZPRIVATE\20022f35\hshomescreenclientplugin.xml                        private\20022f35\hshomescreenclientplugin.xml
 
-// ---- runtimeplugins --------------------------------------------
+
 
-// -------- hsdefaultruntimeplugin
-file=ABI_DIR\BUILD_DIR\hsdefaultruntimeplugin.dll                              SHARED_LIB_DIR\hsdefaultruntimeplugin.dll
-data=ZPRIVATE\20022f35\plugins\runtimeplugins\hsdefaultruntimeplugin.qtplugin  private\20022f35\plugins\runtimeplugins\hsdefaultruntimeplugin.qtplugin
-data=ZPRIVATE\20022f35\plugins\runtimeplugins\hsdefaultruntimeplugin.xml       private\20022f35\plugins\runtimeplugins\hsdefaultruntimeplugin.xml
+
+
 
 // ---- serviceproviders --------------------------------------------
 
--- a/homescreenapp/runtimeplugins/hsdefaultruntimeplugin/hsdefaultruntimeplugin.pri	Fri Jun 25 19:19:22 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description:
-#
-
-HEADERS += ./inc/hsdefaultruntime.h \
-           ./inc/hsdefaultruntimeplugin.h
-SOURCES += ./src/hsdefaultruntime.cpp \
-           ./src/hsdefaultruntimeplugin.cpp
--- a/homescreenapp/runtimeplugins/hsdefaultruntimeplugin/hsdefaultruntimeplugin.pro	Fri Jun 25 19:19:22 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description:
-#
-
-TEMPLATE = lib
-CONFIG += plugin hb mobility
-MOBILITY = serviceframework publishsubscribe
-
-PLUGIN_SUBDIR = /private/20022F35/plugins/runtimeplugins
-
-include (../../common.pri)
-
-LIBS += -lhsdomainmodel \
-        -lhsutils
-        
-QT += xml sql
-
-DEPENDPATH += ./inc \
-              ./src
-INCLUDEPATH += ./inc \
-             ../../hsutils/inc \
-             ../../hsdomainmodel/inc \
-
-symbian: {
-    TARGET.UID3 = 0x20022F3E
-    LIBS += -lxqkeycapture
-}
-
-
-include(hsdefaultruntimeplugin.pri)
--- a/homescreenapp/runtimeplugins/hsdefaultruntimeplugin/inc/hsdefaultruntime.h	Fri Jun 25 19:19:22 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,90 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Default implementation of the home screen runtime.
-*
-*/
-
-#ifndef HSDEFAULTRUNTIME_H
-#define HSDEFAULTRUNTIME_H
-
-#include <QStateMachine>
-#include <qmobilityglobal.h>
-
-#ifdef Q_OS_SYMBIAN
-#include <xqkeycapture.h>
-#endif
-
-#ifndef HSDEFAULTRUNTIMEPLUGIN_UNITTEST
-	#define TEST_CLASS_FWD
-	#define TEST_FRIEND
-#else
-	#define TEST_CLASS_FWD class DefaultRuntimePluginTest;
-    #define TEST_FRIEND friend class DefaultRuntimePluginTest;
-#endif
-
-class HsContentService;
-QTM_BEGIN_NAMESPACE
-class QValueSpacePublisher;
-QTM_END_NAMESPACE
-
-QTM_USE_NAMESPACE
-
-TEST_CLASS_FWD
-
-class HsDefaultRuntime : public QStateMachine
-{
-    Q_OBJECT
-
-public:
-    HsDefaultRuntime(QObject *parent = 0);
-    ~HsDefaultRuntime();
-
-signals:
-    void event_exit();
-    void event_toIdle();
-protected:
-    bool eventFilter(QObject *watched, QEvent *event);
-
-private:
-    Q_DISABLE_COPY(HsDefaultRuntime)
-
-    void registerAnimations();
-    void createStatePublisher();
-    void createContentServiceParts();
-    void createStates();
-    void assignServices();
-	void updatePSKeys();
-
-private slots:
-	void onIdleStateEntered();
-	void onIdleStateExited();
-	void activityRequested(const QString &name);
-	
-
-private:
-    HsContentService *mContentService;	
-	
-	bool mHomeScreenActive;
-	bool mIdleStateActive;
-
-	QValueSpacePublisher *mPublisher;
-	
-#ifdef Q_OS_SYMBIAN
-    XqKeyCapture keyCapture;
-#endif
-    
-    TEST_FRIEND
-};
-
-#endif
--- a/homescreenapp/runtimeplugins/hsdefaultruntimeplugin/inc/hsdefaultruntimeplugin.h	Fri Jun 25 19:19:22 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Default runtime provider.
-*
-*/
-
-#ifndef HSDEFAULTRUNTIMEPLUGIN_H
-#define HSDEFAULTRUNTIMEPLUGIN_H
-
-#include <QObject>
-#include <qserviceplugininterface.h>
-
-QTM_USE_NAMESPACE
-
-class HsDefaultRuntimePlugin : public QObject, public QServicePluginInterface
-{
-    Q_OBJECT
-    Q_INTERFACES(QtMobility::QServicePluginInterface)
-
-public:
-    QObject *createInstance(const QServiceInterfaceDescriptor &descriptor,
-                            QServiceContext *context,
-                            QAbstractSecuritySession *session);
-};
-
-#endif //HSDEFAULTRUNTIMEPLUGIN_H
--- a/homescreenapp/runtimeplugins/hsdefaultruntimeplugin/resource/hsdefaultruntimeplugin.xml	Fri Jun 25 19:19:22 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<service>
-    <name>hsdefaultruntimeplugin</name>
-    <filepath>hsdefaultruntimeplugin</filepath>
-    <description>Homescreen Runtime Plugin</description>
-    <interface>
-        <name>com.nokia.symbian.IHomeScreenRuntime</name>
-        <version>1.0</version>
-        <description>Default implementation for homescreen runtime</description>
-        <capabilities></capabilities>
-    </interface>
-</service>
--- a/homescreenapp/runtimeplugins/hsdefaultruntimeplugin/src/hsdefaultruntime.cpp	Fri Jun 25 19:19:22 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,447 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Default implementation of the home screen runtime.
-*
-*/
-
-#include <QState>
-#include <QFinalState>
-#include <QHistoryState>
-#include <QSignalTransition>
-#include <QKeyEventTransition>
-#include <QKeyEvent>
-
-#include <qvaluespacepublisher.h>
-#include <qservicemanager.h>
-#include <qservicefilter.h>
-#include <qserviceinterfacedescriptor.h>
-
-#include <HbApplication>
-#include <HbActivityManager>
-#include <HbInstance>
-#include <HbIconAnimationManager>
-#include <HbIconAnimationDefinition>
-
-#include "hsmenueventfactory.h"
-#include "homescreendomainpskeys.h"
-#include "hsdefaultruntime.h"
-#include "hsdatabase.h"
-#include "hscontentservice.h"
-#include "hsshortcutservice.h"
-#include "hsmenueventtransition.h"
-#include "hswidgetpositioningonorientationchange.h"
-#include "hswidgetpositioningonwidgetadd.h"
-#include "hsconfiguration.h"
-#include "hstest_global.h"
-#include "hswidgetpositioningonwidgetmove.h"
-
-QTM_USE_NAMESPACE
-#define hbApp qobject_cast<HbApplication*>(qApp)
-
-#ifdef Q_OS_SYMBIAN
-const static Qt::Key applicationKey = Qt::Key_Menu;
-#else
-const static Qt::Key applicationKey = Qt::Key_Home;
-#endif
-
-namespace
-{
-    const char KHsRootStateInterface[] = "com.nokia.homescreen.state.HsRootState";
-    const char KHsLoadSceneStateInterface[] = "com.nokia.homescreen.state.HsLoadSceneState";
-    const char KHsIdleStateInterface[] = "com.nokia.homescreen.state.HsIdleState";
-    const char KHsAppLibraryStateInterface[] = "com.nokia.homescreen.state.HsAppLibraryState";
-    const char KHsMenuWorkerStateInterface[] = "com.nokia.homescreen.state.HsMenuWorkerState";
-    const char KHsBacupRestoreStateInterface[] = "com.nokia.homescreen.state.HsBackupRestoreState";
-}
-
-
-/*!
-    \class HsDefaultRuntime
-    \ingroup group_hsdefaultruntimeplugin
-    \brief Default implementation of the home screen runtime.
-    Creates an execution context (EC) and populates it with
-    runtime services. States are loaded from state plugins.
-    Each state is given an access to the EC. States
-    are added to a state machine. Finally, the state machine
-    is started.
-*/
-
-/*!
-    Constructs runtime with \a parent as the parent object.
-*/
-HsDefaultRuntime::HsDefaultRuntime(QObject *parent)
-    : QStateMachine(parent),
-      mContentService(0),	  
-      mHomeScreenActive(false),
-      mIdleStateActive(false),
-      mPublisher(NULL)
-#ifdef Q_OS_SYMBIAN
-	  ,keyCapture()
-#endif
-{
-    HSTEST_FUNC_ENTRY("HS::HsDefaultRuntime::HsDefaultRuntime");
-
-    HsDatabase *db = new HsDatabase;
-    db->setConnectionName("homescreen.dbc");
-#ifdef Q_OS_SYMBIAN
-    db->setDatabaseName("c:/private/20022f35/homescreen.db");
-#else
-    db->setDatabaseName("private/20022f35/homescreen.db");
-#endif    
-    db->open();
-    HsDatabase::setInstance(db);
-
-    HsConfiguration::setInstance(new HsConfiguration);
-    HsConfiguration::instance()->load();
-            
-    HsWidgetPositioningOnOrientationChange::setInstance(
-        new HsAdvancedWidgetPositioningOnOrientationChange);
-
-    HsWidgetPositioningOnWidgetAdd::setInstance(
-        new HsAnchorPointInBottomRight);
-
-    HsWidgetPositioningOnWidgetMove::setInstance(
-        new HsSnapToLines);
-
-    registerAnimations();
-
-    createStatePublisher();
-    createContentServiceParts();
-    createStates();
-    assignServices();
-
-    // create the instance so that singleton is accessible from elsewhere
-    HsShortcutService::instance(this);
-
-    QCoreApplication::instance()->installEventFilter(this);
-
-    if (hbApp) { // Qt test framework uses QApplication.
-        connect(hbApp->activityManager(), SIGNAL(activityRequested(QString)), 
-                this, SLOT(activityRequested(QString)));
-    }
-    HSTEST_FUNC_EXIT("HS::HsDefaultRuntime::HsDefaultRuntime");
-}
-
-/*!
-    Destructor.
-*/
-HsDefaultRuntime::~HsDefaultRuntime()
-{
-    HsWidgetPositioningOnOrientationChange::setInstance(0);
-    delete mPublisher;
-}
-
-/*!
-    \fn void HsDefaultRuntime::stopStateMachine()
-    Emission of this signal initiates a transition to the final state.
-*/
-
-/*!
-    \copydoc QObject::eventFilter(QObject *watched, QEvent *event)
-*/
-bool HsDefaultRuntime::eventFilter(QObject *watched, QEvent *event)
-{
-    Q_UNUSED(watched);
-
-    switch (event->type()) {
-        case QEvent::ApplicationActivate:
-            qDebug() << "HsDefaultRuntime::eventFilter: QEvent::ApplicationActivate";
-#ifdef Q_OS_SYMBIAN
-            keyCapture.captureKey(applicationKey);
-#endif
-            mHomeScreenActive = true;
-            updatePSKeys();
-            break;
-        case QEvent::ApplicationDeactivate:
-            qDebug() << "HsDefaultRuntime::eventFilter: QEvent::ApplicationDeactivate";
-#ifdef Q_OS_SYMBIAN
-            keyCapture.cancelCaptureKey(applicationKey);
-#endif
-            mHomeScreenActive = false;
-            updatePSKeys();
-            break;
-        default:
-            break;
-    }
-   
-    bool result =  QStateMachine::eventFilter(watched, event);
-    // temporary hack as we should not register twice for events
-    if (event->type() == QEvent::KeyPress ) {
-        QKeyEvent* ke = static_cast<QKeyEvent *>(event);         
-        // Key_Launch0 should be removed when QT starts to send Key_Menu
-        result = (ke->key() == applicationKey) || ke->key() == Qt::Key_Launch0;        
-    }
-    return result;
-}
-
-
-/*!
-    Registers framework animations.
-*/
-void HsDefaultRuntime::registerAnimations()
-{
-    HbIconAnimationManager *manager = HbIconAnimationManager::global();
-    manager->addDefinitionFile(QLatin1String("qtg_anim_loading.axml"));
-}
-
-/*!
-    Creates Home screen state publisher.
-*/
-void HsDefaultRuntime::createStatePublisher()
-{
-    mPublisher = new QValueSpacePublisher(QValueSpace::PermanentLayer, HsStatePSKeyPath);
-
-    if (!mPublisher->isConnected()){
-    	// No permanent layer available
-    	mPublisher = new QValueSpacePublisher(HsStatePSKeyPath);
-    }
-
-    mPublisher->setValue(HsStatePSKeySubPath, EHomeScreenInactive);
-}
-
-/*!
-    Creates content service parts.
-*/
-void HsDefaultRuntime::createContentServiceParts()
-{
-    HSTEST_FUNC_ENTRY("HS::HsDefaultRuntime::createContentServiceParts");
-
-    mContentService = new HsContentService(this);
-
-    HSTEST_FUNC_EXIT("HS::HsDefaultRuntime::createContentServiceParts");
-}
-
-/*!
-    Creates states.
-*/
-void HsDefaultRuntime::createStates()
-{
-    HSTEST_FUNC_ENTRY("HS::HsDefaultRuntime::createStates");
-
-    QFinalState *finalState = new QFinalState();
-    addState(finalState);
-
-    QState *guiRootState = new QState();
-    addState(guiRootState);
-
-    guiRootState->addTransition(this, SIGNAL(event_exit()), finalState);
-
-    QServiceManager manager;
-
-    
-    QObject *loadSceneStateObj = manager.loadInterface(KHsLoadSceneStateInterface);
-    QState *loadSceneState = qobject_cast<QState *>(loadSceneStateObj);
-    loadSceneState->setParent(guiRootState);
-    loadSceneState->setObjectName(KHsLoadSceneStateInterface);
-
-    QObject *rootStateObj = manager.loadInterface(KHsRootStateInterface);
-    QState *rootState = qobject_cast<QState *>(rootStateObj);   
-    rootState->setParent(guiRootState);
-    rootState->setObjectName(KHsRootStateInterface);       
-
-    QObject *idleStateObj = manager.loadInterface(KHsIdleStateInterface);
-    QState *idleState = qobject_cast<QState *>(idleStateObj);
-    idleState->setParent(rootState);
-    idleState->setObjectName(KHsIdleStateInterface);
-	connect(idleState, SIGNAL(entered()), SLOT(onIdleStateEntered()));
-	connect(idleState, SIGNAL(exited()), SLOT(onIdleStateExited()));
-
-
-    //menu state
-    QState *menuParallelState = new QState(
-            QState::ParallelStates, rootState);
-    QState *menuRootState = new QState(menuParallelState);
-
-    QObject *appLibraryStateObj = manager.loadInterface(KHsAppLibraryStateInterface);
-    QState *appLibraryState = qobject_cast<QState *>(appLibraryStateObj);
-    appLibraryState->setParent(menuRootState);
-    appLibraryState->setObjectName(KHsAppLibraryStateInterface);
-    menuRootState->setInitialState(appLibraryState);
-
-    QHistoryState *historyState = new QHistoryState(rootState);
-    historyState->setDefaultState(idleState);
-    
-    loadSceneState->addTransition(
-            loadSceneState, SIGNAL(event_history()), historyState);            
-
-    QObject *menuWorkerStateObj = manager.loadInterface(KHsMenuWorkerStateInterface);
-    QState *menuWorkerState = qobject_cast<QState *>(menuWorkerStateObj);
-    menuWorkerState->setParent(menuParallelState);
-    menuWorkerState->setObjectName(KHsMenuWorkerStateInterface);
-
-    connect(appLibraryState, SIGNAL(collectionEntered()), 
-            menuWorkerState, SIGNAL(reset()));
-    connect(appLibraryState, SIGNAL(allAppsStateEntered ()), 
-            menuWorkerState, SIGNAL(reset()));
-    connect(appLibraryState, SIGNAL(allCollectionsStateEntered ()), 
-            menuWorkerState, SIGNAL(reset()));
-
-    //Backup/Restore state
-    QObject *backupRestoreStateObj = manager.loadInterface(KHsBacupRestoreStateInterface);
-    QState *backupRestoreState = qobject_cast<QState *>(backupRestoreStateObj);   
-    backupRestoreState->setParent(guiRootState);
-    backupRestoreState->setObjectName(KHsBacupRestoreStateInterface);
-    backupRestoreState->addTransition(
-            backupRestoreState, SIGNAL(event_loadScene()), loadSceneState);
-
-    // root state transitions
-    idleState->addTransition(idleState, SIGNAL(event_applicationLibrary()), menuRootState);
-    appLibraryState->addTransition(
-            appLibraryState, SIGNAL(toHomescreenState()), idleState);
-    rootState->addTransition(rootState, SIGNAL(event_backupRestore()), backupRestoreState);
-    // opening shortcut to Application Library
-    HsMenuEventTransition *idleToAppLibTransition =
-        new HsMenuEventTransition(HsMenuEvent::OpenApplicationLibrary,
-                                  idleState, appLibraryState);
-    idleState->addTransition(idleToAppLibTransition);
-
-    HsMenuEventTransition *appLibToIdleTransition =
-        new HsMenuEventTransition(
-            HsMenuEvent::OpenHomeScreen, appLibraryState, idleState);
-    appLibraryState->addTransition(appLibToIdleTransition);
-
-    HbMainWindow *window = hbInstance->allMainWindows().first();
-
-    // key driven transition from idle to menu
-    QKeyEventTransition *idleToMenuRootTransition =
-        new QKeyEventTransition(
-                window, QEvent::KeyPress, applicationKey);
-    idleToMenuRootTransition->setTargetState(menuRootState);
-    idleState->addTransition(idleToMenuRootTransition);
-    // key driven transition from menu to idle
-    QKeyEventTransition *menuToIdleTransition =
-        new QKeyEventTransition(
-                window, QEvent::KeyPress, applicationKey);
-    menuToIdleTransition->setTargetState(idleState);
-    menuRootState->addTransition(menuToIdleTransition);
-    
-    // transition for Key_Launch0 should be removed 
-    // when OT starts to send Key_Menu (maybe wk14)
-    QKeyEventTransition *idleToMenuRootTransition2 =
-        new QKeyEventTransition(
-                window, QEvent::KeyPress, Qt::Key_Launch0);
-    idleToMenuRootTransition2->setTargetState(menuRootState);
-    idleState->addTransition(idleToMenuRootTransition2);
-    // key driven transition from menu to idle
-    QKeyEventTransition *menuToIdleTransition2 =
-        new QKeyEventTransition(
-                window, QEvent::KeyPress, Qt::Key_Launch0);
-    menuToIdleTransition2->setTargetState(idleState);
-    menuRootState->addTransition(menuToIdleTransition2);
-    // add transition to switch to idle
-    menuRootState->addTransition( this, SIGNAL(event_toIdle()), idleState);    
-    
-    // transitions to child states
-    // opening shortcut to a colleciton
-    QList<QState *> collectionStates =
-        appLibraryState->
-            findChildren<QState *>
-                ("homescreen.nokia.com/state/applibrarystate/collectionstate");
-    qDebug(
-        "Found %d \"collectionstate\" children for Application Library State",
-            collectionStates.count());
-    if (collectionStates.count()) {
-        HsMenuEventTransition *idleToCollectionTransition =
-            new HsMenuEventTransition(HsMenuEvent::OpenCollection,
-                                      idleState, collectionStates[0]);
-        idleState->addTransition(idleToCollectionTransition);
-    }
-
-    guiRootState->setInitialState(loadSceneState);
-    setInitialState(guiRootState);
-    
-    HSTEST_FUNC_EXIT("HS::HsDefaultRuntime::createStates");
-}
-
-/*!
-    Assigns services to states based on value of property HS_SERVICES_REGISTRATION_KEY.
-*/
-void HsDefaultRuntime::assignServices()
-{
-    HSTEST_FUNC_ENTRY("HS::HsDefaultRuntime::assignServices");
-
-    QList<QState*> children = findChildren<QState*>();
-    foreach (QState *state, children) {
-        QList<QVariant> services = state->property(HS_SERVICES_REGISTRATION_KEY).toList();
-        foreach (const QVariant &service, services) {
-            QString name = service.toString();
-            qDebug() << "Assign service:" << name << "\n to " << state->objectName();
-            if (name == CONTENT_SERVICE_KEY) {
-                state->setProperty(name.toAscii().data(), qVariantFromValue(mContentService));
-            } else if (name == SHORTCUT_SERVICE_KEY) {
-                state->setProperty(name.toAscii().data(),
-                    qVariantFromValue(HsShortcutService::instance(this)));
-            } else {
-                qWarning() << "WARNING: Service " << name << " is unknown";
-            }
-        }
-    }
-
-    HSTEST_FUNC_EXIT("HS::HsDefaultRuntime::assignServices");
-}
-
-/*!
-    Publishes Home screen states via Publish & Subscribe.
-*/
-void HsDefaultRuntime::updatePSKeys()
-{	
-	if (!mPublisher){
-		createStatePublisher();
-	}
-
-	if (mHomeScreenActive && mIdleStateActive){
-    	qDebug() << "HsDefaultRuntime::updatePSKeys: EHomeScreenIdleState";
-    	mPublisher->setValue(HsStatePSKeySubPath, EHomeScreenIdleState);
-    }
-    else{
-    	qDebug() << "HsDefaultRuntime::updatePSKeys: EHomeScreenInactive";
-    	mPublisher->setValue(HsStatePSKeySubPath, EHomeScreenInactive);
-    }	
-}
-
-/*!
-    Called when state machine is in Idle state.
-*/
-void HsDefaultRuntime::onIdleStateEntered()
-{
-	mIdleStateActive = true;
-	updatePSKeys();
-}
-
-/*!
-    Called when state machine leaves the Idle state.
-*/
-void HsDefaultRuntime::onIdleStateExited()
-{
-	mIdleStateActive = false;
-	updatePSKeys();
-}
-
-/*!
-    Activity requested by another client 
-*/
-void HsDefaultRuntime::activityRequested(const QString &name) 
-{
-    if (name == appLibActivity()) {
-        this->postEvent(
-            HsMenuEventFactory::createOpenAppLibraryEvent(NormalHsMenuMode));
-    }
-    else if (name == groupAppLibRecentView()) {
-        this->postEvent(
-            HsMenuEventFactory::createOpenCollectionEvent(0,
-            collectionDownloadedTypeName()));
-    } else if (name == activityHsIdleView()) {
-        emit event_toIdle();
-    }
-}
--- a/homescreenapp/runtimeplugins/hsdefaultruntimeplugin/src/hsdefaultruntimeplugin.cpp	Fri Jun 25 19:19:22 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Default runtime plugin.
-*
-*/
-
-#include <qserviceinterfacedescriptor.h>
-#include <qabstractsecuritysession.h>
-#include <qservicecontext.h>
-
-#include "hsdefaultruntimeplugin.h"
-#include "hsdefaultruntime.h"
-
-#ifdef COVERAGE_MEASUREMENT
-#pragma CTC SKIP
-#endif //COVERAGE_MEASUREMENT
-
-QObject *HsDefaultRuntimePlugin::createInstance(const QServiceInterfaceDescriptor &descriptor,
-                                                QServiceContext *context,
-                                                QAbstractSecuritySession *session)
-{
-    Q_UNUSED(context);
-    Q_UNUSED(session);
-
-    if (descriptor.interfaceName() == QLatin1String("com.nokia.symbian.IHomeScreenRuntime")) {
-        return new HsDefaultRuntime(this);
-    } else {
-        return 0;
-    }
-}
-
-Q_EXPORT_PLUGIN2(hsdefaultruntimeplugin, HsDefaultRuntimePlugin)
-
-#ifdef COVERAGE_MEASUREMENT
-#pragma CTC ENDSKIP
-#endif //COVERAGE_MEASUREMENT
--- a/homescreenapp/runtimeplugins/runtimeplugins.pro	Fri Jun 25 19:19:22 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description:
-#
-
-TEMPLATE = subdirs
-SUBDIRS  = hsdefaultruntimeplugin
--- a/homescreenapp/serviceproviders/hsmenuserviceprovider/inc/hsmenuservice.h	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/serviceproviders/hsmenuserviceprovider/inc/hsmenuservice.h	Fri Jul 09 14:36:01 2010 +0300
@@ -40,8 +40,7 @@
     // Function declarations
     static HsMenuItemModel *getAllApplicationsModel(
         HsSortAttribute sortAttribute = DescendingNameHsSortAttribute);
-    static HsMenuItemModel *getAllCollectionsModel(
-        HsSortAttribute sortAttribute = LatestOnTopHsSortAttribute);
+    static HsMenuItemModel *getAllCollectionsModel();
     static HsMenuItemModel *getInstalledModel(
         HsSortAttribute sortAttribute = DescendingNameHsSortAttribute);
     static HsMenuItemModel *getCollectionModel(int collectionId,
--- a/homescreenapp/serviceproviders/hsmenuserviceprovider/src/hsmenuitemmodel.cpp	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/serviceproviders/hsmenuserviceprovider/src/hsmenuitemmodel.cpp	Fri Jul 09 14:36:01 2010 +0300
@@ -77,9 +77,9 @@
     } else if (role == Hb::IndexFeedbackRole){
         QVariant display = CaItemModel::data(index, Qt::DisplayRole);
         if (display.type() == QVariant::String){
-            variant = display;
+            variant = QVariant(display.toString().at(0).toUpper());;
         } else {
-            variant = QVariant(display.toList().at(0));
+            variant = QVariant(display.toList().at(0).toString().at(0).toUpper());
         }
     } else {
         variant = CaItemModel::data(index, role);
--- a/homescreenapp/serviceproviders/hsmenuserviceprovider/src/hsmenuservice.cpp	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/serviceproviders/hsmenuserviceprovider/src/hsmenuservice.cpp	Fri Jul 09 14:36:01 2010 +0300
@@ -63,22 +63,16 @@
 
 /*!
  Returns all collections model
- \param sortAttribute ::  SortAttribute
- \param details : switch to return details or not
  \retval HsMenuItemModel: all collections model
  */
-HsMenuItemModel *HsMenuService::getAllCollectionsModel(
-    HsSortAttribute sortAttribute)
+HsMenuItemModel *HsMenuService::getAllCollectionsModel()
 {
-    qDebug() << "HsMenuService::getAllCollectionsModel" << "sortAttribute:"
-             << sortAttribute;
+    qDebug() << "HsMenuService::getAllCollectionsModel";
     HSMENUTEST_FUNC_ENTRY("HsMenuService::getAllCollectionsModel");
     CaQuery query;
     query.setParentId(allCollectionsId());
     query.setFlagsOn(VisibleEntryFlag);
     query.setFlagsOff(MissingEntryFlag);
-    query.setSort(HsMenuServiceUtils::sortBy(sortAttribute),
-                  HsMenuServiceUtils::sortOrder(sortAttribute));
     HsMenuItemModel *model = new HsMenuCollectionsItemModel(query);
     HSMENUTEST_FUNC_EXIT("HsMenuService::getAllCollectionsModel");
     return model;
--- a/homescreenapp/sis/homescreenapp.pkg	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/sis/homescreenapp.pkg	Fri Jul 09 14:36:01 2010 +0300
@@ -59,13 +59,6 @@
 
 "/epoc32/release/armv5/urel/hsdomainmodel.dll" - "c:/sys/bin/hsdomainmodel.dll"
 
-; ---- runtimeplugins --------------------------------------------
-
-; -------- hsdefaultruntimeplugin
-"/epoc32/release/armv5/urel/hsdefaultruntimeplugin.dll"     - "c:/sys/bin/hsdefaultruntimeplugin.dll"
-"/epoc32/data/z/hsresources/plugins/runtimeplugins/hsdefaultruntimeplugin.qtplugin" - "c:/hsresources/plugins/runtimeplugins/hsdefaultruntimeplugin.qtplugin"
-"/epoc32/data/z/hsresources/plugins/runtimeplugins/hsdefaultruntimeplugin.manifest"  - "c:/hsresources/plugins/runtimeplugins/hsdefaultruntimeplugin.manifest"
-
 ; ---- serviceproviders --------------------------------------------
 
 ; -------- hsmenuserviceprovider
--- a/homescreenapp/sis/homescreenapp_ut_hs.pkg	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/sis/homescreenapp_ut_hs.pkg	Fri Jul 09 14:36:01 2010 +0300
@@ -33,16 +33,14 @@
 "/epoc32/release/armv5/urel/t_hsapplicationexe.exe"                         - "c:/sys/bin/t_hsapplicationexe.exe"
 "/epoc32/data/z/private/10003a3f/import/apps/t_hsapplicationexe_reg.rsc"    - "c:/private/10003a3f/import/apps/t_hsapplicationexe_reg.rsc"
 "/epoc32/data/z/resource/apps/t_hsapplicationexe.rsc"                       - "c:/resource/apps/t_hsapplicationexe.rsc"
-"/epoc32/release/armv5/urel/mockruntimeplugin.dll"                                                  - "c:/sys/bin/mockruntimeplugin.dll"
-"/epoc32/data/z/private/20022f5f/hsresources/plugins/runtimeplugins/mockruntimeplugin.qtplugin"     - "c:/private/20022f5f/hsresources/plugins/runtimeplugins/mockruntimeplugin.qtplugin"
-"/epoc32/data/z/private/20022f5f/hsresources/plugins/runtimeplugins/mockruntimeplugin.xml"          - "c:/private/20022f5f/hsresources/plugins/runtimeplugins/mockruntimeplugin.xml"
+"/epoc32/release/armv5/urel/mockstateplugins.dll"                                                  - "c:/sys/bin/mockstateplugins.dll"
+"/epoc32/data/z/private/20022f5f/hsresources/plugins/stateplugins/mockstateplugins.qtplugin"     - "c:/private/20022f5f/hsresources/plugins/stateplugins/mockstateplugins.qtplugin"
+"/epoc32/data/z/private/20022f5f/hsresources/plugins/stateplugins/mockstateplugins.xml"          - "c:/private/20022f5f/hsresources/plugins/stateplugins/mockstateplugins.xml"
 
 ;--------------- hsutils ---------------
 "/epoc32/release/armv5/urel/t_hsutils.exe"                         - "c:/sys/bin/t_hsutils.exe"
 "/epoc32/data/z/private/10003a3f/import/apps/t_hsutils_reg.rsc"    - "c:/private/10003a3f/import/apps/t_hsutils_reg.rsc"
 "/epoc32/data/z/resource/apps/t_hsutils.rsc"                       - "c:/resource/apps/t_hsutils.rsc"
-"../hsutils/tsrc/t_hsutils/nokia.png"                              - "c:/hsresources/testresources/nokia.png"
-"../hsutils/tsrc/t_hsutils/large.jpg"                              - "c:/hsresources/testresources/large.jpg"
 
 ;--------------- hsdomainmodel ---------------
 "/epoc32/release/armv5/urel/t_hsdomainmodel.exe"                         - "c:/sys/bin/t_hsdomainmodel.exe"
@@ -69,15 +67,10 @@
 "/epoc32/data/z/private/20022F59/hsresources/plugins/widgetplugins/mockwidgetplugintoobig.qtplugin" - "c:/private/20022F59/hsresources/plugins/widgetplugins/mockwidgetplugintoobig.qtplugin"
 "/epoc32/data/z/private/20022F59/hsresources/plugins/widgetplugins/mockwidgetplugintoobig.xml"      - "c:/private/20022F59/hsresources/plugins/widgetplugins/mockwidgetplugintoobig.xml"
 
+"/epoc32/release/armv5/urel/mockwidgetplugincheater.dll"                                             - "c:/sys/bin/mockwidgetplugincheater.dll"
+"/epoc32/data/z/private/20022F59/hsresources/plugins/widgetplugins/mockwidgetplugincheater.qtplugin" - "c:/private/20022F59/hsresources/plugins/widgetplugins/mockwidgetplugincheater.qtplugin"
+"/epoc32/data/z/private/20022F59/hsresources/plugins/widgetplugins/mockwidgetplugincheater.xml"      - "c:/private/20022F59/hsresources/plugins/widgetplugins/mockwidgetplugincheater.xml"
 
-;--------------- runtimeplugins ---------------
-;hsdefaultruntimeplugin
-"/epoc32/release/armv5/urel/t_hsdefaultruntimeplugin.exe"                                       - "c:/sys/bin/t_hsdefaultruntimeplugin.exe"
-"/epoc32/data/z/private/10003a3f/import/apps/t_hsdefaultruntimeplugin_reg.rsc"                  - "c:/private/10003a3f/import/apps/t_hsdefaultruntimeplugin_reg.rsc"
-"/epoc32/data/z/resource/apps/t_hsdefaultruntimeplugin.rsc"                                     - "c:/resource/apps/t_hsdefaultruntimeplugin.rsc"
-"/epoc32/release/armv5/urel/mockstateplugins.dll"                                               - "c:/sys/bin/mockstateplugins.dll"
-"/epoc32/data/z/private/20022f63/hsresources/plugins/stateplugins/mockstateplugins.qtplugin"    - "c:/private/20022f63/hsresources/plugins/stateplugins/mockstateplugins.qtplugin"
-"/epoc32/data/z/private/20022f63/hsresources/plugins/stateplugins/mockstateplugins.xml"         - "c:/private/20022f63/hsresources/plugins/stateplugins/mockstateplugins.xml"
 
 ;--------------- serviceproviders ---------------
 
@@ -102,9 +95,9 @@
 
 ;--------------- hshomescreenclientplugin -----------------------
 ;hshomescreenclientplugin
-;"/epoc32/release/armv5/urel/t_hshomescreenclientplugin.exe"                       - "c:/sys/bin/t_hshomescreenclientplugin.exe"
-;"/epoc32/data/z/private/10003a3f/import/apps/t_hshomescreenclientplugin_reg.rsc"  - "c:/private/10003a3f/import/apps/t_hshomescreenclientplugin_reg.rsc"
-;"/epoc32/data/z/resource/apps/t_hshomescreenclientplugin.rsc"                     - "c:/resource/apps/t_hshomescreenclientplugin.rsc"
+"/epoc32/release/armv5/urel/t_hshomescreenclientplugin.exe"                       - "c:/sys/bin/t_hshomescreenclientplugin.exe"
+"/epoc32/data/z/private/10003a3f/import/apps/t_hshomescreenclientplugin_reg.rsc"  - "c:/private/10003a3f/import/apps/t_hshomescreenclientplugin_reg.rsc"
+"/epoc32/data/z/resource/apps/t_hshomescreenclientplugin.rsc"                     - "c:/resource/apps/t_hshomescreenclientplugin.rsc"
 
 ;--------------- hswidgetuninstaller -----------------------
 ;hswidgetuninstaller
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsallappsstate.h	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsallappsstate.h	Fri Jul 09 14:36:01 2010 +0300
@@ -18,10 +18,7 @@
 #ifndef HSALLAPPSSTATE_H
 #define HSALLAPPSSTATE_H
 
-#include <qstate.h>
-#include <QModelIndex>
-#include <QPointer>
-
+#include <QState>
 #include "hsbaseviewstate.h"
 #include "hsmenumodewrapper.h"
 
@@ -29,8 +26,6 @@
 HS_STATES_TEST_CLASS(MenuStatesTest)
 
 class HbView;
-class HbAction;
-class HbMenu;
 class HbAbstractViewItem;
 class QPointF;
 class HsMenuViewBuilder;
@@ -52,22 +47,13 @@
 signals:
     void toAppLibraryState();
 
-public slots:
-    void scrollToBeginning();
-    void collectionsSortOrder(HsSortAttribute sortAttribute);
 private slots:
-    bool openTaskSwitcher();
-    int checkSoftwareUpdates();
-    void listItemActivated(const QModelIndex &index);
     void addActivated(const QModelIndex &index);
-    void listItemLongPressed(HbAbstractViewItem *item, const QPointF &coords);
     void addLongPressed(HbAbstractViewItem *item, const QPointF &coords);
     void addToCollection();
     void openInstalledView();
     void ascendingMenuAction();
     void descendingMenuAction();
-    void stateEntered();
-    void addModeEntered();
     void normalModeEntered();
     void stateExited();
     void contextMenuAction(HbAction *action);
@@ -75,17 +61,10 @@
     void construct();
     void setMenuOptions();
     void addToHomeScreen(const QModelIndex &index);
+    void setContextMenuOptions(HbAbstractViewItem *item, EntryFlags flags);
+
 private:
-    HbAction *mSecondarySoftkeyAction;
     HsSortAttribute mSortAttribute;
-    HsSortAttribute mCollectionsSortAttribute;
-    HsMenuView mMenuView;
-    HsMenuModeWrapper &mMenuMode;
-    HsMenuItemModel *mAllAppsModel;
-    HsMainWindow &mMainWindow;
-    QModelIndex mContextModelIndex;
-    QPointer<HbMenu> mContextMenu;
-
 };
 
 #endif // HSALLAPPSSTATE_H
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsallcollectionsstate.h	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsallcollectionsstate.h	Fri Jul 09 14:36:01 2010 +0300
@@ -18,17 +18,14 @@
 #ifndef HSALLCOLLECTIONSSTATE_H
 #define HSALLCOLLECTIONSSTATE_H
 
-#include <qstate.h>
-#include <QModelIndex>
+#include <QState>
 #include <QPointF>
-#include <QPointer>
 
 #include "hsbaseviewstate.h"
 #include "hsmenumodewrapper.h"
 
 HS_STATES_TEST_CLASS(MenuStatesTest)
 
-class HbMenu;
 class HsMenuViewBuilder;
 class HbAbstractViewItem;
 class HbAction;
@@ -49,24 +46,13 @@
     ~HsAllCollectionsState();
 protected:
 signals:
-    void sortOrderChanged(HsSortAttribute sortAttribute);
     void toAppLibraryState();
 
-public slots:
-    void scrollToBeginning();
 private slots:
-    bool openTaskSwitcher();
-    void listItemActivated(const QModelIndex &index);
     void addActivated(const QModelIndex &index);
-    void listItemLongPressed(HbAbstractViewItem *item, const QPointF &coords);
     void addLongPressed(HbAbstractViewItem *item, const QPointF &coords);
     void createNewCollection();
     void createArrangeCollection();
-    void customMenuAction();
-    void ascendingMenuAction();
-    void descendingMenuAction();
-    void stateEntered();
-    void addModeEntered();
     void normalModeEntered();
     void normalModeExited();
     void stateExited();
@@ -74,15 +60,7 @@
 private:
     void construct();
     void setMenuOptions();
-private:
-    HbAction *mSecondarySoftkeyAction;
-    HsSortAttribute mSortAttribute;
-    HsMenuView mMenuView;
-    HsMenuModeWrapper &mMenuMode;
-    HsMenuItemModel *mAllCollectionsModel;
-    HsMainWindow &mMainWindow;
-    QModelIndex mContextModelIndex;
-    QPointer<HbMenu> mContextMenu;
+    void setContextMenuOptions(HbAbstractViewItem *item, EntryFlags flags);
 };
 
 #endif // HSALLCOLLECTIONSSTATE_H
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsapplibrarystate.h	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsapplibrarystate.h	Fri Jul 09 14:36:01 2010 +0300
@@ -84,28 +84,13 @@
 private:
 
     HsMenuViewBuilder mMenuViewBuilder;
-    /**
-     * All Applications state.
-     * Own.
-     */
+
     HsAllAppsState *mAllAppsState;
 
-    /**
-     * Transition to remember last visited child state in Application Library.
-     * Own.
-     */
     HsMenuModeTransition *mHistoryTransaction;
 
-    /**
-     * All Collections state.
-     * Own.
-     */
     HsAllCollectionsState *mAllCollectionsState;
 
-    /**
-     * Collection state.
-     * Own.
-     */
     HsCollectionState *mCollectionState;
 
     HsInstalledAppsState *mInstalledAppsState;
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsbaseviewstate.h	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsbaseviewstate.h	Fri Jul 09 14:36:01 2010 +0300
@@ -18,14 +18,21 @@
 #ifndef HSBASEVIEWSTATE_H
 #define HSBASEVIEWSTATE_H
 
-#include <qstate.h>
+#include <QState>
+#include <QPointer>
+#include <QModelIndex>
 
 #include "hsmenustates_global.h"
 #include "hsmenuservice.h"
 #include "hsmenuview.h"
 
+class HbMenu;
+class HbAction;
 class HbMessageBox;
+class HbAbstractViewItem;
 class CaNotifier;
+class HsMenuModeWrapper;
+class HsMainWindow;
 
 HS_STATES_TEST_CLASS(MenuStatesTest)
 
@@ -37,35 +44,59 @@
     
 public:
     
-    HsBaseViewState(QState *parent);    
+    HsBaseViewState(HsMainWindow &mainWindow, QState *parent);
+    HsBaseViewState(HsMainWindow &mainWindow, 
+        HsMenuModeWrapper& menuMode, QState *parent);
     ~HsBaseViewState();
-    
+    void scrollToBeginning();
+
 private slots:
 
-    void applicationLaunchFailMessageFinished(HbAction*);
-    
+    virtual void applicationLaunchFailMessageFinished(HbAction*);
+    virtual void openAppLibrary();
+
 protected slots:
     
-    void stateExited();
-    
+    virtual void stateEntered();
+    virtual void stateExited();
+    virtual void addModeEntered();
+    virtual void normalModeEntered();
+    virtual void normalModeExited();
+    virtual void launchItem(const QModelIndex &index);
+    virtual void openCollection(const QModelIndex &index);
+    virtual void showContextMenu(HbAbstractViewItem *item, const QPointF &coords);
+    virtual int checkSoftwareUpdates();
+    virtual bool openTaskSwitcher();
 protected:
     
+    void initialize(HsMenuViewBuilder &menuViewBuilder, HsViewContext viewContext);
     void createApplicationLaunchFailMessage(int errorCode,int itemId);
     void subscribeForMemoryCardRemove();
-    
+
+    void defineTransitions();
+
 private:
     
-    void construct();
     void cleanUpApplicationLaunchFailMessage();
-    
+
+    virtual void setContextMenuOptions(HbAbstractViewItem *item, EntryFlags flags) = 0;
+    virtual void setMenuOptions() = 0;
+
+
 private:
     
     CaNotifier *mNotifier;
-    
     int mMessageRelatedItemId;
-    
     HbMessageBox *mApplicationLaunchFailMessage;
 
+protected:
+    HsMenuItemModel *mModel;
+    QPointer<HbMenu> mContextMenu;
+    QModelIndex mContextModelIndex;
+    HbAction *mBackKeyAction;
+    QScopedPointer<HsMenuView> mMenuView;
+    HsMenuModeWrapper *mMenuMode;
+    HsMainWindow &mMainWindow;
 };
 
 
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hscollectionstate.h	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hscollectionstate.h	Fri Jul 09 14:36:01 2010 +0300
@@ -18,9 +18,8 @@
 #ifndef HSCOLLECTIONSTATE_H
 #define HSCOLLECTIONSTATE_H
 
-#include <qstate.h>
-#include <qabstractitemmodel.h>
-#include <QPointer>
+#include <QState>
+#include <QAbstractItemModel>
 
 #include "hsbaseviewstate.h"
 
@@ -30,7 +29,6 @@
 class HbAction;
 class HbMenu;
 class HbAbstractViewItem;
-class QModelIndex;
 class HsMenuItemModel;
 class HsMenuModeWrapper;
 class HsMenuViewBuilder;
@@ -46,29 +44,25 @@
                       HsMainWindow &mainWindow,
                       QState *parent = 0);
     ~HsCollectionState();
-public slots:
-    void collectionsSortOrder(HsSortAttribute sortAttribute);
 protected:
     void onEntry(QEvent *event);
 signals:
     void sortOrderChanged(HsSortAttribute sortAttribute);
 private slots:
-    bool openTaskSwitcher();
-    void listItemActivated(const QModelIndex &index);
-    void listItemLongPressed(HbAbstractViewItem *item, const QPointF &coords);
     void addAppsAction(bool addApps = true);
     void addCollectionShortcutToHomeScreenAction();
     void renameAction();
     void deleteAction();
-    void backSteppingAction();
     void updateLabel();
     void stateEntered();
+
     void stateExited();
     void latestOnTopMenuAction();
     void oldestOnTopMenuAction();
     void contextMenuAction(HbAction *action);
     void handleEmptyChange(bool empty);
     void lockSearchButton(bool lock);
+    void createArrangeCollection();
 
 private:
     void construct();
@@ -76,20 +70,13 @@
     void makeConnect();
     void makeDisconnect();
     void addElementToHomeScreen(const QModelIndex &index);
+    void setContextMenuOptions(HbAbstractViewItem *item, EntryFlags flags);
+    void setMenuOptions();
 
 private:
     HsSortAttribute mSortAttribute;
-    HsSortAttribute mCollectionsSortAttribute;
     int mCollectionId;
     QString mCollectionType;
-    HsMenuView mMenuView;
-    HsMenuModeWrapper &mMenuMode;
-    HbAction *const mSecondarySoftkeyAction;
-    HsMenuItemModel *mCollectionModel;
-    HbMenu *mOptions;
-    QModelIndex mContextModelIndex;
-    QPointer<HbMenu> mContextMenu;
-    HsMainWindow &mMainWindow;
 };
 
 #endif // HSCOLLECTIONSTATE_H
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsinstalledappsstate.h	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsinstalledappsstate.h	Fri Jul 09 14:36:01 2010 +0300
@@ -18,9 +18,7 @@
 #ifndef HSINSTALLEDAPPSSTATE_H
 #define HSINSTALLEDAPPSSTATE_H
 
-#include <qstate.h>
-#include <QModelIndex>
-#include <QPointer>
+#include <QState>
 
 #include "hsbaseviewstate.h"
 
@@ -51,15 +49,7 @@
 
 private slots:
 
-    bool openTaskSwitcher();
-
-    void listItemActivated(const QModelIndex &index);
-
-    void listItemLongPressed(HbAbstractViewItem *item,
-                             const QPointF &coords);
-
-    void backAction();
-
+    void openInstallationLog();
     void stateEntered();
 
     void stateExited();
@@ -71,33 +61,8 @@
 private:
 
     void construct();
-
     void setMenuOptions();
-
-private:
-    /**
-     * The View widget.
-     * Own.
-     */
-    HsMenuView mMenuView;
-
-    /**
-     * Item Model for the List.
-     * Own.
-     */
-    HsMenuItemModel *mInstalledAppsModel;
-
-    /**
-     * Secondary Softkey action.
-     * Backstepping functionality.
-     * Own.
-     */
-    HbAction *const mSecondarySoftkeyAction;
-    
-    HsMainWindow &mMainWindow;
-
-    QModelIndex mContextModelIndex;
-    QPointer<HbMenu> mContextMenu;
+    void setContextMenuOptions(HbAbstractViewItem *item, EntryFlags flags);
 };
 
 #endif // HSINSTALLEDAPPSSTATE_H
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsmainwindow.h	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsmainwindow.h	Fri Jul 09 14:36:01 2010 +0300
@@ -20,31 +20,20 @@
 
 #include <QObject>
 #include <QPixmap>
+#include "hsmenustates_global.h"
+
+HS_STATES_TEST_CLASS(MenuStatesTest)
 
 class HsMenuView;
-class HsMainWindow: public QObject
+class HsMainWindow
 {
-    Q_OBJECT
-    
+
 public:
     HsMainWindow();
     virtual ~HsMainWindow();
 
-    virtual void setCurrentView(const HsMenuView &menuView);
-    virtual QPixmap grabScreenshot();
-       
-    public slots:
-    virtual void saveActivity();
-    
-    signals:
-    void viewIsReady();
-    
-    private:
-    /*
-     * not owned
-     * 
-     */
-    QObject* mActivityClient;
+    virtual void setCurrentView(const HsMenuView &menuView);     
+
 };
 
 #endif // HS_MAIN_WINDOW_H
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsmenuview.h	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsmenuview.h	Fri Jul 09 14:36:01 2010 +0300
@@ -21,6 +21,7 @@
 #include <QObject>
 #include <QModelIndex>
 #include <QAbstractItemView>
+#include <QScopedPointer>
 #include <QSortFilterProxyModel>
 #include <HbAbstractItemView>
 #include "hsmenustates_global.h"
@@ -36,7 +37,7 @@
 class HbListView;
 class HbGroupBox;
 class HbWidget;
-class HbStaticVkbHost;
+class HbShrinkingVkbHost;
 class HsMenuItemModel;
 
 
@@ -89,9 +90,6 @@
                          QAbstractItemView::PositionAtTop);
     void findItem(QString criteriaStr);
 
-    void vkbOpened();
-    void vkbClosed();
-
 private:
 
     QModelIndex firstVisibleItemIndex(const HbListView *view) const;
@@ -123,7 +121,7 @@
 
     HbListView *mSearchListView;
     HbSearchPanel *mSearchPanel;
-    HbStaticVkbHost* mVkbHost;
+    QScopedPointer<HbShrinkingVkbHost> mVkbHost;
 
     HbPushButton *mCollectionButton;
 
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/resource/applibrary.docml	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/resource/applibrary.docml	Fri Jul 09 14:36:01 2010 +0300
@@ -18,8 +18,6 @@
     <widget name="view" type="HbView">
         <widget name="container" role="HbView:widget" type="HbWidget">
             <widget name="collectionLabel" type="HbGroupBox">
-
-                <sizehint height="6un" type="MAXIMUM" width="100un"/>
                 <bool name="visible" value="FALSE"/>
                 <string name="heading" value="."/>
                 <bool name="marqueeHeading" value="TRUE"/>
@@ -52,7 +50,7 @@
                 <widget name="allAppsSearchListView" type="HbListView">
                     <bool name="visible" value="FALSE"/>
                 </widget>
-                <layout orientation="Vertical" type="linear">
+                <layout orientation="Vertical" spacing="0.0un" type="linear">
                     <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
                     <linearitem itemname="allAppsListView"/>
                 </layout>
@@ -79,7 +77,7 @@
                     <bool name="frictionEnabled" value="TRUE"/>
                     <bool name="visible" value="TRUE"/>
                 </widget>
-                <layout orientation="Vertical" type="linear">
+                <layout orientation="Vertical" spacing="0.0un" type="linear">
                     <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
                     <linearitem itemname="allAppsSearchListView"/>
                     <linearitem itemname="searchPanel"/>
@@ -99,7 +97,7 @@
                     <bool name="frictionEnabled" value="TRUE"/>
                     <bool name="visible" value="TRUE"/>
                 </widget>
-                <layout orientation="Vertical" type="linear">
+                <layout orientation="Vertical" spacing="0.0un" type="linear">
                     <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
                     <linearitem itemname="allCollectionsListView"/>
                 </layout>
@@ -134,7 +132,7 @@
                     <bool name="frictionEnabled" value="TRUE"/>
                     <bool name="visible" value="TRUE"/>
                 </widget>
-                <layout orientation="Vertical" type="linear">
+                <layout orientation="Vertical" spacing="0.0un" type="linear">
                     <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
                     <linearitem itemname="allCollectionsSearchListView"/>
                     <linearitem itemname="searchPanel"/>
@@ -150,7 +148,6 @@
                 <widget name="installedAppsLabel" type="HbGroupBox">
                     <string locid="txt_applib_subtitle_installed" name="heading"/>
                     <bool name="marqueeHeading" value="TRUE"/>
-                    <sizehint height="6un" type="MAXIMUM" width="-1"/>
                     <fontspec name="fontSpec" role="Title" textheight="0"/>
                     <integer name="groupBoxType" value="1"/>
                 </widget>
@@ -174,7 +171,7 @@
                     <sizehint height="0un" type="MAXIMUM" width="0un"/>
                     <bool name="visible" value="FALSE"/>
                 </widget>
-                <layout orientation="Vertical" type="linear">
+                <layout orientation="Vertical" spacing="0.0un" type="linear">
                     <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
                     <linearitem itemname="installedAppsLabel"/>
                     <linearitem itemname="installedAppsListView"/>
@@ -190,7 +187,6 @@
                 <widget name="installedAppsLabel" type="HbGroupBox">
                     <string locid="txt_applib_subtitle_installed" name="heading"/>
                     <bool name="marqueeHeading" value="TRUE"/>
-                    <sizehint height="6un" type="MAXIMUM" width="-1"/>
                     <fontspec name="fontSpec" role="Title" textheight="0"/>
                     <integer name="groupBoxType" value="1"/>
                 </widget>
@@ -214,7 +210,7 @@
                     <sizehint height="0un" type="MAXIMUM" width="0un"/>
                     <bool name="visible" value="FALSE"/>
                 </widget>
-                <layout orientation="Vertical" type="linear">
+                <layout orientation="Vertical" spacing="0.0un" type="linear">
                     <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
                     <linearitem itemname="installedAppsLabel"/>
                     <linearitem itemname="installedAppsSearchListView"/>
@@ -231,7 +227,6 @@
                 <widget name="installedAppsLabel" type="HbGroupBox">
                     <string locid="txt_applib_subtitle_installed" name="heading"/>
                     <bool name="marqueeHeading" value="TRUE"/>
-                    <sizehint height="6un" type="MAXIMUM" width="-1"/>
                     <fontspec name="fontSpec" role="Title" textheight="0"/>
                     <integer name="groupBoxType" value="1"/>
                 </widget>
@@ -259,13 +254,13 @@
                         <fontspec name="fontSpec" role="Title" textheight="4un"/>
                     </widget>
                     <sizehint height="11.9403un" type="PREFERRED" width="23.8806un"/>
-                    <layout orientation="Horizontal" type="linear">
+                    <layout orientation="Horizontal" spacing="0.0un" type="linear">
                         <stretchitem stretchfactor="1"/>
                         <linearitem itemname="installedAppsEmptyLabel"/>
                         <stretchitem stretchfactor="1"/>
                     </layout>
                 </widget>
-                <layout orientation="Vertical" type="linear">
+                <layout orientation="Vertical" spacing="0.0un" type="linear">
                     <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
                     <linearitem itemname="installedAppsLabel"/>
                     <stretchitem stretchfactor="1"/>
@@ -281,7 +276,6 @@
         <widget name="collectionView" type="HbView">
             <widget name="collectionContainer" role="HbView:widget" type="HbWidget">
                 <widget name="collectionLabel" type="HbGroupBox">
-                    <sizehint height="6un" type="MAXIMUM" width="100un"/>
                     <bool name="visible" value="TRUE"/>
                     <integer name="groupBoxType" value="1"/>
                 </widget>
@@ -310,7 +304,7 @@
                     <sizehint height="0un" type="MAXIMUM" width="0un"/>
                     <bool name="visible" value="FALSE"/>
                 </widget>
-                <layout orientation="Vertical" type="linear">
+                <layout orientation="Vertical" spacing="0.0un" type="linear">
                     <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
                     <linearitem itemname="collectionLabel"/>
                     <linearitem itemname="collectionListView"/>
@@ -324,7 +318,6 @@
         <widget name="collectionView" type="HbView">
             <widget name="collectionContainer" role="HbView:widget" type="HbWidget">
                 <widget name="collectionLabel" type="HbGroupBox">
-                    <sizehint height="6un" type="MAXIMUM" width="100un"/>
                     <bool name="visible" value="TRUE"/>
                     <integer name="groupBoxType" value="1"/>
                 </widget>
@@ -352,7 +345,7 @@
                     <sizehint height="0un" type="MAXIMUM" width="0un"/>
                     <bool name="visible" value="FALSE"/>
                 </widget>
-                <layout orientation="Vertical" type="linear">
+                <layout orientation="Vertical" spacing="0.0un" type="linear">
                     <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
                     <linearitem itemname="collectionLabel"/>
                     <linearitem itemname="collectionSearchListView"/>
@@ -368,7 +361,6 @@
             <widget name="collectionContainer" role="HbView:widget" type="HbWidget">
                 <widget name="collectionLabel" type="HbGroupBox">
                     <sizepolicy horizontalPolicy="Expanding" horizontalStretch="0" verticalPolicy="Preferred" verticalStretch="0"/>
-                    <sizehint height="6un" type="MAXIMUM" width="100un"/>
                     <bool name="visible" value="TRUE"/>
                     <integer name="groupBoxType" value="1"/>
                 </widget>
@@ -393,7 +385,7 @@
                         <bool name="visible" value="TRUE"/>
                     </widget>
                     <sizehint height="11.9403un" type="PREFERRED" width="23.8806un"/>
-                    <layout orientation="Horizontal" type="linear">
+                    <layout orientation="Horizontal" spacing="0.0un"  type="linear">
                         <stretchitem stretchfactor="1"/>
                         <linearitem itemname="collectionButton"/>
                         <stretchitem stretchfactor="1"/>
@@ -404,7 +396,7 @@
                     <sizehint height="0un" type="MAXIMUM" width="0un"/>
                     <bool name="visible" value="FALSE"/>
                 </widget>
-                <layout orientation="Vertical" type="linear">
+                <layout orientation="Vertical" spacing="0.0un"  type="linear">
                     <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
                     <linearitem itemname="collectionLabel"/>
                     <stretchitem stretchfactor="1"/>
@@ -420,7 +412,6 @@
         <widget name="collectionView" type="HbView">
             <widget name="collectionContainer" role="HbView:widget" type="HbWidget">
                 <widget name="collectionLabel" type="HbGroupBox">
-                    <sizehint height="6un" type="MAXIMUM" width="100un"/>
                     <bool name="visible" value="TRUE"/>
                     <integer name="groupBoxType" value="1"/>
                 </widget>
@@ -452,13 +443,13 @@
                         <fontspec name="fontSpec" role="Title" textheight="4un"/>
                     </widget>
                     <sizehint height="11.9403un" type="PREFERRED" width="23.8806un"/>
-                    <layout orientation="Horizontal" type="linear">
+                    <layout orientation="Horizontal" spacing="0.0un"  type="linear">
                         <stretchitem stretchfactor="1"/>
                         <linearitem itemname="collectionAppsEmptyLabel"/>
                         <stretchitem stretchfactor="1"/>
                     </layout>
                 </widget>
-                <layout orientation="Vertical" type="linear">
+                <layout orientation="Vertical" spacing="0.0un"  type="linear">
                     <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
                     <linearitem itemname="collectionLabel"/>
                     <stretchitem stretchfactor="1"/>
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsallappsstate.cpp	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsallappsstate.cpp	Fri Jul 09 14:36:01 2010 +0300
@@ -15,29 +15,26 @@
  *
  */
 
-#include <qstatemachine.h>
-#include <hbview.h>
-#include <hblistview.h>
-#include <hbaction.h>
-#include <hbmenu.h>
-#include <hbabstractviewitem.h>
-#include <hsmenueventfactory.h>
-#include <hbinstance.h>
+#include <QStateMachine>
+#include <HbMenu>
+#include <HbAction>
+#include <HbAbstractViewItem>
+#include <HbIndexFeedback>
+#include <HbListView>
+#include <HbScrollBar>
+#include <HbView>
+
+#include <cadefs.h>
 #include <caentry.h>
-#include <hbsearchpanel.h>
-#include <HbScrollBar>
-#include <HbIndexFeedback>
+#include <caitemmodel.h>
+#include <caservice.h>
 
+#include "hsapp_defs.h"
+#include "hsmenueventfactory.h"
 #include "hsmenuitemmodel.h"
-#include "cadefs.h"
 #include "hsallappsstate.h"
-#include "hsaddappstocollectionstate.h"
-#include "hsapp_defs.h"
 #include "hsmenumodewrapper.h"
 #include "hsmenuviewbuilder.h"
-#include "hsmenumodetransition.h"
-#include "caentry.h"
-#include "caservice.h"
 #include "hsmainwindow.h"
 
 /*!
@@ -55,39 +52,20 @@
  */
 
 /*!
- \var HsAllAppsState::mCollectionsSortAttribute
- Collections sort order
- */
-
-/*!
- \var HsAllAppsState::mMenuView
- Wrapper for All Applications View.
- */
-
-/*!
- \var HsAllAppsState::mMenuMode
- Menu view mode wrapper.
- Not Own.
- */
-
-/*!
  Constructor.
  \param menuViewBuilder Menu view builder.
- \param menuMode reference to object representing menu mode (add mode on/add mode off).
+ \param menuMode Menu mode object(add mode on/add mode off).
+ \param mainWindow Main window wrapper.
  \param parent Owner.
  */
 HsAllAppsState::HsAllAppsState(HsMenuViewBuilder &menuViewBuilder,
                                HsMenuModeWrapper &menuMode,
                                HsMainWindow &mainWindow,
                                QState *parent) :
-    HsBaseViewState(parent), mSortAttribute(AscendingNameHsSortAttribute),
-    mCollectionsSortAttribute(LatestOnTopHsSortAttribute),
-    mMenuView(menuViewBuilder, HsAllAppsContext),
-    mMenuMode(menuMode),
-    mAllAppsModel(0),
-    mMainWindow(mainWindow),
-    mContextModelIndex(), mContextMenu(0)
+    HsBaseViewState(mainWindow, menuMode, parent),
+    mSortAttribute(AscendingNameHsSortAttribute)
 {
+    initialize(menuViewBuilder, HsAllAppsContext);
     construct();
 }
 
@@ -98,46 +76,26 @@
 {
     HSMENUTEST_FUNC_ENTRY("HsAllAppsState::construct");
 
-    QState *initialState = new QState(this);
-    setInitialState(initialState);
-
-    QState *addModeState = new QState(this);
-    connect(addModeState, SIGNAL(entered()),SLOT(addModeEntered()));
-
-    QState *normalModeState = new QState(this);
-    connect(normalModeState, SIGNAL(entered()),SLOT(normalModeEntered()));
-
-    initialState->addTransition(new HsMenuModeTransition(
-                                    mMenuMode, NormalHsMenuMode, normalModeState));
-    initialState->addTransition(new HsMenuModeTransition(
-                                    mMenuMode, AddHsMenuMode, addModeState));
+    defineTransitions();
 
     const QString parentName =
         parent() != 0 ? parent()->objectName() : QString("");
     setObjectName(parentName + "/allappsstate");
 
-    connect(this, SIGNAL(entered()),SLOT(stateEntered()));
-    connect(this, SIGNAL(exited()),SLOT(stateExited()));
+    connect(mBackKeyAction, SIGNAL(triggered()), SIGNAL(toAppLibraryState()));
 
-    mSecondarySoftkeyAction = new HbAction(Hb::BackNaviAction, this);
-
-    mMenuView.view()->setNavigationAction(
-        mSecondarySoftkeyAction);
+    mModel = HsMenuService::getAllApplicationsModel(mSortAttribute);
+    mMenuView->setModel(mModel);
 
-    connect(mSecondarySoftkeyAction, SIGNAL(triggered()),
-            SIGNAL(toAppLibraryState()));
-
-    mAllAppsModel = HsMenuService::getAllApplicationsModel(mSortAttribute);
-    mMenuView.setModel(mAllAppsModel);
-
-    mMenuView.listView()->verticalScrollBar()->setInteractive(true);
-    HbIndexFeedback *indexFeedback = new HbIndexFeedback(mMenuView.view());
+    mMenuView->listView()->verticalScrollBar()->setInteractive(true);
+    HbIndexFeedback *indexFeedback = new HbIndexFeedback(mMenuView->view());
     indexFeedback->setIndexFeedbackPolicy(HbIndexFeedback::IndexFeedbackSingleCharacter);
-    indexFeedback->setItemView(mMenuView.listView());
+    indexFeedback->setItemView(mMenuView->listView());
 
     HSMENUTEST_FUNC_EXIT("HsAllAppsState::construct");
 }
 
+
 /*!
  Creates and installs menu options for the view
  */
@@ -146,11 +104,11 @@
     HSMENUTEST_FUNC_ENTRY("HsAllAppsState::setMenuOptions");
     QScopedPointer<HbMenu> viewOptions(new HbMenu);
     viewOptions->addAction(hbTrId("txt_applib_opt_task_switcher"),
-                           this, SLOT(openTaskSwitcher()));
+                           static_cast<HsBaseViewState*>(this), SLOT(openTaskSwitcher()));
     viewOptions->addAction(hbTrId("txt_applib_opt_add_to_collection"),
                            this, SLOT(addToCollection()));
     viewOptions->addAction(hbTrId("txt_applib_opt_check_software_updates"),
-                           this, SLOT(checkSoftwareUpdates()));
+                           static_cast<HsBaseViewState*>(this), SLOT(checkSoftwareUpdates()));
 
     HbMenu *const sortMenu = viewOptions->addMenu(hbTrId(
                                  "txt_applib_opt_sort_by"));
@@ -184,7 +142,7 @@
     if (currentSortingPosition >= 0) {
         sortGroup->actions().at(currentSortingPosition)->setChecked(true);
     }
-    mMenuView.view()->setMenu(viewOptions.take());
+    mMenuView->view()->setMenu(viewOptions.take());
 
     HSMENUTEST_FUNC_EXIT("HsAllAppsState::setMenuOptions");
 }
@@ -195,63 +153,18 @@
 
 HsAllAppsState::~HsAllAppsState()
 {
-    mMenuView.setModel(NULL);
-    delete mAllAppsModel;
-}
-
-/*!
- Scrolls view to first item at top
- */
-void HsAllAppsState::scrollToBeginning()
-{
-    mMenuView.listView()->scrollTo(
-        mAllAppsModel->index(0), HbAbstractItemView::PositionAtTop);
 }
 
-/*!
- Slot invoked when a state is entered.
- */
-
-
-void HsAllAppsState::stateEntered()
-{
-    qDebug("AllAppsState::stateEntered()");
-    HSMENUTEST_FUNC_ENTRY("HsAllAppsState::stateEntered");
-    
-    mMainWindow.setCurrentView(mMenuView);
-    mMenuView.activate();
-
-    HSMENUTEST_FUNC_EXIT("HsAllAppsState::stateEntered");
-}
 
 /*!
  Slot invoked when add mode entered.
  */
 void HsAllAppsState::normalModeEntered()
-{    
-    setMenuOptions();
-    connect(&mMainWindow, SIGNAL(viewIsReady()),
-        &mMainWindow, SLOT(saveActivity()),
-        Qt::UniqueConnection);
-    connect(&mMenuView,
+{
+    HsBaseViewState::normalModeEntered();
+    connect(mMenuView.data(),
             SIGNAL(activated(QModelIndex)),
-            SLOT(listItemActivated(QModelIndex)));
-    connect(&mMenuView,
-            SIGNAL(longPressed(HbAbstractViewItem *, QPointF)),
-            SLOT(listItemLongPressed(HbAbstractViewItem *, QPointF)));
-}
-
-/*!
- Add mode entered.
- */
-void HsAllAppsState::addModeEntered()
-{
-    connect(&mMenuView,
-            SIGNAL(activated(QModelIndex)),
-            SLOT(addActivated(QModelIndex)));
-    connect(&mMenuView,
-            SIGNAL(longPressed(HbAbstractViewItem *, QPointF)),
-            SLOT(addLongPressed(HbAbstractViewItem *, QPointF)));
+            static_cast<HsBaseViewState*>(this), SLOT(launchItem(QModelIndex)));
 }
 
 /*!
@@ -261,20 +174,6 @@
 {
     HSMENUTEST_FUNC_ENTRY("HsAllAppsState::stateExited");
 
-    disconnect(&mMainWindow, SIGNAL(viewIsReady()),
-               &mMainWindow, SLOT(saveActivity()));
-       
-    mMenuView.setSearchPanelVisible(false);
-
-    mMenuView.disconnect(this);
-
-    mMenuView.view()->setMenu(NULL);
-
-    mMenuView.inactivate();
-
-    if (mContextMenu)
-        mContextMenu->close();
-
     HsBaseViewState::stateExited();
     
     HSMENUTEST_FUNC_EXIT("HsAllAppsState::stateExited");
@@ -282,133 +181,17 @@
 }
 
 /*!
- Open task switcher.
- \retval true if operation is successful.
- */
-bool HsAllAppsState::openTaskSwitcher()
-{
-    return HsMenuService::launchTaskSwitcher();
-}
-
-/*!
- Check software updates.
- \retval 0 if operation is successful.
- */
-int HsAllAppsState::checkSoftwareUpdates()
-{
-    int errCode = HsMenuService::launchSoftwareUpdate();
-    if (errCode != 0){
-        createApplicationLaunchFailMessage(errCode,0);
-    }
-    return errCode;
-}
-
-/*!
- Slot connected to List widget in normal mode.
- \param index Model index of the activated item.
- */
-void HsAllAppsState::listItemActivated(const QModelIndex &index)
-{
-    HSMENUTEST_FUNC_ENTRY("HsAllAppsState::listItemActivated");
-
-    QSharedPointer<const CaEntry> entry = mAllAppsModel->entry(index);
-    
-    if (entry->entryTypeName() == widgetTypeName()) {
-        EntryFlags flags = index.data(CaItemModel::FlagsRole).value<
-                               EntryFlags> ();
-        if (!(flags & UninstallEntryFlag)) {
-            machine()->postEvent(
-                HsMenuEventFactory::createPreviewHSWidgetEvent(
-                    entry->id(), entry->entryTypeName(), entry->attribute(
-                        widgetUriAttributeName()), entry->attribute(
-                        widgetLibraryAttributeName())));
-
-            const int itemId = index.data(CaItemModel::IdRole).toInt();
-            HsMenuService::touch(itemId);
-        }
-    } else {
-        QVariant data = mAllAppsModel->data(index, CaItemModel::IdRole);
-        int errCode = HsMenuService::executeAction(data.toInt());
-        if (errCode != 0) {
-            createApplicationLaunchFailMessage(errCode,index.data(CaItemModel::IdRole).toInt());
-        }
-    }
-    
-    mMenuView.setSearchPanelVisible(false);
-
-    HSMENUTEST_FUNC_EXIT("HsAllAppsState::listItemActivated");
-}
-
-/*!
  Slot connected to List widget in add mode.
  \param index Model index of the activated item.
  */
 void HsAllAppsState::addActivated(const QModelIndex &index)
 {
+    mMenuView->disconnect(this);
     HSMENUTEST_FUNC_ENTRY("HsAllAppsState::addActivated");
     addToHomeScreen(index);
     HSMENUTEST_FUNC_EXIT("HsAllAppsState::addActivated");
 }
 
-/*!
- Handles long-item-pressed event in all apps view by showing context menu
- \param item View item
- \param coords Press point coordinates
- */
-void HsAllAppsState::listItemLongPressed(HbAbstractViewItem *item,
-        const QPointF &coords)
-{
-    HSMENUTEST_FUNC_ENTRY("HsAllAppsState::listItemLongPressed");
-
-    EntryFlags flags = item->modelIndex().data(
-                           CaItemModel::FlagsRole).value<EntryFlags> ();
-
-    if (!(flags & UninstallEntryFlag)) {
-        // create context menu
-        mContextMenu = new HbMenu;
-
-        HbAction *addToHomeScreenAction = mContextMenu->addAction(
-            hbTrId("txt_applib_menu_add_to_home_screen"));
-        addToHomeScreenAction->setData(AddToHomeScreenContextAction);
-
-        HbAction *addToCollectionAction = mContextMenu->addAction(
-            hbTrId("txt_applib_menu_add_to_collection"));
-        addToCollectionAction->setData(AddToCollectionContextAction);
-
-        HbAction *uninstallAction = mContextMenu->addAction(
-            hbTrId("txt_common_menu_delete"));
-        uninstallAction->setData(UninstallContextAction);
-        HbAction *appSettingsAction(NULL);
-        HbAction *appDetailsAction(NULL);
-
-        // check conditions and hide irrelevant menu items
-        QSharedPointer<const CaEntry> entry = mAllAppsModel->entry(item->modelIndex());
-
-        if (!(entry->attribute(appSettingsPlugin()).isEmpty())) {
-            appSettingsAction = mContextMenu->addAction(
-                hbTrId("txt_common_menu_settings"));
-            appSettingsAction->setData(AppSettingContextAction);
-        }
-        if (!(entry->attribute(componentIdAttributeName()).isEmpty()) &&
-                (flags & RemovableEntryFlag) ) {
-            appDetailsAction = mContextMenu->addAction(
-                hbTrId("txt_common_menu_details"));
-            appDetailsAction->setData(AppDetailsContextAction);
-        }
-
-        if (!(flags & RemovableEntryFlag)) {
-            uninstallAction->setVisible(false);
-        }
-
-        mContextModelIndex = item->modelIndex();
-        mContextMenu->setPreferredPos(coords);
-        mContextMenu->setAttribute(Qt::WA_DeleteOnClose);
-        mContextMenu->open(this, SLOT(contextMenuAction(HbAction*)));
-    }
-
-
-    HSMENUTEST_FUNC_EXIT("HsAllAppsState::listItemLongPressed");
-}
 
 /*!
  Handles context menu actions
@@ -429,7 +212,7 @@
             // an existing collection via item specific menu.
             machine()->postEvent(
                 HsMenuEventFactory::createAddAppsFromApplicationsViewEvent(
-                    mSortAttribute, mCollectionsSortAttribute, itemId));
+                    mSortAttribute, itemId));
             break;
         case UninstallContextAction:
             machine()->postEvent(
@@ -446,8 +229,7 @@
         default:
             break;
     }
-                                    
-    mMenuView.setSearchPanelVisible(false);
+    mMenuView->setSearchPanelVisible(false);
 }
 
 /*!
@@ -460,6 +242,7 @@
                                     const QPointF &coords)
 {
     Q_UNUSED(coords);
+    mMenuView->disconnect(this);
     HSMENUTEST_FUNC_ENTRY("HsAllAppsState::addLongPressed");
     addToHomeScreen(item->modelIndex());
     HSMENUTEST_FUNC_EXIT("HsAllAppsState::addLongPressed");
@@ -475,7 +258,7 @@
     // a new/an existing collection via the All view
     machine()->postEvent(
         HsMenuEventFactory::createAddAppsFromApplicationsViewEvent(
-            mSortAttribute, mCollectionsSortAttribute));
+            mSortAttribute));
 }
 
 /*!
@@ -495,50 +278,79 @@
 
 /*!
  Triggers event so that a state adding to Home Screen is reached
- \param index of an item to be added to homescreen
+ \param index of an item to be added to homescreen.
  \retval void
  */
 void HsAllAppsState::addToHomeScreen(const QModelIndex &index)
 {
     HSMENUTEST_FUNC_ENTRY("HsAllAppsState::addToHomeScreen");
-    QSharedPointer<const CaEntry> entry = mAllAppsModel->entry(index);
+    QSharedPointer<const CaEntry> entry = mModel->entry(index);
 
     machine()-> postEvent(HsMenuEventFactory::createAddToHomeScreenEvent(
-                              entry->id(), mMenuMode.getHsMenuMode(), 
-                              mMenuMode.getHsToken()));
+                              entry->id(), mMenuMode->getHsMenuMode(),
+                              mMenuMode->getHsToken()));
 
     HSMENUTEST_FUNC_EXIT("HsAllAppsState::addToHomeScreen");
 }
 
 /*!
+ Method seting context menu options.
+ */
+void HsAllAppsState::setContextMenuOptions(HbAbstractViewItem *item, EntryFlags flags)
+{
+    HbAction *addToHomeScreenAction = mContextMenu->addAction(
+        hbTrId("txt_applib_menu_add_to_home_screen"));
+    addToHomeScreenAction->setData(AddToHomeScreenContextAction);
+
+    HbAction *addToCollectionAction = mContextMenu->addAction(
+        hbTrId("txt_applib_menu_add_to_collection"));
+    addToCollectionAction->setData(AddToCollectionContextAction);
+
+    HbAction *uninstallAction = mContextMenu->addAction(
+        hbTrId("txt_common_menu_delete"));
+    uninstallAction->setData(UninstallContextAction);
+    HbAction *appSettingsAction(NULL);
+    HbAction *appDetailsAction(NULL);
+
+    // check conditions and hide irrelevant menu items
+    QSharedPointer<const CaEntry> entry = mModel->entry(item->modelIndex());
+
+    if (!(entry->attribute(appSettingsPlugin()).isEmpty())) {
+        appSettingsAction = mContextMenu->addAction(
+            hbTrId("txt_common_menu_settings"));
+        appSettingsAction->setData(AppSettingContextAction);
+    }
+    if (!(entry->attribute(componentIdAttributeName()).isEmpty()) &&
+            (flags & RemovableEntryFlag) ) {
+        appDetailsAction = mContextMenu->addAction(
+            hbTrId("txt_common_menu_details"));
+        appDetailsAction->setData(AppDetailsContextAction);
+    }
+
+    if (!(flags & RemovableEntryFlag)) {
+        uninstallAction->setVisible(false);
+    }
+}
+
+/*!
   Menu ascending sort action slot.
  */
 void HsAllAppsState::ascendingMenuAction()
 {
     HSMENUTEST_FUNC_ENTRY("HsAllAppsState::ascendingMenuAction");
     mSortAttribute = AscendingNameHsSortAttribute;
-    mAllAppsModel->setSort(mSortAttribute);
+    mModel->setSort(mSortAttribute);
     HSMENUTEST_FUNC_EXIT("HsAllAppsState::ascendingMenuAction");
 }
 
 /*!
- Sets collections sort order
- /param sortOrder sort order.
- */
-void HsAllAppsState::collectionsSortOrder(
-    HsSortAttribute sortOrder)
-{
-    mCollectionsSortAttribute = sortOrder;
-}
-
-/*!
  Menu descending sort action slot.
  */
 void HsAllAppsState::descendingMenuAction()
 {
     HSMENUTEST_FUNC_ENTRY("HsAllAppsState::descendingMenuAction");
     mSortAttribute = DescendingNameHsSortAttribute;
-    mAllAppsModel->setSort(mSortAttribute);
+    mModel->setSort(mSortAttribute);
     HSMENUTEST_FUNC_EXIT("HsAllAppsState::descendingMenuAction");
 
 }
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsallcollectionsstate.cpp	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsallcollectionsstate.cpp	Fri Jul 09 14:36:01 2010 +0300
@@ -18,21 +18,18 @@
 #include <QStateMachine>
 #include <HbView>
 #include <HbListView>
-#include <HbMainWindow>
 #include <HbMenu>
 #include <HbAction>
 #include <HbAbstractViewItem>
-#include <HbInstance>
-#include <HbSearchPanel>
+
+#include <cadefs.h>
 
-#include <hsmenueventfactory.h>
+#include "hsmenueventfactory.h"
 #include "hsmenumodewrapper.h"
-#include "hsmenuviewbuilder.h"
 #include "hsmenuitemmodel.h"
-#include "cadefs.h"
 #include "hsallcollectionsstate.h"
 #include "hsaddappstocollectionstate.h"
-#include "hsmenumodetransition.h"
+//#include "hsmenumodetransition.h"
 #include "hsmainwindow.h"
 
 /*!
@@ -45,28 +42,6 @@
  */
 
 /*!
- \var HsAllCollectionsState::mSortAttribute
- Sort order
- */
-
-/*!
- \var HsAllCollectionsState::mMenuView
- Wrapper for All Collections View.
- */
-
-/*!
- \var HsAllCollectionsState::mAllCollectionsModel
- Item Model for the List.
- Own.
- */
-
-/*!
- \fn void HsAllCollectionsState::sortOrderChanged(HsSortAttribute sortAttribute);
- Signal emitted when sort order is changed.
- \param sortOrder new sort order.
- */
-
-/*!
  Constructor.
  \param menuViewBuilder Menu view builder.
  \param menuMode reference to object representing menu mode (add mode on/add mode off).
@@ -77,14 +52,9 @@
     HsMenuModeWrapper &menuMode,
     HsMainWindow &mainWindow,
     QState *parent):
-    HsBaseViewState(parent),
-    mSortAttribute(CustomHsSortAttribute),
-    mMenuView(menuViewBuilder, HsAllCollectionsContext),
-    mMenuMode(menuMode),
-    mAllCollectionsModel(0),
-    mMainWindow(mainWindow),
-    mContextModelIndex(), mContextMenu(0)
+    HsBaseViewState(mainWindow, menuMode, parent)
 {
+    initialize(menuViewBuilder, HsAllCollectionsContext);
     construct();
 }
 
@@ -94,46 +64,21 @@
 void HsAllCollectionsState::construct()
 {
     HSMENUTEST_FUNC_ENTRY("HsAllCollectionsState::construct");
-
-    QState *initialState = new QState(this);
-    setInitialState(initialState);
-
-    QState *addModeState = new QState(this);
-    connect(addModeState, SIGNAL(entered()),SLOT(addModeEntered()));
-
-    QState *normalModeState = new QState(this);
-    connect(normalModeState, SIGNAL(entered()),SLOT(normalModeEntered()));
-    connect(normalModeState, SIGNAL(exited()),SLOT(normalModeExited()));
-
-    initialState->addTransition(new HsMenuModeTransition(
-                                    mMenuMode, NormalHsMenuMode, normalModeState));
-    initialState->addTransition(new HsMenuModeTransition(
-                                    mMenuMode, AddHsMenuMode, addModeState));
-
+    defineTransitions();
     const QString parentName =
         parent() != 0 ? parent()->objectName() : QString("");
     setObjectName(parentName + "/allcollectionsstate");
-    connect(this, SIGNAL(entered()),SLOT(stateEntered()));
-    connect(this, SIGNAL(exited()),SLOT(stateExited()));
 
-    mSecondarySoftkeyAction = new HbAction(Hb::BackNaviAction, this);
-
-    mMenuView.view()->setNavigationAction(
-        mSecondarySoftkeyAction);
+    connect(mBackKeyAction, SIGNAL(triggered()), SIGNAL(toAppLibraryState()));
 
-    connect(mSecondarySoftkeyAction, SIGNAL(triggered()),
-            SIGNAL(toAppLibraryState()));
-
-    mAllCollectionsModel = HsMenuService::getAllCollectionsModel(
-                               mSortAttribute);
-
-    mMenuView.setModel(mAllCollectionsModel);
+    mModel = HsMenuService::getAllCollectionsModel();
+    mMenuView->setModel(mModel);
 
     HSMENUTEST_FUNC_EXIT("HsAllCollectionsState::construct");
 }
 
 /*!
- Creates and installs menu options for the view
+ Creates and installs menu options for the view.
  */
 void HsAllCollectionsState::setMenuOptions()
 {
@@ -142,86 +87,47 @@
     QScopedPointer<HbMenu> viewOptions(new HbMenu);
 
     viewOptions->addAction(hbTrId("txt_applib_opt_task_switcher"),
-                           this,
+                           static_cast<HsBaseViewState*>(this),
                            SLOT(openTaskSwitcher()));
     viewOptions->addAction(hbTrId("txt_applib_opt_new_collection"),
                            this, SLOT(createNewCollection()));
 
-    HbMenu *const sortMenu = viewOptions->addMenu(
-                                 hbTrId("txt_applib_opt_sort_by"));
-
-    //Grouped options are exclusive by default.
-    QActionGroup *sortGroup = new QActionGroup(viewOptions.data());
-    sortGroup->addAction(sortMenu->addAction(
-                             hbTrId("txt_applib_opt_sub_custom"),
-                             this, SLOT(customMenuAction())));
-    sortGroup->addAction(sortMenu->addAction(
-                             hbTrId("txt_applib_opt_sub_ascending"),
-                             this, SLOT(ascendingMenuAction())));
-    sortGroup->addAction(sortMenu->addAction(
-                             hbTrId("txt_applib_opt_sub_descending"),
-                             this, SLOT(descendingMenuAction())));
-
-    if (mSortAttribute == CustomHsSortAttribute) {
-        viewOptions->addAction(hbTrId("txt_applib_opt_arrange"),
-                               this, SLOT(createArrangeCollection()));
-    }
-
-    foreach(QAction *action, sortMenu->actions()) {
-        action->setCheckable(true);
-    }
-
-    switch (mSortAttribute) {
-    case AscendingNameHsSortAttribute:
-        sortGroup->actions().at(1)->setChecked(true);
-        break;
-    case DescendingNameHsSortAttribute:
-        sortGroup->actions().at(2)->setChecked(true);
-        break;
-    case CustomHsSortAttribute:
-    default:
-        sortGroup->actions().at(0)->setChecked(true);
-        break;
-    }
-
-    mMenuView.view()->setMenu(viewOptions.take());
+    viewOptions->addAction(hbTrId("txt_applib_opt_arrange"),
+        this, SLOT(createArrangeCollection()));
+    mMenuView->view()->setMenu(viewOptions.take());
 
     HSMENUTEST_FUNC_EXIT("HsAllCollectionsState::setMenuOptions");
 }
 
 /*!
+ Method seting context menu options.
+ \param item the context menu is requested for.
+ \param flags related to \a item.
+ */
+void HsAllCollectionsState::setContextMenuOptions(HbAbstractViewItem *item, EntryFlags flags)
+{
+    Q_UNUSED(item)
+    // create context menu
+    HbAction *addShortcutAction = mContextMenu->addAction(hbTrId(
+                                      "txt_applib_menu_add_to_home_screen"));
+    addShortcutAction->setData(AddToHomeScreenContextAction);
+    HbAction *renameAction = NULL;
+    HbAction *deleteAction = NULL;
+
+    if ((flags & RemovableEntryFlag)) {
+        renameAction = mContextMenu->addAction(
+                           hbTrId("txt_common_menu_rename_item"));
+        renameAction->setData(RenameContextAction);
+        deleteAction = mContextMenu->addAction(hbTrId("txt_common_menu_delete"));
+        deleteAction->setData(DeleteContextAction);
+    }
+}
+
+/*!
  Destructor.
  */
 HsAllCollectionsState::~HsAllCollectionsState()
 {
-    mMenuView.setModel(NULL);
-    delete mAllCollectionsModel;
-}
-
-/*!
- Populates all folders
- */
-void HsAllCollectionsState::scrollToBeginning()
-{
-
-    mMenuView.listView()->scrollTo(
-        mAllCollectionsModel->index(0), HbAbstractItemView::PositionAtTop);
-}
-
-/*!
- Slot invoked when a state is entered.
- */
-
-
-void HsAllCollectionsState::stateEntered()
-{
-    qDebug("AllCollectionsState::stateEntered()");
-    HSMENUTEST_FUNC_ENTRY("HsAllCollectionsState::stateEntered");
-
-    mMainWindow.setCurrentView(mMenuView);
-    mMenuView.activate();
-
-    HSMENUTEST_FUNC_EXIT("HsAllCollectionsState::stateExited");
 }
 
 /*!
@@ -229,16 +135,11 @@
 */
 void HsAllCollectionsState::normalModeEntered()
 {
-    setMenuOptions();
-    connect(&mMainWindow, SIGNAL(viewIsReady()),
-        &mMainWindow, SLOT(saveActivity()),
-        Qt::UniqueConnection);
-    connect(&mMenuView,
+    HsBaseViewState::normalModeEntered();
+    connect(mMenuView.data(),
             SIGNAL(activated(QModelIndex)),
-            SLOT(listItemActivated(QModelIndex)));
-    connect(&mMenuView,
-            SIGNAL(longPressed(HbAbstractViewItem *, QPointF)),
-            SLOT(listItemLongPressed(HbAbstractViewItem *, QPointF)));
+            static_cast<HsBaseViewState*>(this),
+            SLOT(openCollection(QModelIndex)));
 }
 
 /*!
@@ -246,21 +147,9 @@
 */
 void HsAllCollectionsState::normalModeExited()
 {
-    mMenuView.view()->setMenu(NULL);
+    mMenuView->view()->setMenu(NULL);
 }
 
-/*!
- Slot invoked when add mode is entered.
- */
-void HsAllCollectionsState::addModeEntered()
-{
-    connect(&mMenuView,
-            SIGNAL(activated(QModelIndex)),
-            SLOT(addActivated(QModelIndex)));
-    connect(&mMenuView,
-            SIGNAL(longPressed(HbAbstractViewItem *, QPointF)),
-            SLOT(addLongPressed(HbAbstractViewItem *, QPointF)));
-}
 
 /*!
  Slot invoked when a state is exited.
@@ -268,19 +157,7 @@
 void HsAllCollectionsState::stateExited()
 {
     HSMENUTEST_FUNC_ENTRY("HsAllCollectionsState::stateExited");
-    
-    disconnect(&mMainWindow, SIGNAL(viewIsReady()),
-               &mMainWindow, SLOT(saveActivity()));
-    
-    mMenuView.setSearchPanelVisible(false);
 
-    mMenuView.disconnect(this);
-
-    mMenuView.inactivate();
-
-    if (mContextMenu)
-        mContextMenu->close();
-    
     HsBaseViewState::stateExited();
 
     HSMENUTEST_FUNC_EXIT("HsAllCollectionsState::stateExited");
@@ -288,45 +165,16 @@
 }
 
 /*!
- Open task switcher.
- \retval true if operation is successful.
- */
-bool HsAllCollectionsState::openTaskSwitcher()
-{
-    return HsMenuService::launchTaskSwitcher();
-}
-
-/*!
- Slot connected to List widget in normal mode.
- \param index Model index of the activated item.
- */
-void HsAllCollectionsState::listItemActivated(const QModelIndex &index)
-{
-    HSMENUTEST_FUNC_ENTRY("HsAllCollectionsState::listItemActivated");
-    QVariant data = mAllCollectionsModel->data(index, CaItemModel::IdRole);
-    int id = data.toInt();
-    QString collectionType =
-        mAllCollectionsModel->data(index, CaItemModel::TypeRole).toString();
-    qDebug("AllCollectionsState::listItemActivated - MCS ID: %d",
-           data.toInt());
-
-    mMenuView.setSearchPanelVisible(false);
-
-    machine()->postEvent(HsMenuEventFactory::createOpenCollectionFromAppLibraryEvent(id,
-                         collectionType));
-    HSMENUTEST_FUNC_EXIT("HsAllCollectionsState::listItemActivated");
-}
-
-/*!
  Slot connected to List widget in add mode.
  \param index Model index of the activated item.
  */
 void HsAllCollectionsState::addActivated(const QModelIndex &index)
 {
+    mMenuView->disconnect(this);
     const int itemId = index.data(CaItemModel::IdRole).toInt();
     machine()->postEvent(
         HsMenuEventFactory::createAddToHomeScreenEvent(
-            itemId, mMenuMode.getHsMenuMode(), mMenuMode.getHsToken()));
+            itemId, mMenuMode->getHsMenuMode(), mMenuMode->getHsToken()));
 }
 
 /*!
@@ -339,53 +187,16 @@
         const QPointF &coords)
 {
     Q_UNUSED(coords);
+    mMenuView->disconnect(this);
     const int itemId = item->modelIndex().data(CaItemModel::IdRole).toInt();
     machine()->postEvent(
         HsMenuEventFactory::createAddToHomeScreenEvent(itemId,
-                mMenuMode.getHsMenuMode(), mMenuMode.getHsToken()));
+                mMenuMode->getHsMenuMode(), mMenuMode->getHsToken()));
 }
 
 /*!
- Slot connected to List widget in normal mode.
- Called when item long pressed.
- \param item View item.
- \param coords Press point coordinates.
- */
-void HsAllCollectionsState::listItemLongPressed(HbAbstractViewItem *item,
-        const QPointF &coords)
-{
-    HSMENUTEST_FUNC_ENTRY("HsAllCollectionsState::listItemLongPressed");
-
-    mContextMenu = new HbMenu;
-
-    // create context menu
-    HbAction *addShortcutAction = mContextMenu->addAction(hbTrId(
-                                      "txt_applib_menu_add_to_home_screen"));
-    addShortcutAction->setData(AddToHomeScreenContextAction);
-    HbAction *renameAction = NULL;
-    HbAction *deleteAction = NULL;
-
-    EntryFlags flags = item->modelIndex().data(CaItemModel::FlagsRole).value<
-                       EntryFlags> ();
-
-    if ((flags & RemovableEntryFlag)) {
-        renameAction = mContextMenu->addAction(
-                           hbTrId("txt_common_menu_rename_item"));
-        renameAction->setData(RenameContextAction);
-        deleteAction = mContextMenu->addAction(hbTrId("txt_common_menu_delete"));
-        deleteAction->setData(DeleteContextAction);
-    }
-
-    mContextModelIndex = item->modelIndex();
-    mContextMenu->setPreferredPos(coords);
-    mContextMenu->setAttribute(Qt::WA_DeleteOnClose);
-    mContextMenu->open(this, SLOT(contextMenuAction(HbAction*)));
-
-    HSMENUTEST_FUNC_EXIT("HsAllCollectionsState::listItemLongPressed");
-}
-
-/*!
- Handles context menu actions
+ Handles context menu actions.
+ \param action to be handled.
  */
 void HsAllCollectionsState::contextMenuAction(HbAction *action)
 {
@@ -398,7 +209,7 @@
         case AddToHomeScreenContextAction:
             machine()->postEvent(
                 HsMenuEventFactory::createAddToHomeScreenEvent(
-                    itemId, mMenuMode.getHsMenuMode(), mMenuMode.getHsToken()));
+                    itemId, mMenuMode->getHsMenuMode(), mMenuMode->getHsToken()));
             break;
         case RenameContextAction:
             machine()->postEvent(
@@ -412,7 +223,7 @@
             break;
     }
                                     
-    mMenuView.setSearchPanelVisible(false);
+    mMenuView->setSearchPanelVisible(false);
 }
 
 /*!
@@ -433,7 +244,7 @@
     int topItemId(0);
 
     const QList<HbAbstractViewItem *> array =
-        mMenuView.listView()->visibleItems();
+        mMenuView->listView()->visibleItems();
 
     if (array.count() >= 1) {
         QModelIndex idx = array[0]->modelIndex();
@@ -441,45 +252,5 @@
     }
 
     machine()->postEvent(
-        HsMenuEventFactory::createArrangeCollectionEvent(topItemId));
-}
-
-/*!
- Menu custom sort action slot.
- */
-void HsAllCollectionsState::customMenuAction()
-{
-    HSMENUTEST_FUNC_ENTRY("HsAllCollectionsState::customMenuAction");
-    mSortAttribute = CustomHsSortAttribute;
-    setMenuOptions();
-    mAllCollectionsModel->setSort(mSortAttribute);
-    emit sortOrderChanged(mSortAttribute);
-    HSMENUTEST_FUNC_EXIT("HsAllCollectionsState::customMenuAction");
+        HsMenuEventFactory::createArrangeAllCollectionsEvent(topItemId));
 }
-
-/*!
- Menu ascending sort action slot.
- */
-void HsAllCollectionsState::ascendingMenuAction()
-{
-    HSMENUTEST_FUNC_ENTRY("HsAllCollectionsState::ascendingMenuAction");
-    mSortAttribute = AscendingNameHsSortAttribute;
-    setMenuOptions();
-    mAllCollectionsModel->setSort(mSortAttribute);
-    emit sortOrderChanged(mSortAttribute);
-    HSMENUTEST_FUNC_EXIT("HsAllCollectionsState::ascendingMenuAction");
-}
-
-/*!
- Menu descending sort action slot.
- */
-void HsAllCollectionsState::descendingMenuAction()
-{
-    HSMENUTEST_FUNC_ENTRY("HsAllCollectionsState::descendingMenuAction");
-    mSortAttribute = DescendingNameHsSortAttribute;
-    setMenuOptions();
-    mAllCollectionsModel->setSort(mSortAttribute);
-    emit sortOrderChanged(mSortAttribute);
-    HSMENUTEST_FUNC_EXIT("HsAllCollectionsState::descendingMenuAction");
-}
-
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsapplibrarystate.cpp	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsapplibrarystate.cpp	Fri Jul 09 14:36:01 2010 +0300
@@ -14,18 +14,11 @@
  * Description: Menu Application Library state.
  *
  */
-#include <hbmainwindow.h>
-#include <hbview.h>
-#include <hbaction.h>
+
+#include <HbAction>
 #include <HbToolBar>
-#include <HbIcon>
-#include <hbinstance.h>
-#include <hblistview.h>
-#include <hbsearchpanel.h>
 #include <HbToolBarExtension>
 #include <HbStyleLoader>
-#include <hsmenueventtransition.h>
-
 
 #include "hstest_global.h"
 #include "hsapplibrarystate.h"
@@ -34,7 +27,7 @@
 #include "hscollectionstate.h"
 #include "hsinstalledappsstate.h"
 #include "hsoperatorhandler.h"
-#include "hsmenuview.h"
+#include "hsmenueventtransition.h"
 #include "hsmenumodetransition.h"
 
 
@@ -180,11 +173,6 @@
 
     constructToolbar();
 
-    connect(mAllCollectionsState, SIGNAL(sortOrderChanged(HsSortAttribute)),
-            mAllAppsState, SLOT(collectionsSortOrder(HsSortAttribute)));
-    connect(mAllCollectionsState, SIGNAL(sortOrderChanged(HsSortAttribute)),
-            mCollectionState, SLOT(collectionsSortOrder(HsSortAttribute)));
-
     connect(mAllAppsState, SIGNAL(entered()),
             this, SLOT(allAppsStateEntered()));
 
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsbaseviewstate.cpp	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsbaseviewstate.cpp	Fri Jul 09 14:36:01 2010 +0300
@@ -15,38 +15,91 @@
  *
  */
 
-#include <hbmessagebox.h>
+#include <QStateMachine>
+#include <HbMessageBox>
 #include <HbParameterLengthLimiter>
-#include <hbaction.h>
+#include <HbAction>
+#include <HbMenu>
+#include <HbAbstractViewItem>
+#include <HbView>
+#include <HbListView>
+
 #include <canotifier.h>
 
 #include "hsbaseviewstate.h"
+#include "hsmenueventfactory.h"
+#include "hsmenudialogfactory.h"
+#include "hsmenuitemmodel.h"
+#include "hsmenumodetransition.h"
+#include "hsmainwindow.h"
+
 
 /*!
  Constructor.
+ \param mainWindow main window wrapper object.
+ \param parent Owner.
  */
-HsBaseViewState::HsBaseViewState(
+HsBaseViewState::HsBaseViewState(HsMainWindow &mainWindow, QState *parent):
+    QState(parent),
+    mNotifier(0),
+    mMessageRelatedItemId(0),
+    mApplicationLaunchFailMessage(0),
+    mModel(0),
+    mContextMenu(0),
+    mContextModelIndex(),
+    mBackKeyAction(0),
+    mMenuView(0),
+    mMenuMode(0),
+    mMainWindow(mainWindow)
+{
+    mBackKeyAction = new HbAction(Hb::BackNaviAction, this);
+}
+
+/*!
+ Constructor.
+ \param mainWindow main window wrapper object.
+ \param menuMode menu mode object.
+ \param parent Owner.
+ */
+HsBaseViewState::HsBaseViewState(HsMainWindow &mainWindow, 
+    HsMenuModeWrapper& menuMode, 
     QState *parent):
     QState(parent),
     mNotifier(0),
     mMessageRelatedItemId(0),
-    mApplicationLaunchFailMessage(0)    
+    mApplicationLaunchFailMessage(0),
+    mModel(0),
+    mContextMenu(0),
+    mContextModelIndex(),
+    mBackKeyAction(0),
+    mMenuView(0),
+    mMenuMode(&menuMode),
+    mMainWindow(mainWindow)
 {
-    construct();
+    mBackKeyAction = new HbAction(Hb::BackNaviAction, this);
 }
+/*!
+ Initialize contained objects.
+ \param menuViewBuilder object providing widgets for menu view.
+ \param viewContext state context of the view the builder is to provide widgets for.
+ */
+void HsBaseViewState::initialize(HsMenuViewBuilder &menuViewBuilder, 
+    HsViewContext viewContext)
+{
+    mMenuView.reset(new HsMenuView(menuViewBuilder, viewContext));
+    mMenuView->view()->setNavigationAction(mBackKeyAction);
 
-/*!
- Constructs contained objects.
- */
-void HsBaseViewState::construct()
-{
+    connect(this, SIGNAL(entered()),SLOT(stateEntered()));
+    connect(this, SIGNAL(exited()),SLOT(stateExited()));
 }
 
 /*!
  Creates and open application launch fail message.
  \param errorCode eroor code to display.
+ \param itemId id of the launched item.
  */
-void HsBaseViewState::createApplicationLaunchFailMessage(int errorCode,int itemId)
+void HsBaseViewState::createApplicationLaunchFailMessage(int errorCode,
+    int itemId)
 {
     QString message;
     message.append(
@@ -56,15 +109,7 @@
     mMessageRelatedItemId = itemId;
 
     // create and show message box
-    mApplicationLaunchFailMessage = new HbMessageBox(HbMessageBox::MessageTypeInformation);
-    mApplicationLaunchFailMessage->setAttribute(Qt::WA_DeleteOnClose);
-
-    mApplicationLaunchFailMessage->setText(message);
-
-    mApplicationLaunchFailMessage->clearActions();
-    HbAction *mClosemAction = new HbAction(hbTrId("txt_common_button_close"),
-        mApplicationLaunchFailMessage);
-    mApplicationLaunchFailMessage->addAction(mClosemAction);
+    mApplicationLaunchFailMessage = HsMenuDialogFactory().create(message, HsMenuDialogFactory::Close);
 
     mApplicationLaunchFailMessage->open(this, SLOT(applicationLaunchFailMessageFinished(HbAction*)));
     
@@ -115,19 +160,214 @@
     cleanUpApplicationLaunchFailMessage();
 }
 
+
+/*!
+ Slot invoked when a state is entered.
+ */
+void HsBaseViewState::stateEntered()
+{
+    qDebug("HsBaseViewState::stateEntered()");
+    HSMENUTEST_FUNC_ENTRY("HsBaseViewState::stateEntered");
+
+    mMainWindow.setCurrentView(*mMenuView);
+    mMenuView->activate();
+
+    HSMENUTEST_FUNC_EXIT("HsBaseViewState::stateEntered");
+}
+
 /*!
  Slot invoked when a state is exited.
  */
 void HsBaseViewState::stateExited()
 {
     HSMENUTEST_FUNC_ENTRY("HsBaseViewState::stateExited");
+    mMenuView->setSearchPanelVisible(false);
+    mMenuView->disconnect(this);
+    mMenuView->view()->setMenu(NULL);
+    mMenuView->inactivate();
     cleanUpApplicationLaunchFailMessage();
+    if (mContextMenu){
+        mContextMenu->close();
+    }
     HSMENUTEST_FUNC_EXIT("HsBaseViewState::stateExited");
 }
 
 /*!
+ Add mode entered.
+ */
+void HsBaseViewState::addModeEntered()
+{
+    connect(mMenuView.data(),
+            SIGNAL(activated(QModelIndex)),
+            SLOT(addActivated(QModelIndex)));
+    connect(mMenuView.data(),
+            SIGNAL(longPressed(HbAbstractViewItem *, QPointF)),
+            SLOT(addLongPressed(HbAbstractViewItem *, QPointF)));
+}
+
+/*!
+ Slot invoked when add mode entered.
+ */
+void HsBaseViewState::normalModeEntered()
+{
+    setMenuOptions();
+    connect(mMenuView.data(),
+            SIGNAL(activated(QModelIndex)),
+            mMenuView.data(),
+            SLOT(hideSearchPanel()));
+    connect(mMenuView.data(),
+            SIGNAL(longPressed(HbAbstractViewItem *, QPointF)),
+            SLOT(showContextMenu(HbAbstractViewItem *, QPointF)));
+}
+
+/*!
  Destructor.
  */
 HsBaseViewState::~HsBaseViewState()
 {
+    mMenuView->setModel(NULL);
+    delete mModel;
 }
+
+/*!
+ Slot connected to List widget in normal mode.
+ \param index Model index of the activated item.
+ */
+void HsBaseViewState::launchItem(const QModelIndex &index)
+{
+    HSMENUTEST_FUNC_ENTRY("HsBaseViewState::launchItem");
+
+    QSharedPointer<const CaEntry> entry = mModel->entry(index);
+
+    if (entry->entryTypeName() == widgetTypeName()) {
+        EntryFlags flags = index.data(CaItemModel::FlagsRole).value<
+                               EntryFlags> ();
+        if (!(flags & UninstallEntryFlag)) {
+            machine()->postEvent(
+                HsMenuEventFactory::createPreviewHSWidgetEvent(
+                    entry->id(), entry->entryTypeName(), entry->attribute(
+                        widgetUriAttributeName()), entry->attribute(
+                        widgetLibraryAttributeName())));
+
+            const int itemId = index.data(CaItemModel::IdRole).toInt();
+            HsMenuService::touch(itemId);
+        }
+    } else {
+        QVariant data = mModel->data(index, CaItemModel::IdRole);
+        int errCode = HsMenuService::executeAction(data.toInt());
+        if (errCode != 0) {
+            createApplicationLaunchFailMessage(errCode,index.data(CaItemModel::IdRole).toInt());
+        }
+    }
+
+    HSMENUTEST_FUNC_EXIT("HsBaseViewState::launchItem");
+}
+
+/*!
+ Slot connected to List widget in normal mode.
+ \param index Model index of the activated item.
+ */
+void HsBaseViewState::openCollection(const QModelIndex &index)
+{
+    HSMENUTEST_FUNC_ENTRY("HsBaseViewState::openCollection");
+    QVariant data = mModel->data(index, CaItemModel::IdRole);
+    int id = data.toInt();
+    QString collectionType =
+        mModel->data(index, CaItemModel::TypeRole).toString();
+    qDebug("HsBaseViewState::openCollection - MCS ID: %d",
+           data.toInt());
+
+    machine()->postEvent(HsMenuEventFactory::createOpenCollectionFromAppLibraryEvent(id,
+                         collectionType));
+    HSMENUTEST_FUNC_EXIT("HsBaseViewState::openCollection");
+}
+
+/*!
+ Slot connected to List widget in normal mode.
+ \param index Model index of the activated item.
+ */
+void HsBaseViewState::showContextMenu(HbAbstractViewItem *item, const QPointF &coords)
+{
+
+    HSMENUTEST_FUNC_ENTRY("HsBaseViewState::showContextMenu");
+
+    EntryFlags flags = item->modelIndex().data(
+                           CaItemModel::FlagsRole).value<EntryFlags> ();
+
+    if (!(flags & UninstallEntryFlag)) {
+        mContextMenu = new HbMenu;
+        setContextMenuOptions(item,flags);
+        mContextModelIndex = item->modelIndex();
+        mContextMenu->setPreferredPos(coords);
+        mContextMenu->setAttribute(Qt::WA_DeleteOnClose);
+        mContextMenu->open(this, SLOT(contextMenuAction(HbAction*)));
+    }
+    HSMENUTEST_FUNC_EXIT("HsBaseViewState::showContextMenu");
+
+}
+
+/*!
+ Open task switcher.
+ \retval true if operation is successful.
+ */
+bool HsBaseViewState::openTaskSwitcher()
+{
+    return HsMenuService::launchTaskSwitcher();
+}
+
+/*!
+ Menu softkey back action slot
+ */
+void HsBaseViewState::openAppLibrary()
+{
+    machine()->postEvent(HsMenuEventFactory::createOpenAppLibraryEvent());
+}
+
+/*!
+ Check software updates.
+ \retval 0 if operation is successful.
+ */
+int HsBaseViewState::checkSoftwareUpdates()
+{
+    int errCode = HsMenuService::launchSoftwareUpdate();
+    if (errCode != 0){
+        createApplicationLaunchFailMessage(errCode,0);
+    }
+    return errCode;
+}
+/*!
+ Scrolls view to first item at top
+ */
+void HsBaseViewState::scrollToBeginning()
+{
+    mMenuView->listView()->scrollTo(
+        mModel->index(0), HbAbstractItemView::PositionAtTop);
+}
+
+/*!
+ Normal mode exited dummy implementation.
+ */
+void HsBaseViewState::normalModeExited()
+{
+}
+
+/*!
+ Defines transitions
+ */
+void HsBaseViewState::defineTransitions()
+{
+    QState *initialState = new QState(this);
+    setInitialState(initialState);
+
+    QState *addModeState = new QState(this);
+    connect(addModeState, SIGNAL(entered()),SLOT(addModeEntered()));
+
+    QState *normalModeState = new QState(this);
+    connect(normalModeState, SIGNAL(entered()),SLOT(normalModeEntered()));
+    connect(normalModeState, SIGNAL(exited()),SLOT(normalModeExited()));
+
+    initialState->addTransition(new HsMenuModeTransition(
+                                    *mMenuMode, NormalHsMenuMode, normalModeState));
+    initialState->addTransition(new HsMenuModeTransition(
+                                    *mMenuMode, AddHsMenuMode, addModeState));
+}
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hscollectionstate.cpp	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hscollectionstate.cpp	Fri Jul 09 14:36:01 2010 +0300
@@ -15,30 +15,26 @@
  *
  */
 
-#include <qstatemachine.h>
-
+#include <QStateMachine>
+#include <HbAction>
+#include <HbView>
 #include <HbGroupBox>
 #include <HbListView>
 #include <HbPushButton>
-#include <hbview.h>
-#include <hbaction.h>
-#include <hbabstractviewitem.h>
-#include <hsmenueventfactory.h>
-#include <hbmenu.h>
-#include <hbinstance.h>
-#include <hbsearchpanel.h>
+#include <HbAbstractViewItem>
+#include <HbMenu>
 
+#include <cadefs.h>
+#include <caentry.h>
+
+#include "hsapp_defs.h"
 #include "hsmenuevent.h"
+#include "hsmenueventfactory.h"
 #include "hsmenuservice.h"
 #include "hsmenumodewrapper.h"
 #include "hsmenuitemmodel.h"
-#include "hsmenuviewbuilder.h"
-#include "cadefs.h"
-#include "caentry.h"
 #include "hscollectionstate.h"
 #include "hsaddappstocollectionstate.h"
-#include "hsapp_defs.h"
-#include "hsmainwindow.h"
 
 /*!
  \class HsCollectionState
@@ -55,11 +51,6 @@
  */
 
 /*!
- \var HsCollectionState::mCollectionsSortAttribute
- All collections sort order.
- */
-
-/*!
  \var HsCollectionState::mCollectionId
  The id of the current collection.
  */
@@ -69,35 +60,6 @@
  The type of the current collection.
  */
 
-/*!
- \var HsCollectionState::mMenuView
- The List View widget.
- */
-
-/*!
- \var HsCollectionState::mSecondarySoftkeyAction
- Secondary Softkey action.
- Backstepping functionality.
- Own.
- */
-
-/*!
- \var HsCollectionState::mOldNavigationAction
- Old navigation icon.
- Not own.
- */
-
-/*!
- \var HsCollectionState::mCollectionModel
- Item Model for the List.
- Own.
- */
-
-/*!
- \var HsCollectionState::mOptions
- Options menu.
- Own.
- */
 
 /*!
   \fn void HsCollectionState::sortOrderChanged(SHsSortAttribute sortOrder);
@@ -114,24 +76,19 @@
 /*!
  Constructor.
  \param menuViewBuilder Menu view builder.
- \param menuMode reference to object representing menu mode (add mode on/add mode off).
+ \param menuMode menu mode object (add mode on/add mode off).
+ \param mainWindow main window wrapper.
  \param parent Owner.
 */
 HsCollectionState::HsCollectionState(HsMenuViewBuilder &menuViewBuilder,
                                      HsMenuModeWrapper &menuMode,
                                      HsMainWindow &mainWindow,
                                      QState *parent) :
-    HsBaseViewState(parent),
+    HsBaseViewState(mainWindow, menuMode, parent),
     mSortAttribute(LatestOnTopHsSortAttribute),
-    mCollectionsSortAttribute(CustomHsSortAttribute),
-    mCollectionId(-1),
-    mMenuView(menuViewBuilder, HsCollectionContext),
-    mMenuMode(menuMode),
-    mSecondarySoftkeyAction(new HbAction(Hb::BackNaviAction, this)),
-    mCollectionModel(0),
-    mOptions(0), mContextModelIndex(), mContextMenu(0),
-    mMainWindow(mainWindow)
+    mCollectionId(-1)
 {
+    initialize(menuViewBuilder, HsCollectionContext);
     construct();
 }
 
@@ -146,12 +103,7 @@
         parent() != 0 ? parent()->objectName() : QString("");
     setObjectName(parentName + "/collectionstate");
 
-    connect(this, SIGNAL(entered()),SLOT(stateEntered()));
-    connect(this, SIGNAL(exited()),SLOT(stateExited()));
-    
-    mMenuView.collectionButton()->setCheckable(true);   
-    makeConnect();
-    mMenuView.view()->setNavigationAction(mSecondarySoftkeyAction);
+    mMenuView->collectionButton()->setCheckable(true);
 
     HSMENUTEST_FUNC_EXIT("HsCollectionState::construct");
 }
@@ -161,11 +113,8 @@
  */
 HsCollectionState::~HsCollectionState()
 {
-    makeDisconnect();
-    mMenuView.inactivate();
-    mMenuView.setModel(NULL);
-    mMenuView.view()->setNavigationAction(NULL);
-    delete mCollectionModel;
+    mMenuView->inactivate();
+    mMenuView->view()->setNavigationAction(NULL);
 }
 
 
@@ -192,101 +141,114 @@
 /*!
  Slot invoked when a state is entered.
  */
-
-
 void HsCollectionState::stateEntered()
 {
     HSMENUTEST_FUNC_ENTRY("HsCollectionState::stateEntered");
-
-    mMainWindow.setCurrentView(mMenuView);
-    mMenuView.activate();
-
-    if (!mCollectionModel) {
-        mCollectionModel =
+    HsBaseViewState::stateEntered();
+    makeConnect();
+    if (!mModel) {
+        mModel =
             HsMenuService::getCollectionModel(
                 mCollectionId, mSortAttribute, mCollectionType);
     }
-    
+
     EntryFlags flags =
-        mCollectionModel->root().data(CaItemModel::FlagsRole).value<
+        mModel->root().data(CaItemModel::FlagsRole).value<
         EntryFlags> ();
 
-    if (mCollectionModel->rowCount() == 0){
+    if (mModel->rowCount() == 0){
         if (flags & RemovableEntryFlag){
-            mMenuView.setContext(HsCollectionContext,HsButtonContext);
+            mMenuView->setContext(HsCollectionContext,HsButtonContext);
         } else {
-            mMenuView.setContext(HsCollectionContext,HsEmptyLabelContext);
+            mMenuView->setContext(HsCollectionContext,HsEmptyLabelContext);
         }
-        mMenuView.disableSearch(true);
+        mMenuView->disableSearch(true);
     } else {
-        mMenuView.setContext(HsCollectionContext,HsItemViewContext);
-        mMenuView.disableSearch(false);
+        mMenuView->setContext(HsCollectionContext,HsItemViewContext);
+        mMenuView->disableSearch(false);
     }
 
-    connect(mCollectionModel, SIGNAL(modelReset()), SLOT(updateLabel()));
-    connect(mCollectionModel, SIGNAL(empty(bool)),this,
+    connect(mModel, SIGNAL(modelReset()), SLOT(updateLabel()));
+    connect(mModel, SIGNAL(empty(bool)),this,
             SLOT(handleEmptyChange(bool)));
-    connect(mCollectionModel, SIGNAL(empty(bool)),this,
+    connect(mModel, SIGNAL(empty(bool)),this,
             SLOT(lockSearchButton(bool)));
 
-    mMenuView.setModel(mCollectionModel);
+    mMenuView->setModel(mModel);
+
+    mMenuView->listView()->scrollTo(
+        mModel->index(0), HbAbstractItemView::PositionAtTop);
 
-    mMenuView.listView()->scrollTo(
-        mCollectionModel->index(0), HbAbstractItemView::PositionAtTop);
+    mMenuView->viewLabel()->setHeading(
+        mModel->root().data(Qt::DisplayRole).toString());
+    setMenuOptions();
+
+    HSMENUTEST_FUNC_EXIT("HsCollectionState::stateEntered");
+}
 
-    mMenuView.viewLabel()->setHeading(
-        mCollectionModel->root().data(Qt::DisplayRole).toString());
+/*!
+ Creates and installs menu options for the view
+ */
+void HsCollectionState::setMenuOptions()
+{
+    HSMENUTEST_FUNC_ENTRY("HsAllCollectionsState::setMenuOptions");
 
-    if (!mOptions) {
-        mOptions = new HbMenu();
-        mOptions->addAction(hbTrId("txt_applib_opt_task_switcher"),
-                            this,
+    EntryFlags flags =
+        mModel->root().data(CaItemModel::FlagsRole).value<EntryFlags> ();
+
+    QScopedPointer<HbMenu> viewOptions(new HbMenu);
+
+    viewOptions->addAction(hbTrId("txt_applib_opt_task_switcher"),
+                            static_cast<HsBaseViewState*>(this),
                             SLOT(openTaskSwitcher()));
 
-        if (flags & RemovableEntryFlag) {
-            mOptions->addAction(hbTrId("txt_applib_opt_add_content"), this,
-                                SLOT(addAppsAction()));
-        }
-
-        mOptions->addAction(hbTrId("txt_applib_opt_add_to_home_screen"),
-                            this, SLOT(addCollectionShortcutToHomeScreenAction()));
+    if (flags & RemovableEntryFlag) {
+        viewOptions->addAction(hbTrId("txt_applib_opt_add_content"), this,
+                            SLOT(addAppsAction()));
+    }
 
-        if (flags & RemovableEntryFlag) {
-            mOptions->addAction(
-                hbTrId("txt_common_opt_rename_item"),
+    viewOptions->addAction(hbTrId("txt_applib_opt_add_to_home_screen"),
+                        this, SLOT(addCollectionShortcutToHomeScreenAction()));
+
+    if (flags & RemovableEntryFlag) {
+        if (mModel->rowCount() > 0) {
+            viewOptions->addAction(
+                hbTrId("txt_applib_opt_arrange"),
                 this,
-                SLOT(renameAction()));
-            mOptions->addAction(
-                hbTrId("txt_common_opt_delete"),
-                this,
-                SLOT(deleteAction()));
+                SLOT(createArrangeCollection()));
         }
-        if (mCollectionType == collectionDownloadedTypeName()) {
-            HbMenu *sortMenu = mOptions->addMenu(
-                                   hbTrId("txt_applib_opt_sort_by"));
-            //Grouped options are exclusive by default.
-            QActionGroup *sortGroup = new QActionGroup(mOptions);
-            sortGroup->addAction(
-                sortMenu->addAction(
-                    hbTrId("txt_applib_opt_sort_by_sub_latest_on_top"),
-                    this,
-                    SLOT(latestOnTopMenuAction())));
-            sortGroup->addAction(
-                sortMenu->addAction(
-                    hbTrId("txt_applib_opt_sort_by_sub_oldest_on_top"),
-                    this,
-                    SLOT(oldestOnTopMenuAction())));
-            foreach(QAction *action, sortMenu->actions()) {
-                action->setCheckable(true);
-            }
-            static const int defaultSortingPosition = 0;
-            sortGroup->actions().at(defaultSortingPosition)->setChecked(true);
+        viewOptions->addAction(
+            hbTrId("txt_common_opt_rename_item"),
+            this,
+            SLOT(renameAction()));
+        viewOptions->addAction(
+            hbTrId("txt_common_opt_delete"),
+            this,
+            SLOT(deleteAction()));
+    }
+    if (mCollectionType == collectionDownloadedTypeName()) {
+        HbMenu *sortMenu = viewOptions->addMenu(
+                               hbTrId("txt_applib_opt_sort_by"));
+        //Grouped options are exclusive by default.
+        QActionGroup *sortGroup = new QActionGroup(viewOptions.data());
+        sortGroup->addAction(
+            sortMenu->addAction(
+                hbTrId("txt_applib_opt_sort_by_sub_latest_on_top"),
+                this,
+                SLOT(latestOnTopMenuAction())));
+        sortGroup->addAction(
+            sortMenu->addAction(
+                hbTrId("txt_applib_opt_sort_by_sub_oldest_on_top"),
+                this,
+                SLOT(oldestOnTopMenuAction())));
+        foreach(QAction *action, sortMenu->actions()) {
+            action->setCheckable(true);
         }
-
-        mOptions->setParent(this);
-        mMenuView.view()->setMenu(mOptions);
+        static const int defaultSortingPosition = 0;
+        sortGroup->actions().at(defaultSortingPosition)->setChecked(true);
     }
-    HSMENUTEST_FUNC_EXIT("HsCollectionState::stateEntered");
+    mMenuView->view()->setMenu(viewOptions.take());
+    HSMENUTEST_FUNC_EXIT("HsAllCollectionsState::setMenuOptions");
 }
 
 /*!
@@ -295,29 +257,22 @@
 void HsCollectionState::stateExited()
 {
     HSMENUTEST_FUNC_ENTRY("HsCollectionState::stateExited");
-
-    mMenuView.inactivate();
-    mMenuView.setSearchPanelVisible(false);
-    mMenuView.disableSearch(false);
-    disconnect(mCollectionModel, SIGNAL(empty(bool)),this,
+    makeDisconnect();
+    mMenuView->disableSearch(false);
+    disconnect(mModel, SIGNAL(empty(bool)),this,
                SLOT(handleEmptyChange(bool)));
 
-    disconnect(mCollectionModel, SIGNAL(empty(bool)),this,
+    disconnect(mModel, SIGNAL(empty(bool)),this,
                SLOT(lockSearchButton(bool)));
 
-    disconnect(mCollectionModel, SIGNAL(modelReset()),
+    disconnect(mModel, SIGNAL(modelReset()),
                    this, SLOT(updateLabel()));
-    delete mCollectionModel;
-    mCollectionModel = NULL;
-    mOptions->close();
-    delete mOptions;
-    mOptions = NULL;
-    if (mContextMenu)
-        mContextMenu->close();
+    delete mModel;
+    mModel = NULL;
     this->mSortAttribute = NoHsSortAttribute;
-    
+
     HsBaseViewState::stateExited();
-    
+
     HSMENUTEST_FUNC_EXIT("HsCollectionState::stateExited");
     qDebug("CollectionState::stateExited()");
 }
@@ -327,15 +282,21 @@
  */
 void HsCollectionState::makeConnect()
 {
-    connect(mSecondarySoftkeyAction, SIGNAL(triggered()),
-            SLOT(backSteppingAction()));
-    connect(&mMenuView,
+    connect(mBackKeyAction, SIGNAL(triggered()),
+            static_cast<HsBaseViewState*>(this), SLOT(openAppLibrary()));
+    connect(mMenuView.data(),
+            SIGNAL(activated(QModelIndex)),
+            static_cast<HsBaseViewState*>(this),
+            SLOT(launchItem(QModelIndex)));
+    connect(mMenuView.data(),
             SIGNAL(activated(QModelIndex)),
-            SLOT(listItemActivated(QModelIndex)));
-    connect(&mMenuView,
+            mMenuView.data(),
+            SLOT(hideSearchPanel()));
+    connect(mMenuView.data(),
             SIGNAL(longPressed(HbAbstractViewItem *, QPointF)),
-            SLOT(listItemLongPressed(HbAbstractViewItem *, QPointF)));
-    connect(mMenuView.collectionButton(),
+            static_cast<HsBaseViewState*>(this),
+            SLOT(showContextMenu(HbAbstractViewItem *, QPointF)));
+    connect(mMenuView->collectionButton(),
             SIGNAL(toggled(bool)), this, SLOT(addAppsAction(bool)));
 }
 
@@ -344,130 +305,24 @@
  */
 void HsCollectionState::makeDisconnect()
 {
-    disconnect(mMenuView.collectionButton(),
+    disconnect(mMenuView->collectionButton(),
             SIGNAL(toggled(bool)), this, SLOT(addAppsAction(bool)));
 
-    disconnect(mSecondarySoftkeyAction, SIGNAL(triggered()),
-               this, SLOT(backSteppingAction()));
-
-    disconnect(&mMenuView,
-               SIGNAL(activated(QModelIndex)),
-               this, SLOT(listItemActivated(QModelIndex)));
-
-    disconnect(&mMenuView,
-               SIGNAL(longPressed(HbAbstractViewItem *, QPointF)),
-               this, SLOT(listItemLongPressed(HbAbstractViewItem *, QPointF)));
-}
-
-/*!
- Open task switcher.
- \retval true if operation is successful.
- */
-bool HsCollectionState::openTaskSwitcher()
-{
-    return HsMenuService::launchTaskSwitcher();
-}
-
-/*!
- Slot connected to List widget.
- \param index Model index of the activated item.
- */
-void HsCollectionState::listItemActivated(const QModelIndex &index)
-{
-    HSMENUTEST_FUNC_ENTRY("HsCollectionState::listItemActivated");
-
-    QSharedPointer<const CaEntry> entry = mCollectionModel->entry(index);
-
-    if (entry->entryTypeName() == widgetTypeName()) {
-        EntryFlags flags = index.data(CaItemModel::FlagsRole).value<
-                               EntryFlags> ();
-        if (!(flags & UninstallEntryFlag)) {
-            machine()->postEvent(
-                HsMenuEventFactory::createPreviewHSWidgetEvent(
-                    entry->id(), entry->entryTypeName(), entry->attribute(
-                        widgetUriAttributeName()), entry->attribute(
-                        widgetLibraryAttributeName())));
-
-            const int itemId = index.data(CaItemModel::IdRole).toInt();
-            HsMenuService::touch(itemId);
-        }
-    } else {
-        QVariant data = mCollectionModel->data(index, CaItemModel::IdRole);
-        int errCode = HsMenuService::executeAction(data.toInt());
-        if (errCode != 0) {
-            createApplicationLaunchFailMessage(errCode,index.data(CaItemModel::IdRole).toInt());
-        }
-    }
-
-    mMenuView.setSearchPanelVisible(false);
-    HSMENUTEST_FUNC_EXIT("HsCollectionState::listItemActivated");
-}
+    disconnect(mBackKeyAction, SIGNAL(triggered()),
+               static_cast<HsBaseViewState*>(this), SLOT(openAppLibrary()));
 
-/*!
- Handles long-item-pressed event in all apps view by showing context menu
- \param item the event pertains to
- \param coords press point coordinates.
- \retval void
- */
-void HsCollectionState::listItemLongPressed(HbAbstractViewItem *item,
-        const QPointF &coords)
-{
-    HSMENUTEST_FUNC_ENTRY("HsCollectionState::listItemLongPressed");
-
-    EntryFlags flags = item->modelIndex().data(CaItemModel::FlagsRole).value<
-                       EntryFlags> ();
-
-    if (!(flags & UninstallEntryFlag)) {
-        // create context menu
-        mContextMenu = new HbMenu();
-
-        HbAction *addShortcutAction = mContextMenu->addAction(hbTrId(
-                                          "txt_applib_menu_add_to_home_screen"));
-        addShortcutAction->setData(AddToHomeScreenContextAction);
-        HbAction *addToCollection = mContextMenu->addAction(hbTrId(
-                                        "txt_applib_menu_add_to_collection"));
-        addToCollection->setData(AddToCollectionContextAction);
-        HbAction *removeAction(NULL);
-        HbAction *uninstallAction(NULL);
-        HbAction *appSettingsAction(NULL);
-        HbAction *appDetailsAction(NULL);
-        // we do not add remove option in locked collection
-        // check conditions and hide irrelevant menu items
-        EntryFlags rootFlags =
-            mCollectionModel->root().data(CaItemModel::FlagsRole).value<
-            EntryFlags> ();
-
-        if (rootFlags & RemovableEntryFlag) {
-            removeAction = mContextMenu->addAction(
-                               hbTrId("txt_applib_menu_remove_from_collection"));
-            removeAction->setData(RemoveFromCollectionContextAction);
-        }
-
-        if ((flags & RemovableEntryFlag)) {
-            uninstallAction = mContextMenu->addAction(hbTrId("txt_common_menu_delete"));
-            uninstallAction->setData(UninstallContextAction);
-        }
-        QSharedPointer<const CaEntry> entry = mCollectionModel->entry(item->modelIndex());
-
-        if (!(entry->attribute(appSettingsPlugin()).isEmpty())) {
-            appSettingsAction = mContextMenu->addAction(hbTrId(
-                                                    "txt_common_menu_settings"));
-            appSettingsAction->setData(AppSettingContextAction);
-        }
-    
-        if (!(entry->attribute(componentIdAttributeName()).isEmpty()) &&
-                (flags & RemovableEntryFlag) ) {
-            appDetailsAction = mContextMenu->addAction(hbTrId(
-                                                    "txt_common_menu_details"));
-            appDetailsAction->setData(AppDetailsContextAction);
-        }
-        mContextModelIndex = item->modelIndex();
-        mContextMenu->setPreferredPos(coords);
-        mContextMenu->setAttribute(Qt::WA_DeleteOnClose);
-        mContextMenu->open(this, SLOT(contextMenuAction(HbAction*)));
-    }
-
-    HSMENUTEST_FUNC_EXIT("HsCollectionState::listItemLongPressed");
+    disconnect(mMenuView.data(),
+               SIGNAL(activated(QModelIndex)),
+               static_cast<HsBaseViewState*>(this),
+               SLOT(launchItem(QModelIndex)));
+    disconnect(mMenuView.data(),
+            SIGNAL(activated(QModelIndex)),
+            mMenuView.data(),
+            SLOT(hideSearchPanel()));
+    disconnect(mMenuView.data(),
+               SIGNAL(longPressed(HbAbstractViewItem *, QPointF)),
+               static_cast<HsBaseViewState*>(this),
+               SLOT(showContextMenu(HbAbstractViewItem *, QPointF)));
 }
 
 /*!
@@ -475,7 +330,7 @@
  */
 void HsCollectionState::contextMenuAction(HbAction *action)
 {
-    HsContextAction command = 
+    HsContextAction command =
         static_cast<HsContextAction>(action->data().toInt());
 
     const int itemId = mContextModelIndex.data(CaItemModel::IdRole).toInt();
@@ -486,8 +341,8 @@
             break;
         case AddToCollectionContextAction:
             machine()->postEvent(
-                HsMenuEventFactory::createAddAppsFromCallectionViewEvent(
-                    mCollectionId, itemId, mCollectionsSortAttribute));
+                HsMenuEventFactory::createAddAppsFromCollectionViewEvent(
+                    mCollectionId, itemId));
             break;
         case UninstallContextAction:
             machine()->postEvent(
@@ -499,66 +354,68 @@
                 HsMenuEventFactory::createRemoveAppFromCollectionEvent(
                     itemId, mCollectionId));
             break;
-        case AppSettingContextAction: 
+        case AppSettingContextAction:
             machine()->postEvent(
                 HsMenuEventFactory::createAppSettingsViewEvent(itemId));
             break;
-        case AppDetailsContextAction: 
+        case AppDetailsContextAction:
             machine()->postEvent(
                 HsMenuEventFactory::createAppDetailsViewEvent(itemId));
-            break;                 
+            break;
         default:
             break;
     }
-                                    
-    mMenuView.setSearchPanelVisible(false);
+
+    mMenuView->setSearchPanelVisible(false);
 }
 
 /*!
  Handles button visibility
-  \param empty if true set empty text label or button to add entries to collection
+  \param empty if true set empty text label or button to add entries to collection.
  */
 void HsCollectionState::handleEmptyChange(bool empty)
 {
     EntryFlags flags =
-        mCollectionModel->root().data(CaItemModel::FlagsRole).value<
+        mModel->root().data(CaItemModel::FlagsRole).value<
         EntryFlags> ();
 
     if (empty){
         if (flags & RemovableEntryFlag){
-            mMenuView.setContext(HsCollectionContext,HsButtonContext);
+            mMenuView->setContext(HsCollectionContext,HsButtonContext);
         } else {
-            mMenuView.setContext(HsCollectionContext,HsEmptyLabelContext);
+            mMenuView->setContext(HsCollectionContext,HsEmptyLabelContext);
         }
     } else {
-        mMenuView.setContext(HsCollectionContext,HsItemViewContext);
+        mMenuView->setContext(HsCollectionContext,HsItemViewContext);
     }
+    setMenuOptions();
 }
 
 
 /*!
- Handles lock serch button
-  \param lock if true lock search button
+ Handles lock search button
+  \param lock if true lock search button.
  */
 void HsCollectionState::lockSearchButton(bool lock)
 {
-    mMenuView.disableSearch(lock);
+    mMenuView->disableSearch(lock);
 }
 
 
 /*!
  Menu add applications action slot
-   \param addApps if true create event for add enties to collection. Parametr use by toggled from HbPushButton
+   \param addApps if true create event for add enties to collection.
+   Parametr use by toggled from HbPushButton
  */
 void HsCollectionState::addAppsAction(bool addApps)
 {
     // Add applications
     if (addApps) {
-        mMenuView.collectionButton()->setChecked(false);
+        mMenuView->collectionButton()->setChecked(false);
         machine()->postEvent(
-            HsMenuEventFactory::createAddAppsFromCallectionViewEvent(
+            HsMenuEventFactory::createAddAppsFromCollectionViewEvent(
                 mCollectionId));
-    }    
+    }
 }
 
 /*!
@@ -567,8 +424,8 @@
 void HsCollectionState::addCollectionShortcutToHomeScreenAction()
 {
     machine()->postEvent(HsMenuEventFactory::createAddToHomeScreenEvent(
-                             mCollectionId, mMenuMode.getHsMenuMode(), 
-                             mMenuMode.getHsToken()));
+                             mCollectionId, mMenuMode->getHsMenuMode(),
+                             mMenuMode->getHsToken()));
 }
 
 /*!
@@ -590,40 +447,79 @@
 }
 
 /*!
- Menu softkey back action slot
- */
-void HsCollectionState::backSteppingAction()
-{
-    machine()->postEvent(HsMenuEventFactory::createOpenAppLibraryEvent());
-}
-
-/*!
  Updates label
  */
 void HsCollectionState::updateLabel()
 {
     HSMENUTEST_FUNC_ENTRY("HsCollectionState::updateLabel");
-    if (mCollectionModel) {
-        mMenuView.viewLabel()->setHeading(
-            mCollectionModel->root().data(Qt::DisplayRole).toString());
+    if (mModel) {
+        mMenuView->viewLabel()->setHeading(
+            mModel->root().data(Qt::DisplayRole).toString());
     }
     HSMENUTEST_FUNC_EXIT("HsCollectionState::updateLabel");
 }
 
 /*!
   Triggers event so that a state adding to Home Screen is reached
-  \param index of an item to be added to homescreen
+  \param index of an item to be added to homescreen.
   \retval void
  */
 void HsCollectionState::addElementToHomeScreen(const QModelIndex &index)
 {
-    QSharedPointer<const CaEntry> entry = mCollectionModel->entry(index);
+    QSharedPointer<const CaEntry> entry = mModel->entry(index);
 
     QMap<QString, QString> attributes = entry->attributes();
 
     machine()->postEvent(
         HsMenuEventFactory::createAddToHomeScreenEvent(
-            entry->id(), mMenuMode.getHsMenuMode(), mMenuMode.getHsToken()));
+            entry->id(), mMenuMode->getHsMenuMode(), mMenuMode->getHsToken()));
+}
+
+/*!
+ Method seting context menu options.
+ */
+void HsCollectionState::setContextMenuOptions(HbAbstractViewItem *item, EntryFlags flags)
+{
+    HbAction *addShortcutAction = mContextMenu->addAction(hbTrId(
+                                      "txt_applib_menu_add_to_home_screen"));
+    addShortcutAction->setData(AddToHomeScreenContextAction);
+    HbAction *addToCollection = mContextMenu->addAction(hbTrId(
+                                    "txt_applib_menu_add_to_collection"));
+    addToCollection->setData(AddToCollectionContextAction);
+    HbAction *removeAction(NULL);
+    HbAction *uninstallAction(NULL);
+    HbAction *appSettingsAction(NULL);
+    HbAction *appDetailsAction(NULL);
+    // we do not add remove option in locked collection
+    // check conditions and hide irrelevant menu items
+    EntryFlags rootFlags =
+        mModel->root().data(CaItemModel::FlagsRole).value<
+        EntryFlags> ();
+
+    if (rootFlags & RemovableEntryFlag) {
+        removeAction = mContextMenu->addAction(
+                           hbTrId("txt_applib_menu_remove_from_collection"));
+        removeAction->setData(RemoveFromCollectionContextAction);
+    }
+
+    if ((flags & RemovableEntryFlag)) {
+        uninstallAction = mContextMenu->addAction(hbTrId("txt_common_menu_delete"));
+        uninstallAction->setData(UninstallContextAction);
+    }
+    QSharedPointer<const CaEntry> entry = mModel->entry(item->modelIndex());
+
+    if (!(entry->attribute(appSettingsPlugin()).isEmpty())) {
+        appSettingsAction = mContextMenu->addAction(hbTrId(
+                                                "txt_common_menu_settings"));
+        appSettingsAction->setData(AppSettingContextAction);
+    }
+
+    if (!(entry->attribute(componentIdAttributeName()).isEmpty()) &&
+            (flags & RemovableEntryFlag) ) {
+        appDetailsAction = mContextMenu->addAction(hbTrId(
+                                                "txt_common_menu_details"));
+        appDetailsAction->setData(AppDetailsContextAction);
+    }
 }
 
 /*!
@@ -633,7 +529,7 @@
 void HsCollectionState::latestOnTopMenuAction()
 {
     mSortAttribute = LatestOnTopHsSortAttribute;
-    mCollectionModel->setSort(mSortAttribute);
+    mModel->setSort(mSortAttribute);
     emit sortOrderChanged(mSortAttribute);
 }
 
@@ -644,16 +540,29 @@
 void HsCollectionState::oldestOnTopMenuAction()
 {
     mSortAttribute = OldestOnTopHsSortAttribute;
-    mCollectionModel->setSort(mSortAttribute);
+    mModel->setSort(mSortAttribute);
     emit sortOrderChanged(mSortAttribute);
 }
 
 /*!
-  Slot for setting all collections sort order
-  \param sortOrder all collections sort order
+  A Slot called when an arrange operation
+  is invoked for a static collection.
  */
-void HsCollectionState::collectionsSortOrder(
-    HsSortAttribute sortOrder)
+void HsCollectionState::createArrangeCollection()
 {
-    mCollectionsSortAttribute = sortOrder;
+    // Arrange collection via the Arrange view
+    int topItemId(0);
+
+    const QList<HbAbstractViewItem *> array =
+        mMenuView->listView()->visibleItems();
+
+    if (array.count() >= 1) {
+        QModelIndex idx = array[0]->modelIndex();
+        topItemId = idx.data(CaItemModel::IdRole).toInt();
+    }
+
+    machine()->postEvent(
+        HsMenuEventFactory::createArrangeCollectionEvent(
+            topItemId,
+            mCollectionId));
 }
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsinstalledappsstate.cpp	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsinstalledappsstate.cpp	Fri Jul 09 14:36:01 2010 +0300
@@ -15,26 +15,23 @@
  *
  */
 
-#include <qstatemachine.h>
+#include <QStateMachine>
+#include <HbView>
 #include <HbGroupBox>
-#include <hbview.h>
-#include <hblistview.h>
-#include <hbaction.h>
-#include <hbmenu.h>
-#include <hbabstractviewitem.h>
-#include <hsmenueventfactory.h>
-#include <hbinstance.h>
+#include <HbListView>
+#include <HbAction>
+#include <HbMenu>
+#include <HbAbstractViewItem>
+
+#include <cadefs.h>
 #include <caentry.h>
-#include <hbsearchpanel.h>
 
+#include "hsapp_defs.h"
+#include "hsmenueventfactory.h"
 #include "hsmenuitemmodel.h"
-#include "hsmenuviewbuilder.h"
-#include "cadefs.h"
 #include "hsinstalledappsstate.h"
 #include "hsaddappstocollectionstate.h"
-#include "hsapp_defs.h"
 #include "hsmenumodetransition.h"
-#include "hsmainwindow.h"
 
 /*!
  \class HsInstalledAppsState
@@ -46,45 +43,17 @@
  */
 
 /*!
- \var HsInstalledAppsState::mMenuView
- The View widget.
- Own.
- */
-
-/*!
- \var HsInstalledAppsState::mInstalledAppsModel
- Item Model for the List.
- Own.
- */
-
-/*!
- \var HsInstalledAppsState::mSecondarySoftkeyAction
- Secondary Softkey action.
- Backstepping functionality.
- Own.
- */
-
-/*!
- \var HsInstalledAppsState::mOldNavigationAction
- Old navigation icon.
- Not own.
- */
-
-/*!
  Constructor.
  \param menuViewBuilder Menu view builder.
+ \param mainWindow main window wrapper.
  \param parent Owner.
  */
 HsInstalledAppsState::HsInstalledAppsState(HsMenuViewBuilder &menuViewBuilder,
         HsMainWindow &mainWindow,
         QState *parent):
-    HsBaseViewState(parent),
-    mMenuView(menuViewBuilder, HsInstalledAppsContext),
-    mInstalledAppsModel(0),
-    mSecondarySoftkeyAction(new HbAction(Hb::BackNaviAction, this)),
-    mMainWindow(mainWindow),
-    mContextModelIndex(),mContextMenu(0)
+    HsBaseViewState(mainWindow, parent)
 {
+    initialize(menuViewBuilder, HsInstalledAppsContext);
     construct();
 }
 
@@ -98,16 +67,8 @@
     const QString parentName =
         parent() != 0 ? parent()->objectName() : QString("");
     setObjectName(parentName + "/installedappsstate");
-    connect(this, SIGNAL(entered()),SLOT(stateEntered()));
-    connect(this, SIGNAL(exited()),SLOT(stateExited()));
 
-    connect(mSecondarySoftkeyAction, SIGNAL(triggered()),
-            SLOT(backAction()));
-    mMenuView.view()->
-    setNavigationAction(mSecondarySoftkeyAction);
-
-
-    setMenuOptions();
+    connect(mBackKeyAction, SIGNAL(triggered()), SLOT(openAppLibrary()));
 
     HSMENUTEST_FUNC_EXIT("HsInstalledAppsState::construct");
 }
@@ -123,21 +84,43 @@
 
     mOptions->addAction(hbTrId("txt_applib_opt_task_switcher"),
                         this, SLOT(openTaskSwitcher()));
+    mOptions->addAction(hbTrId("txt_applib_opt_installation_log"),
+                        this, SLOT(openInstallationLog()));
 
-    mMenuView.view()->setMenu(mOptions);
+    mMenuView->view()->setMenu(mOptions);
     HSMENUTEST_FUNC_EXIT("HsInstalledAppsState::setMenuOptions");
 }
 
 /*!
+ Method seting context menu options.
+ \param item the context menu is built for.
+ \param flags of the \item.
+ */
+void HsInstalledAppsState::setContextMenuOptions(HbAbstractViewItem *item, EntryFlags flags)
+{
+    HbAction *uninstallAction = mContextMenu->addAction(
+                                hbTrId("txt_common_menu_delete"));
+    HbAction *appDetailsAction(NULL);
+    uninstallAction->setData(UninstallContextAction);
+
+    QSharedPointer<const CaEntry> entry = mModel->entry(item->modelIndex());
+
+    if (!(entry->attribute(componentIdAttributeName()).isEmpty()) &&
+            (flags & RemovableEntryFlag) ) {
+        appDetailsAction = mContextMenu->addAction(hbTrId(
+                                                "txt_common_menu_details"));
+        appDetailsAction->setData(AppDetailsContextAction);
+    }
+}
+
+
+/*!
  Destructor.
  */
 HsInstalledAppsState::~HsInstalledAppsState()
 {
-    mMenuView.inactivate();
-    mMenuView.setModel(NULL);
-    mMenuView.view()->setNavigationAction(NULL);
-
-    delete mInstalledAppsModel;
+    mMenuView->inactivate();
+    mMenuView->view()->setNavigationAction(NULL);
 }
 
 /*!
@@ -149,30 +132,26 @@
     qDebug("AllAppsState::stateEntered()");
     HSMENUTEST_FUNC_ENTRY("HsInstalledAppsState::stateEntered");
 
-    mMainWindow.setCurrentView(mMenuView);
-    mMenuView.activate();
-
-    if (!mInstalledAppsModel) {
-        mInstalledAppsModel
+    HsBaseViewState::stateEntered();
+    setMenuOptions();
+    if (!mModel) {
+        mModel
         = HsMenuService::getInstalledModel(AscendingNameHsSortAttribute);
-        mMenuView.setModel(mInstalledAppsModel);
+        mMenuView->setModel(mModel);
     }
 
-    if (mInstalledAppsModel->rowCount() == 0){
-        mMenuView.setContext(HsInstalledAppsContext,HsEmptyLabelContext);
+    if (mModel->rowCount() == 0){
+        mMenuView->setContext(HsInstalledAppsContext,HsEmptyLabelContext);
         }
 
-    mMenuView.listView()->scrollTo(
-        mInstalledAppsModel->index(0));
+    mMenuView->listView()->scrollTo(
+        mModel->index(0));
 
-    connect(&mMenuView,
-            SIGNAL(activated(QModelIndex)),
-            SLOT(listItemActivated(QModelIndex)));
-    connect(&mMenuView,
+    connect(mMenuView.data(),
             SIGNAL(longPressed(HbAbstractViewItem *, QPointF)),
-            SLOT(listItemLongPressed(HbAbstractViewItem *, QPointF)));
+            SLOT(showContextMenu(HbAbstractViewItem *, QPointF)));
 
-    connect(mInstalledAppsModel, SIGNAL(empty(bool)),this,
+    connect(mModel, SIGNAL(empty(bool)),this,
             SLOT(setEmptyLabelVisibility(bool)));
 
     HSMENUTEST_FUNC_EXIT("HsInstalledAppsState::stateEntered");
@@ -185,23 +164,13 @@
 {
     HSMENUTEST_FUNC_ENTRY("HsInstalledAppsState::stateExited");
 
-    disconnect(mInstalledAppsModel, SIGNAL(empty(bool)),this,
+    disconnect(mModel, SIGNAL(empty(bool)),this,
                SLOT(setEmptyLabelVisibility(bool)));
 
-    mMenuView.setSearchPanelVisible(false);
-
-    disconnect(&mMenuView,
-            SIGNAL(activated(QModelIndex)), this,
-            SLOT(listItemActivated(QModelIndex)));
-    disconnect(&mMenuView,
+    disconnect(mMenuView.data(),
             SIGNAL(longPressed(HbAbstractViewItem *, QPointF)), this,
-            SLOT(listItemLongPressed(HbAbstractViewItem *, QPointF)));
-
-    mMenuView.inactivate();
+            SLOT(showContextMenu(HbAbstractViewItem *, QPointF)));
 
-    if (mContextMenu)
-        mContextMenu->close();
-    
     HsBaseViewState::stateExited();
     
     HSMENUTEST_FUNC_EXIT("HsInstalledAppsState::stateExited");
@@ -209,89 +178,30 @@
 }
 
 /*!
- Handles button visibility
+ Handles button visibility.
+ \param visibility indicates whether show or not to show 'empty' label.
  */
 void HsInstalledAppsState::setEmptyLabelVisibility(bool visibility)
 {
     if(visibility){
-        mMenuView.setContext(HsInstalledAppsContext,HsEmptyLabelContext);
+        mMenuView->setContext(HsInstalledAppsContext,HsEmptyLabelContext);
     } else {
-        mMenuView.setContext(HsInstalledAppsContext,HsItemViewContext);
+        mMenuView->setContext(HsInstalledAppsContext,HsItemViewContext);
     }
 }
 
 /*!
- Open task switcher.
- \retval true if operation is successful.
+ Open installation log.
  */
-bool HsInstalledAppsState::openTaskSwitcher()
+void HsInstalledAppsState::openInstallationLog()
 {
-    return HsMenuService::launchTaskSwitcher();
+    machine()->postEvent(
+        HsMenuEventFactory::createInstallationLogEvent());
 }
 
 /*!
- Method invoked when a list item is activated.
- \param index indec of activated item.
- */
-#ifdef COVERAGE_MEASUREMENT
-#pragma CTC SKIP
-#endif //COVERAGE_MEASUREMENT
-void HsInstalledAppsState::listItemActivated(const QModelIndex &/*index*/)
-{
-    //no implementation yet
-}
-#ifdef COVERAGE_MEASUREMENT
-#pragma CTC ENDSKIP
-#endif //COVERAGE_MEASUREMENT
-
-/*!
- Handles long-item-pressed event in all apps view by showing context menu
- \param item the event pertains to
- \param coords press point coordinates.
- */
-#ifdef COVERAGE_MEASUREMENT
-#pragma CTC SKIP
-#endif //COVERAGE_MEASUREMENT
-void HsInstalledAppsState::listItemLongPressed(HbAbstractViewItem *item,
-        const QPointF &coords)
-{
-    HSMENUTEST_FUNC_ENTRY("HsInstalledAppsState::listItemLongPressed");
-
-    EntryFlags flags = item->modelIndex().data(
-                           CaItemModel::FlagsRole).value<EntryFlags> ();
-    if (!(flags & UninstallEntryFlag)) {
-        // create context menu
-        mContextMenu = new HbMenu();
-
-        HbAction *uninstallAction = mContextMenu->addAction(
-                                    hbTrId("txt_common_menu_delete"));
-        HbAction *appDetailsAction(NULL);
-        uninstallAction->setData(UninstallContextAction);
-    
-        QSharedPointer<const CaEntry> entry = mInstalledAppsModel->entry(item->modelIndex());
-    
-        if (!(entry->attribute(componentIdAttributeName()).isEmpty()) &&
-                (flags & RemovableEntryFlag) ) {
-            appDetailsAction = mContextMenu->addAction(hbTrId(
-                                                    "txt_common_menu_details"));
-            appDetailsAction->setData(AppDetailsContextAction);
-        }
-
-        mContextModelIndex = item->modelIndex();
-        mContextMenu->setPreferredPos(coords);
-        mContextMenu->setAttribute(Qt::WA_DeleteOnClose);
-        mContextMenu->open(this, SLOT(contextMenuAction(HbAction*)));
-    }
-    
-    
-    HSMENUTEST_FUNC_EXIT("HsInstalledAppsState::listItemLongPressed");
-}
-#ifdef COVERAGE_MEASUREMENT
-#pragma CTC ENDSKIP
-#endif //COVERAGE_MEASUREMENT
-
-/*!
- Handles context menu actions
+ Handles context menu actions.
+ \param action to handle.
  */
 void HsInstalledAppsState::contextMenuAction(HbAction *action)
 {    
@@ -313,19 +223,5 @@
         default:
             break;            
     }
-    mMenuView.setSearchPanelVisible(false);
+    mMenuView->setSearchPanelVisible(false);
 }
-
-/*!
- Slot invoked when a back action is triggered.
- */
-#ifdef COVERAGE_MEASUREMENT
-#pragma CTC SKIP
-#endif //COVERAGE_MEASUREMENT
-void HsInstalledAppsState::backAction()
-{
-    machine()->postEvent(HsMenuEventFactory::createOpenAppLibraryEvent());
-}
-#ifdef COVERAGE_MEASUREMENT
-#pragma CTC ENDSKIP
-#endif //COVERAGE_MEASUREMENT
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hslistviewitem.cpp	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hslistviewitem.cpp	Fri Jul 09 14:36:01 2010 +0300
@@ -62,17 +62,23 @@
         if (!progress) {
             progress = new HbProgressBar(this);
             progress->setRange(0, 100);
+            HbEffect::disable(progress);
             repolish();
         }
         int progresVal = modelIndex().data(
                 CaItemModel::UninstalRole).toInt();
         progress->setProgressValue(progresVal);
         HbStyle::setItemName(progress, "progress");         
+        if (!progress->isVisible()) {
+            progress->setVisible(!progress->isVisible());
+            repolish();
+        }    
     } else if (progress) {       
         HbStyle::setItemName(progress, "");
-        delete progress;
-        progress = 0;
-        repolish();
+        if (progress->isVisible()) {
+            progress->setVisible(!progress->isVisible());
+            repolish();
+        } 
     }
     // hide text-2 if we have to 
     foreach (QGraphicsItem * item, this->childItems()) {
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsmainwindow.cpp	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsmainwindow.cpp	Fri Jul 09 14:36:01 2010 +0300
@@ -21,11 +21,11 @@
 #include "hsmainwindow.h"
 #include "hsmenuview.h"
 
-#include <qservicemanager.h>
+
 /*!
  Constructor
  */
-QTM_USE_NAMESPACE
+
 
 
 /*
@@ -36,7 +36,7 @@
  */
 
 
-HsMainWindow::HsMainWindow() : mActivityClient(NULL)
+HsMainWindow::HsMainWindow() 
 {
 }
 
@@ -55,9 +55,6 @@
 {
     HbMainWindow *const hbW(
         HbInstance::instance()->allMainWindows().value(0));
-    
-    connect( hbW, SIGNAL(viewReady()), SIGNAL(viewIsReady()),
-        Qt::UniqueConnection );
 
     HbView *const view = menuView.view();
     
@@ -66,53 +63,3 @@
     }
     hbW->setCurrentView(view);
 }
-
-
-/*!
- Grabs screenshot from actual main window
- \retval QPixmap& containing screenshot
-*/
-QPixmap HsMainWindow::grabScreenshot()
-	{
-	HbMainWindow *const hbW(
-	    HbInstance::instance()->allMainWindows().value(0));
-	return QPixmap::grabWidget(hbW, hbW->rect()); 
-	}
-
-/*!
- Saves applib activity with current view screenshot
-*/
-void HsMainWindow::saveActivity()
-{
-#ifdef Q_OS_SYMBIAN
-
-    if (!mActivityClient) {
-        QServiceManager serviceManager;
-        mActivityClient = serviceManager.loadInterface("com.nokia.qt.activities.ActivityClient");
-        if (!mActivityClient) {
-            qWarning("Cannot initialize critical com.nokia.qt.activities.ActivityClient service.");
-        }
-    }
-
-    if (mActivityClient) {
-        bool retok;
-        bool ok = QMetaObject::invokeMethod(mActivityClient, "removeActivity",
-            Q_RETURN_ARG(bool, retok), Q_ARG(QString, appLibActivity()));
-        if (!ok) {
-            qWarning("remove appLibActivity failed");
-        }
-
-        QVariant variant;
-        QVariantHash metadata;
-        metadata.insert("screenshot", grabScreenshot());
-
-        ok = QMetaObject::invokeMethod(mActivityClient, "addActivity", Q_RETURN_ARG(bool, retok),
-            Q_ARG(QString, appLibActivity() ), Q_ARG(QVariant, QVariant(variant)),
-            Q_ARG(QVariantHash, metadata));
-        if (!ok) {
-            qWarning("add appLibActivity failed");
-        }
-    }
-#endif//Q_OS_SYMBIAN   
-}
-
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsmenuview.cpp	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsmenuview.cpp	Fri Jul 09 14:36:01 2010 +0300
@@ -28,7 +28,7 @@
 #include <HbToolBar>
 #include <HbView>
 #include <HbToolBarExtension>
-#include <HbStaticVkbHost>
+#include <HbShrinkingVkbHost>
 
 #include "hsallappsstate.h"
 #include "hsallcollectionsstate.h"
@@ -65,7 +65,7 @@
     mListView(NULL),
     mViewLabel(NULL),
     mSearchListView(NULL),
-    mSearchPanel(NULL), 
+    mSearchPanel(NULL),
     mVkbHost(NULL)
 {
     mBuilder.setOperationalContext(HsItemViewContext);
@@ -83,9 +83,7 @@
     mProxyModel->setFilterKeyColumn(1);
     mProxyModel->setSortRole(CaItemModel::TextRole);
 
-    mVkbHost = new HbStaticVkbHost(mView);
-    connect(mVkbHost, SIGNAL(keypadOpened()), this, SLOT(vkbOpened()));
-    connect(mVkbHost, SIGNAL(keypadClosed()), this, SLOT(vkbClosed()));
+    mVkbHost.reset(new HbShrinkingVkbHost(mView));
 
     connect(mListView,
             SIGNAL(activated(QModelIndex)),
@@ -367,27 +365,17 @@
  */
 void HsMenuView::findItem(QString criteriaStr)
 {
-    qDebug
-    () << QString("hsmenuview::findItem: %1").arg(criteriaStr);
+   qDebug() << QString("hsmenuview::findItem: %1").arg(criteriaStr);
     HSMENUTEST_FUNC_ENTRY("hsmenuview::findItem");
 
-    if ("" != criteriaStr) {
-        mProxyModel->invalidate();
-        mProxyModel->setSourceModel(mListView->model());
-        mProxyModel->setFilterRegExp(QRegExp(
-                QString("(^|\\b)%1").arg(criteriaStr), Qt::CaseInsensitive));
-        mSearchListView->scrollTo(mProxyModel->index(0,0),
-                                  HbAbstractItemView::PositionAtTop);
-    } else {
-        mProxyModel->setFilterRegExp(QRegExp(QString(".*"),
-                                             Qt::CaseInsensitive, QRegExp::RegExp));
+    mProxyModel->invalidate();
+    mProxyModel->setSourceModel(mListView->model());
+    mProxyModel->setFilterRegExp(QRegExp(
+            QString("(^|\\b)%1").arg(criteriaStr), Qt::CaseInsensitive));
 
-        // scroll to first item in model
-        mSearchListView->scrollTo(
-            mProxyModel->index(0, 0),
-
-            HbAbstractItemView::PositionAtTop);
-    }
+    mSearchListView->scrollTo(mProxyModel->index(0,0),
+                              HbAbstractItemView::PositionAtTop);
+    
     HSMENUTEST_FUNC_EXIT("hsmenuview::findItem");
 }
 
@@ -440,7 +428,6 @@
 
     mSearchListView = NULL;
     mSearchPanel = NULL;
-    vkbClosed();
     HSMENUTEST_FUNC_EXIT("hsmenuview::searchFinished");
 }
 
@@ -493,21 +480,3 @@
     disconnect(mBuilder.searchAction(), SIGNAL(triggered()),
                this, SLOT(showSearchPanel()));
 }
-
-
-/*!
- change size of view when VKB is opened
- */
-void HsMenuView::vkbOpened()
-{
-    mView->setMaximumHeight(mVkbHost->applicationArea().height());   
-}
-
-/*!
- change size of view when VKB is closed
- */
-void HsMenuView::vkbClosed()
-{
-     mView->setMaximumHeight(-1);   
-}
-
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsmenuviewbuilder.cpp	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsmenuviewbuilder.cpp	Fri Jul 09 14:36:01 2010 +0300
@@ -63,6 +63,8 @@
 
         lineEdit->setText("");
         lineEdit->setFocus();
+        lineEdit->setInputMethodHints(Qt::ImhNoPredictiveText | 
+            Qt::ImhNoAutoUppercase);
     } 
 
 }
--- a/homescreenapp/stateplugins/hshomescreenstateplugin/inc/hsidlestate.h	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/inc/hsidlestate.h	Fri Jul 09 14:36:01 2010 +0300
@@ -44,6 +44,9 @@
 #endif
 
 class HsWidgetHost;
+class HsPage;
+class HsMessageBoxWrapper;
+class HsPropertyAnimationWrapper;
 
 class HsIdleState : public QState
 {
@@ -60,6 +63,7 @@
     void event_moveScene();
     void event_selectWallpaper();
     void event_addPage();
+    void event_preRemovePage();
     void event_removePage();
     void event_toggleConnection();
 
@@ -78,8 +82,6 @@
     void addPageToScene(int pageIndex);    
     void updateZoneAnimation();
     void showTrashBin();
-    void removeActivePage();
-    void deleteZoneAnimation();
     QList<QRectF> createInactiveWidgetRects();
     void updatePagePresentationToWidgetSnap();
     void resetSnapPosition();
@@ -117,6 +119,8 @@
     void action_moveScene_moveToNearestPage();
     void action_moveScene_disconnectGestureHandlers();    
     void action_addPage_addPage();
+    void action_preRemovePage_showQuery();
+    void action_removePage_startRemovePageAnimation();
     void action_removePage_removePage();
     void action_toggleConnection_toggleConnection();
     void action_idle_setupTitle();
@@ -136,18 +140,17 @@
     bool openTaskSwitcher();
     void zoneAnimationFinished();
     void pageChangeAnimationFinished();
-    void onRemovePageConfirmationOk();
     void onVerticalSnapLineTimerTimeout();
     void onHorizontalSnapLineTimerTimeout();
     void onActivePageChanged();
-
+   
 private:
     HbAction *mNavigationAction;
     HsIdleWidget *mUiWidget;  
     HsTitleResolver *mTitleResolver;
     QPropertyAnimation *mZoneAnimation;
     bool mAllowZoneAnimation;
-    QPropertyAnimation *mPageChangeAnimation;
+    HsPropertyAnimationWrapper *mPageChangeAnimation;
     HbContinuousFeedback *mContinuousFeedback;
     bool mTrashBinFeedbackAlreadyPlayed;    
     QPointF mPageHotSpot;
@@ -157,12 +160,13 @@
     QPointer<HbMenu> mSceneMenu;
     HsWidgetPositioningOnWidgetMove::Result mSnapResult;
     HsWidgetPositioningOnWidgetMove::Result mPreviousSnapResult;
-    qreal mSnapBorderGap;
     QTimer mVerticalSnapLineTimer;
-    QTimer mHorizontalSnapLineTimer;
+    QTimer mHorizontalSnapLineTimer; 
 #ifdef Q_OS_SYMBIAN    
     XQSettingsManager *mSettingsMgr;
 #endif    
+    HsMessageBoxWrapper *mMessageBoxWrapper;
+
     HOMESCREEN_TEST_FRIEND_CLASS(HomeScreenStatePluginTest)
 };
 
--- a/homescreenapp/stateplugins/hshomescreenstateplugin/src/hsidlestate.cpp	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/src/hsidlestate.cpp	Fri Jul 09 14:36:01 2010 +0300
@@ -53,6 +53,8 @@
 #include "hsmenuservice.h"
 #include "hsgui.h"
 #include "hsconfiguration.h"
+#include "hsmessageboxwrapper.h"
+#include "hspropertyanimationwrapper.h"
 
 // Helper macros for connecting state entry and exit actions.
 #define ENTRY_ACTION(state, action) \
@@ -92,10 +94,10 @@
     const char hsLocTextId_Confirmation_RemovePage[] = "txt_homescreen_info_page_and_content_will_be_remov";
 
     //Button in confirmation dialog while removing page with content
-    const char hsLocTextId_ConfirmationButton_Ok[] = "txt_homescreen_button_ok";
+    //const char hsLocTextId_ConfirmationButton_Ok[] = "txt_homescreen_button_ok";
 
     //Button in confirmation dialog while removing page with content
-    const char hsLocTextId_ConfirmationButton_Cancel[] = "txt_homescreen_button_cancel";
+    //const char hsLocTextId_ConfirmationButton_Cancel[] = "txt_homescreen_button_cancel";
 }
 
 /*!
@@ -114,7 +116,8 @@
 */
 HsIdleState::HsIdleState(QState *parent)
   : QState(parent),
-    mNavigationAction(0), mUiWidget(0),
+    mNavigationAction(0), 
+    mUiWidget(0),
     mTitleResolver(0),
     mZoneAnimation(0),
     mAllowZoneAnimation(false),
@@ -122,15 +125,16 @@
     mContinuousFeedback(0),
     mTrashBinFeedbackAlreadyPlayed(false),
     mDeltaX(0),
-    mSceneMenu(0),
-    mSnapBorderGap(0.0)
+    mSceneMenu(0)
 #ifdef Q_OS_SYMBIAN
     ,mSettingsMgr(0)
 #endif
+    ,mMessageBoxWrapper(0)
+    
 {
     setupStates();
     mTitleResolver = new HsTitleResolver(this);
-
+     
     // TODO: Uncomment when updated API available
     //mContinuousFeedback = new HbContinuousFeedback;
     //mContinuousFeedback->setContinuousEffect(HbFeedback::ContinuousSmooth);
@@ -145,7 +149,15 @@
 */
 HsIdleState::~HsIdleState()
 {
-    delete mZoneAnimation;
+    if (mZoneAnimation) {
+        mZoneAnimation->stop();
+        delete mZoneAnimation;
+    }
+    if (mPageChangeAnimation) {
+        mPageChangeAnimation->stop();
+        delete mPageChangeAnimation;
+    }
+    
     // TODO: Uncomment when updated API available
     //delete mContinuousFeedback;
 }
@@ -231,6 +243,7 @@
     HsWallpaperSelectionState *state_wallpaperSelectionState =
         new HsWallpaperSelectionState(this);
     QState *state_addPage = new QState(this);
+    QState *state_preRemovePage = new QState(this);
     QState *state_removePage = new QState(this);
     QState *state_toggleConnection = new QState(this);
 
@@ -239,7 +252,7 @@
     state_waitInput->addTransition(
         this, SIGNAL(event_addPage()), state_addPage);
     state_waitInput->addTransition(
-        this, SIGNAL(event_removePage()), state_removePage);
+        this, SIGNAL(event_preRemovePage()), state_preRemovePage);
     state_waitInput->addTransition(
         this, SIGNAL(event_toggleConnection()), state_toggleConnection);
     state_waitInput->addTransition(
@@ -259,8 +272,15 @@
         state_wallpaperSelectionState, SIGNAL(event_waitInput()), state_waitInput);
 
     state_addPage->addTransition(state_waitInput);
+    
+    state_preRemovePage->addTransition(
+        this,SIGNAL(event_removePage()),state_removePage);
+    
+    state_preRemovePage->addTransition(
+        this,SIGNAL(event_waitInput()),state_waitInput);
 
-    state_removePage->addTransition(state_waitInput);
+    state_removePage->addTransition(
+        this,SIGNAL(event_waitInput()),state_waitInput);
 
     state_toggleConnection->addTransition(state_waitInput);
 
@@ -299,8 +319,11 @@
     EXIT_ACTION(state_moveScene, action_moveScene_disconnectGestureHandlers)
     
     ENTRY_ACTION(state_addPage, action_addPage_addPage)
+    
+    ENTRY_ACTION(state_preRemovePage, action_preRemovePage_showQuery)
 
-    ENTRY_ACTION(state_removePage, action_removePage_removePage)
+    ENTRY_ACTION(state_removePage, action_removePage_startRemovePageAnimation)
+    EXIT_ACTION(state_removePage, action_removePage_removePage)
 
     ENTRY_ACTION(state_toggleConnection, action_toggleConnection_toggleConnection)
 }
@@ -319,13 +342,10 @@
 */
 void HsIdleState::startPageChangeAnimation(int targetPageIndex, int duration)
 {
-    if (!mPageChangeAnimation) {
-        mPageChangeAnimation = new QPropertyAnimation(mUiWidget, "sceneX");        
-    }
-    else if (mPageChangeAnimation->state() != QAbstractAnimation::Stopped) {
+    if (mPageChangeAnimation->isRunning()) {
         mPageChangeAnimation->stop();
     }        
-    
+    mPageChangeAnimation->disconnect(this);
     mPageChangeAnimation->setEndValue(pageLayerXPos(targetPageIndex));
     mPageChangeAnimation->setDuration(duration);
     connect(mPageChangeAnimation,
@@ -358,10 +378,6 @@
         return;
     }
 
-    if (!mZoneAnimation) {
-        mZoneAnimation = new QPropertyAnimation(mUiWidget, "sceneX");
-    }
-
     int bounceEffect = HSCONFIGURATION_GET(bounceEffect);
 
     if (isInLeftPageChangeZone()) {
@@ -374,7 +390,8 @@
 
     connect(mZoneAnimation,
             SIGNAL(finished()),
-            SLOT(zoneAnimationFinished()));
+            SLOT(zoneAnimationFinished()),
+            Qt::UniqueConnection);
     
     mZoneAnimation->start();
 }
@@ -426,26 +443,22 @@
 */
 void HsIdleState::updateZoneAnimation()
 {
-    if (isInPageChangeZone() && mAllowZoneAnimation) {
-        if (!mZoneAnimation && (!mPageChangeAnimation
-            || mPageChangeAnimation->state() == QAbstractAnimation::Stopped )) {
+    if (!mAllowZoneAnimation) {
+        mZoneAnimation->stop();
+    } else if (isInPageChangeZone()) {
+        // should we start it
+        if (mZoneAnimation->state() == QAbstractAnimation::Stopped &&
+            !mPageChangeAnimation->isRunning()) {
             startPageChangeZoneAnimation(HSCONFIGURATION_GET(pageChangeZoneAnimationDuration));
-        }
-    } else if (mZoneAnimation && !isInPageChangeZone()) {
-        if (mZoneAnimation->state() == QAbstractAnimation::Running) {
-            if (mZoneAnimation->direction() == QAbstractAnimation::Forward) {
-                mZoneAnimation->setDuration(HSCONFIGURATION_GET(pageChangeZoneReverseAnimationDuration));
-                mZoneAnimation->setDirection(QAbstractAnimation::Backward);
-            }
-        } else {
-            // Out of the page change zone. Delete animation.
-            deleteZoneAnimation();
-        }
-    } else if (!isInPageChangeZone()) {
-        if (mZoneAnimation) {
-            mZoneAnimation->stop();
-        }
-    }
+        } 
+    } else if (mZoneAnimation->state() == QAbstractAnimation::Running) {
+        // Not in zone, but still running     
+        if (mZoneAnimation->direction() == QAbstractAnimation::Forward){
+            // reverse
+            mZoneAnimation->setDuration(HSCONFIGURATION_GET(pageChangeZoneReverseAnimationDuration));
+            mZoneAnimation->setDirection(QAbstractAnimation::Backward);
+        } 
+    } 
 }
 
 /*!
@@ -470,43 +483,6 @@
 }
 
 /*!
-    Removes currently active page.
-*/
-void HsIdleState::removeActivePage()
-{
-    HsScene *scene = HsScene::instance();
-    HsPage *page = scene->activePage();
-
-    int pageIndex = scene->activePageIndex();
-
-    mUiWidget->removePage(pageIndex);
-    scene->removePage(page);
-    
-    if (page->wallpaper()) {
-        page->wallpaper()->remove();        
-    }
-    delete page;
-
-    pageIndex = pageIndex == 0 ? 0 : pageIndex - 1;
-    scene->setActivePageIndex(pageIndex);
-
-    startPageChangeAnimation(pageIndex, HSCONFIGURATION_GET(pageRemovedAnimationDuration));
-
-    mUiWidget->pageIndicator()->removeItem(pageIndex);
-    mUiWidget->setActivePage(pageIndex);
-    mUiWidget->showPageIndicator();
-}
-
-/*!
-    Deletes page change zone animation.
-*/
-void HsIdleState::deleteZoneAnimation()
-{
-    delete mZoneAnimation;
-    mZoneAnimation = NULL;
-}
-
-/*!
     If called for the first time, setups the idle view.
     Updates the soft key action and sets the idle view
     as the current view to the main window.
@@ -526,11 +502,16 @@
         idleView->setNavigationAction(mNavigationAction);
 
         HsGui::setIdleView(idleView);
-
-        if (mPageChangeAnimation) {
-            delete mPageChangeAnimation;
-            mPageChangeAnimation = NULL;
-        }
+        
+        delete mPageChangeAnimation;
+        mPageChangeAnimation = NULL;
+        mPageChangeAnimation = new HsPropertyAnimationWrapper;
+        mPageChangeAnimation->setTargetObject(mUiWidget);
+        mPageChangeAnimation->setPropertyName("sceneX"); 
+        delete mZoneAnimation;
+        mZoneAnimation = NULL;
+        mZoneAnimation = new QPropertyAnimation(mUiWidget, "sceneX");
+       
     }
 
     HsScene::mainWindow()->setCurrentView(idleView);
@@ -587,9 +568,6 @@
     mTitleResolver->disconnect(this);
 }
 
-#ifdef COVERAGE_MEASUREMENT
-#pragma CTC SKIP
-#endif //COVERAGE_MEASUREMENT
 /*!
 
 */
@@ -617,9 +595,6 @@
     mSceneMenu->setPreferredPos(mPageHotSpot);
     mSceneMenu->open();
 }
-#ifdef COVERAGE_MEASUREMENT
-#pragma CTC ENDSKIP
-#endif //COVERAGE_MEASUREMENT
 
 void HsIdleState::onPagePanStarted(QGestureEvent *event)
 {
@@ -673,28 +648,29 @@
  
 void HsIdleState::onWidgetMoveUpdated(const QPointF &scenePos, HsWidgetHost *widget)
 {
-    HsScene *scene = HsScene::instance();
     QRectF widgetRect = widget->geometry();
 
-    // Move widget to new position.
+    // Move widget to updated position.
     mWidgetHotSpot = scenePos;
-       
     widgetRect.moveTopLeft(mWidgetHotSpot - mWidgetHotSpotOffset);
 
-    // Widget can be moved over the pages left border.
+    // When moving widget can go over the pages left border.
     qreal lowerBoundX = -widgetRect.width();
-    HsPage *page = scene->activePage();
+
+    // When moving widget can go over the pages right border.
     QRectF pageRect = HsGui::idleView()->rect();
-    // Widget can be moved over the pages right border.
     qreal upperBoundX = pageRect.width();
 
+    // When moving widget can go under the chrome at the pages upper border.
     // Notice that chrome height is 64 pixels.
     qreal lowerBoundY = qreal(64) - widgetRect.height();
-    // Widget can be moved over the pages down border.
+
+    // When moving widget can go over the pages down border.
     qreal upperBoundY = pageRect.height();
 
     qreal widgetX = qBound(lowerBoundX, widgetRect.x(), upperBoundX);
     qreal widgetY = qBound(lowerBoundY, widgetRect.y(), upperBoundY);
+
     // If using ItemClipsChildrenToShape-flag in widgethost then
     // setPos does not update position here, however setGeometry does it, QT bug?
     widget->setGeometry(widgetX, widgetY, widgetRect.width(), widgetRect.height());
@@ -720,11 +696,12 @@
         mPreviousSnapResult = mSnapResult;
     }
 
-
-    int bounceFeedbackEffectDistance = HSCONFIGURATION_GET(bounceFeedbackEffectDistance);
     // Handle effects:
     // User is indicated by a tactile feedback if he/she is trying to move
     // widget over the first or the last page.
+    HsScene *scene = HsScene::instance();
+    HsPage *page = scene->activePage();
+    int bounceFeedbackEffectDistance = HSCONFIGURATION_GET(bounceFeedbackEffectDistance);
     if( (page == scene->pages().first() && mWidgetHotSpot.x() < bounceFeedbackEffectDistance ) ||
         (page == scene->pages().last() && scene->pages().count() == HSCONFIGURATION_GET(maximumPageCount)
          && mWidgetHotSpot.x() > pageRect.width() - bounceFeedbackEffectDistance)) {
@@ -733,8 +710,7 @@
             //if (!mContinuousFeedback->isPlaying()) {
             //    mContinuousFeedback->play();
             //}
-        }
-        else /*if (mContinuousFeedback->isPlaying())*/ {
+        } else /*if (mContinuousFeedback->isPlaying())*/ {
             //mContinuousFeedback->stop();
         }
 
@@ -876,41 +852,36 @@
     HbMenu *menu = new HbMenu();
     menu->setObjectName("hs_menu");
     // Task switcher
-    HbAction *action = menu->addAction(hbTrId(hsLocTextId_OptionsMenu_TaskSwitcher),
+    menu->addAction(hbTrId(hsLocTextId_OptionsMenu_TaskSwitcher),
         this, SLOT(openTaskSwitcher()));
-    action->setObjectName("action_open_task_switcher");
+    
     // Add content
-    action = menu->addAction(hbTrId(hsLocTextId_ContextMenu_AddContent),
+    menu->addAction(hbTrId(hsLocTextId_ContextMenu_AddContent),
         this, SLOT(onAddContentFromOptionsMenuActionTriggered()));
-    action->setObjectName("action_add_content");
     // Add page
     if (scene->pages().count() < HSCONFIGURATION_GET(maximumPageCount)) {
-        action = menu->addAction(hbTrId(hsLocTextId_OptionsMenu_AddPage),
+        menu->addAction(hbTrId(hsLocTextId_OptionsMenu_AddPage),
             this, SIGNAL(event_addPage()));
-        action->setObjectName("action_add_page");
-
+    
     }
 
     // Change wallpaper
-    action = menu->addAction(hbTrId(hsLocTextId_ContextMenu_ChangeWallpaper),
+    menu->addAction(hbTrId(hsLocTextId_ContextMenu_ChangeWallpaper),
         this, SIGNAL(event_selectWallpaper()));
-    action->setObjectName("action_change_wallpaper");
+    
     // Remove page
     if (scene->activePage()->isRemovable()) {
-        action = menu->addAction(hbTrId(hsLocTextId_OptionsMenu_RemovePage),
-            this, SIGNAL(event_removePage()));
-        action->setObjectName("action_remove_page"); 
+        menu->addAction(hbTrId(hsLocTextId_OptionsMenu_RemovePage),
+            this, SIGNAL(event_preRemovePage()));
     }
 
     // Online / Offline
     if (scene->isOnline()) {
-        action = menu->addAction(hbTrId(hsLocTextId_OptionsMenu_HsToOffline),
+        menu->addAction(hbTrId(hsLocTextId_OptionsMenu_HsToOffline),
             this, SIGNAL(event_toggleConnection()));
-        action->setObjectName("action_to_offline");
     } else {
-        action = menu->addAction(hbTrId(hsLocTextId_OptionsMenu_HsToOnline),
+        menu->addAction(hbTrId(hsLocTextId_OptionsMenu_HsToOnline),
             this, SIGNAL(event_toggleConnection()));
-        action->setObjectName("action_to_online");
     }
 
     HsGui::idleView()->setMenu(menu);
@@ -1001,16 +972,13 @@
 void HsIdleState::action_moveWidget_setWidgetSnap()
 {
     if (HSCONFIGURATION_GET(isSnapEnabled)) {
-        mSnapBorderGap = HSCONFIGURATION_GET(snapBorderGap);
 
         QVariantHash snapConfiguration;
         snapConfiguration[SNAPENABLED] = QString::number(HSCONFIGURATION_GET(isSnapEnabled));
         snapConfiguration[SNAPFORCE] = QString::number(HSCONFIGURATION_GET(snapForce));
         snapConfiguration[SNAPGAP] = QString::number(HSCONFIGURATION_GET(snapGap));
-        snapConfiguration[SNAPBORDERGAP] = mSnapBorderGap;
         HsWidgetPositioningOnWidgetMove::instance()->setConfiguration(snapConfiguration);
 
-
         updatePagePresentationToWidgetSnap();
 
         connect(HsScene::instance(), SIGNAL(activePageChanged()),
@@ -1083,10 +1051,8 @@
             }
         }
 
+        //Set the snap position of the widget and save the position
         QRectF widgetRect = widget->geometry();
-        QRectF pageRect = page->rect();
-
-        //Set the snap position of the widget and save the position
         if (mSnapResult.hasHorizontalSnap) {
             widgetRect.moveLeft(mSnapResult.horizontalSnapPosition);
         }
@@ -1094,15 +1060,8 @@
             widgetRect.moveTop(mSnapResult.verticalSnapPosition);
         }
 
-        //if snapBorderGap is defined, the widget is bounded in the rectangle which is smaller by snapBorderGap on all sides
-        qreal widgetX = qBound(qreal(0) + mSnapBorderGap, widgetRect.x(), (pageRect.width() - mSnapBorderGap) - widgetRect.width());
-        qreal widgetY = qBound(qreal(64) + mSnapBorderGap, widgetRect.y(), (pageRect.height() - mSnapBorderGap) - widgetRect.height());
-
-        // play feedback effect if user drops widget between pages and it needs to be repositioned back to original page
-        if( widgetX != widgetRect.x() || widgetY != widgetRect.y()) {
-            HbInstantFeedback::play(HSCONFIGURATION_GET(widgetRepositionFeedbackEffect));
-        }
-        widget->setPos(widgetX, widgetY);
+        QPointF adjustedWidgetPosition = page->adjustedWidgetPosition(widgetRect);
+        widget->setPos(adjustedWidgetPosition);
 
         widget->savePresentation();
         page->updateZValues();
@@ -1216,36 +1175,83 @@
     mUiWidget->showPageIndicator();
 }
 
-/*!
-    Removes an existing page from the scene.
-*/
-void HsIdleState::action_removePage_removePage()
+void HsIdleState::action_preRemovePage_showQuery()
 {
     HsScene *scene = HsScene::instance();
     HsPage *page = scene->activePage();
 
     if (!page->widgets().isEmpty()) {
-#ifndef HOMESCREEN_TEST //We don't want to test message box.
-        //Confirm removal of page having content
-        HbMessageBox *box = new HbMessageBox(HbMessageBox::MessageTypeQuestion);
-        box->setAttribute(Qt::WA_DeleteOnClose);
-        box->setHeadingWidget(new HbLabel
-                                (hbTrId(hsLocTextId_Title_RemovePage)));
-        box->setText(hbTrId(hsLocTextId_Confirmation_RemovePage));
-
-        QAction *buttonOk = box->actions().at(0);
-        //We are keen only from OK button. Cancel is not connected to any slot.
-        connect(buttonOk, SIGNAL(triggered()), SLOT(onRemovePageConfirmationOk()));
-       
-        box->open();
-#endif // HOMESCREEN_TEST
+        if (!mMessageBoxWrapper) {
+            mMessageBoxWrapper = new HsMessageBoxWrapper(this);
+            mMessageBoxWrapper->setHeader(hbTrId(hsLocTextId_Title_RemovePage));
+            mMessageBoxWrapper->setQueryText(hbTrId(hsLocTextId_Confirmation_RemovePage));
+            connect(mMessageBoxWrapper,SIGNAL(accepted()),SIGNAL(event_removePage())); 
+            connect(mMessageBoxWrapper,SIGNAL(rejected()),SIGNAL(event_waitInput())); 
+        }
+        mMessageBoxWrapper->show();
     } else {
         // Empty page can be removed without confirmation
-        removeActivePage();
+        emit event_removePage();
     }
 }
 
 /*!
+    Start remove page animation.
+*/
+void HsIdleState::action_removePage_startRemovePageAnimation()
+{
+    HsScene *scene = HsScene::instance();
+   
+    int pageToRemoveIndex = scene->activePageIndex();
+    bool isLastPage(scene->activePage() == scene->pages().last());
+    
+    int nextPageIndex(pageToRemoveIndex);
+    nextPageIndex++;
+    if (isLastPage) {
+        nextPageIndex--; 
+    }
+    
+    if (mPageChangeAnimation->isRunning()) {
+        mPageChangeAnimation->stop();
+    }
+    mPageChangeAnimation->disconnect(this);
+    connect(mPageChangeAnimation,
+            SIGNAL(finished()),
+            SIGNAL(event_waitInput()), 
+            Qt::UniqueConnection);
+    mPageChangeAnimation->setEndValue(pageLayerXPos(nextPageIndex));
+    mPageChangeAnimation->setDuration(HSCONFIGURATION_GET(pageRemovedAnimationDuration));
+   
+    mPageChangeAnimation->start();
+    
+    HbInstantFeedback::play(HSCONFIGURATION_GET(pageChangeFeedbackEffect));
+    
+}
+
+/*!
+    Removes an existing page from the scene.
+*/
+void HsIdleState::action_removePage_removePage()
+{
+    if (mPageChangeAnimation->isRunning()) {
+        mPageChangeAnimation->stop();
+    }
+    HsScene *scene = HsScene::instance();
+    HsPage *pageToRemove = scene->activePage();
+    
+    // remove from ui
+    mUiWidget->removePage(pageToRemove->pageIndex());
+    mUiWidget->showPageIndicator();
+    // update data model
+    HsScene::instance()->removePage(pageToRemove);
+    // Take new active page (previous was removed) and move scene to right position
+    qreal x = pageLayerXPos(scene->activePageIndex());
+    mUiWidget->setSceneX(x);
+    // delete it   
+    pageToRemove->deleteLater();
+   
+}
+/*!
     Toggles the homescreen online/offline state.
 */
 void HsIdleState::action_toggleConnection_toggleConnection()
@@ -1299,8 +1305,6 @@
         scene->setActivePageIndex(pageIndex);
         mUiWidget->setActivePage(pageIndex);
     }
-
-    deleteZoneAnimation();
 }
 
 /*!
@@ -1311,21 +1315,13 @@
     updateZoneAnimation();
 }
 
-/*!
-    Handles the close of remove page confirmation dialog for page having content.
-*/
-void HsIdleState::onRemovePageConfirmationOk()
-{
-    removeActivePage();
-}
 
 /*!
     Provides the page presentation to the Widget Snap algorithm
 */
 void HsIdleState::updatePagePresentationToWidgetSnap()
 {
-    QRectF containerRect = HsScene::instance()->activePage()->rect();
-    containerRect.setTop(qreal(64));
+    QRectF containerRect = HsScene::instance()->activePage()->contentGeometry();
     HsWidgetHost *activeWidget = HsScene::instance()->activeWidget();
     HsWidgetPositioningOnWidgetMove::instance()->setPagePresentation(containerRect, createInactiveWidgetRects(), activeWidget->geometry());
 }
@@ -1419,3 +1415,5 @@
     updatePagePresentationToWidgetSnap();
     resetSnapPosition();
 }
+
+
--- a/homescreenapp/stateplugins/hshomescreenstateplugin/src/hsidlewidget.cpp	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/src/hsidlewidget.cpp	Fri Jul 09 14:36:01 2010 +0300
@@ -216,6 +216,7 @@
         mPageWallpaperLayer->resize(
             layout->count() * size().width(), size().height());
     }
+    mPageIndicator->removeItem(index);
 }
 
 /*!
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/hsmenuworkerstateplugin.qrc	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/hsmenuworkerstateplugin.qrc	Fri Jul 09 14:36:01 2010 +0300
@@ -5,5 +5,6 @@
         <file alias="hsarrangedialog.docml">resource/hsarrangedialog.docml</file>
         <file alias="hsdetailsdialog.docml">resource/hsdetailsdialog.docml</file>
         <file alias="hsuninstalldialog.docml">resource/hsuninstalldialog.docml</file>
+        <file alias="hsinstallationlogdialog.docml">resource/hsinstallationlogdialog.docml</file>
     </qresource>
 </RCC>
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsaddappstocollectionstate.h	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsaddappstocollectionstate.h	Fri Jul 09 14:36:01 2010 +0300
@@ -128,8 +128,6 @@
 
     HsSortAttribute mApplicationsSortAttribute;
 
-    HsSortAttribute mCollectionsSortAttribute;
-
     HsAppsCheckList *mAppsCheckList;
 
     HsCollectionNameDialog *mEditorDialog;
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsaddtohomescreenstate.h	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsaddtohomescreenstate.h	Fri Jul 09 14:36:01 2010 +0300
@@ -27,6 +27,7 @@
 
 HS_STATES_TEST_CLASS(MenuStatesTest)
 
+class QAction;
 class HbAction;
 class HbMessageBox;
 class CaEntry;
@@ -82,7 +83,7 @@
 
     HbMessageBox *mCorruptedMessage;
 
-    HbAction *mConfirmAction;
+    QAction *mConfirmAction;
     
     HsMenuMode mMenuMode;
     
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsarrangestate.h	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsarrangestate.h	Fri Jul 09 14:36:01 2010 +0300
@@ -15,8 +15,8 @@
  *
  */
 
-#ifndef ARRANGE_H
-#define ARRANGE_H
+#ifndef HSARRANGESTATE_H
+#define HSARRANGESTATE_H
 
 #include <QState>
 #include <QVariant>
@@ -76,15 +76,17 @@
     HsMenuItemModel *mItemModel;
 
     int mTopItemId;
+    
+    int mCollectionId;
 
     QModelIndex mTopModelIndex;
 
-    QList<int> mCollIdList;
+    QList<int> mCollItemIdList;
 
-    QList<int> mArrangedCollIdList;
+    QList<int> mArrangedCollItemIdList;
     
     QObjectList mObjectList;
 
 };
 
-#endif /* ARRANGE_H_ */
+#endif /* HSARRANGESTATE_H */
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hscollectionslistdialog.h	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hscollectionslistdialog.h	Fri Jul 09 14:36:01 2010 +0300
@@ -33,8 +33,7 @@
 
 public:
 
-    HsCollectionsListDialog(HsSortAttribute sortOrder,
-                            int collectionId = 0);
+    HsCollectionsListDialog(int collectionId = 0);
 
     virtual ~HsCollectionsListDialog();
 
@@ -51,8 +50,7 @@
 
     void makeDisconnect();
 
-    QStandardItemModel *standartItemModel(HsSortAttribute sortOrder,
-                                          int collectionId);
+    QStandardItemModel *standardItemModel(int collectionId);
 
     void insertNewCollectionItem(QStandardItemModel *model);
 
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsdeletecollectionitemstate.h	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsdeletecollectionitemstate.h	Fri Jul 09 14:36:01 2010 +0300
@@ -23,6 +23,7 @@
 #include "hsmenustates_global.h"
 HS_STATES_TEST_CLASS(MenuStatesTest)
 
+class QAction;
 class HbAction;
 class HbMessageBox;
 class HsShortcutService;
@@ -66,7 +67,7 @@
 
     HbMessageBox *mDeleteMessage; // deletes itself automatically on close
 
-    HbAction *mConfirmAction; // child for mDeleteMessage
+    QAction *mConfirmAction; // child for mDeleteMessage
 
 };
 
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsdeletecollectionstate.h	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsdeletecollectionstate.h	Fri Jul 09 14:36:01 2010 +0300
@@ -23,6 +23,7 @@
 #include "hsmenustates_global.h"
 HS_STATES_TEST_CLASS(MenuStatesTest)
 
+class QAction;
 class HbAction;
 class HbMessageBox;
 class HsMenuService;
@@ -60,7 +61,7 @@
 private:
     int mItemId;
     HbMessageBox *mDeleteMessage; // deletes itself automatically on close
-    HbAction *mConfirmAction; // child for mDeleteMessage
+    QAction *mConfirmAction; // child for mDeleteMessage
 };
 
 #endif //HSDELETECOLLECTIONSTATE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsinstallationlogstate.h	Fri Jul 09 14:36:01 2010 +0300
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description:
+ *
+ */
+
+#ifndef HSINSTALLATIONLOGSTATE_H
+#define HSINSTALLATIONLOGSTATE_H
+
+#include <QState>
+
+#include "hsmenustates_global.h"
+HS_STATES_TEST_CLASS(MenuStatesTest)
+
+class HbDialog;
+
+class HsInstallationLogState: public QState
+{
+    Q_OBJECT
+
+    HS_STATES_TEST_FRIEND_CLASS(MenuStatesTest)
+
+public:
+
+    HsInstallationLogState(QState *parent = 0);
+
+    virtual ~HsInstallationLogState();
+
+protected:
+
+    void onEntry(QEvent *event);
+    void onExit(QEvent *event);
+
+private slots:
+
+    void stateExited();
+    void cleanUp();
+
+signals:
+
+    void exit();
+
+private:
+
+    void construct();
+    void createInstallationLogDialog();
+
+private:
+    
+    HbDialog* mInstalationLogDialog;
+
+};
+
+#endif //HSINSTALLATIONLOGSTATE_H
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsmenustates_global.h	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsmenustates_global.h	Fri Jul 09 14:36:01 2010 +0300
@@ -60,6 +60,10 @@
 static const char *const HS_UNINSTALL_DIALOG_CONFIRMATION_ACTION ="qtl_dialog_softkey_2_left";
 static const char *const HS_UNINSTALL_DIALOG_CONFIRMATION_DIALOG_ICON ="icon";
 
+static const char *const HS_INSTALLATION_LOG_DIALOG_LAYOUT =":/xml/hsinstallationlogdialog.docml";
+static const char *const HS_INSTALLATION_LOG_DIALOG_NAME="installation_log_dialog";
+static const char *const HS_INSTALLATION_LOG_DIALOG_LOG_LABEL="log_label";
+
 
 /*!
  To enable logging of function entry and exit use the following flag for qmake:
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hspreviewhswidgetstate.h	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hspreviewhswidgetstate.h	Fri Jul 09 14:36:01 2010 +0300
@@ -20,18 +20,21 @@
 #define HSPREVIEWHSWIDGETSTATE_H
 
 #include <QState>
+#include <QVariant>
 
 #include "hsmenustates_global.h"
 HS_STATES_TEST_CLASS(MenuStatesTest)
 
+class QAction;
+class HbAction;
 class CaEntry;
 class HbDialog;
 class HsWidgetHost;
 class CaNotifier;
-class HbAction;
 class HbScrollArea;
 class HbMessageBox;
 
+
 class HsPreviewHSWidgetState : public QState
 {
     Q_OBJECT
@@ -71,11 +74,15 @@
 
     CaNotifier *mNotifier;
 
-    QScopedPointer<HsWidgetHost> mWidget;
-
     int mEntryId;
 
     HbMessageBox *mCorruptedMessage;
+
+    QAction *mConfirmAction;
+
+    QVariant mToken;
+    
+    QString mUri;
 };
 
 
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsuninstallitemstate.h	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsuninstallitemstate.h	Fri Jul 09 14:36:01 2010 +0300
@@ -23,6 +23,7 @@
 #include "hsmenustates_global.h"
 HS_STATES_TEST_CLASS(MenuStatesTest)
 
+class QAction;
 class HbAction;
 class HbMessageBox;
 class HsShortcutService;
@@ -82,10 +83,9 @@
 
     HbMessageBox *mUninstallMessage; // deletes itself automatically on close
     HbDialog *mUninstallJavaMessage;
-    QObjectList mObjectList;
     UninstallDialogType mDialogType;
 
-    HbAction *mConfirmAction; // child for mConfirmMessage
+    QAction *mConfirmAction; // child for mConfirmMessage
 
 };
 
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsviewappdetailsstate.h	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsviewappdetailsstate.h	Fri Jul 09 14:36:01 2010 +0300
@@ -22,12 +22,15 @@
 #include <QVariant>
 
 #include "hsmenustates_global.h"
+#include "casoftwareregistry.h"
 HS_STATES_TEST_CLASS(MenuStatesTest)
 
 class HbListWidget;
 class HsMenuItemModel;
 class HbDialog;
 class CaNotifier;
+class HbDocumentLoader;
+
 
 class HsViewAppDetailsState: public QState
 {
@@ -57,13 +60,14 @@
 
     void construct();
     void subscribeForMemoryCardRemove(int entryId);
+    void setFieldPresentation(QString key,
+            CaSoftwareRegistry::DetailMap &detailMap,
+            HbDocumentLoader &loader);
 
 private:
 
     HbDialog *mDialog;
     
-    QObjectList mObjectList;
-    
     CaNotifier *mNotifier;
 };
 
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/resource/hsarrangedialog.docml	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/resource/hsarrangedialog.docml	Fri Jul 09 14:36:01 2010 +0300
@@ -3,9 +3,9 @@
     <widget name="arrange_dialog" type="HbDialog">
         <enums name="dismissPolicy" value="HbPopup::NoDismiss"/>
         <object name="qtl_dialog_softkey_left" type="HbAction">
-			<string name="role" value="HbDialog:primaryAction"/>
-			<string locid="txt_common_button_ok" name="text"/>
-		</object>
+            <string name="role" value="HbDialog:primaryAction"/>
+            <string locid="txt_common_button_ok" name="text"/>
+        </object>
         <widget name="qtl_dialog_pri_heading" role="HbDialog:headingWidget" type="HbLabel">
             <enums name="alignment" value="AlignLeft|AlignLeading"/>
             <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/resource/hsdetailsdialog.docml	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/resource/hsdetailsdialog.docml	Fri Jul 09 14:36:01 2010 +0300
@@ -6,7 +6,6 @@
     </object>
     <widget name="details_dialog" type="HbDialog">
         <enums name="dismissPolicy" value="HbPopup::NoDismiss"/>
-    	
         <contentsmargins bottom="var(hb-param-margin-view-bottom)" left="var(hb-param-margin-view-left)" right="var(hb-param-margin-view-right)" top="var(hb-param-margin-view-top)"/>
         <widget name="qtl_dialog_pri_heading" role="HbDialog:headingWidget" type="HbLabel">
             <enums name="alignment" value="AlignLeft|AlignLeading"/>
@@ -91,6 +90,116 @@
         </widget>
         <ref object="qtl_dialog_softkey_left" role="HbWidget:addAction"/>
     </widget>
+    <section name="detailsDialogForJavaApplication">
+        <widget name="details_dialog" type="HbDialog">
+            <enums name="dismissPolicy" value="HbPopup::NoDismiss"/>
+            <contentsmargins bottom="var(hb-param-margin-view-bottom)" left="var(hb-param-margin-view-left)" right="var(hb-param-margin-view-right)" top="var(hb-param-margin-view-top)"/>
+            <widget name="qtl_dialog_pri_heading" role="HbDialog:headingWidget" type="HbLabel">
+                <enums name="alignment" value="AlignLeft|AlignLeading"/>
+                <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
+                <string locid="txt_applib_title_details" name="plainText" value="Details"/>
+                <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
+            </widget>
+            <widget name="scrollArea" role="HbDialog:contentWidget" type="HbScrollArea">
+                <widget name="scrollAreaContents" role="HbScrollArea:contents" type="HbWidget">
+                    <widget name="_name" type="HbLabel">
+                        <sizehint height="expr(var(hb-param-text-height-secondary))" type="PREFERRED"/>
+                        <string locid="txt_applib_dialog_name" name="plainText" value="Name:"/>
+                        <fontspec name="fontSpec" role="Secondary" textheight="var(hb-param-text-height-secondary)"/>
+                    </widget>
+                    <widget name="name" type="HbLabel">
+                        <sizehint height="expr(var(hb-param-text-height-secondary))" type="PREFERRED"/>
+                        <fontspec name="fontSpec" role="Secondary" textheight="var(hb-param-text-height-secondary)"/>
+                    </widget>
+                    <widget name="_version" type="HbLabel">
+                        <sizehint height="expr(var(hb-param-text-height-secondary))" type="PREFERRED"/>
+                        <string locid="txt_applib_dialog_version" name="plainText" value="Version:"/>
+                        <fontspec name="fontSpec" role="Secondary" textheight="var(hb-param-text-height-secondary)"/>
+                    </widget>
+                    <widget name="version" type="HbLabel">
+                        <sizehint height="expr(var(hb-param-text-height-secondary))" type="PREFERRED"/>
+                        <fontspec name="fontSpec" role="Secondary" textheight="var(hb-param-text-height-secondary)"/>
+                    </widget>
+                    <widget name="_vendor" type="HbLabel">
+                        <sizehint height="expr(var(hb-param-text-height-secondary))" type="PREFERRED"/>
+                        <string locid="txt_applib_dialog_supplier" name="plainText" value="Supplier:"/>
+                        <fontspec name="fontSpec" role="Secondary" textheight="var(hb-param-text-height-secondary)"/>
+                    </widget>
+                    <widget name="vendor" type="HbLabel">
+                        <sizehint height="expr(var(hb-param-text-height-secondary))" type="PREFERRED"/>
+                        <fontspec name="fontSpec" role="Secondary" textheight="var(hb-param-text-height-secondary)"/>
+                    </widget>
+                    <widget name="_driveInfo" type="HbLabel">
+                        <sizehint height="expr(var(hb-param-text-height-secondary))" type="PREFERRED"/>
+                        <string locid="txt_applib_dialog_memory_in_use" name="plainText" value="Memory in use:"/>
+                        <fontspec name="fontSpec" role="Secondary" textheight="var(hb-param-text-height-secondary)"/>
+                    </widget>
+                    <widget name="driveInfo" type="HbLabel">
+                        <sizehint height="expr(var(hb-param-text-height-secondary))" type="PREFERRED"/>
+                        <fontspec name="fontSpec" role="Secondary" textheight="var(hb-param-text-height-secondary)"/>
+                        <string locid="txt_applib_dialog_1_device_memory" name="plainText" value="%1 Device memory"/>
+                    </widget>
+                    <widget name="_protectiondomain" type="HbLabel">
+                        <sizehint height="expr(var(hb-param-text-height-secondary))" type="PREFERRED"/>
+                        <string locid="txt_applib_dialog_protection_domain" name="plainText" value="Protection domain:"/>
+                        <fontspec name="fontSpec" role="Secondary" textheight="var(hb-param-text-height-secondary)"/>
+                    </widget>
+                    <widget name="protectiondomain" type="HbLabel">
+                        <sizehint height="expr(var(hb-param-text-height-secondary))" type="PREFERRED"/>
+                        <fontspec name="fontSpec" role="Secondary" textheight="var(hb-param-text-height-secondary)"/>
+                    </widget>
+                    <widget name="_size" type="HbLabel">
+                        <sizehint height="expr(var(hb-param-text-height-secondary))" type="PREFERRED"/>
+                        <string locid="txt_applib_dialog_size" name="plainText" value="Size:"/>
+                        <fontspec name="fontSpec" role="Secondary" textheight="var(hb-param-text-height-secondary)"/>
+                    </widget>
+                    <widget name="size" type="HbLabel">
+                        <sizehint height="expr(var(hb-param-text-height-secondary))" type="PREFERRED"/>
+                        <fontspec name="fontSpec" role="Secondary" textheight="var(hb-param-text-height-secondary)"/>
+                        <string locid="txt_applib_dialog_l1_kb" name="plainText" value="%L1 KB"/>
+                    </widget>
+                    <widget name="_type" type="HbLabel">
+                        <sizehint height="expr(var(hb-param-text-height-secondary))" type="PREFERRED"/>
+                        <string locid="txt_applib_dialog_format" name="plainText" value="Format:"/>
+                        <fontspec name="fontSpec" role="Secondary" textheight="var(hb-param-text-height-secondary)"/>
+                    </widget>
+                    <widget name="type" type="HbLabel">
+                        <sizehint height="expr(var(hb-param-text-height-secondary))" type="PREFERRED"/>
+                        <fontspec name="fontSpec" role="Secondary" textheight="var(hb-param-text-height-secondary)"/>
+                    </widget>
+                    <widget name="_description" type="HbLabel">
+                        <sizehint height="expr(var(hb-param-text-height-secondary))" type="PREFERRED"/>
+                        <string locid="txt_applib_dialog_description" name="plainText" value="Description:"/>
+                        <fontspec name="fontSpec" role="Secondary" textheight="var(hb-param-text-height-secondary)"/>
+                    </widget>
+                    <widget name="description" type="HbLabel">
+                        <sizehint height="expr(var(hb-param-text-height-secondary))" type="PREFERRED"/>
+                        <fontspec name="fontSpec" role="Secondary" textheight="var(hb-param-text-height-secondary)"/>
+                    </widget>
+                    <sizehint type="PREFERRED" width="expr(var(hb-param-screen-width) )"/>
+                    <layout orientation="Vertical" spacing="2px" type="linear">
+                        <linearitem itemname="_name"/>
+                        <linearitem itemname="name"/>
+                        <linearitem itemname="_version"/>
+                        <linearitem itemname="version"/>
+                        <linearitem itemname="_vendor"/>
+                        <linearitem itemname="vendor"/>
+                        <linearitem itemname="_driveInfo"/>
+                        <linearitem itemname="driveInfo"/>
+                        <linearitem itemname="_protectiondomain"/>
+                        <linearitem itemname="protectiondomain"/>
+                        <linearitem itemname="_size"/>
+                        <linearitem itemname="size"/>
+                        <linearitem itemname="_type"/>
+                        <linearitem itemname="type"/>
+                        <linearitem itemname="_description"/>
+                        <linearitem itemname="description"/>
+                    </layout>
+                </widget>
+            </widget>
+            <ref object="qtl_dialog_softkey_left" role="HbWidget:addAction"/>
+        </widget>
+    </section>
     <metadata activeUIState="Common ui state" display="NHD-3.2-inch_portrait" unit="un">
         <uistate name="Common ui state" sections="#common"/>
     </metadata>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/resource/hsinstallationlogdialog.docml	Fri Jul 09 14:36:01 2010 +0300
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<hbdocument version="1.1">
+    <object name="qtl_dialog_softkey_left" type="HbAction">
+        <string name="role" value="HbDialog:primaryAction"/>
+        <string locid="txt_common_button_close" name="text"/>
+    </object>
+    <widget name="installation_log_dialog" type="HbDialog">
+        <contentsmargins bottom="var(hb-param-margin-view-bottom)" left="var(hb-param-margin-view-left)" right="var(hb-param-margin-view-right)" top="var(hb-param-margin-view-top)"/>
+        <enums name="dismissPolicy" value="NoDismiss"/>
+        <widget name="qtl_dialog_pri_heading" role="HbDialog:headingWidget" type="HbLabel">
+            <enums name="alignment" value="AlignLeft|AlignLeading"/>
+            <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
+            <string locid="txt_applib_title_installation_logs" name="plainText"/>
+            <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
+        </widget>
+        <widget name="scrollArea" role="HbDialog:contentWidget" type="HbScrollArea">
+            <widget name="scrollAreaContents" role="HbScrollArea:contents" type="HbWidget">
+                <widget name="log_label" type="HbLabel">
+                    <enums name="textWrapping" value="TextWordWrap"/>
+                    <enums name="alignment" value="AlignLeft|AlignTop|AlignLeading"/>
+                    <sizehint type="PREFERRED" width="expr(var(hb-param-screen-width) )"/>
+                    <string name="plainText" value=""/>
+                    <fontspec name="fontSpec" role="Secondary" textheight="var(hb-param-text-height-secondary)"/>
+                </widget>
+                <sizepolicy horizontalPolicy="Preferred" horizontalStretch="0" verticalPolicy="Expanding" verticalStretch="0"/>
+                <sizehint type="PREFERRED" width="expr(var(hb-param-screen-width) )"/>
+                <layout orientation="Vertical" spacing="var(hb-param-margin-gene-popup)" type="linear">
+                    <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
+                    <linearitem itemname="log_label"/>
+                </layout>
+            </widget>
+        </widget>
+        <ref object="qtl_dialog_softkey_left" role="HbWidget:addAction"/>
+    </widget>
+    <metadata activeUIState="Common ui state" display="NHD-3.2-inch_portrait" unit="un">
+        <uistate name="Common ui state" sections="#common"/>
+    </metadata>
+</hbdocument>
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/resource/hswidgetpreviewdialog.docml	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/resource/hswidgetpreviewdialog.docml	Fri Jul 09 14:36:01 2010 +0300
@@ -11,21 +11,20 @@
         <widget name="label" role="HbDialog:headingWidget" type="HbLabel"/>
         <widget name="container" role="HbDialog:contentWidget" type="HbWidget">
             <widget name="icon_box" type="HbLabel">
-                <enums name="alignment" value="AlignHCenter|AlignTop"/>
+                <enums name="alignment" value="AlignAbsolute|AlignVCenter|AlignHCenter"/>
                 <enums name="aspectRatioMode" value="KeepAspectRatio"/>
-                <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Minimum" verticalStretch="0"/>
-                <sizehint height="32un" type="PREFERRED"/>
-                <sizehint height="var(hb-param-text-height-secondary)" type="MINIMUM" width="32un"/>
-                <contentsmargins bottom="0un" left="0un" right="0un" top="expr(var(hb-param-margin-gene-popup) )"/>
-                <sizehint type="MAXIMUM" width="32un"/>
+                <sizehint height="var(hb-param-text-height-secondary)" type="MINIMUM"/>
+                <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
                 <string locid="txt_applib_info_no_preview_available" name="plainText"/>
                 <fontspec name="fontSpec" role="Secondary" textheight="var(hb-param-text-height-secondary)"/>
             </widget>
+            
             <real name="z" value="0"/>
-            <layout orientation="Horizontal" type="linear">
-                <stretchitem stretchfactor="1"/>
-                <linearitem itemname="icon_box"/>
-                <stretchitem stretchfactor="1"/>
+           <layout type="anchor">
+                <anchoritem dst="icon_box" dstEdge="LEFT" spacing="var(hb-param-margin-gene-popup)" src="" srcEdge="LEFT"/>
+                <anchoritem dst="icon_box" dstEdge="TOP" spacing="var(hb-param-margin-gene-popup)" src="" srcEdge="TOP"/>
+                <anchoritem dst="icon_box" dstEdge="RIGHT" spacing="-var(hb-param-margin-gene-popup)" src="" srcEdge="RIGHT"/>
+                <anchoritem dst="icon_box" dstEdge="BOTTOM" spacing="-var(hb-param-margin-gene-popup)" src="" srcEdge="BOTTOM"/>
             </layout>
         </widget>
         <ref object="add_to_homescreen" role="HbWidget:addAction"/>
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsaddappstocollectionstate.cpp	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsaddappstocollectionstate.cpp	Fri Jul 09 14:36:01 2010 +0300
@@ -179,8 +179,7 @@
     mShowConfirmation(0), mInitialState(0), mSelectCollectionState(0),
     mNewCollectionState(0), mAppsCheckListState(0), mActionType(
         NoActionType), mApplicationsSortAttribute(NoHsSortAttribute),
-    mCollectionsSortAttribute(NoHsSortAttribute), mAppsCheckList(0),
-    mEditorDialog(0), mListDialog(0)
+    mAppsCheckList(0), mEditorDialog(0), mListDialog(0)
 {
     construct();
 }
@@ -330,27 +329,19 @@
 
     mApplicationsSortAttribute = static_cast<HsSortAttribute>(data.value(
                                      appSortOrderKey()).toInt());
-    mCollectionsSortAttribute = static_cast<HsSortAttribute>(data.value(
-                                    collectionSortOrderKey()).toInt());
 
     const int itemId = data.value(itemIdKey()).toInt();
     mCollectionId = data.value(collectionIdKey()).toInt();
 
-    if (itemId && (mCollectionsSortAttribute != NoHsSortAttribute
-                   || mCollectionId)) {
-        //add selected app item form allAppView or collectionView
+    if (itemId) {
+        //add selected app item from allAppView or collectionView
         mAppList.append(itemId);
-
         mInitialState->addTransition(mSelectCollectionState);
-
         mShowConfirmation = true;
-    } else if (mApplicationsSortAttribute != NoHsSortAttribute
-               && mCollectionsSortAttribute != NoHsSortAttribute) {
+    } else if (mApplicationsSortAttribute != NoHsSortAttribute) {
         //add apps from allAppView options menu
         mActionType = ViaAllViewOptionMenuType;
-
         mInitialState->addTransition(mSelectCollectionState);
-
         mShowConfirmation = true;
     } else if (mCollectionId) {
         //add apps from collectionView options menu
@@ -437,8 +428,7 @@
 {
     qDebug("HsAddAppsToCollectionState::selectCollection()");
     HSMENUTEST_FUNC_ENTRY("HsAddAppsToCollectionState::selectCollection");
-    mListDialog = new HsCollectionsListDialog(mCollectionsSortAttribute,
-                                                       mCollectionId);
+    mListDialog = new HsCollectionsListDialog(mCollectionId);
     mListDialog->open(this, SLOT(listDialogFinished(HbAction*)));
     HSMENUTEST_FUNC_EXIT("HsAddAppsToCollectionState::selectCollection");
 }
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsaddtohomescreenstate.cpp	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsaddtohomescreenstate.cpp	Fri Jul 09 14:36:01 2010 +0300
@@ -17,14 +17,13 @@
 
 #include <qstatemachine.h>
 #include <hblabel.h>
-#include <hsiwidgetprovider.h>
 #include <hsshortcutservice.h>
 #include <hscontentservice.h>
 #include <hbmessagebox.h>
 #include <hbaction.h>
 #include <hbnotificationdialog.h>
 #include <hsmenueventfactory.h>
-
+#include "hsmenudialogfactory.h"
 #include "hsaddtohomescreenstate.h"
 #include "hsmenuevent.h"
 #include "canotifier.h"
@@ -163,21 +162,9 @@
 {
     HSMENUTEST_FUNC_ENTRY("HsCollectionState::showMessageWidgetCorrupted");
 
-    mCorruptedMessage = new HbMessageBox(HbMessageBox::MessageTypeQuestion);
-    mCorruptedMessage->setAttribute(Qt::WA_DeleteOnClose);
-
-    QString message(hbTrId("txt_applib_dialog_file_corrupted_unable_to_use_wi"));
-    mCorruptedMessage->setText(message);
-
-    mCorruptedMessage->clearActions();
-    mConfirmAction = new HbAction(hbTrId("txt_common_button_ok"), 
-                                  mCorruptedMessage);
-    mCorruptedMessage->addAction(mConfirmAction);
-
-    HbAction *secondaryAction = new HbAction(
-            hbTrId("txt_common_button_cancel"), mCorruptedMessage);
-    mCorruptedMessage->addAction(secondaryAction);
-
+    mCorruptedMessage = HsMenuDialogFactory().create(
+            hbTrId("txt_applib_dialog_file_corrupted_unable_to_use_wi"));
+    mConfirmAction = mCorruptedMessage->actions().value(0);
     mCorruptedMessage->open(this, SLOT(messageWidgetCorruptedFinished(HbAction*)));
 
     HSMENUTEST_FUNC_EXIT("HsCollectionState::showMessageWidgetCorrupted");
@@ -190,7 +177,7 @@
 void HsAddToHomeScreenState::messageWidgetCorruptedFinished
         (HbAction* finishedAction)
 {
-    if (finishedAction == mConfirmAction) {
+    if (static_cast<QAction*>(finishedAction) == mConfirmAction) {
         HsMenuService::executeAction(mEntryId, removeActionIdentifier());
     }
     emit exit();
@@ -198,6 +185,7 @@
         machine()->postEvent(
             HsMenuEventFactory::createOpenHomeScreenEvent());
     }
+    mConfirmAction = NULL;
 }
 
 
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsarrangestate.cpp	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsarrangestate.cpp	Fri Jul 09 14:36:01 2010 +0300
@@ -78,7 +78,7 @@
  */
 HsArrangeState::HsArrangeState(QState *parent) :
     QState(parent), mDialog(0), mEntriesList(0), 
-    mItemModel(0)
+    mItemModel(0),mCollectionId(0)
 {
     construct();
 }
@@ -119,9 +119,10 @@
     HSMENUTEST_FUNC_ENTRY("HsArrangeState::save");
 
     getArrangedEntriesIds(listWidget);
-    if (mArrangedCollIdList != mCollIdList) {
+    if (mArrangedCollItemIdList != mCollItemIdList) {
         HsMenuService::organizeCollection(
-            HsMenuService::allCollectionsId(), mArrangedCollIdList);
+            mCollectionId,
+            mArrangedCollItemIdList);
     }
 
     HSMENUTEST_FUNC_EXIT("HsArrangeState::save");
@@ -156,9 +157,22 @@
     mDialog = qobject_cast<HbDialog*>(
             loader.findWidget(HS_ARRANGE_DIALOG_NAME));
 
-    if (mEntriesList != NULL && mDialog != NULL) {
+    if (mEntriesList && mDialog) {
+        switch (menuEvent->operation()) {
+        case HsMenuEvent::ArrangeCollection:
+            mCollectionId = data.value(collectionIdKey()).toInt();
+            mItemModel = HsMenuService::getCollectionModel(
+                mCollectionId,
+                NoHsSortAttribute);
+            break;
+        case HsMenuEvent::ArrangeAllCollections:
+            mCollectionId = HsMenuService::allCollectionsId();
+            mItemModel = HsMenuService::getAllCollectionsModel();
+            break;
+        default:
+            break;
+        }
 
-        mItemModel = HsMenuService::getAllCollectionsModel();
         // as we copy the model contents to the list widget
         // we do not need the model to auto update
         mItemModel->setAutoUpdate(false);
@@ -171,7 +185,7 @@
         mEntriesList->setArrangeMode(true);
     
         mDialog->setTimeout(HbPopup::NoTimeout);
-        mDialog->setAttribute(Qt::WA_DeleteOnClose, true);
+        mDialog->setAttribute(Qt::WA_DeleteOnClose);
 
         mDialog->setPreferredSize(
             HbInstance::instance()->allMainWindows().at(0)->size());
@@ -201,7 +215,8 @@
 {
     HSMENUTEST_FUNC_ENTRY("HsArrangeState::stateExited");
     if (mDialog) {
-        disconnect(mDialog, SIGNAL(finished(HbAction*)), this, SLOT(arrangeDialogFinished(HbAction*)));
+        disconnect(mDialog, SIGNAL(finished(HbAction*)),
+        this, SLOT(arrangeDialogFinished(HbAction*)));
         mDialog->close();
         mDialog = NULL;
     }
@@ -212,8 +227,8 @@
     delete mItemModel;
     mItemModel = NULL;
 
-    mArrangedCollIdList.clear();
-    mCollIdList.clear();
+    mArrangedCollItemIdList.clear();
+    mCollItemIdList.clear();
 
     HSMENUTEST_FUNC_EXIT("HsArrangeState::stateExited");
     qDebug("HsArrangeState::stateExited()");
@@ -235,7 +250,7 @@
         int itemId = mItemModel->data(idx, CaItemModel::IdRole).toInt();
         widgetItem->setData(mItemModel->data(idx, CaItemModel::IdRole),
                             CaItemModel::IdRole);
-        mCollIdList.append(itemId);
+        mCollItemIdList.append(itemId);
         widgetItem->setData(mItemModel->data(idx, Qt::DisplayRole),
                             Qt::DisplayRole);
         widgetItem->setData(mItemModel->data(idx, Qt::DecorationRole),
@@ -259,6 +274,6 @@
     for (int i(0); i < listWidget.count(); ++i) {
         HbListWidgetItem *widgetItem = listWidget.item(i);
         QVariant entryId = widgetItem->data(CaItemModel::IdRole);
-        mArrangedCollIdList.append(entryId.toInt());
+        mArrangedCollItemIdList.append(entryId.toInt());
     }
 }
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hscollectionslistdialog.cpp	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hscollectionslistdialog.cpp	Fri Jul 09 14:36:01 2010 +0300
@@ -58,19 +58,19 @@
  to remove from list.
  \retval void
  */
-HsCollectionsListDialog::HsCollectionsListDialog(HsSortAttribute sortOrder,
-        int collectionId) :
+HsCollectionsListDialog::HsCollectionsListDialog(int collectionId) :
     HbSelectionDialog(), mItemId(0)
 {
     clearActions();
-    HbAction *cancelAction = new HbAction(hbTrId("txt_common_button_cancel"), this);
+    HbAction *cancelAction = new HbAction(
+        hbTrId("txt_common_button_cancel"), this);
     addAction(cancelAction);
 
     setHeadingWidget(new HbLabel(hbTrId("txt_applib_title_add_to")));
     // it must be single selection, although it shows checkboxes -
     // it is Orbit defect and will be fixed in next release
     setSelectionMode(HbAbstractItemView::SingleSelection);
-    mModel = standartItemModel(sortOrder, collectionId);
+    mModel = standardItemModel(collectionId);
     setModel(mModel);
 }
 
@@ -96,7 +96,7 @@
     \reimp
     Disconnects signals and calls base class impl. which emits finished(HbAction*)
  */
-void HsCollectionsListDialog::closeEvent ( QCloseEvent * event )
+void HsCollectionsListDialog::closeEvent (QCloseEvent * event)
 {
     qDebug("HsCollectionsListDialog::closeEvent");
     HbAction *closingAction = qobject_cast<HbAction *>(sender());
@@ -118,12 +118,12 @@
  \param collectionId id of collection to remove from model.
  \return QStandardItemModel - caller takes ownership.
  */
-QStandardItemModel *HsCollectionsListDialog::standartItemModel(
-    HsSortAttribute sortOrder, int collectionId)
+QStandardItemModel *HsCollectionsListDialog::standardItemModel(
+    int collectionId)
 {
     HSMENUTEST_FUNC_ENTRY("HsListDialog::standartItemModel");
     QScopedPointer<HsMenuItemModel> caModel(
-        HsMenuService::getAllCollectionsModel(sortOrder));
+        HsMenuService::getAllCollectionsModel());
     caModel->setSecondLineVisibility(false);
     QStandardItemModel *model = new QStandardItemModel(this);
     QList<QStandardItem *> items;
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsdeletecollectionitemstate.cpp	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsdeletecollectionitemstate.cpp	Fri Jul 09 14:36:01 2010 +0300
@@ -15,12 +15,13 @@
  *
  */
 
-#include <hbmessagebox.h>
+#include <HbMessageBox>
 #include <hbaction.h>
 #include <HbParameterLengthLimiter>
 #include <hsmenuservice.h>
 #include <hsmenueventfactory.h>
 
+#include "hsmenudialogfactory.h"
 #include "hsdeletecollectionitemstate.h"
 #include "hsmenuevent.h"
 
@@ -86,18 +87,8 @@
             HsMenuService::getName(mItemId)));
 
     // create and show message box
-    mDeleteMessage = new HbMessageBox(HbMessageBox::MessageTypeQuestion);
-    mDeleteMessage->setAttribute(Qt::WA_DeleteOnClose);
-
-    mDeleteMessage->setText(message);
-
-    mDeleteMessage->clearActions();
-    mConfirmAction = new HbAction(hbTrId("txt_common_button_ok"), mDeleteMessage);
-    mDeleteMessage->addAction(mConfirmAction);
-
-    HbAction *secondaryAction = new HbAction(hbTrId("txt_common_button_cancel"), mDeleteMessage);
-    mDeleteMessage->addAction(secondaryAction);
-
+    mDeleteMessage = HsMenuDialogFactory().create(message);
+    mConfirmAction = mDeleteMessage->actions().value(0);
     mDeleteMessage->open(this, SLOT(deleteMessageFinished(HbAction*)));
 
     HSMENUTEST_FUNC_EXIT("HsDeleteCollectionItemState::onEntry");
@@ -110,10 +101,11 @@
  */
 void HsDeleteCollectionItemState::deleteMessageFinished(HbAction* finishedAction)
 {
-    if (finishedAction == mConfirmAction) {
+    if (static_cast<QAction*>(finishedAction) == mConfirmAction) {
         HsMenuService::removeApplicationFromCollection(mItemId, mCollectionId);
     }
     emit exit();
+    mConfirmAction = NULL;
 }
 
 /*!
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsdeletecollectionstate.cpp	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsdeletecollectionstate.cpp	Fri Jul 09 14:36:01 2010 +0300
@@ -16,7 +16,7 @@
  */
 
 #include <QStateMachine>
-#include <hbmessagebox.h>
+#include <HbMessageBox>
 #include <hbaction.h>
 #include <hsmenuservice.h>
 #include <HbParameterLengthLimiter>
@@ -24,6 +24,7 @@
 #include <hsmenueventfactory.h>
 
 #include "hsdeletecollectionstate.h"
+#include "hsmenudialogfactory.h"
 #include "hsmenuevent.h"
 
 /*!
@@ -91,19 +92,10 @@
     }
 
     // create and show message box
-    mDeleteMessage = new HbMessageBox(HbMessageBox::MessageTypeQuestion);
-    mDeleteMessage->setAttribute(Qt::WA_DeleteOnClose);
-
-    mDeleteMessage->setText(message);
+    mDeleteMessage = HsMenuDialogFactory().create(message);
+    mConfirmAction = mDeleteMessage->actions().value(0);
+    mDeleteMessage->open(this, SLOT(deleteMessageFinished(HbAction*)));
 
-    mDeleteMessage->clearActions();
-    mConfirmAction = new HbAction(hbTrId("txt_common_button_ok"), mDeleteMessage);
-    mDeleteMessage->addAction(mConfirmAction);
-
-    HbAction *secondaryAction = new HbAction(hbTrId("txt_common_button_cancel"), mDeleteMessage);
-    mDeleteMessage->addAction(secondaryAction);
-
-    mDeleteMessage->open(this, SLOT(deleteMessageFinished(HbAction*)));
     HSMENUTEST_FUNC_EXIT("HsDeleteCollectionState::onEntry");
 }
 
@@ -113,12 +105,13 @@
 //
 void HsDeleteCollectionState::deleteMessageFinished(HbAction* finishedAction)
 {
-    if (finishedAction == mConfirmAction) {
+    if (static_cast<QAction*>(finishedAction) == mConfirmAction) {
         HsMenuService::removeCollection(mItemId);
         machine()->postEvent(
         HsMenuEventFactory::createCollectionDeletedEvent());
     }
     emit exit();
+    mConfirmAction = NULL;
 }
 
 /*!
@@ -129,7 +122,6 @@
 {
     // Close messagebox if App key was pressed
     if (mDeleteMessage) {
-        disconnect(mDeleteMessage, SIGNAL(finished(HbAction*)), this, SLOT(deleteMessageFinished(HbAction*)));
         mDeleteMessage->close();
         mDeleteMessage = NULL;
     }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsinstallationlogstate.cpp	Fri Jul 09 14:36:01 2010 +0300
@@ -0,0 +1,167 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description: Menu delete collection item state
+ *
+ */
+
+#include <HbDocumentLoader>
+#include <HbLabel>
+#include <HbMessageBox>
+#include <QAction>
+#include <hsmenuservice.h>
+#include <casoftwareregistry.h>
+
+#include "hsinstallationlogstate.h"
+
+/*!
+ \class HsInstallationLogState
+ \ingroup group_hsworkerstateplugin
+ \brief Uninstall Item State.
+ Deletes app from collection.
+ */
+
+/*!
+ Constructor.
+ \param parent Parent state.
+ */
+HsInstallationLogState::HsInstallationLogState(QState *parent) :
+    QState(parent),
+    mInstalationLogDialog(NULL)
+{
+    construct();
+}
+
+/*!
+ Destructor.
+ */
+HsInstallationLogState::~HsInstallationLogState()
+{
+    cleanUp(); // in case of throw
+}
+
+/*!
+ Constructs contained objects.
+ */
+void HsInstallationLogState::construct()
+{
+    setObjectName("/InstallationLogState");
+    if (this->parent()) {
+        setObjectName(this->parent()->objectName() + objectName());
+    }
+    connect(this, SIGNAL(exited()), SLOT(cleanUp()));
+}
+
+/*!
+ Sets entry event.
+ \param event entry event.
+ */
+void HsInstallationLogState::onEntry(QEvent *event)
+{
+    HSMENUTEST_FUNC_ENTRY("HsInstallationLogState::onEntry");
+    QState::onEntry(event);
+    qDebug("HsInstallationLogState::onEntry()");
+    
+    createInstallationLogDialog();
+
+    HSMENUTEST_FUNC_EXIT("HsInstallationLogState::onEntry");
+}
+
+/*!
+ Invoked on exiting state
+ */
+void HsInstallationLogState::onExit(QEvent *event)
+{
+    QState::onExit(event);
+}
+
+/*!
+ Create installation log dialog.
+ \retval void
+ */
+void HsInstallationLogState::createInstallationLogDialog()
+{
+    QList<CaSoftwareRegistry::DetailMap> detailsList =
+        CaSoftwareRegistry::create()->retrieveLogEntries();
+    
+    HbDocumentLoader loader;
+    bool loadStatusOk = false;
+    loader.load(HS_INSTALLATION_LOG_DIALOG_LAYOUT, &loadStatusOk);
+    Q_ASSERT_X(loadStatusOk, HS_INSTALLATION_LOG_DIALOG_LAYOUT,
+           "Error while loading docml file.");
+
+    mInstalationLogDialog = qobject_cast<HbDialog*>(
+        loader.findWidget(HS_INSTALLATION_LOG_DIALOG_NAME));
+    
+    if (mInstalationLogDialog != NULL) {
+        mInstalationLogDialog->actions()[0]->setParent(mInstalationLogDialog);
+        mInstalationLogDialog->setTimeout(HbPopup::NoTimeout);
+        mInstalationLogDialog->setAttribute(Qt::WA_DeleteOnClose, true);
+    
+        HbLabel* logList;
+        QString applicationsList;
+        QString listElement("%1 (%2)\n%3 - ");
+        QString applicationName;
+        QString version;
+        QString date;
+        QString type;
+        QString installed(hbTrId("txt_applib_dialog_installed"));
+        QString removed(hbTrId("txt_applib_dialog_removed"));
+        QString newLine("\n");
+    
+        logList = qobject_cast<HbLabel*>(
+                loader.findWidget(HS_INSTALLATION_LOG_DIALOG_LOG_LABEL));
+
+        for (int i=0; i<detailsList.count(); i++) {
+            applicationName = detailsList[i].value(CaSoftwareRegistry::componentNameKey());
+            version = detailsList[i].value(CaSoftwareRegistry::componentVersionKey());
+            date = detailsList[i].value(CaSoftwareRegistry::componentTimeKey());
+            QString localListElement(listElement);
+            localListElement = localListElement.arg(applicationName).arg(version).arg(date);
+            type = detailsList[i].value(CaSoftwareRegistry::componentOperationTypeKey());
+            if ((type.compare(CaSoftwareRegistry::componentInstallValue()) == 0) ||
+                (type.compare(CaSoftwareRegistry::componentUpgradeValue()) == 0)) {
+                localListElement = localListElement + installed;
+                applicationsList = applicationsList + localListElement +
+                        newLine + newLine;
+            } else if (type.compare(CaSoftwareRegistry::componentUninstallValue()) == 0) {
+                localListElement = localListElement + removed;
+                applicationsList = applicationsList + localListElement + 
+                        newLine + newLine;
+            }
+        }
+        logList->setPlainText(applicationsList);
+    
+        mInstalationLogDialog->open(this, SLOT(stateExited()));
+    }
+}
+
+void HsInstallationLogState::stateExited()
+{
+    mInstalationLogDialog = NULL;
+    emit exit();
+}
+
+/*!
+ Slot launched after state has exited and in destructor.
+ \retval void
+ */
+void HsInstallationLogState::cleanUp()
+{
+    // Close popups if App key was pressed
+    if (mInstalationLogDialog) {
+        mInstalationLogDialog->close();
+        mInstalationLogDialog = NULL;
+    }
+}
+
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsmenuworkerstate.cpp	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsmenuworkerstate.cpp	Fri Jul 09 14:36:01 2010 +0300
@@ -28,6 +28,7 @@
 #include "hspreviewhswidgetstate.h"
 #include "hsviewappsettingsstate.h"
 #include "hsviewappdetailsstate.h"
+#include "hsinstallationlogstate.h"
 
 /*!
  \class HsMenuWorkerState
@@ -79,7 +80,9 @@
     createChildState<HsUninstallItemState> (
         HsMenuEvent::UninstallApplication);
     createChildState<HsArrangeState> (HsMenuEvent::ArrangeCollection);
+    createChildState<HsArrangeState> (HsMenuEvent::ArrangeAllCollections);
 
+    
     // create a new child state based on the template
     HsCollectionNameState *newChildState = new HsCollectionNameState(this);
     // create a transition to the new child state which will be triggered by
@@ -95,7 +98,8 @@
     mInitialState->addTransition(createCollectionTransition);
     // set a transition to the initial state after child processing finished
     newChildState->addTransition(newChildState, SIGNAL(exit()), mInitialState);
-
+    connect(this, SIGNAL(reset()), newChildState, SIGNAL(exit()));
+    
     HsAddAppsToCollectionState *addAppsToCollectionState =
         new HsAddAppsToCollectionState(this);
     // create a transition to the new child state which will be triggered by
@@ -108,9 +112,12 @@
     addAppsToCollectionState->addTransition(addAppsToCollectionState,
                                             SIGNAL(finished()), mInitialState);
     connect(this, SIGNAL(reset()), addAppsToCollectionState, SIGNAL(finished()));
+    
+    
     createChildState<HsPreviewHSWidgetState> (HsMenuEvent::PreviewHSWidget);
     createChildState<HsViewAppSettingsState> (HsMenuEvent::ShowAppSettings);
     createChildState<HsViewAppDetailsState> (HsMenuEvent::ShowAppDetails);
+    createChildState<HsInstallationLogState> (HsMenuEvent::ShowInstallationLog);
 
     HSMENUTEST_FUNC_EXIT("HsMenuWorkerState::construct");
 }
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hspreviewhswidgetstate.cpp	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hspreviewhswidgetstate.cpp	Fri Jul 09 14:36:01 2010 +0300
@@ -35,6 +35,7 @@
 #include "hswidgethost.h"
 #include "hspreviewhswidgetstate.h"
 #include "hsmenuevent.h"
+#include "hsmenudialogfactory.h"
 #include "hsapp_defs.h"
 #include "hsscene.h"
 #include "hspage.h"
@@ -64,9 +65,10 @@
     QState(parent),
     mPreviewDialog(0),
     mNotifier(0),
-    mWidget(0),
     mEntryId(0),
-    mCorruptedMessage(0)
+    mCorruptedMessage(0),
+    mToken(),
+    mUri()
 {
     setObjectName("/HsPreviewHSWidgetState");
     if (this->parent()) {
@@ -100,32 +102,21 @@
     HSMENUTEST_FUNC_ENTRY("HsPreviewHSWidgetState::onEntry");
     QState::onEntry(event);
     HsMenuEvent *menuEvent = static_cast<HsMenuEvent *>(event);
+   
     QVariantMap data = menuEvent->data();
-
     mEntryId = data.value(itemIdKey()).toInt();
-
-    QVariantHash widgetData;
-    widgetData.insert(LIBRARY, data.value(widgetLibraryAttributeName()).toString());
-    widgetData.insert(URI, data.value(widgetUriAttributeName()).toString());
-
-    mWidget.reset(
-        HsContentService::instance()->createWidgetForPreview(widgetData));
-
-    if (!mWidget.isNull()) {
+    mToken = data.value(HOMESCREENDATA);
+    
         
-        QSharedPointer<CaEntry> entry = 
-            CaService::instance()->getEntry(mEntryId);
-        
-        mPreviewDialog = buildPreviewDialog(*entry);
-        
-        if (mPreviewDialog != NULL) {
-            subscribeForMemoryCardRemove();
-            // Launch popup asyncronously
-            mPreviewDialog->open(this, SLOT(previewDialogFinished(HbAction*)));    
-        }
-    } else {
+    QSharedPointer<CaEntry> entry =
+        CaService::instance()->getEntry(mEntryId);
+    mUri = entry->attribute(widgetUriAttributeName());
+    mPreviewDialog = buildPreviewDialog(*entry);
+
+    if (mPreviewDialog != NULL) {
         subscribeForMemoryCardRemove();
-        showMessageWidgetCorrupted();
+        // Launch popup asyncronously
+        mPreviewDialog->open(this, SLOT(previewDialogFinished(HbAction*)));
     }
 
     HSMENUTEST_FUNC_EXIT("HsPreviewHSWidgetState::onEntry");
@@ -152,7 +143,7 @@
         mCorruptedMessage = NULL;
     }
 
-    mWidget.reset();
+    mToken = NULL;
 
     disconnect(mNotifier,
                SIGNAL(entryChanged(CaEntry,ChangeType)),
@@ -168,21 +159,28 @@
  */
 void HsPreviewHSWidgetState::previewDialogFinished(HbAction* finishedAction)
 {
-    if (finishedAction == mPreviewDialog->actions().value(0)) {
+    if (static_cast<QAction*>(finishedAction) == mPreviewDialog->actions().value(0)) {
 
-        HsScene::instance()->activePage()->addNewWidget(
-            mWidget.take()); // ownership transferred
-        HbNotificationDialog *notificationDialog = new HbNotificationDialog();
-        notificationDialog->setAttribute(Qt::WA_DeleteOnClose);
-        notificationDialog->setTitle(hbTrId(
-                                     "txt_applib_dpophead_added_to_homescreen") );
-        notificationDialog->show();
+        QVariantHash widgetData;
+        widgetData[URI] = mUri;
+        widgetData[HOMESCREENDATA] = mToken;
+        
+        bool success = HsContentService::instance()->createWidget(widgetData);
+        
+        if (success) {
+            HbNotificationDialog *notificationDialog = new HbNotificationDialog();
+            notificationDialog->setAttribute(Qt::WA_DeleteOnClose);
+            notificationDialog->setTitle(hbTrId("txt_applib_dpophead_added_to_homescreen"));
+            notificationDialog->show();
+            emit exit();
+        }
+        else {
+            mPreviewDialog = NULL;
+            showMessageWidgetCorrupted();            
+        }
     } else {
-            mWidget->remove();
-            mWidget.take();   
-            mWidget.reset();
+        emit exit();
     }
-    emit exit();
 }
 
 /*!
@@ -210,20 +208,11 @@
 {
     HSMENUTEST_FUNC_ENTRY("HsCollectionState::showMessageWidgetCorrupted");
 
-    mCorruptedMessage = new HbMessageBox(HbMessageBox::MessageTypeQuestion);
-    mCorruptedMessage->setAttribute(Qt::WA_DeleteOnClose);
-
-    QString message(hbTrId("txt_applib_dialog_file_corrupted_unable_to_use_wi"));
-    mCorruptedMessage->setText(message);
-
-    mCorruptedMessage->clearActions();
-    HbAction *primaryAction = new HbAction(hbTrId("txt_common_button_ok"), mCorruptedMessage);
-    mCorruptedMessage->addAction(primaryAction);
-
-    HbAction *secondaryAction = new HbAction(hbTrId("txt_common_button_cancel"), mCorruptedMessage);
-    mCorruptedMessage->addAction(secondaryAction);
+    mCorruptedMessage = HsMenuDialogFactory().create(
+            hbTrId("txt_applib_dialog_file_corrupted_unable_to_use_wi"));
 
     mCorruptedMessage->open(this, SLOT(messageWidgetCorruptedFinished(HbAction*)));
+
     HSMENUTEST_FUNC_EXIT("HsCollectionState::showMessageWidgetCorrupted");
 }
 
@@ -233,7 +222,7 @@
  */
 void HsPreviewHSWidgetState::messageWidgetCorruptedFinished(HbAction* finishedAction)
 {
-    if (finishedAction == mCorruptedMessage->actions().value(0)) {
+    if (static_cast<QAction*>(finishedAction) == mCorruptedMessage->actions().value(0)) {
         HsMenuService::executeAction(mEntryId, removeActionIdentifier());
     }
     emit exit();
@@ -283,6 +272,8 @@
         if (!previewImageName.isEmpty()) {
             const HbIcon previewImage(previewImageName);
             if (previewImage.size().isValid()) {
+                iconBox->setMinimumHeight(previewImage.height());
+                iconBox->setMaximumHeight(previewImage.height());
                 iconBox->setIcon(previewImage);
             }
         }
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsuninstallitemstate.cpp	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsuninstallitemstate.cpp	Fri Jul 09 14:36:01 2010 +0300
@@ -33,6 +33,7 @@
 
 #include "hsuninstallitemstate.h"
 #include "hsmenuevent.h"
+#include "hsmenudialogfactory.h"
 
 /*!
  \class HsUninstallItemState
@@ -111,9 +112,10 @@
  */
 void HsUninstallItemState::uninstallMessageFinished(HbAction* finishedAction)
 {
-    if (finishedAction == mConfirmAction) {
+    if (static_cast<QAction*>(finishedAction) == mConfirmAction) {
         HsMenuService::executeAction(mItemId, removeActionIdentifier());
     }
+    mConfirmAction = NULL;
     emit exit();
 }
 
@@ -226,20 +228,8 @@
     }
 
     // create and show message box
-    mUninstallMessage = new HbMessageBox(HbMessageBox::MessageTypeQuestion);
-    mUninstallMessage->setAttribute(Qt::WA_DeleteOnClose);
-
-    mUninstallMessage->setText(message);
-
-    mUninstallMessage->clearActions();
-    mConfirmAction = new HbAction(hbTrId("txt_common_button_ok"),
-            mUninstallMessage);
-    mUninstallMessage->addAction(mConfirmAction);
-
-    HbAction *secondaryAction = new HbAction(hbTrId("txt_common_button_cancel"),
-            mUninstallMessage);
-    mUninstallMessage->addAction(secondaryAction);
-
+    mUninstallMessage = HsMenuDialogFactory().create(message);
+    mConfirmAction = mUninstallMessage->actions().value(0);
     mUninstallMessage->open(this, SLOT(uninstallMessageFinished(HbAction*)));
 }
 
@@ -251,7 +241,7 @@
 {
     HbDocumentLoader loader;
     bool loadStatusOk = false;
-    mObjectList = loader.load(HS_UNINSTALL_DIALOG_LAYOUT, &loadStatusOk);
+    loader.load(HS_UNINSTALL_DIALOG_LAYOUT, &loadStatusOk);
     
     Q_ASSERT_X(loadStatusOk,
             HS_UNINSTALL_DIALOG_LAYOUT,
@@ -266,67 +256,71 @@
     if (applicationsNames.isEmpty() && detailsMessage.isEmpty()) {
         mDialogType = UninstallDialogDefinition01;
         section = QString("uninstallDialogDefinition01");
-        mObjectList = loader.load(
+        loader.load(
                 HS_UNINSTALL_DIALOG_LAYOUT, section, &loadStatusOk);
     } else if ( (!applicationsNames.isEmpty()) && (!detailsMessage.isEmpty())) {
         mDialogType = UninstallDialogDefinition02;
         section = QString("uninstallDialogDefinition02");
-        mObjectList = loader.load(
+        loader.load(
                 HS_UNINSTALL_DIALOG_LAYOUT, section, &loadStatusOk);
     } else if ( (!applicationsNames.isEmpty() && detailsMessage.isEmpty())) {
         mDialogType = UninstallDialogDefinition03;
         section = QString("uninstallDialogDefinition03");
-        mObjectList = loader.load(
+        loader.load(
                 HS_UNINSTALL_DIALOG_LAYOUT, section, &loadStatusOk);
     } else if (applicationsNames.isEmpty()  && (!detailsMessage.isEmpty())) {
         mDialogType = UninstallDialogDefinition04;
         section = QString("uninstallDialogDefinition04");
-        mObjectList = loader.load(
+        loader.load(
                 HS_UNINSTALL_DIALOG_LAYOUT, section, &loadStatusOk);
     }
  
     mUninstallJavaMessage = 
         qobject_cast<HbDialog*>(
             loader.findWidget(HS_UNINSTALL_DIALOG_NAME));
+    if (mUninstallJavaMessage != NULL) {
+        mUninstallJavaMessage->setAttribute(Qt::WA_DeleteOnClose);
+        mUninstallJavaMessage->setTimeout(HbPopup::NoTimeout);
+        mUninstallJavaMessage->actions()[0]->setParent(mUninstallJavaMessage);
+        mUninstallJavaMessage->actions()[1]->setParent(mUninstallJavaMessage);
     
-    HbLabel* iconLabel = 
-        qobject_cast<HbLabel*>(
-            loader.findWidget(HS_UNINSTALL_DIALOG_CONFIRMATION_DIALOG_ICON));
-    QSharedPointer<CaEntry> entry2 = CaService::instance()->getEntry(mItemId);
-    HbIcon icon = entry2->makeIcon();
-    iconLabel->setIcon(icon);
+        HbLabel* iconLabel =
+            qobject_cast<HbLabel*>(
+                loader.findWidget(HS_UNINSTALL_DIALOG_CONFIRMATION_DIALOG_ICON));
+        QSharedPointer<CaEntry> entry2 = CaService::instance()->getEntry(mItemId);
+        HbIcon icon = entry2->makeIcon();
+        iconLabel->setIcon(icon);
     
-    HbLabel* textLabel = 
-        qobject_cast<HbLabel*>(
-            loader.findWidget(HS_UNINSTALL_DIALOG_CONFIRMATION_DIALOG_LABEL));
-    textLabel->setPlainText(textLabel->plainText().arg(componentName));
+        HbLabel* textLabel =
+            qobject_cast<HbLabel*>(
+                loader.findWidget(HS_UNINSTALL_DIALOG_CONFIRMATION_DIALOG_LABEL));
+        textLabel->setPlainText(textLabel->plainText().arg(componentName));
     
-    HbLabel* detailsUninstalLabel;
-    if ((mDialogType == UninstallDialogDefinition02) ||
-        (mDialogType == UninstallDialogDefinition04)) {
-        detailsUninstalLabel= qobject_cast<HbLabel*>(
-                loader.findWidget(HS_UNINSTALL_DIALOG_DELETE_LABEL));
-        detailsUninstalLabel->setPlainText(detailsMessage);
-    }
+        HbLabel* detailsUninstalLabel;
+        if ((mDialogType == UninstallDialogDefinition02) ||
+            (mDialogType == UninstallDialogDefinition04)) {
+            detailsUninstalLabel= qobject_cast<HbLabel*>(
+                    loader.findWidget(HS_UNINSTALL_DIALOG_DELETE_LABEL));
+            detailsUninstalLabel->setPlainText(detailsMessage);
+        }
 
-    HbLabel* listView;
-    QString applicationsList;
-    QString newLine("\n");
-    if ((mDialogType == UninstallDialogDefinition02) ||
-        (mDialogType == UninstallDialogDefinition03)) {
-        listView = qobject_cast<HbLabel*>(
-                loader.findWidget(HS_UNINSTALL_DIALOG_LIST_VIEW_LABEL));
+        HbLabel* listView;
+        QString applicationsList;
+        QString newLine("\n");
+        if ((mDialogType == UninstallDialogDefinition02) ||
+            (mDialogType == UninstallDialogDefinition03)) {
+            listView = qobject_cast<HbLabel*>(
+                    loader.findWidget(HS_UNINSTALL_DIALOG_LIST_VIEW_LABEL));
 
-        for (int i=0; i<applicationsNames.count(); i++) {
-            applicationsList = applicationsList + applicationsNames[i] + newLine;
+            for (int i=0; i<applicationsNames.count(); i++) {
+                applicationsList = applicationsList + applicationsNames[i] + newLine;
+            }
+            listView->setPlainText(applicationsList);
         }
-        listView->setPlainText(applicationsList);
+
+        mConfirmAction = qobject_cast<HbAction*>(loader.findObject(
+                HS_UNINSTALL_DIALOG_CONFIRMATION_ACTION));
+    
+        mUninstallJavaMessage->open(this, SLOT(uninstallMessageFinished(HbAction*)));
     }
-
-    mUninstallJavaMessage->setAttribute(Qt::WA_DeleteOnClose);
-    mUninstallJavaMessage->setTimeout(HbPopup::NoTimeout);
-    mConfirmAction = qobject_cast<HbAction*>(loader.findObject(
-            HS_UNINSTALL_DIALOG_CONFIRMATION_ACTION));
-    
-    mUninstallJavaMessage->open(this, SLOT(uninstallMessageFinished(HbAction*)));
 }
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsviewappdetailsstate.cpp	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsviewappdetailsstate.cpp	Fri Jul 09 14:36:01 2010 +0300
@@ -31,10 +31,12 @@
 #include "hsmenuevent.h"
 #include "hsmenuitemmodel.h"
 
+static const char *const HS_VIEWAPPDETAILS_JAVA_DIALOG_SECTION_NAME=
+        "detailsDialogForJavaApplication";
 
 /*!
  Constructor.
- @param parent Parent state.
+ /param parent Parent state.
  */
 HsViewAppDetailsState::HsViewAppDetailsState(QState *parent) :
     QState(parent), mDialog(0), mNotifier(0)
@@ -58,7 +60,7 @@
 void HsViewAppDetailsState::construct()
 {
     HSMENUTEST_FUNC_ENTRY("HsViewAppDetailsState::construct");
-        
+
     setObjectName("/ViewAppDetailsState");
     if (this->parent()) {
         setObjectName(this->parent()->objectName() + objectName());
@@ -75,61 +77,95 @@
     QState::onEntry(event);
     HsMenuEvent *menuEvent = static_cast<HsMenuEvent *>(event);
     QVariantMap data = menuEvent->data();
-    
+
     const int entryId = data.value(itemIdKey()).toInt();
-    QSharedPointer<const CaEntry> entry 
+    QSharedPointer<const CaEntry> entry
         = CaService::instance()->getEntry(entryId);
     const int componentId = entry->attribute(
         componentIdAttributeName()).toInt();
     
     QSharedPointer<CaSoftwareRegistry> scr = CaSoftwareRegistry::create();
     CaSoftwareRegistry::DetailMap detailMap = scr->entryDetails(componentId);
+
+    QString appType = entry->attribute(swTypeKey());
+
+    
+    //TODO: Should we display something In that case?
+    if (detailMap.size() < 1){
+        return;
+    }
     
     HbDocumentLoader loader;
     bool loadStatusOk = false;
-    mObjectList = loader.load(HS_DETAILS_DIALOG_LAYOUT, &loadStatusOk);
+    loader.load(HS_DETAILS_DIALOG_LAYOUT, &loadStatusOk);
     Q_ASSERT_X(loadStatusOk, HS_DETAILS_DIALOG_LAYOUT,
            "Error while loading docml file.");
 
+    if (!appType.compare(javaSwType())) {
+        QString section = QString(HS_VIEWAPPDETAILS_JAVA_DIALOG_SECTION_NAME);
+        loader.load(HS_DETAILS_DIALOG_LAYOUT,
+                                  section, &loadStatusOk);
+    }
+
     mDialog = qobject_cast<HbDialog*>(
         loader.findWidget(HS_DETAILS_DIALOG_NAME));
-    mDialog->actions()[0]->setParent(mDialog);
-    
-    subscribeForMemoryCardRemove(entryId);
-    
-    HbLabel* nameLabel = qobject_cast<HbLabel*>(
-        loader.findWidget(CaSoftwareRegistry::componentNameKey()));
-    HbLabel* versionLabel = qobject_cast<HbLabel*>(
-        loader.findWidget(CaSoftwareRegistry::componentVersionKey()));
-    HbLabel* supplierLabel = qobject_cast<HbLabel*>(
-        loader.findWidget(CaSoftwareRegistry::componentVendorKey()));
-    HbLabel* memoryLabel = qobject_cast<HbLabel*>(
-        loader.findWidget(CaSoftwareRegistry::componentDriveInfoKey()));
-    HbLabel* sizeLabel = qobject_cast<HbLabel*>(
-        loader.findWidget(CaSoftwareRegistry::componentSizeKey()));
-    HbLabel* typeLabel = qobject_cast<HbLabel*>(
-        loader.findWidget(CaSoftwareRegistry::componentTypeKey()));    
-    
-    nameLabel->setPlainText(
-        detailMap[CaSoftwareRegistry::componentNameKey()]);
-    versionLabel->setPlainText(
-        detailMap[CaSoftwareRegistry::componentVersionKey()]);
-    supplierLabel->setPlainText(
-        detailMap[CaSoftwareRegistry::componentVendorKey()]);
-    memoryLabel->setPlainText(
-            detailMap[CaSoftwareRegistry::componentDriveInfoKey()]);
-    sizeLabel->setPlainText(
-        detailMap[CaSoftwareRegistry::componentSizeKey()]);
 
-    typeLabel->setPlainText(
-        detailMap[CaSoftwareRegistry::componentTypeKey()]);
-    
     if (mDialog != NULL) {
         mDialog->setTimeout(HbPopup::NoTimeout);
         mDialog->setAttribute(Qt::WA_DeleteOnClose, true);
+        mDialog->actions()[0]->setParent(mDialog);
+
+        subscribeForMemoryCardRemove(entryId);
+      
+        setFieldPresentation(CaSoftwareRegistry::componentNameKey(),
+            detailMap, loader);
+        setFieldPresentation(CaSoftwareRegistry::componentVersionKey(),
+            detailMap, loader);
+        setFieldPresentation(CaSoftwareRegistry::componentVendorKey(),
+            detailMap, loader);
+        setFieldPresentation(CaSoftwareRegistry::componentDriveInfoKey(),
+            detailMap, loader);
+        setFieldPresentation(CaSoftwareRegistry::componentSizeKey(),
+            detailMap, loader);
+        setFieldPresentation(CaSoftwareRegistry::componentTypeKey(),
+            detailMap, loader);
+
+        if (!appType.compare(javaSwType())) {
+            setFieldPresentation(CaSoftwareRegistry::componentDescriptionKey(),
+                detailMap, loader);
+            setFieldPresentation(CaSoftwareRegistry::componentProtectionDomainKey(),
+                detailMap, loader);
+        }
         mDialog->open(this, SLOT(stateExited())); 
     }
-    HSMENUTEST_FUNC_EXIT("HsViewAppDetailsState::onEntry");    
+    HSMENUTEST_FUNC_EXIT("HsViewAppDetailsState::onEntry");
+}
+
+/*!
+ Extracting label from loader and set content of data field.
+ Hide label if the is no data to display.
+ \param key detail key.
+ \param detailMap detail map.
+ \param loader session to document loader
+ \retval void
+ */
+void HsViewAppDetailsState::setFieldPresentation(QString key,
+        CaSoftwareRegistry::DetailMap &detailMap,
+        HbDocumentLoader &loader)
+{
+    HbLabel* dataLabel = qobject_cast<HbLabel*>(
+                loader.findWidget(key));
+    QString data = detailMap[key];
+    if (data.isEmpty()) {
+        dataLabel->setVisible(false);
+        dataLabel->setMaximumHeight(0);
+        HbLabel* titleLabel = qobject_cast<HbLabel*>(
+            loader.findWidget(QString("_") + key));
+        titleLabel->setVisible(false);
+        titleLabel->setMaximumHeight(0);
+    } else {
+        dataLabel->setPlainText(data);
+    }
 }
 
 /*!
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsviewappsettingsstate.cpp	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsviewappsettingsstate.cpp	Fri Jul 09 14:36:01 2010 +0300
@@ -116,8 +116,7 @@
     mActionConfirm = new HbAction(Hb::ConfirmNaviAction, mView);
     connect(mActionConfirm, SIGNAL(triggered()),SLOT(settingsDone()));
     
-    if(mView)
-        {    
+    if (mView) {    
         subscribeForMemoryCardRemove(entryId);
         QObject::connect(this, SIGNAL(initialize(QString)), mView, SLOT(initialize(QString)));        
         mView->setParent(this);
@@ -132,7 +131,7 @@
         mPreviousView = hbMainWindow->currentView();
         hbMainWindow->setCurrentView(mView);
         hbMainWindow->show();
-        }
+    }
 
     
     HSMENUTEST_FUNC_EXIT("HsViewAppSettingsState::onEntry");