Revision: 201019
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Thu, 27 May 2010 12:46:08 +0300
changeset 51 4785f57bf3d4
parent 46 23b5d6a29cce
child 55 03646e8da489
Revision: 201019 Kit: 2010121
homescreenapp/common.pri
homescreenapp/examples/localisedhellowidgetplugin/inc/localisedhellowidget.h
homescreenapp/examples/localisedhellowidgetplugin/inc/localisedhellowidgetplugin.h
homescreenapp/examples/localisedhellowidgetplugin/locales/localisedhellowidgetplugin.qm
homescreenapp/examples/localisedhellowidgetplugin/locales/localisedhellowidgetplugin.ts
homescreenapp/examples/localisedhellowidgetplugin/locales/localisedhellowidgetplugin_en_gb.qm
homescreenapp/examples/localisedhellowidgetplugin/locales/localisedhellowidgetplugin_en_gb.ts
homescreenapp/examples/localisedhellowidgetplugin/locales/localisedhellowidgetplugin_en_us.qm
homescreenapp/examples/localisedhellowidgetplugin/locales/localisedhellowidgetplugin_en_us.ts
homescreenapp/examples/localisedhellowidgetplugin/locales/localisedhellowidgetplugin_fi.qm
homescreenapp/examples/localisedhellowidgetplugin/locales/localisedhellowidgetplugin_fi.ts
homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin.pro
homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin/inc/localisedhellowidget.h
homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin/inc/localisedhellowidgetplugin.h
homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin/locales/localisedhellowidgetplugin.qm
homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin/locales/localisedhellowidgetplugin.ts
homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin/locales/localisedhellowidgetplugin_en_gb.qm
homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin/locales/localisedhellowidgetplugin_en_gb.ts
homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin/locales/localisedhellowidgetplugin_en_us.qm
homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin/locales/localisedhellowidgetplugin_en_us.ts
homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin/locales/localisedhellowidgetplugin_fi.qm
homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin/locales/localisedhellowidgetplugin_fi.ts
homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin/localisedhellowidgetplugin.pro
homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin/resource/localisedhellowidgetplugin.manifest
homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin/resource/localisedhellowidgetplugin.png
homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin/resource/localisedhellowidgetplugin.xml
homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin/resource/localisedhellowidgetplugin.xml_for_sisx
homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin/src/localisedhellowidget.cpp
homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin/src/localisedhellowidgettplugin.cpp
homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugininstaller/localisedhellowidgetplugininstaller.cpp
homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugininstaller/localisedhellowidgetplugininstaller.pro
homescreenapp/examples/localisedhellowidgetplugin/resource/localisedhellowidgetplugin.manifest
homescreenapp/examples/localisedhellowidgetplugin/resource/localisedhellowidgetplugin.png
homescreenapp/examples/localisedhellowidgetplugin/resource/localisedhellowidgetplugin.xml
homescreenapp/examples/localisedhellowidgetplugin/sis/localisedhellowidgetplugin.pkg
homescreenapp/examples/localisedhellowidgetplugin/sis/localisedhellowidgetplugin_winscw.pkg
homescreenapp/examples/localisedhellowidgetplugin/src/localisedhellowidget.cpp
homescreenapp/examples/localisedhellowidgetplugin/src/localisedhellowidgettplugin.cpp
homescreenapp/examples/pannablewidgetplugin/inc/pannablewidget.h
homescreenapp/examples/pannablewidgetplugin/inc/pannablewidgetplugin.h
homescreenapp/examples/pannablewidgetplugin/pannablewidgetplugin.pro
homescreenapp/examples/pannablewidgetplugin/resource/pannablewidgetplugin.manifest
homescreenapp/examples/pannablewidgetplugin/resource/pannablewidgetplugin.png
homescreenapp/examples/pannablewidgetplugin/resource/pannablewidgetplugin.xml
homescreenapp/examples/pannablewidgetplugin/sis/pannablewidgetplugin.bat
homescreenapp/examples/pannablewidgetplugin/sis/pannablewidgetplugin.pkg
homescreenapp/examples/pannablewidgetplugin/sis/pannablewidgetplugin_winscw.pkg
homescreenapp/examples/pannablewidgetplugin/src/pannablewidget.cpp
homescreenapp/examples/pannablewidgetplugin/src/pannablewidgetplugin.cpp
homescreenapp/hsapplication/conf/base/confml/homescreendb.confml
homescreenapp/hsapplication/conf/base/implml/homescreendb_templates/create.sql
homescreenapp/hsapplication/conf/base/implml/homescreendb_templates/fill.sql
homescreenapp/hsapplication/hsapplication_fallbacktheme.qrc
homescreenapp/hsapplication/resource_s60/homescreen.db
homescreenapp/hsapplication/resource_win/homescreen.db
homescreenapp/hsapplication/src/hshomescreenclientserviceprovider.cpp
homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_anim_longtap_0.svg
homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_anim_longtap_1.svg
homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_anim_longtap_2.svg
homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_anim_longtap_3.svg
homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_anim_longtap_4.svg
homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_anim_longtap_5.svg
homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_anim_longtap_6.svg
homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_anim_longtap_7.svg
homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_anim_longtap_8.svg
homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_anim_longtap_9.svg
homescreenapp/hsdomainmodel/hsdomainmodel.pri
homescreenapp/hsdomainmodel/hsdomainmodel.pro
homescreenapp/hsdomainmodel/inc/hsbackuprestoreactivecallback.h
homescreenapp/hsdomainmodel/inc/hsbackuprestoreobserver.h
homescreenapp/hsdomainmodel/inc/hsbackuprestoreobserver_p.h
homescreenapp/hsdomainmodel/inc/hsconfiguration.h
homescreenapp/hsdomainmodel/inc/hsdatabase.h
homescreenapp/hsdomainmodel/inc/hsdomainmodeldatastructures.h
homescreenapp/hsdomainmodel/inc/hsgui.h
homescreenapp/hsdomainmodel/inc/hspage.h
homescreenapp/hsdomainmodel/inc/hswidgethost.h
homescreenapp/hsdomainmodel/src/hsbackuprestoreactivecallback.cpp
homescreenapp/hsdomainmodel/src/hsbackuprestoreobserver.cpp
homescreenapp/hsdomainmodel/src/hsconfiguration.cpp
homescreenapp/hsdomainmodel/src/hsdatabase.cpp
homescreenapp/hsdomainmodel/src/hsgui.cpp
homescreenapp/hsdomainmodel/src/hspage.cpp
homescreenapp/hsdomainmodel/src/hswallpaper.cpp
homescreenapp/hsdomainmodel/src/hswidgethost.cpp
homescreenapp/hsutils/inc/hsmenuevent.h
homescreenapp/hsutils/inc/hsmenueventfactory.h
homescreenapp/hsutils/inc/hspageindicator.h
homescreenapp/hsutils/inc/hswallpaperimagereader.h
homescreenapp/hsutils/src/hsimagefetcherclient.cpp
homescreenapp/hsutils/src/hsmenueventfactory.cpp
homescreenapp/hsutils/src/hspageindicator.cpp
homescreenapp/hsutils/src/hswallpaperimagereader.cpp
homescreenapp/hswidgetuninstaller/inc/hswidgetcomponentparser.h
homescreenapp/inc/hsapp_defs.h
homescreenapp/inc/hsapp_defs.inl
homescreenapp/runtimeplugins/hsdefaultruntimeplugin/hsdefaultruntimeplugin.pri
homescreenapp/runtimeplugins/hsdefaultruntimeplugin/hsdefaultruntimeplugin.pro
homescreenapp/runtimeplugins/hsdefaultruntimeplugin/hsdefaultruntimeplugin.qrc
homescreenapp/runtimeplugins/hsdefaultruntimeplugin/inc/hsbackuprestoreactivecallback.h
homescreenapp/runtimeplugins/hsdefaultruntimeplugin/inc/hsbackuprestoreobserver.h
homescreenapp/runtimeplugins/hsdefaultruntimeplugin/inc/hsdefaultruntime.h
homescreenapp/runtimeplugins/hsdefaultruntimeplugin/resource/tapandhold.axml
homescreenapp/runtimeplugins/hsdefaultruntimeplugin/src/hsbackuprestoreactivecallback.cpp
homescreenapp/runtimeplugins/hsdefaultruntimeplugin/src/hsbackuprestoreobserver.cpp
homescreenapp/runtimeplugins/hsdefaultruntimeplugin/src/hsdefaultruntime.cpp
homescreenapp/serviceproviders/hsmenuserviceprovider/inc/hsmenuservice.h
homescreenapp/serviceproviders/hsmenuserviceprovider/src/hsmenuservice.cpp
homescreenapp/stateplugins/hsapplibrarystateplugin/conf/applibrary_view.confml
homescreenapp/stateplugins/hsapplibrarystateplugin/conf/hsapplibrary.confml
homescreenapp/stateplugins/hsapplibrarystateplugin/hsapplibrarystateplugin.pro
homescreenapp/stateplugins/hsapplibrarystateplugin/hsapplibrarystateplugin_exports_to_rom.pri
homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsallappsstate.h
homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsallcollectionsstate.h
homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsapplibrarystate.h
homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hscollectionstate.h
homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsinstalledappsstate.h
homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsmainwindow.h
homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsmenuview.h
homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsallappsstate.cpp
homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsallcollectionsstate.cpp
homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsapplibrarystate.cpp
homescreenapp/stateplugins/hsapplibrarystateplugin/src/hscollectionstate.cpp
homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsinstalledappsstate.cpp
homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsmainwindow.cpp
homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsmenuview.cpp
homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsmenuviewbuilder.cpp
homescreenapp/stateplugins/hshomescreenstateplugin/inc/hsbackuprestorestate.h
homescreenapp/stateplugins/hshomescreenstateplugin/inc/hsidlestate.h
homescreenapp/stateplugins/hshomescreenstateplugin/inc/hsloadscenestate.h
homescreenapp/stateplugins/hshomescreenstateplugin/inc/hsrootstate.h
homescreenapp/stateplugins/hshomescreenstateplugin/inc/hsselectbackgroundstate.h
homescreenapp/stateplugins/hshomescreenstateplugin/resource/hshomescreenstateplugin.xml
homescreenapp/stateplugins/hshomescreenstateplugin/src/hsbackuprestorestate.cpp
homescreenapp/stateplugins/hshomescreenstateplugin/src/hsdocumentloader.cpp
homescreenapp/stateplugins/hshomescreenstateplugin/src/hshomescreenstateplugin.cpp
homescreenapp/stateplugins/hshomescreenstateplugin/src/hsidlestate.cpp
homescreenapp/stateplugins/hshomescreenstateplugin/src/hsidlewidget.cpp
homescreenapp/stateplugins/hshomescreenstateplugin/src/hsloadscenestate.cpp
homescreenapp/stateplugins/hshomescreenstateplugin/src/hsrootstate.cpp
homescreenapp/stateplugins/hshomescreenstateplugin/src/hsselectbackgroundstate.cpp
homescreenapp/stateplugins/hsmenuworkerstateplugin/hsmenuworkerstateplugin.pro
homescreenapp/stateplugins/hsmenuworkerstateplugin/hsmenuworkerstateplugin.qrc
homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsmenustates_global.h
homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsmenuworkerstate.h
homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsviewappdetailsstate.h
homescreenapp/stateplugins/hsmenuworkerstateplugin/resource/hsdetailsdialog.docml
homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsaddappstocollectionstate.cpp
homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hscollectionnamedialog.cpp
homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hscollectionslistdialog.cpp
homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsmenuworkerstate.cpp
homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsviewappdetailsstate.cpp
homescreenapp/widgetplugins/hsclockwidgetplugin/hsclockwidgetplugin.pro
homescreenapp/widgetplugins/hsclockwidgetplugin/inc/hsclockwidget.h
homescreenapp/widgetplugins/hsclockwidgetplugin/src/hsanalogclockwidget.cpp
homescreenapp/widgetplugins/hsclockwidgetplugin/src/hsdigitalclockwidget.cpp
homescreenapp/widgetplugins/hsshortcutwidgetplugin/src/hsshortcutwidget.cpp
taskswitcherapp/taskswitcherapp.pro
taskswitcherapp/tsdevicedialogplugin/inc/tsdevicedialogplugin.h
taskswitcherapp/tsdevicedialogplugin/inc/tsentrymodelitem.h
taskswitcherapp/tsdevicedialogplugin/inc/tsmodel.h
taskswitcherapp/tsdevicedialogplugin/resource/layout.docml
taskswitcherapp/tsdevicedialogplugin/src/tsdevicedialogplugin.cpp
taskswitcherapp/tsdevicedialogplugin/src/tsentrymodelitem.cpp
taskswitcherapp/tsdevicedialogplugin/src/tsmodel.cpp
taskswitcherapp/tsdevicedialogplugin/tsdevicedialogplugin.pro
--- a/homescreenapp/common.pri	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/common.pri	Thu May 27 12:46:08 2010 +0300
@@ -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	Thu May 27 12:46:08 2010 +0300
@@ -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	Thu May 27 12:46:08 2010 +0300
@@ -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	Thu May 27 12:46:08 2010 +0300
@@ -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	Thu May 27 12:46:08 2010 +0300
@@ -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	Thu May 27 12:46:08 2010 +0300
@@ -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	Thu May 27 12:46:08 2010 +0300
@@ -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	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin.pro	Thu May 27 12:46:08 2010 +0300
@@ -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	Fri May 14 15:43:04 2010 +0300
+++ /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	Fri May 14 15:43:04 2010 +0300
+++ /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	Fri May 14 15:43:04 2010 +0300
+++ /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	Fri May 14 15:43:04 2010 +0300
+++ /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	Fri May 14 15:43:04 2010 +0300
+++ /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	Fri May 14 15:43:04 2010 +0300
+++ /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	Fri May 14 15:43:04 2010 +0300
+++ /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	Fri May 14 15:43:04 2010 +0300
+++ /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	Fri May 14 15:43:04 2010 +0300
+++ /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	Fri May 14 15:43:04 2010 +0300
+++ /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	Fri May 14 15:43:04 2010 +0300
+++ /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	Fri May 14 15:43:04 2010 +0300
+++ /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	Fri May 14 15:43:04 2010 +0300
+++ /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	Fri May 14 15:43:04 2010 +0300
+++ /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	Thu May 27 12:46:08 2010 +0300
@@ -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	Thu May 27 12:46:08 2010 +0300
@@ -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	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/examples/localisedhellowidgetplugin/sis/localisedhellowidgetplugin.pkg	Thu May 27 12:46:08 2010 +0300
@@ -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	Thu May 27 12:46:08 2010 +0300
@@ -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	Thu May 27 12:46:08 2010 +0300
@@ -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	Thu May 27 12:46:08 2010 +0300
@@ -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	Thu May 27 12:46:08 2010 +0300
@@ -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	Thu May 27 12:46:08 2010 +0300
@@ -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	Thu May 27 12:46:08 2010 +0300
@@ -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	Thu May 27 12:46:08 2010 +0300
@@ -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	Thu May 27 12:46:08 2010 +0300
@@ -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	Thu May 27 12:46:08 2010 +0300
@@ -0,0 +1,30 @@
+@rem
+@rem Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+@echo off
+
+if exist 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	Thu May 27 12:46:08 2010 +0300
@@ -0,0 +1,44 @@
+;
+; Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+; All rights reserved.
+; This component and the accompanying materials are made available
+; under the terms of "Eclipse Public License v1.0"
+; which accompanies this distribution, and is available
+; at the URL "http://www.eclipse.org/legal/epl-v10.html".
+;
+; Initial Contributors:
+; Nokia Corporation - initial contribution.
+;
+; Contributors:
+;
+; Description:
+;
+
+; Language
+&EN
+
+; SIS header: name, uid, version
+#{"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	Thu May 27 12:46:08 2010 +0300
@@ -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	Thu May 27 12:46:08 2010 +0300
@@ -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	Thu May 27 12:46:08 2010 +0300
@@ -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	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/hsapplication/conf/base/confml/homescreendb.confml	Thu May 27 12:46:08 2010 +0300
@@ -38,6 +38,42 @@
         <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>
   </confml:feature>
   <confml:data>
     <confml:HomeScreenDbSettings>
@@ -92,6 +128,42 @@
       <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:GeneralConfiguration>
     </confml:HomeScreenDbSettings>
   </confml:data>
 </confml:configuration>
\ No newline at end of file
--- a/homescreenapp/hsapplication/conf/base/implml/homescreendb_templates/create.sql	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/hsapplication/conf/base/implml/homescreendb_templates/create.sql	Thu May 27 12:46:08 2010 +0300
@@ -38,3 +38,43 @@
   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);
+ 
\ No newline at end of file
--- a/homescreenapp/hsapplication/conf/base/implml/homescreendb_templates/fill.sql	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/hsapplication/conf/base/implml/homescreendb_templates/fill.sql	Thu May 27 12:46:08 2010 +0300
@@ -39,3 +39,40 @@
     
     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 -%}
+INSERT INTO GeneralConfiguration (bounceEffect, tapAndHoldDistance, widgetTapAndHoldTimeout, sceneTapAndHoldTimeout, pageChangeZoneWidth, pageIndicatorSpacing, pageChangeAnimationDuration, pageChangeZoneAnimationDuration, pageChangeZoneReverseAnimationDuration, pageRemovedAnimationDuration, newPageAddedAnimationDuration, widgetDragEffectDuration, widgetDropEffectDuration, boundaryFeedbackEffectDistance ) VALUES ({{bounceEffect}}, {{tapAndHoldDistance}}, {{widgetTapAndHoldTimeout}}, {{widgetTapAndHoldTimeout}}, {{pageChangeZoneWidth}}, {{pageIndicatorSpacing}}, {{pageChangeAnimationDuration}}, {{pageChangeZoneAnimationDuration}}, {{pageChangeZoneReverseAnimationDuration}}, {{pageRemovedAnimationDuration}}, {{newPageAddedAnimationDuration}}, {{widgetDragEffectDuration}}, {{widgetDropEffectDuration}}, {{boundaryFeedbackEffectDistance}});
+
+{%- 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	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/hsapplication/hsapplication_fallbacktheme.qrc	Thu May 27 12:46:08 2010 +0300
@@ -62,16 +62,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/homescreen.db has changed
Binary file homescreenapp/hsapplication/resource_win/homescreen.db has changed
--- a/homescreenapp/hsapplication/src/hshomescreenclientserviceprovider.cpp	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/hsapplication/src/hshomescreenclientserviceprovider.cpp	Thu May 27 12:46:08 2010 +0300
@@ -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	Fri May 14 15:43:04 2010 +0300
+++ /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[
-	W8WAFOAFoon06dNduU0nCrYIx9OCBGsm5pibkf1Fqzc+dX4LHa+h7UR+Vv0VJHS6LztesUDuyN5D
-3SPyUBgN8vHt1uCWyMmes1PRLvJr4UBhV99oOlzoHi5uTvWOjfS2IjKPn4ke2LdhmP/azhm6MNA3
-gEodwKpGcYrE7uNW257jbQ8ZQ+Nb4/K2fRu65F4l0itHp8WIfHZDqBt/k3a09lhydO/0bnl0emuX
-A3Z2uxLBNVA3zqKJ7aSm3LtB7yE1zypWj9wXaR/ElWh11gNpiLS2c2+f3DfSOST3bt8ZxUVo4d5e
-3I2NIJRyNoS7QeKhpA0H+ryGFD+tRwk6BCfADrcCSEA3hFLcJKDVd6Z7GMNIa5gu0g1ULxklG+mS
-XscmTu8kowPt4UE7kt/jqA4yRYqHpvdI8a7N3Y7RxP1HT2/uogN5QDtiDwIZ0vDO9CHaytDWbntw
-UTcls1Vxfn1PRslM2N0cP9JP8AVUCWz01MxuOlSuESHl7H/i1jDBuOsKSFShxsu0YBrIN9Ykreb6
-J+YNmJtq7FGdN8Lbzw446LL5pcJ44R+gm0rjhcklg8FGxEE1FK44rphBHMPBxpAPWgnhUIl2yNtw
-o+NYrUQAQId2r7g90iv6FVNjT5l7asnwQZO4PAxGpSVDVyZUg3XgYFXcKGUBUsD3cNdiGjzqmEER
-cTan8dm3K+EOoeYcmJFMCyMYDxpe09B7n7XtMP2GpwAIIbTu6rZAoo+o58OpbqQId2SRDZ9v1Xcf
-VQ91W+1p06E/CgP7DnflCq0P9saLm0wwUbeAWtvfLxlUA1qjJyJHHhQ3R/ft08+jbcxQX9/otg2T
-oNu2RydC2/YQA46alMRSmXbrQFe5ifgA3mRhq7N0nxXabFtRbqXX5tjaSZHRZPdQZltPTyK3+8G+
-XnNor02S0XlqoK9bRd10HJKiKbJbO7bL1Y24qevY1tb+3rZD2cTeTUO7Okt+jaBdd7d+/PSZjuj+
-XRs2l2zeqN314I69LuPWPTZtaB8yct4mt8wCiYxNRJPbe4dce0l3A/GhwYh6XO5kZpu+Hba4O6fC
-bZ1jHZMGWJ19Xbnc5FG14+DxPdjMNbVUTp+3mYs3Hqi1zrZdxda+aFqKiPu1DvRHv5hi5vZYdt6W
-O+rGxaj6dr4R7oRt7xQxeM8arZvAxsr0z2wcUzsS01NnyTzYZlPZxsPRFAgb/1s8//s7bHX63eL5
-3t+BDY22c9pYhR3Eqd4xcef2aDKX2yEmB3d18vlyD9XeB6MHIvpWxCXbxjD3i/Ke/q2M++nIAafV
-3HOEbExgb6A51zmdkUHK7kdbpug6OJE8HO2fakkim/jITpgbsDXF8Y7j2VJUYRvTuS+fHe9J5VM6
-2slGUj2Tp3u2ISwPni1vt2y7QYtMbJzEwuZE8kC0/cTePei3IzuULYeOH6EFsltEY6o4NigOHBib
-QUIsJFddX53ins6zsCPpEcetnn2UBYonW7oPz0T24m6KEVHacTTP96VnwmhuTj/UbXUeCPEfOM/D
-TnpkexJN1ZTq2BmWbZRHjK7OAyc3oiUwuYFto2AKOsDlcrh7uD9xrm9n766c3HV0g0V2vDs2t5/e
-1VqUk5G9I1vGyQ98/2qmw7m9WK3gAdfymaFISdd0eZb2vtBdo24YZ+oR1NCDYd6D0ffQme2b+noz
-xbNyizVt2o2bRnxgf+TIYNegvO3k9CHHPBw5NHwMMx794fg5he/W5FBHtmdfNH0C8ciRUPdIz9Gj
-vbGzE21tvcdO7GULoL/Qf6r9bLav9UB/CmZ/v7i/93wPoKPYshopzl2nInuH03SvLuvdW6JjanKY
-cFoZ31ih3eNd7pXsbM3jMrZVImzYa63kvaHo/tz2s7WXsQOTki0+aM/IwOgk8wY4muyPpPWJ0/aK
-s110HfvlUGtJu85lHDo9xIdURdJiCNx2vW3b9XFbZ4VmRiMPdR3bXCgQFtx1YOR8tL1PaSceAlRk
-BI1NuN3l2TuYtOLF9o14qLDyj7Zv3Bkqc6lqfdEdeluHZG441Lft5GDBqcKOJ9odOkDMnzzePTTS
-9mDvWX2mAN/OOS0bIr/JFn+CqPAtp7fuwxL67HjOqc9p0bbe+JFtu8A7F0OVxjpEpXN4S7RvS/sh
-DIukza3bHP1LB8YSfb3RbQpi1a6R6P78kR2d43vHJro6jrcfxz6b6MT2buPMxDaHAUMUjL6ztSsX
-sorIAkkfhyKDaGO/dXsF9NuRpTKAWnnw4HC0/2TXePTAgREpEupIzmCTh0sBbF6MbNk83De6actD
-aC67tfJe9xej4aFEqKvj0Lkph76D+dI39mV6qFuYwgZC54c7exG7HQE/dLRn76YWx2/ZnYMSn+4B
-W+XiOURTu22iZ2JiYqxbKWwYRKOP9EI5cc5yqrUzAywweymt/9TZCkWsSLp9QzuYIcfAcaSBM0VD
-BPdujKhax3nGPrawKeclOLVoi6dg8ezsHWs/NVOBQZCZifh3Z5uoD3Yf7ug90NUZmXGYjZQtenZs
-6+o8c3SQKOlQtnwerFbELYMPde3UN5zu7DeVEW4g04k0U5FY79nQRBopnQPh3odiw4PdQ+MVGQn0
-DeY9U8t1HscHNvoe/UR/z6GeY5JtllPcJlqmEG9YG5GEVvcgvjVORsfHj8gVhlTp2hnaMBPtPzx1
-DIQtCBs3yzxot4vK79nH0Udo7dIVm1W4m7eES9C6ObZnqmvn7pkoEmedZu+p+NgpW3tinaFv2oiW
-U3KiyyiIx/u7Jw+qfRu2TZ2uWMSc7DzRIx2dzrft2n/KNttOW1PdvSPdhjU0gZRT/7nuA8cjB8u7
-QSyz6TTM/sHI9OHdmjdaqf3nbuUs2pbIpqhpO3XQN32DHVNstvaGuo4dOJFC4mTiQcStyjT4VXuc
-bew+P41W3MSGrvN74klXr1uL3ebYzIRjzcG6NXIHW03UTX9L73bFMQW7Dvz/tV1pUyo7t/6+q/gP
-IMg8TwICygyKiooDzkwqgsy85z11697ffpP0lO5O0mlg1znlBjqdlXFNWU9W7DDceK5lxaKyKx4d
-u1yGJ+95521umfV3sv7094t9Xj4/+xzXcy/xqHbRRK/do0LrOf8Cedrtpr0RdbjkdbjS7+cjxcnP
-YCzPaqpwOzkNFa7SX6nSRfAZSCr3e1y/bp/8cI/6EWOFlcaVbSTaN1BjWLtOs7lxG+yCk1TScRA6
-TP8sujdQ0H5Aw2eIPLeVtbNhk+r9SBeu7urVws0s915INI576ExLbSMKgwDIZOvl92LW4zjsA6Ux
-7Ew67L1YtVR4/aqWTo6T2KaUtKMkpvXBOgDXbII5PAp/pX+WrkcKGVhqKpz85KrTO8JmcxWObp1n
-5c9CBagXn+85/XjZx4VE/bVRaDn6V+XXUcdOJHPhLtzG32uUOpzrwq29dFaY1r2LarbaX/FsWfXq
-F1gnZQPIfnvhnKH/cHKfiX40s+Xz13as6p5dR/DC6cIvdIs7RP1EPJ+8AyoHkjeBqb8tG3Y5L9gU
-q0C50Xh0QEtjUh5m3w4K197QPTxdsEPdKZKYB+7KyhuYuXNR94SLk8n8Q3B/yPqktNLA2MSgEXvn
-LDd+Rz2o4blwXVesMik8KEy6Q5lqGKy05rrsv1oMkMkE7KXxRh7XH2RI4GSclf5B8hXsEdtS7RoR
-pvFoUb9pogPB489fpxOYrj/JwnnndqqZblnUX5Q/05Ug4NVBD1l6ygrE8UPFd+XyFSdHbwFWufxF
-tfR57gCkq0ESaWgRSNQfTrOTqoe07OUiz+LZNTCx9SuytoZLdSKuyErjUkVG2FPOzXyI7LbwGTC5
-MS8H4u2/7tSsOAlWJsWfn9ZpuTG4XpfP3O4q3NqN0/t2owvnC600r4pRiLoQEtKc6tB8aR+AVRL3
-g4X33q+W+r8RnOOebdZUjgvIZAaDfjtz+dbbVD/eor9gkE9i8rJ/Ktz25p+CMyeaG97p2G+9fVO6
-LK+eoMAoHp87yi/lasF5dpqtl4Kq7QnKv9iBxC6mACMMlFHHMQtKYpNxwOc+54WbaciZeylnZsrI
-CYfQ19l7qAvFu4VgavyleQ0KgpvpSyiZ6V05C6naai0EL9y0u9NsbTIF8zUeDLA+xLxuT3JzffMI
-xvzOD32dlUI4f/aLLRqJxa5Ek63l9AEyudPAdwrQ8tdqT6n2C5AZhYfyV8I5Ksy+r7yKRSIzLIlX
-yTxKYGziZFTQJCDxW/p+zi6qhdYp7E3mYrWZqd2iyeQikr4p90vdcdk7CvWPsrHKsPL02ajITkBU
-5BboLrfV6ml43S2kAsEDaEHVpJPS1tNR+6MeqpY3BfFM+ucaiBoXmJdp4QLq8p7i+DgbEJmdpsqv
-0wkUjQMl+kNV7/VBMeGphiqDTBnYN1ffWfRUOF5FBdr26qlr2JaH7w7yqo9kfuEZY75OONK5oivb
-rPhfizbwblSZFmG8sv7Nywi85j0r9x6HN2Cn5aEzpdZ5n38g3VDePJTRlydI0P9ANwHDqtrh+ehJ
-+dN14gQjsSjibbp2r6vuRhd6oJJ3rUEIrZvqYcT9BZeRv3xm+wzry88jyfvFZ0EQ+YfNowyt8k3V
-+fQ1LX/OXn3I3yF7OTS+bGwvlYrt2iY4fyucP3lSyhJAIqHS3xy8pa7qsXY65j87rr777zMqgmIt
-yC/QrswAcwx0NMtNruij9PVddQF5N0uR6ihczZO1wmyxChF0gQpgKP4vwfZceTNn3fsLZQhUbvRr
-oH1fVF21w2odKJzlLtDiUkDHaD84guUznz2Bk56sHZV+zz+A7u4T8bffA3gUAWf/vfwZfsqqnDSv
-R6fHb4ENtC/egVgZOIHMDnQLs8KwihqIWidUFHMXjqG1VDyaNtqR8uvXa1RQIMWqPqDhUWgNwEYc
-ZUGfVQKpUnXWmnMltiloc6bvk8mz0VeyHeg8RSu2QDH0PR10HemvhyVobB3e8FmMlEa2Z1fF5+0v
-ymFHYIpcz4BMwlbyRoBR8gusxs5drwadl4eR2P/llQg7dQxhGUEGtAGWaet0pgS8WkdTFF87W43k
-UEHjGH0UWcmKy9cFdJZgIG9JDOS9UQXy4tHFqKwQSB66F8KKi+qwYjxaXSguX6PTnQ7E8HVmwLrw
-FrzVxlpYCm+hmGrdWzxYBRgbyjsQQmnGSOgLk+Ng8RETyvEPmVDe9JgJr3EM2jbRqvP5MigAphkh
-qLDQQLgmRQqGTseDaRnvoS2L49VS8WgwHKeVVGG/3OXhJ+jlwNr711pejv6D0pPdTUcwGpUUQQsr
-wCAvYRKRvrY99FKqtpDGCpVCmAipwez2wYhcdfv0VU6WwV/wOrNxy0FwtvwKsnsgFpKQ+FjeCm0x
-dDGQXJthwf+wmo9KzSf9fxmrRyjUn66YYwsKrUcTBRtDXKxfv+PgSr6EmVGoNxkOB0aF+svZnNHu
-z+k6OJioZ4dYaLXpyX2LkYitghMM0kFszyrYQ2HY7DLT4VcXQ0NQSvVn0zW62YRVaA==
-	]]>
-	<![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	Fri May 14 15:43:04 2010 +0300
+++ /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	Fri May 14 15:43:04 2010 +0300
+++ /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	Fri May 14 15:43:04 2010 +0300
+++ /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	Fri May 14 15:43:04 2010 +0300
+++ /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	Fri May 14 15:43:04 2010 +0300
+++ /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	Fri May 14 15:43:04 2010 +0300
+++ /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	Fri May 14 15:43:04 2010 +0300
+++ /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	Fri May 14 15:43:04 2010 +0300
+++ /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	Fri May 14 15:43:04 2010 +0300
+++ /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/hsdomainmodel/hsdomainmodel.pri	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/hsdomainmodel/hsdomainmodel.pri	Thu May 27 12:46:08 2010 +0300
@@ -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	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/hsdomainmodel/hsdomainmodel.pro	Thu May 27 12:46:08 2010 +0300
@@ -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	Thu May 27 12:46:08 2010 +0300
@@ -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	Thu May 27 12:46:08 2010 +0300
@@ -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 QScopedPointer<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	Thu May 27 12:46:08 2010 +0300
@@ -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	Thu May 27 12:46:08 2010 +0300
@@ -0,0 +1,137 @@
+/*
+* 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 "hsdomainmodel_global.h"
+#include <HbFeedback>
+
+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 int tapAndHoldDistance() { return mTapAndHoldDistance; };
+    static inline int widgetTapAndHoldTimeout() { return mWidgetTapAndHoldTimeout; };
+    static inline int sceneTapAndHoldTimeout() { return mSceneTapAndHoldTimeout; };
+    static inline int pageChangeZoneWidth() { return mPageChangeZoneWidth; };
+    static inline int 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 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(int tapAndHoldDistance) { mTapAndHoldDistance = tapAndHoldDistance; };
+    static void setWidgetTapAndHoldTimeout(int tapAndHoldTimeout) { mWidgetTapAndHoldTimeout = tapAndHoldTimeout; };
+    static void setSceneTapAndHoldTimeout(int tapAndHoldTimeout) { mSceneTapAndHoldTimeout = tapAndHoldTimeout; };
+    static void setPageChangeZoneWidth(int pageChangeZoneWidth) { mPageChangeZoneWidth = pageChangeZoneWidth; };
+    static void setPageIndicatorSpacing(int 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 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 int mTapAndHoldDistance;
+	static int mWidgetTapAndHoldTimeout;
+	static int mSceneTapAndHoldTimeout;
+    static int mPageChangeZoneWidth;
+	static int 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 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/hsdatabase.h	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/hsdomainmodel/inc/hsdatabase.h	Thu May 27 12:46:08 2010 +0300
@@ -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
 {
@@ -75,9 +80,11 @@
     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();
@@ -92,7 +99,6 @@
     QString mDatabaseName;
 
     static QScopedPointer<HsDatabase> mInstance;
-    bool mBlocked;
 };
 
 #endif // HSDATABASE_H
--- a/homescreenapp/hsdomainmodel/inc/hsdomainmodeldatastructures.h	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/hsdomainmodel/inc/hsdomainmodeldatastructures.h	Thu May 27 12:46:08 2010 +0300
@@ -20,6 +20,7 @@
 
 #include <QRectF>
 #include "hsdomainmodel_global.h"
+#include <HbFeedback>
 
 class HSDOMAINMODEL_EXPORT HsSceneData
 {
@@ -86,4 +87,169 @@
     int     widgetId;
 };
 
+class HSDOMAINMODEL_EXPORT HsGeneralConfiguration
+{	
+public:
+	int bounceEffect; // pixels, bounce effect reservation, half in left side and half in right side of wallpaper 		
+	int 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
+	int pageChangeZoneWidth; // pixels
+	int 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
+};
+
+class HSDOMAINMODEL_EXPORT HsFeedbackConfiguration
+{
+public: 
+    HbFeedback::InstantEffect feedbackFromString(QString feedback)
+    {
+        if (feedback == "Basic") {
+            return HbFeedback::Basic;
+        }
+        else if (feedback == "Sensitive") {
+            return HbFeedback::Sensitive;
+        }
+        else if (feedback == "BasicButton") {
+            return HbFeedback::BasicButton;
+        }
+        else if (feedback == "SensitiveButton") {
+            return HbFeedback::SensitiveButton;
+        }
+        else if (feedback == "BasicKeypad") {
+            return HbFeedback::BasicKeypad;
+        }
+        else if (feedback == "SensitiveKeypad") {
+            return HbFeedback::SensitiveKeypad;
+        }
+        else if (feedback == "BasicSlider") {
+            return HbFeedback::BasicSlider;
+        }
+        else if (feedback == "SensitiveSlider") {
+            return HbFeedback::SensitiveSlider;
+        }
+        else if (feedback == "BasicKeypad") {
+            return HbFeedback::BasicKeypad;
+        }
+        else if (feedback == "BasicSlider") {
+            return HbFeedback::BasicSlider;
+        }
+        else if (feedback == "SensitiveSlider") {
+            return HbFeedback::SensitiveSlider;
+        }
+        else if (feedback == "BasicItem") {
+            return HbFeedback::BasicItem;
+        }
+        else if (feedback == "SensitiveItem") {
+            return HbFeedback::SensitiveItem;
+        }
+        else if (feedback == " ItemScroll") {
+            return HbFeedback::ItemScroll;
+        }
+        else if (feedback == "ItemPick") {
+            return HbFeedback::ItemPick;
+        }
+        else if (feedback == "ItemDrop") {
+            return HbFeedback::ItemDrop;
+        }
+        else if (feedback == "ItemMoveOver") {
+            return HbFeedback::ItemMoveOver;
+        }
+        else if (feedback == "BounceEffect") {
+            return HbFeedback::BounceEffect;
+        }
+        else if (feedback == "Checkbox") {
+            return HbFeedback::Checkbox;
+        }
+        else if (feedback == "MultipleCheckbox") {
+            return HbFeedback::MultipleCheckbox;
+        }
+        else if (feedback == "Editor") {
+            return HbFeedback::Editor;
+        }
+        else if (feedback == "TextSelection") {
+            return HbFeedback::TextSelection;
+        }
+        else if (feedback == "BlankSelection") {
+            return HbFeedback::BlankSelection;
+        }
+        else if (feedback == "LineSelection") {
+            return HbFeedback::LineSelection;
+        }
+        else if (feedback == "EmptyLineSelection") {
+            return HbFeedback::EmptyLineSelection;
+        }
+        else if (feedback == "PopUp") {
+            return HbFeedback::PopUp;
+        }
+        else if (feedback == "PopupOpen") {
+            return HbFeedback::PopupOpen;
+        }
+        else if (feedback == "PopupClose") {
+            return HbFeedback::PopupClose;
+        }
+        else if (feedback == "Flick") {
+            return HbFeedback::Flick;
+        }
+        else if (feedback == "StopFlick") {
+            return HbFeedback::StopFlick;
+        }
+        else if (feedback == "MultitouchActivate") {
+            return HbFeedback::MultitouchActivate;
+        }
+        else if (feedback == "RotateStep") {
+            return HbFeedback::RotateStep;
+        }
+        else if (feedback == "PositiveTacticon") {
+            return HbFeedback::PositiveTacticon;
+        }
+        else if (feedback == "NeutralTacticon") {
+            return HbFeedback::NeutralTacticon;
+        }
+        else if (feedback == "NegativeTacticon") {
+            return HbFeedback::NegativeTacticon;
+        }
+        else if (feedback == "NumberOfInstantFeedbacks") {
+            return HbFeedback::NumberOfInstantFeedbacks;
+        }
+        else if (feedback == "InstantUser") {
+            return HbFeedback::InstantUser;
+        }
+        else if (feedback == "InstantMaxUser") {
+            return HbFeedback::InstantMaxUser;
+        }
+        return HbFeedback::None;
+    }
+
+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	Thu May 27 12:46:08 2010 +0300
@@ -0,0 +1,47 @@
+/*
+* 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 HSVIEW_H
+#define HSVIEW_H
+
+#include <QPointer>
+
+#include "hsdomainmodel_global.h"
+#include "hstest_global.h"
+
+HOMESCREEN_TEST_CLASS(HomeScreenStatePluginTest)
+
+class HbView;
+class HbMainWindow;
+
+class HSDOMAINMODEL_EXPORT HsGui
+{
+public:
+	HsGui();
+	~HsGui();
+	static HbView *idleView();	
+	static HbView *takeIdleView();
+	static void setIdleView(HbView *idleView);	
+	static HbMainWindow *mainWindow();
+
+private:
+	static QPointer<HbView> mIdleView;
+	HOMESCREEN_TEST_FRIEND_CLASS(HomeScreenStatePluginTest)
+};
+
+Q_DECLARE_METATYPE(HsGui*)
+#endif //HSVIEW_H
--- a/homescreenapp/hsdomainmodel/inc/hspage.h	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/hsdomainmodel/inc/hspage.h	Thu May 27 12:46:08 2010 +0300
@@ -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,10 +51,10 @@
     bool deleteFromDatabase();
 
     QList<HsWidgetHost *> widgets() const;
-        
+
     bool isRemovable() const;
     void setRemovable(bool removable);
-    
+
     static HsPage *createInstance(const HsPageData &pageData);
 
 public slots:
@@ -63,6 +64,8 @@
 
     void updateZValues();
 
+    int pageIndex();
+
 private:
     void connectWidget(HsWidgetHost *widget);
     void disconnectWidget(HsWidgetHost *widget);
@@ -72,12 +75,12 @@
     void onWidgetResized(HsWidgetHost *widget);
 
 private:
-    int mDatabaseId;    
+    int mDatabaseId;
     bool mRemovable;
     QList<HsWidgetHost*> mWidgets;
     QList<HsWidgetHost*> mNewWidgets;
-    
+
     HOMESCREEN_TEST_FRIEND_CLASS(TestRuntimeServices)
 };
- 
+
 #endif
--- a/homescreenapp/hsdomainmodel/inc/hswidgethost.h	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/hsdomainmodel/inc/hswidgethost.h	Thu May 27 12:46:08 2010 +0300
@@ -28,11 +28,8 @@
 #include "hsdomainmodel_global.h"
 #include "hstest_global.h"
 
-
-class HbIconItem;
 class HsPage;
 
-
 HOMESCREEN_TEST_CLASS(TestRuntimeServices)
 
 class HSDOMAINMODEL_EXPORT HsWidgetHost : public HbWidget
@@ -81,12 +78,12 @@
     HsWidgetPresentationData widgetPresentation(Qt::Orientation orientation);
     bool loadWidgetPresentation();
     bool deleteWidgetPresentation(Qt::Orientation orientation);
-
+    bool isPannable(QGraphicsSceneMouseEvent *event);
 signals:
     void widgetFinished(HsWidgetHost *widget);
     void widgetError(HsWidgetHost *widget);
     void widgetResized(HsWidgetHost *widget);
-
+   
 public slots:
     void initializeWidget();
     void showWidget();
@@ -96,15 +93,12 @@
 
     void startDragEffect();
     void startDropEffect();
-    
-    void startTapAndHoldAnimation();
-    void stopTapAndHoldAnimation();
-
+  
 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) }    
+    void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event);
+    void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
+    void mousePressEvent(QGraphicsSceneMouseEvent *event);
+    void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
     bool eventFilter(QObject *obj, QEvent *event);
     
 private:
@@ -132,12 +126,11 @@
     QMetaMethod mOnUninitializeMethod;
     QMetaProperty mIsOnlineProperty;
 	QMetaProperty mRootPathProperty;
+    QMetaMethod mIsPannable;
     State mState;
     QString mUri;
     int mDatabaseId;
 
-    HbIconItem *mTapAndHoldIcon;
-
     HOMESCREEN_TEST_FRIEND_CLASS(TestRuntimeServices)
 };
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/src/hsbackuprestoreactivecallback.cpp	Thu May 27 12:46:08 2010 +0300
@@ -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	Thu May 27 12:46:08 2010 +0300
@@ -0,0 +1,200 @@
+/*
+* 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()
+{   
+    disconnect(sender(), SIGNAL(valueChanged(XQSettingsKey, const QVariant &)),
+			   this, SLOT(handleKeyChange(XQSettingsKey, const QVariant&)));
+    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.reset(new HsBackupRestoreObserver);
+    }
+    return mInstance.data();
+}
+
+/*!
+    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.
+*/
+QScopedPointer<HsBackupRestoreObserver> HsBackupRestoreObserver::mInstance(0);
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/src/hsconfiguration.cpp	Thu May 27 12:46:08 2010 +0300
@@ -0,0 +1,111 @@
+/*
+* 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;
+    } else {
+        Q_ASSERT_X(1, "Configuration", "Homescreen configuration could not be loaded from database");
+    }
+
+    HsFeedbackConfiguration feedbackConfiguration;
+    if (db->feedbackConfiguration(feedbackConfiguration)) {
+	    mBounceFeedbackEffectDistance = 3;
+        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;
+int HsConfiguration::mTapAndHoldDistance = 16;
+int HsConfiguration::mWidgetTapAndHoldTimeout = 500;
+int HsConfiguration::mSceneTapAndHoldTimeout = 500;
+int HsConfiguration::mPageChangeZoneWidth = 60;
+int HsConfiguration::mPageIndicatorSpacing = 8;
+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;
+
+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/hsdatabase.cpp	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/hsdomainmodel/src/hsdatabase.cpp	Thu May 27 12:46:08 2010 +0300
@@ -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;
 	}
 
@@ -759,20 +760,105 @@
 }
 
 /*!
-    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 "
+        "FROM GeneralConfiguration";
+
+    if (query.prepare(statement) && query.exec() && query.next()) {        
+        data.bounceEffect                           = query.value(0).toInt();
+        data.tapAndHoldDistance                     = query.value(1).toInt();
+        data.widgetTapAndHoldTimeout                = query.value(2).toInt();
+        data.sceneTapAndHoldTimeout                 = query.value(3).toInt();
+        data.pageChangeZoneWidth                    = query.value(4).toInt();
+        data.pageIndicatorSpacing                   = query.value(5).toInt();
+        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();
+        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 = false;
+        if (query.value(0).toInt() == 1) {
+            data.snappingEnabled = true;
+        }
+        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;
 }
 
 /*!
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/src/hsgui.cpp	Thu May 27 12:46:08 2010 +0300
@@ -0,0 +1,87 @@
+/*
+* 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.
+*/
+
+/*!
+    Constructor
+*/
+HsGui::HsGui()	
+{    
+}
+
+/*!
+    Destructor.
+*/
+HsGui::~HsGui()
+{
+}
+
+/*!
+    Returns idle view. 
+*/
+HbView *HsGui::idleView()
+{
+	return mIdleView.data();    
+}
+
+/*!
+    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 *view = mIdleView;
+    mIdleView = 0;
+    return view;
+}
+
+/*!
+    Sets the idle view instance. The existing instance
+    will be deleted.
+*/
+void HsGui::setIdleView(HbView *idleView)
+{
+    if (mIdleView != idleView) {
+        HbView *oldView = mIdleView;
+        mIdleView = idleView;
+        delete oldView;
+    }
+}
+
+/*!
+    Return main window.
+*/
+HbMainWindow *HsGui::mainWindow()
+{
+    return hbInstance->allMainWindows().first();
+}
+
+/*!
+    Points to the view instance.
+*/
+QPointer<HbView> HsGui::mIdleView(0);
--- a/homescreenapp/hsdomainmodel/src/hspage.cpp	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/hsdomainmodel/src/hspage.cpp	Thu May 27 12:46:08 2010 +0300
@@ -99,6 +99,9 @@
         connectWidget(widget.data());
         widget->setPage(this);
         widget->initializeWidget();
+        if (widget->state() != HsWidgetHost::Initialized) {
+            continue;
+        }
         widget->showWidget();
         mWidgets.append(widget.data());
         widget->setParentItem(this);
@@ -345,6 +348,11 @@
     }
 }
 
+int HsPage::pageIndex()
+{
+    return HsScene::instance()->pages().indexOf(this);
+}
+
 void HsPage::connectWidget(HsWidgetHost *widget)
 {
     connect(widget, SIGNAL(widgetFinished(HsWidgetHost*)),
--- a/homescreenapp/hsdomainmodel/src/hswallpaper.cpp	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/hsdomainmodel/src/hswallpaper.cpp	Thu May 27 12:46:08 2010 +0300
@@ -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/hswidgethost.cpp	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/hsdomainmodel/src/hswidgethost.cpp	Thu May 27 12:46:08 2010 +0300
@@ -70,8 +70,7 @@
       mWidget(0),
       mPage(0),
       mState(Unloaded),
-      mDatabaseId(databaseId),
-      mTapAndHoldIcon(0)
+      mDatabaseId(databaseId)
 {
     setFlags(QGraphicsItem::ItemClipsChildrenToShape);
 
@@ -147,7 +146,8 @@
 
     setProperty("isOnline", mIsOnlineProperty);
 	setProperty("rootPath", mRootPathProperty);
-
+    
+    setMethod("isPannable(QGraphicsSceneMouseEvent*)", mIsPannable);
     setMethod("onInitialize()", mOnInitializeMethod);
     setMethod("onUninitialize()", mOnUninitializeMethod);
 
@@ -362,24 +362,38 @@
 
     return db->deleteWidgetPresentation(mDatabaseId, key);
 }
-
+/*!
+    Check wheter widget uses pan gestures
+    Return true if successfull.
+*/
+bool HsWidgetHost::isPannable(QGraphicsSceneMouseEvent *event)
+{
+    bool ret(false);
+    mIsPannable.invoke(mWidget,Q_RETURN_ARG(bool,ret),Q_ARG(QGraphicsSceneMouseEvent *,event));
+    return ret;
+}
 /*!
     \fn void HsWidgetHost::widgetFinished()
-    This signal is emitten after the contained widget
+    This signal is emitted after the contained widget
     reported is completion.
 */
 
 /*!
     \fn void HsWidgetHost::widgetError()
-    This signal is emitten after the contained widget
+    This signal is emitted after the contained widget
     reported an error.
 */
 
 /*!
     \fn void HsWidgetHost::widgetResized()
-    This signal is emitten after the contained widget
+    This signal is emitted after the contained widget
     sends a resize event.
 */
+/*!
+    \fn void HsWidgetHost::mousePressEventIgnored()
+    This signal is emitted if managed widget ignores mouse press event
+
+*/
 
 /*!
     Calls the widget's onInitialize() slot if the
@@ -397,7 +411,10 @@
     setOnline(HsScene::instance()->isOnline());
     mOnInitializeMethod.invoke(mWidget);
 
-    mState = Initialized;
+    if (mState != Finished &&
+        mState != Faulted) {
+        mState = Initialized;
+    }
 }
 
 /*!
@@ -514,26 +531,34 @@
 
     animationGroup->start(QAbstractAnimation::DeleteWhenStopped);
 }
-
 /*!
-    Starts the tap-and-hold animation.
+    Overwritten to stop event propogation
 */
-void HsWidgetHost::startTapAndHoldAnimation()
-{
-    mTapAndHoldIcon = new HbIconItem("tapandhold_animation");
-    mTapAndHoldIcon->setZValue(1e6);
-    mTapAndHoldIcon->setParentItem(this);
+void HsWidgetHost::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) 
+{ 
+    Q_UNUSED(event) 
+}
+/*!
+    Overwritten to stop event propogation
+*/
+void HsWidgetHost::mouseMoveEvent(QGraphicsSceneMouseEvent *event) 
+{ 
+    Q_UNUSED(event)  
 }
-
 /*!
-    Stops the tap-and-hold animation.
+    Overwritten to stop event propogation
 */
-void HsWidgetHost::stopTapAndHoldAnimation()
-{
-    delete mTapAndHoldIcon;
-    mTapAndHoldIcon = 0;
+void HsWidgetHost::mousePressEvent(QGraphicsSceneMouseEvent *event) 
+{ 
+    Q_UNUSED(event)  
+    
 }
-
+/*!
+    Overwritten to stop event propogation
+*/
+void HsWidgetHost::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { 
+    Q_UNUSED(event)
+}    
 /*!
     Filters resize events from widgets and resizes inside max/min size boundaries if needed.
 */
@@ -660,6 +685,7 @@
 */
 void HsWidgetHost::onFinished()
 {
+    mState = Finished;
     emit widgetFinished(this);
 }
 
--- a/homescreenapp/hsutils/inc/hsmenuevent.h	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/hsutils/inc/hsmenuevent.h	Thu May 27 12:46:08 2010 +0300
@@ -47,6 +47,7 @@
         CreateCollection,
         PreviewHSWidget,
         ShowAppSettings,
+        ShowAppDetails,
         Unknown
     };
 
--- a/homescreenapp/hsutils/inc/hsmenueventfactory.h	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/hsutils/inc/hsmenueventfactory.h	Thu May 27 12:46:08 2010 +0300
@@ -79,7 +79,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	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/hsutils/inc/hspageindicator.h	Thu May 27 12:46:08 2010 +0300
@@ -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	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/hsutils/inc/hswallpaperimagereader.h	Thu May 27 12:46:08 2010 +0300
@@ -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	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/hsutils/src/hsimagefetcherclient.cpp	Thu May 27 12:46:08 2010 +0300
@@ -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	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/hsutils/src/hsmenueventfactory.cpp	Thu May 27 12:46:08 2010 +0300
@@ -265,6 +265,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	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/hsutils/src/hspageindicator.cpp	Thu May 27 12:46:08 2010 +0300
@@ -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	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/hsutils/src/hswallpaperimagereader.cpp	Thu May 27 12:46:08 2010 +0300
@@ -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	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/hswidgetuninstaller/inc/hswidgetcomponentparser.h	Thu May 27 12:46:08 2010 +0300
@@ -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	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/inc/hsapp_defs.h	Thu May 27 12:46:08 2010 +0300
@@ -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	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/inc/hsapp_defs.inl	Thu May 27 12:46:08 2010 +0300
@@ -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	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/runtimeplugins/hsdefaultruntimeplugin/hsdefaultruntimeplugin.pri	Thu May 27 12:46:08 2010 +0300
@@ -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	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/runtimeplugins/hsdefaultruntimeplugin/hsdefaultruntimeplugin.pro	Thu May 27 12:46:08 2010 +0300
@@ -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	Fri May 14 15:43:04 2010 +0300
+++ /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	Fri May 14 15:43:04 2010 +0300
+++ /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	Fri May 14 15:43:04 2010 +0300
+++ /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	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/runtimeplugins/hsdefaultruntimeplugin/inc/hsdefaultruntime.h	Thu May 27 12:46:08 2010 +0300
@@ -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	Fri May 14 15:43:04 2010 +0300
+++ /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	Fri May 14 15:43:04 2010 +0300
+++ /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	Fri May 14 15:43:04 2010 +0300
+++ /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	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/runtimeplugins/hsdefaultruntimeplugin/src/hsdefaultruntime.cpp	Thu May 27 12:46:08 2010 +0300
@@ -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	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/serviceproviders/hsmenuserviceprovider/inc/hsmenuservice.h	Thu May 27 12:46:08 2010 +0300
@@ -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	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/serviceproviders/hsmenuserviceprovider/src/hsmenuservice.cpp	Thu May 27 12:46:08 2010 +0300
@@ -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/stateplugins/hsapplibrarystateplugin/conf/applibrary_view.confml	Fri May 14 15:43:04 2010 +0300
+++ /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
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/hsapplibrarystateplugin.pro	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/hsapplibrarystateplugin.pro	Thu May 27 12:46:08 2010 +0300
@@ -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	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/hsapplibrarystateplugin_exports_to_rom.pri	Thu May 27 12:46:08 2010 +0300
@@ -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	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsallappsstate.h	Thu May 27 12:46:08 2010 +0300
@@ -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	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsallcollectionsstate.h	Thu May 27 12:46:08 2010 +0300
@@ -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	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsapplibrarystate.h	Thu May 27 12:46:08 2010 +0300
@@ -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	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hscollectionstate.h	Thu May 27 12:46:08 2010 +0300
@@ -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,7 @@
     void stateExited();
     void latestOnTopMenuAction();
     void oldestOnTopMenuAction();
-	void contextMenuAction(HbAction *action);
+    void contextMenuAction(HbAction *action);
 private:
     void construct();
     void constructMenu(bool isDynamic);
@@ -84,9 +86,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	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsinstalledappsstate.h	Thu May 27 12:46:08 2010 +0300
@@ -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,7 @@
 
     void stateExited();
 
-	void contextMenuAction(HbAction *action);
+    void contextMenuAction(HbAction *action);
 
 private:
 
@@ -91,9 +93,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	Thu May 27 12:46:08 2010 +0300
@@ -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	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsmenuview.h	Thu May 27 12:46:08 2010 +0300
@@ -36,6 +36,7 @@
 class HbListView;
 class HbGroupBox;
 class HbWidget;
+class HbStaticVkbHost;
 class HsMenuItemModel;
 
 
@@ -51,14 +52,14 @@
 
     void setSearchPanelVisible(bool visible);
 
-    HbView *view();
+    HbView *view() const;
 
-    HbListView *listView();
+    HbListView *listView() const;
 
     void activate();
     void inactivate();
 
-    HbGroupBox *viewLabel();
+    HbGroupBox *viewLabel() const;
 
     void setModel(HsMenuItemModel *model);
 
@@ -83,11 +84,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 +118,7 @@
 
     HbListView *mSearchListView;
     HbSearchPanel *mSearchPanel;
+    HbStaticVkbHost* mVkbHost;
 
     HS_STATES_TEST_FRIEND_CLASS(MenuStatesTest)
 };
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsallappsstate.cpp	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsallappsstate.cpp	Thu May 27 12:46:08 2010 +0300
@@ -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,6 +350,7 @@
                                     "txt_common_menu_delete"));
     uninstallAction->setData(UninstallContextAction);
     HbAction *appSettingsAction(NULL);
+    HbAction *appDetailsAction(NULL);
 
     // check conditions and hide irrelevant menu items
 
@@ -355,6 +361,13 @@
                                                 "txt_common_menu_settings"));
         appSettingsAction->setData(AppSettingContextAction);
     }
+    if (!(entry->attribute(componentIdAttributeName()).isEmpty()) && 
+                entry->entryTypeName() == applicationTypeName() ) {
+        appDetailsAction = mContextMenu->addAction(hbTrId(
+                                                "txt_common_menu_details"));
+        appDetailsAction->setData(AppDetailsContextAction);
+    }    
+    
     EntryFlags flags = item->modelIndex().data(
                            CaItemModel::FlagsRole).value<EntryFlags> ();
 
@@ -399,6 +412,10 @@
             machine()->postEvent(
                 HsMenuEventFactory::createAppSettingsViewEvent(itemId));
             break;
+        case AppDetailsContextAction: 
+            machine()->postEvent(
+                HsMenuEventFactory::createAppDetailsViewEvent(itemId));
+            break;            
         default:
             break;
     }
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsallcollectionsstate.cpp	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsallcollectionsstate.cpp	Thu May 27 12:46:08 2010 +0300
@@ -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");
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsapplibrarystate.cpp	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsapplibrarystate.cpp	Thu May 27 12:46:08 2010 +0300
@@ -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	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hscollectionstate.cpp	Thu May 27 12:46:08 2010 +0300
@@ -37,7 +37,7 @@
 #include "hscollectionstate.h"
 #include "hsaddappstocollectionstate.h"
 #include "hsapp_defs.h"
-
+#include "hsmainwindow.h"
 
 /*!
  \class HsCollectionState
@@ -118,6 +118,7 @@
 */
 HsCollectionState::HsCollectionState(HsMenuViewBuilder &menuViewBuilder,
                                      HsMenuModeWrapper &menuMode,
+                                     HsMainWindow &mainWindow,
                                      QState *parent) :
     QState(parent),
     mSortAttribute(LatestOnTopHsSortAttribute),
@@ -127,7 +128,8 @@
     mMenuMode(menuMode),
     mSecondarySoftkeyAction(new HbAction(Hb::BackNaviAction, this)),
     mCollectionModel(0),
-    mOptions(0), mContextModelIndex(), mContextMenu(0)
+    mOptions(0), mContextModelIndex(), mContextMenu(0),
+    mMainWindow(mainWindow)
 {
     construct();
 }
@@ -196,21 +198,16 @@
 {
     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);
-        } else {
-            mCollectionModel->setFlagsOn(VisibleEntryFlag);
-        }
-        mCollectionModel->setParentId(mCollectionId);
-        mCollectionModel->setSort(LatestOnTopHsSortAttribute);
     }
+    
+    connect(mCollectionModel, SIGNAL(modelReset()), SLOT(updateLabel()));
 
     mMenuView.setModel(mCollectionModel);
 
@@ -285,6 +282,8 @@
 
     mMenuView.setSearchPanelVisible(false);
     mMenuView.inactivate();
+    disconnect(mCollectionModel, SIGNAL(modelReset()),
+                   this, SLOT(updateLabel()));
     delete mCollectionModel;
     mCollectionModel = NULL;
     delete mOptions;
@@ -292,6 +291,7 @@
     if (mContextMenu)
         mContextMenu->close();
     HSMENUTEST_FUNC_EXIT("HsCollectionState::stateExited");
+    this->mSortAttribute = NoHsSortAttribute;
     qDebug("CollectionState::stateExited()");
 }
 
@@ -308,7 +308,6 @@
     connect(&mMenuView,
             SIGNAL(longPressed(HbAbstractViewItem *, QPointF)),
             SLOT(listItemLongPressed(HbAbstractViewItem *, QPointF)));
-    connect(mCollectionModel, SIGNAL(modelReset()),SLOT(updateLabel()));
 }
 
 /*!
@@ -319,9 +318,6 @@
     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 +387,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 +414,13 @@
                                                 "txt_common_menu_settings"));
         appSettingsAction->setData(AppSettingContextAction);
     }
-
+    
+    if (!(entry->attribute(componentIdAttributeName()).isEmpty()) && 
+                entry->entryTypeName() == applicationTypeName() ) {
+        appDetailsAction = mContextMenu->addAction(hbTrId(
+                                                "txt_common_menu_details"));
+        appDetailsAction->setData(AppDetailsContextAction);
+    }        
     mContextModelIndex = item->modelIndex();
     mContextMenu->setPreferredPos(coords);
     mContextMenu->setAttribute(Qt::WA_DeleteOnClose);
@@ -458,6 +461,10 @@
             machine()->postEvent(
                 HsMenuEventFactory::createAppSettingsViewEvent(itemId));
             break;
+        case AppDetailsContextAction: 
+            machine()->postEvent(
+                HsMenuEventFactory::createAppDetailsViewEvent(itemId));
+            break;                 
         default:
             break;
     }
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsinstalledappsstate.cpp	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsinstalledappsstate.cpp	Thu May 27 12:46:08 2010 +0300
@@ -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) {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsmainwindow.cpp	Thu May 27 12:46:08 2010 +0300
@@ -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	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsmenuview.cpp	Thu May 27 12:46:08 2010 +0300
@@ -27,6 +27,7 @@
 #include <HbToolBar>
 #include <HbView>
 #include <HbToolBarExtension>
+#include <HbStaticVkbHost>
 
 #include "hsallappsstate.h"
 #include "hsallcollectionsstate.h"
@@ -62,7 +63,8 @@
     mListView(NULL),
     mViewLabel(NULL),
     mSearchListView(NULL),
-    mSearchPanel(NULL)
+    mSearchPanel(NULL), 
+    mVkbHost(NULL)
 {
     mBuilder.setOperationalContext(HsItemViewContext);
     mBuilder.setViewContext(mViewContext);
@@ -76,6 +78,10 @@
     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 +109,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 +131,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;
 }
@@ -180,7 +188,7 @@
 /*!
 \return View widget of the menu view.
  */
-HbView *HsMenuView::view()
+HbView *HsMenuView::view() const
 {
     return mView;
 }
@@ -188,7 +196,7 @@
 /*!
 \return List view widget of the menu view.
  */
-HbListView *HsMenuView::listView()
+HbListView *HsMenuView::listView() const
 {
     return mListView;
 }
@@ -392,6 +400,7 @@
 
     mSearchListView = NULL;
     mSearchPanel = NULL;
+    vkbClosed();
     HSMENUTEST_FUNC_EXIT("hsmenuview::searchFinished");
 }
 
@@ -424,32 +433,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 +455,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	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsmenuviewbuilder.cpp	Thu May 27 12:46:08 2010 +0300
@@ -34,34 +34,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 +57,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();
+    } 
 
 }
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/inc/hsbackuprestorestate.h	Thu May 27 12:46:08 2010 +0300
@@ -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	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/inc/hsidlestate.h	Thu May 27 12:46:08 2010 +0300
@@ -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:
@@ -136,28 +137,25 @@
         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 onRemovePageMessageBoxClosed(HbAction *action);
     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 +165,7 @@
     bool mTrashBinFeedbackAlreadyPlayed;
 
     qreal mDeltaX;
+    QPointer<HbMenu> mSceneMenu;
 #ifdef Q_OS_SYMBIAN    
     XQSettingsManager *mSettingsMgr;
 #endif    
--- a/homescreenapp/stateplugins/hshomescreenstateplugin/inc/hsloadscenestate.h	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/inc/hsloadscenestate.h	Thu May 27 12:46:08 2010 +0300
@@ -29,7 +29,7 @@
     ~HsLoadSceneState();
 
 signals:
-    void event_idle();
+    void event_history();
 
 private slots:
     void action_loadScene();
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/inc/hsrootstate.h	Thu May 27 12:46:08 2010 +0300
@@ -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	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/inc/hsselectbackgroundstate.h	Thu May 27 12:46:08 2010 +0300
@@ -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	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/resource/hshomescreenstateplugin.xml	Thu May 27 12:46:08 2010 +0300
@@ -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	Thu May 27 12:46:08 2010 +0300
@@ -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	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/src/hsdocumentloader.cpp	Thu May 27 12:46:08 2010 +0300
@@ -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	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/src/hshomescreenstateplugin.cpp	Thu May 27 12:46:08 2010 +0300
@@ -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	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/src/hsidlestate.cpp	Thu May 27 12:46:08 2010 +0300
@@ -51,6 +51,8 @@
 #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 +123,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,11 +131,14 @@
     mPageChangeAnimation(0),
     mContinuousFeedback(0),
     mTrashBinFeedbackAlreadyPlayed(false),
-    mDeltaX(0)
-#ifdef Q_OS_SYMBIAN    
+    mDeltaX(0),
+    mSceneMenu(0)
+#ifdef Q_OS_SYMBIAN
     ,mSettingsMgr(0)
-#endif    
+#endif
 {
+    mTapAndHoldDistance = HsConfiguration::tapAndHoldDistance();
+    mPageChangeZoneWidth = HsConfiguration::pageChangeZoneWidth();
     setupStates();
     mTimer.setSingleShot(true);
     mTitleResolver = new HsTitleResolver(this);
@@ -281,6 +284,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 +331,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 +394,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 +408,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 +429,7 @@
     if (isInLeftPageChangeZone() && 0 < targetPageIndex) {
         --targetPageIndex;
     } else if (isInRightPageChangeZone() &&
-        targetPageIndex < scene->pages().count()) {
+        targetPageIndex < scene->maximumPageCount()-1) {
         ++targetPageIndex;
     } else {
         mAllowZoneAnimation = true;
@@ -441,10 +446,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 +469,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() < mPageChangeZoneWidth;
 }
 
 /*!
-    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 - mPageChangeZoneWidth;
 }
 
 /*!
@@ -509,7 +512,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 +531,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 +557,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 +624,28 @@
 */
 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);
 
         // TODO: Workaround to Qt/Hb layouting bugs.
         QApplication::processEvents(QEventLoop::ExcludeUserInputEvents);
+        HsGui::setIdleView(idleView);
+
+        if (mPageChangeAnimation) {
+            delete mPageChangeAnimation;
+            mPageChangeAnimation = NULL;
+        }
     }
 
-    HsScene::mainWindow()->setCurrentView(mView);
+    HsScene::mainWindow()->setCurrentView(idleView);
 }
 
 /*!
@@ -634,7 +665,7 @@
 void HsIdleState::onTitleChanged(QString title)
 {
     qDebug() << "HsIdleState::onTitleChanged() to title: " << title;
-    mView->setTitle(title);
+    HsGui::idleView()->setTitle(title);
 }
 
 /*!
@@ -687,7 +718,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);
 }
 
 /*!
@@ -721,7 +752,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 +764,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();
+    }
 }
 
 /*!
@@ -798,7 +838,7 @@
             this, SIGNAL(event_toggleConnection()));
     }
 
-    mView->setMenu(menu);
+    HsGui::idleView()->setMenu(menu);
 }
 
 /*!
@@ -831,13 +871,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 +893,6 @@
 {
     disconnect(&mTimer, SIGNAL(timeout()),
         this, SLOT(widgetInteraction_onTapAndHoldTimeout()));
-
-    HsWidgetHost *widget = HsScene::instance()->activeWidget();
-    widget->stopTapAndHoldAnimation();
 }
 
 /*!
@@ -875,7 +909,7 @@
 */
 void HsIdleState::action_sceneInteraction_connectGestureTimers()
 {
-    mTimer.setInterval(500);
+    mTimer.setInterval(HsConfiguration::sceneTapAndHoldTimeout());
     connect(&mTimer, SIGNAL(timeout()),
         SLOT(sceneInteraction_onTapAndHoldTimeout()));
     mTimer.start();
@@ -941,7 +975,7 @@
         && mZoneAnimation->state() == QAbstractAnimation::Running
         && mZoneAnimation->direction() == QAbstractAnimation::Forward) {
         mPageChanged = false;
-        mZoneAnimation->setDuration(200);
+        mZoneAnimation->setDuration(HsConfiguration::pageChangeZoneReverseAnimationDuration());
         mZoneAnimation->setDirection(QAbstractAnimation::Backward);
     }
 
@@ -950,7 +984,7 @@
     HsWidgetHost *widget = scene->activeWidget();
 
     if (mUiWidget->trashBin()->isUnderMouse()) {
-        HbInstantFeedback::play(HbFeedback::ItemDrop);
+        HbInstantFeedback::play(HsConfiguration::widgetDropToTrashbinFeedbackType());
         widget->page()->removeWidget(widget);
         widget->uninitializeWidget();
         widget->deleteFromDatabase();
@@ -974,7 +1008,7 @@
 
         // 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);
 
@@ -1035,7 +1069,7 @@
 
     HsScene::instance()->setActivePageIndex(pageIndex);
 
-    startPageChangeAnimation(pageIndex, 200);
+    startPageChangeAnimation(pageIndex, HsConfiguration::pageChangeAnimationDuration());
 }
 
 /*!
@@ -1055,29 +1089,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
@@ -1092,7 +1119,7 @@
     int pageIndex = scene->pages().count();
     addPageToScene(pageIndex);
     scene->setActivePageIndex(pageIndex);
-    startPageChangeAnimation(pageIndex, 700);
+    startPageChangeAnimation(pageIndex, HsConfiguration::newPageAddedAnimationDuration());
     mUiWidget->pageIndicator()->addItem(pageIndex);
     mUiWidget->showPageIndicator();
 }
@@ -1166,7 +1193,7 @@
         }
     }
 
-    mSceneMenuPos = event->scenePos();
+    mTouchScenePos = event->scenePos();
     emit event_sceneInteraction();
 }
 
@@ -1191,10 +1218,18 @@
     QPointF point =
         event->scenePos() - event->buttonDownScenePos(Qt::LeftButton);
     if (mTapAndHoldDistance < 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 +1268,7 @@
     Q_UNUSED(watched)
     Q_UNUSED(filtered)
 
-    mSceneMenuPos = event->scenePos();
+    mTouchScenePos = event->scenePos();
 
     if (!mTimer.isActive()) {
         return;
@@ -1286,32 +1321,45 @@
 
     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();
-
-    qreal lowerBoundX = -widgetRect.width() / 2 + 10;
+    //Widget can be moved over the pages left border if not in the first page.
+    //In the first page widget cannot cross the page's left border at all.
+    qreal lowerBoundX = -widgetRect.width();
+    HsPage *page = scene->activePage();
     if (page == scene->pages().first()) {
         lowerBoundX = 0;
     }
-    qreal upperBoundX = pageRect.width() - widgetRect.width() / 2 - 10;
+
+    //Widget can be moved over the pages right border if not in the last page when maximum amount
+    //of pages exist. Widget cannot cross the lastest page's right border at all.
+    QRectF pageRect = HsGui::idleView()->rect();
+    qreal upperBoundX = pageRect.width() + widgetRect.width();
     if (page == scene->pages().last() && scene->pages().count() == scene->maximumPageCount()) {
         upperBoundX = pageRect.width() - widgetRect.width();
     }
 
+    //Widget cannot cross over top or bottom edges of the page.
+    /* if using ItemClipsChildrenToShape-flag in widgethost then
+       setPos does not update position here, however setGeometry does it, QT bug?
+    */
     qreal widgetX = qBound(lowerBoundX, widgetRect.x(), upperBoundX);
     qreal widgetY = qBound(qreal(64), widgetRect.y(), pageRect.height() - widgetRect.height());
+    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() && widgetRect.x() < bounceFeedbackEffectDistance ) ||
         (page == scene->pages().last() && scene->pages().count() == scene->maximumPageCount()
-         && widgetRect.x()+ widgetRect.width() > pageRect.width()-3)) {
-            HbInstantFeedback::play(HbFeedback::Basic);
+         && widgetRect.x()+ widgetRect.width() > pageRect.width() - bounceFeedbackEffectDistance)) {
+             HbInstantFeedback::play(HsConfiguration::widgetMoveBlockedFeedbackType());
             // TODO: use code below when Orbit has updated ContinuousFeedback API
             //if (!mContinuousFeedback->isPlaying()) {
             //    mContinuousFeedback->play();
@@ -1321,27 +1369,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 +1403,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 +1429,7 @@
 {
     Q_UNUSED(watched)
     Q_UNUSED(filtered)
+    filtered = true;
 
     mDeltaX = event->scenePos().x() - event->buttonDownScenePos(Qt::LeftButton).x();
 
@@ -1529,7 +1564,7 @@
             }
         }
         scene->setActivePageIndex(pageIndex);
-        startPageChangeAnimation(pageIndex, 200);
+        startPageChangeAnimation(pageIndex, HsConfiguration::pageChangeAnimationDuration());
     }
     else {
         scene->setActivePageIndex(pageIndex);
@@ -1542,14 +1577,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();
     }
 }
@@ -1566,6 +1603,25 @@
     }
 }
 
+/*!
+    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
--- a/homescreenapp/stateplugins/hshomescreenstateplugin/src/hsidlewidget.cpp	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/src/hsidlewidget.cpp	Thu May 27 12:46:08 2010 +0300
@@ -31,7 +31,7 @@
 #include "hstrashbinwidget.h"
 #include "hspageindicator.h"
 #include "hsdocumentloader.h"
-#include "hshomescreenstatecommon.h"
+#include "hsconfiguration.h"
 
 namespace
 {
@@ -111,7 +111,7 @@
     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());
+    mSceneLayer->resize(2 * rect.width() + HsConfiguration::bounceEffect(), rect.height());
     HbWidget::setGeometry(rect);
 }
 
--- a/homescreenapp/stateplugins/hshomescreenstateplugin/src/hsloadscenestate.cpp	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/src/hsloadscenestate.cpp	Thu May 27 12:46:08 2010 +0300
@@ -56,5 +56,5 @@
 {
     HsScene::instance()->load();
     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	Thu May 27 12:46:08 2010 +0300
@@ -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	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/src/hsselectbackgroundstate.cpp	Thu May 27 12:46:08 2010 +0300
@@ -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	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/hsmenuworkerstateplugin.pro	Thu May 27 12:46:08 2010 +0300
@@ -25,7 +25,8 @@
 LIBS += -lhsdomainmodel \
         -lhsmenuserviceprovider \
         -lhsutils \
-        -lcaclient
+        -lcaclient \
+        -lcasoftwareregistry
 
 DEPENDPATH += ./inc \
     ./src
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/hsmenuworkerstateplugin.qrc	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/hsmenuworkerstateplugin.qrc	Thu May 27 12:46:08 2010 +0300
@@ -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/hsmenustates_global.h	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsmenustates_global.h	Thu May 27 12:46:08 2010 +0300
@@ -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	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsmenuworkerstate.h	Thu May 27 12:46:08 2010 +0300
@@ -37,6 +37,10 @@
     HsMenuWorkerState(QState *parent = 0);
 
     virtual ~HsMenuWorkerState();
+    
+signals:
+
+    void reset();    
 
 private:
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsviewappdetailsstate.h	Thu May 27 12:46:08 2010 +0300
@@ -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_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/resource/hsdetailsdialog.docml	Thu May 27 12:46:08 2010 +0300
@@ -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	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsaddappstocollectionstate.cpp	Thu May 27 12:46:08 2010 +0300
@@ -472,7 +472,7 @@
     if (!mListFinishedEntered) {
         mListFinishedEntered = true;
 
-		if (finishedAction != mListDialog->actions().value(1)) {
+        if (finishedAction != mListDialog->actions().value(0)) {
             int itemId = mListDialog->getItemId();
             if (itemId) {
                 if (mActionType == ViaAllViewOptionMenuType) {
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hscollectionnamedialog.cpp	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hscollectionnamedialog.cpp	Thu May 27 12:46:08 2010 +0300
@@ -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/hscollectionslistdialog.cpp	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hscollectionslistdialog.cpp	Thu May 27 12:46:08 2010 +0300
@@ -79,10 +79,6 @@
     delete mModel;
 }
 
-
-#ifdef COVERAGE_MEASUREMENT
-#pragma CTC SKIP // Reason: Modal inputdialog open
-#endif //COVERAGE_MEASUREMENT
 /*!
  Executes dialog.
  \retval Selected action.
@@ -92,11 +88,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 +98,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
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsmenuworkerstate.cpp	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsmenuworkerstate.cpp	Thu May 27 12:46:08 2010 +0300
@@ -26,6 +26,7 @@
 #include "hsarrangestate.h"
 #include "hspreviewhswidgetstate.h"
 #include "hsviewappsettingsstate.h"
+#include "hsviewappdetailsstate.h"
 
 /*!
  \class HsMenuWorkerState
@@ -103,9 +104,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 +132,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;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsviewappdetailsstate.cpp	Thu May 27 12:46:08 2010 +0300
@@ -0,0 +1,182 @@
+/*
+* 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()]);
+    if(detailMap[CaSoftwareRegistry::componentDriveInfoKey()] == "C:")
+        memoryLabel->setPlainText(QString("%1 txt_applib_dialog_1_device_memory").arg(detailMap[CaSoftwareRegistry::componentDriveInfoKey()]));
+    else if (detailMap[CaSoftwareRegistry::componentDriveInfoKey()] == "E:")
+        memoryLabel->setPlainText(QString("%1 txt_applib_dialog_1_mass_storage").arg(detailMap[CaSoftwareRegistry::componentDriveInfoKey()]));
+    else if (detailMap[CaSoftwareRegistry::componentDriveInfoKey()] == "F:")
+        memoryLabel->setPlainText(QString("%1 txt_applib_dialog_1_memory_card").arg(detailMap[CaSoftwareRegistry::componentDriveInfoKey()]));
+    else
+        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	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/widgetplugins/hsclockwidgetplugin/hsclockwidgetplugin.pro	Thu May 27 12:46:08 2010 +0300
@@ -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	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/widgetplugins/hsclockwidgetplugin/inc/hsclockwidget.h	Thu May 27 12:46:08 2010 +0300
@@ -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	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/widgetplugins/hsclockwidgetplugin/src/hsanalogclockwidget.cpp	Thu May 27 12:46:08 2010 +0300
@@ -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	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/widgetplugins/hsclockwidgetplugin/src/hsdigitalclockwidget.cpp	Thu May 27 12:46:08 2010 +0300
@@ -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/src/hsshortcutwidget.cpp	Fri May 14 15:43:04 2010 +0300
+++ b/homescreenapp/widgetplugins/hsshortcutwidgetplugin/src/hsshortcutwidget.cpp	Thu May 27 12:46:08 2010 +0300
@@ -31,6 +31,7 @@
 #include "caservice.h"
 #include "canotifier.h"
 #include "caquery.h"
+#include "hsconfiguration.h"
 
 /*!
     \class HsShortcutWidget
@@ -209,7 +210,7 @@
         return;
     }
 
-    HbInstantFeedback::play(HbFeedback::BasicItem);
+    HbInstantFeedback::play(HsConfiguration::shortcutWidgetTapFeedbackType());
     
     if (mCaEntryRole == ItemEntryRole) {
         CaService::instance()->executeCommand(mCaEntryId);
--- a/taskswitcherapp/taskswitcherapp.pro	Fri May 14 15:43:04 2010 +0300
+++ b/taskswitcherapp/taskswitcherapp.pro	Thu May 27 12:46:08 2010 +0300
@@ -18,18 +18,22 @@
 
 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 += ../../homescreensrv/tstaskmonitor
 }
 
-coverage {
-    SUBDIRS += ..\..\homescreensrv\activityfw
-    SUBDIRS += ..\..\homescreensrv\hsappkeyhandler
+tests {
+    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/activityfw/tsutils/tsrc
 }
 
 symbian:include(rom.pri)
--- a/taskswitcherapp/tsdevicedialogplugin/inc/tsdevicedialogplugin.h	Fri May 14 15:43:04 2010 +0300
+++ b/taskswitcherapp/tsdevicedialogplugin/inc/tsdevicedialogplugin.h	Thu May 27 12:46:08 2010 +0300
@@ -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	Fri May 14 15:43:04 2010 +0300
+++ b/taskswitcherapp/tsdevicedialogplugin/inc/tsentrymodelitem.h	Thu May 27 12:46:08 2010 +0300
@@ -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	Fri May 14 15:43:04 2010 +0300
+++ b/taskswitcherapp/tsdevicedialogplugin/inc/tsmodel.h	Thu May 27 12:46:08 2010 +0300
@@ -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	Fri May 14 15:43:04 2010 +0300
+++ b/taskswitcherapp/tsdevicedialogplugin/resource/layout.docml	Thu May 27 12:46:08 2010 +0300
@@ -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	Fri May 14 15:43:04 2010 +0300
+++ b/taskswitcherapp/tsdevicedialogplugin/src/tsdevicedialogplugin.cpp	Thu May 27 12:46:08 2010 +0300
@@ -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,4 @@
     return mError;
 }
 
-void TsDeviceDialogPlugin::activated(QModelIndex index)
-{
-    if (!mLongPressed) {
-        emit activate(index);
-    }
-}
-
-void TsDeviceDialogPlugin::pressed()
-{
-    mLongPressed = false;
-}
-
-void TsDeviceDialogPlugin::longPressed()
-{
-    mLongPressed = true;
-}
-
 Q_EXPORT_PLUGIN2(tsdevicedialogplugin, TsDeviceDialogPlugin)
--- a/taskswitcherapp/tsdevicedialogplugin/src/tsentrymodelitem.cpp	Fri May 14 15:43:04 2010 +0300
+++ b/taskswitcherapp/tsdevicedialogplugin/src/tsentrymodelitem.cpp	Thu May 27 12:46:08 2010 +0300
@@ -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,18 @@
 {
     switch (role) {
         case Qt::DisplayRole:
-            return QVariant(mEntry->text());
+            return QVariant(mEntry->name());
         case Qt::DecorationRole:
-            return QVariant(mEntry->makeIcon(mSize));
+            {
+                QPixmap icon = mEntry->icon();
+                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 +77,7 @@
 */
 void TsEntryModelItem::close()
 {
-    mService.executeCommand(mEntry->id(), QString("close"));
+    mEntry->close();
 }
 
 /*!
@@ -81,15 +85,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	Fri May 14 15:43:04 2010 +0300
+++ b/taskswitcherapp/tsdevicedialogplugin/src/tsmodel.cpp	Thu May 27 12:46:08 2010 +0300
@@ -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	Fri May 14 15:43:04 2010 +0300
+++ b/taskswitcherapp/tsdevicedialogplugin/tsdevicedialogplugin.pro	Thu May 27 12:46:08 2010 +0300
@@ -43,7 +43,7 @@
 INCLUDEPATH += . \
                ./inc \
 
-LIBS +=     -lcaclient           
+LIBS +=     -ltstaskmonitorclient
             
 TRANSLATIONS = taskswitcher.ts