Merge heads.
authorPat Downey <patd@symbian.org>
Wed, 23 Jun 2010 17:05:06 +0100
changeset 56 29d7e0a3b7b2
parent 55 03646e8da489 (diff)
parent 48 11a8fa9275d5 (current diff)
child 57 2e2dc3d30ca8
Merge heads.
homescreenapp/stateplugins/hsapplibrarystateplugin/resource/applibrary.docml
--- a/homescreenapp/common.pri	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/common.pri	Wed Jun 23 17:05:06 2010 +0100
@@ -138,7 +138,7 @@
 }
 }
 
-!exists($${EPOCROOT}epoc32/include/mw/XQSettingsManager) {
+!exists($${EPOCROOT}epoc32/include/platform/mw/XQSettingsManager) {
 	DEFINES += NO_QT_EXTENSIONS
 }
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/examples/localisedhellowidgetplugin/inc/localisedhellowidget.h	Wed Jun 23 17:05:06 2010 +0100
@@ -0,0 +1,55 @@
+/*
+* 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 HELLOWORLDWIDGET_H
+#define HELLOWORLDWIDGET_H
+
+#include <HbWidget>
+
+
+class HbPushButton;
+class QGraphicsPixmapItem;
+class HbIconItem;
+
+class LocalisedHelloWidget : public HbWidget
+{
+    Q_OBJECT
+    Q_PROPERTY(QString rootPath READ rootPath WRITE setRootPath)
+public:
+    LocalisedHelloWidget(QGraphicsItem *parent = 0, Qt::WindowFlags flags = 0);
+    ~LocalisedHelloWidget();
+
+public:
+    QString rootPath()const;
+    void setRootPath(const QString &rootPath);
+public slots:
+    void onInitialize();
+    void onShow();
+    void onHide();
+private slots:
+    void onButtonPressed();
+  
+private:
+    Q_DISABLE_COPY(LocalisedHelloWidget)
+   
+    HbPushButton *mButton;
+    QString mText;
+    QString mRootPath;
+    HbIconItem *mIcon;
+};
+
+#endif // HELLOWORLDWIDGET_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/examples/localisedhellowidgetplugin/inc/localisedhellowidgetplugin.h	Wed Jun 23 17:05:06 2010 +0100
@@ -0,0 +1,36 @@
+/*
+* 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 localised home screen widget
+*
+*/
+
+#ifndef LOCALISEDHELLOWIDGETPLUGIN_H
+#define LOCALISEDHELLOWIDGETPLUGIN_H
+
+#include <QObject>
+#include <qserviceplugininterface.h>
+
+QTM_USE_NAMESPACE
+class LocalisedHelloWidgetPlugin : public QObject, public QServicePluginInterface
+{
+    Q_OBJECT
+    Q_INTERFACES(QtMobility::QServicePluginInterface)
+
+public:
+    QObject *createInstance(const QServiceInterfaceDescriptor &descriptor,
+                            QServiceContext *context,
+                            QAbstractSecuritySession *session);
+};
+
+#endif // LOCALISEDHELLOWIDGETPLUGIN_H
Binary file homescreenapp/examples/localisedhellowidgetplugin/locales/localisedhellowidgetplugin.qm has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/examples/localisedhellowidgetplugin/locales/localisedhellowidgetplugin.ts	Wed Jun 23 17:05:06 2010 +0100
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="3.0" language="en_GB" sourcelanguage="en_GB">
+<context>
+<message numerus="no" id="txt_localisedhellowidgetplugin_button_hello_world2">
+    <comment>Text in widget&apos;s button when widget pressed</comment>        
+    <source>Hello world text</source>
+    <translation variants="no">Hello world text</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>localisedhellowidgetplugin</extra-loc-viewid>
+    <extra-loc-positionid>button</extra-loc-positionid>
+    <extra-loc-feature>lo</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_localisedhellowidgetplugin_dblist_hello_world_desc">
+    <comment>Hello World description in application library </comment>        
+    <source>Home screen example widget</source>
+    <translation variants="no">Home screen example widget</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>localisedhellowidgetplugin</extra-loc-viewid>
+    <extra-loc-positionid>dblist_1_val</extra-loc-positionid>
+    <extra-loc-feature>lo</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_localisedhellowidgetplugin_dblist_hello_world_title">
+    <comment>Hello World title in application library</comment>        
+    <source>Hello world</source>
+    <translation variants="no">Hello world</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>localisedhellowidgetplugin</extra-loc-viewid>
+    <extra-loc-positionid>dblist_1</extra-loc-positionid>
+    <extra-loc-feature>lo</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_localisedhellowidgetplugin_button_hello_world1">
+    <comment>Text in widget&apos;s button</comment>        
+    <source>Hello world</source>
+    <translation variants="no">Hello world</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>localisedhellowidgetplugin</extra-loc-viewid>
+    <extra-loc-positionid>button</extra-loc-positionid>
+    <extra-loc-feature>lo</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+</context>
+</TS>
Binary file homescreenapp/examples/localisedhellowidgetplugin/locales/localisedhellowidgetplugin_en_gb.qm has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/examples/localisedhellowidgetplugin/locales/localisedhellowidgetplugin_en_gb.ts	Wed Jun 23 17:05:06 2010 +0100
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="3.0" language="en_GB" sourcelanguage="en_GB">
+<context>
+<message numerus="no" id="txt_localisedhellowidgetplugin_button_hello_world2">
+    <comment>Text in widget&apos;s button when widget pressed</comment>        
+    <source>Hello world text</source>
+    <translation variants="no">Hello world text</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>localisedhellowidgetplugin</extra-loc-viewid>
+    <extra-loc-positionid>button</extra-loc-positionid>
+    <extra-loc-feature>lo</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_localisedhellowidgetplugin_dblist_hello_world_desc">
+    <comment>Hello World description in application library </comment>        
+    <source>Home screen example widget</source>
+    <translation variants="no">Home screen example widget</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>localisedhellowidgetplugin</extra-loc-viewid>
+    <extra-loc-positionid>dblist_1_val</extra-loc-positionid>
+    <extra-loc-feature>lo</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_localisedhellowidgetplugin_dblist_hello_world_title">
+    <comment>Hello World title in application library</comment>        
+    <source>Hello world</source>
+    <translation variants="no">Hello world</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>localisedhellowidgetplugin</extra-loc-viewid>
+    <extra-loc-positionid>dblist_1</extra-loc-positionid>
+    <extra-loc-feature>lo</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_localisedhellowidgetplugin_button_hello_world1">
+    <comment>Text in widget&apos;s button</comment>        
+    <source>Hello world</source>
+    <translation variants="no">Hello world</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>localisedhellowidgetplugin</extra-loc-viewid>
+    <extra-loc-positionid>button</extra-loc-positionid>
+    <extra-loc-feature>lo</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+</context>
+</TS>
Binary file homescreenapp/examples/localisedhellowidgetplugin/locales/localisedhellowidgetplugin_en_us.qm has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/examples/localisedhellowidgetplugin/locales/localisedhellowidgetplugin_en_us.ts	Wed Jun 23 17:05:06 2010 +0100
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="3.0" language="en_US" sourcelanguage="en_GB">
+<context>
+<message numerus="no" id="txt_localisedhellowidgetplugin_button_hello_world2">
+    <comment>Text in widget&apos;s button when widget pressed</comment>        
+    <source>Hello world text</source>
+    <translation variants="no">Hi dude text</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>localisedhellowidgetplugin</extra-loc-viewid>
+    <extra-loc-positionid>button</extra-loc-positionid>
+    <extra-loc-feature>lo</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_localisedhellowidgetplugin_dblist_hello_world_desc">
+    <comment>Hello World description in application library </comment>        
+    <source>Home screen example widget</source>
+    <translation variants="no">Home screen example widget</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>localisedhellowidgetplugin</extra-loc-viewid>
+    <extra-loc-positionid>dblist_1_val</extra-loc-positionid>
+    <extra-loc-feature>lo</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_localisedhellowidgetplugin_dblist_hello_world_title">
+    <comment>Hello World title in application library</comment>        
+    <source>Hello world</source>
+    <translation variants="no">Hi dude</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>localisedhellowidgetplugin</extra-loc-viewid>
+    <extra-loc-positionid>dblist_1</extra-loc-positionid>
+    <extra-loc-feature>lo</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_localisedhellowidgetplugin_button_hello_world1">
+    <comment>Text in widget&apos;s button</comment>        
+    <source>Hello world</source>
+    <translation variants="no">Hi dude</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>localisedhellowidgetplugin</extra-loc-viewid>
+    <extra-loc-positionid>button</extra-loc-positionid>
+    <extra-loc-feature>lo</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+</context>
+</TS>
Binary file homescreenapp/examples/localisedhellowidgetplugin/locales/localisedhellowidgetplugin_fi.qm has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/examples/localisedhellowidgetplugin/locales/localisedhellowidgetplugin_fi.ts	Wed Jun 23 17:05:06 2010 +0100
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="3.0" language="fi" sourcelanguage="en_GB">
+<context>
+<message numerus="no" id="txt_localisedhellowidgetplugin_button_hello_world2">
+    <comment>Text in widget&apos;s button when widget pressed</comment>        
+    <source>Hello world text</source>
+    <translation variants="no">Moi kaikki!</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>localisedhellowidgetplugin</extra-loc-viewid>
+    <extra-loc-positionid>button</extra-loc-positionid>
+    <extra-loc-feature>lo</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_localisedhellowidgetplugin_dblist_hello_world_desc">
+    <comment>Hello World description in application library </comment>        
+    <source>Home screen example widget</source>
+    <translation variants="no">Kotiruudun esimerkki vimpain</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>localisedhellowidgetplugin</extra-loc-viewid>
+    <extra-loc-positionid>dblist_1_val</extra-loc-positionid>
+    <extra-loc-feature>lo</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_localisedhellowidgetplugin_dblist_hello_world_title">
+    <comment>Hello World title in application library</comment>        
+    <source>Hello world</source>
+    <translation variants="no">Hei maailma</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>localisedhellowidgetplugin</extra-loc-viewid>
+    <extra-loc-positionid>dblist_1</extra-loc-positionid>
+    <extra-loc-feature>lo</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_localisedhellowidgetplugin_button_hello_world1">
+    <comment>Text in widget&apos;s button</comment>        
+    <source>Hello world</source>
+    <translation variants="no">Hei maailma</translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>localisedhellowidgetplugin</extra-loc-viewid>
+    <extra-loc-positionid>button</extra-loc-positionid>
+    <extra-loc-feature>lo</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+</context>
+</TS>
--- a/homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin.pro	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin.pro	Wed Jun 23 17:05:06 2010 +0100
@@ -14,6 +14,58 @@
 # Description: Example of home screen widget
 #
 
-TEMPLATE = subdirs
-SUBDIRS = localisedhellowidgetplugin \
-          localisedhellowidgetplugininstaller
+TEMPLATE = lib
+CONFIG += plugin mobility hb
+MOBILITY = serviceframework
+
+HEADERS += ./inc/*.h
+SOURCES += ./src/*.cpp
+
+INCLUDEPATH += ./inc               
+
+symbian: {
+		    
+    INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
+
+    TARGET.UID3 = 0x20022F80
+    TARGET.EPOCALLOWDLLDATA=1
+    TARGET.CAPABILITY = ALL -TCB
+    
+    DESTDIR = /private/20022F35/import/widgetregistry/20022F80
+    
+    plugins.path = $${DESTDIR}
+    plugins.sources = $${TARGET}.dll 
+    
+    widgetResources.path = $${DESTDIR}
+    widgetResources.sources += resource/$${TARGET}.xml    
+    widgetResources.sources += resource/$${TARGET}.manifest
+    widgetResources.sources += resource/$${TARGET}.png
+    
+    localisedFiles.path = /resource/qt/translations
+    localisedFiles.sources += ./locales/*.qm 
+    
+    DEPLOYMENT += plugins \
+                  widgetResources \
+                  localisedFiles
+}
+
+win32: {
+
+    CONFIG(debug, debug|release) {
+      SUBDIRPART = debug
+    } else {
+      SUBDIRPART = release
+    }    				 
+   
+    PLUGIN_SUBDIR = /private/20022F35/import/widgetregistry/20022F80
+    
+    DESTDIR = $$PWD/../../../../bin/$${SUBDIRPART}/$${PLUGIN_SUBDIR}
+	
+    manifest.path = $${DESTDIR}
+    manifest.files = ./resource/*.manifest ./resource/*.xml ./resource/*.png
+    
+    widgetLocalisation.path = $$PWD/../../../../bin/$${SUBDIRPART}/resource/qt/translations
+    widgetLocalisation.files += ./locales/*.qm 
+        
+    INSTALLS += manifest widgetLocalisation      
+}
--- a/homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin/inc/localisedhellowidget.h	Tue May 18 12:12:12 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-/*
-* 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 HELLOWORLDWIDGET_H
-#define HELLOWORLDWIDGET_H
-
-#include <HbWidget>
-
-
-class HbPushButton;
-class QGraphicsPixmapItem;
-class HbIconItem;
-
-class LocalisedHelloWidget : public HbWidget
-{
-    Q_OBJECT
-    Q_PROPERTY(QString rootPath READ rootPath WRITE setRootPath)
-public:
-    LocalisedHelloWidget(QGraphicsItem *parent = 0, Qt::WindowFlags flags = 0);
-    ~LocalisedHelloWidget();
-
-public:
-    QRectF boundingRect() const;
-    QPainterPath shape() const;
-
-    QString rootPath()const;
-    void setRootPath(const QString &rootPath);
-public slots:
-    void onInitialize();
-    void onShow();
-    void onHide();
-private slots:
-    void onButtonPressed();
-  
-private:
-    Q_DISABLE_COPY(LocalisedHelloWidget)
-   
-    HbPushButton *mButton;
-    QString mText;
-    QString mRootPath;
-    HbIconItem *mIcon;
-};
-
-#endif // HELLOWORLDWIDGET_H
--- a/homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin/inc/localisedhellowidgetplugin.h	Tue May 18 12:12:12 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-/*
-* 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 localised home screen widget
-*
-*/
-
-#ifndef LOCALISEDHELLOWIDGETPLUGIN_H
-#define LOCALISEDHELLOWIDGETPLUGIN_H
-
-#include <QObject>
-#include <qserviceplugininterface.h>
-
-QTM_USE_NAMESPACE
-class LocalisedHelloWidgetPlugin : public QObject, public QServicePluginInterface
-{
-    Q_OBJECT
-    Q_INTERFACES(QtMobility::QServicePluginInterface)
-
-public:
-    QObject *createInstance(const QServiceInterfaceDescriptor &descriptor,
-                            QServiceContext *context,
-                            QAbstractSecuritySession *session);
-};
-
-#endif // LOCALISEDHELLOWIDGETPLUGIN_H
Binary file homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin/locales/localisedhellowidgetplugin.qm has changed
--- a/homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin/locales/localisedhellowidgetplugin.ts	Tue May 18 12:12:12 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="3.0" language="en_GB" sourcelanguage="en_GB">
-<context>
-<message numerus="no" id="localisedhellowidgetplugin_txt_helloview_title_hello_world">
-    <comment>Hello World title</comment>        
-    <source>Hello World</source>
-    <translation variants="no">Hello World</translation>
-    <extra-loc-layout_id></extra-loc-layout_id>    
-    <extra-loc-viewid>helloview</extra-loc-viewid>
-    <extra-loc-positionid>title</extra-loc-positionid>
-    <extra-loc-feature>he</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="localisedhellowidgetplugin_txt_helloview_info_hello">
-    <comment>Hello text</comment>        
-    <source>Hello!</source>
-    <translation variants="no">Hello!</translation>
-    <extra-loc-layout_id></extra-loc-layout_id>    
-    <extra-loc-viewid>helloview</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>he</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-</context>
-</TS>
Binary file homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin/locales/localisedhellowidgetplugin_en_gb.qm has changed
--- a/homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin/locales/localisedhellowidgetplugin_en_gb.ts	Tue May 18 12:12:12 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="3.0" language="en_GB" sourcelanguage="en_GB">
-<context>
-<message numerus="no" id="localisedhellowidgetplugin_txt_helloview_title_hello_world">
-    <comment>Hello World title</comment>        
-    <source>Hello World</source>
-    <translation variants="no">Hello World</translation>
-    <extra-loc-layout_id></extra-loc-layout_id>    
-    <extra-loc-viewid>helloview</extra-loc-viewid>
-    <extra-loc-positionid>title</extra-loc-positionid>
-    <extra-loc-feature>he</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="localisedhellowidgetplugin_txt_helloview_info_hello">
-    <comment>Hello text</comment>        
-    <source>Hello!</source>
-    <translation variants="no">How do you do!</translation>
-    <extra-loc-layout_id></extra-loc-layout_id>    
-    <extra-loc-viewid>helloview</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>he</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-</context>
-</TS>
Binary file homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin/locales/localisedhellowidgetplugin_en_us.qm has changed
--- a/homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin/locales/localisedhellowidgetplugin_en_us.ts	Tue May 18 12:12:12 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="3.0" language="en_GB" sourcelanguage="en_GB">
-<context>
-<message numerus="no" id="localisedhellowidgetplugin_txt_helloview_title_hello_world">
-    <comment>Hello World title</comment>        
-    <source>Hello World</source>
-    <translation variants="no">Hi World</translation>
-    <extra-loc-layout_id></extra-loc-layout_id>    
-    <extra-loc-viewid>helloview</extra-loc-viewid>
-    <extra-loc-positionid>title</extra-loc-positionid>
-    <extra-loc-feature>he</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="localisedhellowidgetplugin_txt_helloview_info_hello">
-    <comment>Hello text</comment>        
-    <source>Hello!</source>
-    <translation variants="no">Hi dude!</translation>
-    <extra-loc-layout_id></extra-loc-layout_id>    
-    <extra-loc-viewid>helloview</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>he</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-</context>
-</TS>
Binary file homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin/locales/localisedhellowidgetplugin_fi.qm has changed
--- a/homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin/locales/localisedhellowidgetplugin_fi.ts	Tue May 18 12:12:12 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="3.0" language="en_GB" sourcelanguage="en_GB">
-<context>
-<message numerus="no" id="localisedhellowidgetplugin_txt_helloview_title_hello_world">
-    <comment>Hello World title</comment>        
-    <source>Hello World</source>
-    <translation variants="no">Hei maa!</translation>
-    <extra-loc-layout_id></extra-loc-layout_id>    
-    <extra-loc-viewid>helloview</extra-loc-viewid>
-    <extra-loc-positionid>title</extra-loc-positionid>
-    <extra-loc-feature>he</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="localisedhellowidgetplugin_txt_helloview_info_hello">
-    <comment>Hello text</comment>        
-    <source>Hello!</source>
-    <translation variants="no">No moro!</translation>
-    <extra-loc-layout_id></extra-loc-layout_id>    
-    <extra-loc-viewid>helloview</extra-loc-viewid>
-    <extra-loc-positionid>info</extra-loc-positionid>
-    <extra-loc-feature>he</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-</context>
-</TS>
--- a/homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin/localisedhellowidgetplugin.pro	Tue May 18 12:12:12 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,71 +0,0 @@
-#
-# 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
-
-HEADERS += ./inc/*.h
-SOURCES += ./src/*.cpp
-
-INCLUDEPATH += ./inc               
-
-symbian: {
-		    
-    INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
-
-    TARGET.UID3 = 0x20022F80
-    TARGET.EPOCALLOWDLLDATA=1
-    TARGET.CAPABILITY = ALL -TCB
-    
-    DESTDIR = /private/20022F35/import/widgetregistry/20022F80
-    
-    plugins.path = $${DESTDIR}
-    plugins.sources = $${TARGET}.dll 
-    
-    widgetResources.path = $${DESTDIR}
-    widgetResources.sources += resource/$${TARGET}.xml    
-    widgetResources.sources += resource/$${TARGET}.manifest
-    widgetResources.sources += resource/$${TARGET}.png
-    
-    localisedFiles.path = /resource/qt/translations
-    localisedFiles.sources += ./locales/*.qm 
-    
-    DEPLOYMENT += plugins \
-                  widgetResources \
-                  localisedFiles
-}
-
-win32: {
-
-    CONFIG(debug, debug|release) {
-      SUBDIRPART = debug
-    } else {
-      SUBDIRPART = release
-    }    				 
-   
-    PLUGIN_SUBDIR = /private/20022F35/import/widgetregistry/20022F80
-    
-    DESTDIR = $$PWD/../../../../../bin/$${SUBDIRPART}/$${PLUGIN_SUBDIR}
-	
-    manifest.path = $${DESTDIR}
-    manifest.files = ./resource/*.manifest ./resource/*.xml ./resource/*.png
-    
-    widgetLocalisation.path = $$PWD/../../../../../bin/$${SUBDIRPART}/resource/qt/translations
-    widgetLocalisation.files += ./locales/*.qm 
-        
-    INSTALLS += manifest widgetLocalisation      
-}
--- a/homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin/resource/localisedhellowidgetplugin.manifest	Tue May 18 12:12:12 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<widgetprovider>
-    <widget library="localisedhellowidgetplugin"
-            uri="localisedhellowidgetplugin"
-            title="Hello"
-            iconuri="localisedhellowidgetplugin.png"
-	    description="Localised widget example."/>
-</widgetprovider>
Binary file homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin/resource/localisedhellowidgetplugin.png has changed
--- a/homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin/resource/localisedhellowidgetplugin.xml	Tue May 18 12:12:12 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<service>
-    <name>localisedhellowidgetplugin</name>
-    <filepath>localisedhellowidgetplugin</filepath>
-    <description>Example widget</description>
-    <interface>
-        <name>com.nokia.symbian.IHomeScreenWidget</name>
-        <version>1.0</version>
-        <description>Example of localised widget</description>
-        <capabilities></capabilities>
-        <customproperty key="iconuri">localisedhellowidgetplugin.png</customproperty>
-        <customproperty key="title">Hello</customproperty>
-    </interface>
-</service>
--- a/homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin/resource/localisedhellowidgetplugin.xml_for_sisx	Tue May 18 12:12:12 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<service>
-    <name>localisedhellowidgetplugin</name>
-    <filepath>c:/private/20022F35/import/widgetregistry/20022F80/localisedhellowidgetplugin.qtplugin</filepath>
-    <description>Localisation example widget</description>
-    <interface>
-        <name>com.nokia.symbian.IHomeScreenWidget</name>
-        <version>1.0</version>
-        <description>Example of localised widget</description>
-        <capabilities></capabilities>
-        <customproperty key="iconuri">localisedhellowidgetplugin.png</customproperty>
-        <customproperty key="title">Hello</customproperty>
-    </interface>
-</service>
--- a/homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin/src/localisedhellowidget.cpp	Tue May 18 12:12:12 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,121 +0,0 @@
-/*
-* 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 <QGraphicsLinearLayout>
-#include <HbLabel>
-#include <HbPushButton> 
-#include <QDir>
-#include <QPainter>
-#include <HbIconItem>
-#include "localisedhellowidget.h"
-
-/*!
-    \ingroup group_helloworld_widget
-    \class LocalisedHelloWidget
-    \brief Example implementation for home screen widget.
-
-    LocalisedHelloWidget derived from the HbWidget and implements 
-    needed functions for the home screen widget. 
-*/
-
-/*!
-    Constructs a widget which is a child of \a parent, with widget flags set to \a flags.
-*/
-LocalisedHelloWidget::LocalisedHelloWidget(QGraphicsItem* parent, Qt::WindowFlags flags)
-    : HbWidget(parent, flags),mIcon(0)
-{
-    QGraphicsLinearLayout* layout = new QGraphicsLinearLayout(Qt::Vertical);
-    setPreferredSize(200,100);
-    setLayout(layout);
-    mButton = new HbPushButton();
-    layout->addItem(mButton);
-   
-    connect(mButton,SIGNAL(pressed()),SLOT(onButtonPressed()));
-
-    
-   
-}
-
-/*!
-    Destructor
-*/
-LocalisedHelloWidget::~LocalisedHelloWidget()
-{
-
-}
-
-/*!
-    Return bounding rect
-*/
-QRectF LocalisedHelloWidget::boundingRect() const
-{
-    return childrenBoundingRect();
-}
-
-/*!
-    Return shape
-*/
-QPainterPath LocalisedHelloWidget::shape() const
-{   
-    QPainterPath path;
-    path.addRect(boundingRect());
-    return path;
-}
-QString LocalisedHelloWidget::rootPath()const
-{
-    return mRootPath;
-}
-
-void LocalisedHelloWidget::setRootPath(const QString &rootPath)
-{
-    mRootPath = rootPath;
-}
-
-void LocalisedHelloWidget::onInitialize()
-{
-    // localisation can be used now
-    mText = hbTrId("localisedhellowidgetplugin_txt_helloview_info_hello");
-    mButton->setText(hbTrId("localisedhellowidgetplugin_txt_helloview_title_hello_world"));
-    // roothPath is set thus we can use it
-    QString iconPath = QDir::toNativeSeparators(mRootPath + "/localisedhellowidgetplugin.png"); 
-    mIcon = new HbIconItem(iconPath);
-    static_cast<QGraphicsLinearLayout*>(layout())->addItem(mIcon);
-   
-  
-}
-
-/*!
-    Called when widget is shown in the home screen
-*/
-void LocalisedHelloWidget::onShow()
-{
-}
-
-/*!
-    Called when widget is hidden from the home screen
-*/
-void LocalisedHelloWidget::onHide()
-{
-}
-
-void LocalisedHelloWidget::onButtonPressed()
-{
-    QString tmp = mButton->text();
-    mButton->setText(mText);
-    mText = tmp;
-}
-
--- a/homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin/src/localisedhellowidgettplugin.cpp	Tue May 18 12:12:12 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,146 +0,0 @@
-/*
-* 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 localised home screen widget
-*
-*/
-
-#include <qserviceinterfacedescriptor.h>
-#include <qabstractsecuritysession.h>
-#include <qservicecontext.h>
-
-#include "localisedhellowidgetplugin.h"
-#include "localisedhellowidget.h"
-
-/**
-    @page page_creating_widget_plugin Creating Home Screen Widget Plugin
-
-    Widgets are exposed to the home screen through QT Service Framework.
-    Widget plugins are implemented according to
-    <a href="http://qt.nokia.com/doc/qtmobility-1.0-tp/service-frameworks.html">Qt service framework plugin model</a>.
-
-    See @ref page_nativewidgetmodel for the instructions how to create widget for the home screen.
-
-    The steps to create a widget plugin are:
-    <ol>
-    <li> Declare a plugin class that inherits from QObject and from the \c QServicePluginInterface interface.
-    
-    <li> Use the Q_INTERFACES() macro to tell Qt's meta-object system about the \c QServicePluginInterface interface.
-    
-    <li> Export the plugin using the Q_EXPORT_PLUGIN2() macro.
-    
-    <li> Build the plugin using an suitable .pro file. See @ref page_deploying_widget_plugin
-    </ol>
-    
-    An example (full example source code can be found from section @ref page_nativewidgetmodel):
-
-    Each widget plugin has a XML file that allows searching widgets through QT service framework without first loading it.
-    The XML file contains information on widgets inside the plugin:
-    
-    \li \c name             The name of the plugin binary.
-    \li \c filepath         The absolute path and name of plugin without suffix
-    \li \c interface name   Uniquely identifies the widget.
-    \li \c title            Widget's human-readable name.
-    \li \c iconuri          URI of the widget's icon image file.
-    
-    Example: XML for a widget plugin.
-    
-    @code
-    <?xml version="1.0" encoding="UTF-8"?>
-    <service>
-        <name>helloworldwidgetplugin</name>
-        <filepath>helloworldwidgetplugin</filepath>
-        <description>Example widget</description>
-        <interface>
-            <name>com.nokia.symbian.IHomeScreenWidget</name>
-            <version>1.0</version>
-            <description>Example of home screen widget</description>
-            <capabilities></capabilities>
-            <customproperty key="iconuri">helloworldwidgetplugin.png</customproperty>
-            <customproperty key="title">HelloWorld</customproperty>
-        </interface>
-    </service>
-    @endcode
-*/
-
-/**
-    @page page_deploying_widget_plugin Deploying Home Screen Widget Plugin
-    
-    Widget's binaries and xml file(s) must be deployed to correct folders on emulator and in target. 
-    Below are the needed .pro file for the \c helloworldwidgetplugin.
-    
-    For example:
-    
-    @code
-    # helloworldwidgetplugin.pro
-
-    TEMPLATE = lib
-    CONFIG += plugin mobility hb
-    MOBILITY = serviceframework
-    
-    HEADERS += ./inc/ .h
-    SOURCES += ./src/ .cpp
-  
-    DESTDIR = $${EPOCROOT}epoc32/data/c/private/20022F35/import/widgetregistry/20022F7E
-    
-    INCLUDEPATH += ./inc               
-    
-    symbian: {
-        INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
-    
-        TARGET.UID3 = 0x20022F7E
-        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}.png
-        
-        DEPLOYMENT += plugins \
-                      widgetResources
-    }
-    
-    @endcode
-    
-    For detailed information on DEPLOYMENT macro, see <a HREF="http://pepper.troll.no/s60prereleases/doc/qmake-variable-reference.html#deployment">here</a>.
-*/
-
-/*!
-    \ingroup group_helloworld_widget
-    \class HelloWorldWidgetPlugin
-    \brief Example implementation for home screen widget plugin.
-*/    
-    
-/*!
-    Initialize plugin for hello world widget. Contains necessary information about 
-    the hello world widget that it can be loaded through QT Service Framework.
-*/
-QObject *LocalisedHelloWidgetPlugin::createInstance(const QServiceInterfaceDescriptor &descriptor,
-                                             QServiceContext *context,
-                                             QAbstractSecuritySession *session)
-{
-    Q_UNUSED(context);
-    Q_UNUSED(session);
-
-    if (descriptor.interfaceName() == QLatin1String("com.nokia.symbian.IHomeScreenWidget")) {
-        return new LocalisedHelloWidget();
-    } else {
-        return 0;
-    }
-}
-
-Q_EXPORT_PLUGIN2(localisedhellowidgetplugin, LocalisedHelloWidgetPlugin)
--- a/homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugininstaller/localisedhellowidgetplugininstaller.cpp	Tue May 18 12:12:12 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-/*
-* 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 <qservicemanager.h>
-#include <QCoreApplication>
-#include <QFile>
-
-QTM_USE_NAMESPACE
-
-const char xml[] = "C:/data/widgets/servicefw/localisedhellowidgetplugin.xml";
-
-int main(int argc, char *argv[])
-{
-    QCoreApplication app(argc, argv);
-
-    QServiceManager s;
-
-	if (QFile::exists(xml)) {
-        s.addService(xml);
-	} else {
-		s.removeService("localisedhellowidgetplugin");
-	}
-}
--- a/homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugininstaller/localisedhellowidgetplugininstaller.pro	Tue May 18 12:12:12 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-#
-# 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 = app
-
-QT = core
-CONFIG += no_icon
-
-CONFIG += mobility
-MOBILITY = serviceframework
-
-SOURCES += localisedhellowidgetplugininstaller.cpp
-
-symbian {    
-    TARGET.CAPABILITY = ALL -TCB
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/examples/localisedhellowidgetplugin/resource/localisedhellowidgetplugin.manifest	Wed Jun 23 17:05:06 2010 +0100
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<hswidgetmanifest>
+    <uri>localisedhellowidgetplugin</uri>
+    <title>txt_localisedhellowidgetplugin_dblist_hello_world_title</title>
+    <description>txt_localisedhellowidgetplugin_dblist_hello_world_desc</description>
+    <icon>localisedhellowidgetplugin.png</icon>
+    <hidden>false</hidden>
+    <servicexml>localisedhellowidgetplugin.xml</servicexml>
+</hswidgetmanifest>
+
Binary file homescreenapp/examples/localisedhellowidgetplugin/resource/localisedhellowidgetplugin.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/examples/localisedhellowidgetplugin/resource/localisedhellowidgetplugin.xml	Wed Jun 23 17:05:06 2010 +0100
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<service>
+    <name>localisedhellowidgetplugin</name>
+    <filepath>localisedhellowidgetplugin</filepath>
+    <interface>
+        <name>com.nokia.symbian.IHomeScreenWidget</name>
+        <version>1.0</version>
+        <capabilities></capabilities>
+    </interface>
+</service>
--- a/homescreenapp/examples/localisedhellowidgetplugin/sis/localisedhellowidgetplugin.pkg	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/examples/localisedhellowidgetplugin/sis/localisedhellowidgetplugin.pkg	Wed Jun 23 17:05:06 2010 +0100
@@ -33,15 +33,16 @@
 [0x102752AE],0,0,0,{"S60ProductID"}
 [0x1028315F],0,0,0,{"S60ProductID"}
  
-"/epoc32/release/armv5/urel/localisedhellowidgetplugin.dll"                                           - "!:/sys/bin/localisedhellowidgetplugin.dll"
-"/epoc32/data/z/private/20022F35/import/widgetregistry/20022F80/localisedhellowidgetplugin.qtplugin"  - "!:/private/20022F35/import/widgetregistry/20022F80/localisedhellowidgetplugin.qtplugin"
-"/epoc32/data/z/private/20022F35/import/widgetregistry/20022F80/localisedhellowidgetplugin.manifest"  - "!:/private/20022F35/import/widgetregistry/20022F80/localisedhellowidgetplugin.manifest"
-"../localisedhellowidgetplugin/resource/localisedhellowidgetplugin.xml_for_sisx"                          - "C:/data/widgets/servicefw/localisedhellowidgetplugin.xml"
-"/epoc32/data/z/private/20022F35/import/widgetregistry/20022F80/localisedhellowidgetplugin.png"       - "!:/private/20022F35/import/widgetregistry/20022F80/localisedhellowidgetplugin.png"
+"../resource/localisedhellowidgetplugin.manifest"                                                       - "!:/private/20022F35/import/widgetregistry/20022F80/localisedhellowidgetplugin.manifest",FM,"application/hs-widget-uninstall+xml",RR,RW
 
-"/epoc32/data/z/resource/qt/translations/localisedhellowidgetplugin.qm"      												- "!:/resource/qt/translations/localisedhellowidgetplugin.qm"
-"/epoc32/data/z/resource/qt/translations/localisedhellowidgetplugin_fi.qm"      											- "!:/resource/qt/translations/localisedhellowidgetplugin_fi.qm"
-"/epoc32/data/z/resource/qt/translations/localisedhellowidgetplugin_en_us.qm"      									- "!:/resource/qt/translations/localisedhellowidgetplugin_en_us.qm"
-"/epoc32/data/z/resource/qt/translations/localisedhellowidgetplugin_en_gb.qm"     										- "!:/resource/qt/translations/localisedhellowidgetplugin_en_gb.qm"  
+"/epoc32/release/armv5/urel/localisedhellowidgetplugin.dll"                                             - "!:/sys/bin/localisedhellowidgetplugin.dll"
+"/epoc32/data/z/private/20022F35/import/widgetregistry/20022F80/localisedhellowidgetplugin.qtplugin"    - "!:/private/20022F35/import/widgetregistry/20022F80/localisedhellowidgetplugin.qtplugin"
+"/epoc32/data/z/private/20022F35/import/widgetregistry/20022F80/localisedhellowidgetplugin.manifest"    - "!:/private/20022F35/import/widgetregistry/20022F80/localisedhellowidgetplugin.manifest"
+"../resource/localisedhellowidgetplugin.xml"                                                            - "!:/data/widgets/servicefw/localisedhellowidgetplugin.xml"
+"/epoc32/data/z/private/20022F35/import/widgetregistry/20022F80/localisedhellowidgetplugin.png"         - "!:/private/20022F35/import/widgetregistry/20022F80/localisedhellowidgetplugin.png"
 
-"/epoc32/release/armv5/urel/localisedhellowidgetplugininstaller.exe" - "!:/sys/bin/localisedhellowidgetplugininstaller.exe", FR, RB, RW
+"/epoc32/data/z/resource/qt/translations/localisedhellowidgetplugin.qm"      						    - "!:/resource/qt/translations/localisedhellowidgetplugin.qm"
+"/epoc32/data/z/resource/qt/translations/localisedhellowidgetplugin_fi.qm"                              - "!:/resource/qt/translations/localisedhellowidgetplugin_fi.qm"
+"/epoc32/data/z/resource/qt/translations/localisedhellowidgetplugin_en_us.qm"      	            	    - "!:/resource/qt/translations/localisedhellowidgetplugin_en_us.qm"
+"/epoc32/data/z/resource/qt/translations/localisedhellowidgetplugin_en_gb.qm"     	                    - "!:/resource/qt/translations/localisedhellowidgetplugin_en_gb.qm"  
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/examples/localisedhellowidgetplugin/sis/localisedhellowidgetplugin_winscw.pkg	Wed Jun 23 17:05:06 2010 +0100
@@ -0,0 +1,48 @@
+;
+; 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
+#{"localisedhellowidgetplugin"},(0x20022F80),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/localisedhellowidgetplugin.manifest"                                                       - "!:/private/20022F35/import/widgetregistry/20022F80/localisedhellowidgetplugin.manifest",FM,"application/hs-widget-uninstall+xml",RR,RW
+
+"/epoc32/release/winscw/udeb/localisedhellowidgetplugin.dll"                                            - "!:/sys/bin/localisedhellowidgetplugin.dll"
+"/epoc32/data/z/private/20022F35/import/widgetregistry/20022F80/localisedhellowidgetplugin.qtplugin"    - "!:/private/20022F35/import/widgetregistry/20022F80/localisedhellowidgetplugin.qtplugin"
+"/epoc32/data/z/private/20022F35/import/widgetregistry/20022F80/localisedhellowidgetplugin.manifest"    - "!:/private/20022F35/import/widgetregistry/20022F80/localisedhellowidgetplugin.manifest"
+"../resource/localisedhellowidgetplugin.xml"                                                            - "!:/private/20022F35/import/widgetregistry/20022F80/localisedhellowidgetplugin.xml"
+"/epoc32/data/z/private/20022F35/import/widgetregistry/20022F80/localisedhellowidgetplugin.png"         - "!:/private/20022F35/import/widgetregistry/20022F80/localisedhellowidgetplugin.png"
+
+"/epoc32/data/z/resource/qt/translations/localisedhellowidgetplugin.qm"      						    - "!:/resource/qt/translations/localisedhellowidgetplugin.qm"
+"/epoc32/data/z/resource/qt/translations/localisedhellowidgetplugin_fi.qm"                              - "!:/resource/qt/translations/localisedhellowidgetplugin_fi.qm"
+"/epoc32/data/z/resource/qt/translations/localisedhellowidgetplugin_en_us.qm"      	            	    - "!:/resource/qt/translations/localisedhellowidgetplugin_en_us.qm"
+"/epoc32/data/z/resource/qt/translations/localisedhellowidgetplugin_en_gb.qm"     	                    - "!:/resource/qt/translations/localisedhellowidgetplugin_en_gb.qm"  
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/examples/localisedhellowidgetplugin/src/localisedhellowidget.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -0,0 +1,115 @@
+/*
+* 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 <QGraphicsLinearLayout>
+#include <HbLabel>
+#include <HbPushButton> 
+#include <QDir>
+#include <QPainter>
+#include <HbIconItem>
+#include "localisedhellowidget.h"
+
+/*!
+    \ingroup group_helloworld_widget
+    \class LocalisedHelloWidget
+    \brief Example implementation for home screen widget.
+
+    LocalisedHelloWidget derived from the HbWidget and implements 
+    needed functions for the home screen widget to demonstrate widget localisation.
+*/
+
+/*!
+    Constructs a widget which is a child of \a parent, with widget flags set to \a flags.
+*/
+LocalisedHelloWidget::LocalisedHelloWidget(QGraphicsItem* parent, Qt::WindowFlags flags)
+    : HbWidget(parent, flags),mIcon(0)
+{
+    QGraphicsLinearLayout* layout = new QGraphicsLinearLayout(Qt::Vertical);
+    setPreferredSize(200,100);
+    setLayout(layout);
+    mButton = new HbPushButton();
+    layout->addItem(mButton);
+   
+    connect(mButton,SIGNAL(pressed()),SLOT(onButtonPressed()));
+}
+
+/*!
+    Destructor
+*/
+LocalisedHelloWidget::~LocalisedHelloWidget()
+{
+
+}
+
+/*!
+    Root path for widget's resources
+*/
+QString LocalisedHelloWidget::rootPath()const
+{
+    return mRootPath;
+}
+
+/*!
+    Set's widget root path as \a rootPath
+*/
+void LocalisedHelloWidget::setRootPath(const QString &rootPath)
+{
+    mRootPath = rootPath;
+}
+
+/*!
+    Called when widget is initialized 
+*/
+void LocalisedHelloWidget::onInitialize()
+{
+    // localisation can be used now
+    mText = hbTrId("txt_localisedhellowidgetplugin_button_hello_world2");
+    QString testing = hbTrId("txt_localisedhellowidgetplugin_button_hello_world2"); 
+    testing = hbTrId("txt_localisedhellowidgetplugin_button_hello_world1"); 
+    testing = hbTrId("txt_localisedhellowidgetplugin_dblist_hello_world_title"); 
+    testing = hbTrId("txt_localisedhellowidgetplugin_dblist_hello_world_desc"); 
+    mButton->setText(hbTrId("txt_localisedhellowidgetplugin_button_hello_world1"));
+    // roothPath is set thus we can use it
+    QString iconPath = QDir::toNativeSeparators(mRootPath + "/localisedhellowidgetplugin.png"); 
+    mIcon = new HbIconItem(iconPath);
+    static_cast<QGraphicsLinearLayout*>(layout())->addItem(mIcon);
+}
+
+/*!
+    Called when widget is shown in the home screen
+*/
+void LocalisedHelloWidget::onShow()
+{
+}
+
+/*!
+    Called when widget is hidden from the home screen
+*/
+void LocalisedHelloWidget::onHide()
+{
+}
+
+/*!
+    Called when button is pressed, toggles between two localised strings.
+*/
+void LocalisedHelloWidget::onButtonPressed()
+{
+    QString tmp = mButton->text();
+    mButton->setText(mText);
+    mText = tmp;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/examples/localisedhellowidgetplugin/src/localisedhellowidgettplugin.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -0,0 +1,146 @@
+/*
+* 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 localised home screen widget
+*
+*/
+
+#include <qserviceinterfacedescriptor.h>
+#include <qabstractsecuritysession.h>
+#include <qservicecontext.h>
+
+#include "localisedhellowidgetplugin.h"
+#include "localisedhellowidget.h"
+
+/**
+    @page page_creating_widget_plugin Creating Home Screen Widget Plugin
+
+    Widgets are exposed to the home screen through QT Service Framework.
+    Widget plugins are implemented according to
+    <a href="http://qt.nokia.com/doc/qtmobility-1.0-tp/service-frameworks.html">Qt service framework plugin model</a>.
+
+    See @ref page_nativewidgetmodel for the instructions how to create widget for the home screen.
+
+    The steps to create a widget plugin are:
+    <ol>
+    <li> Declare a plugin class that inherits from QObject and from the \c QServicePluginInterface interface.
+    
+    <li> Use the Q_INTERFACES() macro to tell Qt's meta-object system about the \c QServicePluginInterface interface.
+    
+    <li> Export the plugin using the Q_EXPORT_PLUGIN2() macro.
+    
+    <li> Build the plugin using an suitable .pro file. See @ref page_deploying_widget_plugin
+    </ol>
+    
+    An example (full example source code can be found from section @ref page_nativewidgetmodel):
+
+    Each widget plugin has a XML file that allows searching widgets through QT service framework without first loading it.
+    The XML file contains information on widgets inside the plugin:
+    
+    \li \c name             The name of the plugin binary.
+    \li \c filepath         The absolute path and name of plugin without suffix
+    \li \c interface name   Uniquely identifies the widget.
+    \li \c title            Widget's human-readable name.
+    \li \c iconuri          URI of the widget's icon image file.
+    
+    Example: XML for a widget plugin.
+    
+    @code
+    <?xml version="1.0" encoding="UTF-8"?>
+    <service>
+        <name>helloworldwidgetplugin</name>
+        <filepath>helloworldwidgetplugin</filepath>
+        <description>Example widget</description>
+        <interface>
+            <name>com.nokia.symbian.IHomeScreenWidget</name>
+            <version>1.0</version>
+            <description>Example of home screen widget</description>
+            <capabilities></capabilities>
+            <customproperty key="iconuri">helloworldwidgetplugin.png</customproperty>
+            <customproperty key="title">HelloWorld</customproperty>
+        </interface>
+    </service>
+    @endcode
+*/
+
+/**
+    @page page_deploying_widget_plugin Deploying Home Screen Widget Plugin
+    
+    Widget's binaries and xml file(s) must be deployed to correct folders on emulator and in target. 
+    Below are the needed .pro file for the \c helloworldwidgetplugin.
+    
+    For example:
+    
+    @code
+    # helloworldwidgetplugin.pro
+
+    TEMPLATE = lib
+    CONFIG += plugin mobility hb
+    MOBILITY = serviceframework
+    
+    HEADERS += ./inc/ .h
+    SOURCES += ./src/ .cpp
+  
+    DESTDIR = $${EPOCROOT}epoc32/data/c/private/20022F35/import/widgetregistry/20022F7E
+    
+    INCLUDEPATH += ./inc               
+    
+    symbian: {
+        INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
+    
+        TARGET.UID3 = 0x20022F7E
+        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}.png
+        
+        DEPLOYMENT += plugins \
+                      widgetResources
+    }
+    
+    @endcode
+    
+    For detailed information on DEPLOYMENT macro, see <a HREF="http://pepper.troll.no/s60prereleases/doc/qmake-variable-reference.html#deployment">here</a>.
+*/
+
+/*!
+    \ingroup group_helloworld_widget
+    \class HelloWorldWidgetPlugin
+    \brief Example implementation for home screen widget plugin.
+*/    
+    
+/*!
+    Initialize plugin for hello world widget. Contains necessary information about 
+    the hello world widget that it can be loaded through QT Service Framework.
+*/
+QObject *LocalisedHelloWidgetPlugin::createInstance(const QServiceInterfaceDescriptor &descriptor,
+                                             QServiceContext *context,
+                                             QAbstractSecuritySession *session)
+{
+    Q_UNUSED(context);
+    Q_UNUSED(session);
+
+    if (descriptor.interfaceName() == QLatin1String("com.nokia.symbian.IHomeScreenWidget")) {
+        return new LocalisedHelloWidget();
+    } else {
+        return 0;
+    }
+}
+
+Q_EXPORT_PLUGIN2(localisedhellowidgetplugin, LocalisedHelloWidgetPlugin)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/examples/pannablewidgetplugin/inc/pannablewidget.h	Wed Jun 23 17:05:06 2010 +0100
@@ -0,0 +1,41 @@
+/*
+* 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 PANNABLEWIDGET_H
+#define PANNABLEWIDGET_H
+
+#include <HbWidget>
+
+class PannableWidget : public HbWidget
+{
+    Q_OBJECT
+
+public:
+    PannableWidget(QGraphicsItem *parent = 0, Qt::WindowFlags flags = 0);
+    ~PannableWidget();
+
+    Q_INVOKABLE bool isPannable(QGraphicsSceneMouseEvent *event);
+public slots:
+    void onShow();
+    void onHide();
+private:
+    QGraphicsItem *findChildItemByName(QGraphicsItem *item, const QString &name);
+private:
+    Q_DISABLE_COPY(PannableWidget)
+};
+
+#endif // PANNABLEWIDGET_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/examples/pannablewidgetplugin/inc/pannablewidgetplugin.h	Wed Jun 23 17:05:06 2010 +0100
@@ -0,0 +1,36 @@
+/*
+* 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 PANNABLEWIDGETPLUGIN_H
+#define PANNABLEWIDGETPLUGIN_H
+
+#include <QObject>
+#include <qserviceplugininterface.h>
+
+QTM_USE_NAMESPACE
+class PannableWidgetPlugin : public QObject, public QServicePluginInterface
+{
+    Q_OBJECT
+    Q_INTERFACES(QtMobility::QServicePluginInterface)
+
+public:
+    QObject *createInstance(const QServiceInterfaceDescriptor &descriptor,
+                            QServiceContext *context,
+                            QAbstractSecuritySession *session);
+};
+
+#endif // PANNABLEWIDGETPLUGIN_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/examples/pannablewidgetplugin/pannablewidgetplugin.pro	Wed Jun 23 17:05:06 2010 +0100
@@ -0,0 +1,64 @@
+#
+# 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
+
+HEADERS += ./inc/*.h
+SOURCES += ./src/*.cpp
+
+INCLUDEPATH += ./inc               
+
+symbian: {
+
+    DESTDIR = /private/20022F35/import/widgetregistry/20022F7C
+    INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
+
+    TARGET.UID3 = 0x20022F7C
+    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}.png
+        
+    DEPLOYMENT += plugins \
+                  widgetResources
+}
+
+win32: {
+
+    CONFIG(debug, debug|release) {
+      SUBDIRPART = debug
+    } else {
+      SUBDIRPART = release
+    }    
+    
+    PLUGIN_SUBDIR = /private/20022F35/import/widgetregistry/20022F7C
+    
+    DESTDIR = $$PWD/../../../../bin/$${SUBDIRPART}/$${PLUGIN_SUBDIR}
+
+    manifest.path = $${DESTDIR}
+    manifest.files = ./resource/*.manifest ./resource/*.xml ./resource/*.png
+    
+    INSTALLS += manifest    
+    
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/examples/pannablewidgetplugin/resource/pannablewidgetplugin.manifest	Wed Jun 23 17:05:06 2010 +0100
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<hswidgetmanifest>
+    <uri>pannablewidgetplugin</uri>
+    <title>Pannable widget</title>
+    <description>Home screen example widget</description>
+    <icon>pannablewidgetplugin.png</icon>
+    <hidden>false</hidden>
+    <servicexml>pannablewidgetplugin.xml</servicexml>
+</hswidgetmanifest>
Binary file homescreenapp/examples/pannablewidgetplugin/resource/pannablewidgetplugin.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/examples/pannablewidgetplugin/resource/pannablewidgetplugin.xml	Wed Jun 23 17:05:06 2010 +0100
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<service>
+    <name>pannablewidgetplugin</name>
+    <filepath>pannablewidgetplugin</filepath>
+    <description>Example widget</description>
+    <interface>
+        <name>com.nokia.symbian.IHomeScreenWidget</name>
+        <version>1.0</version>
+        <description>Example of home screen widget</description>
+        <capabilities></capabilities>
+    </interface>
+</service>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/examples/pannablewidgetplugin/sis/pannablewidgetplugin.bat	Wed Jun 23 17:05:06 2010 +0100
@@ -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 pannablewidgetplugin.sisx del pannablewidgetplugin.sisx
+
+makesis pannablewidgetplugin.pkg
+signsis pannablewidgetplugin.sis pannablewidgetplugin.sisx ../../../sis/rd.cer ../../../sis/rd-key.pem
+
+if exist pannablewidgetplugin.sisx (
+echo pannablewidgetplugin.sisx creation SUCCEEDED
+del pannablewidgetplugin.sis
+)
+
+if not exist pannablewidgetplugin.sisx (
+echo pannablewidgetplugin.sisx creation FAILED
+)
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/examples/pannablewidgetplugin/sis/pannablewidgetplugin.pkg	Wed Jun 23 17:05:06 2010 +0100
@@ -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
+#{"pannablewidgetplugin"},(0x20022F7C),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/pannablewidgetplugin.manifest"                                                       - "!:/private/20022F35/import/widgetregistry/20022F7C/pannablewidgetplugin.manifest",FM,"application/hs-widget-uninstall+xml",RR,RW
+ 
+"/epoc32/release/armv5/urel/pannablewidgetplugin.dll"                                             - "!:/sys/bin/pannablewidgetplugin.dll"
+"/epoc32/data/z/private/20022F35/import/widgetregistry/20022F7C/pannablewidgetplugin.qtplugin"    - "!:/private/20022F35/import/widgetregistry/20022F7C/pannablewidgetplugin.qtplugin"
+"../resource/pannablewidgetplugin.manifest"                                                       - "!:/private/20022F35/import/widgetregistry/20022F7C/pannablewidgetplugin.manifest"
+"../resource/pannablewidgetplugin.xml"                                                            - "!:/private/20022F35/import/widgetregistry/20022F7C/pannablewidgetplugin.xml"
+"/epoc32/data/z/private/20022F35/import/widgetregistry/20022F7C/pannablewidgetplugin.png"         - "!:/private/20022F35/import/widgetregistry/20022F7C/pannablewidgetplugin.png"
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/examples/pannablewidgetplugin/sis/pannablewidgetplugin_winscw.pkg	Wed Jun 23 17:05:06 2010 +0100
@@ -0,0 +1,43 @@
+;
+; 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
+#{"pannablewidgetplugin"},(0x20022F7C),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/pannablewidgetplugin.manifest"                                                       - "!:/private/20022F35/import/widgetregistry/20022F7C/pannablewidgetplugin.manifest",FM,"application/hs-widget-uninstall+xml",RR,RW
+ 
+"/epoc32/release/winscw/udeb/pannablewidgetplugin.dll"                                            - "!:/sys/bin/pannablewidgetplugin.dll"
+"/epoc32/data/z/private/20022F35/import/widgetregistry/20022F7C/pannablewidgetplugin.qtplugin"    - "!:/private/20022F35/import/widgetregistry/20022F7C/pannablewidgetplugin.qtplugin"
+"../resource/pannablewidgetplugin.manifest"                                                       - "!:/private/20022F35/import/widgetregistry/20022F7C/pannablewidgetplugin.manifest"
+"../resource/pannablewidgetplugin.xml"                                                            - "!:/private/20022F35/import/widgetregistry/20022F7C/pannablewidgetplugin.xml"
+"/epoc32/data/z/private/20022F35/import/widgetregistry/20022F7C/pannablewidgetplugin.png"         - "!:/private/20022F35/import/widgetregistry/20022F7C/pannablewidgetplugin.png"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/examples/pannablewidgetplugin/src/pannablewidget.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -0,0 +1,132 @@
+/*
+* 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 <qtDebug>
+
+#include <QGraphicsLinearLayout>
+#include <HbPushButton>
+#include <HbSlider>
+#include <QGraphicsSceneMouseEvent>
+#include <QGraphicsRectItem>
+#include "pannablewidget.h"
+
+
+
+/*!
+    \ingroup group_pannablewidget
+    \class PannableWidget
+    \brief Example implementation for pannable home screen widget.
+
+    Pannable widget demostrates usage of horizontal pan gesture instead of Home Screen using it for
+    page change.
+    
+    To enable horizontal pan gesture widget need to implement isPannable() function. Widget should return true if pannable item's
+    pan region contains event position.  
+*/
+
+
+const int ItemName = 0xfffe;
+
+/*!
+    Constructs a widget which is a child of \a parent, with widget flags set to \a flags.
+*/
+PannableWidget::PannableWidget(QGraphicsItem* parent, Qt::WindowFlags flags)
+    : HbWidget(parent, flags)
+{
+    QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Vertical);
+    layout->setContentsMargins(0.0, 0.0, 0.0, 0.0);
+    setLayout(layout);
+    
+    HbPushButton *button = new HbPushButton("Jenson Button");
+    button->setPreferredSize(QSizeF(200.0,20.0));
+    layout->addItem(button);
+
+    HbSlider *slider = new HbSlider(Qt::Horizontal);
+    slider->setData(ItemName,QLatin1String("slider"));
+    slider->setRange(0,10);
+    slider->setValue(5);
+    layout->addItem(slider);
+
+    
+    QGraphicsRectItem *background = new QGraphicsRectItem();
+    background->setBrush(QBrush(QColor(0x9acd32)));
+    setBackgroundItem(background);
+    
+    resize(200.0, 100.0);
+    background->setRect(rect());
+
+}
+
+/*!
+    Destructor
+*/
+PannableWidget::~PannableWidget()
+{
+}
+/*!
+    Called by Home Screen when pan event is recognized. Given \a event
+    can be used to check whether pannable item contains event position.
+*/
+bool PannableWidget::isPannable(QGraphicsSceneMouseEvent *event)
+{
+    bool ret(false);
+    // Take position in scene coordinates
+    QPointF position = event->buttonDownScenePos(Qt::LeftButton);
+    // find pannable item
+    QGraphicsItem* item = findChildItemByName(this,"slider");
+    // check whether it is event is inside it
+    if (item && item->sceneBoundingRect().contains(position)) {
+        ret = true;
+    }
+    return ret;
+}
+/*!
+    Find \a item childs by given \a name. Uses recursion.
+*/
+QGraphicsItem *PannableWidget::findChildItemByName(QGraphicsItem *item, const QString &name)
+{
+    if (!item) return NULL;
+
+    QList<QGraphicsItem *> children = item->childItems();
+    foreach (QGraphicsItem *child, children) {
+        if(name == child->data(ItemName).toString()) {
+            return child;
+        }
+    }
+    // do recursive search
+    foreach (QGraphicsItem *child, children) {
+        QGraphicsItem* itemFromChild = findChildItemByName(child,name);
+        if (itemFromChild) {
+            return itemFromChild;
+        }
+    }
+    return NULL;
+}
+
+
+/*!
+    Called when widget is shown in the home screen
+*/
+void PannableWidget::onShow()
+{
+}
+
+/*!
+    Called when widget is hidden from the home screen
+*/
+void PannableWidget::onHide()
+{
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/examples/pannablewidgetplugin/src/pannablewidgetplugin.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -0,0 +1,60 @@
+/*
+* 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 "pannablewidgetplugin.h"
+#include "pannablewidget.h"
+
+/**
+    @page page_creating_pannable_widget Creating pannable Home Screen Widget Plugin
+
+    When widget need to use horizontal pan gesture itself, e.g when slider is used
+    it must implement bool isPannable(QGraphicsMouseEvent *)  function. 
+    
+    Home Screen will call this when it recognize a pan gesture on a widget. 
+    By default, horizontal pan gesture is used to switch pages, but if isPannable() 
+    returns true, event is not filtered by Home Screen. 
+*/
+
+/*!
+    \ingroup group_pannablewidget
+    \class PannableWidgetPlugin
+    \brief Example implementation for home screen widget plugin.
+*/    
+    
+/*!
+    Initialize plugin for pannable widget. Contains necessary information about 
+    the pannable widget that it can be loaded through QT Service Framework.
+*/
+QObject *PannableWidgetPlugin::createInstance(const QServiceInterfaceDescriptor &descriptor,
+                                             QServiceContext *context,
+                                             QAbstractSecuritySession *session)
+{
+    Q_UNUSED(context);
+    Q_UNUSED(session);
+
+    if (descriptor.interfaceName() == QLatin1String("com.nokia.symbian.IHomeScreenWidget")) {
+        return new PannableWidget();
+    } else {
+        return 0;
+    }
+}
+
+Q_EXPORT_PLUGIN2(pannablewidgetplugin, PannableWidgetPlugin)
--- a/homescreenapp/hsapplication/conf/base/confml/homescreendb.confml	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/hsapplication/conf/base/confml/homescreendb.confml	Wed Jun 23 17:05:06 2010 +0100
@@ -3,14 +3,6 @@
   <confml:feature ref="HomeScreenDbSettings" name="HomeScreen database settings">
     <confml:setting ref="portraitWallpaper" name="Portrait wallpaper" type="string"/>
     <confml:setting ref="landscapeWallpaper" name="Landscape wallpaper" type="string"/>
-    <confml:setting ref="maximumPageCount" name="Maximum number of pages" type="int"/>
-    <confml:setting ref="maximumWidgetHeight" name="Maximum height of widget" type="real"/>
-    <confml:setting ref="maximumWidgetWidth" name="Maximum width of widget" type="real"/>
-    <confml:setting ref="minimumWidgetHeight" name="Minimum height of widget" type="real"/>
-    <confml:setting ref="minimumWidgetWidth" name="Minimum width of widget" type="real"/>
-    <confml:setting ref="defaultPageId" name="Default page ID" type="selection">
-      <confml:option map="HomeScreenDbSettings/Pages"/>
-    </confml:setting>
     <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"/>
@@ -38,17 +30,57 @@
         <confml:option map="HomeScreenDbSettings/Widgets"/>
       </confml:setting>
     </confml:setting>
+    <confml:setting ref="SnapConfiguration" name="Snap Configuration">
+      <confml:setting ref="snappingEnabled" name="Snap enabled" type="int"/>
+      <confml:setting ref="showEffects" name="Show snap effects" type="int"/>
+      <confml:setting ref="snapForce" name="Snap force" type="real"/>
+      <confml:setting ref="snapGap" name="Snap gap" type="real"/>
+      <confml:setting ref="borderGap" name="Snap border gap" type="real"/>
+      <confml:setting ref="timeout" name="Snap timeout" type="int"/>
+    </confml:setting>
+    <confml:setting ref="FeedbackConfiguration" name="Feedback Configuration">
+      <confml:setting ref="pageChangeFeedbackType" name="Page change feedback delay" type="string"/>
+      <confml:setting ref="widgetPickFeedbackType" name="Widget pick feedback type" type="string"/>
+      <confml:setting ref="widgetDropFeedbackType" name="Widget drop feedback type" type="string"/>
+      <confml:setting ref="widgetRepositionFeedbackType" name="Widget forced reposition feedback type" type="string"/>
+      <confml:setting ref="widgetOverTrashbinFeedbackType" name="Widget move over trashbin feedback type" type="string"/>
+      <confml:setting ref="widgetDropToTrashbinFeedbackType" name="Widget drop to trashbin feedback type" type="string"/>
+      <confml:setting ref="shortcutWidgetTapFeedbackType" name="Shortcut widget tap feedback type" type="string"/>
+      <confml:setting ref="widgetMoveBlockedFeedbackType" name="Widget movement blocked feedback type" type="string"/>
+      <confml:setting ref="clockWidgetTapFeedbackType" name="Clock widget tap feedback type" type="string"/>
+      <confml:setting ref="widgetSnappingFeedbackType" name="Widget snapping feedback type" type="string"/>
+    </confml:setting>
+    <confml:setting ref="GeneralConfiguration" name="General Configuration">
+      <confml:setting ref="bounceEffect" name="Bounce effect" type="int"/>
+      <confml:setting ref="tapAndHoldDistance" name="Tap and hold distance" type="real"/>
+      <confml:setting ref="widgetTapAndHoldTimeout" name="Widget tap and hold timeout" type="int"/>
+      <confml:setting ref="sceneTapAndHoldTimeout" name="Scene tap and hold timeout" type="int"/>
+      <confml:setting ref="pageChangeZoneWidth" name="Page change zone width" type="real"/>
+      <confml:setting ref="pageIndicatorSpacing" name="Page indicator spacing" type="real"/>
+      <confml:setting ref="pageChangeAnimationDuration" name="Page change zone animation duration" type="int"/>
+      <confml:setting ref="pageChangeZoneAnimationDuration" name="Page change zone animation duration" type="int"/>
+      <confml:setting ref="pageChangeZoneReverseAnimationDuration" name="Page change zone reverse animation duration" type="int"/>
+      <confml:setting ref="pageRemovedAnimationDuration" name="Page removed animation duration" type="int"/>
+      <confml:setting ref="newPageAddedAnimationDuration" name="Page added animation duration" type="int"/>
+      <confml:setting ref="widgetDragEffectDuration" name="Widget drag effect duration" type="int"/>
+      <confml:setting ref="widgetDropEffectDuration" name="Widget drop effect duration" type="int"/>
+      <confml:setting ref="boundaryFeedbackEffectDistance" name="Boundary feedback effect distance" type="int"/>
+      <confml:setting ref="maximumPageCount" name="Maximum number of pages" type="int"/>
+      <confml:setting ref="maximumWidgetHeight" name="Maximum height of widget" type="real"/>
+      <confml:setting ref="maximumWidgetWidth" name="Maximum width of widget" type="real"/>
+      <confml:setting ref="minimumWidgetHeight" name="Minimum height of widget" type="real"/>
+      <confml:setting ref="minimumWidgetWidth" name="Minimum width of widget" type="real"/>
+      <confml:setting ref="defaultPageId" name="Default page ID" type="selection">
+        <confml:option map="HomeScreenDbSettings/Pages"/>
+      </confml:setting>
+      <confml:setting ref="shortcutLabelsVisible" name="Minimum width of widget" type="int"/>     
+      <confml:setting ref="pageChangePanDistance" name="Amount of pan needed to change page" type="real"/>     
+    </confml:setting>
   </confml:feature>
   <confml:data>
     <confml:HomeScreenDbSettings>
       <confml:landscapeWallpaper/>
       <confml:portraitWallpaper/>
-      <confml:maximumPageCount>8</confml:maximumPageCount>
-      <confml:maximumWidgetHeight>39</confml:maximumWidgetHeight>
-      <confml:maximumWidgetWidth>48</confml:maximumWidgetWidth>
-      <confml:minimumWidgetHeight>8.75</confml:minimumWidgetHeight>
-      <confml:minimumWidgetWidth>8.75</confml:minimumWidgetWidth>
-      <confml:defaultPageId map="HomeScreenDbSettings/Pages[@key='1']"/>
       <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>
@@ -92,6 +124,50 @@
       <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:SnapConfiguration>
+      	<confml:snappingEnabled>1</confml:snappingEnabled>
+      	<confml:showEffects>1</confml:showEffects>
+      	<confml:snapForce>30.0</confml:snapForce>
+      	<confml:snapGap>6.0</confml:snapGap>
+      	<confml:borderGap>0.0</confml:borderGap>
+      	<confml:timeout>500</confml:timeout>
+      </confml:SnapConfiguration> 
+      <confml:FeedbackConfiguration>
+      	<confml:pageChangeFeedbackType>Sensitive</confml:pageChangeFeedbackType>
+      	<confml:widgetPickFeedbackType>ItemPick</confml:widgetPickFeedbackType>
+      	<confml:widgetDropFeedbackType>ItemDrop</confml:widgetDropFeedbackType> 
+      	<confml:widgetRepositionFeedbackType>BounceEffect</confml:widgetRepositionFeedbackType> 
+      	<confml:widgetOverTrashbinFeedbackType>ItemMoveOver</confml:widgetOverTrashbinFeedbackType>
+      	<confml:widgetDropToTrashbinFeedbackType>ItemDrop</confml:widgetDropToTrashbinFeedbackType> 
+      	<confml:shortcutWidgetTapFeedbackType>BasicItem</confml:shortcutWidgetTapFeedbackType> 
+      	<confml:widgetMoveBlockedFeedbackType>Basic</confml:widgetMoveBlockedFeedbackType> 
+      	<confml:clockWidgetTapFeedbackType>BasicItem</confml:clockWidgetTapFeedbackType> 
+      	<confml:widgetSnappingFeedbackType>ItemMoveOver</confml:widgetSnappingFeedbackType>
+      </confml:FeedbackConfiguration>
+      <confml:GeneralConfiguration>
+      	<confml:bounceEffect>20</confml:bounceEffect>
+      	<confml:tapAndHoldDistance>16</confml:tapAndHoldDistance>
+      	<confml:widgetTapAndHoldTimeout>500</confml:widgetTapAndHoldTimeout>
+      	<confml:sceneTapAndHoldTimeout>500</confml:sceneTapAndHoldTimeout>
+      	<confml:pageChangeZoneWidth>60</confml:pageChangeZoneWidth>
+      	<confml:pageIndicatorSpacing>8</confml:pageIndicatorSpacing>
+      	<confml:pageChangeAnimationDuration>200</confml:pageChangeAnimationDuration>
+      	<confml:pageChangeZoneAnimationDuration>800</confml:pageChangeZoneAnimationDuration>
+      	<confml:pageChangeZoneReverseAnimationDuration>200</confml:pageChangeZoneReverseAnimationDuration>
+      	<confml:pageRemovedAnimationDuration>200</confml:pageRemovedAnimationDuration>
+      	<confml:newPageAddedAnimationDuration>700</confml:newPageAddedAnimationDuration>
+      	<confml:widgetDragEffectDuration>200</confml:widgetDragEffectDuration>
+      	<confml:widgetDropEffectDuration>200</confml:widgetDropEffectDuration>
+      	<confml:boundaryFeedbackEffectDistance>3</confml:boundaryFeedbackEffectDistance>
+        <confml:maximumPageCount>8</confml:maximumPageCount>
+        <confml:maximumWidgetHeight>39</confml:maximumWidgetHeight>
+        <confml:maximumWidgetWidth>48</confml:maximumWidgetWidth>
+        <confml:minimumWidgetHeight>8.75</confml:minimumWidgetHeight>
+        <confml:minimumWidgetWidth>8.75</confml:minimumWidgetWidth> 
+       	<confml:defaultPageId map="HomeScreenDbSettings/Pages[@key='1']"/>
+        <confml:shortcutLabelsVisible>1</confml:shortcutLabelsVisible>
+        <confml:pageChangePanDistance>17.91</confml:pageChangePanDistance>           	
+      </confml:GeneralConfiguration>
     </confml:HomeScreenDbSettings>
   </confml:data>
 </confml:configuration>
\ No newline at end of file
--- a/homescreenapp/hsapplication/conf/base/implml/homescreendb_templates/create.sql	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/hsapplication/conf/base/implml/homescreendb_templates/create.sql	Wed Jun 23 17:05:06 2010 +0100
@@ -2,13 +2,7 @@
 CREATE TABLE Scene (
   id INTEGER PRIMARY KEY,
   portraitWallpaper TEXT,
-  landscapeWallpaper TEXT,
-  defaultPageId INTEGER,
-  maximumPageCount INTEGER,
-  maximumWidgetHeight REAL,
-  maximumWidgetWidth REAL,
-  minimumWidgetHeight REAL,
-  minimumWidgetWidth REAL);
+  landscapeWallpaper TEXT);
 
 DROP TABLE IF EXISTS Pages;
 CREATE TABLE Pages (
@@ -38,3 +32,51 @@
   widgetId INTEGER,
   UNIQUE(widgetId, key) ON CONFLICT REPLACE,
   FOREIGN KEY(widgetId) REFERENCES Widgets(id) ON DELETE CASCADE);
+
+DROP TABLE IF EXISTS SnapConfiguration;
+CREATE TABLE SnapConfiguration (
+	snappingEnabled INTEGER,
+	showEffects INTEGER,
+	snapForce REAL,
+	snapGap REAL,
+	borderGap REAL,
+	timeout INTEGER);
+	
+DROP TABLE IF EXISTS FeedbackConfiguration;
+CREATE TABLE FeedbackConfiguration (
+  pageChangeFeedbackType TEXT,
+  widgetPickFeedbackType TEXT, 
+  widgetDropFeedbackType TEXT,
+  widgetRepositionFeedbackType TEXT,
+  widgetOverTrashbinFeedbackType TEXT,
+  widgetDropToTrashbinFeedbackType TEXT,
+  shortcutWidgetTapFeedbackType TEXT,
+  widgetMoveBlockedFeedbackType TEXT,
+  clockWidgetTapFeedbackType TEXT,
+  widgetSnappingFeedbackType TEXT);
+
+DROP TABLE IF EXISTS GeneralConfiguration;
+CREATE TABLE GeneralConfiguration (
+  bounceEffect INTEGER, 
+  tapAndHoldDistance REAL, 
+  widgetTapAndHoldTimeout INTEGER,
+  sceneTapAndHoldTimeout INTEGER,  
+  pageChangeZoneWidth REAL,
+  pageIndicatorSpacing REAL,
+  pageChangeAnimationDuration INTEGER,
+  pageChangeZoneAnimationDuration INTEGER,
+  pageChangeZoneReverseAnimationDuration INTEGER,
+  pageRemovedAnimationDuration INTEGER, 
+  newPageAddedAnimationDuration INTEGER, 
+  widgetDragEffectDuration INTEGER, 
+  widgetDropEffectDuration INTEGER,
+  boundaryFeedbackEffectDistance INTEGER,
+  defaultPageId INTEGER,
+  maximumPageCount INTEGER,
+  maximumWidgetHeight REAL,
+  maximumWidgetWidth REAL,
+  minimumWidgetHeight REAL,
+  minimumWidgetWidth REAL,
+  shortcutLabelsVisible INTEGER,
+  pageChangePanDistance REAL);
+ 
\ No newline at end of file
--- a/homescreenapp/hsapplication/conf/base/implml/homescreendb_templates/fill.sql	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/hsapplication/conf/base/implml/homescreendb_templates/fill.sql	Wed Jun 23 17:05:06 2010 +0100
@@ -1,12 +1,6 @@
 {%- set portraitWallpaper = feat_tree.HomeScreenDbSettings.portraitWallpaper._value or '' -%}
 {%- set landscapeWallpaper = feat_tree.HomeScreenDbSettings.landscapeWallpaper._value or '' -%}
-{%- set defaultPageId = feat_tree.HomeScreenDbSettings.defaultPageId._value -%}
-{%- set maximumPageCount = feat_tree.HomeScreenDbSettings.maximumPageCount._value -%}
-{%- set maximumWidgetHeight = feat_tree.HomeScreenDbSettings.maximumWidgetHeight._value -%}
-{%- set maximumWidgetWidth = feat_tree.HomeScreenDbSettings.maximumWidgetWidth._value -%}
-{%- set minimumWidgetHeight = feat_tree.HomeScreenDbSettings.minimumWidgetHeight._value -%}
-{%- set minimumWidgetWidth = feat_tree.HomeScreenDbSettings.minimumWidgetWidth._value -%}
-INSERT INTO Scene (portraitWallpaper, landscapeWallpaper, defaultPageId, maximumPageCount, maximumWidgetHeight, maximumWidgetWidth, minimumWidgetHeight, minimumWidgetWidth) VALUES ('{{portraitWallpaper}}', '{{landscapeWallpaper}}', {{defaultPageId}}, {{maximumPageCount}}, {{maximumWidgetHeight}}, {{maximumWidgetWidth}}, {{minimumWidgetHeight}}, {{minimumWidgetWidth}});
+INSERT INTO Scene (portraitWallpaper, landscapeWallpaper) VALUES ('{{portraitWallpaper}}', '{{landscapeWallpaper}}');
 
 {% for index in range(feat_tree.HomeScreenDbSettings.Pages._value|length) -%}
     {%- set id = feat_tree.HomeScreenDbSettings.Pages.id._value[index] -%}
@@ -39,3 +33,48 @@
     
     INSERT INTO WidgetPreferences (key, value, widgetId) VALUES ('{{key}}', '{{value}}', {{widgetId}});
 {% endfor %}
+
+{%- set snappingEnabled = feat_tree.HomeScreenDbSettings.SnapConfiguration.snappingEnabled._value -%}    
+{%- set showEffects = feat_tree.HomeScreenDbSettings.SnapConfiguration.showEffects._value -%} 
+{%- set snapForce = feat_tree.HomeScreenDbSettings.SnapConfiguration.snapForce._value -%}    
+{%- set snapGap = feat_tree.HomeScreenDbSettings.SnapConfiguration.snapGap._value -%}    
+{%- set borderGap = feat_tree.HomeScreenDbSettings.SnapConfiguration.borderGap._value -%}    
+{%- set timeout = feat_tree.HomeScreenDbSettings.SnapConfiguration.timeout._value -%}    
+INSERT INTO SnapConfiguration (snappingEnabled, showEffects, snapForce, snapGap, borderGap, timeout) VALUES ({{snappingEnabled}}, {{showEffects}}, {{snapForce}}, {{snapGap}}, {{borderGap}}, {{timeout}});
+
+{%- set bounceEffect = feat_tree.HomeScreenDbSettings.GeneralConfiguration.bounceEffect._value -%}
+{%- set tapAndHoldDistance = feat_tree.HomeScreenDbSettings.GeneralConfiguration.tapAndHoldDistance._value -%}
+{%- set widgetTapAndHoldTimeout = feat_tree.HomeScreenDbSettings.GeneralConfiguration.widgetTapAndHoldTimeout._value -%}
+{%- set sceneTapAndHoldTimeout = feat_tree.HomeScreenDbSettings.GeneralConfiguration.sceneTapAndHoldTimeout._value -%}
+{%- set pageChangeZoneWidth = feat_tree.HomeScreenDbSettings.GeneralConfiguration.pageChangeZoneWidth._value -%}
+{%- set pageIndicatorSpacing = feat_tree.HomeScreenDbSettings.GeneralConfiguration.pageIndicatorSpacing._value -%}
+{%- set pageChangeAnimationDuration = feat_tree.HomeScreenDbSettings.GeneralConfiguration.pageChangeAnimationDuration._value -%}
+{%- set pageChangeZoneAnimationDuration = feat_tree.HomeScreenDbSettings.GeneralConfiguration.pageChangeZoneAnimationDuration._value -%}
+{%- set pageChangeZoneReverseAnimationDuration = feat_tree.HomeScreenDbSettings.GeneralConfiguration.pageChangeZoneReverseAnimationDuration._value -%}
+{%- set pageRemovedAnimationDuration = feat_tree.HomeScreenDbSettings.GeneralConfiguration.pageRemovedAnimationDuration._value -%}
+{%- set newPageAddedAnimationDuration = feat_tree.HomeScreenDbSettings.GeneralConfiguration.newPageAddedAnimationDuration._value -%}
+{%- set widgetDragEffectDuration = feat_tree.HomeScreenDbSettings.GeneralConfiguration.widgetDragEffectDuration._value -%}
+{%- set widgetDropEffectDuration = feat_tree.HomeScreenDbSettings.GeneralConfiguration.widgetDropEffectDuration._value -%}
+{%- set boundaryFeedbackEffectDistance = feat_tree.HomeScreenDbSettings.GeneralConfiguration.boundaryFeedbackEffectDistance._value -%}
+{%- set defaultPageId = feat_tree.HomeScreenDbSettings.GeneralConfiguration.defaultPageId._value -%}
+{%- set maximumPageCount = feat_tree.HomeScreenDbSettings.GeneralConfiguration.maximumPageCount._value -%}
+{%- set maximumWidgetHeight = feat_tree.HomeScreenDbSettings.GeneralConfiguration.maximumWidgetHeight._value -%}
+{%- set maximumWidgetWidth = feat_tree.HomeScreenDbSettings.GeneralConfiguration.maximumWidgetWidth._value -%}
+{%- set minimumWidgetHeight = feat_tree.HomeScreenDbSettings.GeneralConfiguration.minimumWidgetHeight._value -%}
+{%- set minimumWidgetWidth = feat_tree.HomeScreenDbSettings.GeneralConfiguration.minimumWidgetWidth._value -%}
+{%- set shortcutLabelsVisible = feat_tree.HomeScreenDbSettings.GeneralConfiguration.shortcutLabelsVisible._value -%}
+{%- set pageChangePanDistance = feat_tree.HomeScreenDbSettings.GeneralConfiguration.pageChangePanDistance._value -%}
+INSERT INTO GeneralConfiguration (bounceEffect, tapAndHoldDistance, widgetTapAndHoldTimeout, sceneTapAndHoldTimeout, pageChangeZoneWidth, pageIndicatorSpacing, pageChangeAnimationDuration, pageChangeZoneAnimationDuration, pageChangeZoneReverseAnimationDuration, pageRemovedAnimationDuration, newPageAddedAnimationDuration, widgetDragEffectDuration, widgetDropEffectDuration, boundaryFeedbackEffectDistance, defaultPageId, maximumPageCount, maximumWidgetHeight, maximumWidgetWidth, minimumWidgetHeight, minimumWidgetWidth, shortcutLabelsVisible, pageChangePanDistance) VALUES ({{bounceEffect}}, {{tapAndHoldDistance}}, {{widgetTapAndHoldTimeout}}, {{widgetTapAndHoldTimeout}}, {{pageChangeZoneWidth}}, {{pageIndicatorSpacing}}, {{pageChangeAnimationDuration}}, {{pageChangeZoneAnimationDuration}}, {{pageChangeZoneReverseAnimationDuration}}, {{pageRemovedAnimationDuration}}, {{newPageAddedAnimationDuration}}, {{widgetDragEffectDuration}}, {{widgetDropEffectDuration}}, {{boundaryFeedbackEffectDistance}}, {{defaultPageId}}, {{maximumPageCount}}, {{maximumWidgetHeight}}, {{maximumWidgetWidth}}, {{minimumWidgetHeight}}, {{minimumWidgetWidth}}, {{shortcutLabelsVisible}}, {{pageChangePanDistance}});
+
+{%- set pageChangeFeedbackType = feat_tree.HomeScreenDbSettings.FeedbackConfiguration.pageChangeFeedbackType._value -%}
+{%- set widgetPickFeedbackType = feat_tree.HomeScreenDbSettings.FeedbackConfiguration.widgetPickFeedbackType._value -%}
+{%- set widgetDropFeedbackType = feat_tree.HomeScreenDbSettings.FeedbackConfiguration.widgetDropFeedbackType._value -%}
+{%- set widgetRepositionFeedbackType = feat_tree.HomeScreenDbSettings.FeedbackConfiguration.widgetRepositionFeedbackType._value -%}
+{%- set widgetOverTrashbinFeedbackType = feat_tree.HomeScreenDbSettings.FeedbackConfiguration.widgetOverTrashbinFeedbackType._value -%}
+{%- set widgetDropToTrashbinFeedbackType = feat_tree.HomeScreenDbSettings.FeedbackConfiguration.widgetDropToTrashbinFeedbackType._value -%}
+{%- set shortcutWidgetTapFeedbackType = feat_tree.HomeScreenDbSettings.FeedbackConfiguration.shortcutWidgetTapFeedbackType._value -%}
+{%- set widgetMoveBlockedFeedbackType = feat_tree.HomeScreenDbSettings.FeedbackConfiguration.widgetMoveBlockedFeedbackType._value -%}
+{%- set clockWidgetTapFeedbackType = feat_tree.HomeScreenDbSettings.FeedbackConfiguration.clockWidgetTapFeedbackType._value -%}
+{%- set widgetSnappingFeedbackType = feat_tree.HomeScreenDbSettings.FeedbackConfiguration.widgetSnappingFeedbackType._value -%}
+INSERT INTO FeedbackConfiguration (pageChangeFeedbackType, widgetPickFeedbackType, widgetDropFeedbackType, widgetRepositionFeedbackType, widgetOverTrashbinFeedbackType, widgetDropToTrashbinFeedbackType, shortcutWidgetTapFeedbackType, widgetMoveBlockedFeedbackType, clockWidgetTapFeedbackType, widgetSnappingFeedbackType) VALUES ('{{pageChangeFeedbackType}}', '{{widgetPickFeedbackType}}', '{{widgetDropFeedbackType}}', '{{widgetRepositionFeedbackType}}', '{{widgetOverTrashbinFeedbackType}}', '{{widgetDropToTrashbinFeedbackType}}', '{{shortcutWidgetTapFeedbackType}}', '{{widgetMoveBlockedFeedbackType}}', '{{clockWidgetTapFeedbackType}}', '{{widgetSnappingFeedbackType}}');
+
--- a/homescreenapp/hsapplication/hsapplication_fallbacktheme.qrc	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/hsapplication/hsapplication_fallbacktheme.qrc	Wed Jun 23 17:05:06 2010 +0100
@@ -1,13 +1,5 @@
 <RCC>
     <qresource prefix="/" >
-        <file>themes/icons/hbdefault/scalable/qtg_mono_applications_all.svg</file>
-        <file>themes/icons/hbdefault/scalable/qtg_mono_applications_collections.svg</file>
-        <file>themes/icons/hbdefault/scalable/qtg_mono_search.svg</file>
-        <file>themes/icons/hbdefault/scalable/qtg_mono_ovistore.svg</file>
-        <file>themes/icons/hbdefault/scalable/qtg_large_applications_download.svg</file>
-        <file>themes/icons/hbdefault/scalable/qtg_large_applications_user.svg</file>
-        <file>themes/icons/hbdefault/scalable/qtg_large_super_new.svg</file>
-
         <file>themes/icons/hbdefault/scalable/qtg_graf_hspage_normal.svg</file>
         <file>themes/icons/hbdefault/scalable/qtg_graf_hspage_highlight.svg</file>
         <file>themes/icons/hbdefault/scalable/hs_shortcut_bg.svg</file>
@@ -62,16 +54,5 @@
         <file>themes/icons/hbdefault/scalable/qtg_fr_hsitems_pressed_t.svg</file>
         <file>themes/icons/hbdefault/scalable/qtg_fr_hsitems_pressed_tl.svg</file>
         <file>themes/icons/hbdefault/scalable/qtg_fr_hsitems_pressed_tr.svg</file>
-
-        <file>themes/icons/hbdefault/scalable/qtg_anim_longtap_0.svg</file>
-        <file>themes/icons/hbdefault/scalable/qtg_anim_longtap_1.svg</file>
-        <file>themes/icons/hbdefault/scalable/qtg_anim_longtap_2.svg</file>
-        <file>themes/icons/hbdefault/scalable/qtg_anim_longtap_3.svg</file>
-        <file>themes/icons/hbdefault/scalable/qtg_anim_longtap_4.svg</file>
-        <file>themes/icons/hbdefault/scalable/qtg_anim_longtap_5.svg</file>
-        <file>themes/icons/hbdefault/scalable/qtg_anim_longtap_6.svg</file>
-        <file>themes/icons/hbdefault/scalable/qtg_anim_longtap_7.svg</file>
-        <file>themes/icons/hbdefault/scalable/qtg_anim_longtap_8.svg</file>
-        <file>themes/icons/hbdefault/scalable/qtg_anim_longtap_9.svg</file>
     </qresource>
 </RCC>
Binary file homescreenapp/hsapplication/resource_s60/d_landscape.png has changed
Binary file homescreenapp/hsapplication/resource_s60/d_portrait.png has changed
Binary file homescreenapp/hsapplication/resource_s60/homescreen.db has changed
Binary file homescreenapp/hsapplication/resource_win/d_landscape.png has changed
Binary file homescreenapp/hsapplication/resource_win/d_portrait.png has changed
Binary file homescreenapp/hsapplication/resource_win/homescreen.db has changed
--- a/homescreenapp/hsapplication/src/hshomescreenclientserviceprovider.cpp	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/hsapplication/src/hshomescreenclientserviceprovider.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -28,8 +28,7 @@
 #include "hsdatabase.h"
 #include "hswallpaperhelper.h"
 #include "hswidgetcomponentregistry.h"
-
-#define HSBOUNDARYEFFECT 20 // amount of extra pixels in wallpaper width reserved for boundary effect 
+#include "hsconfiguration.h"
 
 namespace
 {
@@ -100,8 +99,10 @@
     QString landscapePath = HsWallpaper::wallpaperPath(
         Qt::Horizontal, QString(), fileExtension);
     
-    QRect portraitRect = QRect(0, 0, (2 * 360) + HSBOUNDARYEFFECT, 640);
-    QRect landscapeRect = QRect(0, 0, (2 * 640) + HSBOUNDARYEFFECT, 360);
+    int bounceEffect = HsConfiguration::bounceEffect();
+
+    QRect portraitRect = QRect(0, 0, (2 * 360) + bounceEffect, 640);
+    QRect landscapeRect = QRect(0, 0, (2 * 640) + bounceEffect, 360);
     QRect sourceRect; // left empty to signal we want to use full size image as source
     
     QImage portraitImage = HsWallpaperHelper::processImage(fileName,
--- a/homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_anim_longtap_0.svg	Tue May 18 12:12:12 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1316 +0,0 @@
-<?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="14400px" height="14400px"
-	 viewBox="0 0 14400 14400" 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">
-	</g>
-</switch>
-<i:pgf  id="adobe_illustrator_pgf">
-	<![CDATA[
-	eJzsvWuPHElyIPidAP9D3QcBMx+6FP4I94jBYoF86uaupWnMY3cO2kWDmubMcLdJNtjd0ul+/dnb
-zSMis7JYNVKPVOXNZtEy0sMf5ub2tr/5P776zRe7bz7+09sv0v1w9/rV3/zN4dPbNz98/PSLOwLf
-/fLbb3/8/odPCPrZr39+F+AxfGr3y+lrefK/vf30/buPH35Bn/GnZ/z+z3779tPHD28/3P3fb959
-/+Y+3P2Pn51+/9svfvvu7Q8f//ZXP3774//4+c/vfvZzfP6373749i1843cffsDfvvki/NyGAl0f
-3/wAn6a/TeFv4xCGu/yLkO6++nt8ZP/xxw/fvPvwp/3H//cXd1+kQn/CMOEf/Pz/fPfrt98/9NDx
-4x9+fP/2ww9fffr4h7fff3/4+O3HT9//Aj7Z/XL8+vzu27cwn/dvfribaXa7X4b49f7Hd99+8w8/
-vv+ntzDTPBSCp6/pq7/7/s2fYLz0O8Hr1798D6DfvP3hBxjF97+4o0X69d/t/QsBSu1n//jrt396
-R0sOU/+fP9eeP3387v2bT//7e36uRvhPPvrt2/fffQtLRNODmel/+jFMQGZeYYfi3Rcxz/d5Gsa7
-nMf7IczjXYoBIPKFthxv//nd23/5xd0/wDbKauw+/fCbd/8fzC7kPAz8f/no1z9++/bT7z68+wGG
-yO+eeT3+/uM3b7+Fb7Quzt+++dP3OuHQ/i9P/PbNpz+9/QE27uO3P/5AqDXZW2DNv3zzr4By2uH8
-9a++e/vhtx//Gw31i5rvQynjXQjhfryDbU5pupsD7PVE78nwryJvDPRWHRd2g51o9xU36SvYt199
-evendx9+8UVOw30ahnT3xQi/xXmaZHf/7tO7b9rmwtZM/D+a0/3k/sz6R4YOC/HDD28/6FwAsQ5/
-79BkuP/73+AoTh++OXx8j3vyPSE9IMgHwJ1vP/5JPm3/oM+gix+/k2kR4GvYwq8+vfuAHb9+9Q/8
-2fT1V9/+CB/+3aePP373yw9//Pj61c/40H/15oc/3+2/ffvhm+/hiDKM/3nHXwHol+/+WYH3b959
-9/MHuvzNv77/p4/fvvv+vXXoIfb7LV399tObP8A87n71T//r7R9+gG8LoP32mx/f/fD2lq6+wuX/
-9OFXH3jGn378/s93v/348VsbpDwgH9nkAYf5Oz+Zl9jDWy+AD3+6nR/efPvtuz99evPdn9/9Yav/
-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
-	]]>
-	<![CDATA[
-	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
-Ocg/rBn12vHmjNjcEUUzSnqB2kVHNg35Mr6w1472WnJ1UtQ4w7V+1GvKWYewpSFt2nLTkBLx9jrS
-Vt9gqSW9qidtWlK4YJaa0tk0pUsd+pau1DSlqk83j41NzxlX1WIbxz4Lyw5AGDesLws8W+VW8BaY
-FaYBhqkNpungm9Nrw7XmzNwsMUtbzNoas7THbOGbauPX0biMceoWK7YZxroFzrF1pmnlG9Yp3u09
-3lHpI9LOm6XGaec3cW+NfR3+vX6VUoeDDQsbHrK+nvFwLwn/Z4eNio+EkVRtpGFmw861HxzlVh4G
-TI6LWWPniFlw4ZcKvI3kluXf7gOny4VfOGgy3sV4j8L3IuDyGTrjONDIIaSBYzcx7XLx0aSDJvQN
-nNCX8vjO6T4CarnhPKUXyZwMmDeO0oOFjlad3aBZjuGwj0WyHJd4nwDHfMrkJ/SiGYU1q7F+W57l
-DMASyVox726kXzDzLnSU5ntEvruU76cU+pzCz9OjjO/zNj6X+zEELCF7X2qOT8ekZYcyOo4Dhudo
-J3DJOWYZ+yoY9UtZiyWlsaSuhqnWe5gxLFANsx/aM/T2SAf333348Ob922/u/tSFFW9AX9zbL/+8
-uLe/uLe/uLe/uLe/uLe/uLe/uLe/uLe/uLe/uLe/uLdf/7nNSnnd/vji3v7i3v7i3v7i3v7i3v7i
-3v7i3v7i3v7i3v7i3v7i3v7i3v7i3v7i3v7i3v7i3v7i3n5jH81I9+LefjP7/OLe/uLe/uLe/uLe
-/uLe/uLe/uLe/uLe/uLe/uLe/uLe/uLe/uLe/uLe/uLe/lN1bw9p28Ed4IvSWaKeUYLSGwD1Ypvc
-xVY2jMNJnK0pjb04XTeXUKkN2ZmIUYKr5lbJMl4Ud8yBuUx1yRanEXYo0WqarWQx66VUw2Ma45Mv
-e/BAtV24ONnx4pJxCq5MkNx71qy52/YMWbsk2wXpjdPqmlCoaiteiaGZpugaZIZLrz8pa2BGIjUQ
-qYmokMQUaU5Hcjrh2WR2A6GZsJmI5kFzCGJg8+Y1nUdkAxvNYy8GtkqGI5mJc7PAmWj1PjSyBdSX
-ot5aLvaZdKpiSkLNjLCOe9LY0DVu+qVirsUNE9Q532GDOQDvxFV/7uqrmumV3KGWWsuHTMtXdX2P
-cwLTeZF2yHTrptdtWqKmJ2qaItIVmaao0xVZCIDqi9gpVDVGe9MYHU1jNJjGSHRGvWsonJWmKzIt
-0UI/xK6hIF+bo+4tOv7mavmgdYWcY5al0bwz79KyctmuIjp9qg1ZukJ4vm7ywqLiQkhYR+TtSZcL
-h/k5+1nbvIGfOhCz2ObuZ3+pjFhv3/AWDjix3UpcsnHIeqxZusB3Nd6TcPlEupbwOsWbiis4wn1O
-XCde/3jBx8Yfxb4myfP0JgVN7rNyXJnKZ8uVqXyZfjfPyHXwdxf1Tz6zh6dft/nCdZsvVKpsSn8l
-RGuPlbW/yYY/p/loek/M3uvy4KIjzqJeHaQE9LBw5gdsB1KchAwzOfbxQBb54+J9fNSOizJQydai
-cvgVPu5mlP+PUh66UJW0InE3VRgOlmFm13YS6TWbdb+1vfx/L/9ftoNrRznm0MT76WSMkFOp4WYs
-fJVbpVFft5AifEKL7mmxPX01uGQGVJ7J2ni9JKytuqiS1D2bURa+60BOSHOy937r5rPeCGlvRJnE
-V/1IauVIfupFirIfzEs9iJd6MdOJGk6iRUJYtNsi1s1Hup1R42CRbhrnpiXZ+aJ7TJQbXWN0ifEF
-xpdXkGtL4hk2KlCGxVnTqrGtbmyrMGqF1OnMuJqUcFr6SqOtmuzpYkTD5AwS3hhB8Q==
-	]]>
-	<![CDATA[
-	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
-	]]>
-	<![CDATA[
-	vNoNkF3wRjAa3+K/5y635FZ2yTavNqs+p6TOCOZzYTbX59LPxObB5kuYzWoWckvp7WS6y5l/dlIO
-VsuRihOgK0oaLctRWZSH7Zww0fxrjpjNFXO6EBXashqtHDI1IpRyFz3gkrl0MfpJ2ST+Uj0urBif
-bee7aO1zdr7Ltr5NC0mz/zmLIFAJ4KG3rCbbtpNtK8rCnkKZji9bDNd2w952uLS1TBIDOHdtZ61Z
-EzX2cWFNXORlI6siWWIu5WdbZ2WrnYVxJgcjtTJyg71u9kZzO2LHI3XGylL8eJS0AuoluHNWm6O4
-aEHTSlZWNDVS4dTsnJOqFJhkZ1l1ikU/6EGskVGcX8tP0ja4bFs4fmu7UjwRerxsAed2G5YbihiO
-91h9GYe3MNfj7YFk2cMae7XK2AJLewz1mQI5JcWeSlQofmrWs5MkhmY+sQ18lKKmHGBFlnArXUHY
-SImkmW2JYk1kS3gxt+295BtnWzi7YSdxv+YiFjM5s7I1XMp0v35Fy5PFrX4Si/hRghCCZadXx3i9
-DdUunigj+SQZyeHWwzzBLvuhBh1oyMEyPz3fbX2mg0rlTOVGOw0kT3OQQQsw0PACDS7gyH8OKzid
-r/z8JC2Uq8vCbHWX21PG+Nh+Lj656LF/fustPsRtC6azXjtL9v/eLi+0WWzor9qa8tfaI9t5cXdH
-uAo5h8GR0oZJDY8XO+lLjy89/jv0uIie+iux1j5Pjwsl+Wfbfy9ag5399/rPzTa7qxa6R1nmVM8u
-mYuu2eZ669zaQpc71jlZpt3WfIHlLsu72eya1c5b7kSnT9W5mwXPW/GWFmizQps1r1mi1aqXyfE8
-OZu0s+85G5+3Th9tmfdmH3AWP7H5VbEWsL2ALQZZBIxoFsBmtz5LGvijWBHMfv2TtBlv2pAftBk/
-2pJMec8vY+2W78MDNmXJPXbZspwWGLuBrT2mAv70eNrbmK94R3RWZmdnJozc8pC47iPhbVQLezNl
-pN/2kuitzlf8JHovCarx4WvWL6rWb9qfvQV6VfPjASv0LTU/+oof0SrQY5oRTTKyTPTIyUU4tYik
-wLH0jjtK24FJO2IIf4WW6+32GSoc6PGKXfvBtmHThh4ftnC3ak/Xbdyk4X/96qqlu7d1i7Xb2qa1
-2ywdS5v3Nau32b2taonavc+OU+n5g94Tp7+pNy3gra6U+MA4CuVu0LUdfLegQT31SVIPKF7xy9pL
-YNYlahM7SkN05vWrB/Lgq39LsAz4x4V/iwa1jRj8v8pjbvW+M9qJc1/6e1YrMpU/nTCMKvYJzD/n
-61Ld54l29pLvh5znZ7Tca48SKIbzGbnOvVYGMhO7lWfVlL/3I1ncL9rtn6O3p1rtt+usJ8wWXPtq
-Q5YteyM6vnalL7aLRnblIskYo+kP1zWYfZxzV3+5i3HWCGeKbEYjAoUvLaoum/rDR/n7DOZnKSO7
-nFOfaf0o/gMczx27hJ2Xcq4v49t94s6NmVJJhIku3Z0vjmoz6It77lbJKoPNIsss/BxcGk68kqXS
-vcboL/fJJ+JcVpDWMkGurCenIYUZcG4Djk23nfurVUGthHeLc96O7b0Y67wZ6XwiwfizCwVuR/ZK
-6ZRVbO9iBjeniN+chZsHXcFdgvhHlMvbnAtlr2rOYTYbm0FLJd/n/7w0i34v+t1IZOTfzpS5zAKq
-rMB2cRuX23QRk+/2pncVWGSyW+Q5t1w8octneOhz7rmntrLySQ48X1GtT9K1SCFlXPkyzdT2U8tU
-VF0yquV0FxJGX1NwK41hky9iCuvkhUDAWqLNRYpAHeFGOsSHEyKOm71Kv7Jl1bbN0rrbO33lHp9W
-nhIcurf2b3bv7GcD79Skh5xYySW79EnTPycX2SoTWTMPUqGKC24vOtWN99yS9Wzjbfwucpflt60y
-n9k7b33fRp41eV/n1EP5c21+fSa7C/mDLv14wxmb3HyR4mWZ4plqk7Qqjlqbkfz7uuwyLfl0NS/H
-daGxYHzJsiTgfqMaTF+iuxXo1kTalmOGiooh/9Xl3LnxTm8BiLoybX36NZJ16vwfC1GvWXIRceLx
-gyto3hdk09xE0fxEe//QloHsuKhFE2NfjaYvpCjr1tbOSpx3XN2juJxLGWr6PDVZVkSxpq7WYy9e
-oQdeDfILVdwJtBLNO9RyshERUxzS9VC+MEh9q7xYDcYjTmGuBSW1ZN1IIeSohZqdq9KxT1Lefk7W
-VC2xXUO7+Tg2D0fxbpS62Vs1ZTxToz6No6Re6VOeK1vQUrAoa7CdhuU6a7BMD87RWiuGrask/tCK
-XKor3vw+zecTeuwq7Tg2z/w9b1oXY/tgRfbG+i1XJnaenUv27wIDCCuyN52JMU43rsglLLmIJ4sV
-aWl5bl8Tn2yd6yUdFozkkiV2zL3gi2eKV6uC0rvhjK3K6trZGTP3QOEbIRMt5bH6fazSMK8SIzf/
-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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[
-	Lq3Y+LSSWRmOx/xY/K5K9aLx4qSfBBNpOONABUIejBonqaX16kWt9zC9fDE3HosnfU6pu5ZHrddo
-+kZSvA9T7JWp6aKfI0BeoV4sgFlx6SWP071nWEum0b/8+dgdVepsykVTWCkM0MPZukVmIESwlhqg
-ki2wLBvFspzLo+bNZoUFWntRtXaj58hkLN778Ew2k/RjW5fXbHzjmuHsfydRXjMwyRrVJAssssAi
-mx8iw3S1N7VJtrTj4edimwV2Z+PYncFxQeNLEO+G1VSNos7JgbL14jrvinSqRkooF0VKU1BUI+DE
-RZHaFBT5UFZTddRVvk+omkYLL+0I8XSqMBhL1domNrESjuVShcnppJ9XiwJl3PhisUmUsQ/zIlDG
-jT9HTaKM57ZxbBaF7FtlBbo40MXNrIub0QcfPEbbHCbXlRCmzTM7i4pFU/LHkk/WNbcjhOYwKEb8
-J/1uNpPiKngrM8iNXZXcIB9ZfbXDdAw15z3LSDPpBUkQ6X+VvnGIZ9rxVx9cyso3ke5oFrXYj2rn
-awe9Nf9dV3zh8CBbo80nXpaybXZVXJgMstk003ILebczmyWdTWjp5bO5Uj61uhB3OEgA0zzyYh6T
-1TynTf6NxWZZa3A+AZM3spTT1QcxmI0vR+bEiM24yrxfpG22ZSaFfVw7C0z9ui+5pa3VTownc32p
-XMP4dxpt9guxMR8z30xeW1nwfh6ER+GYT7esq1KdpVBfMRMfakrxs3QZMGwIonB1sWB/wIKNxYLS
-1SYEI3UN7sGbL0gPMJKLZfLjXp6gacD1MNdrLs3ix5mTXdhMRi+ZwCtl9gbOnMCZU3GOcKhjdzod
-7L0WdKkGYbdzxaKeGPh8ka6le58kjvZmEvxlOgzTADR6KJsZRK3gFFMhCo8kJ1IZ5y9rVh2aYe3g
-H4cvTY9l03BsGMttWyMK3WtWicKJi2tWFeHLYfiDRTWduAT/2o++nUOwi4IqHBROnxGFBKp2YmjN
-qpApmnrYlBVZMGVJC0uKZArTpXAlrBuyJQDQCFuirgBQDquWKGOgFZZVSXYAe6AFWZbChmaaDvgA
-gSth0VINVyOyrIYlQzdd3TmBFDfaMocrVtjUTd4yh6tSWJENSXB1p8phTbRMwYUbA/YQqq2wrhjO
-wgMEboYVUTJdjTiGSBXDliIabiDCTTUkg7VcNs6o5cgY8GPr0QxwTkKYyMUSKWR1Cqa+TQiJYVFS
-DUtGsxey0JyGRUSLReeW/BlB3AHl4IOIVcSwbqEeQxLQrymaQH/TMWYqR1cOW5oqCSem3dWVsKor
-es3qBpo2DU14JO6qjkZf19Do16qumGHLNBUhMrfeJTWsKJKEex8H9o5E2BSJKhofVEIPK6bNyDZc
-C4uGpFCelURdJc2JqAwALTGsSqbmAFJ2E8Oa6Sw7wPjbtBDCzjZkGYbWcHXmgFHEaLMMjAZEl3TO
-xBxshS3ZNARXV8BplkyWDEOLwQij2VQw+ABjbUqy3YZjcOzenECKWU+VEZ6FhVUNs7CiyoYicRZW
-TMtQq7IwQkkxkEiw0OqXgE0kRLOLC3SGgSYioYMqOFkYqiNZpABpNaojUnQZdQNMhHBTwpIuSrWr
-qVZYsQwNsy6QFBY1RFDtajrCylBYNQkNi6zUrIWGQjLQjJSsE0lC0w6irUZ1GQkcTeO4IrElI+ao
-WQ3xraybuqtXHwOLRLoB8+JanaCYEBjLTcR7pqpIKq5voK/4iwL8iBgX/R9JcCQ20RckS3TZEE7E
-8LJAakGyDFA9Mhp2iy1vYEVL1ZzwgRK4IodN1YbzdqrBHe2M459EJMhVC2SPrCGGVnjXdhUKn6Up
-dzvV4HY746VNoWm3lApUU3gp1VVRqga320FdH12zyhJatwknjuPvLaPIviy47emWUWZJIdNEGUT2
-aDKXGUIGSr6Qw0d6I8yoahmVy0tCAsZcwVFGFNoj2WzaXSgDbqn+YipBzdyWUbCpRh3Y2QYWNYuq
-WErCwWwxnxSi2YuZykZTWAV2Aw5UEAOKwOCKYsga1kMSMCPwJGNiDf2iWvDF0hEbYy4N7K5msbvG
-F9RisOZvMbg7c8DKLQanXh4oAc/HYrDqbTEo22ClKYjNibWA+lQNDSnKWSxeJM00HS1aqpbUqhoY
-1jAoE7cuBTksalLN6joqhzicmgui5+6I7vVbPqQi+1r2QRWvJspg+dWqpqBBQ2LLribpmmrUroY0
-BJpDhxVjGLJZs5pshJntM4eRR3yjWZbutieQkcBEtEXEL/pCrAXUio4+8MWAX7BFQUU1FuJKYFDU
-yaBoeiOiWChky4yHIgiz7hluRSB+R5tjAf5zsKkOpgW2JMDkxT+JkqVLvu0GZHmjnYsMgl1GwhV2
-itMlcMmAbRasI0lFc4OMawQUzbAhgflvolWAVpruBMZxC7qO/iWr7sIGasGSSpq1gQwH0oINR4va
-RApOcDWror2dYWluHBiQtGAj7Chsk+ZotnwcmIRgF/vgP7LWJbSVQpabVT5oHI6oMy1LpYNmSiJs
-oEWwShTTRth0APmgySKaUFdhAwlwnVhgdrM2sGTQOBxRJ1uS4GoVbR01TdfdKDAgHzOKr6OwTZnd
-avkokCGTXPwXDNdswwXGC2OxyGRlQ0aStG0OLnQbL5KJ8IftLzYL6D8YukRw0t5AY7q30CAyRFB2
-KhMnbKuCjSW6NdH5ZoX86BQxEpticEnozBnomGIMl6n7STOwKS9pqFFFl4lPQiN2q6RpyPY2NAJU
-TZEtYV0Ko0E0KRzUEAA1QihpFiHoBjIcaAsIrhEPlor2JBoRIxLsdgwybdjF4MIBgLYowwirCoHr
-qLLASCMtoGYlVREqjkMPHvXKyqr9YCw/Rb6e2AV/FonSAfkPfzvXUcso9uf3pdLJDv4vrFGGYnly
-DjCK1A+akX7cNITC4tP6S8KJQwA5zecMyMeMbAlnBCRKMfucmJylEIBIQfKn6eBDVcDch3FqwQhF
-Y4VYh6CoCHZi36pr5vTZZEb2HhgYOLA3Ym6yocLOB3Ov/p1H3/KWNz3ymvzpzg0UvPFA+nWPffTv
-Pv3EE5/5xEcf+62pfQIG392T+p3/9Yl/+ua/f//7//7Nf/rEn74u2X03wLccufgHf/X5bz3z3Isv
-PvfMtz73F28rDLYAfPPghd//i//zzR8894tfPPf0N574yFvyhzYD/K7I5G+9+28/97XvPfXU9772
-uY+947Vje+4m/fYnf/2t7//bx//hHx7/6z9786WxKEPofrU/+Wuve+Ob3/yG37xwtk+530FYa2ff
-/oGBfVFzy9wG5hoYZmRawCBjxtnLuQFBbV44NIuFxGwaS+grvvKVlwRgQ7cp0zKKLSzbohk90QZ/
-olq5Ai3KGxpIZaaSiVKTaV/mQjJXKIf3pFMzMylIJ++GR1N5MKxY+U6M4Gg5atQwWijhNZt9hMsk
-1qzSHb4raN7UXQaW6C5UpF4gVM7Rj2v1lq1dvnLpuh3qj+Bl61qPpojWoyaj9YgWpSbSRVulCIBI
-MfKnKcDOF8kr95p1rlhD0VS8ZH8118/snDvnZhcckyuM3pzW+WIhNk9kFhaxBURmQRBbJHzmjNWi
-4jMHrK4APr6wumL4eMTqCuNTE6u64DMLVnXEpxpW9caoFKV6o0M/jYxSvRFxfQKUvHwaDZ9rGhKl
-4BN8gk/wCT7BZ6E+jabmGtM4CVCq+Wk087uRdygNglXj73brjlVFfOqI1Sz41AWrmvhcYaw84nPF
-sPKFzxXAag74LCpWc8ZnMRCbPzILiNjCIjNPxBYPGV/oLXCzy/jHyxgsW7b82muvw59rr11esxIq
-ff0NK1fdtBp9blp144rrr1s+WxUovnL1rXfcfe9969ffd+/dr7ht7aoV16N+qhe/ce3t97WEVLOj
-s7PDVMNbhbtvW7OySpVly69fueaO+7cbfUMPjiUnJsbHzozs3y1vXX87qlKhxrJrb7hp3frt1oEz
-2Vf9zqNvfdvb3vqmR15zYeL4XnP7+nU33XBtaY1l165Ye9cWY/9o4bf/+AN//cnHP/Wpxz/5Nx/5
-k7e89vyZ/caWu9auKKmx7NqVt9wXipzK/fZjf/HpL37t29/9t3/7129//cuf++RH3vG68ycjoftu
-WemqAeXXS/uSr377n3/mn7/71A9/+uzPfvbsT3/89L9/68lP//nbX53cJ6131UD43LJeHph65L3/
-z5Pf/cFP/+vnL76EPi/+4oXnfvz97zz59+99ZGpAXn+LjdWy5TesvU8amP69Dz/xjad+8vwvLr/8
-S/x5+fJLv3j+J09944kP/970gHTf2hvYWC2//qa7Qvumfu+jn//OM89BccZnUOcXzz3znc9/9Pem
-9oXuuum6ZYyAdVsiyUc+/Pnv/uj5l+zipM7LLz3/o+9+/sOPJCNb1lEyll+/Zr1x6tXvfeI7P3qh
-tDyu8cKPvvPEe3/jhHbf6uuXkQ5u377//Nv//hvPPP9SaXFc5aXnn/n6J/8w07f1thVAxbLrV99n
-nPmtj37pP5976eWKS+bll577z3/60GuOy3evAiqWr7i1pS/79k995ye/KMOHYfXzH3/zE2+Z2C2s
-RTghjO4IDb3qA1986r8qIkSQeu7fP/cnF/a3IpxQhVV3qw/+zse++sOfV0YIKlx+4Qdf/shrjra/
-4sZrly277qZ7zfijn/j2T1+s1gGi4hc//vrfPHJGvXsVVFh9X8f4Wx//7rNVMUJdvPjTb3/yTXHz
-XjR3qML6nRNv+9S//Wy2Ci89+6+Pv3W8877VtMLk73+6RoWf/dun3jaxc72fCp/+/cl5VKhNgwul
-+zrRKP3rrKPkIhrm4U2fnHUeXMMKM33mkb/5+o9+UXWm0cT9yJ64a298RXjk1R/+8g+ev1yVly4/
-/4Mvf/jVI2FgDcStt23dX3z3Z7/3s6o4/fLFn33vs+8u7ocFAeth7QO7ko9+/Gs/fKFKF4j3fvi1
-jz+a3PUAsDew613i8K+/93Pfe/bFigvily+/+Oz3PvfeXx8W71oFi3oZWkGbuyce/euvfP+/Ki65
-l1/6r+9/5a8fnejefCteoteggb1bHLz42OPffKZMaBCx8cw3H3/s4qB4N5UzSI7dInScee37Pvud
-H1YUMz/8zmff99ozHcItTJItu+7G21uj4498+HPfJoKM1aGC7Nuf+/Aj49HW22+kggxUyeq7w/un
-3vAhIipforKSi8oPvWFqf/ju1bZawcJVBGH8909+5/s/fu6FX7xYKoxFh2gl4vvm9SIW959+8lv/
-/vSPkbx3iXtx/c0rShXEzUihnDz/und85JOf+/LXv/2v/+pWKDevLFNBRGWdOf/at/zJR/4G6azZ
-VRZXiube4xMXXvPIm95aSylStXv7+q3y7v0jZ8aS48kaapfaAWtuu1vYGgbNXlOx0yorVq297RXI
-drivtumAqyxbft31K27E1okH44RU4faPF/OHV6puYDkCFXGYYkmQ4iH3XYcgbHyBww==
-	]]>
-	<![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[
-	LWp7uBrvBxgj3+xsXr3QV9XccGmdPBBS8KBFP23m5wJ3ppJ7U4/wYC66nXUMoRZm+KiJivZxjYFQ
-0a4ZvoVapM2oSE9TyYg06FlDCIW5w2KPj7Af7zkgFHzO+53z/lkkvCct9d8W+5EQr2HM0/aS94+u
-qoup/3ZcbmLePw7wxT7y/nHE2ewj759FTiC4+35k5P2zqLFRPOiUbfL+WVh5cWHqP/N5/7ivb4cQ
-rN3Rvi8LRfmhmrjcaF9Qm7HyI5tRRmjfl8WWaF8dEDOxq7cJgh0viDht1WkUZ0VbMFGdlwNVtBeA
-6UWY01ozrIiOz9UAqWQFio6lglkEzaDvSUAq1fEq5BV+3X7MuA0mg8MNZpFy4XFiqXiAVK7cm9Za
-xcUaD5ZK3U0Dh6tSlTI3VCxVxs0Fn2da98r2zLh5ticPkMqVm2oV861tz0dTQCpqcBLMK8kQvuY0
-xkeLiCzeIQuBRmMk3Pv42BHI7AV3WwrSL0VD9o3ZPH2mkmGi0WToaZ393arVEY7w9oS77VBv1dpC
-s+mtTCXDNEogGNoSd4ttVDm0w8IBxzbG3YI28cOxWbhb0V0EJ6N5RCYo6YQQe1fPtcvjSKkYOnso
-24dn0DtYPvHdtnOzD18SfKq1ENSw+vhSHURd+YOyIIiQRxjzOYufVHjAy5MbnKoKmQfIrOz3nRbu
-2VKnpsuUnjsUZJ6Hjgdcbj4yEQ2H1kACw14aEDFpdxzdeF5peMAXKlXYm4PqPEbtbrhmf7qjUnU1
-esEvWmo6j0LVIgPKlEFuJaIYVTVGbuU6cioZFmMa0KXHffI8IVEFZOAgazPxqSCBXS0QER/h82yL
-QjVpP4xflj8wz60WnPfOoFpzJOlUa9f2JxJVC8qFl6qroJ5aqjesDIvn93SqlcpdVR04Bgg7YAG/
-/ElEhW68uZB6CVDKxUphajkLjvcMf3gzBY4qfZnZuqIITtDrTlyrjsqHPZJrSC1PSwz/siz5OKMz
-wbgmPOg4CddsyhwBmhziGlSe04KrjJ0pdFiUPnCL2ia0oOnNKvHgq4zBVSvLvhLTID+wUWIaXr9T
-mR24RZ0+SbNRNevWTIwbCwCovUhzB3icQSSoME6WP3yrSnNwZraHirsbYgBNp6CktEkXA6bbN9wD
-byoGDJBhNYvuXzbXJsg66WFgYot0cbga1lV5yXvVJ+EVQsaY7SwNUHmD43pvI8/tW2VfN1F2AjYt
-s9keEcV0S3MfE71Vdrli16IgJHX33m0FuyOff+MhilyQxO080uooVQRJ3PV2XdJ9dxYqbs3IqtHf
-d8cwkCj+NHUoCuGwtls1leKBwWyqe7Oku1Uds9n2DF3A/tE2tHDoZZzUT9U27RmBsY/PgvIUUj0w
-8YUuImGcWppXUigGO+jXI/2M0RygTZ/HY4dMdWw0lcUU0itt6ioGrE1a/M2gxvI5G6rqqjZhCAHp
-6BvbvyZxiWMHB7bUgt/RxcAlGmWANphD7CB/UDOGCnGvCE0aaAsxzY6J2owSCbl0kF9GbRops+Og
-GaKJ+LupPgHdddAMUwqZG7Rm/IVSmw7FTFIbpUHbEpLIi0c0wt8YA9W48IiskHgOSCIvHpHghzYD
-SeTFIyrBsFtBEnnxiIK7e2tIomq9MKxQXcytOUgiLx4RDdr2kERlSNkcxKJGepmFJPLiERVLeitI
-IqVNOjyi6txTaJG+X7snK7TwJ6nbJVkh3pu/mKxQ7374K8kKLUZJ6vaTrFBErLDVlt2TFVr+HBL0
-xb0nK9S77f5KskJiiOL+kxVauPJ77pKsUOV+gM1KUpsljpIRYpme7ZANjDGR8JDtkjCOtuNMeMh3
-q9XOCQ+xzu3jVitawkOTMVDbJjxkZzskOSG3SnjIdiFRDHbzCQ/JS5B9q9UWCQ85FvQ+Eh6yw00U
-R9eOCQ8NAWV78gMzsx1K8mbnhIfszmm9HFsnPFS1RJftUOXr3CXhIbtLxGDYbRIeEsGRzOvb+ceG
-G70r+dN2TnjIvrdMOWHfMeEhU/KVBLG2h4SHbG+yxdTlWYyEh2x7mBx2vUXCQxJqU9mC2680TcJD
-di0s94OphIfsWtAZwT4SHrLPYxT3w44JD9lgXosWJLttwkOCEoplO8StNcg1tk54qNmPYXW2Q1y5
-3QIdE5YTHhpjcfeS8JCd7VBZ0DsmPGSHeGPK7W4JDxUYGWlFKs4Uc5ALXcJD9hgKyu0eEh4y9txq
-HOM8+jZOeMiuRVagdk14yJ+ncKeEh3ItxG1kGkqiS3jIgFwYh/YOzSY8ZKv5sDd7SXhIE+v3hAPJ
-7WBkHLq+fCBptB+NEh6yz641YQnbJzxUD7jWoNxGVScmPGTXgsfZ7JTwkFYLb/pdzoSHO14xoQ8A
-MZeiUAeS3S3hocojrst2KBys7CHhoYzXYuZe3TnhIVv5oa000wkP2dkOLTtfNyUmPNzVO8iZ8JAH
-i7uHhIfsbIcW03kKt4IGa1mnPuHh9lB9LNshTmanhId6FzSe7VDm0NvuRynhITt6TCvWtk54yA6i
-0nqgtk54SJgbLNshddDMJjzcwdepHjTzwCua7blDwkOFiZGyHW4foqhJeMhcFnjyk90SHrI1RtHE
-3T3hIRukKwnpnRMeqrupzXao19O4b+FSJzykq0aiZmNwCxdnwkM+zWbnhIf4bOoPgMiIlS0SHrJl
-BT2I3GTCQ7asEHWBEEFcPLF0t6s7chiJ9kasb+F2SK30BD/TPcLseH8NiFK1pOSVphz/5HNzHKUv
-uLJEWm6VzAzOlLEJh66GSXlIL1XWahPCfJbL6OrbBsTMmc33fOkIhx7HR0IpiOqyOS7yjWDYPbWF
-+s/zeGz5fVbNT17T13ded+DX4youiuH612XBvtgUk7aX7iAGPn2cHiZSx3XnxdXiJrEYd2Aej6NE
-MN5PXVQfg+fBpS3RrMU/ijfju5PB7UXy4bs9vEws7t3DT8dDwRMv/xy0b87HmUn2cTY8cU8X70eL
-w+XpNHlpe7g8cTli7lry8PO50fBsvu3P8dnLMCNxAYQ2zd+1b+9tQd/bqS36tbj3ZWOu03C1eF4M
-Vz/7Z+Fa0nmzXH6k3ctV6qGxsr8le6tE77klIz/bvlwo8BCMNdMHEgDvJ7RcvcxgBr60XVAHCexE
-BXk9fmq+pwv96zk0u+UEmTDd5uYjcugtnDbPSOOFhgN0eO1EcxNz2KjdRQBLd9c1bNnvn9p5x3QZ
-qjqj8a+NfTKwDSC29UyCq9o2/nn8EgbEXUwRQtJWqLbbh2HHcCD4BVoztUI/12wj0LlWCcPvKV5a
-rHOAxZFGIp88LMHYwfJTdfiIUoyWXms3j8nL0uDgNLTOnp2GVoPjato+blUeTmNvYOSm+drk/vGl
-UE/aeqCi+4VUr5Bf1B3xjY8gsLLzdnrctC1Rvwq/M7SgC+cPD+++yv1jHX4CfW5NghBK7BfM/3yi
-s0SmVTi0dsP4hve1wJdDiaBL+hRxI58zGJOjKfh65EVYZMB7GnPwNecXmI3dBcTa8xL8UgpKb1ZD
-1Ur0IgXqrYd9Zf/hpuquNxoRv+v7XWrquQd/kF535Qc+/EHT1wdk5GcB/Nnb0VB+EMIfzEtf8oMI
-9qBWXEBYw6UX/+3O3UOFhSVw6ceffcUHUkWXQZT6MVJ3nIahhHBE6oFqDD6IAKY0G0fqJzfw6zVe
-ee/LBwf32i8U6TuOMsrZGuCLcJEVI/1ALgJLhSB46jfSP2nAkbsW6+1f36F6IdA2a4cD7oOQZySm
-HFFPIA5tgzY2MFHPyemxSOYYHp/fFCfBL2+h1f9sls8btltlZcpnCiW1dXuoNkqLUU+9miXVBxf0
-tlVeN3NylcXEuuUY1l6fUl+F241jVHkatMKwXxG0hsUF/RF93bydlkbdUCQc6rzFpEXWjmO9L58c
-9aVJewigMYyWr0tQJD6EpNX/ACrvvcJ0dQ8RURNOPEgqxwx+iQmf1LJQfRbqVDEAeXuyGADa/XDQ
-ZAaQeb2auSsPxYuzomeyhFcAJOvFSjjY1jMAbYJhl7AOvYUUujfWI3WkNZM9UECO+YSFUnx8W4VD
-44NgaHTQcsYc6d91OOwOrir98SKNtj2Km0YeRvA17kHY4Ujl5RR+zfjAwv/Jww3tl7nKC3jjPizs
-m3oQKSswHiWI7O1I7S0Izel6iOI9qYflVeLEHCFgy7phiOgi4g9PP+RtLFw6B/eDv3TYk38WNxbQ
-teA+Ow/iXOArFyqfZWfhcCjfDIcTvfMTAj+AWsHXlcAU8p1ZUORpsPcvBXz2RY2lhJsbYB4UHQOt
-ap3zTbctlEyygmZReUuAubxZQw3kWnXtQXMFfwuA31IbobCznzrH1DH0m23tXskVtDQVIOkZ99aC
-8XrhNzw4nJaXy9zMi4trlPo6G7iQhWk96k53YoqOJUjKw6KjLFXQd2oqQGSKIayOSPWxFpGVOzgs
-wV8oqdxISIVG+bsKWqihkT+TR0tb+u1+If3WWYZGV1NfzJHNflTfPc8wzgZYyJfnql0AOx73wAsj
-0jYlNTNM+G2T7q9I28XE2JO7S1ybRZl8YZeA7gFZrHhbAyDjfV7GemDt+6pCJmjYVP1NDhK+XriK
-oZi8Iud4ltJiytdeXGI3WXyFVboTSuAndOkN71L0S5VcG2WU07ccJffW5GaSVpovW17dysqd5oKN
-gKJKwTo+JI0pF5WUJaBj9Rw3L0D4x2va7Nj1j9xasKQJLUdUxcno0CfjJNNaE7uknglJTyNNhnie
-K9SRiWB1nD54u1IdwQC9AuEAClQAF7TYe1IdjBUh3uPH1whRVdfXge4e26UjyC8ijaZFycOuG1BG
-HXeZEHFGQCPm2BYAuhs+aIz1CFm3j6vKu4jQfCHnvHJnzM1v9E3lHYS6XphWJc98RQKORkSkVasX
-FVoiF1hgRYG48EjN+on4CBetiOuw+57Ev/4Mj/BxbcZzmnPPt9MTvEuu7yP8a3iawr82fcf417ej
-HP71K5fHW9w8SKvCEqC6m8ELvAXx2oDCm8W/zjN45UD1xSsH+i/e7HqyeaqeG6ARF7CvvbfDNP71
-y5cRlSpgaUSLnUgDDSmHkQPVQWjn/GUjB/E0YOf8ZSMHxkBBO+cvGzmYGfU3jRzYG2jn/GUjB8bc
-QjvnLxs5cKXtVCWfkQO3p7yM/56RI3CBhyjJyIFCOiH52GawhyEnnAe3ZFVcTMWFfzX0CtPiyt16
-xe0GFg2EWgSgQhSWVPXYyUOlizQ3yBLhGqm70exDSQ1PmOtegRY8Do6WA88+tN3kXRVAywftOeii
-fBT7VTv3oJhBYXtWQ+RTm0QjDL2e1+Lhn3QCCIyBuBsqRsHwwO3OiMOcz6COuCOVt0xW+u0UbXzx
-NribBfilGpTZzivobm9cnBxMq0gGSZbGVUQu8iasF2FwazmvZEFd+pDepdgV/5e3/ElFEolgwpqK
-Ro/AP6GbzWS4vFqOvkZTq9/yB5jzoUIjErmbDmbV5XDYHv53XZ71N7/D6dqasYYKtw==
-	]]>
-	<![CDATA[
-	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
-v8CX5BfA0r2qWv78P8LvWtk=
-	]]>
-</i:pgf>
-</svg>
--- a/homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_anim_longtap_1.svg	Tue May 18 12:12:12 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="75px" version="1.1" viewBox="-1.5 -1.6 75 75" width="75px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="0" x2="19.814" y1="23.1826" y2="23.1826">
-<stop offset="0" style="stop-color:#3B87C0"/>
-<stop offset="1" style="stop-color:#0069B2"/>
-</linearGradient>
-<path d="M13.8,35.3c0.2-5.6,2.4-10.7,6-14.5L10,11.1C4,17.4,0.2,25.9,0,35.3H13.8z" fill="url(#SVGID_1_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="11.0552" x2="35.3105" y1="9.9063" y2="9.9063">
-<stop offset="0" style="stop-color:#3B87C0"/>
-<stop offset="1" style="stop-color:#0069B2"/>
-</linearGradient>
-<path d="M20.8,19.8c3.8-3.6,8.9-5.8,14.5-6V0c-9.4,0.2-17.9,4-24.3,10L20.8,19.8z" fill="url(#SVGID_2_)"/>
-<path d="M36.7,0v13.8c5.6,0.2,10.7,2.4,14.5,6L61,10C54.7,4,46.1,0.2,36.7,0z" fill="#5AB85B"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="0" x2="19.814" y1="48.8647" y2="48.8647">
-<stop offset="0" style="stop-color:#3B87C0"/>
-<stop offset="1" style="stop-color:#0069B2"/>
-</linearGradient>
-<path d="M19.8,51.2c-3.6-3.8-5.8-8.9-6-14.5H0C0.2,46.1,4,54.7,10,61L19.8,51.2z" fill="url(#SVGID_3_)"/>
-<path d="M52.2,20.8c3.6,3.8,5.8,8.9,6,14.5H72c-0.2-9.4-4-17.9-10-24.3L52.2,20.8z" fill="#5AB85B"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="11.0552" x2="35.3105" y1="62.1421" y2="62.1421">
-<stop offset="0" style="stop-color:#3B87C0"/>
-<stop offset="1" style="stop-color:#0069B2"/>
-</linearGradient>
-<path d="M35.3,58.2c-5.6-0.2-10.7-2.4-14.5-6L11.1,62c6.3,6.1,14.8,9.9,24.3,10V58.2z" fill="url(#SVGID_4_)"/>
-<path d="M51.2,52.2c-3.8,3.6-8.9,5.8-14.5,6V72c9.4-0.2,17.9-4,24.3-10L51.2,52.2z" fill="#424242"/>
-<linearGradient gradientTransform="matrix(1 0 0 1 -1269.75 -3487.3887)" gradientUnits="userSpaceOnUse" id="SVGID_5_" x1="1306.4873" x2="1311.042" y1="3494.2671" y2="3494.2671">
-<stop offset="0" style="stop-color:#3B87C0"/>
-<stop offset="1" style="stop-color:#0069B2"/>
-</linearGradient>
-<polygon fill="url(#SVGID_5_)" points="41.3,6.9 36.7,13.8 36.7,0 41.3,6.9 "/>
-<path d="M58.3,36.7L58.3,36.7c-0.2,5.6-2.5,10.7-6.1,14.5L62,61c6.1-6.3,9.9-14.8,10-24.3H58.3z" fill="#424242"/>
-</svg>
--- a/homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_anim_longtap_2.svg	Tue May 18 12:12:12 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="75px" version="1.1" viewBox="-1.5 -1.6 75 75" width="75px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="0" x2="19.814" y1="23.1826" y2="23.1826">
-<stop offset="0" style="stop-color:#3B87C0"/>
-<stop offset="1" style="stop-color:#0069B2"/>
-</linearGradient>
-<path d="M13.8,35.3c0.2-5.6,2.4-10.7,6-14.5L10,11.1C4,17.4,0.2,25.9,0,35.3H13.8z" fill="url(#SVGID_1_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="11.0552" x2="35.3105" y1="9.9063" y2="9.9063">
-<stop offset="0" style="stop-color:#3B87C0"/>
-<stop offset="1" style="stop-color:#0069B2"/>
-</linearGradient>
-<path d="M20.8,19.8c3.8-3.6,8.9-5.8,14.5-6V0c-9.4,0.2-17.9,4-24.3,10L20.8,19.8z" fill="url(#SVGID_2_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="36.7383" x2="60.9922" y1="9.9063" y2="9.9063">
-<stop offset="0" style="stop-color:#3B87C0"/>
-<stop offset="1" style="stop-color:#0069B2"/>
-</linearGradient>
-<path d="M36.7,0v13.8c5.6,0.2,10.7,2.4,14.5,6L61,10C54.7,4,46.1,0.2,36.7,0z" fill="url(#SVGID_3_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="0" x2="19.814" y1="48.8647" y2="48.8647">
-<stop offset="0" style="stop-color:#3B87C0"/>
-<stop offset="1" style="stop-color:#0069B2"/>
-</linearGradient>
-<path d="M19.8,51.2c-3.6-3.8-5.8-8.9-6-14.5H0C0.2,46.1,4,54.7,10,61L19.8,51.2z" fill="url(#SVGID_4_)"/>
-<path d="M52.2,20.8c3.6,3.8,5.8,8.9,6,14.5H72c-0.2-9.4-4-17.9-10-24.3L52.2,20.8z" fill="#5AB85B"/>
-<path d="M35.3,58.2c-5.6-0.2-10.7-2.4-14.5-6L11.1,62c6.3,6.1,14.8,9.9,24.3,10V58.2z" fill="#424242"/>
-<path d="M51.2,52.2c-3.8,3.6-8.9,5.8-14.5,6V72c9.4-0.2,17.9-4,24.3-10L51.2,52.2z" fill="#424242"/>
-<linearGradient gradientTransform="matrix(0.7071 0.7071 -0.7071 0.7071 1584.3986 -3389.3784)" gradientUnits="userSpaceOnUse" id="SVGID_5_" x1="1327.9453" x2="1332.5" y1="3487.8726" y2="3487.8726">
-<stop offset="0" style="stop-color:#3B87C0"/>
-<stop offset="1" style="stop-color:#0069B2"/>
-</linearGradient>
-<polygon fill="url(#SVGID_5_)" points="60.3,19.1 52.2,20.8 62,11.1 60.3,19.1 "/>
-<path d="M58.3,36.7L58.3,36.7c-0.2,5.6-2.5,10.7-6.1,14.5L62,61c6.1-6.3,9.9-14.8,10-24.3H58.3z" fill="#5AB85B"/>
-</svg>
--- a/homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_anim_longtap_3.svg	Tue May 18 12:12:12 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="75px" version="1.1" viewBox="-1.5 -1.6 75 75" width="75px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="0" x2="19.814" y1="23.1826" y2="23.1826">
-<stop offset="0" style="stop-color:#3B87C0"/>
-<stop offset="1" style="stop-color:#0069B2"/>
-</linearGradient>
-<path d="M13.8,35.3c0.2-5.6,2.4-10.7,6-14.5L10,11.1C4,17.4,0.2,25.9,0,35.3H13.8z" fill="url(#SVGID_1_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="11.0552" x2="35.3105" y1="9.9063" y2="9.9063">
-<stop offset="0" style="stop-color:#3B87C0"/>
-<stop offset="1" style="stop-color:#0069B2"/>
-</linearGradient>
-<path d="M20.8,19.8c3.8-3.6,8.9-5.8,14.5-6V0c-9.4,0.2-17.9,4-24.3,10L20.8,19.8z" fill="url(#SVGID_2_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="36.7383" x2="60.9922" y1="9.9063" y2="9.9063">
-<stop offset="0" style="stop-color:#3B87C0"/>
-<stop offset="1" style="stop-color:#0069B2"/>
-</linearGradient>
-<path d="M36.7,0v13.8c5.6,0.2,10.7,2.4,14.5,6L61,10C54.7,4,46.1,0.2,36.7,0z" fill="url(#SVGID_3_)"/>
-<path d="M19.8,51.2c-3.6-3.8-5.8-8.9-6-14.5H0C0.2,46.1,4,54.7,10,61L19.8,51.2z" fill="#424242"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="52.2354" x2="72.0469" y1="23.1826" y2="23.1826">
-<stop offset="0" style="stop-color:#3B87C0"/>
-<stop offset="1" style="stop-color:#0069B2"/>
-</linearGradient>
-<path d="M52.2,20.8c3.6,3.8,5.8,8.9,6,14.5H72c-0.2-9.4-4-17.9-10-24.3L52.2,20.8z" fill="url(#SVGID_4_)"/>
-<path d="M35.3,58.2c-5.6-0.2-10.7-2.4-14.5-6L11.1,62c6.3,6.1,14.8,9.9,24.3,10V58.2z" fill="#424242"/>
-<path d="M51.2,52.2c-3.8,3.6-8.9,5.8-14.5,6V72c9.4-0.2,17.9-4,24.3-10L51.2,52.2z" fill="#5AB85B"/>
-<path d="M58.3,36.7L58.3,36.7c-0.2,5.6-2.5,10.7-6.1,14.5L62,61c6.1-6.3,9.9-14.8,10-24.3H58.3z" fill="#5AB85B"/>
-<linearGradient gradientTransform="matrix(0 1 -1 0 3546.5811 -1312.6934)" gradientUnits="userSpaceOnUse" id="SVGID_5_" x1="1349.4316" x2="1353.9863" y1="3481.4136" y2="3481.4136">
-<stop offset="0" style="stop-color:#3B87C0"/>
-<stop offset="1" style="stop-color:#0069B2"/>
-</linearGradient>
-<polygon fill="url(#SVGID_5_)" points="65.2,41.3 58.3,36.7 72,36.7 65.2,41.3 "/>
-</svg>
--- a/homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_anim_longtap_4.svg	Tue May 18 12:12:12 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="75px" version="1.1" viewBox="-1.5 -1.6 75 75" width="75px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
-<path d="M13.8,35.3c0.2-5.6,2.4-10.7,6-14.5L10,11.1C4,17.4,0.2,25.9,0,35.3H13.8z" fill="#424242"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="11.0552" x2="35.3105" y1="9.9063" y2="9.9063">
-<stop offset="0" style="stop-color:#3B87C0"/>
-<stop offset="1" style="stop-color:#0069B2"/>
-</linearGradient>
-<path d="M20.8,19.8c3.8-3.6,8.9-5.8,14.5-6V0c-9.4,0.2-17.9,4-24.3,10L20.8,19.8z" fill="url(#SVGID_1_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="36.7383" x2="60.9922" y1="9.9063" y2="9.9063">
-<stop offset="0" style="stop-color:#3B87C0"/>
-<stop offset="1" style="stop-color:#0069B2"/>
-</linearGradient>
-<path d="M36.7,0v13.8c5.6,0.2,10.7,2.4,14.5,6L61,10C54.7,4,46.1,0.2,36.7,0z" fill="url(#SVGID_2_)"/>
-<path d="M19.8,51.2c-3.6-3.8-5.8-8.9-6-14.5H0C0.2,46.1,4,54.7,10,61L19.8,51.2z" fill="#424242"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="52.2354" x2="72.0469" y1="23.1826" y2="23.1826">
-<stop offset="0" style="stop-color:#3B87C0"/>
-<stop offset="1" style="stop-color:#0069B2"/>
-</linearGradient>
-<path d="M52.2,20.8c3.6,3.8,5.8,8.9,6,14.5H72c-0.2-9.4-4-17.9-10-24.3L52.2,20.8z" fill="url(#SVGID_3_)"/>
-<path d="M35.3,58.2c-5.6-0.2-10.7-2.4-14.5-6L11.1,62c6.3,6.1,14.8,9.9,24.3,10V58.2z" fill="#5AB85B"/>
-<path d="M51.2,52.2c-3.8,3.6-8.9,5.8-14.5,6V72c9.4-0.2,17.9-4,24.3-10L51.2,52.2z" fill="#5AB85B"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="52.2354" x2="72.0469" y1="48.8647" y2="48.8647">
-<stop offset="0" style="stop-color:#3B87C0"/>
-<stop offset="1" style="stop-color:#0069B2"/>
-</linearGradient>
-<path d="M58.3,36.7L58.3,36.7c-0.2,5.6-2.5,10.7-6.1,14.5L62,61c6.1-6.3,9.9-14.8,10-24.3H58.3z" fill="url(#SVGID_4_)"/>
-<linearGradient gradientTransform="matrix(-0.7071 0.7071 -0.7071 -0.7071 3493.6553 1560.1959)" gradientUnits="userSpaceOnUse" id="SVGID_5_" x1="1367.8477" x2="1372.4023" y1="3493.5483" y2="3493.5483">
-<stop offset="0" style="stop-color:#3B87C0"/>
-<stop offset="1" style="stop-color:#0069B2"/>
-</linearGradient>
-<polygon fill="url(#SVGID_5_)" points="52.9,60.3 51.3,52.2 61,62 52.9,60.3 "/>
-</svg>
--- a/homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_anim_longtap_5.svg	Tue May 18 12:12:12 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="75px" version="1.1" viewBox="-1.5 -1.6 75 75" width="75px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
-<path d="M13.8,35.3c0.2-5.6,2.4-10.7,6-14.5L10,11.1C4,17.4,0.2,25.9,0,35.3H13.8z" fill="#424242"/>
-<path d="M20.8,19.8c3.8-3.6,8.9-5.8,14.5-6V0c-9.4,0.2-17.9,4-24.3,10L20.8,19.8z" fill="#424242"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="36.7383" x2="60.9922" y1="9.9063" y2="9.9063">
-<stop offset="0" style="stop-color:#3B87C0"/>
-<stop offset="1" style="stop-color:#0069B2"/>
-</linearGradient>
-<path d="M36.7,0v13.8c5.6,0.2,10.7,2.4,14.5,6L61,10C54.7,4,46.1,0.2,36.7,0z" fill="url(#SVGID_1_)"/>
-<path d="M19.8,51.2c-3.6-3.8-5.8-8.9-6-14.5H0C0.2,46.1,4,54.7,10,61L19.8,51.2z" fill="#5AB85B"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="52.2354" x2="72.0469" y1="23.1826" y2="23.1826">
-<stop offset="0" style="stop-color:#3B87C0"/>
-<stop offset="1" style="stop-color:#0069B2"/>
-</linearGradient>
-<path d="M52.2,20.8c3.6,3.8,5.8,8.9,6,14.5H72c-0.2-9.4-4-17.9-10-24.3L52.2,20.8z" fill="url(#SVGID_2_)"/>
-<path d="M35.3,58.2c-5.6-0.2-10.7-2.4-14.5-6L11.1,62c6.3,6.1,14.8,9.9,24.3,10V58.2z" fill="#5AB85B"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="36.7383" x2="60.9922" y1="62.1421" y2="62.1421">
-<stop offset="0" style="stop-color:#3B87C0"/>
-<stop offset="1" style="stop-color:#0069B2"/>
-</linearGradient>
-<path d="M51.2,52.2c-3.8,3.6-8.9,5.8-14.5,6V72c9.4-0.2,17.9-4,24.3-10L51.2,52.2z" fill="url(#SVGID_3_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="52.2354" x2="72.0469" y1="48.8647" y2="48.8647">
-<stop offset="0" style="stop-color:#3B87C0"/>
-<stop offset="1" style="stop-color:#0069B2"/>
-</linearGradient>
-<path d="M58.3,36.7L58.3,36.7c-0.2,5.6-2.5,10.7-6.1,14.5L62,61c6.1-6.3,9.9-14.8,10-24.3H58.3z" fill="url(#SVGID_4_)"/>
-<linearGradient gradientTransform="matrix(-1 0 0 -1 1424.6426 3552.2568)" gradientUnits="userSpaceOnUse" id="SVGID_5_" x1="1389.332" x2="1393.8867" y1="3487.0864" y2="3487.0864">
-<stop offset="0" style="stop-color:#3B87C0"/>
-<stop offset="1" style="stop-color:#0069B2"/>
-</linearGradient>
-<polygon fill="url(#SVGID_5_)" points="30.8,65.2 35.3,58.3 35.3,72 30.8,65.2 "/>
-</svg>
--- a/homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_anim_longtap_6.svg	Tue May 18 12:12:12 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="75px" version="1.1" viewBox="-1.5 -1.6 75 75" width="75px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
-<path d="M13.8,35.3c0.2-5.6,2.4-10.7,6-14.5L10,11.1C4,17.4,0.2,25.9,0,35.3H13.8z" fill="#424242"/>
-<path d="M20.8,19.8c3.8-3.6,8.9-5.8,14.5-6V0c-9.4,0.2-17.9,4-24.3,10L20.8,19.8z" fill="#424242"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="36.7383" x2="60.9922" y1="9.9063" y2="9.9063">
-<stop offset="0" style="stop-color:#3B87C0"/>
-<stop offset="1" style="stop-color:#0069B2"/>
-</linearGradient>
-<path d="M36.7,0v13.8c5.6,0.2,10.7,2.4,14.5,6L61,10C54.7,4,46.1,0.2,36.7,0z" fill="url(#SVGID_1_)"/>
-<path d="M19.8,51.2c-3.6-3.8-5.8-8.9-6-14.5H0C0.2,46.1,4,54.7,10,61L19.8,51.2z" fill="#5AB85B"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="52.2354" x2="72.0469" y1="23.1826" y2="23.1826">
-<stop offset="0" style="stop-color:#3B87C0"/>
-<stop offset="1" style="stop-color:#0069B2"/>
-</linearGradient>
-<path d="M52.2,20.8c3.6,3.8,5.8,8.9,6,14.5H72c-0.2-9.4-4-17.9-10-24.3L52.2,20.8z" fill="url(#SVGID_2_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="11.0552" x2="35.3105" y1="62.1421" y2="62.1421">
-<stop offset="0" style="stop-color:#3B87C0"/>
-<stop offset="1" style="stop-color:#0069B2"/>
-</linearGradient>
-<path d="M35.3,58.2c-5.6-0.2-10.7-2.4-14.5-6L11.1,62c6.3,6.1,14.8,9.9,24.3,10V58.2z" fill="url(#SVGID_3_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="36.7383" x2="60.9922" y1="62.1421" y2="62.1421">
-<stop offset="0" style="stop-color:#3B87C0"/>
-<stop offset="1" style="stop-color:#0069B2"/>
-</linearGradient>
-<path d="M51.2,52.2c-3.8,3.6-8.9,5.8-14.5,6V72c9.4-0.2,17.9-4,24.3-10L51.2,52.2z" fill="url(#SVGID_4_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_5_" x1="52.2354" x2="72.0469" y1="48.8647" y2="48.8647">
-<stop offset="0" style="stop-color:#3B87C0"/>
-<stop offset="1" style="stop-color:#0069B2"/>
-</linearGradient>
-<path d="M58.3,36.7L58.3,36.7c-0.2,5.6-2.5,10.7-6.1,14.5L62,61c6.1-6.3,9.9-14.8,10-24.3H58.3z" fill="url(#SVGID_5_)"/>
-<linearGradient gradientTransform="matrix(-0.7071 -0.7071 0.7071 -0.7071 -1461.6281 3526.3462)" gradientUnits="userSpaceOnUse" id="SVGID_6_" x1="1409.8438" x2="1414.3984" y1="3497.7866" y2="3497.7866">
-<stop offset="0" style="stop-color:#3B87C0"/>
-<stop offset="1" style="stop-color:#0069B2"/>
-</linearGradient>
-<polygon fill="url(#SVGID_6_)" points="11.5,52.9 19.6,51.3 9.9,61 11.5,52.9 "/>
-</svg>
--- a/homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_anim_longtap_7.svg	Tue May 18 12:12:12 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="75px" version="1.1" viewBox="-1.5 -1.6 75 75" width="75px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
-<path d="M13.8,35.3c0.2-5.6,2.4-10.7,6-14.5L10,11.1C4,17.4,0.2,25.9,0,35.3H13.8z" fill="#424242"/>
-<path d="M20.8,19.8c3.8-3.6,8.9-5.8,14.5-6V0c-9.4,0.2-17.9,4-24.3,10L20.8,19.8z" fill="#424242"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="36.7383" x2="60.9922" y1="9.9063" y2="9.9063">
-<stop offset="0" style="stop-color:#3B87C0"/>
-<stop offset="1" style="stop-color:#0069B2"/>
-</linearGradient>
-<path d="M36.7,0v13.8c5.6,0.2,10.7,2.4,14.5,6L61,10C54.7,4,46.1,0.2,36.7,0z" fill="url(#SVGID_1_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="0" x2="19.814" y1="48.8647" y2="48.8647">
-<stop offset="0" style="stop-color:#3B87C0"/>
-<stop offset="1" style="stop-color:#0069B2"/>
-</linearGradient>
-<path d="M19.8,51.2c-3.6-3.8-5.8-8.9-6-14.5H0C0.2,46.1,4,54.7,10,61L19.8,51.2z" fill="url(#SVGID_2_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="52.2354" x2="72.0469" y1="23.1826" y2="23.1826">
-<stop offset="0" style="stop-color:#3B87C0"/>
-<stop offset="1" style="stop-color:#0069B2"/>
-</linearGradient>
-<path d="M52.2,20.8c3.6,3.8,5.8,8.9,6,14.5H72c-0.2-9.4-4-17.9-10-24.3L52.2,20.8z" fill="url(#SVGID_3_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="11.0552" x2="35.3105" y1="62.1421" y2="62.1421">
-<stop offset="0" style="stop-color:#3B87C0"/>
-<stop offset="1" style="stop-color:#0069B2"/>
-</linearGradient>
-<path d="M35.3,58.2c-5.6-0.2-10.7-2.4-14.5-6L11.1,62c6.3,6.1,14.8,9.9,24.3,10V58.2z" fill="url(#SVGID_4_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_5_" x1="36.7383" x2="60.9922" y1="62.1421" y2="62.1421">
-<stop offset="0" style="stop-color:#3B87C0"/>
-<stop offset="1" style="stop-color:#0069B2"/>
-</linearGradient>
-<path d="M51.2,52.2c-3.8,3.6-8.9,5.8-14.5,6V72c9.4-0.2,17.9-4,24.3-10L51.2,52.2z" fill="url(#SVGID_5_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_6_" x1="52.2354" x2="72.0469" y1="48.8647" y2="48.8647">
-<stop offset="0" style="stop-color:#3B87C0"/>
-<stop offset="1" style="stop-color:#0069B2"/>
-</linearGradient>
-<path d="M58.3,36.7L58.3,36.7c-0.2,5.6-2.5,10.7-6.1,14.5L62,61c6.1-6.3,9.9-14.8,10-24.3H58.3z" fill="url(#SVGID_6_)"/>
-<linearGradient gradientTransform="matrix(0 -1 1 0 -3505.6865 1466.1221)" gradientUnits="userSpaceOnUse" id="SVGID_7_" x1="1430.8135" x2="1435.3682" y1="3512.5659" y2="3512.5659">
-<stop offset="0" style="stop-color:#3B87C0"/>
-<stop offset="1" style="stop-color:#0069B2"/>
-</linearGradient>
-<polygon fill="url(#SVGID_7_)" points="6.9,30.8 13.8,35.3 0,35.3 6.9,30.8 "/>
-</svg>
--- a/homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_anim_longtap_8.svg	Tue May 18 12:12:12 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="75px" version="1.1" viewBox="-1.5 -1.6 75 75" width="75px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="0" x2="19.814" y1="23.1826" y2="23.1826">
-<stop offset="0" style="stop-color:#3B87C0"/>
-<stop offset="1" style="stop-color:#0069B2"/>
-</linearGradient>
-<path d="M13.8,35.3c0.2-5.6,2.4-10.7,6-14.5L10,11.1C4,17.4,0.2,25.9,0,35.3H13.8z" fill="url(#SVGID_1_)"/>
-<path d="M20.8,19.8c3.8-3.6,8.9-5.8,14.5-6V0c-9.4,0.2-17.9,4-24.3,10L20.8,19.8z" fill="#424242"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="36.7383" x2="60.9922" y1="9.9063" y2="9.9063">
-<stop offset="0" style="stop-color:#3B87C0"/>
-<stop offset="1" style="stop-color:#0069B2"/>
-</linearGradient>
-<path d="M36.7,0v13.8c5.6,0.2,10.7,2.4,14.5,6L61,10C54.7,4,46.1,0.2,36.7,0z" fill="url(#SVGID_2_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="0" x2="19.814" y1="48.8647" y2="48.8647">
-<stop offset="0" style="stop-color:#3B87C0"/>
-<stop offset="1" style="stop-color:#0069B2"/>
-</linearGradient>
-<path d="M19.8,51.2c-3.6-3.8-5.8-8.9-6-14.5H0C0.2,46.1,4,54.7,10,61L19.8,51.2z" fill="url(#SVGID_3_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="52.2354" x2="72.0469" y1="23.1826" y2="23.1826">
-<stop offset="0" style="stop-color:#3B87C0"/>
-<stop offset="1" style="stop-color:#0069B2"/>
-</linearGradient>
-<path d="M52.2,20.8c3.6,3.8,5.8,8.9,6,14.5H72c-0.2-9.4-4-17.9-10-24.3L52.2,20.8z" fill="url(#SVGID_4_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_5_" x1="11.0552" x2="35.3105" y1="62.1421" y2="62.1421">
-<stop offset="0" style="stop-color:#3B87C0"/>
-<stop offset="1" style="stop-color:#0069B2"/>
-</linearGradient>
-<path d="M35.3,58.2c-5.6-0.2-10.7-2.4-14.5-6L11.1,62c6.3,6.1,14.8,9.9,24.3,10V58.2z" fill="url(#SVGID_5_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_6_" x1="36.7383" x2="60.9922" y1="62.1421" y2="62.1421">
-<stop offset="0" style="stop-color:#3B87C0"/>
-<stop offset="1" style="stop-color:#0069B2"/>
-</linearGradient>
-<path d="M51.2,52.2c-3.8,3.6-8.9,5.8-14.5,6V72c9.4-0.2,17.9-4,24.3-10L51.2,52.2z" fill="url(#SVGID_6_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_7_" x1="52.2354" x2="72.0469" y1="48.8647" y2="48.8647">
-<stop offset="0" style="stop-color:#3B87C0"/>
-<stop offset="1" style="stop-color:#0069B2"/>
-</linearGradient>
-<path d="M58.3,36.7L58.3,36.7c-0.2,5.6-2.5,10.7-6.1,14.5L62,61c6.1-6.3,9.9-14.8,10-24.3H58.3z" fill="url(#SVGID_7_)"/>
-<linearGradient gradientTransform="matrix(0.7071 -0.7071 0.7071 0.7071 -3490.3384 -1437.3785)" gradientUnits="userSpaceOnUse" id="SVGID_8_" x1="1452.3613" x2="1456.915" y1="3506.2817" y2="3506.2817">
-<stop offset="0" style="stop-color:#3B87C0"/>
-<stop offset="1" style="stop-color:#0069B2"/>
-</linearGradient>
-<polygon fill="url(#SVGID_8_)" points="19.1,11.7 20.8,19.8 11.1,10.1 19.1,11.7 "/>
-</svg>
--- a/homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_anim_longtap_9.svg	Tue May 18 12:12:12 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="75px" version="1.1" viewBox="-1.5 -1.6 75 75" width="75px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="0" x2="19.814" y1="23.1826" y2="23.1826">
-<stop offset="0" style="stop-color:#3B87C0"/>
-<stop offset="1" style="stop-color:#0069B2"/>
-</linearGradient>
-<path d="M13.8,35.3c0.2-5.6,2.4-10.7,6-14.5L10,11.1C4,17.4,0.2,25.9,0,35.3H13.8z" fill="url(#SVGID_1_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="11.0552" x2="35.3105" y1="9.9063" y2="9.9063">
-<stop offset="0" style="stop-color:#3B87C0"/>
-<stop offset="1" style="stop-color:#0069B2"/>
-</linearGradient>
-<path d="M20.8,19.8c3.8-3.6,8.9-5.8,14.5-6V0c-9.4,0.2-17.9,4-24.3,10L20.8,19.8z" fill="url(#SVGID_2_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="36.7383" x2="60.9922" y1="9.9063" y2="9.9063">
-<stop offset="0" style="stop-color:#3B87C0"/>
-<stop offset="1" style="stop-color:#0069B2"/>
-</linearGradient>
-<path d="M36.7,0v13.8c5.6,0.2,10.7,2.4,14.5,6L61,10C54.7,4,46.1,0.2,36.7,0z" fill="url(#SVGID_3_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="0" x2="19.814" y1="48.8647" y2="48.8647">
-<stop offset="0" style="stop-color:#3B87C0"/>
-<stop offset="1" style="stop-color:#0069B2"/>
-</linearGradient>
-<path d="M19.8,51.2c-3.6-3.8-5.8-8.9-6-14.5H0C0.2,46.1,4,54.7,10,61L19.8,51.2z" fill="url(#SVGID_4_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_5_" x1="52.2354" x2="72.0469" y1="23.1826" y2="23.1826">
-<stop offset="0" style="stop-color:#3B87C0"/>
-<stop offset="1" style="stop-color:#0069B2"/>
-</linearGradient>
-<path d="M52.2,20.8c3.6,3.8,5.8,8.9,6,14.5H72c-0.2-9.4-4-17.9-10-24.3L52.2,20.8z" fill="url(#SVGID_5_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_6_" x1="11.0552" x2="35.3105" y1="62.1421" y2="62.1421">
-<stop offset="0" style="stop-color:#3B87C0"/>
-<stop offset="1" style="stop-color:#0069B2"/>
-</linearGradient>
-<path d="M35.3,58.2c-5.6-0.2-10.7-2.4-14.5-6L11.1,62c6.3,6.1,14.8,9.9,24.3,10V58.2z" fill="url(#SVGID_6_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_7_" x1="36.7383" x2="60.9922" y1="62.1421" y2="62.1421">
-<stop offset="0" style="stop-color:#3B87C0"/>
-<stop offset="1" style="stop-color:#0069B2"/>
-</linearGradient>
-<path d="M51.2,52.2c-3.8,3.6-8.9,5.8-14.5,6V72c9.4-0.2,17.9-4,24.3-10L51.2,52.2z" fill="url(#SVGID_7_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_8_" x1="52.2354" x2="72.0469" y1="48.8647" y2="48.8647">
-<stop offset="0" style="stop-color:#3B87C0"/>
-<stop offset="1" style="stop-color:#0069B2"/>
-</linearGradient>
-<path d="M58.3,36.7L58.3,36.7c-0.2,5.6-2.5,10.7-6.1,14.5L62,61c6.1-6.3,9.9-14.8,10-24.3H58.3z" fill="url(#SVGID_8_)"/>
-</svg>
--- a/homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_large_applications_download.svg	Tue May 18 12:12:12 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,169 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="98px" height="98px" viewBox="0 0 98 98">
-<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="50.9189" y1="46.7383" x2="50.9189" y2="77.3273" gradientTransform="matrix(1 1.000000e-004 -1.000000e-004 1 -2.362 -29.0813)">
-<stop offset="0" style="stop-color:#A6A8AB"/>
-<stop offset="1" style="stop-color:#231F20"/>
-</linearGradient>
-<polygon fill-opacity="0.2" stroke-opacity="0.2" fill="url(#SVGID_1_)" points="8.539,45.168 30.738,45.176 30.758,17.66 66.072,17.664 66.082,45.203   88.559,45.207 48.346,86.49 "/>
-<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="50.9102" y1="48.5117" x2="50.9102" y2="76.6895" gradientTransform="matrix(1 1.000000e-004 -1.000000e-004 1 -2.362 -29.0813)">
-<stop offset="0" style="stop-color:#7F8082"/>
-<stop offset="1" style="stop-color:#000000"/>
-</linearGradient>
-<polygon fill-opacity="0.4" stroke-opacity="0.4" fill="url(#SVGID_2_)" points="12.131,46.691 32.27,46.697 32.283,19.184 64.553,19.188 64.563,46.727   84.949,46.73 48.352,84.305 "/>
-<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="50.9697" y1="48.3413" x2="50.9697" y2="107.9882" gradientTransform="matrix(1 1.000000e-004 -1.000000e-004 1 -2.362 -29.0813)">
-<stop offset="0" style="stop-color:#45E8FF"/>
-<stop offset="0.1455" style="stop-color:#45E8FF"/>
-<stop offset="0.5576" style="stop-color:#30A4D5"/>
-<stop offset="1" style="stop-color:#1347BA"/>
-</linearGradient>
-<polygon fill="url(#SVGID_3_)" points="16.996,46.771 48.355,79.5 80.203,46.732 63.039,46.727 63.027,19.936 33.807,19.934   33.807,46.77 "/>
-<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="48.4165" y1="19.9453" x2="48.4165" y2="19.9492">
-<stop offset="0" style="stop-color:#B3FCFF"/>
-<stop offset="0.4182" style="stop-color:#B3FCFF"/>
-<stop offset="1" style="stop-color:#5FBAD8"/>
-</linearGradient>
-<line fill="url(#SVGID_4_)" x1="63.027" y1="19.949" x2="33.807" y2="19.945"/>
-<linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="48.4165" y1="8.1895" x2="48.4165" y2="81.0683">
-<stop offset="0" style="stop-color:#B3FCFF"/>
-<stop offset="0.4182" style="stop-color:#B3FCFF"/>
-<stop offset="1" style="stop-color:#5FBAD8"/>
-</linearGradient>
-<polygon fill="url(#SVGID_5_)" points="33.807,19.184 63.029,19.188 63.027,20.709 33.805,20.707 33.807,19.184 "/>
-<linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="71.5557" y1="8.1895" x2="71.5557" y2="81.0683">
-<stop offset="0" style="stop-color:#B3FCFF"/>
-<stop offset="0.4182" style="stop-color:#B3FCFF"/>
-<stop offset="1" style="stop-color:#5FBAD8"/>
-</linearGradient>
-<polygon fill="url(#SVGID_6_)" points="62.58,46.789 80.531,46.793 79.17,48.316 62.58,48.316 62.58,46.789 "/>
-<linearGradient id="SVGID_7_" gradientUnits="userSpaceOnUse" x1="24.8906" y1="8.1895" x2="24.8906" y2="81.0684">
-<stop offset="0" style="stop-color:#B3FCFF"/>
-<stop offset="0.4182" style="stop-color:#B3FCFF"/>
-<stop offset="1" style="stop-color:#5FBAD8"/>
-</linearGradient>
-<polygon fill="url(#SVGID_7_)" points="16,46.77 33.781,46.77 33.777,48.291 17.605,48.291 16,46.77 "/>
-<polygon fill="#33AEDB" points="79.213,46.73 48.355,78.408 17.84,46.691 15.723,46.695 48.354,80.594 81.342,46.73 "/>
-<rect fill="none" width="98" height="98"/>
-<linearGradient id="SVGID_8_" gradientUnits="userSpaceOnUse" x1="65.5" y1="56.4053" x2="65.5" y2="92.0204">
-<stop offset="0" style="stop-color:#A6A8AB"/>
-<stop offset="1" style="stop-color:#231F20"/>
-</linearGradient>
-<path fill-opacity="0.2" stroke-opacity="0.2" fill="url(#SVGID_8_)" d="M59,91.5c-1.103,0-2-0.897-2-2v-13c0-1.103,0.897-2,2-2h13c1.103,0,2,0.897,2,2v13  c0,1.103-0.897,2-2,2H59z"/>
-<linearGradient id="SVGID_9_" gradientUnits="userSpaceOnUse" x1="65.5" y1="56.584" x2="65.5" y2="91.4017">
-<stop offset="0" style="stop-color:#A9AAAD"/>
-<stop offset="1" style="stop-color:#000000"/>
-</linearGradient>
-<path fill-opacity="0.4" stroke-opacity="0.4" fill="url(#SVGID_9_)" d="M59,91c-0.827,0-1.5-0.673-1.5-1.5v-13c0-0.827,0.673-1.5,1.5-1.5h13  c0.827,0,1.5,0.673,1.5,1.5v13c0,0.827-0.673,1.5-1.5,1.5H59z"/>
-<linearGradient id="SVGID_10_" gradientUnits="userSpaceOnUse" x1="65.5" y1="75" x2="65.5" y2="90.3335">
-<stop offset="0" style="stop-color:#E9F0F2"/>
-<stop offset="0.0424" style="stop-color:#E9F0F2"/>
-<stop offset="0.3152" style="stop-color:#BDC2C4"/>
-<stop offset="0.6727" style="stop-color:#949DA1"/>
-<stop offset="1" style="stop-color:#98A1A4"/>
-</linearGradient>
-<path fill="url(#SVGID_10_)" d="M72,75H59c-0.553,0-1,0.447-1,1v13c0,0.553,0.447,1,1,1h13c0.553,0,1-0.447,1-1V76  C73,75.447,72.553,75,72,75z"/>
-<path fill-opacity="0.2" stroke-opacity="0.2" fill="url(#SVGID_11_)" d="M76,91.5c-1.103,0-2-0.897-2-2v-13c0-1.103,0.897-2,2-2h13c1.103,0,2,0.897,2,2v13  c0,1.103-0.897,2-2,2H76z"/>
-<path fill-opacity="0.4" stroke-opacity="0.4" fill="url(#SVGID_12_)" d="M76,91c-0.827,0-1.5-0.673-1.5-1.5v-13c0-0.827,0.673-1.5,1.5-1.5h13  c0.827,0,1.5,0.673,1.5,1.5v13c0,0.827-0.673,1.5-1.5,1.5H76z"/>
-<linearGradient id="SVGID_13_" gradientUnits="userSpaceOnUse" x1="82.5" y1="75" x2="82.5" y2="90.3335">
-<stop offset="0" style="stop-color:#E9F0F2"/>
-<stop offset="0.0424" style="stop-color:#E9F0F2"/>
-<stop offset="0.3152" style="stop-color:#BDC2C4"/>
-<stop offset="0.6727" style="stop-color:#949DA1"/>
-<stop offset="1" style="stop-color:#98A1A4"/>
-</linearGradient>
-<path fill="url(#SVGID_13_)" d="M89,75H76c-0.553,0-1,0.447-1,1v13c0,0.553,0.447,1,1,1h13c0.553,0,1-0.447,1-1V76  C90,75.447,89.553,75,89,75z"/>
-<linearGradient id="SVGID_14_" gradientUnits="userSpaceOnUse" x1="64.5" y1="56.4053" x2="64.5" y2="92.0204">
-<stop offset="0" style="stop-color:#A6A8AB"/>
-<stop offset="1" style="stop-color:#231F20"/>
-</linearGradient>
-<path fill-opacity="0.2" stroke-opacity="0.2" fill="url(#SVGID_14_)" d="M58,73.5c-1.103,0-2-0.898-2-2v-13c0-1.103,0.897-2,2-2h13.001  c1.102,0,1.999,0.897,1.999,2v13c0,1.102-0.897,2-1.999,2H58z"/>
-<linearGradient id="SVGID_15_" gradientUnits="userSpaceOnUse" x1="64.5" y1="56.584" x2="64.5" y2="91.4017">
-<stop offset="0" style="stop-color:#A9AAAD"/>
-<stop offset="1" style="stop-color:#000000"/>
-</linearGradient>
-<path fill-opacity="0.4" stroke-opacity="0.4" fill="url(#SVGID_15_)" d="M58,73c-0.827,0-1.5-0.672-1.5-1.5v-13c0-0.827,0.673-1.5,1.5-1.5h13.001  c0.826,0,1.499,0.673,1.499,1.5v13c0,0.828-0.673,1.5-1.499,1.5H58z"/>
-<linearGradient id="SVGID_16_" gradientUnits="userSpaceOnUse" x1="64.5" y1="57" x2="64.5" y2="72.3335">
-<stop offset="0" style="stop-color:#E9F0F2"/>
-<stop offset="0.0424" style="stop-color:#E9F0F2"/>
-<stop offset="0.3152" style="stop-color:#BDC2C4"/>
-<stop offset="0.6727" style="stop-color:#949DA1"/>
-<stop offset="1" style="stop-color:#98A1A4"/>
-</linearGradient>
-<path fill="url(#SVGID_16_)" d="M71.001,72C71.553,72,72,71.553,72,71.001V58c0-0.552-0.447-1-0.999-1H58c-0.553,0-1,0.448-1,1  v13.001C57,71.553,57.447,72,58,72H71.001z"/>
-<path fill-opacity="0.2" stroke-opacity="0.2" fill="url(#SVGID_11_)" d="M76,74.5c-1.103,0-2-0.897-2-2v-13c0-1.103,0.897-2,2-2h13c1.103,0,2,0.897,2,2v13  c0,1.103-0.897,2-2,2H76z"/>
-<path fill-opacity="0.4" stroke-opacity="0.4" fill="url(#SVGID_12_)" d="M76,74c-0.827,0-1.5-0.672-1.5-1.5v-13c0-0.827,0.673-1.5,1.5-1.5h13  c0.827,0,1.5,0.673,1.5,1.5v13c0,0.828-0.673,1.5-1.5,1.5H76z"/>
-<path fill="url(#SVGID_19_)" d="M89,58H76c-0.553,0-1,0.448-1,1v13c0,0.553,0.447,1,1,1h13c0.553,0,1-0.447,1-1V59  C90,58.448,89.553,58,89,58z"/>
-<linearGradient id="SVGID_20_" gradientUnits="userSpaceOnUse" x1="65.5" y1="75" x2="65.5" y2="90">
-<stop offset="0" style="stop-color:#E9F0F2"/>
-<stop offset="0.0424" style="stop-color:#E9F0F2"/>
-<stop offset="0.2606" style="stop-color:#BDC2C4"/>
-<stop offset="0.5394" style="stop-color:#949DA1"/>
-<stop offset="1" style="stop-color:#98A1A4"/>
-</linearGradient>
-<path fill="url(#SVGID_20_)" d="M73,89c0,0.553-0.447,1-1,1H59c-0.553,0-1-0.447-1-1V76c0-0.553,0.447-1,1-1h13c0.553,0,1,0.447,1,1  V89z"/>
-<linearGradient id="SVGID_21_" gradientUnits="userSpaceOnUse" x1="65.5" y1="75" x2="65.5" y2="90">
-<stop offset="0" style="stop-color:#F6FDFF"/>
-<stop offset="0.3152" style="stop-color:#D1D7D9"/>
-<stop offset="0.6727" style="stop-color:#949DA1"/>
-<stop offset="1" style="stop-color:#B7C3C7"/>
-</linearGradient>
-<path fill="url(#SVGID_21_)" d="M72,75H59c-0.553,0-1,0.447-1,1v13c0,0.553,0.447,1,1,1h13c0.553,0,1-0.447,1-1V76  C73,75.447,72.553,75,72,75z M72.5,89c0,0.275-0.225,0.5-0.5,0.5H59c-0.275,0-0.5-0.225-0.5-0.5V76c0-0.275,0.225-0.5,0.5-0.5h13  c0.275,0,0.5,0.225,0.5,0.5V89z"/>
-<linearGradient id="SVGID_22_" gradientUnits="userSpaceOnUse" x1="82.5" y1="75" x2="82.5" y2="90.6667">
-<stop offset="0" style="stop-color:#E9F0F2"/>
-<stop offset="0.0424" style="stop-color:#E9F0F2"/>
-<stop offset="0.2606" style="stop-color:#BDC2C4"/>
-<stop offset="0.5394" style="stop-color:#949DA1"/>
-<stop offset="1" style="stop-color:#98A1A4"/>
-</linearGradient>
-<path fill="url(#SVGID_22_)" d="M90,89c0,0.553-0.447,1-1,1H76c-0.553,0-1-0.447-1-1V76c0-0.553,0.447-1,1-1h13c0.553,0,1,0.447,1,1  V89z"/>
-<linearGradient id="SVGID_23_" gradientUnits="userSpaceOnUse" x1="82.5" y1="75" x2="82.5" y2="90.6667">
-<stop offset="0" style="stop-color:#F6FDFF"/>
-<stop offset="0.3152" style="stop-color:#D1D7D9"/>
-<stop offset="0.6727" style="stop-color:#949DA1"/>
-<stop offset="1" style="stop-color:#B7C3C7"/>
-</linearGradient>
-<path fill="url(#SVGID_23_)" d="M89,75H76c-0.553,0-1,0.447-1,1v13c0,0.553,0.447,1,1,1h13c0.553,0,1-0.447,1-1V76  C90,75.447,89.553,75,89,75z M89.5,89c0,0.275-0.225,0.5-0.5,0.5H76c-0.275,0-0.5-0.225-0.5-0.5V76c0-0.275,0.225-0.5,0.5-0.5h13  c0.275,0,0.5,0.225,0.5,0.5V89z"/>
-<linearGradient id="SVGID_24_" gradientUnits="userSpaceOnUse" x1="64.5" y1="56.333" x2="64.5" y2="72.3331">
-<stop offset="0" style="stop-color:#AFED23"/>
-<stop offset="0.7394" style="stop-color:#358C0C"/>
-<stop offset="1" style="stop-color:#67AD1A"/>
-</linearGradient>
-<path fill="url(#SVGID_24_)" d="M72,71.001C72,71.553,71.553,72,71.001,72H58c-0.553,0-1-0.447-1-0.999V58c0-0.552,0.447-1,1-1  h13.001C71.553,57,72,57.448,72,58V71.001z"/>
-<linearGradient id="SVGID_25_" gradientUnits="userSpaceOnUse" x1="64.5" y1="56.333" x2="64.5" y2="72.3331">
-<stop offset="0" style="stop-color:#E5FFB2"/>
-<stop offset="0.3879" style="stop-color:#6AAB18"/>
-<stop offset="0.7879" style="stop-color:#247307"/>
-<stop offset="1" style="stop-color:#7ABF2B"/>
-</linearGradient>
-<path fill="url(#SVGID_25_)" d="M71.001,57H58c-0.553,0-1,0.448-1,1v13.001C57,71.553,57.447,72,58,72h13.001  C71.553,72,72,71.553,72,71.001V58C72,57.448,71.553,57,71.001,57z M71.5,71.001c0,0.274-0.225,0.499-0.499,0.499H58  c-0.275,0-0.5-0.225-0.5-0.499V58c0-0.275,0.225-0.5,0.5-0.5h13.001c0.274,0,0.499,0.225,0.499,0.5V71.001z"/>
-<path fill="url(#SVGID_19_)" d="M90,72c0,0.553-0.447,1-1,1H76c-0.553,0-1-0.447-1-1V59c0-0.552,0.447-1,1-1h13c0.553,0,1,0.448,1,1  V72z"/>
-<linearGradient id="SVGID_27_" gradientUnits="userSpaceOnUse" x1="82.5" y1="58" x2="82.5" y2="73.3335">
-<stop offset="0" style="stop-color:#F6FDFF"/>
-<stop offset="0.3152" style="stop-color:#D1D7D9"/>
-<stop offset="0.6727" style="stop-color:#949DA1"/>
-<stop offset="1" style="stop-color:#B7C3C7"/>
-</linearGradient>
-<path fill="url(#SVGID_27_)" d="M89,58H76c-0.553,0-1,0.448-1,1v13c0,0.553,0.447,1,1,1h13c0.553,0,1-0.447,1-1V59  C90,58.448,89.553,58,89,58z M89.5,72c0,0.275-0.225,0.5-0.5,0.5H76c-0.275,0-0.5-0.225-0.5-0.5V59c0-0.275,0.225-0.5,0.5-0.5h13  c0.275,0,0.5,0.225,0.5,0.5V72z"/>
-<rect x="49" y="49" fill="none" width="49" height="49"/>
-<defs>
-<linearGradient id="SVGID_11_" gradientUnits="userSpaceOnUse" x1="82.5" y1="56.4053" x2="82.5" y2="92.0204">
-<stop offset="0" style="stop-color:#A6A8AB"/>
-<stop offset="1" style="stop-color:#231F20"/>
-</linearGradient>
-</defs>
-<defs>
-<linearGradient id="SVGID_12_" gradientUnits="userSpaceOnUse" x1="82.5" y1="56.584" x2="82.5" y2="91.4017">
-<stop offset="0" style="stop-color:#A9AAAD"/>
-<stop offset="1" style="stop-color:#000000"/>
-</linearGradient>
-</defs>
-<defs>
-<linearGradient id="SVGID_19_" gradientUnits="userSpaceOnUse" x1="82.5" y1="58" x2="82.5" y2="73.3335">
-<stop offset="0" style="stop-color:#E9F0F2"/>
-<stop offset="0.0424" style="stop-color:#E9F0F2"/>
-<stop offset="0.3152" style="stop-color:#BDC2C4"/>
-<stop offset="0.6727" style="stop-color:#949DA1"/>
-<stop offset="1" style="stop-color:#98A1A4"/>
-</linearGradient>
-</defs>
-</svg>
--- a/homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_large_applications_user.svg	Tue May 18 12:12:12 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,199 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="98px" height="98px" viewBox="0 0 98 98">
-<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="48.9995" y1="11" x2="48.9995" y2="87.1677">
-<stop offset="0" style="stop-color:#A6A8AB"/>
-<stop offset="1" style="stop-color:#231F20"/>
-</linearGradient>
-<path fill-opacity="0.2" stroke-opacity="0.2" fill="url(#SVGID_1_)" d="M10.5,87v-1.949c0-7.928,3.57-14.014,10.324-17.6  c1.77-0.939,6.408-2.703,10.498-4.26c1.463-0.559,2.809-1.068,3.891-1.49l1.854-0.813c0.68-1.561,0.375-4.135,0.012-4.703  c-0.094-0.143-1.463-2.387-1.463-2.387l-0.904-1.482h0.125c-0.404-0.758-0.799-1.533-1.17-2.32c-0.018,0-0.027,0-0.041,0  c-2.383,0-4.756-2.02-5.906-5.027c-1.229-3.209-0.715-6.434,1.189-8.025c-1.721-6.977-1.436-12.307,0.85-15.846  c1.693-2.625,4.082-3.686,5.904-4.105C38.129,13.984,41.596,11,48.33,11c7.727,0.254,13.732,2.893,17.398,7.627  c3.629,4.682,4.742,11.238,3.135,18.467c1.777,1.664,2.188,4.885,0.926,7.988c-1.104,2.727-3.24,4.617-5.422,4.863  c-0.877,1.838-1.848,3.629-2.893,5.338l-0.141,0.227c-0.141,0.238-0.273,0.457-0.412,0.68L60,55.861l0.852,0.479  c-0.477,1.115-0.438,3.623,0.209,4.807l1.398,0.563l0.525,0.199l0.438,0.178l2.471,0.916c4.264,1.586,9.564,3.555,11.27,4.441  c1.725,0.9,10.338,5.973,10.338,17.607V87H10.5z"/>
-<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="48.9995" y1="11.9746" x2="48.9995" y2="86.1888">
-<stop offset="0" style="stop-color:#A9AAAD"/>
-<stop offset="1" style="stop-color:#000000"/>
-</linearGradient>
-<path fill-opacity="0.4" stroke-opacity="0.4" fill="url(#SVGID_2_)" d="M11.473,86.025v-0.975c0-7.545,3.391-13.334,9.809-16.74  c1.721-0.914,6.338-2.67,10.41-4.219c1.441-0.547,2.789-1.063,3.877-1.486l2.213-0.965c1.004-1.787,0.719-5.037,0.117-5.98  c-0.088-0.137-0.268-0.438-0.268-0.438l-1.182-1.932h0.035c-0.795-1.393-1.539-2.844-2.234-4.332  c-0.201,0.043-0.414,0.063-0.625,0.063c-1.98,0-3.99-1.77-4.996-4.398c-1.176-3.072-0.559-6.164,1.389-7.266  c-1.832-7.027-1.643-12.316,0.559-15.729c1.596-2.473,3.871-3.416,5.627-3.758c2.482-3.1,5.723-5.896,12.127-5.896  c7.404,0.246,13.145,2.752,16.631,7.248c3.447,4.449,4.494,10.727,2.947,17.676c0,0-0.043,0.207-0.129,0.578  c1.816,1.203,2.318,4.252,1.107,7.238c-1.039,2.563-3.049,4.285-5,4.285c-0.051,0-0.1,0-0.148-0.002  c-0.93,1.998-1.971,3.938-3.096,5.777L60.5,55.004c-0.127,0.219-0.264,0.438-0.398,0.656c-0.039,0.061-0.07,0.127-0.102,0.201  l-0.037,0.072c-0.594,1.406-0.611,4.551,0.445,6.002l1.688,0.68l0.541,0.205l0.418,0.168l2.5,0.93  c4.232,1.572,9.506,3.531,11.156,4.389c1.641,0.854,9.816,5.672,9.816,16.744v0.975H11.473z"/>
-<radialGradient id="SVGID_3_" cx="-71.7129" cy="-127.9443" r="81.158" gradientTransform="matrix(0.3386 0 0 0.3374 73.7966 117.8436)" gradientUnits="userSpaceOnUse">
-<stop offset="0" style="stop-color:#FFA98E"/>
-<stop offset="0.2" style="stop-color:#FFA98E"/>
-<stop offset="0.9628" style="stop-color:#D45D36"/>
-<stop offset="1" style="stop-color:#D45D36"/>
-</radialGradient>
-<path fill="url(#SVGID_3_)" d="M60.715,62.455c-2.584-1.121-2.5-6.627-1.436-8.293c0.186-0.289,0.355-0.58,0.533-0.871H38.188  c0.176,0.291,0.346,0.582,0.531,0.871c1.066,1.666,1.148,7.172-1.436,8.293c-2.584,1.125,12.02,10.906,12.02,10.906  S63.303,63.58,60.715,62.455z"/>
-<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="48.9995" y1="61.4395" x2="48.9995" y2="84.0762">
-<stop offset="0" style="stop-color:#FF7236"/>
-<stop offset="1" style="stop-color:#BA1212"/>
-</linearGradient>
-<path fill="url(#SVGID_4_)" d="M76.262,68.197c-2.721-1.416-16.199-6.135-16.453-6.428l-10.295,8.557l-11.063-8.887  c-0.307,0.451-13.629,5.121-16.713,6.758c-3.527,1.873-9.289,6.178-9.289,15.879h73.102C85.551,74.375,78.977,69.611,76.262,68.197z  "/>
-<linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="49.0981" y1="59.9551" x2="49.0981" y2="73.1974">
-<stop offset="0" style="stop-color:#BC1C24"/>
-<stop offset="1" style="stop-color:#6B1C24"/>
-</linearGradient>
-<polygon fill="url(#SVGID_5_)" points="35.93,62.537 49.514,73.361 62.268,62.76 59.809,61.77 49.514,70.326 38.451,61.439 "/>
-<path fill="#FF7B56" d="M36.57,64.252c0,0-19.377,5.059-19.377,18.633c0,0-2.77,0.002-2.791,0  C14.402,74.537,20.918,68.045,36.57,64.252z"/>
-<path fill="#FF7B56" d="M61.176,63.936c0,0,19.377,5.061,19.377,18.637c0,0,2.77,0,2.791,0  C83.344,74.223,76.828,67.73,61.176,63.936z"/>
-<linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="49.1011" y1="74.334" x2="49.1011" y2="61.8274">
-<stop offset="0" style="stop-color:#FFA98E"/>
-<stop offset="0.9628" style="stop-color:#D45D36"/>
-<stop offset="1" style="stop-color:#D45D36"/>
-</linearGradient>
-<polygon fill="url(#SVGID_6_)" points="49.514,73.361 35.93,62.537 35.139,62.883 49.514,74.334 63.063,63.068 62.273,62.752 "/>
-<radialGradient id="SVGID_7_" cx="-98.501" cy="-259.397" r="108.9636" gradientTransform="matrix(0.3386 0 0 0.3374 73.7966 117.8436)" gradientUnits="userSpaceOnUse">
-<stop offset="0" style="stop-color:#FFE2D9"/>
-<stop offset="0.5091" style="stop-color:#FFC6B3"/>
-<stop offset="0.7636" style="stop-color:#FFA98E"/>
-<stop offset="1" style="stop-color:#E88160"/>
-</radialGradient>
-<path fill="url(#SVGID_7_)" d="M66.932,37.145c-0.092-0.045-0.197-0.053-0.289-0.08c0-0.002,0-0.002,0-0.002  c-0.02-0.006-0.035-0.01-0.055-0.012c-0.143-0.039-0.285-0.07-0.432-0.08C48.1,33.83,39.818,23.83,39.195,26.48  c-0.498,2.105-5.561,6.662-8.209,8.936c0.021,0.102,0.033,0.191,0.057,0.295c0,0,0.096,0.467,0.293,1.26  c-0.207,0.023-0.416,0.066-0.615,0.15c-1.688,0.711-2.217,3.477-1.182,6.178c1.031,2.701,3.238,4.318,4.926,3.607  c0.104-0.045,0.191-0.119,0.287-0.182c0.98,2.205,2.184,4.566,3.658,6.936c2.469,2.934,6.254,6.375,10.428,6.375  c5.055,0,8.145-2.764,10.271-5.551c0.051-0.117,0.105-0.227,0.17-0.322c1.574-2.461,2.852-4.93,3.885-7.229  c1.652,0.57,3.768-0.963,4.818-3.559C69.072,40.688,68.604,37.896,66.932,37.145z"/>
-<linearGradient id="SVGID_8_" gradientUnits="userSpaceOnUse" x1="42.4819" y1="61.7285" x2="58.0754" y2="46.2569">
-<stop offset="0" style="stop-color:#FFDED3"/>
-<stop offset="0.2121" style="stop-color:#FFC6B3"/>
-<stop offset="1" style="stop-color:#FFA98E"/>
-</linearGradient>
-<path fill="url(#SVGID_8_)" d="M48.096,58.623c-3.076,0-6.178-1.434-8.459-3.594c2.416,2.537,5.664,5.006,9.201,5.006  c5.055,0,8.145-2.764,10.271-5.551c0.051-0.117,0.105-0.227,0.17-0.322c1.574-2.461,2.852-4.93,3.885-7.229  C57.416,56.979,53.148,58.623,48.096,58.623z"/>
-<linearGradient id="SVGID_9_" gradientUnits="userSpaceOnUse" x1="48.6909" y1="12.3115" x2="48.6909" y2="35.2794">
-<stop offset="0" style="stop-color:#8A5D3B"/>
-<stop offset="0.3758" style="stop-color:#632F00"/>
-<stop offset="1" style="stop-color:#361700"/>
-</linearGradient>
-<path fill="url(#SVGID_9_)" d="M48.33,11.975c-6.26,0-9.27,2.846-11.594,5.82c-3.779,0.582-9.77,4.047-5.537,19.223  c2.65-2.271,7.498-8.432,7.996-10.537c0.629-2.676,9.051,7.537,27.447,10.582c0.213-0.852,0.311-1.352,0.311-1.352  C69.844,22.752,63.561,12.482,48.33,11.975z"/>
-<linearGradient id="SVGID_10_" gradientUnits="userSpaceOnUse" x1="56.5469" y1="34.2852" x2="35.739" y2="21.9324">
-<stop offset="0" style="stop-color:#8A5D3B"/>
-<stop offset="0.3636" style="stop-color:#632F00"/>
-<stop offset="1" style="stop-color:#361700"/>
-</linearGradient>
-<path fill="url(#SVGID_10_)" d="M39.217,25.238c0,0,9.004,11.826,27.297,11.807C66.514,37.045,57.898,35.691,39.217,25.238z"/>
-<linearGradient id="SVGID_11_" gradientUnits="userSpaceOnUse" x1="33.8599" y1="19.5259" x2="34.0425" y2="32.7395">
-<stop offset="0" style="stop-color:#8A5D3B"/>
-<stop offset="0.3758" style="stop-color:#632F00"/>
-<stop offset="1" style="stop-color:#361700"/>
-</linearGradient>
-<path fill="url(#SVGID_11_)" d="M37.051,18.674c0,0-8.816,0.527-5.545,15.467C31.506,34.141,30.428,23.91,37.051,18.674z"/>
-<linearGradient id="SVGID_12_" gradientUnits="userSpaceOnUse" x1="51.6084" y1="14.2803" x2="50.9608" y2="20.2678">
-<stop offset="0" style="stop-color:#A87C4F"/>
-<stop offset="1" style="stop-color:#632F00"/>
-</linearGradient>
-<path fill="url(#SVGID_12_)" d="M52.604,20.742c-4.104-0.584-11.047-4.221-13.768-2.922c0,0,8.906-10.162,24.627,1.408  C63.463,19.229,59.715,21.758,52.604,20.742z"/>
-<rect fill="none" width="98" height="98"/>
-<linearGradient id="SVGID_13_" gradientUnits="userSpaceOnUse" x1="65.5" y1="56.4053" x2="65.5" y2="92.0204">
-<stop offset="0" style="stop-color:#A6A8AB"/>
-<stop offset="1" style="stop-color:#231F20"/>
-</linearGradient>
-<path fill-opacity="0.2" stroke-opacity="0.2" fill="url(#SVGID_13_)" d="M59,91.5c-1.103,0-2-0.897-2-2v-13c0-1.103,0.897-2,2-2h13c1.103,0,2,0.897,2,2v13  c0,1.103-0.897,2-2,2H59z"/>
-<linearGradient id="SVGID_14_" gradientUnits="userSpaceOnUse" x1="65.5" y1="56.584" x2="65.5" y2="91.4017">
-<stop offset="0" style="stop-color:#A9AAAD"/>
-<stop offset="1" style="stop-color:#000000"/>
-</linearGradient>
-<path fill-opacity="0.4" stroke-opacity="0.4" fill="url(#SVGID_14_)" d="M59,91c-0.827,0-1.5-0.673-1.5-1.5v-13c0-0.827,0.673-1.5,1.5-1.5h13  c0.827,0,1.5,0.673,1.5,1.5v13c0,0.827-0.673,1.5-1.5,1.5H59z"/>
-<linearGradient id="SVGID_15_" gradientUnits="userSpaceOnUse" x1="65.5" y1="75" x2="65.5" y2="90.3335">
-<stop offset="0" style="stop-color:#E9F0F2"/>
-<stop offset="0.0424" style="stop-color:#E9F0F2"/>
-<stop offset="0.3152" style="stop-color:#BDC2C4"/>
-<stop offset="0.6727" style="stop-color:#949DA1"/>
-<stop offset="1" style="stop-color:#98A1A4"/>
-</linearGradient>
-<path fill="url(#SVGID_15_)" d="M72,75H59c-0.553,0-1,0.447-1,1v13c0,0.553,0.447,1,1,1h13c0.553,0,1-0.447,1-1V76  C73,75.447,72.553,75,72,75z"/>
-<path fill-opacity="0.2" stroke-opacity="0.2" fill="url(#SVGID_16_)" d="M76,91.5c-1.103,0-2-0.897-2-2v-13c0-1.103,0.897-2,2-2h13c1.103,0,2,0.897,2,2v13  c0,1.103-0.897,2-2,2H76z"/>
-<path fill-opacity="0.4" stroke-opacity="0.4" fill="url(#SVGID_17_)" d="M76,91c-0.827,0-1.5-0.673-1.5-1.5v-13c0-0.827,0.673-1.5,1.5-1.5h13  c0.827,0,1.5,0.673,1.5,1.5v13c0,0.827-0.673,1.5-1.5,1.5H76z"/>
-<linearGradient id="SVGID_18_" gradientUnits="userSpaceOnUse" x1="82.5" y1="75" x2="82.5" y2="90.3335">
-<stop offset="0" style="stop-color:#E9F0F2"/>
-<stop offset="0.0424" style="stop-color:#E9F0F2"/>
-<stop offset="0.3152" style="stop-color:#BDC2C4"/>
-<stop offset="0.6727" style="stop-color:#949DA1"/>
-<stop offset="1" style="stop-color:#98A1A4"/>
-</linearGradient>
-<path fill="url(#SVGID_18_)" d="M89,75H76c-0.553,0-1,0.447-1,1v13c0,0.553,0.447,1,1,1h13c0.553,0,1-0.447,1-1V76  C90,75.447,89.553,75,89,75z"/>
-<linearGradient id="SVGID_19_" gradientUnits="userSpaceOnUse" x1="64.5" y1="56.4053" x2="64.5" y2="92.0204">
-<stop offset="0" style="stop-color:#A6A8AB"/>
-<stop offset="1" style="stop-color:#231F20"/>
-</linearGradient>
-<path fill-opacity="0.2" stroke-opacity="0.2" fill="url(#SVGID_19_)" d="M58,73.5c-1.103,0-2-0.897-2-2v-13c0-1.103,0.897-2,2-2h13c1.103,0,2,0.897,2,2v13  c0,1.103-0.897,2-2,2H58z"/>
-<linearGradient id="SVGID_20_" gradientUnits="userSpaceOnUse" x1="64.5" y1="56.584" x2="64.5" y2="91.4017">
-<stop offset="0" style="stop-color:#A9AAAD"/>
-<stop offset="1" style="stop-color:#000000"/>
-</linearGradient>
-<path fill-opacity="0.4" stroke-opacity="0.4" fill="url(#SVGID_20_)" d="M58,73c-0.827,0-1.5-0.673-1.5-1.5v-13c0-0.827,0.673-1.5,1.5-1.5h13  c0.827,0,1.5,0.673,1.5,1.5v13c0,0.827-0.673,1.5-1.5,1.5H58z"/>
-<linearGradient id="SVGID_21_" gradientUnits="userSpaceOnUse" x1="64.5" y1="57" x2="64.5" y2="72.3335">
-<stop offset="0" style="stop-color:#E9F0F2"/>
-<stop offset="0.0424" style="stop-color:#E9F0F2"/>
-<stop offset="0.3152" style="stop-color:#BDC2C4"/>
-<stop offset="0.6727" style="stop-color:#949DA1"/>
-<stop offset="1" style="stop-color:#98A1A4"/>
-</linearGradient>
-<path fill="url(#SVGID_21_)" d="M71,72c0.553,0,1-0.447,1-1V58c0-0.553-0.447-1-1-1H58c-0.553,0-1,0.447-1,1v13c0,0.553,0.447,1,1,1  H71z"/>
-<path fill-opacity="0.2" stroke-opacity="0.2" fill="url(#SVGID_16_)" d="M76,74.5c-1.103,0-2-0.897-2-2v-13c0-1.103,0.897-2,2-2h13c1.103,0,2,0.897,2,2v13  c0,1.103-0.897,2-2,2H76z"/>
-<path fill-opacity="0.4" stroke-opacity="0.4" fill="url(#SVGID_17_)" d="M76,74c-0.827,0-1.5-0.673-1.5-1.5v-13c0-0.827,0.673-1.5,1.5-1.5h13  c0.827,0,1.5,0.673,1.5,1.5v13c0,0.827-0.673,1.5-1.5,1.5H76z"/>
-<path fill="url(#SVGID_24_)" d="M89,58H76c-0.553,0-1,0.447-1,1v13c0,0.553,0.447,1,1,1h13c0.553,0,1-0.447,1-1V59  C90,58.447,89.553,58,89,58z"/>
-<linearGradient id="SVGID_25_" gradientUnits="userSpaceOnUse" x1="65.5" y1="75" x2="65.5" y2="90">
-<stop offset="0" style="stop-color:#E9F0F2"/>
-<stop offset="0.0424" style="stop-color:#E9F0F2"/>
-<stop offset="0.2606" style="stop-color:#BDC2C4"/>
-<stop offset="0.5394" style="stop-color:#949DA1"/>
-<stop offset="1" style="stop-color:#98A1A4"/>
-</linearGradient>
-<path fill="url(#SVGID_25_)" d="M73,89c0,0.553-0.447,1-1,1H59c-0.553,0-1-0.447-1-1V76c0-0.553,0.447-1,1-1h13c0.553,0,1,0.447,1,1  V89z"/>
-<linearGradient id="SVGID_26_" gradientUnits="userSpaceOnUse" x1="65.5" y1="75" x2="65.5" y2="90">
-<stop offset="0" style="stop-color:#F6FDFF"/>
-<stop offset="0.3152" style="stop-color:#D1D7D9"/>
-<stop offset="0.6727" style="stop-color:#949DA1"/>
-<stop offset="1" style="stop-color:#B7C3C7"/>
-</linearGradient>
-<path fill="url(#SVGID_26_)" d="M72,75H59c-0.553,0-1,0.447-1,1v13c0,0.553,0.447,1,1,1h13c0.553,0,1-0.447,1-1V76  C73,75.447,72.553,75,72,75z M72.5,89c0,0.275-0.225,0.5-0.5,0.5H59c-0.275,0-0.5-0.225-0.5-0.5V76c0-0.275,0.225-0.5,0.5-0.5h13  c0.275,0,0.5,0.225,0.5,0.5V89z"/>
-<linearGradient id="SVGID_27_" gradientUnits="userSpaceOnUse" x1="82.5" y1="75" x2="82.5" y2="90.6667">
-<stop offset="0" style="stop-color:#E9F0F2"/>
-<stop offset="0.0424" style="stop-color:#E9F0F2"/>
-<stop offset="0.2606" style="stop-color:#BDC2C4"/>
-<stop offset="0.5394" style="stop-color:#949DA1"/>
-<stop offset="1" style="stop-color:#98A1A4"/>
-</linearGradient>
-<path fill="url(#SVGID_27_)" d="M90,89c0,0.553-0.447,1-1,1H76c-0.553,0-1-0.447-1-1V76c0-0.553,0.447-1,1-1h13c0.553,0,1,0.447,1,1  V89z"/>
-<linearGradient id="SVGID_28_" gradientUnits="userSpaceOnUse" x1="82.5" y1="75" x2="82.5" y2="90.6667">
-<stop offset="0" style="stop-color:#F6FDFF"/>
-<stop offset="0.3152" style="stop-color:#D1D7D9"/>
-<stop offset="0.6727" style="stop-color:#949DA1"/>
-<stop offset="1" style="stop-color:#B7C3C7"/>
-</linearGradient>
-<path fill="url(#SVGID_28_)" d="M89,75H76c-0.553,0-1,0.447-1,1v13c0,0.553,0.447,1,1,1h13c0.553,0,1-0.447,1-1V76  C90,75.447,89.553,75,89,75z M89.5,89c0,0.275-0.225,0.5-0.5,0.5H76c-0.275,0-0.5-0.225-0.5-0.5V76c0-0.275,0.225-0.5,0.5-0.5h13  c0.275,0,0.5,0.225,0.5,0.5V89z"/>
-<linearGradient id="SVGID_29_" gradientUnits="userSpaceOnUse" x1="64.5" y1="56.333" x2="64.5" y2="72.3331">
-<stop offset="0" style="stop-color:#AFED23"/>
-<stop offset="0.7394" style="stop-color:#358C0C"/>
-<stop offset="1" style="stop-color:#67AD1A"/>
-</linearGradient>
-<path fill="url(#SVGID_29_)" d="M72,71c0,0.553-0.447,1-1,1H58c-0.553,0-1-0.447-1-1V58c0-0.553,0.447-1,1-1h13c0.553,0,1,0.447,1,1  V71z"/>
-<linearGradient id="SVGID_30_" gradientUnits="userSpaceOnUse" x1="64.5" y1="56.333" x2="64.5" y2="72.3331">
-<stop offset="0" style="stop-color:#E5FFB2"/>
-<stop offset="0.3879" style="stop-color:#6AAB18"/>
-<stop offset="0.7879" style="stop-color:#247307"/>
-<stop offset="1" style="stop-color:#7ABF2B"/>
-</linearGradient>
-<path fill="url(#SVGID_30_)" d="M71,57H58c-0.553,0-1,0.447-1,1v13c0,0.553,0.447,1,1,1h13c0.553,0,1-0.447,1-1V58  C72,57.447,71.553,57,71,57z M71.5,71c0,0.275-0.225,0.5-0.5,0.5H58c-0.275,0-0.5-0.225-0.5-0.5V58c0-0.275,0.225-0.5,0.5-0.5h13  c0.275,0,0.5,0.225,0.5,0.5V71z"/>
-<path fill="url(#SVGID_24_)" d="M90,72c0,0.553-0.447,1-1,1H76c-0.553,0-1-0.447-1-1V59c0-0.553,0.447-1,1-1h13c0.553,0,1,0.447,1,1  V72z"/>
-<linearGradient id="SVGID_32_" gradientUnits="userSpaceOnUse" x1="82.5" y1="58" x2="82.5" y2="73.3335">
-<stop offset="0" style="stop-color:#F6FDFF"/>
-<stop offset="0.3152" style="stop-color:#D1D7D9"/>
-<stop offset="0.6727" style="stop-color:#949DA1"/>
-<stop offset="1" style="stop-color:#B7C3C7"/>
-</linearGradient>
-<path fill="url(#SVGID_32_)" d="M89,58H76c-0.553,0-1,0.447-1,1v13c0,0.553,0.447,1,1,1h13c0.553,0,1-0.447,1-1V59  C90,58.447,89.553,58,89,58z M89.5,72c0,0.275-0.225,0.5-0.5,0.5H76c-0.275,0-0.5-0.225-0.5-0.5V59c0-0.275,0.225-0.5,0.5-0.5h13  c0.275,0,0.5,0.225,0.5,0.5V72z"/>
-<rect x="49" y="49" fill="none" width="49" height="49"/>
-<rect fill="none" width="98" height="98"/>
-<defs>
-<linearGradient id="SVGID_16_" gradientUnits="userSpaceOnUse" x1="82.5" y1="56.4053" x2="82.5" y2="92.0204">
-<stop offset="0" style="stop-color:#A6A8AB"/>
-<stop offset="1" style="stop-color:#231F20"/>
-</linearGradient>
-</defs>
-<defs>
-<linearGradient id="SVGID_17_" gradientUnits="userSpaceOnUse" x1="82.5" y1="56.584" x2="82.5" y2="91.4017">
-<stop offset="0" style="stop-color:#A9AAAD"/>
-<stop offset="1" style="stop-color:#000000"/>
-</linearGradient>
-</defs>
-<defs>
-<linearGradient id="SVGID_24_" gradientUnits="userSpaceOnUse" x1="82.5" y1="58" x2="82.5" y2="73.3335">
-<stop offset="0" style="stop-color:#E9F0F2"/>
-<stop offset="0.0424" style="stop-color:#E9F0F2"/>
-<stop offset="0.3152" style="stop-color:#BDC2C4"/>
-<stop offset="0.6727" style="stop-color:#949DA1"/>
-<stop offset="1" style="stop-color:#98A1A4"/>
-</linearGradient>
-</defs>
-</svg>
--- a/homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_large_super_new.svg	Tue May 18 12:12:12 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="60px" height="60px" viewBox="0 0 60 60">
-<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="21.0146" y1="7.1299" x2="21.0146" y2="39.4316" gradientTransform="matrix(0.9948 0.1014 -0.1014 0.9948 3.0857 -3.0766)">
-<stop offset="0" style="stop-color:#FFA300"/>
-<stop offset="0.0051" style="stop-color:#FFA300"/>
-<stop offset="1" style="stop-color:#F41C00"/>
-</linearGradient>
-<polygon fill="url(#SVGID_1_)" points="26.187,38.914 24.965,38.619 11.196,35.301 9.975,35.006 10.27,33.785 16.785,6.739   17.079,5.517 18.302,5.812 32.069,9.125 33.291,9.419 32.997,10.642 26.482,37.69 26.187,38.914 "/>
-<path fill="#292929" d="M18.007,7.033l13.767,3.315l-6.516,27.046l-13.767-3.317L18.007,7.033 M16.154,4.002l-7.693,31.93  l18.652,4.494l7.69-31.933L16.154,4.002L16.154,4.002z"/>
-<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="39.3506" y1="15.6035" x2="39.3506" y2="49.9902" gradientTransform="matrix(0.9948 0.1014 -0.1014 0.9948 3.0857 -3.0766)">
-<stop offset="0" style="stop-color:#FFA300"/>
-<stop offset="0.0051" style="stop-color:#FFA300"/>
-<stop offset="1" style="stop-color:#F41C00"/>
-</linearGradient>
-<polygon fill="url(#SVGID_2_)" points="35.683,50.495 34.709,49.698 23.911,40.865 22.935,40.07 23.733,39.097 41.346,17.563   42.139,16.587 43.111,17.385 53.909,26.216 54.884,27.009 54.086,27.982 36.477,49.52 35.683,50.495 "/>
-<path fill="#292929" d="M42.315,18.357l10.8,8.831l-17.61,21.536l-10.799-8.831L42.315,18.357 M41.962,14.822L21.171,40.248  L35.859,52.26l20.789-25.426L41.962,14.822L41.962,14.822z"/>
-<rect fill="none" width="60" height="60"/>
-</svg>
--- a/homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_mono_applications_all.svg	Tue May 18 12:12:12 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="30px" height="30px" viewBox="0 0 30 30">
-<rect fill="none" width="30" height="30"/>
-<path d="M25.121,4.314c0.725,0,1.313,0.588,1.313,1.313v7.624c0,0.724-0.588,1.311-1.313,1.311h-7.623  c-0.725,0-1.313-0.587-1.313-1.311V5.627c0-0.725,0.588-1.313,1.313-1.313H25.121 M24.875,5.872h-7.131v7.132h7.131V5.872  L24.875,5.872z"/>
-<path d="M25.121,16.753c0.725,0,1.313,0.587,1.313,1.311v7.625c0,0.724-0.588,1.312-1.313,1.312h-7.623  c-0.725,0-1.313-0.588-1.313-1.312v-7.625c0-0.724,0.588-1.311,1.313-1.311H25.121 M24.875,18.311h-7.131v7.132h7.131V18.311  L24.875,18.311z"/>
-<path d="M12.503,16.753c0.724,0,1.311,0.587,1.311,1.311v7.625c0,0.724-0.587,1.312-1.311,1.312H4.878  c-0.723,0-1.312-0.588-1.312-1.312v-7.625c0-0.724,0.589-1.311,1.312-1.311H12.503 M12.256,18.311H5.125v7.132h7.132V18.311  L12.256,18.311z"/>
-<path d="M13.814,13.251c0,0.724-0.587,1.311-1.311,1.311H4.878c-0.723,0-1.312-0.587-1.312-1.311V5.626  c0-0.724,0.589-1.312,1.312-1.312h7.625c0.724,0,1.311,0.587,1.311,1.312V13.251z"/>
-</svg>
--- a/homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_mono_applications_collections.svg	Tue May 18 12:12:12 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="30px" height="30px" viewBox="0 0 30 30">
-<rect fill="none" width="30" height="30"/>
-<path d="M24.899,2.301H9.288c-1.438,0-2.603,1.164-2.603,2.602v2.709l1.3,0.077V4.903c0.001-0.719,0.582-1.298,1.302-1.299h15.611  c0.718,0.001,1.3,0.58,1.3,1.299v15.611c0,0.719-0.582,1.302-1.3,1.304h-2.643v1.298h2.643c1.436,0,2.601-1.163,2.601-2.602V4.903  C27.5,3.465,26.335,2.301,24.899,2.301z"/>
-<path d="M2.5,25.096V9.486c0-1.438,1.164-2.602,2.6-2.602l0,0h15.614c1.436,0,2.601,1.164,2.601,2.602l0,0v15.61  c0,1.439-1.165,2.603-2.601,2.603l0,0L5.1,27.699C3.664,27.698,2.5,26.535,2.5,25.096L2.5,25.096z M3.8,9.486v15.61  c0.002,0.722,0.583,1.3,1.3,1.302l0,0l15.614-0.002c0.719,0,1.299-0.578,1.299-1.3l0,0V9.486c0-0.718-0.583-1.301-1.299-1.303l0,0  H5.1C4.383,8.185,3.802,8.768,3.8,9.486L3.8,9.486z"/>
-<path d="M18.874,11.491c0.428,0,0.775,0.345,0.775,0.771v4.487c0,0.427-0.348,0.772-0.775,0.772h-4.488  c-0.425,0-0.771-0.346-0.771-0.772v-4.487c0-0.426,0.347-0.771,0.771-0.771H18.874 M18.732,12.408h-4.202v4.198h4.202V12.408  L18.732,12.408z"/>
-<path d="M18.874,18.814c0.428,0,0.775,0.344,0.775,0.77v4.49c0,0.427-0.348,0.771-0.775,0.771h-4.488  c-0.425,0-0.771-0.344-0.771-0.771v-4.49c0-0.426,0.347-0.77,0.771-0.77H18.874 M18.732,19.73h-4.202v4.197h4.202V19.73  L18.732,19.73z"/>
-<path d="M11.447,18.814c0.426,0,0.772,0.344,0.772,0.77v4.49c0,0.427-0.346,0.771-0.772,0.771H6.958  c-0.427,0-0.771-0.344-0.771-0.771v-4.49c0-0.426,0.344-0.77,0.771-0.77H11.447 M11.302,19.73H7.104v4.197h4.198V19.73L11.302,19.73  z"/>
-<path d="M12.219,14.799c0,0.426-0.346,0.771-0.772,0.771H6.958c-0.427,0-0.771-0.345-0.771-0.771v-4.488  c0-0.429,0.344-0.771,0.771-0.771h4.488c0.426,0,0.772,0.343,0.772,0.771V14.799z"/>
-</svg>
--- a/homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_mono_ovistore.svg	Tue May 18 12:12:12 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="30px" height="30px" viewBox="0 0 30 30">
-<rect fill="none" width="30" height="30"/>
-<path d="M7.144,18.48c-4.202,0-5.644-2.886-5.644-6.549c0-3.618,1.96-6.159,5.687-6.159c3.857,0,5.623,2.563,5.623,6.247  C12.809,15.875,11.021,18.48,7.144,18.48z M7.144,7.753c-1.917,0-2.068,2.327-2.068,4.114c0,1.831,0.086,4.632,2.068,4.632  c1.981,0,2.09-2.5,2.09-4.632C9.234,10.209,8.975,7.753,7.144,7.753z M12.06,5.944h3.599l2.199,9.246l2.327-9.246h3.04  l-3.254,10.684c-0.36,1.1-0.896,1.853-2.409,1.853c-1.512,0-2.071-0.753-2.407-1.853L12.06,5.944z M26.363,4.648  c-1.099,0-1.896-0.56-1.896-1.595c0-1.035,0.775-1.595,1.896-1.595c1.056,0,1.896,0.582,1.896,1.595  C28.259,4.088,27.462,4.648,26.363,4.648z M24.622,16.899c0,0.313,0,0.894,0.486,1.236c0.253,0.179,0.655,0.345,1.224,0.345  c0.59,0,0.978-0.164,1.232-0.345c0.488-0.343,0.488-0.923,0.488-1.236V5.944h-3.396c0,0-0.121,0-0.231,0  c-0.332,0-0.604,0.008-0.795,0.267c-0.089,0.12-0.213,0.338-0.213,0.725c0,0.405,0.124,0.606,0.213,0.726  c0.191,0.259,0.463,0.261,0.795,0.261c0.11,0,0.197,0,0.197,0V16.899z"/>
-<path d="M3.578,28.539c-0.491,0-0.895-0.032-1.209-0.097c-0.313-0.065-0.571-0.145-0.774-0.234v-1.139  c0.219,0.123,0.491,0.231,0.82,0.323c0.327,0.093,0.679,0.139,1.055,0.139c0.336,0,0.592-0.075,0.767-0.229  c0.173-0.151,0.26-0.379,0.26-0.686c0-0.141-0.026-0.272-0.079-0.395c-0.054-0.12-0.145-0.234-0.27-0.344  c-0.127-0.107-0.378-0.257-0.754-0.447c-0.553-0.272-0.931-0.507-1.133-0.704c-0.202-0.195-0.34-0.402-0.413-0.618  c-0.073-0.218-0.11-0.477-0.11-0.777c0-0.606,0.213-1.077,0.639-1.414c0.425-0.34,0.974-0.509,1.646-0.509  c0.423,0,0.785,0.034,1.085,0.098c0.301,0.066,0.558,0.147,0.772,0.241v1.134c-0.226-0.124-0.497-0.233-0.814-0.327  c-0.316-0.096-0.602-0.143-0.86-0.143c-0.289,0-0.513,0.075-0.673,0.225c-0.16,0.151-0.241,0.349-0.241,0.594  c0,0.146,0.032,0.27,0.096,0.365s0.145,0.185,0.243,0.264c0.1,0.079,0.328,0.209,0.688,0.392c0.51,0.255,0.882,0.472,1.113,0.655  c0.231,0.185,0.399,0.399,0.507,0.644c0.108,0.246,0.16,0.561,0.16,0.944c0,0.691-0.206,1.206-0.62,1.542  C5.065,28.372,4.431,28.539,3.578,28.539z"/>
-<path d="M10.826,28.32c-0.134,0.052-0.307,0.102-0.519,0.148c-0.212,0.049-0.483,0.07-0.81,0.07c-0.662,0-1.15-0.189-1.469-0.571  s-0.478-0.931-0.478-1.652v-3.713H6.626v-1.092h0.925v-0.925l1.607-0.838v1.763h1.566v1.092H9.159v3.564  c0,0.479,0.056,0.815,0.167,1.009c0.111,0.194,0.312,0.291,0.604,0.291c0.163,0,0.324-0.023,0.483-0.069  c0.16-0.044,0.298-0.097,0.413-0.155V28.32z"/>
-<path d="M14.44,21.409c0.929,0,1.657,0.31,2.185,0.926c0.529,0.616,0.793,1.498,0.793,2.641c0,1.174-0.269,2.062-0.804,2.663  c-0.536,0.601-1.261,0.9-2.174,0.9c-0.914,0-1.641-0.3-2.181-0.9c-0.539-0.602-0.809-1.489-0.809-2.663  c0-1.163,0.263-2.049,0.792-2.655C12.771,21.712,13.503,21.409,14.44,21.409z M14.44,27.473c0.43,0,0.762-0.215,0.994-0.645  c0.231-0.428,0.346-1.046,0.346-1.853c0-0.809-0.115-1.424-0.346-1.852c-0.232-0.427-0.563-0.641-0.994-0.641  c-0.427,0-0.76,0.214-0.998,0.641c-0.237,0.428-0.355,1.043-0.355,1.852C13.087,26.641,13.538,27.473,14.44,27.473z"/>
-<path d="M22.324,22.643c-0.169-0.043-0.336-0.063-0.499-0.063c-0.556,0-0.934,0.158-1.132,0.476  c-0.197,0.318-0.298,0.844-0.298,1.577v3.813h-1.607V22.82c0-0.312-0.012-0.749-0.034-1.31h1.542c0.055,0.396,0.088,0.712,0.1,0.948  c0.107-0.33,0.279-0.59,0.517-0.773c0.237-0.185,0.508-0.276,0.813-0.276c0.206,0,0.406,0.027,0.6,0.083V22.643z"/>
-<path d="M25.926,28.541c-0.949,0-1.667-0.298-2.155-0.894c-0.485-0.596-0.729-1.47-0.729-2.625c0-1.143,0.235-2.031,0.708-2.664  s1.164-0.949,2.074-0.949c0.93,0,1.607,0.294,2.034,0.882c0.429,0.586,0.642,1.473,0.642,2.654v0.492h-3.813  c0,0.646,0.132,1.142,0.397,1.489s0.647,0.521,1.15,0.521c0.441,0,0.823-0.031,1.142-0.094c0.318-0.064,0.6-0.151,0.846-0.263v1.116  c-0.241,0.111-0.528,0.194-0.865,0.249C27.023,28.512,26.546,28.541,25.926,28.541z M26.88,24.351c0-0.535-0.1-0.982-0.302-1.337  c-0.201-0.354-0.453-0.53-0.754-0.53c-0.313,0-0.577,0.177-0.795,0.53c-0.217,0.354-0.326,0.802-0.326,1.337H26.88z"/>
-</svg>
--- a/homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_mono_search.svg	Tue May 18 12:12:12 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="30px" height="30px" viewBox="0 0 30 30">
-<rect fill="none" width="30" height="30"/>
-<path d="M19.235,5.717c-3.733-3.733-9.785-3.733-13.518,0s-3.733,9.785,0,13.52c3.23,3.229,8.195,3.656,11.894,1.297l5.943,5.945  c0.808,0.807,2.115,0.807,2.923,0c0.807-0.807,0.807-2.115,0-2.924l-5.944-5.943C22.895,13.914,22.465,8.947,19.235,5.717z   M17.592,17.59c-2.825,2.824-7.407,2.824-10.231,0c-2.823-2.822-2.823-7.405,0-10.229c2.824-2.824,7.406-2.824,10.231,0  C20.415,10.185,20.415,14.768,17.592,17.59z"/>
-</svg>
--- a/homescreenapp/hsdomainmodel/hsdomainmodel.pri	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/hsdomainmodel/hsdomainmodel.pri	Wed Jun 23 17:05:06 2010 +0100
@@ -19,25 +19,37 @@
            ./inc/hsdatabase.h  \                        
            ./inc/hsdomainmodel_global.h  \
            ./inc/hspage.h \  
+           ./inc/hsgui.h  \          
            ./inc/hsscene.h \
            ./inc/hsshortcutservice.h \
            ./inc/hsshortcutservice_p.h \
            ./inc/hswallpaper.h \
            ./inc/hswidgethost.h \
            ./inc/hswidgetcomponentregistry.h \
-					 ./inc/hswidgetcomponent.h \
-					 ./inc/hswidgetcomponentdescriptor.h                              
+           ./inc/hswidgetcomponent.h \
+           ./inc/hswidgetcomponentdescriptor.h \
+           ./inc/hsbackuprestoreobserver.h \
+	   ./inc/hsconfiguration.h     
 					 
 SOURCES += ./src/hscontentservice.cpp   \           
            ./src/hsdatabase.cpp  \                        
            ./src/hspage.cpp  \
+           ./src/hsgui.cpp  \           
            ./src/hsscene.cpp \                        
            ./src/hsshortcutservice.cpp \   
            ./src/hswallpaper.cpp \ 
            ./src/hswidgethost.cpp \
            ./src/hswidgetcomponentregistry.cpp \
-					 ./src/hswidgetcomponent.cpp \
-					 ./src/hswidgetcomponentdescriptor.cpp                               
+           ./src/hswidgetcomponent.cpp \
+           ./src/hswidgetcomponentdescriptor.cpp \
+           ./src/hsbackuprestoreobserver.cpp \
+	   ./src/hsconfiguration.cpp     
+
+symbian: {
+HEADERS += ./inc/hsbackuprestoreobserver_p.h \
+           ./inc/hsbackuprestoreactivecallback.h
+SOURCES += ./src/hsbackuprestoreactivecallback.cpp
+}                              
 
                               
 
--- a/homescreenapp/hsdomainmodel/hsdomainmodel.pro	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/hsdomainmodel/hsdomainmodel.pro	Wed Jun 23 17:05:06 2010 +0100
@@ -42,6 +42,7 @@
 
 symbian: {
     TARGET.UID3 = 0x20022F38
+    LIBS += -lxqsettingsmanager -labclient
 }
 win32:{
     QT += network 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/inc/hsbackuprestoreactivecallback.h	Wed Jun 23 17:05:06 2010 +0100
@@ -0,0 +1,210 @@
+/*
+* 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 the License "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:  Home screen active callback in HsBackupRestoreObserver.
+*
+*/
+
+
+#ifndef HSBACKUPRESTOREACTIVECALLBACK_H
+#define HSBACKUPRESTOREACTIVECALLBACK_H
+
+#include <e32base.h>    // CBase
+#include <connect/abclient.h>
+
+class HsBackupRestoreObserver;
+
+/**
+ *  Home screen active callback in backup/restore.
+ *
+ *  @lib hsdomainmodel
+ *  @since S60 ^4
+ */
+NONSHARABLE_CLASS(CHsBURActiveCallback) : public CBase, 
+	                                     public conn::MActiveBackupDataClient
+    {
+public:
+
+    IMPORT_C static CHsBURActiveCallback* NewL(HsBackupRestoreObserver* observer);
+
+    virtual ~CHsBURActiveCallback();    
+
+// new functions
+
+// from base class MActiveBackupDataClient
+
+    /**
+     * This method informs the active backup data client that all 
+     * snapshots have been supplied. If the client has not
+     * received a snapshot then it should perform a base backup
+     */
+    virtual void AllSnapshotsSuppliedL();
+
+    /**
+     * This method receives all or part of a snapshot of data to allow 
+     * calculation of an incremental backup.  The snapshot is one that
+     * was previously supplied by the data owner.  The snapshot data 
+     * should be read from the location supplied. The snapshot data may
+     * be larger than the location supplied in which case the routine 
+     * will be called repeatedly until all data has been supplied.
+     *
+     * Snapshot data will also be supplied as part of a restore operation
+     *        
+     * @param aDrive the drive being backed up
+     * @param aBuffer a pointer to the base of the location from whence 
+     *        data can be copied.
+     * @param aLastSection ETrue if this is the last section of snapshot 
+     *        data, else EFalse.
+     */
+    virtual void ReceiveSnapshotDataL(
+        TDriveNumber aDrive, TDesC8& aBuffer, TBool aLastSection);
+
+    /**
+     * This method returns the expected size of backup data that will be
+     * supplied. If an incremental backup is underway then this method
+     * then this method will not be called until after 
+     * ReceiveSnapshotDataL(). The size data will be used for the purpose
+     * of tracking progess during a backup. If it is inaccurate then the
+     * user may see irregular progress but the actual backup data will 
+     * not be affected so it is acceptable to return an estimated value.
+     *
+     * @param aDrive the drive being backed up.
+     * @return the size of the data that will be returned
+     */
+    virtual TUint GetExpectedDataSize(TDriveNumber aDrive);
+
+    /**
+     * This method returns a snapshot of data to accompany a backup. The 
+     * snapshot is expected to contain details on files / data being 
+     * backed up. The format of the snapshot is only meaningful to the
+     * data owner. The snapshot will be supplied if the data owner is 
+     * asked for an incremental backup and for a restore operation. The 
+     * snapshot data should be copied to the location supplied.
+     *
+     * The snapshot data may be larger than the location supplied in 
+     * which case the routine will be called repeatedly until all data
+     * has been retrieved.
+     *
+     * @param aDrive the drive being backed up
+     * @param aBuffer a pointer to the base of the location where data 
+     *        can be copied.
+     * @param aFinished on return ETrue if all data has been returned 
+     *        for this drive, else EFalse.
+     */
+    virtual void GetSnapshotDataL( 
+        TDriveNumber aDrive, TPtr8& aBuffer, TBool& aFinished);
+
+    /**
+     * This method prepares the implementor to return backup data. It 
+     * will be followed by a sequence of calls to request the actual 
+     * data.
+     *        
+     * @param aDrive the drive being backed up.
+     */
+    virtual void InitialiseGetBackupDataL(TDriveNumber aDrive);
+
+    /**
+     * This method requests a section of backup data.  
+     * InitialiseGetBackupDataL() will have been called previously to
+     * specify the drive concerned.  The data returned may be base or
+     * incremental depending on the type of backup and the capability of
+     * the data owner.
+     *
+     * @param aBuffer a pointer to the base of the location where data 
+     *        can be copied.
+     * @param aFinished on return ETrue if all data has been returned 
+     *        for this drive, else EFalse.
+     */
+    virtual void GetBackupDataSectionL(TPtr8& aBuffer, TBool& aFinished);
+
+    /**
+     * This method prepares the implementor to receive base restore data
+     * for a drive. It will be followed by a sequence of calls to supply
+     * the actual data.
+     *
+     * @param aDrive the drive being restored.
+     */
+    virtual void InitialiseRestoreBaseDataL(TDriveNumber aDrive);
+
+    /**
+     * This method receives a section of base restore data.
+     * InitialiseRestoreBaseDataL() will have been called previously to 
+     * specify the drive concerned.
+     *
+     * @param aBuffer a pointer to the base of the location whence data
+     *        can be read.
+     * @param aFinished ETrue if all data has been returned for this 
+     *        drive, else EFalse.
+     */
+    virtual void RestoreBaseDataSectionL(TDesC8& aBuffer, TBool aFinished);
+
+    /**
+     * This method prepares the implementor to receive incremental 
+     * restore data for a drive. It will be followed by a sequence 
+     * of calls to supply the actual data.  If multiple increments
+     * are supplied then this methid will be called before each increment
+     *
+     * @param aDrive the drive being restored.
+     */
+    virtual void InitialiseRestoreIncrementDataL(TDriveNumber aDrive);
+
+    /**
+     * This method receives a section of increment restore data.
+     * InitialiseRestoreIncrementDataL() will have been called 
+     * previously to specify the drive concerned.
+     *
+     * @param aBuffer a pointer to the base of the location whence data 
+     *        can be read.
+     * @param aFinished ETrue if all data has been returned for this 
+     *        increment, else EFalse.
+     */
+    virtual void RestoreIncrementDataSectionL(TDesC8& aBuffer, TBool aFinished);
+
+    /**
+     * This method is called when all data to be restored has been 
+     * supplied.
+     *
+     * @param aDrive the drive being restored.
+     */
+    virtual void RestoreComplete(TDriveNumber aDrive);   
+
+    /**
+     * This method is called if copying of data is terminated prematurely 
+     * to allow the implementor to tidy up.  The same method applies to 
+     * all types of data and to backup and restore.
+     */
+    virtual void TerminateMultiStageOperation();
+
+    /**
+     * Gets a 32-bit checksum for its private data.
+     * This routine is for test purposes.  It must be implemented but an
+     * invariant checksum value can be provided.  Some tests may cause 
+     * checksum values to be compared.
+     *
+     * @param aDrive the drive containing data being checksummed
+     * @return the 32-bit checksum
+     */
+    virtual TUint GetDataChecksum(TDriveNumber aDrive);
+
+private:
+    CHsBURActiveCallback(HsBackupRestoreObserver* observer);
+
+    void ConstructL();
+
+private: // data
+	// Bacup/Restore observer. Not own.
+    HsBackupRestoreObserver *iObserver;
+    };
+
+#endif // HSBACKUPRESTOREACTIVECALLBACK_H
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/inc/hsbackuprestoreobserver.h	Wed Jun 23 17:05:06 2010 +0100
@@ -0,0 +1,75 @@
+/*
+* 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:  Backup/Restore observer.
+*
+*/
+
+#ifndef HSBACKUPRESTOREOBSERVER_H
+#define HSBACKUPRESTOREOBSERVER_H
+
+#include <QObject>
+#include "hsdomainmodel_global.h"
+#include "hstest_global.h"
+
+HOMESCREEN_TEST_CLASS(TestRuntimeServices)
+
+#ifdef Q_OS_SYMBIAN
+class HsBackupRestoreObserverPrivate;
+#endif //Q_OS_SYMBIAN
+
+class HSDOMAINMODEL_EXPORT HsBackupRestoreObserver : public QObject
+{
+	Q_OBJECT
+
+public:
+	static HsBackupRestoreObserver *instance();	
+	~HsBackupRestoreObserver();
+	
+	void backupRestoreStarted();
+    void backupRestoreComplited();
+    
+    void readyForBUR();
+    bool checkBUR();
+
+signals:	
+    void event_backupRestoreStarted();
+    void event_backupRestoreComplited();	
+
+private:
+	HsBackupRestoreObserver(QObject *parent = 0);
+    Q_DISABLE_COPY(HsBackupRestoreObserver)
+
+private:
+
+#ifdef Q_OS_SYMBIAN
+    /**
+     * mD pointer to HsBackupRestoreObserverPrivate
+     * Owned by HsBackupRestoreObserver object, instantiated in
+     * constructor.
+     */
+    HsBackupRestoreObserverPrivate *mD;
+#endif //Q_OS_SYMBIAN
+    
+    bool mBUROngoing;
+
+    static HsBackupRestoreObserver *mInstance;
+#ifdef Q_OS_SYMBIAN
+    friend class HsBackupRestoreObserverPrivate;
+#endif //Q_OS_SYMBIAN
+    HOMESCREEN_TEST_FRIEND_CLASS(TestRuntimeServices)
+};
+
+#endif // HSBACKUPRESTOREOBSERVER_H
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/inc/hsbackuprestoreobserver_p.h	Wed Jun 23 17:05:06 2010 +0100
@@ -0,0 +1,79 @@
+/*
+* 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:  Active object for Backup/Restore observer.
+*
+*/
+
+#ifndef HSBACKUPRESTOREOBSERVER_P_H
+#define HSBACKUPRESTOREOBSERVER_P_H
+
+#include <connect/abclient.h>
+#include <XQSettingsKey>
+#include <QObject>
+
+class CHsBURActiveCallback;
+class HsBackupRestoreObserver;
+
+using namespace conn;
+
+class HsBackupRestoreObserverPrivate : public QObject
+{
+    Q_OBJECT
+
+public:
+
+    /**
+     * Creates an instance of CCPServerBURListener implementation.
+     * @param aCallBack Pointer to observer interface.
+     */
+    HsBackupRestoreObserverPrivate (HsBackupRestoreObserver* observer,
+                                    QObject *parent = 0);
+
+    /**
+     * Destructor.
+     */
+    virtual ~HsBackupRestoreObserverPrivate();
+    
+    void readyForBUR();
+
+public slots:    
+     void handleKeyChange(XQSettingsKey key, const QVariant &value);
+
+private:
+	/**
+     * mQ pointer to HsBackupRestoreObserver
+     * Owned by HsBackupRestoreObserver object, instantiated in
+     * constructor.
+     */
+    HsBackupRestoreObserver *mQ;
+
+    /**
+     * Callback interface for widget's active data owner.
+     * Own.
+     */
+    CHsBURActiveCallback *mCallBack;
+
+    /**
+     * Active backup client.
+     * Own.
+     */
+	conn::CActiveBackupClient *mActiveBackupClient;
+    
+    /**
+     * Last state of BUR: either backup or restore or normal or unset
+     */
+    conn::TBURPartType mLastType;
+};
+
+#endif //HSBACKUPRESTOREOBSERVER_P_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/inc/hsconfiguration.h	Wed Jun 23 17:05:06 2010 +0100
@@ -0,0 +1,166 @@
+/*
+* 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:
+*
+*/
+
+#ifndef HSCONFIGURATION_H
+#define HSCONFIGURATION_H
+
+#include <QObject>
+
+#include <HbFeedback>
+#include <HbDeviceProfile>
+
+#include "hsdomainmodel_global.h"
+
+class HsGeneralConfiguration;
+class HsFeedbackConfiguration;
+class HsSnapConfiguration;
+class HsDatabase;
+class HsConfiguration;
+
+class HSDOMAINMODEL_EXPORT HsConfiguration
+{
+    
+public:
+    static void loadConfiguration();
+
+    static inline int bounceEffect() { return mBounceEffect; };
+    static inline qreal tapAndHoldDistance() { return mTapAndHoldDistance; };
+    static inline int widgetTapAndHoldTimeout() { return mWidgetTapAndHoldTimeout; };
+    static inline int sceneTapAndHoldTimeout() { return mSceneTapAndHoldTimeout; };
+    static inline qreal pageChangeZoneWidth() { return mPageChangeZoneWidth; };
+    static inline qreal pageIndicatorSpacing() { return mPageIndicatorSpacing; };
+    static inline int pageChangeAnimationDuration() { return mPageChangeAnimationDuration; };
+    static inline int pageChangeZoneAnimationDuration() { return mPageChangeZoneAnimationDuration; };
+    static inline int pageChangeZoneReverseAnimationDuration() { return mPageChangeZoneReverseAnimationDuration; };
+    static inline int pageRemovedAnimationDuration() { return mPageRemovedAnimationDuration; };
+    static inline int newPageAddedAnimationDuration() { return mNewPageAddedAnimationDuration; };
+    static inline int widgetDragEffectDuration() { return mWidgetDragEffectDuration; };
+    static inline int widgetDropEffectDuration() { return mWidgetDropEffectDuration; };
+    static inline int bounceFeedbackEffectDistance() { return mBounceFeedbackEffectDistance; };
+    static inline int defaultPageId() { return mDefaultPageId; };
+    static inline int maximumPageCount() { return mMaximumPageCount; };
+    static inline qreal maximumWidgetHeight() { return mMaximumWidgetHeight; };
+    static inline qreal maximumWidgetWidth() { return mMaximumWidgetWidth; };
+    static inline qreal minimumWidgetHeight() { return mMinimumWidgetHeight; };
+    static inline qreal minimumWidgetWidth() { return mMinimumWidgetWidth; };
+    static inline bool shortcutLabelsVisible() { return mShortcutLabelsVisible; };
+    static inline qreal pageChangePanDistance() { return mPageChangePanDistance; };
+    static inline int pageChangePanDistanceInPixels() { return mPageChangePanDistanceInPixels; };
+
+    static inline HbFeedback::InstantEffect pageChangeFeedbackType() { return mPageChangeFeedbackType; };
+    static inline HbFeedback::InstantEffect widgetPickFeedbackType() { return mWidgetPickFeedbackType; };
+    static inline HbFeedback::InstantEffect widgetDropFeedbackType() { return mWidgetDropFeedbackType; };
+    static inline HbFeedback::InstantEffect widgetRepositionFeedbackType() { return mWidgetRepositionFeedbackType; };
+    static inline HbFeedback::InstantEffect widgetOverTrashbinFeedbackType() { return mWidgetOverTrashbinFeedbackType; };
+    static inline HbFeedback::InstantEffect widgetDropToTrashbinFeedbackType() { return mWidgetDropToTrashbinFeedbackType; };
+    static inline HbFeedback::InstantEffect shortcutWidgetTapFeedbackType() { return mShortcutWidgetTapFeedbackType; };
+    static inline HbFeedback::InstantEffect widgetMoveBlockedFeedbackType() { return mWidgetMoveBlockedFeedbackType; };
+    static inline HbFeedback::InstantEffect clockWidgetTapFeedbackType() { return mClockWidgetTapFeedbackType; };
+    static inline HbFeedback::InstantEffect widgetSnappingFeedbackType() { return mWidgetSnappingFeedbackType; };
+
+    static inline bool snapEnabled() { return mSnapEnabled; };
+    static inline qreal snapForce() { return mSnapForce; };
+    static inline qreal snapGap() { return mSnapGap; };
+    static inline qreal snapBorderGap() { return mSnapBorderGap; };
+    static inline int snapTimeout() { return mSnapTimeout; };
+
+    // setters should be removed before code is released to SF
+    static void setBounceEffect(int bounceEffect) { mBounceEffect = bounceEffect; };
+    static void setTapAndHoldDistance(qreal tapAndHoldDistance) { mTapAndHoldDistance = tapAndHoldDistance; };
+    static void setWidgetTapAndHoldTimeout(int tapAndHoldTimeout) { mWidgetTapAndHoldTimeout = tapAndHoldTimeout; };
+    static void setSceneTapAndHoldTimeout(int tapAndHoldTimeout) { mSceneTapAndHoldTimeout = tapAndHoldTimeout; };
+    static void setPageChangeZoneWidth(qreal pageChangeZoneWidth) { mPageChangeZoneWidth = pageChangeZoneWidth; };
+    static void setPageIndicatorSpacing(qreal pageIndicatorSpacing) { mPageIndicatorSpacing = pageIndicatorSpacing; };
+    static void setPageChangeAnimationDuration(int pageChangeAnimationDuration) { mPageChangeAnimationDuration = pageChangeAnimationDuration; };
+    static void setPageChangeZoneAnimationDuration(int pageChangeZoneAnimationDuration) { mPageChangeZoneAnimationDuration = pageChangeZoneAnimationDuration; };
+    static void setPageChangeZoneReverseAnimationDuration(int pageChangeZoneReverseAnimationDuration) { mPageChangeZoneReverseAnimationDuration = pageChangeZoneReverseAnimationDuration; };
+    static void setPageRemovedAnimationDuration(int pageRemovedAnimationDuration) { mPageRemovedAnimationDuration = pageRemovedAnimationDuration; };
+    static void setNewPageAddedAnimationDuration(int newPageAddedAnimationDuration) { mNewPageAddedAnimationDuration = newPageAddedAnimationDuration; };
+    static void setWidgetDragEffectDuration(int widgetDragEffectDuration) { mWidgetDragEffectDuration = widgetDragEffectDuration; };
+    static void setWidgetDropEffectDuration(int widgetDropEffectDuration) { mWidgetDropEffectDuration = widgetDropEffectDuration; };
+    static void setBounceFeedbackEffectDistance(int bounceFeedbackEffectDistance) { mBounceFeedbackEffectDistance = bounceFeedbackEffectDistance; };
+    static void setDefaultPageId(int defaultPageId) { mDefaultPageId = defaultPageId;  };
+    static void setMaximumPageCount(int maximumPageCount) { mMaximumPageCount = maximumPageCount; };
+    static void setMaximumWidgetHeight(qreal maximumWidgetHeight) { mMaximumWidgetHeight = maximumWidgetHeight; };
+    static void setMaximumWidgetWidth(qreal maximumWidgetWidth) { mMaximumWidgetWidth = maximumWidgetWidth; };
+    static void setMinimumWidgetHeight(qreal minimumWidgetHeight) { mMinimumWidgetHeight = minimumWidgetHeight; };
+    static void setMinimumWidgetWidth(qreal minimumWidgetWidth) { mMinimumWidgetWidth = minimumWidgetWidth; };
+    static void setShortcutLabelsVisible(bool shortcutLabelsVisible) { mShortcutLabelsVisible = shortcutLabelsVisible; };
+    static void setPageChangePanDistance(qreal pageChangePanDistance) { mPageChangePanDistance = pageChangePanDistance; 
+                                                                        mPageChangePanDistanceInPixels = pageChangePanDistance * HbDeviceProfile::current().unitValue(); };
+
+    static void setPageChangeFeedbackType(HbFeedback::InstantEffect pageChangeFeedbackType ) { mPageChangeFeedbackType = pageChangeFeedbackType; };
+    static void setWidgetPickFeedbackType(HbFeedback::InstantEffect widgetPickFeedbackType ) { mWidgetPickFeedbackType = widgetPickFeedbackType; };
+    static void setWidgetDropFeedbackType(HbFeedback::InstantEffect widgetDropFeedbackType ) { mWidgetDropFeedbackType = widgetDropFeedbackType; };
+    static void setWidgetRepositionFeedbackType(HbFeedback::InstantEffect widgetRepositionFeedbackType ) { mWidgetRepositionFeedbackType = widgetRepositionFeedbackType; };
+    static void setWidgetOverTrashbinFeedbackType(HbFeedback::InstantEffect widgetOverTrashbinFeedbackType ) { mWidgetOverTrashbinFeedbackType = widgetOverTrashbinFeedbackType; };
+    static void setWidgetDropToTrashbinFeedbackType(HbFeedback::InstantEffect widgetDropToTrashbinFeedbackType ) { mWidgetDropToTrashbinFeedbackType = widgetDropToTrashbinFeedbackType; };
+    static void setShortcutWidgetTapFeedbackType(HbFeedback::InstantEffect shortcutWidgetTapFeedbackType ) { mShortcutWidgetTapFeedbackType = shortcutWidgetTapFeedbackType; };
+    static void setWidgetMoveBlockedFeedbackType(HbFeedback::InstantEffect widgetMoveBlockedFeedbackType ) { mWidgetMoveBlockedFeedbackType = widgetMoveBlockedFeedbackType; };
+    static void setClockWidgetTapFeedbackType(HbFeedback::InstantEffect clockWidgetTapFeedbackType ) { mClockWidgetTapFeedbackType = clockWidgetTapFeedbackType; };
+    static void setWidgetSnappingFeedbackType(HbFeedback::InstantEffect widgetSnappingFeedbackType ) { mWidgetSnappingFeedbackType = widgetSnappingFeedbackType; };
+
+    static void setSnapEnabled(bool snapEnabled) { mSnapEnabled = snapEnabled; };
+    static void setSnapForce(qreal snapForce) { mSnapForce = snapForce; };
+    static void setSnapGap(qreal snapGap) { mSnapGap = snapGap; };
+    static void setSnapBorderGap(qreal snapBorderGap) { mSnapBorderGap = snapBorderGap; };
+    static void setSnapTimeout(int snapTimeout) { mSnapTimeout = snapTimeout; };
+
+private:
+    static int mBounceEffect;		
+	static qreal mTapAndHoldDistance;
+	static int mWidgetTapAndHoldTimeout;
+	static int mSceneTapAndHoldTimeout;
+    static qreal mPageChangeZoneWidth;
+	static qreal mPageIndicatorSpacing;
+    static int mPageChangeAnimationDuration;
+	static int mPageChangeZoneAnimationDuration;
+    static int mPageChangeZoneReverseAnimationDuration;
+	static int mPageRemovedAnimationDuration;
+	static int mNewPageAddedAnimationDuration;
+	static int mWidgetDragEffectDuration;
+	static int mWidgetDropEffectDuration;
+	static int mBounceFeedbackEffectDistance;
+    static int mDefaultPageId;
+    static int mMaximumPageCount;
+    static qreal mMaximumWidgetHeight;
+    static qreal mMaximumWidgetWidth;
+    static qreal mMinimumWidgetHeight;
+    static qreal mMinimumWidgetWidth;
+    static bool mShortcutLabelsVisible;
+    static qreal mPageChangePanDistance;
+    static int mPageChangePanDistanceInPixels;
+
+    static HbFeedback::InstantEffect mPageChangeFeedbackType;
+	static HbFeedback::InstantEffect mWidgetPickFeedbackType;
+	static HbFeedback::InstantEffect mWidgetDropFeedbackType;
+	static HbFeedback::InstantEffect mWidgetRepositionFeedbackType;
+	static HbFeedback::InstantEffect mWidgetOverTrashbinFeedbackType;
+	static HbFeedback::InstantEffect mWidgetDropToTrashbinFeedbackType;
+	static HbFeedback::InstantEffect mShortcutWidgetTapFeedbackType;
+	static HbFeedback::InstantEffect mWidgetMoveBlockedFeedbackType;
+	static HbFeedback::InstantEffect mClockWidgetTapFeedbackType;
+	static HbFeedback::InstantEffect mWidgetSnappingFeedbackType;
+
+    static bool mSnapEnabled;
+    static qreal mSnapForce;
+    static qreal mSnapGap;
+    static qreal mSnapBorderGap;
+    static int mSnapTimeout;
+};
+
+#endif // HSCONFIGURATION_H
--- a/homescreenapp/hsdomainmodel/inc/hscontentservice.h	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/hsdomainmodel/inc/hscontentservice.h	Wed Jun 23 17:05:06 2010 +0100
@@ -42,7 +42,7 @@
     static HsContentService *instance();
 
 private:
-    static QScopedPointer<HsContentService> mInstance;
+    static HsContentService *mInstance;
 
     Q_DISABLE_COPY(HsContentService)
 };
--- a/homescreenapp/hsdomainmodel/inc/hsdatabase.h	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/hsdomainmodel/inc/hsdatabase.h	Wed Jun 23 17:05:06 2010 +0100
@@ -24,10 +24,15 @@
 
 #include "hsdomainmodel_global.h"
 
+#include <HbFeedback>
+
 class HsSceneData;
 class HsPageData;
 class HsWidgetData;
 class HsWidgetPresentationData;
+class HsGeneralConfiguration;
+class HsFeedbackConfiguration;
+class HsSnapConfiguration;
 
 class HSDOMAINMODEL_EXPORT HsDatabase : public QObject
 {
@@ -70,14 +75,16 @@
 
     bool widgetPresentation(HsWidgetPresentationData &data);
     bool setWidgetPresentation(const HsWidgetPresentationData &data);
-    bool deleteWidgetPresentation(int widgetId, const QString &key);
+    bool deleteWidgetPresentation(int widgetId, Qt::Orientation orientation);
 
     bool widgetPreferences(int widgetId, QVariantHash &data);
     bool widgetPreference(int widgetId, const QString &key, QVariant &value);
     bool setWidgetPreferences(int widgetId, const QVariantHash &data);
+
+    bool generalConfiguration(HsGeneralConfiguration &data);
+    bool feedbackConfiguration(HsFeedbackConfiguration &data);
+    bool snapConfiguration(HsSnapConfiguration &data);
     
-    void setDataBaseBlocked(bool blocked);
-    bool getDataBaseBlocked();
 public:
     static void setInstance(HsDatabase *instance);
     static HsDatabase *instance();
@@ -91,8 +98,7 @@
     QString mConnectionName;
     QString mDatabaseName;
 
-    static QScopedPointer<HsDatabase> mInstance;
-    bool mBlocked;
+    static HsDatabase *mInstance;
 };
 
 #endif // HSDATABASE_H
--- a/homescreenapp/hsdomainmodel/inc/hsdomainmodeldatastructures.h	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/hsdomainmodel/inc/hsdomainmodeldatastructures.h	Wed Jun 23 17:05:06 2010 +0100
@@ -20,25 +20,20 @@
 
 #include <QRectF>
 #include "hsdomainmodel_global.h"
+#include <HbFeedback>
+#include <QMetaEnum>
 
 class HSDOMAINMODEL_EXPORT HsSceneData
 {
 public:
     HsSceneData() 
-      : id(-1), defaultPageId(-1), maximumPageCount(-1),
-        maximumWidgetHeight(-1.0), maximumWidgetWidth(-1.0),
-        minimumWidgetHeight(-1.0), minimumWidgetWidth(-1.0)
+      : id(-1)
     {}
     
     int     id;
     QString portraitWallpaper;
     QString landscapeWallpaper;
-    int     defaultPageId;
-    int     maximumPageCount;
-    qreal   maximumWidgetHeight;
-    qreal   maximumWidgetWidth;
-    qreal   minimumWidgetHeight;
-    qreal   minimumWidgetWidth;
+
 };
 
 class HSDOMAINMODEL_EXPORT HsPageData
@@ -69,7 +64,7 @@
 {
 public:
     HsWidgetPresentationData()
-        : x(0), y(0), zValue(0), 
+        : orientation(Qt::Vertical), x(0), y(0), zValue(0), 
           widgetId(-1)
     {}
 
@@ -79,11 +74,84 @@
         y = pos.y();
     }
 
-    QString key;
+    QPointF pos() const
+    {
+        return QPointF(x, y);
+    }
+
+    Qt::Orientation orientation;
     qreal   x;
     qreal   y;
     qreal   zValue;
     int     widgetId;
 };
 
+class HSDOMAINMODEL_EXPORT HsGeneralConfiguration
+{	
+public:
+	int bounceEffect; // pixels, bounce effect reservation, half in left side and half in right side of wallpaper 		
+	qreal tapAndHoldDistance; // pixels
+    int widgetTapAndHoldTimeout; // ms, duration of long press before action is triggered on widget
+	int sceneTapAndHoldTimeout; // ms, duration of long press before action is triggered on background
+	qreal pageChangeZoneWidth; // pixels
+	qreal pageIndicatorSpacing; // pixels
+    int pageChangeAnimationDuration; // ms, this is how long page change animation takes
+	int pageChangeZoneAnimationDuration; // ms, this is how long crawling is done before page is actually changed
+    int pageChangeZoneReverseAnimationDuration; // ms, animation duration back to starting position when crawling ends before page is changed
+	int pageRemovedAnimationDuration; // ms
+	int newPageAddedAnimationDuration; // ms
+	int widgetDragEffectDuration; // ms
+	int widgetDropEffectDuration; // ms
+	int boundaryFeedbackEffectDistance; // pixels, when widget is moved within n pixels from first page right border or 
+                                        // n pixels from last page's left border, feedback effect is played
+    int defaultPageId; // id of default page (which cannot be removed)
+    int maximumPageCount; // maximum number of pages
+    qreal maximumWidgetHeight; // px
+    qreal maximumWidgetWidth; // px
+    qreal minimumWidgetHeight; // px
+    qreal minimumWidgetWidth; // px
+    bool shortcutLabelsVisible; // display labels under shortcut widgets
+    qreal pageChangePanDistance; // un, amount of pan needed to change page
+};
+
+class HSDOMAINMODEL_EXPORT HsFeedbackConfiguration
+{
+public: 
+    HbFeedback::InstantEffect feedbackFromString(const QString &feedback)
+    {
+    int index = HbFeedback::staticMetaObject.indexOfEnumerator("InstantEffect");
+    QMetaEnum metaEnum = HbFeedback::staticMetaObject.enumerator(index);
+
+    int intFeedback = metaEnum.keysToValue(feedback.toAscii());
+
+    if (intFeedback < HbFeedback::None || intFeedback > HbFeedback::InstantMaxUser) {
+        return HbFeedback::None;
+    } 
+
+    return static_cast<HbFeedback::InstantEffect>(intFeedback);
+    }
+
+public:
+	HbFeedback::InstantEffect pageChangeFeedbackType;
+	HbFeedback::InstantEffect widgetPickFeedbackType;
+	HbFeedback::InstantEffect widgetDropFeedbackType;
+	HbFeedback::InstantEffect widgetRepositionFeedbackType;
+	HbFeedback::InstantEffect widgetOverTrashbinFeedbackType;
+	HbFeedback::InstantEffect widgetDropToTrashbinFeedbackType;
+	HbFeedback::InstantEffect shortcutWidgetTapFeedbackType;
+	HbFeedback::InstantEffect widgetMoveBlockedFeedbackType;
+	HbFeedback::InstantEffect clockWidgetTapFeedbackType;
+	HbFeedback::InstantEffect widgetSnappingFeedbackType;
+};
+
+class HSDOMAINMODEL_EXPORT HsSnapConfiguration
+{	
+public:
+	bool snappingEnabled; // variable to tell if snapping is enabled or not
+	qreal snapForce; // this is the distance at which the widget starts being attracted to the line
+	qreal snapGap; // the gap at which the objects settle into from each other when they snap
+	qreal borderGap; // (the gap from the border edges when the widget settles on the edges of the page
+	int timeout; // time in milliseconds after which the snapping line will be shown
+};
+
 #endif // HSDOMAINMODELDATASTRUCTURES_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/inc/hsgui.h	Wed Jun 23 17:05:06 2010 +0100
@@ -0,0 +1,51 @@
+/*
+* 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:
+*
+*/
+
+#ifndef HSGUI_H
+#define HSGUI_H
+
+#include <QPointer>
+
+#include "hsdomainmodel_global.h"
+#include "hstest_global.h"
+
+HOMESCREEN_TEST_CLASS(HomeScreenStatePluginTest)
+
+class HbView;
+class HbMainWindow;
+
+class HSDOMAINMODEL_EXPORT HsGui
+{
+public:
+	static HbView *idleView();	
+	static HbView *takeIdleView();
+	static void setIdleView(HbView *idleView);	
+	
+    static HbMainWindow *mainWindow();
+
+private:
+    HsGui() {}
+
+private:
+	static QPointer<HbView> mIdleView;
+	
+    HOMESCREEN_TEST_FRIEND_CLASS(HomeScreenStatePluginTest)
+};
+
+Q_DECLARE_METATYPE(HsGui*)
+
+#endif // HSGUI_H
--- a/homescreenapp/hsdomainmodel/inc/hspage.h	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/hsdomainmodel/inc/hspage.h	Wed Jun 23 17:05:06 2010 +0100
@@ -30,15 +30,16 @@
 
 class HSDOMAINMODEL_EXPORT HsPage : public HbWidget
 {
-	Q_OBJECT
+    Q_OBJECT
+    Q_PROPERTY(int pageIndex READ pageIndex)
 
 public:
     HsPage(QGraphicsItem *parent = 0);
-	~HsPage();
+    ~HsPage();
 
     int databaseId() const;
     void setDatabaseId(int id);
-    
+
     bool load();
 
     bool addExistingWidget(HsWidgetHost *widgetHost);
@@ -50,9 +51,11 @@
     bool deleteFromDatabase();
 
     QList<HsWidgetHost *> widgets() const;
-        
+
     bool isRemovable() const;
     void setRemovable(bool removable);
+
+    bool isActivePage() const;
     
     static HsPage *createInstance(const HsPageData &pageData);
 
@@ -63,21 +66,30 @@
 
     void updateZValues();
 
+    int pageIndex();
+
 private:
+    Q_DISABLE_COPY(HsPage)
     void connectWidget(HsWidgetHost *widget);
     void disconnectWidget(HsWidgetHost *widget);
 
 private slots:
-    void onWidgetFinished(HsWidgetHost *widget);
-    void onWidgetResized(HsWidgetHost *widget);
+    void onWidgetFinished();
+    void onWidgetFaulted();
+    void onWidgetResized();
+    void onWidgetAvailable();
+    void onWidgetUnavailable();
+
+    void onOrientationChanged(Qt::Orientation orientation);
 
 private:
-    int mDatabaseId;    
+    int mDatabaseId;
     bool mRemovable;
     QList<HsWidgetHost*> mWidgets;
     QList<HsWidgetHost*> mNewWidgets;
-    
+    QList<HsWidgetHost*> mUnavailableWidgets;
+
     HOMESCREEN_TEST_FRIEND_CLASS(TestRuntimeServices)
 };
- 
+
 #endif
--- a/homescreenapp/hsdomainmodel/inc/hsscene.h	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/hsdomainmodel/inc/hsscene.h	Wed Jun 23 17:05:06 2010 +0100
@@ -76,7 +76,7 @@
 
 private:
     HsScene(QObject *parent = 0);
-    void calculateWidgetSizeLimitations(HsSceneData &sceneData);
+    void calculateWidgetSizeLimitations();
     Q_DISABLE_COPY(HsScene)
 
 private:
--- a/homescreenapp/hsdomainmodel/inc/hsshortcutservice.h	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/hsdomainmodel/inc/hsshortcutservice.h	Wed Jun 23 17:05:06 2010 +0100
@@ -48,7 +48,7 @@
 
 private:
 	QScopedPointer<HsShortcutServicePrivate> mD; 	
-    static QScopedPointer<HsShortcutService> mInstance;    
+    static HsShortcutService *mInstance;    
     
     HOMESCREEN_TEST_FRIEND_CLASS(TestRuntimeServices)
 };
--- a/homescreenapp/hsdomainmodel/inc/hswidgetcomponent.h	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/hsdomainmodel/inc/hswidgetcomponent.h	Wed Jun 23 17:05:06 2010 +0100
@@ -26,11 +26,6 @@
 #include "hstest_global.h"
 HOMESCREEN_TEST_CLASS(TestRuntimeServices)
 
-#include "cadefs.h"
-
-class CaEntry;
-class HsWidgetComponentDescriptor;
-
 class HSDOMAINMODEL_EXPORT HsWidgetComponent : public QObject
 {
     Q_OBJECT
--- a/homescreenapp/hsdomainmodel/inc/hswidgethost.h	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/hsdomainmodel/inc/hswidgethost.h	Wed Jun 23 17:05:06 2010 +0100
@@ -18,125 +18,125 @@
 #ifndef HSWIDGETHOST_H
 #define HSWIDGETHOST_H
 
-#include <QVariantMap>
+#include <HbWidget>
 #include <QMetaMethod>
 #include <QMetaProperty>
 
-#include <HbWidget>
-
+#include "hsdomainmodel_global.h"
 #include "hsdomainmodeldatastructures.h"
-#include "hsdomainmodel_global.h"
-#include "hstest_global.h"
 
+#include "hstest_global.h"
+HOMESCREEN_TEST_CLASS(TestRuntimeServices)
 
-class HbIconItem;
+class QStateMachine;
+
+class HsWidgetComponent;
 class HsPage;
 
-
-HOMESCREEN_TEST_CLASS(TestRuntimeServices)
-
 class HSDOMAINMODEL_EXPORT HsWidgetHost : public HbWidget
 {
     Q_OBJECT
 
 public:
-    enum State {
-        Unloaded,
-        Loaded,
-        Initialized,
-        Visible,
-        Hidden,
-        Uninitialized,
-        Finished,
-        Faulted,
-        UninstallingOrUpdating
-    };
+    HsWidgetHost(int databaseId, QGraphicsItem *parent = 0);
+    ~HsWidgetHost();
 
-public:
-    static HsWidgetHost *createInstance(HsWidgetData &widgetData, 
-                                        const QVariantHash &preferences = QVariantHash());
-
-    HsWidgetHost(int databaseId, QGraphicsItem *parent = 0);
-    
-    ~HsWidgetHost();
-    
-    bool load();
-    void unload();
-    
-    bool setPage(HsPage *page);
-    HsPage *page() const;
-
-    bool isValid() const;
+    static HsWidgetHost *createInstance(
+        HsWidgetData &widgetData, 
+        const QVariantHash &preferences = QVariantHash());
 
     int databaseId() const;
 
-    State state() const { return mState; }
+    bool setPage(HsPage *page);
+    HsPage *page() const; 
 
-    bool deleteFromDatabase();
+    bool isPannable(QGraphicsSceneMouseEvent *event);
     
-    bool setWidgetPresentation();
-    bool setWidgetPresentationData(HsWidgetPresentationData &presentationData);
-    bool widgetPresentationData(const QString &key, HsWidgetPresentationData &presentationData);
-
-    HsWidgetPresentationData widgetPresentation(Qt::Orientation orientation);
-    bool loadWidgetPresentation();
-    bool deleteWidgetPresentation(Qt::Orientation orientation);
+    bool loadPresentation();
+    bool loadPresentation(Qt::Orientation orientation);
+    bool savePresentation();
+    bool savePresentation(Qt::Orientation orientation);    
+    bool savePresentation(HsWidgetPresentationData &presentation);
+    bool getPresentation(HsWidgetPresentationData &presentation);
+    bool removePresentation(Qt::Orientation orientation);
 
 signals:
-    void widgetFinished(HsWidgetHost *widget);
-    void widgetError(HsWidgetHost *widget);
-    void widgetResized(HsWidgetHost *widget);
+    void event_startAndShow();
+    void event_startAndHide();
+    void event_unload();
+    void event_show();
+    void event_hide();
+    void event_remove();
+    void event_close();
+    void event_finished();
+    void event_faulted();
+    
+    void finished();
+    void faulted();
+    void resized();
+    void available();
+    void unavailable();
 
 public slots:
-    void initializeWidget();
+    void startWidget(bool show = true);
     void showWidget();
     void hideWidget();
-    void uninitializeWidget();
     void setOnline(bool online = true);
+    
+    void remove();
+    void close();
 
     void startDragEffect();
     void startDropEffect();
-    
-    void startTapAndHoldAnimation();
-    void stopTapAndHoldAnimation();
+
+protected:
+    bool eventFilter(QObject *watched, QEvent *event);    
+    void mousePressEvent(QGraphicsSceneMouseEvent *) {}
 
-protected:    
-    void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) { Q_UNUSED(event) }
-    void mouseMoveEvent(QGraphicsSceneMouseEvent *event) { Q_UNUSED(event) }
-    void mousePressEvent(QGraphicsSceneMouseEvent *event) { Q_UNUSED(event) }
-    void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { Q_UNUSED(event) }    
-    bool eventFilter(QObject *obj, QEvent *event);
-    
 private:
+    Q_DISABLE_COPY(HsWidgetHost)    
+    void setupEffects();
+    void setupStates();
+
     bool setProperty(const char *name, QMetaProperty &property); 
     bool setMethod(const char *signature, QMetaMethod &method);    
     bool hasSignal(const char *signature);
+
+    void setNewSize(const QSizeF &size);
+
     bool setPreferencesToWidget();
-    void setNewSize(const QSizeF &newSize);
 
 private slots:
-    void onSetPreferences(const QStringList &names);
+    void action_connectComponent();
+    void action_disconnectComponent();
+    void action_load();
+    void action_unload();
+    void action_initialize();
+    void action_uninitialize();
+    void action_show();
+    void action_hide();
+    void action_finished();
+    void action_faulted();
+    void action_remove();
+    
     void onFinished();
     void onError();
-    void onAboutToUninstall();
-    void onUpdated();
-    void onUnavailable();
-    void onAvailable();
+    void onSetPreferences(const QStringList &names);
+
 private:
-    Q_DISABLE_COPY(HsWidgetHost)
+    int mDatabaseId;        
+    QStateMachine *mStateMachine;
     QGraphicsWidget *mWidget;
-    HsPage *mPage;
+    HsPage *mPage;    
+    HsWidgetComponent *mComponent;    
     QMetaMethod mOnInitializeMethod;
     QMetaMethod mOnShowMethod;
     QMetaMethod mOnHideMethod;
     QMetaMethod mOnUninitializeMethod;
+    QMetaMethod mIsPannableMethod;
     QMetaProperty mIsOnlineProperty;
-	QMetaProperty mRootPathProperty;
-    State mState;
-    QString mUri;
-    int mDatabaseId;
-
-    HbIconItem *mTapAndHoldIcon;
+	QMetaProperty mRootPathProperty;        
+    bool mIsFinishing;
 
     HOMESCREEN_TEST_FRIEND_CLASS(TestRuntimeServices)
 };
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/src/hsbackuprestoreactivecallback.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -0,0 +1,204 @@
+/*
+* 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 the License "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:  Active callback for Backup/Restore observer.
+*
+*/
+
+
+// INCLUDE FILES
+#include <bautils.h>
+
+#include "hsbackuprestoreactivecallback.h"
+#include "hsbackuprestoreobserver.h"
+
+//  CONSTANTS
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// 
+// ---------------------------------------------------------------------------
+//
+CHsBURActiveCallback* CHsBURActiveCallback::NewL(HsBackupRestoreObserver* observer)
+{
+    CHsBURActiveCallback* self =
+        new( ELeave ) CHsBURActiveCallback(observer);
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+
+    return self;
+}
+
+// ---------------------------------------------------------------------------
+// Destructor
+// ---------------------------------------------------------------------------
+//
+CHsBURActiveCallback::~CHsBURActiveCallback()
+{
+}
+
+// ---------------------------------------------------------------------------
+// Inform that all data has been backed up or restored.
+// ---------------------------------------------------------------------------
+//
+void CHsBURActiveCallback::AllSnapshotsSuppliedL()
+{
+    // No implementation needed. Must not leave    
+}
+
+// ---------------------------------------------------------------------------
+// Not supported.
+// ---------------------------------------------------------------------------
+//
+void CHsBURActiveCallback::ReceiveSnapshotDataL(
+    TDriveNumber /*aDrive*/, TDesC8& /*aBuffer*/, TBool /*aLastSection*/)
+{
+	// No implementation needed
+    User::Leave( KErrNotSupported );
+}
+
+// ---------------------------------------------------------------------------
+// Make a guess about data size.
+// ---------------------------------------------------------------------------
+//
+TUint CHsBURActiveCallback::GetExpectedDataSize(
+    TDriveNumber /*aDrive*/)
+{
+    // No implementation needed
+    return 0;
+}
+
+// ---------------------------------------------------------------------------
+// Not supported.
+// ---------------------------------------------------------------------------
+//
+void CHsBURActiveCallback::GetSnapshotDataL(
+    TDriveNumber /*aDrive*/, TPtr8& /*aBuffer*/, TBool& /*aFinished*/)
+{
+    // No implementation needed
+    User::Leave( KErrNotSupported );
+}
+
+// ---------------------------------------------------------------------------
+// Initialize for backup.
+// ---------------------------------------------------------------------------
+//
+void CHsBURActiveCallback::InitialiseGetBackupDataL(
+    TDriveNumber /*aDrive*/)
+{
+    iObserver->backupRestoreStarted();    
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void CHsBURActiveCallback::GetBackupDataSectionL(
+    TPtr8& /*aBuffer*/, TBool& aFinished)
+{
+    // No data for active backup
+    aFinished = ETrue;
+}
+
+// ---------------------------------------------------------------------------
+// Initialize restore.
+// ---------------------------------------------------------------------------
+//
+void CHsBURActiveCallback::InitialiseRestoreBaseDataL(
+    TDriveNumber /*aDrive*/ )
+{
+    // No implementation needed
+    User::Leave( KErrNotSupported );    
+}
+
+// ---------------------------------------------------------------------------
+// Run state machine for restore. Receive stream from BUR engine and turn it
+// to file(s).
+// ---------------------------------------------------------------------------
+//
+void CHsBURActiveCallback::RestoreBaseDataSectionL(
+    TDesC8& /*aBuffer*/, TBool /*aFinished*/ )
+{
+    // No implementation needed
+    User::Leave( KErrNotSupported );  
+}
+
+// ---------------------------------------------------------------------------
+// Incremental restoration is not supported.
+// ---------------------------------------------------------------------------
+//
+void CHsBURActiveCallback::InitialiseRestoreIncrementDataL(
+    TDriveNumber /*aDrive*/)
+{
+    // No implementation needed
+    User::Leave( KErrNotSupported );
+}
+
+// ---------------------------------------------------------------------------
+// Incremental restoration is not supported.
+// ---------------------------------------------------------------------------
+//
+void CHsBURActiveCallback::RestoreIncrementDataSectionL(
+    TDesC8& /*aBuffer*/, TBool /*aFinished*/)
+{
+    // No implementation needed
+    User::Leave( KErrNotSupported );
+}
+
+// ---------------------------------------------------------------------------
+// Called when restore is complete - sets data back to initial state.
+// ---------------------------------------------------------------------------
+//
+void CHsBURActiveCallback::RestoreComplete(TDriveNumber /*aDrive*/)
+{
+    // No implementation needed
+}
+
+// ---------------------------------------------------------------------------
+// Tidy up when operation is over.
+// ---------------------------------------------------------------------------
+//
+void CHsBURActiveCallback::TerminateMultiStageOperation()
+{
+    // No implementation needed
+}
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+TUint CHsBURActiveCallback::GetDataChecksum(TDriveNumber /*aDrive*/)
+{
+    // No implementation needed
+    return 0;
+}
+
+// ---------------------------------------------------------------------------
+// C++ constructor.
+// ---------------------------------------------------------------------------
+//
+CHsBURActiveCallback::CHsBURActiveCallback(HsBackupRestoreObserver* observer)
+{
+	iObserver = observer;
+}
+
+// ---------------------------------------------------------------------------
+// 2nd phase constructor.
+// ---------------------------------------------------------------------------
+//
+void CHsBURActiveCallback::ConstructL()
+{
+}
+ 
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/src/hsbackuprestoreobserver.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -0,0 +1,198 @@
+/*
+* 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:  Home screen Backup/Restore observer.
+*
+*/
+
+
+#include "hsdatabase.h"
+#include "hsbackuprestoreobserver.h"
+#ifdef Q_OS_SYMBIAN
+#include <connect/sbdefs.h>
+#include <e32property.h>
+#include <XQSettingsManager>
+#include "hsbackuprestoreactivecallback.h"
+#include "hsbackuprestoreobserver_p.h"
+
+/*!
+    Constructs a new observer with the given \a parent object.
+*/
+HsBackupRestoreObserverPrivate::HsBackupRestoreObserverPrivate(HsBackupRestoreObserver *observer,
+                                                               QObject *parent):
+    QObject(parent),
+    mQ(observer),
+    mCallBack(NULL),
+    mActiveBackupClient(NULL),
+    mLastType(conn::EBURNormal)
+{
+    XQPublishAndSubscribeSettingsKey backupRestoreKey(KUidSystemCategory.iUid, KUidBackupRestoreKey);
+    XQSettingsManager *sm = new XQSettingsManager(this);
+    
+    connect(sm,SIGNAL(valueChanged(XQSettingsKey, const QVariant &)), this,
+			          SLOT(handleKeyChange(XQSettingsKey, const QVariant &)));
+    sm->startMonitoring(backupRestoreKey);
+}
+
+/*!
+    Destructor.
+*/
+HsBackupRestoreObserverPrivate::~HsBackupRestoreObserverPrivate()
+{
+    delete mCallBack;
+    delete mActiveBackupClient;
+}
+
+/*!
+    Informs active backup client, when Home screen is ready for backup/restore.
+*/
+void HsBackupRestoreObserverPrivate::readyForBUR()
+{
+	mActiveBackupClient->ConfirmReadyForBURL( KErrNone );
+}
+
+/*!
+    \fn HsBackupRestoreObserverPrivate::handleKeyChange()
+
+    Handles the key change. Creates active backup client and 
+    informs client about backup/restore state change.
+*/
+
+void HsBackupRestoreObserverPrivate::handleKeyChange(XQSettingsKey key, const QVariant &value)
+{    
+    conn::TBURPartType type = static_cast< conn::TBURPartType >
+        ( value.toInt() & conn::KBURPartTypeMask );
+		
+	// Test if the device is going into backup or restore mode, and we are
+    // required to participate.
+    if ( key.key() == KUidBackupRestoreKey && 
+         (( type == conn::EBURBackupFull || type == conn::EBURRestoreFull ) ||
+         ( type == conn::EBURBackupPartial || type == conn::EBURRestorePartial )) )
+    {
+        if ( !mCallBack )
+        {
+            mCallBack = CHsBURActiveCallback::NewL(mQ);
+        }
+
+        if ( !mActiveBackupClient )
+        {
+            mActiveBackupClient = conn::CActiveBackupClient::NewL( mCallBack );
+
+            if ( ( type == conn::EBURBackupPartial || 
+                   type == conn::EBURRestorePartial ) &&
+                 !mActiveBackupClient->DoesPartialBURAffectMeL() )
+            {
+                delete mCallBack;
+                mCallBack = NULL;
+                delete mActiveBackupClient;
+                mActiveBackupClient = NULL;
+                return;
+            }           
+            mQ->backupRestoreStarted();            
+        }        
+    }
+    else
+    {
+        if ( key.key() == KUidBackupRestoreKey && type == conn::EBURNormal )
+        {
+            if ( (mLastType == conn::EBURBackupFull || mLastType == conn::EBURBackupPartial) ||
+            	 (mLastType == conn::EBURRestorePartial || mLastType == conn::EBURRestoreFull) )
+            {                
+                mQ->backupRestoreComplited();
+            }         
+            // delete once back to normal.
+            delete mCallBack;
+            mCallBack = NULL;
+            delete mActiveBackupClient;
+            mActiveBackupClient = NULL;            
+        }
+    }
+
+    mLastType = type;
+}
+#endif //Q_OS_SYMBIAN
+
+/*!
+    Singleton. 
+*/
+HsBackupRestoreObserver *HsBackupRestoreObserver::instance()
+{
+    if (!mInstance) {
+        mInstance = new HsBackupRestoreObserver();
+    }
+    return mInstance;
+}
+
+/*!
+    Constructs a new observer with the given \a parent object.
+*/
+HsBackupRestoreObserver::HsBackupRestoreObserver(QObject *parent)
+ : QObject(parent),
+   mBUROngoing(false)
+{
+#ifdef Q_OS_SYMBIAN
+    mD = new HsBackupRestoreObserverPrivate(this);
+#endif //Q_OS_SYMBIAN
+}
+
+/*!
+    Destructor.
+*/
+HsBackupRestoreObserver::~HsBackupRestoreObserver()
+{
+#ifdef Q_OS_SYMBIAN
+    delete mD;
+#endif //Q_OS_SYMBIAN
+}
+
+/*!
+    Called when backup/restore is started.
+*/
+void HsBackupRestoreObserver::backupRestoreStarted()
+{
+	mBUROngoing = true;
+	emit event_backupRestoreStarted();
+}
+
+/*!
+    Called when backup/restore is completed.
+*/
+void HsBackupRestoreObserver::backupRestoreComplited()
+{
+	mBUROngoing = false;
+	emit event_backupRestoreComplited();
+}
+
+/*!
+    Called when Home screen is ready for backup/restore.
+*/
+void HsBackupRestoreObserver::readyForBUR()
+{
+#ifdef Q_OS_SYMBIAN
+    mD->readyForBUR();
+#endif //Q_OS_SYMBIAN
+}
+
+/*!
+    Returns true if bacup/restore is ongoing.
+*/
+bool HsBackupRestoreObserver::checkBUR()
+{
+	return mBUROngoing;
+}
+/*!
+    Points to the observer instance.
+*/
+HsBackupRestoreObserver *HsBackupRestoreObserver::mInstance(0);
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/src/hsconfiguration.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -0,0 +1,128 @@
+/*
+* 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:
+*
+*/
+#include "hsconfiguration.h"
+#include "hsdomainmodeldatastructures.h"
+#include "hsdatabase.h"
+
+#include <HbInstantFeedback>
+
+/*!
+    Loads configuration data from database.
+*/
+void HsConfiguration::loadConfiguration()
+{
+    HsDatabase *db = HsDatabase::instance();
+
+    HsGeneralConfiguration generalConfiguration;
+    if (db->generalConfiguration(generalConfiguration)) {
+        mBounceEffect = generalConfiguration.bounceEffect;
+        mTapAndHoldDistance = generalConfiguration.tapAndHoldDistance;
+        mWidgetTapAndHoldTimeout = generalConfiguration.widgetTapAndHoldTimeout;
+        mSceneTapAndHoldTimeout = generalConfiguration.sceneTapAndHoldTimeout;
+        mPageChangeZoneWidth = generalConfiguration.pageChangeZoneWidth;
+        mPageIndicatorSpacing = generalConfiguration.pageIndicatorSpacing;
+        mPageChangeAnimationDuration = generalConfiguration.pageChangeAnimationDuration;
+        mPageChangeZoneAnimationDuration = generalConfiguration.pageChangeZoneAnimationDuration;
+        mPageChangeZoneReverseAnimationDuration = generalConfiguration.pageChangeZoneReverseAnimationDuration;
+        mPageRemovedAnimationDuration = generalConfiguration.pageRemovedAnimationDuration;
+        mNewPageAddedAnimationDuration = generalConfiguration.newPageAddedAnimationDuration; 
+        mWidgetDragEffectDuration = generalConfiguration.widgetDragEffectDuration;
+        mWidgetDropEffectDuration = generalConfiguration.widgetDropEffectDuration;
+        mBounceFeedbackEffectDistance = generalConfiguration.boundaryFeedbackEffectDistance;
+        mDefaultPageId = generalConfiguration.defaultPageId;
+        mMaximumPageCount = generalConfiguration.maximumPageCount;
+        mMaximumWidgetHeight = generalConfiguration.maximumWidgetHeight;
+        mMaximumWidgetWidth = generalConfiguration.maximumWidgetWidth;
+        mMinimumWidgetHeight = generalConfiguration.minimumWidgetHeight;
+        mMinimumWidgetWidth = generalConfiguration.minimumWidgetWidth;
+        mShortcutLabelsVisible = generalConfiguration.shortcutLabelsVisible;
+        mPageChangePanDistance = generalConfiguration.pageChangePanDistance;
+        mPageChangePanDistanceInPixels = mPageChangePanDistance * HbDeviceProfile::current().unitValue();
+    } else {
+        Q_ASSERT_X(1, "Configuration", "Homescreen configuration could not be loaded from database");
+    }
+
+    HsFeedbackConfiguration feedbackConfiguration;
+    if (db->feedbackConfiguration(feedbackConfiguration)) {
+        mPageChangeFeedbackType = feedbackConfiguration.pageChangeFeedbackType;
+	    mWidgetPickFeedbackType = feedbackConfiguration.widgetPickFeedbackType;
+	    mWidgetDropFeedbackType = feedbackConfiguration.widgetDropFeedbackType;
+	    mWidgetRepositionFeedbackType = feedbackConfiguration.widgetRepositionFeedbackType;
+	    mWidgetOverTrashbinFeedbackType = feedbackConfiguration.widgetOverTrashbinFeedbackType;
+	    mWidgetDropToTrashbinFeedbackType = feedbackConfiguration.widgetDropToTrashbinFeedbackType;
+	    mShortcutWidgetTapFeedbackType = feedbackConfiguration.shortcutWidgetTapFeedbackType;
+	    mWidgetMoveBlockedFeedbackType = feedbackConfiguration.widgetMoveBlockedFeedbackType;
+	    mClockWidgetTapFeedbackType = feedbackConfiguration.clockWidgetTapFeedbackType;
+	    mWidgetSnappingFeedbackType = feedbackConfiguration.widgetSnappingFeedbackType;    
+    } else {
+        Q_ASSERT_X(1, "Configuration", "Homescreen feedback cnfiguration could not be loaded from database");
+    }
+
+    HsSnapConfiguration snapConfiguration;
+    if (db->snapConfiguration(snapConfiguration)) {
+        mSnapEnabled = snapConfiguration.snappingEnabled;
+        mSnapForce = snapConfiguration.snapForce;
+        mSnapGap = snapConfiguration.snapGap;
+        mSnapBorderGap = snapConfiguration.borderGap;
+        mSnapTimeout = snapConfiguration.timeout;
+    } else {
+        Q_ASSERT_X(1, "Configuration", "Homescreen snap configuration could not be loaded from database");
+    }
+}
+
+// static member variables initilized here, these values will be used if fetching from database fails
+int HsConfiguration::mBounceEffect = 20;
+qreal HsConfiguration::mTapAndHoldDistance = 16.0;
+int HsConfiguration::mWidgetTapAndHoldTimeout = 500;
+int HsConfiguration::mSceneTapAndHoldTimeout = 500;
+qreal HsConfiguration::mPageChangeZoneWidth = 60.0;
+qreal HsConfiguration::mPageIndicatorSpacing = 8.0;
+int HsConfiguration::mPageChangeAnimationDuration = 200;
+int HsConfiguration::mPageChangeZoneAnimationDuration = 800;
+int HsConfiguration::mPageChangeZoneReverseAnimationDuration = 200;
+int HsConfiguration::mPageRemovedAnimationDuration = 200;
+int HsConfiguration::mNewPageAddedAnimationDuration = 700;
+int HsConfiguration::mWidgetDragEffectDuration = 200;
+int HsConfiguration::mWidgetDropEffectDuration = 200;
+int HsConfiguration::mBounceFeedbackEffectDistance = 3;
+int HsConfiguration::mDefaultPageId = 1;
+int HsConfiguration::mMaximumPageCount = 8;
+qreal HsConfiguration::mMaximumWidgetHeight = 39;
+qreal HsConfiguration::mMaximumWidgetWidth = 48;
+qreal HsConfiguration::mMinimumWidgetHeight = 8.75;
+qreal HsConfiguration::mMinimumWidgetWidth = 8.75;
+bool HsConfiguration::mShortcutLabelsVisible = false;
+qreal HsConfiguration::mPageChangePanDistance = 17.91;
+int HsConfiguration::mPageChangePanDistanceInPixels = 120;
+
+HbFeedback::InstantEffect HsConfiguration::mPageChangeFeedbackType = HbFeedback::None;
+HbFeedback::InstantEffect HsConfiguration::mWidgetPickFeedbackType = HbFeedback::None;
+HbFeedback::InstantEffect HsConfiguration::mWidgetDropFeedbackType = HbFeedback::None;
+HbFeedback::InstantEffect HsConfiguration::mWidgetRepositionFeedbackType = HbFeedback::None;
+HbFeedback::InstantEffect HsConfiguration::mWidgetOverTrashbinFeedbackType = HbFeedback::None;
+HbFeedback::InstantEffect HsConfiguration::mWidgetDropToTrashbinFeedbackType = HbFeedback::None;
+HbFeedback::InstantEffect HsConfiguration::mShortcutWidgetTapFeedbackType = HbFeedback::None;
+HbFeedback::InstantEffect HsConfiguration::mWidgetMoveBlockedFeedbackType = HbFeedback::None;
+HbFeedback::InstantEffect HsConfiguration::mClockWidgetTapFeedbackType = HbFeedback::None;
+HbFeedback::InstantEffect HsConfiguration::mWidgetSnappingFeedbackType = HbFeedback::None;
+
+bool HsConfiguration::mSnapEnabled = false;
+qreal HsConfiguration::mSnapForce = 0;
+qreal HsConfiguration::mSnapGap = 0;
+qreal HsConfiguration::mSnapBorderGap = 0;
+int HsConfiguration::mSnapTimeout = 0;
+
--- a/homescreenapp/hsdomainmodel/src/hscontentservice.cpp	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/hsdomainmodel/src/hscontentservice.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -39,8 +39,7 @@
     HsWidgetHost *widget = createWidgetForPreview(params);
     if (!widget) {
         return false;
-    }
-     
+    }     
     return HsScene::instance()->activePage()->addNewWidget(widget);
 }
 
@@ -49,20 +48,8 @@
     HsWidgetData widgetData;
     widgetData.uri = params.value("uri").toString();
 
-
-    HsWidgetHost *widget = HsWidgetHost::createInstance(widgetData,
-                                                        params.value("preferences").toHash());
-
-    if (!widget) {
-        return NULL;
-    }
-    if (!widget->load()) {
-        widget->deleteFromDatabase();
-        delete widget;
-        return NULL;
-    }
-
-    return widget;
+    return HsWidgetHost::createInstance(
+        widgetData, params.value("preferences").toHash());
 }
 
 /*!
@@ -70,24 +57,22 @@
 */
 bool HsContentService::addWidget(const QString &uri, const QVariantHash &preferences)
 {
-    HsWidgetData widgetData;
-    widgetData.uri = uri;
+    HsWidgetData data;
+    data.uri = uri;
 
-    QScopedPointer<HsWidgetHost> widget(HsWidgetHost::createInstance(widgetData, preferences));
-    if (!widget.data()) {
+    HsWidgetHost *widget = HsWidgetHost::createInstance(data, preferences);    
+    if (!widget) {
         return false;
     }
 
-    HsPage *activePage = HsScene::instance()->activePage();
-    if (!widget->load() || !activePage->addNewWidget(widget.data())) {
-        widget->deleteFromDatabase();
+    HsPage *page = HsScene::instance()->activePage();
+    if (!page->addNewWidget(widget)) {
+        widget->remove();
         return false;
     }
 
-    HsWidgetHost *taken = widget.take();
-    taken->initializeWidget();
-    taken->showWidget();
-    activePage->layoutNewWidgets();
+    widget->startWidget();
+    page->layoutNewWidgets();
     return true;
 }
 
@@ -97,12 +82,12 @@
 HsContentService *HsContentService::instance()
 {
     if (!mInstance) {
-        mInstance.reset(new HsContentService);
+        mInstance = new HsContentService();
     }
-    return mInstance.data();
+    return mInstance;
 }
 
 /*!
     Points to the content service instance.
 */
-QScopedPointer<HsContentService> HsContentService::mInstance(0);
+HsContentService *HsContentService::mInstance(0);
--- a/homescreenapp/hsdomainmodel/src/hsdatabase.cpp	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/hsdomainmodel/src/hsdatabase.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -23,6 +23,7 @@
 
 #include "hsdatabase.h"
 #include "hsdomainmodeldatastructures.h"
+#include "hsbackuprestoreobserver.h"
 
 namespace
 {
@@ -52,8 +53,7 @@
     Constructs a new database with the given \a parent object.
 */
 HsDatabase::HsDatabase(QObject *parent)
-  : QObject(parent),
-  	mBlocked(false)
+  : QObject(parent)
 {
 }
 
@@ -103,7 +103,8 @@
 */  
 bool HsDatabase::open()
 {
-	if (mBlocked) {
+	HsBackupRestoreObserver *brObserver = HsBackupRestoreObserver::instance();
+	if (brObserver->checkBUR()) {	
 		return false;
 	}
 
@@ -184,21 +185,13 @@
     QSqlQuery query(QSqlDatabase::database(mConnectionName));
 
     QString statement =
-        "SELECT id, portraitWallpaper, landscapeWallpaper, defaultPageId, "
-        "maximumPageCount, maximumWidgetHeight, maximumWidgetWidth, "
-        "minimumWidgetHeight, minimumWidgetWidth "
+        "SELECT id, portraitWallpaper, landscapeWallpaper "
         "FROM Scene";
     
     if (query.prepare(statement) && query.exec() && query.next()) {        
         data.id                  = query.value(0).toInt();
         data.portraitWallpaper   = query.value(1).toString();
         data.landscapeWallpaper  = query.value(2).toString();
-        data.defaultPageId       = query.value(3).toInt();
-        data.maximumPageCount    = query.value(4).toInt();
-        data.maximumWidgetHeight = query.value(5).toReal();
-        data.maximumWidgetWidth  = query.value(6).toReal();
-        data.minimumWidgetHeight = query.value(7).toReal();
-        data.minimumWidgetWidth  = query.value(8).toReal();
         return true;
     }
     
@@ -572,6 +565,9 @@
         return false;
     }
 
+    QString key = data.orientation == Qt::Vertical ?
+        QLatin1String("portrait") : QLatin1String("landscape");
+
     QSqlQuery query(QSqlDatabase::database(mConnectionName));
 
     QString statement =
@@ -580,7 +576,7 @@
         "WHERE key = ? AND widgetId = ?";
 
     if (query.prepare(statement)) {
-        query.addBindValue(data.key);
+        query.addBindValue(key);
         query.addBindValue(data.widgetId);
         if (query.exec() && query.next()) {
             data.x      = query.value(0).toReal();
@@ -602,6 +598,9 @@
         return false;
     }
 
+    QString key = data.orientation == Qt::Vertical ?
+        QLatin1String("portrait") : QLatin1String("landscape");
+
     QSqlQuery query(QSqlDatabase::database(mConnectionName));
 
     QString statement =
@@ -610,7 +609,7 @@
         "VALUES (?, ?, ?, ?, ?)";
 
     if (query.prepare(statement)) {
-        query.addBindValue(data.key);
+        query.addBindValue(key);
         query.addBindValue(data.x);
         query.addBindValue(data.y);
         query.addBindValue(data.zValue);
@@ -624,12 +623,15 @@
 /*!
 
 */
-bool HsDatabase::deleteWidgetPresentation(int widgetId, const QString &key)
+bool HsDatabase::deleteWidgetPresentation(int widgetId, Qt::Orientation orientation)
 {
     if (!checkConnection()) {
         return false;
     }
 
+    QString key = orientation == Qt::Vertical ?
+        QLatin1String("portrait") : QLatin1String("landscape");
+
     QSqlQuery query(QSqlDatabase::database(mConnectionName));
 
     QString statement =
@@ -759,20 +761,113 @@
 }
 
 /*!
-    Sets the database blocked or unblocked.
+
 */
-void HsDatabase::setDataBaseBlocked(bool blocked)
+bool HsDatabase::generalConfiguration(HsGeneralConfiguration &data)
 {
-	mBlocked = blocked;
+    if (!checkConnection()) {
+        return false;
+    }
+
+    QSqlQuery query(QSqlDatabase::database(mConnectionName));
+
+    QString statement =
+        "SELECT bounceEffect, tapAndHoldDistance, widgetTapAndHoldTimeout, sceneTapAndHoldTimeout, "
+        "pageChangeZoneWidth, "
+        "pageIndicatorSpacing, pageChangeAnimationDuration, pageChangeZoneAnimationDuration, "
+        "pageChangeZoneReverseAnimationDuration, "
+        "pageRemovedAnimationDuration, newPageAddedAnimationDuration, widgetDragEffectDuration, "
+        "widgetDropEffectDuration, boundaryFeedbackEffectDistance, "
+        "defaultPageId, maximumPageCount, maximumWidgetHeight, maximumWidgetWidth, "
+        "minimumWidgetHeight, minimumWidgetWidth, shortcutLabelsVisible,  "
+        "pageChangePanDistance "
+        "FROM GeneralConfiguration";
+
+    if (query.prepare(statement) && query.exec() && query.next()) {        
+        data.bounceEffect                           = query.value(0).toInt();
+        data.tapAndHoldDistance                     = query.value(1).toReal();
+        data.widgetTapAndHoldTimeout                = query.value(2).toInt();
+        data.sceneTapAndHoldTimeout                 = query.value(3).toInt();
+        data.pageChangeZoneWidth                    = query.value(4).toReal();
+        data.pageIndicatorSpacing                   = query.value(5).toReal();
+        data.pageChangeAnimationDuration            = query.value(6).toInt();
+        data.pageChangeZoneAnimationDuration        = query.value(7).toInt();
+        data.pageChangeZoneReverseAnimationDuration = query.value(8).toInt();
+        data.pageRemovedAnimationDuration           = query.value(9).toInt();
+        data.newPageAddedAnimationDuration          = query.value(10).toInt();
+        data.widgetDragEffectDuration               = query.value(11).toInt();
+        data.widgetDropEffectDuration               = query.value(12).toInt();
+        data.boundaryFeedbackEffectDistance         = query.value(13).toInt();
+        data.defaultPageId                          = query.value(14).toInt();
+        data.maximumPageCount                       = query.value(15).toInt();
+        data.maximumWidgetHeight                    = query.value(16).toReal();
+        data.maximumWidgetWidth                     = query.value(17).toReal();
+        data.minimumWidgetHeight                    = query.value(18).toReal();
+        data.minimumWidgetWidth                     = query.value(19).toReal();
+        data.shortcutLabelsVisible                  = query.value(20).toBool();
+        data.pageChangePanDistance                  = query.value(21).toReal();
+        return true;
+    }
+    
+    return false;
 }
 
 /*!
-    Returns is the database blocked.
-    Return value true if blocked.
+
 */
-bool HsDatabase::getDataBaseBlocked()
+bool HsDatabase::feedbackConfiguration(HsFeedbackConfiguration &data)
 {
-	return mBlocked;
+    if (!checkConnection()) {
+        return false;
+    }
+
+    QSqlQuery query(QSqlDatabase::database(mConnectionName));
+
+    QString statement =
+        "SELECT pageChangeFeedbackType, widgetPickFeedbackType, widgetDropFeedbackType,  "
+        "widgetRepositionFeedbackType, widgetOverTrashbinFeedbackType, widgetDropToTrashbinFeedbackType,  "
+        "shortcutWidgetTapFeedbackType, widgetMoveBlockedFeedbackType, clockWidgetTapFeedbackType, "
+        "widgetSnappingFeedbackType "
+        "FROM FeedbackConfiguration";
+
+    if (query.prepare(statement) && query.exec() && query.next()) {        
+        data.pageChangeFeedbackType           = data.feedbackFromString(query.value(0).toString());
+        data.widgetPickFeedbackType           = data.feedbackFromString(query.value(1).toString());
+        data.widgetDropFeedbackType           = data.feedbackFromString(query.value(2).toString());
+        data.widgetRepositionFeedbackType     = data.feedbackFromString(query.value(3).toString());
+        data.widgetOverTrashbinFeedbackType   = data.feedbackFromString(query.value(4).toString());
+        data.widgetDropToTrashbinFeedbackType = data.feedbackFromString(query.value(5).toString());
+        data.shortcutWidgetTapFeedbackType    = data.feedbackFromString(query.value(6).toString());
+        data.widgetMoveBlockedFeedbackType    = data.feedbackFromString(query.value(7).toString());
+        data.clockWidgetTapFeedbackType       = data.feedbackFromString(query.value(8).toString());
+        data.widgetSnappingFeedbackType       = data.feedbackFromString(query.value(9).toString());
+        return true;
+    }
+    
+    return false;
+}
+
+bool HsDatabase::snapConfiguration(HsSnapConfiguration &data)
+{   
+    if (!checkConnection()) {
+        return false;
+    }
+
+    QSqlQuery query(QSqlDatabase::database(mConnectionName));
+
+    QString statement =
+        "SELECT snappingEnabled, snapForce, snapGap, borderGap, timeout "
+        "FROM SnapConfiguration";
+
+    if (query.prepare(statement) && query.exec() && query.next()) {
+        data.snappingEnabled = query.value(0).toBool();
+        data.snapForce = query.value(1).toReal();
+        data.snapGap   = query.value(2).toReal();
+        data.borderGap = query.value(3).toReal();
+        data.timeout   = query.value(4).toInt();
+        return true;
+    }
+    return false;
 }
 
 /*!
@@ -781,7 +876,11 @@
 */
 void HsDatabase::setInstance(HsDatabase *instance)
 {
-    mInstance.reset(instance);
+    if (mInstance != instance) {
+        HsDatabase *oldInstance = mInstance;
+        mInstance = instance;
+        delete oldInstance;
+    }
 }
 
 /*!
@@ -789,7 +888,7 @@
 */
 HsDatabase *HsDatabase::instance()
 {
-    return mInstance.data();
+    return mInstance;
 }
 
 /*!
@@ -799,7 +898,9 @@
 */
 HsDatabase *HsDatabase::takeInstance()
 {
-    return mInstance.take();
+    HsDatabase *instance = mInstance;
+    mInstance = 0;
+    return instance;
 }
   
 /*!
@@ -814,4 +915,4 @@
 /*!
     Points to the database instance.
 */
-QScopedPointer<HsDatabase> HsDatabase::mInstance(0);
+HsDatabase *HsDatabase::mInstance(0);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/src/hsgui.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -0,0 +1,73 @@
+/*
+* 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:
+*
+*/
+
+#include <HbInstance>
+#include <HbView>
+
+#include "hsgui.h"
+
+/*!
+    \class HsGui
+    \ingroup group_hsutils
+    \brief Represents a view in the framework.
+    HsGui includes common UI components for Home screen.
+*/
+
+/*!
+    Returns the idle view. 
+*/
+HbView *HsGui::idleView()
+{
+    return mIdleView;    
+}
+
+/*!
+    Returns the current idle view instance. Callers of this 
+    function take ownership of the instance. The current 
+    view instance will be reset to null.    
+*/
+HbView *HsGui::takeIdleView()
+{	
+    HbView *idleView = mIdleView;
+    mIdleView = 0;
+    return idleView;
+}
+
+/*!
+    Sets the idle view instance. The existing instance
+    will be deleted.
+*/
+void HsGui::setIdleView(HbView *idleView)
+{
+    if (mIdleView != idleView) {
+        delete mIdleView;
+        mIdleView = idleView;
+    }
+}
+
+/*!
+    Returns the main window.
+*/
+HbMainWindow *HsGui::mainWindow()
+{
+    return hbInstance->allMainWindows().first();
+}
+
+/*!
+    Points to the idle view instance.
+*/
+QPointer<HbView> HsGui::mIdleView(0);
--- a/homescreenapp/hsdomainmodel/src/hspage.cpp	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/hsdomainmodel/src/hspage.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -27,6 +27,7 @@
 #include "hswidgethost.h"
 #include "hswallpaper.h"
 #include "hswidgetpositioningonwidgetadd.h"
+#include "hswidgetpositioningonorientationchange.h"
 
 
 /*!
@@ -92,19 +93,18 @@
     }
 
     foreach (HsWidgetData data, datas) {
-        QScopedPointer<HsWidgetHost> widget(new HsWidgetHost(data.id));
-        if(!widget->load() || !widget->isValid()) {
-            continue;
-		}
-        connectWidget(widget.data());
+        HsWidgetHost *widget = new HsWidgetHost(data.id);
+        mWidgets.append(widget);
+        connectWidget(widget);
         widget->setPage(this);
-        widget->initializeWidget();
-        widget->showWidget();
-        mWidgets.append(widget.data());
         widget->setParentItem(this);
-        widget.take(); // now this page owns widget
+        widget->startWidget();
     }
 
+    connect(HsScene::mainWindow(),
+        SIGNAL(orientationChanged(Qt::Orientation)),
+        SLOT(onOrientationChanged(Qt::Orientation)));
+
     return true;
 }
 
@@ -160,16 +160,13 @@
         return true;
     }
 
-    // Set presentation.
-    QString key = HsScene::orientation() == Qt::Horizontal ?
-        "landscape" : "portrait";
-
     HsWidgetPresentationData presentation;
-    if (!widgetHost->widgetPresentationData(key, presentation)) {
-        presentation.key = key;
+    presentation.orientation = HsScene::orientation();
+    if (!widgetHost->getPresentation(presentation)) {
+        presentation.orientation = HsScene::orientation();
         presentation.setPos(QPointF());
         presentation.zValue = 0;
-        widgetHost->setWidgetPresentationData(presentation);
+        widgetHost->savePresentation(presentation);
     }
 
     widgetHost->hide();
@@ -212,9 +209,10 @@
     for (int i = 0; i < mNewWidgets.count(); ++i) {
         widget = mNewWidgets.at(i);
         widget->setGeometry(calculatedRects.at(i));
-        widget->setWidgetPresentation();
+        widget->savePresentation();
         widget->setPage(this);
         widget->setParentItem(this);
+        widget->showWidget();
         widget->show();
     }
     mWidgets << mNewWidgets;
@@ -224,19 +222,22 @@
 
 bool HsPage::deleteFromDatabase()
 {
-    HsDatabase *db = HsDatabase::instance();
-
     foreach (HsWidgetHost *widget, mWidgets) {
-        if (!widget->deleteFromDatabase()) {
-            return false;
-        }
+        widget->remove();
+    }
+    mWidgets.clear();
+    
+    foreach (HsWidgetHost *widget, mNewWidgets) {
+        widget->remove();
     }
+    mNewWidgets.clear();
 
-    if (!db->deletePage(mDatabaseId))  {
-        return false;
+    foreach (HsWidgetHost *widget, mUnavailableWidgets) {
+        widget->remove();
     }
+    mUnavailableWidgets.clear();
 
-    return true;
+    return HsDatabase::instance()->deletePage(mDatabaseId);
 }
 
 QList<HsWidgetHost *> HsPage::widgets() const
@@ -261,6 +262,11 @@
     mRemovable = removable;
 }
 
+bool HsPage::isActivePage() const
+{
+    return this == HsScene::instance()->activePage();
+}
+
 HsPage *HsPage::createInstance(const HsPageData &pageData)
 {
     HsDatabase *db = HsDatabase::instance();
@@ -333,24 +339,30 @@
 
         foreach (HsWidgetHost *widget, sortedWidgets) {
             widget->setZValue(z++);
-            widget->setWidgetPresentation();
+            widget->savePresentation();
         }
     }
 
     if (!mNewWidgets.isEmpty()) {
         foreach (HsWidgetHost *widget, mNewWidgets) {
             widget->setZValue(z++);
-            widget->setWidgetPresentation();
+            widget->savePresentation();
         }
     }
 }
 
+int HsPage::pageIndex()
+{
+    return HsScene::instance()->pages().indexOf(this);
+}
+
 void HsPage::connectWidget(HsWidgetHost *widget)
 {
-    connect(widget, SIGNAL(widgetFinished(HsWidgetHost*)),
-            SLOT(onWidgetFinished(HsWidgetHost*)));
-    connect(widget, SIGNAL(widgetResized(HsWidgetHost*)),
-            SLOT(onWidgetResized(HsWidgetHost*)));
+    connect(widget, SIGNAL(finished()), SLOT(onWidgetFinished()));
+    connect(widget, SIGNAL(faulted()), SLOT(onWidgetFaulted()));
+    connect(widget, SIGNAL(resized()), SLOT(onWidgetResized()));
+    connect(widget, SIGNAL(available()), SLOT(onWidgetAvailable()));
+    connect(widget, SIGNAL(unavailable()), SLOT(onWidgetUnavailable()));
 }
 
 void HsPage::disconnectWidget(HsWidgetHost *widget)
@@ -358,9 +370,10 @@
     widget->disconnect(this);
 }
 
-void HsPage::onWidgetFinished(HsWidgetHost *widget)
+void HsPage::onWidgetFinished()
 {
-    Q_ASSERT(widget);
+    HsWidgetHost *widget = qobject_cast<HsWidgetHost *>(sender());
+
     // It can be in new widget list if we haven't layouted it yet
     // or layouted new widget and widget list
     if (!mNewWidgets.removeOne(widget)) {
@@ -368,16 +381,21 @@
     }
 
     disconnectWidget(widget);
-    widget->uninitializeWidget();
-    widget->deleteFromDatabase();
-    widget->deleteLater();
+    widget->remove();
+}
+
+void HsPage::onWidgetFaulted()
+{
+    onWidgetFinished();
 }
 
 /*!
     Calculates new widget position on page when widget size changes
 */
-void HsPage::onWidgetResized(HsWidgetHost *widget)
+void HsPage::onWidgetResized()
 {
+    HsWidgetHost *widget = qobject_cast<HsWidgetHost *>(sender());
+
     QRectF widgetRect = widget->geometry();
 
     QRectF pageRect = HsScene::mainWindow()->layoutRect();
@@ -393,3 +411,59 @@
     widget->setPos(widgetX, widgetY);
 }
 
+void HsPage::onWidgetAvailable()
+{
+    HsWidgetHost *widget = qobject_cast<HsWidgetHost *>(sender());
+    
+    mUnavailableWidgets.removeOne(widget);
+    mWidgets.append(widget);
+
+    widget->setParentItem(this);
+    widget->startWidget(isActivePage());
+    widget->show();
+}
+ 
+void HsPage::onWidgetUnavailable()
+{
+    HsWidgetHost *widget = qobject_cast<HsWidgetHost *>(sender());
+
+    if (mWidgets.contains(widget)) {
+        mWidgets.removeOne(widget);
+    } else if (mNewWidgets.contains(widget)) {
+        mNewWidgets.removeOne(widget);
+    } else {
+        return;
+    }
+
+    mUnavailableWidgets.append(widget);
+
+    widget->hide();
+    widget->setParentItem(0);
+}
+
+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);
+
+    HsWidgetPresentationData presentation;
+    presentation.orientation = orientation;
+
+    foreach (HsWidgetHost *widget, mWidgets) {
+        if (!widget->getPresentation(presentation)) {
+            QList<QRectF> geometries = converter->convert(
+                from, QList<QRectF>() << widget->geometry(), to);
+            widget->setGeometry(geometries.first());
+            widget->savePresentation();
+        } else {
+            widget->setPos(presentation.pos());
+            widget->setZValue(presentation.zValue);
+        }
+    }   
+}
--- a/homescreenapp/hsdomainmodel/src/hsscene.cpp	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/hsdomainmodel/src/hsscene.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -27,6 +27,7 @@
 #include "hswidgethost.h"
 #include "hsdatabase.h"
 #include "hswallpaper.h"
+#include "hsconfiguration.h"
 
 /*!
     Destructor.
@@ -57,9 +58,9 @@
         return false;
     }
 
-    mMaximumPageCount = sceneData.maximumPageCount;
+    mMaximumPageCount = HsConfiguration::maximumPageCount();
 
-    calculateWidgetSizeLimitations(sceneData);
+    calculateWidgetSizeLimitations();
 
     if (sceneData.portraitWallpaper.isEmpty()) {
         mWallpaper->setImagesById();
@@ -83,7 +84,7 @@
             delete page;
             continue;
         }
-        if (pageData.id == sceneData.defaultPageId) {
+        if (pageData.id == HsConfiguration::defaultPageId()) {
             mActivePage = page;
             mActivePage->setRemovable(false);
         }
@@ -97,19 +98,17 @@
 /*!
     Calculate maximum and minimum widget sizes 
 */
-void HsScene::calculateWidgetSizeLimitations(HsSceneData &sceneData)
+void HsScene::calculateWidgetSizeLimitations()
 {
     // 1un = 6.7px = 2mm
-    mMaximumWidgetSizeInUnits = QSizeF(sceneData.maximumWidgetWidth,
-                                       sceneData.maximumWidgetHeight);
-    mMinimumWidgetSizeInUnits = QSizeF(sceneData.minimumWidgetWidth,
-                                       sceneData.minimumWidgetHeight);
+    mMaximumWidgetSizeInUnits = QSizeF(HsConfiguration::maximumWidgetWidth(),
+                                       HsConfiguration::maximumWidgetHeight());
+    mMinimumWidgetSizeInUnits = QSizeF(HsConfiguration::minimumWidgetWidth(),
+                                       HsConfiguration::minimumWidgetHeight());
     HbDeviceProfile profile;
     qreal unitToPixelFactor = profile.unitValue();
-    mMaximumWidgetSizeInPixels = QSizeF(sceneData.maximumWidgetWidth * unitToPixelFactor,
-                                        sceneData.maximumWidgetHeight * unitToPixelFactor);
-    mMinimumWidgetSizeInPixels = QSizeF(sceneData.minimumWidgetWidth * unitToPixelFactor,
-                                        sceneData.minimumWidgetHeight * unitToPixelFactor);
+    mMaximumWidgetSizeInPixels = unitToPixelFactor * mMaximumWidgetSizeInUnits;
+    mMinimumWidgetSizeInPixels = unitToPixelFactor * mMinimumWidgetSizeInUnits;
 }
 
 /*!
@@ -149,6 +148,8 @@
         return false;
     }
 
+    int addPosition = data.indexPosition;
+
     db->transaction();
 
     for (int i = data.indexPosition; i < mPages.count(); ++i) {
@@ -162,7 +163,7 @@
     
     db->commit();
     
-    mPages.insert(data.indexPosition, page);
+    mPages.insert(addPosition, page);
     return true;
 }
     
--- a/homescreenapp/hsdomainmodel/src/hsshortcutservice.cpp	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/hsdomainmodel/src/hsshortcutservice.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -68,9 +68,9 @@
 HsShortcutService *HsShortcutService::instance(QStateMachine *stateMachine)
 {
     if (!mInstance && stateMachine) {
-        mInstance.reset(new HsShortcutService(stateMachine));
+        mInstance = new HsShortcutService(stateMachine);
     }
-    return mInstance.data();
+    return mInstance;
 }
 
 HsShortcutService::~HsShortcutService()
@@ -94,4 +94,4 @@
     mD.reset(new HsShortcutServicePrivate(stateMachine));
 }
 
-QScopedPointer<HsShortcutService> HsShortcutService::mInstance(0);
+HsShortcutService *HsShortcutService::mInstance(0);
--- a/homescreenapp/hsdomainmodel/src/hswallpaper.cpp	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/hsdomainmodel/src/hswallpaper.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -56,7 +56,7 @@
     mLImagePath = landscapeImagePath;
     mPImagePath = portraitImagePath;
     mOrientation = HsScene::orientation();
-    
+
     if (mOrientation == Qt::Horizontal) {
         setLandscapeImage(mLImagePath, true);
     } else {
@@ -90,7 +90,7 @@
     if (mPImagePath != wallpaperPath(Qt::Vertical)) {
         QFile::remove(mPImagePath);
         mPImagePath.clear();
-    }    
+    }
     return true;
 }
 
@@ -100,7 +100,7 @@
     static QString directory =
         QDir::toNativeSeparators("c:/private/20022f35/wallpapers/");
 #else
-    static QString directory = 
+    static QString directory =
         QDir::toNativeSeparators(QDir::currentPath() + "/private/20022f35/wallpapers/");
 #endif
 
@@ -124,4 +124,4 @@
     } else {
         mIconItem->setIcon(HbIcon(QIcon(mPImagePath)));
     }
-}
\ No newline at end of file
+}
--- a/homescreenapp/hsdomainmodel/src/hswidgetcomponent.cpp	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/hsdomainmodel/src/hswidgetcomponent.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -19,8 +19,6 @@
 #include <QDir>
 
 #include "hswidgetcomponent.h"
-#include "hswidgetcomponentdescriptor.h"
-#include "hswidgetcomponentregistry.h"
 #include "hsapp_defs.h"
 #include "caservice.h"
 #include "caquery.h"
@@ -171,9 +169,3 @@
         emit available();
     }
 }
-
-
-
-
-    
-
--- a/homescreenapp/hsdomainmodel/src/hswidgetcomponentdescriptor.cpp	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/hsdomainmodel/src/hswidgetcomponentdescriptor.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -23,6 +23,10 @@
     \class HsWidgetComponentDescriptor
     \ingroup group_hsdomainmodel
     \brief Homescreen widget component descriptor class.
+    
+    Homescreen widget component descriptor class hosts meta data of
+    widget component. Meta data is delivered in manifest file.
+    \see page_widgetsispackage
 */
 
 
--- a/homescreenapp/hsdomainmodel/src/hswidgetcomponentregistry.cpp	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/hsdomainmodel/src/hswidgetcomponentregistry.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -37,6 +37,15 @@
     \class HsWidgetComponentRegistry
     \ingroup group_hsdomainmodel
     \brief Homescreen widget component registry.
+
+    Homescreen widget component registry keeps track of packages from which is(are) 
+    created widget(s) to homescreen page(s). Registry updates its content
+    when the installation package is uninstalled/updated or installation location is( or is not)
+	available (media attached/detached). Registry takes care of package registration/unregistration
+	to Qt service framework.
+    
+    Events for all above cases are get from Content Storage. Component registry listens
+    changes of Content Storages' entries (CaEntry) via its service class (CaService).
 */
 
 HsWidgetComponentRegistry *HsWidgetComponentRegistry::mInstance = 0;
@@ -64,6 +73,7 @@
 
 /*!
     Returns component object of the given \a uri.
+    Uri is defined in widget manifest file. \see page_widgetsispackage
 */
 HsWidgetComponent *HsWidgetComponentRegistry::component(const QString &uri)
 {
@@ -77,15 +87,15 @@
 }
 
 /*!
-    Requests widget component to emit 'aboutToInstall' signal to free widget resources when uninstalling the widget.
+    Requests widget component to emit 'aboutToUninstall' signal to free widget resources when
+    uninstalling the widget's installation package.
 */
 void HsWidgetComponentRegistry::uninstallComponent(const HsWidgetComponentDescriptor &componentDescriptor)
 {
     HsWidgetComponent *component = mRegistry.value(componentDescriptor.uri);
     if (component) {
         component->emitAboutToUninstall();
-        }
-        
+    }
 }
 
 /*!
@@ -119,7 +129,6 @@
     if (component) {
         component->emitAvailable();
     }
-
 }
 
 /*!
@@ -139,7 +148,7 @@
         mServiceManager.removeService(uri);
         QCoreApplication::removeLibraryPath(rootPath);
         if (component) {
-            // for now support versions without uinstaller
+            // for now support versions without uninstaller
             component->emitAboutToUninstall();
             component->emitUninstalled();
             mRegistry.take(uri)->deleteLater();
@@ -203,4 +212,3 @@
         default: break;     
     }
 }
-
--- a/homescreenapp/hsdomainmodel/src/hswidgethost.cpp	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/hsdomainmodel/src/hswidgethost.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -15,190 +15,90 @@
 *
 */
 
-#include <QMetaObject>
+#include <QApplication>
+#include <QStateMachine>
+#include <QState>
+#include <QFinalState>
 #include <QGraphicsLinearLayout>
 #include <QParallelAnimationGroup>
 #include <QPropertyAnimation>
 #include <QGraphicsDropShadowEffect>
 #include <QGraphicsSceneResizeEvent>
+#include <QGesture>
+#include <QGraphicsScene>
 
 #include <qservicemanager.h>
 #include <qservicefilter.h>
 #include <qserviceinterfacedescriptor.h>
 
-#include <HbInstance>
 #include <HbInstantFeedback>
 
-#include "hswidgethost.h"
 #include "hsdatabase.h"
 #include "hsdomainmodeldatastructures.h"
+#include "hsscene.h"
 #include "hspage.h"
-#include "hsapp_defs.h"
-#include "hsscene.h"
+#include "hswidgethost.h"
 #include "hswidgetcomponentregistry.h"
 #include "hswidgetcomponent.h"
+#include "hsconfiguration.h"
+
+// Helper macros for connecting state entry and exit actions.
+#define ENTRY_ACTION(state, action) \
+    connect(state, SIGNAL(entered()), SLOT(action()));
+#define EXIT_ACTION(state, action) \
+    connect(state, SIGNAL(exited()), SLOT(action()));
 
 QTM_USE_NAMESPACE
 
-/*!
-    \class HsWidgetHost
-    \ingroup group_hsutils
-    \brief Homescreen widget runner.
-    Is responsible of running a homescreen widget. Each
-    homescreen widget has its own host.
-*/
-
-HsWidgetHost* HsWidgetHost::createInstance(HsWidgetData &widgetData,
-                                           const QVariantHash &preferences)
+HsWidgetHost::HsWidgetHost(int databaseId, QGraphicsItem *parent)
+  : HbWidget(parent),
+    mDatabaseId(databaseId),
+    mStateMachine(0),
+    mWidget(0),
+    mPage(0),
+    mComponent(0),
+    mIsFinishing(false)
 {
-    HsDatabase* db = HsDatabase::instance();
-    Q_ASSERT(db);
-
-    if (db->insertWidget(widgetData)) {
-        db->setWidgetPreferences(widgetData.id, preferences);
-        return new HsWidgetHost(widgetData.id);
-    }
+    setFlag(QGraphicsItem::ItemClipsChildrenToShape);
+    setFlag(QGraphicsItem::ItemHasNoContents);
 
-    return 0;
-}
-/*!
-    Construct a widget host for the given \a databaseId.
-    \a parent becomes the parent item for the host.
-*/
-HsWidgetHost::HsWidgetHost(int databaseId, QGraphicsItem *parent)
-    : HbWidget(parent),
-      mWidget(0),
-      mPage(0),
-      mState(Unloaded),
-      mDatabaseId(databaseId),
-      mTapAndHoldIcon(0)
-{
-    setFlags(QGraphicsItem::ItemClipsChildrenToShape);
-
-    HsDatabase *db = HsDatabase::instance();
+    grabGesture(Qt::TapGesture);
+    grabGesture(Qt::TapAndHoldGesture);
+    grabGesture(Qt::PanGesture);
+    grabGesture(Qt::PinchGesture);
+    grabGesture(Qt::SwipeGesture);
+    grabGesture(Qt::CustomGesture);
 
-    // Find the widget data.
-    HsWidgetData data;
-    data.id = mDatabaseId;
-    if (!db->widget(data)) {
-       return;
-    }
-
-    mUri = data.uri;
-
-    // bind host to component
-    HsWidgetComponent *component = HsWidgetComponentRegistry::instance()->component(mUri);
-    connect(component, SIGNAL(uninstalled()), SLOT(onFinished()));
-    connect(component, SIGNAL(aboutToUninstall()), SLOT(onAboutToUninstall()));
-    connect(component, SIGNAL(updated()), SLOT(onUpdated()));
-    connect(component, SIGNAL(unavailable()), SLOT(onUnavailable()));
-    connect(component, SIGNAL(available()), SLOT(onAvailable()));
-
-    /* TODO: Uncomment after the Qt bug has been fixed.
-    QGraphicsDropShadowEffect *effect =
-        new QGraphicsDropShadowEffect(this);
-    effect->setColor(QColor(0, 0, 0, 150));
-    effect->setBlurRadius(5);
-    effect->setOffset(3);
-    setGraphicsEffect(effect);
-    */
+    setupEffects();
+    setupStates();
 }
 
-/*!
-    Destructor.
-*/
 HsWidgetHost::~HsWidgetHost()
 {
 }
 
-/*!
-    Load hosted widget from plugin and validate it.
-    Returns true if widget construction is successfull.
-*/
-bool HsWidgetHost::load()
+HsWidgetHost *HsWidgetHost::createInstance(HsWidgetData &widgetData, 
+                                           const QVariantHash &preferences)
 {
-    if (mState != Unloaded) {
-        return false;
-    }
-    if (mWidget) {
-        return false;
-    }
-
-
-    // Create the hosted widget.
-    QServiceManager manager;
-    QServiceFilter filter("com.nokia.symbian.IHomeScreenWidget");
-    filter.setServiceName(mUri);
-    QList<QServiceInterfaceDescriptor> interfaces = manager.findInterfaces(filter);
-    if (interfaces.isEmpty()) {
-        return false;
-    }
-
-    QObject *widgetObject = manager.loadInterface(interfaces.first());
-    mWidget = qobject_cast<QGraphicsWidget *>(widgetObject);
-
-    if (!mWidget ||
-        !setMethod("onShow()", mOnShowMethod) ||
-        !setMethod("onHide()", mOnHideMethod)) {
-        mWidget = 0;
-        delete widgetObject;
-        return false;
-    }
+    HsDatabase *db = HsDatabase::instance();
 
-    setProperty("isOnline", mIsOnlineProperty);
-	setProperty("rootPath", mRootPathProperty);
-
-    setMethod("onInitialize()", mOnInitializeMethod);
-    setMethod("onUninitialize()", mOnUninitializeMethod);
-
-    if (hasSignal("setPreferences(const QStringList&)")) {
-        connect(mWidget, SIGNAL(setPreferences(QStringList)),
-                SLOT(onSetPreferences(QStringList)));
-    }
-    if (hasSignal("finished()")) {
-        connect(mWidget, SIGNAL(finished()),
-                SLOT(onFinished()));
+    if (db->insertWidget(widgetData)) {
+        db->setWidgetPreferences(widgetData.id, preferences);
+        return new HsWidgetHost(widgetData.id);
+    } else {
+        return 0;
     }
-    if (hasSignal("error()")) {
-        connect(mWidget, SIGNAL(error()),
-                SLOT(onError()));
-    }
-
-    mWidget->installEventFilter(this);
-
-	loadWidgetPresentation();
-
-    HsScene *scene = HsScene::instance();
-    setMaximumSize(scene->maximumWidgetSizeInPixels());
-    setMinimumSize(scene->minimumWidgetSizeInPixels());
-
-    mWidget->setParentItem(this);
-
-    setNewSize(mWidget->size());
-    mState = Loaded;
-
-    return true;
 }
 
-void HsWidgetHost::unload()
+int HsWidgetHost::databaseId() const
 {
-    if (mState != Uninitialized) {
-        return;
-    }
-    if (mWidget) {
-        mWidget->setParentItem(0);
-    }
-    delete mWidget;
-    QCoreApplication::sendPostedEvents(0, QEvent::DeferredDelete);
-    mWidget = 0;
-    mState = Unloaded;
+    return mDatabaseId;
 }
 
 bool HsWidgetHost::setPage(HsPage *page)
 {
-    HsDatabase* db = HsDatabase::instance();
-    Q_ASSERT(db);
-
+    HsDatabase *db = HsDatabase::instance();
+    
     HsWidgetData data;
     data.id = mDatabaseId;
     if (db->widget(data)) {
@@ -217,249 +117,129 @@
     mPage = page;
     return true;
 }
-
+ 
 HsPage *HsWidgetHost::page() const
 {
     return mPage;
 }
 
-/*!
-    Returns true if this host has a valid widget set.
-    Otherwise, return false.
-*/
-bool HsWidgetHost::isValid() const
-{
-    return mWidget;
-}
-
-/*!
-    Returns database id
-*/
-int HsWidgetHost::databaseId() const
-{
-    return mDatabaseId;
-}
-
-/*!
-    Returns true if this the database operation succeeds,
-    false otherwise
-*/
-bool HsWidgetHost::deleteFromDatabase()
+bool HsWidgetHost::isPannable(QGraphicsSceneMouseEvent *event)
 {
-    HsDatabase *db = HsDatabase::instance();
-
-    if (!db->deleteWidget(mDatabaseId)) {
-        return false;
-    }
-
-    mDatabaseId = -1;
-    return true;
-}
-
-/*!
-    Set widget presentation by using current values.
-    Return true if successfull.
-*/
-bool HsWidgetHost::setWidgetPresentation()
-{
-    HsDatabase *db = HsDatabase::instance();
-    Q_ASSERT(db);
-
-    QString key = HsScene::orientation() == Qt::Vertical ?
-        "portrait" : "landscape";
-
-    HsWidgetPresentationData data;
-    data.key      = key;
-    data.setPos(pos());
-    data.zValue   = zValue();
-    data.widgetId = databaseId();
-
-    return db->setWidgetPresentation(data);
+    bool result = false;
+    mIsPannableMethod.invoke(mWidget, Q_RETURN_ARG(bool, result), Q_ARG(QGraphicsSceneMouseEvent *,event));
+    return result;
 }
 
-/*!
-    Set widget presentation data. Return true if successfull.
-*/
-bool HsWidgetHost::setWidgetPresentationData(HsWidgetPresentationData &presentationData)
+bool HsWidgetHost::loadPresentation()
 {
-    HsDatabase *db = HsDatabase::instance();
-    Q_ASSERT(db);
-
-    presentationData.widgetId = mDatabaseId;
-    return db->setWidgetPresentation(presentationData);
-}
-
-/*!
-    Get widget presentation data matching given \a key.
-    Data is returned on given empty \a presentationData. Return true if successfull
-*/
-bool HsWidgetHost::widgetPresentationData(const QString &key,
-                                          HsWidgetPresentationData &presentationData)
-{
-    HsDatabase *db = HsDatabase::instance();
-    Q_ASSERT(db);
-
-    presentationData.key = key;
-    presentationData.widgetId = mDatabaseId;
-    return db->widgetPresentation(presentationData);
+    return loadPresentation(HsScene::orientation());
 }
 
-/*!
-    Return HsWidgetPresentationData for given \a orientation
-*/
-HsWidgetPresentationData HsWidgetHost::widgetPresentation(Qt::Orientation orientation)
+bool HsWidgetHost::loadPresentation(Qt::Orientation orientation)
 {
     HsDatabase *db = HsDatabase::instance();
-    Q_ASSERT(db);
-
-    QString key = orientation == Qt::Vertical ?
-        "portrait" : "landscape";
-
+        
     HsWidgetPresentationData data;
-    data.key = key;
-    data.widgetId = mDatabaseId;
-    if (db->widgetPresentation(data)) {
-        return data;
-    } else {
-        return HsWidgetPresentationData();
-    }
-}
-
-/*!
-    Load HsWidgetPresentationData for current orientation
-*/
-bool HsWidgetHost::loadWidgetPresentation()
-{
-    HsDatabase *db = HsDatabase::instance();
-
-    QString key = HsScene::orientation() == Qt::Vertical ?
-        "portrait" : "landscape";
-
-    HsWidgetPresentationData data;
-    data.key = key;
+    data.orientation = orientation;
     data.widgetId = mDatabaseId;
     if (!db->widgetPresentation(data)) {
         return false;
     }
-
     setPos(data.x, data.y);
     setZValue(data.zValue);
-
     return true;
 }
 
-/*!
-    Delete HsWidgetPresentationData for given \a orientation.
-    Return true if successfull.
-*/
-bool HsWidgetHost::deleteWidgetPresentation(Qt::Orientation orientation)
+bool HsWidgetHost::savePresentation()
 {
-    HsDatabase *db = HsDatabase::instance();
-    Q_ASSERT(db);
-
-    QString key = orientation == Qt::Vertical ?
-        "portrait" : "landscape";
-
-    return db->deleteWidgetPresentation(mDatabaseId, key);
+    return savePresentation(HsScene::orientation());
 }
 
-/*!
-    \fn void HsWidgetHost::widgetFinished()
-    This signal is emitten after the contained widget
-    reported is completion.
-*/
-
-/*!
-    \fn void HsWidgetHost::widgetError()
-    This signal is emitten after the contained widget
-    reported an error.
-*/
-
-/*!
-    \fn void HsWidgetHost::widgetResized()
-    This signal is emitten after the contained widget
-    sends a resize event.
-*/
+bool HsWidgetHost::savePresentation(Qt::Orientation orientation)
+{
+    HsDatabase *db = HsDatabase::instance();
+        
+    HsWidgetPresentationData data;
+    data.orientation = orientation;
+    data.setPos(pos());
+    data.zValue = zValue();
+    data.widgetId = mDatabaseId;
+    return db->setWidgetPresentation(data);
+}
 
-/*!
-    Calls the widget's onInitialize() slot if the
-    widget defines it.
-*/
-void HsWidgetHost::initializeWidget()
+bool HsWidgetHost::savePresentation(HsWidgetPresentationData &presentation)
 {
-    if (mState != Loaded) {
-        return;
-    }
-    HsWidgetComponent *component = HsWidgetComponentRegistry::instance()->component(mUri);
-    Q_ASSERT(component);
-    mRootPathProperty.write(mWidget, component->rootPath());
-    setPreferencesToWidget();
-    setOnline(HsScene::instance()->isOnline());
-    mOnInitializeMethod.invoke(mWidget);
+    HsDatabase *db = HsDatabase::instance();
+    
+    presentation.widgetId = mDatabaseId;
+    return db->setWidgetPresentation(presentation);
+}
 
-    mState = Initialized;
+bool HsWidgetHost::getPresentation(HsWidgetPresentationData &presentation)
+{
+    HsDatabase *db = HsDatabase::instance();
+        
+    presentation.widgetId = mDatabaseId;
+    return db->widgetPresentation(presentation);
 }
 
-/*!
-    Calls the widget's onShow() slot if the
-    widget defines it.
-*/
+bool HsWidgetHost::removePresentation(Qt::Orientation orientation)
+{
+    HsDatabase *db = HsDatabase::instance();
+    return db->deleteWidgetPresentation(mDatabaseId, orientation);
+}
+
+void HsWidgetHost::startWidget(bool show)
+{
+    if (!mStateMachine->isRunning()) {
+        mStateMachine->start();
+        // This is needed because QStateMachine::start() starts
+        // the state machine asynchronously via the eventloop. 
+        // Here we want the machine to start synchronously.
+        QApplication::processEvents(QEventLoop::ExcludeUserInputEvents);
+    }
+
+    if (show) {
+        emit event_startAndShow();
+    } else {
+        emit event_startAndHide();
+    }
+}
+ 
 void HsWidgetHost::showWidget()
 {
-    if (mState != Initialized &&
-        mState != Hidden ) {
-        return;
-    }
-
-    mOnShowMethod.invoke(mWidget);
-
-    mState = Visible;
+    emit event_show();
 }
-
-/*!
-    Calls the widget's onHide() slot if the
-    widget defines it.
-*/
+    
 void HsWidgetHost::hideWidget()
 {
-    if (mState != Initialized &&
-        mState != Visible) {
-        return;
-    }
-
-    mOnHideMethod.invoke(mWidget);
-
-    mState = Hidden;
+    emit event_hide();
 }
 
-/*!
-    Calls the widget's onUninitialize() slot if the
-    widget defines it.
-*/
-void HsWidgetHost::uninitializeWidget()
-{
-    if (mState != Visible &&
-        mState != Hidden) {
-        return;
-    }
-
-    mOnUninitializeMethod.invoke(mWidget);
-
-    mState = Uninitialized;
-}
-
-/*!
-    Calls the widget's widgetOnlineState property if the
-    widget defines it.
-*/
 void HsWidgetHost::setOnline(bool online)
 {
     mIsOnlineProperty.write(mWidget, online);
 }
 
-/*!
-    Starts the widget drag animation.
-*/
+void HsWidgetHost::remove()
+{
+    if (mStateMachine->isRunning()) {
+        emit event_remove();
+    } else {
+        action_remove();
+        deleteLater();
+    }
+}
+ 
+void HsWidgetHost::close()
+{
+    if (mStateMachine->isRunning()) {
+        emit event_close();
+    } else {
+        deleteLater();
+    }
+}
+
 void HsWidgetHost::startDragEffect()
 {
     /* TODO: Uncomment after the Qt bug has been fixed.
@@ -473,7 +253,7 @@
     QParallelAnimationGroup *animationGroup = new QParallelAnimationGroup();
 
     QPropertyAnimation *animation = new QPropertyAnimation(this, "scale");
-    animation->setDuration(200);
+    animation->setDuration(HsConfiguration::widgetDragEffectDuration());
     animation->setEndValue(1.1);
     animationGroup->addAnimation(animation);
 
@@ -487,9 +267,6 @@
     animationGroup->start(QAbstractAnimation::DeleteWhenStopped);
 }
 
-/*!
-    Starts the widget drop animation.
-*/
 void HsWidgetHost::startDropEffect()
 {
     /* TODO: Uncomment after the Qt bug has been fixed.
@@ -501,7 +278,7 @@
     QParallelAnimationGroup *animationGroup = new QParallelAnimationGroup;
 
     QPropertyAnimation *animation = new QPropertyAnimation(this, "scale");
-    animation->setDuration(200);
+    animation->setDuration(HsConfiguration::widgetDropEffectDuration());
     animation->setEndValue(1);
     animationGroup->addAnimation(animation);
 
@@ -515,47 +292,121 @@
     animationGroup->start(QAbstractAnimation::DeleteWhenStopped);
 }
 
-/*!
-    Starts the tap-and-hold animation.
-*/
-void HsWidgetHost::startTapAndHoldAnimation()
+bool HsWidgetHost::eventFilter(QObject *watched, QEvent *event)
 {
-    mTapAndHoldIcon = new HbIconItem("tapandhold_animation");
-    mTapAndHoldIcon->setZValue(1e6);
-    mTapAndHoldIcon->setParentItem(this);
+    if (event->type() == QEvent::GraphicsSceneResize ) {
+        QGraphicsSceneResizeEvent *resizeEvent = 
+            static_cast<QGraphicsSceneResizeEvent *>(event);
+        setNewSize(resizeEvent->newSize());
+        emit resized();
+    }
+    return HbWidget::eventFilter(watched, event);
 }
 
-/*!
-    Stops the tap-and-hold animation.
-*/
-void HsWidgetHost::stopTapAndHoldAnimation()
+void HsWidgetHost::setupEffects()
 {
-    delete mTapAndHoldIcon;
-    mTapAndHoldIcon = 0;
+    /* TODO: Uncomment after the Qt bug has been fixed.
+    QGraphicsDropShadowEffect *effect =
+        new QGraphicsDropShadowEffect(this);
+    effect->setColor(QColor(0, 0, 0, 150));
+    effect->setBlurRadius(5);
+    effect->setOffset(3);
+    setGraphicsEffect(effect);
+    */
 }
 
-/*!
-    Filters resize events from widgets and resizes inside max/min size boundaries if needed.
-*/
-bool HsWidgetHost::eventFilter(QObject *obj, QEvent *event)
+void HsWidgetHost::setupStates()
 {
-    if (event->type() == QEvent::GraphicsSceneResize ) {
-        QGraphicsSceneResizeEvent *resizeEvent = static_cast<QGraphicsSceneResizeEvent*>(event);
-        setNewSize(resizeEvent->newSize());
-        emit widgetResized(this);
-        return true;
-    } else {
-         // standard event processing
-         return HbWidget::eventFilter(obj, event);
-    }
+    // State machine
+
+    mStateMachine = new QStateMachine(this);
+    mStateMachine->setAnimated(false);
+    
+    // States
+
+    QState *state_component = new QState;
+    QState *state_unloaded = new QState(state_component);
+    QState *state_running = new QState(state_component);
+    QState *state_show = new QState(state_running);
+    QState *state_hide = new QState(state_running);
+    QState *state_finished = new QState;
+    QState *state_faulted = new QState;
+    QState *state_remove = new QState;
+    QFinalState *state_final = new QFinalState;
+
+    mStateMachine->addState(state_component);
+    mStateMachine->addState(state_finished);
+    mStateMachine->addState(state_faulted);
+    mStateMachine->addState(state_remove);
+    mStateMachine->addState(state_final);
+
+    mStateMachine->setInitialState(state_component);
+    state_component->setInitialState(state_unloaded);
+    state_running->setInitialState(state_hide);
+
+    // Transitions
+
+    state_component->addTransition(
+        this, SIGNAL(event_close()), state_final);
+    state_component->addTransition(
+        this, SIGNAL(event_remove()), state_remove);
+    state_component->addTransition(
+        this, SIGNAL(event_finished()), state_finished);
+    state_component->addTransition(
+        this, SIGNAL(event_faulted()), state_faulted);
+
+    state_unloaded->addTransition(
+        this, SIGNAL(event_startAndShow()), state_show);
+    state_unloaded->addTransition(
+        this, SIGNAL(event_startAndHide()), state_hide);
+
+    state_running->addTransition(
+        this, SIGNAL(event_unload()), state_unloaded);
+    
+    state_show->addTransition(
+        this, SIGNAL(event_hide()), state_hide);
+
+    state_hide->addTransition(
+        this, SIGNAL(event_show()), state_show);
+
+    state_finished->addTransition(
+        this, SIGNAL(event_remove()), state_remove);
+    state_finished->addTransition(
+        this, SIGNAL(event_close()), state_final);
+
+    state_faulted->addTransition(
+        this, SIGNAL(event_remove()), state_remove);
+    state_faulted->addTransition(
+        this, SIGNAL(event_close()), state_final);
+
+    state_remove->addTransition(state_final);
+
+    // Actions
+
+    ENTRY_ACTION(state_component, action_connectComponent)
+    EXIT_ACTION(state_component, action_disconnectComponent)
+
+    ENTRY_ACTION(state_running, action_load)
+    ENTRY_ACTION(state_running, action_initialize)
+    EXIT_ACTION(state_running, action_uninitialize)
+    EXIT_ACTION(state_running, action_unload)
+
+    ENTRY_ACTION(state_show, action_show)
+
+    ENTRY_ACTION(state_hide, action_hide)
+
+    ENTRY_ACTION(state_finished, action_finished)
+
+    ENTRY_ACTION(state_faulted, action_faulted)
+
+    ENTRY_ACTION(state_remove, action_remove)
+
+    // Delete on finish.
+
+    connect(mStateMachine, SIGNAL(finished()), SLOT(deleteLater()), 
+            Qt::QueuedConnection);
 }
 
-/*!
-    Checks if a property with the given \a name
-    in the contained widget. If the property exists the \a
-    metaProperty is made to reference to it. Returns true if
-    the property was found. Otherwise, returns false.
-*/
 bool HsWidgetHost::setProperty(const char *name, QMetaProperty &property)
 {
     const QMetaObject *object = mWidget->metaObject();
@@ -564,12 +415,6 @@
     return index >= 0;
 }
 
-/*!
-    Checks if a slot with the given \a signature exists
-    in the contained widget. If the slot exists the \a
-    method is made to reference to it. Returns true if
-    the slot was found. Otherwise, returns false.
-*/
 bool HsWidgetHost::setMethod(const char *signature, QMetaMethod &method)
 {
     const QMetaObject *object = mWidget->metaObject();
@@ -579,11 +424,6 @@
     return index >= 0;
 }
 
-/*!
-    Returns true if a signal with the given \a signature
-    exists in the contained widget. Otherwise, returns
-    false.
-*/
 bool HsWidgetHost::hasSignal(const char *signature)
 {
     const QMetaObject *object = mWidget->metaObject();
@@ -591,22 +431,24 @@
         QMetaObject::normalizedSignature(signature));
     return index >= 0;
 }
-/*!
-    Returns true if fetching widget preferences from db and setting those
-    to widget is successfull
-*/
+
+void HsWidgetHost::setNewSize(const QSizeF &size)
+{
+    resize(size);
+    setPreferredSize(size);
+}
+
 bool HsWidgetHost::setPreferencesToWidget()
 {
     HsDatabase *db = HsDatabase::instance();
-    Q_ASSERT(db);
-
+    
     QVariantHash preferences;
     if (!db->widgetPreferences(mDatabaseId, preferences)) {
         return false;
     }
 
     QStringList names = preferences.keys();
-    foreach(QString name, names) {
+    foreach (QString name, names) {
         mWidget->setProperty(name.toLatin1(),
                              preferences.value(name));
     }
@@ -614,23 +456,159 @@
     return true;
 }
 
-/*!
-    Resizes and sets preferred size for widget layouts
-*/
-void HsWidgetHost::setNewSize(const QSizeF &newSize)
+void HsWidgetHost::action_connectComponent()
 {
-    resize(newSize);
-    setPreferredSize(newSize);
+    HsDatabase *db = HsDatabase::instance();
+    
+    HsWidgetData data;
+    data.id = mDatabaseId;
+    if (!db->widget(data)) {
+        emit event_faulted();
+        return;
+    }
+    
+    mComponent = HsWidgetComponentRegistry::instance()->component(data.uri);
+    
+    connect(mComponent, SIGNAL(aboutToUninstall()), SIGNAL(event_unload()));
+    connect(mComponent, SIGNAL(uninstalled()), SIGNAL(event_finished()));
+    connect(mComponent, SIGNAL(unavailable()), SIGNAL(event_unload()));
+    connect(mComponent, SIGNAL(unavailable()), SIGNAL(unavailable()));
+    connect(mComponent, SIGNAL(available()), SIGNAL(available()));
+    connect(mComponent, SIGNAL(updated()), SIGNAL(available()));
+}
+
+void HsWidgetHost::action_disconnectComponent()
+{
+    mComponent->disconnect(this);
 }
 
-/*!
-    This slot is connected to the contained widget's
-    setPreferences() signal, if it was defined for
-    the widget. The widget emits the signal for persisting
-    its preferences named with \a names. The given
-    preferences are read, validated, and written to
-    the database.
-*/
+void HsWidgetHost::action_load()
+{
+    QServiceManager manager;
+    QServiceFilter filter("com.nokia.symbian.IHomeScreenWidget");
+    filter.setServiceName(mComponent->uri());
+    QList<QServiceInterfaceDescriptor> interfaces = manager.findInterfaces(filter);
+    if (interfaces.isEmpty()) {
+        emit event_faulted();
+        return;
+    }
+
+    QObject *widgetObject = manager.loadInterface(interfaces.first());
+    mWidget = qobject_cast<QGraphicsWidget *>(widgetObject);
+
+    if (!mWidget ||
+        !setMethod("onShow()", mOnShowMethod) ||
+        !setMethod("onHide()", mOnHideMethod)) {
+        mWidget = 0;
+        delete widgetObject;
+        emit event_faulted();
+        return;
+    }
+
+    setMethod("onInitialize()", mOnInitializeMethod);
+    setMethod("onUninitialize()", mOnUninitializeMethod);
+    setMethod("isPannable(QGraphicsSceneMouseEvent*)", mIsPannableMethod);
+
+    setProperty("isOnline", mIsOnlineProperty);
+	setProperty("rootPath", mRootPathProperty);
+    
+    if (hasSignal("setPreferences(const QStringList&)")) {
+        connect(mWidget, SIGNAL(setPreferences(QStringList)),
+                SLOT(onSetPreferences(QStringList)));
+    }
+    if (hasSignal("finished()")) {
+        connect(mWidget, SIGNAL(finished()),
+                SLOT(onFinished()));
+    }
+    if (hasSignal("error()")) {
+        connect(mWidget, SIGNAL(error()),
+                SLOT(onError()));
+    }
+
+    mWidget->installEventFilter(this);
+
+    HsScene *scene = HsScene::instance();
+    setMaximumSize(scene->maximumWidgetSizeInPixels());
+    setMinimumSize(scene->minimumWidgetSizeInPixels());
+
+    loadPresentation();
+
+    mWidget->setParentItem(this);
+
+    setNewSize(mWidget->size());
+}
+
+void HsWidgetHost::action_unload()
+{
+    delete mWidget;
+    mWidget = 0;
+
+    mOnInitializeMethod = QMetaMethod();
+    mOnShowMethod = QMetaMethod();
+    mOnHideMethod = QMetaMethod();
+    mOnUninitializeMethod = QMetaMethod();
+    mIsPannableMethod = QMetaMethod();
+    mIsOnlineProperty = QMetaProperty();
+	mRootPathProperty = QMetaProperty();    
+}
+
+void HsWidgetHost::action_initialize()
+{    
+    mRootPathProperty.write(mWidget, mComponent->rootPath());
+    setPreferencesToWidget();
+    setOnline(HsScene::instance()->isOnline());
+    mOnInitializeMethod.invoke(mWidget);
+}
+
+void HsWidgetHost::action_uninitialize()
+{
+    mOnUninitializeMethod.invoke(mWidget);
+}
+
+void HsWidgetHost::action_show()
+{
+    if (!mIsFinishing) {
+        mOnShowMethod.invoke(mWidget);
+    }
+}
+
+void HsWidgetHost::action_hide()
+{
+    if (!mIsFinishing) {
+        mOnHideMethod.invoke(mWidget);
+    }
+}
+
+void HsWidgetHost::action_finished()
+{
+    emit finished();
+}
+
+void HsWidgetHost::action_faulted()
+{
+    emit faulted();
+}
+
+void HsWidgetHost::action_remove()
+{
+    HsDatabase *db = HsDatabase::instance();
+    
+    db->deleteWidget(mDatabaseId);
+    mDatabaseId = -1;
+}
+
+void HsWidgetHost::onFinished()
+{
+    mIsFinishing = true;
+    emit event_finished();
+}
+ 
+void HsWidgetHost::onError()
+{
+    mIsFinishing = true;
+    emit event_faulted();
+}
+
 void HsWidgetHost::onSetPreferences(const QStringList &names)
 {
     if (names.isEmpty()) {
@@ -644,84 +622,8 @@
         preferences.insert(name, value);
     }
 
-    HsDatabase *db = HsDatabase::instance();
-    Q_ASSERT(db);
-
+    HsDatabase *db = HsDatabase::instance();    
     if (!db->setWidgetPreferences(mDatabaseId, preferences)) {
         onError();
     }
 }
-
-/*!
-    This slot reacts to the widgets finished() signal, if
-    it was defined for the widget. The widget emits the signal
-    when it has finished its execution and is ready for
-    removal from the homescreen.
-*/
-void HsWidgetHost::onFinished()
-{
-    emit widgetFinished(this);
-}
-
-/*!
-    This slot reacts to the widgets error() signal, if it was
-    defined for the widget. The widget emits the signal in
-    failure cases.
-*/
-void HsWidgetHost::onError()
-{
-    mState = Faulted;
-    emit widgetError(this);
-}
-/*!
-    This slot is called when component is about to uninstall or
-    update. Widget need to release all handles to resources installing
-    to succeed.
-*/
-void HsWidgetHost::onAboutToUninstall()
-{
-    uninitializeWidget();
-    unload();
-}
-
-void HsWidgetHost::onUpdated()
-{
-    if(mState != Unloaded) {
-        return;
-    }
-    load();
-    initializeWidget();
-    if (HsScene::instance()->activePage() == mPage) {
-       showWidget();
-    } else {
-        hideWidget();
-    }
-
-}
-void HsWidgetHost::onUnavailable()
-{
-    if (mState != Visible && mState != Hidden) {
-        return;
-    }
-    uninitializeWidget();
-    unload();
-}
-
-void HsWidgetHost::onAvailable()
-{
-    if (mState != Unloaded) {
-        return;
-    }
-    load();
-    initializeWidget();
-    if (HsScene::instance()->activePage() == mPage) {
-        showWidget();
-    } else {
-        hideWidget();
-    }
-}
-
-
-
-
-
--- a/homescreenapp/hsutils/inc/hsmenuevent.h	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/hsutils/inc/hsmenuevent.h	Wed Jun 23 17:05:06 2010 +0100
@@ -40,6 +40,7 @@
         CollectionDeleted,
         AddAppsToCollection,
         RemoveAppFromCollection,
+        UninstallApplication,
         OpenApplicationLibrary,
         OpenInstalledView,
         OpenHomeScreen,
@@ -47,6 +48,7 @@
         CreateCollection,
         PreviewHSWidget,
         ShowAppSettings,
+        ShowAppDetails,
         Unknown
     };
 
--- a/homescreenapp/hsutils/inc/hsmenueventfactory.h	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/hsutils/inc/hsmenueventfactory.h	Wed Jun 23 17:05:06 2010 +0100
@@ -70,6 +70,8 @@
 
     static QEvent *createRemoveAppFromCollectionEvent(int aItemId, int aCollectionId);
 
+    static QEvent *createUninstallApplicationEvent(int aItemId);
+
     static QEvent *createArrangeCollectionEvent(int aTopItemId);
 
     static QEvent *createPreviewHSWidgetEvent(
@@ -79,7 +81,9 @@
         const QString &library = QString()
     );
     
-    static QEvent *createAppSettingsViewEvent(int entryId);    
+    static QEvent *createAppSettingsViewEvent(int entryId);
+    
+    static QEvent *createAppDetailsViewEvent(int entryId);
 
     static QEvent *createUnknownEvent();
 
--- a/homescreenapp/hsutils/inc/hspageindicator.h	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/hsutils/inc/hspageindicator.h	Wed Jun 23 17:05:06 2010 +0100
@@ -32,7 +32,7 @@
     Q_OBJECT
 
 public:
-    HsPageIndicator(QGraphicsItem *parent = 0);
+    HsPageIndicator(qreal spacing, QGraphicsItem *parent = 0);
     ~HsPageIndicator();
 
     void initialize(int itemCount, int activeItemIndex);
@@ -47,6 +47,8 @@
 
     bool isAnimationRunning() const;
 
+    void setSpacing(qreal spacing);
+
 private:
     Q_DISABLE_COPY(HsPageIndicator)
     void layoutItems();    
@@ -54,6 +56,7 @@
 private:
     QList<HsPageIndicatorItem *> mItems;    
     int mActiveItemIndex;
+    qreal mSpacing;
 
     HOMESCREEN_TEST_FRIEND_CLASS(t_hsUtils)
 };
--- a/homescreenapp/hsutils/inc/hswallpaperimagereader.h	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/hsutils/inc/hswallpaperimagereader.h	Wed Jun 23 17:05:06 2010 +0100
@@ -18,12 +18,15 @@
 #ifndef HSWALLPAPERIMAGEREADER_H
 #define HSWALLPAPERIMAGEREADER_H
 
-#include <QObject>
+#include <QThread>
 #include <QImage>
 
 #include "hsutils_global.h"
 
-class HSUTILS_EXPORT HsWallpaperImageReader : public QObject
+#include "hstest_global.h"
+HOMESCREEN_TEST_CLASS(t_hsUtils)
+
+class HSUTILS_EXPORT HsWallpaperImageReader : public QThread
 {
     Q_OBJECT
 
@@ -32,31 +35,33 @@
     ~HsWallpaperImageReader();
 
     void setSourcePath(const QString &sourcePath);
-    QString getSourcePath() const;
+    QString sourcePath() const;
     void setSourceRect(const QRect &sourceRect);
-    QRect getSourceRect() const;
+    QRect sourceRect() const;
     void setTargetRect(const QRect &targetRect);
-    QRect getTargetRect() const;
+    QRect targetRect() const;
     void setCenterTarget(bool center);
-    bool getCenterTarget();
-    QImage getProcessedImage() const;
+    bool centerTarget();
+    QImage processedImage() const;
+    
+signals:
+    void processingFinished();
+
+protected:
+    void run();
 
 private:
     Q_DISABLE_COPY(HsWallpaperImageReader)
 
-signals:
-    void processingFinished();
-
-public slots:
-    void processImage();
-
 private:
     QString mSourcePath;
+    QRect mSourceRect;
     QRect mTargetRect;
-    QRect mSourceRect;
     bool mCenterTarget;
+    QString mKey;
+    QImage mProcessedImage;
 
-    QImage mProcessedImage;
+    HOMESCREEN_TEST_FRIEND_CLASS(t_hsUtils)
 };
 
 #endif // HSWALLPAPERIMAGEREADER_H
--- a/homescreenapp/hsutils/src/hsimagefetcherclient.cpp	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/hsutils/src/hsimagefetcherclient.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -76,6 +76,10 @@
 
     mReq = mAppMgr.create(gFetcherInterface, gFetcherOperation, false);
     if (mReq) {
+        QList<QVariant> args;
+        args << QVariantMap();
+        args << QVariant();
+        mReq->setArguments(args);
         // Connect signals once
         connect(mReq, SIGNAL(requestOk(const QVariant&)), this, SLOT(handleOk(const QVariant&)));
         connect(mReq, SIGNAL(requestError(int,const QString&)), this, SLOT(handleError(int,const QString&)));
--- a/homescreenapp/hsutils/src/hsmenueventfactory.cpp	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/hsutils/src/hsmenueventfactory.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -207,6 +207,20 @@
 }
 
 /*!
+    Creates an HsMenuEvent::UninstallApplication event.
+
+    \param aItemId Item id of the application to be removed from a collection.
+    \param aCollectionId Item id of the collection the application is to be removed from.
+    \return UninstallApplication event.
+ */
+QEvent *HsMenuEventFactory::createUninstallApplicationEvent(int aItemId)
+{
+    QVariantMap params;
+    params.insert(itemIdKey(), aItemId);
+    return new HsMenuEvent(HsMenuEvent::UninstallApplication, params);
+}
+
+/*!
     Creates an HsMenuEvent::ArrangeCollection event.
 
     \param aTopItemId Item id to be scrolled.
@@ -265,6 +279,19 @@
 }
 
 /*!
+    Creates an HsMenuEvent::ShowAppDetails event.
+    \param entryId Id of an item.
+    \return Event for view the Application Settings.
+*/
+QEvent *HsMenuEventFactory::createAppDetailsViewEvent(int entryId)
+{
+    QVariantMap params;
+    params.insert(itemIdKey(), entryId);
+
+    return new HsMenuEvent(HsMenuEvent::ShowAppDetails, params);
+}
+
+/*!
     Creates an HsMenuEvent::Unknown event.
 
     \return Unknown event.
--- a/homescreenapp/hsutils/src/hspageindicator.cpp	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/hsutils/src/hspageindicator.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -23,9 +23,10 @@
 /*!
 
 */
-HsPageIndicator::HsPageIndicator(QGraphicsItem *parent)
+HsPageIndicator::HsPageIndicator(qreal spacing, QGraphicsItem *parent)
   : HbWidget(parent),
-    mActiveItemIndex(-1)
+    mActiveItemIndex(-1),
+    mSpacing(spacing)
 {
 }
 
@@ -46,18 +47,18 @@
     mItems.clear();
     mActiveItemIndex = -1;
 
-    if (itemCount < 1 || activeItemIndex < 0 || 
+    if (itemCount < 1 || activeItemIndex < 0 ||
         itemCount <= activeItemIndex) {
         return;
     }
 
     for (int i = 0; i < itemCount; ++i) {
         mItems << new HsPageIndicatorItem(i == activeItemIndex);
-    }    
+    }
     mActiveItemIndex = activeItemIndex;
     layoutItems();
 }
- 
+
 /*!
 
 */
@@ -80,7 +81,7 @@
         mItems[i]->setActive(i == activeItemIndex);
     }
 }
- 
+
 /*!
 
 */
@@ -107,7 +108,7 @@
 
 */
 void HsPageIndicator::removeItem(int activeItemIndex)
-{   
+{
     if (activeItemIndex < 0 || itemCount() - 1 <= activeItemIndex) {
         return;
     }
@@ -133,12 +134,23 @@
 {
     QGraphicsLinearLayout *layout = new QGraphicsLinearLayout;
     layout->setContentsMargins(0, 0, 0, 0);
-    layout->setSpacing(8);
+    layout->setSpacing(mSpacing);
     layout->addStretch();
     foreach (HsPageIndicatorItem *item, mItems) {
         item->setPreferredSize(preferredHeight(), preferredHeight());
         layout->addItem(item);
-    }    
+    }
     layout->addStretch();
     setLayout(layout);
 }
+
+/*!
+
+*/
+void HsPageIndicator::setSpacing(qreal spacing)
+{
+    QGraphicsLinearLayout *linearLayout = static_cast<QGraphicsLinearLayout*>(layout());
+    if (linearLayout) {
+        linearLayout->setSpacing(spacing);
+    }
+}
--- a/homescreenapp/hsutils/src/hswallpaperimagereader.cpp	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/hsutils/src/hswallpaperimagereader.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -24,7 +24,7 @@
     Constructor.         
 */
 HsWallpaperImageReader::HsWallpaperImageReader(QObject *parent):
-    QObject(parent),
+    QThread(parent),
     mCenterTarget(false)
 {
 
@@ -49,7 +49,7 @@
 /*!
     Returns image source path
 */
-QString HsWallpaperImageReader::getSourcePath() const
+QString HsWallpaperImageReader::sourcePath() const
 {
     return mSourcePath;
 }
@@ -65,7 +65,7 @@
 /*!
     Returns source rect
 */
-QRect HsWallpaperImageReader::getSourceRect() const
+QRect HsWallpaperImageReader::sourceRect() const
 {
     return mSourceRect;
 }
@@ -81,7 +81,7 @@
 /*!
     Returns target rect
 */
-QRect HsWallpaperImageReader::getTargetRect() const
+QRect HsWallpaperImageReader::targetRect() const
 {
     return mTargetRect;
 }
@@ -97,7 +97,7 @@
 /*!
     Returns target centering
 */
-bool HsWallpaperImageReader::getCenterTarget()
+bool HsWallpaperImageReader::centerTarget()
 {
     return mCenterTarget;
 }
@@ -105,7 +105,7 @@
 /*!
     Returns processed image
 */
-QImage HsWallpaperImageReader::getProcessedImage() const
+QImage HsWallpaperImageReader::processedImage() const
 {
     return mProcessedImage;
 }
@@ -117,10 +117,10 @@
     Pass empty set sourceRect to empty to use full size source image as starting point. 
     Returns processed image or null image if operation fails.
 */
-void HsWallpaperImageReader::processImage() 
+void HsWallpaperImageReader::run() 
 {
     QImageReader imageReader(mSourcePath);
-    
+
     QRect tempTargetRect = mTargetRect;
     QRect tempSourceRect = mSourceRect;
     
@@ -130,7 +130,7 @@
             // If sourceRect not defined, uses full size image as source.
             tempSourceRect.setRect(0, 0, sourceSize.width(), sourceSize.height());
         }
-        sourceSize.scale(tempTargetRect.width(), tempTargetRect.height(), 
+        sourceSize.scale(tempTargetRect.width(), tempTargetRect.height(),
                          Qt::KeepAspectRatioByExpanding);
         imageReader.setScaledSize(sourceSize);
 
@@ -142,5 +142,4 @@
     } else {
         mProcessedImage = QImage();
     }
-    emit processingFinished();
 }
--- a/homescreenapp/hswidgetuninstaller/inc/hswidgetcomponentparser.h	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/hswidgetuninstaller/inc/hswidgetcomponentparser.h	Wed Jun 23 17:05:06 2010 +0100
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* 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"
@@ -11,9 +11,10 @@
 *
 * Contributors:
 *
-* Description: 
+* Description:
 *
 */
+
 #ifndef HSWIDGETCOMPONENTPARSER_H
 #define HSWIDGETCOMPONENTPARSER_H
 
--- a/homescreenapp/inc/hsapp_defs.h	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/inc/hsapp_defs.h	Wed Jun 23 17:05:06 2010 +0100
@@ -45,6 +45,7 @@
 inline const QString packageTypeName();
 inline const QString appSettingsPlugin();
 inline const QString groupNameAttributeName();
+inline const QString componentIdAttributeName();
 
 // Sort attribute
 enum HsSortAttribute {
@@ -68,7 +69,8 @@
     AppSettingContextAction,
     RenameContextAction, 
     DeleteContextAction, 
-    RemoveFromCollectionContextAction    
+    RemoveFromCollectionContextAction,
+    AppDetailsContextAction
 };
 
 
--- a/homescreenapp/inc/hsapp_defs.inl	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/inc/hsapp_defs.inl	Wed Jun 23 17:05:06 2010 +0100
@@ -212,7 +212,7 @@
 */
 inline const QString newIconId()
 {
-    static const QString name("qtg_large_super_new");
+    static const QString name("qtg_small_new_event");
     return name;
 }
 
@@ -271,5 +271,22 @@
     return key;
 }
 
+/*!
+    \return applibrary activate name to open downloaded
+*/
+inline const QString groupAppLibRecentView()
+{
+    static const QString key("AppLibRecentView");
+    return key;
+}
+
+/*!
+    \return application componentID atribute name
+*/
+inline const QString componentIdAttributeName()
+{
+    static const QString key("component_id");
+    return key;
+}
 
 #endif
--- a/homescreenapp/runtimeplugins/hsdefaultruntimeplugin/hsdefaultruntimeplugin.pri	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/runtimeplugins/hsdefaultruntimeplugin/hsdefaultruntimeplugin.pri	Wed Jun 23 17:05:06 2010 +0100
@@ -18,10 +18,3 @@
            ./inc/hsdefaultruntimeplugin.h
 SOURCES += ./src/hsdefaultruntime.cpp \
            ./src/hsdefaultruntimeplugin.cpp
-
-symbian: {
-HEADERS += ./inc/hsbackuprestoreobserver.h \
-           ./inc/hsbackuprestoreactivecallback.h
-SOURCES += ./src/hsbackuprestoreobserver.cpp \
-           ./src/hsbackuprestoreactivecallback.cpp
-}
--- a/homescreenapp/runtimeplugins/hsdefaultruntimeplugin/hsdefaultruntimeplugin.pro	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/runtimeplugins/hsdefaultruntimeplugin/hsdefaultruntimeplugin.pro	Wed Jun 23 17:05:06 2010 +0100
@@ -18,8 +18,6 @@
 CONFIG += plugin hb mobility
 MOBILITY = serviceframework publishsubscribe
 
-RESOURCES += hsdefaultruntimeplugin.qrc
-
 PLUGIN_SUBDIR = /private/20022F35/plugins/runtimeplugins
 
 include (../../common.pri)
@@ -37,7 +35,7 @@
 
 symbian: {
     TARGET.UID3 = 0x20022F3E
-    LIBS += -lxqkeycapture -labclient
+    LIBS += -lxqkeycapture
 }
 
 
--- a/homescreenapp/runtimeplugins/hsdefaultruntimeplugin/hsdefaultruntimeplugin.qrc	Tue May 18 12:12:12 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-<RCC>
-    <qresource>
-        <file>resource/tapandhold.axml</file>
-    </qresource>
-</RCC>
--- a/homescreenapp/runtimeplugins/hsdefaultruntimeplugin/inc/hsbackuprestoreactivecallback.h	Tue May 18 12:12:12 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,217 +0,0 @@
-/*
-* 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 the License "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:  Home screen active callback in HsBackupRestoreObserver.
-*
-*/
-
-
-#ifndef HSBACKUPRESTOREACTIVECALLBACK_H
-#define HSBACKUPRESTOREACTIVECALLBACK_H
-
-#include <e32base.h>    // CBase
-#include <connect/abclient.h>
-
-
-/**
- *  Home screen active callback in backup/restore.
- *
- *  @lib widgetbackuprestore.exe
- *  @since S60 ^4
- */
-NONSHARABLE_CLASS(CHsBRActiveCallback) : public CBase, 
-	                                     public conn::MActiveBackupDataClient
-    {
-public:
-
-    IMPORT_C static  CHsBRActiveCallback* NewL();
-
-    virtual ~CHsBRActiveCallback();
-    
-    void FinishBackupRestore();
-    
-    void StartRestore();
-
-// new functions
-
-// from base class MActiveBackupDataClient
-
-    /**
-     * This method informs the active backup data client that all 
-     * snapshots have been supplied. If the client has not
-     * received a snapshot then it should perform a base backup
-     */
-    virtual void AllSnapshotsSuppliedL();
-
-    /**
-     * This method receives all or part of a snapshot of data to allow 
-     * calculation of an incremental backup.  The snapshot is one that
-     * was previously supplied by the data owner.  The snapshot data 
-     * should be read from the location supplied. The snapshot data may
-     * be larger than the location supplied in which case the routine 
-     * will be called repeatedly until all data has been supplied.
-     *
-     * Snapshot data will also be supplied as part of a restore operation
-     *        
-     * @param aDrive the drive being backed up
-     * @param aBuffer a pointer to the base of the location from whence 
-     *        data can be copied.
-     * @param aLastSection ETrue if this is the last section of snapshot 
-     *        data, else EFalse.
-     */
-    virtual void ReceiveSnapshotDataL(
-        TDriveNumber aDrive, TDesC8& aBuffer, TBool aLastSection);
-
-    /**
-     * This method returns the expected size of backup data that will be
-     * supplied. If an incremental backup is underway then this method
-     * then this method will not be called until after 
-     * ReceiveSnapshotDataL(). The size data will be used for the purpose
-     * of tracking progess during a backup. If it is inaccurate then the
-     * user may see irregular progress but the actual backup data will 
-     * not be affected so it is acceptable to return an estimated value.
-     *
-     * @param aDrive the drive being backed up.
-     * @return the size of the data that will be returned
-     */
-    virtual TUint GetExpectedDataSize(TDriveNumber aDrive);
-
-    /**
-     * This method returns a snapshot of data to accompany a backup. The 
-     * snapshot is expected to contain details on files / data being 
-     * backed up. The format of the snapshot is only meaningful to the
-     * data owner. The snapshot will be supplied if the data owner is 
-     * asked for an incremental backup and for a restore operation. The 
-     * snapshot data should be copied to the location supplied.
-     *
-     * The snapshot data may be larger than the location supplied in 
-     * which case the routine will be called repeatedly until all data
-     * has been retrieved.
-     *
-     * @param aDrive the drive being backed up
-     * @param aBuffer a pointer to the base of the location where data 
-     *        can be copied.
-     * @param aFinished on return ETrue if all data has been returned 
-     *        for this drive, else EFalse.
-     */
-    virtual void GetSnapshotDataL( 
-        TDriveNumber aDrive, TPtr8& aBuffer, TBool& aFinished);
-
-    /**
-     * This method prepares the implementor to return backup data. It 
-     * will be followed by a sequence of calls to request the actual 
-     * data.
-     *        
-     * @param aDrive the drive being backed up.
-     */
-    virtual void InitialiseGetBackupDataL(TDriveNumber aDrive);
-
-    /**
-     * This method requests a section of backup data.  
-     * InitialiseGetBackupDataL() will have been called previously to
-     * specify the drive concerned.  The data returned may be base or
-     * incremental depending on the type of backup and the capability of
-     * the data owner.
-     *
-     * @param aBuffer a pointer to the base of the location where data 
-     *        can be copied.
-     * @param aFinished on return ETrue if all data has been returned 
-     *        for this drive, else EFalse.
-     */
-    virtual void GetBackupDataSectionL(TPtr8& aBuffer, TBool& aFinished);
-
-    /**
-     * This method prepares the implementor to receive base restore data
-     * for a drive. It will be followed by a sequence of calls to supply
-     * the actual data.
-     *
-     * @param aDrive the drive being restored.
-     */
-    virtual void InitialiseRestoreBaseDataL(TDriveNumber aDrive);
-
-    /**
-     * This method receives a section of base restore data.
-     * InitialiseRestoreBaseDataL() will have been called previously to 
-     * specify the drive concerned.
-     *
-     * @param aBuffer a pointer to the base of the location whence data
-     *        can be read.
-     * @param aFinished ETrue if all data has been returned for this 
-     *        drive, else EFalse.
-     */
-    virtual void RestoreBaseDataSectionL(TDesC8& aBuffer, TBool aFinished);
-
-    /**
-     * This method prepares the implementor to receive incremental 
-     * restore data for a drive. It will be followed by a sequence 
-     * of calls to supply the actual data.  If multiple increments
-     * are supplied then this methid will be called before each increment
-     *
-     * @param aDrive the drive being restored.
-     */
-    virtual void InitialiseRestoreIncrementDataL(TDriveNumber aDrive);
-
-    /**
-     * This method receives a section of increment restore data.
-     * InitialiseRestoreIncrementDataL() will have been called 
-     * previously to specify the drive concerned.
-     *
-     * @param aBuffer a pointer to the base of the location whence data 
-     *        can be read.
-     * @param aFinished ETrue if all data has been returned for this 
-     *        increment, else EFalse.
-     */
-    virtual void RestoreIncrementDataSectionL(TDesC8& aBuffer, TBool aFinished);
-
-    /**
-     * This method is called when all data to be restored has been 
-     * supplied.
-     *
-     * @param aDrive the drive being restored.
-     */
-    virtual void RestoreComplete(TDriveNumber aDrive);   
-
-    /**
-     * This method is called if copying of data is terminated prematurely 
-     * to allow the implementor to tidy up.  The same method applies to 
-     * all types of data and to backup and restore.
-     */
-    virtual void TerminateMultiStageOperation();
-
-    /**
-     * Gets a 32-bit checksum for its private data.
-     * This routine is for test purposes.  It must be implemented but an
-     * invariant checksum value can be provided.  Some tests may cause 
-     * checksum values to be compared.
-     *
-     * @param aDrive the drive containing data being checksummed
-     * @return the 32-bit checksum
-     */
-    virtual TUint GetDataChecksum(TDriveNumber aDrive);
-
-private:
-
-    CHsBRActiveCallback();
-
-    void ConstructL();
-    
-    void CloseDataBaseConnection();
-    
-    void OpenDataBaseConnection();
-
-private: // data
-
-    };
-
-#endif // HSBACKUPRESTOREACTIVECALLBACK_H
-
--- a/homescreenapp/runtimeplugins/hsdefaultruntimeplugin/inc/hsbackuprestoreobserver.h	Tue May 18 12:12:12 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,112 +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: 
-*
-*/
-#ifndef HSBACKUPRESTOREOBSERVER_H
-#define HSBACKUPRESTOREOBSERVER_H
-
-#include <e32base.h>
-#include <e32property.h>
-#include <connect/abclient.h>
-
-class CHsBRActiveCallback;
-
-NONSHARABLE_CLASS(CHsBackupRestoreObserver) : public CActive
-    {
-
-public:
-
-    /**
-     * Creates an instance of CCPServerBURListener implementation.
-     * @param aCallBack Pointer to observer interface.
-     */
-    static CHsBackupRestoreObserver* NewL();
-
-    /**
-     * Destructor.
-     */
-    virtual ~CHsBackupRestoreObserver();    
-
-private:
-    /**
-     * Constructor.
-     * @param aCallBack Pointer to observer interface.
-     */
-    CHsBackupRestoreObserver();
-    
-    /**
-     * Symbian 2nd phase constructor.
-     */
-    void ConstructL();
-
-    /**
-     * Handles changes in backup state.
-     */
-	void HandleBackupStateL( const TInt aValue );
-	
-	/**
-     * Subsribes notifications of backup/restore p&s key.
-     */
-    void SubscribePSKey();    
-
-private:
-    /**
-     * From CActive.
-     */
-    void DoCancel();
-
-    /**
-     * From CActive.
-     */
-    void RunL();
-
-    /**
-     * From CActive.
-     */
-    TInt RunError( TInt aError );
-
-private:
-    /**
-     * User side interface to Publish & Subscribe.
-     */
-    RProperty iProperty;
-
-    /**
-     * Callback interface for widget's active data owner.
-     * Own.
-     */
-    CHsBRActiveCallback* iCallBack;
-
-    /**
-     * Active backup client.
-     * Own.
-     */
-	conn::CActiveBackupClient* iActiveBackupClient;
-    
-    /**
-     * Last state of BUR: either backup or restore or normal or unset
-     */
-    TInt iLastType;
-
-    /**
-     * Interface for notifying changes in Backup and Restore.
-     * Not own.
-     */
-    //MBURListenerCallback* iCallback;
-
-    };
-
-#endif // HSBACKUPRESTOREOBSERVER_H
-// End of File
\ No newline at end of file
--- a/homescreenapp/runtimeplugins/hsdefaultruntimeplugin/inc/hsdefaultruntime.h	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/runtimeplugins/hsdefaultruntimeplugin/inc/hsdefaultruntime.h	Wed Jun 23 17:05:06 2010 +0100
@@ -34,9 +34,6 @@
 #endif
 
 class HsContentService;
-#ifdef Q_OS_SYMBIAN
-class CHsBackupRestoreObserver;
-#endif
 QTM_BEGIN_NAMESPACE
 class QValueSpacePublisher;
 QTM_END_NAMESPACE
@@ -62,8 +59,6 @@
 private:
     Q_DISABLE_COPY(HsDefaultRuntime)
 
-    void registerAnimations();
-
     void createStatePublisher();
     void createContentServiceParts();
     void createStates();
@@ -73,6 +68,8 @@
 private slots:
 	void onIdleStateEntered();
 	void onIdleStateExited();
+	void activityRequested(const QString &name);
+	
 
 private:
     HsContentService *mContentService;	
@@ -84,7 +81,6 @@
 	
 #ifdef Q_OS_SYMBIAN
     XqKeyCapture keyCapture;
-    CHsBackupRestoreObserver* mBRObserver;
 #endif
     
     TEST_FRIEND
--- a/homescreenapp/runtimeplugins/hsdefaultruntimeplugin/resource/tapandhold.axml	Tue May 18 12:12:12 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-<animations>
-    <icon name="tapandhold_animation" playmode="playonce">
-      <frame duration="200">qtg_anim_longtap_0</frame>
-      <frame duration="16">qtg_anim_longtap_1</frame>
-      <frame duration="16">qtg_anim_longtap_2</frame>
-      <frame duration="16">qtg_anim_longtap_3</frame>
-      <frame duration="16">qtg_anim_longtap_4</frame>
-      <frame duration="16">qtg_anim_longtap_5</frame>
-      <frame duration="16">qtg_anim_longtap_6</frame>
-      <frame duration="16">qtg_anim_longtap_7</frame>
-      <frame duration="16">qtg_anim_longtap_8</frame>
-      <frame duration="16">qtg_anim_longtap_9</frame>
-    </icon>
- </animations>
--- a/homescreenapp/runtimeplugins/hsdefaultruntimeplugin/src/hsbackuprestoreactivecallback.cpp	Tue May 18 12:12:12 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,253 +0,0 @@
-/*
-* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the License "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:  Widget's active callback in WidgetBackupRestore.
-*
-*/
-
-
-// INCLUDE FILES
-#include <bautils.h>
-
-#include "hsbackuprestoreactivecallback.h"
-#include "hsdatabase.h"
-
-//  CONSTANTS
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-CHsBRActiveCallback* CHsBRActiveCallback::NewL()
-{
-    CHsBRActiveCallback* self =
-        new( ELeave ) CHsBRActiveCallback();
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-
-    return self;
-}
-
-// ---------------------------------------------------------------------------
-// Destructor
-// ---------------------------------------------------------------------------
-//
-CHsBRActiveCallback::~CHsBRActiveCallback()
-{
-}
-
-// ---------------------------------------------------------------------------
-// Backup or restore has been finished.
-// ---------------------------------------------------------------------------
-//
-void CHsBRActiveCallback::FinishBackupRestore()
-{
-	// allow database usage
-	OpenDataBaseConnection();
-	// TODO: Load widgets
-}
-
-// ---------------------------------------------------------------------------
-// Backup or restore has been started.
-// ---------------------------------------------------------------------------
-//
-void CHsBRActiveCallback::StartRestore()
-{
-	// allow database usage
-	CloseDataBaseConnection();
-	// TODO: Load widgets
-}
-
-// ---------------------------------------------------------------------------
-// Inform that all data has been backed up or restored.
-// ---------------------------------------------------------------------------
-//
-void CHsBRActiveCallback::AllSnapshotsSuppliedL()
-{
-    // No implementation needed. Must not leave    
-}
-
-// ---------------------------------------------------------------------------
-// Not supported.
-// ---------------------------------------------------------------------------
-//
-void CHsBRActiveCallback::ReceiveSnapshotDataL(
-    TDriveNumber /*aDrive*/, TDesC8& /*aBuffer*/, TBool /*aLastSection*/)
-{
-	// No implementation needed
-    User::Leave( KErrNotSupported );
-}
-
-// ---------------------------------------------------------------------------
-// Make a guess about data size.
-// ---------------------------------------------------------------------------
-//
-TUint CHsBRActiveCallback::GetExpectedDataSize(
-    TDriveNumber /*aDrive*/)
-{
-    // No implementation needed
-    return 0;
-}
-
-// ---------------------------------------------------------------------------
-// Not supported.
-// ---------------------------------------------------------------------------
-//
-void CHsBRActiveCallback::GetSnapshotDataL(
-    TDriveNumber /*aDrive*/, TPtr8& /*aBuffer*/, TBool& /*aFinished*/)
-{
-    // No implementation needed
-    User::Leave( KErrNotSupported );
-}
-
-// ---------------------------------------------------------------------------
-// Initialize for backup.
-// ---------------------------------------------------------------------------
-//
-void CHsBRActiveCallback::InitialiseGetBackupDataL(
-    TDriveNumber /*aDrive*/)
-{
-    // Prevent database usage
-    CloseDataBaseConnection();
-    // TODO: Unload widgets
-}
-
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
-void CHsBRActiveCallback::GetBackupDataSectionL(
-    TPtr8& /*aBuffer*/, TBool& aFinished)
-{
-    // No data for active backup
-    aFinished = ETrue;
-}
-
-// ---------------------------------------------------------------------------
-// Initialize restore.
-// ---------------------------------------------------------------------------
-//
-void CHsBRActiveCallback::InitialiseRestoreBaseDataL(
-    TDriveNumber /*aDrive*/ )
-{
-    // No implementation needed
-    //User::Leave( KErrNotSupported );
-    CloseDataBaseConnection();
-}
-
-// ---------------------------------------------------------------------------
-// Run state machine for restore. Receive stream from BUR engine and turn it
-// to file(s).
-// ---------------------------------------------------------------------------
-//
-void CHsBRActiveCallback::RestoreBaseDataSectionL(
-    TDesC8& /*aBuffer*/, TBool /*aFinished*/ )
-{
-    // No implementation needed
-    CloseDataBaseConnection();
-}
-
-// ---------------------------------------------------------------------------
-// Incremental restoration is not supported.
-// ---------------------------------------------------------------------------
-//
-void CHsBRActiveCallback::InitialiseRestoreIncrementDataL(
-    TDriveNumber /*aDrive*/)
-{
-    // No implementation needed
-    User::Leave( KErrNotSupported );
-}
-
-// ---------------------------------------------------------------------------
-// Incremental restoration is not supported.
-// ---------------------------------------------------------------------------
-//
-void CHsBRActiveCallback::RestoreIncrementDataSectionL(
-    TDesC8& /*aBuffer*/, TBool /*aFinished*/)
-{
-    // No implementation needed
-    User::Leave( KErrNotSupported );
-}
-
-// ---------------------------------------------------------------------------
-// Called when restore is complete - sets data back to initial state.
-// ---------------------------------------------------------------------------
-//
-void CHsBRActiveCallback::RestoreComplete(TDriveNumber /*aDrive*/)
-{
-    // No implementation needed
-}
-
-// ---------------------------------------------------------------------------
-// Tidy up when operation is over.
-// ---------------------------------------------------------------------------
-//
-void CHsBRActiveCallback::TerminateMultiStageOperation()
-{
-    // No implementation needed
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-TUint CHsBRActiveCallback::GetDataChecksum(TDriveNumber /*aDrive*/)
-{
-    // No implementation needed
-    return 0;
-}
-
-// ---------------------------------------------------------------------------
-// C++ constructor.
-// ---------------------------------------------------------------------------
-//
-CHsBRActiveCallback::CHsBRActiveCallback()
-{
-}
-
-// ---------------------------------------------------------------------------
-// 2nd phase constructor.
-// ---------------------------------------------------------------------------
-//
-void CHsBRActiveCallback::ConstructL()
-{
-}
-
-// ---------------------------------------------------------------------------
-// CHsBRActiveCallback::CloseDataBaseConnection()
-//
-// Close database connection.
-// ---------------------------------------------------------------------------
-//
-void CHsBRActiveCallback::CloseDataBaseConnection()
-{
-    HsDatabase *db = HsDatabase::instance();
-    db->setDataBaseBlocked(true);
-    db->close();
-}
-
-// ---------------------------------------------------------------------------
-// CHsBRActiveCallback::OpenDataBaseConnection()
-//
-// Open database connection.
-// ---------------------------------------------------------------------------
-//
-void CHsBRActiveCallback::OpenDataBaseConnection()
-{
-    HsDatabase *db = HsDatabase::instance();
-    db->setDataBaseBlocked(false);
-    db->open();
-}   
-// End of file
--- a/homescreenapp/runtimeplugins/hsdefaultruntimeplugin/src/hsbackuprestoreobserver.cpp	Tue May 18 12:12:12 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,185 +0,0 @@
-/*
-* 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:  Home screen Backup/Restore observer.
-*
-*/
-
-#include <connect/sbdefs.h>
-#include "hsdatabase.h"
-#include "hsbackuprestoreobserver.h"
-#include "hsbackuprestoreactivecallback.h"
-
-using namespace conn;
-
-// -----------------------------------------------------------------------------
-// CHsBackupRestoreObserver::CHsBackupRestoreObserver
-// C++ default constructor
-// -----------------------------------------------------------------------------
-//
-CHsBackupRestoreObserver::CHsBackupRestoreObserver() : CActive(EPriorityNormal)
-{    
-	iLastType = conn::EBURUnset;
-    iProperty.Attach(KUidSystemCategory, KUidBackupRestoreKey);
-    CActiveScheduler::Add(this);
-    iStatus = KRequestPending;
-    iProperty.Subscribe(iStatus);
-    SetActive();
-}
-
-// -----------------------------------------------------------------------------
-// CHsBackupRestoreObserver::ConstructL
-// S2nd phase constructor.
-// -----------------------------------------------------------------------------
-//
-void CHsBackupRestoreObserver::ConstructL()
-{
-
-}
-
-// ---------------------------------------------------------------------------
-// CSpaceDataStorageBURListener::NewL
-// ---------------------------------------------------------------------------
-//
-CHsBackupRestoreObserver* CHsBackupRestoreObserver::NewL()
-{
-    CHsBackupRestoreObserver* self = new (ELeave)
-    CHsBackupRestoreObserver();
-    CleanupStack::PushL( self );
-    self->ConstructL( );
-    CleanupStack::Pop( self );
-
-    return self;
-}
-
-// ---------------------------------------------------------------------------
-// CHsBackupRestoreObserver::~CHsBackupRestoreObserver
-// ---------------------------------------------------------------------------
-//
-CHsBackupRestoreObserver::~CHsBackupRestoreObserver()
-{
-    Cancel();
-    iProperty.Close();        
-    delete iCallBack;
-    delete iActiveBackupClient;
-}
-
-// ---------------------------------------------------------------------------
-// Handles changes in backup state.
-// ---------------------------------------------------------------------------
-//
-void CHsBackupRestoreObserver::HandleBackupStateL( const TInt aValue )
-{
-    const TInt type = aValue & conn::KBURPartTypeMask;
-
-    // Test if the device is going into backup or restore mode, and we are
-    // required to participate.
-    if ( ( type == conn::EBURBackupFull || type == conn::EBURRestoreFull ) ||
-         ( type == conn::EBURBackupPartial || type == conn::EBURRestorePartial ) )
-    {
-        if ( !iCallBack )
-        {
-            iCallBack = CHsBRActiveCallback::NewL();
-        }
-
-        if ( !iActiveBackupClient )
-        {
-            iActiveBackupClient = conn::CActiveBackupClient::NewL( iCallBack );
-
-            if ( ( type == conn::EBURBackupPartial || 
-                   type == conn::EBURRestorePartial ) &&
-                 !iActiveBackupClient->DoesPartialBURAffectMeL() )
-            {
-                delete iCallBack;
-                iCallBack = NULL;
-                delete iActiveBackupClient;
-                iActiveBackupClient = NULL;
-                return;
-            }
-            else if(type == conn::EBURRestorePartial || type == conn::EBURRestoreFull)
-            {
-            	iCallBack->StartRestore();
-            }
-        }
-
-        iActiveBackupClient->ConfirmReadyForBURL( KErrNone );
-    }
-    else
-    {
-        if ( type == conn::EBURNormal )
-        {
-            if ( (iLastType == conn::EBURBackupFull || iLastType == conn::EBURBackupPartial) ||
-            	 (iLastType == conn::EBURRestorePartial || iLastType == conn::EBURRestoreFull) )
-            {
-                iCallBack->FinishBackupRestore();
-            }         
-            // delete once back to normal.
-            delete iCallBack;
-            iCallBack = NULL;
-            delete iActiveBackupClient;
-            iActiveBackupClient = NULL;
-        }
-    }
-
-    iLastType = type;
-}
-
-// ---------------------------------------------------------------------------
-// Subsribes notifications of backup/restore p&s key.
-// ---------------------------------------------------------------------------
-//
-void CHsBackupRestoreObserver::SubscribePSKey()
-{
-    Cancel();
-
-    iProperty.Subscribe( iStatus );
-    SetActive();
-}
-    
-// ---------------------------------------------------------------------------
-// CHsBackupRestoreObserver::DoCancel
-// ---------------------------------------------------------------------------
-//
-void CHsBackupRestoreObserver::DoCancel()
-{
-    iProperty.Cancel( );
-}
-
-// ---------------------------------------------------------------------------
-// CHsBackupRestoreObserver::RunL
-// ---------------------------------------------------------------------------
-//
-void CHsBackupRestoreObserver::RunL()
-{   
-    if ( iStatus.Int() == KErrNone )
-    {
-        TInt currentValue = KErrNone;
-        iProperty.Get( currentValue );
-
-        HandleBackupStateL( currentValue );
-    }
-    // Re-subscribe notifications.
-    SubscribePSKey();
-}    
-
-// ---------------------------------------------------------------------------
-// CHsBackupRestoreObserver::RunError
-// ---------------------------------------------------------------------------
-//
-TInt CHsBackupRestoreObserver::RunError( TInt /*aError*/)
-{
-    // No need to do anything      
-    return KErrNone;
-}
-    
-// End of File
--- a/homescreenapp/runtimeplugins/hsdefaultruntimeplugin/src/hsdefaultruntime.cpp	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/runtimeplugins/hsdefaultruntimeplugin/src/hsdefaultruntime.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -17,6 +17,7 @@
 
 #include <QState>
 #include <QFinalState>
+#include <QHistoryState>
 #include <QSignalTransition>
 #include <QKeyEventTransition>
 #include <QKeyEvent>
@@ -26,10 +27,13 @@
 #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"
@@ -39,12 +43,10 @@
 #include "hswidgetpositioningonorientationchange.h"
 #include "hswidgetpositioningonwidgetadd.h"
 #include "hstest_global.h"
-#ifdef Q_OS_SYMBIAN
-#include "hsbackuprestoreobserver.h"
-#endif
+#include "hsconfiguration.h"
 
 QTM_USE_NAMESPACE
-
+#define hbApp qobject_cast<HbApplication*>(qApp)
 
 #ifdef Q_OS_SYMBIAN
 const static Qt::Key applicationKey = Qt::Key_Menu;
@@ -54,10 +56,12 @@
 
 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";
 }
 
 
@@ -83,7 +87,6 @@
 	  mPublisher(NULL)
 #ifdef Q_OS_SYMBIAN
 	  ,keyCapture()
-	  ,mBRObserver(NULL)
 #endif
 {
     HSTEST_FUNC_ENTRY("HS::HsDefaultRuntime::HsDefaultRuntime");
@@ -98,16 +101,13 @@
     db->open();
     HsDatabase::setInstance(db);
 
+    HsConfiguration::loadConfiguration();
+
     HsWidgetPositioningOnOrientationChange::setInstance(
         new HsAdvancedWidgetPositioningOnOrientationChange);
 
     HsWidgetPositioningOnWidgetAdd::setInstance(
         new HsAnchorPointInBottomRight);
-    
-#ifdef Q_OS_SYMBIAN
-    mBRObserver = CHsBackupRestoreObserver::NewL();
-#endif
-    registerAnimations();
 
     createStatePublisher();
     createContentServiceParts();
@@ -115,7 +115,12 @@
     assignServices();
     
 	QCoreApplication::instance()->installEventFilter(this);
-    HSTEST_FUNC_EXIT("HS::HsDefaultRuntime::HsDefaultRuntime");
+
+    if (hbApp) { // Qt test framework uses QApplication.
+	    connect(hbApp->activityManager(), SIGNAL(activityRequested(QString)), 
+	            this, SLOT(activityRequested(QString)));
+    }
+	HSTEST_FUNC_EXIT("HS::HsDefaultRuntime::HsDefaultRuntime");
 }
 
 /*!
@@ -125,9 +130,6 @@
 {
     HsWidgetPositioningOnOrientationChange::setInstance(0);
 	delete mPublisher;
-#ifdef Q_OS_SYMBIAN	
-	delete mBRObserver;
-#endif
 }
 
 /*!
@@ -174,15 +176,6 @@
 }
 
 /*!
-    Registers framework animations.
-*/
-void HsDefaultRuntime::registerAnimations()
-{
-    HbIconAnimationManager *manager = HbIconAnimationManager::global();
-    manager->addDefinitionFile(QLatin1String(":/resource/tapandhold.axml"));
-}
-
-/*!
     Creates Home screen state publisher.
 */
 void HsDefaultRuntime::createStatePublisher()
@@ -232,19 +225,22 @@
     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(guiRootState);
+    idleState->setParent(rootState);
     idleState->setObjectName(KHsIdleStateInterface);
 	connect(idleState, SIGNAL(entered()), SLOT(onIdleStateEntered()));
 	connect(idleState, SIGNAL(exited()), SLOT(onIdleStateExited()));
 
-    loadSceneState->addTransition(
-            loadSceneState, SIGNAL(event_idle()), idleState);
 
     //menu state
     QState *menuParallelState = new QState(
-            QState::ParallelStates, guiRootState);
+            QState::ParallelStates, rootState);
     QState *menuRootState = new QState(menuParallelState);
 
     QObject *appLibraryStateObj = manager.loadInterface(KHsAppLibraryStateInterface);
@@ -253,15 +249,31 @@
     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,
@@ -387,3 +399,14 @@
 	mIdleStateActive = false;
 	updatePSKeys();
 }
+
+/*!
+    Activity requested by another client 
+*/
+void HsDefaultRuntime::activityRequested(const QString &name) 
+{
+    if (name == groupAppLibRecentView()){
+        this->postEvent(HsMenuEventFactory::createOpenCollectionEvent(0, 
+                collectionDownloadedTypeName()));
+    }
+}
--- a/homescreenapp/serviceproviders/hsmenuserviceprovider/inc/hsmenuservice.h	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/serviceproviders/hsmenuserviceprovider/inc/hsmenuservice.h	Wed Jun 23 17:05:06 2010 +0100
@@ -65,6 +65,8 @@
     static bool organizeCollection(int groupId, QList<int> &entryIdList);
 
     static int allCollectionsId();
+    
+    static int collectionIdByType(const QString& collectionType);
 
     static bool touch(int entryId);
     
--- a/homescreenapp/serviceproviders/hsmenuserviceprovider/src/hsmenuservice.cpp	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/serviceproviders/hsmenuserviceprovider/src/hsmenuservice.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -126,6 +126,9 @@
     } else {
         query.setFlagsOn(VisibleEntryFlag);
     }
+    if(!collectionId) {
+        collectionId = collectionIdByType(collectionType);
+    }
     query.setParentId(collectionId);
     query.setSort(HsMenuServiceUtils::sortBy(sortAttribute),
                   HsMenuServiceUtils::sortOrder(sortAttribute));
@@ -347,6 +350,33 @@
 }
 
 /*!
+ Retrives the first found collection entry id
+ \param collectionType collection type.
+ \retval collectionType id
+ */
+int HsMenuService::collectionIdByType(const QString& collectionType)
+{
+    HSMENUTEST_FUNC_ENTRY("HsMenuService::collectionsIdByType");
+    int collectionId;
+    CaQuery collectionsQuery;
+    collectionsQuery.setEntryRoles(GroupEntryRole);
+    //sorting is set to (default, ascending) to assure that
+    //proper entry is fetched, somebody can add item with
+    //"menucollections" typename to the storage, but even if he or she
+    //do this we fetch entry that we wanted
+    collectionsQuery.setSort(DefaultSortAttribute, Qt::AscendingOrder);
+    collectionsQuery.addEntryTypeName(collectionType);
+    QList<int> ids = CaService::instance()->getEntryIds(
+                         collectionsQuery);
+    Q_ASSERT(ids.count() > 0);
+    collectionId = ids.at(0);
+    qDebug() << "HsMenuService::HsMenuService collectionsIdByType"
+             << collectionId;
+    HSMENUTEST_FUNC_EXIT("HsMenuService::collectionsIdByType");
+    return collectionId;
+}
+
+/*!
  Touch action on an entry.
  \param entryId of this entry.
  \retval boolean error code.
--- a/homescreenapp/sis/homescreenapp_ut_hs.pkg	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/sis/homescreenapp_ut_hs.pkg	Wed Jun 23 17:05:06 2010 +0100
@@ -33,62 +33,59 @@
 "/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/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/data/z/private/20022f5f/hsresources/plugins/runtimeplugins/mockruntimeplugin.xml"          - "c:/private/20022f5f/hsresources/plugins/runtimeplugins/mockruntimeplugin.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"
+"../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"
 "/epoc32/data/z/private/10003a3f/import/apps/t_hsdomainmodel_reg.rsc"    - "c:/private/10003a3f/import/apps/t_hsdomainmodel_reg.rsc"
 "/epoc32/data/z/resource/apps/t_hsdomainmodel.rsc"                       - "c:/resource/apps/t_hsdomainmodel.rsc"
 
 
-"../hsdomainmodel/tsrc/t_hsdomainmodel/hsdomainmodeltest.db" - "c:/private/20022F59/hsdomainmodeltest.db"
-"../hsdomainmodel/tsrc/t_hsdomainmodel/d_landscape.png" - "c:/private/20022F59/d_landscape.png"
-"../hsdomainmodel/tsrc/t_hsdomainmodel/d_portrait.png" - "c:/private/20022F59/d_portrait.png"
+"../hsdomainmodel/tsrc/t_hsdomainmodel/hsdomainmodeltest.db"    - "c:/private/20022F59/hsdomainmodeltest.db"
+"../hsdomainmodel/tsrc/t_hsdomainmodel/d_landscape.png"         - "c:/private/20022F59/d_landscape.png"
+"../hsdomainmodel/tsrc/t_hsdomainmodel/d_portrait.png"           - "c:/private/20022F59/d_portrait.png"
 
-"/epoc32/release/armv5/urel/mockwidgetplugin.dll" - "c:/sys/bin/mockwidgetplugin.dll"
-"/epoc32/data/z/private/20022F59/hsresources/plugins/widgetplugins/mockwidgetplugin.qtplugin" - "c:/private/20022F59/hsresources/plugins/widgetplugins/mockwidgetplugin.qtplugin"
-"/epoc32/data/z/private/20022F59/hsresources/plugins/widgetplugins/mockwidgetplugin.xml" - "c:/private/20022F59/hsresources/plugins/widgetplugins/mockwidgetplugin.xml"
-"/epoc32/data/z/resource/qt/translations/mockwidgetplugin.qm" - "c:/resource/qt/translations/mockwidgetplugin.qm"
+"/epoc32/release/armv5/urel/mockwidgetplugin.dll"                                               - "c:/sys/bin/mockwidgetplugin.dll"
+"/epoc32/data/z/private/20022F59/hsresources/plugins/widgetplugins/mockwidgetplugin.qtplugin"   - "c:/private/20022F59/hsresources/plugins/widgetplugins/mockwidgetplugin.qtplugin"
+"/epoc32/data/z/private/20022F59/hsresources/plugins/widgetplugins/mockwidgetplugin.xml"        - "c:/private/20022F59/hsresources/plugins/widgetplugins/mockwidgetplugin.xml"
+"/epoc32/data/z/resource/qt/translations/mockwidgetplugin.qm"                                   - "c:/resource/qt/translations/mockwidgetplugin.qm"
 
-"/epoc32/release/armv5/urel/mockwidgetplugintoosmall.dll" - "c:/sys/bin/mockwidgetplugintoosmall.dll"
-"/epoc32/data/z/private/20022F59/hsresources/plugins/widgetplugins/mockwidgetplugintoosmall.qtplugin" - "c:/private/20022F59/hsresources/plugins/widgetplugins/mockwidgetplugintoosmall.qtplugin"
-"/epoc32/data/z/private/20022F59/hsresources/plugins/widgetplugins/mockwidgetplugintoosmall.xml" - "c:/private/20022F59/hsresources/plugins/widgetplugins/mockwidgetplugintoosmall.xml"
+"/epoc32/release/armv5/urel/mockwidgetplugintoosmall.dll"                                               - "c:/sys/bin/mockwidgetplugintoosmall.dll"
+"/epoc32/data/z/private/20022F59/hsresources/plugins/widgetplugins/mockwidgetplugintoosmall.qtplugin"   - "c:/private/20022F59/hsresources/plugins/widgetplugins/mockwidgetplugintoosmall.qtplugin"
+"/epoc32/data/z/private/20022F59/hsresources/plugins/widgetplugins/mockwidgetplugintoosmall.xml"        - "c:/private/20022F59/hsresources/plugins/widgetplugins/mockwidgetplugintoosmall.xml"
 
-"/epoc32/release/armv5/urel/mockwidgetplugintoobig.dll" - "c:/sys/bin/mockwidgetplugintoobig.dll"
+"/epoc32/release/armv5/urel/mockwidgetplugintoobig.dll"                                             - "c:/sys/bin/mockwidgetplugintoobig.dll"
 "/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/data/z/private/20022F59/hsresources/plugins/widgetplugins/mockwidgetplugintoobig.xml"      - "c:/private/20022F59/hsresources/plugins/widgetplugins/mockwidgetplugintoobig.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"
+"/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 ---------------
 
 ;--------------- stateplugins ---------------
-
 ;hshomescreenstateplugin
 "/epoc32/release/armv5/urel/t_hshomescreenstateplugin.exe"                         - "c:/sys/bin/t_hshomescreenstateplugin.exe"
 "/epoc32/data/z/private/10003a3f/import/apps/t_hshomescreenstateplugin_reg.rsc"    - "c:/private/10003a3f/import/apps/t_hshomescreenstateplugin_reg.rsc"
 "/epoc32/data/z/resource/apps/t_hshomescreenstateplugin.rsc"                       - "c:/resource/apps/t_hshomescreenstateplugin.rsc"
 
 ;--------------- widgetplugins ---------------
-
 ;hsshortcutwidgetlugin
 ;t_hsshortcutwidget:
 "/epoc32/release/armv5/urel/t_hsshortcutwidget.exe"                         - "c:/sys/bin/t_hsshortcutwidget.exe"
@@ -100,3 +97,21 @@
 "/epoc32/release/armv5/urel/t_hsclockwidgetplugin.exe"                      - "c:/sys/bin/t_hsclockwidgetplugin.exe"
 "/epoc32/data/z/private/10003a3f/import/apps/t_hsclockwidgetplugin_reg.rsc" - "c:/private/10003a3f/import/apps/t_hsclockwidgetprovider_reg.rsc"
 "/epoc32/data/z/resource/apps/t_hsclockwidgetplugin.rsc"                    - "c:/resource/apps/t_hsclockwidgetprovider.rsc"
+
+;--------------- 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"
+
+;--------------- hswidgetuninstaller -----------------------
+;hswidgetuninstaller
+"/epoc32/release/armv5/urel/t_hswidgetuninstaller.exe"                      - "c:/sys/bin/t_hswidgetuninstaller.exe"
+"/epoc32/data/z/private/10003a3f/import/apps/t_hswidgetuninstaller_reg.rsc" - "c:/private/10003a3f/import/apps/t_hswidgetuninstaller_reg.rsc"
+"/epoc32/data/z/resource/apps/t_hswidgetuninstaller.rsc"                    - "c:/resource/apps/t_hswidgetuninstaller.rsc"
+"../hswidgetuninstaller/tsrc/t_hswidgetuninstaller/empty.manifest"          - "c:/private/20022F42/empty.manifest"
+"../hswidgetuninstaller/tsrc/t_hswidgetuninstaller/fail_new.manifest"       - "c:/private/20022F42/fail_new.manifest"
+"../hswidgetuninstaller/tsrc/t_hswidgetuninstaller/ok_new.manifest"         - "c:/private/20022F42/ok_new.manifest"
+"../hswidgetuninstaller/tsrc/t_hswidgetuninstaller/ok_old.manifest"         - "c:/private/20022F42/ok_old.manifest"
+"../hswidgetuninstaller/tsrc/t_hswidgetuninstaller/version10.manifest"      - "c:/private/20022F42/version10.manifest"
+"../hswidgetuninstaller/tsrc/t_hswidgetuninstaller/version12.manifest"      - "c:/private/20022F42/version12.manifest"
\ No newline at end of file
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/conf/applibrary_view.confml	Tue May 18 12:12:12 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-<?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">
-  <confml:view name="Applibrary customisation view">
-    <confml:group name="Content storage customisation">
-      <confml:desc>Applibrary db specific customisation</confml:desc>
-        <confml:setting ref="CaStorageDbSetting/Collections"/>
-        <confml:setting ref="CaStorageDbSetting/Items"/>      
-    </confml:group>
-    <confml:group name="Applib customization">
-      <confml:desc>AppLibUid Settings</confml:desc>
-        <confml:setting ref="AppLibUid/*"/>
-    </confml:group>
-  </confml:view>
-</confml:configuration>
\ No newline at end of file
Binary file homescreenapp/stateplugins/hsapplibrarystateplugin/conf/hsapplibrary.confml has changed
Binary file homescreenapp/stateplugins/hsapplibrarystateplugin/conf/hsapplibrary_20022F97.crml has changed
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/hsapplibrarystateplugin.pro	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/hsapplibrarystateplugin.pro	Wed Jun 23 17:05:06 2010 +0100
@@ -32,7 +32,7 @@
     TARGET.UID3 = 0x20022F97
     nft::LIBS += -lhal
     include(hsapplibrarystateplugin_exports_to_rom.pri)
-    exists($${EPOCROOT}epoc32/include/mw/XQSettingsManager):LIBS += -lxqsettingsmanager
+    exists($${EPOCROOT}epoc32/include/platform/mw/XQSettingsManager):LIBS += -lxqsettingsmanager
 }
 exportResources(./*.qm, resource/qt/translations)
 RESOURCES = hsapplibrarystateplugin.qrc
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/hsapplibrarystateplugin_exports_to_rom.pri	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/hsapplibrarystateplugin_exports_to_rom.pri	Wed Jun 23 17:05:06 2010 +0100
@@ -17,5 +17,5 @@
 BLD_INF_RULES.prj_exports += \
     "$${LITERAL_HASH}include <platform_paths.hrh>" \
     "conf/hsapplibrary.confml           APP_LAYER_CONFML(hsapplibrary.confml)" \
-    "conf/hsapplibrary_20022F97.crml    APP_LAYER_CRML(hsapplibrary_20022F97.crml)" \
-    "conf/applibrary_view.confml        APP_LAYER_CONFML(applibrary_view.confml)"
+    "conf/hsapplibrary_20022F97.crml    APP_LAYER_CRML(hsapplibrary_20022F97.crml)"
+
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsallappsstate.h	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsallappsstate.h	Wed Jun 23 17:05:06 2010 +0100
@@ -38,6 +38,7 @@
 class HsMenuViewBuilder;
 class HsMenuItemModel;
 class HsMenuModeWrapper;
+class HsMainWindow;
 
 class HsAllAppsState: public QState
 {
@@ -46,6 +47,7 @@
 public:
     HsAllAppsState(HsMenuViewBuilder &menuViewBuilder,
                    HsMenuModeWrapper &menuMode,
+                   HsMainWindow &mainWindow,
                    QState *parent = 0);
     ~HsAllAppsState();
 signals:
@@ -68,8 +70,8 @@
     void stateEntered();
     void addModeEntered();
     void normalModeEntered();
-    void stateExited();	
-	void contextMenuAction(HbAction *action);
+    void stateExited();
+    void contextMenuAction(HbAction *action);
 private:
     void construct();
     void setMenuOptions();
@@ -81,8 +83,9 @@
     HsMenuView mMenuView;
     HsMenuModeWrapper &mMenuMode;
     HsMenuItemModel *mAllAppsModel;
-	QModelIndex mContextModelIndex;
-	QPointer<HbMenu> mContextMenu;
+    HsMainWindow &mMainWindow;
+    QModelIndex mContextModelIndex;
+    QPointer<HbMenu> mContextMenu;
 };
 
 #endif // HSALLAPPSSTATE_H
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsallcollectionsstate.h	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsallcollectionsstate.h	Wed Jun 23 17:05:06 2010 +0100
@@ -37,6 +37,7 @@
 class HbMainWindow;
 class HsMenuItemModel;
 class HsMenuView;
+class HsMainWindow;
 
 class HsAllCollectionsState: public QState
 {
@@ -45,6 +46,7 @@
 public:
     HsAllCollectionsState(HsMenuViewBuilder &menuViewBuilder,
                           HsMenuModeWrapper &menuMode,
+                          HsMainWindow &mainWindow,
                           QState *parent = 0);
     ~HsAllCollectionsState();
 protected:
@@ -70,7 +72,7 @@
     void normalModeEntered();
     void normalModeExited();
     void stateExited();
-	void contextMenuAction(HbAction *action);
+    void contextMenuAction(HbAction *action);
 private:
     void construct();
     void setMenuOptions();
@@ -80,8 +82,9 @@
     HsMenuView mMenuView;
     HsMenuModeWrapper &mMenuMode;
     HsMenuItemModel *mAllCollectionsModel;
-	QModelIndex mContextModelIndex;
-	QPointer<HbMenu> mContextMenu;
+    HsMainWindow &mMainWindow;
+    QModelIndex mContextModelIndex;
+    QPointer<HbMenu> mContextMenu;
 };
 
 #endif // HSALLCOLLECTIONSSTATE_H
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsapplibrarystate.h	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsapplibrarystate.h	Wed Jun 23 17:05:06 2010 +0100
@@ -22,6 +22,7 @@
 #include <hbdocumentloader.h>
 #include "hsmenustates_global.h"
 #include "hsmenuview.h"
+#include "hsmainwindow.h"
 #include "hsmenumodewrapper.h"
 #include "hsapp_defs.h"
 
@@ -54,6 +55,8 @@
 
 signals:
 
+    void collectionEntered();
+
     void toHomescreenState();
 
     void initialize();
@@ -108,6 +111,8 @@
     HsInstalledAppsState *mInstalledAppsState;
 
     HsMenuModeWrapper mMenuMode;
+    
+    HsMainWindow mMainWindow;
 };
 
 #endif //HSAPPLIBRARYSTATE_H
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hscollectionstate.h	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hscollectionstate.h	Wed Jun 23 17:05:06 2010 +0100
@@ -36,6 +36,7 @@
 class HsMenuItemModel;
 class HsMenuModeWrapper;
 class HsMenuViewBuilder;
+class HsMainWindow;
 
 class HsCollectionState: public QState
 {
@@ -44,6 +45,7 @@
 public:
     HsCollectionState(HsMenuViewBuilder &menuView,
                       HsMenuModeWrapper &menuMode,
+                      HsMainWindow &mainWindow,
                       QState *parent = 0);
     ~HsCollectionState();
 public slots:
@@ -66,7 +68,10 @@
     void stateExited();
     void latestOnTopMenuAction();
     void oldestOnTopMenuAction();
-	void contextMenuAction(HbAction *action);
+    void contextMenuAction(HbAction *action);
+    void handleEmptyChange(bool empty);
+    void lockSearchButton(bool lock);
+
 private:
     void construct();
     void constructMenu(bool isDynamic);
@@ -84,9 +89,9 @@
     HbAction *const mSecondarySoftkeyAction;
     HsMenuItemModel *mCollectionModel;
     HbMenu *mOptions;
-	QModelIndex mContextModelIndex;
-	QPointer<HbMenu> mContextMenu;
-
+    QModelIndex mContextModelIndex;
+    QPointer<HbMenu> mContextMenu;
+    HsMainWindow &mMainWindow;
 };
 
 #endif // HSCOLLECTIONSTATE_H
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsinstalledappsstate.h	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsinstalledappsstate.h	Wed Jun 23 17:05:06 2010 +0100
@@ -35,6 +35,7 @@
 class QPointF;
 class HsMenuViewBuilder;
 class HsMenuItemModel;
+class HsMainWindow;
 
 class HsInstalledAppsState: public QState
 {
@@ -45,6 +46,7 @@
 public:
 
     HsInstalledAppsState(HsMenuViewBuilder &menuViewBuilder,
+                         HsMainWindow &mainWindow,
                          QState *parent = 0);
 
     ~HsInstalledAppsState();
@@ -64,7 +66,9 @@
 
     void stateExited();
 
-	void contextMenuAction(HbAction *action);
+    void setEmptyLabelVisibility(bool visibility);
+
+    void contextMenuAction(HbAction *action);
 
 private:
 
@@ -91,9 +95,11 @@
      * Own.
      */
     HbAction *const mSecondarySoftkeyAction;
+    
+    HsMainWindow &mMainWindow;
 
-	QModelIndex mContextModelIndex;
-	QPointer<HbMenu> mContextMenu;
+    QModelIndex mContextModelIndex;
+    QPointer<HbMenu> mContextMenu;
 };
 
 #endif // HSINSTALLEDAPPSSTATE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsmainwindow.h	Wed Jun 23 17:05:06 2010 +0100
@@ -0,0 +1,32 @@
+/*
+ * 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 view.
+ *
+ */
+
+#ifndef HS_MAIN_WINDOW_H
+#define HS_MAIN_WINDOW_H
+
+class HsMenuView;
+class HsMainWindow
+{
+
+public:
+    HsMainWindow();
+    virtual ~HsMainWindow();
+
+    virtual void setCurrentView(const HsMenuView &menuView);
+};
+
+#endif // HS_MAIN_WINDOW_H
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsmenuview.h	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsmenuview.h	Wed Jun 23 17:05:06 2010 +0100
@@ -36,6 +36,7 @@
 class HbListView;
 class HbGroupBox;
 class HbWidget;
+class HbStaticVkbHost;
 class HsMenuItemModel;
 
 
@@ -50,15 +51,18 @@
     ~HsMenuView();
 
     void setSearchPanelVisible(bool visible);
+    void setContext(HsViewContext viewContext,
+                    HsOperationalContext context);
 
-    HbView *view();
+    HbView *view() const;
 
-    HbListView *listView();
+    HbListView *listView() const;
+    HbPushButton *collectionButton() const;
 
     void activate();
     void inactivate();
 
-    HbGroupBox *viewLabel();
+    HbGroupBox *viewLabel() const;
 
     void setModel(HsMenuItemModel *model);
 
@@ -76,6 +80,8 @@
     void showSearchPanel();
     void hideSearchPanel();
 
+    void disableSearch(bool disable);
+
 
 private slots:
     void scrollToRow(int row,
@@ -83,11 +89,11 @@
                          QAbstractItemView::PositionAtTop);
     void findItem(QString criteriaStr);
 
+    void vkbOpened();
+    void vkbClosed();
 
 private:
 
-    void addViewToMainWindow(HbView *view);
-
     QModelIndex firstVisibleItemIndex(const HbListView *view) const;
 
     void connectSearchPanelSignals();
@@ -117,6 +123,9 @@
 
     HbListView *mSearchListView;
     HbSearchPanel *mSearchPanel;
+    HbStaticVkbHost* mVkbHost;
+
+    HbPushButton *mCollectionButton;
 
     HS_STATES_TEST_FRIEND_CLASS(MenuStatesTest)
 };
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsmenuviewbuilder.h	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsmenuviewbuilder.h	Wed Jun 23 17:05:06 2010 +0100
@@ -24,6 +24,7 @@
 #include <QString>
 #include <qnamespace.h>
 #include <HbDocumentLoader>
+#include "hsmenustates_global.h"
 
 class QActionGroup;
 class HbAction;
@@ -35,6 +36,7 @@
 class HbView;
 class HbWidget;
 class HbToolBarExtension;
+class HbPushButton;
 
 enum HsViewContext {
     HsAllAppsContext,
@@ -45,9 +47,12 @@
 
 enum HsOperationalContext {
     HsItemViewContext,
-    HsSearchContext
+    HsSearchContext,
+    HsButtonContext,
+    HsEmptyLabelContext
 };
 
+HS_STATES_TEST_CLASS(MenuStatesTest)
 
 class HsMenuViewBuilder
 {
@@ -73,6 +78,7 @@
     // optional widgets accessors
     HbGroupBox *currentViewLabel() const;
     HbSearchPanel *currentSearchPanel() const;
+    HbPushButton *collectionButton() const;
 
 
     void setViewContext(HsViewContext viewContext);
@@ -99,13 +105,13 @@
     QSet<QObject *> mLoadedObjects;
 
     const QString DOCUMENT_FILE_NAME;
-    const QString COMMON_SECTION_NAME;
     const QString ALL_APPS_ACTION_NAME;
     const QString ALL_COLLECTIONS_ACTION_NAME;
     const QString SEARCH_ACTION_NAME;
     const QString OVI_STORE_ACTION_NAME;
     const QString OPERATOR_ACTION_NAME;
     const QString SEARCH_PANEL_NAME;
+    const QString BUTTON_NAME;
     const QString TOOL_BAR_NAME;
 
     QActionGroup *mToolBarActionGroup;
@@ -115,6 +121,8 @@
 
     HsViewContext mViewContext;
     HsOperationalContext mOperationalContext;
+
+    HS_STATES_TEST_FRIEND_CLASS(MenuStatesTest)
 };
 
 #endif // HSMENUVIEWBUILDER_H
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/resource/applibrary.docml	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/resource/applibrary.docml	Wed Jun 23 17:05:06 2010 +0100
@@ -1,71 +1,56 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="0.9">
-
-    <section name="commonDefinitions">
-        <object name="allAppsAction" type="HbAction">
+<hbdocument version="1.0">
+    <object name="allAppsAction" type="HbAction">
         <bool name="checkable" value="TRUE"/>
         <icon iconName="qtg_mono_applications_all" name="icon"/>
-        </object>
-        <object name="allCollectionsAction" type="HbAction">
-            <bool name="checkable" value="TRUE"/>
-            <icon iconName="qtg_mono_applications_collections" name="icon"/>
-        </object>
-        <object name="searchAction" type="HbAction">
-            <icon iconName="qtg_mono_search" name="icon"/>
-        </object>
-        <object name="oviStoreAction" type="HbAction">
-            <icon iconName="qtg_mono_ovistore" name="icon"/>
-        </object>
-        <object name="operatorAction" type="HbAction"/>
-
-        <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"/>
-                    <string name="heading" value="."/>
-                    <enums name="groupBoxType" value="GroupBoxSimpleLabel"/>
-                    <bool name="marqueeHeading" value="TRUE"/>
-                    <fontspec name="fontSpec" role="Title" textheight="0"/>
-                    <bool name="visible" value="FALSE"/>
-                </widget>
-                <widget name="searchPanel" type="HbSearchPanel">
-                    <bool name="progressive" value="TRUE"/>
-                    <sizehint height="0un" type="MAXIMUM" width="0un"/>
-                    <bool name="visible" value="FALSE"/>
-                </widget>
+    </object>
+    <object name="allCollectionsAction" type="HbAction">
+        <bool name="checkable" value="TRUE"/>
+        <icon iconName="qtg_mono_applications_collections" name="icon"/>
+    </object>
+    <object name="searchAction" type="HbAction">
+        <icon iconName="qtg_mono_search" name="icon"/>
+    </object>
+    <object name="oviStoreAction" type="HbAction">
+        <icon iconName="qtg_mono_ovistore" name="icon"/>
+    </object>
+    <object name="operatorAction" type="HbAction"/>
+    <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"/>
+                <fontspec name="fontSpec" role="Title" textheight="0"/>
+                <integer name="groupBoxType" value="1"/>
             </widget>
-            <!--  no support for toolbar extensions, not defined in docml for now -->
-            <!--widget name="toolBar" role="HbView:toolBar" type="HbToolBar">
-                <enums name="orientation" value="Horizontal"/>
-                <ref object="allAppsAction" role="HbToolBar:addAction"/>
-                <ref object="allCollectionsAction" role="HbToolBar:addAction"/>
-                <ref object="searchAction" role="HbToolBar:addAction"/>
-                <ref object="oviStoreAction" role="HbToolBar:addAction"/>
-                <ref object="operatorAction" role="HbToolBar:addAction"/>
+            <widget name="searchPanel" type="HbSearchPanel">
+                <bool name="progressive" value="TRUE"/>
+                <sizehint height="0un" type="MAXIMUM" width="0un"/>
                 <bool name="visible" value="FALSE"/>
-            </widget-->
-            <bool name="contentFullScreen" value="FALSE"/>
-            <bool name="visible" value="FALSE"/>
+            </widget>
         </widget>
-    </section>
+        <bool name="contentFullScreen" value="FALSE"/>
+        <bool name="visible" value="FALSE"/>
+    </widget>
     <section name="allAppsViewDefinition">
         <widget name="allAppsView" type="HbView">
             <widget name="allAppsContainer" role="HbView:widget" type="HbWidget">
                 <widget name="allAppsListView" type="HbListView">
-                    <widget name="listViewItemPrototype" role="HbListView:prototype" type="HbListViewItem">
-                        <enums name="graphicsSize" value="Thumbnail"/>
+                    <widget name="listViewItemPrototype" role="HbAbstractView:prototype" type="HbListViewItem">
+                        <enums name="graphicsSize" value="LargeIcon"/>
                     </widget>
                     <bool name="itemRecycling" value="TRUE"/>
                     <enums name="horizontalScrollBarPolicy" value="ScrollBarAutoHide"/>
                     <sizehint height="100un" type="MAXIMUM" width="100un"/>
                     <bool name="frictionEnabled" value="TRUE"/>
                     <bool name="visible" value="TRUE"/>
-	        </widget>
+                </widget>
                 <widget name="searchPanel" type="HbSearchPanel">
                     <sizehint height="0un" type="MAXIMUM" width="0un"/>
                     <bool name="visible" value="FALSE"/>
                 </widget>
-
                 <widget name="allAppsSearchListView" type="HbListView">
                     <bool name="visible" value="FALSE"/>
                 </widget>
@@ -90,8 +75,8 @@
                     <bool name="visible" value="FALSE"/>
                 </widget>
                 <widget name="allAppsSearchListView" type="HbListView">
-                    <widget name="listViewItemPrototype" role="HbListView:prototype" type="HbListViewItem">
-                        <enums name="graphicsSize" value="Thumbnail"/>
+                    <widget name="listViewItemPrototype" role="HbAbstractView:prototype" type="HbListViewItem">
+                        <enums name="graphicsSize" value="LargeIcon"/>
                     </widget>
                     <bool name="itemRecycling" value="TRUE"/>
                     <enums name="horizontalScrollBarPolicy" value="ScrollBarAutoHide"/>
@@ -113,8 +98,8 @@
         <widget name="allCollectionsView" type="HbView">
             <widget name="allCollectionsContainer" role="HbView:widget" type="HbWidget">
                 <widget name="allCollectionsListView" type="HbListView">
-                    <widget name="listViewItemPrototype" role="HbListView:prototype" type="HbListViewItem">
-                        <enums name="graphicsSize" value="Thumbnail"/>
+                    <widget name="listViewItemPrototype" role="HbAbstractView:prototype" type="HbListViewItem">
+                        <enums name="graphicsSize" value="LargeIcon"/>
                     </widget>
                     <bool name="itemRecycling" value="TRUE"/>
                     <enums name="horizontalScrollBarPolicy" value="ScrollBarAutoHide"/>
@@ -151,8 +136,8 @@
                     <bool name="visible" value="FALSE"/>
                 </widget>
                 <widget name="allCollectionsSearchListView" type="HbListView">
-                    <widget name="listViewItemPrototype" role="HbListView:prototype" type="HbListViewItem">
-                        <enums name="graphicsSize" value="Thumbnail"/>
+                    <widget name="listViewItemPrototype" role="HbAbstractView:prototype" type="HbListViewItem">
+                        <enums name="graphicsSize" value="LargeIcon"/>
                     </widget>
                     <bool name="itemRecycling" value="TRUE"/>
                     <enums name="horizontalScrollBarPolicy" value="ScrollBarAutoHide"/>
@@ -176,13 +161,13 @@
                 <widget name="installedAppsLabel" type="HbGroupBox">
                     <sizehint height="6un" type="MAXIMUM" width="100un"/>
                     <string name="heading" value="."/>
-                    <enums name="groupBoxType" value="GroupBoxSimpleLabel"/>
                     <bool name="marqueeHeading" value="TRUE"/>
                     <fontspec name="fontSpec" role="Title" textheight="0"/>
+                    <integer name="groupBoxType" value="1"/>
                 </widget>
                 <widget name="installedAppsListView" type="HbListView">
-                    <widget name="listViewItemPrototype" role="HbListView:prototype" type="HbListViewItem">
-                        <enums name="graphicsSize" value="Thumbnail"/>
+                    <widget name="listViewItemPrototype" role="HbAbstractView:prototype" type="HbListViewItem">
+                        <enums name="graphicsSize" value="LargeIcon"/>
                     </widget>
                     <bool name="itemRecycling" value="TRUE"/>
                     <enums name="horizontalScrollBarPolicy" value="ScrollBarAutoHide"/>
@@ -198,6 +183,11 @@
                     <sizehint height="0un" type="MAXIMUM" width="0un"/>
                     <bool name="visible" value="FALSE"/>
                 </widget>
+                <widget name="installedAppsEmptyLabel" type="HbLabel">
+                    <sizehint height="0un" type="MINIMUM" width="0un"/>
+                    <sizehint height="0un" type="MAXIMUM" width="0un"/>
+                    <bool name="visible" value="FALSE"/>
+                </widget>
                 <layout orientation="Vertical" type="linear">
                     <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
                     <linearitem itemname="installedAppsLabel"/>
@@ -216,6 +206,7 @@
                     <string name="heading" value="."/>
                     <bool name="marqueeHeading" value="TRUE"/>
                     <fontspec name="fontSpec" role="Title" textheight="0"/>
+                    <integer name="groupBoxType" value="1"/>
                 </widget>
                 <widget name="searchPanel" type="HbSearchPanel">
                     <sizehint height="10un" type="MAXIMUM" width="100un"/>
@@ -226,8 +217,8 @@
                     <bool name="visible" value="FALSE"/>
                 </widget>
                 <widget name="installedAppsSearchListView" type="HbListView">
-                    <widget name="listViewItemPrototype" role="HbListView:prototype" type="HbListViewItem">
-                        <enums name="graphicsSize" value="Thumbnail"/>
+                    <widget name="listViewItemPrototype" role="HbAbstractView:prototype" type="HbListViewItem">
+                        <enums name="graphicsSize" value="LargeIcon"/>
                     </widget>
                     <bool name="itemRecycling" value="TRUE"/>
                     <enums name="horizontalScrollBarPolicy" value="ScrollBarAutoHide"/>
@@ -235,6 +226,11 @@
                     <bool name="frictionEnabled" value="TRUE"/>
                     <bool name="visible" value="TRUE"/>
                 </widget>
+                <widget name="installedAppsEmptyLabel" type="HbLabel">
+                    <sizehint height="0un" type="MINIMUM" width="0un"/>
+                    <sizehint height="0un" type="MAXIMUM" width="0un"/>
+                    <bool name="visible" value="FALSE"/>
+                </widget>
                 <layout orientation="Vertical" type="linear">
                     <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
                     <linearitem itemname="installedAppsLabel"/>
@@ -246,16 +242,69 @@
             <bool name="contentFullScreen" value="TRUE"/>
         </widget>
     </section>
+    <section name="installedAppsEmptyLabelViewDefinition">
+        <widget name="installedAppsView" type="HbView">
+            <widget name="installedAppsContainer" role="HbView:widget" type="HbWidget">
+                <widget name="installedAppsLabel" type="HbGroupBox">
+                    <sizehint height="6un" type="MAXIMUM" width="100un"/>
+                    <string name="heading" value="."/>
+                    <bool name="marqueeHeading" value="TRUE"/>
+                    <fontspec name="fontSpec" role="Title" textheight="0"/>
+                    <integer name="groupBoxType" value="1"/>
+                </widget>
+                <widget name="installedAppsListView" type="HbListView">
+                    <sizehint height="0un" type="MAXIMUM" width="0un"/>
+                    <bool name="visible" value="FALSE"/>
+                </widget>
+                <widget name="installedAppsSearchListView" type="HbListView">
+                    <sizehint height="0un" type="MAXIMUM" width="0un"/>
+                    <bool name="visible" value="FALSE"/>
+                </widget>
+                <widget name="searchPanel" type="HbSearchPanel">
+                    <sizehint height="0un" type="MAXIMUM" width="0un"/>
+                    <bool name="visible" value="FALSE"/>
+                </widget>
+                <widget name="installedAppsEmpytLabelContainer" type="HbWidget">
+                    <widget name="installedAppsEmptyLabel" type="HbLabel">
+                        <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Minimum" verticalStretch="0"/>
+                        <sizehint height="10un" type="MINIMUM" width="50un"/>
+                        <sizehint height="10un" type="MAXIMUM" width="50un"/>
+                        <string locid="txt_applib_formlabel_empty" name="plainText"/>
+                        <fontspec name="fontSpec" role="Title" textheight="4un" />
+                        <enums name="elideMode" value="ElideMiddle"/>
+                        <enums name="alignment" value="AlignHCenter"/>
+                        <bool name="visible" value="TRUE"/>
+                    </widget>
+                    <sizehint height="11.9403un" type="PREFERRED" width="23.8806un"/>
+                    <layout orientation="Horizontal" type="linear">
+                        <stretchitem stretchfactor="1"/>
+                        <linearitem itemname="installedAppsEmptyLabel"/>
+                        <stretchitem stretchfactor="1"/>
+                    </layout>
+                </widget>
+                <layout orientation="Vertical" type="linear">
+                    <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
+                    <linearitem itemname="installedAppsLabel"/>
+                    <stretchitem stretchfactor="1"/>
+                    <linearitem itemname="installedAppsEmpytLabelContainer"/>
+                    <stretchitem stretchfactor="5"/>
+                </layout>
+            </widget>
+            <string locid="txt_applib_title_applications" name="title"/>
+            <bool name="contentFullScreen" value="FALSE"/>
+        </widget>
+    </section>
     <section name="collectionViewDefinition">
         <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>
                 <widget name="collectionListView" type="HbListView">
-                    <widget name="listViewItemPrototype" role="HbListView:prototype" type="HbListViewItem">
-                        <enums name="graphicsSize" value="Thumbnail"/>
+                    <widget name="listViewItemPrototype" role="HbAbstractView:prototype" type="HbListViewItem">
+                        <enums name="graphicsSize" value="LargeIcon"/>
                     </widget>
                     <bool name="itemRecycling" value="TRUE"/>
                     <enums name="horizontalScrollBarPolicy" value="ScrollBarAutoHide"/>
@@ -271,6 +320,16 @@
                     <sizehint height="0un" type="MAXIMUM" width="0un"/>
                     <bool name="visible" value="FALSE"/>
                 </widget>
+                <widget name="collectionButton" type="HbPushButton">
+                    <sizehint height="0un" type="MAXIMUM" width="0un"/>
+                    <string locid="txt_applib_button_add_to_collection" name="text"/>
+                    <bool name="visible" value="FALSE"/>
+                </widget>
+                <widget name="collectionAppsEmptyLabel" type="HbLabel">
+                    <sizehint height="0un" type="MINIMUM" width="0un"/>
+                    <sizehint height="0un" type="MAXIMUM" width="0un"/>
+                    <bool name="visible" value="FALSE"/>
+                </widget>                
                 <layout orientation="Vertical" type="linear">
                     <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
                     <linearitem itemname="collectionLabel"/>
@@ -287,18 +346,19 @@
                 <widget name="collectionLabel" type="HbGroupBox">
                     <sizehint height="6un" type="MAXIMUM" width="100un"/>
                     <bool name="visible" value="TRUE"/>
+                    <integer name="groupBoxType" value="1"/>
                 </widget>
                 <widget name="searchPanel" type="HbSearchPanel">
+                    <sizehint height="10un" type="MAXIMUM" width="100un"/>
                     <bool name="visible" value="TRUE"/>
-                    <sizehint height="10un" type="MAXIMUM" width="100un"/>
                 </widget>
                 <widget name="collectionListView" type="HbListView">
                     <sizehint height="0un" type="MAXIMUM" width="0un"/>
                     <bool name="visible" value="FALSE"/>
                 </widget>
                 <widget name="collectionSearchListView" type="HbListView">
-                    <widget name="listViewItemPrototype" role="HbListView:prototype" type="HbListViewItem">
-                        <enums name="graphicsSize" value="Thumbnail"/>
+                    <widget name="listViewItemPrototype" role="HbAbstractView:prototype" type="HbListViewItem">
+                        <enums name="graphicsSize" value="LargeIcon"/>
                     </widget>
                     <bool name="itemRecycling" value="TRUE"/>
                     <enums name="horizontalScrollBarPolicy" value="ScrollBarAutoHide"/>
@@ -306,6 +366,15 @@
                     <bool name="frictionEnabled" value="TRUE"/>
                     <bool name="visible" value="TRUE"/>
                 </widget>
+                <widget name="collectionButton" type="HbPushButton">
+                    <sizehint height="0un" type="MAXIMUM" width="0un"/>
+                    <bool name="visible" value="FALSE"/>
+                </widget>
+                <widget name="collectionAppsEmptyLabel" type="HbLabel">
+                    <sizehint height="0un" type="MINIMUM" width="0un"/>
+                    <sizehint height="0un" type="MAXIMUM" width="0un"/>
+                    <bool name="visible" value="FALSE"/>
+                </widget>
                 <layout orientation="Vertical" type="linear">
                     <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
                     <linearitem itemname="collectionLabel"/>
@@ -317,16 +386,147 @@
             <bool name="contentFullScreen" value="TRUE"/>
         </widget>
     </section>
-    <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
-        <uistate name="Common ui state" sections="#common commonDefinition"/>
+    <section name="collectionButtonViewDefinition">
+        <widget name="collectionView" type="HbView">
+            <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>
+                <widget name="collectionListView" type="HbListView">
+                    <sizehint height="0un" type="MAXIMUM" width="0un"/>
+                    <bool name="visible" value="FALSE"/>
+                </widget>
+                <widget name="collectionSearchListView" type="HbListView">
+                    <sizehint height="0un" type="MAXIMUM" width="0un"/>
+                    <bool name="visible" value="FALSE"/>
+                </widget>
+                <widget name="searchPanel" type="HbSearchPanel">
+                    <sizehint height="0un" type="MAXIMUM" width="0un"/>
+                    <bool name="visible" value="FALSE"/>
+                </widget>
+                <widget name="collectionButtonContainer" type="HbWidget">
+                    <widget name="collectionButton" type="HbPushButton">
+                        <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
+                        <sizehint type="FIXED" width="50un"/>
+                        <sizehint height="10un" type="MINIMUM" width="50un"/>
+                        <sizehint height="10un" type="MAXIMUM" width="50un"/>
+                        <bool name="visible" value="TRUE"/>
+                    </widget>
+                    <sizehint height="11.9403un" type="PREFERRED" width="23.8806un"/>
+                    <layout orientation="Horizontal" type="linear">
+                        <stretchitem stretchfactor="1"/>
+                        <linearitem itemname="collectionButton"/>
+                        <stretchitem stretchfactor="1"/>
+                    </layout>
+                </widget>
+                <widget name="collectionAppsEmptyLabel" type="HbLabel">
+                    <sizehint height="0un" type="MINIMUM" width="0un"/>
+                    <sizehint height="0un" type="MAXIMUM" width="0un"/>
+                    <bool name="visible" value="FALSE"/>
+                </widget>
+                <layout orientation="Vertical" type="linear">
+                    <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
+                    <linearitem itemname="collectionLabel"/>
+                    <stretchitem stretchfactor="1"/>
+                    <linearitem itemname="collectionButtonContainer"/>
+                    <stretchitem stretchfactor="5"/>
+                </layout>
+            </widget>
+            <string locid="txt_applib_title_applications" name="title"/>
+            <bool name="contentFullScreen" value="FALSE"/>
+        </widget>
+    </section>
+    <section name="collectionEmptyLabelViewDefinition">
+        <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>
+                <widget name="collectionListView" type="HbListView">
+                    <sizehint height="0un" type="MAXIMUM" width="0un"/>
+                    <bool name="visible" value="FALSE"/>
+                </widget>
+                <widget name="collectionSearchListView" type="HbListView">
+                    <sizehint height="0un" type="MAXIMUM" width="0un"/>
+                    <bool name="visible" value="FALSE"/>
+                </widget>
+                <widget name="searchPanel" type="HbSearchPanel">
+                    <sizehint height="0un" type="MAXIMUM" width="0un"/>
+                    <bool name="visible" value="FALSE"/>
+                </widget>
+                <widget name="collectionButton" type="HbPushButton">
+                    <sizehint height="0un" type="MAXIMUM" width="0un"/>
+                    <bool name="visible" value="FALSE"/>
+                </widget>
+                <widget name="collectionEmpytLabelContainer" type="HbWidget">
+                    <widget name="collectionAppsEmptyLabel" type="HbLabel">
+                        <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Minimum" verticalStretch="0"/>
+                        <sizehint height="10un" type="MINIMUM" width="50un"/>
+                        <sizehint height="10un" type="MAXIMUM" width="50un"/>
+                        <string locid="txt_applib_formlabel_empty" name="plainText"/>
+                        <fontspec name="fontSpec" role="Title" textheight="4un"/>
+                        <enums name="elideMode" value="ElideMiddle"/>
+                        <enums name="alignment" value="AlignHCenter"/>                        
+                        <bool name="visible" value="TRUE"/>
+                    </widget>
+                    <sizehint height="11.9403un" type="PREFERRED" width="23.8806un"/>
+                    <layout orientation="Horizontal" type="linear">
+                        <stretchitem stretchfactor="1"/>
+                        <linearitem itemname="collectionAppsEmptyLabel"/>
+                        <stretchitem stretchfactor="1"/>
+                    </layout>
+                </widget>
+                <layout orientation="Vertical" type="linear">
+                    <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
+                    <linearitem itemname="collectionLabel"/>
+                    <stretchitem stretchfactor="1"/>
+                    <linearitem itemname="collectionEmpytLabelContainer"/>
+                    <stretchitem stretchfactor="5"/>
+                </layout>
+            </widget>
+            <string locid="txt_applib_title_applications" name="title"/>
+            <bool name="contentFullScreen" value="FALSE"/>
+        </widget>
+    </section>
+    <metadata activeUIState="collection view with empty label state" display="NHD portrait" unit="un">
+        <uistate name="Common ui state" sections="#common"/>
         <uistate name="all apps view state" sections="#common commonDefinition allAppsViewDefinition"/>
         <uistate name="all apps search view state" sections="#common commonDefinition allAppsSearchViewDefinition"/>
         <uistate name="all collections view state" sections="#common commonDefinition allCollectionsViewDefinition"/>
         <uistate name="all collections search view state" sections="#common commonDefinition allCollectionsSearchViewDefinition"/>
         <uistate name="installed apps view state" sections="#common commonDefinition installedAppsViewDefinition"/>
         <uistate name="installed apps search view state" sections="#common commonDefinition installedAppsSearchViewDefinition"/>
+        <uistate name="installed apps empty view state" sections="#common commonDefinition installedAppsEmptyLabelViewDefinition"/>
         <uistate name="collection view state" sections="#common commonDefinition collectionViewDefinition"/>
         <uistate name="collection search view state" sections="#common commonDefinition collectionSearchViewDefinition"/>
-        <dummydata objectName="allAppsSearchListView" section="allAppsSearchViewDefinition" value="app_list_template4"/>
+        <uistate name="collection view with button state" sections="#common commonDefinition collectionButtonViewDefinition"/>
+        <uistate name="collection view with empty label state" sections="#common commonDefinition collectionEmptyLabelViewDefinition"/>
+        <dummydata objectName="allAppsListView" section="allAppsViewDefinition" value="app_list_template5"/>
+        <dummydata objectName="allAppsSearchListView" section="allAppsViewDefinition" value="app_list_template5"/>
+        <dummydata objectName="allAppsListView" section="allAppsSearchViewDefinition" value="app_list_template5"/>
+        <dummydata objectName="allAppsSearchListView" section="allAppsSearchViewDefinition" value="app_list_template5"/>
+        <dummydata objectName="allCollectionsSearchListView" section="allCollectionsViewDefinition" value="app_list_template5"/>
+        <dummydata objectName="allCollectionsListView" section="allCollectionsViewDefinition" value="app_list_template5"/>
+        <dummydata objectName="allCollectionsSearchListView" section="allCollectionsSearchViewDefinition" value="app_list_template5"/>
+        <dummydata objectName="allCollectionsListView" section="allCollectionsSearchViewDefinition" value="app_list_template5"/>
+        <dummydata objectName="installedAppsListView" section="installedAppsViewDefinition" value="app_list_template5"/>
+        <dummydata objectName="installedAppsSearchListView" section="installedAppsViewDefinition" value="app_list_template5"/>
+        <dummydata objectName="installedAppsListView" section="installedAppsSearchViewDefinition" value="app_list_template5"/>
+        <dummydata objectName="installedAppsSearchListView" section="installedAppsSearchViewDefinition" value="app_list_template5"/>
+        <dummydata objectName="installedAppsListView" section="installedAppsEmptyLabelViewDefinition" value="app_list_template5"/>
+        <dummydata objectName="installedAppsSearchListView" section="installedAppsEmptyLabelViewDefinition" value="app_list_template5"/>
+        <dummydata objectName="collectionListView" section="collectionViewDefinition" value="app_list_template5"/>
+        <dummydata objectName="collectionSearchListView" section="collectionViewDefinition" value="app_list_template5"/>
+        <dummydata objectName="collectionListView" section="collectionSearchViewDefinition" value="app_list_template5"/>
+        <dummydata objectName="collectionSearchListView" section="collectionSearchViewDefinition" value="app_list_template5"/>
+        <dummydata objectName="collectionListView" section="collectionButtonViewDefinition" value="app_list_template5"/>
+        <dummydata objectName="collectionSearchListView" section="collectionButtonViewDefinition" value="app_list_template5"/>
+        <dummydata objectName="collectionListView" section="collectionEmptyLabelViewDefinition" value="app_list_template5"/>
+        <dummydata objectName="collectionSearchListView" section="collectionEmptyLabelViewDefinition" value="app_list_template5"/>
     </metadata>
 </hbdocument>
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsallappsstate.cpp	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsallappsstate.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -36,6 +36,7 @@
 #include "hsmenumodetransition.h"
 #include "caentry.h"
 #include "caservice.h"
+#include "hsmainwindow.h"
 
 /*!
  \class HsAllAppsState
@@ -75,12 +76,15 @@
  */
 HsAllAppsState::HsAllAppsState(HsMenuViewBuilder &menuViewBuilder,
                                HsMenuModeWrapper &menuMode,
+                               HsMainWindow &mainWindow,
                                QState *parent) :
     QState(parent), mSortAttribute(AscendingNameHsSortAttribute),
     mCollectionsSortAttribute(LatestOnTopHsSortAttribute),
     mMenuView(menuViewBuilder, HsAllAppsContext),
     mMenuMode(menuMode),
-    mAllAppsModel(0), mContextModelIndex(), mContextMenu(0)
+    mAllAppsModel(0),
+    mMainWindow(mainWindow),
+    mContextModelIndex(), mContextMenu(0)
 {
     construct();
 }
@@ -207,6 +211,7 @@
     qDebug("AllAppsState::stateEntered()");
     HSMENUTEST_FUNC_ENTRY("HsAllAppsState::stateEntered");
 
+    mMainWindow.setCurrentView(mMenuView);
     mMenuView.activate();
 
     HSMENUTEST_FUNC_EXIT("HsAllAppsState::stateEntered");
@@ -345,18 +350,25 @@
                                     "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());
+    EntryFlags flags = item->modelIndex().data(
+                           CaItemModel::FlagsRole).value<EntryFlags> ();
 
     if (!(entry->attribute(appSettingsPlugin()).isEmpty())) {
         appSettingsAction = mContextMenu->addAction(hbTrId(
                                                 "txt_common_menu_settings"));
         appSettingsAction->setData(AppSettingContextAction);
     }
-    EntryFlags flags = item->modelIndex().data(
-                           CaItemModel::FlagsRole).value<EntryFlags> ();
+    if (!(entry->attribute(componentIdAttributeName()).isEmpty()) && 
+            (flags & RemovableEntryFlag) ) {
+        appDetailsAction = mContextMenu->addAction(hbTrId(
+                                                "txt_common_menu_details"));
+        appDetailsAction->setData(AppDetailsContextAction);
+    }        
 
     if (!(flags & RemovableEntryFlag)) {
         uninstallAction->setVisible(false);
@@ -393,12 +405,18 @@
                     mSortAttribute, mCollectionsSortAttribute, itemId));
             break;
         case UninstallContextAction:
-            HsMenuService::executeAction(itemId, removeActionIdentifier());
+            machine()->postEvent(
+                HsMenuEventFactory::createUninstallApplicationEvent(
+                    itemId));
             break;
         case AppSettingContextAction: 
             machine()->postEvent(
                 HsMenuEventFactory::createAppSettingsViewEvent(itemId));
             break;
+        case AppDetailsContextAction: 
+            machine()->postEvent(
+                HsMenuEventFactory::createAppDetailsViewEvent(itemId));
+            break;            
         default:
             break;
     }
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsallcollectionsstate.cpp	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsallcollectionsstate.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -33,6 +33,7 @@
 #include "hsallcollectionsstate.h"
 #include "hsaddappstocollectionstate.h"
 #include "hsmenumodetransition.h"
+#include "hsmainwindow.h"
 
 /*!
  \class HsAllCollectionsState
@@ -74,12 +75,15 @@
 HsAllCollectionsState::HsAllCollectionsState(
     HsMenuViewBuilder &menuViewBuilder,
     HsMenuModeWrapper &menuMode,
+    HsMainWindow &mainWindow,
     QState *parent):
     QState(parent),
     mSortAttribute(CustomHsSortAttribute),
     mMenuView(menuViewBuilder, HsAllCollectionsContext),
     mMenuMode(menuMode),
-    mAllCollectionsModel(0), mContextModelIndex(), mContextMenu(0)
+    mAllCollectionsModel(0),
+    mMainWindow(mainWindow),
+    mContextModelIndex(), mContextMenu(0)
 {
     construct();
 }
@@ -214,6 +218,7 @@
     qDebug("AllCollectionsState::stateEntered()");
     HSMENUTEST_FUNC_ENTRY("HsAllCollectionsState::stateEntered");
 
+    mMainWindow.setCurrentView(mMenuView);
     mMenuView.activate();
 
     HSMENUTEST_FUNC_EXIT("HsAllCollectionsState::stateExited");
@@ -344,9 +349,6 @@
 {
     HSMENUTEST_FUNC_ENTRY("HsAllCollectionsState::listItemLongPressed");
 
-
-    const int itemId = item->modelIndex().data(CaItemModel::IdRole).toInt();
-
     mContextMenu = new HbMenu;
 
     // create context menu
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsapplibrarystate.cpp	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsapplibrarystate.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -119,10 +119,11 @@
     HSMENUTEST_FUNC_ENTRY("HsAppLibraryState::construct");
     setObjectName("homescreen.nokia.com/state/applibrarystate");
 
-    mAllAppsState = new HsAllAppsState(mMenuViewBuilder, mMenuMode, this);
+    mAllAppsState = new HsAllAppsState(mMenuViewBuilder, mMenuMode, mMainWindow, this);
     connect(this, SIGNAL(entered()),mAllAppsState, SLOT(scrollToBeginning()));
 
-    mAllCollectionsState = new HsAllCollectionsState(mMenuViewBuilder, mMenuMode, this);
+    mAllCollectionsState = new HsAllCollectionsState(mMenuViewBuilder, mMenuMode,
+            mMainWindow, this);
     connect(this, SIGNAL(entered()),
             mAllCollectionsState, SLOT(scrollToBeginning()));
 
@@ -138,14 +139,15 @@
 
     mCollectionState = new HsCollectionState(mMenuViewBuilder,
             mMenuMode,
+            mMainWindow,
             this);
 
     connect(mCollectionState, SIGNAL(entered()),SLOT(clearToolbarLatch()));
 
     HsMenuEventTransition *eventTransition =
         new HsMenuEventTransition(HsMenuEvent::OpenCollection,
-                                  mAllCollectionsState, mCollectionState);
-    mAllCollectionsState->addTransition(eventTransition);
+                                  this, mCollectionState);
+    this->addTransition(eventTransition);
 
     HsMenuEventTransition *collectionDeletedTransition =
         new HsMenuEventTransition(HsMenuEvent::CollectionDeleted,
@@ -159,7 +161,7 @@
     mCollectionState->addTransition(collectionToAppLibTransition);
 
     mInstalledAppsState = new HsInstalledAppsState(
-        mMenuViewBuilder, this);
+        mMenuViewBuilder, mMainWindow, this);
 
     HsMenuEventTransition *installedToAppLibTransition =
         new HsMenuEventTransition(HsMenuEvent::OpenApplicationLibrary,
@@ -294,6 +296,7 @@
     if (checkedAction != NULL) {
         checkedAction->setChecked(false);
     }
+    emit collectionEntered();
     HSMENUTEST_FUNC_EXIT("HsAppLibraryState::clearToolbarLatch");
 }
 
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hscollectionstate.cpp	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hscollectionstate.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -19,6 +19,7 @@
 
 #include <HbGroupBox>
 #include <HbListView>
+#include <HbPushButton>
 #include <hbview.h>
 #include <hbaction.h>
 #include <hbabstractviewitem.h>
@@ -37,7 +38,7 @@
 #include "hscollectionstate.h"
 #include "hsaddappstocollectionstate.h"
 #include "hsapp_defs.h"
-
+#include "hsmainwindow.h"
 
 /*!
  \class HsCollectionState
@@ -118,6 +119,7 @@
 */
 HsCollectionState::HsCollectionState(HsMenuViewBuilder &menuViewBuilder,
                                      HsMenuModeWrapper &menuMode,
+                                     HsMainWindow &mainWindow,
                                      QState *parent) :
     QState(parent),
     mSortAttribute(LatestOnTopHsSortAttribute),
@@ -127,7 +129,8 @@
     mMenuMode(menuMode),
     mSecondarySoftkeyAction(new HbAction(Hb::BackNaviAction, this)),
     mCollectionModel(0),
-    mOptions(0), mContextModelIndex(), mContextMenu(0)
+    mOptions(0), mContextModelIndex(), mContextMenu(0),
+    mMainWindow(mainWindow)
 {
     construct();
 }
@@ -138,17 +141,16 @@
 void HsCollectionState::construct()
 {
     HSMENUTEST_FUNC_ENTRY("HsCollectionState::construct");
+
     const QString parentName =
         parent() != 0 ? parent()->objectName() : QString("");
     setObjectName(parentName + "/collectionstate");
 
-
     connect(this, SIGNAL(entered()),SLOT(stateEntered()));
     connect(this, SIGNAL(exited()),SLOT(stateExited()));
 
     makeConnect();
-    mMenuView.view()->
-    setNavigationAction(mSecondarySoftkeyAction);
+    mMenuView.view()->setNavigationAction(mSecondarySoftkeyAction);
 
     HSMENUTEST_FUNC_EXIT("HsCollectionState::construct");
 }
@@ -196,22 +198,37 @@
 {
     HSMENUTEST_FUNC_ENTRY("HsCollectionState::stateEntered");
 
+    mMainWindow.setCurrentView(mMenuView);
     mMenuView.activate();
 
     if (!mCollectionModel) {
         mCollectionModel =
             HsMenuService::getCollectionModel(
                 mCollectionId, mSortAttribute, mCollectionType);
-    } else {
-        if (mCollectionType == collectionDownloadedTypeName()) {
-            mCollectionModel->setFlagsOn(RemovableEntryFlag | VisibleEntryFlag);
+    }
+    
+    EntryFlags flags =
+        mCollectionModel->root().data(CaItemModel::FlagsRole).value<
+        EntryFlags> ();
+
+    if (mCollectionModel->rowCount() == 0){
+        if (flags & RemovableEntryFlag){
+            mMenuView.setContext(HsCollectionContext,HsButtonContext);
         } else {
-            mCollectionModel->setFlagsOn(VisibleEntryFlag);
+            mMenuView.setContext(HsCollectionContext,HsEmptyLabelContext);
         }
-        mCollectionModel->setParentId(mCollectionId);
-        mCollectionModel->setSort(LatestOnTopHsSortAttribute);
+        mMenuView.disableSearch(true);
+    } else {
+        mMenuView.setContext(HsCollectionContext,HsItemViewContext);
+        mMenuView.disableSearch(false);
     }
 
+    connect(mCollectionModel, SIGNAL(modelReset()), SLOT(updateLabel()));
+    connect(mCollectionModel, SIGNAL(empty(bool)),this,
+            SLOT(handleEmptyChange(bool)));
+    connect(mCollectionModel, SIGNAL(empty(bool)),this,
+            SLOT(lockSearchButton(bool)));
+
     mMenuView.setModel(mCollectionModel);
 
     mMenuView.listView()->scrollTo(
@@ -226,10 +243,6 @@
                             this,
                             SLOT(openTaskSwitcher()));
 
-        EntryFlags flags =
-            mCollectionModel->root().data(CaItemModel::FlagsRole).value<
-            EntryFlags> ();
-
         if (flags & RemovableEntryFlag) {
             mOptions->addAction(hbTrId("txt_applib_opt_add_content"), this,
                                 SLOT(addAppsAction()));
@@ -283,8 +296,17 @@
 {
     HSMENUTEST_FUNC_ENTRY("HsCollectionState::stateExited");
 
+    mMenuView.inactivate();
     mMenuView.setSearchPanelVisible(false);
-    mMenuView.inactivate();
+    mMenuView.disableSearch(false);
+    disconnect(mCollectionModel, SIGNAL(empty(bool)),this,
+               SLOT(handleEmptyChange(bool)));
+
+    disconnect(mCollectionModel, SIGNAL(empty(bool)),this,
+               SLOT(lockSearchButton(bool)));
+
+    disconnect(mCollectionModel, SIGNAL(modelReset()),
+                   this, SLOT(updateLabel()));
     delete mCollectionModel;
     mCollectionModel = NULL;
     delete mOptions;
@@ -292,6 +314,7 @@
     if (mContextMenu)
         mContextMenu->close();
     HSMENUTEST_FUNC_EXIT("HsCollectionState::stateExited");
+    this->mSortAttribute = NoHsSortAttribute;
     qDebug("CollectionState::stateExited()");
 }
 
@@ -308,7 +331,9 @@
     connect(&mMenuView,
             SIGNAL(longPressed(HbAbstractViewItem *, QPointF)),
             SLOT(listItemLongPressed(HbAbstractViewItem *, QPointF)));
-    connect(mCollectionModel, SIGNAL(modelReset()),SLOT(updateLabel()));
+    connect(mMenuView.collectionButton(),
+            SIGNAL(released()), this, SLOT(addAppsAction()));
+
 }
 
 /*!
@@ -316,12 +341,12 @@
  */
 void HsCollectionState::makeDisconnect()
 {
+    disconnect(mMenuView.collectionButton(),
+            SIGNAL(pressed()), this, SLOT(addAppsAction()));
+
     disconnect(mSecondarySoftkeyAction, SIGNAL(triggered()),
                this, SLOT(backSteppingAction()));
 
-    disconnect(mCollectionModel, SIGNAL(modelReset()),
-               this, SLOT(updateLabel()));
-
     disconnect(&mMenuView,
                SIGNAL(activated(QModelIndex)),
                this, SLOT(listItemActivated(QModelIndex)));
@@ -391,6 +416,7 @@
     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 =
@@ -417,7 +443,13 @@
                                                 "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);
@@ -447,7 +479,9 @@
                     mCollectionId, itemId, mCollectionsSortAttribute));
             break;
         case UninstallContextAction:
-            HsMenuService::executeAction(itemId, removeActionIdentifier());
+            machine()->postEvent(
+                HsMenuEventFactory::createUninstallApplicationEvent(
+                    itemId));
             break;
         case RemoveFromCollectionContextAction:
             machine()->postEvent(
@@ -458,6 +492,10 @@
             machine()->postEvent(
                 HsMenuEventFactory::createAppSettingsViewEvent(itemId));
             break;
+        case AppDetailsContextAction: 
+            machine()->postEvent(
+                HsMenuEventFactory::createAppDetailsViewEvent(itemId));
+            break;                 
         default:
             break;
     }
@@ -466,6 +504,36 @@
 }
 
 /*!
+ Handles button visibility
+ */
+void HsCollectionState::handleEmptyChange(bool empty)
+{
+    EntryFlags flags =
+        mCollectionModel->root().data(CaItemModel::FlagsRole).value<
+        EntryFlags> ();
+
+    if (empty){
+        if (flags & RemovableEntryFlag){
+            mMenuView.setContext(HsCollectionContext,HsButtonContext);
+        } else {
+            mMenuView.setContext(HsCollectionContext,HsEmptyLabelContext);
+        }
+    } else {
+        mMenuView.setContext(HsCollectionContext,HsItemViewContext);
+    }
+}
+
+
+/*!
+ Handles lock serch button
+ */
+void HsCollectionState::lockSearchButton(bool lock)
+{
+    mMenuView.disableSearch(lock);
+}
+
+
+/*!
  Menu add applications action slot
  */
 void HsCollectionState::addAppsAction()
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsinstalledappsstate.cpp	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsinstalledappsstate.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -34,6 +34,7 @@
 #include "hsaddappstocollectionstate.h"
 #include "hsapp_defs.h"
 #include "hsmenumodetransition.h"
+#include "hsmainwindow.h"
 
 /*!
  \class HsInstalledAppsState
@@ -75,11 +76,13 @@
  \param parent Owner.
  */
 HsInstalledAppsState::HsInstalledAppsState(HsMenuViewBuilder &menuViewBuilder,
+        HsMainWindow &mainWindow,
         QState *parent):
     QState(parent),
     mMenuView(menuViewBuilder, HsInstalledAppsContext),
     mInstalledAppsModel(0),
     mSecondarySoftkeyAction(new HbAction(Hb::BackNaviAction, this)),
+    mMainWindow(mainWindow),
     mContextModelIndex(),mContextMenu(0)
 {
     construct();
@@ -146,6 +149,7 @@
     qDebug("AllAppsState::stateEntered()");
     HSMENUTEST_FUNC_ENTRY("HsInstalledAppsState::stateEntered");
 
+    mMainWindow.setCurrentView(mMenuView);
     mMenuView.activate();
 
     if (!mInstalledAppsModel) {
@@ -154,6 +158,10 @@
         mMenuView.setModel(mInstalledAppsModel);
     }
 
+    if (mInstalledAppsModel->rowCount() == 0){
+        mMenuView.setContext(HsInstalledAppsContext,HsEmptyLabelContext);
+        }
+
     mMenuView.listView()->scrollTo(
         mInstalledAppsModel->index(0));
 
@@ -164,6 +172,9 @@
             SIGNAL(longPressed(HbAbstractViewItem *, QPointF)),
             SLOT(listItemLongPressed(HbAbstractViewItem *, QPointF)));
 
+    connect(mInstalledAppsModel, SIGNAL(empty(bool)),this,
+            SLOT(setEmptyLabelVisibility(bool)));
+
     mMenuView.viewLabel()->setHeading(
         hbTrId("txt_applib_subtitle_installed"));
 
@@ -177,6 +188,9 @@
 {
     HSMENUTEST_FUNC_ENTRY("HsInstalledAppsState::stateExited");
 
+    disconnect(mInstalledAppsModel, SIGNAL(empty(bool)),this,
+               SLOT(setEmptyLabelVisibility(bool)));
+
     mMenuView.setSearchPanelVisible(false);
     mMenuView.inactivate();
 
@@ -188,6 +202,18 @@
 }
 
 /*!
+ Handles button visibility
+ */
+void HsInstalledAppsState::setEmptyLabelVisibility(bool visibility)
+{
+    if(visibility){
+        mMenuView.setContext(HsInstalledAppsContext,HsEmptyLabelContext);
+    } else {
+        mMenuView.setContext(HsInstalledAppsContext,HsItemViewContext);
+    }
+}
+
+/*!
  Open task switcher.
  \retval true if operation is successful.
  */
@@ -229,7 +255,19 @@
 
     HbAction *uninstallAction = mContextMenu->addAction(
                                     hbTrId("txt_common_menu_delete"));
+    HbAction *appDetailsAction(NULL);
     uninstallAction->setData(UninstallContextAction);
+    
+    QSharedPointer<const CaEntry> entry = mInstalledAppsModel->entry(item->modelIndex());
+    EntryFlags flags = item->modelIndex().data(
+                           CaItemModel::FlagsRole).value<EntryFlags> ();
+    
+    if (!(entry->attribute(componentIdAttributeName()).isEmpty()) && 
+            (flags & RemovableEntryFlag) ) {
+        appDetailsAction = mContextMenu->addAction(hbTrId(
+                                                "txt_common_menu_details"));
+        appDetailsAction->setData(AppDetailsContextAction);
+    }      
 
     mContextModelIndex = item->modelIndex();
     mContextMenu->setPreferredPos(coords);
@@ -247,13 +285,25 @@
  Handles context menu actions
  */
 void HsInstalledAppsState::contextMenuAction(HbAction *action)
-{
-    HsContextAction command = static_cast<HsContextAction>(action->data().toInt());
-    if (command == UninstallContextAction) {
-        const int itemId = mContextModelIndex.data(
-                                   CaItemModel::IdRole).toInt();
-        HsMenuService::executeAction(itemId, removeActionIdentifier());
-    }   
+{    
+    HsContextAction command = 
+            static_cast<HsContextAction>(action->data().toInt());
+    
+    const int itemId = mContextModelIndex.data(CaItemModel::IdRole).toInt();
+    
+    switch (command) {
+        case UninstallContextAction:
+            machine()->postEvent(
+                HsMenuEventFactory::createUninstallApplicationEvent(
+                    itemId));
+            break;
+        case AppDetailsContextAction: 
+            machine()->postEvent(
+                HsMenuEventFactory::createAppDetailsViewEvent(itemId));
+            break;            
+        default:
+            break;            
+    }
     mMenuView.setSearchPanelVisible(false);
 }
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsmainwindow.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -0,0 +1,59 @@
+/*
+ * 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 view.
+ *
+ */
+
+#include <HbMainWindow>
+#include <HbView>
+#include <HbInstance>
+#include "hsmainwindow.h"
+#include "hsmenuview.h"
+
+/*!
+ Constructor
+ */
+HsMainWindow::HsMainWindow()
+{
+}
+
+/*!
+ Destructor
+ */
+HsMainWindow::~HsMainWindow()
+{
+}
+
+/*!
+ Add the \menuView to first instance of HbMainWindow registered in HbInstance.
+ \param view View to be added to HbMainWindow.
+*/
+void HsMainWindow::setCurrentView(const HsMenuView &menuView)
+{
+    HbMainWindow *const hbW(
+        HbInstance::instance()->allMainWindows().value(0));
+
+    HbView *const view = menuView.view();
+    
+    if (!hbW->views().contains(view)) {
+        hbW->addView(view);
+    }
+    if (hbW->currentView() && !hbW->currentView()->isContentFullScreen()) {
+        // quick trick to know if we are not comming from IDLE
+        hbW->setCurrentView(view, true, Hb::ViewSwitchUseAltEvent);
+    } else {
+        hbW->setCurrentView(view);
+    }    
+}
+
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsmenuview.cpp	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsmenuview.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -24,9 +24,11 @@
 #include <HbMainWindow>
 #include <HbInstance>
 #include <HbSearchPanel>
+#include <HbPushButton>
 #include <HbToolBar>
 #include <HbView>
 #include <HbToolBarExtension>
+#include <HbStaticVkbHost>
 
 #include "hsallappsstate.h"
 #include "hsallcollectionsstate.h"
@@ -62,7 +64,8 @@
     mListView(NULL),
     mViewLabel(NULL),
     mSearchListView(NULL),
-    mSearchPanel(NULL)
+    mSearchPanel(NULL), 
+    mVkbHost(NULL)
 {
     mBuilder.setOperationalContext(HsItemViewContext);
     mBuilder.setViewContext(mViewContext);
@@ -72,10 +75,16 @@
     mListView = mBuilder.currentListView();
     mViewLabel= mBuilder.currentViewLabel();
 
+    mCollectionButton = mBuilder.collectionButton();
+
     mProxyModel->setFilterRole(CaItemModel::TextRole);
     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()));
+
     connect(mListView,
             SIGNAL(activated(QModelIndex)),
             this, SIGNAL(activated(QModelIndex)));
@@ -103,18 +112,20 @@
 {
     HSMENUTEST_FUNC_ENTRY("HsMenuView::setModel");
 
-    disconnect(mListView->model(),
-               SIGNAL(scrollTo(int, QAbstractItemView::ScrollHint)),
-               this,
-               SLOT(scrollToRow(int, QAbstractItemView::ScrollHint)));
-
+    if (mListView->model()) {
+        disconnect(mListView->model(),
+                   SIGNAL(scrollTo(int, QAbstractItemView::ScrollHint)),
+                   this,
+                   SLOT(scrollToRow(int, QAbstractItemView::ScrollHint)));
+    }
     mListView->setModel(model);
 
-    connect(mListView->model(),
-            SIGNAL(scrollTo(int, QAbstractItemView::ScrollHint)),
-            this,
-            SLOT(scrollToRow(int, QAbstractItemView::ScrollHint)));
-
+    if (mListView->model()) {
+        connect(mListView->model(),
+                SIGNAL(scrollTo(int, QAbstractItemView::ScrollHint)),
+                this,
+                SLOT(scrollToRow(int, QAbstractItemView::ScrollHint)));
+    }
     HSMENUTEST_FUNC_EXIT("HsMenuView::setModel");
 }
 
@@ -123,7 +134,7 @@
     Returns label appropriate for the view.
     \return pointer to the label or NULL if the view has no label.
  */
-HbGroupBox *HsMenuView::viewLabel()
+HbGroupBox *HsMenuView::viewLabel() const
 {
     return mViewLabel;
 }
@@ -178,9 +189,23 @@
 }
 
 /*!
+    Makes the UI to show or hide view add collection button
+    \param visibility When true button will be shown,
+     otherwise it will be hidden.
+ */
+void HsMenuView::setContext(HsViewContext viewContext,
+                            HsOperationalContext context)
+{
+    mBuilder.setViewContext(viewContext);
+    mBuilder.setOperationalContext(context);
+    mBuilder.build();
+}
+
+
+/*!
 \return View widget of the menu view.
  */
-HbView *HsMenuView::view()
+HbView *HsMenuView::view() const
 {
     return mView;
 }
@@ -188,12 +213,20 @@
 /*!
 \return List view widget of the menu view.
  */
-HbListView *HsMenuView::listView()
+HbListView *HsMenuView::listView() const
 {
     return mListView;
 }
 
 /*!
+\return Collection button
+ */
+HbPushButton *HsMenuView::collectionButton() const
+{
+    return mCollectionButton;
+}
+
+/*!
  Makes search panel visible.
  Equivalent to \a setSearchPanelVisible(true)
  */
@@ -224,6 +257,15 @@
 #endif //COVERAGE_MEASUREMENT
 
 /*!
+ Disable or enable search action button.
+ \param disable If true action is disabled.
+ */
+void HsMenuView::disableSearch(bool disable)
+{
+    mBuilder.searchAction()->setDisabled(disable);
+}
+
+/*!
  Scrolls item view to requested row.
  \param row The row which is to get at the position pointed by \a hint.
  \param hint Position in the view the row should be scrolled to.
@@ -328,6 +370,8 @@
     HSMENUTEST_FUNC_ENTRY("hsmenuview::findItem");
 
     if ("" != criteriaStr) {
+        mProxyModel->invalidate();
+        mProxyModel->setSourceModel(mListView->model());
         mProxyModel->setFilterRegExp(QRegExp(criteriaStr,
                                              Qt::CaseInsensitive, QRegExp::FixedString));
         mSearchListView->scrollTo(mProxyModel->index(0,0),
@@ -392,6 +436,7 @@
 
     mSearchListView = NULL;
     mSearchPanel = NULL;
+    vkbClosed();
     HSMENUTEST_FUNC_EXIT("hsmenuview::searchFinished");
 }
 
@@ -424,32 +469,13 @@
 }
 
 /*!
- Add the \view to first instance of HbMainWindow registered in HbInstance.
- \param view View to be added to HbMainWindow.
- */
-void HsMenuView::addViewToMainWindow(HbView *view)
-{
-    HbMainWindow *const hbW(
-        HbInstance::instance()->allMainWindows().value(0));
-
-    if (!hbW->views().contains(view)) {
-        hbW->addView(view);
-    }
-    hbW->setCurrentView(view);
-}
-
-
-/*!
  Add the view to main window and search action with \a showSearchPanel
  slot of the window.
  */
 void HsMenuView::activate()
 {
-    addViewToMainWindow(mView);
-
     connect(mBuilder.searchAction(), SIGNAL(triggered()),
             this, SLOT(showSearchPanel()));
-
 }
 
 /*!
@@ -465,4 +491,19 @@
 }
 
 
+/*!
+ 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	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsmenuviewbuilder.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -23,6 +23,7 @@
 #include <HbListView>
 #include <HbLineEdit>
 #include <HbSearchPanel>
+#include <HbPushButton>
 #include <HbToolBar>
 #include <HbView>
 #include <HbWidget>
@@ -34,34 +35,6 @@
 #include "hsmenuviewbuilder.h"
 #include "hsmenustates_global.h"
 
-// TODO this class is temprary solution, proper one should come from Orbit
-class HsVkbHost : public HbStaticVkbHost
-{
-public:
-    explicit HsVkbHost(HbWidget *target):
-        HbStaticVkbHost(target), mWidget(target) {}
-
-#ifdef COVERAGE_MEASUREMENT
-#pragma CTC SKIP
-#endif //COVERAGE_MEASUREMENT skipped: its very temporary TODO
-    void openFinished() {
-        updateViewHeight(applicationArea().height());
-    }
-
-    void closeFinished() {
-        updateViewHeight(-1);
-    }
-
-    void updateViewHeight(qreal height) {
-        HbView *view = mWidget->mainWindow()->currentView();
-        view->setMaximumHeight(height);
-    }
-#ifdef COVERAGE_MEASUREMENT
-#pragma CTC ENDSKIP
-#endif //COVERAGE_MEASUREMENT
-
-    HbWidget *mWidget;
-};
 
 /*!
     \class HsMenuViewBuilder
@@ -85,19 +58,12 @@
 void HsMenuViewBuilder::searchPanelVisibilityChange(bool visible)
 {
     if (visible) {
-        // TODO this is temprary solution, proper solution should come from Orbit
-        if (!HbVkbHost::getVkbHost(currentSearchPanel())) {
-            new HsVkbHost(currentSearchPanel());
-        }
+
         HbLineEdit *const lineEdit(searchPanelLineEdit());
 
         lineEdit->setText("");
-    } else {
-        if (static_cast<HsVkbHost *>(HbVkbHost::getVkbHost(currentSearchPanel()))) {
-            static_cast<HsVkbHost *>(HbVkbHost::getVkbHost(currentSearchPanel()))->
-            updateViewHeight(-1);
-        }
-    }
+        lineEdit->setFocus();
+    } 
 
 }
 
@@ -118,7 +84,6 @@
     if (view != NULL && mViewContext != HsInstalledAppsContext) {
         view->setToolBar(mToolBar);
     }
-
     return view;
 }
 
@@ -130,9 +95,11 @@
  */
 HbListView *HsMenuViewBuilder::currentListView() const
 {
-    const QString LIST_VIEW_NAME = mViewContextToStringMap[mViewContext]
-                                   + mOperationalContextToStringMap[mOperationalContext]
-                                   + "ListView";
+    QString LIST_VIEW_NAME = mViewContextToStringMap[mViewContext];
+    if (mOperationalContext == HsSearchContext) {
+        LIST_VIEW_NAME.append(mOperationalContextToStringMap[mOperationalContext]);
+    }
+    LIST_VIEW_NAME.append("ListView");
 
     return qobject_cast<HbListView *>(
                mDocumentLoader.findWidget(LIST_VIEW_NAME));
@@ -166,6 +133,17 @@
 }
 
 /*!
+ \return pointer to a button
+ The pointer is valid until the HsMenuViewBuilder instance is destroyed.
+ Memory ownership is not changed.
+ */
+HbPushButton *HsMenuViewBuilder::collectionButton() const
+{
+    return qobject_cast<HbPushButton *>(mDocumentLoader.findWidget(
+            BUTTON_NAME));
+}
+
+/*!
  \return pointer to All Applications Action. Guaranteed to be not NULL.
  The pointer is valid until the HsMenuViewBuilder instance is destroyed.
  Memory ownership is not changed.
@@ -265,13 +243,13 @@
  */
 HsMenuViewBuilder::HsMenuViewBuilder():
     DOCUMENT_FILE_NAME(":/xml/applibrary.docml"),
-    COMMON_SECTION_NAME("commonDefinitions"),
     ALL_APPS_ACTION_NAME("allAppsAction"),
     ALL_COLLECTIONS_ACTION_NAME("allCollectionsAction"),
     SEARCH_ACTION_NAME("searchAction"),
     OVI_STORE_ACTION_NAME("oviStoreAction"),
     OPERATOR_ACTION_NAME("operatorAction"),
     SEARCH_PANEL_NAME("searchPanel"),
+    BUTTON_NAME("collectionButton"),
     TOOL_BAR_NAME("toolBar"),
     mToolBar(new HbToolBar),
     mToolBarExtension(new HbToolBarExtension),
@@ -281,7 +259,7 @@
     init();
 
     // parse common section and the one specified by view options
-    const bool result = parseSection(COMMON_SECTION_NAME);
+    const bool result = parseSection();
 
     Q_ASSERT_X(result,
                "HsMenuViewBuilder::HsMenuViewBuilder()",
@@ -319,12 +297,10 @@
     HSMENUTEST_FUNC_ENTRY("HsMenuViewBuilder::parseSection");
 
     bool loadStatusOk = false;
-
     const QObjectList loadedObjects =
         mDocumentLoader.load(DOCUMENT_FILE_NAME,
                              sectionName,
-                             &loadStatusOk);
-
+                             &loadStatusOk); 
     mLoadedObjects |= loadedObjects.toSet();
 
     Q_ASSERT_X(loadStatusOk,
@@ -377,6 +353,9 @@
     mViewContextToStringMap[HsCollectionContext] = "collection";
     mOperationalContextToStringMap[HsItemViewContext] = "";
     mOperationalContextToStringMap[HsSearchContext] = "Search";
+    mOperationalContextToStringMap[HsButtonContext] = "Button";
+    mOperationalContextToStringMap[HsEmptyLabelContext] = "EmptyLabel";
+
 }
 
 /*!
@@ -395,7 +374,6 @@
 void HsMenuViewBuilder::setOperationalContext(
     HsOperationalContext operationalContext)
 {
-
     mOperationalContext = operationalContext;
 }
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/inc/hsbackuprestorestate.h	Wed Jun 23 17:05:06 2010 +0100
@@ -0,0 +1,52 @@
+/*
+* 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:  
+*
+*/
+
+#ifndef HSBACKUPRESTORESTATE_H
+#define HSBACKUPRESTORESTATE_H
+
+#include <QState>
+#include "hstest_global.h"
+HOMESCREEN_TEST_CLASS(HomeScreenStatePluginTest)
+
+class HsDatabase;
+
+class HsBackupRestoreState : public QState
+{
+    Q_OBJECT
+
+public:
+    HsBackupRestoreState(QState *parent = 0);
+    ~HsBackupRestoreState();
+
+signals:
+	void event_loadScene(); 
+
+private slots:    
+    void action_startListenBURStatus();    
+    void action_stopListenBURStatus();
+
+private:
+    void deleteIdleView();
+    Q_DISABLE_COPY(HsBackupRestoreState)
+
+private:	
+	QScopedPointer<HsDatabase> mDatabase;
+    
+    HOMESCREEN_TEST_FRIEND_CLASS(HomeScreenStatePluginTest)
+};
+
+#endif // HSBACKUPRESTORESTATE_H
--- a/homescreenapp/stateplugins/hshomescreenstateplugin/inc/hsidlestate.h	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/inc/hsidlestate.h	Wed Jun 23 17:05:06 2010 +0100
@@ -21,6 +21,7 @@
 #include <QState>
 #include <QTimer>
 #include <QPointF>
+#include <QPointer>
 
 #include "hstest_global.h"
 HOMESCREEN_TEST_CLASS(HomeScreenStatePluginTest)
@@ -28,7 +29,6 @@
 class QGraphicsItem;
 class QGraphicsSceneMouseEvent;
 class QPropertyAnimation;
-class HbView;
 class HbAction;
 class HbContinuousFeedback;
 class HsIdleWidget;
@@ -75,6 +75,7 @@
     void addPageToScene(int pageIndex);
     qreal parallaxFactor() const;
     void updateZoneAnimation();
+    void showTrashBin();
     void removeActivePage();
 
 private slots:
@@ -135,29 +136,23 @@
     void moveScene_onMouseReleased(
         QGraphicsItem *watched, QGraphicsSceneMouseEvent *event, bool &filtered);
 
-    void onOrientationChanged(Qt::Orientation orientation);
-
     void widgetInteraction_onTapAndHoldTimeout();
     void sceneInteraction_onTapAndHoldTimeout();
-
     void onTitleChanged(QString title);
-
     void onAddContentActionTriggered();
-
     bool openTaskSwitcher();
     void zoneAnimationFinished();
+    void onSceneMenuTriggered(HbAction *action);
+    void onRemovePageConfirmationOk();
     void onSceneMenuAboutToClose();
-    void onRemovePageMessageBoxClosed(HbAction *action);
 
 private:
-    HbView *mView;
     HbAction *mNavigationAction;
     HsIdleWidget *mUiWidget;
+    
     QTimer mTimer;
-    qreal mTapAndHoldDistance;
-    qreal mPageChangeZoneWidth;
 
-    QPointF mSceneMenuPos;
+    QPointF mTouchScenePos;
     HsTitleResolver *mTitleResolver;
     QPropertyAnimation *mZoneAnimation;
     bool mPageChanged;
@@ -167,6 +162,7 @@
     bool mTrashBinFeedbackAlreadyPlayed;
 
     qreal mDeltaX;
+    QPointer<HbMenu> mSceneMenu;
 #ifdef Q_OS_SYMBIAN    
     XQSettingsManager *mSettingsMgr;
 #endif    
--- a/homescreenapp/stateplugins/hshomescreenstateplugin/inc/hsloadscenestate.h	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/inc/hsloadscenestate.h	Wed Jun 23 17:05:06 2010 +0100
@@ -19,6 +19,11 @@
 #define HSLOADSCENESTATE_H
 
 #include <QState>
+#ifdef Q_OS_SYMBIAN
+#include <XQSettingsKey>
+
+class XQSettingsManager;
+#endif
 
 class HsLoadSceneState : public QState
 {
@@ -27,15 +32,24 @@
 public:
     HsLoadSceneState(QState *parent = 0);
     ~HsLoadSceneState();
-
+#ifdef Q_OS_SYMBIAN
+public slots:
+     void handleKeyChange(XQSettingsKey key, const QVariant &value);
+#endif
 signals:
-    void event_idle();
+    void event_history();
 
 private slots:
     void action_loadScene();
 
 private:
     Q_DISABLE_COPY(HsLoadSceneState)
+    void showUi();
+    
+#ifdef Q_OS_SYMBIAN
+    XQPublishAndSubscribeSettingsKey    mStartupKey;
+    XQSettingsManager                   *mSettingsMgr;
+#endif
 };
 
 #endif // HSLOADSCENESTATE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/inc/hsrootstate.h	Wed Jun 23 17:05:06 2010 +0100
@@ -0,0 +1,48 @@
+/*
+* 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:  
+*
+*/
+
+#ifndef HSROOTSTATE_H
+#define HSROOTSTATE_H
+
+#include <QState>
+#include "hstest_global.h"
+HOMESCREEN_TEST_CLASS(HomeScreenStatePluginTest)
+
+
+class HsRootState : public QState
+{
+    Q_OBJECT
+
+public:
+    HsRootState(QState *parent = 0);
+    ~HsRootState();
+
+signals:    
+    void event_backupRestore();
+
+private slots:    
+    void action_startListenBURStatus();
+    void action_stopListenBURStatus();
+
+private:
+    Q_DISABLE_COPY(HsRootState)
+
+private:	
+    HOMESCREEN_TEST_FRIEND_CLASS(HomeScreenStatePluginTest)
+};
+
+#endif // HSROOTSTATE_H
--- a/homescreenapp/stateplugins/hshomescreenstateplugin/inc/hsselectbackgroundstate.h	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/inc/hsselectbackgroundstate.h	Wed Jun 23 17:05:06 2010 +0100
@@ -26,15 +26,13 @@
 
 HOMESCREEN_TEST_CLASS(HomeScreenStatePluginTest)
 
-class QThread;
+class HbProgressDialog;
 class HbView;
-class HbProgressDialog;
 #ifdef Q_OS_SYMBIAN
 class HsImageFetcherClient;
 #else
 class XQAIWGetImageClient;
 #endif
-class HsImageRender;
 
 class HsSelectBackgroundState : public QState
 {
@@ -47,15 +45,6 @@
 private:
     Q_DISABLE_COPY(HsSelectBackgroundState)
 
-    enum ImageProcessingState {
-        NotRunning,
-        ProcessPortraitAsFirst,
-        ProcessLandscapeAsFirst,
-        ProcessPortraitAsSecond,
-        ProcessLandscapeAsSecond,
-        Error
-    };
-
 signals:
     void event_waitInput();
     void handleError();
@@ -85,10 +74,10 @@
 #endif
     
     HbView *mSourceView;
-    QThread *mWallpaperImageReaderThread;
-    HsWallpaperImageReader *mWallpaperImageReader;
+    HsWallpaperImageReader *mPortraitWallpaperImageReader;
+    HsWallpaperImageReader *mLandscapeWallpaperImageReader;
     HbProgressDialog *mProgressDialog;
-    ImageProcessingState mImageProcessingState;
+    int mRunningThreadAmount;
     bool mShowAnimation;
 
     HOMESCREEN_TEST_FRIEND_CLASS(HomeScreenStatePluginTest)
--- a/homescreenapp/stateplugins/hshomescreenstateplugin/resource/hshomescreenstateplugin.xml	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/resource/hshomescreenstateplugin.xml	Wed Jun 23 17:05:06 2010 +0100
@@ -4,6 +4,12 @@
     <filepath>hshomescreenstateplugin</filepath>
     <description></description>
     <interface>
+        <name>com.nokia.homescreen.state.HsRootState</name>
+        <version>1.0</version>
+        <description></description>
+        <capabilities></capabilities>
+    </interface>
+    <interface>
         <name>com.nokia.homescreen.state.HsLoadSceneState</name>
         <version>1.0</version>
         <description></description>
@@ -15,4 +21,10 @@
         <description></description>
         <capabilities></capabilities>
     </interface>
+    <interface>
+        <name>com.nokia.homescreen.state.HsBackupRestoreState</name>
+        <version>1.0</version>
+        <description></description>
+        <capabilities></capabilities>
+    </interface>
 </service>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/src/hsbackuprestorestate.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -0,0 +1,105 @@
+/*
+* 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:  
+*
+*/
+
+#include <QStateMachine>
+#include <QScopedPointer>
+#include <HbMainWindow>
+#include <HbView>
+#include <HbAction>
+#include "hsdatabase.h"
+#include "hsscene.h"
+#include "hsbackuprestoreobserver.h"
+#include "hsbackuprestorestate.h"
+#include "hsscene.h"
+#include "hsgui.h"
+
+/*!
+    \class HsBackupRestoreState
+    \ingroup group_hshomescreenstateplugin
+    \brief Home screen Bacup/Restore state.
+
+    Releases all Home screen data, which will be backed up or restored.
+*/
+
+/*!
+    Constructs a new backup/restore state with the given \a parent.
+*/
+HsBackupRestoreState::HsBackupRestoreState(QState *parent)
+    : QState(parent)      
+{	
+    connect(this, SIGNAL(entered()), SLOT(action_startListenBURStatus()));
+    connect(this, SIGNAL(exited()), SLOT(action_stopListenBURStatus()));
+}
+
+/*!
+    Destroys this backup/restore state.
+*/
+HsBackupRestoreState::~HsBackupRestoreState()
+{
+}
+
+/*!
+    Starts listen backup/restore status and releases Home screen data.
+*/
+void HsBackupRestoreState::action_startListenBURStatus()
+{
+    HsBackupRestoreObserver *backupRestoreObserver = 
+        HsBackupRestoreObserver::instance();
+    
+    connect(backupRestoreObserver, 
+            SIGNAL(event_backupRestoreComplited()),
+            SIGNAL(event_loadScene()));
+    
+    // Close database
+    mDatabase.reset(HsDatabase::takeInstance());
+    mDatabase->close();        
+    
+    deleteIdleView();        
+
+    // Delete scene
+    HsScene *scene = HsScene::instance();    
+    delete scene;
+
+    backupRestoreObserver->readyForBUR();
+}
+
+/*!
+    Stops listen backup/restore status.
+*/
+void HsBackupRestoreState::action_stopListenBURStatus()
+{
+    HsBackupRestoreObserver::instance()->disconnect(this);    
+    
+    // Open database
+    HsDatabase::setInstance(mDatabase.data());
+    mDatabase.take();
+    HsDatabase::instance()->open();
+}
+
+/*!
+   Deletes idle view
+*/
+void HsBackupRestoreState::deleteIdleView()
+{
+    // Delete idle view
+    QScopedPointer<HbView> idleView(HsGui::takeIdleView());
+
+    if (idleView){
+        idleView->setNavigationAction(0);
+        HsScene::mainWindow()->removeView(idleView.data());
+    }
+}
--- a/homescreenapp/stateplugins/hshomescreenstateplugin/src/hsdocumentloader.cpp	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/src/hsdocumentloader.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -18,6 +18,7 @@
 #include "hsdocumentloader.h"
 #include "hspageindicator.h"
 #include "hstrashbinwidget.h"
+#include "hsconfiguration.h"
 
 /*!
     \class HsDocumentLoader
@@ -50,7 +51,7 @@
 QObject *HsDocumentLoader::createObject(const QString &type, const QString &name)
 {
     if (type == HsPageIndicator::staticMetaObject.className()) {
-        QObject *object = new HsPageIndicator;
+        QObject *object = new HsPageIndicator(HsConfiguration::pageIndicatorSpacing());
         object->setObjectName(name);
         return object;
     }
--- a/homescreenapp/stateplugins/hshomescreenstateplugin/src/hshomescreenstateplugin.cpp	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/src/hshomescreenstateplugin.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -22,6 +22,8 @@
 #include "hshomescreenstateplugin.h"
 #include "hsloadscenestate.h"
 #include "hsidlestate.h"
+#include "hsrootstate.h"
+#include "hsbackuprestorestate.h"
 
 #ifdef COVERAGE_MEASUREMENT
 #pragma CTC SKIP
@@ -40,9 +42,16 @@
 
     if (descriptor.interfaceName() == QLatin1String("com.nokia.homescreen.state.HsLoadSceneState")) {
         return new HsLoadSceneState();
-    } else if(descriptor.interfaceName() == QLatin1String("com.nokia.homescreen.state.HsIdleState")) {
+    }
+    else if(descriptor.interfaceName() == QLatin1String("com.nokia.homescreen.state.HsIdleState")) {
         return new HsIdleState();
-    } else {
+    } 
+    else if(descriptor.interfaceName() == QLatin1String("com.nokia.homescreen.state.HsRootState")) {
+        return new HsRootState();
+    }
+    else if(descriptor.interfaceName() == QLatin1String("com.nokia.homescreen.state.HsBackupRestoreState")) {
+        return new HsBackupRestoreState();
+    }else {
         return 0;
     }
 }
--- a/homescreenapp/stateplugins/hshomescreenstateplugin/src/hsidlestate.cpp	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/src/hsidlestate.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -46,11 +46,12 @@
 #include "hsselectbackgroundstate.h"
 #include "hstrashbinwidget.h"
 #include "hspageindicator.h"
-#include "hswidgetpositioningonorientationchange.h"
 #include "hsmenueventfactory.h"
 #include "hshomescreenstatecommon.h"
 #include "hstitleresolver.h"
 #include "hsmenuservice.h"
+#include "hsgui.h"
+#include "hsconfiguration.h"
 
 // Helper macros for connecting state entry and exit actions.
 #define ENTRY_ACTION(state, action) \
@@ -121,9 +122,7 @@
 */
 HsIdleState::HsIdleState(QState *parent)
   : QState(parent),
-    mView(0), mNavigationAction(0), mUiWidget(0),
-    mTapAndHoldDistance(16),
-    mPageChangeZoneWidth(60),
+    mNavigationAction(0), mUiWidget(0),
     mTitleResolver(0),
     mZoneAnimation(0),
     mPageChanged(false),
@@ -131,10 +130,11 @@
     mPageChangeAnimation(0),
     mContinuousFeedback(0),
     mTrashBinFeedbackAlreadyPlayed(false),
-    mDeltaX(0)
-#ifdef Q_OS_SYMBIAN    
+    mDeltaX(0),
+    mSceneMenu(0)
+#ifdef Q_OS_SYMBIAN
     ,mSettingsMgr(0)
-#endif    
+#endif
 {
     setupStates();
     mTimer.setSingleShot(true);
@@ -281,6 +281,8 @@
         this, SIGNAL(event_waitInput()), state_waitInput);
     state_widgetInteraction->addTransition(
         this, SIGNAL(event_moveWidget()), state_moveWidget);
+    state_widgetInteraction->addTransition(
+        this, SIGNAL(event_moveScene()), state_moveScene);
 
     state_sceneInteraction->addTransition(
         this, SIGNAL(event_waitInput()), state_waitInput);
@@ -326,7 +328,7 @@
 
     ENTRY_ACTION(state_waitInput, action_waitInput_updateOptionsMenu)
     ENTRY_ACTION(state_waitInput, action_waitInput_connectMouseEventHandlers)
-    ENTRY_ACTION(state_waitInput, action_waitInput_publishIdleKey)    
+    ENTRY_ACTION(state_waitInput, action_waitInput_publishIdleKey)
     EXIT_ACTION(state_waitInput, action_waitInput_disconnectMouseEventHandlers)
 
     ENTRY_ACTION(state_widgetInteraction, action_widgetInteraction_connectMouseEventHandlers)
@@ -389,7 +391,7 @@
         mPageChangeAnimation->addAnimation(animation);
 
         animation = new QPropertyAnimation(mUiWidget->sceneLayer(), "x");
-        animation->setEndValue((parallaxFactor() * pageLayerXPos(targetPageIndex)) - HSBOUNDARYEFFECT / 2);
+        animation->setEndValue((parallaxFactor() * pageLayerXPos(targetPageIndex)) - HsConfiguration::bounceEffect() / 2);
         animation->setDuration(duration);
         mPageChangeAnimation->addAnimation(animation);
     }
@@ -403,11 +405,11 @@
         qobject_cast<QPropertyAnimation*>(animation)->setDuration(duration);
 
         animation = mPageChangeAnimation->animationAt(1);
-        qobject_cast<QPropertyAnimation*>(animation)->setEndValue((parallaxFactor() * pageLayerXPos(targetPageIndex)) - HSBOUNDARYEFFECT / 2);
+        qobject_cast<QPropertyAnimation*>(animation)->setEndValue((parallaxFactor() * pageLayerXPos(targetPageIndex)) - HsConfiguration::bounceEffect() / 2);
         qobject_cast<QPropertyAnimation*>(animation)->setDuration(duration);
     }
     mPageChangeAnimation->start();
-    HbInstantFeedback::play(HbFeedback::Sensitive);
+    HbInstantFeedback::play(HsConfiguration::pageChangeFeedbackType());
     mUiWidget->showPageIndicator();
     mUiWidget->setActivePage(targetPageIndex);
 }
@@ -424,7 +426,7 @@
     if (isInLeftPageChangeZone() && 0 < targetPageIndex) {
         --targetPageIndex;
     } else if (isInRightPageChangeZone() &&
-        targetPageIndex < scene->pages().count()) {
+        targetPageIndex < scene->maximumPageCount()-1) {
         ++targetPageIndex;
     } else {
         mAllowZoneAnimation = true;
@@ -441,10 +443,12 @@
         mZoneAnimation = new QPropertyAnimation(mUiWidget->sceneLayer(), "x");
     }
 
+    int bounceEffect = HsConfiguration::bounceEffect();
+
     if (isInLeftPageChangeZone()) {
-        mZoneAnimation->setEndValue(((parallaxFactor() * pageLayerXPos(scene->activePageIndex()))-HSBOUNDARYEFFECT/2)+HSBOUNDARYEFFECT/2);
+        mZoneAnimation->setEndValue(((parallaxFactor() * pageLayerXPos(scene->activePageIndex()))-bounceEffect/2)+bounceEffect/2);
     } else {
-        mZoneAnimation->setEndValue(((parallaxFactor() * pageLayerXPos(scene->activePageIndex()))-HSBOUNDARYEFFECT/2)-HSBOUNDARYEFFECT/2);
+        mZoneAnimation->setEndValue(((parallaxFactor() * pageLayerXPos(scene->activePageIndex()))-bounceEffect/2)-bounceEffect/2);
     }
     mZoneAnimation->setDuration(duration);
     mZoneAnimation->setDirection(QAbstractAnimation::Forward);
@@ -462,31 +466,27 @@
 */
 bool HsIdleState::isInPageChangeZone()
 {
-    qreal widgetXPos = HsScene::instance()->activeWidget()->geometry().center().x();
-    qreal pageWidth = HsScene::mainWindow()->layoutRect().width();
-    return widgetXPos < mPageChangeZoneWidth ||
-           pageWidth - mPageChangeZoneWidth < widgetXPos;
+    return isInLeftPageChangeZone() ||
+           isInRightPageChangeZone();
 }
 
 /*!
-    Checks if the active widget is located inside the left
+    Checks if touch point in the active widget is located inside the left
     page change zone.
 */
 bool HsIdleState::isInLeftPageChangeZone()
 {
-    qreal widgetXPos = HsScene::instance()->activeWidget()->geometry().center().x();
-    return widgetXPos < mPageChangeZoneWidth;
+    return mTouchScenePos.x() < HsConfiguration::pageChangeZoneWidth();
 }
 
 /*!
-    Checks if the active widget is located inside the right
+    Checks if touch point in the active widget is located inside the right
     page change zone.
 */
 bool HsIdleState::isInRightPageChangeZone()
 {
-    qreal widgetXPos = HsScene::instance()->activeWidget()->geometry().center().x();
     qreal pageWidth = HsScene::mainWindow()->layoutRect().width();
-    return pageWidth - mPageChangeZoneWidth < widgetXPos;
+    return mTouchScenePos.x() > pageWidth - HsConfiguration::pageChangeZoneWidth();;
 }
 
 /*!
@@ -509,7 +509,7 @@
 qreal HsIdleState::parallaxFactor() const
 {
     qreal clw = mUiWidget->controlLayer()->size().width();
-    qreal slw = mUiWidget->sceneLayer()->size().width() - HSBOUNDARYEFFECT;
+    qreal slw = mUiWidget->sceneLayer()->size().width() - HsConfiguration::bounceEffect();
     int n = HsScene::instance()->pages().count();
     if (n < 2) {
         return 1;
@@ -528,14 +528,14 @@
             /* We don't want to create another animation
                before previous is finished */
             mAllowZoneAnimation = false;
-            startPageChangeZoneAnimation(800);
+            startPageChangeZoneAnimation(HsConfiguration::pageChangeZoneAnimationDuration());
         }
     }
     else if (mZoneAnimation && !isInPageChangeZone()) {
         if (mZoneAnimation->state() == QAbstractAnimation::Running) {
             if (mZoneAnimation->direction() == QAbstractAnimation::Forward) {
                     mPageChanged = false;
-                    mZoneAnimation->setDuration(200);
+                    mZoneAnimation->setDuration(HsConfiguration::pageChangeZoneReverseAnimationDuration());
                     mZoneAnimation->setDirection(QAbstractAnimation::Backward);
             }
         }
@@ -554,24 +554,45 @@
 }
 
 /*!
+    Selects which trash bin icon is shown or not shown at all
+*/
+void HsIdleState::showTrashBin()
+{
+    if (mUiWidget->trashBin()->isUnderMouse()) {
+        if (!mTrashBinFeedbackAlreadyPlayed) {
+            HbInstantFeedback::play(HsConfiguration::widgetOverTrashbinFeedbackType());
+            mTrashBinFeedbackAlreadyPlayed = true;
+        }
+        mUiWidget->trashBin()->activate();
+    } else {
+        mUiWidget->trashBin()->deactivate();
+        mTrashBinFeedbackAlreadyPlayed = false;
+    }
+
+    if (!mUiWidget->pageIndicator()->isAnimationRunning()) {
+        mUiWidget->showTrashBin();
+    }
+}
+
+/*!
     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);
     delete page;
-    
+
     pageIndex = pageIndex == 0 ? 0 : pageIndex - 1;
     scene->setActivePageIndex(pageIndex);
-    
-    startPageChangeAnimation(pageIndex, 200);
-    
+
+    startPageChangeAnimation(pageIndex, HsConfiguration::pageRemovedAnimationDuration());
+
     mUiWidget->pageIndicator()->removeItem(pageIndex);
     mUiWidget->setActivePage(pageIndex);
     mUiWidget->showPageIndicator();
@@ -600,21 +621,26 @@
 */
 void HsIdleState::action_idle_setupView()
 {
-    if (!mView) {
+    HbView *idleView = HsGui::idleView();
+    if (!idleView) {
         mUiWidget = new HsIdleWidget;
-        mView = HsScene::mainWindow()->addView(mUiWidget);
-        mView->setContentFullScreen();
+        idleView = HsScene::mainWindow()->addView(mUiWidget);
+        idleView->setContentFullScreen();
 
         mNavigationAction = new HbAction(this);
         mNavigationAction->setIcon(HbIcon(gApplicationLibraryIconName));
         connect(mNavigationAction, SIGNAL(triggered()), SIGNAL(event_applicationLibrary()));
-        mView->setNavigationAction(mNavigationAction);
+        idleView->setNavigationAction(mNavigationAction);
+        
+        HsGui::setIdleView(idleView);
 
-        // TODO: Workaround to Qt/Hb layouting bugs.
-        QApplication::processEvents(QEventLoop::ExcludeUserInputEvents);
+        if (mPageChangeAnimation) {
+            delete mPageChangeAnimation;
+            mPageChangeAnimation = NULL;
+        }
     }
 
-    HsScene::mainWindow()->setCurrentView(mView);
+    HsScene::mainWindow()->setCurrentView(idleView);
 }
 
 /*!
@@ -634,7 +660,7 @@
 void HsIdleState::onTitleChanged(QString title)
 {
     qDebug() << "HsIdleState::onTitleChanged() to title: " << title;
-    mView->setTitle(title);
+    HsGui::idleView()->setTitle(title);
 }
 
 /*!
@@ -671,8 +697,7 @@
     }
 
     foreach (HsWidgetHost *widget, widgets) {
-        widget->initializeWidget();
-        widget->showWidget();
+        widget->startWidget();
     }
 
     page->layoutNewWidgets();
@@ -687,7 +712,7 @@
 {
     qreal x = pageLayerXPos(HsScene::instance()->activePageIndex());
     mUiWidget->pageLayer()->setX(x);
-    mUiWidget->sceneLayer()->setX((parallaxFactor() * x) - HSBOUNDARYEFFECT / 2);
+    mUiWidget->sceneLayer()->setX((parallaxFactor() * x) - HsConfiguration::bounceEffect() / 2);
 }
 
 /*!
@@ -697,7 +722,7 @@
 {
     connect(HsScene::mainWindow(),
         SIGNAL(orientationChanged(Qt::Orientation)),
-        SLOT(onOrientationChanged(Qt::Orientation)));
+        SLOT(action_idle_showActivePage()));
 }
 
 /*!
@@ -721,7 +746,7 @@
         mSettingsMgr = new XQSettingsManager(this);
         XQPublishAndSubscribeSettingsKey key(KPSUidStartup.iUid, KPSIdlePhase1Ok);
         mSettingsMgr->writeItemValue(key, EIdlePhase1Ok);
-        
+
         // Done, we can disconnect this signal.
         disconnect(sender(), SIGNAL(entered()), this, SLOT(action_waitInput_publishIdleKey()));
     }
@@ -733,9 +758,18 @@
 */
 void HsIdleState::action_idle_cleanupView()
 {
-    if (mUiWidget){
+    if (mUiWidget) {
         mUiWidget->clearDelayedPress();
     }
+
+    //Close options menu on view change
+    HsGui::idleView()->setMenu(NULL);
+
+    //Close context menu on view change
+    if (mSceneMenu) {
+        disconnect(mSceneMenu, SIGNAL(aboutToClose()), this, SLOT(onSceneMenuAboutToClose()));
+        mSceneMenu->close();
+    }
 }
 
 /*!
@@ -745,7 +779,7 @@
 {
     disconnect(HsScene::mainWindow(),
         SIGNAL(orientationChanged(Qt::Orientation)),
-        this, SLOT(onOrientationChanged(Qt::Orientation)));
+        this, SLOT(action_idle_showActivePage()));
 }
 
 /*!
@@ -798,7 +832,7 @@
             this, SIGNAL(event_toggleConnection()));
     }
 
-    mView->setMenu(menu);
+    HsGui::idleView()->setMenu(menu);
 }
 
 /*!
@@ -831,13 +865,10 @@
 */
 void HsIdleState::action_widgetInteraction_connectGestureTimers()
 {
-    mTimer.setInterval(500);
+    mTimer.setInterval(HsConfiguration::widgetTapAndHoldTimeout());
     connect(&mTimer, SIGNAL(timeout()),
         SLOT(widgetInteraction_onTapAndHoldTimeout()));
     mTimer.start();
-
-    HsWidgetHost *widget = HsScene::instance()->activeWidget();
-    widget->startTapAndHoldAnimation();
 }
 
 /*!
@@ -856,9 +887,6 @@
 {
     disconnect(&mTimer, SIGNAL(timeout()),
         this, SLOT(widgetInteraction_onTapAndHoldTimeout()));
-
-    HsWidgetHost *widget = HsScene::instance()->activeWidget();
-    widget->stopTapAndHoldAnimation();
 }
 
 /*!
@@ -875,7 +903,7 @@
 */
 void HsIdleState::action_sceneInteraction_connectGestureTimers()
 {
-    mTimer.setInterval(500);
+    mTimer.setInterval(HsConfiguration::sceneTapAndHoldTimeout());
     connect(&mTimer, SIGNAL(timeout()),
         SLOT(sceneInteraction_onTapAndHoldTimeout()));
     mTimer.start();
@@ -941,7 +969,7 @@
         && mZoneAnimation->state() == QAbstractAnimation::Running
         && mZoneAnimation->direction() == QAbstractAnimation::Forward) {
         mPageChanged = false;
-        mZoneAnimation->setDuration(200);
+        mZoneAnimation->setDuration(HsConfiguration::pageChangeZoneReverseAnimationDuration());
         mZoneAnimation->setDirection(QAbstractAnimation::Backward);
     }
 
@@ -950,20 +978,18 @@
     HsWidgetHost *widget = scene->activeWidget();
 
     if (mUiWidget->trashBin()->isUnderMouse()) {
-        HbInstantFeedback::play(HbFeedback::ItemDrop);
+        HbInstantFeedback::play(HsConfiguration::widgetDropToTrashbinFeedbackType());
         widget->page()->removeWidget(widget);
-        widget->uninitializeWidget();
-        widget->deleteFromDatabase();
-        widget->deleteLater();
+        widget->remove();
         scene->setActiveWidget(0);
     } else {
         if (widget->page() != page) {
             widget->page()->removeWidget(widget);
             page->addExistingWidget(widget);
             if (HsScene::orientation() == Qt::Horizontal) {
-                widget->deleteWidgetPresentation(Qt::Vertical);
+                widget->removePresentation(Qt::Vertical);
             } else {
-                widget->deleteWidgetPresentation(Qt::Horizontal);
+                widget->removePresentation(Qt::Horizontal);
             }
         }
 
@@ -974,11 +1000,11 @@
 
         // 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(HbFeedback::BounceEffect);
+            HbInstantFeedback::play(HsConfiguration::widgetRepositionFeedbackType());
         }
         widget->setPos(widgetX, widgetY);
 
-        widget->setWidgetPresentation();
+        widget->savePresentation();
         page->updateZValues();
     }
     mAllowZoneAnimation = true;
@@ -1027,15 +1053,15 @@
 
     int pageIndex = HsScene::instance()->activePageIndex();
 
-    if (mDeltaX < -pageSize.width() / 3) {
+    if (mDeltaX < -HsConfiguration::pageChangePanDistanceInPixels()) {
         pageIndex = qMin(pageIndex + 1, pages.count() - 1);
-    } else if (pageSize.width() / 3 < mDeltaX) {
+    } else if (HsConfiguration::pageChangePanDistanceInPixels() < mDeltaX) {
         pageIndex = qMax(pageIndex - 1, 0);
     }
 
     HsScene::instance()->setActivePageIndex(pageIndex);
 
-    startPageChangeAnimation(pageIndex, 200);
+    startPageChangeAnimation(pageIndex, HsConfiguration::pageChangeAnimationDuration());
 }
 
 /*!
@@ -1055,29 +1081,22 @@
 */
 void HsIdleState::action_sceneMenu_showMenu()
 {
-    HbMenu *sceneMenu = new HbMenu();
-    sceneMenu->setAttribute(Qt::WA_DeleteOnClose);
-    sceneMenu->setDismissPolicy(HbDialog::TapOutside);
+    mSceneMenu = new HbMenu();
+    mSceneMenu->setAttribute(Qt::WA_DeleteOnClose);
+    mSceneMenu->setDismissPolicy(HbDialog::TapOutside);
     //This is used to check if any action is not triggered ( == menu is dismissed by user or timeout).
-    connect(sceneMenu, SIGNAL(aboutToClose()), this, SLOT(onSceneMenuAboutToClose()));
+    connect(mSceneMenu, SIGNAL(aboutToClose()), this, SLOT(onSceneMenuAboutToClose()));
 
-    HbAction *addContentAction =
-        sceneMenu->addAction(hbTrId(hsLocTextId_ContextMenu_AddContent));
-    connect(addContentAction, SIGNAL(triggered()), this, SLOT(onAddContentActionTriggered()));
+    mSceneMenu->addAction(hbTrId(hsLocTextId_ContextMenu_AddContent), this, SLOT(onAddContentActionTriggered()));
 
-    HbAction *addPageAction = 0;
     HsScene *scene = HsScene::instance();
     if (scene->pages().count() < scene->maximumPageCount()) {
-        addPageAction = sceneMenu->addAction(hbTrId(hsLocTextId_OptionsMenu_AddPage));
-        connect(addPageAction, SIGNAL(triggered()), this, SIGNAL(event_addPage()));
+        mSceneMenu->addAction(hbTrId(hsLocTextId_OptionsMenu_AddPage), this, SIGNAL(event_addPage()));
     }
 
-    HbAction *changeWallpaperAction =
-        sceneMenu->addAction(hbTrId(hsLocTextId_ContextMenu_ChangeWallpaper));
-    connect(changeWallpaperAction, SIGNAL(triggered()), this, SIGNAL(event_selectSceneWallpaper()));
-
-    sceneMenu->setPreferredPos(mSceneMenuPos);
-    sceneMenu->show();
+    mSceneMenu->addAction(hbTrId(hsLocTextId_ContextMenu_ChangeWallpaper), this, SIGNAL(event_selectSceneWallpaper()));
+    mSceneMenu->setPreferredPos(mTouchScenePos);
+    mSceneMenu->open(this, SLOT(onSceneMenuTriggered(HbAction *)));
 }
 #ifdef COVERAGE_MEASUREMENT
 #pragma CTC ENDSKIP
@@ -1089,10 +1108,10 @@
 void HsIdleState::action_addPage_addPage()
 {
     HsScene *scene = HsScene::instance();
-    int pageIndex = scene->pages().count();
+	  int pageIndex = scene->activePageIndex() + 1;
     addPageToScene(pageIndex);
     scene->setActivePageIndex(pageIndex);
-    startPageChangeAnimation(pageIndex, 700);
+    startPageChangeAnimation(pageIndex, HsConfiguration::newPageAddedAnimationDuration());
     mUiWidget->pageIndicator()->addItem(pageIndex);
     mUiWidget->showPageIndicator();
 }
@@ -1109,16 +1128,18 @@
 #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));
-        box->setPrimaryAction(new HbAction(hbTrId(hsLocTextId_ConfirmationButton_Ok)));
-        box->setSecondaryAction(new HbAction(hbTrId(hsLocTextId_ConfirmationButton_Cancel)));
-        box->setAttribute(Qt::WA_DeleteOnClose);
+        
+        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()));
 
         HsScene::mainWindow()->setInteractive(true);
 
-        box->open(this,SLOT(onRemovePageMessageBoxClosed(HbAction*)));
+        box->open();
 #endif //HOMESCREEN_TEST
     } else {
         //Empty page can be removed without confirmation
@@ -1166,7 +1187,7 @@
         }
     }
 
-    mSceneMenuPos = event->scenePos();
+    mTouchScenePos = event->scenePos();
     emit event_sceneInteraction();
 }
 
@@ -1190,11 +1211,19 @@
 
     QPointF point =
         event->scenePos() - event->buttonDownScenePos(Qt::LeftButton);
-    if (mTapAndHoldDistance < point.manhattanLength()) {
+    if (HsConfiguration::tapAndHoldDistance() < point.manhattanLength()) {
+        // Threshold area for tap exceeded. This is pan or swipe
         mTimer.stop();
-        mUiWidget->sendDelayedPress();
-        HsScene::instance()->activeWidget()->stopTapAndHoldAnimation();
+        if (HsScene::instance()->activeWidget()->isPannable(event)) {
+            // let widget get first press
+            mUiWidget->sendDelayedPress();
+        } else {
+            // Widget doesn't consume pan or swipe gestures
+            mUiWidget->clearDelayedPress();
+            emit event_moveScene();
+        }
     }
+
 }
 
 /*!
@@ -1233,7 +1262,7 @@
     Q_UNUSED(watched)
     Q_UNUSED(filtered)
 
-    mSceneMenuPos = event->scenePos();
+    mTouchScenePos = event->scenePos();
 
     if (!mTimer.isActive()) {
         return;
@@ -1243,7 +1272,7 @@
 
     QPointF point =
         event->scenePos() - event->buttonDownScenePos(Qt::LeftButton);
-    if (mTapAndHoldDistance < point.manhattanLength()) {
+    if (HsConfiguration::tapAndHoldDistance() < point.manhattanLength()) {
         mTimer.stop();
         mUiWidget->clearDelayedPress();
         emit event_moveScene();
@@ -1286,32 +1315,40 @@
 
     HsScene *scene = HsScene::instance();
     HsWidgetHost *widget = scene->activeWidget();
-    HsPage *page = scene->activePage();
+    QRectF widgetRect = widget->geometry();
 
+    //Move widget to new position:
+    mTouchScenePos = event->scenePos();
     QPointF delta(event->scenePos() - event->lastScenePos());
-
-    QRectF widgetRect = widget->geometry();
     widgetRect.moveTopLeft(widgetRect.topLeft() + delta);
 
-    QRectF pageRect = mView->rect();
+    //Widget can be moved over the pages left border
+    qreal lowerBoundX = -widgetRect.width();
+    HsPage *page = scene->activePage();
+    QRectF pageRect = HsGui::idleView()->rect();
+    //Widget can be moved over the pages right border
+    qreal upperBoundX = pageRect.width();
 
-    qreal lowerBoundX = -widgetRect.width() / 2 + 10;
-    if (page == scene->pages().first()) {
-        lowerBoundX = 0;
-    }
-    qreal upperBoundX = pageRect.width() - widgetRect.width() / 2 - 10;
-    if (page == scene->pages().last() && scene->pages().count() == scene->maximumPageCount()) {
-        upperBoundX = pageRect.width() - widgetRect.width();
-    }
+    //Notice that chrome height is 64 pixels
+    qreal lowerBoundY = qreal(64) - widgetRect.height();
+    //Widget can be moved over the pages down border
+    qreal upperBoundY = pageRect.height();
 
     qreal widgetX = qBound(lowerBoundX, widgetRect.x(), upperBoundX);
-    qreal widgetY = qBound(qreal(64), widgetRect.y(), pageRect.height() - widgetRect.height());
+    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());
 
-    // if user is trying to move widget past first or last page, play "not a good idea" feedback effect
-    if( (page == scene->pages().first() && widgetRect.x() < 3 ) ||
+    int bounceFeedbackEffectDistance = HsConfiguration::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.
+    if( (page == scene->pages().first() && mTouchScenePos.x() < bounceFeedbackEffectDistance ) ||
         (page == scene->pages().last() && scene->pages().count() == scene->maximumPageCount()
-         && widgetRect.x()+ widgetRect.width() > pageRect.width()-3)) {
-            HbInstantFeedback::play(HbFeedback::Basic);
+         && mTouchScenePos.x() > pageRect.width() - bounceFeedbackEffectDistance)) {
+             HbInstantFeedback::play(HsConfiguration::widgetMoveBlockedFeedbackType());
             // TODO: use code below when Orbit has updated ContinuousFeedback API
             //if (!mContinuousFeedback->isPlaying()) {
             //    mContinuousFeedback->play();
@@ -1321,27 +1358,9 @@
             //mContinuousFeedback->stop();
         }
 
-    /* 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());
-
-    updateZoneAnimation(); // cyclomatic complexity was 20, logic moved to separate function
+    updateZoneAnimation();
+    showTrashBin();
 
-    if (mUiWidget->trashBin()->isUnderMouse()) {
-        if (!mTrashBinFeedbackAlreadyPlayed) {
-            HbInstantFeedback::play(HbFeedback::ItemMoveOver);
-            mTrashBinFeedbackAlreadyPlayed = true;
-        }
-        mUiWidget->trashBin()->activate();
-    } else {
-        mUiWidget->trashBin()->deactivate();
-        mTrashBinFeedbackAlreadyPlayed = false;
-    }
-
-    if (!mUiWidget->pageIndicator()->isAnimationRunning()) {
-        mUiWidget->showTrashBin();
-    }
     filtered = true;
 }
 
@@ -1373,15 +1392,19 @@
     Q_UNUSED(watched)
     Q_UNUSED(filtered)
 
+    filtered = true;
+
     HsScene *scene = HsScene::instance();
     mDeltaX = event->scenePos().x() - event->buttonDownScenePos(Qt::LeftButton).x();
 
-    qreal x = qBound(pageLayerXPos(scene->pages().count() - 1) - HSBOUNDARYEFFECT / 2 / parallaxFactor(),
+    int bounceEffect = HsConfiguration::bounceEffect();
+
+    qreal x = qBound(pageLayerXPos(scene->pages().count() - 1) - bounceEffect / 2 / parallaxFactor(),
                      pageLayerXPos(scene->activePageIndex()) + mDeltaX,
-                     pageLayerXPos(0) + (HSBOUNDARYEFFECT / 2 / parallaxFactor()) - qreal(0.5));
+                     pageLayerXPos(0) + (bounceEffect / 2 / parallaxFactor()) - qreal(0.5));
 
     mUiWidget->pageLayer()->setX(x);
-    mUiWidget->sceneLayer()->setX((parallaxFactor() * x) - HSBOUNDARYEFFECT / 2);
+    mUiWidget->sceneLayer()->setX((parallaxFactor() * x) - bounceEffect / 2);
 }
 
 /*!
@@ -1395,6 +1418,7 @@
 {
     Q_UNUSED(watched)
     Q_UNUSED(filtered)
+    filtered = true;
 
     mDeltaX = event->scenePos().x() - event->buttonDownScenePos(Qt::LeftButton).x();
 
@@ -1402,56 +1426,6 @@
 }
 
 /*!
-    Handles orientation change events. \a orientation is the
-    new orientation.
-*/
-void HsIdleState::onOrientationChanged(Qt::Orientation orientation)
-{
-    QList<HsPage *> pages = HsScene::instance()->pages();
-    QList<HsWidgetHost *> widgets;
-    HsWidgetHost *widget = 0;
-
-    QRectF pageRect = HsScene::mainWindow()->layoutRect();
-
-    // TODO: Temporary workaround for the Orbit bug.
-    if (orientation == Qt::Horizontal) {
-        pageRect = QRectF(0, 0, 640, 360);
-    } else {
-        pageRect = QRectF(0, 0, 360, 640);
-    }
-    // End of the workaround.
-
-    const int chromeHeight = 64; // TODO: get this somewhere
-
-    for (int i = 0; i < pages.count(); ++i) {
-        widgets = pages[i]->widgets();
-        for (int j = 0; j < widgets.count(); ++j) {
-            widget = widgets[j];
-            HsWidgetPresentationData presentation = widget->widgetPresentation(orientation);
-            if (presentation.widgetId < 0) {
-                QList<QRectF> geometries =
-                    HsWidgetPositioningOnOrientationChange::instance()->convert(
-                        QRectF(0, chromeHeight,
-                            pageRect.height(),
-                            pageRect.width() - chromeHeight),
-                        QList<QRectF>() << widget->geometry(),
-                        QRectF(0, chromeHeight,
-                            pageRect.width(),
-                            pageRect.height() - chromeHeight));
-                widget->setGeometry(geometries.first());
-                widget->setWidgetPresentation();
-            } else {
-                widget->setPos(presentation.x, presentation.y);
-                widget->setZValue(presentation.zValue);
-            }
-        }
-    }
-    // TODO: Workaround to Qt/Hb layouting bugs.
-    QApplication::processEvents(QEventLoop::ExcludeUserInputEvents);
-    action_idle_showActivePage();
-}
-
-/*!
     Handles tap-and-hold events for the widgetInteraction state.
 */
 void HsIdleState::widgetInteraction_onTapAndHoldTimeout()
@@ -1529,7 +1503,7 @@
             }
         }
         scene->setActivePageIndex(pageIndex);
-        startPageChangeAnimation(pageIndex, 200);
+        startPageChangeAnimation(pageIndex, HsConfiguration::pageChangeAnimationDuration());
     }
     else {
         scene->setActivePageIndex(pageIndex);
@@ -1542,14 +1516,16 @@
 }
 
 /*!
-    Handles the close of the scene menu.
+    Handles the close of the scene menu when menu is dismissed.
+    While dismissed menu should be triggered with NULL action.
+    Actions on menu are connected stright to desired slot or signal.
 */
-void HsIdleState::onSceneMenuAboutToClose() {
-    //We need to check if menu is dismissed either by user tap in outside of the menu or
-    //menu's dismiss timer timeouts. There is active action if any action tapped otherwise
-    //menu was dissmised.
-    HbMenu *menu = static_cast<HbMenu*>(sender());
-    if(!menu->activeAction()) {
+void HsIdleState::onSceneMenuTriggered(HbAction *action)
+{
+    //We check if menu was dismissed either by user tap in outside of the menu,
+    //menu's dismiss timer timeouts or state_sceneMenu was exited by any other reason
+    //than triggered action, e.g. applib activated while context menu is active.
+    if(!action) {
         emit event_waitInput();
     }
 }
@@ -1557,17 +1533,26 @@
 /*!
     Handles the close of remove page confirmation dialog for page having content.
 */
-void HsIdleState::onRemovePageMessageBoxClosed(HbAction *action)
+void HsIdleState::onRemovePageConfirmationOk()
 {
-    HbMessageBox *dlg = static_cast<HbMessageBox*>(sender());
-    if(action == dlg->primaryAction()) {
-        //Page removal accepted
-        removeActivePage();
+    removeActivePage();
+}
+
+/*!
+    Handles the close of the scene menu.
+
+    This workaround is needed since HbMenu does not trigger empty action in case of
+    dismission of menu dialog. That functionality will be added in near future. Thereafter
+    onSceneMenuTriggered() can handle dismissions (HbMenu::triggered() emitted with NULL
+    action). This workaround can be removed at that time.
+*/
+void HsIdleState::onSceneMenuAboutToClose() {
+    //We need to check if menu is dismissed either by user tap in outside of the menu or
+    //menu's dismiss timer timeouts. There is active action if any action tapped otherwise
+    //menu was dissmised.
+    HbMenu *menu = static_cast<HbMenu*>(sender());
+    if(!menu->activeAction()) {
+        //mSceneMenu = 0;  //Menu deletes itself at the close
+        emit event_waitInput();
     }
 }
-
-// Undefine the helper macros.
-#undef ENTRY_ACTION
-#undef EXIT_ACTION
-#undef CONNECT_MOUSE_EVENT_HANDLER
-#undef DISCONNECT_MOUSE_EVENT_HANDLER
--- a/homescreenapp/stateplugins/hshomescreenstateplugin/src/hsidlewidget.cpp	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/src/hsidlewidget.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -31,7 +31,7 @@
 #include "hstrashbinwidget.h"
 #include "hspageindicator.h"
 #include "hsdocumentloader.h"
-#include "hshomescreenstatecommon.h"
+#include "hsconfiguration.h"
 
 namespace
 {
@@ -109,10 +109,17 @@
 void HsIdleWidget::setGeometry(const QRectF &rect)
 {
     int n = HsScene::instance()->pages().count();
-    mControlLayer->resize(rect.size());
-    mPageLayer->resize(n * rect.width(), rect.height());
-    mSceneLayer->resize(2 * rect.width() + HSBOUNDARYEFFECT, rect.height());
-    HbWidget::setGeometry(rect);
+	QRectF layoutRect(HsScene::instance()->mainWindow()->layoutRect());
+    if (layoutRect == rect || (layoutRect.height() == rect.width() && layoutRect.width() == rect.height())) {
+        mControlLayer->resize(rect.size());
+		mPageLayer->resize(n * rect.width(), rect.height());
+		mSceneLayer->resize(2 * rect.width() + HsConfiguration::bounceEffect(), rect.height());
+		HbWidget::setGeometry(rect);
+	} else {
+		QRectF sceneRect = mapToScene(rect).boundingRect();
+		sceneRect.setTop(-sceneRect.top());
+		HbWidget::setGeometry(sceneRect);
+	}
 }
 
 /*!
@@ -257,6 +264,7 @@
 {
     mTrashBin->hide();
     mTrashBin->deactivate();
+    mPageIndicator->setSpacing(HsConfiguration::pageIndicatorSpacing()); // for usability optimization widget, can be removed later on
     mPageIndicator->setVisible(1 < mPageIndicator->itemCount());
 }
 
--- a/homescreenapp/stateplugins/hshomescreenstateplugin/src/hsloadscenestate.cpp	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/src/hsloadscenestate.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -16,6 +16,10 @@
 */
 
 #include <HbMainWindow>
+#ifdef Q_OS_SYMBIAN
+#include <XQSettingsManager>
+#include <startupdomainpskeys.h>
+#endif
 #include "hsloadscenestate.h"
 #include "hsscene.h"
 
@@ -32,8 +36,17 @@
 */
 HsLoadSceneState::HsLoadSceneState(QState *parent)
     : QState(parent)
+#ifdef Q_OS_SYMBIAN
+      ,mStartupKey(KPSUidStartup.iUid, KPSStartupUiPhase),
+      mSettingsMgr(0)
+#endif        
 {
     connect(this, SIGNAL(entered()), SLOT(action_loadScene()));
+#ifdef Q_OS_SYMBIAN     
+
+    mSettingsMgr = new XQSettingsManager(this);
+    
+#endif //Q_OS_SYMBIAN    
 }
 
 /*!
@@ -55,6 +68,63 @@
 void HsLoadSceneState::action_loadScene()
 {
     HsScene::instance()->load();
+
+#ifdef Q_OS_SYMBIAN    
+ 
+    int startupPhase = mSettingsMgr->readItemValue(mStartupKey).toInt();
+    qDebug() << "HsLoadSceneState::action_loadScene boot phase " << startupPhase;
+    
+    if (EStartupUiPhaseAllDone != startupPhase) {
+        qDebug() << "HsLoadSceneState::HsLoadSceneState, starting to listen key";
+        
+        connect(mSettingsMgr,SIGNAL(valueChanged(XQSettingsKey, const QVariant &)), this,
+			          SLOT(handleKeyChange(XQSettingsKey, const QVariant &)));
+        
+        mSettingsMgr->startMonitoring(mStartupKey);
+    } else {
+        // We're already at the phase in boot where we can draw ourself to the foreground.
+        showUi();
+        delete mSettingsMgr;
+        mSettingsMgr = 0;
+		}
+
+#else
+
+    showUi();
+
+#endif		
+}
+#ifdef Q_OS_SYMBIAN
+/*!
+    \fn HsLoadSceneState::handleKeyChange()
+
+    Handles the key change. Activates hs ui when appropriate.
+*/
+
+void HsLoadSceneState::handleKeyChange(XQSettingsKey key, const QVariant &value)
+{
+		qDebug() << "HsLoadSceneState::handleKeyChange key " << key.key()
+		         << "value " << value.toInt();
+		
+		if (key.key() == KPSStartupUiPhase && value.toInt() == EStartupUiPhaseAllDone) {
+			showUi();			 	
+    		mSettingsMgr->stopMonitoring(mStartupKey);
+    		mSettingsMgr->deleteLater();
+    		mSettingsMgr = 0;
+		}
+}
+#endif
+/*!
+    \fn HsLoadSceneState::showUi()
+
+    Makes the main window visible, signals transition to idle state and 
+    brings the hs app to the foreground.
+*/
+	
+void HsLoadSceneState::showUi()
+{
+    qDebug() << "HsLoadSceneState::showUi";
+    HsScene::mainWindow()->raise();
     HsScene::mainWindow()->show();
-    emit event_idle();
+    emit event_history();
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/src/hsrootstate.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -0,0 +1,69 @@
+/*
+* 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 <HbMainWindow>
+#include "hsbackuprestoreobserver.h"
+#include "hsrootstate.h"
+
+/*!
+    \class HsRootState
+    \ingroup group_hshomescreenstateplugin
+    \brief View part of the home screen idle state.
+
+    Loads the home screen scene.
+*/
+
+/*!
+    Constructs a new load scene state with the given \a parent.
+*/
+HsRootState::HsRootState(QState *parent)
+    : QState(parent)
+{	
+    connect(this, SIGNAL(entered()), SLOT(action_startListenBURStatus()));
+    connect(this, SIGNAL(exited()), SLOT(action_stopListenBURStatus()));
+}
+
+/*!
+    Destroys this idle state.
+*/
+HsRootState::~HsRootState()
+{
+}
+
+/*!
+    Starts listen backup/restore status.
+*/
+void HsRootState::action_startListenBURStatus()
+{
+    HsBackupRestoreObserver *backupRestoreObserver = 
+        HsBackupRestoreObserver::instance();
+    
+    connect(backupRestoreObserver, 
+            SIGNAL(event_backupRestoreStarted()),
+            SIGNAL(event_backupRestore()));
+}
+
+/*!
+    Stops listen backup/restore status.
+*/
+void HsRootState::action_stopListenBURStatus()
+{
+    HsBackupRestoreObserver *backupRestoreObserver = 
+        HsBackupRestoreObserver::instance();
+                
+    backupRestoreObserver->disconnect(this);    
+}
--- a/homescreenapp/stateplugins/hshomescreenstateplugin/src/hsselectbackgroundstate.cpp	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/src/hsselectbackgroundstate.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -15,16 +15,13 @@
 *
 */
 
+#include <QAction>
 #include <QApplication>
 #include <QDir>
 #include <QFileInfo>
-#include <QImageReader>
-#include <QThread>
-#include <QTimer>
 
 #include <HbMainWindow>
 #include <HbProgressDialog>
-#include <HbView>
 
 #include "hsselectbackgroundstate.h"
 #include "hsscene.h"
@@ -32,6 +29,7 @@
 #include "hswallpaper.h"
 #include "hsdatabase.h"
 #include "hshomescreenstatecommon.h"
+#include "hsconfiguration.h"
 
 #ifdef Q_OS_SYMBIAN
 #include "hsimagefetcherclient.h"
@@ -40,7 +38,8 @@
 #include "xqaiwcommon.h"
 #endif
 
-const char hsLocTextId_ProgressDialog_WallpaperLoading[] = "txt_homescreen_dpopinfo_loading_wallpaper";
+const char hsLocTextId_ProgressDialog_WallpaperLoading[] =
+            "txt_homescreen_dpopinfo_loading_wallpaper";
 
 /*! 
     \class HsSelectBackgroundState
@@ -58,10 +57,10 @@
     QState(parent),
     mImageFetcher(0),
     mSourceView(0),
-    mWallpaperImageReaderThread(0),
-    mWallpaperImageReader(0),
+    mPortraitWallpaperImageReader(0),
+    mLandscapeWallpaperImageReader(0),
     mProgressDialog(0),
-    mImageProcessingState(NotRunning),
+    mRunningThreadAmount(0),
     mShowAnimation(false)
 {
 #ifdef Q_OS_SYMBIAN
@@ -82,8 +81,8 @@
 HsSelectBackgroundState::~HsSelectBackgroundState()
 {
     delete mImageFetcher;
-    delete mWallpaperImageReaderThread;
-    delete mWallpaperImageReader;
+    delete mPortraitWallpaperImageReader;
+    delete mLandscapeWallpaperImageReader;
 }
 
 /*!
@@ -95,7 +94,7 @@
 {
     mSourceView = HsScene::mainWindow()->currentView();
 
-    mImageProcessingState = NotRunning;
+    mRunningThreadAmount = 0;
     mShowAnimation = false;
 
 #ifdef Q_OS_SYMBIAN
@@ -129,18 +128,12 @@
 */
 void HsSelectBackgroundState::onFetchComplete(QStringList imageStringList)
 {
-    if (mImageProcessingState == NotRunning) {
-        // TODO: temporarily show animation immediately (~0.5 sec delay)
-        onShowAnimation();
-        // start counting time for possible animation
-        // TODO: from UX the real response time
-        // TODO: cannot use timer since UI does not respond during hardcore image processing
-        //QTimer::singleShot(1000, this, SLOT(onShowAnimation()));
-    }
+    // start animation immediately
+    onShowAnimation();
 
+    // check that sceneData is available
     HsDatabase *db = HsDatabase::instance();
     Q_ASSERT(db);
-
     HsSceneData sceneData;
     if (!db->scene(sceneData)) {
         emit handleError();
@@ -148,69 +141,54 @@
     }
 
     // clean thread instances
-    delete mWallpaperImageReader;
-    delete mWallpaperImageReaderThread;
-    mWallpaperImageReader = NULL;
-    mWallpaperImageReaderThread = NULL;
+    delete mPortraitWallpaperImageReader;
+    delete mLandscapeWallpaperImageReader;
+    mPortraitWallpaperImageReader = NULL;
+    mLandscapeWallpaperImageReader = NULL;
 
-    mWallpaperImageReaderThread = new QThread();
-    mWallpaperImageReader = new HsWallpaperImageReader();
+    mPortraitWallpaperImageReader = new HsWallpaperImageReader();
+    mLandscapeWallpaperImageReader = new HsWallpaperImageReader();
 
-    // setup processing when image is fetched at first time
-    if (mImageProcessingState == NotRunning) {
-        // delete old wallpapers
-        QFile::remove(sceneData.portraitWallpaper);
-        QFile::remove(sceneData.landscapeWallpaper);
-        
-        QString wallpaperDir = HsWallpaper::wallpaperDirectory();            
-        QDir dir(wallpaperDir);
-        if (!dir.exists()) {
-            dir.mkpath(wallpaperDir);
-        }
-        HsScene *scene = HsScene::instance();
-        Qt::Orientation orientation = scene->orientation();
-        // based on screen orientation select first image to process
-        if (orientation == Qt::Vertical) {
-            mImageProcessingState = ProcessPortraitAsFirst;
-        } else {
-            mImageProcessingState = ProcessLandscapeAsFirst;
-        }
-    }
+    mRunningThreadAmount = 2;
 
-    QRect targetRect;
+    // delete old wallpapers
+    QFile::remove(sceneData.portraitWallpaper);
+    QFile::remove(sceneData.landscapeWallpaper);
 
-    switch (mImageProcessingState) {
-    case ProcessPortraitAsFirst:
-    case ProcessPortraitAsSecond:
-        targetRect = QRect(0, 0, (2 * 360) + HSBOUNDARYEFFECT, 640);
-        break;
-    case ProcessLandscapeAsFirst:
-    case ProcessLandscapeAsSecond:
-        targetRect = QRect(0, 0, (2 * 640) + HSBOUNDARYEFFECT, 360);
-        break;
-    default:
-        emit handleError();
-        return;        
+    QString wallpaperDir = HsWallpaper::wallpaperDirectory();            
+    QDir dir(wallpaperDir);
+    if (!dir.exists()) {
+        dir.mkpath(wallpaperDir);
     }
 
     // left empty to signal we want to use full size image as source
     QRect sourceRect;
-    mWallpaperImageReader->setSourcePath(imageStringList.first());
-    mWallpaperImageReader->setSourceRect(sourceRect);
-    mWallpaperImageReader->setTargetRect(targetRect);
-    mWallpaperImageReader->setCenterTarget(true);
-    mWallpaperImageReader->moveToThread(mWallpaperImageReaderThread);
+
+    // Initialize portrait image threading
+    QRect targetRectPortrait(0, 0, (2 * 360) + HsConfiguration::bounceEffect(), 640);
+    mPortraitWallpaperImageReader->setSourcePath(imageStringList.first());
+    mPortraitWallpaperImageReader->setSourceRect(sourceRect);
+    mPortraitWallpaperImageReader->setTargetRect(targetRectPortrait);
+    mPortraitWallpaperImageReader->setCenterTarget(true);
 
-    mWallpaperImageReader->connect(mWallpaperImageReaderThread,
-                      SIGNAL(started()),
-                      SLOT(processImage()));
-    
-    connect(mWallpaperImageReader,
-            SIGNAL(processingFinished()),
+    connect(mPortraitWallpaperImageReader,
+            SIGNAL(finished()),
+            SLOT(onImageProcessed()));
+
+    // Initialize landscape image threading
+    QRect targetRectLandscape(0, 0, (2 * 640) + HsConfiguration::bounceEffect(), 360);
+    mLandscapeWallpaperImageReader->setSourcePath(imageStringList.first());
+    mLandscapeWallpaperImageReader->setSourceRect(sourceRect);
+    mLandscapeWallpaperImageReader->setTargetRect(targetRectLandscape);
+    mLandscapeWallpaperImageReader->setCenterTarget(true);
+
+    connect(mLandscapeWallpaperImageReader,
+            SIGNAL(finished()),
             SLOT(onImageProcessed()));
   
     // start image processing in thread
-    mWallpaperImageReaderThread->start(QThread::IdlePriority);
+    mPortraitWallpaperImageReader->start();
+    mLandscapeWallpaperImageReader->start();
 }
 
 /*!
@@ -229,7 +207,8 @@
 */
 void HsSelectBackgroundState::onImageProcessed()
 {
-    HsScene *scene = HsScene::instance();
+    mRunningThreadAmount--;
+
     HsDatabase *db = HsDatabase::instance();
     Q_ASSERT(db);
     HsSceneData sceneData;
@@ -237,88 +216,74 @@
         emit handleError();
         return;
     }
-    QFileInfo fileInfo(mWallpaperImageReader->getSourcePath());
+
+    QFileInfo fileInfo;
+    // get image path
+    if (sender() == mPortraitWallpaperImageReader) {
+        fileInfo = mPortraitWallpaperImageReader->sourcePath();
+    } else {
+        fileInfo = mLandscapeWallpaperImageReader->sourcePath();
+    }
+    // suffix is same for both orientations
     QString fileExtension("");
     if (!fileInfo.suffix().isEmpty()) {
         fileExtension = fileInfo.suffix();
     }
-    // set image path to sceneData
-    QString path;
-    if (mImageProcessingState == ProcessPortraitAsFirst ||
-        mImageProcessingState == ProcessPortraitAsSecond) {
-        path = HsWallpaper::wallpaperPath(Qt::Vertical, QString(), fileExtension);
-        sceneData.portraitWallpaper = path;
+
+    QImage image;
+    // set portrait image path to sceneData
+    QString portraitPath(HsWallpaper::wallpaperPath(Qt::Vertical, QString(),
+                                                    fileExtension));
+    // we need to set this always as image to be activated can be either orientation
+    sceneData.portraitWallpaper = portraitPath;
+    QString landscapePath(HsWallpaper::wallpaperPath(Qt::Horizontal, QString(),
+                                                     fileExtension));
+    sceneData.landscapeWallpaper = landscapePath;
+
+    if (sender() == mPortraitWallpaperImageReader) {
+        // get image from thread
+        image = mPortraitWallpaperImageReader->processedImage();
+        // save image
+        image.save(portraitPath);
     } else {
-        path = HsWallpaper::wallpaperPath(Qt::Horizontal, QString(), fileExtension);
-        sceneData.landscapeWallpaper = path;
+        image = mLandscapeWallpaperImageReader->processedImage();
+        image.save(landscapePath);
     }
-    // get image from renderer and save it
-    QImage image = mWallpaperImageReader->getProcessedImage();
-    image.save(path);
-    if (!image.isNull()) {
-        // update scenedata and set new image to background
-        if (db->updateScene(sceneData)) {
-            switch (mImageProcessingState) {
-            case ProcessPortraitAsFirst:
-                scene->wallpaper()->setPortraitImage(path, true);
-                break;
-            case ProcessPortraitAsSecond:
-                // if orientation changed during first image settings
-                if (HsScene::orientation() == Qt::Vertical) {
-                    scene->wallpaper()->setPortraitImage(path, true);
-                } else {
-                    scene->wallpaper()->setPortraitImage(path);
-                }
-                break;
-            case ProcessLandscapeAsFirst:
-                scene->wallpaper()->setLandscapeImage(path, true);
-                break;
-            case ProcessLandscapeAsSecond:
-                if (HsScene::orientation() == Qt::Horizontal) {
-                    scene->wallpaper()->setLandscapeImage(path, true);
-                } else {
-                    scene->wallpaper()->setLandscapeImage(path);
-                }
-                break;
-            default:
-                emit handleError();
-                break;
-            }
-        }
-    } else {
+
+    if (image.isNull()) {
         emit handleError();
         return;
     }
-
-    switch (mImageProcessingState) {
-    case ProcessPortraitAsFirst:
-        mImageProcessingState = ProcessLandscapeAsSecond;
-        if (mShowAnimation) {
-            mProgressDialog->setProgressValue(2);
-        }
-        // process second orientation
-        onFetchComplete(QStringList(mWallpaperImageReader->getSourcePath()));
-        break;
-    case ProcessLandscapeAsFirst:
-        mImageProcessingState = ProcessPortraitAsSecond;
-        if (mShowAnimation) {
-            mProgressDialog->setProgressValue(2);
+    // update scenedata and set new image to background
+    if (db->updateScene(sceneData)) {
+        HsScene *scene = HsScene::instance();
+        // set image to wallpaper (don't activate yet)
+        if (sender() == mPortraitWallpaperImageReader) {
+            scene->wallpaper()->setPortraitImage(portraitPath, false);
+        } else {
+            scene->wallpaper()->setLandscapeImage(landscapePath, false);
         }
-        onFetchComplete(QStringList(mWallpaperImageReader->getSourcePath()));
-        break;
-    case ProcessPortraitAsSecond:
-    case ProcessLandscapeAsSecond:
-        mImageProcessingState = NotRunning;
-        if (mShowAnimation) {
-            mProgressDialog->setProgressValue(3);
+        // if last thread running
+        if (mRunningThreadAmount == 0) {
+            // if current orientation matches -> set to active wallpaper
+            if (HsScene::orientation() == Qt::Vertical) {
+                scene->wallpaper()->setPortraitImage(portraitPath, true);
+            } else {
+                scene->wallpaper()->setLandscapeImage(landscapePath, true);
+            }
+            // finish progress bar
+            if (mShowAnimation) {
+                mProgressDialog->setProgressValue(3);
+            }
+            // let user control again homescreen
+            emit event_waitInput();
+        } else {
+            // update progress information
+            if (mShowAnimation) {
+                mProgressDialog->setProgressValue(2);
+            }
         }
-        // let user control again homescreen
-        emit event_waitInput();
-        break;
-    default:
-        emit handleError();
-        break;
-    }
+    }     
 }
 
 /*!
@@ -329,18 +294,20 @@
 {
     delete mProgressDialog;
     mProgressDialog = new HbProgressDialog(HbProgressDialog::ProgressDialog);
-    // TODO: setPrimaryAction is deprecated, clearActions does the same but crashes when dialog closes, check orbit list
-    mProgressDialog->setPrimaryAction(0);
+    /* TODO: workaround to remove cancel button (setPrimaryAction(0) is deprecated).
+     * clearActions does the same but crashes, fix should be in wk16, check orbit list
+     */
+    QList<QAction*> actions = mProgressDialog->actions();
+    actions[0]->setVisible(false);
     mProgressDialog->setIcon(HbIcon("note_info"));
     mProgressDialog->setText(hbTrId(hsLocTextId_ProgressDialog_WallpaperLoading));
     mProgressDialog->setMinimum(0);
     mProgressDialog->setMaximum(3);
     mProgressDialog->setBackgroundFaded(true);
     mProgressDialog->setAutoClose(true);
+    // set initial value to appear as loading
     mProgressDialog->setProgressValue(1);
     mProgressDialog->show();
-    // TODO: temporary solution to minimize progress dialog resizing problem
-    QApplication::processEvents();
     mShowAnimation = true;
 }
 
@@ -350,7 +317,6 @@
 */
 void HsSelectBackgroundState::onHandleError()
 {
-    mImageProcessingState = Error;
     if (mShowAnimation) {
         mProgressDialog->close();
     }
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/hsmenuworkerstateplugin.pro	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/hsmenuworkerstateplugin.pro	Wed Jun 23 17:05:06 2010 +0100
@@ -25,7 +25,8 @@
 LIBS += -lhsdomainmodel \
         -lhsmenuserviceprovider \
         -lhsutils \
-        -lcaclient
+        -lcaclient \
+        -lcasoftwareregistry
 
 DEPENDPATH += ./inc \
     ./src
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/hsmenuworkerstateplugin.qrc	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/hsmenuworkerstateplugin.qrc	Wed Jun 23 17:05:06 2010 +0100
@@ -3,5 +3,6 @@
         <file alias="hsappchecklist.docml">resource/hsappchecklist.docml</file>
         <file alias="hswidgetpreviewdialog.docml">resource/hswidgetpreviewdialog.docml</file>
         <file alias="hsarrangedialog.docml">resource/hsarrangedialog.docml</file>
+        <file alias="hsdetailsdialog.docml">resource/hsdetailsdialog.docml</file>
     </qresource>
 </RCC>
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsaddappstocollectionstate.h	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsaddappstocollectionstate.h	Wed Jun 23 17:05:06 2010 +0100
@@ -134,12 +134,8 @@
 
     HsCollectionNameDialog *mEditorDialog;
 
-    bool mEditorFinishedEntered;
-
     HsCollectionsListDialog *mListDialog;
 
-    bool mListFinishedEntered;
-
 };
 
 #endif /* ADDAPPSTOCOLLECTIONSTATE_H */
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsaddtohomescreenstate.h	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsaddtohomescreenstate.h	Wed Jun 23 17:05:06 2010 +0100
@@ -27,9 +27,9 @@
 HS_STATES_TEST_CLASS(MenuStatesTest)
 
 class HbAction;
+class HbMessageBox;
 class CaEntry;
-class HbMessageBox;
-
+class CaNotifier;
 
 class HsAddToHomeScreenState: public  HsMenuBaseState
 {
@@ -50,6 +50,8 @@
     void cleanUp();
 
     void messageWidgetCorruptedFinished(HbAction* finishedAction);
+    
+    void memoryCardRemoved();
 
 signals:
 
@@ -67,6 +69,7 @@
 
     void logActionResult(QString operationName, int entryId,
                          bool operationSucceded);
+    void subscribeForMemoryCardRemove();
 
 private:
 
@@ -78,7 +81,10 @@
     HbMessageBox *mCorruptedMessage;
 
     HbAction *mConfirmAction;
+    
     HsMenuMode mMenuMode;
+    
+    CaNotifier *mNotifier;
 
 };
 
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsarrangestate.h	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsarrangestate.h	Wed Jun 23 17:05:06 2010 +0100
@@ -84,9 +84,6 @@
     QList<int> mArrangedCollIdList;
     
     QObjectList mObjectList;
-    
-    bool mFinishedEntered;
-
 
 };
 
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hscollectionnamestate.h	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hscollectionnamestate.h	Wed Jun 23 17:05:06 2010 +0100
@@ -71,7 +71,6 @@
 
     HsCollectionNameDialog *mCollectionNameDialog;
 
-    bool mFinishedEntered;
 };
 
 #endif /* COLLECTIONANAMESTATE_H */
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsmenustates_global.h	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsmenustates_global.h	Wed Jun 23 17:05:06 2010 +0100
@@ -44,6 +44,10 @@
     ":/xml/hsarrangedialog.docml";
 static const char *const HS_ARRANGE_DIALOG_NAME="arrange_dialog";
 static const char *const HS_ARRANGE_LIST_NAME="arrange_list";
+
+static const char *const HS_DETAILS_DIALOG_LAYOUT =
+    ":/xml/hsdetailsdialog.docml";
+static const char *const HS_DETAILS_DIALOG_NAME="details_dialog";
 /*!
  To enable logging of function entry and exit use the following flag for qmake:
  -config nft
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsmenuworkerstate.h	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsmenuworkerstate.h	Wed Jun 23 17:05:06 2010 +0100
@@ -37,6 +37,10 @@
     HsMenuWorkerState(QState *parent = 0);
 
     virtual ~HsMenuWorkerState();
+    
+signals:
+
+    void reset();    
 
 private:
 
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hspreviewhswidgetstate.h	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hspreviewhswidgetstate.h	Wed Jun 23 17:05:06 2010 +0100
@@ -53,8 +53,6 @@
 
     void cleanUp();
 
-    void memoryCardRemoved();
-
 signals:
     void exit();
 
@@ -79,7 +77,7 @@
     int mEntryId;
 
     HbMessageBox *mCorruptedMessage;
-
+    
 };
 
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsuninstallitemstate.h	Wed Jun 23 17:05:06 2010 +0100
@@ -0,0 +1,73 @@
+/*
+ * 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 HSUNINSTALLITEMSTATE_H
+#define HSUNINSTALLITEMSTATE_H
+
+#include <QState>
+
+#include "hsmenustates_global.h"
+HS_STATES_TEST_CLASS(MenuStatesTest)
+
+class HbAction;
+class HbMessageBox;
+class HsShortcutService;
+class HsMenuService;
+
+class HsUninstallItemState: public QState
+{
+    Q_OBJECT
+
+    HS_STATES_TEST_FRIEND_CLASS(MenuStatesTest)
+
+public:
+
+    HsUninstallItemState(QState *parent = 0);
+
+    virtual ~HsUninstallItemState();
+
+protected:
+
+    void onEntry(QEvent *event);
+
+private slots:
+
+    void uninstallMessageFinished(HbAction* finishedAction);
+
+    void cleanUp();
+
+signals:
+
+    void exit();
+
+private:
+
+    void construct();
+
+    HsShortcutService *shortcutService() const;
+
+private:
+
+    int mItemId;
+
+    HbMessageBox *mUninstallMessage; // deletes itself automatically on close
+
+    HbAction *mConfirmAction; // child for mConfirmMessage
+
+};
+
+#endif //HSUNINSTALLITEMSTATE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsviewappdetailsstate.h	Wed Jun 23 17:05:06 2010 +0100
@@ -0,0 +1,71 @@
+/*
+* 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 Application Library state.
+*
+*/
+
+#ifndef HSVIEWAPPDETAILSSTATE_H_
+#define HSVIEWAPPDETAILSSTATE_H_
+
+#include <QState>
+#include <QVariant>
+
+#include "hsmenustates_global.h"
+HS_STATES_TEST_CLASS(MenuStatesTest)
+
+class HbListWidget;
+class HsMenuItemModel;
+class HbDialog;
+class CaNotifier;
+
+class HsViewAppDetailsState: public QState
+{
+    Q_OBJECT
+
+    HS_STATES_TEST_FRIEND_CLASS(MenuStatesTest)
+
+public:
+
+    HsViewAppDetailsState(QState *parent = 0);
+
+    virtual ~HsViewAppDetailsState();
+
+protected:
+
+    void onEntry(QEvent *event);
+    void onExit(QEvent *event);
+
+private slots:
+
+    void stateExited();
+    void memoryCardRemoved();
+    
+signals:
+    void exit();    
+
+private:
+
+    void construct();
+    void subscribeForMemoryCardRemove(int entryId);
+
+private:
+
+    HbDialog *mDialog;
+    
+    QObjectList mObjectList;
+    
+    CaNotifier *mNotifier;
+};
+
+#endif /* HSVIEWAPPDETAILSSTATE_H_ */
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/resource/hsappchecklist.docml	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/resource/hsappchecklist.docml	Wed Jun 23 17:05:06 2010 +0100
@@ -2,6 +2,9 @@
 <hbdocument version="0.9">
     <widget name="view" type="HbView">
         <widget name="listView" role="HbView:widget" type="HbListView">
+            <widget name="listViewItemPrototype" role="HbAbstractView:prototype" type="HbListViewItem">
+                <enums name="graphicsSize" value="LargeIcon"/>
+            </widget>
             <enums name="selectionMode" value="MultiSelection"/>
             <bool name="visible" value="TRUE"/>
             <string name="orientation" value="Horizontal"/>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/resource/hsdetailsdialog.docml	Wed Jun 23 17:05:06 2010 +0100
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<hbdocument version="0.9">
+    <object name="qtl_dialog_softkey_left" type="HbAction">
+        <string name="role" value="HbDialog:primaryAction"/>
+        <string name="role" value="HbDialog:primaryAction"/>
+        <string locid="txt_common_button_ok" name="text"/>
+    </object>
+    <widget name="details_dialog" type="HbDialog">
+        <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"/>
+            <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
+            <string name="dismissPolicy" value="HbPopup::NoDismiss"/>
+        </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 name="plainText" value="txt_applib_dialog_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 name="plainText" value="txt_applib_dialog_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 name="plainText" value="txt_applib_dialog_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 name="plainText" value="txt_applib_dialog_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)"/>
+                </widget>
+                <widget name="_size" type="HbLabel">
+                    <sizehint height="expr(var(hb-param-text-height-secondary))" type="PREFERRED"/>
+                    <string name="plainText" value="txt_applib_dialog_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)"/>
+                </widget>
+                <widget name="_type" type="HbLabel">
+                    <sizehint height="expr(var(hb-param-text-height-secondary))" type="PREFERRED"/>
+                    <string name="plainText" value="txt_applib_dialog_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>
+                <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="_size"/>
+                    <linearitem itemname="size"/>
+                    <linearitem itemname="_type"/>
+                    <linearitem itemname="type"/>
+                </layout>
+            </widget>
+        </widget>
+        <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)"/>
+        <ref object="qtl_dialog_softkey_left" role="HbDialog:primaryAction"/>
+    </widget>
+    <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
+        <uistate name="Common ui state" sections="#common"/>
+    </metadata>
+</hbdocument>
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsaddappstocollectionstate.cpp	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsaddappstocollectionstate.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -180,8 +180,7 @@
     mNewCollectionState(0), mAppsCheckListState(0), mActionType(
         NoActionType), mApplicationsSortAttribute(NoHsSortAttribute),
     mCollectionsSortAttribute(NoHsSortAttribute), mAppsCheckList(0),
-    mEditorDialog(0), mEditorFinishedEntered(false), mListDialog(0),
-    mListFinishedEntered(false)
+    mEditorDialog(0), mListDialog(0)
 {
     construct();
 }
@@ -376,11 +375,15 @@
     mAppsCheckList = NULL;
 
     if (mEditorDialog) {
+        disconnect(mEditorDialog, SIGNAL(finished(HbAction*)),
+                   this, SLOT(editorDialogFinished(HbAction*)));
         mEditorDialog->close();
         mEditorDialog = NULL;
     }
 
     if (mListDialog) {
+        disconnect(mListDialog, SIGNAL(finished(HbAction*)),
+                   this, SLOT(listDialogFinished(HbAction*)));
         mListDialog->close();
         mListDialog = NULL;
     }
@@ -399,7 +402,6 @@
 {
     qDebug("HsAddAppsToCollectionState::newCollection");
     HSMENUTEST_FUNC_ENTRY("HsAddAppsToCollectionState::newCollection");
-    mEditorFinishedEntered = false;
     mEditorDialog = new HsCollectionNameDialog();
     mEditorDialog->open(this, SLOT(editorDialogFinished(HbAction*)));
 
@@ -415,31 +417,23 @@
 //
 void HsAddAppsToCollectionState::editorDialogFinished(HbAction* finishedAction)
 {
-    if (!mEditorFinishedEntered) {
-        mEditorFinishedEntered = true;
-
-        if (finishedAction == mEditorDialog->actions().value(0)) {
-            QString newName(mEditorDialog->newName(mEditorDialog->value().toString(), true));
-            if (mActionType == ViaAllViewOptionMenuType) {
-                qDebug("HsAddAppsToCollectionState::newCollection() "
-                       "- emit collectionNameSelectedCl(newName)");
-                emit transitToAppsCheckListState(newName);
-            } else {
-                qDebug("HsAddAppsToCollectionState::newCollection() "
-                       "- emit collectionNameSelected(newName)");
-                emit transitToSaveState(newName);
-            }
+    if (finishedAction == mEditorDialog->actions().value(0)) {
+        QString newName(mEditorDialog->newName(mEditorDialog->value().toString(), true));
+        if (mActionType == ViaAllViewOptionMenuType) {
+            qDebug("HsAddAppsToCollectionState::newCollection() "
+                   "- emit collectionNameSelectedCl(newName)");
+            emit transitToAppsCheckListState(newName);
         } else {
-            qDebug(
-                "HsAddAppsToCollectionState::newCollection() - emit cancel()");
-            emit transitToFinalState();
+            qDebug("HsAddAppsToCollectionState::newCollection() "
+                   "- emit collectionNameSelected(newName)");
+            emit transitToSaveState(newName);
         }
-        mEditorDialog = NULL; // set to null since this will be deleted after close
-
     } else {
-        // (work-around if more then one action is selected in HbDialog)
-        qWarning("Another signal finished was emited.");
+        qDebug(
+            "HsAddAppsToCollectionState::newCollection() - emit cancel()");
+        emit transitToFinalState();
     }
+    mEditorDialog = NULL; // set to null since this will be deleted after close
 }
 
 /*!
@@ -452,7 +446,6 @@
 {
     qDebug("HsAddAppsToCollectionState::selectCollection()");
     HSMENUTEST_FUNC_ENTRY("HsAddAppsToCollectionState::selectCollection");
-    mListFinishedEntered = false;
     mListDialog = new HsCollectionsListDialog(mCollectionsSortAttribute,
                                                        mCollectionId);
     mListDialog->open(this, SLOT(listDialogFinished(HbAction*)));
@@ -469,34 +462,25 @@
 //
 void HsAddAppsToCollectionState::listDialogFinished(HbAction* finishedAction)
 {
-    if (!mListFinishedEntered) {
-        mListFinishedEntered = true;
-
-		if (finishedAction != mListDialog->actions().value(1)) {
-            int itemId = mListDialog->getItemId();
-            if (itemId) {
-                if (mActionType == ViaAllViewOptionMenuType) {
-                    qDebug("emit collectionSelectedCl(%d)", itemId);
-                    emit transitToAppsCheckListState(itemId);
-                } else {
-                    qDebug("emit collectionSelected(%d)", itemId);
-                    emit transitToSaveState(itemId);
-                }
+    if (finishedAction != mListDialog->actions().value(0)) {
+        int itemId = mListDialog->getItemId();
+        if (itemId) {
+            if (mActionType == ViaAllViewOptionMenuType) {
+                qDebug("emit collectionSelectedCl(%d)", itemId);
+                emit transitToAppsCheckListState(itemId);
             } else {
-                qDebug("emit createNewCollection()");
-                emit transitToNewCollectionState();
+                qDebug("emit collectionSelected(%d)", itemId);
+                emit transitToSaveState(itemId);
             }
         } else {
-            qDebug("emit cancel()");
-            emit transitToFinalState();
+            qDebug("emit createNewCollection()");
+            emit transitToNewCollectionState();
         }
-
-        mListDialog = NULL; // set to null since this will be deleted after close
-
     } else {
-        // (work-around if more then one action is selected in HbDialog)
-        qWarning("Another signal finished was emited.");
+        qDebug("emit cancel()");
+        emit transitToFinalState();
     }
+    mListDialog = NULL; // set to null since this will be deleted after close
 }
 
 /*!
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsaddtohomescreenstate.cpp	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsaddtohomescreenstate.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -27,6 +27,8 @@
 
 #include "hsaddtohomescreenstate.h"
 #include "hsmenuevent.h"
+#include "canotifier.h"
+#include "canotifierfilter.h"
 #include "caservice.h"
 #include "caquery.h"
 #include "hsmenuservice.h"
@@ -54,7 +56,8 @@
 HsAddToHomeScreenState::HsAddToHomeScreenState(QState *parent) :
     HsMenuBaseState(ADD_TO_HOMESCREEN_STATE, parent), 
     mCorruptedMessage(NULL), mConfirmAction(NULL),
-    mMenuMode(NormalHsMenuMode)
+    mMenuMode(NormalHsMenuMode),
+    mNotifier(0)
 {
     requestServices(QList<QVariant> () << SHORTCUT_SERVICE_KEY
                     << CONTENT_SERVICE_KEY);
@@ -105,6 +108,7 @@
     if (success && (mMenuMode == NormalHsMenuMode)) {
         HbNotificationDialog *notificationDialog = new HbNotificationDialog();
         notificationDialog->setAttribute(Qt::WA_DeleteOnClose);
+        notificationDialog->setSequentialShow(false);
         notificationDialog->setTitle(hbTrId(
                                      "txt_applib_dpophead_added_to_homescreen") );
         notificationDialog->show();
@@ -130,6 +134,7 @@
     params[URI] = uri;
     bool success = contentService.createWidget(params);
     if (!success) {
+        subscribeForMemoryCardRemove();
         showMessageWidgetCorrupted();
     } else {
         emit exit();
@@ -154,6 +159,7 @@
 void HsAddToHomeScreenState::showMessageWidgetCorrupted()
 {
     HSMENUTEST_FUNC_ENTRY("HsCollectionState::showMessageWidgetCorrupted");
+
     mCorruptedMessage = new HbMessageBox(HbMessageBox::MessageTypeQuestion);
     mCorruptedMessage->setAttribute(Qt::WA_DeleteOnClose);
 
@@ -184,20 +190,13 @@
 void HsAddToHomeScreenState::messageWidgetCorruptedFinished
         (HbAction* finishedAction)
 {
-    if (mCorruptedMessage) {
-        if (finishedAction == mConfirmAction) {
-            HsMenuService::executeAction(mEntryId, removeActionIdentifier());
-        }
-        mCorruptedMessage = NULL;
-        emit exit();
-        if (mMenuMode == AddHsMenuMode) {
-            machine()->postEvent(
-                HsMenuEventFactory::createOpenHomeScreenEvent());
-        }
-
-    } else {
-        // (work-around for crash if more then one action is selected in HbDialog)
-        qWarning("Another signal finished was emited.");
+    if (finishedAction == mConfirmAction) {
+        HsMenuService::executeAction(mEntryId, removeActionIdentifier());
+    }
+    emit exit();
+    if (mMenuMode == AddHsMenuMode) {
+        machine()->postEvent(
+            HsMenuEventFactory::createOpenHomeScreenEvent());
     }
 }
 
@@ -210,9 +209,18 @@
 {
     // Close popups if App key was pressed
     if (mCorruptedMessage) {
+        disconnect(mCorruptedMessage, SIGNAL(finished(HbAction*)),
+                   this, SLOT(messageWidgetCorruptedFinished(HbAction*)));
         mCorruptedMessage->close();
         mCorruptedMessage = NULL;
     }
+    
+    disconnect(mNotifier,
+               SIGNAL(entryChanged(CaEntry,ChangeType)),
+               this, SLOT(memoryCardRemoved()));
+
+    delete mNotifier;
+    mNotifier = NULL;
 }
 
 
@@ -305,3 +313,33 @@
         qWarning() << message;
     }
 }
+
+/*!
+ Subscribe for memory card remove.
+ \retval void
+ */
+void HsAddToHomeScreenState::subscribeForMemoryCardRemove()
+{
+    CaNotifierFilter filter;
+    QList<int> entryIds;
+    entryIds.append(mEntryId);
+    filter.setIds(entryIds);
+    mNotifier = CaService::instance()->createNotifier(filter);
+    mNotifier->setParent(this);
+    connect(mNotifier,
+            SIGNAL(entryChanged(CaEntry,ChangeType)),
+            SLOT(memoryCardRemoved()));
+}
+
+/*!
+ Memory card with instaled widget was removed.
+ \retval void
+ */
+void HsAddToHomeScreenState::memoryCardRemoved()
+{
+    if (mCorruptedMessage) {
+        mCorruptedMessage->close();
+        mCorruptedMessage = NULL;
+    }
+    // exit not needed, it is called after dialog closed
+}
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsarrangestate.cpp	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsarrangestate.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -78,7 +78,7 @@
  */
 HsArrangeState::HsArrangeState(QState *parent) :
     QState(parent), mDialog(0), mEntriesList(0), 
-    mItemModel(0), mFinishedEntered(false)
+    mItemModel(0)
 {
     construct();
 }
@@ -193,21 +193,13 @@
  */
 void HsArrangeState::arrangeDialogFinished(HbAction* finishedAction)
 {
-    if (!mFinishedEntered) {
-        mFinishedEntered = true;
-
-        mEntriesList->setArrangeMode(false);
-        if (finishedAction == mDialog->actions().value(0)) {
-            save(*mEntriesList);
-        }
-        emit exit();
-    } else {
-        // (work-around for crash if more then one action is selected in HbDialog)
-        qWarning("Another signal finished was emited.");
+    mEntriesList->setArrangeMode(false);
+    if (finishedAction == mDialog->actions().value(0)) {
+        save(*mEntriesList);
     }
+    emit exit();
 }
 
-
 /*!
  Slot invoked when a state is exited.
  */
@@ -215,9 +207,10 @@
 {
     HSMENUTEST_FUNC_ENTRY("HsArrangeState::stateExited");
     if (mDialog) {
+        disconnect(mDialog, SIGNAL(finished(HbAction*)), this, SLOT(arrangeDialogFinished(HbAction*)));
         mDialog->close();
+        mDialog = NULL;
     }
-    mDialog = NULL;
 
     mObjectList.clear(); // mDialog as parent for all confml items
     
@@ -228,8 +221,6 @@
     mArrangedCollIdList.clear();
     mCollIdList.clear();
 
-    mFinishedEntered = false;
-
     HSMENUTEST_FUNC_EXIT("HsArrangeState::stateExited");
     qDebug("HsArrangeState::stateExited()");
 }
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hscollectionnamedialog.cpp	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hscollectionnamedialog.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -81,9 +81,6 @@
  \param item_id Item's id.
  \retval Selected action.
  */
-#ifdef COVERAGE_MEASUREMENT
-#pragma CTC SKIP // Reason: Modal inputdialog open
-#endif //COVERAGE_MEASUREMENT
 void HsCollectionNameDialog::open(QObject* receiver, const char* member)
 {
     HSMENUTEST_FUNC_ENTRY("HsCollectionNameDialog::open");
@@ -96,10 +93,6 @@
 
     HSMENUTEST_FUNC_EXIT("HsCollectionNameDialog::open");
 }
-#ifdef COVERAGE_MEASUREMENT
-#pragma CTC ENDSKIP // Reason: Modal inputdialog exec
-#endif //COVERAGE_MEASUREMENT
-
 
 /*!
     \reimp 
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hscollectionnamestate.cpp	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hscollectionnamestate.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -55,7 +55,7 @@
  */
 HsCollectionNameState::HsCollectionNameState(QState *parent) :
     QState(parent),
-    mItemId(0), mCollectionNameDialog(NULL), mFinishedEntered(false)
+    mItemId(0), mCollectionNameDialog(NULL)
 {
     construct();
 }
@@ -76,7 +76,6 @@
 {
     setObjectName(this->parent()->objectName() + "/collectionnamestate");
     connect(this, SIGNAL(exited()), SLOT(cleanUp()));
-
 }
 
 /*!
@@ -93,7 +92,6 @@
     QState::onEntry(event);
 
     mItemId = 0;
-    mFinishedEntered = false;
     if (event->type() == HsMenuEvent::eventType()) {
         HsMenuEvent *menuEvent = static_cast<HsMenuEvent *>(event);
         QVariantMap data = menuEvent->data();
@@ -115,24 +113,18 @@
 //
 void HsCollectionNameState::dialogFinished(HbAction* finishedAction)
 {
-    if (!mFinishedEntered) {
-        mFinishedEntered = true;
-        if (finishedAction == mCollectionNameDialog->actions().value(0)) {
-            QString newName(mCollectionNameDialog->newName(mCollectionNameDialog->value().toString(), true));
-            if (mItemId) {
-                if (newName != HsMenuService::getName(mItemId)) {
-                    HsMenuService::renameCollection(mItemId, newName);
-                }
-            } else {
-                HsMenuService::createCollection(newName);
+    if (finishedAction == mCollectionNameDialog->actions().value(0)) {
+        QString newName(mCollectionNameDialog->newName(mCollectionNameDialog->value().toString(), true));
+        if (mItemId) {
+            if (newName != HsMenuService::getName(mItemId)) {
+                HsMenuService::renameCollection(mItemId, newName);
             }
+        } else {
+            HsMenuService::createCollection(newName);
         }
-        mCollectionNameDialog = NULL; //set to NULL since this will be deleted atfer close
-        emit exit();
-    } else {
-        // (work-around if more then one action is selected in HbDialog)
-        qWarning("Another signal finished was emited.");
     }
+    mCollectionNameDialog = NULL; //set to NULL since this will be deleted atfer close
+    emit exit();
 }
 
 // ---------------------------------------------------------------------------
@@ -141,6 +133,7 @@
 void HsCollectionNameState::cleanUp()
 {
     if (mCollectionNameDialog) {
+        disconnect(mCollectionNameDialog, SIGNAL(finished(HbAction*)), this, SLOT(dialogFinished(HbAction*)));
         mCollectionNameDialog->close();
         mCollectionNameDialog = NULL;
     }
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hscollectionslistdialog.cpp	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hscollectionslistdialog.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -62,7 +62,10 @@
         int collectionId) :
     HbSelectionDialog(), mItemId(0)
 {
-    setPrimaryAction(NULL);
+    clearActions();
+    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
@@ -79,10 +82,6 @@
     delete mModel;
 }
 
-
-#ifdef COVERAGE_MEASUREMENT
-#pragma CTC SKIP // Reason: Modal inputdialog open
-#endif //COVERAGE_MEASUREMENT
 /*!
  Executes dialog.
  \retval Selected action.
@@ -92,11 +91,6 @@
     this->setAttribute(Qt::WA_DeleteOnClose);
     HbSelectionDialog::open(receiver, member);
 }
-#ifdef COVERAGE_MEASUREMENT
-#pragma CTC ENDSKIP // Reason: Modal inputdialog exec
-#endif //COVERAGE_MEASUREMENT
-
-
 
 /*!
     \reimp
@@ -107,7 +101,7 @@
     qDebug("HsCollectionsListDialog::closeEvent");
     HbAction *closingAction = qobject_cast<HbAction *>(sender());
 
-	if (closingAction != actions().value(1)) {
+    if (closingAction != actions().value(0)) {
         QModelIndexList modlist = selectedModelIndexes();
         if (modlist.count()) {
             mItemId
@@ -118,8 +112,6 @@
     HbDialog::closeEvent(event); // emits finished(HbAction*)
 }
 
-
-
 /*!
  Creates standard item model.
  \param sortOrder sort order.
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsdeletecollectionitemstate.cpp	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsdeletecollectionitemstate.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -66,9 +66,6 @@
  Sets entry event.
  \param event entry event.
  */
-#ifdef COVERAGE_MEASUREMENT
-#pragma CTC SKIP
-#endif //COVERAGE_MEASUREMENT
 void HsDeleteCollectionItemState::onEntry(QEvent *event)
 {
     HSMENUTEST_FUNC_ENTRY("HsDeleteCollectionItemState::onEntry");
@@ -102,26 +99,18 @@
 
     HSMENUTEST_FUNC_EXIT("HsDeleteCollectionItemState::onEntry");
 }
-#ifdef COVERAGE_MEASUREMENT
-#pragma CTC ENDSKIP
-#endif //COVERAGE_MEASUREMENT
 
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Action after closed confirmation dialog.
+ \param finishedAction chosen action.
+ \retval void
+ */
 void HsDeleteCollectionItemState::deleteMessageFinished(HbAction* finishedAction)
 {
-    if (mItemId !=0 ) { // (work-around for crash if more then one action is selected in HbDialog)
-
-        if (finishedAction == mConfirmAction) {
-            HsMenuService::removeApplicationFromCollection(mItemId, mCollectionId);
-        }
-        mItemId = 0;
-        emit exit();
-    } else {
-        // (work-around for crash if more then one action is selected in HbDialog)
-        qWarning("Another signal finished was emited.");
+    if (finishedAction == mConfirmAction) {
+        HsMenuService::removeApplicationFromCollection(mItemId, mCollectionId);
     }
+    emit exit();
 }
 
 /*!
@@ -132,11 +121,12 @@
 {
     // Close messagebox if App key was pressed
     if (mDeleteMessage) {
+		disconnect(mDeleteMessage, SIGNAL(finished(HbAction*)), this, SLOT(deleteMessageFinished(HbAction*)));
         mDeleteMessage->close();
+		mDeleteMessage = NULL;
     }
-
-    mDeleteMessage = NULL;
-    mConfirmAction= NULL;
+	
+    mConfirmAction = NULL;
     mItemId = 0;
     mCollectionId = 0;
 }
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsdeletecollectionstate.cpp	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsdeletecollectionstate.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -126,19 +126,12 @@
 //
 void HsDeleteCollectionState::deleteMessageFinished(HbAction* finishedAction)
 {
-    if (mItemId !=0 ) { // (work-around for crash if more then one action is selected in HbDialog)
-
-        if (finishedAction == mConfirmAction) {
-            HsMenuService::removeCollection(mItemId);
-            machine()->postEvent(
-            HsMenuEventFactory::createCollectionDeletedEvent());
-        }
-        mItemId = 0;
-        emit exit();
-    } else {
-        // (work-around for crash if more then one action is selected in HbDialog)
-        qWarning("Another signal finished was emited.");
+    if (finishedAction == mConfirmAction) {
+        HsMenuService::removeCollection(mItemId);
+        machine()->postEvent(
+        HsMenuEventFactory::createCollectionDeletedEvent());
     }
+    emit exit();
 }
 
 /*!
@@ -149,10 +142,11 @@
 {
     // Close messagebox if App key was pressed
     if (mDeleteMessage) {
+        disconnect(mDeleteMessage, SIGNAL(finished(HbAction*)), this, SLOT(deleteMessageFinished(HbAction*)));
         mDeleteMessage->close();
+        mDeleteMessage = NULL;
     }
 
-    mDeleteMessage = NULL;
-    mConfirmAction= NULL;
+    mConfirmAction = NULL;
     mItemId = 0;
 }
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsmenuworkerstate.cpp	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsmenuworkerstate.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -21,11 +21,13 @@
 #include "hsaddappstocollectionstate.h"
 #include "hsdeletecollectionstate.h"
 #include "hsdeletecollectionitemstate.h"
+#include "hsuninstallitemstate.h"
 #include "hsmenuworkerstate.h"
 #include "hscollectionnamestate.h"
 #include "hsarrangestate.h"
 #include "hspreviewhswidgetstate.h"
 #include "hsviewappsettingsstate.h"
+#include "hsviewappdetailsstate.h"
 
 /*!
  \class HsMenuWorkerState
@@ -74,6 +76,8 @@
         HsMenuEvent::DeleteCollection);
     createChildState<HsDeleteCollectionItemState> (
         HsMenuEvent::RemoveAppFromCollection);
+    createChildState<HsUninstallItemState> (
+        HsMenuEvent::UninstallApplication);
     createChildState<HsArrangeState> (HsMenuEvent::ArrangeCollection);
 
     // create a new child state based on the template
@@ -103,9 +107,10 @@
     // set a transition to the initial state after child processing finished
     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);
 
     HSMENUTEST_FUNC_EXIT("HsMenuWorkerState::construct");
 }
@@ -130,6 +135,7 @@
     mInitialState->addTransition(newChildStateTransition);
     // set a transition to the initial state after child processing finished
     newChildState->addTransition(newChildState, SIGNAL(exit()), mInitialState);
+    connect(this, SIGNAL(reset()), newChildState, SIGNAL(exit()));
     HSMENUTEST_FUNC_EXIT("HsMenuWorkerState::createChildState");
 
     return newChildState;
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hspreviewhswidgetstate.cpp	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hspreviewhswidgetstate.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -41,11 +41,9 @@
 #include "canotifier.h"
 #include "canotifierfilter.h"
 #include "caservice.h"
-
 #include "hsdomainmodel_global.h"
 #include <hscontentservice.h>
 
-
 const char HS_PREVIEW_HS_WIDGET_STATE[] = "HsPreviewHSWidgetState";
 
 /*!
@@ -147,13 +145,13 @@
             mScrollArea->setContentWidget(mWidget); // ownership transferred
             
             subscribeForMemoryCardRemove();
-            mWidget->initializeWidget();
-            mWidget->showWidget();
+            mWidget->startWidget();
             // Launch popup asyncronously
             mPopupDialog->open(this, SLOT(previewDialogFinished(HbAction*)));    
         }
 
     } else {
+        subscribeForMemoryCardRemove();
         showMessageWidgetCorrupted();
     }
 
@@ -169,73 +167,54 @@
  */
 void HsPreviewHSWidgetState::cleanUp()
 {
-    // Close popups if App key was pressed
+    // Close popups if App key was pressed or memory card removed
     if (mPopupDialog) {
+        disconnect(mPopupDialog, SIGNAL(finished(HbAction*)), this, SLOT(previewDialogFinished(HbAction*)));
         mPopupDialog->close();
+        mPopupDialog = NULL;
     }
 
     if (mCorruptedMessage) {
+        disconnect(mCorruptedMessage, SIGNAL(finished(HbAction*)), this, SLOT(messageWidgetCorruptedFinished(HbAction*)));
         mCorruptedMessage->close();
+        mCorruptedMessage = NULL;
     }
 
-    mPopupDialog = NULL;
     mScrollArea = NULL;
     mWidget = NULL;
-    mCorruptedMessage = NULL;
 
     disconnect(mNotifier,
                SIGNAL(entryChanged(CaEntry,ChangeType)),
-               this, SLOT(memoryCardRemoved()));
+               this, SIGNAL(exit()));
 
     delete mNotifier;
     mNotifier = NULL;
 }
 
 /*!
- Memory card with instaled widget was removed.
- \retval void
- */
-void HsPreviewHSWidgetState::memoryCardRemoved()
-{
-    if (mPopupDialog) {
-        mPopupDialog->close();
-    }
-    // exit not needed, it is called after dialog closed
-
-}
-
-/*!
  Slot launched on dismissing the preview dialog
  \retval void
  */
 void HsPreviewHSWidgetState::previewDialogFinished(HbAction* finishedAction)
 {
-    if (mPopupDialog != NULL) { 
-        // (work-around for crash if more then one action is selected in HbDialog)
-        if (finishedAction == mPopupDialog->actions().value(0)) {
-            mWidget->hideWidget();
+    if (finishedAction == mPopupDialog->actions().value(0)) {
+        mWidget->hideWidget();
+        mScrollArea->takeContentWidget();
+        HsScene::instance()->activePage()->addNewWidget(
+            mWidget); // ownership transferred
+        HbNotificationDialog *notificationDialog = new HbNotificationDialog();
+        notificationDialog->setAttribute(Qt::WA_DeleteOnClose);
+        notificationDialog->setTitle(hbTrId(
+                                     "txt_applib_dpophead_added_to_homescreen") );
+        notificationDialog->show();
+    } else {
             mScrollArea->takeContentWidget();
-            HsScene::instance()->activePage()->addNewWidget(
-                mWidget); // ownership transferred
-            HbNotificationDialog *notificationDialog = new HbNotificationDialog();
-            notificationDialog->setAttribute(Qt::WA_DeleteOnClose);
-            notificationDialog->setTitle(hbTrId(
-                                         "txt_applib_dpophead_added_to_homescreen") );
-            notificationDialog->show();
-        } else {
-            mWidget->uninitializeWidget();
-            mWidget->deleteFromDatabase();
-        }
-        mPopupDialog = NULL;
-        emit exit();
-    } else {
-        // (work-around for crash if more then one action is selected in HbDialog)
-        qWarning("Another signal finished was emited.");
+            mWidget->remove();
+            mWidget = NULL;
     }
+    emit exit();
 }
 
-
-
 /*!
  Subscribe for memory card remove.
  \retval void
@@ -250,10 +229,9 @@
     mNotifier->setParent(this);
     connect(mNotifier,
             SIGNAL(entryChanged(CaEntry,ChangeType)),
-            SLOT(memoryCardRemoved()));
+            SIGNAL(exit()));
 }
 
-
 /*!
  Shows message about corrupted widget library. Deletes widget eventually
  \retval void
@@ -271,9 +249,9 @@
     QString message(hbTrId("txt_applib_dialog_file_corrupted_unable_to_use_wi"));
     mCorruptedMessage->setText(message);
 
-	mCorruptedMessage->clearActions();
+    mCorruptedMessage->clearActions();
     HbAction *primaryAction = new HbAction(hbTrId("txt_common_button_ok"), mCorruptedMessage);
-	mCorruptedMessage->addAction(primaryAction);
+    mCorruptedMessage->addAction(primaryAction);
 
     HbAction *secondaryAction = new HbAction(hbTrId("txt_common_button_cancel"), mCorruptedMessage);
     mCorruptedMessage->addAction(secondaryAction);
@@ -291,14 +269,8 @@
  */
 void HsPreviewHSWidgetState::messageWidgetCorruptedFinished(HbAction* finishedAction)
 {
-    if (mCorruptedMessage) {
-        if (finishedAction == mCorruptedMessage->actions().value(0)) {
-            HsMenuService::executeAction(mEntryId, removeActionIdentifier());
-        }
-        mCorruptedMessage = NULL;
-        emit exit();
-    } else {
-        // (work-around for crash if more then one action is selected in HbDialog)
-        qWarning("Another signal finished was emited.");
+    if (finishedAction == mCorruptedMessage->actions().value(0)) {
+        HsMenuService::executeAction(mEntryId, removeActionIdentifier());
     }
+    emit exit();
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsuninstallitemstate.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -0,0 +1,147 @@
+/*
+ * 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 <hbmessagebox.h>
+#include <hbaction.h>
+#include <hsmenuservice.h>
+#include <hsshortcutservice.h>
+
+#include "hsuninstallitemstate.h"
+#include "hsmenuevent.h"
+
+/*!
+ \class HsUninstallItemState
+ \ingroup group_hsworkerstateplugin
+ \brief Uninstall Item State.
+ Deletes app from collection.
+ */
+
+/*!
+ Constructor.
+ \param parent Owner.
+ */
+HsUninstallItemState::HsUninstallItemState(QState *parent) :
+    QState(parent),
+    mItemId(0),
+    mUninstallMessage(NULL),
+    mConfirmAction(NULL)
+{
+    construct();
+}
+
+/*!
+ Destructor.
+ */
+HsUninstallItemState::~HsUninstallItemState()
+{
+    cleanUp(); // in case of throw
+}
+
+/*!
+ Constructs contained objects.
+ */
+void HsUninstallItemState::construct()
+{
+    setObjectName(this->parent()->objectName()
+                  + "/UninstallItemState");
+    setProperty(HS_SERVICES_REGISTRATION_KEY, QList<QVariant> ()
+                << SHORTCUT_SERVICE_KEY);
+    connect(this, SIGNAL(exited()), SLOT(cleanUp()));
+}
+
+/*!
+ Sets entry event.
+ \param event entry event.
+ */
+void HsUninstallItemState::onEntry(QEvent *event)
+{
+    HSMENUTEST_FUNC_ENTRY("HsUninstallItemState::onEntry");
+    QState::onEntry(event);
+    qDebug("HsUninstallItemState::onEntry()");
+    HsMenuEvent *menuEvent = static_cast<HsMenuEvent *>(event);
+    QVariantMap data = menuEvent->data();
+
+    mItemId = data.value(itemIdKey()).toInt();
+
+    QString message;
+    if (shortcutService()->isItemShortcutWidget(mItemId)) {
+        message.append(
+            hbTrId("txt_applib_dialog_uninstalls_1_and_deletes_all_sh").arg(
+                HsMenuService::getName(mItemId)));
+    } else {
+        message.append(
+            hbTrId("txt_applib_dialog_1_will_be_removed_from_phone_c").arg(
+                HsMenuService::getName(mItemId)));
+    }
+
+    // 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->open(this, SLOT(uninstallMessageFinished(HbAction*)));
+
+    HSMENUTEST_FUNC_EXIT("HsUninstallItemState::onEntry");
+}
+
+/*!
+ Action after closed confirmation dialog.
+ \param finishedAction chosen action.
+ \retval void
+ */
+void HsUninstallItemState::uninstallMessageFinished(HbAction* finishedAction)
+{
+    if (finishedAction == mConfirmAction) {
+        HsMenuService::executeAction(mItemId, removeActionIdentifier());
+    }
+    emit exit();
+}
+
+/*!
+ Convenience method returning the shortcut service.
+ \since S60 ?S60_version.
+ \return Shortcut Service.
+ */
+HsShortcutService *HsUninstallItemState::shortcutService() const
+{
+    return property(SHORTCUT_SERVICE_KEY).value<HsShortcutService *> ();
+}
+
+/*!
+ Slot launched after state has exited and in destructor.
+ \retval void
+ */
+void HsUninstallItemState::cleanUp()
+{
+    // Close messagebox if App key was pressed
+    if (mUninstallMessage) {
+        disconnect(mUninstallMessage, SIGNAL(finished(HbAction*)), this, SLOT(uninstallMessageFinished(HbAction*)));
+        mUninstallMessage->close();
+        mUninstallMessage = NULL;
+    }
+
+    mConfirmAction = NULL;
+    mItemId = 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsviewappdetailsstate.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -0,0 +1,175 @@
+/*
+* 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 Application Library state.
+ *
+*/
+
+#include <QDebug>
+#include <HbDialog>
+#include <HbDocumentLoader>
+#include <HbLabel>
+#include <HbAction>
+
+#include "caservice.h"
+#include "casoftwareregistry.h"
+
+#include "canotifier.h"
+#include "canotifierfilter.h"
+
+#include "hsviewappdetailsstate.h"
+#include "hsmenuevent.h"
+#include "hsmenuitemmodel.h"
+
+HsViewAppDetailsState::HsViewAppDetailsState(QState *parent) :
+    QState(parent), mDialog(0), mNotifier(0)
+{
+    construct();
+}
+
+HsViewAppDetailsState::~HsViewAppDetailsState()
+{
+    if (mDialog) {
+        delete mDialog;
+    }
+}
+
+void HsViewAppDetailsState::construct()
+{
+    HSMENUTEST_FUNC_ENTRY("HsViewAppDetailsState::construct");
+    setObjectName(this->parent()->objectName()
+                  + "/ViewAppDetailsState");
+    HSMENUTEST_FUNC_EXIT("HsViewAppDetailsState::construct");
+}
+
+void HsViewAppDetailsState::onEntry(QEvent *event)
+{
+    HSMENUTEST_FUNC_ENTRY("HsViewAppDetailsState::onEntry");
+    QState::onEntry(event);
+    HsMenuEvent *menuEvent = static_cast<HsMenuEvent *>(event);
+    QVariantMap data = menuEvent->data();
+    
+    const int entryId = data.value(itemIdKey()).toInt();
+    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);
+    
+    HbDocumentLoader loader;
+    bool loadStatusOk = false;
+    mObjectList = 
+        loader.load(HS_DETAILS_DIALOG_LAYOUT, &loadStatusOk);
+    Q_ASSERT_X(loadStatusOk,
+        HS_DETAILS_DIALOG_LAYOUT,
+           "Error while loading docml file.");
+
+    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->open(this, SLOT(stateExited())); 
+    }
+    
+    HSMENUTEST_FUNC_EXIT("HsViewAppDetailsState::onEntry");    
+}
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC SKIP
+#endif //COVERAGE_MEASUREMENT
+/*!
+ Slot invoked when a state is exited.
+ */
+void HsViewAppDetailsState::stateExited()
+{
+    HSMENUTEST_FUNC_ENTRY("HsViewAppDetailsState::stateExited");
+    mDialog = NULL;
+    emit exit();
+    HSMENUTEST_FUNC_EXIT("HsViewAppDetailsState::stateExited");
+    qDebug("HsViewAppDetailsState::stateExited()");
+}
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC ENDSKIP
+#endif //COVERAGE_MEASUREMENT
+
+
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC SKIP
+#endif //COVERAGE_MEASUREMENT
+void HsViewAppDetailsState::onExit(QEvent *event)
+{
+    QState::onExit(event);
+    // Close popups if App key was pressed
+    if (mDialog) {
+        mDialog->close();
+    }
+    mDialog = NULL;
+}
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC ENDSKIP
+#endif //COVERAGE_MEASUREMENT
+
+/*!
+ Subscribe for memory card remove.
+ \param entryId: entry id.
+ \retval void
+ */
+void HsViewAppDetailsState::subscribeForMemoryCardRemove(int entryId)
+{
+    CaNotifierFilter filter;
+    QList<int> entryIds;
+    entryIds.append(entryId);
+    filter.setIds(entryIds);
+    mNotifier = CaService::instance()->createNotifier(filter);
+    mNotifier->setParent(this);
+    connect(mNotifier,
+            SIGNAL(entryChanged(CaEntry,ChangeType)),
+            SLOT(memoryCardRemoved()));
+}
+
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC SKIP
+#endif //COVERAGE_MEASUREMENT
+/*!
+ Memory card with instaled widget was removed.
+ \retval void
+ */
+void HsViewAppDetailsState::memoryCardRemoved()
+{
+    if (mDialog) {
+    mDialog->close();
+    }
+    // exit not needed, it is called after dialog closed
+
+}
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC ENDSKIP
+#endif //COVERAGE_MEASUREMENT
+
--- a/homescreenapp/widgetplugins/hsclockwidgetplugin/hsclockwidgetplugin.pro	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/widgetplugins/hsclockwidgetplugin/hsclockwidgetplugin.pro	Wed Jun 23 17:05:06 2010 +0100
@@ -17,14 +17,20 @@
 TEMPLATE = lib
 CONFIG += plugin hb mobility
 MOBILITY = serviceframework
+
+HB += hbfeedback
+
+LIBS += -lhsdomainmodel
+
 PLUGIN_SUBDIR = /private/20022F35/import/widgetregistry/20022F6C
 include(../../common.pri)
 
 DEPENDPATH += ./inc \
               ./src
 
-INCLUDEPATH += ./inc 
-
+INCLUDEPATH += ./inc \
+                ../../hsdomainmodel/inc
+		
 symbian: {
     TARGET.UID3 = 0x20022F6C
     LIBS += -lbafl -lapgrfx -lcone
--- a/homescreenapp/widgetplugins/hsclockwidgetplugin/inc/hsclockwidget.h	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/widgetplugins/hsclockwidgetplugin/inc/hsclockwidget.h	Wed Jun 23 17:05:06 2010 +0100
@@ -38,9 +38,6 @@
     HsClockWidget(QGraphicsItem *parent = 0, Qt::WindowFlags flags = 0);
     ~HsClockWidget();
 
-signals:
-    void setPreferences(const QStringList &names);
-
 public slots:
     void onInitialize();
     void onShow();
--- a/homescreenapp/widgetplugins/hsclockwidgetplugin/src/hsanalogclockwidget.cpp	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/widgetplugins/hsclockwidgetplugin/src/hsanalogclockwidget.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -21,7 +21,9 @@
 #include <HbStyleLoader>
 #include <HbIconItem>
 #include <HbTouchArea>
+#include <HbInstantFeedback>
 
+#include "hsconfiguration.h"
 #include "hsanalogclockwidget.h"
 
 /*!
@@ -147,5 +149,7 @@
         return;
     }
 
+    HbInstantFeedback::play(HsConfiguration::clockWidgetTapFeedbackType());
+
     emit clockTapped();
 }
--- a/homescreenapp/widgetplugins/hsclockwidgetplugin/src/hsdigitalclockwidget.cpp	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/widgetplugins/hsclockwidgetplugin/src/hsdigitalclockwidget.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -23,6 +23,7 @@
 #include <HbFrameItem>
 #include <HbFrameDrawer>
 #include <HbTouchArea>
+#include <HbInstantFeedback>
 
 #include "hsdigitalclockwidget.h"
 
@@ -247,5 +248,7 @@
         return;
     }
 
+    HbInstantFeedback::play(HbFeedback::BasicItem);
+
     emit clockTapped();
 }
--- a/homescreenapp/widgetplugins/hsshortcutwidgetplugin/inc/hsshortcutwidget.h	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/widgetplugins/hsshortcutwidgetplugin/inc/hsshortcutwidget.h	Wed Jun 23 17:05:06 2010 +0100
@@ -37,6 +37,8 @@
     Q_PROPERTY(int caEntryId READ caEntryId WRITE setCaEntryId)
     Q_PROPERTY(QString uid READ uid WRITE setUid)
     
+    Q_PROPERTY(QString text READ text WRITE setText )
+    
 public:
     HsShortcutWidget(QGraphicsItem *parent = 0, Qt::WindowFlags flags = 0);
     ~HsShortcutWidget();
@@ -46,6 +48,9 @@
     void setUid(const QString &uid);
     QString uid() const;
 
+    QString text() const;
+    void setText(const QString& textItem);
+
     bool eventFilter(QObject *watched, QEvent *event);
 
 signals:
--- a/homescreenapp/widgetplugins/hsshortcutwidgetplugin/resource/hsshortcutwidget.css	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/widgetplugins/hsshortcutwidgetplugin/resource/hsshortcutwidget.css	Wed Jun 23 17:05:06 2010 +0100
@@ -1,30 +1,30 @@
 HsShortcutWidget {
+  layout: icon_shortcut;
+}
+
+HsShortcutWidget[text] {
   layout: icon_text_shortcut;
 }
 
-HsShortcutWidget[icon][text] {
-  layout: icon_text_shortcut;
-}
-
-HsShortcutWidget[icon][!text] {
+HsShortcutWidget[!text] {
   layout: icon_shortcut;
 }
 
 HsShortcutWidget::background {
   border-width: 0.0un;
   fixed-width: 12un;
-  fixed-height: expr(12.5un + var(hb-param-text-height-tiny));
+  fixed-height: 12un;
   zvalue: 0;
 }
 
-HsShortcutWidget[icon][text]::background {
+HsShortcutWidget[text]::background {
   border-width: 0.0un;
   fixed-width: 12un;
   fixed-height: expr(12.5un + var(hb-param-text-height-tiny));
   zvalue: 0;
 }
 
-HsShortcutWidget[icon][!text]::background {
+HsShortcutWidget[!text]::background {
   border-width: 0.0un;
   fixed-width: 12un;
   fixed-height: 12un;
--- a/homescreenapp/widgetplugins/hsshortcutwidgetplugin/src/hsshortcutwidget.cpp	Tue May 18 12:12:12 2010 +0100
+++ b/homescreenapp/widgetplugins/hsshortcutwidgetplugin/src/hsshortcutwidget.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -31,6 +31,7 @@
 #include "caservice.h"
 #include "canotifier.h"
 #include "caquery.h"
+#include "hsconfiguration.h"
 
 /*!
     \class HsShortcutWidget
@@ -97,6 +98,28 @@
 }
 
 /*!
+    Returns the text property. This property is needed by css selector.
+*/
+QString HsShortcutWidget::text() const
+{
+    if ( mText ) {
+        return mText->text();
+    } else {
+        return QString();
+        }
+}
+
+/*!
+    Sets the text property. This property is needed by css selector.
+*/
+void HsShortcutWidget::setText(const QString& textItem)
+{
+    if ( mText ) {
+        mText->setText(textItem);
+    }
+}
+
+/*!
     Filters touch area events.
 */
 bool HsShortcutWidget::eventFilter(QObject *watched, QEvent *event)
@@ -209,7 +232,7 @@
         return;
     }
 
-    HbInstantFeedback::play(HbFeedback::BasicItem);
+    HbInstantFeedback::play(HsConfiguration::shortcutWidgetTapFeedbackType());
     
     if (mCaEntryRole == ItemEntryRole) {
         CaService::instance()->executeCommand(mCaEntryId);
@@ -238,11 +261,10 @@
     }
 
     // Text
-    if (!mText) {
+    if ( HsConfiguration::shortcutLabelsVisible() && !mText ) {
         mText = new HbTextItem(this);
         HbStyle::setItemName(mText, QLatin1String("text"));
-    }
-
+        }
     // Touch Area
     if (!mTouchArea) {
         mTouchArea = new HbTouchArea(this);
@@ -260,7 +282,9 @@
     mCaEntryFlags = caEntry.flags();
     mCaEntryTypeName = caEntry.entryTypeName();
     mIcon->setIcon(caEntry.makeIcon());
-    mText->setText(caEntry.text());
+    if (mText) {
+        mText->setText(caEntry.text());
+        }
 }
 
 /*!
@@ -319,3 +343,5 @@
         emit finished();
     }
 }
+
+
--- a/taskswitcherapp/rom/tsapplication_core.iby	Tue May 18 12:12:12 2010 +0100
+++ b/taskswitcherapp/rom/tsapplication_core.iby	Wed Jun 23 17:05:06 2010 +0100
@@ -17,8 +17,6 @@
 #ifndef __TSAPP_CORE_IBY__
 #define __TSAPP_CORE_IBY__
 
-data=\epoc32\data\z\resource\qt\crml\tsexternalactivation.qcrml             resource\qt\crml\tsexternalactivation.qcrml
-
 file=ABI_DIR\BUILD_DIR\tsdevicedialogplugin.dll					       SHARED_LIB_DIR\tsdevicedialogplugin.dll
 data=\epoc32\data\z\resource\plugins\devicedialogs\tsdevicedialogplugin.qtplugin    resource\plugins\devicedialogs\tsdevicedialogplugin.qtplugin
 
--- a/taskswitcherapp/taskswitcherapp.pro	Tue May 18 12:12:12 2010 +0100
+++ b/taskswitcherapp/taskswitcherapp.pro	Wed Jun 23 17:05:06 2010 +0100
@@ -16,20 +16,27 @@
 
 TEMPLATE = subdirs
 
+coverage {
+    SUBDIRS += ../../homescreensrv/activityfw
+    SUBDIRS += ../../homescreensrv/hsappkeyhandler
+    SUBDIRS += ../../homescreensrv/tstaskmonitor
+}
+
 SUBDIRS += tsdevicedialogplugin
 
 tests {
-    SUBDIRS += internal\tstestrunner    
-    SUBDIRS += tsdevicedialogplugin\tsrc
-    SUBDIRS += ..\..\homescreensrv\activityfw\activityserviceplugin\unittests
-    SUBDIRS += ..\..\homescreensrv\activityfw\activitydatabase\hsactivitydbclient\t_hsactivitydbclient
-    SUBDIRS += ..\..\homescreensrv\hsappkeyhandler\tsrc\t_hsappkeyhandler
-    SUBDIRS += ..\..\homescreensrv\activityfw\activityserviceplugin\s60\tsrc
-}
-
-coverage {
-    SUBDIRS += ..\..\homescreensrv\activityfw
-    SUBDIRS += ..\..\homescreensrv\hsappkeyhandler
+    SUBDIRS += internal/tstestrunner    
+    SUBDIRS += tsdevicedialogplugin/tsrc
+    SUBDIRS += ../../homescreensrv/activityfw/activityserviceplugin/tsrc
+    SUBDIRS += ../../homescreensrv/activityfw/activitydatabase/hsactivitydbclient/t_hsactivitydbclient
+    SUBDIRS += ../../homescreensrv/hsappkeyhandler/tsrc/t_hsappkeyhandler
+    SUBDIRS += ../../homescreensrv/activityfw/activityserviceplugin/s60/tsrc
+    SUBDIRS += ../../homescreensrv/tstaskmonitor/client/tsrc
+    SUBDIRS += ../../homescreensrv/tstaskmonitor/server/tsrc
+    SUBDIRS += ../../homescreensrv/tstaskmonitor/screenshotplugin/tsrc
+    SUBDIRS += ../../homescreensrv/activityfw/tsutils/tsrc
+    SUBDIRS += ../../homescreensrv/tstaskmonitor/utils/tsrc
+    SUBDIRS += ../../homescreensrv/tstaskmonitor/backstepping/tsrc
 }
 
 symbian:include(rom.pri)
--- a/taskswitcherapp/tsdevicedialogplugin/inc/tsdevicedialogplugin.h	Tue May 18 12:12:12 2010 +0100
+++ b/taskswitcherapp/tsdevicedialogplugin/inc/tsdevicedialogplugin.h	Wed Jun 23 17:05:06 2010 +0100
@@ -27,7 +27,7 @@
 
 #include "tsdocumentloader.h"
 
-class CaService;
+class TsTaskMonitor;
 class TsDeviceDialogPlugin : public HbDeviceDialogPlugin
 {
     Q_OBJECT
@@ -43,20 +43,11 @@
     PluginFlags pluginFlags() const;
     int error() const;
 
-private slots:
-    void activated(QModelIndex index);
-    void pressed();
-    void longPressed();
-
-signals:
-    void activate(QModelIndex);
-
 private:
     int mError;
     TsDocumentLoader mLoader;
     QAbstractListModel *mModel;
-    QSharedPointer<CaService> mStorage;
-    bool mLongPressed;
+    TsTaskMonitor *mStorage;
 
     Q_DISABLE_COPY(TsDeviceDialogPlugin)
 };
--- a/taskswitcherapp/tsdevicedialogplugin/inc/tsentrymodelitem.h	Tue May 18 12:12:12 2010 +0100
+++ b/taskswitcherapp/tsdevicedialogplugin/inc/tsentrymodelitem.h	Wed Jun 23 17:05:06 2010 +0100
@@ -18,9 +18,11 @@
 #ifndef TSENTRYMODELITEM_H
 #define TSENTRYMODELITEM_H
 #include "tsmodelitem.h"
-#include <caservice.h>
 
-class CaEntry;
+#include <qsharedpointer.h>
+#include <qstring.h>
+
+class TsTask;
 
 /*!
     Class implements model item which represents Content Arsenal entry
@@ -28,19 +30,14 @@
 class TsEntryModelItem : public TsModelItem
 {
 public:
-    TsEntryModelItem(CaService &service, QSharedPointer<CaEntry> entry, QSize mSize);
+    TsEntryModelItem(QSharedPointer<TsTask> entry);
     ~TsEntryModelItem();
     QVariant data(int role) const;
     void close();
     void open();
 
 private:
-    bool closable() const;
-
-private:
-    CaService &mService;
-    const QSharedPointer<CaEntry> mEntry;
-    const QSize mSize;
+    const QSharedPointer<TsTask> mEntry;
 };
 
 #endif // TSMODEL_H
--- a/taskswitcherapp/tsdevicedialogplugin/inc/tsmodel.h	Tue May 18 12:12:12 2010 +0100
+++ b/taskswitcherapp/tsdevicedialogplugin/inc/tsmodel.h	Wed Jun 23 17:05:06 2010 +0100
@@ -22,10 +22,12 @@
 #include <QList>
 #include <QSize>
 #include <QSharedPointer>
-#include <caquery.h>
-#include <caentry.h>
+#include <tstaskmonitor.h>
+#ifdef Q_OS_SYMBIAN
+#include <apgcli.h>
+#endif
 
-class CaService;
+class TsTaskMonitor;
 class ActivityManager;
 class CaNotifier;
 class TsModelItem;
@@ -35,7 +37,7 @@
     Q_OBJECT
 
 public:
-    explicit TsModel(CaService &applicationSrv,
+    explicit TsModel(TsTaskMonitor &applicationSrv,
                      QObject &activitySrv,
                      QObject *parent = 0);
     ~TsModel();
@@ -48,7 +50,6 @@
     void openApplication(const QModelIndex &index);
     void closeApplication(const QModelIndex &index);
     void updateModel();
-    void entryChanged(CaEntry, ChangeType);
     void entryChanged(TsModelItem *);
 private:
     TsModelItem *entry(const QModelIndex &index) const;
@@ -63,25 +64,16 @@
      */
     QList<TsModelItem *> mEntries;
 
-    /*
-     * Query
-     */
-    CaQuery mQuery;
-
-    /*
-     * Content Arsenal Service
-     */
-    CaService &mApplicationService;
+    TsTaskMonitor &mApplicationService;
 
     /*
      * Activity Service
      */
     QObject &mActivityService;
-
-    /*
-     * Content Arsenal Notifier
-     */
-    CaNotifier *mNotifier;
+    
+#ifdef Q_OS_SYMBIAN
+    RApaLsSession iAppArcSession;
+#endif
 
     /*
      * Icon size in model
--- a/taskswitcherapp/tsdevicedialogplugin/resource/layout.docml	Tue May 18 12:12:12 2010 +0100
+++ b/taskswitcherapp/tsdevicedialogplugin/resource/layout.docml	Wed Jun 23 17:05:06 2010 +0100
@@ -9,6 +9,7 @@
             <string name="scrollDirections" value="Horizontal"/>
             <integer name="rowCount" value="1"/>
             <integer name="columnCount" value="2"/>
+            <bool name="longPressEnabled" value="FALSE"/>
         </widget>            
         <bool name="backgroundFaded" value="TRUE"/>
         <string name="dismissPolicy" value="TapOutside"/>
--- a/taskswitcherapp/tsdevicedialogplugin/src/tsdevicedialogplugin.cpp	Tue May 18 12:12:12 2010 +0100
+++ b/taskswitcherapp/tsdevicedialogplugin/src/tsdevicedialogplugin.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -26,7 +26,6 @@
 #include "tstasksgriditem.h"
 #include "tsdocumentloader.h"
 #include "tsmodel.h"
-#include <caservice.h>
 
 /*!
     \class TsDeviceDialogPlugin
@@ -39,7 +38,7 @@
 /*!
     Constructor.
  */
-TsDeviceDialogPlugin::TsDeviceDialogPlugin() : mError(0), mModel(0), mStorage(CaService::instance()), mLongPressed(false)
+TsDeviceDialogPlugin::TsDeviceDialogPlugin() : mError(0), mModel(0), mStorage(0)
 {
 }
 
@@ -70,6 +69,10 @@
     TsDeviceDialog *dialog(0);
     if (deviceDialogType == KTsDialogType) {
         if (0 == mModel) {
+            mStorage = new TsTaskMonitor(this);
+            if (0 == mStorage) {
+                return 0;
+            }
             QtMobility::QServiceManager serviceManager;
             QObject *objPtr(serviceManager.loadInterface("com.nokia.qt.activities.ActivityManager"));
             if (objPtr) {
@@ -96,23 +99,17 @@
         grid->setItemPrototype(new TsTasksGridItem());
         grid->setModel(mModel);
 
-        static_cast<TsModel *>(mModel)->updateModel();
+        //static_cast<TsModel *>(mModel)->updateModel();
 
         // connect the grid and model
         qRegisterMetaType<QModelIndex>("QModelIndex");
         
-        disconnect(grid, SIGNAL(activated(QModelIndex)), this, SLOT(activated(QModelIndex)));
-        disconnect(grid, SIGNAL(pressed(QModelIndex)), this, SLOT(pressed()));
-        disconnect(grid, SIGNAL(longPressed(HbAbstractViewItem *, QPointF)), this, SLOT(longPressed()));
-        disconnect(this, SIGNAL(activate(QModelIndex)), mModel, SLOT(openApplication(QModelIndex)));
-        disconnect(this, SIGNAL(activate(QModelIndex)), dialog, SLOT(close()));
+        disconnect(grid, SIGNAL(activated(QModelIndex)), mModel, SLOT(openApplication(QModelIndex)));
+        disconnect(grid, SIGNAL(activated(QModelIndex)), dialog, SLOT(close()));
         disconnect(grid, SIGNAL(deleteButtonClicked(QModelIndex)), mModel, SLOT(closeApplication(QModelIndex)));
         
-        connect(grid, SIGNAL(activated(QModelIndex)), this, SLOT(activated(QModelIndex)));
-        connect(grid, SIGNAL(pressed(QModelIndex)), this, SLOT(pressed()));
-        connect(grid, SIGNAL(longPressed(HbAbstractViewItem *, QPointF)), this, SLOT(longPressed()));
-        connect(this, SIGNAL(activate(QModelIndex)), mModel, SLOT(openApplication(QModelIndex)));
-        connect(this, SIGNAL(activate(QModelIndex)), dialog, SLOT(close()));
+        connect(grid, SIGNAL(activated(QModelIndex)), mModel, SLOT(openApplication(QModelIndex)));
+        connect(grid, SIGNAL(activated(QModelIndex)), dialog, SLOT(close()));
         connect(grid, SIGNAL(deleteButtonClicked(QModelIndex)), mModel, SLOT(closeApplication(QModelIndex)), Qt::QueuedConnection);
     }
     return dialog;
@@ -157,21 +154,12 @@
     return mError;
 }
 
-void TsDeviceDialogPlugin::activated(QModelIndex index)
-{
-    if (!mLongPressed) {
-        emit activate(index);
-    }
-}
-
-void TsDeviceDialogPlugin::pressed()
-{
-    mLongPressed = false;
-}
-
-void TsDeviceDialogPlugin::longPressed()
-{
-    mLongPressed = true;
-}
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC SKIP
+#endif //COVERAGE_MEASUREMENT
 
 Q_EXPORT_PLUGIN2(tsdevicedialogplugin, TsDeviceDialogPlugin)
+
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC ENDSKIP
+#endif //COVERAGE_MEASUREMENT
--- a/taskswitcherapp/tsdevicedialogplugin/src/tsentrymodelitem.cpp	Tue May 18 12:12:12 2010 +0100
+++ b/taskswitcherapp/tsdevicedialogplugin/src/tsentrymodelitem.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -17,6 +17,7 @@
 #include "tsentrymodelitem.h"
 #include "tsdataroles.h"
 
+#include <tstask.h>
 #include <HbIcon>
 
 /*!
@@ -27,15 +28,11 @@
 
 /*!
     Standard C++ constructor
-    /param service - reference to initialized Content Aresnal client instance
     /param entry - Content Arsenal data
-    /param size - icon size
 */
-TsEntryModelItem::TsEntryModelItem(CaService& service, QSharedPointer<CaEntry> entry, QSize size)
+TsEntryModelItem::TsEntryModelItem(QSharedPointer<TsTask> entry)
     :
-    mService(service),
-    mEntry(entry),
-    mSize(size)
+    mEntry(entry)
 {
     //no implementation required
 }
@@ -56,11 +53,20 @@
 {
     switch (role) {
         case Qt::DisplayRole:
-            return QVariant(mEntry->text());
+            return QVariant(mEntry->name());
         case Qt::DecorationRole:
-            return QVariant(mEntry->makeIcon(mSize));
+            {
+                QPixmap icon = mEntry->screenshot().isNull() ? 
+                               mEntry->icon() :
+                               mEntry->screenshot();
+                if (icon.isNull()) {
+                    return HbIcon("qtg_large_application");
+                } else {
+                    return QVariant::fromValue<HbIcon>(HbIcon(icon));
+                }
+            }
         case TsDataRoles::Closable:
-            return QVariant(closable());
+            return QVariant(mEntry->isClosable());
         case TsDataRoles::Visible:
             return QVariant(true);
         default:
@@ -73,7 +79,7 @@
 */
 void TsEntryModelItem::close()
 {
-    mService.executeCommand(mEntry->id(), QString("close"));
+    mEntry->close();
 }
 
 /*!
@@ -81,15 +87,6 @@
 */
 void TsEntryModelItem::open()
 {
-    mService.executeCommand(mEntry->id(), QString("open"));
+    mEntry->open();
 }
 
-/*!
-    Check if application represented by entry is running.
-    /return true if application is running, false otherwise
-*/
-bool TsEntryModelItem::closable() const
-{
-    return (mEntry->flags().testFlag(RunningEntryFlag) &&
-            !mEntry->flags().testFlag(SystemEntryFlag));
-}
--- a/taskswitcherapp/tsdevicedialogplugin/src/tsmodel.cpp	Tue May 18 12:12:12 2010 +0100
+++ b/taskswitcherapp/tsdevicedialogplugin/src/tsmodel.cpp	Wed Jun 23 17:05:06 2010 +0100
@@ -23,21 +23,16 @@
 #include <HbIcon>
 #include <qvariant.h>
 #include <qlist.h>
-#include <cadefs.h>
-
-#include <canotifier.h>
-#include <canotifierfilter.h>
 #include <hsactivitydbclientinterface.h>
 
 #ifdef Q_OS_SYMBIAN
 #include <XQSettingsManager>
+#include <apaid.h>
 
 const int TSDeviceDialogUid = 0x2002677F;
 const int ItemsLimit = 0x00000001;
 #endif
 
-const char entryTypeKeyword[] = "application";
-const char applicationUidKeyword [] = "application:uid";
 const int maxItems(10);
 /*!
     \class TsModel
@@ -50,33 +45,15 @@
     \param query used to create model
     \param pointer to parent object
 */
-TsModel::TsModel(CaService &applicationSrv, QObject &activitySrv, QObject *parent) :
+TsModel::TsModel(TsTaskMonitor &applicationSrv, QObject &activitySrv, QObject *parent) :
     QAbstractListModel(parent),
     mEntries(),
     mApplicationService(applicationSrv),
     mActivityService(activitySrv),
-    mNotifier(NULL),
     mSize(240, 240),
     mMaxItems(maxItems)
 {
-    // creating query
-    mQuery.setEntryRoles(ItemEntryRole);
-    mQuery.addEntryTypeName(entryTypeKeyword);
-    mQuery.setFlagsOn(VisibleEntryFlag);
-    mQuery.setFlagsOff(MissingEntryFlag);
-    mQuery.setFlagsOn(UsedEntryFlag);
-    mQuery.setSort(LastUsedSortAttribute, Qt::DescendingOrder);
-    // requesting new data
-    updateModel();
-    // creating notyfication filter
-    CaNotifierFilter filter(mQuery);
-    mNotifier = mApplicationService.createNotifier(filter);
-    connect(mNotifier, SIGNAL(entryChanged(CaEntry,ChangeType)), this, SLOT(entryChanged(CaEntry, ChangeType)));
-    connect(mNotifier, SIGNAL(entryTouched(int)), this, SLOT(updateModel()));
-    if (mQuery.parentId() > 0) {
-        connect(mNotifier, SIGNAL(groupContentChanged(int)), this, SLOT(updateModel()));
-    }
-
+    
 #ifdef Q_OS_SYMBIAN
     XQSettingsManager *crManager = new XQSettingsManager;
     XQCentralRepositorySettingsKey itemsNumberKey(TSDeviceDialogUid, ItemsLimit);
@@ -87,7 +64,12 @@
             mMaxItems = number;
         }
     }
+    iAppArcSession.Connect();
 #endif
+
+    connect(&activitySrv, SIGNAL(dataChanged()), this, SLOT(updateModel()));
+    connect(&applicationSrv, SIGNAL(taskListChanged()), this, SLOT(updateModel()));
+    updateModel();
 }
 
 /*!
@@ -95,8 +77,10 @@
 */
 TsModel::~TsModel()
 {
+#ifdef Q_OS_SYMBIAN
+    iAppArcSession.Close();
+#endif
     qDeleteAll(mEntries);
-    delete mNotifier;
 }
 
 /*!
@@ -177,18 +161,11 @@
 {
     //get running applications
     TsModelItem *entry(0);
-    QList< QSharedPointer<CaEntry> > applications(mApplicationService.getEntries(mQuery));
-    foreach(QSharedPointer<CaEntry> application, applications) {
-        //CA entry ownership is transfered to model item
-        entry = new TsEntryModelItem(mApplicationService, application, mSize);
-        if (entry) {
-            //add running application filtering
-            if (entry->data(TsDataRoles::Closable).toBool() && //running application filtering
-                    entry->data(TsDataRoles::Visible).toBool()) { //visible applications filtering
-                mEntries.append(entry);
-            } else {
-                delete entry;
-            }
+    QList< QSharedPointer<TsTask> > tasks(mApplicationService.taskList());
+    foreach (QSharedPointer<TsTask> taskData, tasks) {
+        entry = new TsEntryModelItem(taskData);
+        if (0 != entry) {
+            mEntries.append(entry);
         }
     }
 }
@@ -206,9 +183,9 @@
         prepareActivityEntry(activity);
         entry = new TsActivityModelItem(*this, mActivityService, activity);
         if (entry) {
-			if (maxRowCount() <= mEntries.count()) {
-				break;
-			}
+            if (maxRowCount() <= mEntries.count()) {
+                break;
+            }
             if (entry->data(TsDataRoles::Visible).toBool()) { //visible activity filtering
                 mEntries.append(entry);
             } else {
@@ -235,32 +212,17 @@
 */
 QString TsModel::getApplicationName(int id)
 {
-    CaQuery query;
     QString retVal;
-    query.setEntryRoles(ItemEntryRole);
-    query.addEntryTypeName(entryTypeKeyword);
-    query.setAttribute(applicationUidKeyword, QString::number(id));
-    QList< QSharedPointer<CaEntry> > applications(mApplicationService.getEntries(query));
-    if (applications.begin() != applications.end()) {
-        retVal = (*applications.begin())->text();
-    }
+#ifdef Q_OS_SYMBIAN
+    TApaAppInfo info;
+    iAppArcSession.GetAppInfo( info, TUid::Uid(id));
+    retVal = QString::fromUtf16(info.iShortCaption.Ptr(),
+                                info.iShortCaption.Length());
+#endif
     return retVal;
 }
 
 /*!
-    Called when some entry was changed
-    \param updatedEntry entry that was changed
-    \param change change type
-*/
-void TsModel::entryChanged(CaEntry updatedEntry,
-                           ChangeType change)
-{
-    Q_UNUSED(updatedEntry);
-    Q_UNUSED(change)
-    updateModel();
-}
-
-/*!
     Called when some item was changed
     \param itemPtr - address of updated item
 */
--- a/taskswitcherapp/tsdevicedialogplugin/tsdevicedialogplugin.pro	Tue May 18 12:12:12 2010 +0100
+++ b/taskswitcherapp/tsdevicedialogplugin/tsdevicedialogplugin.pro	Wed Jun 23 17:05:06 2010 +0100
@@ -43,7 +43,7 @@
 INCLUDEPATH += . \
                ./inc \
 
-LIBS +=     -lcaclient           
+LIBS +=     -ltstaskmonitorclient
             
 TRANSLATIONS = taskswitcher.ts