Revision: 201037
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Mon, 04 Oct 2010 00:07:25 +0300
changeset 96 458d8c8d9580
parent 92 6727c5d0afc7
Revision: 201037 Kit: 201039
homescreenapp/examples/batterywidgetplugin/batterywidgetplugin.pro
homescreenapp/examples/contentpublishclient/contentpublishclient.pro
homescreenapp/examples/helloworldwidgetplugin/helloworldwidgetplugin.pro
homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin.pro
homescreenapp/examples/localisedhellowidgetplugin/sis/localisedhellowidgetplugin.pkg
homescreenapp/examples/minibrowserwidgetplugin/minibrowserwidgetplugin.pro
homescreenapp/hsapplication/conf/confml/CI_homescreendb.confml
homescreenapp/hsapplication/conf/confml/homescreendb.confml
homescreenapp/hsapplication/hsapplication.pro
homescreenapp/hsapplication/inc/hsstatemachine.h
homescreenapp/hsapplication/resource/resource_emulator/homescreen.db
homescreenapp/hsapplication/resource/resource_win/homescreen.db
homescreenapp/hsapplication/src/hsstatemachine.cpp
homescreenapp/hsapplication/tsrc/t_hsapplication/installs_symbian.pri
homescreenapp/hsapplication/tsrc/t_hsapplication/installs_win32.pri
homescreenapp/hsapplication/tsrc/t_hsapplication/mockstateplugins/inc/mockapplibrarystate.h
homescreenapp/hsapplication/tsrc/t_hsapplication/mockstateplugins/inc/mockbackuprestorestate.h
homescreenapp/hsapplication/tsrc/t_hsapplication/mockstateplugins/inc/mockidlestate.h
homescreenapp/hsapplication/tsrc/t_hsapplication/mockstateplugins/inc/mockloadscenestate.h
homescreenapp/hsapplication/tsrc/t_hsapplication/mockstateplugins/inc/mockmenuworkerstate.h
homescreenapp/hsapplication/tsrc/t_hsapplication/mockstateplugins/inc/mockrootstate.h
homescreenapp/hsapplication/tsrc/t_hsapplication/mockstateplugins/inc/mockstateplugins.h
homescreenapp/hsapplication/tsrc/t_hsapplication/mockstateplugins/installs_win32.pri
homescreenapp/hsapplication/tsrc/t_hsapplication/mockstateplugins/mockstateplugins.pri
homescreenapp/hsapplication/tsrc/t_hsapplication/mockstateplugins/mockstateplugins.pro
homescreenapp/hsapplication/tsrc/t_hsapplication/mockstateplugins/resource/mockstateplugins.xml
homescreenapp/hsapplication/tsrc/t_hsapplication/mockstateplugins/src/mockstateplugins.cpp
homescreenapp/hsapplication/tsrc/t_hsapplication/sis/t_hsapplication.pkg
homescreenapp/hsapplication/tsrc/t_hsapplication/sis/t_hsapplication_sisx.bat
homescreenapp/hsapplication/tsrc/t_hsapplication/t_hsapplication.pro
homescreenapp/hsapplication/tsrc/t_hsapplication/t_hsapplicationexe/inc/t_hsapplication.h
homescreenapp/hsapplication/tsrc/t_hsapplication/t_hsapplicationexe/installs_symbian.pri
homescreenapp/hsapplication/tsrc/t_hsapplication/t_hsapplicationexe/installs_win32.pri
homescreenapp/hsapplication/tsrc/t_hsapplication/t_hsapplicationexe/src/hsconfiguration_mock.cpp
homescreenapp/hsapplication/tsrc/t_hsapplication/t_hsapplicationexe/src/hscontentservice_mock.cpp
homescreenapp/hsapplication/tsrc/t_hsapplication/t_hsapplicationexe/src/hsgui_mock.cpp
homescreenapp/hsapplication/tsrc/t_hsapplication/t_hsapplicationexe/src/hspage_mock.cpp
homescreenapp/hsapplication/tsrc/t_hsapplication/t_hsapplicationexe/src/hspagevisual_mock.cpp
homescreenapp/hsapplication/tsrc/t_hsapplication/t_hsapplicationexe/src/hsscene_mock.cpp
homescreenapp/hsapplication/tsrc/t_hsapplication/t_hsapplicationexe/src/hsspinnerdialog_mock.cpp
homescreenapp/hsapplication/tsrc/t_hsapplication/t_hsapplicationexe/src/hswallpaper_mock.cpp
homescreenapp/hsapplication/tsrc/t_hsapplication/t_hsapplicationexe/src/hswidgetcomponent_mock.cpp
homescreenapp/hsapplication/tsrc/t_hsapplication/t_hsapplicationexe/src/hswidgetcomponentregistry_mock.cpp
homescreenapp/hsapplication/tsrc/t_hsapplication/t_hsapplicationexe/src/hswidgethost_mock.cpp
homescreenapp/hsapplication/tsrc/t_hsapplication/t_hsapplicationexe/src/hswidgethostvisual_mock.cpp
homescreenapp/hsapplication/tsrc/t_hsapplication/t_hsapplicationexe/src/t_hsapplication.cpp
homescreenapp/hsapplication/tsrc/t_hsapplication/t_hsapplicationexe/src/t_hsrecoverymanager.cpp
homescreenapp/hsapplication/tsrc/t_hsapplication/t_hsapplicationexe/src/t_hsstatemachine.cpp
homescreenapp/hsapplication/tsrc/t_hsapplication/t_hsapplicationexe/src/testhomescreen.cpp
homescreenapp/hsapplication/tsrc/t_hsapplication/t_hsapplicationexe/src/testhomescreenclientserviceprovider.cpp
homescreenapp/hsapplication/tsrc/t_hsapplication/t_hsapplicationexe/t_hsapplicationexe.pri
homescreenapp/hsapplication/tsrc/t_hsapplication/t_hsapplicationexe/t_hsapplicationexe.pro
homescreenapp/hsapplication/tsrc/tsrc.pro
homescreenapp/hsapplicationlauncher/group/hsapplicationlauncher.mmp
homescreenapp/hsapplicationlauncher/src/hsapplicationlauncher.cpp
homescreenapp/hsapplicationlauncher/tsrc/t_hsapplicationlauncher/inc/t_hsapplicationlauncher.h
homescreenapp/hsapplicationlauncher/tsrc/t_hsapplicationlauncher/sis/t_hsapplicationlauncher.pkg
homescreenapp/hsapplicationlauncher/tsrc/t_hsapplicationlauncher/sis/t_hsapplicationlauncher_sisx.bat
homescreenapp/hsapplicationlauncher/tsrc/t_hsapplicationlauncher/src/rprocess_mock.cpp
homescreenapp/hsapplicationlauncher/tsrc/t_hsapplicationlauncher/src/rssmstateawaresession_mock.cpp
homescreenapp/hsapplicationlauncher/tsrc/t_hsapplicationlauncher/src/t_hsapplicationlauncher.cpp
homescreenapp/hsapplicationlauncher/tsrc/t_hsapplicationlauncher/t_hsapplicationlauncher.pri
homescreenapp/hsapplicationlauncher/tsrc/t_hsapplicationlauncher/t_hsapplicationlauncher.pro
homescreenapp/hsapplicationlauncher/tsrc/tsrc.pro
homescreenapp/hsdomainmodel/bwins/hsdomainmodelu.def
homescreenapp/hsdomainmodel/eabi/hsdomainmodelu.def
homescreenapp/hsdomainmodel/hsdomainmodel.pri
homescreenapp/hsdomainmodel/hsdomainmodel.pro
homescreenapp/hsdomainmodel/inc/hsbackuprestoreactivecallback.h
homescreenapp/hsdomainmodel/inc/hsconfiguration.h
homescreenapp/hsdomainmodel/inc/hspage.h
homescreenapp/hsdomainmodel/inc/hspagenewwidgetlayout.h
homescreenapp/hsdomainmodel/inc/hswidgetpositioningonwidgetadd.h
homescreenapp/hsdomainmodel/src/hsbackuprestoreactivecallback.cpp
homescreenapp/hsdomainmodel/src/hsconfiguration.cpp
homescreenapp/hsdomainmodel/src/hscontentservice.cpp
homescreenapp/hsdomainmodel/src/hspage.cpp
homescreenapp/hsdomainmodel/src/hspagenewwidgetlayout.cpp
homescreenapp/hsdomainmodel/src/hswidgethostvisual.cpp
homescreenapp/hsdomainmodel/src/hswidgetpositioningonwidgetadd.cpp
homescreenapp/hsdomainmodel/tsrc/mockwidget/inc/mockwidget.h
homescreenapp/hsdomainmodel/tsrc/mockwidget/src/mockwidget.cpp
homescreenapp/hsdomainmodel/tsrc/mockwidgetplugin/inc/mockwidgetplugin.h
homescreenapp/hsdomainmodel/tsrc/mockwidgetplugin/installs_win32.pri
homescreenapp/hsdomainmodel/tsrc/mockwidgetplugin/mockwidgetplugin.pri
homescreenapp/hsdomainmodel/tsrc/mockwidgetplugin/mockwidgetplugin.pro
homescreenapp/hsdomainmodel/tsrc/mockwidgetplugin/resource/mockwidgetplugin.qm
homescreenapp/hsdomainmodel/tsrc/mockwidgetplugin/resource/mockwidgetplugin.ts
homescreenapp/hsdomainmodel/tsrc/mockwidgetplugin/resource/mockwidgetplugin.xml
homescreenapp/hsdomainmodel/tsrc/mockwidgetplugin/src/mockwidgetplugin.cpp
homescreenapp/hsdomainmodel/tsrc/mockwidgetplugincheater/inc/mockwidgetcheater.h
homescreenapp/hsdomainmodel/tsrc/mockwidgetplugincheater/inc/mockwidgetplugincheater.h
homescreenapp/hsdomainmodel/tsrc/mockwidgetplugincheater/installs_win32.pri
homescreenapp/hsdomainmodel/tsrc/mockwidgetplugincheater/mockwidgetplugincheater.pri
homescreenapp/hsdomainmodel/tsrc/mockwidgetplugincheater/mockwidgetplugincheater.pro
homescreenapp/hsdomainmodel/tsrc/mockwidgetplugincheater/resource/mockwidgetplugincheater.qm
homescreenapp/hsdomainmodel/tsrc/mockwidgetplugincheater/resource/mockwidgetplugincheater.ts
homescreenapp/hsdomainmodel/tsrc/mockwidgetplugincheater/resource/mockwidgetplugincheater.xml
homescreenapp/hsdomainmodel/tsrc/mockwidgetplugincheater/src/mockwidgetcheater.cpp
homescreenapp/hsdomainmodel/tsrc/mockwidgetplugincheater/src/mockwidgetplugincheater.cpp
homescreenapp/hsdomainmodel/tsrc/mockwidgetplugintoobig/inc/mockwidgetplugintoobig.h
homescreenapp/hsdomainmodel/tsrc/mockwidgetplugintoobig/installs_win32.pri
homescreenapp/hsdomainmodel/tsrc/mockwidgetplugintoobig/mockwidgetplugintoobig.pri
homescreenapp/hsdomainmodel/tsrc/mockwidgetplugintoobig/mockwidgetplugintoobig.pro
homescreenapp/hsdomainmodel/tsrc/mockwidgetplugintoobig/resource/mockwidgetplugintoobig.xml
homescreenapp/hsdomainmodel/tsrc/mockwidgetplugintoobig/src/mockwidgetplugintoobig.cpp
homescreenapp/hsdomainmodel/tsrc/mockwidgetplugintoosmall/inc/mockwidgetplugintoosmall.h
homescreenapp/hsdomainmodel/tsrc/mockwidgetplugintoosmall/installs_win32.pri
homescreenapp/hsdomainmodel/tsrc/mockwidgetplugintoosmall/mockwidgetplugintoosmall.pri
homescreenapp/hsdomainmodel/tsrc/mockwidgetplugintoosmall/mockwidgetplugintoosmall.pro
homescreenapp/hsdomainmodel/tsrc/mockwidgetplugintoosmall/resource/mockwidgetplugintoosmall.xml
homescreenapp/hsdomainmodel/tsrc/mockwidgetplugintoosmall/src/mockwidgetplugintoosmall.cpp
homescreenapp/hsdomainmodel/tsrc/sis/t_hsdomainmodel.pkg
homescreenapp/hsdomainmodel/tsrc/sis/t_hsdomainmodel_sisx.bat
homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/createdatabase.sql
homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/hsdomainmodeltest.db
homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/hsdomainmodeltest.sql
homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/inc/t_hsdomainmodel.h
homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/installs_symbian.pri
homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/installs_win32.pri
homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/resource/default_landscape.png
homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/resource/default_portrait.png
homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/abclient_mock.cpp
homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/hspropertyanimationwrapper_mock.cpp
homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/t_hsbackuprestoreactivecallback.cpp
homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/t_hsbackuprestoreobserver.cpp
homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/t_hsconfiguration.cpp
homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/t_hsdatabase.cpp
homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/t_hsdocumentloader.cpp
homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/t_hsdomainmodel.cpp
homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/t_hsgui.cpp
homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/t_hshostedwidgetfactory.cpp
homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/t_hsidlewidget.cpp
homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/t_hspage.cpp
homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/t_hspagenewwidgetlayout.cpp
homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/t_hspagetoucharea.cpp
homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/t_hsscene.cpp
homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/t_hswallpaper.cpp
homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/t_hswallpaperloader.cpp
homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/t_hswallpaperloaderthread.cpp
homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/t_hswidgetcomponent.cpp
homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/t_hswidgetcomponentdescriptor.cpp
homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/t_hswidgetcomponentregistry.cpp
homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/t_hswidgethost.cpp
homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/t_hswidgethostvisual.cpp
homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/t_hswidgetpositioningonwidgetadd.cpp
homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/t_hswidgettoucharea.cpp
homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/testcontentservice.cpp
homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/testshortcutservice.cpp
homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/t_hsdomainmodel.pri
homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/t_hsdomainmodel.pro
homescreenapp/hsdomainmodel/tsrc/tsrc.pro
homescreenapp/hshomescreenclientplugin/hshomescreenclientplugin.pro
homescreenapp/hshomescreenclientplugin/tsrc/t_hshomescreenclientplugin/decision_cov_emulator.pl
homescreenapp/hshomescreenclientplugin/tsrc/t_hshomescreenclientplugin/inc/t_hshomescreenclientplugin.h
homescreenapp/hshomescreenclientplugin/tsrc/t_hshomescreenclientplugin/src/t_hshomescreenclientplugin.cpp
homescreenapp/hshomescreenclientplugin/tsrc/t_hshomescreenclientplugin/t_hshomescreenclientplugin.pro
homescreenapp/hsmenuclientplugin/hsmenuclientplugin.pro
homescreenapp/hsmenuclientplugin/src/hsmenuclient.cpp
homescreenapp/hsmenuclientplugin/tsrc/t_hsmenuclientplugin/inc/caservice_p.h
homescreenapp/hsmenuclientplugin/tsrc/t_hsmenuclientplugin/inc/t_hsmenuclientplugin.h
homescreenapp/hsmenuclientplugin/tsrc/t_hsmenuclientplugin/src/caservice.cpp
homescreenapp/hsmenuclientplugin/tsrc/t_hsmenuclientplugin/src/t_hsmenuclientplugin.cpp
homescreenapp/hsmenuclientplugin/tsrc/t_hsmenuclientplugin/t_hsmenuclientplugin.pri
homescreenapp/hsmenuclientplugin/tsrc/t_hsmenuclientplugin/t_hsmenuclientplugin.pro
homescreenapp/hsmenuclientplugin/tsrc/tsrc.pro
homescreenapp/hsutils/bwins/hsutilsu.def
homescreenapp/hsutils/eabi/hsutilsu.def
homescreenapp/hsutils/hsutils.pro
homescreenapp/hsutils/inc/hsimagefetcherclient.h
homescreenapp/hsutils/inc/hsimagehandlingclient.h
homescreenapp/hsutils/inc/hsmenudialogfactory.h
homescreenapp/hsutils/inc/hsmenuevent.h
homescreenapp/hsutils/inc/hsmenueventfactory.h
homescreenapp/hsutils/inc/hswidgetpositioningonwidgetadd.h
homescreenapp/hsutils/src/hsimagefetcherclient.cpp
homescreenapp/hsutils/src/hsimagehandlingclient.cpp
homescreenapp/hsutils/src/hsmenudialogfactory.cpp
homescreenapp/hsutils/src/hsmenueventfactory.cpp
homescreenapp/hsutils/src/hswidgetpositioningonwidgetadd.cpp
homescreenapp/hsutils/src/hswidgetpositioningonwidgetmove.cpp
homescreenapp/hsutils/tsrc/t_hsutils/inc/mocksysteminfo.h
homescreenapp/hsutils/tsrc/t_hsutils/inc/t_hsutils.h
homescreenapp/hsutils/tsrc/t_hsutils/installs_win32.pri
homescreenapp/hsutils/tsrc/t_hsutils/sis/t_hsutils.pkg
homescreenapp/hsutils/tsrc/t_hsutils/sis/t_hsutils_sisx.bat
homescreenapp/hsutils/tsrc/t_hsutils/src/mocksysteminfo.cpp
homescreenapp/hsutils/tsrc/t_hsutils/src/t_hsdeviceinfolistener.cpp
homescreenapp/hsutils/tsrc/t_hsutils/src/t_hsmenudialogfactory.cpp
homescreenapp/hsutils/tsrc/t_hsutils/src/t_hsmessageboxwrapper.cpp
homescreenapp/hsutils/tsrc/t_hsutils/src/t_hspageindicator.cpp
homescreenapp/hsutils/tsrc/t_hsutils/src/t_hspropertyanimationwrapper.cpp
homescreenapp/hsutils/tsrc/t_hsutils/src/t_hssnapline.cpp
homescreenapp/hsutils/tsrc/t_hsutils/src/t_hsspinnerdialog.cpp
homescreenapp/hsutils/tsrc/t_hsutils/src/t_hstitleresolver.cpp
homescreenapp/hsutils/tsrc/t_hsutils/src/t_hsutils.cpp
homescreenapp/hsutils/tsrc/t_hsutils/src/t_hsutils_menuevent.cpp
homescreenapp/hsutils/tsrc/t_hsutils/src/t_hswidgetpositioningonorientationchange.cpp
homescreenapp/hsutils/tsrc/t_hsutils/src/t_hswidgetpositioningonwidgetmove.cpp
homescreenapp/hsutils/tsrc/t_hsutils/src/t_trashbinwidget.cpp
homescreenapp/hsutils/tsrc/t_hsutils/t_hsutils.pri
homescreenapp/hsutils/tsrc/t_hsutils/t_hsutils.pro
homescreenapp/hsutils/tsrc/tsrc.pro
homescreenapp/hswidgetuninstaller/hswidgetuninstaller.pro
homescreenapp/hswidgetuninstaller/tsrc/t_hswidgetuninstaller/empty.manifest
homescreenapp/hswidgetuninstaller/tsrc/t_hswidgetuninstaller/fail_new.manifest
homescreenapp/hswidgetuninstaller/tsrc/t_hswidgetuninstaller/inc/t_hswidgetuninstaller.h
homescreenapp/hswidgetuninstaller/tsrc/t_hswidgetuninstaller/inc/xqrequestinfo_mock.h
homescreenapp/hswidgetuninstaller/tsrc/t_hswidgetuninstaller/inc/xqservicerequest_mock.h
homescreenapp/hswidgetuninstaller/tsrc/t_hswidgetuninstaller/installs_symbian.pri
homescreenapp/hswidgetuninstaller/tsrc/t_hswidgetuninstaller/installs_win32.pri
homescreenapp/hswidgetuninstaller/tsrc/t_hswidgetuninstaller/ok_new.manifest
homescreenapp/hswidgetuninstaller/tsrc/t_hswidgetuninstaller/ok_old.manifest
homescreenapp/hswidgetuninstaller/tsrc/t_hswidgetuninstaller/sis/t_hswidgetinstaller.pkg
homescreenapp/hswidgetuninstaller/tsrc/t_hswidgetuninstaller/sis/t_hswidgetinstaller_sisx.bat
homescreenapp/hswidgetuninstaller/tsrc/t_hswidgetuninstaller/src/t_hswidgetuninstaller.cpp
homescreenapp/hswidgetuninstaller/tsrc/t_hswidgetuninstaller/t_hswidgetuninstaller.pri
homescreenapp/hswidgetuninstaller/tsrc/t_hswidgetuninstaller/t_hswidgetuninstaller.pro
homescreenapp/hswidgetuninstaller/tsrc/t_hswidgetuninstaller/version10.manifest
homescreenapp/hswidgetuninstaller/tsrc/t_hswidgetuninstaller/version12.manifest
homescreenapp/hswidgetuninstaller/tsrc/tsrc.pro
homescreenapp/rom/bld.inf
homescreenapp/rom/homescreenapp_core.iby
homescreenapp/serviceproviders/hsmenuserviceprovider/bwins/hsmenuserviceprovideru.def
homescreenapp/serviceproviders/hsmenuserviceprovider/eabi/hsmenuserviceprovideru.def
homescreenapp/serviceproviders/hsmenuserviceprovider/hsmenuserviceprovider.pro
homescreenapp/serviceproviders/hsmenuserviceprovider/inc/hsmenuservice.h
homescreenapp/serviceproviders/hsmenuserviceprovider/src/hsmenuentryremovedhandler.cpp
homescreenapp/serviceproviders/hsmenuserviceprovider/src/hsmenuservice.cpp
homescreenapp/serviceproviders/hsmenuserviceprovider/tsrc/t_hsmenuserviceprovider/inc/caentry.h
homescreenapp/serviceproviders/hsmenuserviceprovider/tsrc/t_hsmenuserviceprovider/inc/caicondescription.h
homescreenapp/serviceproviders/hsmenuserviceprovider/tsrc/t_hsmenuserviceprovider/inc/caitemmodel.h
homescreenapp/serviceproviders/hsmenuserviceprovider/tsrc/t_hsmenuserviceprovider/inc/canotifier.h
homescreenapp/serviceproviders/hsmenuserviceprovider/tsrc/t_hsmenuserviceprovider/inc/canotifierfilter.h
homescreenapp/serviceproviders/hsmenuserviceprovider/tsrc/t_hsmenuserviceprovider/inc/caquery.h
homescreenapp/serviceproviders/hsmenuserviceprovider/tsrc/t_hsmenuserviceprovider/inc/caservice.h
homescreenapp/serviceproviders/hsmenuserviceprovider/tsrc/t_hsmenuserviceprovider/inc/t_hsmenuentryremovedcallback.h
homescreenapp/serviceproviders/hsmenuserviceprovider/tsrc/t_hsmenuserviceprovider/inc/t_hsmenuserviceprovider.h
homescreenapp/serviceproviders/hsmenuserviceprovider/tsrc/t_hsmenuserviceprovider/installs_unix.pri
homescreenapp/serviceproviders/hsmenuserviceprovider/tsrc/t_hsmenuserviceprovider/installs_win32.pri
homescreenapp/serviceproviders/hsmenuserviceprovider/tsrc/t_hsmenuserviceprovider/src/t_hsmenuentryremovedhandler.cpp
homescreenapp/serviceproviders/hsmenuserviceprovider/tsrc/t_hsmenuserviceprovider/src/t_menuitemmodel.cpp
homescreenapp/serviceproviders/hsmenuserviceprovider/tsrc/t_hsmenuserviceprovider/src/t_menuservice.cpp
homescreenapp/serviceproviders/hsmenuserviceprovider/tsrc/t_hsmenuserviceprovider/t_hsmenuserviceprovider.pri
homescreenapp/serviceproviders/hsmenuserviceprovider/tsrc/t_hsmenuserviceprovider/t_hsmenuserviceprovider.pro
homescreenapp/serviceproviders/hsmenuserviceprovider/tsrc/tsrc.pro
homescreenapp/stateplugins/hsapplibrarystateplugin/conf/CI_hsapplibrary.confml
homescreenapp/stateplugins/hsapplibrarystateplugin/hsapplibrarystateplugin.pro
homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsallappsstate.h
homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsapplibrarystate.h
homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsbaseviewstate.h
homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hscollectionstate.h
homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsinstalledappsstate.h
homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hslistviewitem.h
homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hssearchfilterproxymodel.h
homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hssearchview.h
homescreenapp/stateplugins/hsapplibrarystateplugin/resource/emptylabeledview.docml
homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsallappsstate.cpp
homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsallcollectionsstate.cpp
homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsapplibrarystate.cpp
homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsbaseviewstate.cpp
homescreenapp/stateplugins/hsapplibrarystateplugin/src/hscollectionstate.cpp
homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsinstalledappsstate.cpp
homescreenapp/stateplugins/hsapplibrarystateplugin/src/hslistviewitem.cpp
homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsmainwindow.cpp
homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsoperatorhandler_p.cpp
homescreenapp/stateplugins/hsapplibrarystateplugin/src/hssearchfilterproxymodel.cpp
homescreenapp/stateplugins/hsapplibrarystateplugin/src/hssearchview.cpp
homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/inc/hscontentservice.h
homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/inc/t_hsaddtohomescreenmockstate.h
homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/inc/t_hscontentservice.h
homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/inc/t_hsmockmodel.h
homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/inc/t_hsproxymodeltestmockmodel.h
homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/src/t_hsaddtohomescreenmockstate.cpp
homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/src/t_hscontentservice.cpp
homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/src/t_hsmockmodel.cpp
homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_allappsstate/inc/t_allappsstate.h
homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_allappsstate/src/t_addmodeproxymodel.cpp
homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_allappsstate/src/t_allappsstate.cpp
homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_allappsstate/t_allappsstate.pri
homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_allappsstate/t_allappsstate.pro
homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_allcollectionsstate/inc/t_allcollectionsstate.h
homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_allcollectionsstate/src/t_allcollectionsstate.cpp
homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_allcollectionsstate/t_allcollectionsstate.pri
homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_allcollectionsstate/t_allcollectionsstate.pro
homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_applibrarystate/inc/t_applibrarystate.h
homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_applibrarystate/src/t_applibrarystate.cpp
homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_applibrarystate/t_applibrarystate.pri
homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_applibrarystate/t_applibrarystate.pro
homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_collectionsstate/inc/t_collectionsstate.h
homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_collectionsstate/src/t_collectionsstate.cpp
homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_collectionsstate/t_collectionsstate.pri
homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_collectionsstate/t_collectionsstate.pro
homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_installedappsstate/inc/t_installedappsstate.h
homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_installedappsstate/src/t_installedappsstate.cpp
homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_installedappsstate/t_installedappsstate.pri
homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_installedappsstate/t_installedappsstate.pro
homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_menuviewbuilder/inc/t_menuviewbuilder.h
homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_menuviewbuilder/src/t_menuviewbuilder.cpp
homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_menuviewbuilder/t_menuviewbuilder.pri
homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_menuviewbuilder/t_menuviewbuilder.pro
homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_searchviewbuilder/inc/t_searchviewbuilder.h
homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_searchviewbuilder/src/t_searchviewbuilder.cpp
homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_searchviewbuilder/t_searchviewbuilder.pri
homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_searchviewbuilder/t_searchviewbuilder.pro
homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/tsrc.pro
homescreenapp/stateplugins/hshomescreenstateplugin/hshomescreenstateplugin.pro
homescreenapp/stateplugins/hshomescreenstateplugin/inc/hsidlestate.h
homescreenapp/stateplugins/hshomescreenstateplugin/inc/hswallpaperselectionstate.h
homescreenapp/stateplugins/hshomescreenstateplugin/src/hsidlestate.cpp
homescreenapp/stateplugins/hshomescreenstateplugin/src/hswallpaperselectionstate.cpp
homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/foundicon.png
homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/inc/t_hshomescreenstateplugin.h
homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/inc/testwidget.h
homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/installs_win32.pri
homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/sis/t_hshomescreenstateplugin.pkg
homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/sis/t_hshomescreenstateplugin_sisx.bat
homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/src/hsbackuprestoreobserver_mock.cpp
homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/src/hsdatabase_mock.cpp
homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/src/hsgui_mock.cpp
homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/src/hsimagehandlingclient_mock.cpp
homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/src/hsmenuservice_mock.cpp
homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/src/hsmessageboxwrapper_mock.cpp
homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/src/hspage_mock.cpp
homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/src/hspropertyanimationwrapper_mock.cpp
homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/src/hsscene_mock.cpp
homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/src/hswallpaper_mock.cpp
homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/src/hswidgethost_mock.cpp
homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/src/t_hsbackuprestorestate.cpp
homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/src/t_hshomescreenmain.cpp
homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/src/t_hsidlestate.cpp
homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/src/t_hsloadscenestate.cpp
homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/src/t_hsrootstate.cpp
homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/src/t_hswallpaperselectionstate.cpp
homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/src/testwidget.cpp
homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/src/xqaiwgetimageclient_mock.cpp
homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/t_hshomescreenstateplugin.pri
homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/t_hshomescreenstateplugin.pro
homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/t_hshomescreenstateplugin.qrc
homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/wallpapers/default_landscape.png
homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/wallpapers/default_portrait.png
homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/tsrc.pro
homescreenapp/stateplugins/hsmenuworkerstateplugin/hsmenuworkerstateplugin.pro
homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsaddtohomescreenstate.h
homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsdeletecollectionitemstate.h
homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsdeletecollectionstate.h
homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsdialogcontroller.h
homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsinstallationlogstate.h
homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hspreviewhswidgetstate.h
homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsuinstallfailedstate.h
homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsuninstallitemstate.h
homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsviewappdetailsstate.h
homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsviewappsettingsstate.h
homescreenapp/stateplugins/hsmenuworkerstateplugin/resource/hsappchecklist.docml
homescreenapp/stateplugins/hsmenuworkerstateplugin/resource/hsarrangedialog.docml
homescreenapp/stateplugins/hsmenuworkerstateplugin/resource/hscollectionslistdialog.docml
homescreenapp/stateplugins/hsmenuworkerstateplugin/resource/hsinstallationlogdialog.docml
homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsaddtohomescreenstate.cpp
homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hscollectionnamedialog.cpp
homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsdeletecollectionitemstate.cpp
homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsdeletecollectionstate.cpp
homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsdialogcontroller.cpp
homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsinstallationlogstate.cpp
homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hspreviewhswidgetstate.cpp
homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsuinstallfailedstate.cpp
homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsuninstallitemstate.cpp
homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsviewappdetailsstate.cpp
homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsviewappsettingsstate.cpp
homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/data/DS_Snow.jad
homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/data/DS_Snow.jar
homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/data/MIDPTestIcons.jad
homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/data/MIDPTestIcons.jar
homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/inc/hscontentservice.h
homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/inc/hsshortcutservice.h
homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/inc/t_hscontentservice.h
homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/inc/t_hsmenuworkerstateplugin.h
homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/inc/t_hsshortcutservice.h
homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/inc/testwidget.h
homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/src/hsbackuprestoreobserver_mock.cpp
homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/src/hsdatabase_mock.cpp
homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/src/hsgui_mock.cpp
homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/src/hspage_mock.cpp
homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/src/hsscene_mock.cpp
homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/src/hswallpaper_mock.cpp
homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/src/hswidgethost_mock.cpp
homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/src/t_hsaddappstocollectionstate.cpp
homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/src/t_hsaddtohomescreenstate.cpp
homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/src/t_hsarrangestate.cpp
homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/src/t_hscollectionnamedialog.cpp
homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/src/t_hscollectionnamestate.cpp
homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/src/t_hscontentservice.cpp
homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/src/t_hsdeletecollectionitemstate.cpp
homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/src/t_hsdeletecollectionstate.cpp
homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/src/t_hsinstallationlogstate.cpp
homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/src/t_hsmenustates.cpp
homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/src/t_hsmenuworkerstate.cpp
homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/src/t_hspreviewhswidgetstate.cpp
homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/src/t_hsshortcutservice.cpp
homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/src/t_hsuinstallfailedstate.cpp
homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/src/t_hsuninstallitemstate.cpp
homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/src/t_hsviewappdetailsstate.cpp
homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/src/t_hsviewappsettingsstate.cpp
homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/src/testwidget.cpp
homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/t_hsmenuworkerstateplugin.pri
homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/t_hsmenuworkerstateplugin.pro
homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/tsrc.pro
homescreenapp/widgetplugins/hsclockwidgetplugin/hsclockwidgetplugin.pro
homescreenapp/widgetplugins/hsclockwidgetplugin/resource/hsclockwidgetplugin.manifest
homescreenapp/widgetplugins/hsclockwidgetplugin/resource/qtg_graf_hswidget_preview_clock.svg
homescreenapp/widgetplugins/hsclockwidgetplugin/resource/tclock.png
homescreenapp/widgetplugins/hsclockwidgetplugin/tsrc/t_hsclockwidgetplugin/inc/t_hsclockwidget.h
homescreenapp/widgetplugins/hsclockwidgetplugin/tsrc/t_hsclockwidgetplugin/installs_win32.pri
homescreenapp/widgetplugins/hsclockwidgetplugin/tsrc/t_hsclockwidgetplugin/sis/t_hsclockwidgetplugin.pkg
homescreenapp/widgetplugins/hsclockwidgetplugin/tsrc/t_hsclockwidgetplugin/sis/t_hsclockwidgetplugin_sisx.bat
homescreenapp/widgetplugins/hsclockwidgetplugin/tsrc/t_hsclockwidgetplugin/src/hsdatabase_mock.cpp
homescreenapp/widgetplugins/hsclockwidgetplugin/tsrc/t_hsclockwidgetplugin/src/t_hsanalogclockwidget.cpp
homescreenapp/widgetplugins/hsclockwidgetplugin/tsrc/t_hsclockwidgetplugin/src/t_hsclocksettingsnotifier.cpp
homescreenapp/widgetplugins/hsclockwidgetplugin/tsrc/t_hsclockwidgetplugin/src/t_hsclockwidget.cpp
homescreenapp/widgetplugins/hsclockwidgetplugin/tsrc/t_hsclockwidgetplugin/src/t_hsdigitalclockwidget.cpp
homescreenapp/widgetplugins/hsclockwidgetplugin/tsrc/t_hsclockwidgetplugin/t_hsclockwidgetplugin.pro
homescreenapp/widgetplugins/hsclockwidgetplugin/tsrc/t_hsclockwidgetplugin/t_hsclockwidgetplugin_symbian.pri
homescreenapp/widgetplugins/hsclockwidgetplugin/tsrc/t_hsclockwidgetplugin/t_hsclockwidgetplugin_win.pri
homescreenapp/widgetplugins/hsclockwidgetplugin/tsrc/tsrc.pro
homescreenapp/widgetplugins/hsshortcutwidgetplugin/hsshortcutwidgetplugin.pro
homescreenapp/widgetplugins/hsshortcutwidgetplugin/tsrc/t_hsshortcutwidget/inc/t_hsshortcutwidget.h
homescreenapp/widgetplugins/hsshortcutwidgetplugin/tsrc/t_hsshortcutwidget/sis/t_hsshortcutwidget.pkg
homescreenapp/widgetplugins/hsshortcutwidgetplugin/tsrc/t_hsshortcutwidget/sis/t_hsshortcutwidget_sisx.bat
homescreenapp/widgetplugins/hsshortcutwidgetplugin/tsrc/t_hsshortcutwidget/src/hsdatabase_mock.cpp
homescreenapp/widgetplugins/hsshortcutwidgetplugin/tsrc/t_hsshortcutwidget/src/mockshortcutservice.cpp
homescreenapp/widgetplugins/hsshortcutwidgetplugin/tsrc/t_hsshortcutwidget/src/t_hsshortcutwidget.cpp
homescreenapp/widgetplugins/hsshortcutwidgetplugin/tsrc/t_hsshortcutwidget/t_hsshortcutwidget.pri
homescreenapp/widgetplugins/hsshortcutwidgetplugin/tsrc/t_hsshortcutwidget/t_hsshortcutwidget.pro
homescreenapp/widgetplugins/hsshortcutwidgetplugin/tsrc/t_hsshortcutwidget/t_hsshortcutwidget_installs_win32.pri
homescreenapp/widgetplugins/hsshortcutwidgetplugin/tsrc/tsrc.pro
screensaver/devicedialogplugins/snsrdevicedialogplugin/snsrdevicedialogplugin.pro
screensaver/screensavermodel/screensavermodel.pro
screensaver/screensaverplugins/snsrbigclockscreensaverplugin/snsrbigclockscreensaverplugin.pro
screensaver/snsrdisplaycontrol_s60/group/snsrdisplaycontrolclient.mmp
screensaver/snsrdisplaycontrol_s60/group/snsrdisplaycontrolserver.mmp
screensaver/snsrdisplaycontrol_s60/src/snsrdisplaycontrolsession.cpp
screensaver/snsrutils/snsrutils.pro
--- a/homescreenapp/examples/batterywidgetplugin/batterywidgetplugin.pro	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/examples/batterywidgetplugin/batterywidgetplugin.pro	Mon Oct 04 00:07:25 2010 +0300
@@ -46,6 +46,8 @@
         
     DEPLOYMENT += plugins \
                   widgetResources
+                  
+    MMP_RULES += SMPSAFE
 } 
 
 win32: {
--- a/homescreenapp/examples/contentpublishclient/contentpublishclient.pro	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/examples/contentpublishclient/contentpublishclient.pro	Mon Oct 04 00:07:25 2010 +0300
@@ -43,6 +43,8 @@
     
     DEPLOYMENT += testwallpaperimages
     
+    MMP_RULES += SMPSAFE
+    
 } else {
     error("Only Symbian supported!")
 }
\ No newline at end of file
--- a/homescreenapp/examples/helloworldwidgetplugin/helloworldwidgetplugin.pro	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/examples/helloworldwidgetplugin/helloworldwidgetplugin.pro	Mon Oct 04 00:07:25 2010 +0300
@@ -49,6 +49,8 @@
 
     BLD_INF_RULES.prj_exports += \
       "./rom/helloworldwidgetplugin.iby  CORE_APP_LAYER_IBY_EXPORT_PATH(helloworldwidgetplugin.iby)" 
+      
+   MMP_RULES += SMPSAFE
 }
 
 win32: {
--- a/homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin.pro	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin.pro	Mon Oct 04 00:07:25 2010 +0300
@@ -53,6 +53,8 @@
     BLD_INF_RULES.prj_exports += \
       "./rom/localisedhellowidgetplugin.iby            CORE_APP_LAYER_IBY_EXPORT_PATH(localisedhellowidgetplugin.iby)" \
       "./rom/localisedhellowidgetpluginresources.iby   LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(localisedhellowidgetpluginresources.iby)"
+      
+      MMP_RULES += SMPSAFE
 }
 
 win32: {
--- a/homescreenapp/examples/localisedhellowidgetplugin/sis/localisedhellowidgetplugin.pkg	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/examples/localisedhellowidgetplugin/sis/localisedhellowidgetplugin.pkg	Mon Oct 04 00:07:25 2010 +0300
@@ -41,5 +41,5 @@
 "/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.qm"     	                 - "!:/resource/qt/translations/localisedhellowidgetplugin_en.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"  
--- a/homescreenapp/examples/minibrowserwidgetplugin/minibrowserwidgetplugin.pro	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/examples/minibrowserwidgetplugin/minibrowserwidgetplugin.pro	Mon Oct 04 00:07:25 2010 +0300
@@ -48,6 +48,8 @@
         
     DEPLOYMENT += plugins \
                   widgetResources
+                  
+    MMP_RULES += SMPSAFE
 }
 
 win32: {
--- a/homescreenapp/hsapplication/conf/confml/CI_homescreendb.confml	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/hsapplication/conf/confml/CI_homescreendb.confml	Mon Oct 04 00:07:25 2010 +0300
@@ -117,7 +117,9 @@
       <confml:Configuration><confml:key>isSnapEffectsEnabled</confml:key><confml:value>true</confml:value></confml:Configuration>
       <confml:Configuration><confml:key>sceneType</confml:key><confml:value>PageWallpapers</confml:value></confml:Configuration>
       <confml:Configuration><confml:key>bounceAnimationEasingCurve</confml:key><confml:value>Linear</confml:value></confml:Configuration>
-      <confml:Configuration><confml:key>pageChangeAnimationEasingCurve</confml:key><confml:value>Linear</confml:value></confml:Configuration>      
+      <confml:Configuration><confml:key>pageChangeAnimationEasingCurve</confml:key><confml:value>Linear</confml:value></confml:Configuration>
+      <confml:Configuration><confml:key>widgetOrganizerAnchorDistance</confml:key><confml:value>5</confml:value></confml:Configuration>
+      <confml:Configuration><confml:key>widgetOrganizerSearchSequence</confml:key><confml:value>SearchRowByRow</confml:value></confml:Configuration>
     </confml:HomeScreenDbSettings>
   </confml:data>
 </confml:configuration>
--- a/homescreenapp/hsapplication/conf/confml/homescreendb.confml	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/hsapplication/conf/confml/homescreendb.confml	Mon Oct 04 00:07:25 2010 +0300
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:confml="http://www.s60.com/xml/confml/2" xsi:schemaLocation="http://www.s60.com/xml/confml/2 http://www.s60.com/xml/confml/1#//confml2" name="HomeScreen database settings">
+<configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.s60.com/xml/confml/2" xsi:schemaLocation="http://www.s60.com/xml/confml/2 http://www.s60.com/xml/confml/1#//confml2" name="HomeScreen database settings">
   <feature ref="HomeScreenDbSettings" name="HomeScreen database settings">
     <setting ref="Pages" mapKey="id" mapValue="id" name="Pages" type="sequence">
       <setting ref="id" name="ID" type="int"/>
@@ -117,7 +117,9 @@
       <Configuration><key>isSnapEffectsEnabled</key><value>true</value></Configuration>
       <Configuration><key>sceneType</key><value>PageWallpapers</value></Configuration>
       <Configuration><key>bounceAnimationEasingCurve</key><value>Linear</value></Configuration>
-      <Configuration><key>pageChangeAnimationEasingCurve</key><value>Linear</value></Configuration>      
+      <Configuration><key>pageChangeAnimationEasingCurve</key><value>Linear</value></Configuration>
+      <Configuration><key>widgetOrganizerAnchorDistance</key><value>5</value></Configuration>       
+      <Configuration><key>widgetOrganizerSearchSequence</key><value>SearchRowByRow</value></Configuration> 
     </HomeScreenDbSettings>
   </data>
 </configuration>
--- a/homescreenapp/hsapplication/hsapplication.pro	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/hsapplication/hsapplication.pro	Mon Oct 04 00:07:25 2010 +0300
@@ -27,8 +27,6 @@
 
 fute:DEFINES += FUTE
 
-new_short:DEFINES += HSWIDGETORGANIZER_ALGORITHM
-
 DEPENDPATH += . \
               ./inc \
               ./src
@@ -58,9 +56,11 @@
     include(hsapplication_exports_to_rom.pri)    
 
     CONFIG += service
-    LIBS +=  -lxqservice -lxqserviceutil -lXQKeyCapture -lxqtelephonyservice
+    LIBS +=  -lxqservice -lxqserviceutil -lXQKeyCapture
   
     SERVICE.FILE = ipc_service_conf.xml
+    
+    MMP_RULES += SMPSAFE
 }
 
 !symbian: {
--- a/homescreenapp/hsapplication/inc/hsstatemachine.h	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/hsapplication/inc/hsstatemachine.h	Mon Oct 04 00:07:25 2010 +0300
@@ -54,7 +54,6 @@
 private:
     Q_DISABLE_COPY(HsStateMachine)
 
-    void startDialer();
     void registerAnimations();
     void createStatePublisher();
     void createContentServiceParts();
@@ -71,11 +70,10 @@
 private:
     HsContentService *mContentService;	
 	
-	bool mHomeScreenActive;
-	bool mIdleStateActive;
+    bool mHomeScreenActive;
+    bool mIdleStateActive;
     bool mEndKeyCaptured;
-    bool mSendKeyCaptured;
-
+    
 	QValueSpacePublisher *mPublisher;
 	
 #ifdef Q_OS_SYMBIAN
Binary file homescreenapp/hsapplication/resource/resource_emulator/homescreen.db has changed
Binary file homescreenapp/hsapplication/resource/resource_win/homescreen.db has changed
--- a/homescreenapp/hsapplication/src/hsstatemachine.cpp	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/hsapplication/src/hsstatemachine.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -46,13 +46,6 @@
 #include "hstest_global.h"
 #include "hswidgetpositioningonwidgetmove.h"
 
-#ifdef Q_OS_SYMBIAN
-#include <xqappmgr.h>
-#include <xqcallinfo.h>
-#include <logsservices.h>
-#include <xqrequestinfo.h>
-#endif // Q_OS_SYMBIAN
-
 QTM_USE_NAMESPACE
 #define hbApp qobject_cast<HbApplication*>(qApp)
 
@@ -87,7 +80,6 @@
       mHomeScreenActive(false),
       mIdleStateActive(false),
       mEndKeyCaptured(false),
-      mSendKeyCaptured(false),
       mPublisher(NULL)
 #ifdef Q_OS_SYMBIAN
 	  ,keyCapture()
@@ -110,14 +102,13 @@
             
     HsWidgetPositioningOnOrientationChange::setInstance(
         new HsAdvancedWidgetPositioningOnOrientationChange);
-#ifdef HSWIDGETORGANIZER_ALGORITHM
-    HsWidgetPositioningOnWidgetAdd::setInstance(
-        new HsWidgetOrganizer);
-#else
-    HsWidgetPositioningOnWidgetAdd::setInstance(
-        new HsAnchorPointInBottomRight);
-#endif
-
+        
+    HsWidgetPositioningOnWidgetAdd *widgetOrganizer =
+        new HsWidgetOrganizer(HSCONFIGURATION_GET(snapGap),
+                              HSCONFIGURATION_GET(widgetOrganizerSearchSequence));
+        
+    HsWidgetPositioningOnWidgetAdd::setInstance(widgetOrganizer);
+        
     HsWidgetPositioningOnWidgetMove::setInstance(
         new HsSnapToLines);
 
@@ -178,83 +169,14 @@
     }
         
     bool result =  QStateMachine::eventFilter(watched, event);    
-
+  
     if (event->type() == QEvent::KeyPress ) {
-        QKeyEvent* ke = static_cast<QKeyEvent *>(event);
-        int key = ke->key();
-
-        if (key == Qt::Key_Home ) {
-            result = true;
-        }
-        else if (key == Qt::Key_Yes ) {
-            result = true;
-            if (mSendKeyCaptured == false && mHomeScreenActive == true) {
-                mSendKeyCaptured = true;
-                startDialer();                
-            }
-        }
+        QKeyEvent* ke = static_cast<QKeyEvent *>(event);                 
+        result = (ke->key() == Qt::Key_Home);
     }
     return result;
 }
 
-#ifdef COVERAGE_MEASUREMENT
-#pragma CTC SKIP
-#endif //COVERAGE_MEASUREMENT
-/*!
-    \fn void HsStateMachine::startDialer()
-    Starts Dialer application
-*/
-void HsStateMachine::startDialer()
-    {
-    // copy-paste code from dialer widget
-#ifdef Q_OS_SYMBIAN
-    qDebug("HsStateMachine::startDialer()");
-            
-    QList<CallInfo> calls;
-    QScopedPointer<XQCallInfo> callInfo(XQCallInfo::create());
-    callInfo->getCalls(calls);
-    QList<QVariant> args;
-    QString service;
-    QString interface;
-    QString operation;
-
-    if (0 < calls.count()) {
-        qDebug("HS: call ongoing, bring Telephone to foreground");
-        service = "phoneui";
-        interface = "com.nokia.symbian.IStart";
-        operation = "start(int)";
-        int openDialer(0);
-        args << openDialer;
-    } else {
-        qDebug("HS: no calls, open Dialer");
-        service = "logs";
-        interface = "com.nokia.symbian.ILogsView";
-        operation = "show(QVariantMap)";
-        QVariantMap map;
-        map.insert("view_index", QVariant(int(LogsServices::ViewAll)));
-        map.insert("show_dialpad", QVariant(true));
-        map.insert("dialpad_text", QVariant(QString()));
-        args.append(QVariant(map));
-    }
-
-    XQApplicationManager appManager;
-    QScopedPointer<XQAiwRequest> request(appManager.create(service, interface, operation, false));
-    if (request == NULL) {
-        return;
-    }
-    request->setArguments(args);
-    XQRequestInfo info;
-    info.setForeground(true);
-    request->setInfo(info);
-    bool ret = request->send();
-    qDebug("HS: request sent successfully:", ret);
-#endif
-}
-
-#ifdef COVERAGE_MEASUREMENT
-#pragma CTC ENDSKIP
-#endif //COVERAGE_MEASUREMENT
-
 /*!
     Registers framework animations.
 */
@@ -420,6 +342,13 @@
                                       idleState, collectionStates[0]);
         idleState->addTransition(idleToCollectionTransition);
     }
+	// show after install is opened from applibrary via idlestate
+	if (collectionStates.count()) {
+        HsMenuEventTransition *idleToCollectionTransition =
+            new HsMenuEventTransition(HsMenuEvent::OpenCollectionFromAppLibrary,
+                                      idleState, collectionStates[0]);
+        idleState->addTransition(idleToCollectionTransition);
+    }
 
     guiRootState->setInitialState(loadSceneState);
     setInitialState(guiRootState);
@@ -454,7 +383,6 @@
         mPublisher->setValue(HsStatePSKeySubPath, EHomeScreenApplicationBackground | EHomeScreenApplicationLibraryViewActive);
         captureEndKey(false);
     }
-    mSendKeyCaptured = false;
 }
 
 /*!
@@ -499,9 +427,16 @@
 void HsStateMachine::activityRequested(const QString &name) 
 {
     if (name == Hs::groupAppLibRecentView) {
-        this->postEvent(
-            HsMenuEventFactory::createOpenCollectionEvent(0,
-            Hs::collectionDownloadedTypeName));
+        if (mHomeScreenActive) {
+            this->postEvent(
+                HsMenuEventFactory::createOpenCollectionEvent(0,
+                Hs::collectionDownloadedTypeName));
+        }
+        else {
+            this->postEvent(
+                HsMenuEventFactory::createOpenCollectionFromAppLibraryEvent(0,
+                Hs::collectionDownloadedTypeName));
+        }
     } else if (name == Hs::activityHsIdleView) {
         emit event_toIdle();
     } else if (name == Hs::activityAppLibMainView) {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/tsrc/t_hsapplication/installs_symbian.pri	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,21 @@
+#
+# 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:
+#
+
+export.sources = ./../mockstateplugins/resource/*.xml
+export.path = ./hsresources/plugins/stateplugins
+pluginstub.sources = ./../mockstateplugins/qmakepluginstubs/mockstateplugins.dll
+pluginstub.path = ./hsresources/plugins/stateplugins
+DEPLOYMENT += export pluginstub
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/tsrc/t_hsapplication/installs_win32.pri	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,34 @@
+#
+# 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:
+#
+
+testfiles.path = ../../../../../../bin/hstests/
+testfiles.files = ./debug/t_hsdefaultruntimeplugin.exe
+
+mockdll.path = ../../../../../../bin/hstests/hsresources/plugins/stateplugins
+mockdll.files += ./debug/hsresources/plugins/stateplugins/*.dll \
+                 ./debug/hsresources/plugins/stateplugins/*.xml
+
+compos.path = ../../../../../../bin/hstests/
+compos.files = ../../../../../../bin/debug/hsdomainmodel.dll \
+               ../../../../../../bin/debug/hsutils.dll \
+               ../../../../../../bin/debug/caclient.dll
+
+compos2.path = ./debug
+compos2.files = ../../../../../../bin/debug/hsdomainmodel.dll \                
+                ../../../../../../bin/debug/hsutils.dll \
+                ../../../../../../bin/debug/caclient.dll
+
+INSTALLS += testfiles mockdll compos compos2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/tsrc/t_hsapplication/mockstateplugins/inc/mockapplibrarystate.h	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,36 @@
+/*
+* 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 <QState>
+#include <QObject>
+
+class MockAppLibraryState: public QState
+{
+
+Q_OBJECT
+
+public:
+
+    MockAppLibraryState(QState* parent = 0):QState(parent)
+    {
+
+    }
+
+signals:
+    void toHomescreenState();
+};
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/tsrc/t_hsapplication/mockstateplugins/inc/mockbackuprestorestate.h	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,29 @@
+/*
+* 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 <QState>
+
+class MockBackupRestoreState: public QState
+{
+    Q_OBJECT
+
+public:
+    MockBackupRestoreState(QState* parent = 0) : QState(parent) {}
+
+signals:
+    void event_loadScene();
+
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/tsrc/t_hsapplication/mockstateplugins/inc/mockidlestate.h	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,37 @@
+/*
+* 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 <QState>
+#include <QObject>
+
+class MockIdleState: public QState
+{
+
+Q_OBJECT
+
+public:
+
+    MockIdleState(QState* parent = 0):QState(parent)
+    {
+
+    }
+
+signals:
+    void menuEvent();
+
+};
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/tsrc/t_hsapplication/mockstateplugins/inc/mockloadscenestate.h	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,36 @@
+/*
+* 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 <QState>
+#include <QObject>
+
+class MockLoadSceneState: public QState
+{
+
+Q_OBJECT
+
+public:
+
+    MockLoadSceneState(QState* parent = 0):QState(parent)
+    {
+
+    }
+
+signals:
+    void idleEvent();
+};
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/tsrc/t_hsapplication/mockstateplugins/inc/mockmenuworkerstate.h	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,33 @@
+/*
+* 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 <QState>
+#include <QObject>
+
+class MockMenuWorkerState: public QState
+{
+
+Q_OBJECT
+
+public:
+
+    MockMenuWorkerState(QState* parent = 0):QState(parent)
+    {
+
+    }
+};
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/tsrc/t_hsapplication/mockstateplugins/inc/mockrootstate.h	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,33 @@
+/*
+* 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 <QState>
+#include <QObject>
+
+class MockRootState: public QState
+{
+    Q_OBJECT
+
+public:
+    MockRootState(QState* parent = 0) : QState(parent)
+    {
+        
+    }
+
+signals:
+    void event_backupRestore();
+
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/tsrc/t_hsapplication/mockstateplugins/inc/mockstateplugins.h	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,37 @@
+/*
+* 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:  Mocked runtime provider.
+*
+*/
+
+#ifndef MOCKSTATEPLUGINS_H
+#define MOCKSTATEPLUGINS_H
+
+#include <QObject>
+#include <qserviceplugininterface.h>
+
+QTM_USE_NAMESPACE
+
+class MockStatePlugins : public QObject, public QServicePluginInterface
+{
+    Q_OBJECT
+    Q_INTERFACES(QtMobility::QServicePluginInterface)
+
+public:
+    QObject *createInstance(const QServiceInterfaceDescriptor &descriptor,
+                            QServiceContext *context,
+                            QAbstractSecuritySession *session);
+};
+
+#endif //MOCKSTATEPLUGINS_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/tsrc/t_hsapplication/mockstateplugins/installs_win32.pri	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,21 @@
+#
+# 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:
+#
+
+testfiles.path = ../t_hsapplicationexe/debug/hsresources/plugins/stateplugins
+testfiles.files += ./debug/*.dll \
+                   ./resource/*.xml
+
+INSTALLS += testfiles
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/tsrc/t_hsapplication/mockstateplugins/mockstateplugins.pri	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,18 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+HEADERS += ./inc/*.h
+SOURCES += ./src/*.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/tsrc/t_hsapplication/mockstateplugins/mockstateplugins.pro	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,43 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+TEMPLATE = lib
+CONFIG += plugin mobility
+MOBILITY = serviceframework
+
+#DEFINES += HSRUNTIMEMODEL_TEST
+
+DEPENDPATH += .\
+              ./src \
+              ./inc
+
+INCLUDEPATH += .\
+               ./inc
+
+symbian: {
+
+CONFIG += symbian_test
+
+TARGET.UID3 = 0x20022F4C
+TARGET.CAPABILITY = CAP_APPLICATION AllFiles
+TARGET.EPOCHEAPSIZE = 0x20000 0x1000000 // 128kB - 16MB
+TARGET.EPOCALLOWDLLDATA=1
+
+MMP_RULES += SMPSAFE
+}
+
+include(mockstateplugins.pri)
+win32:include(installs_win32.pri)
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/tsrc/t_hsapplication/mockstateplugins/resource/mockstateplugins.xml	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<service>
+    <name>mockstateplugins</name>
+    <filepath>mockstateplugins</filepath>
+    <description>Mocked Homescreen State Plugins</description>
+    <interface>
+        <name>com.nokia.homescreen.state.HsLoadSceneState</name>
+        <version>1.1</version>
+        <description>Mocked test implementation for homescreen's state</description>
+        <capabilities></capabilities>
+    </interface>
+    <interface>
+        <name>com.nokia.homescreen.state.HsIdleState</name>
+        <version>1.1</version>
+        <description>Mocked test implementation for homescreen's state</description>
+        <capabilities></capabilities>
+    </interface>
+    <interface>
+        <name>com.nokia.homescreen.state.HsAppLibraryState</name>
+        <version>1.1</version>
+        <description>Mocked test implementation for homescreen's state</description>
+        <capabilities></capabilities>
+    </interface>
+    <interface>
+        <name>com.nokia.homescreen.state.HsMenuWorkerState</name>
+        <version>1.1</version>
+        <description>Mocked test implementation for homescreen's state</description>
+        <capabilities></capabilities>
+    </interface>
+    <interface>
+        <name>com.nokia.homescreen.state.HsRootState</name>
+        <version>1.1</version>
+        <description>Mocked test implementation for homescreen's state</description>
+        <capabilities></capabilities>
+    </interface>
+    <interface>
+        <name>com.nokia.homescreen.state.HsBackupRestoreState</name>
+        <version>1.1</version>
+        <description>Mocked test implementation for homescreen's state</description>
+        <capabilities></capabilities>
+    </interface>
+</service>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/tsrc/t_hsapplication/mockstateplugins/src/mockstateplugins.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,54 @@
+/*
+* 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:  Mocked runtime plugin.
+*
+*/
+
+#include <qserviceinterfacedescriptor.h>
+#include <qabstractsecuritysession.h>
+#include <qservicecontext.h>
+
+#include "mockstateplugins.h"
+#include "mockloadscenestate.h"
+#include "mockidlestate.h"
+#include "mockapplibrarystate.h"
+#include "mockmenuworkerstate.h"
+#include "mockrootstate.h"
+#include "mockbackuprestorestate.h"
+
+QObject *MockStatePlugins::createInstance(const QServiceInterfaceDescriptor &descriptor,
+                                                QServiceContext *context,
+                                                QAbstractSecuritySession *session)
+{
+    Q_UNUSED(context);
+    Q_UNUSED(session);
+
+    if (descriptor.interfaceName() == "com.nokia.homescreen.state.HsLoadSceneState") {
+        return new MockLoadSceneState();
+    } else if (descriptor.interfaceName() == "com.nokia.homescreen.state.HsIdleState") {
+        return new MockIdleState();
+    } else if (descriptor.interfaceName() == "com.nokia.homescreen.state.HsAppLibraryState") {
+        return new MockAppLibraryState();
+    } else if (descriptor.interfaceName() == "com.nokia.homescreen.state.HsMenuWorkerState") {
+        return new MockMenuWorkerState();
+    } else if (descriptor.interfaceName() == "com.nokia.homescreen.state.HsRootState") {
+        return new MockRootState();
+    } else if (descriptor.interfaceName() == "com.nokia.homescreen.state.HsBackupRestoreState") {
+        return new MockBackupRestoreState();
+    } else {
+        return 0;
+    }
+}
+
+Q_EXPORT_PLUGIN2(mockstateplugins, MockStatePlugins)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/tsrc/t_hsapplication/sis/t_hsapplication.pkg	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,40 @@
+;
+; 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:
+;
+
+; Language
+&EN
+
+; SIS header: name, uid, version
+#{"t_hsapplication"},(0x20022F5F),1,0,0
+
+; Localised Vendor name
+%{"Nokia"}
+
+; Unique Vendor name
+:"Nokia"
+
+; Supports S60 5th Edition
+[0x1028315F], 0, 0, 0, {"S60ProductID"}
+
+; HS application's unittest
+"/epoc32/release/armv5/urel/t_hsapplicationexe.exe"                         - "c:/sys/bin/t_hsapplicationexe.exe"
+"/epoc32/data/z/private/10003a3f/import/apps/t_hsapplicationexe_reg.rsc"    - "c:/private/10003a3f/import/apps/t_hsapplicationexe_reg.rsc"
+"/epoc32/data/z/resource/apps/t_hsapplicationexe.rsc"                       - "c:/resource/apps/t_hsapplicationexe.rsc"
+
+;Mocked test plugin
+"/epoc32/release/armv5/urel/mockstateplugins.dll"                                              - "c:/sys/bin/mockstateplugins.dll"
+"/epoc32/data/z/private/20022f5f/hsresources/plugins/stateplugins/mockstateplugins.qtplugin" - "c:/private/20022f5f/hsresources/plugins/stateplugins/mockstateplugins.qtplugin"
+"/epoc32/data/z/private/20022f5f/hsresources/plugins/stateplugins/mockstateplugins.xml"      - "c:/private/20022f5f/hsresources/plugins/stateplugins/mockstateplugins.xml"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/tsrc/t_hsapplication/sis/t_hsapplication_sisx.bat	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,30 @@
+@rem
+@rem Copyright (c) 2009 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 t_hsapplication.sisx del t_hsapplication.sisx
+
+makesis t_hsapplication.pkg
+signsis t_hsapplication.sis t_hsapplication.sisx ../../../../internal/sis/rd.cer ../../../../internal/sis/rd-key.pem
+
+if exist t_hsapplication.sisx (
+echo t_hsapplication.sisx creation SUCCEEDED
+del t_hsapplication.sis
+)
+
+if not exist t_hsapplication.sisx (
+echo t_hsapplication.sisx creation FAILED
+)
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/tsrc/t_hsapplication/t_hsapplication.pro	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,21 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+TEMPLATE = subdirs
+SUBDIRS  = mockstateplugins \
+           t_hsapplicationexe
+
+CONFIG  += ordered
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/tsrc/t_hsapplication/t_hsapplicationexe/inc/t_hsapplication.h	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,81 @@
+/*
+* 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:  Test class for homescreen::core
+*
+*/
+
+
+#include <QtTest/QtTest>
+
+class HbMainWindow;
+
+/**
+* @test Test class for homescreen::hsapplication modules.
+*/
+class t_hsapplication : public QObject
+{
+    Q_OBJECT
+
+private slots:
+
+    /**
+     * initialize
+     */
+    void initTestCase();
+    void cleanupTestCase();
+
+#ifdef Q_OS_SYMBIAN
+    /**
+     * hsrecoverymanager.cpp
+     */
+    void testHsRecoveryManagerConstruction();
+    void testHsRecoveryManagerCrashCount();
+    void testHsRecoveryManagerRestoreRomDatabase();
+    void testHsRecoveryManagerExecute();
+#endif
+
+    /**
+     * hshomescreen.cpp
+     */
+    void testCreateHomescreen();
+    void testHomescreenStart();
+    void testHomescreenStop();
+    void testOnRuntimeStarted();
+    void testOnRuntimeStopped();
+    void testEventFilter();
+    
+    /**
+     * hshomescreenclientserviceprovider.cpp
+     */    
+#ifdef Q_OS_SYMBIAN     
+    void testCreateClientServiceProvider();
+    void testAddWidget();
+    void testSetWallpaper();
+    void testWidgetComponentDescriptor();
+    void testWidgetUninstalled();
+#endif    
+
+  /**
+	 * HsStateMachine
+	 */
+   void testConstruction();
+	 void testStartStop();
+	 void testOnIdleStateEntered();
+	 void testOnIdleStateExited();
+	 void testRuntimeEventFilter();
+   void testActivityRequested();
+
+private:
+    HbMainWindow *mWindow;
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/tsrc/t_hsapplication/t_hsapplicationexe/installs_symbian.pri	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,20 @@
+#
+# 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:
+#
+export.sources = ./../mockstateplugins/resource/*.xml
+export.path = ./hsresources/plugins/stateplugins
+pluginstub.sources = ./../mockstateplugins/qmakepluginstubs/mockstateplugins.dll
+pluginstub.path = ./hsresources/plugins/stateplugins
+DEPLOYMENT += export pluginstub
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/tsrc/t_hsapplication/t_hsapplicationexe/installs_win32.pri	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,34 @@
+#
+# 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:
+#
+
+testexe.path = ../../../../../../bin/hstests/
+testexe.files = ./debug/t_hsapplicationexe.exe
+
+mockdll.path = ../../../../../../bin/hstests/hsresources/plugins/stateplugins
+mockdll.files += ./debug/hsresources/plugins/stateplugins/*.dll \
+                            ./debug/hsresources/plugins/stateplugins/*.xml
+                            
+compos.path = ../../../../../../bin/hstests/
+compos.files = ../../../../../../bin/debug/hsdomainmodel.dll \
+               ../../../../../../bin/debug/hsutils.dll \
+               ../../../../../../bin/debug/caclient.dll
+
+compos2.path = ./debug
+compos2.files = ../../../../../../bin/debug/hsdomainmodel.dll \                
+                ../../../../../../bin/debug/hsutils.dll \
+                ../../../../../../bin/debug/caclient.dll                            
+
+INSTALLS += testexe mockdll compos compos2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/tsrc/t_hsapplication/t_hsapplicationexe/src/hsconfiguration_mock.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,132 @@
+/*
+* 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 <HbDeviceProfile>
+
+#include "hsconfiguration.h"
+
+HsConfiguration::HsConfiguration(QObject *parent)
+  : QObject(parent),
+    mBounceEffect(20),
+    mPageChangeAnimationDuration(200),
+    mPageChangeZoneAnimationDuration(800),
+    mPageChangeZoneReverseAnimationDuration(200),
+    mPageRemovedAnimationDuration(200),
+    mNewPageAddedAnimationDuration(200),
+    mWidgetDragEffectDuration(200),
+    mWidgetDropEffectDuration(200),
+    mDefaultPageId(1),
+    mMaximumPageCount(8),
+    mIsShortcutLabelVisible(true),
+    mBounceFeedbackEffectDistance(3),
+    mPageChangeZoneWidth(60),
+    mPageIndicatorSpacing(8),
+    mMaximumWidgetHeight(39),
+    mMaximumWidgetWidth(48),
+    mMinimumWidgetHeight(8.75),
+    mMinimumWidgetWidth(8.75),
+    mPageChangePanDistance(17.91),
+    mPageChangeFeedbackEffect(HbFeedback::Sensitive),
+    mWidgetPickFeedbackEffect(HbFeedback::ItemPick),
+    mWidgetDropFeedbackEffect(HbFeedback::ItemDrop),
+    mWidgetRepositionFeedbackEffect(HbFeedback::BounceEffect),
+    mWidgetOverTrashbinFeedbackEffect(HbFeedback::ItemMoveOver),
+    mWidgetDropToTrashbinFeedbackEffect(HbFeedback::ItemDrop),
+    mShortcutWidgetTapFeedbackEffect(HbFeedback::BasicItem),
+    mWidgetMoveBlockedFeedbackEffect(HbFeedback::Basic),
+    mClockWidgetTapFeedbackEffect(HbFeedback::BasicItem),
+    mWidgetSnappingFeedbackEffect(HbFeedback::ItemMoveOver),
+    mIsSnapEnabled(true),
+    mSnapTimeout(100),
+    mSnapForce(30),
+    mSnapGap(6),
+    mPageMargin(0),
+    mSnapLineFadeInDuration(200),
+    mSnapLineFadeOutDuration(100),
+    mIsSnapEffectsEnabled(true),    
+    mSceneType(PageWallpapers),
+    mBounceAnimationEasingCurve(QEasingCurve::Linear),
+    mPageChangeAnimationEasingCurve(QEasingCurve::Linear)
+{    
+}
+
+HsConfiguration::~HsConfiguration()
+{
+}
+
+QSizeF HsConfiguration::minimumWidgetSizeInUnits() const
+{
+    return QSizeF(mMinimumWidgetWidth, mMinimumWidgetHeight);
+}
+
+QSizeF HsConfiguration::maximumWidgetSizeInUnits() const
+{
+    return QSizeF(mMaximumWidgetWidth, mMaximumWidgetHeight);
+}
+
+QSizeF HsConfiguration::minimumWidgetSizeInPixels() const
+{
+    HbDeviceProfile profile;
+    qreal factor = profile.unitValue();
+    return factor * minimumWidgetSizeInUnits();
+}
+
+QSizeF HsConfiguration::maximumWidgetSizeInPixels() const
+{
+    HbDeviceProfile profile;
+    qreal factor = profile.unitValue();
+    return factor * maximumWidgetSizeInUnits();
+}
+
+bool HsConfiguration::load()
+{
+    return true;
+}
+
+bool HsConfiguration::importFromFile(const QString &path)
+{
+    Q_UNUSED(path);
+    return true;
+}
+
+bool HsConfiguration::exportToFile(const QString &path)
+{
+    Q_UNUSED(path);
+    return true;
+}
+
+HsConfiguration *HsConfiguration::instance()
+{
+    return mInstance;
+}
+
+HsConfiguration *HsConfiguration::takeInstance()
+{
+    HsConfiguration *instance = mInstance;
+    mInstance = 0;
+    return instance;
+}
+
+void HsConfiguration::setInstance(HsConfiguration *instance)
+{
+    if (mInstance != instance) {
+        delete mInstance;
+        mInstance = instance;
+    }
+}
+
+HsConfiguration *HsConfiguration::mInstance(0);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/tsrc/t_hsapplication/t_hsapplicationexe/src/hscontentservice_mock.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,59 @@
+/*
+* 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 "hscontentservice.h"
+
+HsContentService::HsContentService(QObject *parent): QObject(parent) {}
+
+HsContentService::~HsContentService() {}
+
+HsContentService *HsContentService::instance() {
+    static HsContentService service;
+    return &service;
+}
+bool HsContentService::createWidget(const QVariantHash &params)
+{
+    Q_UNUSED(params);
+    return true;
+}
+
+HsWidgetHost *HsContentService::createWidgetForPreview(const QVariantHash &params)
+{
+    Q_UNUSED(params);
+    return 0;
+}
+
+bool HsContentService::addWidget(const QString &uri, const QVariantHash &preferences,
+                                 const QVariant &homescreenData)
+{
+    Q_UNUSED(preferences);
+    Q_UNUSED(homescreenData);
+    if (!uri.isEmpty()) {
+        return true;
+    } else {
+        return false;
+    }
+}
+
+void HsContentService::emitWidgetRemoved(const QString &uri, const QVariantHash &preferences)
+{
+    Q_UNUSED(uri);
+    Q_UNUSED(preferences);
+}
+
+void HsContentService::widgetStartFaulted()
+{
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/tsrc/t_hsapplication/t_hsapplicationexe/src/hsgui_mock.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,140 @@
+/*
+* 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 <HbMainWindow>
+#include <HbView>
+#include <HbMenu>
+#include <HbAction>
+
+#include "hsgui.h"
+#include "hsscene.h"
+#include "hsconfiguration.h"
+
+namespace {
+      const char gApplicationLibraryIconName[] = "qtg_mono_applications_all";
+}
+
+/*!
+    \class HsGui
+    \ingroup group_hsdomainmodel
+    \brief Represents a view in the framework.
+    HsGui includes common UI components for Home screen.
+*/
+
+HsGui *HsGui::mInstance(0);
+
+struct HsGuiImpl
+{
+    HbView *mIdleView;
+    HbMainWindow *mWindow;
+    HbAction *mNavigationAction;
+};
+
+
+
+HsGui::~HsGui()
+{
+    if (mImpl->mNavigationAction) {
+        delete mImpl->mNavigationAction;
+    }
+
+    delete mImpl;
+}
+
+HsGui *HsGui::setInstance(HsGui *instance)
+{
+    HsGui *old = mInstance;
+    if (mInstance != instance) {
+        mInstance = instance;
+    }
+    return old;
+}
+
+HsGui *HsGui::instance()
+{
+    if (!mInstance) {
+        mInstance = new HsGui(QCoreApplication::instance());
+    }
+    return mInstance;
+}
+
+HsGui *HsGui::takeInstance()
+{
+    HsGui *instance = mInstance;
+    mInstance = 0;
+    return instance;
+}
+
+void HsGui::setupIdleUi()
+{
+    
+}
+
+void HsGui::cleanupIdleUi()
+{
+    if (mImpl->mIdleView) {
+        mImpl->mIdleView->setNavigationAction(0);
+        delete mImpl->mNavigationAction;
+        mImpl->mNavigationAction = 0;
+        
+        mImpl->mWindow->removeView(mImpl->mIdleView);
+        delete mImpl->mIdleView;
+        mImpl->mIdleView = 0;
+
+        // This gets deleted when mImpl->mIdleView is deleted
+        // so just nullify.
+    }
+    
+}
+
+void HsGui::setOrientation(Qt::Orientation orientation)
+{
+    mImpl->mWindow->setOrientation(orientation);
+}
+
+Qt::Orientation HsGui::orientation()
+{
+    return mImpl->mWindow->orientation();
+}
+
+HbView *HsGui::idleView() const
+{
+    return mImpl->mIdleView;
+}
+
+QRectF HsGui::layoutRect() const
+{
+    return mImpl->mWindow->layoutRect();
+}
+
+void HsGui::show()
+{
+    mImpl->mWindow->raise();
+    mImpl->mWindow->show();
+}
+
+HsGui::HsGui(QObject *parent):
+    QObject(parent),mImpl(new HsGuiImpl)
+{
+    mImpl->mIdleView = 0;
+    mImpl->mNavigationAction = 0;
+
+    mImpl->mWindow = hbInstance->allMainWindows().first();
+    connect(mImpl->mWindow, SIGNAL(orientationChanged(Qt::Orientation)),
+        SIGNAL(orientationChanged(Qt::Orientation)));
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/tsrc/t_hsapplication/t_hsapplicationexe/src/hspage_mock.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,457 @@
+/*
+* 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 <HbInstance>
+
+#include "hsdomainmodeldatastructures.h"
+#include "hsgui.h"
+#include "hspage.h"
+#include "hspagevisual.h"
+#include "hspagetoucharea.h"
+#include "hspagenewwidgetlayout.h"
+#include "hsscene.h"
+#include "hswidgethost.h"
+#include "hswidgethostvisual.h"
+#include "hswallpaper.h"
+#include "hswidgetpositioningonwidgetadd.h"
+#include "hswidgetpositioningonorientationchange.h"
+#include "hsconfiguration.h"
+
+
+/*!
+    \class HsPage
+    \ingroup group_hsdomainmodel
+    \brief Represents a page in the framework.
+    HsPage contains group of widgets. HsPage can have a wallpaper.
+*/
+
+/*!
+    Constructor.
+
+    \a parent Owner.
+    \a aFlags Window flags.
+*/
+HsPage::HsPage(QObject* parent)
+    : QObject(parent),
+      mDatabaseId(-1),
+      mPageVisual(new HsPageVisual), 
+      mWallpaper(0),
+      mRemovable(true),
+      mPageMargin(0.0)
+{
+    //Page margin
+    mPageMargin = HSCONFIGURATION_GET(pageMargin);
+    connect(HsConfiguration::instance(), SIGNAL(propertyChanged(QString)), SLOT(onPageMarginChanged(QString)));
+}
+
+/*!
+    Destructor.
+*/
+HsPage::~HsPage()
+{
+    delete mWallpaper;
+}
+
+/*!
+    Returns the database id.
+*/
+int HsPage::databaseId() const
+{
+    return mDatabaseId;
+}
+
+/*!
+    Sets the database id to \a id.
+*/
+void HsPage::setDatabaseId(int id)
+{
+    mDatabaseId = id;
+}
+
+/*!
+    Loads widgets.
+*/
+bool HsPage::load()
+{
+    if (HSCONFIGURATION_GET(sceneType) == HsConfiguration::PageWallpapers) {
+        mWallpaper = new HsPageWallpaper(this);
+    }
+
+    HsWidgetHost *widget = new HsWidgetHost(-1);
+    mWidgets.append(widget);
+    connectWidget(widget);
+    widget->setPage(this);
+    widget->visual()->setParentItem(this->visual());
+    widget->startWidget();
+    return true;
+}
+
+/*!
+    Return wallpaper.
+*/
+HsWallpaper *HsPage::wallpaper() const
+{
+    return mWallpaper;
+}
+/*!
+    Add given existing \a widgetHost to a page. Returns true if successful
+*/
+bool HsPage::addExistingWidget(HsWidgetHost *widgetHost)
+{
+    if (!widgetHost) {
+        return false;
+    }
+
+    if (mWidgets.contains(widgetHost)) {
+        return true;
+    }
+
+    if (!widgetHost->setPage(this)) {
+        return false;
+    }
+
+    connectWidget(widgetHost);
+    mWidgets << widgetHost;
+    widgetHost->visual()->setParentItem(this->visual());
+
+    return true;
+ }
+
+/*!
+    Remove given \a widgetHost from a page. Widget is not deleted.
+    Returns true if successful
+*/
+bool HsPage::removeWidget(HsWidgetHost *widgetHost)
+{
+    if (!widgetHost || !widgetHost->setPage(0)) {
+        return false;
+    }
+
+    disconnectWidget(widgetHost);
+    mWidgets.removeOne(widgetHost);
+    widgetHost->visual()->setParentItem(0);
+
+    return true;
+}
+
+/*!
+    Returns list of new widgets belonging to a page. Widgets which are
+    not yet layouted are considered as new widgets.
+*/
+QList<HsWidgetHost *> HsPage::newWidgets()
+{
+    return mNewWidgets;
+}
+
+/*!
+    Adds new widget into a page. Returns true if successfull.
+*/
+bool HsPage::addNewWidget(HsWidgetHost* widgetHost, const QPointF &touchPoint)
+{
+    Q_UNUSED(touchPoint)
+    if (!widgetHost || mWidgets.contains(widgetHost)) {
+        return false;
+    }
+
+    if (mNewWidgets.contains(widgetHost)) {
+        return true;
+    }
+
+    HsWidgetPresentationData presentation;
+    presentation.orientation = Qt::Vertical;
+    if (!widgetHost->getPresentation(presentation)) {
+        presentation.orientation = Qt::Vertical;
+        presentation.setPos(QPointF());
+        presentation.zValue = 0;
+        widgetHost->savePresentation(presentation);
+    }
+
+    widgetHost->visual()->hide();
+    widgetHost->visual()->setPos(presentation.x, presentation.y);
+    widgetHost->visual()->setZValue(presentation.zValue);
+
+    connectWidget(widgetHost);
+    mNewWidgets << widgetHost;
+
+    return true;
+}
+
+/*!
+    Layouts all the new widgets
+*/
+void HsPage::layoutNewWidgets()
+{
+    if (mNewWidgets.isEmpty()) {
+        return;
+    }
+
+    updateZValues();
+    HsWidgetHost *widget = 0;
+    for (int i = 0; i < mNewWidgets.count(); ++i) {
+        widget = mNewWidgets.at(i);
+//Not used in mock        newWidgetLayout->addItem(widget);
+        widget->setPage(this);
+        widget->visual()->setParentItem(visual());
+        widget->showWidget();
+        widget->visual()->show();
+    }
+    mWidgets << mNewWidgets;
+    mNewWidgets.clear();
+}
+
+/*!
+    Clears new widgets list and resets layout.
+*/
+void HsPage::resetNewWidgets()
+{
+    mNewWidgets.clear();
+}
+
+/*!
+    Remove page and all it's contained widgets from database
+*/
+bool HsPage::deleteFromDatabase()
+{
+	//Not used in mock
+    return true;
+}
+
+/*!
+    Return list of widgets belonging to a page
+*/
+QList<HsWidgetHost *> HsPage::widgets() const
+{
+    return mWidgets;
+}
+
+/*!
+    Returns true if the page can be removed. Otherwise,
+    returns false.
+*/
+bool HsPage::isRemovable() const
+{
+    return mRemovable;
+}
+
+/*!
+    Sets removable flag to \a removable.
+*/
+void HsPage::setRemovable(bool removable)
+{
+    mRemovable = removable;
+}
+
+/*!
+    Return true if page is default page.
+*/
+bool HsPage::isDefaultPage() const
+{
+    return mDatabaseId == HSCONFIGURATION_GET(defaultPageId);
+}
+
+/*!
+    Return true if page is active page.
+*/
+bool HsPage::isActivePage() const
+{
+    return this == HsScene::instance()->activePage();
+}
+
+/*!
+    Create page into database and return instance of a new page.
+*/
+HsPage *HsPage::createInstance(const HsPageData &pageData)
+{
+    Q_UNUSED(pageData);
+    HsPage *page = new HsPage;
+    return page;
+}
+
+/*!
+    The widget is bounded in the rectangle which is smaller by PageMargin on all sides of page.
+*/
+QPointF HsPage::adjustedWidgetPosition(const QRectF &origWidgetRect)
+{
+    QRectF widgetAreaRect = contentGeometry();
+    qreal widgetX = qBound(widgetAreaRect.left(), origWidgetRect.x(), widgetAreaRect.right() - origWidgetRect.width());
+    qreal widgetY = qBound(widgetAreaRect.top(), origWidgetRect.y(), widgetAreaRect.bottom() - origWidgetRect.height());
+
+    return QPointF(widgetX, widgetY);
+}
+
+/*!
+    Returns rect of rectangular where widgets are allowed to be placed in the page.
+*/
+QRectF HsPage::contentGeometry()
+{
+    return contentGeometry(Qt::Vertical);
+}
+
+/*!
+    Returns rect of rectangular where widgets are allowed to be placed in the page.
+*/
+QRectF HsPage::contentGeometry(Qt::Orientation orientation)
+{
+    QRectF pageRect = QRectF(0, 0, 360.0, 640.0);
+
+    //Take care of chrome in both orientation
+    pageRect.setTop(64);
+
+    //Shrink by page margins at each side
+    return pageRect.adjusted(mPageMargin, mPageMargin, -mPageMargin, -mPageMargin);
+}
+
+/*!
+    Returns rect of rectangular where widgets are allowed to be placed in the page.
+*/
+QRectF HsPage::contentRect()
+{
+    return contentRect(Qt::Vertical);
+}
+
+/*!
+    Returns rect of rectangular where widgets are allowed to be placed in the page.
+*/
+QRectF HsPage::contentRect(Qt::Orientation orientation)
+{
+    QRectF rect = contentGeometry(orientation);
+    rect.moveTopLeft(QPointF(0,0));
+    return rect;
+}
+
+/*!
+    Calls onShow() for contained widgets.
+*/
+void HsPage::showWidgets()
+{
+}
+
+/*!
+    Calls onHide() for contained widgets.
+*/
+void HsPage::hideWidgets()
+{
+}
+
+/*!
+    Propagate online state to widgets.
+*/
+void HsPage::setOnline(bool online)
+{
+    foreach (HsWidgetHost *widget, mNewWidgets) {
+        widget->setOnline(online);
+    }
+    foreach (HsWidgetHost *widget, mWidgets) {
+        widget->setOnline(online);
+    }
+}
+
+/*!
+    Update widgets z-values and persist those. Active widget has top most
+    z-value.
+*/
+void HsPage::updateZValues()
+{
+}
+
+/*!
+    Return this page's index.
+*/
+int HsPage::pageIndex()
+{
+    return HsScene::instance()->pages().indexOf(this);
+}
+/*!
+    Utility to connect widget signals to page.
+*/
+void HsPage::connectWidget(HsWidgetHost *widget)
+{
+    connect(widget, SIGNAL(finished()), SLOT(onWidgetFinished()));
+    connect(widget, SIGNAL(faulted()), SLOT(onWidgetFaulted()));
+    connect(widget, SIGNAL(resized()), SLOT(onWidgetResized()));
+    connect(widget, SIGNAL(available()), SLOT(onWidgetAvailable()));
+    connect(widget, SIGNAL(unavailable()), SLOT(onWidgetUnavailable()));
+}
+/*!
+    Disconnect widget signals from page
+*/
+void HsPage::disconnectWidget(HsWidgetHost *widget)
+{
+    widget->disconnect(this);
+}
+/*!
+    Disconnect and remove widget
+*/
+void HsPage::onWidgetFinished()
+{
+    HsWidgetHost *widget = qobject_cast<HsWidgetHost *>(sender());
+
+    // It can be in new widget list if we haven't layouted it yet
+    // or layouted new widget and widget list
+    if (!mNewWidgets.removeOne(widget)) {
+        mWidgets.removeOne(widget);
+    }
+
+    disconnectWidget(widget);
+    widget->remove();
+}
+/*!
+    Remove widget if it faulted
+*/
+void HsPage::onWidgetFaulted()
+{
+    onWidgetFinished();
+}
+
+/*!
+    Calculates new widget position on page when widget size changes. If page has layout then there are new widgets
+    and we use layout to calculate new widget positions.
+*/
+void HsPage::onWidgetResized()
+{
+}
+/*!
+    Show widget if it came available
+*/
+void HsPage::onWidgetAvailable()
+{
+}
+/*!
+    Update internal bookkeeping and hide widget
+*/
+void HsPage::onWidgetUnavailable()
+{
+}
+
+/*!
+    Run positioning algorithm for widgets which don't have position on
+    target orientation. Otherwise set orientation positions for widgets.
+*/
+void HsPage::onOrientationChanged(Qt::Orientation orientation)
+{
+    Q_UNUSED(orientation)
+}
+
+void HsPage::onPageMarginChanged(const QString &value)
+{
+    Q_UNUSED(value)
+}
+
+HsPageVisual *HsPage::visual() const
+{
+    return mPageVisual;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/tsrc/t_hsapplication/t_hsapplicationexe/src/hspagevisual_mock.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,74 @@
+/*
+* 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 "hspagevisual.h"
+#include "hsscene.h"
+#include "hspage.h"
+
+
+
+/*!
+    \class HsPageVisual
+    \ingroup group_hsdomainmodel
+    \brief Represents a page in the framework.
+    HsPageVisual contains group of widgets. HsPageVisual can have a wallpaper.
+*/
+
+/*!
+    Constructor.
+
+    \a parent Owner.
+    \a aFlags Window flags.
+*/
+HsPageVisual::HsPageVisual(QGraphicsItem* parent)
+    : HbWidget(parent),
+      mTouchArea(0)
+{
+}
+
+/*!
+    Destructor.
+*/
+HsPageVisual::~HsPageVisual()
+{
+}
+
+int HsPageVisual::pageIndex() const
+{
+    QList<HsPage *> pages = HsScene::instance()->pages();
+    for (int i = 0; i < pages.count(); ++i) {
+        if (pages.at(i)->visual() == this) {
+            return i;
+        }
+    }
+    return -1;
+}
+
+void HsPageVisual::setGeometry(const QRectF &rect)
+{
+    HbWidget::setGeometry(rect);
+}
+
+/*!
+    Create touch area for page.
+*/
+void HsPageVisual::setupTouchArea()
+{
+}
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/tsrc/t_hsapplication/t_hsapplicationexe/src/hsscene_mock.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,183 @@
+/*
+* 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 <HbInstance>
+#include "hsdomainmodeldatastructures.h"
+#include "hsscene.h"
+#include "hspage.h"
+#include "hswidgethost.h"
+#include "hswallpaper.h"
+#include "hsconfiguration.h"
+
+HsScene::~HsScene()
+{
+    delete mWallpaper;
+    qDeleteAll(mPages);
+}
+
+int HsScene::databaseId() const
+{
+    return mDatabaseId;
+}
+
+bool HsScene::load()
+{
+    return true;
+}
+
+HsWallpaper *HsScene::wallpaper() const
+{
+    return mWallpaper;
+}
+
+QList<HsPage *> HsScene::pages() const
+{
+    return mPages;
+}
+
+bool HsScene::addPage(HsPage *page)
+{
+    if (!page) {
+        return false;
+    }
+
+    if (mPages.contains(page)) {
+        return true;
+    }
+
+    mPages << page;
+    return true;
+}
+
+bool HsScene::removePage(HsPage *page)
+{
+    if (!page) {
+        return false;
+    }
+    return mPages.removeOne(page);
+}
+
+bool HsScene::setActivePage(HsPage *page)
+{
+    if (!page) {
+        return false;
+    }
+
+    if (!mPages.contains(page)) {
+        return false;
+    }
+
+    mActivePage = page;
+    return true;
+}
+
+bool HsScene::setActivePageIndex(int index)
+{
+    if (index < 0 || mPages.count() <= index) {
+        return false;
+    }
+    return setActivePage(mPages[index]);
+}
+
+HsPage *HsScene::activePage() const
+{
+    return mActivePage;
+}
+
+int HsScene::activePageIndex() const
+{
+    return mPages.indexOf(mActivePage);
+}
+
+void HsScene::setActiveWidget(HsWidgetHost *widget)
+{
+    mActiveWidget = widget;
+}
+
+HsWidgetHost *HsScene::activeWidget() const
+{
+    return mActiveWidget;
+}
+
+void HsScene::setOnline(bool online)
+{
+    mIsOnline = online;
+    foreach (HsPage *page, mPages) {
+        page->setOnline(online);
+    }
+}
+
+bool HsScene::isOnline()const
+{
+    return mIsOnline;
+}
+
+/*!
+    Singleton.
+*/
+HsScene *HsScene::instance()
+{
+    return mInstance;
+}
+
+HsScene *HsScene::takeInstance()
+{
+    HsScene *instance = mInstance;
+    mInstance = 0;
+    return instance;
+}
+ 
+void HsScene::setInstance(HsScene *instance)
+{
+    if (mInstance != instance) {
+        delete mInstance;
+        mInstance = instance; 
+    }    
+}
+
+/*!
+    Listens for application background/foreground changes.
+*/
+bool HsScene::eventFilter(QObject *watched, QEvent *event)
+{
+    switch (event->type()) {
+        case QEvent::ApplicationActivate:
+            mActivePage->showWidgets();
+            break;
+		case QEvent::ApplicationDeactivate:
+            mActivePage->hideWidgets();
+            break;
+        default:
+            break;
+	}
+    return QObject::eventFilter(watched, event);
+}
+
+HsScene::HsScene(QObject *parent)
+  : QObject(parent),
+    mDatabaseId(-1),
+    mWallpaper(0),
+    mActivePage(0),
+    mActiveWidget(0),
+    mIsOnline(true)
+{
+}
+
+/*!
+    Points to the scene instance.
+*/
+HsScene *HsScene::mInstance = 0;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/tsrc/t_hsapplication/t_hsapplicationexe/src/hsspinnerdialog_mock.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,61 @@
+/*
+* 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:
+*    Spinner dialog shown when setting new background image
+*
+*/
+
+#include "hsspinnerdialog.h"
+
+/*!
+    \internal
+    \class HsSpinnerDialog
+    \ingroup group_hsutils
+    \brief Spinner dialog, used when background image is changed. By default dialog is created with Qt::WA_DeleteOnClose attribute so dialog
+    is automatically deleted when closed.
+
+*/
+
+/*!
+    \internal
+    Constructor.
+
+    \a parent Owner.
+*/
+HsSpinnerDialog::HsSpinnerDialog(QGraphicsItem *parent)
+: HbDialog(parent)
+{
+}
+
+/*!
+    \internal
+*/
+HsSpinnerDialog::~HsSpinnerDialog()
+{
+}
+
+/*!
+    \internal
+*/
+void HsSpinnerDialog::start()
+{
+}
+
+/*!
+    \internal
+*/
+void HsSpinnerDialog::stop()
+{
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/tsrc/t_hsapplication/t_hsapplicationexe/src/hswallpaper_mock.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,216 @@
+/*
+* 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 <QVariantHash>
+#include <QGraphicsLinearLayout>
+
+#include <HbIconItem>
+
+#include "hswallpaper.h"
+#include "hsscene.h"
+#include "hspage.h"
+
+/*!
+
+*/
+
+/*!
+
+*/
+HsWallpaper::HsWallpaper(QGraphicsItem *parent)
+  : HbWidget(parent),
+    mIsDefaultImage(false),
+    mIconItem(0)
+{
+    setFlag(ItemHasNoContents);
+    setSizePolicy(QSizePolicy::Ignored,QSizePolicy::Ignored);
+
+    mIconItem = new HbIconItem();
+    QGraphicsLinearLayout *layout = new QGraphicsLinearLayout;
+    layout->setContentsMargins(0, 0, 0, 0);
+    layout->addItem(mIconItem);
+    setLayout(layout);
+}
+
+/*!
+
+*/
+HsWallpaper::~HsWallpaper()
+{
+}
+
+/*!
+
+*/
+void HsWallpaper::setImage(const QString &path)
+{
+    if (!path.isEmpty()) {
+        emit imageSet();
+    } else {
+        emit imageSetFailed();
+    }
+}
+
+void HsWallpaper::setImages(const QString &portraitFileName, const QString &landscapeFileName)
+{
+    Q_UNUSED(portraitFileName)
+    Q_UNUSED(landscapeFileName)
+    emit imageSet();
+}
+
+/*!
+
+*/
+void HsWallpaper::setDefaultImage()
+{
+}
+
+/*!
+
+*/
+void HsWallpaper::remove()
+{
+    mPortraitImagePath.clear();
+    mLandscapeImagePath.clear();
+}
+
+/*!
+
+*/
+bool HsWallpaper::setExistingImage()
+{
+    return true;
+}
+
+QString HsWallpaper::rootDirectory() const
+{
+    return QString();
+}
+
+/*!
+
+*/
+void HsWallpaper::onLoaderFinished()
+{
+    emit imageSet();
+}
+
+/*!
+
+*/
+void HsWallpaper::onLoaderFailed()
+{
+    emit imageSetFailed();
+}
+
+/*!
+
+*/
+void HsWallpaper::updateIconItem(Qt::Orientation orientation)
+{
+    Q_UNUSED(orientation);
+}
+
+/*!
+
+*/
+HsSceneWallpaper::HsSceneWallpaper(HsScene *scene, QGraphicsItem *parent)
+  : HsWallpaper(parent),
+    mScene(0)
+{
+    setScene(scene);
+}
+
+/*!
+
+*/
+HsSceneWallpaper::~HsSceneWallpaper()
+{
+}
+
+/*!
+
+*/
+void HsSceneWallpaper::setScene(HsScene *scene)
+{
+    Q_UNUSED(scene);
+}
+
+/*!
+
+*/
+QString HsSceneWallpaper::wallpaperDirectory() const
+{
+    return QString();
+}
+
+/*!
+
+*/
+QVariantHash HsSceneWallpaper::createTargets(const QString &sourcePath)
+{
+    Q_UNUSED(sourcePath);
+    return QVariantHash();
+}
+
+/*!
+ PAGE
+*/
+HsPageWallpaper::HsPageWallpaper(HsPage *page, QGraphicsItem *parent)
+  : HsWallpaper(parent),
+    mPage(0)
+{
+    setPage(page);
+}
+
+/*!
+
+*/
+HsPageWallpaper::~HsPageWallpaper()
+{
+}
+
+/*!
+
+*/
+void HsPageWallpaper::setPage(HsPage *page)
+{
+    if (!page) {
+        return;
+    }
+
+    mPage = page;
+    mId = page->databaseId();
+}
+
+/*!
+
+*/
+QString HsPageWallpaper::wallpaperDirectory() const
+{
+    return QString();
+}
+
+/*!
+
+*/
+QVariantHash HsPageWallpaper::createTargets(const QString &sourcePath)
+{
+    Q_UNUSED(sourcePath);
+    return QVariantHash();
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/tsrc/t_hsapplication/t_hsapplicationexe/src/hswidgetcomponent_mock.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,114 @@
+/*
+* 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 "hswidgetcomponent.h"
+
+/*!
+
+*/
+HsWidgetComponent::~HsWidgetComponent()
+{
+}
+
+/*!
+
+*/
+QString HsWidgetComponent::rootPath() const
+{
+    return mRootPath;
+}
+
+/*!
+
+*/
+QString HsWidgetComponent::uri() const
+{
+    return mUri;
+}
+
+
+bool HsWidgetComponent::isAvailable() const
+{
+    return  true;
+}
+/*!
+
+*/
+HsWidgetComponent::HsWidgetComponent(const QString &uri, QObject *parent)
+  : QObject(parent),
+    mUri(uri),
+    mState(Available)
+{
+}
+
+
+/*!
+
+*/
+void HsWidgetComponent::resolveRootPathAndTranslationFilename()
+{
+}
+
+/*!
+
+*/
+void HsWidgetComponent::installTranslator()
+{
+}
+
+/*!
+
+*/
+void HsWidgetComponent::uninstallTranslator()
+{
+}
+
+void HsWidgetComponent::emitAboutToUninstall()
+{
+    if (mState == Available) {
+        mState = Uninstalling;
+        emit aboutToUninstall();
+    }
+}
+void HsWidgetComponent::emitUninstalled()
+{
+    if (mState == Uninstalling) {
+        mState = Available;
+        emit uninstalled();
+    }
+}
+void HsWidgetComponent::emitUpdated()
+{
+    if (mState == Uninstalling) {
+        mState = Available;
+        emit updated();
+    }
+}
+void HsWidgetComponent::emitUnavailable()
+{
+    if (mState == Available) {
+        mState = Unavailable;
+        emit unavailable();
+    }
+}
+void HsWidgetComponent::emitAvailable()
+{
+    if (mState == Unavailable) {
+        mState = Available;
+        emit available();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/tsrc/t_hsapplication/t_hsapplicationexe/src/hswidgetcomponentregistry_mock.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,115 @@
+/*
+* 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 "hswidgetcomponentregistry.h"
+#include "hswidgetcomponent.h"
+#include "hswidgetcomponentdescriptor.h"
+#include "caentry.h"
+#include "hsscene.h"
+
+#include <HbMainWindow>
+#include <QCoreApplication>
+
+HsWidgetComponentRegistry *HsWidgetComponentRegistry::mInstance = 0;
+
+
+/*!
+    
+*/
+HsWidgetComponentRegistry* HsWidgetComponentRegistry::instance()
+{
+    if (!mInstance) {
+        mInstance = new HsWidgetComponentRegistry;
+        mInstance->setParent(QCoreApplication::instance());
+    }
+    return mInstance;
+}
+
+/*!
+    
+*/
+HsWidgetComponentRegistry::~HsWidgetComponentRegistry()
+{
+    qDeleteAll(mRegistry);
+}
+
+/*!
+*/
+HsWidgetComponent *HsWidgetComponentRegistry::component(const QString &uri)
+{
+ 	return new HsWidgetComponent(uri);
+}
+
+/*!
+*/
+void HsWidgetComponentRegistry::uninstallComponent(const HsWidgetComponentDescriptor &componentDescriptor)
+{
+    Q_UNUSED(componentDescriptor);
+}
+
+/*!
+
+*/
+HsWidgetComponentRegistry::HsWidgetComponentRegistry(QObject *parent)
+  : QObject(parent)
+{
+}
+
+/*!
+
+*/
+void HsWidgetComponentRegistry::handleEntryAdded(const CaEntry &entry, const QString &uri)
+{
+    Q_UNUSED(entry);
+    Q_UNUSED(uri);
+}
+
+/*!
+*/
+void HsWidgetComponentRegistry::handleEntryRemoved(const CaEntry &entry, const QString &uri)
+{
+    Q_UNUSED(entry);
+    Q_UNUSED(uri);
+}
+
+/*!
+
+*/
+void HsWidgetComponentRegistry::handleEntryUpdated(const CaEntry &entry, const QString &uri)
+{
+    Q_UNUSED(entry);
+    Q_UNUSED(uri);
+}
+
+/*!
+
+*/
+void HsWidgetComponentRegistry::registerService(const CaEntry &entry, const QString& uri, bool reset)
+{
+    Q_UNUSED(entry);
+    Q_UNUSED(uri);
+    Q_UNUSED(reset);
+}
+
+/*!
+
+*/
+void HsWidgetComponentRegistry::onEntryChanged(const CaEntry &entry, ChangeType changeType)
+{
+    Q_UNUSED(entry);
+    Q_UNUSED(changeType);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/tsrc/t_hsapplication/t_hsapplicationexe/src/hswidgethost_mock.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,247 @@
+/*
+* 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 <QGesture>
+
+#include <HbTouchArea>
+
+#include "hsscene.h"
+#include "hspage.h"
+#include "hswidgethost.h"
+#include "hswidgethostvisual.h"
+#include "hswidgettoucharea.h"
+
+HsWidgetHost::HsWidgetHost(int databaseId, QObject *parent)
+  : QObject(parent),
+    mDatabaseId(databaseId),
+    mVisual(new HsWidgetHostVisual),
+    mStateMachine(0),
+    mWidget(0),
+    mPage(0),
+    mComponent(0),
+    mIsFinishing(false)
+{
+}
+
+HsWidgetHost::~HsWidgetHost()
+{
+}
+
+HsWidgetHost *HsWidgetHost::createInstance(HsWidgetData &widgetData,
+                                           const QVariantHash &preferences)
+{
+    Q_UNUSED(widgetData);
+    Q_UNUSED(preferences);
+    return 0;
+}
+
+int HsWidgetHost::databaseId() const
+{
+    return mDatabaseId;
+}
+
+bool HsWidgetHost::setPage(HsPage *page)
+{
+    mPage = page;
+    return true;
+}
+
+HsPage *HsWidgetHost::page() const
+{
+    return mPage;
+}
+
+bool HsWidgetHost::loadPresentation()
+{
+    return true;
+}
+
+bool HsWidgetHost::loadPresentation(Qt::Orientation orientation)
+{
+    Q_UNUSED(orientation);
+    return true;
+}
+
+bool HsWidgetHost::savePresentation()
+{
+    return true;
+}
+
+bool HsWidgetHost::savePresentation(Qt::Orientation orientation)
+{
+    Q_UNUSED(orientation);
+    return true;
+}
+
+bool HsWidgetHost::savePresentation(HsWidgetPresentationData &presentation)
+{
+    Q_UNUSED(presentation);
+    return true;
+}
+
+bool HsWidgetHost::getPresentation(HsWidgetPresentationData &presentation)
+{
+    Q_UNUSED(presentation);
+    return true;
+}
+
+bool HsWidgetHost::removePresentation(Qt::Orientation orientation)
+{
+    Q_UNUSED(orientation);
+    return true;
+}
+
+void HsWidgetHost::startWidget(bool show)
+{
+    if (show) {
+        emit event_startAndShow();
+    } else {
+        emit event_startAndHide();
+    }
+}
+
+void HsWidgetHost::showWidget()
+{
+    emit event_show();
+}
+
+void HsWidgetHost::hideWidget()
+{
+    emit event_hide();
+}
+
+void HsWidgetHost::setOnline(bool online)
+{
+    Q_UNUSED(online);
+}
+
+void HsWidgetHost::remove()
+{
+}
+
+void HsWidgetHost::close()
+{
+}
+
+void HsWidgetHost::startDragEffect()
+{
+}
+
+void HsWidgetHost::startDropEffect()
+{
+}
+
+void HsWidgetHost::setupStates()
+{
+}
+
+bool HsWidgetHost::setProperty(const char *name, QMetaProperty &property)
+{
+    Q_UNUSED(name);
+    Q_UNUSED(property);
+    return true;
+}
+
+bool HsWidgetHost::setMethod(const char *signature, QMetaMethod &method)
+{
+    Q_UNUSED(signature);
+    Q_UNUSED(method);
+    return true;
+}
+
+bool HsWidgetHost::hasSignal(const char *signature)
+{
+    Q_UNUSED(signature);
+    return true;
+}
+
+bool HsWidgetHost::setPreferencesToWidget()
+{
+    return true;
+}
+
+void HsWidgetHost::action_connectComponent()
+{
+}
+
+void HsWidgetHost::action_disconnectComponent()
+{
+}
+
+void HsWidgetHost::action_load()
+{
+}
+
+void HsWidgetHost::action_unload()
+{
+}
+
+void HsWidgetHost::action_initialize()
+{
+}
+
+void HsWidgetHost::action_uninitialize()
+{
+}
+
+void HsWidgetHost::action_show()
+{
+}
+
+void HsWidgetHost::action_hide()
+{
+}
+
+void HsWidgetHost::action_finished()
+{
+    emit finished();
+}
+
+void HsWidgetHost::action_faulted()
+{
+    emit faulted();
+}
+
+void HsWidgetHost::action_remove()
+{
+}
+
+void HsWidgetHost::action_notifyRemove()
+{
+}
+
+void HsWidgetHost::onFinished()
+{
+    mIsFinishing = true;
+    emit event_finished();
+}
+
+void HsWidgetHost::onError()
+{
+    mIsFinishing = true;
+    emit event_faulted();
+}
+
+void HsWidgetHost::onSetPreferences(const QStringList &names)
+{
+    Q_UNUSED(names);
+}
+
+HsWidgetHostVisual *HsWidgetHost::visual() const
+{
+    return mVisual;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/tsrc/t_hsapplication/t_hsapplicationexe/src/hswidgethostvisual_mock.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,176 @@
+/*
+* 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 <QGraphicsLinearLayout>
+#include <QParallelAnimationGroup>
+#include <QPropertyAnimation>
+#include <QGraphicsDropShadowEffect>
+#include <QGraphicsSceneResizeEvent>
+#include <QGesture>
+#include <QGraphicsScene>
+
+#include "hswidgethostvisual.h"
+#include "hswidgethost.h"
+#include "hsscene.h"
+#include "hsconfiguration.h"
+#include "hswidgettoucharea.h"
+
+
+/*!
+    \class HsWidgetHostVisual
+    \ingroup group_hsdomainmodel
+    \brief Each widget is controlled by the home screen framework through a widget host.
+*/
+
+/*!
+    Constructs a new widget host with given \a databaseId and
+    \a parent item.
+*/
+HsWidgetHostVisual::HsWidgetHostVisual(QGraphicsItem *parent)
+  : HbWidget(parent),mWidget(0)
+  
+{
+    setFlag(QGraphicsItem::ItemClipsChildrenToShape);
+    setFlag(QGraphicsItem::ItemHasNoContents);
+
+    grabGesture(Qt::TapGesture);
+    grabGesture(Qt::TapAndHoldGesture);
+    grabGesture(Qt::PanGesture);
+    grabGesture(Qt::PinchGesture);
+    grabGesture(Qt::SwipeGesture);
+    grabGesture(Qt::CustomGesture);
+    
+    setupTouchArea();
+    setupEffects();
+    
+    setMinimumSize(HSCONFIGURATION_GET(minimumWidgetSizeInPixels));
+    setMaximumSize(HSCONFIGURATION_GET(maximumWidgetSizeInPixels));
+    
+}
+
+/*!
+    Destructor.
+*/
+HsWidgetHostVisual::~HsWidgetHostVisual()
+{
+}
+
+
+/*!
+    Reimplemented from QGraphicsItem. Returns the shape of the
+    this widget host. The shape is computed based on the contained
+    widget.
+*/
+QPainterPath HsWidgetHostVisual::shape() const
+{
+    QPainterPath path;
+
+    if (mWidget) {
+        QRectF currRect = rect();
+        path = mWidget->shape();
+
+        QRectF pathRect(path.boundingRect());
+
+        if (pathRect.width() > currRect.width()
+            || pathRect.height() > currRect.height()) {
+            QPainterPath newPath(currRect.topLeft());
+            newPath.addRect(currRect);
+            path = path.intersected(newPath);
+        }
+    }
+    return path;
+}
+void HsWidgetHostVisual::setWidget(QObject *widget)
+{
+    mWidget = qobject_cast<QGraphicsWidget *>(widget);
+    if (mWidget) {
+        mWidget->installEventFilter(this);
+        mWidget->setParentItem(this);
+        setNewSize(mWidget->size());
+    }
+}
+
+void HsWidgetHostVisual::setVisualModel(HsWidgetHost *model)
+{
+    mVisualModel = model;
+}
+HsWidgetHost *HsWidgetHostVisual::visualModel() const
+{
+    return mVisualModel;
+}
+/*!
+    Starts the drag effect.
+*/
+void HsWidgetHostVisual::startDragEffect()
+{
+}
+
+/*!
+    Starts the drop effect.
+*/
+void HsWidgetHostVisual::startDropEffect()
+{
+}
+/*!
+    \fn HsWidgetHost::resized()
+    Notifies the home screen framework that this widget
+    host has resized itself.
+*/
+
+/*!
+    Reimplemented from QObject for monitoring changes in 
+    contained widget's size.
+*/
+bool HsWidgetHostVisual::eventFilter(QObject *watched, QEvent *event)
+{
+    return HbWidget::eventFilter(watched, event);
+}
+
+/*!
+    Reimplemented from HbWidget for pan gesture handling.
+*/
+void HsWidgetHostVisual::gestureEvent(QGestureEvent *event)
+{
+}
+
+/*!
+    \fn HsWidgetHostVisual::mousePressEvent(QGraphicsSceneMouseEvent *)
+    Reimplemented from QGraphicsItem for eating all mouse presses.
+*/
+
+/*!
+    Configures the touch are for this widget host.
+*/
+void HsWidgetHostVisual::setupTouchArea()
+{
+}
+
+/*!
+    Configures the effects for this widget host.
+*/
+void HsWidgetHostVisual::setupEffects()
+{
+}
+
+
+/*!
+    Resizes this widget host to the given \a size.
+*/
+void HsWidgetHostVisual::setNewSize(const QSizeF &size)
+{
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/tsrc/t_hsapplication/t_hsapplicationexe/src/t_hsapplication.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,71 @@
+/*
+* 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:  Main test class for hsutils library.
+*
+*/
+
+
+#include <qservicemanager.h>
+#include <hbmainwindow.h>
+#include <hbinstance.h> 
+#include "t_hsapplication.h"
+
+QTM_USE_NAMESPACE
+
+const QString xmlPath = "./hsresources/plugins/stateplugins/";
+const QString mockedStatePluginsXml = "mockstateplugins.xml";
+
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsapplication::initTestCase()
+{
+    //Let's add mocked test service to default interface implementation 
+    //before testcases are run. This trick is needed especially in Symbian side
+    //since default runtime is also seen due to exported resources for hsapplication.
+    QApplication::addLibraryPath(QDir(xmlPath).absolutePath());
+    QServiceManager manager;
+    qDebug() << "t_hsapplication::initTestCase addService:" << manager.addService(xmlPath + mockedStatePluginsXml);
+    
+    qDebug() << "setInterfaceDefault(HsLoadSceneState): " << manager.setInterfaceDefault("mockstateplugins", "com.nokia.homescreen.state.HsLoadSceneState");
+    qDebug() << "setInterfaceDefault(HsIdleState): " << manager.setInterfaceDefault("mockstateplugins", "com.nokia.homescreen.state.HsIdleState");
+    qDebug() << "setInterfaceDefault(HsAppLibraryState): " << manager.setInterfaceDefault("mockstateplugins", "com.nokia.homescreen.state.HsAppLibraryState");
+    qDebug() << "setInterfaceDefault(HsMenuWorkerState): " << manager.setInterfaceDefault("mockstateplugins", "com.nokia.homescreen.state.HsMenuWorkerState");
+    qDebug() << "setInterfaceDefault(HsRootState): " << manager.setInterfaceDefault("mockstateplugins", "com.nokia.homescreen.state.HsRootState");
+    qDebug() << "setInterfaceDefault(HsBackupRestoreState): " << manager.setInterfaceDefault("mockstateplugins", "com.nokia.homescreen.state.HsBackupRestoreState");
+    
+    HbInstance::instance();
+    mWindow = new HbMainWindow;
+    #ifndef NFT
+//        QDir::setCurrent("C:/hsresources/testresources");
+    #else      
+//        QDir::setCurrent("Z:/hsresources/testresources");
+    #endif   
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsapplication::cleanupTestCase()
+{
+    QServiceManager manager;
+    manager.removeService("mockstateplugins");
+    QApplication::removeLibraryPath(xmlPath);
+
+    delete mWindow;
+        mWindow = 0;
+}
+
+QTEST_MAIN(t_hsapplication)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/tsrc/t_hsapplication/t_hsapplicationexe/src/t_hsrecoverymanager.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,56 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#include <e32property.h>
+
+#include "t_hsapplication.h"
+#include "hsrecoverymanager.h"
+
+const TInt KPSCategoryUid(0x20022F36);
+const TInt KPSCrashCountKey(1);
+const int KResetCrashCountInterval(60000);
+
+void t_hsapplication::testHsRecoveryManagerConstruction()
+{
+    HsRecoveryManager rm;
+    QVERIFY(rm.mTimer.isSingleShot());
+    QCOMPARE(rm.mTimer.interval(), KResetCrashCountInterval);
+}
+
+void t_hsapplication::testHsRecoveryManagerCrashCount()
+{    
+    TInt storedCount = 0;
+    RProperty::Get(TUid::Uid(KPSCategoryUid), KPSCrashCountKey, storedCount);
+ 
+    HsRecoveryManager rm;
+    rm.resetCrashCount();
+    QCOMPARE(rm.crashCount(), 0);
+    
+    RProperty::Set(TUid::Uid(KPSCategoryUid), KPSCrashCountKey, storedCount); 
+}
+
+void t_hsapplication::testHsRecoveryManagerRestoreRomDatabase()
+{
+    HsRecoveryManager rm;
+    rm.restoreRomDatabase();
+}
+
+void t_hsapplication::testHsRecoveryManagerExecute()
+{
+    HsRecoveryManager rm;
+    rm.execute();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/tsrc/t_hsapplication/t_hsapplicationexe/src/t_hsstatemachine.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,114 @@
+/*
+* 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:  Main test class for test library.
+*
+*/
+
+#include <QStateMachine>
+#include <QSignalSpy>
+#include <QDir>
+#include <hbinstance.h>
+
+#include "t_hsapplication.h"
+#include "hsstatemachine.h"
+#include "hsapp_defs.h"
+#include <qservicemanager.h>
+
+QTM_USE_NAMESPACE
+
+const QString xmlPath = "./hsresources/plugins/stateplugins/";
+const QString mockedStatePluginsXml = "mockstateplugins.xml";
+
+
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsapplication::testConstruction()
+{
+    HsStateMachine* rt = new HsStateMachine();
+    QVERIFY(rt);
+    QVERIFY(rt->mContentService);    
+    delete rt;
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsapplication::testStartStop()
+{
+    HsStateMachine* rt = new HsStateMachine();
+    QObject::connect(rt, SIGNAL(event_exit()), rt, SIGNAL(finished()), Qt::QueuedConnection);
+    QSignalSpy startSpy(rt, SIGNAL(started()));
+    QSignalSpy stopSpy(rt,SIGNAL(stopped()));
+    rt->start();
+    qApp->processEvents();
+    rt->stop();
+    qApp->processEvents();
+	
+    QVERIFY(startSpy.count());
+    QVERIFY(stopSpy.count());
+    
+    delete rt;
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsapplication::testOnIdleStateEntered()
+{
+    HsStateMachine rt;
+    rt.onIdleStateEntered();
+    QVERIFY(rt.mIdleStateActive);
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsapplication::testOnIdleStateExited()
+{
+    HsStateMachine rt;
+    rt.onIdleStateExited();
+    QVERIFY(!rt.mIdleStateActive);
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsapplication::testRuntimeEventFilter()
+{
+    HsStateMachine rt;
+    QVERIFY(!rt.eventFilter(0,&QEvent(QEvent::ActionAdded)));
+
+    QEvent *e = new QEvent(QEvent::ApplicationActivate);
+    QVERIFY(!rt.eventFilter(0,e));
+    
+    rt.onIdleStateEntered();
+    
+    delete e;    
+
+    e = new QEvent(QEvent::ApplicationDeactivate);
+    QVERIFY(!rt.eventFilter(0,e));
+    delete e;
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsapplication::testActivityRequested()
+{
+    HsStateMachine rt;
+    rt.activityRequested(QString());
+    rt.activityRequested(Hs::groupAppLibRecentView);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/tsrc/t_hsapplication/t_hsapplicationexe/src/testhomescreen.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,96 @@
+/*
+* 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:  Main test class for hsutils library.
+*
+*/
+
+
+#include "t_hsapplication.h"
+#include "hshomescreen.h"
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsapplication::testCreateHomescreen()
+{
+    HsHomeScreen hs;
+    QVERIFY(hs.mRuntime);
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsapplication::testHomescreenStart()
+{
+
+    {
+        HsHomeScreen hs;
+        QSignalSpy spy(&hs,SIGNAL(exit()));
+        hs.start();
+        qApp->processEvents();
+        QVERIFY(spy.count() == 0);
+    }
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsapplication::testHomescreenStop()
+{
+    {
+        //Improves coverage test: return at the beginning of the stop()
+        HsHomeScreen hs;
+        hs.stop();
+    }
+
+    {
+        HsHomeScreen hs;
+        hs.start();
+        qApp->processEvents();
+        hs.stop();
+    }
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsapplication::testOnRuntimeStarted()
+{
+    HsHomeScreen hs;
+    hs.onRuntimeStarted();
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsapplication::testOnRuntimeStopped()
+{
+    HsHomeScreen hs;
+    QSignalSpy spy(&hs,SIGNAL(exit()));
+    hs.onRuntimeStopped();
+    QVERIFY(spy.count() == 1);
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsapplication::testEventFilter()
+{
+    HsHomeScreen hs;
+    QVERIFY(!hs.eventFilter(0,&QEvent(QEvent::ActionAdded)));
+
+    QEvent *e = new QEvent(QEvent::Close);
+    QVERIFY(hs.eventFilter(0,e));
+    delete e;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/tsrc/t_hsapplication/t_hsapplicationexe/src/testhomescreenclientserviceprovider.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,102 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Main test class for HsHomeScreenClientServiceProvider library.
+*
+*/
+
+#include <QSignalSpy>
+#include "t_hsapplication.h"
+#include "hshomescreenclientserviceprovider.h"
+#include "hswallpaper.h"
+#include "hsscene.h"
+#include "hspage.h"
+#include "hsconfiguration.h"
+#include "hswidgetcomponentdescriptor.h"
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsapplication::testCreateClientServiceProvider()
+{
+    HsHomeScreenClientServiceProvider *provider = new HsHomeScreenClientServiceProvider();
+    QVERIFY(provider);
+    delete provider;
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsapplication::testAddWidget()
+{
+    HsHomeScreenClientServiceProvider *provider = new HsHomeScreenClientServiceProvider();
+    QVERIFY(provider);
+
+    QVERIFY(!provider->addWidget(QString(), QVariantHash()));
+    QVERIFY(provider->addWidget(QString("NotEmpty"), QVariantHash()));
+
+    delete provider;
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsapplication::testSetWallpaper()
+{
+    HsConfiguration::setInstance(new HsConfiguration);
+    HsScene *scene = new HsScene;
+    HsScene::setInstance(scene);
+    HsPage *page = new HsPage;
+    page->load();
+    scene->addPage(page);
+    scene->setActivePage(page);
+    
+    HsHomeScreenClientServiceProvider *provider = new HsHomeScreenClientServiceProvider();
+    QVERIFY(provider);
+        
+    provider->setWallpaper(QString());
+    QVERIFY(provider->mWallpaper);
+
+    provider->setWallpaper("default_portrait.png");
+    QVERIFY(provider->mWallpaper);
+
+    delete provider;
+    delete scene;
+}
+
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsapplication::testWidgetComponentDescriptor()
+{
+    HsHomeScreenClientServiceProvider *provider = new HsHomeScreenClientServiceProvider();
+    QVERIFY(provider);
+
+    QVERIFY(provider->widgetComponentDescriptor(QVariantHash()).description().isEmpty());
+
+    delete provider;
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsapplication::testWidgetUninstalled()
+{
+    HsHomeScreenClientServiceProvider *provider = new HsHomeScreenClientServiceProvider();
+    QVERIFY(provider);
+        
+    QVERIFY(provider->widgetUninstalled(QVariantHash()));
+
+    delete provider;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/tsrc/t_hsapplication/t_hsapplicationexe/t_hsapplicationexe.pri	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,78 @@
+#
+# 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:
+#
+
+
+win32:{
+    HEADERS += ./inc/t_hsapplication.h \
+               ../../../inc/hshomescreen.h \
+               ../../../inc/hsstatemachine.h
+
+    SOURCES += ./src/t_hsapplication.cpp \
+               ./src/testhomescreen.cpp \
+               ./src/t_hsstatemachine.cpp \
+               ../../../src/hshomescreen.cpp \
+               ../../../src/hsstatemachine.cpp
+}
+
+symbian:{
+    HEADERS += ./inc/*.h \
+               ./../../../inc/hshomescreenclientserviceprovider.h \
+               ./../../../inc/hshomescreen.h \
+               ./../../../inc/hsstatemachine.h \
+               ./../../../inc/hsrecoverymanager.h \
+               ./../../../../hsdomainmodel/inc/hsdatabase.h \
+               ./../../../../hsdomainmodel/inc/hsbackuprestoreobserver.h \
+               ./../../../../hsdomainmodel/inc/hsbackuprestoreobserver_p.h \
+               ./../../../../hsdomainmodel/inc/hsshortcutservice.h \
+               ./../../../../hsdomainmodel/inc/hsshortcutservice_p.h \
+               ./../../../../hsdomainmodel/inc/hswidgetcomponentdescriptor.h \
+               ./../../../../hsdomainmodel/inc/hscontentservice.h \
+               ./../../../../hsdomainmodel/inc/hsconfiguration.h \
+               ./../../../../hsdomainmodel/inc/hsgui.h \
+               ./../../../../hsdomainmodel/inc/hspage.h \
+               ./../../../../hsdomainmodel/inc/hspagevisual.h \
+               ./../../../../hsdomainmodel/inc/hspagetoucharea.h \
+               ./../../../../hsdomainmodel/inc/hsscene.h \
+               ./../../../../hsdomainmodel/inc/hswallpaper.h \
+               ./../../../../hsdomainmodel/inc/hswidgetcomponent.h \
+               ./../../../../hsdomainmodel/inc/hswidgetcomponentregistry.h \
+               ./../../../../hsdomainmodel/inc/hswidgethost.h \
+               ./../../../../hsdomainmodel/inc/hswidgethostvisual.h \
+               ./../../../../hsdomainmodel/inc/hswidgettoucharea.h \
+               ./../../../../hsdomainmodel/inc/hsbackuprestoreactivecallback.h \
+               ./../../../../hsutils/inc/hsspinnerdialog.h \
+               ./../../../../hsutils/inc/hssnapline.h        
+
+    SOURCES += ./src/*.cpp \
+               ./../../../src/hshomescreenclientserviceprovider.cpp \
+               ./../../../src/hshomescreen.cpp \
+               ./../../../src/hsstatemachine.cpp \
+               ./../../../src/hsrecoverymanager.cpp \
+               ./../../../../hsdomainmodel/src/hswidgetcomponentdescriptor.cpp \
+               ./../../../../hsdomainmodel/src/hspagetoucharea.cpp \
+               ./../../../../hsdomainmodel/src/hswidgettoucharea.cpp \
+               ./../../../../hsdomainmodel/src/hsshortcutservice.cpp \
+               ./../../../../hsdomainmodel/src/hsdatabase.cpp \
+               ./../../../../hsdomainmodel/src/hsbackuprestoreobserver.cpp \
+               ./../../../../hsdomainmodel/src/hsbackuprestoreactivecallback.cpp \
+               ./../../../../hsdomainmodel/src/hswidgetpositioningonwidgetadd.cpp \
+               ./../../../../hsutils/src/hsmenueventfactory.cpp \
+               ./../../../../hsutils/src/hswidgetpositioningonorientationchange.cpp \
+               ./../../../../hsutils/src/hswidgetpositioningonwidgetmove.cpp \
+               ./../../../../hsutils/src/hsmenueventtransition.cpp \
+               ./../../../../hsutils/src/hsmenuevent.cpp \
+               ./../../../../hsutils/src/hssnapline.cpp               
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/tsrc/t_hsapplication/t_hsapplicationexe/t_hsapplicationexe.pro	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,89 @@
+#
+# 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:
+#
+
+TEMPLATE = app
+
+CONFIG(debug, debug|release) {    
+    LIBS += -L../../../../../../bin/debug -lhsdomainmodel
+    LIBS += -L../../../../../../bin/debug -lhsutils
+    DESTDIR = debug
+    
+}
+else {    
+    LIBS += -L../../../../../../bin/release -lhsdomainmodel
+    LIBS += -L../../../../../../bin/release -lhsutils
+    DESTDIR = release
+}
+
+CONFIG += debug_and_release \
+          console \
+          hb \
+          mobility
+
+MOBILITY = serviceframework publishsubscribe
+
+QT += testlib \
+      xml \
+      sql
+
+DEFINES += HOMESCREEN_TEST \
+           HSDOMAINMODEL_TEST \
+           HSUTILS_TEST
+
+coverage:DEFINES += COVERAGE_MEASUREMENT
+
+DEPENDPATH += .\
+              ./src \
+              ../../../src \
+              ../../../inc
+
+INCLUDEPATH += .\
+                ./inc \
+                ../../../inc \
+                ../../../../inc \
+                ../../../../hsutils/inc \
+                ../../../../hsdomainmodel/inc
+                
+win32: {
+    INCLUDEPATH += ../../../../../../homescreensrv/homescreensrv_plat/homescreen_information_api/inc
+}                
+
+symbian: {
+    CONFIG += symbian_test
+    CONFIG -= hb
+    load(hb.prf)
+    CONFIG -= symbian_i18n
+    SYMBIAN_PLATFORMS = WINSCW ARMV5
+
+    TARGET.UID3 = 0x20022F5F
+    TARGET.CAPABILITY = CAP_APPLICATION AllFiles
+    TARGET.EPOCHEAPSIZE = 0x20000 0x1000000 // 128kB - 16MB
+    
+    INCLUDEPATH += $${EPOCROOT}sf/mw/homescreensrv/homescreensrv_plat/contentstorage_api \
+               $${EPOCROOT}sf/mw/homescreensrv/contentstorage/caclient/inc \
+               $${EPOCROOT}sf/mw/homescreensrv/contentstorage/caclient/stub/inc
+    LIBS +=  -lxqservice -lxqserviceutil -lXQKeyCapture -labclient -lxqsettingsmanager
+
+    include(installs_symbian.pri)
+    
+    MMP_RULES += SMPSAFE
+}
+
+include(t_hsapplicationexe.pri)
+
+win32:include(installs_win32.pri)
+symbian:include(installs_symbian.pri)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/tsrc/tsrc.pro	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,24 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+TEMPLATE = subdirs
+SUBDIRS  = t_hsapplication
+           
+CONFIG  += ordered
+
+symbian: {
+    CONFIG += symbian_test
+}
--- a/homescreenapp/hsapplicationlauncher/group/hsapplicationlauncher.mmp	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/hsapplicationlauncher/group/hsapplicationlauncher.mmp	Mon Oct 04 00:07:25 2010 +0300
@@ -47,4 +47,5 @@
 
 LANG			SC
 
+SMPSAFE
 
--- a/homescreenapp/hsapplicationlauncher/src/hsapplicationlauncher.cpp	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/hsapplicationlauncher/src/hsapplicationlauncher.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -235,7 +235,7 @@
 // From CActive.
 // -----------------------------------------------------------------------------
 //
-TInt CHsLaunch::RunError( TInt aError )
+TInt CHsLaunch::RunError( TInt /*aError*/ )
     {
     /* Shutdown. This application
      * will be restarted by startup sw. */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplicationlauncher/tsrc/t_hsapplicationlauncher/inc/t_hsapplicationlauncher.h	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,68 @@
+/*
+* 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:  Test class for hsapplicationlauncher
+*
+*/
+
+#include <QtTest/QtTest>
+
+/**
+* @test Test class for homescreen::hsapplicationlauncher modules.
+*/
+class t_hsapplicationlauncher : public QObject
+{
+    Q_OBJECT
+
+private slots:
+
+    /**
+     * initialize
+     */
+    void initTestCase();
+    void cleanupTestCase();
+
+    /**
+     * hsapplicationlauncher.cpp
+     */
+    void testActivate();
+    void testRunL();
+    void testInitProcessMonitorL();
+    void testDoCancel();
+    void testShutdownApp();
+    void testRunError();
+    void testListeningLanguageSelection();
+    void testHandleNotifyInt();
+    void testStartHomeScreen();
+    void testProcessEnded();
+    void testProcessMonitoringError();
+    void testSystemShutdownEvent();
+    void testIsLanguageSelectedL();
+    
+    /**
+     * hsprocessmonitor.cpp
+     */
+    void testProcessMonitorRunL();
+    void testProcessMonitorDoCancel();
+    void testProcessMonitorRunError();
+    
+    /**
+	 * hsshutdownmonitor.cpp
+	 */
+	 void testShutDownMonitorRunL();
+	 void testShutDownMonitorDoCancel();
+	 void testShutDownMonitorRunError();
+
+
+private:    
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplicationlauncher/tsrc/t_hsapplicationlauncher/sis/t_hsapplicationlauncher.pkg	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,35 @@
+;
+; 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:
+;
+
+; Language
+&EN
+
+; SIS header: name, uid, version
+#{"t_hsapplicationlauncher"},(0x20022F6E),1,0,0
+
+; Localised Vendor name
+%{"Nokia"}
+
+; Unique Vendor name
+:"Nokia"
+
+; Supports S60 5th Edition
+[0x1028315F], 0, 0, 0, {"S60ProductID"}
+
+; HS application's unittest
+"/epoc32/release/armv5/urel/t_hsapplicationlauncher.exe"                         - "c:/sys/bin/t_hsapplicationlauncher.exe"
+"/epoc32/data/z/private/10003a3f/import/apps/t_hsapplicationlauncher_reg.rsc"    - "c:/private/10003a3f/import/apps/t_hsapplicationlauncher_reg.rsc"
+"/epoc32/data/z/resource/apps/t_hsapplicationlauncher.rsc"                       - "c:/resource/apps/t_hsapplicationlauncher.rsc"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplicationlauncher/tsrc/t_hsapplicationlauncher/sis/t_hsapplicationlauncher_sisx.bat	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,30 @@
+@rem
+@rem Copyright (c) 2009 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 t_hsapplicationlauncher.sisx del t_hsapplicationlauncher.sisx
+
+makesis t_hsapplicationlauncher.pkg
+signsis t_hsapplicationlauncher.sis t_hsapplicationlauncher.sisx ../../../../internal/sis/rd.cer ../../../../internal/sis/rd-key.pem
+
+if exist t_hsapplicationlauncher.sisx (
+echo t_hsapplicationlauncher.sisx creation SUCCEEDED
+del t_hsapplicationlauncher.sis
+)
+
+if not exist t_hsapplicationlauncher.sisx (
+echo t_hsapplicationlauncher.sisx creation FAILED
+)
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplicationlauncher/tsrc/t_hsapplicationlauncher/src/rprocess_mock.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,80 @@
+/*
+* 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 "e32std.h"
+
+TInt RProcess::Create(const TDesC& aFileName,const TDesC& aCommand,TOwnerType aType)
+{
+    return KErrNone;
+}
+
+TInt RProcess::Open(const TDesC &aName,TOwnerType aType)
+{
+    return KErrNone;
+}
+
+TInt RProcess::Open(TProcessId aId,TOwnerType aType)
+{
+    return KErrNone;
+}
+   
+void RProcess::Resume()
+{               
+}
+
+TExitType RProcess::ExitType() const
+{
+    return TExitType();       
+}
+
+TUidType RProcess::Type() const
+{
+    return TUidType();
+}
+
+TProcessId RProcess::Id() const
+{
+    return 0;
+}
+
+void RProcess::Rendezvous(TRequestStatus& aStatus) const
+{
+    aStatus = KRequestPending;
+    return;
+}
+
+TInt RProcess::RendezvousCancel(TRequestStatus& aStatus) const
+{
+    return KErrNone;
+}
+
+void RProcess::Rendezvous(TInt aReason)
+{
+    
+}
+
+TVendorId RProcess::VendorId() const
+{
+    TVendorId vi(0);
+    return vi;
+}
+
+void User::WaitForRequest(TRequestStatus& aStatus)
+{
+    aStatus = KErrNone;
+    return;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplicationlauncher/tsrc/t_hsapplicationlauncher/src/rssmstateawaresession_mock.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,67 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#include <ssm/ssmstateawaresession.h>
+#include <ssm/ssmdomaindefs.h>
+#include <ssm/ssmstate.h>
+#include <ssm/ssmsubstates.hrh>
+
+static TSsmState iState(ESsmNormal, ESsmNormalSubState);
+
+RSsmStateAwareSession::RSsmStateAwareSession()
+{
+
+}
+ 
+TInt RSsmStateAwareSession::Connect(TDmDomainId aId)
+{
+	TDmDomainId value = aId;
+	return KErrNone;
+}
+
+TSsmState RSsmStateAwareSession::State() const
+{
+	return iState;
+}
+
+void RSsmStateAwareSession::AcknowledgeAndRequestStateNotification(TInt aError, TRequestStatus& aStatus)
+{
+    (void)aError;
+    TRequestStatus* stat = &aStatus;
+    User::RequestComplete( stat, KErrNone);
+}
+
+void RSsmStateAwareSession::AcknowledgeStateNotification(TInt aError)
+{
+    (void)aError;
+}
+
+void RSsmStateAwareSession::Close()
+{
+
+}	
+
+void RSsmStateAwareSession::RequestStateNotification(TRequestStatus& aStatus)
+{
+    TRequestStatus* stat = &aStatus;
+    User::RequestComplete( stat, KErrNone);
+}
+
+void RSsmStateAwareSession::RequestStateNotificationCancel()
+{    
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplicationlauncher/tsrc/t_hsapplicationlauncher/src/t_hsapplicationlauncher.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,346 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Main test class for hsapplicationlauncher library.
+*
+*/
+
+#include <e32base.h>
+#include <e32property.h>
+#include "t_hsapplicationlauncher.h"
+#include "hsapplicationlauncher.h"
+
+const TInt KPSCategoryUid(0x20022F36);
+const TInt KPSCrashCountKey(1);
+
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsapplicationlauncher::initTestCase()
+{
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsapplicationlauncher::cleanupTestCase()
+{
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsapplicationlauncher::testActivate()
+{
+    CHsLaunch *hsApplicationLauncher = 0;
+    TRAPD(errNo, hsApplicationLauncher = CHsLaunch::NewL());
+    QCOMPARE(errNo, KErrNone);
+    hsApplicationLauncher->Activate();        
+    delete hsApplicationLauncher;    
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsapplicationlauncher::testRunL()
+{
+    CHsLaunch *hsApplicationLauncher = 0;
+    TRAPD(errNo, hsApplicationLauncher = CHsLaunch::NewL());
+    QCOMPARE(errNo, KErrNone);
+    hsApplicationLauncher->Activate();     
+    hsApplicationLauncher->RunL();
+    delete hsApplicationLauncher;    
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsapplicationlauncher::testInitProcessMonitorL()
+{
+    CHsLaunch *hsApplicationLauncher = 0;
+    TRAPD(errNo, hsApplicationLauncher = CHsLaunch::NewL());
+    QCOMPARE(errNo, KErrNone);
+    hsApplicationLauncher->Activate();
+    hsApplicationLauncher->InitProcessMonitorL(0);
+    QVERIFY(hsApplicationLauncher->iProcessMonitor);
+    hsApplicationLauncher->InitProcessMonitorL(0);
+    QVERIFY(hsApplicationLauncher->iProcessMonitor);
+    delete hsApplicationLauncher;    
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsapplicationlauncher::testDoCancel()
+{
+    CHsLaunch *hsApplicationLauncher = 0;
+    TRAPD(errNo, hsApplicationLauncher = CHsLaunch::NewL());
+    QCOMPARE(errNo, KErrNone);
+    hsApplicationLauncher->Activate();
+    hsApplicationLauncher->InitProcessMonitorL(0);    
+    hsApplicationLauncher->DoCancel();
+    delete hsApplicationLauncher;    
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsapplicationlauncher::testShutdownApp()
+{
+    CHsLaunch *hsApplicationLauncher = 0;
+    TRAPD(errNo, hsApplicationLauncher = CHsLaunch::NewL());
+    QCOMPARE(errNo, KErrNone);
+    hsApplicationLauncher->Activate();
+    hsApplicationLauncher->ShutdownApp(KErrGeneral);
+    QVERIFY(hsApplicationLauncher->iApplicationReturnValue == KErrGeneral);
+    QCOMPARE(hsApplicationLauncher->ApplicationReturnValue(), KErrGeneral);
+    delete hsApplicationLauncher;
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsapplicationlauncher::testRunError()
+{
+    CHsLaunch *hsApplicationLauncher = 0;
+    TRAPD(errNo, hsApplicationLauncher = CHsLaunch::NewL());
+    QCOMPARE(errNo, KErrNone);
+    hsApplicationLauncher->Activate();
+    hsApplicationLauncher->RunError(KErrGeneral);
+    QVERIFY(hsApplicationLauncher->iApplicationReturnValue == KErrGeneral);
+    delete hsApplicationLauncher;
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsapplicationlauncher::testListeningLanguageSelection()
+{
+    CHsLaunch *hsApplicationLauncher = 0;
+    TRAPD(errNo, hsApplicationLauncher = CHsLaunch::NewL());
+    QCOMPARE(errNo, KErrNone);
+    hsApplicationLauncher->Activate();
+    hsApplicationLauncher->StartListeningLanguageSelectionL();
+    QVERIFY(hsApplicationLauncher->iCenRepNotifyHandler);
+    hsApplicationLauncher->StopListeningLanguageSelection();
+    QVERIFY(!hsApplicationLauncher->iCenRepNotifyHandler);
+    delete hsApplicationLauncher;
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsapplicationlauncher::testHandleNotifyInt()
+{
+    CHsLaunch *hsApplicationLauncher = 0;
+    TRAPD(errNo, hsApplicationLauncher = CHsLaunch::NewL());
+    QCOMPARE(errNo, KErrNone);
+    hsApplicationLauncher->Activate();
+    hsApplicationLauncher->StartListeningLanguageSelectionL();
+    hsApplicationLauncher->HandleNotifyInt(0x00000007, 1);
+    QVERIFY(!hsApplicationLauncher->iCenRepNotifyHandler);
+    hsApplicationLauncher->HandleNotifyInt(0x00000008, 1);
+    QVERIFY(!hsApplicationLauncher->iCenRepNotifyHandler);    
+    delete hsApplicationLauncher;
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsapplicationlauncher::testStartHomeScreen()
+{
+    CHsLaunch *hsApplicationLauncher = 0;
+    TRAPD(errNo, hsApplicationLauncher = CHsLaunch::NewL());
+    QCOMPARE(errNo, KErrNone);
+    hsApplicationLauncher->Activate();
+    hsApplicationLauncher->StartHomeScreen();
+    QVERIFY(hsApplicationLauncher->iProcessMonitor);
+    delete hsApplicationLauncher;
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsapplicationlauncher::testProcessEnded()
+{
+    CHsLaunch *hsApplicationLauncher = 0;
+    TRAPD(errNo, hsApplicationLauncher = CHsLaunch::NewL());
+    QCOMPARE(errNo, KErrNone);
+
+    TExitCategoryName panicString;
+    hsApplicationLauncher->ProcessEnded(EExitPanic, KErrNone, panicString);
+    TInt crashCount = 0;
+    RProperty::Get(TUid::Uid(KPSCategoryUid), KPSCrashCountKey, crashCount);
+    QVERIFY(crashCount == 1);
+
+    if(hsApplicationLauncher->IsActive())
+    {
+        hsApplicationLauncher->Cancel();
+    }
+
+    hsApplicationLauncher->ProcessEnded(EExitKill, KErrGeneral, panicString);
+    RProperty::Get(TUid::Uid(KPSCategoryUid), KPSCrashCountKey, crashCount);
+    QVERIFY(crashCount == 2);    
+
+    if(hsApplicationLauncher->IsActive())
+    {
+        hsApplicationLauncher->Cancel();
+    }
+
+    hsApplicationLauncher->ProcessEnded(EExitTerminate, KErrGeneral, panicString);
+    RProperty::Get(TUid::Uid(KPSCategoryUid), KPSCrashCountKey, crashCount);
+    QVERIFY(crashCount == 2);
+    
+    delete hsApplicationLauncher;
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsapplicationlauncher::testProcessMonitoringError()
+{
+    CHsLaunch *hsApplicationLauncher = 0;
+    TRAPD(errNo, hsApplicationLauncher = CHsLaunch::NewL());
+    QCOMPARE(errNo, KErrNone);
+    hsApplicationLauncher->Activate();
+    hsApplicationLauncher->ProcessMonitoringError(KErrGeneral);
+    QVERIFY(hsApplicationLauncher->iApplicationReturnValue == KErrGeneral);
+    delete hsApplicationLauncher;
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsapplicationlauncher::testSystemShutdownEvent()
+{
+    CHsLaunch *hsApplicationLauncher = 0;
+    TRAPD(errNo, hsApplicationLauncher = CHsLaunch::NewL());
+    QCOMPARE(errNo, KErrNone);
+    hsApplicationLauncher->Activate();
+    hsApplicationLauncher->SystemShutdownEvent();    
+    delete hsApplicationLauncher;
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsapplicationlauncher::testIsLanguageSelectedL()
+{
+    CHsLaunch *hsApplicationLauncher = 0;
+    TRAPD(errNo, hsApplicationLauncher = CHsLaunch::NewL());
+    QCOMPARE(errNo, KErrNone);
+    hsApplicationLauncher->Activate();
+    hsApplicationLauncher->StartListeningLanguageSelectionL();
+    TBool languageSelected = ETrue;
+    TRAP(errNo, languageSelected = hsApplicationLauncher->IsLanguageSelectedL());
+    QCOMPARE(errNo, KErrNone);
+#if defined( __WINS__ )    
+    QVERIFY(languageSelected == EFalse);
+#else
+    QVERIFY(languageSelected);
+#endif
+    hsApplicationLauncher->StopListeningLanguageSelection();
+    delete hsApplicationLauncher;
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsapplicationlauncher::testProcessMonitorRunL()
+{
+    CHsLaunch *hsApplicationLauncher = 0;
+    TRAPD(errNo, hsApplicationLauncher = CHsLaunch::NewL());    
+    QCOMPARE(errNo, KErrNone);
+    hsApplicationLauncher->Activate();
+    hsApplicationLauncher->InitProcessMonitorL(0);
+    hsApplicationLauncher->iProcessMonitor->RunL();
+    delete hsApplicationLauncher;
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsapplicationlauncher::testProcessMonitorDoCancel()
+{
+    CHsLaunch *hsApplicationLauncher = 0;
+    TRAPD(errNo, hsApplicationLauncher = CHsLaunch::NewL());    
+    QCOMPARE(errNo, KErrNone);
+    hsApplicationLauncher->Activate();
+    hsApplicationLauncher->InitProcessMonitorL(0);    
+    hsApplicationLauncher->iProcessMonitor->DoCancel();
+    delete hsApplicationLauncher;
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsapplicationlauncher::testProcessMonitorRunError()
+{
+    CHsLaunch *hsApplicationLauncher = 0;
+    TRAPD(errNo, hsApplicationLauncher = CHsLaunch::NewL());    
+    QCOMPARE(errNo, KErrNone);
+    hsApplicationLauncher->Activate();
+    hsApplicationLauncher->InitProcessMonitorL(0);  
+    hsApplicationLauncher->iProcessMonitor->RunError(KErrGeneral);
+    delete hsApplicationLauncher;
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsapplicationlauncher::testShutDownMonitorRunL()
+{
+    CHsLaunch *hsApplicationLauncher = 0;
+    TRAPD(errNo, hsApplicationLauncher = CHsLaunch::NewL());    
+    QCOMPARE(errNo, KErrNone);
+    hsApplicationLauncher->Activate();
+    QVERIFY(hsApplicationLauncher->iShutdownMonitor);
+    if(hsApplicationLauncher->iShutdownMonitor->IsActive())
+    {
+        hsApplicationLauncher->iShutdownMonitor->Cancel();
+    }
+    hsApplicationLauncher->iShutdownMonitor->RunL();
+    delete hsApplicationLauncher;
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsapplicationlauncher::testShutDownMonitorDoCancel()
+{
+    CHsLaunch *hsApplicationLauncher = 0;
+    TRAPD(errNo, hsApplicationLauncher = CHsLaunch::NewL());    
+    QCOMPARE(errNo, KErrNone);
+    hsApplicationLauncher->Activate();
+    QVERIFY(hsApplicationLauncher->iShutdownMonitor);
+    hsApplicationLauncher->iShutdownMonitor->DoCancel();
+    delete hsApplicationLauncher;
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsapplicationlauncher::testShutDownMonitorRunError()
+{
+    CHsLaunch *hsApplicationLauncher = 0;
+    TRAPD(errNo, hsApplicationLauncher = CHsLaunch::NewL());    
+    QCOMPARE(errNo, KErrNone);
+    hsApplicationLauncher->Activate();
+    QVERIFY(hsApplicationLauncher->iShutdownMonitor);
+    errNo = hsApplicationLauncher->iShutdownMonitor->RunError(KErrGeneral);
+    QCOMPARE(errNo, KErrGeneral);
+    delete hsApplicationLauncher;
+}
+
+QTEST_MAIN(t_hsapplicationlauncher)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplicationlauncher/tsrc/t_hsapplicationlauncher/t_hsapplicationlauncher.pri	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,21 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+
+HEADERS += ./inc/*.h \
+           ../../inc/*.h
+SOURCES += ./src/*.cpp \
+           ../../src/*.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplicationlauncher/tsrc/t_hsapplicationlauncher/t_hsapplicationlauncher.pro	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,60 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+TEMPLATE = app
+
+CONFIG(debug, debug|release) {
+    DESTDIR = ./debug
+} else {
+    DESTDIR = ./release
+}
+
+CONFIG += debug_and_release \
+          console
+
+QT += testlib
+
+CONFIG(debug, debug|release) {
+    DESTDIR = ./debug
+} else {
+    DESTDIR = ./release
+}
+
+DEFINES += HOMESCREEN_TEST
+
+coverage:DEFINES += COVERAGE_MEASUREMENT
+
+DEPENDPATH += .\
+              ./src \
+              ./inc \
+              ../../inc
+
+INCLUDEPATH += .\
+               ./inc \
+               ../../inc
+
+symbian: {
+    CONFIG += symbian_test    
+    CONFIG -= symbian_i18n
+    SYMBIAN_PLATFORMS = WINSCW ARMV5
+    TARGET.UID3 = 0x20022F6E
+    TARGET.CAPABILITY = CAP_APPLICATION AllFiles
+    TARGET.EPOCHEAPSIZE = 0x20000 0x1000000 // 128kB - 16MB
+    LIBS+= -lssmcmn -lcentralrepository -lcenrepnotifhandler        
+    MMP_RULES += SMPSAFE 
+}
+
+include(t_hsapplicationlauncher.pri)
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplicationlauncher/tsrc/tsrc.pro	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,24 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+TEMPLATE = subdirs
+           
+CONFIG  += ordered
+
+symbian: {
+    SUBDIRS = t_hsapplicationlauncher
+    CONFIG += symbian_test
+}
--- a/homescreenapp/hsdomainmodel/bwins/hsdomainmodelu.def	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/hsdomainmodel/bwins/hsdomainmodelu.def	Mon Oct 04 00:07:25 2010 +0300
@@ -1,663 +1,690 @@
 EXPORTS
 	?trUtf8@HsScene@@SA?AVQString@@PBD0H@Z @ 1 NONAME ; class QString HsScene::trUtf8(char const *, char const *, int)
 	?staticMetaObject@HsPageVisual@@2UQMetaObject@@B @ 2 NONAME ; struct QMetaObject const HsPageVisual::staticMetaObject
-	?metaObject@HsConfiguration@@UBEPBUQMetaObject@@XZ @ 3 NONAME ; struct QMetaObject const * HsConfiguration::metaObject(void) const
-	?aboutToUninstall@HsWidgetComponent@@IAEXXZ @ 4 NONAME ; void HsWidgetComponent::aboutToUninstall(void)
-	??_EHsWidgetData@@QAE@I@Z @ 5 NONAME ; HsWidgetData::~HsWidgetData(unsigned int)
-	?metaObject@HsHostedWidgetFactory@@UBEPBUQMetaObject@@XZ @ 6 NONAME ; struct QMetaObject const * HsHostedWidgetFactory::metaObject(void) const
-	?pageChangeZoneAnimationDuration@HsConfiguration@@QBEHXZ @ 7 NONAME ; int HsConfiguration::pageChangeZoneAnimationDuration(void) const
-	?takeInstance@HsHostedWidgetFactory@@SAPAV1@XZ @ 8 NONAME ; class HsHostedWidgetFactory * HsHostedWidgetFactory::takeInstance(void)
-	?widgetDropEffectDuration@HsConfiguration@@QBEHXZ @ 9 NONAME ; int HsConfiguration::widgetDropEffectDuration(void) const
-	?setMaximumPageCount@HsConfiguration@@QAEXH@Z @ 10 NONAME ; void HsConfiguration::setMaximumPageCount(int)
-	?qt_metacast@HsShortcutService@@UAEPAXPBD@Z @ 11 NONAME ; void * HsShortcutService::qt_metacast(char const *)
-	?propertyChanged@HsConfiguration@@IAEXABVQString@@@Z @ 12 NONAME ; void HsConfiguration::propertyChanged(class QString const &)
-	?showWidget@HsWidgetHost@@QAEXXZ @ 13 NONAME ; void HsWidgetHost::showWidget(void)
-	?setInstance@HsConfiguration@@SAXPAV1@@Z @ 14 NONAME ; void HsConfiguration::setInstance(class HsConfiguration *)
-	?isActivePage@HsPage@@QBE_NXZ @ 15 NONAME ; bool HsPage::isActivePage(void) const
-	?hidden@HsWidgetComponentDescriptor@@QBE?AVQString@@XZ @ 16 NONAME ; class QString HsWidgetComponentDescriptor::hidden(void) const
-	?cancel@HsWallpaperLoader@@QAEXXZ @ 17 NONAME ; void HsWallpaperLoader::cancel(void)
-	?metaObject@HsShortcutService@@UBEPBUQMetaObject@@XZ @ 18 NONAME ; struct QMetaObject const * HsShortcutService::metaObject(void) const
-	?instance@HsBackupRestoreObserver@@SAPAV1@XZ @ 19 NONAME ; class HsBackupRestoreObserver * HsBackupRestoreObserver::instance(void)
-	??1HsWidgetHostVisual@@UAE@XZ @ 20 NONAME ; HsWidgetHostVisual::~HsWidgetHostVisual(void)
-	?load@HsPage@@QAE_NXZ @ 21 NONAME ; bool HsPage::load(void)
-	?setSnapEnabled@HsConfiguration@@QAEX_N@Z @ 22 NONAME ; void HsConfiguration::setSnapEnabled(bool)
-	?clockWidgetTapFeedbackEffect@HsConfiguration@@QBE?AW4InstantEffect@HbFeedback@@XZ @ 23 NONAME ; enum HbFeedback::InstantEffect HsConfiguration::clockWidgetTapFeedbackEffect(void) const
-	?readyForBUR@HsBackupRestoreObserver@@QAEXXZ @ 24 NONAME ; void HsBackupRestoreObserver::readyForBUR(void)
-	?handleEntryUpdated@HsWidgetComponentRegistry@@AAEXABVCaEntry@@ABVQString@@@Z @ 25 NONAME ; void HsWidgetComponentRegistry::handleEntryUpdated(class CaEntry const &, class QString const &)
-	?instance@HsShortcutService@@SAPAV1@PAVQStateMachine@@@Z @ 26 NONAME ; class HsShortcutService * HsShortcutService::instance(class QStateMachine *)
-	?staticMetaObject@HsDatabase@@2UQMetaObject@@B @ 27 NONAME ; struct QMetaObject const HsDatabase::staticMetaObject
-	??1HsSceneWallpaper@@UAE@XZ @ 28 NONAME ; HsSceneWallpaper::~HsSceneWallpaper(void)
-	?setActivePageIndex@HsScene@@QAE_NH@Z @ 29 NONAME ; bool HsScene::setActivePageIndex(int)
-	??1HsContentService@@UAE@XZ @ 30 NONAME ; HsContentService::~HsContentService(void)
-	?widgetPreference@HsDatabase@@QAE_NHABVQString@@AAVQVariant@@@Z @ 31 NONAME ; bool HsDatabase::widgetPreference(int, class QString const &, class QVariant &)
-	?tr@HsBackupRestoreObserver@@SA?AVQString@@PBD0H@Z @ 32 NONAME ; class QString HsBackupRestoreObserver::tr(char const *, char const *, int)
-	?setOnline@HsScene@@QAEX_N@Z @ 33 NONAME ; void HsScene::setOnline(bool)
-	?updateIconItem@HsWallpaper@@AAEXW4Orientation@Qt@@@Z @ 34 NONAME ; void HsWallpaper::updateIconItem(enum Qt::Orientation)
-	?getStaticMetaObject@HsWidgetComponentRegistry@@SAABUQMetaObject@@XZ @ 35 NONAME ; struct QMetaObject const & HsWidgetComponentRegistry::getStaticMetaObject(void)
-	?trUtf8@HsPageWallpaper@@SA?AVQString@@PBD0@Z @ 36 NONAME ; class QString HsPageWallpaper::trUtf8(char const *, char const *)
-	??0HsWidgetComponentRegistry@@AAE@PAVQObject@@@Z @ 37 NONAME ; HsWidgetComponentRegistry::HsWidgetComponentRegistry(class QObject *)
-	?NewL@CHsBURActiveCallback@@SAPAV1@PAVHsBackupRestoreObserver@@@Z @ 38 NONAME ; class CHsBURActiveCallback * CHsBURActiveCallback::NewL(class HsBackupRestoreObserver *)
-	?action_unload@HsWidgetHost@@AAEXXZ @ 39 NONAME ; void HsWidgetHost::action_unload(void)
-	?visualModel@HsWidgetHostVisual@@QBEPAVHsWidgetHost@@XZ @ 40 NONAME ; class HsWidgetHost * HsWidgetHostVisual::visualModel(void) const
-	?tr@HsBackupRestoreObserver@@SA?AVQString@@PBD0@Z @ 41 NONAME ; class QString HsBackupRestoreObserver::tr(char const *, char const *)
-	?setMinimumWidgetWidth@HsConfiguration@@QAEXM@Z @ 42 NONAME ; void HsConfiguration::setMinimumWidgetWidth(float)
-	?event_show@HsWidgetHost@@IAEXXZ @ 43 NONAME ; void HsWidgetHost::event_show(void)
-	?setBounceAnimationEasingCurve@HsConfiguration@@QAEXW4Type@QEasingCurve@@@Z @ 44 NONAME ; void HsConfiguration::setBounceAnimationEasingCurve(enum QEasingCurve::Type)
-	?wallpaperDirectory@HsSceneWallpaper@@MBE?AVQString@@XZ @ 45 NONAME ; class QString HsSceneWallpaper::wallpaperDirectory(void) const
-	?setWidgetMoveBlockedFeedbackEffect@HsConfiguration@@QAEXW4InstantEffect@HbFeedback@@@Z @ 46 NONAME ; void HsConfiguration::setWidgetMoveBlockedFeedbackEffect(enum HbFeedback::InstantEffect)
-	?imageSetFailed@HsWallpaper@@IAEXXZ @ 47 NONAME ; void HsWallpaper::imageSetFailed(void)
-	?trUtf8@HsWidgetHostVisual@@SA?AVQString@@PBD0@Z @ 48 NONAME ; class QString HsWidgetHostVisual::trUtf8(char const *, char const *)
-	?setSnapForce@HsConfiguration@@QAEXM@Z @ 49 NONAME ; void HsConfiguration::setSnapForce(float)
-	??0HsWidgetData@@QAE@XZ @ 50 NONAME ; HsWidgetData::HsWidgetData(void)
-	?event_backupRestoreCompleted@HsBackupRestoreObserver@@IAEXXZ @ 51 NONAME ; void HsBackupRestoreObserver::event_backupRestoreCompleted(void)
-	?staticMetaObject@HsWidgetHostVisual@@2UQMetaObject@@B @ 52 NONAME ; struct QMetaObject const HsWidgetHostVisual::staticMetaObject
-	?setActivePage@HsScene@@QAE_NPAVHsPage@@@Z @ 53 NONAME ; bool HsScene::setActivePage(class HsPage *)
-	?setSceneX@HsIdleWidget@@QAEXM@Z @ 54 NONAME ; void HsIdleWidget::setSceneX(float)
-	?qt_metacast@HsContentService@@UAEPAXPBD@Z @ 55 NONAME ; void * HsContentService::qt_metacast(char const *)
-	?qt_metacall@HsContentService@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 56 NONAME ; int HsContentService::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?qt_metacall@HsSceneWallpaper@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 57 NONAME ; int HsSceneWallpaper::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?widgets@HsContentService@@QAE_NABVQString@@ABV?$QHash@VQString@@VQVariant@@@@AAH@Z @ 58 NONAME ; bool HsContentService::widgets(class QString const &, class QHash<class QString, class QVariant> const &, int &)
-	?createWidget@HsHostedWidgetFactory@@QAEPAVQObject@@ABVQString@@@Z @ 59 NONAME ; class QObject * HsHostedWidgetFactory::createWidget(class QString const &)
-	?metaObject@HsDatabase@@UBEPBUQMetaObject@@XZ @ 60 NONAME ; struct QMetaObject const * HsDatabase::metaObject(void) const
-	?contentGeometry@HsPage@@QAE?AVQRectF@@W4Orientation@Qt@@@Z @ 61 NONAME ; class QRectF HsPage::contentGeometry(enum Qt::Orientation)
-	?exportToFile@HsConfiguration@@QAE_NABVQString@@@Z @ 62 NONAME ; bool HsConfiguration::exportToFile(class QString const &)
-	?widgetStartFaulted@HsContentService@@AAEXXZ @ 63 NONAME ; void HsContentService::widgetStartFaulted(void)
-	??_EHsWidgetHostVisual@@UAE@I@Z @ 64 NONAME ; HsWidgetHostVisual::~HsWidgetHostVisual(unsigned int)
-	?setPageChangePanDistance@HsConfiguration@@QAEXM@Z @ 65 NONAME ; void HsConfiguration::setPageChangePanDistance(float)
-	?qt_metacast@HsSceneWallpaper@@UAEPAXPBD@Z @ 66 NONAME ; void * HsSceneWallpaper::qt_metacast(char const *)
-	?metaObject@HsWallpaperLoader@@UBEPBUQMetaObject@@XZ @ 67 NONAME ; struct QMetaObject const * HsWallpaperLoader::metaObject(void) const
-	?action_finished@HsWidgetHost@@AAEXXZ @ 68 NONAME ; void HsWidgetHost::action_finished(void)
-	?widget@HsWidgetHostVisual@@QAEPAVQObject@@XZ @ 69 NONAME ; class QObject * HsWidgetHostVisual::widget(void)
-	?visual@HsWidgetHost@@QBEPAVHsWidgetHostVisual@@XZ @ 70 NONAME ; class HsWidgetHostVisual * HsWidgetHost::visual(void) const
-	?pageChangeFeedbackEffect@HsConfiguration@@QBE?AW4InstantEffect@HbFeedback@@XZ @ 71 NONAME ; enum HbFeedback::InstantEffect HsConfiguration::pageChangeFeedbackEffect(void) const
-	??0HsWallpaperLoader@@QAE@PAVQObject@@@Z @ 72 NONAME ; HsWallpaperLoader::HsWallpaperLoader(class QObject *)
-	?trUtf8@HsShortcutService@@SA?AVQString@@PBD0H@Z @ 73 NONAME ; class QString HsShortcutService::trUtf8(char const *, char const *, int)
-	?maximumWidgetWidth@HsConfiguration@@QBEMXZ @ 74 NONAME ; float HsConfiguration::maximumWidgetWidth(void) const
-	?metaObject@HsContentService@@UBEPBUQMetaObject@@XZ @ 75 NONAME ; struct QMetaObject const * HsContentService::metaObject(void) const
-	?setScene@HsSceneWallpaper@@QAEXPAVHsScene@@@Z @ 76 NONAME ; void HsSceneWallpaper::setScene(class HsScene *)
-	?onPageMarginChanged@HsPage@@AAEXABVQString@@@Z @ 77 NONAME ; void HsPage::onPageMarginChanged(class QString const &)
-	?finished@HsWidgetHost@@IAEXXZ @ 78 NONAME ; void HsWidgetHost::finished(void)
-	?pagePanStarted@HsScene@@IAEXPAVQGestureEvent@@@Z @ 79 NONAME ; void HsScene::pagePanStarted(class QGestureEvent *)
-	?addPage@HsScene@@QAE_NPAVHsPage@@@Z @ 80 NONAME ; bool HsScene::addPage(class HsPage *)
-	?controlLayer@HsIdleWidget@@QBEPAVHbWidget@@XZ @ 81 NONAME ; class HbWidget * HsIdleWidget::controlLayer(void) const
-	?qt_metacall@HsWidgetHost@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 82 NONAME ; int HsWidgetHost::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?configuration@HsDatabase@@QAE_NAAV?$QHash@VQString@@VQVariant@@@@@Z @ 83 NONAME ; bool HsDatabase::configuration(class QHash<class QString, class QVariant> &)
-	?tr@HsContentService@@SA?AVQString@@PBD0@Z @ 84 NONAME ; class QString HsContentService::tr(char const *, char const *)
-	?mInstance@HsHostedWidgetFactory@@0PAV1@A @ 85 NONAME ; class HsHostedWidgetFactory * HsHostedWidgetFactory::mInstance
-	?setInstance@HsHostedWidgetFactory@@SAPAV1@PAV1@@Z @ 86 NONAME ; class HsHostedWidgetFactory * HsHostedWidgetFactory::setInstance(class HsHostedWidgetFactory *)
-	?staticMetaObject@HsScene@@2UQMetaObject@@B @ 87 NONAME ; struct QMetaObject const HsScene::staticMetaObject
-	?setMaximumWidgetWidth@HsConfiguration@@QAEXM@Z @ 88 NONAME ; void HsConfiguration::setMaximumWidgetWidth(float)
-	?scene@HsDatabase@@QAE_NAAVHsSceneData@@@Z @ 89 NONAME ; bool HsDatabase::scene(class HsSceneData &)
-	?resetNewWidgets@HsPage@@QAEXXZ @ 90 NONAME ; void HsPage::resetNewWidgets(void)
-	?tr@HsScene@@SA?AVQString@@PBD0@Z @ 91 NONAME ; class QString HsScene::tr(char const *, char const *)
-	?tr@HsPage@@SA?AVQString@@PBD0@Z @ 92 NONAME ; class QString HsPage::tr(char const *, char const *)
-	?emitAvailable@HsWidgetComponent@@AAEXXZ @ 93 NONAME ; void HsWidgetComponent::emitAvailable(void)
-	?getStaticMetaObject@HsDatabase@@SAABUQMetaObject@@XZ @ 94 NONAME ; struct QMetaObject const & HsDatabase::getStaticMetaObject(void)
-	?contentRect@HsPage@@QAE?AVQRectF@@XZ @ 95 NONAME ; class QRectF HsPage::contentRect(void)
-	?tr@HsPageVisual@@SA?AVQString@@PBD0@Z @ 96 NONAME ; class QString HsPageVisual::tr(char const *, char const *)
-	?setIconUri@HsWidgetComponentDescriptor@@QAEXABVQString@@@Z @ 97 NONAME ; void HsWidgetComponentDescriptor::setIconUri(class QString const &)
-	?orientationChanged@HsGui@@IAEXW4Orientation@Qt@@@Z @ 98 NONAME ; void HsGui::orientationChanged(enum Qt::Orientation)
-	?widgetAdded@HsContentService@@IAEXABVQString@@ABV?$QHash@VQString@@VQVariant@@@@@Z @ 99 NONAME ; void HsContentService::widgetAdded(class QString const &, class QHash<class QString, class QVariant> const &)
-	?staticMetaObject@HsWallpaperLoaderThread@@2UQMetaObject@@B @ 100 NONAME ; struct QMetaObject const HsWallpaperLoaderThread::staticMetaObject
-	?databaseName@HsDatabase@@QBE?AVQString@@XZ @ 101 NONAME ; class QString HsDatabase::databaseName(void) const
-	?setPageChangeAnimationEasingCurve@HsConfiguration@@QAEXW4Type@QEasingCurve@@@Z @ 102 NONAME ; void HsConfiguration::setPageChangeAnimationEasingCurve(enum QEasingCurve::Type)
-	?setPageChangeZoneAnimationDuration@HsConfiguration@@QAEXH@Z @ 103 NONAME ; void HsConfiguration::setPageChangeZoneAnimationDuration(int)
-	?qt_metacast@HsIdleWidget@@UAEPAXPBD@Z @ 104 NONAME ; void * HsIdleWidget::qt_metacast(char const *)
-	?executeCollectionAction@HsShortcutService@@QAEXHABVQString@@@Z @ 105 NONAME ; void HsShortcutService::executeCollectionAction(int, class QString const &)
-	?widgets@HsDatabase@@QAE_NABVQString@@ABV?$QHash@VQString@@VQVariant@@@@AAH@Z @ 106 NONAME ; bool HsDatabase::widgets(class QString const &, class QHash<class QString, class QVariant> const &, int &)
-	?qt_metacast@HsWallpaperLoaderThread@@UAEPAXPBD@Z @ 107 NONAME ; void * HsWallpaperLoaderThread::qt_metacast(char const *)
-	?pageCrawlingAnimation@HsGui@@QAEPAVHsPropertyAnimationWrapper@@XZ @ 108 NONAME ; class HsPropertyAnimationWrapper * HsGui::pageCrawlingAnimation(void)
-	?setSceneType@HsConfiguration@@QAEXW4SceneType@1@@Z @ 109 NONAME ; void HsConfiguration::setSceneType(enum HsConfiguration::SceneType)
-	?layoutNewWidgets@HsPage@@QAEXXZ @ 110 NONAME ; void HsPage::layoutNewWidgets(void)
-	?matchWidgetPreferences@HsDatabase@@AAE_NABV?$QHash@VQString@@VQVariant@@@@ABV?$QMultiMap@VQString@@V1@@@@Z @ 111 NONAME ; bool HsDatabase::matchWidgetPreferences(class QHash<class QString, class QVariant> const &, class QMultiMap<class QString, class QString> const &)
-	?tr@HsWidgetHostVisual@@SA?AVQString@@PBD0@Z @ 112 NONAME ; class QString HsWidgetHostVisual::tr(char const *, char const *)
-	?targetSize@HsWallpaperLoaderThread@@QBE?AVQSize@@XZ @ 113 NONAME ; class QSize HsWallpaperLoaderThread::targetSize(void) const
-	?trUtf8@HsWallpaperLoader@@SA?AVQString@@PBD0H@Z @ 114 NONAME ; class QString HsWallpaperLoader::trUtf8(char const *, char const *, int)
-	?event_remove@HsWidgetHost@@IAEXXZ @ 115 NONAME ; void HsWidgetHost::event_remove(void)
-	?startDropEffect@HsWidgetHost@@QAEXXZ @ 116 NONAME ; void HsWidgetHost::startDropEffect(void)
-	?trUtf8@HsWidgetComponentRegistry@@SA?AVQString@@PBD0@Z @ 117 NONAME ; class QString HsWidgetComponentRegistry::trUtf8(char const *, char const *)
-	?event_close@HsWidgetHost@@IAEXXZ @ 118 NONAME ; void HsWidgetHost::event_close(void)
-	??1HsWallpaperLoader@@UAE@XZ @ 119 NONAME ; HsWallpaperLoader::~HsWallpaperLoader(void)
-	?mInstance@HsBackupRestoreObserver@@0PAV1@A @ 120 NONAME ; class HsBackupRestoreObserver * HsBackupRestoreObserver::mInstance
-	?connectWidget@HsPage@@AAEXPAVHsWidgetHost@@@Z @ 121 NONAME ; void HsPage::connectWidget(class HsWidgetHost *)
-	?setShortcutLabelVisible@HsConfiguration@@QAEX_N@Z @ 122 NONAME ; void HsConfiguration::setShortcutLabelVisible(bool)
-	?sceneLayer@HsIdleWidget@@QBEPAVHbWidget@@XZ @ 123 NONAME ; class HbWidget * HsIdleWidget::sceneLayer(void) const
-	?trUtf8@HsWallpaperLoaderThread@@SA?AVQString@@PBD0@Z @ 124 NONAME ; class QString HsWallpaperLoaderThread::trUtf8(char const *, char const *)
-	?qt_metacast@HsScene@@UAEPAXPBD@Z @ 125 NONAME ; void * HsScene::qt_metacast(char const *)
-	??1HsWidgetHost@@UAE@XZ @ 126 NONAME ; HsWidgetHost::~HsWidgetHost(void)
-	?uninstallComponent@HsWidgetComponentRegistry@@QAEXABVHsWidgetComponentDescriptor@@@Z @ 127 NONAME ; void HsWidgetComponentRegistry::uninstallComponent(class HsWidgetComponentDescriptor const &)
-	?action_notifyRemove@HsWidgetHost@@AAEXXZ @ 128 NONAME ; void HsWidgetHost::action_notifyRemove(void)
-	?open@HsDatabase@@QAE_NXZ @ 129 NONAME ; bool HsDatabase::open(void)
-	?idleWidget@HsGui@@QBEPAVHsIdleWidget@@XZ @ 130 NONAME ; class HsIdleWidget * HsGui::idleWidget(void) const
-	?pageMargin@HsConfiguration@@QBEMXZ @ 131 NONAME ; float HsConfiguration::pageMargin(void) const
-	?failed@HsWallpaperLoader@@IAEXXZ @ 132 NONAME ; void HsWallpaperLoader::failed(void)
-	?setPos@HsWidgetPresentationData@@QAEXABVQPointF@@@Z @ 133 NONAME ; void HsWidgetPresentationData::setPos(class QPointF const &)
-	?isSnapEffectsEnabled@HsConfiguration@@QBE_NXZ @ 134 NONAME ; bool HsConfiguration::isSnapEffectsEnabled(void) const
-	?trUtf8@HsWallpaperLoaderThread@@SA?AVQString@@PBD0H@Z @ 135 NONAME ; class QString HsWallpaperLoaderThread::trUtf8(char const *, char const *, int)
-	?setSourcePath@HsWallpaperLoaderThread@@QAEXABVQString@@@Z @ 136 NONAME ; void HsWallpaperLoaderThread::setSourcePath(class QString const &)
-	?tr@HsGui@@SA?AVQString@@PBD0@Z @ 137 NONAME ; class QString HsGui::tr(char const *, char const *)
-	?disconnectWidget@HsPage@@AAEXPAVHsWidgetHost@@@Z @ 138 NONAME ; void HsPage::disconnectWidget(class HsWidgetHost *)
-	?setOnline@HsPage@@QAEX_N@Z @ 139 NONAME ; void HsPage::setOnline(bool)
-	?tr@HsDatabase@@SA?AVQString@@PBD0@Z @ 140 NONAME ; class QString HsDatabase::tr(char const *, char const *)
-	?onLoaderFailed@HsWallpaper@@AAEXXZ @ 141 NONAME ; void HsWallpaper::onLoaderFailed(void)
-	?trUtf8@HsScene@@SA?AVQString@@PBD0@Z @ 142 NONAME ; class QString HsScene::trUtf8(char const *, char const *)
-	?uninstallTranslator@HsWidgetComponent@@AAEXXZ @ 143 NONAME ; void HsWidgetComponent::uninstallTranslator(void)
-	?setGeometry@HsIdleWidget@@UAEXABVQRectF@@@Z @ 144 NONAME ; void HsIdleWidget::setGeometry(class QRectF const &)
-	?updateZValues@HsPage@@QAEXXZ @ 145 NONAME ; void HsPage::updateZValues(void)
-	?tr@HsShortcutService@@SA?AVQString@@PBD0H@Z @ 146 NONAME ; class QString HsShortcutService::tr(char const *, char const *, int)
-	?pos@HsWidgetPresentationData@@QBE?AVQPointF@@XZ @ 147 NONAME ; class QPointF HsWidgetPresentationData::pos(void) const
-	?getStaticMetaObject@HsBackupRestoreObserver@@SAABUQMetaObject@@XZ @ 148 NONAME ; struct QMetaObject const & HsBackupRestoreObserver::getStaticMetaObject(void)
-	?trUtf8@HsPageVisual@@SA?AVQString@@PBD0@Z @ 149 NONAME ; class QString HsPageVisual::trUtf8(char const *, char const *)
-	?action_show@HsWidgetHost@@AAEXXZ @ 150 NONAME ; void HsWidgetHost::action_show(void)
-	?pageLayer@HsIdleWidget@@QBEPAVHbWidget@@XZ @ 151 NONAME ; class HbWidget * HsIdleWidget::pageLayer(void) const
-	?setSnapGap@HsConfiguration@@QAEXM@Z @ 152 NONAME ; void HsConfiguration::setSnapGap(float)
-	?trUtf8@HsHostedWidgetFactory@@SA?AVQString@@PBD0@Z @ 153 NONAME ; class QString HsHostedWidgetFactory::trUtf8(char const *, char const *)
-	?setActiveWidget@HsScene@@QAEXPAVHsWidgetHost@@@Z @ 154 NONAME ; void HsScene::setActiveWidget(class HsWidgetHost *)
-	?transaction@HsDatabase@@QAE_NXZ @ 155 NONAME ; bool HsDatabase::transaction(void)
-	?snapForce@HsConfiguration@@QBEMXZ @ 156 NONAME ; float HsConfiguration::snapForce(void) const
-	?isOnline@HsScene@@QBE_NXZ @ 157 NONAME ; bool HsScene::isOnline(void) const
-	??0HsWidgetPresentationData@@QAE@XZ @ 158 NONAME ; HsWidgetPresentationData::HsWidgetPresentationData(void)
-	?tr@HsShortcutService@@SA?AVQString@@PBD0@Z @ 159 NONAME ; class QString HsShortcutService::tr(char const *, char const *)
-	?metaObject@HsWidgetComponent@@UBEPBUQMetaObject@@XZ @ 160 NONAME ; struct QMetaObject const * HsWidgetComponent::metaObject(void) const
-	?setConnectionName@HsDatabase@@QAEXABVQString@@@Z @ 161 NONAME ; void HsDatabase::setConnectionName(class QString const &)
-	?qt_metacall@HsGui@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 162 NONAME ; int HsGui::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?metaObject@HsWallpaper@@UBEPBUQMetaObject@@XZ @ 163 NONAME ; struct QMetaObject const * HsWallpaper::metaObject(void) const
-	?removeWidget@HsPage@@QAE_NPAVHsWidgetHost@@@Z @ 164 NONAME ; bool HsPage::removeWidget(class HsWidgetHost *)
-	?trUtf8@HsPageVisual@@SA?AVQString@@PBD0H@Z @ 165 NONAME ; class QString HsPageVisual::trUtf8(char const *, char const *, int)
-	?tr@HsWallpaperLoaderThread@@SA?AVQString@@PBD0@Z @ 166 NONAME ; class QString HsWallpaperLoaderThread::tr(char const *, char const *)
-	?qt_metacall@HsWallpaper@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 167 NONAME ; int HsWallpaper::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?onWidgetUnavailable@HsPage@@AAEXXZ @ 168 NONAME ; void HsPage::onWidgetUnavailable(void)
-	?mInstance@HsDatabase@@0PAV1@A @ 169 NONAME ; class HsDatabase * HsDatabase::mInstance
-	?available@HsWidgetComponent@@IAEXXZ @ 170 NONAME ; void HsWidgetComponent::available(void)
-	?tr@HsSceneWallpaper@@SA?AVQString@@PBD0@Z @ 171 NONAME ; class QString HsSceneWallpaper::tr(char const *, char const *)
-	?trUtf8@HsPage@@SA?AVQString@@PBD0@Z @ 172 NONAME ; class QString HsPage::trUtf8(char const *, char const *)
-	?trUtf8@HsWidgetHostVisual@@SA?AVQString@@PBD0H@Z @ 173 NONAME ; class QString HsWidgetHostVisual::trUtf8(char const *, char const *, int)
-	?hideWidgets@HsPage@@QAEXXZ @ 174 NONAME ; void HsPage::hideWidgets(void)
-	?trUtf8@HsWidgetHost@@SA?AVQString@@PBD0H@Z @ 175 NONAME ; class QString HsWidgetHost::trUtf8(char const *, char const *, int)
-	?qt_metacall@HsHostedWidgetFactory@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 176 NONAME ; int HsHostedWidgetFactory::qt_metacall(enum QMetaObject::Call, int, void * *)
-	??0HsScene@@QAE@PAVQObject@@@Z @ 177 NONAME ; HsScene::HsScene(class QObject *)
-	?getStaticMetaObject@HsPageVisual@@SAABUQMetaObject@@XZ @ 178 NONAME ; struct QMetaObject const & HsPageVisual::getStaticMetaObject(void)
-	?pagePanUpdated@HsScene@@IAEXPAVQGestureEvent@@@Z @ 179 NONAME ; void HsScene::pagePanUpdated(class QGestureEvent *)
-	?showTrashBin@HsIdleWidget@@QAEXXZ @ 180 NONAME ; void HsIdleWidget::showTrashBin(void)
-	?qt_metacast@HsWidgetHost@@UAEPAXPBD@Z @ 181 NONAME ; void * HsWidgetHost::qt_metacast(char const *)
-	?trUtf8@HsWallpaperLoader@@SA?AVQString@@PBD0@Z @ 182 NONAME ; class QString HsWallpaperLoader::trUtf8(char const *, char const *)
-	?qt_metacall@HsWidgetComponentRegistry@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 183 NONAME ; int HsWidgetComponentRegistry::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?setMaximumWidgetHeight@HsConfiguration@@QAEXM@Z @ 184 NONAME ; void HsConfiguration::setMaximumWidgetHeight(float)
-	?qt_metacall@HsPageVisual@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 185 NONAME ; int HsPageVisual::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?instance@HsConfiguration@@SAPAV1@XZ @ 186 NONAME ; class HsConfiguration * HsConfiguration::instance(void)
-	?tr@HsWallpaperLoader@@SA?AVQString@@PBD0H@Z @ 187 NONAME ; class QString HsWallpaperLoader::tr(char const *, char const *, int)
-	??_EHsConfiguration@@UAE@I@Z @ 188 NONAME ; HsConfiguration::~HsConfiguration(unsigned int)
-	?metaObject@HsPage@@UBEPBUQMetaObject@@XZ @ 189 NONAME ; struct QMetaObject const * HsPage::metaObject(void) const
-	?activePageIndex@HsScene@@QBEHXZ @ 190 NONAME ; int HsScene::activePageIndex(void) const
-	?qt_metacast@HsWidgetHostVisual@@UAEPAXPBD@Z @ 191 NONAME ; void * HsWidgetHostVisual::qt_metacast(char const *)
-	?hideHorizontalSnapLine@HsIdleWidget@@QAEXXZ @ 192 NONAME ; void HsIdleWidget::hideHorizontalSnapLine(void)
-	?minimumWidgetWidth@HsConfiguration@@QBEMXZ @ 193 NONAME ; float HsConfiguration::minimumWidgetWidth(void) const
-	?setWidgetPreferences@HsDatabase@@QAE_NHABV?$QHash@VQString@@VQVariant@@@@@Z @ 194 NONAME ; bool HsDatabase::setWidgetPreferences(int, class QHash<class QString, class QVariant> const &)
-	?orientation@HsGui@@QAE?AW4Orientation@Qt@@XZ @ 195 NONAME ; enum Qt::Orientation HsGui::orientation(void)
-	?deleteWidget@HsDatabase@@QAE_NH@Z @ 196 NONAME ; bool HsDatabase::deleteWidget(int)
-	?widgetOverTrashbinFeedbackEffect@HsConfiguration@@QBE?AW4InstantEffect@HbFeedback@@XZ @ 197 NONAME ; enum HbFeedback::InstantEffect HsConfiguration::widgetOverTrashbinFeedbackEffect(void) const
-	?deleteFromDatabase@HsPage@@QAE_NXZ @ 198 NONAME ; bool HsPage::deleteFromDatabase(void)
-	?setWidgetPresentation@HsDatabase@@QAE_NABVHsWidgetPresentationData@@@Z @ 199 NONAME ; bool HsDatabase::setWidgetPresentation(class HsWidgetPresentationData const &)
-	?takeInstance@HsGui@@SAPAV1@XZ @ 200 NONAME ; class HsGui * HsGui::takeInstance(void)
-	??0HsConfiguration@@QAE@PAVQObject@@@Z @ 201 NONAME ; HsConfiguration::HsConfiguration(class QObject *)
-	?setDefaultImage@HsWallpaper@@QAEXXZ @ 202 NONAME ; void HsWallpaper::setDefaultImage(void)
-	?setupTouchArea@HsPageVisual@@AAEXXZ @ 203 NONAME ; void HsPageVisual::setupTouchArea(void)
-	?trUtf8@HsWidgetComponent@@SA?AVQString@@PBD0H@Z @ 204 NONAME ; class QString HsWidgetComponent::trUtf8(char const *, char const *, int)
-	?setWidget@HsWidgetHostVisual@@QAEXPAVQObject@@@Z @ 205 NONAME ; void HsWidgetHostVisual::setWidget(class QObject *)
-	?importFromFile@HsConfiguration@@QAE_NABVQString@@@Z @ 206 NONAME ; bool HsConfiguration::importFromFile(class QString const &)
-	?page@HsDatabase@@QAE_NAAVHsPageData@@@Z @ 207 NONAME ; bool HsDatabase::page(class HsPageData &)
-	??_EHsPage@@UAE@I@Z @ 208 NONAME ; HsPage::~HsPage(unsigned int)
-	?instance@HsHostedWidgetFactory@@SAPAV1@XZ @ 209 NONAME ; class HsHostedWidgetFactory * HsHostedWidgetFactory::instance(void)
-	?staticMetaObject@HsPage@@2UQMetaObject@@B @ 210 NONAME ; struct QMetaObject const HsPage::staticMetaObject
-	?widgetDropFeedbackEffect@HsConfiguration@@QBE?AW4InstantEffect@HbFeedback@@XZ @ 211 NONAME ; enum HbFeedback::InstantEffect HsConfiguration::widgetDropFeedbackEffect(void) const
-	?pageChangeZoneReverseAnimationDuration@HsConfiguration@@QBEHXZ @ 212 NONAME ; int HsConfiguration::pageChangeZoneReverseAnimationDuration(void) const
-	?createWidget@HsContentService@@QAE_NABV?$QHash@VQString@@VQVariant@@@@@Z @ 213 NONAME ; bool HsContentService::createWidget(class QHash<class QString, class QVariant> const &)
-	?setVersion@HsWidgetComponentDescriptor@@QAEXABVQString@@@Z @ 214 NONAME ; void HsWidgetComponentDescriptor::setVersion(class QString const &)
-	?getStaticMetaObject@HsWallpaperLoader@@SAABUQMetaObject@@XZ @ 215 NONAME ; struct QMetaObject const & HsWallpaperLoader::getStaticMetaObject(void)
-	?mInstance@HsWidgetComponentRegistry@@0PAV1@A @ 216 NONAME ; class HsWidgetComponentRegistry * HsWidgetComponentRegistry::mInstance
-	?staticMetaObject@HsWidgetHost@@2UQMetaObject@@B @ 217 NONAME ; struct QMetaObject const HsWidgetHost::staticMetaObject
-	?qt_metacast@HsPageVisual@@UAEPAXPBD@Z @ 218 NONAME ; void * HsPageVisual::qt_metacast(char const *)
-	?qt_metacall@HsShortcutService@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 219 NONAME ; int HsShortcutService::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?setImages@HsWallpaper@@QAEXABVQString@@0@Z @ 220 NONAME ; void HsWallpaper::setImages(class QString const &, class QString const &)
-	??1HsPageWallpaper@@UAE@XZ @ 221 NONAME ; HsPageWallpaper::~HsPageWallpaper(void)
-	?startDropEffect@HsWidgetHostVisual@@QAEXXZ @ 222 NONAME ; void HsWidgetHostVisual::startDropEffect(void)
-	?activeWidget@HsScene@@QBEPAVHsWidgetHost@@XZ @ 223 NONAME ; class HsWidgetHost * HsScene::activeWidget(void) const
-	?widgets@HsDatabase@@QAE_NABVQString@@AAV?$QList@VHsWidgetData@@@@@Z @ 224 NONAME ; bool HsDatabase::widgets(class QString const &, class QList<class HsWidgetData> &)
-	?rootDirectory@HsWallpaper@@IBE?AVQString@@XZ @ 225 NONAME ; class QString HsWallpaper::rootDirectory(void) const
-	?tr@HsContentService@@SA?AVQString@@PBD0H@Z @ 226 NONAME ; class QString HsContentService::tr(char const *, char const *, int)
-	??0HsDatabase@@QAE@PAVQObject@@@Z @ 227 NONAME ; HsDatabase::HsDatabase(class QObject *)
-	?eventFilter@HsWidgetHostVisual@@MAE_NPAVQObject@@PAVQEvent@@@Z @ 228 NONAME ; bool HsWidgetHostVisual::eventFilter(class QObject *, class QEvent *)
-	?tr@HsWidgetHost@@SA?AVQString@@PBD0@Z @ 229 NONAME ; class QString HsWidgetHost::tr(char const *, char const *)
-	?remove@HsWallpaper@@QAEXXZ @ 230 NONAME ; void HsWallpaper::remove(void)
-	?idleView@HsGui@@QBEPAVHbView@@XZ @ 231 NONAME ; class HbView * HsGui::idleView(void) const
-	??1HsPageVisual@@UAE@XZ @ 232 NONAME ; HsPageVisual::~HsPageVisual(void)
-	?widgetMoveBlockedFeedbackEffect@HsConfiguration@@QBE?AW4InstantEffect@HbFeedback@@XZ @ 233 NONAME ; enum HbFeedback::InstantEffect HsConfiguration::widgetMoveBlockedFeedbackEffect(void) const
-	?widgetPickFeedbackEffect@HsConfiguration@@QBE?AW4InstantEffect@HbFeedback@@XZ @ 234 NONAME ; enum HbFeedback::InstantEffect HsConfiguration::widgetPickFeedbackEffect(void) const
-	?widgetSnappingFeedbackEffect@HsConfiguration@@QBE?AW4InstantEffect@HbFeedback@@XZ @ 235 NONAME ; enum HbFeedback::InstantEffect HsConfiguration::widgetSnappingFeedbackEffect(void) const
-	?load@HsScene@@QAE_NXZ @ 236 NONAME ; bool HsScene::load(void)
-	?trUtf8@HsSceneWallpaper@@SA?AVQString@@PBD0H@Z @ 237 NONAME ; class QString HsSceneWallpaper::trUtf8(char const *, char const *, int)
-	?tr@HsConfiguration@@SA?AVQString@@PBD0@Z @ 238 NONAME ; class QString HsConfiguration::tr(char const *, char const *)
-	?widgetRepositionFeedbackEffect@HsConfiguration@@QBE?AW4InstantEffect@HbFeedback@@XZ @ 239 NONAME ; enum HbFeedback::InstantEffect HsConfiguration::widgetRepositionFeedbackEffect(void) const
-	?onError@HsWidgetHost@@AAEXXZ @ 240 NONAME ; void HsWidgetHost::onError(void)
-	?cleanup@HsWallpaperLoader@@AAEXXZ @ 241 NONAME ; void HsWallpaperLoader::cleanup(void)
-	?targets@HsWallpaperLoader@@QBE?AV?$QHash@VQString@@VQVariant@@@@XZ @ 242 NONAME ; class QHash<class QString, class QVariant> HsWallpaperLoader::targets(void) const
-	??0HsShortcutService@@AAE@PAVQStateMachine@@PAVQObject@@@Z @ 243 NONAME ; HsShortcutService::HsShortcutService(class QStateMachine *, class QObject *)
-	?hideVerticalSnapLine@HsIdleWidget@@QAEXXZ @ 244 NONAME ; void HsIdleWidget::hideVerticalSnapLine(void)
-	?setActivePage@HsIdleWidget@@QAEXH@Z @ 245 NONAME ; void HsIdleWidget::setActivePage(int)
-	?setSnapLineFadeOutDuration@HsConfiguration@@QAEXH@Z @ 246 NONAME ; void HsConfiguration::setSnapLineFadeOutDuration(int)
-	?polishEvent@HsIdleWidget@@MAEXXZ @ 247 NONAME ; void HsIdleWidget::polishEvent(void)
-	?tr@HsPageWallpaper@@SA?AVQString@@PBD0H@Z @ 248 NONAME ; class QString HsPageWallpaper::tr(char const *, char const *, int)
-	?widgetDropToTrashbinFeedbackEffect@HsConfiguration@@QBE?AW4InstantEffect@HbFeedback@@XZ @ 249 NONAME ; enum HbFeedback::InstantEffect HsConfiguration::widgetDropToTrashbinFeedbackEffect(void) const
-	?staticMetaObject@HsPageWallpaper@@2UQMetaObject@@B @ 250 NONAME ; struct QMetaObject const HsPageWallpaper::staticMetaObject
-	?onWidgetFinished@HsPage@@AAEXXZ @ 251 NONAME ; void HsPage::onWidgetFinished(void)
-	?onThreadFinished@HsWallpaperLoader@@AAEXXZ @ 252 NONAME ; void HsWallpaperLoader::onThreadFinished(void)
-	?tr@HsWidgetComponentRegistry@@SA?AVQString@@PBD0H@Z @ 253 NONAME ; class QString HsWidgetComponentRegistry::tr(char const *, char const *, int)
-	?loadControlLayer@HsIdleWidget@@AAEXXZ @ 254 NONAME ; void HsIdleWidget::loadControlLayer(void)
-	?action_initialize@HsWidgetHost@@AAEXXZ @ 255 NONAME ; void HsWidgetHost::action_initialize(void)
-	?sceneX@HsIdleWidget@@QBEMXZ @ 256 NONAME ; float HsIdleWidget::sceneX(void) const
-	?action_load@HsWidgetHost@@AAEXXZ @ 257 NONAME ; void HsWidgetHost::action_load(void)
-	?connectionName@HsDatabase@@QBE?AVQString@@XZ @ 258 NONAME ; class QString HsDatabase::connectionName(void) const
-	?snapLineFadeInDuration@HsConfiguration@@QBEHXZ @ 259 NONAME ; int HsConfiguration::snapLineFadeInDuration(void) const
-	?setMethod@HsWidgetHost@@AAE_NPBDAAVQMetaMethod@@@Z @ 260 NONAME ; bool HsWidgetHost::setMethod(char const *, class QMetaMethod &)
-	?setInstance@HsDatabase@@SAXPAV1@@Z @ 261 NONAME ; void HsDatabase::setInstance(class HsDatabase *)
-	??0HsWallpaper@@QAE@PAVQGraphicsItem@@@Z @ 262 NONAME ; HsWallpaper::HsWallpaper(class QGraphicsItem *)
-	?setSnapEffectsEnabled@HsConfiguration@@QAEX_N@Z @ 263 NONAME ; void HsConfiguration::setSnapEffectsEnabled(bool)
-	?newPageAddedAnimationDuration@HsConfiguration@@QBEHXZ @ 264 NONAME ; int HsConfiguration::newPageAddedAnimationDuration(void) const
-	?getStaticMetaObject@HsWallpaperLoaderThread@@SAABUQMetaObject@@XZ @ 265 NONAME ; struct QMetaObject const & HsWallpaperLoaderThread::getStaticMetaObject(void)
-	?commit@HsDatabase@@QAE_NXZ @ 266 NONAME ; bool HsDatabase::commit(void)
-	?trUtf8@HsDatabase@@SA?AVQString@@PBD0@Z @ 267 NONAME ; class QString HsDatabase::trUtf8(char const *, char const *)
-	?mousePressEvent@HsWidgetHostVisual@@MAEXPAVQGraphicsSceneMouseEvent@@@Z @ 268 NONAME ; void HsWidgetHostVisual::mousePressEvent(class QGraphicsSceneMouseEvent *)
-	?tr@HsWidgetComponent@@SA?AVQString@@PBD0H@Z @ 269 NONAME ; class QString HsWidgetComponent::tr(char const *, char const *, int)
-	?backupRestoreStarted@HsBackupRestoreObserver@@QAEXXZ @ 270 NONAME ; void HsBackupRestoreObserver::backupRestoreStarted(void)
-	?qt_metacast@HsPageWallpaper@@UAEPAXPBD@Z @ 271 NONAME ; void * HsPageWallpaper::qt_metacast(char const *)
-	?trUtf8@HsWidgetHost@@SA?AVQString@@PBD0@Z @ 272 NONAME ; class QString HsWidgetHost::trUtf8(char const *, char const *)
-	?setDefaultPageId@HsConfiguration@@QAEXH@Z @ 273 NONAME ; void HsConfiguration::setDefaultPageId(int)
-	?metaObject@HsWidgetHostVisual@@UBEPBUQMetaObject@@XZ @ 274 NONAME ; struct QMetaObject const * HsWidgetHostVisual::metaObject(void) const
-	?installTranslator@HsWidgetComponent@@AAEXXZ @ 275 NONAME ; void HsWidgetComponent::installTranslator(void)
-	?bounceAnimationEasingCurve@HsConfiguration@@QBE?AW4Type@QEasingCurve@@XZ @ 276 NONAME ; enum QEasingCurve::Type HsConfiguration::bounceAnimationEasingCurve(void) const
-	??_EHsIdleWidget@@UAE@I@Z @ 277 NONAME ; HsIdleWidget::~HsIdleWidget(unsigned int)
-	?qt_metacall@HsWidgetComponent@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 278 NONAME ; int HsWidgetComponent::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?qt_metacall@HsConfiguration@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 279 NONAME ; int HsConfiguration::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?cleanupIdleUi@HsGui@@QAEXXZ @ 280 NONAME ; void HsGui::cleanupIdleUi(void)
-	?setWidgetOverTrashbinFeedbackEffect@HsConfiguration@@QAEXW4InstantEffect@HbFeedback@@@Z @ 281 NONAME ; void HsConfiguration::setWidgetOverTrashbinFeedbackEffect(enum HbFeedback::InstantEffect)
-	?handleEntryAdded@HsWidgetComponentRegistry@@AAEXABVCaEntry@@ABVQString@@@Z @ 282 NONAME ; void HsWidgetComponentRegistry::handleEntryAdded(class CaEntry const &, class QString const &)
-	?setProperty@HsWidgetHost@@AAE_NPBDAAVQMetaProperty@@@Z @ 283 NONAME ; bool HsWidgetHost::setProperty(char const *, class QMetaProperty &)
-	?pagePanFinished@HsScene@@IAEXPAVQGestureEvent@@@Z @ 284 NONAME ; void HsScene::pagePanFinished(class QGestureEvent *)
-	?minimumWidgetSizeInUnits@HsConfiguration@@QBE?AVQSizeF@@XZ @ 285 NONAME ; class QSizeF HsConfiguration::minimumWidgetSizeInUnits(void) const
-	??0HsBackupRestoreObserver@@AAE@PAVQObject@@@Z @ 286 NONAME ; HsBackupRestoreObserver::HsBackupRestoreObserver(class QObject *)
-	?setClockWidgetTapFeedbackEffect@HsConfiguration@@QAEXW4InstantEffect@HbFeedback@@@Z @ 287 NONAME ; void HsConfiguration::setClockWidgetTapFeedbackEffect(enum HbFeedback::InstantEffect)
-	??1HsPage@@UAE@XZ @ 288 NONAME ; HsPage::~HsPage(void)
-	?databaseId@HsWidgetHost@@QBEHXZ @ 289 NONAME ; int HsWidgetHost::databaseId(void) const
-	?setInstallationPath@HsWidgetComponentDescriptor@@QAEXABVQString@@@Z @ 290 NONAME ; void HsWidgetComponentDescriptor::setInstallationPath(class QString const &)
-	?staticMetaObject@HsHostedWidgetFactory@@2UQMetaObject@@B @ 291 NONAME ; struct QMetaObject const HsHostedWidgetFactory::staticMetaObject
-	?setTitle@HsWidgetComponentDescriptor@@QAEXABVQString@@@Z @ 292 NONAME ; void HsWidgetComponentDescriptor::setTitle(class QString const &)
-	?qt_metacall@HsPageWallpaper@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 293 NONAME ; int HsPageWallpaper::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?setWidgetSnappingFeedbackEffect@HsConfiguration@@QAEXW4InstantEffect@HbFeedback@@@Z @ 294 NONAME ; void HsConfiguration::setWidgetSnappingFeedbackEffect(enum HbFeedback::InstantEffect)
-	?setWidgetDragEffectDuration@HsConfiguration@@QAEXH@Z @ 295 NONAME ; void HsConfiguration::setWidgetDragEffectDuration(int)
-	?widgetPresentation@HsDatabase@@QAE_NAAVHsWidgetPresentationData@@@Z @ 296 NONAME ; bool HsDatabase::widgetPresentation(class HsWidgetPresentationData &)
-	?pageChangePanDistance@HsConfiguration@@QBEMXZ @ 297 NONAME ; float HsConfiguration::pageChangePanDistance(void) const
-	?mInstance@HsContentService@@0PAV1@A @ 298 NONAME ; class HsContentService * HsContentService::mInstance
-	??0HsWidgetComponent@@AAE@ABVQString@@PAVQObject@@@Z @ 299 NONAME ; HsWidgetComponent::HsWidgetComponent(class QString const &, class QObject *)
-	?startDragEffect@HsWidgetHostVisual@@QAEXXZ @ 300 NONAME ; void HsWidgetHostVisual::startDragEffect(void)
-	?insertPage@HsIdleWidget@@QAEXHPAVHsPage@@@Z @ 301 NONAME ; void HsIdleWidget::insertPage(int, class HsPage *)
-	?onOrientationChanged@HsPage@@AAEXW4Orientation@Qt@@@Z @ 302 NONAME ; void HsPage::onOrientationChanged(enum Qt::Orientation)
-	?adjustedWidgetPosition@HsPage@@QAE?AVQPointF@@ABVQRectF@@@Z @ 303 NONAME ; class QPointF HsPage::adjustedWidgetPosition(class QRectF const &)
-	?staticMetaObject@HsWallpaperLoader@@2UQMetaObject@@B @ 304 NONAME ; struct QMetaObject const HsWallpaperLoader::staticMetaObject
-	?widgetTapStarted@HsScene@@IAEXVQPointF@@PAVHsWidgetHost@@@Z @ 305 NONAME ; void HsScene::widgetTapStarted(class QPointF, class HsWidgetHost *)
-	?widgetDragEffectDuration@HsConfiguration@@QBEHXZ @ 306 NONAME ; int HsConfiguration::widgetDragEffectDuration(void) const
-	?tr@HsHostedWidgetFactory@@SA?AVQString@@PBD0H@Z @ 307 NONAME ; class QString HsHostedWidgetFactory::tr(char const *, char const *, int)
-	?navigateToApplibrary@HsGui@@IAEXXZ @ 308 NONAME ; void HsGui::navigateToApplibrary(void)
-	?load@HsConfiguration@@QAE_NXZ @ 309 NONAME ; bool HsConfiguration::load(void)
-	?createInstance@HsPage@@SAPAV1@ABVHsPageData@@@Z @ 310 NONAME ; class HsPage * HsPage::createInstance(class HsPageData const &)
-	?widgetPreferences@HsDatabase@@QAE_NHAAV?$QHash@VQString@@VQVariant@@@@@Z @ 311 NONAME ; bool HsDatabase::widgetPreferences(int, class QHash<class QString, class QVariant> &)
-	?removePage@HsScene@@QAE_NPAVHsPage@@@Z @ 312 NONAME ; bool HsScene::removePage(class HsPage *)
-	?hideWidget@HsWidgetHost@@QAEXXZ @ 313 NONAME ; void HsWidgetHost::hideWidget(void)
-	?close@HsDatabase@@QAEXXZ @ 314 NONAME ; void HsDatabase::close(void)
-	?maximumPageCount@HsConfiguration@@QBEHXZ @ 315 NONAME ; int HsConfiguration::maximumPageCount(void) const
-	?action_faulted@HsWidgetHost@@AAEXXZ @ 316 NONAME ; void HsWidgetHost::action_faulted(void)
-	?setServiceXml@HsWidgetComponentDescriptor@@QAEXABVQString@@@Z @ 317 NONAME ; void HsWidgetComponentDescriptor::setServiceXml(class QString const &)
-	?getStaticMetaObject@HsWidgetHost@@SAABUQMetaObject@@XZ @ 318 NONAME ; struct QMetaObject const & HsWidgetHost::getStaticMetaObject(void)
-	??0HsWidgetData@@QAE@ABV0@@Z @ 319 NONAME ; HsWidgetData::HsWidgetData(class HsWidgetData const &)
-	?installationPath@HsWidgetComponentDescriptor@@QBE?AVQString@@XZ @ 320 NONAME ; class QString HsWidgetComponentDescriptor::installationPath(void) const
-	?showHorizontalSnapLine@HsIdleWidget@@QAEXABVQLineF@@@Z @ 321 NONAME ; void HsIdleWidget::showHorizontalSnapLine(class QLineF const &)
-	??_EHsPageVisual@@UAE@I@Z @ 322 NONAME ; HsPageVisual::~HsPageVisual(unsigned int)
-	?setWidgetDropEffectDuration@HsConfiguration@@QAEXH@Z @ 323 NONAME ; void HsConfiguration::setWidgetDropEffectDuration(int)
-	?pageRemovedAnimationDuration@HsConfiguration@@QBEHXZ @ 324 NONAME ; int HsConfiguration::pageRemovedAnimationDuration(void) const
-	?onFinished@HsWidgetHost@@AAEXXZ @ 325 NONAME ; void HsWidgetHost::onFinished(void)
-	?rollback@HsDatabase@@QAE_NXZ @ 326 NONAME ; bool HsDatabase::rollback(void)
-	?widget@HsDatabase@@QAE_NAAVHsWidgetData@@@Z @ 327 NONAME ; bool HsDatabase::widget(class HsWidgetData &)
-	?description@HsWidgetComponentDescriptor@@QBE?AVQString@@XZ @ 328 NONAME ; class QString HsWidgetComponentDescriptor::description(void) const
-	?mInstance@HsShortcutService@@0PAV1@A @ 329 NONAME ; class HsShortcutService * HsShortcutService::mInstance
-	?pageIndicator@HsIdleWidget@@QBEPAVHsPageIndicator@@XZ @ 330 NONAME ; class HsPageIndicator * HsIdleWidget::pageIndicator(void) const
-	?setShortcutWidgetTapFeedbackEffect@HsConfiguration@@QAEXW4InstantEffect@HbFeedback@@@Z @ 331 NONAME ; void HsConfiguration::setShortcutWidgetTapFeedbackEffect(enum HbFeedback::InstantEffect)
-	?wallpaperDirectory@HsPageWallpaper@@MBE?AVQString@@XZ @ 332 NONAME ; class QString HsPageWallpaper::wallpaperDirectory(void) const
-	?qt_metacast@HsWidgetComponent@@UAEPAXPBD@Z @ 333 NONAME ; void * HsWidgetComponent::qt_metacast(char const *)
-	?metaObject@HsWallpaperLoaderThread@@UBEPBUQMetaObject@@XZ @ 334 NONAME ; struct QMetaObject const * HsWallpaperLoaderThread::metaObject(void) const
-	?setTargetSize@HsWallpaperLoaderThread@@QAEXABVQSize@@@Z @ 335 NONAME ; void HsWallpaperLoaderThread::setTargetSize(class QSize const &)
-	?removePage@HsIdleWidget@@QAEXH@Z @ 336 NONAME ; void HsIdleWidget::removePage(int)
-	?tr@HsWallpaper@@SA?AVQString@@PBD0H@Z @ 337 NONAME ; class QString HsWallpaper::tr(char const *, char const *, int)
-	?defaultPageId@HsConfiguration@@QBEHXZ @ 338 NONAME ; int HsConfiguration::defaultPageId(void) const
-	?setSourcePath@HsWallpaperLoader@@QAEXABVQString@@@Z @ 339 NONAME ; void HsWallpaperLoader::setSourcePath(class QString const &)
-	?metaObject@HsGui@@UBEPBUQMetaObject@@XZ @ 340 NONAME ; struct QMetaObject const * HsGui::metaObject(void) const
-	?pageChangeAnimationEasingCurve@HsConfiguration@@QBE?AW4Type@QEasingCurve@@XZ @ 341 NONAME ; enum QEasingCurve::Type HsConfiguration::pageChangeAnimationEasingCurve(void) const
-	?wallpaper@HsPage@@QBEPAVHsWallpaper@@XZ @ 342 NONAME ; class HsWallpaper * HsPage::wallpaper(void) const
-	??0HsPageVisual@@QAE@PAVQGraphicsItem@@@Z @ 343 NONAME ; HsPageVisual::HsPageVisual(class QGraphicsItem *)
-	?trUtf8@HsWidgetComponent@@SA?AVQString@@PBD0@Z @ 344 NONAME ; class QString HsWidgetComponent::trUtf8(char const *, char const *)
-	?event_backupRestoreStarted@HsBackupRestoreObserver@@IAEXXZ @ 345 NONAME ; void HsBackupRestoreObserver::event_backupRestoreStarted(void)
-	?version@HsWidgetComponentDescriptor@@QBE?AVQString@@XZ @ 346 NONAME ; class QString HsWidgetComponentDescriptor::version(void) const
-	?action_disconnectComponent@HsWidgetHost@@AAEXXZ @ 347 NONAME ; void HsWidgetHost::action_disconnectComponent(void)
-	?scene@HsSceneWallpaper@@QBEPAVHsScene@@XZ @ 348 NONAME ; class HsScene * HsSceneWallpaper::scene(void) const
-	?mInstance@HsConfiguration@@0PAV1@A @ 349 NONAME ; class HsConfiguration * HsConfiguration::mInstance
-	?newWidgets@HsPage@@QAE?AV?$QList@PAVHsWidgetHost@@@@XZ @ 350 NONAME ; class QList<class HsWidgetHost *> HsPage::newWidgets(void)
-	??0HsHostedWidgetFactory@@AAE@PAVQObject@@@Z @ 351 NONAME ; HsHostedWidgetFactory::HsHostedWidgetFactory(class QObject *)
-	?trUtf8@HsContentService@@SA?AVQString@@PBD0@Z @ 352 NONAME ; class QString HsContentService::trUtf8(char const *, char const *)
-	?emitUpdated@HsWidgetComponent@@AAEXXZ @ 353 NONAME ; void HsWidgetComponent::emitUpdated(void)
-	?emitUninstalled@HsWidgetComponent@@AAEXXZ @ 354 NONAME ; void HsWidgetComponent::emitUninstalled(void)
-	?tr@HsConfiguration@@SA?AVQString@@PBD0H@Z @ 355 NONAME ; class QString HsConfiguration::tr(char const *, char const *, int)
-	??0HsSceneWallpaper@@QAE@PAVHsScene@@PAVQGraphicsItem@@@Z @ 356 NONAME ; HsSceneWallpaper::HsSceneWallpaper(class HsScene *, class QGraphicsItem *)
-	?createTargets@HsPageWallpaper@@MAE?AV?$QHash@VQString@@VQVariant@@@@ABVQString@@@Z @ 357 NONAME ; class QHash<class QString, class QVariant> HsPageWallpaper::createTargets(class QString const &)
-	?mInstance@HsGui@@0PAV1@A @ 358 NONAME ; class HsGui * HsGui::mInstance
-	?pageChangeZoneWidth@HsConfiguration@@QBEMXZ @ 359 NONAME ; float HsConfiguration::pageChangeZoneWidth(void) const
-	?qt_metacast@HsGui@@UAEPAXPBD@Z @ 360 NONAME ; void * HsGui::qt_metacast(char const *)
-	?setInstance@HsGui@@SAPAV1@PAV1@@Z @ 361 NONAME ; class HsGui * HsGui::setInstance(class HsGui *)
-	?tr@HsPageWallpaper@@SA?AVQString@@PBD0@Z @ 362 NONAME ; class QString HsPageWallpaper::tr(char const *, char const *)
-	?maximumWidgetSizeInPixels@HsConfiguration@@QBE?AVQSizeF@@XZ @ 363 NONAME ; class QSizeF HsConfiguration::maximumWidgetSizeInPixels(void) const
-	??_EHsBackupRestoreObserver@@UAE@I@Z @ 364 NONAME ; HsBackupRestoreObserver::~HsBackupRestoreObserver(unsigned int)
-	??1HsScene@@UAE@XZ @ 365 NONAME ; HsScene::~HsScene(void)
-	?pageWallpaperLayer@HsIdleWidget@@QBEPAVHbWidget@@XZ @ 366 NONAME ; class HbWidget * HsIdleWidget::pageWallpaperLayer(void) const
-	?deleteWidgetPresentation@HsDatabase@@QAE_NHW4Orientation@Qt@@@Z @ 367 NONAME ; bool HsDatabase::deleteWidgetPresentation(int, enum Qt::Orientation)
-	?getStaticMetaObject@HsWidgetComponent@@SAABUQMetaObject@@XZ @ 368 NONAME ; struct QMetaObject const & HsWidgetComponent::getStaticMetaObject(void)
-	?addExistingWidget@HsPage@@QAE_NPAVHsWidgetHost@@@Z @ 369 NONAME ; bool HsPage::addExistingWidget(class HsWidgetHost *)
-	?qt_metacast@HsWidgetComponentRegistry@@UAEPAXPBD@Z @ 370 NONAME ; void * HsWidgetComponentRegistry::qt_metacast(char const *)
-	?close@HsWidgetHost@@QAEXXZ @ 371 NONAME ; void HsWidgetHost::close(void)
-	?action_remove@HsWidgetHost@@AAEXXZ @ 372 NONAME ; void HsWidgetHost::action_remove(void)
-	?trUtf8@HsWallpaper@@SA?AVQString@@PBD0H@Z @ 373 NONAME ; class QString HsWallpaper::trUtf8(char const *, char const *, int)
-	?activePage@HsScene@@QBEPAVHsPage@@XZ @ 374 NONAME ; class HsPage * HsScene::activePage(void) const
-	?bounceEffect@HsConfiguration@@QBEHXZ @ 375 NONAME ; int HsConfiguration::bounceEffect(void) const
-	?setupIdleUi@HsGui@@QAEXXZ @ 376 NONAME ; void HsGui::setupIdleUi(void)
-	?pages@HsDatabase@@QAE_NAAV?$QList@VHsPageData@@@@@Z @ 377 NONAME ; bool HsDatabase::pages(class QList<class HsPageData> &)
-	?savePresentation@HsWidgetHost@@QAE_NXZ @ 378 NONAME ; bool HsWidgetHost::savePresentation(void)
-	?pageChangeAnimation@HsGui@@QAEPAVHsPropertyAnimationWrapper@@XZ @ 379 NONAME ; class HsPropertyAnimationWrapper * HsGui::pageChangeAnimation(void)
-	?takeInstance@HsScene@@SAPAV1@XZ @ 380 NONAME ; class HsScene * HsScene::takeInstance(void)
-	?rootPath@HsWidgetComponent@@QBE?AVQString@@XZ @ 381 NONAME ; class QString HsWidgetComponent::rootPath(void) const
-	?event_startAndHide@HsWidgetHost@@IAEXXZ @ 382 NONAME ; void HsWidgetHost::event_startAndHide(void)
-	?qt_metacast@HsWallpaperLoader@@UAEPAXPBD@Z @ 383 NONAME ; void * HsWallpaperLoader::qt_metacast(char const *)
-	?startDragEffect@HsWidgetHost@@QAEXXZ @ 384 NONAME ; void HsWidgetHost::startDragEffect(void)
-	??1HsDatabase@@UAE@XZ @ 385 NONAME ; HsDatabase::~HsDatabase(void)
-	??1HsWidgetComponent@@UAE@XZ @ 386 NONAME ; HsWidgetComponent::~HsWidgetComponent(void)
-	?metaObject@HsSceneWallpaper@@UBEPBUQMetaObject@@XZ @ 387 NONAME ; struct QMetaObject const * HsSceneWallpaper::metaObject(void) const
-	?createInstance@HsWidgetHost@@SAPAV1@AAVHsWidgetData@@ABV?$QHash@VQString@@VQVariant@@@@@Z @ 388 NONAME ; class HsWidgetHost * HsWidgetHost::createInstance(class HsWidgetData &, class QHash<class QString, class QVariant> const &)
-	?setupEffects@HsWidgetHostVisual@@AAEXXZ @ 389 NONAME ; void HsWidgetHostVisual::setupEffects(void)
-	?trUtf8@HsGui@@SA?AVQString@@PBD0@Z @ 390 NONAME ; class QString HsGui::trUtf8(char const *, char const *)
-	?setPage@HsPageWallpaper@@QAEXPAVHsPage@@@Z @ 391 NONAME ; void HsPageWallpaper::setPage(class HsPage *)
-	?shape@HsWidgetHostVisual@@UBE?AVQPainterPath@@XZ @ 392 NONAME ; class QPainterPath HsWidgetHostVisual::shape(void) const
-	?deletePage@HsDatabase@@QAE_NH@Z @ 393 NONAME ; bool HsDatabase::deletePage(int)
-	?savePresentation@HsWidgetHost@@QAE_NAAVHsWidgetPresentationData@@@Z @ 394 NONAME ; bool HsWidgetHost::savePresentation(class HsWidgetPresentationData &)
-	?tr@HsWallpaperLoaderThread@@SA?AVQString@@PBD0H@Z @ 395 NONAME ; class QString HsWallpaperLoaderThread::tr(char const *, char const *, int)
-	?resized@HsWidgetHostVisual@@IAEXXZ @ 396 NONAME ; void HsWidgetHostVisual::resized(void)
-	?page@HsWidgetHost@@QBEPAVHsPage@@XZ @ 397 NONAME ; class HsPage * HsWidgetHost::page(void) const
-	?qt_metacast@HsWallpaper@@UAEPAXPBD@Z @ 398 NONAME ; void * HsWallpaper::qt_metacast(char const *)
-	?staticMetaObject@HsWidgetComponent@@2UQMetaObject@@B @ 399 NONAME ; struct QMetaObject const HsWidgetComponent::staticMetaObject
-	?setRemovable@HsPage@@QAEX_N@Z @ 400 NONAME ; void HsPage::setRemovable(bool)
-	?showVerticalSnapLine@HsIdleWidget@@QAEXABVQLineF@@@Z @ 401 NONAME ; void HsIdleWidget::showVerticalSnapLine(class QLineF const &)
-	?staticMetaObject@HsIdleWidget@@2UQMetaObject@@B @ 402 NONAME ; struct QMetaObject const HsIdleWidget::staticMetaObject
-	?widgetRemoved@HsContentService@@IAEXABVQString@@ABV?$QHash@VQString@@VQVariant@@@@@Z @ 403 NONAME ; void HsContentService::widgetRemoved(class QString const &, class QHash<class QString, class QVariant> const &)
-	?widgetMoveUpdated@HsScene@@IAEXABVQPointF@@PAVHsWidgetHost@@@Z @ 404 NONAME ; void HsScene::widgetMoveUpdated(class QPointF const &, class HsWidgetHost *)
-	?qt_metacall@HsWallpaperLoaderThread@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 405 NONAME ; int HsWallpaperLoaderThread::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?loadPresentation@HsWidgetHost@@QAE_NXZ @ 406 NONAME ; bool HsWidgetHost::loadPresentation(void)
-	?setupStates@HsWidgetHost@@AAEXXZ @ 407 NONAME ; void HsWidgetHost::setupStates(void)
-	?getStaticMetaObject@HsContentService@@SAABUQMetaObject@@XZ @ 408 NONAME ; struct QMetaObject const & HsContentService::getStaticMetaObject(void)
-	?wallpaper@HsScene@@QBEPAVHsWallpaper@@XZ @ 409 NONAME ; class HsWallpaper * HsScene::wallpaper(void) const
-	?isItemShortcutWidget@HsShortcutService@@QAE_NH@Z @ 410 NONAME ; bool HsShortcutService::isItemShortcutWidget(int)
-	?setGeometry@HsPageVisual@@UAEXABVQRectF@@@Z @ 411 NONAME ; void HsPageVisual::setGeometry(class QRectF const &)
-	?tr@HsIdleWidget@@SA?AVQString@@PBD0H@Z @ 412 NONAME ; class QString HsIdleWidget::tr(char const *, char const *, int)
-	?setDatabaseName@HsDatabase@@QAEXABVQString@@@Z @ 413 NONAME ; void HsDatabase::setDatabaseName(class QString const &)
-	?updateWidget@HsDatabase@@QAE_NABVHsWidgetData@@@Z @ 414 NONAME ; bool HsDatabase::updateWidget(class HsWidgetData const &)
-	?trUtf8@HsBackupRestoreObserver@@SA?AVQString@@PBD0H@Z @ 415 NONAME ; class QString HsBackupRestoreObserver::trUtf8(char const *, char const *, int)
-	?loadPresentation@HsWidgetHost@@QAE_NW4Orientation@Qt@@@Z @ 416 NONAME ; bool HsWidgetHost::loadPresentation(enum Qt::Orientation)
-	?createWidgetForPreview@HsContentService@@QAEPAVHsWidgetHost@@ABV?$QHash@VQString@@VQVariant@@@@@Z @ 417 NONAME ; class HsWidgetHost * HsContentService::createWidgetForPreview(class QHash<class QString, class QVariant> const &)
-	?available@HsWidgetHost@@IAEXXZ @ 418 NONAME ; void HsWidgetHost::available(void)
-	?setPageChangeZoneWidth@HsConfiguration@@QAEXM@Z @ 419 NONAME ; void HsConfiguration::setPageChangeZoneWidth(float)
-	?emitAboutToUninstall@HsWidgetComponent@@AAEXXZ @ 420 NONAME ; void HsWidgetComponent::emitAboutToUninstall(void)
-	?iconUri@HsWidgetComponentDescriptor@@QBE?AVQString@@XZ @ 421 NONAME ; class QString HsWidgetComponentDescriptor::iconUri(void) const
-	?event_faulted@HsWidgetHost@@IAEXXZ @ 422 NONAME ; void HsWidgetHost::event_faulted(void)
-	?emitUnavailable@HsWidgetComponent@@AAEXXZ @ 423 NONAME ; void HsWidgetComponent::emitUnavailable(void)
-	??1HsWidgetData@@QAE@XZ @ 424 NONAME ; HsWidgetData::~HsWidgetData(void)
-	?snapTimeout@HsConfiguration@@QBEHXZ @ 425 NONAME ; int HsConfiguration::snapTimeout(void) const
-	?faulted@HsWidgetHost@@IAEXXZ @ 426 NONAME ; void HsWidgetHost::faulted(void)
-	??0HsIdleWidget@@QAE@PAVQGraphicsItem@@@Z @ 427 NONAME ; HsIdleWidget::HsIdleWidget(class QGraphicsItem *)
-	?event_unload@HsWidgetHost@@IAEXXZ @ 428 NONAME ; void HsWidgetHost::event_unload(void)
-	?handleEntryRemoved@HsWidgetComponentRegistry@@AAEXABVCaEntry@@ABVQString@@@Z @ 429 NONAME ; void HsWidgetComponentRegistry::handleEntryRemoved(class CaEntry const &, class QString const &)
-	?metaObject@HsWidgetComponentRegistry@@UBEPBUQMetaObject@@XZ @ 430 NONAME ; struct QMetaObject const * HsWidgetComponentRegistry::metaObject(void) const
-	?updated@HsWidgetComponent@@IAEXXZ @ 431 NONAME ; void HsWidgetComponent::updated(void)
-	?takeInstance@HsConfiguration@@SAPAV1@XZ @ 432 NONAME ; class HsConfiguration * HsConfiguration::takeInstance(void)
-	?pageIndex@HsPage@@QAEHXZ @ 433 NONAME ; int HsPage::pageIndex(void)
-	?setTargets@HsWallpaperLoader@@QAEXABV?$QHash@VQString@@VQVariant@@@@@Z @ 434 NONAME ; void HsWallpaperLoader::setTargets(class QHash<class QString, class QVariant> const &)
-	??1HsIdleWidget@@UAE@XZ @ 435 NONAME ; HsIdleWidget::~HsIdleWidget(void)
-	??_EHsHostedWidgetFactory@@UAE@I@Z @ 436 NONAME ; HsHostedWidgetFactory::~HsHostedWidgetFactory(unsigned int)
-	??0HsWallpaperLoaderThread@@QAE@PAVQObject@@@Z @ 437 NONAME ; HsWallpaperLoaderThread::HsWallpaperLoaderThread(class QObject *)
-	?staticMetaObject@HsGui@@2UQMetaObject@@B @ 438 NONAME ; struct QMetaObject const HsGui::staticMetaObject
-	?start@HsWallpaperLoader@@QAEXXZ @ 439 NONAME ; void HsWallpaperLoader::start(void)
-	?component@HsWidgetComponentRegistry@@QAEPAVHsWidgetComponent@@ABVQString@@@Z @ 440 NONAME ; class HsWidgetComponent * HsWidgetComponentRegistry::component(class QString const &)
-	??_EHsWidgetComponent@@UAE@I@Z @ 441 NONAME ; HsWidgetComponent::~HsWidgetComponent(unsigned int)
-	?mInstance@HsScene@@0PAV1@A @ 442 NONAME ; class HsScene * HsScene::mInstance
-	?getStaticMetaObject@HsGui@@SAABUQMetaObject@@XZ @ 443 NONAME ; struct QMetaObject const & HsGui::getStaticMetaObject(void)
-	?trUtf8@HsSceneWallpaper@@SA?AVQString@@PBD0@Z @ 444 NONAME ; class QString HsSceneWallpaper::trUtf8(char const *, char const *)
-	??_EHsWidgetHost@@UAE@I@Z @ 445 NONAME ; HsWidgetHost::~HsWidgetHost(unsigned int)
-	?minimumWidgetHeight@HsConfiguration@@QBEMXZ @ 446 NONAME ; float HsConfiguration::minimumWidgetHeight(void) const
-	?setVisualModel@HsWidgetHostVisual@@QAEXPAVHsWidgetHost@@@Z @ 447 NONAME ; void HsWidgetHostVisual::setVisualModel(class HsWidgetHost *)
-	??0HsPageWallpaper@@QAE@PAVHsPage@@PAVQGraphicsItem@@@Z @ 448 NONAME ; HsPageWallpaper::HsPageWallpaper(class HsPage *, class QGraphicsItem *)
-	?onSetPreferences@HsWidgetHost@@AAEXABVQStringList@@@Z @ 449 NONAME ; void HsWidgetHost::onSetPreferences(class QStringList const &)
-	?staticMetaObject@HsShortcutService@@2UQMetaObject@@B @ 450 NONAME ; struct QMetaObject const HsShortcutService::staticMetaObject
-	??1HsWidgetComponentDescriptor@@QAE@XZ @ 451 NONAME ; HsWidgetComponentDescriptor::~HsWidgetComponentDescriptor(void)
-	?showPageIndicator@HsIdleWidget@@QAEXXZ @ 452 NONAME ; void HsIdleWidget::showPageIndicator(void)
-	??1HsBackupRestoreObserver@@UAE@XZ @ 453 NONAME ; HsBackupRestoreObserver::~HsBackupRestoreObserver(void)
-	?insertPage@HsDatabase@@QAE_NAAVHsPageData@@@Z @ 454 NONAME ; bool HsDatabase::insertPage(class HsPageData &)
-	??_EHsWidgetComponentRegistry@@UAE@I@Z @ 455 NONAME ; HsWidgetComponentRegistry::~HsWidgetComponentRegistry(unsigned int)
-	?metaObject@HsIdleWidget@@UBEPBUQMetaObject@@XZ @ 456 NONAME ; struct QMetaObject const * HsIdleWidget::metaObject(void) const
-	?qt_metacast@HsHostedWidgetFactory@@UAEPAXPBD@Z @ 457 NONAME ; void * HsHostedWidgetFactory::qt_metacast(char const *)
-	?setUri@HsWidgetComponentDescriptor@@QAEXABVQString@@@Z @ 458 NONAME ; void HsWidgetComponentDescriptor::setUri(class QString const &)
-	??1HsWallpaperLoaderThread@@UAE@XZ @ 459 NONAME ; HsWallpaperLoaderThread::~HsWallpaperLoaderThread(void)
-	?staticMetaObject@HsWidgetComponentRegistry@@2UQMetaObject@@B @ 460 NONAME ; struct QMetaObject const HsWidgetComponentRegistry::staticMetaObject
-	??1HsWallpaper@@UAE@XZ @ 461 NONAME ; HsWallpaper::~HsWallpaper(void)
-	?qt_metacall@HsPage@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 462 NONAME ; int HsPage::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?onWidgetAvailable@HsPage@@AAEXXZ @ 463 NONAME ; void HsPage::onWidgetAvailable(void)
-	?qt_metacast@HsPage@@UAEPAXPBD@Z @ 464 NONAME ; void * HsPage::qt_metacast(char const *)
-	?result@HsWallpaperLoaderThread@@QBE_NXZ @ 465 NONAME ; bool HsWallpaperLoaderThread::result(void) const
-	?setPageIndicatorSpacing@HsConfiguration@@QAEXM@Z @ 466 NONAME ; void HsConfiguration::setPageIndicatorSpacing(float)
-	?setSnapLineFadeInDuration@HsConfiguration@@QAEXH@Z @ 467 NONAME ; void HsConfiguration::setSnapLineFadeInDuration(int)
-	??1HsGui@@UAE@XZ @ 468 NONAME ; HsGui::~HsGui(void)
-	?isValid@HsWidgetComponentDescriptor@@QAE_NXZ @ 469 NONAME ; bool HsWidgetComponentDescriptor::isValid(void)
-	?uri@HsWidgetComponentDescriptor@@QBE?AVQString@@XZ @ 470 NONAME ; class QString HsWidgetComponentDescriptor::uri(void) const
-	?setOrientation@HsGui@@QAEXW4Orientation@Qt@@@Z @ 471 NONAME ; void HsGui::setOrientation(enum Qt::Orientation)
-	?tr@HsWidgetComponentRegistry@@SA?AVQString@@PBD0@Z @ 472 NONAME ; class QString HsWidgetComponentRegistry::tr(char const *, char const *)
-	?getStaticMetaObject@HsPage@@SAABUQMetaObject@@XZ @ 473 NONAME ; struct QMetaObject const & HsPage::getStaticMetaObject(void)
-	?onWidgetFaulted@HsPage@@AAEXXZ @ 474 NONAME ; void HsPage::onWidgetFaulted(void)
-	?page@HsPageWallpaper@@QBEPAVHsPage@@XZ @ 475 NONAME ; class HsPage * HsPageWallpaper::page(void) const
-	?qt_metacast@HsBackupRestoreObserver@@UAEPAXPBD@Z @ 476 NONAME ; void * HsBackupRestoreObserver::qt_metacast(char const *)
-	?setTargetPath@HsWallpaperLoaderThread@@QAEXABVQString@@@Z @ 477 NONAME ; void HsWallpaperLoaderThread::setTargetPath(class QString const &)
-	?setSnapTimeout@HsConfiguration@@QAEXH@Z @ 478 NONAME ; void HsConfiguration::setSnapTimeout(int)
-	?createTargets@HsSceneWallpaper@@MAE?AV?$QHash@VQString@@VQVariant@@@@ABVQString@@@Z @ 479 NONAME ; class QHash<class QString, class QVariant> HsSceneWallpaper::createTargets(class QString const &)
-	?onWidgetResized@HsPage@@AAEXXZ @ 480 NONAME ; void HsPage::onWidgetResized(void)
-	?checkBUR@HsBackupRestoreObserver@@QAE_NXZ @ 481 NONAME ; bool HsBackupRestoreObserver::checkBUR(void)
-	?showWidgets@HsPage@@QAEXXZ @ 482 NONAME ; void HsPage::showWidgets(void)
-	?startWidget@HsWidgetHost@@QAEX_N@Z @ 483 NONAME ; void HsWidgetHost::startWidget(bool)
-	??_EHsShortcutService@@UAE@I@Z @ 484 NONAME ; HsShortcutService::~HsShortcutService(unsigned int)
-	?bounceFeedbackEffectDistance@HsConfiguration@@QBEMXZ @ 485 NONAME ; float HsConfiguration::bounceFeedbackEffectDistance(void) const
-	?unavailable@HsWidgetHost@@IAEXXZ @ 486 NONAME ; void HsWidgetHost::unavailable(void)
-	?qt_metacall@HsDatabase@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 487 NONAME ; int HsDatabase::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?contentRect@HsPage@@QAE?AVQRectF@@W4Orientation@Qt@@@Z @ 488 NONAME ; class QRectF HsPage::contentRect(enum Qt::Orientation)
-	?contentGeometry@HsPage@@QAE?AVQRectF@@XZ @ 489 NONAME ; class QRectF HsPage::contentGeometry(void)
-	?setHidden@HsWidgetComponentDescriptor@@QAEXABVQString@@@Z @ 490 NONAME ; void HsWidgetComponentDescriptor::setHidden(class QString const &)
-	?widgets@HsDatabase@@QAE_NHAAV?$QList@VHsWidgetData@@@@@Z @ 491 NONAME ; bool HsDatabase::widgets(int, class QList<class HsWidgetData> &)
-	??_EHsPageWallpaper@@UAE@I@Z @ 492 NONAME ; HsPageWallpaper::~HsPageWallpaper(unsigned int)
-	?databaseId@HsPage@@QBEHXZ @ 493 NONAME ; int HsPage::databaseId(void) const
-	?tr@HsWallpaperLoader@@SA?AVQString@@PBD0@Z @ 494 NONAME ; class QString HsWallpaperLoader::tr(char const *, char const *)
-	?show@HsGui@@QAEXXZ @ 495 NONAME ; void HsGui::show(void)
-	??0HsGui@@AAE@PAVQObject@@@Z @ 496 NONAME ; HsGui::HsGui(class QObject *)
-	?qt_metacall@HsBackupRestoreObserver@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 497 NONAME ; int HsBackupRestoreObserver::qt_metacall(enum QMetaObject::Call, int, void * *)
-	??_EHsWallpaperLoaderThread@@UAE@I@Z @ 498 NONAME ; HsWallpaperLoaderThread::~HsWallpaperLoaderThread(unsigned int)
-	?resolveRootPathAndTranslationFilename@HsWidgetComponent@@AAEXXZ @ 499 NONAME ; void HsWidgetComponent::resolveRootPathAndTranslationFilename(void)
-	?maximumWidgetHeight@HsConfiguration@@QBEMXZ @ 500 NONAME ; float HsConfiguration::maximumWidgetHeight(void) const
-	?isSnapEnabled@HsConfiguration@@QBE_NXZ @ 501 NONAME ; bool HsConfiguration::isSnapEnabled(void) const
-	?backupRestoreCompleted@HsBackupRestoreObserver@@QAEXXZ @ 502 NONAME ; void HsBackupRestoreObserver::backupRestoreCompleted(void)
-	?setPageRemovedAnimationDuration@HsConfiguration@@QAEXH@Z @ 503 NONAME ; void HsConfiguration::setPageRemovedAnimationDuration(int)
-	?insertWidget@HsDatabase@@QAE_NAAVHsWidgetData@@@Z @ 504 NONAME ; bool HsDatabase::insertWidget(class HsWidgetData &)
-	??1HsShortcutService@@UAE@XZ @ 505 NONAME ; HsShortcutService::~HsShortcutService(void)
-	?setupTouchArea@HsWidgetHostVisual@@AAEXXZ @ 506 NONAME ; void HsWidgetHostVisual::setupTouchArea(void)
-	?setBounceFeedbackEffectDistance@HsConfiguration@@QAEXM@Z @ 507 NONAME ; void HsConfiguration::setBounceFeedbackEffectDistance(float)
-	?onEntryChanged@HsWidgetComponentRegistry@@AAEXABVCaEntry@@W4ChangeType@@@Z @ 508 NONAME ; void HsWidgetComponentRegistry::onEntryChanged(class CaEntry const &, enum ChangeType)
-	?getPresentation@HsWidgetHost@@QAE_NAAVHsWidgetPresentationData@@@Z @ 509 NONAME ; bool HsWidgetHost::getPresentation(class HsWidgetPresentationData &)
-	?getStaticMetaObject@HsSceneWallpaper@@SAABUQMetaObject@@XZ @ 510 NONAME ; struct QMetaObject const & HsSceneWallpaper::getStaticMetaObject(void)
-	?tr@HsScene@@SA?AVQString@@PBD0H@Z @ 511 NONAME ; class QString HsScene::tr(char const *, char const *, int)
-	?uri@HsWidgetComponent@@QBE?AVQString@@XZ @ 512 NONAME ; class QString HsWidgetComponent::uri(void) const
-	?instance@HsContentService@@SAPAV1@XZ @ 513 NONAME ; class HsContentService * HsContentService::instance(void)
-	?snapGap@HsConfiguration@@QBEMXZ @ 514 NONAME ; float HsConfiguration::snapGap(void) const
-	?savePresentation@HsWidgetHost@@QAE_NW4Orientation@Qt@@@Z @ 515 NONAME ; bool HsWidgetHost::savePresentation(enum Qt::Orientation)
-	?setWidgetDropToTrashbinFeedbackEffect@HsConfiguration@@QAEXW4InstantEffect@HbFeedback@@@Z @ 516 NONAME ; void HsConfiguration::setWidgetDropToTrashbinFeedbackEffect(enum HbFeedback::InstantEffect)
-	?tr@HsIdleWidget@@SA?AVQString@@PBD0@Z @ 517 NONAME ; class QString HsIdleWidget::tr(char const *, char const *)
-	?title@HsWidgetComponentDescriptor@@QBE?AVQString@@XZ @ 518 NONAME ; class QString HsWidgetComponentDescriptor::title(void) const
-	?event_hide@HsWidgetHost@@IAEXXZ @ 519 NONAME ; void HsWidgetHost::event_hide(void)
-	?databaseId@HsScene@@QBEHXZ @ 520 NONAME ; int HsScene::databaseId(void) const
-	?setWidgetDropFeedbackEffect@HsConfiguration@@QAEXW4InstantEffect@HbFeedback@@@Z @ 521 NONAME ; void HsConfiguration::setWidgetDropFeedbackEffect(enum HbFeedback::InstantEffect)
-	??1HsWidgetComponentRegistry@@UAE@XZ @ 522 NONAME ; HsWidgetComponentRegistry::~HsWidgetComponentRegistry(void)
-	?setDescription@HsWidgetComponentDescriptor@@QAEXABVQString@@@Z @ 523 NONAME ; void HsWidgetComponentDescriptor::setDescription(class QString const &)
-	?getStaticMetaObject@HsConfiguration@@SAABUQMetaObject@@XZ @ 524 NONAME ; struct QMetaObject const & HsConfiguration::getStaticMetaObject(void)
-	?isRunning@HsWallpaperLoader@@QBE_NXZ @ 525 NONAME ; bool HsWallpaperLoader::isRunning(void) const
-	?activePageChanged@HsScene@@IAEXXZ @ 526 NONAME ; void HsScene::activePageChanged(void)
-	?staticMetaObject@HsSceneWallpaper@@2UQMetaObject@@B @ 527 NONAME ; struct QMetaObject const HsSceneWallpaper::staticMetaObject
-	?uninstalled@HsWidgetComponent@@IAEXXZ @ 528 NONAME ; void HsWidgetComponent::uninstalled(void)
-	??1HsHostedWidgetFactory@@UAE@XZ @ 529 NONAME ; HsHostedWidgetFactory::~HsHostedWidgetFactory(void)
-	?trUtf8@HsShortcutService@@SA?AVQString@@PBD0@Z @ 530 NONAME ; class QString HsShortcutService::trUtf8(char const *, char const *)
-	?setPage@HsWidgetHost@@QAE_NPAVHsPage@@@Z @ 531 NONAME ; bool HsWidgetHost::setPage(class HsPage *)
-	?metaObject@HsScene@@UBEPBUQMetaObject@@XZ @ 532 NONAME ; struct QMetaObject const * HsScene::metaObject(void) const
-	??_EHsScene@@UAE@I@Z @ 533 NONAME ; HsScene::~HsScene(unsigned int)
-	?pageTapAndHoldFinished@HsScene@@IAEXPAVQGestureEvent@@@Z @ 534 NONAME ; void HsScene::pageTapAndHoldFinished(class QGestureEvent *)
-	?remove@HsWidgetHost@@QAEXXZ @ 535 NONAME ; void HsWidgetHost::remove(void)
-	?run@HsWallpaperLoaderThread@@MAEXXZ @ 536 NONAME ; void HsWallpaperLoaderThread::run(void)
-	?maximumWidgetSizeInUnits@HsConfiguration@@QBE?AVQSizeF@@XZ @ 537 NONAME ; class QSizeF HsConfiguration::maximumWidgetSizeInUnits(void) const
-	?getStaticMetaObject@HsScene@@SAABUQMetaObject@@XZ @ 538 NONAME ; struct QMetaObject const & HsScene::getStaticMetaObject(void)
-	?finished@HsWallpaperLoader@@IAEXXZ @ 539 NONAME ; void HsWallpaperLoader::finished(void)
-	?visual@HsPage@@QBEPAVHsPageVisual@@XZ @ 540 NONAME ; class HsPageVisual * HsPage::visual(void) const
-	?snapLineFadeOutDuration@HsConfiguration@@QBEHXZ @ 541 NONAME ; int HsConfiguration::snapLineFadeOutDuration(void) const
-	?trUtf8@HsPageWallpaper@@SA?AVQString@@PBD0H@Z @ 542 NONAME ; class QString HsPageWallpaper::trUtf8(char const *, char const *, int)
-	?setNewSize@HsWidgetHostVisual@@AAEXABVQSizeF@@@Z @ 543 NONAME ; void HsWidgetHostVisual::setNewSize(class QSizeF const &)
-	?imageSet@HsWallpaper@@IAEXXZ @ 544 NONAME ; void HsWallpaper::imageSet(void)
-	?tr@HsWidgetHostVisual@@SA?AVQString@@PBD0H@Z @ 545 NONAME ; class QString HsWidgetHostVisual::tr(char const *, char const *, int)
-	?sceneType@HsConfiguration@@QBE?AW4SceneType@1@XZ @ 546 NONAME ; enum HsConfiguration::SceneType HsConfiguration::sceneType(void) const
-	?tr@HsPage@@SA?AVQString@@PBD0H@Z @ 547 NONAME ; class QString HsPage::tr(char const *, char const *, int)
-	?setNewPageAddedAnimationDuration@HsConfiguration@@QAEXH@Z @ 548 NONAME ; void HsConfiguration::setNewPageAddedAnimationDuration(int)
-	??_EHsGui@@UAE@I@Z @ 549 NONAME ; HsGui::~HsGui(unsigned int)
-	?isAvailable@HsWidgetComponent@@QBE_NXZ @ 550 NONAME ; bool HsWidgetComponent::isAvailable(void) const
-	?updateWidgetZValues@HsDatabase@@QAE_NABV?$QHash@HM@@W4Orientation@Qt@@@Z @ 551 NONAME ; bool HsDatabase::updateWidgetZValues(class QHash<int, float> const &, enum Qt::Orientation)
-	?checkConnection@HsDatabase@@ABE_NXZ @ 552 NONAME ; bool HsDatabase::checkConnection(void) const
-	?staticMetaObject@HsConfiguration@@2UQMetaObject@@B @ 553 NONAME ; struct QMetaObject const HsConfiguration::staticMetaObject
-	?takeInstance@HsDatabase@@SAPAV1@XZ @ 554 NONAME ; class HsDatabase * HsDatabase::takeInstance(void)
-	?tr@HsWallpaper@@SA?AVQString@@PBD0@Z @ 555 NONAME ; class QString HsWallpaper::tr(char const *, char const *)
-	?deleteWidgets@HsDatabase@@QAE_NABVQString@@@Z @ 556 NONAME ; bool HsDatabase::deleteWidgets(class QString const &)
-	??0HsPageData@@QAE@XZ @ 557 NONAME ; HsPageData::HsPageData(void)
-	?tr@HsSceneWallpaper@@SA?AVQString@@PBD0H@Z @ 558 NONAME ; class QString HsSceneWallpaper::tr(char const *, char const *, int)
-	?pageIndicatorSpacing@HsConfiguration@@QBEMXZ @ 559 NONAME ; float HsConfiguration::pageIndicatorSpacing(void) const
-	?getStaticMetaObject@HsShortcutService@@SAABUQMetaObject@@XZ @ 560 NONAME ; struct QMetaObject const & HsShortcutService::getStaticMetaObject(void)
-	?isRemovable@HsPage@@QBE_NXZ @ 561 NONAME ; bool HsPage::isRemovable(void) const
-	?setDatabaseId@HsPage@@QAEXH@Z @ 562 NONAME ; void HsPage::setDatabaseId(int)
-	?trUtf8@HsIdleWidget@@SA?AVQString@@PBD0@Z @ 563 NONAME ; class QString HsIdleWidget::trUtf8(char const *, char const *)
-	?pageChangeAnimationDuration@HsConfiguration@@QBEHXZ @ 564 NONAME ; int HsConfiguration::pageChangeAnimationDuration(void) const
-	?staticMetaObject@HsBackupRestoreObserver@@2UQMetaObject@@B @ 565 NONAME ; struct QMetaObject const HsBackupRestoreObserver::staticMetaObject
-	?widgetTapAndHoldFinished@HsScene@@IAEXPAVQGestureEvent@@PAVHsWidgetHost@@@Z @ 566 NONAME ; void HsScene::widgetTapAndHoldFinished(class QGestureEvent *, class HsWidgetHost *)
-	?metaObject@HsPageWallpaper@@UBEPBUQMetaObject@@XZ @ 567 NONAME ; struct QMetaObject const * HsPageWallpaper::metaObject(void) const
-	?tr@HsGui@@SA?AVQString@@PBD0H@Z @ 568 NONAME ; class QString HsGui::tr(char const *, char const *, int)
-	?updatePage@HsDatabase@@QAE_NABVHsPageData@@@Z @ 569 NONAME ; bool HsDatabase::updatePage(class HsPageData const &)
-	?action_uninitialize@HsWidgetHost@@AAEXXZ @ 570 NONAME ; void HsWidgetHost::action_uninitialize(void)
-	??_EHsWallpaperLoader@@UAE@I@Z @ 571 NONAME ; HsWallpaperLoader::~HsWallpaperLoader(unsigned int)
-	??_EHsWallpaper@@UAE@I@Z @ 572 NONAME ; HsWallpaper::~HsWallpaper(unsigned int)
-	?action_connectComponent@HsWidgetHost@@AAEXXZ @ 573 NONAME ; void HsWidgetHost::action_connectComponent(void)
-	?setImage@HsWallpaper@@QAEXABVQString@@@Z @ 574 NONAME ; void HsWallpaper::setImage(class QString const &)
-	?setPageChangeAnimationDuration@HsConfiguration@@QAEXH@Z @ 575 NONAME ; void HsConfiguration::setPageChangeAnimationDuration(int)
-	??0HsSceneData@@QAE@XZ @ 576 NONAME ; HsSceneData::HsSceneData(void)
-	?hasSignal@HsWidgetHost@@AAE_NPBD@Z @ 577 NONAME ; bool HsWidgetHost::hasSignal(char const *)
-	?getStaticMetaObject@HsWidgetHostVisual@@SAABUQMetaObject@@XZ @ 578 NONAME ; struct QMetaObject const & HsWidgetHostVisual::getStaticMetaObject(void)
-	?getStaticMetaObject@HsWallpaper@@SAABUQMetaObject@@XZ @ 579 NONAME ; struct QMetaObject const & HsWallpaper::getStaticMetaObject(void)
-	?trUtf8@HsWallpaper@@SA?AVQString@@PBD0@Z @ 580 NONAME ; class QString HsWallpaper::trUtf8(char const *, char const *)
-	??0HsWidgetHost@@QAE@HPAVQObject@@@Z @ 581 NONAME ; HsWidgetHost::HsWidgetHost(int, class QObject *)
-	?emitWidgetRemoved@HsContentService@@QAEXABVQString@@ABV?$QHash@VQString@@VQVariant@@@@@Z @ 582 NONAME ; void HsContentService::emitWidgetRemoved(class QString const &, class QHash<class QString, class QVariant> const &)
-	?pages@HsScene@@QBE?AV?$QList@PAVHsPage@@@@XZ @ 583 NONAME ; class QList<class HsPage *> HsScene::pages(void) const
-	??1HsConfiguration@@UAE@XZ @ 584 NONAME ; HsConfiguration::~HsConfiguration(void)
-	?trashBin@HsIdleWidget@@QBEPAVHsTrashBinWidget@@XZ @ 585 NONAME ; class HsTrashBinWidget * HsIdleWidget::trashBin(void) const
-	?translationFilename@HsWidgetComponentDescriptor@@QBE?AVQString@@XZ @ 586 NONAME ; class QString HsWidgetComponentDescriptor::translationFilename(void) const
-	?trUtf8@HsConfiguration@@SA?AVQString@@PBD0@Z @ 587 NONAME ; class QString HsConfiguration::trUtf8(char const *, char const *)
-	?instance@HsScene@@SAPAV1@XZ @ 588 NONAME ; class HsScene * HsScene::instance(void)
-	?eventFilter@HsScene@@MAE_NPAVQObject@@PAVQEvent@@@Z @ 589 NONAME ; bool HsScene::eventFilter(class QObject *, class QEvent *)
-	?trUtf8@HsPage@@SA?AVQString@@PBD0H@Z @ 590 NONAME ; class QString HsPage::trUtf8(char const *, char const *, int)
-	?isDefaultPage@HsPage@@QBE_NXZ @ 591 NONAME ; bool HsPage::isDefaultPage(void) const
-	??_EHsDatabase@@UAE@I@Z @ 592 NONAME ; HsDatabase::~HsDatabase(unsigned int)
-	?event_startAndShow@HsWidgetHost@@IAEXXZ @ 593 NONAME ; void HsWidgetHost::event_startAndShow(void)
-	?layoutRect@HsGui@@QBE?AVQRectF@@XZ @ 594 NONAME ; class QRectF HsGui::layoutRect(void) const
-	?trUtf8@HsContentService@@SA?AVQString@@PBD0H@Z @ 595 NONAME ; class QString HsContentService::trUtf8(char const *, char const *, int)
-	?setMinimumWidgetHeight@HsConfiguration@@QAEXM@Z @ 596 NONAME ; void HsConfiguration::setMinimumWidgetHeight(float)
-	?pageTapFinished@HsScene@@IAEXPAVQGestureEvent@@@Z @ 597 NONAME ; void HsScene::pageTapFinished(class QGestureEvent *)
-	?unavailable@HsWidgetComponent@@IAEXXZ @ 598 NONAME ; void HsWidgetComponent::unavailable(void)
-	?isShortcutLabelVisible@HsConfiguration@@QBE_NXZ @ 599 NONAME ; bool HsConfiguration::isShortcutLabelVisible(void) const
-	?setPageChangeZoneReverseAnimationDuration@HsConfiguration@@QAEXH@Z @ 600 NONAME ; void HsConfiguration::setPageChangeZoneReverseAnimationDuration(int)
-	?getStaticMetaObject@HsIdleWidget@@SAABUQMetaObject@@XZ @ 601 NONAME ; struct QMetaObject const & HsIdleWidget::getStaticMetaObject(void)
-	?qt_metacall@HsWidgetHostVisual@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 602 NONAME ; int HsWidgetHostVisual::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?tr@HsDatabase@@SA?AVQString@@PBD0H@Z @ 603 NONAME ; class QString HsDatabase::tr(char const *, char const *, int)
-	?instance@HsWidgetComponentRegistry@@SAPAV1@XZ @ 604 NONAME ; class HsWidgetComponentRegistry * HsWidgetComponentRegistry::instance(void)
-	?serviceXml@HsWidgetComponentDescriptor@@QBE?AVQString@@XZ @ 605 NONAME ; class QString HsWidgetComponentDescriptor::serviceXml(void) const
-	?qt_metacall@HsWallpaperLoader@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 606 NONAME ; int HsWallpaperLoader::qt_metacall(enum QMetaObject::Call, int, void * *)
-	??_EHsSceneWallpaper@@UAE@I@Z @ 607 NONAME ; HsSceneWallpaper::~HsSceneWallpaper(unsigned int)
-	?instance@HsDatabase@@SAPAV1@XZ @ 608 NONAME ; class HsDatabase * HsDatabase::instance(void)
-	?setTranslationFilename@HsWidgetComponentDescriptor@@QAEXABVQString@@@Z @ 609 NONAME ; void HsWidgetComponentDescriptor::setTranslationFilename(class QString const &)
-	?onLoaderFinished@HsWallpaper@@AAEXXZ @ 610 NONAME ; void HsWallpaper::onLoaderFinished(void)
-	?qt_metacall@HsIdleWidget@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 611 NONAME ; int HsIdleWidget::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?addWidget@HsContentService@@QAE_NABVQString@@ABV?$QHash@VQString@@VQVariant@@@@ABVQVariant@@@Z @ 612 NONAME ; bool HsContentService::addWidget(class QString const &, class QHash<class QString, class QVariant> const &, class QVariant const &)
-	?shortcutWidgetTapFeedbackEffect@HsConfiguration@@QBE?AW4InstantEffect@HbFeedback@@XZ @ 613 NONAME ; enum HbFeedback::InstantEffect HsConfiguration::shortcutWidgetTapFeedbackEffect(void) const
-	?widgetMoveFinished@HsScene@@IAEXABVQPointF@@PAVHsWidgetHost@@@Z @ 614 NONAME ; void HsScene::widgetMoveFinished(class QPointF const &, class HsWidgetHost *)
-	?setInstance@HsScene@@SAXPAV1@@Z @ 615 NONAME ; void HsScene::setInstance(class HsScene *)
-	?tr@HsPageVisual@@SA?AVQString@@PBD0H@Z @ 616 NONAME ; class QString HsPageVisual::tr(char const *, char const *, int)
-	??_EHsContentService@@UAE@I@Z @ 617 NONAME ; HsContentService::~HsContentService(unsigned int)
-	?trUtf8@HsDatabase@@SA?AVQString@@PBD0H@Z @ 618 NONAME ; class QString HsDatabase::trUtf8(char const *, char const *, int)
-	?action_hide@HsWidgetHost@@AAEXXZ @ 619 NONAME ; void HsWidgetHost::action_hide(void)
-	?addNewWidget@HsPage@@QAE_NPAVHsWidgetHost@@ABVQPointF@@@Z @ 620 NONAME ; bool HsPage::addNewWidget(class HsWidgetHost *, class QPointF const &)
-	?removePresentation@HsWidgetHost@@QAE_NW4Orientation@Qt@@@Z @ 621 NONAME ; bool HsWidgetHost::removePresentation(enum Qt::Orientation)
-	?staticMetaObject@HsContentService@@2UQMetaObject@@B @ 622 NONAME ; struct QMetaObject const HsContentService::staticMetaObject
-	?tr@HsWidgetHost@@SA?AVQString@@PBD0H@Z @ 623 NONAME ; class QString HsWidgetHost::tr(char const *, char const *, int)
-	?setWidgetRepositionFeedbackEffect@HsConfiguration@@QAEXW4InstantEffect@HbFeedback@@@Z @ 624 NONAME ; void HsConfiguration::setWidgetRepositionFeedbackEffect(enum HbFeedback::InstantEffect)
-	?gestureEvent@HsWidgetHostVisual@@MAEXPAVQGestureEvent@@@Z @ 625 NONAME ; void HsWidgetHostVisual::gestureEvent(class QGestureEvent *)
-	?metaObject@HsBackupRestoreObserver@@UBEPBUQMetaObject@@XZ @ 626 NONAME ; struct QMetaObject const * HsBackupRestoreObserver::metaObject(void) const
-	?instance@HsGui@@SAPAV1@XZ @ 627 NONAME ; class HsGui * HsGui::instance(void)
-	?getStaticMetaObject@HsHostedWidgetFactory@@SAABUQMetaObject@@XZ @ 628 NONAME ; struct QMetaObject const & HsHostedWidgetFactory::getStaticMetaObject(void)
-	?pageIndex@HsPageVisual@@QBEHXZ @ 629 NONAME ; int HsPageVisual::pageIndex(void) const
-	?qt_metacall@HsScene@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 630 NONAME ; int HsScene::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?setExistingImage@HsWallpaper@@IAE_NXZ @ 631 NONAME ; bool HsWallpaper::setExistingImage(void)
-	?setPageChangeFeedbackEffect@HsConfiguration@@QAEXW4InstantEffect@HbFeedback@@@Z @ 632 NONAME ; void HsConfiguration::setPageChangeFeedbackEffect(enum HbFeedback::InstantEffect)
-	?trUtf8@HsHostedWidgetFactory@@SA?AVQString@@PBD0H@Z @ 633 NONAME ; class QString HsHostedWidgetFactory::trUtf8(char const *, char const *, int)
-	?trUtf8@HsConfiguration@@SA?AVQString@@PBD0H@Z @ 634 NONAME ; class QString HsConfiguration::trUtf8(char const *, char const *, int)
-	?minimumWidgetSizeInPixels@HsConfiguration@@QBE?AVQSizeF@@XZ @ 635 NONAME ; class QSizeF HsConfiguration::minimumWidgetSizeInPixels(void) const
-	?event_finished@HsWidgetHost@@IAEXXZ @ 636 NONAME ; void HsWidgetHost::event_finished(void)
-	?sourcePath@HsWallpaperLoaderThread@@QBE?AVQString@@XZ @ 637 NONAME ; class QString HsWallpaperLoaderThread::sourcePath(void) const
-	?widgets@HsPage@@QBE?AV?$QList@PAVHsWidgetHost@@@@XZ @ 638 NONAME ; class QList<class HsWidgetHost *> HsPage::widgets(void) const
-	?setPageMargin@HsConfiguration@@QAEXM@Z @ 639 NONAME ; void HsConfiguration::setPageMargin(float)
-	?parallaxFactor@HsIdleWidget@@QBEMXZ @ 640 NONAME ; float HsIdleWidget::parallaxFactor(void) const
-	?setOnline@HsWidgetHost@@QAEX_N@Z @ 641 NONAME ; void HsWidgetHost::setOnline(bool)
-	?setPreferencesToWidget@HsWidgetHost@@AAE_NXZ @ 642 NONAME ; bool HsWidgetHost::setPreferencesToWidget(void)
-	?setWidgetPickFeedbackEffect@HsConfiguration@@QAEXW4InstantEffect@HbFeedback@@@Z @ 643 NONAME ; void HsConfiguration::setWidgetPickFeedbackEffect(enum HbFeedback::InstantEffect)
-	?getStaticMetaObject@HsPageWallpaper@@SAABUQMetaObject@@XZ @ 644 NONAME ; struct QMetaObject const & HsPageWallpaper::getStaticMetaObject(void)
-	??0HsWidgetHostVisual@@QAE@PAVQGraphicsItem@@@Z @ 645 NONAME ; HsWidgetHostVisual::HsWidgetHostVisual(class QGraphicsItem *)
-	?trUtf8@HsIdleWidget@@SA?AVQString@@PBD0H@Z @ 646 NONAME ; class QString HsIdleWidget::trUtf8(char const *, char const *, int)
-	??0HsContentService@@QAE@PAVQObject@@@Z @ 647 NONAME ; HsContentService::HsContentService(class QObject *)
-	?trUtf8@HsWidgetComponentRegistry@@SA?AVQString@@PBD0H@Z @ 648 NONAME ; class QString HsWidgetComponentRegistry::trUtf8(char const *, char const *, int)
-	?targetPath@HsWallpaperLoaderThread@@QBE?AVQString@@XZ @ 649 NONAME ; class QString HsWallpaperLoaderThread::targetPath(void) const
-	?staticMetaObject@HsWallpaper@@2UQMetaObject@@B @ 650 NONAME ; struct QMetaObject const HsWallpaper::staticMetaObject
-	?trUtf8@HsGui@@SA?AVQString@@PBD0H@Z @ 651 NONAME ; class QString HsGui::trUtf8(char const *, char const *, int)
-	?metaObject@HsPageVisual@@UBEPBUQMetaObject@@XZ @ 652 NONAME ; struct QMetaObject const * HsPageVisual::metaObject(void) const
-	?tr@HsWidgetComponent@@SA?AVQString@@PBD0@Z @ 653 NONAME ; class QString HsWidgetComponent::tr(char const *, char const *)
-	?tr@HsHostedWidgetFactory@@SA?AVQString@@PBD0@Z @ 654 NONAME ; class QString HsHostedWidgetFactory::tr(char const *, char const *)
-	?setBounceEffect@HsConfiguration@@QAEXH@Z @ 655 NONAME ; void HsConfiguration::setBounceEffect(int)
-	??0HsPage@@QAE@PAVQObject@@@Z @ 656 NONAME ; HsPage::HsPage(class QObject *)
-	?qt_metacast@HsDatabase@@UAEPAXPBD@Z @ 657 NONAME ; void * HsDatabase::qt_metacast(char const *)
-	?registerService@HsWidgetComponentRegistry@@AAEXABVCaEntry@@ABVQString@@_N@Z @ 658 NONAME ; void HsWidgetComponentRegistry::registerService(class CaEntry const &, class QString const &, bool)
-	?trUtf8@HsBackupRestoreObserver@@SA?AVQString@@PBD0@Z @ 659 NONAME ; class QString HsBackupRestoreObserver::trUtf8(char const *, char const *)
-	?metaObject@HsWidgetHost@@UBEPBUQMetaObject@@XZ @ 660 NONAME ; struct QMetaObject const * HsWidgetHost::metaObject(void) const
-	?qt_metacast@HsConfiguration@@UAEPAXPBD@Z @ 661 NONAME ; void * HsConfiguration::qt_metacast(char const *)
+	?instance@HsWidgetPositioningOnWidgetAdd@@SAPAV1@XZ @ 3 NONAME ; class HsWidgetPositioningOnWidgetAdd * HsWidgetPositioningOnWidgetAdd::instance(void)
+	?convert@HsAnchorPointInBottomRight@@UAE?AV?$QList@VQRectF@@@@ABVQRectF@@ABV2@1ABVQPointF@@@Z @ 4 NONAME ; class QList<class QRectF> HsAnchorPointInBottomRight::convert(class QRectF const &, class QList<class QRectF> const &, class QList<class QRectF> const &, class QPointF const &)
+	?metaObject@HsConfiguration@@UBEPBUQMetaObject@@XZ @ 5 NONAME ; struct QMetaObject const * HsConfiguration::metaObject(void) const
+	?aboutToUninstall@HsWidgetComponent@@IAEXXZ @ 6 NONAME ; void HsWidgetComponent::aboutToUninstall(void)
+	??_EHsWidgetData@@QAE@I@Z @ 7 NONAME ; HsWidgetData::~HsWidgetData(unsigned int)
+	?metaObject@HsHostedWidgetFactory@@UBEPBUQMetaObject@@XZ @ 8 NONAME ; struct QMetaObject const * HsHostedWidgetFactory::metaObject(void) const
+	?pageChangeZoneAnimationDuration@HsConfiguration@@QBEHXZ @ 9 NONAME ; int HsConfiguration::pageChangeZoneAnimationDuration(void) const
+	?takeInstance@HsHostedWidgetFactory@@SAPAV1@XZ @ 10 NONAME ; class HsHostedWidgetFactory * HsHostedWidgetFactory::takeInstance(void)
+	?convertToAnchors@HsWidgetOrganizer@@AAEHH@Z @ 11 NONAME ; int HsWidgetOrganizer::convertToAnchors(int)
+	?widgetDropEffectDuration@HsConfiguration@@QBEHXZ @ 12 NONAME ; int HsConfiguration::widgetDropEffectDuration(void) const
+	?setMaximumPageCount@HsConfiguration@@QAEXH@Z @ 13 NONAME ; void HsConfiguration::setMaximumPageCount(int)
+	?qt_metacast@HsShortcutService@@UAEPAXPBD@Z @ 14 NONAME ; void * HsShortcutService::qt_metacast(char const *)
+	?propertyChanged@HsConfiguration@@IAEXABVQString@@@Z @ 15 NONAME ; void HsConfiguration::propertyChanged(class QString const &)
+	?showWidget@HsWidgetHost@@QAEXXZ @ 16 NONAME ; void HsWidgetHost::showWidget(void)
+	?setInstance@HsConfiguration@@SAXPAV1@@Z @ 17 NONAME ; void HsConfiguration::setInstance(class HsConfiguration *)
+	?isActivePage@HsPage@@QBE_NXZ @ 18 NONAME ; bool HsPage::isActivePage(void) const
+	?hidden@HsWidgetComponentDescriptor@@QBE?AVQString@@XZ @ 19 NONAME ; class QString HsWidgetComponentDescriptor::hidden(void) const
+	?cancel@HsWallpaperLoader@@QAEXXZ @ 20 NONAME ; void HsWallpaperLoader::cancel(void)
+	?metaObject@HsShortcutService@@UBEPBUQMetaObject@@XZ @ 21 NONAME ; struct QMetaObject const * HsShortcutService::metaObject(void) const
+	?instance@HsBackupRestoreObserver@@SAPAV1@XZ @ 22 NONAME ; class HsBackupRestoreObserver * HsBackupRestoreObserver::instance(void)
+	??1HsWidgetHostVisual@@UAE@XZ @ 23 NONAME ; HsWidgetHostVisual::~HsWidgetHostVisual(void)
+	?load@HsPage@@QAE_NXZ @ 24 NONAME ; bool HsPage::load(void)
+	?setSnapEnabled@HsConfiguration@@QAEX_N@Z @ 25 NONAME ; void HsConfiguration::setSnapEnabled(bool)
+	?clockWidgetTapFeedbackEffect@HsConfiguration@@QBE?AW4InstantEffect@HbFeedback@@XZ @ 26 NONAME ; enum HbFeedback::InstantEffect HsConfiguration::clockWidgetTapFeedbackEffect(void) const
+	?readyForBUR@HsBackupRestoreObserver@@QAEXXZ @ 27 NONAME ; void HsBackupRestoreObserver::readyForBUR(void)
+	?handleEntryUpdated@HsWidgetComponentRegistry@@AAEXABVCaEntry@@ABVQString@@@Z @ 28 NONAME ; void HsWidgetComponentRegistry::handleEntryUpdated(class CaEntry const &, class QString const &)
+	?instance@HsShortcutService@@SAPAV1@PAVQStateMachine@@@Z @ 29 NONAME ; class HsShortcutService * HsShortcutService::instance(class QStateMachine *)
+	?staticMetaObject@HsDatabase@@2UQMetaObject@@B @ 30 NONAME ; struct QMetaObject const HsDatabase::staticMetaObject
+	??1HsSceneWallpaper@@UAE@XZ @ 31 NONAME ; HsSceneWallpaper::~HsSceneWallpaper(void)
+	?setActivePageIndex@HsScene@@QAE_NH@Z @ 32 NONAME ; bool HsScene::setActivePageIndex(int)
+	??1HsContentService@@UAE@XZ @ 33 NONAME ; HsContentService::~HsContentService(void)
+	?widgetPreference@HsDatabase@@QAE_NHABVQString@@AAVQVariant@@@Z @ 34 NONAME ; bool HsDatabase::widgetPreference(int, class QString const &, class QVariant &)
+	?tr@HsBackupRestoreObserver@@SA?AVQString@@PBD0H@Z @ 35 NONAME ; class QString HsBackupRestoreObserver::tr(char const *, char const *, int)
+	?setOnline@HsScene@@QAEX_N@Z @ 36 NONAME ; void HsScene::setOnline(bool)
+	?updateIconItem@HsWallpaper@@AAEXW4Orientation@Qt@@@Z @ 37 NONAME ; void HsWallpaper::updateIconItem(enum Qt::Orientation)
+	?getStaticMetaObject@HsWidgetComponentRegistry@@SAABUQMetaObject@@XZ @ 38 NONAME ; struct QMetaObject const & HsWidgetComponentRegistry::getStaticMetaObject(void)
+	?trUtf8@HsPageWallpaper@@SA?AVQString@@PBD0@Z @ 39 NONAME ; class QString HsPageWallpaper::trUtf8(char const *, char const *)
+	??0HsWidgetComponentRegistry@@AAE@PAVQObject@@@Z @ 40 NONAME ; HsWidgetComponentRegistry::HsWidgetComponentRegistry(class QObject *)
+	?action_unload@HsWidgetHost@@AAEXXZ @ 41 NONAME ; void HsWidgetHost::action_unload(void)
+	?visualModel@HsWidgetHostVisual@@QBEPAVHsWidgetHost@@XZ @ 42 NONAME ; class HsWidgetHost * HsWidgetHostVisual::visualModel(void) const
+	?tr@HsBackupRestoreObserver@@SA?AVQString@@PBD0@Z @ 43 NONAME ; class QString HsBackupRestoreObserver::tr(char const *, char const *)
+	?setMinimumWidgetWidth@HsConfiguration@@QAEXM@Z @ 44 NONAME ; void HsConfiguration::setMinimumWidgetWidth(float)
+	?event_show@HsWidgetHost@@IAEXXZ @ 45 NONAME ; void HsWidgetHost::event_show(void)
+	?setBounceAnimationEasingCurve@HsConfiguration@@QAEXW4Type@QEasingCurve@@@Z @ 46 NONAME ; void HsConfiguration::setBounceAnimationEasingCurve(enum QEasingCurve::Type)
+	?wallpaperDirectory@HsSceneWallpaper@@MBE?AVQString@@XZ @ 47 NONAME ; class QString HsSceneWallpaper::wallpaperDirectory(void) const
+	?setWidgetMoveBlockedFeedbackEffect@HsConfiguration@@QAEXW4InstantEffect@HbFeedback@@@Z @ 48 NONAME ; void HsConfiguration::setWidgetMoveBlockedFeedbackEffect(enum HbFeedback::InstantEffect)
+	?imageSetFailed@HsWallpaper@@IAEXXZ @ 49 NONAME ; void HsWallpaper::imageSetFailed(void)
+	?trUtf8@HsWidgetHostVisual@@SA?AVQString@@PBD0@Z @ 50 NONAME ; class QString HsWidgetHostVisual::trUtf8(char const *, char const *)
+	?setSnapForce@HsConfiguration@@QAEXM@Z @ 51 NONAME ; void HsConfiguration::setSnapForce(float)
+	??0HsWidgetData@@QAE@XZ @ 52 NONAME ; HsWidgetData::HsWidgetData(void)
+	?event_backupRestoreCompleted@HsBackupRestoreObserver@@IAEXXZ @ 53 NONAME ; void HsBackupRestoreObserver::event_backupRestoreCompleted(void)
+	?staticMetaObject@HsWidgetHostVisual@@2UQMetaObject@@B @ 54 NONAME ; struct QMetaObject const HsWidgetHostVisual::staticMetaObject
+	?setActivePage@HsScene@@QAE_NPAVHsPage@@@Z @ 55 NONAME ; bool HsScene::setActivePage(class HsPage *)
+	?setSceneX@HsIdleWidget@@QAEXM@Z @ 56 NONAME ; void HsIdleWidget::setSceneX(float)
+	??_EHsWidgetOrganizer@@UAE@I@Z @ 57 NONAME ; HsWidgetOrganizer::~HsWidgetOrganizer(unsigned int)
+	?qt_metacast@HsContentService@@UAEPAXPBD@Z @ 58 NONAME ; void * HsContentService::qt_metacast(char const *)
+	?qt_metacall@HsContentService@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 59 NONAME ; int HsContentService::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?qt_metacall@HsSceneWallpaper@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 60 NONAME ; int HsSceneWallpaper::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?widgets@HsContentService@@QAE_NABVQString@@ABV?$QHash@VQString@@VQVariant@@@@AAH@Z @ 61 NONAME ; bool HsContentService::widgets(class QString const &, class QHash<class QString, class QVariant> const &, int &)
+	?createWidget@HsHostedWidgetFactory@@QAEPAVQObject@@ABVQString@@@Z @ 62 NONAME ; class QObject * HsHostedWidgetFactory::createWidget(class QString const &)
+	?metaObject@HsDatabase@@UBEPBUQMetaObject@@XZ @ 63 NONAME ; struct QMetaObject const * HsDatabase::metaObject(void) const
+	?contentGeometry@HsPage@@QAE?AVQRectF@@W4Orientation@Qt@@@Z @ 64 NONAME ; class QRectF HsPage::contentGeometry(enum Qt::Orientation)
+	?exportToFile@HsConfiguration@@QAE_NABVQString@@@Z @ 65 NONAME ; bool HsConfiguration::exportToFile(class QString const &)
+	?widgetStartFaulted@HsContentService@@AAEXXZ @ 66 NONAME ; void HsContentService::widgetStartFaulted(void)
+	??_EHsWidgetHostVisual@@UAE@I@Z @ 67 NONAME ; HsWidgetHostVisual::~HsWidgetHostVisual(unsigned int)
+	?setPageChangePanDistance@HsConfiguration@@QAEXM@Z @ 68 NONAME ; void HsConfiguration::setPageChangePanDistance(float)
+	?qt_metacast@HsSceneWallpaper@@UAEPAXPBD@Z @ 69 NONAME ; void * HsSceneWallpaper::qt_metacast(char const *)
+	?metaObject@HsWallpaperLoader@@UBEPBUQMetaObject@@XZ @ 70 NONAME ; struct QMetaObject const * HsWallpaperLoader::metaObject(void) const
+	?action_finished@HsWidgetHost@@AAEXXZ @ 71 NONAME ; void HsWidgetHost::action_finished(void)
+	?widget@HsWidgetHostVisual@@QAEPAVQObject@@XZ @ 72 NONAME ; class QObject * HsWidgetHostVisual::widget(void)
+	?visual@HsWidgetHost@@QBEPAVHsWidgetHostVisual@@XZ @ 73 NONAME ; class HsWidgetHostVisual * HsWidgetHost::visual(void) const
+	?pageChangeFeedbackEffect@HsConfiguration@@QBE?AW4InstantEffect@HbFeedback@@XZ @ 74 NONAME ; enum HbFeedback::InstantEffect HsConfiguration::pageChangeFeedbackEffect(void) const
+	??0HsWallpaperLoader@@QAE@PAVQObject@@@Z @ 75 NONAME ; HsWallpaperLoader::HsWallpaperLoader(class QObject *)
+	?trUtf8@HsShortcutService@@SA?AVQString@@PBD0H@Z @ 76 NONAME ; class QString HsShortcutService::trUtf8(char const *, char const *, int)
+	?maximumWidgetWidth@HsConfiguration@@QBEMXZ @ 77 NONAME ; float HsConfiguration::maximumWidgetWidth(void) const
+	?metaObject@HsContentService@@UBEPBUQMetaObject@@XZ @ 78 NONAME ; struct QMetaObject const * HsContentService::metaObject(void) const
+	?setScene@HsSceneWallpaper@@QAEXPAVHsScene@@@Z @ 79 NONAME ; void HsSceneWallpaper::setScene(class HsScene *)
+	?onPageMarginChanged@HsPage@@AAEXABVQString@@@Z @ 80 NONAME ; void HsPage::onPageMarginChanged(class QString const &)
+	?finished@HsWidgetHost@@IAEXXZ @ 81 NONAME ; void HsWidgetHost::finished(void)
+	?pagePanStarted@HsScene@@IAEXPAVQGestureEvent@@@Z @ 82 NONAME ; void HsScene::pagePanStarted(class QGestureEvent *)
+	?checkExistingRects@HsWidgetOrganizer@@AAE_NABV?$QList@VQRectF@@@@@Z @ 83 NONAME ; bool HsWidgetOrganizer::checkExistingRects(class QList<class QRectF> const &)
+	?addPage@HsScene@@QAE_NPAVHsPage@@@Z @ 84 NONAME ; bool HsScene::addPage(class HsPage *)
+	?controlLayer@HsIdleWidget@@QBEPAVHbWidget@@XZ @ 85 NONAME ; class HbWidget * HsIdleWidget::controlLayer(void) const
+	?qt_metacall@HsWidgetHost@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 86 NONAME ; int HsWidgetHost::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?configuration@HsDatabase@@QAE_NAAV?$QHash@VQString@@VQVariant@@@@@Z @ 87 NONAME ; bool HsDatabase::configuration(class QHash<class QString, class QVariant> &)
+	?tr@HsContentService@@SA?AVQString@@PBD0@Z @ 88 NONAME ; class QString HsContentService::tr(char const *, char const *)
+	?searchPositionRowByRow@HsWidgetOrganizer@@AAE?AVQPointF@@V2@HH@Z @ 89 NONAME ; class QPointF HsWidgetOrganizer::searchPositionRowByRow(class QPointF, int, int)
+	?mInstance@HsHostedWidgetFactory@@0PAV1@A @ 90 NONAME ; class HsHostedWidgetFactory * HsHostedWidgetFactory::mInstance
+	??1HsAnchorPointInCenter@@UAE@XZ @ 91 NONAME ; HsAnchorPointInCenter::~HsAnchorPointInCenter(void)
+	?setInstance@HsHostedWidgetFactory@@SAPAV1@PAV1@@Z @ 92 NONAME ; class HsHostedWidgetFactory * HsHostedWidgetFactory::setInstance(class HsHostedWidgetFactory *)
+	?staticMetaObject@HsScene@@2UQMetaObject@@B @ 93 NONAME ; struct QMetaObject const HsScene::staticMetaObject
+	?setMaximumWidgetWidth@HsConfiguration@@QAEXM@Z @ 94 NONAME ; void HsConfiguration::setMaximumWidgetWidth(float)
+	?scene@HsDatabase@@QAE_NAAVHsSceneData@@@Z @ 95 NONAME ; bool HsDatabase::scene(class HsSceneData &)
+	?resetNewWidgets@HsPage@@QAEXXZ @ 96 NONAME ; void HsPage::resetNewWidgets(void)
+	?tr@HsScene@@SA?AVQString@@PBD0@Z @ 97 NONAME ; class QString HsScene::tr(char const *, char const *)
+	?tr@HsPage@@SA?AVQString@@PBD0@Z @ 98 NONAME ; class QString HsPage::tr(char const *, char const *)
+	?emitAvailable@HsWidgetComponent@@AAEXXZ @ 99 NONAME ; void HsWidgetComponent::emitAvailable(void)
+	?getStaticMetaObject@HsDatabase@@SAABUQMetaObject@@XZ @ 100 NONAME ; struct QMetaObject const & HsDatabase::getStaticMetaObject(void)
+	?contentRect@HsPage@@QAE?AVQRectF@@XZ @ 101 NONAME ; class QRectF HsPage::contentRect(void)
+	?tr@HsPageVisual@@SA?AVQString@@PBD0@Z @ 102 NONAME ; class QString HsPageVisual::tr(char const *, char const *)
+	?setIconUri@HsWidgetComponentDescriptor@@QAEXABVQString@@@Z @ 103 NONAME ; void HsWidgetComponentDescriptor::setIconUri(class QString const &)
+	?orientationChanged@HsGui@@IAEXW4Orientation@Qt@@@Z @ 104 NONAME ; void HsGui::orientationChanged(enum Qt::Orientation)
+	?widgetAdded@HsContentService@@IAEXABVQString@@ABV?$QHash@VQString@@VQVariant@@@@@Z @ 105 NONAME ; void HsContentService::widgetAdded(class QString const &, class QHash<class QString, class QVariant> const &)
+	?staticMetaObject@HsWallpaperLoaderThread@@2UQMetaObject@@B @ 106 NONAME ; struct QMetaObject const HsWallpaperLoaderThread::staticMetaObject
+	?databaseName@HsDatabase@@QBE?AVQString@@XZ @ 107 NONAME ; class QString HsDatabase::databaseName(void) const
+	?setPageChangeAnimationEasingCurve@HsConfiguration@@QAEXW4Type@QEasingCurve@@@Z @ 108 NONAME ; void HsConfiguration::setPageChangeAnimationEasingCurve(enum QEasingCurve::Type)
+	?setPageChangeZoneAnimationDuration@HsConfiguration@@QAEXH@Z @ 109 NONAME ; void HsConfiguration::setPageChangeZoneAnimationDuration(int)
+	?qt_metacast@HsIdleWidget@@UAEPAXPBD@Z @ 110 NONAME ; void * HsIdleWidget::qt_metacast(char const *)
+	?executeCollectionAction@HsShortcutService@@QAEXHABVQString@@@Z @ 111 NONAME ; void HsShortcutService::executeCollectionAction(int, class QString const &)
+	?widgets@HsDatabase@@QAE_NABVQString@@ABV?$QHash@VQString@@VQVariant@@@@AAH@Z @ 112 NONAME ; bool HsDatabase::widgets(class QString const &, class QHash<class QString, class QVariant> const &, int &)
+	?qt_metacast@HsWallpaperLoaderThread@@UAEPAXPBD@Z @ 113 NONAME ; void * HsWallpaperLoaderThread::qt_metacast(char const *)
+	?pageCrawlingAnimation@HsGui@@QAEPAVHsPropertyAnimationWrapper@@XZ @ 114 NONAME ; class HsPropertyAnimationWrapper * HsGui::pageCrawlingAnimation(void)
+	?setSceneType@HsConfiguration@@QAEXW4SceneType@1@@Z @ 115 NONAME ; void HsConfiguration::setSceneType(enum HsConfiguration::SceneType)
+	?layoutNewWidgets@HsPage@@QAEXXZ @ 116 NONAME ; void HsPage::layoutNewWidgets(void)
+	?matchWidgetPreferences@HsDatabase@@AAE_NABV?$QHash@VQString@@VQVariant@@@@ABV?$QMultiMap@VQString@@V1@@@@Z @ 117 NONAME ; bool HsDatabase::matchWidgetPreferences(class QHash<class QString, class QVariant> const &, class QMultiMap<class QString, class QString> const &)
+	?tr@HsWidgetHostVisual@@SA?AVQString@@PBD0@Z @ 118 NONAME ; class QString HsWidgetHostVisual::tr(char const *, char const *)
+	?targetSize@HsWallpaperLoaderThread@@QBE?AVQSize@@XZ @ 119 NONAME ; class QSize HsWallpaperLoaderThread::targetSize(void) const
+	?trUtf8@HsWallpaperLoader@@SA?AVQString@@PBD0H@Z @ 120 NONAME ; class QString HsWallpaperLoader::trUtf8(char const *, char const *, int)
+	?event_remove@HsWidgetHost@@IAEXXZ @ 121 NONAME ; void HsWidgetHost::event_remove(void)
+	?startDropEffect@HsWidgetHost@@QAEXXZ @ 122 NONAME ; void HsWidgetHost::startDropEffect(void)
+	?trUtf8@HsWidgetComponentRegistry@@SA?AVQString@@PBD0@Z @ 123 NONAME ; class QString HsWidgetComponentRegistry::trUtf8(char const *, char const *)
+	?event_close@HsWidgetHost@@IAEXXZ @ 124 NONAME ; void HsWidgetHost::event_close(void)
+	??1HsWallpaperLoader@@UAE@XZ @ 125 NONAME ; HsWallpaperLoader::~HsWallpaperLoader(void)
+	?mInstance@HsBackupRestoreObserver@@0PAV1@A @ 126 NONAME ; class HsBackupRestoreObserver * HsBackupRestoreObserver::mInstance
+	?connectWidget@HsPage@@AAEXPAVHsWidgetHost@@@Z @ 127 NONAME ; void HsPage::connectWidget(class HsWidgetHost *)
+	?setShortcutLabelVisible@HsConfiguration@@QAEX_N@Z @ 128 NONAME ; void HsConfiguration::setShortcutLabelVisible(bool)
+	?sceneLayer@HsIdleWidget@@QBEPAVHbWidget@@XZ @ 129 NONAME ; class HbWidget * HsIdleWidget::sceneLayer(void) const
+	?trUtf8@HsWallpaperLoaderThread@@SA?AVQString@@PBD0@Z @ 130 NONAME ; class QString HsWallpaperLoaderThread::trUtf8(char const *, char const *)
+	?qt_metacast@HsScene@@UAEPAXPBD@Z @ 131 NONAME ; void * HsScene::qt_metacast(char const *)
+	??1HsWidgetHost@@UAE@XZ @ 132 NONAME ; HsWidgetHost::~HsWidgetHost(void)
+	?uninstallComponent@HsWidgetComponentRegistry@@QAEXABVHsWidgetComponentDescriptor@@@Z @ 133 NONAME ; void HsWidgetComponentRegistry::uninstallComponent(class HsWidgetComponentDescriptor const &)
+	?action_notifyRemove@HsWidgetHost@@AAEXXZ @ 134 NONAME ; void HsWidgetHost::action_notifyRemove(void)
+	?open@HsDatabase@@QAE_NXZ @ 135 NONAME ; bool HsDatabase::open(void)
+	?idleWidget@HsGui@@QBEPAVHsIdleWidget@@XZ @ 136 NONAME ; class HsIdleWidget * HsGui::idleWidget(void) const
+	?pageMargin@HsConfiguration@@QBEMXZ @ 137 NONAME ; float HsConfiguration::pageMargin(void) const
+	?setWidgetOrganizerSearchSequence@HsConfiguration@@QAEXW4WidgetOrganizerSearchSequence@1@@Z @ 138 NONAME ; void HsConfiguration::setWidgetOrganizerSearchSequence(enum HsConfiguration::WidgetOrganizerSearchSequence)
+	?failed@HsWallpaperLoader@@IAEXXZ @ 139 NONAME ; void HsWallpaperLoader::failed(void)
+	?setPos@HsWidgetPresentationData@@QAEXABVQPointF@@@Z @ 140 NONAME ; void HsWidgetPresentationData::setPos(class QPointF const &)
+	?isSnapEffectsEnabled@HsConfiguration@@QBE_NXZ @ 141 NONAME ; bool HsConfiguration::isSnapEffectsEnabled(void) const
+	?trUtf8@HsWallpaperLoaderThread@@SA?AVQString@@PBD0H@Z @ 142 NONAME ; class QString HsWallpaperLoaderThread::trUtf8(char const *, char const *, int)
+	?setSourcePath@HsWallpaperLoaderThread@@QAEXABVQString@@@Z @ 143 NONAME ; void HsWallpaperLoaderThread::setSourcePath(class QString const &)
+	?tr@HsGui@@SA?AVQString@@PBD0@Z @ 144 NONAME ; class QString HsGui::tr(char const *, char const *)
+	?disconnectWidget@HsPage@@AAEXPAVHsWidgetHost@@@Z @ 145 NONAME ; void HsPage::disconnectWidget(class HsWidgetHost *)
+	?setOnline@HsPage@@QAEX_N@Z @ 146 NONAME ; void HsPage::setOnline(bool)
+	?tr@HsDatabase@@SA?AVQString@@PBD0@Z @ 147 NONAME ; class QString HsDatabase::tr(char const *, char const *)
+	?onLoaderFailed@HsWallpaper@@AAEXXZ @ 148 NONAME ; void HsWallpaper::onLoaderFailed(void)
+	?trUtf8@HsScene@@SA?AVQString@@PBD0@Z @ 149 NONAME ; class QString HsScene::trUtf8(char const *, char const *)
+	?uninstallTranslator@HsWidgetComponent@@AAEXXZ @ 150 NONAME ; void HsWidgetComponent::uninstallTranslator(void)
+	?setGeometry@HsIdleWidget@@UAEXABVQRectF@@@Z @ 151 NONAME ; void HsIdleWidget::setGeometry(class QRectF const &)
+	?updateZValues@HsPage@@QAEXXZ @ 152 NONAME ; void HsPage::updateZValues(void)
+	?tr@HsShortcutService@@SA?AVQString@@PBD0H@Z @ 153 NONAME ; class QString HsShortcutService::tr(char const *, char const *, int)
+	?pos@HsWidgetPresentationData@@QBE?AVQPointF@@XZ @ 154 NONAME ; class QPointF HsWidgetPresentationData::pos(void) const
+	?getStaticMetaObject@HsBackupRestoreObserver@@SAABUQMetaObject@@XZ @ 155 NONAME ; struct QMetaObject const & HsBackupRestoreObserver::getStaticMetaObject(void)
+	?trUtf8@HsPageVisual@@SA?AVQString@@PBD0@Z @ 156 NONAME ; class QString HsPageVisual::trUtf8(char const *, char const *)
+	?action_show@HsWidgetHost@@AAEXXZ @ 157 NONAME ; void HsWidgetHost::action_show(void)
+	?pageLayer@HsIdleWidget@@QBEPAVHbWidget@@XZ @ 158 NONAME ; class HbWidget * HsIdleWidget::pageLayer(void) const
+	?setSnapGap@HsConfiguration@@QAEXM@Z @ 159 NONAME ; void HsConfiguration::setSnapGap(float)
+	?trUtf8@HsHostedWidgetFactory@@SA?AVQString@@PBD0@Z @ 160 NONAME ; class QString HsHostedWidgetFactory::trUtf8(char const *, char const *)
+	?setActiveWidget@HsScene@@QAEXPAVHsWidgetHost@@@Z @ 161 NONAME ; void HsScene::setActiveWidget(class HsWidgetHost *)
+	?transaction@HsDatabase@@QAE_NXZ @ 162 NONAME ; bool HsDatabase::transaction(void)
+	?snapForce@HsConfiguration@@QBEMXZ @ 163 NONAME ; float HsConfiguration::snapForce(void) const
+	?isOnline@HsScene@@QBE_NXZ @ 164 NONAME ; bool HsScene::isOnline(void) const
+	??0HsWidgetPresentationData@@QAE@XZ @ 165 NONAME ; HsWidgetPresentationData::HsWidgetPresentationData(void)
+	?tr@HsShortcutService@@SA?AVQString@@PBD0@Z @ 166 NONAME ; class QString HsShortcutService::tr(char const *, char const *)
+	?metaObject@HsWidgetComponent@@UBEPBUQMetaObject@@XZ @ 167 NONAME ; struct QMetaObject const * HsWidgetComponent::metaObject(void) const
+	?setConnectionName@HsDatabase@@QAEXABVQString@@@Z @ 168 NONAME ; void HsDatabase::setConnectionName(class QString const &)
+	?qt_metacall@HsGui@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 169 NONAME ; int HsGui::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?metaObject@HsWallpaper@@UBEPBUQMetaObject@@XZ @ 170 NONAME ; struct QMetaObject const * HsWallpaper::metaObject(void) const
+	?removeWidget@HsPage@@QAE_NPAVHsWidgetHost@@@Z @ 171 NONAME ; bool HsPage::removeWidget(class HsWidgetHost *)
+	?trUtf8@HsPageVisual@@SA?AVQString@@PBD0H@Z @ 172 NONAME ; class QString HsPageVisual::trUtf8(char const *, char const *, int)
+	?tr@HsWallpaperLoaderThread@@SA?AVQString@@PBD0@Z @ 173 NONAME ; class QString HsWallpaperLoaderThread::tr(char const *, char const *)
+	?qt_metacall@HsWallpaper@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 174 NONAME ; int HsWallpaper::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?onWidgetUnavailable@HsPage@@AAEXXZ @ 175 NONAME ; void HsPage::onWidgetUnavailable(void)
+	?mInstance@HsDatabase@@0PAV1@A @ 176 NONAME ; class HsDatabase * HsDatabase::mInstance
+	?available@HsWidgetComponent@@IAEXXZ @ 177 NONAME ; void HsWidgetComponent::available(void)
+	?tr@HsSceneWallpaper@@SA?AVQString@@PBD0@Z @ 178 NONAME ; class QString HsSceneWallpaper::tr(char const *, char const *)
+	?trUtf8@HsPage@@SA?AVQString@@PBD0@Z @ 179 NONAME ; class QString HsPage::trUtf8(char const *, char const *)
+	?trUtf8@HsWidgetHostVisual@@SA?AVQString@@PBD0H@Z @ 180 NONAME ; class QString HsWidgetHostVisual::trUtf8(char const *, char const *, int)
+	?hideWidgets@HsPage@@QAEXXZ @ 181 NONAME ; void HsPage::hideWidgets(void)
+	?trUtf8@HsWidgetHost@@SA?AVQString@@PBD0H@Z @ 182 NONAME ; class QString HsWidgetHost::trUtf8(char const *, char const *, int)
+	?qt_metacall@HsHostedWidgetFactory@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 183 NONAME ; int HsHostedWidgetFactory::qt_metacall(enum QMetaObject::Call, int, void * *)
+	??0HsScene@@QAE@PAVQObject@@@Z @ 184 NONAME ; HsScene::HsScene(class QObject *)
+	?getStaticMetaObject@HsPageVisual@@SAABUQMetaObject@@XZ @ 185 NONAME ; struct QMetaObject const & HsPageVisual::getStaticMetaObject(void)
+	?pagePanUpdated@HsScene@@IAEXPAVQGestureEvent@@@Z @ 186 NONAME ; void HsScene::pagePanUpdated(class QGestureEvent *)
+	?showTrashBin@HsIdleWidget@@QAEXXZ @ 187 NONAME ; void HsIdleWidget::showTrashBin(void)
+	?qt_metacast@HsWidgetHost@@UAEPAXPBD@Z @ 188 NONAME ; void * HsWidgetHost::qt_metacast(char const *)
+	?trUtf8@HsWallpaperLoader@@SA?AVQString@@PBD0@Z @ 189 NONAME ; class QString HsWallpaperLoader::trUtf8(char const *, char const *)
+	?qt_metacall@HsWidgetComponentRegistry@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 190 NONAME ; int HsWidgetComponentRegistry::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?setMaximumWidgetHeight@HsConfiguration@@QAEXM@Z @ 191 NONAME ; void HsConfiguration::setMaximumWidgetHeight(float)
+	?qt_metacall@HsPageVisual@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 192 NONAME ; int HsPageVisual::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?instance@HsConfiguration@@SAPAV1@XZ @ 193 NONAME ; class HsConfiguration * HsConfiguration::instance(void)
+	?tr@HsWallpaperLoader@@SA?AVQString@@PBD0H@Z @ 194 NONAME ; class QString HsWallpaperLoader::tr(char const *, char const *, int)
+	??_EHsConfiguration@@UAE@I@Z @ 195 NONAME ; HsConfiguration::~HsConfiguration(unsigned int)
+	?metaObject@HsPage@@UBEPBUQMetaObject@@XZ @ 196 NONAME ; struct QMetaObject const * HsPage::metaObject(void) const
+	??_EHsWidgetPositioningOnWidgetAdd@@UAE@I@Z @ 197 NONAME ; HsWidgetPositioningOnWidgetAdd::~HsWidgetPositioningOnWidgetAdd(unsigned int)
+	?activePageIndex@HsScene@@QBEHXZ @ 198 NONAME ; int HsScene::activePageIndex(void) const
+	?widgetOrganizerSearchSequence@HsConfiguration@@QBE?AW4WidgetOrganizerSearchSequence@1@XZ @ 199 NONAME ; enum HsConfiguration::WidgetOrganizerSearchSequence HsConfiguration::widgetOrganizerSearchSequence(void) const
+	?qt_metacast@HsWidgetHostVisual@@UAEPAXPBD@Z @ 200 NONAME ; void * HsWidgetHostVisual::qt_metacast(char const *)
+	?hideHorizontalSnapLine@HsIdleWidget@@QAEXXZ @ 201 NONAME ; void HsIdleWidget::hideHorizontalSnapLine(void)
+	?minimumWidgetWidth@HsConfiguration@@QBEMXZ @ 202 NONAME ; float HsConfiguration::minimumWidgetWidth(void) const
+	?setWidgetPreferences@HsDatabase@@QAE_NHABV?$QHash@VQString@@VQVariant@@@@@Z @ 203 NONAME ; bool HsDatabase::setWidgetPreferences(int, class QHash<class QString, class QVariant> const &)
+	?orientation@HsGui@@QAE?AW4Orientation@Qt@@XZ @ 204 NONAME ; enum Qt::Orientation HsGui::orientation(void)
+	?deleteWidget@HsDatabase@@QAE_NH@Z @ 205 NONAME ; bool HsDatabase::deleteWidget(int)
+	?widgetOverTrashbinFeedbackEffect@HsConfiguration@@QBE?AW4InstantEffect@HbFeedback@@XZ @ 206 NONAME ; enum HbFeedback::InstantEffect HsConfiguration::widgetOverTrashbinFeedbackEffect(void) const
+	?deleteFromDatabase@HsPage@@QAE_NXZ @ 207 NONAME ; bool HsPage::deleteFromDatabase(void)
+	?setWidgetPresentation@HsDatabase@@QAE_NABVHsWidgetPresentationData@@@Z @ 208 NONAME ; bool HsDatabase::setWidgetPresentation(class HsWidgetPresentationData const &)
+	?takeInstance@HsGui@@SAPAV1@XZ @ 209 NONAME ; class HsGui * HsGui::takeInstance(void)
+	??0HsConfiguration@@QAE@PAVQObject@@@Z @ 210 NONAME ; HsConfiguration::HsConfiguration(class QObject *)
+	?setDefaultImage@HsWallpaper@@QAEXXZ @ 211 NONAME ; void HsWallpaper::setDefaultImage(void)
+	?setupTouchArea@HsPageVisual@@AAEXXZ @ 212 NONAME ; void HsPageVisual::setupTouchArea(void)
+	?trUtf8@HsWidgetComponent@@SA?AVQString@@PBD0H@Z @ 213 NONAME ; class QString HsWidgetComponent::trUtf8(char const *, char const *, int)
+	?setWidget@HsWidgetHostVisual@@QAEXPAVQObject@@@Z @ 214 NONAME ; void HsWidgetHostVisual::setWidget(class QObject *)
+	?importFromFile@HsConfiguration@@QAE_NABVQString@@@Z @ 215 NONAME ; bool HsConfiguration::importFromFile(class QString const &)
+	?page@HsDatabase@@QAE_NAAVHsPageData@@@Z @ 216 NONAME ; bool HsDatabase::page(class HsPageData &)
+	??_EHsPage@@UAE@I@Z @ 217 NONAME ; HsPage::~HsPage(unsigned int)
+	?instance@HsHostedWidgetFactory@@SAPAV1@XZ @ 218 NONAME ; class HsHostedWidgetFactory * HsHostedWidgetFactory::instance(void)
+	?staticMetaObject@HsPage@@2UQMetaObject@@B @ 219 NONAME ; struct QMetaObject const HsPage::staticMetaObject
+	?widgetDropFeedbackEffect@HsConfiguration@@QBE?AW4InstantEffect@HbFeedback@@XZ @ 220 NONAME ; enum HbFeedback::InstantEffect HsConfiguration::widgetDropFeedbackEffect(void) const
+	?pageChangeZoneReverseAnimationDuration@HsConfiguration@@QBEHXZ @ 221 NONAME ; int HsConfiguration::pageChangeZoneReverseAnimationDuration(void) const
+	?createWidget@HsContentService@@QAE_NABV?$QHash@VQString@@VQVariant@@@@@Z @ 222 NONAME ; bool HsContentService::createWidget(class QHash<class QString, class QVariant> const &)
+	?setVersion@HsWidgetComponentDescriptor@@QAEXABVQString@@@Z @ 223 NONAME ; void HsWidgetComponentDescriptor::setVersion(class QString const &)
+	?getStaticMetaObject@HsWallpaperLoader@@SAABUQMetaObject@@XZ @ 224 NONAME ; struct QMetaObject const & HsWallpaperLoader::getStaticMetaObject(void)
+	?mInstance@HsWidgetComponentRegistry@@0PAV1@A @ 225 NONAME ; class HsWidgetComponentRegistry * HsWidgetComponentRegistry::mInstance
+	?staticMetaObject@HsWidgetHost@@2UQMetaObject@@B @ 226 NONAME ; struct QMetaObject const HsWidgetHost::staticMetaObject
+	?qt_metacast@HsPageVisual@@UAEPAXPBD@Z @ 227 NONAME ; void * HsPageVisual::qt_metacast(char const *)
+	?qt_metacall@HsShortcutService@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 228 NONAME ; int HsShortcutService::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?setImages@HsWallpaper@@QAEXABVQString@@0@Z @ 229 NONAME ; void HsWallpaper::setImages(class QString const &, class QString const &)
+	??1HsPageWallpaper@@UAE@XZ @ 230 NONAME ; HsPageWallpaper::~HsPageWallpaper(void)
+	?startDropEffect@HsWidgetHostVisual@@QAEXXZ @ 231 NONAME ; void HsWidgetHostVisual::startDropEffect(void)
+	?activeWidget@HsScene@@QBEPAVHsWidgetHost@@XZ @ 232 NONAME ; class HsWidgetHost * HsScene::activeWidget(void) const
+	?widgets@HsDatabase@@QAE_NABVQString@@AAV?$QList@VHsWidgetData@@@@@Z @ 233 NONAME ; bool HsDatabase::widgets(class QString const &, class QList<class HsWidgetData> &)
+	?rootDirectory@HsWallpaper@@IBE?AVQString@@XZ @ 234 NONAME ; class QString HsWallpaper::rootDirectory(void) const
+	?markAnchors@HsWidgetOrganizer@@AAE_NABVQRectF@@@Z @ 235 NONAME ; bool HsWidgetOrganizer::markAnchors(class QRectF const &)
+	?tr@HsContentService@@SA?AVQString@@PBD0H@Z @ 236 NONAME ; class QString HsContentService::tr(char const *, char const *, int)
+	??0HsDatabase@@QAE@PAVQObject@@@Z @ 237 NONAME ; HsDatabase::HsDatabase(class QObject *)
+	?eventFilter@HsWidgetHostVisual@@MAE_NPAVQObject@@PAVQEvent@@@Z @ 238 NONAME ; bool HsWidgetHostVisual::eventFilter(class QObject *, class QEvent *)
+	?tr@HsWidgetHost@@SA?AVQString@@PBD0@Z @ 239 NONAME ; class QString HsWidgetHost::tr(char const *, char const *)
+	?remove@HsWallpaper@@QAEXXZ @ 240 NONAME ; void HsWallpaper::remove(void)
+	?idleView@HsGui@@QBEPAVHbView@@XZ @ 241 NONAME ; class HbView * HsGui::idleView(void) const
+	??1HsPageVisual@@UAE@XZ @ 242 NONAME ; HsPageVisual::~HsPageVisual(void)
+	?initAnchors@HsWidgetOrganizer@@AAEXXZ @ 243 NONAME ; void HsWidgetOrganizer::initAnchors(void)
+	?widgetMoveBlockedFeedbackEffect@HsConfiguration@@QBE?AW4InstantEffect@HbFeedback@@XZ @ 244 NONAME ; enum HbFeedback::InstantEffect HsConfiguration::widgetMoveBlockedFeedbackEffect(void) const
+	?widgetPickFeedbackEffect@HsConfiguration@@QBE?AW4InstantEffect@HbFeedback@@XZ @ 245 NONAME ; enum HbFeedback::InstantEffect HsConfiguration::widgetPickFeedbackEffect(void) const
+	?widgetSnappingFeedbackEffect@HsConfiguration@@QBE?AW4InstantEffect@HbFeedback@@XZ @ 246 NONAME ; enum HbFeedback::InstantEffect HsConfiguration::widgetSnappingFeedbackEffect(void) const
+	?load@HsScene@@QAE_NXZ @ 247 NONAME ; bool HsScene::load(void)
+	?trUtf8@HsSceneWallpaper@@SA?AVQString@@PBD0H@Z @ 248 NONAME ; class QString HsSceneWallpaper::trUtf8(char const *, char const *, int)
+	?tr@HsConfiguration@@SA?AVQString@@PBD0@Z @ 249 NONAME ; class QString HsConfiguration::tr(char const *, char const *)
+	?widgetRepositionFeedbackEffect@HsConfiguration@@QBE?AW4InstantEffect@HbFeedback@@XZ @ 250 NONAME ; enum HbFeedback::InstantEffect HsConfiguration::widgetRepositionFeedbackEffect(void) const
+	?onError@HsWidgetHost@@AAEXXZ @ 251 NONAME ; void HsWidgetHost::onError(void)
+	?cleanup@HsWallpaperLoader@@AAEXXZ @ 252 NONAME ; void HsWallpaperLoader::cleanup(void)
+	?targets@HsWallpaperLoader@@QBE?AV?$QHash@VQString@@VQVariant@@@@XZ @ 253 NONAME ; class QHash<class QString, class QVariant> HsWallpaperLoader::targets(void) const
+	??0HsShortcutService@@AAE@PAVQStateMachine@@PAVQObject@@@Z @ 254 NONAME ; HsShortcutService::HsShortcutService(class QStateMachine *, class QObject *)
+	?hideVerticalSnapLine@HsIdleWidget@@QAEXXZ @ 255 NONAME ; void HsIdleWidget::hideVerticalSnapLine(void)
+	?setActivePage@HsIdleWidget@@QAEXH@Z @ 256 NONAME ; void HsIdleWidget::setActivePage(int)
+	?setSnapLineFadeOutDuration@HsConfiguration@@QAEXH@Z @ 257 NONAME ; void HsConfiguration::setSnapLineFadeOutDuration(int)
+	?polishEvent@HsIdleWidget@@MAEXXZ @ 258 NONAME ; void HsIdleWidget::polishEvent(void)
+	?tr@HsPageWallpaper@@SA?AVQString@@PBD0H@Z @ 259 NONAME ; class QString HsPageWallpaper::tr(char const *, char const *, int)
+	?widgetDropToTrashbinFeedbackEffect@HsConfiguration@@QBE?AW4InstantEffect@HbFeedback@@XZ @ 260 NONAME ; enum HbFeedback::InstantEffect HsConfiguration::widgetDropToTrashbinFeedbackEffect(void) const
+	?staticMetaObject@HsPageWallpaper@@2UQMetaObject@@B @ 261 NONAME ; struct QMetaObject const HsPageWallpaper::staticMetaObject
+	?onWidgetFinished@HsPage@@AAEXXZ @ 262 NONAME ; void HsPage::onWidgetFinished(void)
+	?onThreadFinished@HsWallpaperLoader@@AAEXXZ @ 263 NONAME ; void HsWallpaperLoader::onThreadFinished(void)
+	?tr@HsWidgetComponentRegistry@@SA?AVQString@@PBD0H@Z @ 264 NONAME ; class QString HsWidgetComponentRegistry::tr(char const *, char const *, int)
+	?loadControlLayer@HsIdleWidget@@AAEXXZ @ 265 NONAME ; void HsIdleWidget::loadControlLayer(void)
+	?action_initialize@HsWidgetHost@@AAEXXZ @ 266 NONAME ; void HsWidgetHost::action_initialize(void)
+	?sceneX@HsIdleWidget@@QBEMXZ @ 267 NONAME ; float HsIdleWidget::sceneX(void) const
+	?action_load@HsWidgetHost@@AAEXXZ @ 268 NONAME ; void HsWidgetHost::action_load(void)
+	?connectionName@HsDatabase@@QBE?AVQString@@XZ @ 269 NONAME ; class QString HsDatabase::connectionName(void) const
+	?snapLineFadeInDuration@HsConfiguration@@QBEHXZ @ 270 NONAME ; int HsConfiguration::snapLineFadeInDuration(void) const
+	?setMethod@HsWidgetHost@@AAE_NPBDAAVQMetaMethod@@@Z @ 271 NONAME ; bool HsWidgetHost::setMethod(char const *, class QMetaMethod &)
+	?setInstance@HsDatabase@@SAXPAV1@@Z @ 272 NONAME ; void HsDatabase::setInstance(class HsDatabase *)
+	??0HsWallpaper@@QAE@PAVQGraphicsItem@@@Z @ 273 NONAME ; HsWallpaper::HsWallpaper(class QGraphicsItem *)
+	?setSnapEffectsEnabled@HsConfiguration@@QAEX_N@Z @ 274 NONAME ; void HsConfiguration::setSnapEffectsEnabled(bool)
+	?newPageAddedAnimationDuration@HsConfiguration@@QBEHXZ @ 275 NONAME ; int HsConfiguration::newPageAddedAnimationDuration(void) const
+	?getStaticMetaObject@HsWallpaperLoaderThread@@SAABUQMetaObject@@XZ @ 276 NONAME ; struct QMetaObject const & HsWallpaperLoaderThread::getStaticMetaObject(void)
+	?commit@HsDatabase@@QAE_NXZ @ 277 NONAME ; bool HsDatabase::commit(void)
+	?trUtf8@HsDatabase@@SA?AVQString@@PBD0@Z @ 278 NONAME ; class QString HsDatabase::trUtf8(char const *, char const *)
+	?mousePressEvent@HsWidgetHostVisual@@MAEXPAVQGraphicsSceneMouseEvent@@@Z @ 279 NONAME ; void HsWidgetHostVisual::mousePressEvent(class QGraphicsSceneMouseEvent *)
+	?tr@HsWidgetComponent@@SA?AVQString@@PBD0H@Z @ 280 NONAME ; class QString HsWidgetComponent::tr(char const *, char const *, int)
+	?backupRestoreStarted@HsBackupRestoreObserver@@QAEXXZ @ 281 NONAME ; void HsBackupRestoreObserver::backupRestoreStarted(void)
+	?qt_metacast@HsPageWallpaper@@UAEPAXPBD@Z @ 282 NONAME ; void * HsPageWallpaper::qt_metacast(char const *)
+	?trUtf8@HsWidgetHost@@SA?AVQString@@PBD0@Z @ 283 NONAME ; class QString HsWidgetHost::trUtf8(char const *, char const *)
+	?setDefaultPageId@HsConfiguration@@QAEXH@Z @ 284 NONAME ; void HsConfiguration::setDefaultPageId(int)
+	?metaObject@HsWidgetHostVisual@@UBEPBUQMetaObject@@XZ @ 285 NONAME ; struct QMetaObject const * HsWidgetHostVisual::metaObject(void) const
+	?installTranslator@HsWidgetComponent@@AAEXXZ @ 286 NONAME ; void HsWidgetComponent::installTranslator(void)
+	?bounceAnimationEasingCurve@HsConfiguration@@QBE?AW4Type@QEasingCurve@@XZ @ 287 NONAME ; enum QEasingCurve::Type HsConfiguration::bounceAnimationEasingCurve(void) const
+	??_EHsIdleWidget@@UAE@I@Z @ 288 NONAME ; HsIdleWidget::~HsIdleWidget(unsigned int)
+	?qt_metacall@HsWidgetComponent@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 289 NONAME ; int HsWidgetComponent::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?qt_metacall@HsConfiguration@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 290 NONAME ; int HsConfiguration::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?cleanupIdleUi@HsGui@@QAEXXZ @ 291 NONAME ; void HsGui::cleanupIdleUi(void)
+	?setWidgetOverTrashbinFeedbackEffect@HsConfiguration@@QAEXW4InstantEffect@HbFeedback@@@Z @ 292 NONAME ; void HsConfiguration::setWidgetOverTrashbinFeedbackEffect(enum HbFeedback::InstantEffect)
+	?handleEntryAdded@HsWidgetComponentRegistry@@AAEXABVCaEntry@@ABVQString@@@Z @ 293 NONAME ; void HsWidgetComponentRegistry::handleEntryAdded(class CaEntry const &, class QString const &)
+	?setProperty@HsWidgetHost@@AAE_NPBDAAVQMetaProperty@@@Z @ 294 NONAME ; bool HsWidgetHost::setProperty(char const *, class QMetaProperty &)
+	?pagePanFinished@HsScene@@IAEXPAVQGestureEvent@@@Z @ 295 NONAME ; void HsScene::pagePanFinished(class QGestureEvent *)
+	?minimumWidgetSizeInUnits@HsConfiguration@@QBE?AVQSizeF@@XZ @ 296 NONAME ; class QSizeF HsConfiguration::minimumWidgetSizeInUnits(void) const
+	??0HsBackupRestoreObserver@@AAE@PAVQObject@@@Z @ 297 NONAME ; HsBackupRestoreObserver::HsBackupRestoreObserver(class QObject *)
+	?setClockWidgetTapFeedbackEffect@HsConfiguration@@QAEXW4InstantEffect@HbFeedback@@@Z @ 298 NONAME ; void HsConfiguration::setClockWidgetTapFeedbackEffect(enum HbFeedback::InstantEffect)
+	??1HsPage@@UAE@XZ @ 299 NONAME ; HsPage::~HsPage(void)
+	?databaseId@HsWidgetHost@@QBEHXZ @ 300 NONAME ; int HsWidgetHost::databaseId(void) const
+	?setInstallationPath@HsWidgetComponentDescriptor@@QAEXABVQString@@@Z @ 301 NONAME ; void HsWidgetComponentDescriptor::setInstallationPath(class QString const &)
+	?staticMetaObject@HsHostedWidgetFactory@@2UQMetaObject@@B @ 302 NONAME ; struct QMetaObject const HsHostedWidgetFactory::staticMetaObject
+	?setTitle@HsWidgetComponentDescriptor@@QAEXABVQString@@@Z @ 303 NONAME ; void HsWidgetComponentDescriptor::setTitle(class QString const &)
+	?getAnchorCoordinates@HsWidgetOrganizer@@AAE?AVQPointF@@H@Z @ 304 NONAME ; class QPointF HsWidgetOrganizer::getAnchorCoordinates(int)
+	?qt_metacall@HsPageWallpaper@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 305 NONAME ; int HsPageWallpaper::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?mInstance@HsWidgetPositioningOnWidgetAdd@@0PAV1@A @ 306 NONAME ; class HsWidgetPositioningOnWidgetAdd * HsWidgetPositioningOnWidgetAdd::mInstance
+	?setWidgetSnappingFeedbackEffect@HsConfiguration@@QAEXW4InstantEffect@HbFeedback@@@Z @ 307 NONAME ; void HsConfiguration::setWidgetSnappingFeedbackEffect(enum HbFeedback::InstantEffect)
+	?setWidgetDragEffectDuration@HsConfiguration@@QAEXH@Z @ 308 NONAME ; void HsConfiguration::setWidgetDragEffectDuration(int)
+	?setInstance@HsWidgetPositioningOnWidgetAdd@@SAXPAV1@@Z @ 309 NONAME ; void HsWidgetPositioningOnWidgetAdd::setInstance(class HsWidgetPositioningOnWidgetAdd *)
+	?widgetPresentation@HsDatabase@@QAE_NAAVHsWidgetPresentationData@@@Z @ 310 NONAME ; bool HsDatabase::widgetPresentation(class HsWidgetPresentationData &)
+	?pageChangePanDistance@HsConfiguration@@QBEMXZ @ 311 NONAME ; float HsConfiguration::pageChangePanDistance(void) const
+	?mInstance@HsContentService@@0PAV1@A @ 312 NONAME ; class HsContentService * HsContentService::mInstance
+	??0HsWidgetComponent@@AAE@ABVQString@@PAVQObject@@@Z @ 313 NONAME ; HsWidgetComponent::HsWidgetComponent(class QString const &, class QObject *)
+	?startDragEffect@HsWidgetHostVisual@@QAEXXZ @ 314 NONAME ; void HsWidgetHostVisual::startDragEffect(void)
+	?insertPage@HsIdleWidget@@QAEXHPAVHsPage@@@Z @ 315 NONAME ; void HsIdleWidget::insertPage(int, class HsPage *)
+	?onOrientationChanged@HsPage@@AAEXW4Orientation@Qt@@@Z @ 316 NONAME ; void HsPage::onOrientationChanged(enum Qt::Orientation)
+	?adjustedWidgetPosition@HsPage@@QAE?AVQPointF@@ABVQRectF@@@Z @ 317 NONAME ; class QPointF HsPage::adjustedWidgetPosition(class QRectF const &)
+	?staticMetaObject@HsWallpaperLoader@@2UQMetaObject@@B @ 318 NONAME ; struct QMetaObject const HsWallpaperLoader::staticMetaObject
+	?widgetTapStarted@HsScene@@IAEXVQPointF@@PAVHsWidgetHost@@@Z @ 319 NONAME ; void HsScene::widgetTapStarted(class QPointF, class HsWidgetHost *)
+	?widgetDragEffectDuration@HsConfiguration@@QBEHXZ @ 320 NONAME ; int HsConfiguration::widgetDragEffectDuration(void) const
+	?tr@HsHostedWidgetFactory@@SA?AVQString@@PBD0H@Z @ 321 NONAME ; class QString HsHostedWidgetFactory::tr(char const *, char const *, int)
+	?navigateToApplibrary@HsGui@@IAEXXZ @ 322 NONAME ; void HsGui::navigateToApplibrary(void)
+	?load@HsConfiguration@@QAE_NXZ @ 323 NONAME ; bool HsConfiguration::load(void)
+	?createInstance@HsPage@@SAPAV1@ABVHsPageData@@@Z @ 324 NONAME ; class HsPage * HsPage::createInstance(class HsPageData const &)
+	?widgetPreferences@HsDatabase@@QAE_NHAAV?$QHash@VQString@@VQVariant@@@@@Z @ 325 NONAME ; bool HsDatabase::widgetPreferences(int, class QHash<class QString, class QVariant> &)
+	?removePage@HsScene@@QAE_NPAVHsPage@@@Z @ 326 NONAME ; bool HsScene::removePage(class HsPage *)
+	?hideWidget@HsWidgetHost@@QAEXXZ @ 327 NONAME ; void HsWidgetHost::hideWidget(void)
+	?close@HsDatabase@@QAEXXZ @ 328 NONAME ; void HsDatabase::close(void)
+	?maximumPageCount@HsConfiguration@@QBEHXZ @ 329 NONAME ; int HsConfiguration::maximumPageCount(void) const
+	?action_faulted@HsWidgetHost@@AAEXXZ @ 330 NONAME ; void HsWidgetHost::action_faulted(void)
+	?setServiceXml@HsWidgetComponentDescriptor@@QAEXABVQString@@@Z @ 331 NONAME ; void HsWidgetComponentDescriptor::setServiceXml(class QString const &)
+	?getStaticMetaObject@HsWidgetHost@@SAABUQMetaObject@@XZ @ 332 NONAME ; struct QMetaObject const & HsWidgetHost::getStaticMetaObject(void)
+	?sortRects@HsWidgetOrganizer@@AAE?AV?$QList@H@@W4SortMode@1@ABV?$QMap@HVQRectF@@@@@Z @ 333 NONAME ; class QList<int> HsWidgetOrganizer::sortRects(enum HsWidgetOrganizer::SortMode, class QMap<int, class QRectF> const &)
+	??0HsWidgetData@@QAE@ABV0@@Z @ 334 NONAME ; HsWidgetData::HsWidgetData(class HsWidgetData const &)
+	?installationPath@HsWidgetComponentDescriptor@@QBE?AVQString@@XZ @ 335 NONAME ; class QString HsWidgetComponentDescriptor::installationPath(void) const
+	?showHorizontalSnapLine@HsIdleWidget@@QAEXABVQLineF@@@Z @ 336 NONAME ; void HsIdleWidget::showHorizontalSnapLine(class QLineF const &)
+	??_EHsPageVisual@@UAE@I@Z @ 337 NONAME ; HsPageVisual::~HsPageVisual(unsigned int)
+	?setWidgetDropEffectDuration@HsConfiguration@@QAEXH@Z @ 338 NONAME ; void HsConfiguration::setWidgetDropEffectDuration(int)
+	?pageRemovedAnimationDuration@HsConfiguration@@QBEHXZ @ 339 NONAME ; int HsConfiguration::pageRemovedAnimationDuration(void) const
+	?onFinished@HsWidgetHost@@AAEXXZ @ 340 NONAME ; void HsWidgetHost::onFinished(void)
+	?rollback@HsDatabase@@QAE_NXZ @ 341 NONAME ; bool HsDatabase::rollback(void)
+	?widget@HsDatabase@@QAE_NAAVHsWidgetData@@@Z @ 342 NONAME ; bool HsDatabase::widget(class HsWidgetData &)
+	?description@HsWidgetComponentDescriptor@@QBE?AVQString@@XZ @ 343 NONAME ; class QString HsWidgetComponentDescriptor::description(void) const
+	?mInstance@HsShortcutService@@0PAV1@A @ 344 NONAME ; class HsShortcutService * HsShortcutService::mInstance
+	?pageIndicator@HsIdleWidget@@QBEPAVHsPageIndicator@@XZ @ 345 NONAME ; class HsPageIndicator * HsIdleWidget::pageIndicator(void) const
+	?setShortcutWidgetTapFeedbackEffect@HsConfiguration@@QAEXW4InstantEffect@HbFeedback@@@Z @ 346 NONAME ; void HsConfiguration::setShortcutWidgetTapFeedbackEffect(enum HbFeedback::InstantEffect)
+	?wallpaperDirectory@HsPageWallpaper@@MBE?AVQString@@XZ @ 347 NONAME ; class QString HsPageWallpaper::wallpaperDirectory(void) const
+	?qt_metacast@HsWidgetComponent@@UAEPAXPBD@Z @ 348 NONAME ; void * HsWidgetComponent::qt_metacast(char const *)
+	?metaObject@HsWallpaperLoaderThread@@UBEPBUQMetaObject@@XZ @ 349 NONAME ; struct QMetaObject const * HsWallpaperLoaderThread::metaObject(void) const
+	?setTargetSize@HsWallpaperLoaderThread@@QAEXABVQSize@@@Z @ 350 NONAME ; void HsWallpaperLoaderThread::setTargetSize(class QSize const &)
+	?removePage@HsIdleWidget@@QAEXH@Z @ 351 NONAME ; void HsIdleWidget::removePage(int)
+	?tr@HsWallpaper@@SA?AVQString@@PBD0H@Z @ 352 NONAME ; class QString HsWallpaper::tr(char const *, char const *, int)
+	?defaultPageId@HsConfiguration@@QBEHXZ @ 353 NONAME ; int HsConfiguration::defaultPageId(void) const
+	?setSourcePath@HsWallpaperLoader@@QAEXABVQString@@@Z @ 354 NONAME ; void HsWallpaperLoader::setSourcePath(class QString const &)
+	?metaObject@HsGui@@UBEPBUQMetaObject@@XZ @ 355 NONAME ; struct QMetaObject const * HsGui::metaObject(void) const
+	?pageChangeAnimationEasingCurve@HsConfiguration@@QBE?AW4Type@QEasingCurve@@XZ @ 356 NONAME ; enum QEasingCurve::Type HsConfiguration::pageChangeAnimationEasingCurve(void) const
+	?wallpaper@HsPage@@QBEPAVHsWallpaper@@XZ @ 357 NONAME ; class HsWallpaper * HsPage::wallpaper(void) const
+	??0HsPageVisual@@QAE@PAVQGraphicsItem@@@Z @ 358 NONAME ; HsPageVisual::HsPageVisual(class QGraphicsItem *)
+	?trUtf8@HsWidgetComponent@@SA?AVQString@@PBD0@Z @ 359 NONAME ; class QString HsWidgetComponent::trUtf8(char const *, char const *)
+	?event_backupRestoreStarted@HsBackupRestoreObserver@@IAEXXZ @ 360 NONAME ; void HsBackupRestoreObserver::event_backupRestoreStarted(void)
+	?getAnchorListIndex@HsWidgetOrganizer@@AAEHABVQPointF@@@Z @ 361 NONAME ; int HsWidgetOrganizer::getAnchorListIndex(class QPointF const &)
+	?version@HsWidgetComponentDescriptor@@QBE?AVQString@@XZ @ 362 NONAME ; class QString HsWidgetComponentDescriptor::version(void) const
+	?action_disconnectComponent@HsWidgetHost@@AAEXXZ @ 363 NONAME ; void HsWidgetHost::action_disconnectComponent(void)
+	?scene@HsSceneWallpaper@@QBEPAVHsScene@@XZ @ 364 NONAME ; class HsScene * HsSceneWallpaper::scene(void) const
+	?mInstance@HsConfiguration@@0PAV1@A @ 365 NONAME ; class HsConfiguration * HsConfiguration::mInstance
+	?newWidgets@HsPage@@QAE?AV?$QList@PAVHsWidgetHost@@@@XZ @ 366 NONAME ; class QList<class HsWidgetHost *> HsPage::newWidgets(void)
+	??0HsHostedWidgetFactory@@AAE@PAVQObject@@@Z @ 367 NONAME ; HsHostedWidgetFactory::HsHostedWidgetFactory(class QObject *)
+	?trUtf8@HsContentService@@SA?AVQString@@PBD0@Z @ 368 NONAME ; class QString HsContentService::trUtf8(char const *, char const *)
+	?emitUpdated@HsWidgetComponent@@AAEXXZ @ 369 NONAME ; void HsWidgetComponent::emitUpdated(void)
+	?emitUninstalled@HsWidgetComponent@@AAEXXZ @ 370 NONAME ; void HsWidgetComponent::emitUninstalled(void)
+	?tr@HsConfiguration@@SA?AVQString@@PBD0H@Z @ 371 NONAME ; class QString HsConfiguration::tr(char const *, char const *, int)
+	??0HsSceneWallpaper@@QAE@PAVHsScene@@PAVQGraphicsItem@@@Z @ 372 NONAME ; HsSceneWallpaper::HsSceneWallpaper(class HsScene *, class QGraphicsItem *)
+	?createTargets@HsPageWallpaper@@MAE?AV?$QHash@VQString@@VQVariant@@@@ABVQString@@@Z @ 373 NONAME ; class QHash<class QString, class QVariant> HsPageWallpaper::createTargets(class QString const &)
+	?mInstance@HsGui@@0PAV1@A @ 374 NONAME ; class HsGui * HsGui::mInstance
+	?pageChangeZoneWidth@HsConfiguration@@QBEMXZ @ 375 NONAME ; float HsConfiguration::pageChangeZoneWidth(void) const
+	?qt_metacast@HsGui@@UAEPAXPBD@Z @ 376 NONAME ; void * HsGui::qt_metacast(char const *)
+	?setInstance@HsGui@@SAPAV1@PAV1@@Z @ 377 NONAME ; class HsGui * HsGui::setInstance(class HsGui *)
+	?tr@HsPageWallpaper@@SA?AVQString@@PBD0@Z @ 378 NONAME ; class QString HsPageWallpaper::tr(char const *, char const *)
+	?maximumWidgetSizeInPixels@HsConfiguration@@QBE?AVQSizeF@@XZ @ 379 NONAME ; class QSizeF HsConfiguration::maximumWidgetSizeInPixels(void) const
+	??_EHsBackupRestoreObserver@@UAE@I@Z @ 380 NONAME ; HsBackupRestoreObserver::~HsBackupRestoreObserver(unsigned int)
+	??1HsScene@@UAE@XZ @ 381 NONAME ; HsScene::~HsScene(void)
+	?pageWallpaperLayer@HsIdleWidget@@QBEPAVHbWidget@@XZ @ 382 NONAME ; class HbWidget * HsIdleWidget::pageWallpaperLayer(void) const
+	?deleteWidgetPresentation@HsDatabase@@QAE_NHW4Orientation@Qt@@@Z @ 383 NONAME ; bool HsDatabase::deleteWidgetPresentation(int, enum Qt::Orientation)
+	?setWidgetOrganizerAnchorDistance@HsConfiguration@@QAEXH@Z @ 384 NONAME ; void HsConfiguration::setWidgetOrganizerAnchorDistance(int)
+	?getStaticMetaObject@HsWidgetComponent@@SAABUQMetaObject@@XZ @ 385 NONAME ; struct QMetaObject const & HsWidgetComponent::getStaticMetaObject(void)
+	?addExistingWidget@HsPage@@QAE_NPAVHsWidgetHost@@@Z @ 386 NONAME ; bool HsPage::addExistingWidget(class HsWidgetHost *)
+	?qt_metacast@HsWidgetComponentRegistry@@UAEPAXPBD@Z @ 387 NONAME ; void * HsWidgetComponentRegistry::qt_metacast(char const *)
+	?close@HsWidgetHost@@QAEXXZ @ 388 NONAME ; void HsWidgetHost::close(void)
+	?action_remove@HsWidgetHost@@AAEXXZ @ 389 NONAME ; void HsWidgetHost::action_remove(void)
+	?trUtf8@HsWallpaper@@SA?AVQString@@PBD0H@Z @ 390 NONAME ; class QString HsWallpaper::trUtf8(char const *, char const *, int)
+	?activePage@HsScene@@QBEPAVHsPage@@XZ @ 391 NONAME ; class HsPage * HsScene::activePage(void) const
+	?bounceEffect@HsConfiguration@@QBEHXZ @ 392 NONAME ; int HsConfiguration::bounceEffect(void) const
+	?setupIdleUi@HsGui@@QAEXXZ @ 393 NONAME ; void HsGui::setupIdleUi(void)
+	?pages@HsDatabase@@QAE_NAAV?$QList@VHsPageData@@@@@Z @ 394 NONAME ; bool HsDatabase::pages(class QList<class HsPageData> &)
+	?savePresentation@HsWidgetHost@@QAE_NXZ @ 395 NONAME ; bool HsWidgetHost::savePresentation(void)
+	?pageChangeAnimation@HsGui@@QAEPAVHsPropertyAnimationWrapper@@XZ @ 396 NONAME ; class HsPropertyAnimationWrapper * HsGui::pageChangeAnimation(void)
+	?takeInstance@HsScene@@SAPAV1@XZ @ 397 NONAME ; class HsScene * HsScene::takeInstance(void)
+	?rootPath@HsWidgetComponent@@QBE?AVQString@@XZ @ 398 NONAME ; class QString HsWidgetComponent::rootPath(void) const
+	?startDragEffect@HsWidgetHost@@QAEXXZ @ 399 NONAME ; void HsWidgetHost::startDragEffect(void)
+	?event_startAndHide@HsWidgetHost@@IAEXXZ @ 400 NONAME ; void HsWidgetHost::event_startAndHide(void)
+	?qt_metacast@HsWallpaperLoader@@UAEPAXPBD@Z @ 401 NONAME ; void * HsWallpaperLoader::qt_metacast(char const *)
+	??1HsDatabase@@UAE@XZ @ 402 NONAME ; HsDatabase::~HsDatabase(void)
+	??0HsWidgetOrganizer@@QAE@HW4WidgetOrganizerSearchSequence@HsConfiguration@@@Z @ 403 NONAME ; HsWidgetOrganizer::HsWidgetOrganizer(int, enum HsConfiguration::WidgetOrganizerSearchSequence)
+	?getPosition@HsWidgetOrganizer@@AAE?AVQPointF@@ABVQSizeF@@@Z @ 404 NONAME ; class QPointF HsWidgetOrganizer::getPosition(class QSizeF const &)
+	??1HsWidgetComponent@@UAE@XZ @ 405 NONAME ; HsWidgetComponent::~HsWidgetComponent(void)
+	?metaObject@HsSceneWallpaper@@UBEPBUQMetaObject@@XZ @ 406 NONAME ; struct QMetaObject const * HsSceneWallpaper::metaObject(void) const
+	?createInstance@HsWidgetHost@@SAPAV1@AAVHsWidgetData@@ABV?$QHash@VQString@@VQVariant@@@@@Z @ 407 NONAME ; class HsWidgetHost * HsWidgetHost::createInstance(class HsWidgetData &, class QHash<class QString, class QVariant> const &)
+	?setupEffects@HsWidgetHostVisual@@AAEXXZ @ 408 NONAME ; void HsWidgetHostVisual::setupEffects(void)
+	?trUtf8@HsGui@@SA?AVQString@@PBD0@Z @ 409 NONAME ; class QString HsGui::trUtf8(char const *, char const *)
+	?setPage@HsPageWallpaper@@QAEXPAVHsPage@@@Z @ 410 NONAME ; void HsPageWallpaper::setPage(class HsPage *)
+	?shape@HsWidgetHostVisual@@UBE?AVQPainterPath@@XZ @ 411 NONAME ; class QPainterPath HsWidgetHostVisual::shape(void) const
+	?deletePage@HsDatabase@@QAE_NH@Z @ 412 NONAME ; bool HsDatabase::deletePage(int)
+	?savePresentation@HsWidgetHost@@QAE_NAAVHsWidgetPresentationData@@@Z @ 413 NONAME ; bool HsWidgetHost::savePresentation(class HsWidgetPresentationData &)
+	?tr@HsWallpaperLoaderThread@@SA?AVQString@@PBD0H@Z @ 414 NONAME ; class QString HsWallpaperLoaderThread::tr(char const *, char const *, int)
+	?resized@HsWidgetHostVisual@@IAEXXZ @ 415 NONAME ; void HsWidgetHostVisual::resized(void)
+	?page@HsWidgetHost@@QBEPAVHsPage@@XZ @ 416 NONAME ; class HsPage * HsWidgetHost::page(void) const
+	?qt_metacast@HsWallpaper@@UAEPAXPBD@Z @ 417 NONAME ; void * HsWallpaper::qt_metacast(char const *)
+	?staticMetaObject@HsWidgetComponent@@2UQMetaObject@@B @ 418 NONAME ; struct QMetaObject const HsWidgetComponent::staticMetaObject
+	?setRemovable@HsPage@@QAEX_N@Z @ 419 NONAME ; void HsPage::setRemovable(bool)
+	?staticMetaObject@HsIdleWidget@@2UQMetaObject@@B @ 420 NONAME ; struct QMetaObject const HsIdleWidget::staticMetaObject
+	?showVerticalSnapLine@HsIdleWidget@@QAEXABVQLineF@@@Z @ 421 NONAME ; void HsIdleWidget::showVerticalSnapLine(class QLineF const &)
+	?widgetRemoved@HsContentService@@IAEXABVQString@@ABV?$QHash@VQString@@VQVariant@@@@@Z @ 422 NONAME ; void HsContentService::widgetRemoved(class QString const &, class QHash<class QString, class QVariant> const &)
+	?widgetMoveUpdated@HsScene@@IAEXABVQPointF@@PAVHsWidgetHost@@@Z @ 423 NONAME ; void HsScene::widgetMoveUpdated(class QPointF const &, class HsWidgetHost *)
+	?qt_metacall@HsWallpaperLoaderThread@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 424 NONAME ; int HsWallpaperLoaderThread::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?loadPresentation@HsWidgetHost@@QAE_NXZ @ 425 NONAME ; bool HsWidgetHost::loadPresentation(void)
+	?setupStates@HsWidgetHost@@AAEXXZ @ 426 NONAME ; void HsWidgetHost::setupStates(void)
+	?getStaticMetaObject@HsContentService@@SAABUQMetaObject@@XZ @ 427 NONAME ; struct QMetaObject const & HsContentService::getStaticMetaObject(void)
+	?wallpaper@HsScene@@QBEPAVHsWallpaper@@XZ @ 428 NONAME ; class HsWallpaper * HsScene::wallpaper(void) const
+	?isItemShortcutWidget@HsShortcutService@@QAE_NH@Z @ 429 NONAME ; bool HsShortcutService::isItemShortcutWidget(int)
+	?setGeometry@HsPageVisual@@UAEXABVQRectF@@@Z @ 430 NONAME ; void HsPageVisual::setGeometry(class QRectF const &)
+	?tr@HsIdleWidget@@SA?AVQString@@PBD0H@Z @ 431 NONAME ; class QString HsIdleWidget::tr(char const *, char const *, int)
+	?setDatabaseName@HsDatabase@@QAEXABVQString@@@Z @ 432 NONAME ; void HsDatabase::setDatabaseName(class QString const &)
+	?updateWidget@HsDatabase@@QAE_NABVHsWidgetData@@@Z @ 433 NONAME ; bool HsDatabase::updateWidget(class HsWidgetData const &)
+	?trUtf8@HsBackupRestoreObserver@@SA?AVQString@@PBD0H@Z @ 434 NONAME ; class QString HsBackupRestoreObserver::trUtf8(char const *, char const *, int)
+	?loadPresentation@HsWidgetHost@@QAE_NW4Orientation@Qt@@@Z @ 435 NONAME ; bool HsWidgetHost::loadPresentation(enum Qt::Orientation)
+	?createWidgetForPreview@HsContentService@@QAEPAVHsWidgetHost@@ABV?$QHash@VQString@@VQVariant@@@@@Z @ 436 NONAME ; class HsWidgetHost * HsContentService::createWidgetForPreview(class QHash<class QString, class QVariant> const &)
+	?available@HsWidgetHost@@IAEXXZ @ 437 NONAME ; void HsWidgetHost::available(void)
+	?setPageChangeZoneWidth@HsConfiguration@@QAEXM@Z @ 438 NONAME ; void HsConfiguration::setPageChangeZoneWidth(float)
+	?emitAboutToUninstall@HsWidgetComponent@@AAEXXZ @ 439 NONAME ; void HsWidgetComponent::emitAboutToUninstall(void)
+	?iconUri@HsWidgetComponentDescriptor@@QBE?AVQString@@XZ @ 440 NONAME ; class QString HsWidgetComponentDescriptor::iconUri(void) const
+	?event_faulted@HsWidgetHost@@IAEXXZ @ 441 NONAME ; void HsWidgetHost::event_faulted(void)
+	?emitUnavailable@HsWidgetComponent@@AAEXXZ @ 442 NONAME ; void HsWidgetComponent::emitUnavailable(void)
+	?snapTimeout@HsConfiguration@@QBEHXZ @ 443 NONAME ; int HsConfiguration::snapTimeout(void) const
+	??1HsWidgetData@@QAE@XZ @ 444 NONAME ; HsWidgetData::~HsWidgetData(void)
+	?faulted@HsWidgetHost@@IAEXXZ @ 445 NONAME ; void HsWidgetHost::faulted(void)
+	??0HsIdleWidget@@QAE@PAVQGraphicsItem@@@Z @ 446 NONAME ; HsIdleWidget::HsIdleWidget(class QGraphicsItem *)
+	?event_unload@HsWidgetHost@@IAEXXZ @ 447 NONAME ; void HsWidgetHost::event_unload(void)
+	?handleEntryRemoved@HsWidgetComponentRegistry@@AAEXABVCaEntry@@ABVQString@@@Z @ 448 NONAME ; void HsWidgetComponentRegistry::handleEntryRemoved(class CaEntry const &, class QString const &)
+	?metaObject@HsWidgetComponentRegistry@@UBEPBUQMetaObject@@XZ @ 449 NONAME ; struct QMetaObject const * HsWidgetComponentRegistry::metaObject(void) const
+	?updated@HsWidgetComponent@@IAEXXZ @ 450 NONAME ; void HsWidgetComponent::updated(void)
+	?takeInstance@HsConfiguration@@SAPAV1@XZ @ 451 NONAME ; class HsConfiguration * HsConfiguration::takeInstance(void)
+	?pageIndex@HsPage@@QAEHXZ @ 452 NONAME ; int HsPage::pageIndex(void)
+	?setTargets@HsWallpaperLoader@@QAEXABV?$QHash@VQString@@VQVariant@@@@@Z @ 453 NONAME ; void HsWallpaperLoader::setTargets(class QHash<class QString, class QVariant> const &)
+	??1HsIdleWidget@@UAE@XZ @ 454 NONAME ; HsIdleWidget::~HsIdleWidget(void)
+	??_EHsHostedWidgetFactory@@UAE@I@Z @ 455 NONAME ; HsHostedWidgetFactory::~HsHostedWidgetFactory(unsigned int)
+	?staticMetaObject@HsGui@@2UQMetaObject@@B @ 456 NONAME ; struct QMetaObject const HsGui::staticMetaObject
+	??0HsWallpaperLoaderThread@@QAE@PAVQObject@@@Z @ 457 NONAME ; HsWallpaperLoaderThread::HsWallpaperLoaderThread(class QObject *)
+	?start@HsWallpaperLoader@@QAEXXZ @ 458 NONAME ; void HsWallpaperLoader::start(void)
+	?component@HsWidgetComponentRegistry@@QAEPAVHsWidgetComponent@@ABVQString@@@Z @ 459 NONAME ; class HsWidgetComponent * HsWidgetComponentRegistry::component(class QString const &)
+	??_EHsWidgetComponent@@UAE@I@Z @ 460 NONAME ; HsWidgetComponent::~HsWidgetComponent(unsigned int)
+	?mInstance@HsScene@@0PAV1@A @ 461 NONAME ; class HsScene * HsScene::mInstance
+	?getStaticMetaObject@HsGui@@SAABUQMetaObject@@XZ @ 462 NONAME ; struct QMetaObject const & HsGui::getStaticMetaObject(void)
+	?trUtf8@HsSceneWallpaper@@SA?AVQString@@PBD0@Z @ 463 NONAME ; class QString HsSceneWallpaper::trUtf8(char const *, char const *)
+	??_EHsWidgetHost@@UAE@I@Z @ 464 NONAME ; HsWidgetHost::~HsWidgetHost(unsigned int)
+	?minimumWidgetHeight@HsConfiguration@@QBEMXZ @ 465 NONAME ; float HsConfiguration::minimumWidgetHeight(void) const
+	?setVisualModel@HsWidgetHostVisual@@QAEXPAVHsWidgetHost@@@Z @ 466 NONAME ; void HsWidgetHostVisual::setVisualModel(class HsWidgetHost *)
+	?staticMetaObject@HsShortcutService@@2UQMetaObject@@B @ 467 NONAME ; struct QMetaObject const HsShortcutService::staticMetaObject
+	??0HsPageWallpaper@@QAE@PAVHsPage@@PAVQGraphicsItem@@@Z @ 468 NONAME ; HsPageWallpaper::HsPageWallpaper(class HsPage *, class QGraphicsItem *)
+	?onSetPreferences@HsWidgetHost@@AAEXABVQStringList@@@Z @ 469 NONAME ; void HsWidgetHost::onSetPreferences(class QStringList const &)
+	??1HsWidgetComponentDescriptor@@QAE@XZ @ 470 NONAME ; HsWidgetComponentDescriptor::~HsWidgetComponentDescriptor(void)
+	?showPageIndicator@HsIdleWidget@@QAEXXZ @ 471 NONAME ; void HsIdleWidget::showPageIndicator(void)
+	??1HsBackupRestoreObserver@@UAE@XZ @ 472 NONAME ; HsBackupRestoreObserver::~HsBackupRestoreObserver(void)
+	?insertPage@HsDatabase@@QAE_NAAVHsPageData@@@Z @ 473 NONAME ; bool HsDatabase::insertPage(class HsPageData &)
+	??_EHsWidgetComponentRegistry@@UAE@I@Z @ 474 NONAME ; HsWidgetComponentRegistry::~HsWidgetComponentRegistry(unsigned int)
+	?metaObject@HsIdleWidget@@UBEPBUQMetaObject@@XZ @ 475 NONAME ; struct QMetaObject const * HsIdleWidget::metaObject(void) const
+	?qt_metacast@HsHostedWidgetFactory@@UAEPAXPBD@Z @ 476 NONAME ; void * HsHostedWidgetFactory::qt_metacast(char const *)
+	?setUri@HsWidgetComponentDescriptor@@QAEXABVQString@@@Z @ 477 NONAME ; void HsWidgetComponentDescriptor::setUri(class QString const &)
+	??1HsWallpaperLoaderThread@@UAE@XZ @ 478 NONAME ; HsWallpaperLoaderThread::~HsWallpaperLoaderThread(void)
+	?staticMetaObject@HsWidgetComponentRegistry@@2UQMetaObject@@B @ 479 NONAME ; struct QMetaObject const HsWidgetComponentRegistry::staticMetaObject
+	??1HsWallpaper@@UAE@XZ @ 480 NONAME ; HsWallpaper::~HsWallpaper(void)
+	?qt_metacall@HsPage@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 481 NONAME ; int HsPage::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?onWidgetAvailable@HsPage@@AAEXXZ @ 482 NONAME ; void HsPage::onWidgetAvailable(void)
+	?convert@HsWidgetOrganizer@@UAE?AV?$QList@VQRectF@@@@ABVQRectF@@ABV2@1ABVQPointF@@@Z @ 483 NONAME ; class QList<class QRectF> HsWidgetOrganizer::convert(class QRectF const &, class QList<class QRectF> const &, class QList<class QRectF> const &, class QPointF const &)
+	?qt_metacast@HsPage@@UAEPAXPBD@Z @ 484 NONAME ; void * HsPage::qt_metacast(char const *)
+	?result@HsWallpaperLoaderThread@@QBE_NXZ @ 485 NONAME ; bool HsWallpaperLoaderThread::result(void) const
+	?setPageIndicatorSpacing@HsConfiguration@@QAEXM@Z @ 486 NONAME ; void HsConfiguration::setPageIndicatorSpacing(float)
+	?setSnapLineFadeInDuration@HsConfiguration@@QAEXH@Z @ 487 NONAME ; void HsConfiguration::setSnapLineFadeInDuration(int)
+	??1HsGui@@UAE@XZ @ 488 NONAME ; HsGui::~HsGui(void)
+	?isValid@HsWidgetComponentDescriptor@@QAE_NXZ @ 489 NONAME ; bool HsWidgetComponentDescriptor::isValid(void)
+	?uri@HsWidgetComponentDescriptor@@QBE?AVQString@@XZ @ 490 NONAME ; class QString HsWidgetComponentDescriptor::uri(void) const
+	?setOrientation@HsGui@@QAEXW4Orientation@Qt@@@Z @ 491 NONAME ; void HsGui::setOrientation(enum Qt::Orientation)
+	?tr@HsWidgetComponentRegistry@@SA?AVQString@@PBD0@Z @ 492 NONAME ; class QString HsWidgetComponentRegistry::tr(char const *, char const *)
+	?getStaticMetaObject@HsPage@@SAABUQMetaObject@@XZ @ 493 NONAME ; struct QMetaObject const & HsPage::getStaticMetaObject(void)
+	?onWidgetFaulted@HsPage@@AAEXXZ @ 494 NONAME ; void HsPage::onWidgetFaulted(void)
+	?page@HsPageWallpaper@@QBEPAVHsPage@@XZ @ 495 NONAME ; class HsPage * HsPageWallpaper::page(void) const
+	?qt_metacast@HsBackupRestoreObserver@@UAEPAXPBD@Z @ 496 NONAME ; void * HsBackupRestoreObserver::qt_metacast(char const *)
+	?setTargetPath@HsWallpaperLoaderThread@@QAEXABVQString@@@Z @ 497 NONAME ; void HsWallpaperLoaderThread::setTargetPath(class QString const &)
+	??1HsWidgetPositioningOnWidgetAdd@@UAE@XZ @ 498 NONAME ; HsWidgetPositioningOnWidgetAdd::~HsWidgetPositioningOnWidgetAdd(void)
+	?setSnapTimeout@HsConfiguration@@QAEXH@Z @ 499 NONAME ; void HsConfiguration::setSnapTimeout(int)
+	?createTargets@HsSceneWallpaper@@MAE?AV?$QHash@VQString@@VQVariant@@@@ABVQString@@@Z @ 500 NONAME ; class QHash<class QString, class QVariant> HsSceneWallpaper::createTargets(class QString const &)
+	?onWidgetResized@HsPage@@AAEXXZ @ 501 NONAME ; void HsPage::onWidgetResized(void)
+	?showWidgets@HsPage@@QAEXXZ @ 502 NONAME ; void HsPage::showWidgets(void)
+	?checkBUR@HsBackupRestoreObserver@@QAE_NXZ @ 503 NONAME ; bool HsBackupRestoreObserver::checkBUR(void)
+	?startWidget@HsWidgetHost@@QAEX_N@Z @ 504 NONAME ; void HsWidgetHost::startWidget(bool)
+	??_EHsShortcutService@@UAE@I@Z @ 505 NONAME ; HsShortcutService::~HsShortcutService(unsigned int)
+	?bounceFeedbackEffectDistance@HsConfiguration@@QBEMXZ @ 506 NONAME ; float HsConfiguration::bounceFeedbackEffectDistance(void) const
+	?unavailable@HsWidgetHost@@IAEXXZ @ 507 NONAME ; void HsWidgetHost::unavailable(void)
+	?qt_metacall@HsDatabase@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 508 NONAME ; int HsDatabase::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?searchPositionColumnByColumn@HsWidgetOrganizer@@AAE?AVQPointF@@V2@HH@Z @ 509 NONAME ; class QPointF HsWidgetOrganizer::searchPositionColumnByColumn(class QPointF, int, int)
+	?contentRect@HsPage@@QAE?AVQRectF@@W4Orientation@Qt@@@Z @ 510 NONAME ; class QRectF HsPage::contentRect(enum Qt::Orientation)
+	?contentGeometry@HsPage@@QAE?AVQRectF@@XZ @ 511 NONAME ; class QRectF HsPage::contentGeometry(void)
+	?setHidden@HsWidgetComponentDescriptor@@QAEXABVQString@@@Z @ 512 NONAME ; void HsWidgetComponentDescriptor::setHidden(class QString const &)
+	?widgets@HsDatabase@@QAE_NHAAV?$QList@VHsWidgetData@@@@@Z @ 513 NONAME ; bool HsDatabase::widgets(int, class QList<class HsWidgetData> &)
+	??_EHsPageWallpaper@@UAE@I@Z @ 514 NONAME ; HsPageWallpaper::~HsPageWallpaper(unsigned int)
+	?databaseId@HsPage@@QBEHXZ @ 515 NONAME ; int HsPage::databaseId(void) const
+	?tr@HsWallpaperLoader@@SA?AVQString@@PBD0@Z @ 516 NONAME ; class QString HsWallpaperLoader::tr(char const *, char const *)
+	?show@HsGui@@QAEXXZ @ 517 NONAME ; void HsGui::show(void)
+	??0HsGui@@AAE@PAVQObject@@@Z @ 518 NONAME ; HsGui::HsGui(class QObject *)
+	?qt_metacall@HsBackupRestoreObserver@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 519 NONAME ; int HsBackupRestoreObserver::qt_metacall(enum QMetaObject::Call, int, void * *)
+	??_EHsWallpaperLoaderThread@@UAE@I@Z @ 520 NONAME ; HsWallpaperLoaderThread::~HsWallpaperLoaderThread(unsigned int)
+	?resolveRootPathAndTranslationFilename@HsWidgetComponent@@AAEXXZ @ 521 NONAME ; void HsWidgetComponent::resolveRootPathAndTranslationFilename(void)
+	?isSnapEnabled@HsConfiguration@@QBE_NXZ @ 522 NONAME ; bool HsConfiguration::isSnapEnabled(void) const
+	?maximumWidgetHeight@HsConfiguration@@QBEMXZ @ 523 NONAME ; float HsConfiguration::maximumWidgetHeight(void) const
+	?backupRestoreCompleted@HsBackupRestoreObserver@@QAEXXZ @ 524 NONAME ; void HsBackupRestoreObserver::backupRestoreCompleted(void)
+	?setPageRemovedAnimationDuration@HsConfiguration@@QAEXH@Z @ 525 NONAME ; void HsConfiguration::setPageRemovedAnimationDuration(int)
+	?insertWidget@HsDatabase@@QAE_NAAVHsWidgetData@@@Z @ 526 NONAME ; bool HsDatabase::insertWidget(class HsWidgetData &)
+	??1HsShortcutService@@UAE@XZ @ 527 NONAME ; HsShortcutService::~HsShortcutService(void)
+	?setupTouchArea@HsWidgetHostVisual@@AAEXXZ @ 528 NONAME ; void HsWidgetHostVisual::setupTouchArea(void)
+	?setBounceFeedbackEffectDistance@HsConfiguration@@QAEXM@Z @ 529 NONAME ; void HsConfiguration::setBounceFeedbackEffectDistance(float)
+	?onEntryChanged@HsWidgetComponentRegistry@@AAEXABVCaEntry@@W4ChangeType@@@Z @ 530 NONAME ; void HsWidgetComponentRegistry::onEntryChanged(class CaEntry const &, enum ChangeType)
+	?getPresentation@HsWidgetHost@@QAE_NAAVHsWidgetPresentationData@@@Z @ 531 NONAME ; bool HsWidgetHost::getPresentation(class HsWidgetPresentationData &)
+	?getStaticMetaObject@HsSceneWallpaper@@SAABUQMetaObject@@XZ @ 532 NONAME ; struct QMetaObject const & HsSceneWallpaper::getStaticMetaObject(void)
+	?tr@HsScene@@SA?AVQString@@PBD0H@Z @ 533 NONAME ; class QString HsScene::tr(char const *, char const *, int)
+	?uri@HsWidgetComponent@@QBE?AVQString@@XZ @ 534 NONAME ; class QString HsWidgetComponent::uri(void) const
+	?instance@HsContentService@@SAPAV1@XZ @ 535 NONAME ; class HsContentService * HsContentService::instance(void)
+	?snapGap@HsConfiguration@@QBEMXZ @ 536 NONAME ; float HsConfiguration::snapGap(void) const
+	?widgetOrganizerAnchorDistance@HsConfiguration@@QBEHXZ @ 537 NONAME ; int HsConfiguration::widgetOrganizerAnchorDistance(void) const
+	?savePresentation@HsWidgetHost@@QAE_NW4Orientation@Qt@@@Z @ 538 NONAME ; bool HsWidgetHost::savePresentation(enum Qt::Orientation)
+	?setWidgetDropToTrashbinFeedbackEffect@HsConfiguration@@QAEXW4InstantEffect@HbFeedback@@@Z @ 539 NONAME ; void HsConfiguration::setWidgetDropToTrashbinFeedbackEffect(enum HbFeedback::InstantEffect)
+	?tr@HsIdleWidget@@SA?AVQString@@PBD0@Z @ 540 NONAME ; class QString HsIdleWidget::tr(char const *, char const *)
+	?title@HsWidgetComponentDescriptor@@QBE?AVQString@@XZ @ 541 NONAME ; class QString HsWidgetComponentDescriptor::title(void) const
+	?convert@HsAnchorPointInCenter@@UAE?AV?$QList@VQRectF@@@@ABVQRectF@@ABV2@1ABVQPointF@@@Z @ 542 NONAME ; class QList<class QRectF> HsAnchorPointInCenter::convert(class QRectF const &, class QList<class QRectF> const &, class QList<class QRectF> const &, class QPointF const &)
+	?event_hide@HsWidgetHost@@IAEXXZ @ 543 NONAME ; void HsWidgetHost::event_hide(void)
+	?databaseId@HsScene@@QBEHXZ @ 544 NONAME ; int HsScene::databaseId(void) const
+	?setWidgetDropFeedbackEffect@HsConfiguration@@QAEXW4InstantEffect@HbFeedback@@@Z @ 545 NONAME ; void HsConfiguration::setWidgetDropFeedbackEffect(enum HbFeedback::InstantEffect)
+	??1HsWidgetComponentRegistry@@UAE@XZ @ 546 NONAME ; HsWidgetComponentRegistry::~HsWidgetComponentRegistry(void)
+	?setDescription@HsWidgetComponentDescriptor@@QAEXABVQString@@@Z @ 547 NONAME ; void HsWidgetComponentDescriptor::setDescription(class QString const &)
+	?getStaticMetaObject@HsConfiguration@@SAABUQMetaObject@@XZ @ 548 NONAME ; struct QMetaObject const & HsConfiguration::getStaticMetaObject(void)
+	?staticMetaObject@HsSceneWallpaper@@2UQMetaObject@@B @ 549 NONAME ; struct QMetaObject const HsSceneWallpaper::staticMetaObject
+	?isRunning@HsWallpaperLoader@@QBE_NXZ @ 550 NONAME ; bool HsWallpaperLoader::isRunning(void) const
+	?activePageChanged@HsScene@@IAEXXZ @ 551 NONAME ; void HsScene::activePageChanged(void)
+	?uninstalled@HsWidgetComponent@@IAEXXZ @ 552 NONAME ; void HsWidgetComponent::uninstalled(void)
+	??1HsHostedWidgetFactory@@UAE@XZ @ 553 NONAME ; HsHostedWidgetFactory::~HsHostedWidgetFactory(void)
+	?trUtf8@HsShortcutService@@SA?AVQString@@PBD0@Z @ 554 NONAME ; class QString HsShortcutService::trUtf8(char const *, char const *)
+	?setPage@HsWidgetHost@@QAE_NPAVHsPage@@@Z @ 555 NONAME ; bool HsWidgetHost::setPage(class HsPage *)
+	??_EHsScene@@UAE@I@Z @ 556 NONAME ; HsScene::~HsScene(unsigned int)
+	?metaObject@HsScene@@UBEPBUQMetaObject@@XZ @ 557 NONAME ; struct QMetaObject const * HsScene::metaObject(void) const
+	?pageTapAndHoldFinished@HsScene@@IAEXPAVQGestureEvent@@@Z @ 558 NONAME ; void HsScene::pageTapAndHoldFinished(class QGestureEvent *)
+	?remove@HsWidgetHost@@QAEXXZ @ 559 NONAME ; void HsWidgetHost::remove(void)
+	?run@HsWallpaperLoaderThread@@MAEXXZ @ 560 NONAME ; void HsWallpaperLoaderThread::run(void)
+	?maximumWidgetSizeInUnits@HsConfiguration@@QBE?AVQSizeF@@XZ @ 561 NONAME ; class QSizeF HsConfiguration::maximumWidgetSizeInUnits(void) const
+	?getStaticMetaObject@HsScene@@SAABUQMetaObject@@XZ @ 562 NONAME ; struct QMetaObject const & HsScene::getStaticMetaObject(void)
+	?finished@HsWallpaperLoader@@IAEXXZ @ 563 NONAME ; void HsWallpaperLoader::finished(void)
+	?visual@HsPage@@QBEPAVHsPageVisual@@XZ @ 564 NONAME ; class HsPageVisual * HsPage::visual(void) const
+	?snapLineFadeOutDuration@HsConfiguration@@QBEHXZ @ 565 NONAME ; int HsConfiguration::snapLineFadeOutDuration(void) const
+	?trUtf8@HsPageWallpaper@@SA?AVQString@@PBD0H@Z @ 566 NONAME ; class QString HsPageWallpaper::trUtf8(char const *, char const *, int)
+	?setNewSize@HsWidgetHostVisual@@AAEXABVQSizeF@@@Z @ 567 NONAME ; void HsWidgetHostVisual::setNewSize(class QSizeF const &)
+	?imageSet@HsWallpaper@@IAEXXZ @ 568 NONAME ; void HsWallpaper::imageSet(void)
+	?tr@HsWidgetHostVisual@@SA?AVQString@@PBD0H@Z @ 569 NONAME ; class QString HsWidgetHostVisual::tr(char const *, char const *, int)
+	?sceneType@HsConfiguration@@QBE?AW4SceneType@1@XZ @ 570 NONAME ; enum HsConfiguration::SceneType HsConfiguration::sceneType(void) const
+	?tr@HsPage@@SA?AVQString@@PBD0H@Z @ 571 NONAME ; class QString HsPage::tr(char const *, char const *, int)
+	?setNewPageAddedAnimationDuration@HsConfiguration@@QAEXH@Z @ 572 NONAME ; void HsConfiguration::setNewPageAddedAnimationDuration(int)
+	??_EHsGui@@UAE@I@Z @ 573 NONAME ; HsGui::~HsGui(unsigned int)
+	?isAvailable@HsWidgetComponent@@QBE_NXZ @ 574 NONAME ; bool HsWidgetComponent::isAvailable(void) const
+	?updateWidgetZValues@HsDatabase@@QAE_NABV?$QHash@HM@@W4Orientation@Qt@@@Z @ 575 NONAME ; bool HsDatabase::updateWidgetZValues(class QHash<int, float> const &, enum Qt::Orientation)
+	?staticMetaObject@HsConfiguration@@2UQMetaObject@@B @ 576 NONAME ; struct QMetaObject const HsConfiguration::staticMetaObject
+	?checkConnection@HsDatabase@@ABE_NXZ @ 577 NONAME ; bool HsDatabase::checkConnection(void) const
+	?takeInstance@HsDatabase@@SAPAV1@XZ @ 578 NONAME ; class HsDatabase * HsDatabase::takeInstance(void)
+	?tr@HsWallpaper@@SA?AVQString@@PBD0@Z @ 579 NONAME ; class QString HsWallpaper::tr(char const *, char const *)
+	?deleteWidgets@HsDatabase@@QAE_NABVQString@@@Z @ 580 NONAME ; bool HsDatabase::deleteWidgets(class QString const &)
+	?searchSpace@HsWidgetOrganizer@@AAE?AVQPointF@@W4SearchMode@1@V2@H@Z @ 581 NONAME ; class QPointF HsWidgetOrganizer::searchSpace(enum HsWidgetOrganizer::SearchMode, class QPointF, int)
+	??0HsPageData@@QAE@XZ @ 582 NONAME ; HsPageData::HsPageData(void)
+	?tr@HsSceneWallpaper@@SA?AVQString@@PBD0H@Z @ 583 NONAME ; class QString HsSceneWallpaper::tr(char const *, char const *, int)
+	?pageIndicatorSpacing@HsConfiguration@@QBEMXZ @ 584 NONAME ; float HsConfiguration::pageIndicatorSpacing(void) const
+	?getStaticMetaObject@HsShortcutService@@SAABUQMetaObject@@XZ @ 585 NONAME ; struct QMetaObject const & HsShortcutService::getStaticMetaObject(void)
+	?isRemovable@HsPage@@QBE_NXZ @ 586 NONAME ; bool HsPage::isRemovable(void) const
+	?setDatabaseId@HsPage@@QAEXH@Z @ 587 NONAME ; void HsPage::setDatabaseId(int)
+	?trUtf8@HsIdleWidget@@SA?AVQString@@PBD0@Z @ 588 NONAME ; class QString HsIdleWidget::trUtf8(char const *, char const *)
+	?staticMetaObject@HsBackupRestoreObserver@@2UQMetaObject@@B @ 589 NONAME ; struct QMetaObject const HsBackupRestoreObserver::staticMetaObject
+	?pageChangeAnimationDuration@HsConfiguration@@QBEHXZ @ 590 NONAME ; int HsConfiguration::pageChangeAnimationDuration(void) const
+	?widgetTapAndHoldFinished@HsScene@@IAEXPAVQGestureEvent@@PAVHsWidgetHost@@@Z @ 591 NONAME ; void HsScene::widgetTapAndHoldFinished(class QGestureEvent *, class HsWidgetHost *)
+	?metaObject@HsPageWallpaper@@UBEPBUQMetaObject@@XZ @ 592 NONAME ; struct QMetaObject const * HsPageWallpaper::metaObject(void) const
+	?tr@HsGui@@SA?AVQString@@PBD0H@Z @ 593 NONAME ; class QString HsGui::tr(char const *, char const *, int)
+	?updatePage@HsDatabase@@QAE_NABVHsPageData@@@Z @ 594 NONAME ; bool HsDatabase::updatePage(class HsPageData const &)
+	?action_uninitialize@HsWidgetHost@@AAEXXZ @ 595 NONAME ; void HsWidgetHost::action_uninitialize(void)
+	??_EHsWallpaperLoader@@UAE@I@Z @ 596 NONAME ; HsWallpaperLoader::~HsWallpaperLoader(unsigned int)
+	??_EHsWallpaper@@UAE@I@Z @ 597 NONAME ; HsWallpaper::~HsWallpaper(unsigned int)
+	?action_connectComponent@HsWidgetHost@@AAEXXZ @ 598 NONAME ; void HsWidgetHost::action_connectComponent(void)
+	?setImage@HsWallpaper@@QAEXABVQString@@@Z @ 599 NONAME ; void HsWallpaper::setImage(class QString const &)
+	?setPageChangeAnimationDuration@HsConfiguration@@QAEXH@Z @ 600 NONAME ; void HsConfiguration::setPageChangeAnimationDuration(int)
+	??0HsSceneData@@QAE@XZ @ 601 NONAME ; HsSceneData::HsSceneData(void)
+	?hasSignal@HsWidgetHost@@AAE_NPBD@Z @ 602 NONAME ; bool HsWidgetHost::hasSignal(char const *)
+	?getStaticMetaObject@HsWidgetHostVisual@@SAABUQMetaObject@@XZ @ 603 NONAME ; struct QMetaObject const & HsWidgetHostVisual::getStaticMetaObject(void)
+	?getStaticMetaObject@HsWallpaper@@SAABUQMetaObject@@XZ @ 604 NONAME ; struct QMetaObject const & HsWallpaper::getStaticMetaObject(void)
+	?trUtf8@HsWallpaper@@SA?AVQString@@PBD0@Z @ 605 NONAME ; class QString HsWallpaper::trUtf8(char const *, char const *)
+	??0HsWidgetHost@@QAE@HPAVQObject@@@Z @ 606 NONAME ; HsWidgetHost::HsWidgetHost(int, class QObject *)
+	?emitWidgetRemoved@HsContentService@@QAEXABVQString@@ABV?$QHash@VQString@@VQVariant@@@@@Z @ 607 NONAME ; void HsContentService::emitWidgetRemoved(class QString const &, class QHash<class QString, class QVariant> const &)
+	?pages@HsScene@@QBE?AV?$QList@PAVHsPage@@@@XZ @ 608 NONAME ; class QList<class HsPage *> HsScene::pages(void) const
+	??1HsConfiguration@@UAE@XZ @ 609 NONAME ; HsConfiguration::~HsConfiguration(void)
+	?trashBin@HsIdleWidget@@QBEPAVHsTrashBinWidget@@XZ @ 610 NONAME ; class HsTrashBinWidget * HsIdleWidget::trashBin(void) const
+	?translationFilename@HsWidgetComponentDescriptor@@QBE?AVQString@@XZ @ 611 NONAME ; class QString HsWidgetComponentDescriptor::translationFilename(void) const
+	?trUtf8@HsConfiguration@@SA?AVQString@@PBD0@Z @ 612 NONAME ; class QString HsConfiguration::trUtf8(char const *, char const *)
+	?instance@HsScene@@SAPAV1@XZ @ 613 NONAME ; class HsScene * HsScene::instance(void)
+	?eventFilter@HsScene@@MAE_NPAVQObject@@PAVQEvent@@@Z @ 614 NONAME ; bool HsScene::eventFilter(class QObject *, class QEvent *)
+	?trUtf8@HsPage@@SA?AVQString@@PBD0H@Z @ 615 NONAME ; class QString HsPage::trUtf8(char const *, char const *, int)
+	?isDefaultPage@HsPage@@QBE_NXZ @ 616 NONAME ; bool HsPage::isDefaultPage(void) const
+	??_EHsDatabase@@UAE@I@Z @ 617 NONAME ; HsDatabase::~HsDatabase(unsigned int)
+	?event_startAndShow@HsWidgetHost@@IAEXXZ @ 618 NONAME ; void HsWidgetHost::event_startAndShow(void)
+	?layoutRect@HsGui@@QBE?AVQRectF@@XZ @ 619 NONAME ; class QRectF HsGui::layoutRect(void) const
+	?trUtf8@HsContentService@@SA?AVQString@@PBD0H@Z @ 620 NONAME ; class QString HsContentService::trUtf8(char const *, char const *, int)
+	?setMinimumWidgetHeight@HsConfiguration@@QAEXM@Z @ 621 NONAME ; void HsConfiguration::setMinimumWidgetHeight(float)
+	?pageTapFinished@HsScene@@IAEXPAVQGestureEvent@@@Z @ 622 NONAME ; void HsScene::pageTapFinished(class QGestureEvent *)
+	?unavailable@HsWidgetComponent@@IAEXXZ @ 623 NONAME ; void HsWidgetComponent::unavailable(void)
+	?isShortcutLabelVisible@HsConfiguration@@QBE_NXZ @ 624 NONAME ; bool HsConfiguration::isShortcutLabelVisible(void) const
+	?setPageChangeZoneReverseAnimationDuration@HsConfiguration@@QAEXH@Z @ 625 NONAME ; void HsConfiguration::setPageChangeZoneReverseAnimationDuration(int)
+	?getStaticMetaObject@HsIdleWidget@@SAABUQMetaObject@@XZ @ 626 NONAME ; struct QMetaObject const & HsIdleWidget::getStaticMetaObject(void)
+	?qt_metacall@HsWidgetHostVisual@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 627 NONAME ; int HsWidgetHostVisual::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?tr@HsDatabase@@SA?AVQString@@PBD0H@Z @ 628 NONAME ; class QString HsDatabase::tr(char const *, char const *, int)
+	?instance@HsWidgetComponentRegistry@@SAPAV1@XZ @ 629 NONAME ; class HsWidgetComponentRegistry * HsWidgetComponentRegistry::instance(void)
+	?serviceXml@HsWidgetComponentDescriptor@@QBE?AVQString@@XZ @ 630 NONAME ; class QString HsWidgetComponentDescriptor::serviceXml(void) const
+	?qt_metacall@HsWallpaperLoader@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 631 NONAME ; int HsWallpaperLoader::qt_metacall(enum QMetaObject::Call, int, void * *)
+	??_EHsSceneWallpaper@@UAE@I@Z @ 632 NONAME ; HsSceneWallpaper::~HsSceneWallpaper(unsigned int)
+	?instance@HsDatabase@@SAPAV1@XZ @ 633 NONAME ; class HsDatabase * HsDatabase::instance(void)
+	?setTranslationFilename@HsWidgetComponentDescriptor@@QAEXABVQString@@@Z @ 634 NONAME ; void HsWidgetComponentDescriptor::setTranslationFilename(class QString const &)
+	?onLoaderFinished@HsWallpaper@@AAEXXZ @ 635 NONAME ; void HsWallpaper::onLoaderFinished(void)
+	?qt_metacall@HsIdleWidget@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 636 NONAME ; int HsIdleWidget::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?addWidget@HsContentService@@QAE_NABVQString@@ABV?$QHash@VQString@@VQVariant@@@@ABVQVariant@@@Z @ 637 NONAME ; bool HsContentService::addWidget(class QString const &, class QHash<class QString, class QVariant> const &, class QVariant const &)
+	?shortcutWidgetTapFeedbackEffect@HsConfiguration@@QBE?AW4InstantEffect@HbFeedback@@XZ @ 638 NONAME ; enum HbFeedback::InstantEffect HsConfiguration::shortcutWidgetTapFeedbackEffect(void) const
+	?widgetMoveFinished@HsScene@@IAEXABVQPointF@@PAVHsWidgetHost@@@Z @ 639 NONAME ; void HsScene::widgetMoveFinished(class QPointF const &, class HsWidgetHost *)
+	?setInstance@HsScene@@SAXPAV1@@Z @ 640 NONAME ; void HsScene::setInstance(class HsScene *)
+	?tr@HsPageVisual@@SA?AVQString@@PBD0H@Z @ 641 NONAME ; class QString HsPageVisual::tr(char const *, char const *, int)
+	??_EHsContentService@@UAE@I@Z @ 642 NONAME ; HsContentService::~HsContentService(unsigned int)
+	?trUtf8@HsDatabase@@SA?AVQString@@PBD0H@Z @ 643 NONAME ; class QString HsDatabase::trUtf8(char const *, char const *, int)
+	?action_hide@HsWidgetHost@@AAEXXZ @ 644 NONAME ; void HsWidgetHost::action_hide(void)
+	?addNewWidget@HsPage@@QAE_NPAVHsWidgetHost@@ABVQPointF@@@Z @ 645 NONAME ; bool HsPage::addNewWidget(class HsWidgetHost *, class QPointF const &)
+	?removePresentation@HsWidgetHost@@QAE_NW4Orientation@Qt@@@Z @ 646 NONAME ; bool HsWidgetHost::removePresentation(enum Qt::Orientation)
+	?staticMetaObject@HsContentService@@2UQMetaObject@@B @ 647 NONAME ; struct QMetaObject const HsContentService::staticMetaObject
+	?tr@HsWidgetHost@@SA?AVQString@@PBD0H@Z @ 648 NONAME ; class QString HsWidgetHost::tr(char const *, char const *, int)
+	?setWidgetRepositionFeedbackEffect@HsConfiguration@@QAEXW4InstantEffect@HbFeedback@@@Z @ 649 NONAME ; void HsConfiguration::setWidgetRepositionFeedbackEffect(enum HbFeedback::InstantEffect)
+	?gestureEvent@HsWidgetHostVisual@@MAEXPAVQGestureEvent@@@Z @ 650 NONAME ; void HsWidgetHostVisual::gestureEvent(class QGestureEvent *)
+	??1HsWidgetOrganizer@@UAE@XZ @ 651 NONAME ; HsWidgetOrganizer::~HsWidgetOrganizer(void)
+	?metaObject@HsBackupRestoreObserver@@UBEPBUQMetaObject@@XZ @ 652 NONAME ; struct QMetaObject const * HsBackupRestoreObserver::metaObject(void) const
+	?instance@HsGui@@SAPAV1@XZ @ 653 NONAME ; class HsGui * HsGui::instance(void)
+	?getStaticMetaObject@HsHostedWidgetFactory@@SAABUQMetaObject@@XZ @ 654 NONAME ; struct QMetaObject const & HsHostedWidgetFactory::getStaticMetaObject(void)
+	?pageIndex@HsPageVisual@@QBEHXZ @ 655 NONAME ; int HsPageVisual::pageIndex(void) const
+	?qt_metacall@HsScene@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 656 NONAME ; int HsScene::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?setExistingImage@HsWallpaper@@IAE_NXZ @ 657 NONAME ; bool HsWallpaper::setExistingImage(void)
+	?setPageChangeFeedbackEffect@HsConfiguration@@QAEXW4InstantEffect@HbFeedback@@@Z @ 658 NONAME ; void HsConfiguration::setPageChangeFeedbackEffect(enum HbFeedback::InstantEffect)
+	?trUtf8@HsHostedWidgetFactory@@SA?AVQString@@PBD0H@Z @ 659 NONAME ; class QString HsHostedWidgetFactory::trUtf8(char const *, char const *, int)
+	?trUtf8@HsConfiguration@@SA?AVQString@@PBD0H@Z @ 660 NONAME ; class QString HsConfiguration::trUtf8(char const *, char const *, int)
+	?minimumWidgetSizeInPixels@HsConfiguration@@QBE?AVQSizeF@@XZ @ 661 NONAME ; class QSizeF HsConfiguration::minimumWidgetSizeInPixels(void) const
+	?sourcePath@HsWallpaperLoaderThread@@QBE?AVQString@@XZ @ 662 NONAME ; class QString HsWallpaperLoaderThread::sourcePath(void) const
+	?event_finished@HsWidgetHost@@IAEXXZ @ 663 NONAME ; void HsWidgetHost::event_finished(void)
+	?widgets@HsPage@@QBE?AV?$QList@PAVHsWidgetHost@@@@XZ @ 664 NONAME ; class QList<class HsWidgetHost *> HsPage::widgets(void) const
+	?setPageMargin@HsConfiguration@@QAEXM@Z @ 665 NONAME ; void HsConfiguration::setPageMargin(float)
+	?parallaxFactor@HsIdleWidget@@QBEMXZ @ 666 NONAME ; float HsIdleWidget::parallaxFactor(void) const
+	?setOnline@HsWidgetHost@@QAEX_N@Z @ 667 NONAME ; void HsWidgetHost::setOnline(bool)
+	?setPreferencesToWidget@HsWidgetHost@@AAE_NXZ @ 668 NONAME ; bool HsWidgetHost::setPreferencesToWidget(void)
+	?setWidgetPickFeedbackEffect@HsConfiguration@@QAEXW4InstantEffect@HbFeedback@@@Z @ 669 NONAME ; void HsConfiguration::setWidgetPickFeedbackEffect(enum HbFeedback::InstantEffect)
+	?getStaticMetaObject@HsPageWallpaper@@SAABUQMetaObject@@XZ @ 670 NONAME ; struct QMetaObject const & HsPageWallpaper::getStaticMetaObject(void)
+	??0HsWidgetHostVisual@@QAE@PAVQGraphicsItem@@@Z @ 671 NONAME ; HsWidgetHostVisual::HsWidgetHostVisual(class QGraphicsItem *)
+	?trUtf8@HsIdleWidget@@SA?AVQString@@PBD0H@Z @ 672 NONAME ; class QString HsIdleWidget::trUtf8(char const *, char const *, int)
+	??0HsContentService@@QAE@PAVQObject@@@Z @ 673 NONAME ; HsContentService::HsContentService(class QObject *)
+	?trUtf8@HsWidgetComponentRegistry@@SA?AVQString@@PBD0H@Z @ 674 NONAME ; class QString HsWidgetComponentRegistry::trUtf8(char const *, char const *, int)
+	?targetPath@HsWallpaperLoaderThread@@QBE?AVQString@@XZ @ 675 NONAME ; class QString HsWallpaperLoaderThread::targetPath(void) const
+	?staticMetaObject@HsWallpaper@@2UQMetaObject@@B @ 676 NONAME ; struct QMetaObject const HsWallpaper::staticMetaObject
+	??_EHsAnchorPointInCenter@@UAE@I@Z @ 677 NONAME ; HsAnchorPointInCenter::~HsAnchorPointInCenter(unsigned int)
+	?trUtf8@HsGui@@SA?AVQString@@PBD0H@Z @ 678 NONAME ; class QString HsGui::trUtf8(char const *, char const *, int)
+	?metaObject@HsPageVisual@@UBEPBUQMetaObject@@XZ @ 679 NONAME ; struct QMetaObject const * HsPageVisual::metaObject(void) const
+	?tr@HsWidgetComponent@@SA?AVQString@@PBD0@Z @ 680 NONAME ; class QString HsWidgetComponent::tr(char const *, char const *)
+	?tr@HsHostedWidgetFactory@@SA?AVQString@@PBD0@Z @ 681 NONAME ; class QString HsHostedWidgetFactory::tr(char const *, char const *)
+	?setBounceEffect@HsConfiguration@@QAEXH@Z @ 682 NONAME ; void HsConfiguration::setBounceEffect(int)
+	??0HsPage@@QAE@PAVQObject@@@Z @ 683 NONAME ; HsPage::HsPage(class QObject *)
+	?qt_metacast@HsDatabase@@UAEPAXPBD@Z @ 684 NONAME ; void * HsDatabase::qt_metacast(char const *)
+	?registerService@HsWidgetComponentRegistry@@AAEXABVCaEntry@@ABVQString@@_N@Z @ 685 NONAME ; void HsWidgetComponentRegistry::registerService(class CaEntry const &, class QString const &, bool)
+	?trUtf8@HsBackupRestoreObserver@@SA?AVQString@@PBD0@Z @ 686 NONAME ; class QString HsBackupRestoreObserver::trUtf8(char const *, char const *)
+	?metaObject@HsWidgetHost@@UBEPBUQMetaObject@@XZ @ 687 NONAME ; struct QMetaObject const * HsWidgetHost::metaObject(void) const
+	?qt_metacast@HsConfiguration@@UAEPAXPBD@Z @ 688 NONAME ; void * HsConfiguration::qt_metacast(char const *)
 
--- a/homescreenapp/hsdomainmodel/eabi/hsdomainmodelu.def	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/hsdomainmodel/eabi/hsdomainmodelu.def	Mon Oct 04 00:07:25 2010 +0300
@@ -260,300 +260,329 @@
 	_ZN17HsWidgetComponentD0Ev @ 259 NONAME
 	_ZN17HsWidgetComponentD1Ev @ 260 NONAME
 	_ZN17HsWidgetComponentD2Ev @ 261 NONAME
-	_ZN18HsWidgetHostVisual10setNewSizeERK6QSizeF @ 262 NONAME
-	_ZN18HsWidgetHostVisual11eventFilterEP7QObjectP6QEvent @ 263 NONAME
-	_ZN18HsWidgetHostVisual11qt_metacallEN11QMetaObject4CallEiPPv @ 264 NONAME
-	_ZN18HsWidgetHostVisual11qt_metacastEPKc @ 265 NONAME
-	_ZN18HsWidgetHostVisual12gestureEventEP13QGestureEvent @ 266 NONAME
-	_ZN18HsWidgetHostVisual12setupEffectsEv @ 267 NONAME
-	_ZN18HsWidgetHostVisual14setVisualModelEP12HsWidgetHost @ 268 NONAME
-	_ZN18HsWidgetHostVisual14setupTouchAreaEv @ 269 NONAME
-	_ZN18HsWidgetHostVisual15startDragEffectEv @ 270 NONAME
-	_ZN18HsWidgetHostVisual15startDropEffectEv @ 271 NONAME
-	_ZN18HsWidgetHostVisual16staticMetaObjectE @ 272 NONAME DATA 16
-	_ZN18HsWidgetHostVisual19getStaticMetaObjectEv @ 273 NONAME
-	_ZN18HsWidgetHostVisual7resizedEv @ 274 NONAME
-	_ZN18HsWidgetHostVisual9setWidgetEP7QObject @ 275 NONAME
-	_ZN18HsWidgetHostVisualC1EP13QGraphicsItem @ 276 NONAME
-	_ZN18HsWidgetHostVisualC2EP13QGraphicsItem @ 277 NONAME
-	_ZN18HsWidgetHostVisualD0Ev @ 278 NONAME
-	_ZN18HsWidgetHostVisualD1Ev @ 279 NONAME
-	_ZN18HsWidgetHostVisualD2Ev @ 280 NONAME
-	_ZN21HsHostedWidgetFactory11qt_metacallEN11QMetaObject4CallEiPPv @ 281 NONAME
-	_ZN21HsHostedWidgetFactory11qt_metacastEPKc @ 282 NONAME
-	_ZN21HsHostedWidgetFactory11setInstanceEPS_ @ 283 NONAME
-	_ZN21HsHostedWidgetFactory12createWidgetERK7QString @ 284 NONAME
-	_ZN21HsHostedWidgetFactory12takeInstanceEv @ 285 NONAME
-	_ZN21HsHostedWidgetFactory16staticMetaObjectE @ 286 NONAME DATA 16
-	_ZN21HsHostedWidgetFactory19getStaticMetaObjectEv @ 287 NONAME
-	_ZN21HsHostedWidgetFactory8instanceEv @ 288 NONAME
-	_ZN21HsHostedWidgetFactory9mInstanceE @ 289 NONAME DATA 4
-	_ZN21HsHostedWidgetFactoryC1EP7QObject @ 290 NONAME
-	_ZN21HsHostedWidgetFactoryC2EP7QObject @ 291 NONAME
-	_ZN21HsHostedWidgetFactoryD0Ev @ 292 NONAME
-	_ZN21HsHostedWidgetFactoryD1Ev @ 293 NONAME
-	_ZN21HsHostedWidgetFactoryD2Ev @ 294 NONAME
-	_ZN23HsBackupRestoreObserver11qt_metacallEN11QMetaObject4CallEiPPv @ 295 NONAME
-	_ZN23HsBackupRestoreObserver11qt_metacastEPKc @ 296 NONAME
-	_ZN23HsBackupRestoreObserver11readyForBUREv @ 297 NONAME
-	_ZN23HsBackupRestoreObserver16staticMetaObjectE @ 298 NONAME DATA 16
-	_ZN23HsBackupRestoreObserver19getStaticMetaObjectEv @ 299 NONAME
-	_ZN23HsBackupRestoreObserver20backupRestoreStartedEv @ 300 NONAME
-	_ZN23HsBackupRestoreObserver22backupRestoreCompletedEv @ 301 NONAME
-	_ZN23HsBackupRestoreObserver26event_backupRestoreStartedEv @ 302 NONAME
-	_ZN23HsBackupRestoreObserver28event_backupRestoreCompletedEv @ 303 NONAME
-	_ZN23HsBackupRestoreObserver8checkBUREv @ 304 NONAME
-	_ZN23HsBackupRestoreObserver8instanceEv @ 305 NONAME
-	_ZN23HsBackupRestoreObserver9mInstanceE @ 306 NONAME DATA 4
-	_ZN23HsBackupRestoreObserverC1EP7QObject @ 307 NONAME
-	_ZN23HsBackupRestoreObserverC2EP7QObject @ 308 NONAME
-	_ZN23HsBackupRestoreObserverD0Ev @ 309 NONAME
-	_ZN23HsBackupRestoreObserverD1Ev @ 310 NONAME
-	_ZN23HsBackupRestoreObserverD2Ev @ 311 NONAME
-	_ZN23HsWallpaperLoaderThread11qt_metacallEN11QMetaObject4CallEiPPv @ 312 NONAME
-	_ZN23HsWallpaperLoaderThread11qt_metacastEPKc @ 313 NONAME
-	_ZN23HsWallpaperLoaderThread16staticMetaObjectE @ 314 NONAME DATA 16
-	_ZN23HsWallpaperLoaderThread19getStaticMetaObjectEv @ 315 NONAME
-	_ZN23HsWallpaperLoaderThread3runEv @ 316 NONAME
-	_ZN23HsWallpaperLoaderThreadC1EP7QObject @ 317 NONAME
-	_ZN23HsWallpaperLoaderThreadC2EP7QObject @ 318 NONAME
-	_ZN23HsWallpaperLoaderThreadD0Ev @ 319 NONAME
-	_ZN23HsWallpaperLoaderThreadD1Ev @ 320 NONAME
-	_ZN23HsWallpaperLoaderThreadD2Ev @ 321 NONAME
-	_ZN25HsWidgetComponentRegistry11qt_metacallEN11QMetaObject4CallEiPPv @ 322 NONAME
-	_ZN25HsWidgetComponentRegistry11qt_metacastEPKc @ 323 NONAME
-	_ZN25HsWidgetComponentRegistry14onEntryChangedERK7CaEntry10ChangeType @ 324 NONAME
-	_ZN25HsWidgetComponentRegistry15registerServiceERK7CaEntryRK7QStringb @ 325 NONAME
-	_ZN25HsWidgetComponentRegistry16handleEntryAddedERK7CaEntryRK7QString @ 326 NONAME
-	_ZN25HsWidgetComponentRegistry16staticMetaObjectE @ 327 NONAME DATA 16
-	_ZN25HsWidgetComponentRegistry18handleEntryRemovedERK7CaEntryRK7QString @ 328 NONAME
-	_ZN25HsWidgetComponentRegistry18handleEntryUpdatedERK7CaEntryRK7QString @ 329 NONAME
-	_ZN25HsWidgetComponentRegistry18uninstallComponentERK27HsWidgetComponentDescriptor @ 330 NONAME
-	_ZN25HsWidgetComponentRegistry19getStaticMetaObjectEv @ 331 NONAME
-	_ZN25HsWidgetComponentRegistry8instanceEv @ 332 NONAME
-	_ZN25HsWidgetComponentRegistry9componentERK7QString @ 333 NONAME
-	_ZN25HsWidgetComponentRegistry9mInstanceE @ 334 NONAME DATA 4
-	_ZN25HsWidgetComponentRegistryC1EP7QObject @ 335 NONAME
-	_ZN25HsWidgetComponentRegistryC2EP7QObject @ 336 NONAME
-	_ZN25HsWidgetComponentRegistryD0Ev @ 337 NONAME
-	_ZN25HsWidgetComponentRegistryD1Ev @ 338 NONAME
-	_ZN25HsWidgetComponentRegistryD2Ev @ 339 NONAME
-	_ZN27HsWidgetComponentDescriptor7isValidEv @ 340 NONAME
-	_ZN5HsGui11orientationEv @ 341 NONAME
-	_ZN5HsGui11qt_metacallEN11QMetaObject4CallEiPPv @ 342 NONAME
-	_ZN5HsGui11qt_metacastEPKc @ 343 NONAME
-	_ZN5HsGui11setInstanceEPS_ @ 344 NONAME
-	_ZN5HsGui11setupIdleUiEv @ 345 NONAME
-	_ZN5HsGui12takeInstanceEv @ 346 NONAME
-	_ZN5HsGui13cleanupIdleUiEv @ 347 NONAME
-	_ZN5HsGui14setOrientationEN2Qt11OrientationE @ 348 NONAME
-	_ZN5HsGui16staticMetaObjectE @ 349 NONAME DATA 16
-	_ZN5HsGui18orientationChangedEN2Qt11OrientationE @ 350 NONAME
-	_ZN5HsGui19getStaticMetaObjectEv @ 351 NONAME
-	_ZN5HsGui19pageChangeAnimationEv @ 352 NONAME
-	_ZN5HsGui20navigateToApplibraryEv @ 353 NONAME
-	_ZN5HsGui21pageCrawlingAnimationEv @ 354 NONAME
-	_ZN5HsGui4showEv @ 355 NONAME
-	_ZN5HsGui8instanceEv @ 356 NONAME
-	_ZN5HsGui9mInstanceE @ 357 NONAME DATA 4
-	_ZN5HsGuiC1EP7QObject @ 358 NONAME
-	_ZN5HsGuiC2EP7QObject @ 359 NONAME
-	_ZN5HsGuiD0Ev @ 360 NONAME
-	_ZN5HsGuiD1Ev @ 361 NONAME
-	_ZN5HsGuiD2Ev @ 362 NONAME
-	_ZN6HsPage10newWidgetsEv @ 363 NONAME
-	_ZN6HsPage11contentRectEN2Qt11OrientationE @ 364 NONAME
-	_ZN6HsPage11contentRectEv @ 365 NONAME
-	_ZN6HsPage11hideWidgetsEv @ 366 NONAME
-	_ZN6HsPage11qt_metacallEN11QMetaObject4CallEiPPv @ 367 NONAME
-	_ZN6HsPage11qt_metacastEPKc @ 368 NONAME
-	_ZN6HsPage11showWidgetsEv @ 369 NONAME
-	_ZN6HsPage12addNewWidgetEP12HsWidgetHostRK7QPointF @ 370 NONAME
-	_ZN6HsPage12removeWidgetEP12HsWidgetHost @ 371 NONAME
-	_ZN6HsPage12setRemovableEb @ 372 NONAME
-	_ZN6HsPage13connectWidgetEP12HsWidgetHost @ 373 NONAME
-	_ZN6HsPage13setDatabaseIdEi @ 374 NONAME
-	_ZN6HsPage13updateZValuesEv @ 375 NONAME
-	_ZN6HsPage14createInstanceERK10HsPageData @ 376 NONAME
-	_ZN6HsPage15contentGeometryEN2Qt11OrientationE @ 377 NONAME
-	_ZN6HsPage15contentGeometryEv @ 378 NONAME
-	_ZN6HsPage15onWidgetFaultedEv @ 379 NONAME
-	_ZN6HsPage15onWidgetResizedEv @ 380 NONAME
-	_ZN6HsPage15resetNewWidgetsEv @ 381 NONAME
-	_ZN6HsPage16disconnectWidgetEP12HsWidgetHost @ 382 NONAME
-	_ZN6HsPage16layoutNewWidgetsEv @ 383 NONAME
-	_ZN6HsPage16onWidgetFinishedEv @ 384 NONAME
-	_ZN6HsPage16staticMetaObjectE @ 385 NONAME DATA 16
-	_ZN6HsPage17addExistingWidgetEP12HsWidgetHost @ 386 NONAME
-	_ZN6HsPage17onWidgetAvailableEv @ 387 NONAME
-	_ZN6HsPage18deleteFromDatabaseEv @ 388 NONAME
-	_ZN6HsPage19getStaticMetaObjectEv @ 389 NONAME
-	_ZN6HsPage19onPageMarginChangedERK7QString @ 390 NONAME
-	_ZN6HsPage19onWidgetUnavailableEv @ 391 NONAME
-	_ZN6HsPage20onOrientationChangedEN2Qt11OrientationE @ 392 NONAME
-	_ZN6HsPage22adjustedWidgetPositionERK6QRectF @ 393 NONAME
-	_ZN6HsPage4loadEv @ 394 NONAME
-	_ZN6HsPage9pageIndexEv @ 395 NONAME
-	_ZN6HsPage9setOnlineEb @ 396 NONAME
-	_ZN6HsPageC1EP7QObject @ 397 NONAME
-	_ZN6HsPageC2EP7QObject @ 398 NONAME
-	_ZN6HsPageD0Ev @ 399 NONAME
-	_ZN6HsPageD1Ev @ 400 NONAME
-	_ZN6HsPageD2Ev @ 401 NONAME
-	_ZN7HsScene10removePageEP6HsPage @ 402 NONAME
-	_ZN7HsScene11eventFilterEP7QObjectP6QEvent @ 403 NONAME
-	_ZN7HsScene11qt_metacallEN11QMetaObject4CallEiPPv @ 404 NONAME
-	_ZN7HsScene11qt_metacastEPKc @ 405 NONAME
-	_ZN7HsScene11setInstanceEPS_ @ 406 NONAME
-	_ZN7HsScene12takeInstanceEv @ 407 NONAME
-	_ZN7HsScene13setActivePageEP6HsPage @ 408 NONAME
-	_ZN7HsScene14pagePanStartedEP13QGestureEvent @ 409 NONAME
-	_ZN7HsScene14pagePanUpdatedEP13QGestureEvent @ 410 NONAME
-	_ZN7HsScene15pagePanFinishedEP13QGestureEvent @ 411 NONAME
-	_ZN7HsScene15pageTapFinishedEP13QGestureEvent @ 412 NONAME
-	_ZN7HsScene15setActiveWidgetEP12HsWidgetHost @ 413 NONAME
-	_ZN7HsScene16staticMetaObjectE @ 414 NONAME DATA 16
-	_ZN7HsScene16widgetTapStartedE7QPointFP12HsWidgetHost @ 415 NONAME
-	_ZN7HsScene17activePageChangedEv @ 416 NONAME
-	_ZN7HsScene17widgetMoveUpdatedERK7QPointFP12HsWidgetHost @ 417 NONAME
-	_ZN7HsScene18setActivePageIndexEi @ 418 NONAME
-	_ZN7HsScene18widgetMoveFinishedERK7QPointFP12HsWidgetHost @ 419 NONAME
-	_ZN7HsScene19getStaticMetaObjectEv @ 420 NONAME
-	_ZN7HsScene22pageTapAndHoldFinishedEP13QGestureEvent @ 421 NONAME
-	_ZN7HsScene24widgetTapAndHoldFinishedEP13QGestureEventP12HsWidgetHost @ 422 NONAME
-	_ZN7HsScene4loadEv @ 423 NONAME
-	_ZN7HsScene7addPageEP6HsPage @ 424 NONAME
-	_ZN7HsScene8instanceEv @ 425 NONAME
-	_ZN7HsScene9mInstanceE @ 426 NONAME DATA 4
-	_ZN7HsScene9setOnlineEb @ 427 NONAME
-	_ZN7HsSceneC1EP7QObject @ 428 NONAME
-	_ZN7HsSceneC2EP7QObject @ 429 NONAME
-	_ZN7HsSceneD0Ev @ 430 NONAME
-	_ZN7HsSceneD1Ev @ 431 NONAME
-	_ZN7HsSceneD2Ev @ 432 NONAME
-	_ZNK10HsDatabase10metaObjectEv @ 433 NONAME
-	_ZNK10HsDatabase12databaseNameEv @ 434 NONAME
-	_ZNK10HsDatabase14connectionNameEv @ 435 NONAME
-	_ZNK10HsDatabase15checkConnectionEv @ 436 NONAME
-	_ZNK11HsWallpaper10metaObjectEv @ 437 NONAME
-	_ZNK11HsWallpaper13rootDirectoryEv @ 438 NONAME
-	_ZNK12HsIdleWidget10metaObjectEv @ 439 NONAME
-	_ZNK12HsIdleWidget14parallaxFactorEv @ 440 NONAME
-	_ZNK12HsIdleWidget6sceneXEv @ 441 NONAME
-	_ZNK12HsPageVisual10metaObjectEv @ 442 NONAME
-	_ZNK12HsPageVisual9pageIndexEv @ 443 NONAME
-	_ZNK12HsWidgetHost10databaseIdEv @ 444 NONAME
-	_ZNK12HsWidgetHost10metaObjectEv @ 445 NONAME
-	_ZNK12HsWidgetHost4pageEv @ 446 NONAME
-	_ZNK12HsWidgetHost6visualEv @ 447 NONAME
-	_ZNK15HsConfiguration10metaObjectEv @ 448 NONAME
-	_ZNK15HsConfiguration24maximumWidgetSizeInUnitsEv @ 449 NONAME
-	_ZNK15HsConfiguration24minimumWidgetSizeInUnitsEv @ 450 NONAME
-	_ZNK15HsConfiguration25maximumWidgetSizeInPixelsEv @ 451 NONAME
-	_ZNK15HsConfiguration25minimumWidgetSizeInPixelsEv @ 452 NONAME
-	_ZNK15HsPageWallpaper10metaObjectEv @ 453 NONAME
-	_ZNK15HsPageWallpaper18wallpaperDirectoryEv @ 454 NONAME
-	_ZNK16HsContentService10metaObjectEv @ 455 NONAME
-	_ZNK16HsSceneWallpaper10metaObjectEv @ 456 NONAME
-	_ZNK16HsSceneWallpaper18wallpaperDirectoryEv @ 457 NONAME
-	_ZNK17HsShortcutService10metaObjectEv @ 458 NONAME
-	_ZNK17HsWallpaperLoader10metaObjectEv @ 459 NONAME
-	_ZNK17HsWidgetComponent10metaObjectEv @ 460 NONAME
-	_ZNK17HsWidgetComponent11isAvailableEv @ 461 NONAME
-	_ZNK17HsWidgetComponent3uriEv @ 462 NONAME
-	_ZNK17HsWidgetComponent8rootPathEv @ 463 NONAME
-	_ZNK18HsWidgetHostVisual10metaObjectEv @ 464 NONAME
-	_ZNK18HsWidgetHostVisual11visualModelEv @ 465 NONAME
-	_ZNK18HsWidgetHostVisual5shapeEv @ 466 NONAME
-	_ZNK21HsHostedWidgetFactory10metaObjectEv @ 467 NONAME
-	_ZNK23HsBackupRestoreObserver10metaObjectEv @ 468 NONAME
-	_ZNK23HsWallpaperLoaderThread10metaObjectEv @ 469 NONAME
-	_ZNK25HsWidgetComponentRegistry10metaObjectEv @ 470 NONAME
-	_ZNK5HsGui10idleWidgetEv @ 471 NONAME
-	_ZNK5HsGui10layoutRectEv @ 472 NONAME
-	_ZNK5HsGui10metaObjectEv @ 473 NONAME
-	_ZNK5HsGui8idleViewEv @ 474 NONAME
-	_ZNK6HsPage10databaseIdEv @ 475 NONAME
-	_ZNK6HsPage10metaObjectEv @ 476 NONAME
-	_ZNK6HsPage11isRemovableEv @ 477 NONAME
-	_ZNK6HsPage12isActivePageEv @ 478 NONAME
-	_ZNK6HsPage13isDefaultPageEv @ 479 NONAME
-	_ZNK6HsPage6visualEv @ 480 NONAME
-	_ZNK6HsPage7widgetsEv @ 481 NONAME
-	_ZNK6HsPage9wallpaperEv @ 482 NONAME
-	_ZNK7HsScene10activePageEv @ 483 NONAME
-	_ZNK7HsScene10databaseIdEv @ 484 NONAME
-	_ZNK7HsScene10metaObjectEv @ 485 NONAME
-	_ZNK7HsScene12activeWidgetEv @ 486 NONAME
-	_ZNK7HsScene15activePageIndexEv @ 487 NONAME
-	_ZNK7HsScene5pagesEv @ 488 NONAME
-	_ZNK7HsScene8isOnlineEv @ 489 NONAME
-	_ZNK7HsScene9wallpaperEv @ 490 NONAME
-	_ZTI10HsDatabase @ 491 NONAME
-	_ZTI11HsWallpaper @ 492 NONAME
-	_ZTI12HsIdleWidget @ 493 NONAME
-	_ZTI12HsPageVisual @ 494 NONAME
-	_ZTI12HsWidgetHost @ 495 NONAME
-	_ZTI15HsConfiguration @ 496 NONAME
-	_ZTI15HsPageWallpaper @ 497 NONAME
-	_ZTI16HsContentService @ 498 NONAME
-	_ZTI16HsSceneWallpaper @ 499 NONAME
-	_ZTI17HsShortcutService @ 500 NONAME
-	_ZTI17HsWallpaperLoader @ 501 NONAME
-	_ZTI17HsWidgetComponent @ 502 NONAME
-	_ZTI18HsWidgetHostVisual @ 503 NONAME
-	_ZTI21HsHostedWidgetFactory @ 504 NONAME
-	_ZTI23HsBackupRestoreObserver @ 505 NONAME
-	_ZTI23HsWallpaperLoaderThread @ 506 NONAME
-	_ZTI25HsWidgetComponentRegistry @ 507 NONAME
-	_ZTI5HsGui @ 508 NONAME
-	_ZTI6HsPage @ 509 NONAME
-	_ZTI7HsScene @ 510 NONAME
-	_ZTV10HsDatabase @ 511 NONAME
-	_ZTV11HsWallpaper @ 512 NONAME
-	_ZTV12HsIdleWidget @ 513 NONAME
-	_ZTV12HsPageVisual @ 514 NONAME
-	_ZTV12HsWidgetHost @ 515 NONAME
-	_ZTV15HsConfiguration @ 516 NONAME
-	_ZTV15HsPageWallpaper @ 517 NONAME
-	_ZTV16HsContentService @ 518 NONAME
-	_ZTV16HsSceneWallpaper @ 519 NONAME
-	_ZTV17HsShortcutService @ 520 NONAME
-	_ZTV17HsWallpaperLoader @ 521 NONAME
-	_ZTV17HsWidgetComponent @ 522 NONAME
-	_ZTV18HsWidgetHostVisual @ 523 NONAME
-	_ZTV21HsHostedWidgetFactory @ 524 NONAME
-	_ZTV23HsBackupRestoreObserver @ 525 NONAME
-	_ZTV23HsWallpaperLoaderThread @ 526 NONAME
-	_ZTV25HsWidgetComponentRegistry @ 527 NONAME
-	_ZTV5HsGui @ 528 NONAME
-	_ZTV6HsPage @ 529 NONAME
-	_ZTV7HsScene @ 530 NONAME
-	_ZThn16_N11HsWallpaperD0Ev @ 531 NONAME
-	_ZThn16_N11HsWallpaperD1Ev @ 532 NONAME
-	_ZThn16_N12HsIdleWidget11setGeometryERK6QRectF @ 533 NONAME
-	_ZThn16_N12HsIdleWidgetD0Ev @ 534 NONAME
-	_ZThn16_N12HsIdleWidgetD1Ev @ 535 NONAME
-	_ZThn16_N12HsPageVisual11setGeometryERK6QRectF @ 536 NONAME
-	_ZThn16_N12HsPageVisualD0Ev @ 537 NONAME
-	_ZThn16_N12HsPageVisualD1Ev @ 538 NONAME
-	_ZThn16_N15HsPageWallpaperD0Ev @ 539 NONAME
-	_ZThn16_N15HsPageWallpaperD1Ev @ 540 NONAME
-	_ZThn16_N16HsSceneWallpaperD0Ev @ 541 NONAME
-	_ZThn16_N16HsSceneWallpaperD1Ev @ 542 NONAME
-	_ZThn16_N18HsWidgetHostVisualD0Ev @ 543 NONAME
-	_ZThn16_N18HsWidgetHostVisualD1Ev @ 544 NONAME
-	_ZThn8_N11HsWallpaperD0Ev @ 545 NONAME
-	_ZThn8_N11HsWallpaperD1Ev @ 546 NONAME
-	_ZThn8_N12HsIdleWidgetD0Ev @ 547 NONAME
-	_ZThn8_N12HsIdleWidgetD1Ev @ 548 NONAME
-	_ZThn8_N12HsPageVisualD0Ev @ 549 NONAME
-	_ZThn8_N12HsPageVisualD1Ev @ 550 NONAME
-	_ZThn8_N15HsPageWallpaperD0Ev @ 551 NONAME
-	_ZThn8_N15HsPageWallpaperD1Ev @ 552 NONAME
-	_ZThn8_N16HsSceneWallpaperD0Ev @ 553 NONAME
-	_ZThn8_N16HsSceneWallpaperD1Ev @ 554 NONAME
-	_ZThn8_N18HsWidgetHostVisualD0Ev @ 555 NONAME
-	_ZThn8_N18HsWidgetHostVisualD1Ev @ 556 NONAME
-	_ZThn8_NK18HsWidgetHostVisual5shapeEv @ 557 NONAME
+	_ZN17HsWidgetOrganizer11getPositionERK6QSizeF @ 262 NONAME
+	_ZN17HsWidgetOrganizer11initAnchorsEv @ 263 NONAME
+	_ZN17HsWidgetOrganizer11markAnchorsERK6QRectF @ 264 NONAME
+	_ZN17HsWidgetOrganizer11searchSpaceENS_10SearchModeE7QPointFi @ 265 NONAME
+	_ZN17HsWidgetOrganizer16convertToAnchorsEi @ 266 NONAME
+	_ZN17HsWidgetOrganizer18checkExistingRectsERK5QListI6QRectFE @ 267 NONAME
+	_ZN17HsWidgetOrganizer18getAnchorListIndexERK7QPointF @ 268 NONAME
+	_ZN17HsWidgetOrganizer20getAnchorCoordinatesEi @ 269 NONAME
+	_ZN17HsWidgetOrganizer22searchPositionRowByRowE7QPointFii @ 270 NONAME
+	_ZN17HsWidgetOrganizer28searchPositionColumnByColumnE7QPointFii @ 271 NONAME
+	_ZN17HsWidgetOrganizer7convertERK6QRectFRK5QListIS0_ES6_RK7QPointF @ 272 NONAME
+	_ZN17HsWidgetOrganizer9sortRectsENS_8SortModeERK4QMapIi6QRectFE @ 273 NONAME
+	_ZN17HsWidgetOrganizerC1EiN15HsConfiguration29WidgetOrganizerSearchSequenceE @ 274 NONAME
+	_ZN17HsWidgetOrganizerC2EiN15HsConfiguration29WidgetOrganizerSearchSequenceE @ 275 NONAME
+	_ZN17HsWidgetOrganizerD0Ev @ 276 NONAME
+	_ZN17HsWidgetOrganizerD1Ev @ 277 NONAME
+	_ZN17HsWidgetOrganizerD2Ev @ 278 NONAME
+	_ZN18HsWidgetHostVisual10setNewSizeERK6QSizeF @ 279 NONAME
+	_ZN18HsWidgetHostVisual11eventFilterEP7QObjectP6QEvent @ 280 NONAME
+	_ZN18HsWidgetHostVisual11qt_metacallEN11QMetaObject4CallEiPPv @ 281 NONAME
+	_ZN18HsWidgetHostVisual11qt_metacastEPKc @ 282 NONAME
+	_ZN18HsWidgetHostVisual12gestureEventEP13QGestureEvent @ 283 NONAME
+	_ZN18HsWidgetHostVisual12setupEffectsEv @ 284 NONAME
+	_ZN18HsWidgetHostVisual14setVisualModelEP12HsWidgetHost @ 285 NONAME
+	_ZN18HsWidgetHostVisual14setupTouchAreaEv @ 286 NONAME
+	_ZN18HsWidgetHostVisual15startDragEffectEv @ 287 NONAME
+	_ZN18HsWidgetHostVisual15startDropEffectEv @ 288 NONAME
+	_ZN18HsWidgetHostVisual16staticMetaObjectE @ 289 NONAME DATA 16
+	_ZN18HsWidgetHostVisual19getStaticMetaObjectEv @ 290 NONAME
+	_ZN18HsWidgetHostVisual7resizedEv @ 291 NONAME
+	_ZN18HsWidgetHostVisual9setWidgetEP7QObject @ 292 NONAME
+	_ZN18HsWidgetHostVisualC1EP13QGraphicsItem @ 293 NONAME
+	_ZN18HsWidgetHostVisualC2EP13QGraphicsItem @ 294 NONAME
+	_ZN18HsWidgetHostVisualD0Ev @ 295 NONAME
+	_ZN18HsWidgetHostVisualD1Ev @ 296 NONAME
+	_ZN18HsWidgetHostVisualD2Ev @ 297 NONAME
+	_ZN21HsAnchorPointInCenter7convertERK6QRectFRK5QListIS0_ES6_RK7QPointF @ 298 NONAME
+	_ZN21HsHostedWidgetFactory11qt_metacallEN11QMetaObject4CallEiPPv @ 299 NONAME
+	_ZN21HsHostedWidgetFactory11qt_metacastEPKc @ 300 NONAME
+	_ZN21HsHostedWidgetFactory11setInstanceEPS_ @ 301 NONAME
+	_ZN21HsHostedWidgetFactory12createWidgetERK7QString @ 302 NONAME
+	_ZN21HsHostedWidgetFactory12takeInstanceEv @ 303 NONAME
+	_ZN21HsHostedWidgetFactory16staticMetaObjectE @ 304 NONAME DATA 16
+	_ZN21HsHostedWidgetFactory19getStaticMetaObjectEv @ 305 NONAME
+	_ZN21HsHostedWidgetFactory8instanceEv @ 306 NONAME
+	_ZN21HsHostedWidgetFactory9mInstanceE @ 307 NONAME DATA 4
+	_ZN21HsHostedWidgetFactoryC1EP7QObject @ 308 NONAME
+	_ZN21HsHostedWidgetFactoryC2EP7QObject @ 309 NONAME
+	_ZN21HsHostedWidgetFactoryD0Ev @ 310 NONAME
+	_ZN21HsHostedWidgetFactoryD1Ev @ 311 NONAME
+	_ZN21HsHostedWidgetFactoryD2Ev @ 312 NONAME
+	_ZN23HsBackupRestoreObserver11qt_metacallEN11QMetaObject4CallEiPPv @ 313 NONAME
+	_ZN23HsBackupRestoreObserver11qt_metacastEPKc @ 314 NONAME
+	_ZN23HsBackupRestoreObserver11readyForBUREv @ 315 NONAME
+	_ZN23HsBackupRestoreObserver16staticMetaObjectE @ 316 NONAME DATA 16
+	_ZN23HsBackupRestoreObserver19getStaticMetaObjectEv @ 317 NONAME
+	_ZN23HsBackupRestoreObserver20backupRestoreStartedEv @ 318 NONAME
+	_ZN23HsBackupRestoreObserver22backupRestoreCompletedEv @ 319 NONAME
+	_ZN23HsBackupRestoreObserver26event_backupRestoreStartedEv @ 320 NONAME
+	_ZN23HsBackupRestoreObserver28event_backupRestoreCompletedEv @ 321 NONAME
+	_ZN23HsBackupRestoreObserver8checkBUREv @ 322 NONAME
+	_ZN23HsBackupRestoreObserver8instanceEv @ 323 NONAME
+	_ZN23HsBackupRestoreObserver9mInstanceE @ 324 NONAME DATA 4
+	_ZN23HsBackupRestoreObserverC1EP7QObject @ 325 NONAME
+	_ZN23HsBackupRestoreObserverC2EP7QObject @ 326 NONAME
+	_ZN23HsBackupRestoreObserverD0Ev @ 327 NONAME
+	_ZN23HsBackupRestoreObserverD1Ev @ 328 NONAME
+	_ZN23HsBackupRestoreObserverD2Ev @ 329 NONAME
+	_ZN23HsWallpaperLoaderThread11qt_metacallEN11QMetaObject4CallEiPPv @ 330 NONAME
+	_ZN23HsWallpaperLoaderThread11qt_metacastEPKc @ 331 NONAME
+	_ZN23HsWallpaperLoaderThread16staticMetaObjectE @ 332 NONAME DATA 16
+	_ZN23HsWallpaperLoaderThread19getStaticMetaObjectEv @ 333 NONAME
+	_ZN23HsWallpaperLoaderThread3runEv @ 334 NONAME
+	_ZN23HsWallpaperLoaderThreadC1EP7QObject @ 335 NONAME
+	_ZN23HsWallpaperLoaderThreadC2EP7QObject @ 336 NONAME
+	_ZN23HsWallpaperLoaderThreadD0Ev @ 337 NONAME
+	_ZN23HsWallpaperLoaderThreadD1Ev @ 338 NONAME
+	_ZN23HsWallpaperLoaderThreadD2Ev @ 339 NONAME
+	_ZN25HsWidgetComponentRegistry11qt_metacallEN11QMetaObject4CallEiPPv @ 340 NONAME
+	_ZN25HsWidgetComponentRegistry11qt_metacastEPKc @ 341 NONAME
+	_ZN25HsWidgetComponentRegistry14onEntryChangedERK7CaEntry10ChangeType @ 342 NONAME
+	_ZN25HsWidgetComponentRegistry15registerServiceERK7CaEntryRK7QStringb @ 343 NONAME
+	_ZN25HsWidgetComponentRegistry16handleEntryAddedERK7CaEntryRK7QString @ 344 NONAME
+	_ZN25HsWidgetComponentRegistry16staticMetaObjectE @ 345 NONAME DATA 16
+	_ZN25HsWidgetComponentRegistry18handleEntryRemovedERK7CaEntryRK7QString @ 346 NONAME
+	_ZN25HsWidgetComponentRegistry18handleEntryUpdatedERK7CaEntryRK7QString @ 347 NONAME
+	_ZN25HsWidgetComponentRegistry18uninstallComponentERK27HsWidgetComponentDescriptor @ 348 NONAME
+	_ZN25HsWidgetComponentRegistry19getStaticMetaObjectEv @ 349 NONAME
+	_ZN25HsWidgetComponentRegistry8instanceEv @ 350 NONAME
+	_ZN25HsWidgetComponentRegistry9componentERK7QString @ 351 NONAME
+	_ZN25HsWidgetComponentRegistry9mInstanceE @ 352 NONAME DATA 4
+	_ZN25HsWidgetComponentRegistryC1EP7QObject @ 353 NONAME
+	_ZN25HsWidgetComponentRegistryC2EP7QObject @ 354 NONAME
+	_ZN25HsWidgetComponentRegistryD0Ev @ 355 NONAME
+	_ZN25HsWidgetComponentRegistryD1Ev @ 356 NONAME
+	_ZN25HsWidgetComponentRegistryD2Ev @ 357 NONAME
+	_ZN26HsAnchorPointInBottomRight7convertERK6QRectFRK5QListIS0_ES6_RK7QPointF @ 358 NONAME
+	_ZN27HsWidgetComponentDescriptor7isValidEv @ 359 NONAME
+	_ZN30HsWidgetPositioningOnWidgetAdd11setInstanceEPS_ @ 360 NONAME
+	_ZN30HsWidgetPositioningOnWidgetAdd8instanceEv @ 361 NONAME
+	_ZN30HsWidgetPositioningOnWidgetAdd9mInstanceE @ 362 NONAME DATA 4
+	_ZN5HsGui11orientationEv @ 363 NONAME
+	_ZN5HsGui11qt_metacallEN11QMetaObject4CallEiPPv @ 364 NONAME
+	_ZN5HsGui11qt_metacastEPKc @ 365 NONAME
+	_ZN5HsGui11setInstanceEPS_ @ 366 NONAME
+	_ZN5HsGui11setupIdleUiEv @ 367 NONAME
+	_ZN5HsGui12takeInstanceEv @ 368 NONAME
+	_ZN5HsGui13cleanupIdleUiEv @ 369 NONAME
+	_ZN5HsGui14setOrientationEN2Qt11OrientationE @ 370 NONAME
+	_ZN5HsGui16staticMetaObjectE @ 371 NONAME DATA 16
+	_ZN5HsGui18orientationChangedEN2Qt11OrientationE @ 372 NONAME
+	_ZN5HsGui19getStaticMetaObjectEv @ 373 NONAME
+	_ZN5HsGui19pageChangeAnimationEv @ 374 NONAME
+	_ZN5HsGui20navigateToApplibraryEv @ 375 NONAME
+	_ZN5HsGui21pageCrawlingAnimationEv @ 376 NONAME
+	_ZN5HsGui4showEv @ 377 NONAME
+	_ZN5HsGui8instanceEv @ 378 NONAME
+	_ZN5HsGui9mInstanceE @ 379 NONAME DATA 4
+	_ZN5HsGuiC1EP7QObject @ 380 NONAME
+	_ZN5HsGuiC2EP7QObject @ 381 NONAME
+	_ZN5HsGuiD0Ev @ 382 NONAME
+	_ZN5HsGuiD1Ev @ 383 NONAME
+	_ZN5HsGuiD2Ev @ 384 NONAME
+	_ZN6HsPage10newWidgetsEv @ 385 NONAME
+	_ZN6HsPage11contentRectEN2Qt11OrientationE @ 386 NONAME
+	_ZN6HsPage11contentRectEv @ 387 NONAME
+	_ZN6HsPage11hideWidgetsEv @ 388 NONAME
+	_ZN6HsPage11qt_metacallEN11QMetaObject4CallEiPPv @ 389 NONAME
+	_ZN6HsPage11qt_metacastEPKc @ 390 NONAME
+	_ZN6HsPage11showWidgetsEv @ 391 NONAME
+	_ZN6HsPage12addNewWidgetEP12HsWidgetHostRK7QPointF @ 392 NONAME
+	_ZN6HsPage12removeWidgetEP12HsWidgetHost @ 393 NONAME
+	_ZN6HsPage12setRemovableEb @ 394 NONAME
+	_ZN6HsPage13connectWidgetEP12HsWidgetHost @ 395 NONAME
+	_ZN6HsPage13setDatabaseIdEi @ 396 NONAME
+	_ZN6HsPage13updateZValuesEv @ 397 NONAME
+	_ZN6HsPage14createInstanceERK10HsPageData @ 398 NONAME
+	_ZN6HsPage15contentGeometryEN2Qt11OrientationE @ 399 NONAME
+	_ZN6HsPage15contentGeometryEv @ 400 NONAME
+	_ZN6HsPage15onWidgetFaultedEv @ 401 NONAME
+	_ZN6HsPage15onWidgetResizedEv @ 402 NONAME
+	_ZN6HsPage15resetNewWidgetsEv @ 403 NONAME
+	_ZN6HsPage16disconnectWidgetEP12HsWidgetHost @ 404 NONAME
+	_ZN6HsPage16layoutNewWidgetsEv @ 405 NONAME
+	_ZN6HsPage16onWidgetFinishedEv @ 406 NONAME
+	_ZN6HsPage16staticMetaObjectE @ 407 NONAME DATA 16
+	_ZN6HsPage17addExistingWidgetEP12HsWidgetHost @ 408 NONAME
+	_ZN6HsPage17onWidgetAvailableEv @ 409 NONAME
+	_ZN6HsPage18deleteFromDatabaseEv @ 410 NONAME
+	_ZN6HsPage19getStaticMetaObjectEv @ 411 NONAME
+	_ZN6HsPage19onPageMarginChangedERK7QString @ 412 NONAME
+	_ZN6HsPage19onWidgetUnavailableEv @ 413 NONAME
+	_ZN6HsPage20onOrientationChangedEN2Qt11OrientationE @ 414 NONAME
+	_ZN6HsPage22adjustedWidgetPositionERK6QRectF @ 415 NONAME
+	_ZN6HsPage4loadEv @ 416 NONAME
+	_ZN6HsPage9pageIndexEv @ 417 NONAME
+	_ZN6HsPage9setOnlineEb @ 418 NONAME
+	_ZN6HsPageC1EP7QObject @ 419 NONAME
+	_ZN6HsPageC2EP7QObject @ 420 NONAME
+	_ZN6HsPageD0Ev @ 421 NONAME
+	_ZN6HsPageD1Ev @ 422 NONAME
+	_ZN6HsPageD2Ev @ 423 NONAME
+	_ZN7HsScene10removePageEP6HsPage @ 424 NONAME
+	_ZN7HsScene11eventFilterEP7QObjectP6QEvent @ 425 NONAME
+	_ZN7HsScene11qt_metacallEN11QMetaObject4CallEiPPv @ 426 NONAME
+	_ZN7HsScene11qt_metacastEPKc @ 427 NONAME
+	_ZN7HsScene11setInstanceEPS_ @ 428 NONAME
+	_ZN7HsScene12takeInstanceEv @ 429 NONAME
+	_ZN7HsScene13setActivePageEP6HsPage @ 430 NONAME
+	_ZN7HsScene14pagePanStartedEP13QGestureEvent @ 431 NONAME
+	_ZN7HsScene14pagePanUpdatedEP13QGestureEvent @ 432 NONAME
+	_ZN7HsScene15pagePanFinishedEP13QGestureEvent @ 433 NONAME
+	_ZN7HsScene15pageTapFinishedEP13QGestureEvent @ 434 NONAME
+	_ZN7HsScene15setActiveWidgetEP12HsWidgetHost @ 435 NONAME
+	_ZN7HsScene16staticMetaObjectE @ 436 NONAME DATA 16
+	_ZN7HsScene16widgetTapStartedE7QPointFP12HsWidgetHost @ 437 NONAME
+	_ZN7HsScene17activePageChangedEv @ 438 NONAME
+	_ZN7HsScene17widgetMoveUpdatedERK7QPointFP12HsWidgetHost @ 439 NONAME
+	_ZN7HsScene18setActivePageIndexEi @ 440 NONAME
+	_ZN7HsScene18widgetMoveFinishedERK7QPointFP12HsWidgetHost @ 441 NONAME
+	_ZN7HsScene19getStaticMetaObjectEv @ 442 NONAME
+	_ZN7HsScene22pageTapAndHoldFinishedEP13QGestureEvent @ 443 NONAME
+	_ZN7HsScene24widgetTapAndHoldFinishedEP13QGestureEventP12HsWidgetHost @ 444 NONAME
+	_ZN7HsScene4loadEv @ 445 NONAME
+	_ZN7HsScene7addPageEP6HsPage @ 446 NONAME
+	_ZN7HsScene8instanceEv @ 447 NONAME
+	_ZN7HsScene9mInstanceE @ 448 NONAME DATA 4
+	_ZN7HsScene9setOnlineEb @ 449 NONAME
+	_ZN7HsSceneC1EP7QObject @ 450 NONAME
+	_ZN7HsSceneC2EP7QObject @ 451 NONAME
+	_ZN7HsSceneD0Ev @ 452 NONAME
+	_ZN7HsSceneD1Ev @ 453 NONAME
+	_ZN7HsSceneD2Ev @ 454 NONAME
+	_ZNK10HsDatabase10metaObjectEv @ 455 NONAME
+	_ZNK10HsDatabase12databaseNameEv @ 456 NONAME
+	_ZNK10HsDatabase14connectionNameEv @ 457 NONAME
+	_ZNK10HsDatabase15checkConnectionEv @ 458 NONAME
+	_ZNK11HsWallpaper10metaObjectEv @ 459 NONAME
+	_ZNK11HsWallpaper13rootDirectoryEv @ 460 NONAME
+	_ZNK12HsIdleWidget10metaObjectEv @ 461 NONAME
+	_ZNK12HsIdleWidget14parallaxFactorEv @ 462 NONAME
+	_ZNK12HsIdleWidget6sceneXEv @ 463 NONAME
+	_ZNK12HsPageVisual10metaObjectEv @ 464 NONAME
+	_ZNK12HsPageVisual9pageIndexEv @ 465 NONAME
+	_ZNK12HsWidgetHost10databaseIdEv @ 466 NONAME
+	_ZNK12HsWidgetHost10metaObjectEv @ 467 NONAME
+	_ZNK12HsWidgetHost4pageEv @ 468 NONAME
+	_ZNK12HsWidgetHost6visualEv @ 469 NONAME
+	_ZNK15HsConfiguration10metaObjectEv @ 470 NONAME
+	_ZNK15HsConfiguration24maximumWidgetSizeInUnitsEv @ 471 NONAME
+	_ZNK15HsConfiguration24minimumWidgetSizeInUnitsEv @ 472 NONAME
+	_ZNK15HsConfiguration25maximumWidgetSizeInPixelsEv @ 473 NONAME
+	_ZNK15HsConfiguration25minimumWidgetSizeInPixelsEv @ 474 NONAME
+	_ZNK15HsPageWallpaper10metaObjectEv @ 475 NONAME
+	_ZNK15HsPageWallpaper18wallpaperDirectoryEv @ 476 NONAME
+	_ZNK16HsContentService10metaObjectEv @ 477 NONAME
+	_ZNK16HsSceneWallpaper10metaObjectEv @ 478 NONAME
+	_ZNK16HsSceneWallpaper18wallpaperDirectoryEv @ 479 NONAME
+	_ZNK17HsShortcutService10metaObjectEv @ 480 NONAME
+	_ZNK17HsWallpaperLoader10metaObjectEv @ 481 NONAME
+	_ZNK17HsWidgetComponent10metaObjectEv @ 482 NONAME
+	_ZNK17HsWidgetComponent11isAvailableEv @ 483 NONAME
+	_ZNK17HsWidgetComponent3uriEv @ 484 NONAME
+	_ZNK17HsWidgetComponent8rootPathEv @ 485 NONAME
+	_ZNK18HsWidgetHostVisual10metaObjectEv @ 486 NONAME
+	_ZNK18HsWidgetHostVisual11visualModelEv @ 487 NONAME
+	_ZNK18HsWidgetHostVisual5shapeEv @ 488 NONAME
+	_ZNK21HsHostedWidgetFactory10metaObjectEv @ 489 NONAME
+	_ZNK23HsBackupRestoreObserver10metaObjectEv @ 490 NONAME
+	_ZNK23HsWallpaperLoaderThread10metaObjectEv @ 491 NONAME
+	_ZNK25HsWidgetComponentRegistry10metaObjectEv @ 492 NONAME
+	_ZNK5HsGui10idleWidgetEv @ 493 NONAME
+	_ZNK5HsGui10layoutRectEv @ 494 NONAME
+	_ZNK5HsGui10metaObjectEv @ 495 NONAME
+	_ZNK5HsGui8idleViewEv @ 496 NONAME
+	_ZNK6HsPage10databaseIdEv @ 497 NONAME
+	_ZNK6HsPage10metaObjectEv @ 498 NONAME
+	_ZNK6HsPage11isRemovableEv @ 499 NONAME
+	_ZNK6HsPage12isActivePageEv @ 500 NONAME
+	_ZNK6HsPage13isDefaultPageEv @ 501 NONAME
+	_ZNK6HsPage6visualEv @ 502 NONAME
+	_ZNK6HsPage7widgetsEv @ 503 NONAME
+	_ZNK6HsPage9wallpaperEv @ 504 NONAME
+	_ZNK7HsScene10activePageEv @ 505 NONAME
+	_ZNK7HsScene10databaseIdEv @ 506 NONAME
+	_ZNK7HsScene10metaObjectEv @ 507 NONAME
+	_ZNK7HsScene12activeWidgetEv @ 508 NONAME
+	_ZNK7HsScene15activePageIndexEv @ 509 NONAME
+	_ZNK7HsScene5pagesEv @ 510 NONAME
+	_ZNK7HsScene8isOnlineEv @ 511 NONAME
+	_ZNK7HsScene9wallpaperEv @ 512 NONAME
+	_ZTI10HsDatabase @ 513 NONAME
+	_ZTI11HsWallpaper @ 514 NONAME
+	_ZTI12HsIdleWidget @ 515 NONAME
+	_ZTI12HsPageVisual @ 516 NONAME
+	_ZTI12HsWidgetHost @ 517 NONAME
+	_ZTI15HsConfiguration @ 518 NONAME
+	_ZTI15HsPageWallpaper @ 519 NONAME
+	_ZTI16HsContentService @ 520 NONAME
+	_ZTI16HsSceneWallpaper @ 521 NONAME
+	_ZTI17HsShortcutService @ 522 NONAME
+	_ZTI17HsWallpaperLoader @ 523 NONAME
+	_ZTI17HsWidgetComponent @ 524 NONAME
+	_ZTI17HsWidgetOrganizer @ 525 NONAME
+	_ZTI18HsWidgetHostVisual @ 526 NONAME
+	_ZTI21HsAnchorPointInCenter @ 527 NONAME
+	_ZTI21HsHostedWidgetFactory @ 528 NONAME
+	_ZTI23HsBackupRestoreObserver @ 529 NONAME
+	_ZTI23HsWallpaperLoaderThread @ 530 NONAME
+	_ZTI25HsWidgetComponentRegistry @ 531 NONAME
+	_ZTI26HsAnchorPointInBottomRight @ 532 NONAME
+	_ZTI30HsWidgetPositioningOnWidgetAdd @ 533 NONAME
+	_ZTI5HsGui @ 534 NONAME
+	_ZTI6HsPage @ 535 NONAME
+	_ZTI7HsScene @ 536 NONAME
+	_ZTV10HsDatabase @ 537 NONAME
+	_ZTV11HsWallpaper @ 538 NONAME
+	_ZTV12HsIdleWidget @ 539 NONAME
+	_ZTV12HsPageVisual @ 540 NONAME
+	_ZTV12HsWidgetHost @ 541 NONAME
+	_ZTV15HsConfiguration @ 542 NONAME
+	_ZTV15HsPageWallpaper @ 543 NONAME
+	_ZTV16HsContentService @ 544 NONAME
+	_ZTV16HsSceneWallpaper @ 545 NONAME
+	_ZTV17HsShortcutService @ 546 NONAME
+	_ZTV17HsWallpaperLoader @ 547 NONAME
+	_ZTV17HsWidgetComponent @ 548 NONAME
+	_ZTV17HsWidgetOrganizer @ 549 NONAME
+	_ZTV18HsWidgetHostVisual @ 550 NONAME
+	_ZTV21HsAnchorPointInCenter @ 551 NONAME
+	_ZTV21HsHostedWidgetFactory @ 552 NONAME
+	_ZTV23HsBackupRestoreObserver @ 553 NONAME
+	_ZTV23HsWallpaperLoaderThread @ 554 NONAME
+	_ZTV25HsWidgetComponentRegistry @ 555 NONAME
+	_ZTV26HsAnchorPointInBottomRight @ 556 NONAME
+	_ZTV5HsGui @ 557 NONAME
+	_ZTV6HsPage @ 558 NONAME
+	_ZTV7HsScene @ 559 NONAME
+	_ZThn16_N11HsWallpaperD0Ev @ 560 NONAME
+	_ZThn16_N11HsWallpaperD1Ev @ 561 NONAME
+	_ZThn16_N12HsIdleWidget11setGeometryERK6QRectF @ 562 NONAME
+	_ZThn16_N12HsIdleWidgetD0Ev @ 563 NONAME
+	_ZThn16_N12HsIdleWidgetD1Ev @ 564 NONAME
+	_ZThn16_N12HsPageVisual11setGeometryERK6QRectF @ 565 NONAME
+	_ZThn16_N12HsPageVisualD0Ev @ 566 NONAME
+	_ZThn16_N12HsPageVisualD1Ev @ 567 NONAME
+	_ZThn16_N15HsPageWallpaperD0Ev @ 568 NONAME
+	_ZThn16_N15HsPageWallpaperD1Ev @ 569 NONAME
+	_ZThn16_N16HsSceneWallpaperD0Ev @ 570 NONAME
+	_ZThn16_N16HsSceneWallpaperD1Ev @ 571 NONAME
+	_ZThn16_N18HsWidgetHostVisualD0Ev @ 572 NONAME
+	_ZThn16_N18HsWidgetHostVisualD1Ev @ 573 NONAME
+	_ZThn8_N11HsWallpaperD0Ev @ 574 NONAME
+	_ZThn8_N11HsWallpaperD1Ev @ 575 NONAME
+	_ZThn8_N12HsIdleWidgetD0Ev @ 576 NONAME
+	_ZThn8_N12HsIdleWidgetD1Ev @ 577 NONAME
+	_ZThn8_N12HsPageVisualD0Ev @ 578 NONAME
+	_ZThn8_N12HsPageVisualD1Ev @ 579 NONAME
+	_ZThn8_N15HsPageWallpaperD0Ev @ 580 NONAME
+	_ZThn8_N15HsPageWallpaperD1Ev @ 581 NONAME
+	_ZThn8_N16HsSceneWallpaperD0Ev @ 582 NONAME
+	_ZThn8_N16HsSceneWallpaperD1Ev @ 583 NONAME
+	_ZThn8_N18HsWidgetHostVisualD0Ev @ 584 NONAME
+	_ZThn8_N18HsWidgetHostVisualD1Ev @ 585 NONAME
+	_ZThn8_NK18HsWidgetHostVisual5shapeEv @ 586 NONAME
 
--- a/homescreenapp/hsdomainmodel/hsdomainmodel.pri	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/hsdomainmodel/hsdomainmodel.pri	Mon Oct 04 00:07:25 2010 +0300
@@ -39,7 +39,8 @@
            ./inc/hswidgettoucharea.h \
            ./inc/hspagetoucharea.h \
            ./inc/hsidlewidget.h \
-           ./inc/hsdocumentloader.h
+           ./inc/hsdocumentloader.h \
+           ./inc/hswidgetpositioningonwidgetadd.h
         
 
 SOURCES += ./src/hscontentservice.cpp \
@@ -64,7 +65,8 @@
            ./src/hswidgettoucharea.cpp \
            ./src/hspagetoucharea.cpp \
            ./src/hsidlewidget.cpp \
-           ./src/hsdocumentloader.cpp
+           ./src/hsdocumentloader.cpp \
+           ./src/hswidgetpositioningonwidgetadd.cpp
 
 symbian: {
 HEADERS += ./inc/hsbackuprestoreobserver_p.h \
--- a/homescreenapp/hsdomainmodel/hsdomainmodel.pro	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/hsdomainmodel/hsdomainmodel.pro	Mon Oct 04 00:07:25 2010 +0300
@@ -48,12 +48,12 @@
     RESOURCES += hsdomainmodel.qrc
     TARGET.UID3 = 0x20022F38
     LIBS += -lxqsettingsmanager -labclient
+    
+    MMP_RULES += SMPSAFE
 }
 !symbian:{
     RESOURCES += hsdomainmodel_win.qrc
     QT += network 
 }
 
-new_short:DEFINES += HSWIDGETORGANIZER_ALGORITHM
-
 include(hsdomainmodel.pri)
--- a/homescreenapp/hsdomainmodel/inc/hsbackuprestoreactivecallback.h	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/hsdomainmodel/inc/hsbackuprestoreactivecallback.h	Mon Oct 04 00:07:25 2010 +0300
@@ -2,7 +2,7 @@
 * 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"
+* 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".
 *
@@ -30,7 +30,7 @@
     {
 public:
 
-    IMPORT_C static CHsBURActiveCallback* NewL(HsBackupRestoreObserver* observer);
+    static CHsBURActiveCallback* NewL(HsBackupRestoreObserver* observer);
 
     virtual ~CHsBURActiveCallback();    
 
--- a/homescreenapp/hsdomainmodel/inc/hsconfiguration.h	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/hsdomainmodel/inc/hsconfiguration.h	Mon Oct 04 00:07:25 2010 +0300
@@ -77,8 +77,11 @@
     Q_PROPERTY(SceneType sceneType READ sceneType WRITE setSceneType)
     Q_PROPERTY(QEasingCurve::Type bounceAnimationEasingCurve READ bounceAnimationEasingCurve WRITE setBounceAnimationEasingCurve)
     Q_PROPERTY(QEasingCurve::Type pageChangeAnimationEasingCurve READ pageChangeAnimationEasingCurve WRITE setPageChangeAnimationEasingCurve)
+    Q_PROPERTY(int widgetOrganizerAnchorDistance READ widgetOrganizerAnchorDistance WRITE setWidgetOrganizerAnchorDistance)        
+    Q_PROPERTY(WidgetOrganizerSearchSequence widgetOrganizerSearchSequence READ widgetOrganizerSearchSequence WRITE setWidgetOrganizerSearchSequence)        
 
     Q_ENUMS(SceneType)
+    Q_ENUMS(WidgetOrganizerSearchSequence)
 
 public:
     HsConfiguration(QObject *parent = 0);
@@ -89,6 +92,12 @@
         PageWallpapers,
         SceneWallpaper
     };
+    
+    enum WidgetOrganizerSearchSequence
+    {
+        SearchRowByRow,
+        SearchColumnByColumn
+    };    
 
 #define SETVALUE(member, name) \
     if (member != value) { \
@@ -176,6 +185,10 @@
     void setBounceAnimationEasingCurve(QEasingCurve::Type value) { SETVALUE(mBounceAnimationEasingCurve, "bounceAnimationEasingCurve") }
     QEasingCurve::Type pageChangeAnimationEasingCurve() const { return mPageChangeAnimationEasingCurve; }
     void setPageChangeAnimationEasingCurve(QEasingCurve::Type value) { SETVALUE(mPageChangeAnimationEasingCurve, "pageChangeAnimationEasingCurve") }
+    int widgetOrganizerAnchorDistance() const { return mWidgetOrganizerAnchorDistance; }
+    void setWidgetOrganizerAnchorDistance(int value) { SETVALUE(mWidgetOrganizerAnchorDistance, "widgetOrganizerAnchorDistance") }
+    WidgetOrganizerSearchSequence widgetOrganizerSearchSequence() const { return mWidgetOrganizerSearchSequence; }
+    void setWidgetOrganizerSearchSequence(WidgetOrganizerSearchSequence value) { SETVALUE(mWidgetOrganizerSearchSequence, "widgetOrganizerSearchSequence") }        
 
 #undef SETVALUE
 
@@ -239,6 +252,8 @@
     SceneType mSceneType;
     QEasingCurve::Type mBounceAnimationEasingCurve;
     QEasingCurve::Type mPageChangeAnimationEasingCurve;
+    int mWidgetOrganizerAnchorDistance;
+    WidgetOrganizerSearchSequence mWidgetOrganizerSearchSequence;
     
     static HsConfiguration *mInstance;
 
--- a/homescreenapp/hsdomainmodel/inc/hspage.h	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/hsdomainmodel/inc/hspage.h	Mon Oct 04 00:07:25 2010 +0300
@@ -64,9 +64,7 @@
     QRectF contentRect();
     QRectF contentRect(Qt::Orientation orientation);
     HsPageVisual *visual() const;
-#ifdef HSWIDGETORGANIZER_ALGORITHM
-    enum sortOrder { height, width};
-#endif //HSWIDGETORGANIZER_ALGORITHM
+
 public slots:
     void showWidgets();
     void hideWidgets();
@@ -79,9 +77,6 @@
   //  void setupTouchArea();
     void connectWidget(HsWidgetHost *widget);
     void disconnectWidget(HsWidgetHost *widget);
-#ifdef HSWIDGETORGANIZER_ALGORITHM
-    void sortWidgets(sortOrder order, QList<HsWidgetHost*> &widgets);
-#endif //HSWIDGETORGANIZER_ALGORITHM
 
 private slots:
     void onWidgetFinished();
--- a/homescreenapp/hsdomainmodel/inc/hspagenewwidgetlayout.h	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/hsdomainmodel/inc/hspagenewwidgetlayout.h	Mon Oct 04 00:07:25 2010 +0300
@@ -23,7 +23,7 @@
 
 HOMESCREEN_TEST_CLASS(TestHsDomainModel)
 class HsWidgetHost;
-class HsPageNewWidgetLayout : public QGraphicsLayout 
+class HsPageNewWidgetLayout : public QGraphicsLayout
 {
 public: 
     HsPageNewWidgetLayout(const QPointF &touchPoint = QPointF(),
@@ -36,13 +36,8 @@
     QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const;
     void setGeometry(const QRectF &rect);
     void addItem(HsWidgetHost *item);
-    enum sortOrder { height, width};
 
 private:
-#ifdef HSWIDGETORGANIZER_ALGORITHM
-    QList<HsWidgetHost*> sortWidgets(sortOrder order);
-#endif    
-private:
     QSizeF mSize;
     QList<HsWidgetHost*> mNewWidgets;
     QPointF mTouchPoint;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/inc/hswidgetpositioningonwidgetadd.h	Mon Oct 04 00:07:25 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:
+*
+*/
+
+#ifndef HSWIDGETPOSITIONINGONWIDGETADD_H
+#define HSWIDGETPOSITIONINGONWIDGETADD_H
+
+#include <QList>
+#include <QRectF>
+#include <QPointF>
+
+#include "hsconfiguration.h"
+#include "hstest_global.h"
+#include "hsdomainmodel_global.h"
+
+HOMESCREEN_TEST_CLASS(TestHsDomainModel)
+
+class HsWidgetHost;
+
+class HSDOMAINMODEL_EXPORT HsWidgetPositioningOnWidgetAdd
+{
+public:
+    virtual ~HsWidgetPositioningOnWidgetAdd() {}
+    
+    virtual QList<QRectF> convert(const QRectF &contentArea,
+                                  const QList<QRectF> &existingRects,
+                                  const QList<QRectF> &newRects,
+                                  const QPointF &startPoint) = 0;
+   
+    static void setInstance(HsWidgetPositioningOnWidgetAdd *instance);
+    static HsWidgetPositioningOnWidgetAdd *instance();
+
+private:
+    static HsWidgetPositioningOnWidgetAdd *mInstance;
+};
+
+class HSDOMAINMODEL_EXPORT HsAnchorPointInBottomRight : public HsWidgetPositioningOnWidgetAdd
+{
+public:
+    QList<QRectF> convert(const QRectF &contentArea,
+                          const QList<QRectF> &existingRects,
+                          const QList<QRectF> &newRects,
+                          const QPointF &startPoint);
+ 
+};
+
+class HSDOMAINMODEL_EXPORT HsAnchorPointInCenter : public HsWidgetPositioningOnWidgetAdd
+{
+public:
+    QList<QRectF> convert(const QRectF &contentArea,
+                          const QList<QRectF> &existingRects,
+                          const QList<QRectF> &newRects,
+                          const QPointF &startPoint);
+ };
+
+class HSDOMAINMODEL_EXPORT HsWidgetOrganizer : public HsWidgetPositioningOnWidgetAdd
+{
+public:
+    HsWidgetOrganizer(int anchorDistance, HsConfiguration::WidgetOrganizerSearchSequence sequence);
+    ~HsWidgetOrganizer();
+
+public:
+    QList<QRectF> convert(const QRectF &contentArea,
+                          const QList<QRectF> &existingRects,
+                          const QList<QRectF> &newRects,
+                          const QPointF &startPoint);
+
+private:
+    enum SortMode {SortByHeight, SortByWidth, SortByArea};
+    enum SearchMode {SearchColumn, SearchRow};
+
+private:
+    void initAnchors();
+    bool checkExistingRects(const QList<QRectF> &existingRects);
+    int convertToAnchors(int length);
+    bool markAnchors(const QRectF &rect);
+    int getAnchorListIndex(const QPointF &position);
+    QPointF getPosition(const QSizeF &size);
+    QPointF searchPositionRowByRow(QPointF startPoint, int width, int height);
+    QPointF searchPositionColumnByColumn(QPointF startPoint, int width, int height);
+    QPointF searchSpace(SearchMode mode, QPointF startPoint, int contentLength);
+    QPointF getAnchorCoordinates(int index);
+    QList<int> sortRects(SortMode mode, const QMap<int, QRectF> &rects);
+
+private:
+    int mAnchorDistance;
+    HsConfiguration::WidgetOrganizerSearchSequence mSequence;
+    QList<bool> mAnchors;
+    QRectF mContentArea;
+    int mAnchorColumns;
+    int mAnchorRows;
+    HsAnchorPointInCenter *mCenterAlgorithm;
+
+    HOMESCREEN_TEST_FRIEND_CLASS(TestHsDomainModel)
+};
+
+
+#endif // HSWIDGETPOSITIONINGONWIDGETADD_H
--- a/homescreenapp/hsdomainmodel/src/hsbackuprestoreactivecallback.cpp	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/hsdomainmodel/src/hsbackuprestoreactivecallback.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -2,7 +2,7 @@
 * 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"
+* 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".
 *
--- a/homescreenapp/hsdomainmodel/src/hsconfiguration.cpp	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/hsdomainmodel/src/hsconfiguration.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -75,7 +75,9 @@
     mIsSnapEffectsEnabled(true),    
     mSceneType(PageWallpapers),
     mBounceAnimationEasingCurve(QEasingCurve::Linear),
-    mPageChangeAnimationEasingCurve(QEasingCurve::Linear)
+    mPageChangeAnimationEasingCurve(QEasingCurve::Linear),
+    mWidgetOrganizerAnchorDistance(5),
+    mWidgetOrganizerSearchSequence(SearchRowByRow)
 {    
 }
 
--- a/homescreenapp/hsdomainmodel/src/hscontentservice.cpp	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/hsdomainmodel/src/hscontentservice.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -98,7 +98,7 @@
     }
     connect(widget,SIGNAL(event_faulted()),SLOT(widgetStartFaulted()));
     mWidgetStartFaulted = false; 
-    widget->startWidget(); // synchronous operation
+    widget->startWidget(false); // synchronous operation
     if (mWidgetStartFaulted) {
         // page will destroy widget instance
         return false;
--- a/homescreenapp/hsdomainmodel/src/hspage.cpp	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/hsdomainmodel/src/hspage.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -668,21 +668,12 @@
     
     HsPageVisual *pageVisual = visual();
     HsWidgetHostVisual *visual(0);
-#ifdef HSWIDGETORGANIZER_ALGORITHM
-    QList<HsWidgetHost*> newWidgets;
-#endif //HSWIDGETORGANIZER_ALGORITHM    
+    QList<HsWidgetHost*> newWidgets; 
     foreach (HsWidgetHost *widget, mWidgets) {
         visual = widget->visual();
         if ( pageVisual->isAncestorOf(visual)) {
             if (!widget->getPresentation(presentation)) {
-#ifndef HSWIDGETORGANIZER_ALGORITHM
-                QList<QRectF> geometries = converter->convert(
-                    from, QList<QRectF>() << visual->geometry(), to);
-                visual->setGeometry(geometries.first());
-                widget->savePresentation();
-#else //HSWIDGETORGANIZER_ALGORITHM
                 newWidgets << widget;
-#endif //HSWIDGETORGANIZER_ALGORITHM
             } else {
                 QRectF adjustWidgetPosition;
                 adjustWidgetPosition = visual->geometry();
@@ -693,16 +684,7 @@
             }
         }
     }
-    
-#ifdef HSWIDGETORGANIZER_ALGORITHM
-    // sort new widgets in order
     if (newWidgets.count()) {
-        // TODO: read from configuration? or just use height for portrait and width for landscape (currently only height is used)
-        sortOrder order(height);
-        if(orientation == Qt::Horizontal) {
-            order = width;
-        } 
-        sortWidgets(order, newWidgets);
         // get rects for new widgets
         QList<QRectF> newRects;
         foreach (HsWidgetHost *newWidget, newWidgets) {
@@ -716,7 +698,7 @@
         QList<QRectF> existingRects;
         foreach (HsWidgetHost *widget, mWidgets) {
             if (!newWidgets.contains(widget)) {
-                existingRects << QRectF(widget->visual()->pos(), widget->visual()->preferredSize());
+                existingRects << QRectF(widget->visual()->geometry());
             }
         }
          
@@ -726,14 +708,12 @@
         QList<QRectF> calculatedRects =
             algorithm->convert(pageRect, existingRects, newRects, QPointF());
 
-        for ( int i=0; i<newWidgets.count(); i++) {            
+        for (int i=0; i<newWidgets.count(); i++) {            
             int j = mWidgets.indexOf(newWidgets.at(i));
             mWidgets.at(j)->visual()->setGeometry(calculatedRects.at(i));
             mWidgets.at(j)->savePresentation();            
         }               
-    }    
-#endif //HSWIDGETORGANIZER_ALGORITHM
-    
+    }        
 }
 
 void HsPage::onPageMarginChanged(const QString &value)
@@ -758,45 +738,3 @@
         }
     }
 }
-#ifdef HSWIDGETORGANIZER_ALGORITHM
-// TODO: sorting should be done in algorithm class, make widget<->rect mapping here and move sortWidgets function to algorithm side
-/*!
-    Sorts widgets in height/width order
-*/
-void HsPage::sortWidgets(sortOrder order, QList<HsWidgetHost*> &widgets)
-{
-    QList<HsWidgetHost*> tmpWidgets;
-
-    for ( int i = 0; i < widgets.count(); i++) {
-        int index = 0;
-        // add first widget to sorted list
-        if (i == 0) {
-            tmpWidgets << widgets.at(i);
-        } else {
-            // go through existing widgets in the sorted list
-            for ( int j = 0; j < tmpWidgets.count(); j++) {
-                // sort widgets in height order
-                if (order == height) {
-                    /* if widgets heigth is smaller on already
-                       existing ones in the list -> increment index
-                    */
-                    if (widgets.at(i)->visual()->preferredHeight() <= tmpWidgets.at(j)->visual()->preferredHeight()) {
-                        index++;
-                    }
-                // sort widgets in width order
-                } else {
-                    /* if widgets width is smaller on already
-                       existing ones in the sorted list -> increment index
-                    */
-                    if (widgets.at(i)->visual()->preferredWidth() <= tmpWidgets.at(j)->visual()->preferredWidth()) {
-                        index++;
-                    }
-                }
-            }
-            // add widget to its correct index in sorted list
-            tmpWidgets.insert(index, widgets.at(i));
-        }
-    }
-    widgets = tmpWidgets;    
-}
-#endif //HSWIDGETORGANIZER_ALGORITHM
--- a/homescreenapp/hsdomainmodel/src/hspagenewwidgetlayout.cpp	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/hsdomainmodel/src/hspagenewwidgetlayout.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -45,6 +45,7 @@
                                              QGraphicsLayoutItem *parent)
     : QGraphicsLayout(parent),    
     mTouchPoint(touchPoint)
+    // add mWidgetRects
 {
     mSize = HsGui::instance()->layoutRect().size();
 }
@@ -104,15 +105,6 @@
 {
     QGraphicsLayout::setGeometry(rect);
 
-#ifdef HSWIDGETORGANIZER_ALGORITHM
-    // sort new widgets in order
-    if (mNewWidgets.count() > 1) {
-        // TODO: read from configuration? or just use height for portrait and width for landscape (currently only height is used)
-        sortOrder order(height);
-        mNewWidgets = sortWidgets(order);
-    }
-#endif
-
     // get rects for new widgets
     QList<QRectF> newRects;
     foreach (HsWidgetHost *newWidget, mNewWidgets) {
@@ -123,7 +115,7 @@
        then there is only one widget in the list
        -> set widget center point to this touch point
     */
-    if (mTouchPoint != QPointF() && mNewWidgets.count() == 1) {
+    if (mTouchPoint != QPointF() && newRects.count() == 1) {
         QRectF widgetRect = newRects.at(0);
         widgetRect.moveCenter(mTouchPoint);
         widgetRect.moveTopLeft(HsScene::instance()->activePage()->adjustedWidgetPosition(widgetRect));
@@ -153,8 +145,8 @@
             HsWidgetPositioningOnWidgetAdd::instance();
         QList<QRectF> calculatedRects =
             algorithm->convert(pageRect, existingRects, newRects, QPointF());
-
-        for ( int i=0; i<mNewWidgets.count(); i++) {
+        // set new widgets to screen and save presentation for each widget
+        for (int i=0; i<mNewWidgets.count(); i++) {
             mNewWidgets.at(i)->visual()->setGeometry(calculatedRects.at(i));
             mNewWidgets.at(i)->savePresentation();
         }
@@ -168,47 +160,3 @@
 {
     mNewWidgets.append(item);
 }
-
-#ifdef HSWIDGETORGANIZER_ALGORITHM
-// TODO: sorting should be done in algorithm class, make widget<->rect mapping here and move sortWidgets function to algorithm side
-/*!
-    Sorts widgets in height/width order
-*/
-QList<HsWidgetHost*> HsPageNewWidgetLayout::sortWidgets(sortOrder order)
-{
-    QList<HsWidgetHost*> tmpWidgets;
-
-    for ( int i = 0; i < mNewWidgets.count(); i++) {
-        int index = 0;
-        // add first widget to sorted list
-        if (i == 0) {
-            tmpWidgets << mNewWidgets.at(i);
-        } else {
-            // go through existing widgets in the sorted list
-            for ( int j = 0; j < tmpWidgets.count(); j++) {
-                // sort widgets in height order
-                if (order == height) {
-                    /* if widgets heigth is smaller on already
-                       existing ones in the list -> increment index
-                    */
-                    if (mNewWidgets.at(i)->visual()->preferredHeight() <= tmpWidgets.at(j)->visual()->preferredHeight()) {
-                        index++;
-                    }
-                // sort widgets in width order
-                } else {
-                    /* if widgets width is smaller on already
-                       existing ones in the sorted list -> increment index
-                    */
-                    if (mNewWidgets.at(i)->visual()->preferredWidth() <= tmpWidgets.at(j)->visual()->preferredWidth()) {
-                        index++;
-                    }
-                }
-            }
-            // add widget to its correct index in sorted list
-            tmpWidgets.insert(index, mNewWidgets.at(i));
-        }
-    }
-    return tmpWidgets;
-}
-#endif // HSWIDGETORGANIZER_ALGORITHM
-
--- a/homescreenapp/hsdomainmodel/src/hswidgethostvisual.cpp	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/hsdomainmodel/src/hswidgethostvisual.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -84,17 +84,19 @@
     QPainterPath path;
 
     if (mWidget) {
-        QRectF currRect = rect();
+        QRectF visualRect = rect();
         path = mWidget->shape();
 
-        QRectF pathRect(path.boundingRect());
+        QRectF widgetRect(path.boundingRect());
+        if (widgetRect.width() > visualRect.width()
+            || widgetRect.height() > visualRect.height()) {
+            QPainterPath newPath;
+            newPath.addRect(visualRect);
+            path = path.intersected(newPath);
+        } else if ( widgetRect.isEmpty() ) {
+            path.addRect(visualRect);
+        }
 
-        if (pathRect.width() > currRect.width()
-            || pathRect.height() > currRect.height()) {
-            QPainterPath newPath(currRect.topLeft());
-            newPath.addRect(currRect);
-            path = path.intersected(newPath);
-        }
     }
     return path;
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/src/hswidgetpositioningonwidgetadd.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,627 @@
+/*
+* 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 <QLineF>
+#include <QtGlobal>
+#include <QPointF>
+#include <math.h>
+
+#include "hswidgetpositioningonwidgetadd.h"
+#include "hsconfiguration.h"
+#include "hsgui.h"
+
+const qreal offset = 20; //TODO: Implement this as configurable parameter
+
+
+/*!
+    \class HsWidgetPositioningOnWidgetAdd
+    \ingroup group_hsutils
+    \brief 
+*/
+
+/*!
+    \class HsWidgetPositioningOnWidgetAdd
+    \brief Defines widget positioning on widget add.
+
+    Widget positioning on widget add sets positions for
+    a set of home screen widgets added from application library.
+*/
+
+/*!
+    Sets the positioning \a instance as the current one.
+    Deletes the existing instance if present.
+*/
+void HsWidgetPositioningOnWidgetAdd::setInstance(
+    HsWidgetPositioningOnWidgetAdd *instance)
+{
+    if (mInstance)
+        delete mInstance;
+    mInstance = instance;
+}
+ 
+/*!
+    Returns the current positioning instance.
+*/
+HsWidgetPositioningOnWidgetAdd *HsWidgetPositioningOnWidgetAdd::instance()
+{
+    return mInstance;
+}
+
+/*!
+    Stores the current positioning instance.
+*/
+HsWidgetPositioningOnWidgetAdd *HsWidgetPositioningOnWidgetAdd::mInstance = 0;
+
+/*!
+    \class HsAnchorPointInBottomRight
+    \brief Diagonal widget positioning algorithm.
+    
+    Sets widget's lower right corner to follow content area's diagonal.
+    Widgets are positioned to certain offset to each other.
+*/
+QList<QRectF> HsAnchorPointInBottomRight::convert(
+    const QRectF &contentArea,
+    const QList<QRectF> &existingRects,
+    const QList<QRectF> &newRects,
+    const QPointF &startPoint)
+{
+    Q_UNUSED(existingRects);
+
+    QList<QRectF> toGeometries;
+
+    //Offset for widgets' bottom right position to each other
+    qreal k = contentArea.height()/contentArea.width(); //slope of the diagonal
+    qreal offset_x = offset/(sqrt(k + 1));
+    qreal offset_y = k*offset_x;
+    QPointF offsetPoint(offset_x, offset_y);
+    
+    QPointF anchorPoint;
+   
+    if(startPoint.isNull()){
+
+        QLineF diagonal(contentArea.topLeft(), contentArea.bottomRight());
+        QLineF widgetRightSide(contentArea.center().x()+ newRects.at(0).width()/2,
+                           contentArea.top(),
+                           contentArea.center().x()+ newRects.at(0).width()/2,
+                           contentArea.bottom());
+
+        // right side line intersection with diagonal will be bottom right position
+        // for the first rect
+        if(QLineF::BoundedIntersection != 
+            diagonal.intersect(widgetRightSide, &anchorPoint)) {
+            return newRects; //Return original since undefined error.
+                            //In this case widget's must be wider than the content area.
+        }
+    }else{
+        anchorPoint = startPoint - offsetPoint;
+    }
+
+    QRectF widgetRect;
+    for(int i=0;i<newRects.count();++i) {
+        widgetRect = newRects.at(i);
+        widgetRect.moveBottomRight(anchorPoint);
+        //if widget rect doesn't fit, try to move it
+        if(!contentArea.contains(widgetRect)) {
+            /*! precondition is that
+             widget's max height < content area height
+             widget's max widht < content area width
+            */
+            widgetRect.moveBottomRight(contentArea.bottomRight());
+            // anchorPoin is always previous bottom right
+            anchorPoint = widgetRect.bottomRight();
+        }
+        toGeometries << widgetRect;
+        anchorPoint -= offsetPoint;
+        
+    }
+    return toGeometries;
+}
+
+/*!
+    \class HsAnchorPointInCenter
+    \brief Diagonal widget positioning algorithm.
+    
+    Sets widget's center point to follow content area's diagonal.
+    Widgets are positioned to certain offset to each other.
+*/
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC SKIP
+#endif //COVERAGE_MEASUREMENT
+QList<QRectF> HsAnchorPointInCenter::convert(
+    const QRectF &contentArea,
+    const QList<QRectF> &existingRects,
+    const QList<QRectF> &newRects,
+    const QPointF &startPoint )
+{
+    Q_UNUSED(existingRects);
+    Q_UNUSED(startPoint)
+
+    QList<QRectF> toGeometries;
+
+    //Offset for widgets' centers position to each other
+    qreal k = contentArea.height()/contentArea.width(); //slope of the diagonal
+    qreal offset_x = offset/(sqrt(k + 1));
+    qreal offset_y = k*offset_x;
+    QPointF offsetPoint(offset_x, offset_y);
+
+    //First widget to the center of the content area
+    QPointF anchorPoint = contentArea.center();
+    foreach (QRectF g, newRects) {
+        g.moveCenter(anchorPoint);
+        toGeometries << g;
+        anchorPoint -= offsetPoint;
+        if(!contentArea.contains(anchorPoint)) {
+            anchorPoint = contentArea.bottomRight();
+        }
+    }
+    return toGeometries;
+}
+
+HsWidgetOrganizer::HsWidgetOrganizer(int anchorDistance,
+                                     HsConfiguration::WidgetOrganizerSearchSequence sequence)
+: mAnchorDistance(anchorDistance), mSequence(sequence), mAnchorColumns(0), mAnchorRows(0),
+  mCenterAlgorithm(new HsAnchorPointInCenter())
+{
+
+}
+
+HsWidgetOrganizer::~HsWidgetOrganizer()
+{
+    delete mCenterAlgorithm;
+}
+
+/*!
+    \class HsWidgetOrganizer
+    \brief Advanced widget positioning algorithm.
+    
+    Organizes widget's starting from upper left corner towards right,
+    and then continues the on the next line.
+*/
+QList<QRectF> HsWidgetOrganizer::convert(
+    const QRectF &contentArea,
+    const QList<QRectF> &existingRects,
+    const QList<QRectF> &newRects,
+    const QPointF &startPoint)
+{
+    Q_UNUSED(startPoint)
+
+    // mandatory check ups
+    if (mAnchorDistance <= 0 || contentArea == QRectF() ||
+        newRects == QList<QRectF>()) {
+        return QList<QRectF>();
+    }
+
+    // calculate anchor limits based on anchor distance
+    mAnchorColumns = convertToAnchors(contentArea.width());
+    mAnchorRows = convertToAnchors(contentArea.height());
+    mContentArea = contentArea;
+
+    // map rects so that we can later return them in original order
+    QMap<int, QRectF> newRectsMap;
+    for (int id = 0; id < newRects.count(); id++) {
+        newRectsMap.insert(id, newRects.at(id));
+    } 
+
+    // get orientation
+    Qt::Orientation orientation(HsGui::instance()->orientation());
+
+    SortMode mode;
+    // select sorting mode based on orientation and search sequence
+    if((orientation == Qt::Vertical && mSequence == HsConfiguration::SearchRowByRow) ||
+        (orientation == Qt::Horizontal && mSequence == HsConfiguration::SearchColumnByColumn)) {
+        mode = SortByHeight;
+    } else {
+        mode = SortByWidth;
+    }
+
+    // sort rects into order
+    QList<int> newRectsSorted = sortRects(mode, newRectsMap);
+
+    // initialize anchor points
+    initAnchors();
+
+    // go through existing rects
+    bool ok = checkExistingRects(existingRects);
+    if (!ok) {
+        return QList<QRectF>();
+    }
+
+    QList<int> newRectsNotCalculated;
+    QList<QRectF> newExistingRects;
+    newExistingRects += existingRects;
+
+    // get positions for all new rects
+    for (int i = 0; i < newRectsMap.count(); i++) {
+        // proceed in sorted order with the rects
+        QRectF newRect = newRectsMap.value(newRectsSorted.at(i));
+        // find first free anchor point for rect
+        QPointF position = getPosition(newRect.size());
+        if (position != QPointF(-1,-1)) {
+            QRectF calculatedGeometry = QRectF(position.x() + mContentArea.x(),
+                                               position.y() + mContentArea.y(),
+                                               newRect.width(), newRect.height());
+            // update new rect instead of old one based on id map
+            newRectsMap.insert(newRectsSorted.at(i), calculatedGeometry);
+            // update existing rects
+            newExistingRects << calculatedGeometry;
+            // mark new rect reserved
+            bool marked = markAnchors(QRectF(position, newRect.size()));
+            if (!marked) {
+                return QList<QRectF>();
+            }
+
+        } else {
+            // collect rect that do not fit
+            newRectsNotCalculated << newRectsSorted.at(i);
+        }
+    }
+
+    // use center algorithm with offset for the rest rects that did not fit to content area
+    if (newRectsNotCalculated.count() > 0 ) {
+        // collect not organized rects
+        QList<QRectF> undoneRects;
+        for (int i = 0; i < newRectsNotCalculated.count(); i++) {
+            undoneRects << newRectsMap.value(newRectsNotCalculated.at(i));
+        }
+        QList<QRectF> calculatedRects =
+            mCenterAlgorithm->convert(mContentArea, newExistingRects, undoneRects, QPointF());
+        // update the rest rects instead of old ones
+        for (int i = 0; i < calculatedRects.count(); i++) {
+            newRectsMap.insert(newRectsNotCalculated.at(i), calculatedRects.at(i));
+            /* take rect out of list and add it to the end of the list
+               rect that do not fit are added in the end in users add order */
+            // we need to map z values to correct widgets to enable this
+           /*
+            newRectsMap.take(newRectsNotCalculated.at(i));
+            newRectsMap.insert(newRectsMap.count() + i + 1, calculatedRects.at(i));
+           */
+        }
+    }
+
+    return newRectsMap.values();
+}
+
+/*!    
+    Initializes anchor point network for area size
+*/
+void HsWidgetOrganizer::initAnchors()
+{
+    // need to zero just in case (if algorithm is called twice)
+    mAnchors = QList<bool>();
+    // create anchor point network
+    for (int i = 0; i < (mAnchorColumns * mAnchorRows); i++) {
+        mAnchors.append(false);
+    }
+}
+
+/*!    
+    Check existing rects and marks them reserved
+*/
+bool HsWidgetOrganizer::checkExistingRects(const QList<QRectF> &existingRects)
+{
+    foreach (QRectF rect, existingRects) {
+        /* if existing rect is on the edges of content area
+           need to drop one pixels because there is no anchors on the edge */
+        int rightmostPoint = rect.x() + rect.width();
+        if (rightmostPoint == mContentArea.width()) {
+            rect.setWidth(rect.width() - 1);
+        }
+        int undermostPoint = rect.y() + rect.height();
+        if (undermostPoint == mContentArea.height()) {
+            rect.setHeight(rect.height() - 1);
+        }
+        // decrease content area size in case it does not start from (0,0)
+        rect = QRectF(
+            QPointF(rect.x() - mContentArea.x(), rect.y() - mContentArea.y()),
+            rect.size());
+        bool marked = markAnchors(rect);
+        if (!marked) {
+            return false;
+        }
+    }
+    return true;
+}
+
+/*!    
+    Calculates pixel length as anchor points
+*/
+int HsWidgetOrganizer::convertToAnchors(int length)
+{
+    // calculate remainder
+    int remainder = length % mAnchorDistance;
+    // calculate anchor points (only pixel integrals are counted, decimals are cut away)
+    int anchorPoints = (length - remainder) / mAnchorDistance;
+    return anchorPoints;
+}
+
+/*!    
+    Marks reserved anchor points based on given rects
+*/
+bool HsWidgetOrganizer::markAnchors(const QRectF &rect)
+{
+    // in case content does not start from zero, need take contentArea into calculations
+    int startWidth = convertToAnchors(rect.x());
+    int endWidth = convertToAnchors(rect.x() + rect.width());
+    int startHeight = convertToAnchors(rect.y());
+    int endHeight = convertToAnchors(rect.y() + rect.height());
+
+    // mark reserved anchors row by row from left to right
+    for (int i = startWidth; i <= endWidth; i++) {
+        for (int j = startHeight; j <= endHeight; j++) {
+            int index = getAnchorListIndex(QPointF(i,j));
+            if (index < 0) {
+                return false;
+            }
+            mAnchors[index] = true;
+        }
+    }
+    return true;
+}
+
+/*!    
+    Returns anchor's list index based on given position
+*/
+int HsWidgetOrganizer::getAnchorListIndex(const QPointF &position)
+{
+    int index = (position.y() * mAnchorColumns) + position.x();
+    if (index < mAnchors.count()) {
+        return index;
+    } else {
+        return -1;
+    }
+}
+
+/*!    
+    Finds anchor points for content size
+*/
+QPointF HsWidgetOrganizer::getPosition(const QSizeF &size)
+{
+    QPointF startPoint(0,0);
+    // convert units from pixels to anchors
+    int width = convertToAnchors(size.width());
+    int height = convertToAnchors(size.height());
+
+    // based on search sequence, select position searching method
+    if (mSequence == HsConfiguration::SearchRowByRow) {
+        startPoint = searchPositionRowByRow(startPoint, width, height);
+    } else {
+        startPoint = searchPositionColumnByColumn(startPoint, width, height);
+    }
+
+    if (startPoint == QPointF(-1,-1)) {
+        return startPoint;
+    } else {
+        // return the actual pixel coordinate
+        return QPointF(startPoint.x() * mAnchorDistance, startPoint.y() * mAnchorDistance);
+    }
+}
+
+/*!    
+    Search sequence that finds anchor position by looking first for width on x-axis and
+    then secondarily on height from y-axis
+*/
+QPointF HsWidgetOrganizer::searchPositionRowByRow(QPointF startPoint, int width, int height)
+{
+    bool anchorFound = false;
+    QPointF candidatePoint(0,0);
+    // loop until anchor point is found
+    while (anchorFound == false) {
+        // search for width on specified row
+        candidatePoint = searchSpace(SearchRow, startPoint, width);
+        if (candidatePoint != QPointF(-1,-1)) {
+            // update start point to where found width starts
+            startPoint.setX(candidatePoint.x());
+            // check all anchor height points corresponding the found free width points
+            for(int i = startPoint.x(); i <= startPoint.x() + width; i++) {
+                // save current start point to be checked
+                QPointF point = QPointF(i, startPoint.y());
+                // search for height on specified column
+                candidatePoint = searchSpace(SearchColumn, point, height);
+                if (candidatePoint == QPointF(-1,-1)) {
+                    // update x anchor index
+                    startPoint.setX(startPoint.x() + 1);
+                    // set i to max to stop searching
+                    i = startPoint.x() + width;
+                }
+            }
+            // if all height searches were successfull
+            if (candidatePoint != QPointF(-1,-1)) {
+                anchorFound = true;
+            }
+        } else {
+            // update x and y start positions when row has been checked
+            startPoint.setX(0);
+            startPoint.setY(startPoint.y() + 1);
+            // check that enough height left
+            if (startPoint.y() >= mAnchorRows) {
+                return QPointF(-1,-1);
+            }
+        }
+    }
+
+    return startPoint;
+}
+
+/*!    
+    Search sequence that finds anchor position by looking first for height on y-axis and
+    then secondarily on width from x-axis
+*/
+QPointF HsWidgetOrganizer::searchPositionColumnByColumn(QPointF startPoint,
+                                                        int width, int height)
+{
+    bool anchorFound = false;
+    QPointF candidatePoint(0,0);
+
+    while (anchorFound == false) {
+        candidatePoint = searchSpace(SearchColumn, startPoint, height);
+        if (candidatePoint != QPointF(-1,-1)) {
+            startPoint.setY(candidatePoint.y());
+            for(int i = startPoint.y(); i <= startPoint.y() + height; i++) {
+                QPointF point = QPointF(startPoint.x(), i);
+                candidatePoint = searchSpace(SearchRow, point, width);
+                if (candidatePoint == QPointF(-1,-1)) {
+                    startPoint.setY(startPoint.y() + 1);
+                    i = startPoint.y() + height;
+                }
+            }
+            if (candidatePoint != QPointF(-1,-1)) {
+                anchorFound = true;
+            }
+        } else {
+            startPoint.setY(0);
+            startPoint.setX(startPoint.x() + 1);
+            if (startPoint.x() >= mAnchorColumns) {
+                return QPointF(-1,-1);
+            }
+        }
+    }
+
+    return startPoint;
+}
+
+/*!    
+    Searches anchor point space for given length
+*/
+QPointF HsWidgetOrganizer::searchSpace(SearchMode mode, QPointF startPoint, int length)
+{
+    int availableLength = 0;
+    // convert start point to an index in anchor list
+    int startIndex = getAnchorListIndex(startPoint);
+    int increment = 0;
+    int endIndex = 0;
+
+    // set end anchor index depending on checked axis
+    if (mode == SearchRow) {
+        // save the last index of the checked row
+        endIndex = getAnchorListIndex(QPointF((mAnchorColumns - 1), startPoint.y()));
+
+    } else {
+        // save the last index of the checked column
+        endIndex = getAnchorListIndex(QPointF(startPoint.x(), (mAnchorRows - 1)));
+        // we need to add increment due to anchors are listed row by row
+        increment = mAnchorColumns - 1;
+    }
+
+    // safety checks
+    if (startIndex == -1 || endIndex == -1) {
+        return QPointF(-1,-1);
+    }
+
+    // loop through anchor indexes, increment is added only when going through height
+    for (int i = startIndex; i <= endIndex; i = i + 1 + increment) {
+        // if anchor reserved
+        if (mAnchors.at(i) == true) {
+            availableLength = 0;
+            // if going through the first part of sequence (width/height)
+            if ((mSequence == HsConfiguration::SearchRowByRow && mode == SearchRow) ||
+                (mSequence == HsConfiguration::SearchColumnByColumn && mode == SearchColumn)) {
+                // update start index
+                startIndex = i + 1 + increment;
+            } else {
+                // exit immediately if second part of sequence fails
+                return QPointF(-1,-1);                
+            }
+        } else {
+            // if enough space found
+            if (availableLength == length) {
+                // return the actual anchor position
+                return getAnchorCoordinates(startIndex);
+            }
+            // update available length
+            availableLength++;
+        }
+    }
+
+    return QPointF(-1,-1);
+}
+
+/*!    
+    Returns pixel coordinate based on anchor coordinate
+*/
+QPointF HsWidgetOrganizer::getAnchorCoordinates(int index)
+{
+    if (index < mAnchors.count()) {
+        int x = index % mAnchorColumns;
+        int y = (index - x) / mAnchorColumns;
+        return QPointF(x,y);
+    } else {
+        return QPointF();
+    }
+}
+
+/*!
+    Sorts rects based on sort mode and given map of rects
+*/
+QList<int> HsWidgetOrganizer::sortRects(SortMode mode, const QMap<int, QRectF> &rects)
+{
+    QList<int> sortedRects;
+    int i = 0;
+    // loop through all rects
+    QMapIterator<int, QRectF> id(rects);
+    while (id.hasNext()) {
+        id.next();
+        int index = 0;
+        // add first rect id to sorted list
+        if (i == 0) {
+            sortedRects << id.key();
+        } else {
+            // go through existing rects in the sorted list
+            for ( int j = 0; j < sortedRects.count(); j++) {
+                // calculations for sortByArea
+                qreal existingArea = rects.value(sortedRects.at(j)).width() *
+                                                 rects.value(sortedRects.at(j)).height();
+                qreal newArea = id.value().width() * id.value().height();
+                // sort rects in height order
+                switch (mode) {
+                case SortByHeight:
+                    /* if rect heigth is smaller on already
+                       existing ones in the list -> increment index
+                    */
+                    if (id.value().height() <= rects.value(sortedRects.at(j)).height()) {
+                        index++;
+                    }
+                    break;
+                // sort rects in width order
+                case SortByWidth:
+                    // if rect width is smaller -> increment index
+                    if (id.value().width() <= rects.value(sortedRects.at(j)).width()) {
+                        index++;
+                    }
+                    break;
+                case SortByArea:
+                    // if rect area is smaller -> increment index
+                    if (newArea <= existingArea) {
+                        index++;
+                    }
+                // otherwise return in original order
+                default:
+                    index++;
+                    break;
+                }
+            }
+            // add rect id in the sorted list
+            sortedRects.insert(index, id.key());
+        }
+        i++;
+    }
+    return sortedRects;
+}
+
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC ENDSKIP
+#endif //COVERAGE_MEASUREMENT
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/mockwidget/inc/mockwidget.h	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,55 @@
+/*
+* 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:  Mocked widget.
+*
+*/
+
+#ifndef MOCKWIDGET_H
+#define MOCKWIDGET_H
+
+#include <hbwidget.h>
+
+class MockWidget: public HbWidget
+    {
+    Q_OBJECT
+    Q_PROPERTY(bool isOnline READ isOnline WRITE setOnline)
+    
+public:
+    MockWidget();
+    MockWidget(QSizeF widgetSize);
+    bool isOnline(){ return mOnline; }
+    void setOnline(bool online){ mOnline = online; }
+    QPainterPath shape() const;
+public slots:
+
+    void onInitialize();
+    void onShow();
+    void onHide();
+    void onUninitialize();
+    
+signals:
+    void setPreferences(const QStringList &names);
+    // for testing
+    void initializeCalled();
+    void showCalled();
+    void hideCalled();
+    void uninitializeCalled();
+private:
+    Q_DISABLE_COPY(MockWidget)         
+private:    
+    bool mOnline;
+ 
+    };
+
+#endif //MOCKWIDGET_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/mockwidget/src/mockwidget.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,66 @@
+/*
+* 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:  Mocked widget.
+*
+*/
+
+#include <qserviceinterfacedescriptor.h>
+#include <qabstractsecuritysession.h>
+#include <qservicecontext.h>
+
+#include "mockwidget.h"
+
+MockWidget::MockWidget():HbWidget()
+{
+    setProperty("my_preference1",QString("sun"));
+    setProperty("my_preference2",QString("moon"));
+    setProperty("my_preference3",QString("earth"));
+}
+
+MockWidget::MockWidget(QSizeF widgetSize):HbWidget()
+{
+    setProperty("my_preference1",QString("sun"));
+    setProperty("my_preference2",QString("moon"));
+    setProperty("my_preference3",QString("earth"));
+    
+    resize(widgetSize);
+}
+
+void MockWidget::onInitialize()
+{
+    emit initializeCalled();
+}
+
+void MockWidget::onShow()
+{
+    setProperty("testProperty",QString("dynamic_widget_property"));
+    emit showCalled();
+}
+
+void MockWidget::onHide()
+{
+    emit hideCalled();
+}
+
+void MockWidget::onUninitialize()
+{
+    emit uninitializeCalled();
+}
+
+QPainterPath MockWidget::shape() const
+{   
+    QPainterPath path;
+    path.addRect(rect());
+    return path;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/mockwidgetplugin/inc/mockwidgetplugin.h	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,37 @@
+/*
+* 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:  Mocked widget plugin.
+*
+*/
+
+#ifndef MOCKWIDGETPLUGIN_H
+#define MOCKWIDGETPLUGIN_H
+
+#include <QObject>
+#include <qserviceplugininterface.h>
+
+QTM_USE_NAMESPACE
+
+class MockWidgetPlugin : public QObject, public QServicePluginInterface
+{
+    Q_OBJECT
+    Q_INTERFACES(QtMobility::QServicePluginInterface)
+
+public:
+    QObject *createInstance(const QServiceInterfaceDescriptor &descriptor,
+                            QServiceContext *context,
+                            QAbstractSecuritySession *session);
+};
+
+#endif //MOCKRUNTIMEPLUGIN_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/mockwidgetplugin/installs_win32.pri	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,29 @@
+#
+# 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:
+#
+localtestfiles.files = ./debug/mockwidgetplugin.dll ./resource/mockwidgetplugin.xml 
+localtestfiles.path = ./../t_hsdomainmodel/debug/hsresources/plugins/widgetplugins
+
+localqmfiles.files = ./resource/mockwidgetplugin.qm
+localqmfiles.path = ./../t_hsdomainmodel/debug/resource/qt/translations
+
+globaltestfiles.files = ./debug/mockwidgetplugin.dll ./resource/mockwidgetplugin.xml
+globaltestfiles.path = ./../../../../../bin/hstests/hsresources/plugins/widgetplugins
+
+globalqmfiles.files = ./resource/mockwidgetplugin.qm
+globalqmfiles.path = ./../../../../../bin/hstests/resource/qt/translations
+
+
+INSTALLS += localtestfiles globaltestfiles localqmfiles globalqmfiles 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/mockwidgetplugin/mockwidgetplugin.pri	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,23 @@
+#
+# 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:
+#
+#Header files
+HEADERS += ./inc/*.h \
+                     ../mockwidget/inc/*.h
+
+#Source files
+SOURCES += ./src/*.cpp \
+                     ../mockwidget/src/*.cpp
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/mockwidgetplugin/mockwidgetplugin.pro	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,45 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+TEMPLATE = lib
+CONFIG += plugin hb mobility
+MOBILITY = serviceframework
+
+DEFINES += HSDOMAINMODEL_TEST
+
+DEPENDPATH += .\
+              ./src \
+              ./inc \
+              ../mockwidget/inc/ \
+              ../mockwidget/src/
+
+INCLUDEPATH += .\
+               ./inc \
+               ../mockwidget/inc/
+
+symbian: {
+
+CONFIG += symbian_test
+
+TARGET.UID3 = 0x20022F71
+TARGET.CAPABILITY = CAP_APPLICATION AllFiles
+TARGET.EPOCHEAPSIZE = 0x20000 0x1000000 // 128kB - 16MB
+TARGET.EPOCALLOWDLLDATA=1
+MMP_RULES += SMPSAFE
+}
+
+include(mockwidgetplugin.pri)
+win32:include(installs_win32.pri)
\ No newline at end of file
Binary file homescreenapp/hsdomainmodel/tsrc/mockwidgetplugin/resource/mockwidgetplugin.qm has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/mockwidgetplugin/resource/mockwidgetplugin.ts	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="3.0" language="en_GB" sourcelanguage="en_GB">
+<context>
+<message numerus="no" id="mockwidgetplugin_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="mockwidgetplugin_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>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/mockwidgetplugin/resource/mockwidgetplugin.xml	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<service>
+    <name>mockwidgetplugin</name>
+    <filepath>mockwidgetplugin</filepath>
+    <description>Mocked Homescreen Widget Plugin</description>
+    <interface>
+        <name>com.nokia.symbian.IHomeScreenWidget</name>
+        <version>1.0</version>
+        <description>widget interface</description>
+        <capabilities></capabilities>
+    </interface>
+</service>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/mockwidgetplugin/src/mockwidgetplugin.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,39 @@
+/*
+* 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:  Mocked widget plugin.
+*
+*/
+
+#include <qserviceinterfacedescriptor.h>
+#include <qabstractsecuritysession.h>
+#include <qservicecontext.h>
+
+#include "mockwidget.h"
+#include "mockwidgetplugin.h"
+
+QObject *MockWidgetPlugin::createInstance(const QServiceInterfaceDescriptor &descriptor,
+                                                QServiceContext *context,
+                                                QAbstractSecuritySession *session)
+{
+    Q_UNUSED(context);
+    Q_UNUSED(session);
+
+    if (descriptor.interfaceName() == "com.nokia.symbian.IHomeScreenWidget") {
+        return new MockWidget();
+    } else {
+        return 0;
+    }
+}
+
+Q_EXPORT_PLUGIN2(mockwidgetplugin, MockWidgetPlugin)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/mockwidgetplugincheater/inc/mockwidgetcheater.h	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,56 @@
+/*
+* 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:  Mocked Mocked widget plugin, which trys 
+*               to changes it's size illegally.
+*
+*/
+
+#ifndef MOCKWIDGETCHEATER_H
+#define MOCKWIDGETCHEATER_H
+
+#include <hbwidget.h>
+
+class MockWidgetCheater: public HbWidget
+    {
+    Q_OBJECT
+    Q_PROPERTY(bool isOnline READ isOnline WRITE setOnline)
+    
+public:
+    MockWidgetCheater();
+    MockWidgetCheater(QSizeF widgetSize);
+    bool isOnline(){ return mOnline; }
+    void setOnline(bool online){ mOnline = online; }    
+    QPainterPath shape() const;
+public slots:
+
+    void onInitialize();
+    void onShow();
+    void onHide();
+    void onUninitialize();
+    
+signals:
+    void setPreferences(const QStringList &names);
+    // for testing
+    void initializeCalled();
+    void showCalled();
+    void hideCalled();
+    void uninitializeCalled();
+private:
+    Q_DISABLE_COPY(MockWidgetCheater)         
+private:    
+    bool mOnline;    
+ 
+    };
+
+#endif //MOCKWIDGETCHEATER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/mockwidgetplugincheater/inc/mockwidgetplugincheater.h	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,38 @@
+/*
+* 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:  Mocked Mocked widget plugin, which trys 
+*               to changes it's size illegally.
+*
+*/
+
+#ifndef MOCKWIDGETPLUGINCHEATER_H
+#define MOCKWIDGETPLUGINCHEATER_H
+
+#include <QObject>
+#include <qserviceplugininterface.h>
+
+QTM_USE_NAMESPACE
+
+class MockWidgetPluginCheater : public QObject, public QServicePluginInterface
+{
+    Q_OBJECT
+    Q_INTERFACES(QtMobility::QServicePluginInterface)
+
+public:
+    QObject *createInstance(const QServiceInterfaceDescriptor &descriptor,
+                            QServiceContext *context,
+                            QAbstractSecuritySession *session);
+};
+
+#endif //MOCKWIDGETPLUGINCHEATER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/mockwidgetplugincheater/installs_win32.pri	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,29 @@
+#
+# 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:
+#
+localtestfiles.files = ./debug/mockwidgetplugincheater.dll ./resource/mockwidgetplugincheater.xml 
+localtestfiles.path = ./../t_hsdomainmodel/debug/hsresources/plugins/widgetplugins
+
+localqmfiles.files = ./resource/mockwidgetplugincheater.qm
+localqmfiles.path = ./../t_hsdomainmodel/debug/resource/qt/translations
+
+globaltestfiles.files = ./debug/mockwidgetplugincheater.dll ./resource/mockwidgetplugincheater.xml
+globaltestfiles.path = ./../../../../../bin/hstests/hsresources/plugins/widgetplugins
+
+globalqmfiles.files = ./resource/mockwidgetplugincheater.qm
+globalqmfiles.path = ./../../../../../bin/hstests/resource/qt/translations
+
+
+INSTALLS += localtestfiles globaltestfiles localqmfiles globalqmfiles 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/mockwidgetplugincheater/mockwidgetplugincheater.pri	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,21 @@
+#
+# 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:
+#
+#Header files
+HEADERS += ./inc/*.h
+
+#Source files
+SOURCES += ./src/*.cpp
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/mockwidgetplugincheater/mockwidgetplugincheater.pro	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,42 @@
+#
+# 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:
+#
+
+TEMPLATE = lib
+CONFIG += plugin hb mobility
+MOBILITY = serviceframework
+
+DEFINES += HSDOMAINMODEL_TEST
+
+DEPENDPATH += .\
+              ./src \
+              ./inc
+
+INCLUDEPATH += .\
+               ./inc
+
+symbian: {
+
+CONFIG += symbian_test
+
+TARGET.UID3 = 0x20022F70
+TARGET.CAPABILITY = CAP_APPLICATION AllFiles
+TARGET.EPOCHEAPSIZE = 0x20000 0x1000000 // 128kB - 16MB
+TARGET.EPOCALLOWDLLDATA=1
+MMP_RULES += SMPSAFE
+}
+
+include(mockwidgetplugincheater.pri)
+win32:include(installs_win32.pri)
\ No newline at end of file
Binary file homescreenapp/hsdomainmodel/tsrc/mockwidgetplugincheater/resource/mockwidgetplugincheater.qm has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/mockwidgetplugincheater/resource/mockwidgetplugincheater.ts	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="3.0" language="en_GB" sourcelanguage="en_GB">
+<context>
+<message numerus="no" id="mockwidgetplugin_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="mockwidgetplugin_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>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/mockwidgetplugincheater/resource/mockwidgetplugincheater.xml	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<service>
+    <name>mockwidgetplugincheater</name>
+    <filepath>mockwidgetplugincheater</filepath>
+    <description>Mocked Homescreen Widget Plugin, which cheats...</description>
+    <interface>
+        <name>com.nokia.symbian.IHomeScreenWidget</name>
+        <version>1.0</version>
+        <description>widget interface</description>
+        <capabilities></capabilities>
+    </interface>
+</service>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/mockwidgetplugincheater/src/mockwidgetcheater.cpp	Mon Oct 04 00:07:25 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:  Mocked Mocked widget plugin, which trys 
+*               to changes it's size illegally.
+*
+*/
+
+#include <qserviceinterfacedescriptor.h>
+#include <qabstractsecuritysession.h>
+#include <qservicecontext.h>
+
+#include "mockwidgetcheater.h"
+
+MockWidgetCheater::MockWidgetCheater():HbWidget()
+{
+    setProperty("my_preference1",QString("sun"));
+    setProperty("my_preference2",QString("moon"));
+    setProperty("my_preference3",QString("earth"));
+}
+
+MockWidgetCheater::MockWidgetCheater(QSizeF widgetSize):HbWidget()
+{
+    setProperty("my_preference1",QString("sun"));
+    setProperty("my_preference2",QString("moon"));
+    setProperty("my_preference3",QString("earth"));
+    
+    resize(widgetSize);
+}
+
+void MockWidgetCheater::onInitialize()
+{    
+    emit initializeCalled();
+}
+
+void MockWidgetCheater::onShow()
+{
+    setProperty("testProperty",QString("dynamic_widget_property"));
+    emit showCalled();
+}
+
+void MockWidgetCheater::onHide()
+{
+    emit hideCalled();
+}
+
+void MockWidgetCheater::onUninitialize()
+{
+    emit uninitializeCalled();
+}
+
+QPainterPath MockWidgetCheater::shape() const
+{   
+    QPainterPath path;
+    QRectF currentRect(rect());
+    currentRect.setHeight(currentRect.height() + 10);
+    path.addRect(currentRect);    
+    return path;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/mockwidgetplugincheater/src/mockwidgetplugincheater.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,40 @@
+/*
+* 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:  Mocked Mocked widget plugin, which trys 
+*               to changes it's size illegally.
+*
+*/
+
+#include <qserviceinterfacedescriptor.h>
+#include <qabstractsecuritysession.h>
+#include <qservicecontext.h>
+
+#include "mockwidgetcheater.h"
+#include "mockwidgetplugincheater.h"
+
+QObject *MockWidgetPluginCheater::createInstance(const QServiceInterfaceDescriptor &descriptor,
+                                                 QServiceContext *context,
+                                                 QAbstractSecuritySession *session)
+{
+    Q_UNUSED(context);
+    Q_UNUSED(session);
+
+    if (descriptor.interfaceName() == "com.nokia.symbian.IHomeScreenWidget") {
+        return new MockWidgetCheater(QSizeF(100,100));
+    } else {
+        return 0;
+    }
+}
+
+Q_EXPORT_PLUGIN2(mockwidgetplugincheater, MockWidgetPluginCheater)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/mockwidgetplugintoobig/inc/mockwidgetplugintoobig.h	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,37 @@
+/*
+* 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:  Mocked widget plugin.
+*
+*/
+
+#ifndef MOCKWIDGETPLUGINTOOBIG_H
+#define MOCKWIDGETPLUGINTOOBIG_H
+
+#include <QObject>
+#include <qserviceplugininterface.h>
+
+QTM_USE_NAMESPACE
+
+class MockWidgetPluginTooBig : public QObject, public QServicePluginInterface
+{
+    Q_OBJECT
+    Q_INTERFACES(QtMobility::QServicePluginInterface)
+
+public:
+    QObject *createInstance(const QServiceInterfaceDescriptor &descriptor,
+                            QServiceContext *context,
+                            QAbstractSecuritySession *session);
+};
+
+#endif //MOCKRUNTIMEPLUGINTOOBIG_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/mockwidgetplugintoobig/installs_win32.pri	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,22 @@
+#
+# 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:
+#
+localtestfiles.files = ./debug/mockwidgetplugintoobig.dll ./resource/mockwidgetplugintoobig.xml
+localtestfiles.path = ./../t_hsdomainmodel/debug/hsresources/plugins/widgetplugins
+
+globaltestfiles.files = ./debug/mockwidgetplugintoobig.dll ./resource/mockwidgetplugintoobig.xml
+globaltestfiles.path = ./../../../../../bin/hstests/hsresources/plugins/widgetplugins
+
+INSTALLS += localtestfiles globaltestfiles
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/mockwidgetplugintoobig/mockwidgetplugintoobig.pri	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,23 @@
+#
+# 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:
+#
+#Header files
+HEADERS += ./inc/*.h \
+                     ../mockwidget/inc/*.h
+
+#Source files
+SOURCES += ./src/*.cpp \
+                     ../mockwidget/src/*.cpp
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/mockwidgetplugintoobig/mockwidgetplugintoobig.pro	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,47 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+TEMPLATE = lib
+CONFIG += plugin hb mobility
+MOBILITY = serviceframework
+
+DEFINES += HSDOMAINMODEL_TEST
+
+DEPENDPATH += .\
+              ./src \
+              ./inc \
+              ../mockwidget/inc/ \
+              ../mockwidget/src/
+
+INCLUDEPATH += .\
+               ./inc \
+              ../mockwidget/inc/
+
+symbian: {
+
+CONFIG += symbian_test
+
+TARGET.UID3 = 0x20022F77
+TARGET.CAPABILITY = CAP_APPLICATION AllFiles
+TARGET.EPOCHEAPSIZE = 0x20000 0x1000000 // 128kB - 16MB
+TARGET.EPOCALLOWDLLDATA=1
+
+MMP_RULES += SMPSAFE
+
+}
+
+include(mockwidgetplugintoobig.pri)
+win32:include(installs_win32.pri)
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/mockwidgetplugintoobig/resource/mockwidgetplugintoobig.xml	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<service>
+    <name>mockwidgetplugintoobig</name>
+    <filepath>mockwidgetplugintoobig</filepath>
+    <description>Mocked Homescreen Widget Plugin</description>
+    <interface>
+        <name>com.nokia.symbian.IHomeScreenWidget</name>
+        <version>1.0</version>
+        <description>widget interface</description>
+        <capabilities></capabilities>
+    </interface>
+</service>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/mockwidgetplugintoobig/src/mockwidgetplugintoobig.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,39 @@
+/*
+* 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:  Mocked widget plugin.
+*
+*/
+
+#include <qserviceinterfacedescriptor.h>
+#include <qabstractsecuritysession.h>
+#include <qservicecontext.h>
+
+#include "mockwidget.h"
+#include "mockwidgetplugintoobig.h"
+
+QObject *MockWidgetPluginTooBig::createInstance(const QServiceInterfaceDescriptor &descriptor,
+                                                QServiceContext *context,
+                                                QAbstractSecuritySession *session)
+{
+    Q_UNUSED(context);
+    Q_UNUSED(session);
+
+    if (descriptor.interfaceName() == "com.nokia.symbian.IHomeScreenWidget") {
+        return new MockWidget(QSizeF(1000,1000));
+    } else {
+        return 0;
+    }
+}
+
+Q_EXPORT_PLUGIN2(mockwidgetplugintoobig, MockWidgetPluginTooBig)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/mockwidgetplugintoosmall/inc/mockwidgetplugintoosmall.h	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,37 @@
+/*
+* 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:  Mocked widget plugin.
+*
+*/
+
+#ifndef MOCKWIDGETPLUGINTOOSMALL_H
+#define MOCKWIDGETPLUGINTOOSMALL_H
+
+#include <QObject>
+#include <qserviceplugininterface.h>
+
+QTM_USE_NAMESPACE
+
+class MockWidgetPluginTooSmall : public QObject, public QServicePluginInterface
+{
+    Q_OBJECT
+    Q_INTERFACES(QtMobility::QServicePluginInterface)
+
+public:
+    QObject *createInstance(const QServiceInterfaceDescriptor &descriptor,
+                            QServiceContext *context,
+                            QAbstractSecuritySession *session);
+};
+
+#endif //MOCKRUNTIMEPLUGINTOOSMALL_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/mockwidgetplugintoosmall/installs_win32.pri	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,22 @@
+#
+# 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:
+#
+localtestfiles.files = ./debug/mockwidgetplugintoosmall.dll ./resource/mockwidgetplugintoosmall.xml 
+localtestfiles.path = ./../t_hsdomainmodel/debug/hsresources/plugins/widgetplugins
+
+globaltestfiles.files = ./debug/mockwidgetplugintoosmall.dll ./resource/mockwidgetplugintoosmall.xml
+globaltestfiles.path = ./../../../../../bin/hstests/hsresources/plugins/widgetplugins
+
+INSTALLS += localtestfiles globaltestfiles
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/mockwidgetplugintoosmall/mockwidgetplugintoosmall.pri	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,23 @@
+#
+# 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:
+#
+#Header files
+HEADERS += ./inc/*.h \
+                     ../mockwidget/inc/*.h
+
+#Source files
+SOURCES += ./src/*.cpp \
+                     ../mockwidget/src/*.cpp
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/mockwidgetplugintoosmall/mockwidgetplugintoosmall.pro	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,47 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+TEMPLATE = lib
+CONFIG += plugin hb mobility
+MOBILITY = serviceframework
+
+DEFINES += HSDOMAINMODEL_TEST
+
+DEPENDPATH += .\
+              ./src \
+              ./inc \
+              ../mockwidget/inc/ \
+              ../mockwidget/src/
+
+INCLUDEPATH += .\
+               ./inc \
+              ../mockwidget/inc/
+
+symbian: {
+
+CONFIG += symbian_test
+
+TARGET.UID3 = 0x20022F75
+TARGET.CAPABILITY = CAP_APPLICATION AllFiles
+TARGET.EPOCHEAPSIZE = 0x20000 0x1000000 // 128kB - 16MB
+TARGET.EPOCALLOWDLLDATA=1
+
+MMP_RULES += SMPSAFE
+
+}
+
+include(mockwidgetplugintoosmall.pri)
+win32:include(installs_win32.pri)
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/mockwidgetplugintoosmall/resource/mockwidgetplugintoosmall.xml	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<service>
+    <name>mockwidgetplugintoosmall</name>
+    <filepath>mockwidgetplugintoosmall</filepath>
+    <description>Mocked Homescreen Widget Plugin</description>
+    <interface>
+        <name>com.nokia.symbian.IHomeScreenWidget</name>
+        <version>1.0</version>
+        <description>widget interface</description>
+        <capabilities></capabilities>
+    </interface>
+</service>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/mockwidgetplugintoosmall/src/mockwidgetplugintoosmall.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,39 @@
+/*
+* 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:  Mocked widget plugin.
+*
+*/
+
+#include <qserviceinterfacedescriptor.h>
+#include <qabstractsecuritysession.h>
+#include <qservicecontext.h>
+
+#include "mockwidget.h"
+#include "mockwidgetplugintoosmall.h"
+
+QObject *MockWidgetPluginTooSmall::createInstance(const QServiceInterfaceDescriptor &descriptor,
+                                                QServiceContext *context,
+                                                QAbstractSecuritySession *session)
+{
+    Q_UNUSED(context);
+    Q_UNUSED(session);
+
+    if (descriptor.interfaceName() == "com.nokia.symbian.IHomeScreenWidget") {
+        return new MockWidget(QSizeF(5,5));
+    } else {
+        return 0;
+    }
+}
+
+Q_EXPORT_PLUGIN2(mockwidgetplugintoosmall, MockWidgetPluginTooSmall)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/sis/t_hsdomainmodel.pkg	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,64 @@
+;
+; 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:
+;
+
+; Language
+&EN
+
+; SIS header: name, uid, version
+#{"t_hsdomainmodel"},(0x20022F59),1,0,0
+
+; Localised Vendor name
+%{"Nokia"}
+
+; Unique Vendor name
+:"Nokia"
+
+; Supports S60 5th Edition
+[0x1028315F], 0, 0, 0, {"S60ProductID"}
+
+; domain model test
+"/epoc32/release/armv5/urel/t_hsdomainmodel.exe"                         - "c:/sys/bin/t_hsdomainmodel.exe"
+"/epoc32/data/z/private/10003a3f/import/apps/t_hsdomainmodel_reg.rsc"    - "c:/private/10003a3f/import/apps/t_hsdomainmodel_reg.rsc"
+"/epoc32/data/z/resource/apps/t_hsdomainmodel.rsc"                       - "c:/resource/apps/t_hsdomainmodel.rsc"
+
+; Test resources
+"../t_hsdomainmodel/hsdomainmodeltest.db" - "c:/private/20022F59/hsdomainmodeltest.db"
+"../t_hsdomainmodel/resource/default_portrait.png"       - "c:/private/20022F59/wallpapers/scene/default_landscape.png"
+"../t_hsdomainmodel/resource/default_landscape.png"  - "c:/private/20022F59/wallpapers/scene/default_portrait.png"
+"../t_hsdomainmodel/resource/default_portrait.png"       - "c:/private/20022F59/wallpapers/page/default_landscape.png"
+"../t_hsdomainmodel/resource/default_landscape.png"  - "c:/private/20022F59/wallpapers/page/default_portrait.png"
+
+; mockwidgetplugin
+"/epoc32/release/armv5/urel/mockwidgetplugin.dll" - "c:/sys/bin/mockwidgetplugin.dll"
+"/epoc32/data/z/private/20022F59/hsresources/plugins/widgetplugins/mockwidgetplugin.qtplugin" - "c:/private/20022F59/hsresources/plugins/widgetplugins/mockwidgetplugin.qtplugin"
+"/epoc32/data/z/private/20022F59/hsresources/plugins/widgetplugins/mockwidgetplugin.xml" - "c:/private/20022F59/hsresources/plugins/widgetplugins/mockwidgetplugin.xml"
+"/epoc32/data/z/resource/qt/translations/mockwidgetplugin.qm" - "c:/resource/qt/translations/mockwidgetplugin.qm"
+
+; mockwidgetplugintoosmall
+"/epoc32/release/armv5/urel/mockwidgetplugintoosmall.dll" - "c:/sys/bin/mockwidgetplugintoosmall.dll"
+"/epoc32/data/z/private/20022F59/hsresources/plugins/widgetplugins/mockwidgetplugintoosmall.qtplugin" - "c:/private/20022F59/hsresources/plugins/widgetplugins/mockwidgetplugintoosmall.qtplugin"
+"/epoc32/data/z/private/20022F59/hsresources/plugins/widgetplugins/mockwidgetplugintoosmall.xml" - "c:/private/20022F59/hsresources/plugins/widgetplugins/mockwidgetplugintoosmall.xml"
+
+; mockwidgetplugintoobig
+"/epoc32/release/armv5/urel/mockwidgetplugintoobig.dll" - "c:/sys/bin/mockwidgetplugintoobig.dll"
+"/epoc32/data/z/private/20022F59/hsresources/plugins/widgetplugins/mockwidgetplugintoobig.qtplugin" - "c:/private/20022F59/hsresources/plugins/widgetplugins/mockwidgetplugintoobig.qtplugin"
+"/epoc32/data/z/private/20022F59/hsresources/plugins/widgetplugins/mockwidgetplugintoobig.xml" - "c:/private/20022F59/hsresources/plugins/widgetplugins/mockwidgetplugintoobig.xml"
+
+; mockwidgetplugincheater
+"/epoc32/release/armv5/urel/mockwidgetplugincheater.dll" - "c:/sys/bin/mockwidgetplugincheater.dll"
+"/epoc32/data/z/private/20022F59/hsresources/plugins/widgetplugins/mockwidgetplugincheater.qtplugin" - "c:/private/20022F59/hsresources/plugins/widgetplugins/mockwidgetplugincheater.qtplugin"
+"/epoc32/data/z/private/20022F59/hsresources/plugins/widgetplugins/mockwidgetplugincheater.xml" - "c:/private/20022F59/hsresources/plugins/widgetplugins/mockwidgetplugincheater.xml"
+"/epoc32/data/z/resource/qt/translations/mockwidgetplugincheater.qm" - "c:/resource/qt/translations/mockwidgetplugincheater.qm"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/sis/t_hsdomainmodel_sisx.bat	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,30 @@
+@rem
+@rem Copyright (c) 2009 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 t_hsdomainmodel.sisx del t_hsdomainmodel.sisx
+
+makesis t_hsdomainmodel.pkg
+signsis t_hsdomainmodel.sis t_hsdomainmodel.sisx ../../../internal/sis/rd.cer ../../../internal/sis/rd-key.pem
+
+if exist t_hsdomainmodel.sisx (
+echo t_hsdomainmodel.sisx creation SUCCEEDED
+del t_hsdomainmodel.sis
+)
+
+if not exist t_hsdomainmodel.sisx (
+echo t_hsdomainmodel.sisx creation FAILED
+)
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/createdatabase.sql	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,39 @@
+DROP TABLE IF EXISTS Scene;
+CREATE TABLE Scene (
+  id INTEGER PRIMARY KEY);
+
+DROP TABLE IF EXISTS Pages;
+CREATE TABLE Pages (
+  id INTEGER PRIMARY KEY,  
+  indexPosition INTEGER);
+
+DROP TABLE IF EXISTS Widgets;
+CREATE TABLE Widgets (
+  id INTEGER PRIMARY KEY,
+  uri TEXT,  
+  pageId INTEGER);
+
+DROP TABLE IF EXISTS WidgetPresentations;
+CREATE TABLE WidgetPresentations (
+  key TEXT,
+  x REAL,
+  y REAL,
+  zValue REAL,	
+  widgetId INTEGER,
+  UNIQUE(widgetId, key) ON CONFLICT REPLACE,
+  FOREIGN KEY(widgetId) REFERENCES Widgets(id) ON DELETE CASCADE);
+
+DROP TABLE IF EXISTS WidgetPreferences;
+CREATE TABLE WidgetPreferences (
+  key TEXT,
+  value TEXT,
+  widgetId INTEGER,
+  UNIQUE(widgetId, key) ON CONFLICT REPLACE,
+  FOREIGN KEY(widgetId) REFERENCES Widgets(id) ON DELETE CASCADE);
+
+DROP TABLE IF EXISTS Configuration;
+CREATE TABLE Configuration (
+	key TEXT,
+	value TEXT,
+	UNIQUE(key) ON CONFLICT REPLACE);
+	
\ No newline at end of file
Binary file homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/hsdomainmodeltest.db has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/hsdomainmodeltest.sql	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,42 @@
+INSERT INTO Scene (id) VALUES (1);
+INSERT INTO Configuration (key, value) VALUES ('bounceEffect', '20');
+INSERT INTO Configuration (key, value) VALUES ('widgetTapAndHoldTimeout', '500');
+INSERT INTO Configuration (key, value) VALUES ('sceneTapAndHoldTimeout', '500');
+INSERT INTO Configuration (key, value) VALUES ('pageChangeAnimationDuration', '200');
+INSERT INTO Configuration (key, value) VALUES ('pageChangeZoneAnimationDuration', '800');
+INSERT INTO Configuration (key, value) VALUES ('pageChangeZoneReverseAnimationDuration', '200');
+INSERT INTO Configuration (key, value) VALUES ('pageRemovedAnimationDuration', '200');
+INSERT INTO Configuration (key, value) VALUES ('newPageAddedAnimationDuration', '200');
+INSERT INTO Configuration (key, value) VALUES ('widgetDragEffectDuration', '200');
+INSERT INTO Configuration (key, value) VALUES ('widgetDropEffectDuration', '200');
+INSERT INTO Configuration (key, value) VALUES ('defaultPageId', '1');
+INSERT INTO Configuration (key, value) VALUES ('maximumPageCount', '8');
+INSERT INTO Configuration (key, value) VALUES ('isShortcutLabelVisible', 'true');
+INSERT INTO Configuration (key, value) VALUES ('bounceFeedbackEffectDistance', '3');
+INSERT INTO Configuration (key, value) VALUES ('pageChangePanDistanceInPixels', '120');
+INSERT INTO Configuration (key, value) VALUES ('tapAndHoldDistance', '16');
+INSERT INTO Configuration (key, value) VALUES ('pageChangeZoneWidth', '60');
+INSERT INTO Configuration (key, value) VALUES ('pageIndicatorSpacing', '8');
+INSERT INTO Configuration (key, value) VALUES ('maximumWidgetHeight', '39');
+INSERT INTO Configuration (key, value) VALUES ('maximumWidgetWidth', '48');
+INSERT INTO Configuration (key, value) VALUES ('minimumWidgetHeight', '8.75');
+INSERT INTO Configuration (key, value) VALUES ('minimumWidgetWidth', '8.75');
+INSERT INTO Configuration (key, value) VALUES ('pageChangePanDistance', '17.91');
+INSERT INTO Configuration (key, value) VALUES ('pageChangeFeedbackEffect', 'Sensitive');
+INSERT INTO Configuration (key, value) VALUES ('widgetPickFeedbackEffect', 'ItemPick');
+INSERT INTO Configuration (key, value) VALUES ('widgetDropFeedbackEffect', 'ItemDrop');
+INSERT INTO Configuration (key, value) VALUES ('widgetRepositionFeedbackEffect', 'BounceEffect');
+INSERT INTO Configuration (key, value) VALUES ('widgetOverTrashbinFeedbackEffect', 'ItemMoveOver');
+INSERT INTO Configuration (key, value) VALUES ('widgetDropToTrashbinFeedbackEffect', 'ItemDrop');
+INSERT INTO Configuration (key, value) VALUES ('shortcutWidgetTapFeedbackEffect', 'BasicItem');
+INSERT INTO Configuration (key, value) VALUES ('widgetMoveBlockedFeedbackEffect', 'Basic');
+INSERT INTO Configuration (key, value) VALUES ('clockWidgetTapFeedbackEffect', 'BasicItem');
+INSERT INTO Configuration (key, value) VALUES ('widgetSnappingFeedbackEffect', 'ItemMoveOver');
+INSERT INTO Configuration (key, value) VALUES ('isSnapEnabled', 'true');
+INSERT INTO Configuration (key, value) VALUES ('snapTimeout', '1000');
+INSERT INTO Configuration (key, value) VALUES ('snapForce', '30');
+INSERT INTO Configuration (key, value) VALUES ('snapGap', '6');
+INSERT INTO Configuration (key, value) VALUES ('snapBorderGap', '0');
+INSERT INTO Configuration (key, value) VALUES ('snapLineFadeInDuration', '200');
+INSERT INTO Configuration (key, value) VALUES ('snapLineFadeOutDuration', '100');
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/inc/t_hsdomainmodel.h	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,232 @@
+/*
+* 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 <QtTest/QtTest>
+#include <QObject>
+
+#include <HbMainWindow.h>
+
+class CaService;
+
+class TestHsDomainModel : public QObject
+{
+    Q_OBJECT
+
+private slots:
+    void init();
+    void cleanup();
+    void initTestCase();
+    void cleanupTestCase(); 
+ 
+    //t_hswidgethostvisual
+    void testHsWidgetHostVisualConstruction();
+    void testHsWidgetHostVisualShape();
+    void testHsWidgetHostVisualSetWidget();
+    void testHsWidgetHostVisualSetVisualModel();
+    void testHsWidgetHostVisualEffects();
+    void testHsWidgetHostVisualEventFilter();
+    void testHsWidgetHostVisualGestureEvent();
+    void testHsWidgetHostVisualSetupTouchArea();
+    void testHsWidgetHostVisualSetupEffects();
+    void testHsWidgetHostVisualSetNewSize();
+
+    //t_hsidlewidget
+    void testIdleWidgetConstruction();
+    void testIdleWidgetSetGeometry();
+    void testIdleWidgetSetSceneX();
+    void testIdleWidgetSetActivePage();
+    void testIdleWidgetInsertPage();
+    void testIdleWidgetRemovePage();
+    void testIdleWidgetLayers();
+    void testIdleWidgetTrashbin();
+    void testIdleWidgetPageIndicator();
+    void testIdleWidgetParallaxFactor();
+    void testIdleWidgetShowTrashBin();
+    void testIdleWidgetShowPageIndicator();
+    void testIdleWidgetShowSnapLines();
+    void testIdleWidgetPolishEvent();
+
+    // testshortcutservice.cpp
+    void testShortcutService();
+
+    //t_hsdatabase.cpp
+    void testHsDatabaseConstruction();
+    void testHsDatabaseProperties();
+    void testHsDatabaseStaticInterface();
+    void testHsDatabaseTransaction();
+    void testHsDatabaseSceneMethods();
+    void testHsDatabasePageMethods();
+    void testHsDatabaseWidgetMethods();
+    void testHsDatabaseWidgetPreferenceMethods();
+	void testHsDatabaseBadConnection();
+    void testHsDatabaseMatchWidgetsPreferences_data();
+    void testHsDatabaseMatchWidgetsPreferences();
+    void testHsDatabaseWidgetsCount();
+    void testHsDatabaseUpdateWidgetZValues();
+
+    //t_hswidgethost.cpp
+    void testHsWidgetHostConstruction();
+    void testHsWidgetHostStateMachine();
+    void testHsWidgetHostCloseAndRemove();
+    void testHsWidgetHostPage();
+    void testHsWidgetHostEffects();
+    void testHsWidgetHostShowAndHideActions();
+    void testHsWidgetHostPresentation();
+    void testHsWidgetHostOnError();
+    void testHsWidgetHostOnSetPreferences();
+    void testHsWidgetHostShape();
+    void testHsWidgetHostShapeInvalidValues();
+    void testHsWidgetHostGestureEvent();
+
+    //testcontentservice.cpp
+    void testCreateNDeleteWidget();
+    void testContentServiceStaticInterface();
+    void testContentServiceWidgetCount();
+
+    //t_hswallpaperloaderthread.cpp
+    void testHsWallpaperLoaderThreadConstruction();
+    void testHsWallpaperLoaderThreadRun();
+
+    //t_hswallpaperloader.cpp
+    void testHsWallpaperLoaderConstruction();
+    void testHsWallpaperLoaderStartWithFinished();
+    void testHsWallpaperLoaderStartWithFailed();
+    void testHsWallpaperLoaderCancel();
+
+    //t_hswallpaper.cpp
+    void testHsWallpaperConstruction();
+    void testHsWallpaperSetNRemoveDefaultImage();
+    void testHsWallpaperSetNRemoveImage();
+    void testHsWallpaperLoaderFailed();
+    void testHsWallpaperScene();
+    void testHsWallpaperPage();
+    void testHsWallpaperSetImages();
+
+    //t_hspage.cpp
+    void testHsPage();
+    void testHsPageLoad();
+    void testHsPageContentRects();
+    void testHsPageAddRemoveWidget();
+    void testHsPageAddExistingWidget();
+    void testHsPageWidgetFinished();
+    void testHsPageIsActivePage();
+    void testHsPageWidgetSignals();
+    void testHsPageOrientationChange();
+    void testHsPageDeleteFromDatabase();
+    void testHsPageOnPageMarginChanged();
+    void testHsPageIndex();
+
+    //t_hspagenewwidgetlayout.cpp
+    void testHsPageNewWidgetLayout();
+    void testHsPageNewWidgetLayoutWithPosition();
+
+    //t_hsscene.cpp
+    void testSceneDefaultValues();
+    void testSceneStaticInterface();
+    void testSceneLoad();
+    void testSceneAddPages();
+    void testSceneOnline();
+    void testSceneEventFilter();
+
+    //t_hswidgetcomponent.cpp
+    void testWidgetComponent();
+    void testWidgetComponentEmits();
+
+    //t_hswidgetcomponentregistry.cpp
+    void testWidgetComponentRegistry();
+    void testWidgetComponentRegistryOnEntryChanged();
+
+    // hswidgetcomponentdescriptor.cpp
+    void testWidgetComponentDescriptor();
+
+    // t_hsbackuprestoreobserver.cpp
+    void testBackupRestoreObserver();
+    void testBackupRestoreObserverStarted();
+    void testBackupRestoreObserverCompleted();
+#ifdef Q_OS_SYMBIAN
+    void testBackupRestoreObserverPsKeyObserver();
+#endif //Q_OS_SYMBIAN
+    // t_hsbackuprestoreactivecallback.cpp
+    void testBackupRestoreActiveCallback();
+
+    // t_hsconfiguration.cpp
+    void testConfigurationConstruction();
+    void testConfigurationStaticInterface();
+    void testConfigurationSizes();
+    void testConfigurationImportAndExport();
+    void testConfigurationLoad();
+
+    // t_hspagetoucharea.cpp
+    void testPageTouchAreaConstruction();
+    void testPageTouchAreaGestureEvent();
+
+    // t_hswidgettoucharea.cpp
+    void testWidgetTouchAreaConstruction();
+    void testWidgetTouchAreaSceneEvent();
+    void testWidgetTouchAreaGestureEvent();
+		
+	// hsdocumentloader.cpp
+    void testDocumentLoaderConstructors();
+    void testDocumentLoaderCreateObjects();
+
+    // t_hswidgetpositioningonwidgetadd
+    void testWidgetPositioningOnWidgetAddChangeInstance();
+    void testHsAnchorPointInBottomRight_data();
+    void testHsAnchorPointInBottomRight();
+    void testHsWidgetOrganizerCase1_data();
+    void testHsWidgetOrganizerCase1();
+    void testHsWidgetOrganizerCase2_data();
+    void testHsWidgetOrganizerCase2();
+    void testHsWidgetOrganizerCase3_data();
+    void testHsWidgetOrganizerCase3(); 
+	
+    /**
+    * hsgui.cpp
+    */
+    void testGuiStaticInterface();
+    void testSetupCleanupIdleUi();
+    void testOrientation();
+    void testShow();
+    void testPageChangeAnimation();
+    void testPageCrawlingAnimation();
+
+    /**
+    * hshostedwidgetfactory.cpp
+    */
+    void testHostedWidgetFactoryStaticInterface();
+private:
+    void createPagesToDatabase(int pageCount);
+    void createSceneWithPages(int pageCount=1,int activePageIndex=0);
+    void destroySceneAndPages();
+    QString sourceTestWallpaper();
+    QString targetPortraitTestWallpaper();
+    QString targetLandscapeTestWallpaper();
+    QString tempTestWallpaper();
+    QString notExistingTestWallpaper();
+    QString wallpaperDirectory();
+    void cleanupTargetWallpaperFiles();
+
+signals:
+    void quitStateMachine();
+
+private:
+    HbMainWindow mainWindow;
+
+    QSharedPointer<CaService> mCaService;
+    bool mWallpaperTypeScene; //set true at init()
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/installs_symbian.pri	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,44 @@
+#
+# 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:
+#
+
+exporttestdb.sources = hsdomainmodeltest.db
+exporttestdb.path = .
+
+exporttestwallpapers.sources =  ./resource/default_portrait.png \
+                              ./resource/default_landscape.png
+exporttestwallpapers.path = ./wallpapers/scene/
+
+exporttestwallpapers2.sources =  ./resource/default_portrait.png \
+                               ./resource/default_landscape.png
+exporttestwallpapers2.path = ./wallpapers/page/
+
+exportmockwidgetplugin.sources = ./../mockwidgetplugin/resource/mockwidgetplugin.xml \
+                                 ./../mockwidgetplugincheater/resource/mockwidgetplugincheater.xml \
+                                 ./../mockwidgetplugintoobig/resource/mockwidgetplugintoobig.xml \
+                                 ./../mockwidgetplugintoosmall/resource/mockwidgetplugintoosmall.xml
+exportmockwidgetplugin.path = ./hsresources/plugins/widgetplugins
+
+mockwidgetpluginqmfiles.sources = ./../mockwidgetplugin/resource/mockwidgetplugin.qm \
+                                  ./../mockwidgetplugincheater/resource/mockwidgetplugincheater.qm
+mockwidgetpluginqmfiles.path = /resource/qt/translations
+
+pluginstub.sources = ./../mockwidgetplugin/qmakepluginstubs/mockwidgetplugin.dll \
+                     ./../mockwidgetplugincheater/qmakepluginstubs/mockwidgetplugincheater.dll \
+                     ./../mockwidgetplugintoobig/qmakepluginstubs/mockwidgetplugintoobig.dll \
+                     ./../mockwidgetplugintoosmall/qmakepluginstubs/mockwidgetplugintoosmall.dll
+pluginstub.path = ./hsresources/plugins/widgetplugins
+
+DEPLOYMENT += exporttestdb exporttestwallpapers exporttestwallpapers2 exportmockwidgetplugin mockwidgetpluginqmfiles pluginstub
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/installs_win32.pri	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,53 @@
+#
+# 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:
+
+dlocaldatafiles1.files =  ./hsdomainmodeltest.db
+dlocaldatafiles1.path = ./debug
+
+dlocaldatafiles2.files =  ./resource/*.png
+dlocaldatafiles2.path = ./debug/wallpapers/scene/
+
+dlocaldatafiles3.files =  ./resource/*.png
+dlocaldatafiles3.path = ./debug/wallpapers/page/
+
+globaldatafiles1.files =  ./hsdomainmodeltest.db
+globaldatafiles1.path = ./../../../../../bin/hstests
+
+globaldatafiles2.files =  ./resource/*.png
+globaldatafiles2.path = ./../../../../../bin/hstests/wallpapers/scene/
+
+globaldatafiles3.files =  ./resource/*.png
+globaldatafiles3.path = ./../../../../../bin/hstests/wallpapers/page/
+
+globaltest.files = ./../../../../../bin/debug/caclient.dll \
+                 ./../../../../../bin/debug/hsutils.dll \
+                  ./debug/t_hsdomainmodel.exe
+globaltest.path = ./../../../../../bin/hstests
+
+ddepend1.files = ./../../../../../bin/debug/caclient.dll \
+                 ./../../../../../bin/debug/hsutils.dll
+ddepend1.path = ./debug
+
+testfiles.path = ./../../../../../bin/hstests
+testfiles.files = ./debug/t_hsdomainmodel.exe
+
+testresources.path = ./../../../../../bin/hstests/hsresources/
+testresources.files = ../../resource/controllayer.docml
+
+docmltestresources_local.path = ./hsresources/
+docmltestresources_local.files = ../../resource/controllayer.docml
+
+dtestresources_local.path = ./debug/hsresources/
+dtestresources_local.files = ../../resource/controllayer.docml
+
+INSTALLS += dlocaldatafiles1 dlocaldatafiles2 dlocaldatafiles3 globaldatafiles1 globaldatafiles2 globaldatafiles3 globaltest ddepend1 testfiles testresources docmltestresources_local dtestresources_local
Binary file homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/resource/default_landscape.png has changed
Binary file homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/resource/default_portrait.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/abclient_mock.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,83 @@
+// 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:
+// Mocked implementation of CActiveBackupClient class.
+//
+//
+
+
+#include <QtGlobal>
+#ifdef Q_OS_SYMBIAN
+
+#include "abclient.h"
+
+namespace conn
+    {
+
+    CActiveBackupClient::CActiveBackupClient() : iClientSession(NULL), iABCallbackHandler(NULL)
+    {
+    }
+
+
+    EXPORT_C CActiveBackupClient* CActiveBackupClient::NewL()
+    {
+        CActiveBackupClient* self = new (ELeave) CActiveBackupClient();
+        CleanupStack::PushL(self);
+        self->ConstructL();
+        CleanupStack::Pop(self);
+        return self;
+    }
+
+    EXPORT_C CActiveBackupClient* CActiveBackupClient::NewL(MActiveBackupDataClient* aClient)
+    {
+        CActiveBackupClient* self = new (ELeave) CActiveBackupClient();
+        CleanupStack::PushL(self);
+        self->ConstructL(aClient);
+        CleanupStack::Pop(self);
+        return self;
+    }
+
+    void CActiveBackupClient::ConstructL()
+    {
+    }
+
+    void CActiveBackupClient::ConstructL(MActiveBackupDataClient* aClient)
+    {
+        ConstructL();
+        Q_UNUSED(aClient);
+    }
+
+    EXPORT_C CActiveBackupClient::~CActiveBackupClient()
+    {
+    }
+
+    EXPORT_C void CActiveBackupClient::BURModeInfoL(TDriveList& aDriveList, TBURPartType& aBackupType, TBackupIncType& aIncBackupType)
+    {
+        Q_UNUSED(aDriveList);
+        Q_UNUSED(aBackupType);
+        Q_UNUSED(aIncBackupType);
+    }
+
+    EXPORT_C TBool CActiveBackupClient::DoesPartialBURAffectMeL()
+    {
+        return EFalse;
+    }
+
+    EXPORT_C void CActiveBackupClient::ConfirmReadyForBURL(TInt aErrorCode)
+    {
+        Q_UNUSED(aErrorCode);
+    }
+
+} // end of conn namespace
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/hspropertyanimationwrapper_mock.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,103 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#include <QPropertyAnimation>
+#include "hspropertyanimationwrapper.h"
+
+/*!
+    \class HsMessageBoxWrapper
+    \ingroup group_hsutils
+    \brief 
+*/
+struct HsPropertyAnimationWrapperImpl
+{
+public:
+    bool running;
+    bool forward;
+};
+
+/*!
+
+*/
+HsPropertyAnimationWrapper::HsPropertyAnimationWrapper(QObject *parent)
+  : QObject(parent),mImpl(new HsPropertyAnimationWrapperImpl)
+{
+    mImpl->running = false;
+    mImpl->forward = true;
+}
+
+/*!
+
+*/
+HsPropertyAnimationWrapper::~HsPropertyAnimationWrapper()
+{
+  
+}
+
+/*!
+
+*/
+void HsPropertyAnimationWrapper::setTargetObject(QObject *target)
+{
+   Q_UNUSED(target)
+}
+/*!
+
+*/
+void HsPropertyAnimationWrapper::setPropertyName(const QByteArray &propertyName)
+{
+   Q_UNUSED(propertyName)
+}
+
+bool HsPropertyAnimationWrapper::isRunning()
+{
+    return mImpl->running;
+}
+void HsPropertyAnimationWrapper::setEndValue(const QVariant &value)
+{
+     Q_UNUSED(value)
+}
+void HsPropertyAnimationWrapper::setDuration(int msecs)
+{
+     Q_UNUSED(msecs)
+}
+void HsPropertyAnimationWrapper::setForward()
+{
+    mImpl->forward = true;
+}
+
+void HsPropertyAnimationWrapper::setBackward()
+{
+     mImpl->forward = false;
+}
+
+bool HsPropertyAnimationWrapper::isForward() const
+{
+    return mImpl->forward;
+}
+void HsPropertyAnimationWrapper::start()
+{
+    mImpl->running = true;
+    emit finished();
+}
+/*!
+
+*/
+void HsPropertyAnimationWrapper::stop()
+{
+    mImpl->running = false;
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/t_hsbackuprestoreactivecallback.cpp	Mon Oct 04 00:07:25 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:
+*
+*/
+
+
+#include "t_hsdomainmodel.h"
+#include "hsbackuprestoreobserver.h"
+#ifdef Q_OS_SYMBIAN
+#include "hsbackuprestoreactivecallback.h"
+#endif
+/*!
+
+*/
+void TestHsDomainModel::testBackupRestoreActiveCallback()
+{
+#ifdef Q_OS_SYMBIAN
+    int error = 0;
+    HsBackupRestoreObserver *observer = HsBackupRestoreObserver::instance();
+    CHsBURActiveCallback *activeCallback = 0;
+    TRAP(error, activeCallback = CHsBURActiveCallback::NewL(observer));
+    QVERIFY(error == KErrNone);
+    QVERIFY(activeCallback);
+    activeCallback->AllSnapshotsSuppliedL();
+
+    TDriveNumber driveNumber = EDriveC;
+    TBuf8<1> buf;
+    HBufC8 *heapBuf = HBufC8::NewL(1);
+    TBool retValue = EFalse;
+    
+    TRAP(error, activeCallback->ReceiveSnapshotDataL(driveNumber, buf, retValue));
+    QVERIFY(error == KErrNotSupported);
+    
+    TUint dataSize = activeCallback->GetExpectedDataSize(driveNumber);
+    QVERIFY(dataSize == 0);
+        
+    TPtr8 bufPtr = heapBuf->Des();
+    TRAP(error, activeCallback->GetSnapshotDataL(driveNumber, bufPtr, retValue));
+    QVERIFY(error == KErrNotSupported);
+    
+    activeCallback->InitialiseGetBackupDataL(driveNumber);
+    QVERIFY(observer->checkBUR());
+    
+    TRAP(error, activeCallback->GetBackupDataSectionL(bufPtr, retValue));
+    QVERIFY(error == KErrNone);
+    QVERIFY(retValue);
+    
+    TRAP(error, activeCallback->InitialiseRestoreBaseDataL(driveNumber));
+    QVERIFY(error == KErrNotSupported);
+    
+    TRAP(error, activeCallback->RestoreBaseDataSectionL(buf, retValue));
+    QVERIFY(error == KErrNotSupported);
+    
+    TRAP(error, activeCallback->InitialiseRestoreIncrementDataL(driveNumber));
+    QVERIFY(error == KErrNotSupported);
+    
+    TRAP(error, activeCallback->RestoreIncrementDataSectionL(buf, retValue));
+    QVERIFY(error == KErrNotSupported);
+
+    activeCallback->RestoreComplete(driveNumber);
+    activeCallback->TerminateMultiStageOperation();
+    QVERIFY(activeCallback->GetDataChecksum(driveNumber)==0);
+    
+    delete activeCallback;
+#endif
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/t_hsbackuprestoreobserver.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,86 @@
+/*
+* 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:  Wallpaper test.
+*
+*/
+
+
+#include "t_hsdomainmodel.h"
+#include "hsbackuprestoreobserver.h"
+#include "hsscene.h"
+#include <QPainter>
+#ifdef Q_OS_SYMBIAN
+#include <connect/sbdefs.h>
+#include <e32property.h>
+#include <connect/abclient.h>
+#include <XQSettingsKey>
+#include "hsbackuprestoreobserver_p.h"
+
+using namespace conn;
+#endif //Q_OS_SYMBIAN
+/*!
+
+*/
+void TestHsDomainModel::testBackupRestoreObserver()
+{
+    HsBackupRestoreObserver *observer = HsBackupRestoreObserver::instance();
+    QVERIFY(observer);
+    QVERIFY(observer->mInstance != 0);
+    QVERIFY(observer->mInstance == HsBackupRestoreObserver::instance());
+    delete observer->mInstance;
+    observer->mInstance = 0;
+}
+
+
+void TestHsDomainModel::testBackupRestoreObserverStarted()
+{
+    HsBackupRestoreObserver *observer = HsBackupRestoreObserver::instance();
+    QSignalSpy observerSpy(observer,SIGNAL(event_backupRestoreStarted()));
+    observer->backupRestoreStarted();
+    observer->readyForBUR();
+    QVERIFY(observer->mBUROngoing);
+    QVERIFY(observer->checkBUR());
+    QVERIFY(observerSpy.count()==1);
+    delete observer->mInstance;
+    observer->mInstance = 0;}
+
+void TestHsDomainModel::testBackupRestoreObserverCompleted()
+{
+    HsBackupRestoreObserver *observer = HsBackupRestoreObserver::instance();
+    QSignalSpy observerSpy(observer,SIGNAL(event_backupRestoreCompleted()));
+    observer->backupRestoreCompleted();
+    QVERIFY(!observer->mBUROngoing);
+    QVERIFY(!observer->checkBUR());
+    QVERIFY(observerSpy.count()==1);
+    delete observer->mInstance;
+    observer->mInstance = 0;
+}
+
+#ifdef Q_OS_SYMBIAN
+void TestHsDomainModel::testBackupRestoreObserverPsKeyObserver()
+{
+    HsBackupRestoreObserver *observer = HsBackupRestoreObserver::instance();
+    XQSettingsKey brk(XQSettingsKey::TargetPublishAndSubscribe,
+                      KUidSystemCategory.iUid, KUidBackupRestoreKey);
+    observer->mD->handleKeyChange(brk, conn::EBURBackupFull);
+    QVERIFY(observer->mBUROngoing);
+    QVERIFY(observer->checkBUR());
+
+    observer->mD->handleKeyChange(brk, conn::EBURNormal);
+    QVERIFY(!observer->mBUROngoing);
+    QVERIFY(!observer->checkBUR());
+    delete observer->mInstance;
+    observer->mInstance = 0;
+}
+#endif //Q_OS_SYMBIAN
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/t_hsconfiguration.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,178 @@
+/*
+* 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 <HbDeviceProfile>
+
+#include "t_hsdomainmodel.h"
+#include "hsdomainmodeldatastructures.h"
+#include "hsconfiguration.h"
+
+
+void TestHsDomainModel::testConfigurationConstruction()
+{
+    HsConfiguration *c = new HsConfiguration;
+
+    QCOMPARE(c->mBounceEffect, 20);    
+    QCOMPARE(c->mPageChangeAnimationDuration, 300);
+    QCOMPARE(c->mPageChangeZoneAnimationDuration, 600);
+    QCOMPARE(c->mPageChangeZoneReverseAnimationDuration, 200);
+    QCOMPARE(c->mPageRemovedAnimationDuration, 1000);
+    QCOMPARE(c->mNewPageAddedAnimationDuration, 1000);
+    QCOMPARE(c->mWidgetDragEffectDuration, 250);
+    QCOMPARE(c->mWidgetDropEffectDuration, 200);
+    QCOMPARE(c->mDefaultPageId, 1);
+    QCOMPARE(c->mMaximumPageCount, 8);
+    QCOMPARE(c->mIsShortcutLabelVisible, true);
+    QCOMPARE(c->mBounceFeedbackEffectDistance, qreal(3));
+    QCOMPARE(c->mPageChangeZoneWidth, qreal(30));
+    QCOMPARE(c->mPageIndicatorSpacing, qreal(8));
+    QCOMPARE(c->mMaximumWidgetHeight, qreal(39));
+    QCOMPARE(c->mMaximumWidgetWidth, qreal(48));
+    QCOMPARE(c->mMinimumWidgetHeight, qreal(8.75));
+    QCOMPARE(c->mMinimumWidgetWidth, qreal(8.75));
+    QCOMPARE(c->mPageChangePanDistance, qreal(120));
+    QCOMPARE(c->mPageChangeFeedbackEffect, HbFeedback::Sensitive);
+    QCOMPARE(c->mWidgetPickFeedbackEffect, HbFeedback::ItemPick);
+    QCOMPARE(c->mWidgetDropFeedbackEffect, HbFeedback::ItemDrop);
+    QCOMPARE(c->mWidgetRepositionFeedbackEffect, HbFeedback::BounceEffect);
+    QCOMPARE(c->mWidgetOverTrashbinFeedbackEffect, HbFeedback::ItemMoveOver);
+    QCOMPARE(c->mWidgetDropToTrashbinFeedbackEffect, HbFeedback::ItemDrop);
+    QCOMPARE(c->mShortcutWidgetTapFeedbackEffect, HbFeedback::BasicItem);
+    QCOMPARE(c->mWidgetMoveBlockedFeedbackEffect, HbFeedback::Basic);
+    QCOMPARE(c->mClockWidgetTapFeedbackEffect, HbFeedback::BasicItem);
+    QCOMPARE(c->mWidgetSnappingFeedbackEffect, HbFeedback::ItemMoveOver);
+    QCOMPARE(c->mIsSnapEnabled, true);
+    QCOMPARE(c->mSnapTimeout, 300);
+    QCOMPARE(c->mSnapForce, qreal(30));
+    QCOMPARE(c->mSnapGap, qreal(6));
+    QCOMPARE(c->mPageMargin, qreal(0));
+    QCOMPARE(c->mSnapLineFadeInDuration, 100);
+    QCOMPARE(c->mSnapLineFadeOutDuration, 100);
+    QCOMPARE(c->mSceneType, HsConfiguration::PageWallpapers);
+
+    delete c;
+}
+
+void TestHsDomainModel::testConfigurationStaticInterface()
+{
+    HsConfiguration *stored = HsConfiguration::takeInstance();
+
+    HsConfiguration *c = new HsConfiguration;
+    QVERIFY(!HsConfiguration::instance());
+    HsConfiguration::setInstance(c);
+    QVERIFY(HsConfiguration::instance() == c);
+    HsConfiguration::setInstance(c);
+    QVERIFY(HsConfiguration::instance() == c);
+    HsConfiguration *c2 = HsConfiguration::takeInstance();
+    QVERIFY(!HsConfiguration::instance());
+    QVERIFY(c == c2);
+    delete c;
+
+    HsConfiguration::setInstance(stored);
+}
+
+void TestHsDomainModel::testConfigurationSizes()
+{
+    HsConfiguration *c = new HsConfiguration;
+
+    QSizeF min1(c->mMinimumWidgetWidth, c->mMinimumWidgetHeight);
+    QSizeF max1(c->mMaximumWidgetWidth, c->mMaximumWidgetHeight);
+
+    QSizeF min2(c->minimumWidgetSizeInUnits());
+    QSizeF max2(c->maximumWidgetSizeInUnits());
+
+    QVERIFY(qFuzzyCompare(min1.width(), min2.width()));
+    QVERIFY(qFuzzyCompare(min1.height(), min2.height()));
+    QVERIFY(qFuzzyCompare(max1.width(), max2.width()));
+    QVERIFY(qFuzzyCompare(max1.height(), max2.height()));
+
+    HbDeviceProfile profile;
+    qreal factor = profile.unitValue();
+
+    min1 *= factor;
+    max1 *= factor;
+
+    min2 = c->minimumWidgetSizeInPixels();
+    max2 = c->maximumWidgetSizeInPixels();
+
+    QVERIFY(qFuzzyCompare(min1.width(), min2.width()));
+    QVERIFY(qFuzzyCompare(min1.height(), min2.height()));
+    QVERIFY(qFuzzyCompare(max1.width(), max2.width()));
+    QVERIFY(qFuzzyCompare(max1.height(), max2.height()));
+
+    delete c;
+}
+
+void TestHsDomainModel::testConfigurationImportAndExport()
+{
+    HsConfiguration *c = new HsConfiguration;
+
+    QVERIFY(!c->exportToFile(QString()));
+    QVERIFY(!c->importFromFile(QString()));
+
+    QVERIFY(c->exportToFile("test_hsconfiguration.txt"));
+    QVERIFY(c->importFromFile("test_hsconfiguration.txt"));
+
+    QFile::remove("test_hsconfiguration.txt");
+
+    QCOMPARE(c->mBounceEffect, 20);
+    QCOMPARE(c->mPageChangeAnimationDuration, 300);
+    QCOMPARE(c->mPageChangeZoneAnimationDuration, 600);
+    QCOMPARE(c->mPageChangeZoneReverseAnimationDuration, 200);
+    QCOMPARE(c->mPageRemovedAnimationDuration, 1000);
+    QCOMPARE(c->mNewPageAddedAnimationDuration, 1000);
+    QCOMPARE(c->mWidgetDragEffectDuration, 250);
+    QCOMPARE(c->mWidgetDropEffectDuration, 200);
+    QCOMPARE(c->mDefaultPageId, 1);
+    QCOMPARE(c->mMaximumPageCount, 8);
+    QCOMPARE(c->mIsShortcutLabelVisible, true);
+    QCOMPARE(c->mBounceFeedbackEffectDistance, qreal(3));
+    QCOMPARE(c->mPageChangeZoneWidth, qreal(30));
+    QCOMPARE(c->mPageIndicatorSpacing, qreal(8));
+    QCOMPARE(c->mMaximumWidgetHeight, qreal(39));
+    QCOMPARE(c->mMaximumWidgetWidth, qreal(48));
+    QCOMPARE(c->mMinimumWidgetHeight, qreal(8.75));
+    QCOMPARE(c->mMinimumWidgetWidth, qreal(8.75));
+    QCOMPARE(c->mPageChangePanDistance, qreal(120));
+    QCOMPARE(c->mPageChangeFeedbackEffect, HbFeedback::Sensitive);
+    QCOMPARE(c->mWidgetPickFeedbackEffect, HbFeedback::ItemPick);
+    QCOMPARE(c->mWidgetDropFeedbackEffect, HbFeedback::ItemDrop);
+    QCOMPARE(c->mWidgetRepositionFeedbackEffect, HbFeedback::BounceEffect);
+    QCOMPARE(c->mWidgetOverTrashbinFeedbackEffect, HbFeedback::ItemMoveOver);
+    QCOMPARE(c->mWidgetDropToTrashbinFeedbackEffect, HbFeedback::ItemDrop);
+    QCOMPARE(c->mShortcutWidgetTapFeedbackEffect, HbFeedback::BasicItem);
+    QCOMPARE(c->mWidgetMoveBlockedFeedbackEffect, HbFeedback::Basic);
+    QCOMPARE(c->mClockWidgetTapFeedbackEffect, HbFeedback::BasicItem);
+    QCOMPARE(c->mWidgetSnappingFeedbackEffect, HbFeedback::ItemMoveOver);
+    QCOMPARE(c->mIsSnapEnabled, true);
+    QCOMPARE(c->mSnapTimeout, 300);
+    QCOMPARE(c->mSnapForce, qreal(30));
+    QCOMPARE(c->mSnapGap, qreal(6));
+    QCOMPARE(c->mPageMargin, qreal(0));
+    QCOMPARE(c->mSnapLineFadeInDuration, 100);
+    QCOMPARE(c->mSnapLineFadeOutDuration, 100);
+    QCOMPARE(c->mSceneType, HsConfiguration::PageWallpapers);
+
+    delete c;
+}
+
+void TestHsDomainModel::testConfigurationLoad()
+{
+    HsConfiguration *c = new HsConfiguration;
+    QVERIFY(c->load());
+    delete c;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/t_hsdatabase.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,390 @@
+/*
+* 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 <QGraphicsWidget>
+#include <QSqlDatabase>
+
+#include <HbFeedback>
+
+#include "t_hsdomainmodel.h"
+#include "hsdatabase.h"
+#include "hsdomainmodeldatastructures.h"
+
+void TestHsDomainModel::testHsDatabaseConstruction()
+{
+    HsDatabase *db = new HsDatabase;
+    QVERIFY(!db->parent());
+
+    delete db;
+
+    QObject *parent = new QObject;
+    db = new HsDatabase(parent);
+    QVERIFY(db->parent() == parent);
+    delete parent;
+}
+
+void TestHsDomainModel::testHsDatabaseProperties()
+{
+    HsDatabase *db = new HsDatabase;
+
+    QVERIFY(db->property("connectionName").toString().isEmpty());
+    QVERIFY(db->connectionName().isEmpty());
+
+    QVERIFY(db->property("databaseName").toString().isEmpty());
+    QVERIFY(db->databaseName().isEmpty());
+
+    db->setProperty("connectionName", "a");
+    QCOMPARE(db->connectionName(), QLatin1String("a"));
+    db->setConnectionName("b");
+    QCOMPARE(db->connectionName(), QLatin1String("b"));
+
+    db->setProperty("databaseName", "c");
+    QCOMPARE(db->databaseName(), QLatin1String("c"));
+    db->setDatabaseName("d");
+    QCOMPARE(db->databaseName(), QLatin1String("d"));
+
+    delete db;
+}
+
+void TestHsDomainModel::testHsDatabaseStaticInterface()
+{
+    HsDatabase *db = HsDatabase::takeInstance();
+    QVERIFY(!HsDatabase::instance());
+    HsDatabase::setInstance(db);
+    QVERIFY(HsDatabase::instance() == db);
+}
+
+void TestHsDomainModel::testHsDatabaseTransaction()
+{
+    HsDatabase *db = HsDatabase::instance();
+
+    QList<HsPageData> pages;
+    db->pages(pages);
+    QCOMPARE(pages.count(), 0);
+
+    HsPageData page;
+
+    db->transaction();
+    page.indexPosition = 0;
+    db->insertPage(page);
+    db->rollback();
+    db->pages(pages);
+    QCOMPARE(pages.count(), 0);
+
+    db->transaction();
+    page.indexPosition = 0;
+    db->insertPage(page);
+    db->commit();
+    db->pages(pages);
+    QCOMPARE(pages.count(), 1);
+}
+
+void TestHsDomainModel::testHsDatabaseSceneMethods()
+{
+    HsDatabase *db = HsDatabase::instance();
+
+    HsSceneData scene;
+    db->scene(scene);
+    QCOMPARE(scene.id, 1);
+}
+
+void TestHsDomainModel::testHsDatabasePageMethods()
+{
+    HsDatabase *db = HsDatabase::instance();
+
+    HsPageData page;
+    page.indexPosition = 0;
+    db->insertPage(page);
+
+    HsPageData page2;
+    page2.id = page.id;
+    db->page(page2);
+
+    QCOMPARE(page2.indexPosition, page.indexPosition);
+
+    page.indexPosition = 1;
+    db->updatePage(page);
+
+    db->page(page2);
+
+    QCOMPARE(page2.indexPosition, page.indexPosition);
+}
+
+void TestHsDomainModel::testHsDatabaseWidgetMethods()
+{
+    HsDatabase *db = HsDatabase::instance();
+
+    HsWidgetData widget;
+    widget.uri = "widgeturi";
+    widget.pageId = 1;
+    db->insertWidget(widget);
+
+    QList<HsWidgetData> widgets;
+    db->widgets(1, widgets);
+
+    QCOMPARE(widgets.count(), 1);
+
+    db->deleteWidgets("widgeturi");
+    db->widgets(1, widgets);
+
+    QCOMPARE(widgets.count(), 0);
+}
+
+void TestHsDomainModel::testHsDatabaseWidgetPreferenceMethods()
+{
+    HsDatabase *db = HsDatabase::instance();
+
+    HsWidgetData widget;
+    widget.uri = "widgeturi";
+    widget.pageId = 1;
+    db->insertWidget(widget);
+
+    QVariantHash preferences;
+    preferences.insert("a", 1);
+    preferences.insert("b", 2);
+
+    db->setWidgetPreferences(widget.id, preferences);
+
+    QVariantHash preferences2;
+    db->widgetPreferences(widget.id, preferences2);
+
+    QCOMPARE(preferences2.count(), 2);
+    QCOMPARE(preferences2.value("a"), QVariant(1));
+    QCOMPARE(preferences2.value("b"), QVariant(2));
+
+    QVariant value;
+    db->widgetPreference(widget.id, "a", value);
+
+    QCOMPARE(value, QVariant(1));
+    preferences.insert("a", QVariant());
+    preferences.insert("b", QVariant());
+
+    db->setWidgetPreferences(widget.id, preferences);
+    db->widgetPreferences(widget.id, preferences2);
+
+    QCOMPARE(preferences2.count(), 0);
+
+}
+
+void TestHsDomainModel::testHsDatabaseBadConnection()
+{
+	HsDatabase db;
+
+	QVariantHash vh;
+	QVariant v;
+	Qt::Orientation orientation(Qt::Vertical);
+	HsWidgetPresentationData pd;
+	QString uri("foouri");
+	QString key("fookey");
+	HsWidgetData wd;
+	QList<HsWidgetData> wds;
+	HsPageData pad;
+	QList<HsPageData> pads;
+	HsSceneData sd;
+
+	db.setConnectionName(QString("fooconnection"));
+	QVERIFY(!db.open());
+
+	QVERIFY(!db.configuration(vh));
+
+	QVERIFY(!db.setWidgetPreferences(33, vh));
+
+	QVERIFY(!db.widgetPreference(33, key, v));
+
+	QVERIFY(!db.widgetPreferences(33, vh));
+
+	QVERIFY(!db.deleteWidgetPresentation(33, orientation));
+
+	QVERIFY(!db.setWidgetPresentation(pd));
+
+	QVERIFY(!db.widgetPresentation(pd));
+
+	QVERIFY(!db.deleteWidgets(uri));
+
+	QVERIFY(!db.deleteWidget(33));
+
+	QVERIFY(!db.updateWidget(wd));
+
+	QVERIFY(!db.insertWidget(wd));
+
+	QVERIFY(!db.widget(wd));
+
+	QVERIFY(!db.widgets(uri, wds));
+
+	QVERIFY(!db.widgets(22, wds));
+    QVariantHash variantHash;
+    int count=0;	
+	QVERIFY(!db.widgets("uri", variantHash, count));
+
+	QVERIFY(!db.deletePage(22));
+
+	QVERIFY(!db.updatePage(pad));
+
+	QVERIFY(!db.insertPage(pad));
+
+	QVERIFY(!db.page(pad));
+
+	QVERIFY(!db.pages(pads));
+
+	QVERIFY(!db.scene(sd));
+
+    QVERIFY(!db.updateWidgetZValues(QHash<int, qreal>(), Qt::Vertical));
+}
+
+Q_DECLARE_METATYPE(QVariantHash)
+void TestHsDomainModel::testHsDatabaseMatchWidgetsPreferences_data()
+{
+    QTest::addColumn<QVariantHash>("matchesPreferences");
+    QTest::addColumn<QStringList>("widgetsPreferencesKeys");
+    QTest::addColumn<QStringList>("widgetsPreferencesValues");
+    QTest::addColumn<bool>("expectedResult");
+
+    QVariantHash preferences;
+    preferences.insert("a", "1");
+    QTest::newRow("searchCriteria1")
+        << preferences
+        << (QStringList() << "a" << "a" << "a" << "b" << "c" << "d")
+        << (QStringList() << "1" << "2" << "3" << "1" << "1" << "1")
+        << true;
+        
+    preferences.insert("b", "1");
+    QTest::newRow("searchCriteria2")
+        << preferences
+        << (QStringList() << "a" << "a" << "a" << "b" << "c" << "d")
+        << (QStringList() << "1" << "2" << "3" << "1" << "1" << "1")
+        << true;
+    preferences.insert("e", "1");
+    QTest::newRow("searchCriteria2")
+        << preferences
+        << (QStringList() << "a" << "a" << "a" << "b" << "c" << "d")
+        << (QStringList() << "1" << "2" << "3" << "1" << "1" << "1")
+        << false;
+    QTest::newRow("searchCriteria3")
+        << preferences
+        << (QStringList())
+        << (QStringList())
+        << false;
+    preferences.clear();
+    QTest::newRow("searchCriteria4")
+        << preferences
+        << (QStringList() << "a" << "a" << "a" << "b" << "c" << "d")
+        << (QStringList() << "1" << "2" << "3" << "1" << "1" << "1")
+        << true;
+}
+
+void TestHsDomainModel::testHsDatabaseMatchWidgetsPreferences()
+{
+    QFETCH(QVariantHash, matchesPreferences);
+    QFETCH(QStringList, widgetsPreferencesKeys);
+    QFETCH(QStringList, widgetsPreferencesValues);
+    QFETCH(bool, expectedResult);       
+    
+    QMultiMap<QString, QString> widgetPreferences;
+    for (int i=0; i<widgetsPreferencesKeys.count(); ++i) {
+        widgetPreferences.insert(widgetsPreferencesKeys[i], widgetsPreferencesValues[i]);
+    }
+
+    HsDatabase *db = HsDatabase::instance();
+    QCOMPARE(expectedResult, db->matchWidgetPreferences(matchesPreferences, widgetPreferences));
+}
+
+void TestHsDomainModel::testHsDatabaseWidgetsCount()
+{
+    HsDatabase *db = HsDatabase::instance();
+
+    HsWidgetData widget;
+    widget.uri = "widgeturi";
+    widget.pageId = 1;
+    db->insertWidget(widget);
+    QVariantHash preferences;
+    preferences.insert("a", "1");
+    preferences.insert("b", "2");
+    db->setWidgetPreferences(widget.id, preferences);
+    
+    widget.uri = "widgeturi2";
+    widget.pageId = 1;
+    db->insertWidget(widget);
+    
+    widget.uri = "widgeturi";
+    widget.pageId = 1;
+    db->insertWidget(widget);
+    preferences.insert("a", "3");
+    db->setWidgetPreferences(widget.id, preferences);
+
+    QVariantHash searchCriteria;
+    int count=0;
+    QVERIFY(db->widgets("widgeturi", searchCriteria, count));
+    QCOMPARE(count, 2);
+    
+    searchCriteria.insert("a", "1");
+    QVERIFY(db->widgets("widgeturi", searchCriteria, count));
+    QCOMPARE(count, 1);
+    searchCriteria.insert("a", "2");
+    QVERIFY(db->widgets("widgeturi", searchCriteria, count));
+    QCOMPARE(count, 0);
+    searchCriteria.insert("a", "1");
+    QVERIFY(db->widgets("widgeturi2", searchCriteria, count));
+    QCOMPARE(count, 0);
+    QVERIFY(db->widgets("", searchCriteria, count));
+    QCOMPARE(count, 0);
+    searchCriteria.clear();
+    QVERIFY(db->widgets("widgeturi2", searchCriteria, count));
+    QCOMPARE(count, 1);
+    searchCriteria.clear();
+    QVERIFY(db->widgets("", searchCriteria, count));
+    QCOMPARE(count, 0);
+}
+
+void TestHsDomainModel::testHsDatabaseUpdateWidgetZValues()
+{
+    HsDatabase *db = HsDatabase::instance();
+    HsPageData page;
+    page.indexPosition = 0;
+    QVERIFY(db->insertPage(page));
+    
+    HsWidgetData widget1;
+    widget1.pageId = page.id;
+    widget1.uri = "uri1";
+    QVERIFY(db->insertWidget(widget1));
+
+    HsWidgetData widget2;
+    widget2.pageId = page.id;
+    widget2.uri = "uri2";
+    QVERIFY(db->insertWidget(widget2));
+
+    HsWidgetPresentationData presentation1;
+    presentation1.widgetId = widget1.id;
+    presentation1.zValue = 0;
+    presentation1.orientation = Qt::Vertical;
+    db->setWidgetPresentation(presentation1);
+
+    HsWidgetPresentationData presentation2;
+    presentation2.widgetId = widget2.id;
+    presentation2.zValue = 0;
+    presentation2.orientation = Qt::Vertical;
+    db->setWidgetPresentation(presentation2);
+
+    QHash<int, qreal> data;
+    data.insert(1, 2);
+    data.insert(2, 3);
+    QVERIFY(db->updateWidgetZValues(data, Qt::Vertical));
+    
+    QVERIFY(db->widgetPresentation(presentation1));
+    QCOMPARE(presentation1.zValue, qreal(2));
+    QVERIFY(db->widgetPresentation(presentation2));    
+    QCOMPARE(presentation2.zValue, qreal(3));
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/t_hsdocumentloader.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,61 @@
+/*
+* 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:  Homescreen document loader class.
+*
+*/
+
+#include "t_hsdomainmodel.h"
+#include "hsdocumentloader.h"
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void TestHsDomainModel::testDocumentLoaderConstructors()
+{
+    HsDocumentLoader *loaderFromHeap = new HsDocumentLoader();
+    QVERIFY(loaderFromHeap);
+    delete loaderFromHeap;
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void TestHsDomainModel::testDocumentLoaderCreateObjects()
+{
+    HsDocumentLoader *loader = new HsDocumentLoader();
+    QVERIFY(loader);
+
+    QObject *testObject = loader->createObject(QString("UnknownWidgetType"), QString("testNullReturn"));
+    QVERIFY(!testObject);
+
+    testObject = loader->createObject(QString("HbPushButton"), QString("testNotAnyHsWidget"));
+    QVERIFY(testObject);
+    QCOMPARE(testObject->objectName(), QString("testNotAnyHsWidget"));
+    delete testObject;
+    testObject = 0;
+
+    testObject = loader->createObject(QString("HsPageIndicator"), QString("HsPageIndicator"));
+    QVERIFY(testObject);
+    QCOMPARE(testObject->objectName(), QString("HsPageIndicator"));
+    delete testObject;
+    testObject = 0;
+
+    testObject = loader->createObject(QString("HsTrashBinWidget"), QString("HsTrashBinWidget"));
+    QVERIFY(testObject);
+    QCOMPARE(testObject->objectName(), QString("HsTrashBinWidget"));
+    delete testObject;
+    testObject = 0;
+
+    delete loader;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/t_hsdomainmodel.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,258 @@
+/*
+* 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:  Main test class for domain model.
+*
+*/
+
+#include <qservicemanager.h>
+#include <hbinstance.h>
+#include "t_hsdomainmodel.h"
+#include "hsdatabase.h"
+#include "hspage.h"
+#include "hsscene.h"
+#include "hsdomainmodeldatastructures.h"
+#include "hswidgetpositioningonwidgetadd.h"
+#include "hswidgetcomponentregistry.h"
+#include "hsbackuprestoreobserver.h"
+#include "hsshortcutservice.h"
+#include "caservice.h"
+#include "hsconfiguration.h"
+#include "hswallpaper.h"
+
+QTM_USE_NAMESPACE
+
+#ifdef Q_OS_SYMBIAN
+#include <e32base.h>
+#endif
+
+const char WIDGET_PLUGIN_PATH[] = "./hsresources/plugins/widgetplugins/";
+const char WIDGET_PLUGIN_XML[] = "mockwidgetplugin.xml";
+const char WIDGET_PLUGIN_TOOSMALL_XML[] = "mockwidgetplugintoosmall.xml";
+const char WIDGET_PLUGIN_TOOBIG_XML[] = "mockwidgetplugintoobig.xml";
+const char WIDGET_PLUGIN_CHEATER_XML[] = "mockwidgetplugincheater.xml";
+const char DBPATH[]= "./";
+const char DBNAME[] = "hsdomainmodeltest2.db";
+const char DBNAMECLEAN[] = "hsdomainmodeltest.db";
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void TestHsDomainModel::initTestCase()
+{
+    mCaService = CaService::instance();
+    QString path = QDir(WIDGET_PLUGIN_PATH).absolutePath();
+    QApplication::addLibraryPath(path);
+    QServiceManager manager;
+    if (!manager.addService(QDir(WIDGET_PLUGIN_PATH).absolutePath().append("/").append(WIDGET_PLUGIN_XML))) {
+        QServiceManager::Error err = manager.error();
+        qDebug() << "TestHsDomainModel::initTestCase register mockwidgetplugin failed" << err;
+    }
+    if (!manager.addService(QDir(WIDGET_PLUGIN_PATH).absolutePath().append("/").append(WIDGET_PLUGIN_TOOSMALL_XML))) {
+        QServiceManager::Error err = manager.error();
+        qDebug() << "TestHsDomainModel::initTestCase register mockwidgetplugintoosmall failed" << err;
+    }
+
+    if (!manager.addService(QDir(WIDGET_PLUGIN_PATH).absolutePath().append("/").append(WIDGET_PLUGIN_TOOBIG_XML))) {
+        QServiceManager::Error err = manager.error();
+        qDebug() << "TestHsDomainModel::initTestCase register mockwidgetplugintoobig failed" << err;
+    }
+
+    if (!manager.addService(QDir(WIDGET_PLUGIN_PATH).absolutePath().append("/").append(WIDGET_PLUGIN_CHEATER_XML))) {
+        QServiceManager::Error err = manager.error();
+        qDebug() << "TestHsDomainModel::initTestCase register mockwidgetplugincheater failed" << err;
+    }
+
+    HsConfiguration::setInstance(new HsConfiguration);
+
+    HsWidgetPositioningOnWidgetAdd::setInstance(
+        new HsAnchorPointInBottomRight);
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void TestHsDomainModel::cleanupTestCase()
+{
+    QServiceManager manager;
+    manager.removeService("mockwidgetplugin");
+    manager.removeService("mockwidgetplugintoosmall");
+    manager.removeService("mockwidgetplugintoobig");
+    manager.removeService("mockwidgetplugincheater");
+    HsDatabase::setInstance(0);
+
+    delete HsWidgetComponentRegistry::mInstance;
+    HsWidgetComponentRegistry::mInstance = 0;
+
+    delete HsShortcutService::mInstance;
+    HsShortcutService::mInstance = 0;
+}
+
+void TestHsDomainModel::init()
+{
+    QString dbFile = QDir(DBPATH).absolutePath() + "/" + QString(DBNAME);
+    QString testDbFile = QDir(DBPATH).absolutePath() + "/" + QString(DBNAMECLEAN);
+    QFile::remove(dbFile);
+    QFile::copy(testDbFile, dbFile);
+
+    HsScene::setInstance(new HsScene);
+
+    HsDatabase *db = new HsDatabase;
+    HsDatabase::setInstance(db);
+    db->setConnectionName("homescreen.dbc");
+    db->setDatabaseName(dbFile);
+    db->open();
+
+    mWallpaperTypeScene = true;
+}
+
+void TestHsDomainModel::cleanup()
+{
+    // cleanup all the pages and widgets
+    HsDatabase::setInstance(0);
+    QString path = QDir(WIDGET_PLUGIN_PATH).absolutePath();
+    QApplication::addLibraryPath( path );
+    QString dbFile = QDir(DBPATH).absolutePath() + "/" + QString(DBNAME);
+    QFile::remove(dbFile);
+
+    if (HsBackupRestoreObserver::mInstance) {
+        delete HsBackupRestoreObserver::mInstance;
+        HsBackupRestoreObserver::mInstance = 0;
+    }
+
+    delete HsScene::takeInstance();
+}
+
+void TestHsDomainModel::createPagesToDatabase(int pageCount)
+{
+    HsDatabase *db = HsDatabase::instance();
+    for (int i = 0; i < pageCount; ++i) {
+        HsPageData data;
+        data.indexPosition = i;
+        db->insertPage(data);
+    }
+}
+
+void TestHsDomainModel::createSceneWithPages(int pageCount,int activePageIndex)
+{
+    for (int i = 0; i < pageCount; ++i) {
+        HsPageData pageData;
+        pageData.indexPosition = i;
+        HsPage *p = HsPage::createInstance(pageData);
+        HsScene::instance()->addPage(p);
+    }
+    if (activePageIndex < pageCount) {
+        QList<HsPage*> pages = HsScene::instance()->pages();
+        if(activePageIndex < pages.count())
+            HsScene::instance()->setActivePage(pages.at(activePageIndex));
+    }
+
+}
+
+void TestHsDomainModel::destroySceneAndPages()
+{
+     delete HsScene::takeInstance();
+}
+
+QString TestHsDomainModel::sourceTestWallpaper()
+{
+    QString testImage("default_portrait.png");
+    QString fullSource(wallpaperDirectory() + testImage);
+    return QDir::toNativeSeparators(fullSource);
+}
+
+QString TestHsDomainModel::targetPortraitTestWallpaper()
+{
+    QString path = wallpaperDirectory() +
+                   "1_portrait." +
+                   QFileInfo(sourceTestWallpaper()).suffix();
+    return QDir::toNativeSeparators(path);
+}
+
+QString TestHsDomainModel::targetLandscapeTestWallpaper()
+{
+    QString path = wallpaperDirectory() +
+                   "1_landscape." +
+                   QFileInfo(sourceTestWallpaper()).suffix();
+    return QDir::toNativeSeparators(path);
+}
+
+QString TestHsDomainModel::tempTestWallpaper()
+{
+    QString tempTestImage("tempdefault_portrait.png");
+    QString fullTarget(wallpaperDirectory() +  tempTestImage);
+    return QDir::toNativeSeparators(fullTarget);
+}
+
+QString TestHsDomainModel::notExistingTestWallpaper()
+{
+    QString tempTestImage("notfound.png");
+    QString fullTarget(wallpaperDirectory() +  tempTestImage);
+    return QDir::toNativeSeparators(fullTarget);
+}
+
+QString TestHsDomainModel::wallpaperDirectory()
+{
+    QString directory;
+    if (mWallpaperTypeScene) {
+        HsSceneWallpaper wallpaper(HsScene::instance());
+        directory = wallpaper.wallpaperDirectory();
+    } else {
+        HsPage *page = new HsPage();
+        HsPageWallpaper wallpaper(page);
+        directory = wallpaper.wallpaperDirectory();
+        delete page;
+    }
+
+    return directory;
+}
+
+void TestHsDomainModel::cleanupTargetWallpaperFiles()
+{
+    if (QFile::exists(targetPortraitTestWallpaper())) {
+        QFile::remove(targetPortraitTestWallpaper());
+    }
+
+    if (QFile::exists(targetLandscapeTestWallpaper())) {
+        QFile::remove(targetLandscapeTestWallpaper());
+    }
+
+    if (QFile::exists(tempTestWallpaper())) {
+        QFile::remove(tempTestWallpaper());
+    }
+}
+
+#ifdef Q_OS_SYMBIAN
+//QTEST_MAIN corrected since crashes if TRAP not in correct place.
+//Will be corrected in later (estimate 4.6.0) Qt release for Symbian.
+int main(int argc, char *argv[])
+{
+    QApplication app(argc, argv);
+    int error(0);
+    TRAP_IGNORE( QTEST_DISABLE_KEYPAD_NAVIGATION \
+	 HbInstance::instance(); \
+    TestHsDomainModel tc; \
+    error = QTest::qExec(&tc, argc, argv););
+    return error;
+}
+#else //Q_OS_SYMBIAN
+int main(int argc, char *argv[])
+{
+    QApplication app(argc, argv);
+    QTEST_DISABLE_KEYPAD_NAVIGATION
+    HbInstance::instance();
+    TestHsDomainModel tc;
+    return QTest::qExec(&tc, argc, argv);
+}
+//QTEST_MAIN(TestHsDomainModel)
+#endif //Q_OS_SYMBIAN
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/t_hsgui.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,91 @@
+/*
+* 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 "t_hsdomainmodel.h"
+#include "hsgui.h"
+
+
+void TestHsDomainModel::testGuiStaticInterface()
+{    
+    HsGui *stored = HsGui::takeInstance();
+    
+    HsGui *gui = new HsGui;    
+    HsGui::setInstance(gui);
+    HsGui::setInstance(gui);
+    QVERIFY(HsGui::instance() == gui);    
+    HsGui *gui2 = HsGui::takeInstance();    
+    QVERIFY(gui == gui2);
+    delete gui;
+    
+    HsGui::setInstance(stored);
+}
+
+void TestHsDomainModel::testSetupCleanupIdleUi()
+{
+    HsGui *gui = HsGui::instance();    
+
+    gui->setupIdleUi();
+    QVERIFY(gui->idleWidget());
+    QVERIFY(gui->idleView());    
+    gui->setupIdleUi();
+
+    gui->cleanupIdleUi();    
+    QVERIFY(!gui->idleView());
+}
+
+
+void TestHsDomainModel::testOrientation()
+{
+    HsGui *gui = HsGui::instance();
+    Qt::Orientation orientation = gui->orientation();
+    
+    if (orientation == Qt::Horizontal){
+        gui->setOrientation(Qt::Vertical);
+    }
+    else {
+        gui->setOrientation(Qt::Horizontal);
+    }        
+    QVERIFY(gui->orientation() != orientation);
+    
+    gui->setOrientation(orientation);
+    QVERIFY(gui->orientation() == orientation);
+}
+
+
+void TestHsDomainModel::testShow()
+{
+    HsGui *gui = HsGui::instance();
+    gui->setupIdleUi();
+    gui->show();
+    gui->cleanupIdleUi();    
+}
+
+void TestHsDomainModel::testPageChangeAnimation()
+{
+    HsGui *gui = HsGui::instance();
+    
+    QVERIFY(gui->pageChangeAnimation());
+    gui->cleanupIdleUi();    
+}
+
+void TestHsDomainModel::testPageCrawlingAnimation()
+{
+    HsGui *gui = HsGui::instance();
+    
+    QVERIFY(gui->pageCrawlingAnimation());
+    gui->cleanupIdleUi();    
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/t_hshostedwidgetfactory.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,34 @@
+/*
+* 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 "t_hsdomainmodel.h"
+#include "hshostedwidgetfactory.h"
+
+
+void TestHsDomainModel::testHostedWidgetFactoryStaticInterface()
+{    
+    HsHostedWidgetFactory *stored = HsHostedWidgetFactory::takeInstance();
+    
+    HsHostedWidgetFactory *factory = new HsHostedWidgetFactory;    
+    HsHostedWidgetFactory::setInstance(factory);
+    QVERIFY(HsHostedWidgetFactory::instance() == factory);    
+    HsHostedWidgetFactory *factory2 = HsHostedWidgetFactory::takeInstance();    
+    QVERIFY(factory == factory2);
+    delete factory;
+    
+    HsHostedWidgetFactory::setInstance(stored);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/t_hsidlewidget.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,188 @@
+/*
+* 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:  Tests for HsIdleState class.
+*
+*/
+
+#include "hsscene.h"
+#include "hsgui.h"
+#include "hspage.h"
+#include "hspageindicator.h"
+#include "hsconfiguration.h"
+#include "hsidlewidget.h"
+#include "t_hsdomainmodel.h"
+#include "hsdomainmodeldatastructures.h"
+
+void TestHsDomainModel::testIdleWidgetConstruction()
+{
+    HsIdleWidget *iw = new HsIdleWidget();
+    delete iw;
+}
+
+void TestHsDomainModel::testIdleWidgetSetGeometry()
+{
+    HsIdleWidget *iw = new HsIdleWidget();
+    
+    iw->setGeometry(QRectF(0,0,100,100));
+    HSCONFIGURATION_SET(setSceneType, HsConfiguration::SceneWallpaper);
+    iw->setGeometry(QRectF(0,0,100,100));
+    delete iw;    
+    HSCONFIGURATION_SET(setSceneType, HsConfiguration::PageWallpapers);
+}
+
+void TestHsDomainModel::testIdleWidgetSetSceneX()
+{
+    HsIdleWidget *iw = new HsIdleWidget();
+    iw->setSceneX(100);
+    QVERIFY(iw->sceneX() == 100);
+    
+    HSCONFIGURATION_SET(setSceneType, HsConfiguration::SceneWallpaper);
+    iw->setSceneX(200);
+    QVERIFY(iw->sceneX() == 200);
+    
+    delete iw;    
+    HSCONFIGURATION_SET(setSceneType, HsConfiguration::PageWallpapers);
+}
+
+void TestHsDomainModel::testIdleWidgetSetActivePage()
+{
+    HsIdleWidget *iw = new HsIdleWidget();
+    iw->mPageIndicator->initialize(3, 2);
+    iw->setActivePage(0);
+    QCOMPARE(iw->mPageIndicator->activeItemIndex(), 0);
+    delete iw;   
+}
+
+void TestHsDomainModel::testIdleWidgetInsertPage()
+{
+    HSCONFIGURATION_SET(setSceneType, HsConfiguration::PageWallpapers);
+    HsIdleWidget *iw = new HsIdleWidget();
+    HsPage *page = new HsPage();
+    iw->insertPage(0, page);
+    delete iw;
+    HSCONFIGURATION_SET(setSceneType, HsConfiguration::SceneWallpaper);
+    iw = new HsIdleWidget();
+    page = new HsPage();
+    iw->insertPage(0, page);
+    delete iw;
+    HSCONFIGURATION_SET(setSceneType, HsConfiguration::PageWallpapers);
+}
+
+void TestHsDomainModel::testIdleWidgetRemovePage()
+{
+    HSCONFIGURATION_SET(setSceneType, HsConfiguration::PageWallpapers);
+    HsIdleWidget *iw = new HsIdleWidget();
+
+    HsPage *pageOne = new HsPage();
+    HsPage *pageTwo = new HsPage();
+
+    iw->insertPage(0, pageTwo);
+    iw->insertPage(0, pageOne);
+    iw->removePage(1);
+    iw->removePage(0);
+    delete iw;
+    
+    HSCONFIGURATION_SET(setSceneType, HsConfiguration::SceneWallpaper);
+    iw = new HsIdleWidget();
+
+    pageOne = new HsPage();
+    pageTwo = new HsPage();
+
+    iw->insertPage(0, pageTwo);
+    iw->insertPage(0, pageOne);
+    iw->removePage(1);
+    iw->removePage(0);
+    delete iw;
+    HSCONFIGURATION_SET(setSceneType, HsConfiguration::PageWallpapers);
+}
+
+void TestHsDomainModel::testIdleWidgetLayers()
+{
+    HsIdleWidget *iw = new HsIdleWidget();
+    iw->controlLayer();
+    iw->pageLayer();
+    iw->pageWallpaperLayer();
+    iw->sceneLayer();
+    delete iw;
+}
+
+void TestHsDomainModel::testIdleWidgetTrashbin()
+{
+    HsIdleWidget *iw = new HsIdleWidget();
+    iw->trashBin();
+    delete iw;
+}
+
+void TestHsDomainModel::testIdleWidgetPageIndicator()
+{
+    HsIdleWidget *iw = new HsIdleWidget();
+    iw->pageIndicator();
+    delete iw;
+}
+
+void TestHsDomainModel::testIdleWidgetParallaxFactor() 
+{
+    HsIdleWidget *iw = new HsIdleWidget();
+    
+    // factor == 1 when page count < 2
+    QCOMPARE( (int)iw->parallaxFactor(), 1);
+    
+    createSceneWithPages(3, 0);
+    // factor must be != 0 when page count >= 2
+    QVERIFY(iw->parallaxFactor());
+    delete iw;
+    destroySceneAndPages();
+}
+
+void TestHsDomainModel::testIdleWidgetShowTrashBin() 
+{
+    HsIdleWidget *iw = new HsIdleWidget();
+    iw->showTrashBin();
+    delete iw;
+}
+
+void TestHsDomainModel::testIdleWidgetShowPageIndicator() 
+{
+    HsIdleWidget *iw = new HsIdleWidget();
+    iw->showPageIndicator();
+    delete iw;
+}
+
+
+void TestHsDomainModel::testIdleWidgetShowSnapLines() 
+{
+    HsIdleWidget *iw = new HsIdleWidget();
+    QLineF verticalSnapLine(0,0,0,100);
+    iw->showVerticalSnapLine(verticalSnapLine);
+    QLineF horizontalSnapLine(0,0,100,0);
+    iw->showHorizontalSnapLine(horizontalSnapLine);
+    iw->hideVerticalSnapLine();
+    iw->hideHorizontalSnapLine();
+    delete iw;
+}
+
+void TestHsDomainModel::testIdleWidgetPolishEvent() 
+{
+    HsIdleWidget *iw = new HsIdleWidget();
+    iw->polishEvent();
+    
+    createSceneWithPages(3, 0);
+    iw->polishEvent();
+    HSCONFIGURATION_SET(setSceneType, HsConfiguration::SceneWallpaper);
+    iw->polishEvent();
+    HSCONFIGURATION_SET(setSceneType, HsConfiguration::PageWallpapers);
+    
+    delete iw;
+    destroySceneAndPages();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/t_hspage.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,566 @@
+/*
+* 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 <HbInstance>
+#include <HbView>
+
+#include "t_hsdomainmodel.h"
+#include "hspage.h"
+#include "hsscene.h"
+#include "hsdomainmodeldatastructures.h"
+#include "hswidgethost.h"
+#include "hswidgetpositioningonwidgetadd.h"
+#include "hswidgetcomponent.h"
+#include "hsconfiguration.h"
+#include "hsgui.h"
+#include "hspagevisual.h"
+#include "hswidgetpositioningonorientationchange.h"
+
+void TestHsDomainModel::testHsPage()
+{
+    HsPageData pageData;
+    HsPage *page=HsPage::createInstance(pageData);
+    QVERIFY(page->databaseId());
+    QVERIFY(page->load());
+    QCOMPARE(page->widgets().count(),0);
+
+    // we haven't added this to scene.
+    QCOMPARE(page->pageIndex(),-1);
+
+    QVERIFY(page->isRemovable());
+    page->setRemovable(false);
+    QVERIFY(!page->isRemovable());
+    page->setRemovable(true);
+    QVERIFY(page->isRemovable());
+    delete page;
+}
+
+
+void TestHsDomainModel::testHsPageLoad()
+{
+    HsPage *page = new HsPage();
+    QVERIFY(!page->load());
+    delete page;
+
+    HsPageData pageData;
+    pageData.indexPosition = 0;
+    page = HsPage::createInstance(pageData);
+    QVERIFY(page);
+    int pageId = page->databaseId();
+    delete page;
+
+    page = new HsPage();
+    page->setDatabaseId(pageId);
+    QVERIFY(page->load());
+    QVERIFY(page->wallpaper());
+    QVERIFY(page->deleteFromDatabase());
+    delete page;
+
+    page = HsPage::createInstance(pageData);
+    QVERIFY(page);
+    pageId = page->databaseId();
+    delete page;
+    page = new HsPage();
+    page->setDatabaseId(pageId);
+    QVERIFY(page->load());
+
+    QVERIFY(page->deleteFromDatabase());
+    delete page;
+
+}
+
+void TestHsDomainModel::testHsPageContentRects()
+{
+    HsPageData pageData;
+    pageData.indexPosition = 0;
+    HsPage *page = HsPage::createInstance(pageData);
+    QVERIFY(page->databaseId());
+    QVERIFY(page->load());
+    QCOMPARE(page->widgets().count(),0);
+    HsScene::instance()->addPage(page);
+    HsGui *stored = HsGui::takeInstance();
+    
+    HbInstance::instance();
+    HbMainWindow mainWindow;        
+    HbView *view = mainWindow.addView(page->visual());
+    mainWindow.views().first()->setContentFullScreen();
+    mainWindow.show();
+    HsGui *gui = HsGui::instance();
+    // crashes symbian test
+#ifndef Q_OS_SYMBIAN    
+    QEventLoop waitUntilMainWindowCreated;
+    QTimer eventLoopTimer;
+    eventLoopTimer.setInterval(15000);
+    eventLoopTimer.setSingleShot(true);    
+    connect(&mainWindow, SIGNAL(viewReady()),
+            &waitUntilMainWindowCreated, SLOT(quit()));
+    connect(&eventLoopTimer, SIGNAL(timeout()),
+            &waitUntilMainWindowCreated, SLOT(quit()));
+    eventLoopTimer.start();
+    waitUntilMainWindowCreated.exec();
+    eventLoopTimer.stop();
+#endif        
+    QRectF layoutRect = mainWindow.layoutRect();
+    qreal pageMargin = HSCONFIGURATION_GET(pageMargin);
+    QRectF expectecRect;
+
+    //Test global rect
+    expectecRect = layoutRect;
+    expectecRect.setTop(64);
+    expectecRect.adjust(pageMargin, pageMargin, -pageMargin, -pageMargin);
+    QRectF contentGeometry = page->contentGeometry();
+    QCOMPARE(contentGeometry, expectecRect);
+
+    //Test global rect at different orientation - improves branch coverage
+    expectecRect = layoutRect;
+    expectecRect.setWidth(layoutRect.height());
+    expectecRect.setHeight(layoutRect.width());
+    expectecRect.setTop(64);
+    expectecRect.adjust(pageMargin, pageMargin, -pageMargin, -pageMargin);
+    Qt::Orientation orientation =
+        //HsScene::instance()->mainWindow()->orientation() ==
+        gui->orientation() ==
+            Qt::Vertical ? Qt::Horizontal : Qt::Vertical;
+    contentGeometry = page->contentGeometry(orientation);
+    QCOMPARE(contentGeometry, expectecRect);
+
+    //Test local rect
+    expectecRect = layoutRect;
+    expectecRect.setTop(64);
+    expectecRect.moveTopLeft(QPointF(0,0));
+    expectecRect.adjust(pageMargin, pageMargin, -pageMargin, -pageMargin);
+    QRectF contentRect = page->contentRect();
+    QCOMPARE(contentRect, expectecRect);
+    
+    mainWindow.hide();
+    mainWindow.removeView(view);
+    delete HsGui::takeInstance();
+    if(stored) {
+        HsGui::setInstance(stored);
+    }
+    HsScene::instance()->removePage(page);
+    delete page;
+}
+
+void TestHsDomainModel::testHsPageAddRemoveWidget()
+{
+    HsWidgetPositioningOnWidgetAdd::setInstance(
+        new HsAnchorPointInBottomRight);
+
+    HsPageData pageData;
+    pageData.indexPosition = 0;
+    HsPage *page = HsPage::createInstance(pageData);
+    QVERIFY(page);
+    int pageId = page->databaseId();
+
+    HsWidgetData widgetData;
+    widgetData.pageId = pageId;
+    widgetData.uri = "uri1";
+    HsWidgetHost *widget = HsWidgetHost::createInstance(widgetData);
+    QVERIFY(widget);
+
+    widget->setPage(page);
+    QVERIFY(!page->addNewWidget(0));
+    QVERIFY(page->addNewWidget(widget));
+    QVERIFY(page->addNewWidget(widget));
+    QCOMPARE(page->newWidgets().count(), 1);
+    QCOMPARE(page->widgets().count(), 0);
+
+    page->layoutNewWidgets();
+    QCOMPARE(page->newWidgets().count(), 0);
+    QCOMPARE(page->widgets().count(), 1);
+    QCOMPARE(page->newWidgets().count(), 0);
+    QCOMPARE(page->widgets().count(), 1);  
+    page->resetNewWidgets();  
+
+    HsWidgetHost *widget2 = HsWidgetHost::createInstance(widgetData);
+    QVERIFY(widget2);
+    widget2->setPage(page);
+    QVERIFY(page->addNewWidget(widget2));
+    QCOMPARE(page->newWidgets().count(),1);
+    QCOMPARE(page->widgets().count(),1);
+
+    // test layouting for landscape orientation
+    HsGui::instance()->setOrientation(Qt::Horizontal);
+    // active widget for branch testing
+    HsScene::instance()->setActiveWidget(widget);
+    page->layoutNewWidgets();
+    // set active widget to original
+    HsScene::instance()->setActiveWidget(0);
+
+    QCOMPARE(page->newWidgets().count(), 0);
+    QCOMPARE(page->widgets().count(), 2);
+    QCOMPARE(page->newWidgets().count(), 0);
+    HsGui::instance()->setOrientation(Qt::Vertical);
+
+    page->layoutNewWidgets();
+    QCOMPARE(page->newWidgets().count(), 0);
+    QCOMPARE(page->widgets().count(), 2);
+
+    QVERIFY(!page->removeWidget(0));
+    QVERIFY(page->removeWidget(widget2));
+
+    delete page;
+
+    page = new HsPage();
+    page->setDatabaseId(pageId);
+    QVERIFY(page->load());
+    QVERIFY(page->deleteFromDatabase());
+    delete page;
+
+    HsWidgetPositioningOnWidgetAdd::setInstance(0);
+
+}
+
+
+void TestHsDomainModel::testHsPageAddExistingWidget()
+{
+    HsWidgetPositioningOnWidgetAdd::setInstance(
+        new HsAnchorPointInBottomRight);
+
+    HsPageData pageData;
+
+    pageData.indexPosition = 0;
+    HsPage *page = HsPage::createInstance(pageData);
+    QVERIFY(page);
+    int pageId = page->databaseId();
+
+    pageData.indexPosition = 1;
+    HsPage *page2 = HsPage::createInstance(pageData);
+    QVERIFY(page2);
+    int pageId2 = page2->databaseId();
+
+    HsWidgetData widgetData;
+    widgetData.pageId = pageId;
+    widgetData.uri = "mockwidgetplugin";
+
+    HsWidgetHost *widget = HsWidgetHost::createInstance(widgetData);
+    QVERIFY(widget);
+    widget->setPage(page);
+    QVERIFY(page->addNewWidget(widget));
+
+    HsWidgetHost *widget2 = HsWidgetHost::createInstance(widgetData);
+    QVERIFY(widget2);
+    widget2->setPage(page);
+    QVERIFY(page->addNewWidget(widget2));
+
+    // coverages up with active widget
+    HsScene::instance()->setActiveWidget(widget);
+    page->layoutNewWidgets();
+    QCOMPARE(page->widgets().count(), 2);
+    HsScene::instance()->setActiveWidget(0);
+
+    QVERIFY(page->removeWidget(widget2));
+    QVERIFY(page2->addExistingWidget(widget2));
+    QVERIFY(page2->addExistingWidget(widget2));
+
+    QVERIFY(!page->addExistingWidget(NULL));
+
+    delete page;
+
+    page = new HsPage();
+    page->setDatabaseId(pageId);
+    QVERIFY(page->load());
+    // Widget doesn't have presentation yet.    
+    QCOMPARE(page->widgets().count(), 0); 
+    QCOMPARE(page->mNewWidgets.count(), 1);
+    page2 = new HsPage();
+    page2->setDatabaseId(pageId2);
+    QVERIFY(page2->load());
+    // Widget doesn't have presentation yet.
+    QCOMPARE(page2->widgets().count(), 0);
+    QCOMPARE(page2->mNewWidgets.count(), 1);
+    delete page;
+    delete page2;
+
+    HsWidgetPositioningOnWidgetAdd::setInstance(0);
+
+}
+
+
+void TestHsDomainModel::testHsPageWidgetFinished()
+{
+    HsWidgetPositioningOnWidgetAdd::setInstance(
+        new HsAnchorPointInBottomRight);
+
+    HsPageData pageData;
+    HsPage *page=HsPage::createInstance(pageData);
+    QVERIFY(page);
+    int pageId = page->databaseId();
+    HsScene::instance()->mActivePage = page;
+
+    HsWidgetData widgetData;
+    widgetData.pageId = pageId;
+    widgetData.uri = "mockwidgetplugin";
+
+    HsWidgetHost *widget = HsWidgetHost::createInstance(widgetData);
+    QVERIFY(widget);
+    widget->setPage(page);
+    widget->startWidget();
+    QVERIFY(widget->mStateMachine->isRunning());
+    QVERIFY(page->addNewWidget(widget));
+    page->layoutNewWidgets();
+
+    widget->onFinished();
+    qApp->processEvents();
+
+    QCOMPARE(page->newWidgets().count(),0);
+    QCOMPARE(page->widgets().count(),0);
+
+    // new widget
+    widget = HsWidgetHost::createInstance(widgetData);
+    QVERIFY(widget);
+    widget->setPage(page);
+    widget->startWidget();
+    QVERIFY(widget->mStateMachine->isRunning());
+    QVERIFY(page->addNewWidget(widget));
+    QCOMPARE(page->newWidgets().count(),1);
+    QCOMPARE(page->widgets().count(),0);
+
+    widget->onFinished();
+    qApp->processEvents();
+
+    QCOMPARE(page->newWidgets().count(),0);
+    QCOMPARE(page->widgets().count(),0);
+
+    delete page;
+
+    HsWidgetPositioningOnWidgetAdd::setInstance(0);
+}
+
+void TestHsDomainModel::testHsPageIsActivePage()
+{
+    HsPageData pageData;
+    pageData.indexPosition = 0;
+    HsPage *page = HsPage::createInstance(pageData);
+    QVERIFY(page);
+
+    QVERIFY(!page->isActivePage());
+    QVERIFY(page->isDefaultPage());
+    delete page;
+}
+
+void TestHsDomainModel::testHsPageWidgetSignals()
+{
+    HsPageData pageData;
+    HsPage *page = HsPage::createInstance(pageData);
+    QVERIFY(page);
+
+    HsWidgetData widgetData;
+    widgetData.pageId = page->databaseId();
+    widgetData.uri = "mockwidgetplugin";
+    HsWidgetHost *widget = HsWidgetHost::createInstance(widgetData);
+    QVERIFY(widget);
+
+    page->addExistingWidget(widget);
+    widget->setPage(page);
+    widget->startWidget();
+
+    QCOMPARE(page->mWidgets.count(), 1);
+    QCOMPARE(page->mUnavailableWidgets.count(), 0);
+
+    emit widget->mComponent->unavailable();
+
+    QCOMPARE(page->mWidgets.count(), 0);
+    QCOMPARE(page->mUnavailableWidgets.count(), 1);
+
+    emit widget->mComponent->available();
+
+    QCOMPARE(page->mWidgets.count(), 1);
+    QCOMPARE(page->mUnavailableWidgets.count(), 0);
+
+    // test unavailability when new widgets exists
+    HsWidgetHost *widget2 = HsWidgetHost::createInstance(widgetData);
+    page->addNewWidget(widget2);
+    widget2->setPage(page);
+    widget2->startWidget();
+    QCOMPARE(page->mWidgets.count(), 1);
+    QCOMPARE(page->mNewWidgets.count(), 1);
+    QCOMPARE(page->mUnavailableWidgets.count(), 0);
+    emit widget2->mComponent->unavailable();
+    QCOMPARE(page->mWidgets.count(), 0);
+    QCOMPARE(page->mNewWidgets.count(), 0);
+    QCOMPARE(page->mUnavailableWidgets.count(), 2);
+    page->removeWidget(widget);
+    page->removeWidget(widget2);
+
+    delete page;
+}
+
+void TestHsDomainModel::testHsPageOrientationChange()
+{
+   HsWidgetPositioningOnWidgetAdd::setInstance(
+        new HsAnchorPointInBottomRight);
+
+    HsWidgetPositioningOnOrientationChange::setInstance(
+        new HsAdvancedWidgetPositioningOnOrientationChange);
+
+    HsPageData pageData;
+    HsPage *page = HsPage::createInstance(pageData);
+    QVERIFY(page);
+    
+    // test when no widgets on page
+    page->onOrientationChanged(Qt::Horizontal);
+
+    // add existing widget
+    HsWidgetData widgetData;
+    widgetData.pageId = page->databaseId();
+    widgetData.uri = "mockwidgetplugin";
+    HsWidgetHost *existingWidget = HsWidgetHost::createInstance(widgetData);
+    QVERIFY(existingWidget);
+    page->addExistingWidget(existingWidget);
+
+    // add new widget without presentation
+    HsWidgetData widgetData2;
+    widgetData2.pageId = page->databaseId();
+    widgetData2.uri = "mockwidgetplugintoosmall";
+    HsWidgetHost *newWidget = HsWidgetHost::createInstance(widgetData2);
+    QVERIFY(newWidget);
+    page->addNewWidget(newWidget);
+    newWidget->removePresentation(Qt::Horizontal);
+
+    page->onOrientationChanged(Qt::Horizontal);
+    page->onOrientationChanged(Qt::Vertical);
+
+    delete page;
+    HsWidgetPositioningOnOrientationChange::setInstance(0);
+    HsWidgetPositioningOnWidgetAdd::setInstance(0);
+}
+
+void TestHsDomainModel::testHsPageDeleteFromDatabase()
+{
+    HsWidgetPositioningOnWidgetAdd::setInstance(
+        new HsAnchorPointInBottomRight);
+
+    HsPageData pageData;
+    pageData.indexPosition = 0;
+    HsPage *page = HsPage::createInstance(pageData);
+    HsWidgetData widgetData;
+    widgetData.pageId = page->databaseId();
+    widgetData.uri = "mockwidgetplugin";
+    HsWidgetHost *widget = HsWidgetHost::createInstance(widgetData);
+
+    // new widgets not deleted
+    page->addNewWidget(widget);
+    QCOMPARE(page->newWidgets().count(), 1);
+    page->deleteFromDatabase();
+    QCOMPARE(page->newWidgets().count(), 0);
+
+    // widgets not deleted
+    page->addNewWidget(widget);
+
+    // test set online when new widgets exists
+    page->setOnline();
+    page->layoutNewWidgets();
+    // test show widgets
+    page->showWidgets();
+    // test hide widgets
+    page->hideWidgets();
+    // test set online when widgets exists
+    page->setOnline();
+
+    QCOMPARE(page->mWidgets.count(), 1);
+    QVERIFY(page->deleteFromDatabase());
+    QCOMPARE(page->mWidgets.count(), 0);
+
+    // unavailable widgets not deleted
+    page->mUnavailableWidgets.append(widget);
+    QCOMPARE(page->mUnavailableWidgets.count(), 1);
+    QVERIFY(page->deleteFromDatabase());
+    QCOMPARE(page->mUnavailableWidgets.count(), 0);
+
+    delete widget;
+    delete page;
+    
+}
+
+void TestHsDomainModel::testHsPageOnPageMarginChanged()
+{
+    HsWidgetPositioningOnWidgetAdd::setInstance(
+        new HsAnchorPointInBottomRight);
+
+
+    //Create empty page
+    HsPageData pageData;
+    pageData.indexPosition = 0;
+    HsPage *page = HsPage::createInstance(pageData);
+    QVERIFY(page);
+    int pageId = page->databaseId();
+    page->onPageMarginChanged("dummy");
+    page->onPageMarginChanged("pageMargin"); //No widgets
+
+    //Add first widget
+    HsWidgetData widgetData;
+    widgetData.pageId = pageId;
+    widgetData.uri = "uri1";
+    HsWidgetHost *widget = HsWidgetHost::createInstance(widgetData);
+    QVERIFY(widget);
+    widget->setPage(page);
+    QVERIFY(!page->addNewWidget(0));
+    QVERIFY(page->addNewWidget(widget));
+    QVERIFY(page->addNewWidget(widget));
+    QCOMPARE(page->newWidgets().count(), 1);
+    QCOMPARE(page->widgets().count(), 0);
+    page->onPageMarginChanged("pageMargin"); // Only mNewWidgets
+    page->layoutNewWidgets();
+    QCOMPARE(page->newWidgets().count(), 0);
+    QCOMPARE(page->widgets().count(), 1);
+    QCOMPARE(page->newWidgets().count(), 0);
+    QCOMPARE(page->widgets().count(), 1);  
+    page->resetNewWidgets();   
+
+    //Add second widget
+    HsWidgetHost *widget2 = HsWidgetHost::createInstance(widgetData);
+    QVERIFY(widget2);
+    widget2->setPage(page);
+    QVERIFY(page->addNewWidget(widget2));
+    QCOMPARE(page->newWidgets().count(),1);
+    QCOMPARE(page->widgets().count(),1);
+    page->onPageMarginChanged("pageMargin"); // Both mWidgets and mNewWidgets
+    page->layoutNewWidgets();
+    page->onPageMarginChanged("pageMargin"); //Only mWidgets
+    QCOMPARE(page->newWidgets().count(), 0);
+    QCOMPARE(page->widgets().count(), 2);
+
+    delete page;
+
+    HsWidgetPositioningOnWidgetAdd::setInstance(0);
+}
+
+void TestHsDomainModel::testHsPageIndex()
+{
+    HsPageData pageData;
+    pageData.indexPosition = 0;
+    HsPage *page = HsPage::createInstance(pageData);
+    QVERIFY(page->load());
+    QCOMPARE(page->mPageVisual->pageIndex(),-1);
+    HsScene::instance()->addPage(page);
+    QCOMPARE(page->mPageVisual->pageIndex(),0);
+
+    pageData.indexPosition = 1;
+    HsPage *page2 = HsPage::createInstance(pageData);
+    QVERIFY(page2->load());
+    HsScene::instance()->addPage(page2);
+    QCOMPARE(page2->mPageVisual->pageIndex(),1);
+    
+    HsScene::instance()->removePage(page);
+    delete page;
+    HsScene::instance()->removePage(page2);
+    delete page2;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/t_hspagenewwidgetlayout.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,82 @@
+/*
+* 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 "t_hsdomainmodel.h"
+#include "hswidgetpositioningonwidgetadd.h"
+#include "hspagenewwidgetlayout.h"
+#include "hswidgethost.h"
+#include "hsscene.h"
+#include "hspage.h"
+
+void TestHsDomainModel::testHsPageNewWidgetLayout()
+{
+    HsWidgetPositioningOnWidgetAdd::setInstance(
+        new HsAnchorPointInBottomRight);
+
+    HsPageNewWidgetLayout *layout = new HsPageNewWidgetLayout();
+    
+    HsPageData pageData;
+    HsPage *page = HsPage::createInstance(pageData);
+    QVERIFY(page);
+
+    // add new widget
+    HsWidgetData widgetData;
+    widgetData.pageId = page->databaseId();
+    widgetData.uri = "mockwidgetplugin";
+    HsWidgetHost *newWidget = HsWidgetHost::createInstance(widgetData);
+    QVERIFY(newWidget);
+    page->addNewWidget(newWidget);
+
+    // add existing widget
+    HsWidgetData widgetData2;
+    widgetData2.pageId = page->databaseId();
+    widgetData2.uri = "mockwidgetplugintoosmall";
+    HsWidgetHost *existingWidget = HsWidgetHost::createInstance(widgetData2);
+    QVERIFY(existingWidget);
+    page->addExistingWidget(existingWidget);
+
+    HsScene::instance()->mActivePage = page;
+    layout->addItem(newWidget);
+    QVERIFY(layout->count() == 1);    
+    layout->setGeometry(QRectF());
+    layout->removeAt(0);
+    QVERIFY(layout->count() == 0);    
+    QVERIFY(layout->sizeHint(Qt::NSizeHints) == QSizeF());
+    
+    delete layout;
+    delete newWidget;
+    delete existingWidget;
+    HsWidgetPositioningOnWidgetAdd::setInstance(0);
+}
+
+void TestHsDomainModel::testHsPageNewWidgetLayoutWithPosition()
+{
+    HsWidgetPositioningOnWidgetAdd::setInstance(
+        new HsAnchorPointInBottomRight);
+    HsPageNewWidgetLayout *layout = new HsPageNewWidgetLayout();
+
+    HsWidgetHost *widget = new HsWidgetHost(1);
+    HsPage *page = new HsPage;
+    HsScene::instance()->mActivePage = page;
+    layout->addItem(widget);
+    layout->mTouchPoint = QPointF(100, 100);
+    layout->setGeometry(QRectF());
+  
+    delete layout;
+    delete widget;
+    HsWidgetPositioningOnWidgetAdd::setInstance(0);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/t_hspagetoucharea.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,67 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#include <HbTapAndHoldGesture>
+#include <HbPanGesture>
+#include <HbTapGesture>
+
+#include "t_hsdomainmodel.h"
+#include "hspagetoucharea.h"
+
+
+void TestHsDomainModel::testPageTouchAreaConstruction()
+{
+    HsPageTouchArea *pageTouchArea = new HsPageTouchArea();
+    QVERIFY(pageTouchArea);
+    delete pageTouchArea;
+}
+
+void TestHsDomainModel::testPageTouchAreaGestureEvent()
+{
+    HsPageTouchArea *pageTouchArea = new HsPageTouchArea();
+    QList<QGesture*> QGestureList;
+    // test empty gesture list
+    pageTouchArea->gestureEvent(new QGestureEvent(QGestureList));
+
+    // test tapAndHold
+    HbTapAndHoldGesture *tapAndHoldGesture = new HbTapAndHoldGesture();
+    QGestureList << tapAndHoldGesture;
+    QGestureEvent *gestureEvent = new QGestureEvent(QGestureList);
+    pageTouchArea->gestureEvent(gestureEvent);
+    
+    QGestureList.clear();
+
+    // test pan
+    HbPanGesture *panGesture = new HbPanGesture();
+    QGestureList << panGesture;
+    gestureEvent = new QGestureEvent(QGestureList);
+    pageTouchArea->gestureEvent(gestureEvent);
+
+    QGestureList.clear();
+
+    // test tap
+    HbTapGesture *tapGesture = new HbTapGesture();
+    QGestureList << tapGesture;
+    gestureEvent = new QGestureEvent(QGestureList);
+    pageTouchArea->gestureEvent(gestureEvent);
+
+    delete tapAndHoldGesture;
+    delete panGesture;
+    delete tapGesture;
+
+    delete pageTouchArea;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/t_hsscene.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,167 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#include "t_hsdomainmodel.h"
+#include "hsscene.h"
+#include "hsdomainmodeldatastructures.h"
+#include "hswidgethost.h"
+#include "hspage.h"
+#include "hsconfiguration.h"
+
+void TestHsDomainModel::testSceneDefaultValues()
+{    
+    HsScene *scene = new HsScene;
+    
+    QCOMPARE(scene->databaseId(), -1); 
+    QCOMPARE(scene->pages().count(), 0);
+    QVERIFY(scene->isOnline()); 
+    
+    QVERIFY(!scene->wallpaper());
+    
+    QVERIFY(!scene->activeWidget()); 
+    QVERIFY(!scene->activePage()); 
+    QCOMPARE(scene->activePageIndex(), -1);     
+    QVERIFY(!scene->setActivePageIndex(1)); 
+    QVERIFY(!scene->setActivePageIndex(-1)); 
+    QVERIFY(!scene->setActivePage(0)); 
+    
+    QVERIFY(!scene->removePage(0)); 
+    QVERIFY(!scene->addPage(0)); 
+    
+    delete scene;
+}
+
+void TestHsDomainModel::testSceneStaticInterface()
+{    
+    HsScene *stored = HsScene::takeInstance();
+    
+    HsScene *scene = new HsScene;
+    QVERIFY(!HsScene::instance());
+    HsScene::setInstance(scene);
+    QVERIFY(HsScene::instance() == scene);
+    HsScene::setInstance(scene);
+    QVERIFY(HsScene::instance() == scene);
+    HsScene *scene2 = HsScene::takeInstance();
+    QVERIFY(!HsScene::instance());
+    QVERIFY(scene == scene2);
+    delete scene;
+    
+    HsScene::setInstance(stored);
+}
+
+void TestHsDomainModel::testSceneLoad()
+{
+    // no page
+    HsScene *scene = HsScene::instance();
+    QVERIFY(!scene->load());
+
+    createPagesToDatabase(1);
+    scene = HsScene::instance();
+    HSCONFIGURATION_SET(setSceneType, HsConfiguration::SceneWallpaper);
+    QVERIFY(scene->load());
+    QVERIFY(scene->wallpaper());
+    // set configuration back to original
+    HSCONFIGURATION_SET(setSceneType, HsConfiguration::PageWallpapers);
+    destroySceneAndPages();
+}
+
+
+void TestHsDomainModel::testSceneAddPages()
+{
+    createSceneWithPages(0, 0);
+    HsScene *scene = HsScene::instance();    
+    HsPage *page = new HsPage();
+    QVERIFY(!scene->addPage(page)); 
+    delete page;
+    
+    HsPageData pageData;
+    pageData.indexPosition = 0;
+    page = HsPage::createInstance(pageData);
+    QVERIFY(scene->addPage(page)); 
+    QVERIFY(scene->setActivePage(page)); 
+    QVERIFY(scene->setActivePageIndex(0)); 
+    QVERIFY(scene->addPage(page)); 
+    QCOMPARE(scene->pages().count(), 1);
+
+    // add page to left
+    HsPageData pageData2;
+    pageData2.indexPosition = 0;
+    HsPage *page2 = HsPage::createInstance(pageData2);
+    QVERIFY(scene->addPage(page2));
+    QCOMPARE(scene->pages().count(), 2);
+    QVERIFY(scene->removePage(page2));
+    QCOMPARE(scene->pages().count(), 1);
+
+    int dbId = page->databaseId();
+    page->setDatabaseId(dbId-1);
+    QVERIFY(scene->removePage(page)); 
+    page->setDatabaseId(dbId);
+    QVERIFY(scene->removePage(page)); 
+    QVERIFY(!scene->setActivePage(page)); 
+    QCOMPARE(scene->pages().count(), 0);
+    
+    delete HsScene::mInstance;
+    HsScene::mInstance = 0;
+}
+
+
+void TestHsDomainModel::testSceneOnline()
+{
+    createSceneWithPages(3,0);
+    HsScene *scene = HsScene::instance();
+    
+    HsWidgetData widgetData;
+    widgetData.pageId = HsScene::instance()->activePage()->databaseId();
+    widgetData.uri = "mockwidgetplugin";
+    
+    HsWidgetHost *widget = HsWidgetHost::createInstance(widgetData);
+    QVERIFY(widget);
+    widget->setPage(HsScene::instance()->activePage());
+    widget->startWidget();
+    QVERIFY(widget->mStateMachine->isRunning());
+    HsScene::instance()->activePage()->addNewWidget(widget);
+    
+    QVERIFY(widget->mWidget->property("isOnline").isValid());
+    QVERIFY(widget->mWidget->property("isOnline").toBool());
+    scene->setOnline(true);
+    QVERIFY(widget->mWidget->property("isOnline").toBool());
+    scene->setOnline(false);
+    QVERIFY(!widget->mWidget->property("isOnline").toBool());
+    
+    QVERIFY(!scene->activeWidget());
+    scene->setActiveWidget(widget);
+    QCOMPARE(scene->activeWidget(), widget);
+    
+    delete HsScene::mInstance;
+    HsScene::mInstance = 0;
+}
+
+void TestHsDomainModel::testSceneEventFilter()
+{
+    createSceneWithPages(3, 0);
+    HsScene *scene = HsScene::instance();
+    
+    QEvent activateEvent(QEvent::ApplicationActivate);
+    QEvent deactivateEvent(QEvent::ApplicationDeactivate);
+    QEvent randomEvent(QEvent::AccessibilityHelp);
+
+    scene->eventFilter(0, &activateEvent);
+    scene->eventFilter(0, &deactivateEvent);
+    scene->eventFilter(0, &randomEvent);
+
+    destroySceneAndPages();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/t_hswallpaper.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,174 @@
+/*
+* 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 "t_hsdomainmodel.h"
+#include "hswallpaper.h"
+#include "hsscene.h"
+#include "hspage.h"
+
+void TestHsDomainModel::testHsWallpaperConstruction()
+{
+    {
+        HsSceneWallpaper wallpaper(HsScene::instance());
+        QVERIFY(!wallpaper.parent());
+    }
+
+    HsPage *page = new HsPage();
+    page->setDatabaseId(1);
+    {
+        HbWidget parent;
+        HsPageWallpaper wallpaper(page, &parent);
+        QVERIFY(wallpaper.parentItem() == &parent);
+    }
+
+    HsPageWallpaper *pagewallpaper = new HsPageWallpaper(page);
+    QVERIFY(pagewallpaper);
+    QVERIFY(!pagewallpaper->parent());
+    delete pagewallpaper;
+
+    HbWidget *parent = new HbWidget();
+    HsSceneWallpaper *scenewallpaper = new HsSceneWallpaper(HsScene::instance(), parent);
+    QVERIFY(scenewallpaper);
+    QVERIFY(scenewallpaper->parentItem() == parent);
+    delete parent;
+
+    delete page;
+}
+
+void TestHsDomainModel::testHsWallpaperSetNRemoveDefaultImage()
+{
+    //Default image is set already at construction phase while scene DB id
+    //is not set.
+    QVERIFY(QFile::exists(sourceTestWallpaper()));
+    HsSceneWallpaper *wallpaper = new HsSceneWallpaper(HsScene::instance());
+    QVERIFY(QDir::toNativeSeparators(wallpaper->mPortraitImagePath) == sourceTestWallpaper());
+    wallpaper->setDefaultImage(); //Coverage improvement. Default image already set at construction phase.
+    QVERIFY(QDir::toNativeSeparators(wallpaper->mPortraitImagePath) == sourceTestWallpaper());
+    QVERIFY(wallpaper->mIsDefaultImage);
+    wallpaper->remove();
+    QVERIFY(!wallpaper->mIsDefaultImage);
+    QVERIFY(wallpaper->mPortraitImagePath.isEmpty());
+    QVERIFY(wallpaper->mLandscapeImagePath.isEmpty());
+    delete wallpaper;
+}
+
+void TestHsDomainModel::testHsWallpaperSetNRemoveImage()
+{
+    mWallpaperTypeScene = false; //Use page wallpaper at this test
+    //Prepare test case by checking that source file exists and
+    //deleting any page specific wallpapers existing in target folder
+    QVERIFY(QFile::exists(sourceTestWallpaper()));
+    cleanupTargetWallpaperFiles();
+
+    HsPage *page = new HsPage();
+    page->setDatabaseId(1);
+    //Construction phase sets default image since Id based image does not exist, yet.
+    HsPageWallpaper *wallpaper = new HsPageWallpaper(page);
+    QVERIFY(QDir::toNativeSeparators(wallpaper->mPortraitImagePath) == sourceTestWallpaper());
+
+    //TEST EMPTY SOURCE STRING
+    QSignalSpy setImageFailedSpy(wallpaper, SIGNAL(imageSetFailed()));
+    wallpaper->setImage(QString());
+    QCOMPARE(setImageFailedSpy.count(), 1);
+
+    QSignalSpy imageSetSpy(wallpaper, SIGNAL(imageSet()));
+    QEventLoop waitFinished;
+    QTimer eventLoopTimer;
+    eventLoopTimer.setInterval(15000);
+    eventLoopTimer.setSingleShot(true);
+    connect(wallpaper, SIGNAL(imageSet()), &waitFinished, SLOT(quit()));
+    connect(&eventLoopTimer, SIGNAL(timeout()), &waitFinished, SLOT(quit()));
+    //TEST SETIMAGE
+    wallpaper->setImage(sourceTestWallpaper());
+    eventLoopTimer.start();
+    waitFinished.exec();
+
+    QCOMPARE(imageSetSpy.count(), 1);
+    QVERIFY(eventLoopTimer.isActive());
+    eventLoopTimer.stop();
+
+    //Now we have Id based images.
+    QVERIFY(QDir::toNativeSeparators(wallpaper->mPortraitImagePath) == targetPortraitTestWallpaper());
+    QVERIFY(QDir::toNativeSeparators(wallpaper->mLandscapeImagePath) == targetLandscapeTestWallpaper());
+    QVERIFY(QFile::exists(targetPortraitTestWallpaper()));
+    QVERIFY(QFile::exists(targetLandscapeTestWallpaper()));
+
+    //TEST REMOVE
+    wallpaper->remove();
+    QVERIFY(wallpaper->mPortraitImagePath.isEmpty());
+    QVERIFY(wallpaper->mLandscapeImagePath.isEmpty());
+    QVERIFY(!QFile::exists(targetPortraitTestWallpaper()));
+    QVERIFY(!QFile::exists(targetLandscapeTestWallpaper()));
+
+    delete wallpaper;
+    delete page;
+}
+
+void TestHsDomainModel::testHsWallpaperLoaderFailed()
+{
+    cleanupTargetWallpaperFiles();
+
+    HsPage *page = new HsPage();
+    page->setDatabaseId(1);
+    //Construction phase sets default image since Id based image does not exist, yet.
+    HsPageWallpaper *wallpaper = new HsPageWallpaper(page);
+    QSignalSpy loaderFailedSpy(wallpaper, SIGNAL(imageSetFailed()));
+    wallpaper->onLoaderFailed();
+    QCOMPARE(loaderFailedSpy.count(), 1);
+
+    delete wallpaper;
+    delete page;
+}
+
+void TestHsDomainModel::testHsWallpaperScene()
+{
+    cleanupTargetWallpaperFiles();
+    //Construction phase sets default image since Id based image does not exist, yet.
+    HsSceneWallpaper *wallpaper = new HsSceneWallpaper(HsScene::instance());
+    QVariantHash papers = wallpaper->createTargets(".");
+    QVERIFY(papers.count()==2);
+    wallpaper->setScene(0);
+    QVERIFY(HsScene::instance() == wallpaper->mScene);
+
+    delete wallpaper;
+}
+void TestHsDomainModel::testHsWallpaperPage()
+{
+    cleanupTargetWallpaperFiles();
+
+    HsPage *page = new HsPage();
+    page->setDatabaseId(1);
+    //Construction phase sets default image since Id based image does not exist, yet.
+    HsPageWallpaper *wallpaper = new HsPageWallpaper(page);
+    wallpaper->setPage(0);
+    QVERIFY(page == wallpaper->mPage);
+    delete wallpaper;
+    delete page;
+}
+
+void TestHsDomainModel::testHsWallpaperSetImages()
+{
+    HsPageWallpaper wp(0);
+    QSignalSpy spyIS(&wp, SIGNAL(imageSet()));
+    QSignalSpy spyISF(&wp, SIGNAL(imageSetFailed()));
+    
+    wp.setImages(QString(), QString());
+
+    QCOMPARE(spyIS.count(), 0);
+    QCOMPARE(spyISF.count(), 1);    
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/t_hswallpaperloader.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,173 @@
+/*
+* 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 <QObject>
+#include <QString>
+#include <QSignalSpy>
+#include <QVariantHash>
+#include <QEventLoop>
+#include <QTimer>
+
+#include "t_hsdomainmodel.h"
+#include "hswallpaperloader.h"
+#include "hswallpaperloaderthread.h"
+
+void TestHsDomainModel::testHsWallpaperLoaderConstruction()
+{
+    {
+        HsWallpaperLoader loader;
+        QVERIFY(!loader.parent());
+    }
+
+    {
+        QObject parent;
+        HsWallpaperLoader loader(&parent);
+        QVERIFY(loader.parent() == &parent);
+    }
+
+    HsWallpaperLoader *loader = new HsWallpaperLoader;
+    QVERIFY(loader);
+    QVERIFY(!loader->parent());
+    delete loader;
+
+    QObject *parent = new QObject();
+    loader = new HsWallpaperLoader(parent);
+    QVERIFY(loader);
+    QVERIFY(loader->parent() == parent);
+    delete parent;
+}
+
+void TestHsDomainModel::testHsWallpaperLoaderStartWithFinished()
+{
+    //Test preparation
+    cleanupTargetWallpaperFiles();
+
+    HsWallpaperLoader *loader = new HsWallpaperLoader;
+    QSignalSpy finishedSpy(loader, SIGNAL(finished()));
+
+    //TEST START WITHOUT THREADS
+    loader->start();
+    QCOMPARE(finishedSpy.count(), 1);
+    QVERIFY(!loader->isRunning());
+    finishedSpy.clear();
+
+    //TEST START WITH ONE THREAD SUCCESSFUL
+    //Check that test file exist
+    QVERIFY(QFile::exists(sourceTestWallpaper()));
+    loader->setSourcePath(sourceTestWallpaper());
+
+    QVariantHash targets;
+    targets.insert(tempTestWallpaper(), QSize(360, 640));
+    loader->setTargets(targets);
+
+    QEventLoop waitFinished;
+    QTimer eventLoopTimer;
+    eventLoopTimer.setInterval(15000);
+    eventLoopTimer.setSingleShot(true);
+    connect(loader, SIGNAL(finished()), &waitFinished, SLOT(quit()));
+    connect(&eventLoopTimer, SIGNAL(timeout()), &waitFinished, SLOT(quit()));
+    loader->start();
+    QVERIFY(loader->isRunning());
+    eventLoopTimer.start();
+    waitFinished.exec();
+
+    QCOMPARE(finishedSpy.count(), 1);
+    QVERIFY(eventLoopTimer.isActive());
+    eventLoopTimer.stop();
+
+    QVERIFY(!loader->isRunning());
+    //Check that temp file is created and result is true
+    QVERIFY(QFile::exists(tempTestWallpaper()));
+    //Clear created temp file
+    cleanupTargetWallpaperFiles();
+
+    delete loader;
+}
+
+void TestHsDomainModel::testHsWallpaperLoaderStartWithFailed()
+{
+    //Test preparation
+    cleanupTargetWallpaperFiles();
+
+    HsWallpaperLoader *loader = new HsWallpaperLoader;
+    QSignalSpy failedSpy(loader, SIGNAL(failed()));
+
+    //TEST START WITH ONE FAILING THREAD AND ONE SUCCESSFUL
+    QVERIFY(QFile::exists(sourceTestWallpaper()));
+    loader->setSourcePath(sourceTestWallpaper());
+
+    QVariantHash targets;
+    targets.insert(tempTestWallpaper(), QSize(360, 640));
+    targets.insert(QString(), QSize(640, 360)); //Save fails for empty string in thread
+    loader->setTargets(targets);
+
+    QEventLoop waitFailed;
+    QTimer eventLoopTimer;
+    eventLoopTimer.setInterval(15000);
+    eventLoopTimer.setSingleShot(true);
+    connect(loader, SIGNAL(failed()), &waitFailed, SLOT(quit()));
+    connect(&eventLoopTimer, SIGNAL(timeout()), &waitFailed, SLOT(quit()));
+    loader->start();
+    QVERIFY(loader->isRunning());
+    eventLoopTimer.start();
+    waitFailed.exec();
+
+    QCOMPARE(failedSpy.count(), 1);
+    QVERIFY(eventLoopTimer.isActive());
+    eventLoopTimer.stop();
+
+    QVERIFY(!loader->isRunning());
+    //Check that temp file is created and result is true
+    QVERIFY(QFile::exists(tempTestWallpaper()));
+
+    //Clear created temp file
+    cleanupTargetWallpaperFiles();
+    delete loader;
+
+}
+
+void TestHsDomainModel::testHsWallpaperLoaderCancel()
+{
+    //Test preparation
+    cleanupTargetWallpaperFiles();
+
+    HsWallpaperLoader *loader = new HsWallpaperLoader;
+    QSignalSpy failedSpy(loader, SIGNAL(failed()));
+    QSignalSpy finishedSpy(loader, SIGNAL(finished()));
+
+    //TEST START WITH ONE FAILING THREAD AND ONE SUCCESSFUL
+    QVERIFY(QFile::exists(sourceTestWallpaper()));
+    loader->setSourcePath(sourceTestWallpaper());
+
+    QVariantHash targets;
+    targets.insert(tempTestWallpaper(), QSize(360, 640));
+    targets.insert(QString(), QSize(640, 360)); //This fails due to empty target file path.
+    loader->setTargets(targets);
+
+    loader->start();
+    QVERIFY(loader->isRunning());
+    loader->cancel();
+    QVERIFY(!loader->isRunning());
+    QCOMPARE(failedSpy.count(), 0);
+    QCOMPARE(finishedSpy.count(), 0);
+
+    //Clear temp file if it was created
+    cleanupTargetWallpaperFiles();
+
+    delete loader;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/t_hswallpaperloaderthread.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,81 @@
+/*
+* 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 <QObject>
+#include <QString>
+#include <QFile>
+
+#include "t_hsdomainmodel.h"
+#include "hswallpaperloaderthread.h"
+
+void TestHsDomainModel::testHsWallpaperLoaderThreadConstruction()
+{
+    {
+        HsWallpaperLoaderThread thread;
+        QVERIFY(!thread.parent());
+    }
+
+    {
+        QObject parent;
+        HsWallpaperLoaderThread thread(&parent);
+        QVERIFY(thread.parent() == &parent);
+    }
+
+    HsWallpaperLoaderThread *thread = new HsWallpaperLoaderThread;
+    QVERIFY(thread);
+    QVERIFY(!thread->parent());
+    delete thread;
+
+    QObject *parent = new QObject();
+    thread = new HsWallpaperLoaderThread(parent);
+    QVERIFY(thread);
+    QVERIFY(thread->parent() == parent);
+    delete parent;
+}
+
+void TestHsDomainModel::testHsWallpaperLoaderThreadRun()
+{
+    //Test preparation
+    cleanupTargetWallpaperFiles();
+
+    HsWallpaperLoaderThread *thread = new HsWallpaperLoaderThread;
+
+    //TEST OF FILE WHICH DOES NOT EXIST
+    QVERIFY(!QFile::exists(notExistingTestWallpaper()));
+    thread->setSourcePath(notExistingTestWallpaper());
+    thread->setTargetSize(QSize(360, 640));
+    thread->setTargetPath(tempTestWallpaper());
+    thread->run();
+    //Check that temp file is not created and result is false
+    QVERIFY(!thread->result());
+    QVERIFY(!QFile::exists(tempTestWallpaper()));
+
+    //TEST OF FILE WHICH EXISTS
+    //Check that test file exist
+    QVERIFY(QFile::exists(sourceTestWallpaper()));
+    thread->setSourcePath(sourceTestWallpaper());
+    thread->setTargetSize(QSize(360, 640));
+    thread->setTargetPath(tempTestWallpaper());
+    thread->run();
+    //Check that temp file is created and result is true
+    QVERIFY(thread->result());
+    QVERIFY(QFile::exists(tempTestWallpaper()));
+    //Clear created temp file
+    cleanupTargetWallpaperFiles();
+
+    delete thread;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/t_hswidgetcomponent.cpp	Mon Oct 04 00:07:25 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:  Wallpaper test.
+*
+*/
+
+
+#include "t_hsdomainmodel.h"
+#include "hswidgetcomponent.h"
+
+#include "caentry.h"
+#include "hsapp_defs.h"
+/*!
+
+*/
+void TestHsDomainModel::testWidgetComponent()
+{
+	QScopedPointer<HsWidgetComponent> compo(new HsWidgetComponent("mockwidgetplugin"));
+    QVERIFY(!compo.isNull());
+    QString path = compo->rootPath();
+    QVERIFY(!compo->isAvailable()); // is not in ca store
+    QVERIFY(compo->uri() == "mockwidgetplugin");
+    compo->uninstallTranslator();
+}
+
+
+void TestHsDomainModel::testWidgetComponentEmits()
+{
+    
+    QScopedPointer<HsWidgetComponent> compo(new HsWidgetComponent("mockwidgetplugin"));
+    
+    QSignalSpy aboutToUninstallSpy(compo.data(),SIGNAL(aboutToUninstall()));
+    QSignalSpy uninstalledSpy(compo.data(),SIGNAL(uninstalled()));
+    QSignalSpy unavailableSpy(compo.data(),SIGNAL(unavailable()));
+    QSignalSpy availableSpy(compo.data(),SIGNAL(available()));
+    QSignalSpy updatedSpy(compo.data(),SIGNAL(updated()));
+    
+    compo->emitAboutToUninstall();
+    QVERIFY(aboutToUninstallSpy.count() == 1);
+    // should not emit again
+    compo->emitAboutToUninstall();
+    QVERIFY(aboutToUninstallSpy.count() == 1);
+    
+    compo->emitUninstalled();
+    QVERIFY(uninstalledSpy.count() == 1);
+    // should not emit again
+    compo->emitUninstalled();
+    QVERIFY(uninstalledSpy.count() == 1);
+    
+    compo->emitUnavailable();
+    QVERIFY(unavailableSpy.count() == 1);
+    // should not emit again
+    compo->emitUnavailable();
+    QVERIFY(unavailableSpy.count() == 1);
+    
+    compo->emitAvailable();
+    QVERIFY(availableSpy.count() == 1);
+    // should not emit again
+    compo->emitAvailable();
+    QVERIFY(availableSpy.count() == 1);
+    
+    compo->emitAboutToUninstall();
+    compo->emitUpdated();
+    QVERIFY(updatedSpy.count() == 1);
+    // should not emit again
+    compo->emitUpdated();
+    QVERIFY(updatedSpy.count() == 1);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/t_hswidgetcomponentdescriptor.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,46 @@
+/*
+* 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:  Wallpaper test.
+*
+*/
+
+
+#include "t_hsdomainmodel.h"
+#include "hswidgetcomponentdescriptor.h"
+
+void TestHsDomainModel::testWidgetComponentDescriptor()
+{
+    HsWidgetComponentDescriptor widgetDescriptor;
+    
+    QVERIFY(!widgetDescriptor.isValid());
+    
+    widgetDescriptor.setUri(QString("uri"));
+    QVERIFY(!widgetDescriptor.isValid());
+    
+    widgetDescriptor.setUri(QString(""));
+    widgetDescriptor.setTitle(QString("title"));
+    QVERIFY(!widgetDescriptor.isValid());
+
+    widgetDescriptor.setUri(QString("uri"));
+    widgetDescriptor.setTitle(QString("title"));
+    QVERIFY(widgetDescriptor.isValid());
+    
+    widgetDescriptor.setVersion(QString("foobar"));
+    QVERIFY(!widgetDescriptor.isValid());
+    widgetDescriptor.setVersion(QString("1.0"));
+    widgetDescriptor.setServiceXml(QString("foobar"));
+    QVERIFY(widgetDescriptor.isValid());
+    
+    
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/t_hswidgetcomponentregistry.cpp	Mon Oct 04 00:07:25 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:  Wallpaper test.
+*
+*/
+
+#include "t_hsdomainmodel.h"
+#include "hswidgetcomponentregistry.h"
+#include "hswidgetcomponent.h"
+#include "hswidgetcomponentdescriptor.h"
+#include "caentry.h"
+#include "hsapp_defs.h"
+/*!
+
+*/
+void TestHsDomainModel::testWidgetComponentRegistry()
+{
+    HsWidgetComponent* compo = HsWidgetComponentRegistry::instance()->component("mockwidgetplugin");
+    QVERIFY(compo);
+    QSignalSpy spy(compo,SIGNAL(aboutToUninstall()));
+    HsWidgetComponentDescriptor widgetDescriptor;
+    widgetDescriptor.setUri("mockwidgetplugin");
+    // this deletes compo
+    HsWidgetComponentRegistry::instance()->uninstallComponent(widgetDescriptor);
+    QVERIFY(spy.count()==1);
+    spy.clear();
+    widgetDescriptor.setUri("notfoundwidget");
+    HsWidgetComponentRegistry::instance()->uninstallComponent(widgetDescriptor);
+    QVERIFY(spy.count()==0);
+}
+
+void TestHsDomainModel::testWidgetComponentRegistryOnEntryChanged()
+{
+    HsWidgetComponent* compo = HsWidgetComponentRegistry::instance()->component("mockwidgetplugin");
+    QVERIFY(compo);
+    CaEntry caEntry;
+    caEntry.setAttribute(Hs::widgetPathAttributeName, "mockwidgetplugin");
+    HsWidgetComponentRegistry::instance()->onEntryChanged(caEntry, AddChangeType);
+    HsWidgetComponentRegistry::instance()->onEntryChanged(caEntry, RemoveChangeType);
+    caEntry.setFlags(MissingEntryFlag);
+    HsWidgetComponentRegistry::instance()->onEntryChanged(caEntry, RemoveChangeType);
+    HsWidgetComponentRegistry::instance()->onEntryChanged(caEntry, UpdateChangeType);
+    // invalid.
+    HsWidgetComponentRegistry::instance()->onEntryChanged(caEntry, (ChangeType) 100);
+    
+    // there isnt really a good way to verify results, just calling these functions...
+    
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/t_hswidgethost.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,298 @@
+/*
+* 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 <QGraphicsWidget>
+#include <QSqlDatabase>
+#include <HbInstance>
+#include <HbPanGesture>
+
+#include "t_hsdomainmodel.h"
+#include "hsdomainmodeldatastructures.h"
+#include "hswidgethost.h"
+#include "hswidgethostvisual.h"
+#include "hspage.h"
+#include "hsscene.h"
+#include "hswidgettoucharea.h"
+
+void TestHsDomainModel::testHsWidgetHostConstruction()
+{
+    HsWidgetData data;
+    data.pageId = 0;
+    data.uri = "mockwidgetplugin";    
+    HsWidgetHost *host = HsWidgetHost::createInstance(data);
+
+    QVERIFY(host);   
+    QVERIFY(!host->mPage);
+    QVERIFY(!host->page());
+    QVERIFY(!host->mWidget);
+    QVERIFY(!host->mIsFinishing);
+    QVERIFY(!host->mComponent);
+    QCOMPARE(host->mDatabaseId, 1);
+    QCOMPARE(host->databaseId(), 1);
+    QVERIFY(host->mStateMachine);
+    QVERIFY(!host->mStateMachine->isRunning());
+
+    delete host;
+}
+
+void TestHsDomainModel::testHsWidgetHostStateMachine()
+{
+    HsWidgetData data;
+    data.pageId = 0;
+    data.uri = "mockwidgetplugin";    
+    HsWidgetHost *host = HsWidgetHost::createInstance(data);
+    QVERIFY(host);
+
+    // State machine events.
+    QSignalSpy event_startAndShowSpy(host, SIGNAL(event_startAndShow()));
+    QSignalSpy event_startAndHideSpy(host, SIGNAL(event_startAndHide()));
+    QSignalSpy event_unloadSpy(host, SIGNAL(event_unload()));
+    QSignalSpy event_showSpy(host, SIGNAL(event_show()));
+    QSignalSpy event_hideSpy(host, SIGNAL(event_hide()));
+    QSignalSpy event_removeSpy(host, SIGNAL(event_remove()));
+    QSignalSpy event_closeSpy(host, SIGNAL(event_close()));
+    QSignalSpy event_finishedSpy(host, SIGNAL(event_finished()));
+    QSignalSpy event_faultedSpy(host, SIGNAL(event_faulted()));
+
+    QSignalSpy sm_finished(host->mStateMachine, SIGNAL(finished()));
+
+    // Host events.
+    QSignalSpy faultedSpy(host, SIGNAL(faulted()));
+    QSignalSpy finishedSpy(host, SIGNAL(finished()));
+        
+    
+    host->startWidget();
+
+    QCOMPARE(event_startAndShowSpy.count(), 1);
+    event_startAndShowSpy.clear();
+    
+    QCOMPARE(faultedSpy.count(), 0);
+    QCOMPARE(finishedSpy.count(), 0);
+    
+    QVERIFY(!host->mIsFinishing);
+    QVERIFY(host->mComponent);
+    QVERIFY(host->mWidget);
+
+    host->hideWidget();
+
+    QCOMPARE(event_hideSpy.count(), 1);
+    event_hideSpy.clear();
+
+    host->showWidget();
+
+    QCOMPARE(event_showSpy.count(), 1);
+    event_showSpy.clear();
+
+    host->remove(); // Calls deleteLater()
+
+    QCOMPARE(event_removeSpy.count(), 1);
+    event_removeSpy.clear();
+
+    QCOMPARE(sm_finished.count(), 1);
+    sm_finished.clear();
+}
+
+void TestHsDomainModel::testHsWidgetHostCloseAndRemove()
+{
+    HsWidgetData widgetData;
+    widgetData.pageId = 0;
+    widgetData.uri = "mockwidgetplugin";    
+    
+    {
+    HsWidgetHost *host = HsWidgetHost::createInstance(widgetData);
+    QVERIFY(host);
+    QSignalSpy event_removeSpy(host, SIGNAL(event_remove()));
+    QSignalSpy event_closeSpy(host, SIGNAL(event_close()));
+
+    host->close();
+    QCOMPARE(event_removeSpy.count(), 0);
+    QCOMPARE(event_closeSpy.count(), 0);
+    }
+
+    {
+    HsWidgetHost *host = HsWidgetHost::createInstance(widgetData);
+    QVERIFY(host);
+    QSignalSpy event_removeSpy(host, SIGNAL(event_remove()));
+    QSignalSpy event_closeSpy(host, SIGNAL(event_close()));
+    
+    host->remove();
+    QCOMPARE(event_removeSpy.count(), 0);
+    QCOMPARE(event_closeSpy.count(), 0);
+    }
+
+    {
+    HsWidgetHost *host = HsWidgetHost::createInstance(widgetData);
+    QVERIFY(host);
+    QSignalSpy event_removeSpy(host, SIGNAL(event_remove()));
+    QSignalSpy event_closeSpy(host, SIGNAL(event_close()));
+    
+    host->startWidget(false);
+    host->close();
+    QCOMPARE(event_removeSpy.count(), 0);
+    QCOMPARE(event_closeSpy.count(), 1);
+    }
+
+    {
+    HsWidgetHost *host = HsWidgetHost::createInstance(widgetData);
+    QVERIFY(host);
+    QSignalSpy event_removeSpy(host, SIGNAL(event_remove()));
+    QSignalSpy event_closeSpy(host, SIGNAL(event_close()));
+
+    host->startWidget();
+    host->startWidget();
+    host->remove();
+    QCOMPARE(event_removeSpy.count(), 1);
+    QCOMPARE(event_closeSpy.count(), 0);
+    }
+}
+
+void TestHsDomainModel::testHsWidgetHostPage()
+{
+    HsWidgetData widgetData;
+    widgetData.pageId = 0;
+    widgetData.uri = "mockwidgetplugin";    
+    HsWidgetHost *host = HsWidgetHost::createInstance(widgetData);
+    QVERIFY(host);
+
+    QVERIFY(!host->page());
+
+    HsPageData pageData;
+    pageData.indexPosition = 0;
+    HsPage *page = HsPage::createInstance(pageData);
+    QVERIFY(page);
+
+    QVERIFY(host->setPage(page));
+    QVERIFY(host->mPage == page);
+    QVERIFY(host->page() == page);
+
+    QVERIFY(host->setPage(0));
+    QVERIFY(!host->mPage);
+    QVERIFY(!host->page());
+
+    host->mDatabaseId = -1;
+    QVERIFY(!host->setPage(page));
+    QVERIFY(!host->mPage);
+    QVERIFY(!host->page());
+
+    delete page;
+
+    delete host;
+}
+ 
+void TestHsDomainModel::testHsWidgetHostEffects()
+{
+    HsWidgetHost *host = new HsWidgetHost(-1);
+    host->startDragEffect();
+    host->startDropEffect();
+}
+
+void TestHsDomainModel::testHsWidgetHostShowAndHideActions()
+{
+    HsWidgetHost *host = new HsWidgetHost(-1);
+    host->action_show();
+    host->action_hide();
+    host->mIsFinishing = true;
+    host->action_show();
+    host->action_hide();
+    delete host;
+}
+
+void TestHsDomainModel::testHsWidgetHostPresentation()
+{
+    HsWidgetData widgetData;
+    widgetData.pageId = 0;
+    widgetData.uri = "mockwidgetplugin";    
+    HsWidgetHost *host = HsWidgetHost::createInstance(widgetData);
+    QVERIFY(host);
+    host->startWidget();
+
+    HsWidgetPresentationData data;
+    data.orientation = Qt::Vertical;
+    data.x = data.y = data.zValue = 0;
+    
+    QVERIFY(host->savePresentation(data));    
+    QVERIFY(host->getPresentation(data));
+
+    host->removePresentation(Qt::Vertical);
+
+    QVERIFY(!host->getPresentation(data));
+
+    host->remove();
+}
+
+void TestHsDomainModel::testHsWidgetHostOnError()
+{
+    HsWidgetHost *host = new HsWidgetHost(-1);    
+    QSignalSpy event_faultedSpy(host, SIGNAL(event_faulted()));
+    host->onError();
+    QCOMPARE(event_faultedSpy.count(), 1);
+    QVERIFY(host->mIsFinishing);
+    delete host;
+}
+
+void TestHsDomainModel::testHsWidgetHostOnSetPreferences()
+{
+    HsWidgetData widgetData;
+    widgetData.pageId = 0;
+    widgetData.uri = "mockwidgetplugin";    
+    HsWidgetHost *host = HsWidgetHost::createInstance(widgetData);
+    QVERIFY(host);
+    host->startWidget();
+    host->onSetPreferences(QStringList());
+    host->onSetPreferences(QStringList() << "mypref");
+    host->remove();
+}
+
+void TestHsDomainModel::testHsWidgetHostShape()
+{
+    HsWidgetData widgetData;
+    widgetData.pageId = 0;
+    widgetData.uri = "mockwidgetplugin";    
+    HsWidgetHost *host = HsWidgetHost::createInstance(widgetData);
+    QVERIFY(host);
+    host->startWidget();        
+    host->remove();
+}
+
+void TestHsDomainModel::testHsWidgetHostShapeInvalidValues()
+{
+    HsWidgetData widgetData;
+    widgetData.pageId = 0;
+    widgetData.uri = "mockwidgetplugincheater";    
+    HsWidgetHost *host = HsWidgetHost::createInstance(widgetData);
+    QVERIFY(host);	
+    host->startWidget();
+    host->remove();
+}
+
+void TestHsDomainModel::testHsWidgetHostGestureEvent()
+{
+    HsWidgetHost *host = new HsWidgetHost(-1); 
+    QList<QGesture*> gestureList;
+
+    // test pan
+    HbPanGesture *panGesture = new HbPanGesture();
+    gestureList << panGesture;
+    QGestureEvent *gestureEvent = new QGestureEvent(gestureList);
+    Qt::GestureState state = panGesture->state();
+    host->visual()->gestureEvent(gestureEvent);
+
+    delete panGesture;
+    delete host;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/t_hswidgethostvisual.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,155 @@
+/*
+* 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 <QGraphicsWidget>
+#include <QSqlDatabase>
+#include <HbInstance>
+#include <HbPanGesture>
+
+#include "t_hsdomainmodel.h"
+#include "hsdomainmodeldatastructures.h"
+#include "hswidgethost.h"
+#include "hswidgethostvisual.h"
+#include "hspage.h"
+#include "hsscene.h"
+#include "hswidgettoucharea.h"
+#include "hshostedwidgetfactory.h"
+#include "hsconfiguration.h"
+
+void TestHsDomainModel::testHsWidgetHostVisualConstruction()
+{
+    HsWidgetHostVisual *visual = new HsWidgetHostVisual();
+
+    QVERIFY(visual);
+    QVERIFY(!visual->mWidget);
+    delete visual;
+}
+
+
+void TestHsDomainModel::testHsWidgetHostVisualShape()
+{
+    HsWidgetData data;
+    data.pageId = 0;
+    data.uri = "mockwidgetplugin";    
+    HsWidgetHost *host = HsWidgetHost::createInstance(data);
+
+    host->startWidget();
+    QPainterPath path = host->visual()->shape();
+    QCOMPARE(path.boundingRect(),QRectF(QPointF(0,0), HsConfiguration::instance()->minimumWidgetSizeInPixels()));
+    
+    host->visual()->mWidget->resize(QSizeF(100,100));
+    path = host->visual()->shape();
+    QCOMPARE(path.boundingRect(),QRectF(0,0,100,100));
+    
+    
+    host->remove();
+    
+    data.pageId = 0;
+    data.uri = "mockwidgetplugintoobig";    
+    host = HsWidgetHost::createInstance(data);
+    host->startWidget();
+    path = host->visual()->shape();
+    QCOMPARE(path.boundingRect(),QRectF(QPointF(0,0), HsConfiguration::instance()->maximumWidgetSizeInPixels()));
+    host->remove();
+}
+
+void TestHsDomainModel::testHsWidgetHostVisualSetWidget()
+{
+    QObject *widget = HsHostedWidgetFactory::instance()->createWidget("mockwidgetplugin");
+    HsWidgetHostVisual *visual = new HsWidgetHostVisual();
+    visual->setWidget(widget);
+    QVERIFY(visual->mWidget == widget);
+    delete visual;
+}
+
+void TestHsDomainModel::testHsWidgetHostVisualSetVisualModel()
+{
+    HsWidgetHost *host = new HsWidgetHost(-1);
+    HsWidgetHostVisual *visual = new HsWidgetHostVisual();
+    visual->setVisualModel(host);
+    QVERIFY(visual->mVisualModel == host);
+    delete visual;
+    host->remove();
+}
+
+void TestHsDomainModel::testHsWidgetHostVisualEffects()
+{
+    HsWidgetData data;
+    data.pageId = 0;
+    data.uri = "mockwidgetplugin";    
+    HsWidgetHost *host = HsWidgetHost::createInstance(data);
+
+    host->startWidget();
+    host->visual()->startDragEffect();
+    host->visual()->startDropEffect();
+    host->remove();
+}
+
+
+void TestHsDomainModel::testHsWidgetHostVisualEventFilter()
+{
+    HsWidgetHostVisual *visual = new HsWidgetHostVisual();
+    QSignalSpy resizedSpy(visual, SIGNAL(resized()));
+    QEvent *someEvent = new QEvent(QEvent::ApplicationActivated);
+    visual->eventFilter(0, someEvent);
+    QCOMPARE(resizedSpy.count(), 0);
+    delete visual;
+    delete someEvent;
+}
+
+
+void TestHsDomainModel::testHsWidgetHostVisualGestureEvent()
+{
+    HsWidgetHostVisual *visual = new HsWidgetHostVisual();
+    QList<QGesture*> gestureList;
+
+    // test empty gesture list
+    visual->gestureEvent(new QGestureEvent(gestureList));
+
+    // test pan
+    HbPanGesture *panGesture = new HbPanGesture();
+    gestureList << panGesture;
+    QGestureEvent *gestureEvent = new QGestureEvent(gestureList);
+    visual->gestureEvent(gestureEvent);
+
+    delete panGesture;
+    delete visual;
+}
+
+void TestHsDomainModel::testHsWidgetHostVisualSetupTouchArea()
+{
+    HsWidgetHostVisual *visual = new HsWidgetHostVisual();
+    visual->setupTouchArea();
+    delete visual;
+}
+
+void TestHsDomainModel::testHsWidgetHostVisualSetupEffects()
+{
+    HsWidgetHostVisual *visual = new HsWidgetHostVisual();
+    visual->setupEffects();
+    delete visual;
+}
+
+void TestHsDomainModel::testHsWidgetHostVisualSetNewSize()
+{
+    HsWidgetHostVisual *visual = new HsWidgetHostVisual();
+    visual->setNewSize(QSizeF(100,100));
+    QVERIFY(visual->size() == QSizeF(100,100));
+    delete visual;
+}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/t_hswidgetpositioningonwidgetadd.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,256 @@
+/*
+* 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 ONLY_MENU_TESTCASES
+
+#include <HbMainWindow>
+#include <HbInstance>
+
+#include "t_hsdomainmodel.h"
+#include "hsconfiguration.h"
+#include "hsgui.h"
+#include "hswidgetpositioningonwidgetadd.h"
+
+inline bool hsRectCompare(const QRectF& p1, const QRectF& p2)
+{
+    const qreal offset = 0.1;
+    bool rectsAreSame = (qAbs(p1.x()-p2.x()) < offset) && (qAbs(p1.y()-p2.y()) < offset) && (qAbs(p1.width()-p2.width()) < offset) && (qAbs(p1.height()-p2.height()) < offset);
+    if ( !rectsAreSame) {
+        qDebug() << "rects are not the same: actual" << p1 << "expected" << p2;
+    }
+    return rectsAreSame;
+}
+
+Q_DECLARE_METATYPE(QList<QRectF>)
+
+void TestHsDomainModel::testWidgetPositioningOnWidgetAddChangeInstance()
+{
+    QVERIFY(!HsWidgetPositioningOnWidgetAdd::instance());
+    HsWidgetPositioningOnWidgetAdd::setInstance(0);
+    QVERIFY(!HsWidgetPositioningOnWidgetAdd::instance());
+    HsWidgetPositioningOnWidgetAdd *c = new HsAnchorPointInBottomRight;
+    HsWidgetPositioningOnWidgetAdd::setInstance(c);
+    QVERIFY(HsWidgetPositioningOnWidgetAdd::instance() == c);
+    HsWidgetPositioningOnWidgetAdd::setInstance(0);
+    QVERIFY(!HsWidgetPositioningOnWidgetAdd::instance());
+}
+
+void TestHsDomainModel::testHsAnchorPointInBottomRight_data()
+{
+    QTest::addColumn<QRectF>("contentArea");
+    QTest::addColumn<QList<QRectF> >("widgets");
+    QTest::addColumn<QList<QRectF> >("expectedWidgets");
+
+    QTest::newRow("square")
+        << QRectF(0, 0, 100, 100)
+        << (QList<QRectF>() << QRectF(0, 0, 10, 10) << QRectF(50, 50, 10, 10) << QRectF(50, 50, 20, 10) << QRectF(50, 50, 10, 10))
+        << (QList<QRectF>() << QRectF(45, 45, 10, 10) << QRectF(30.8579, 30.8579, 10, 10) << QRectF(6.71573, 16.7157, 20, 10) << QRectF(2.57359, 2.57359, 10, 10));
+
+    QTest::newRow("portrait")
+        << QRectF(0, 0, 50, 100)
+        << (QList<QRectF>() << QRectF(0, 0, 10, 10) << QRectF(50, 50, 10, 10) << QRectF(50, 50, 10, 20) << QRectF(50, 50, 10, 10))
+        << (QList<QRectF>() << QRectF(20, 50, 10, 10) << QRectF(8.45299, 26.906, 10, 10) << QRectF(40,80, 10, 20) << QRectF(28.453, 66.906, 10, 10));
+
+    QTest::newRow("landscape")
+        << QRectF(0, 0, 100, 50)
+        << (QList<QRectF>() << QRectF(0, 0, 20, 10) << QRectF(50, 50, 20, 10) << QRectF(50, 50, 10, 20) << QRectF(50, 50, 10, 10))
+        << (QList<QRectF>() << QRectF(40, 20, 20, 10) << QRectF(23.6701, 11.835, 20, 10) << QRectF(90, 30, 10, 20) << QRectF(73.6701, 31.835, 10, 10));
+
+    QTest::newRow("out of rect")
+        << QRectF(0, 0, 100, 100)
+        << (QList<QRectF>() << QRectF(0, 0, 200, 200) )
+        << (QList<QRectF>() << QRectF(0, 0, 200, 200) );
+}
+
+void TestHsDomainModel::testHsAnchorPointInBottomRight()
+{
+    QFETCH(QRectF, contentArea);
+    QFETCH(QList<QRectF>, widgets);
+    QFETCH(QList<QRectF>, expectedWidgets);
+
+    HsWidgetPositioningOnWidgetAdd *converter =
+        new HsAnchorPointInBottomRight;
+
+    QList<QRectF> convertedWidgets =
+        converter->convert(contentArea, QList<QRectF>(),
+                           widgets, QPointF());
+
+    QCOMPARE(convertedWidgets.count(),
+             expectedWidgets.count());
+
+    for (int i = 0; i < expectedWidgets.count(); ++i) {
+        QVERIFY(hsRectCompare(convertedWidgets.at(i),expectedWidgets.at(i)));
+    }
+
+    delete converter;
+}
+
+void TestHsDomainModel::testHsWidgetOrganizerCase1_data()
+{
+    // Case 1: anchorDistance = 5, searchRowByRow, portrait
+    QTest::addColumn<QRectF>("contentArea");
+    QTest::addColumn<QList<QRectF> >("existingWidgets");
+    QTest::addColumn<QList<QRectF> >("widgets");
+    QTest::addColumn<QList<QRectF> >("expectedWidgets");
+
+    // empty parameters
+    QTest::newRow("case1.1")
+        << QRectF() << QList<QRectF>() << QList<QRectF>() << QList<QRectF>();
+
+    // invalid parameters
+    QTest::newRow("case1.2")
+        << QRectF(0, 0, 100, 100) << QList<QRectF>()
+        << (QList<QRectF>() << QRectF(0, 0, 10, 10) << QRectF(0, 0, 10, 10) << QRectF(0, 0, 10, 10))
+        << (QList<QRectF>() << QRectF(0, 0, 10, 10) << QRectF(15, 0, 10, 10) << QRectF(30, 0, 10, 10));
+
+    // basic set of similar size rects to simple content area's first row
+    QTest::newRow("case1.3")
+        << QRectF(54, 763, 24, 5434)
+        << (QList<QRectF>() << QRectF(343, 321, 1034, 102) << QRectF(3320, 3420, 1430, 1043) << QRectF(0, 43, 10, 997))
+        << (QList<QRectF>() << QRectF(322, 12, 835, 623) << QRectF(624, 56, 536, 895) << QRectF(31, 423, 32, 9823))
+        << QList<QRectF>();
+
+    // set of similar height rects to simple content area on multiple rows
+    QTest::newRow("case1.4")
+        << QRectF(0, 0, 100, 100) << QList<QRectF>()
+        << (QList<QRectF>() << QRectF(0, 0, 40, 10) << QRectF(0, 0, 50, 10) << QRectF(0, 0, 95, 10) << QRectF(0, 0, 50, 10) << QRectF(0, 0, 10, 10))
+        << (QList<QRectF>() << QRectF(0, 0, 40, 10) << QRectF(45, 0, 50, 10) << QRectF(0, 15, 95, 10) << QRectF(0, 30, 50, 10) << QRectF(55, 30, 10, 10));
+
+    // set of random size rects to simple content area on multiple rows
+    QTest::newRow("case1.5")
+        << QRectF(0, 0, 100, 100) << QList<QRectF>()
+        << (QList<QRectF>() << QRectF(0, 0, 13, 22) << QRectF(0, 0, 59, 39) << QRectF(0, 0, 93, 8) << QRectF(0, 0, 44, 17) << QRectF(0, 0, 22, 31))
+        << (QList<QRectF>() << QRectF(85, 0, 13, 22) << QRectF(0, 0, 59, 39) << QRectF(0, 60, 93, 8) << QRectF(0, 40, 44, 17) << QRectF(60, 0, 22, 31));
+
+    // set of random size rects to simple content area on multiple rows with existing widgets
+    QTest::newRow("case1.6")
+        << QRectF(0, 0, 100, 100)
+        << (QList<QRectF>() << QRectF(42, 16, 14, 11) << QRectF(9, 12, 13, 62) << QRectF(55, 65, 20, 20) << QRectF(70, 20, 13, 11) << QRectF(30, 90, 22, 8))
+        << (QList<QRectF>() << QRectF(0, 0, 13, 22) << QRectF(0, 0, 42, 34) << QRectF(0, 0, 54, 8) << QRectF(0, 0, 32, 17) << QRectF(0, 0, 27, 24))
+        << (QList<QRectF>() << QRectF(25, 0, 13, 22) << QRectF(25, 30, 42, 34) << QRectF(0, 75, 54, 8) << QRectF(60, 0, 32, 17) << QRectF(70, 35, 27, 24));
+
+}
+
+void TestHsDomainModel::testHsWidgetOrganizerCase1()
+{
+    QFETCH(QRectF, contentArea);
+    QFETCH(QList<QRectF>, existingWidgets);
+    QFETCH(QList<QRectF>, widgets);
+    QFETCH(QList<QRectF>, expectedWidgets);
+
+    HsWidgetOrganizer *widgetOrganizer =
+        new HsWidgetOrganizer(5, HsConfiguration::SearchRowByRow);
+
+    QList<QRectF> convertedWidgets = widgetOrganizer->convert(contentArea, existingWidgets,
+                                                               widgets, QPointF());
+    // Verify amount
+    QCOMPARE(convertedWidgets.count(), expectedWidgets.count());
+    // Compare calculated and expected values
+    for (int i = 0; i < expectedWidgets.count(); ++i) {
+        QVERIFY(hsRectCompare(convertedWidgets.at(i), expectedWidgets.at(i)));
+    }
+
+    delete widgetOrganizer;
+}
+
+void TestHsDomainModel::testHsWidgetOrganizerCase2_data()
+{
+    // CASE 2: anchorDistance = 5, searchColumnByColumn, landscape
+    QTest::addColumn<QRectF>("contentArea");
+    QTest::addColumn<QList<QRectF> >("existingWidgets");
+    QTest::addColumn<QList<QRectF> >("widgets");
+    QTest::addColumn<QList<QRectF> >("expectedWidgets");
+
+    // basic set of similar size rects to simple content area's first column
+    QTest::newRow("case2.1")
+        << QRectF(0, 0, 100, 100) << QList<QRectF>()
+        << (QList<QRectF>() << QRectF(0, 0, 10, 10) << QRectF(0, 0, 10, 10) << QRectF(0, 0, 10, 10))
+        << (QList<QRectF>() << QRectF(0, 0, 10, 10) << QRectF(0, 15, 10, 10) << QRectF(0, 30, 10, 10));
+
+    // set of random size rects to simple content area on multiple columns with existing widgets
+    QTest::newRow("case2.2")
+        << QRectF(0, 0, 100, 100)
+        << (QList<QRectF>() << QRectF(20, 0, 14, 18) << QRectF(68, 0, 13, 21) << QRectF(32, 30, 14, 53) << QRectF(62, 60, 31, 13) << QRectF(90, 33, 9, 8))
+        << (QList<QRectF>() << QRectF(0, 0, 43, 12) << QRectF(0, 0, 20, 16) << QRectF(0, 0, 14, 25) << QRectF(0, 0, 22, 47) << QRectF(0, 0, 24, 11))
+        << (QList<QRectF>() << QRectF(15, 85, 43, 12) << QRectF(35, 0, 20, 16) << QRectF(0, 70, 14, 25) << QRectF(0, 20, 22, 47) << QRectF(50, 25, 24, 11));
+}
+
+void TestHsDomainModel::testHsWidgetOrganizerCase2()
+{
+    QFETCH(QRectF, contentArea);
+    QFETCH(QList<QRectF>, existingWidgets);
+    QFETCH(QList<QRectF>, widgets);
+    QFETCH(QList<QRectF>, expectedWidgets);
+
+    mainWindow.setOrientation(Qt::Horizontal);
+    HsWidgetOrganizer *widgetOrganizer =
+        new HsWidgetOrganizer(5, HsConfiguration::SearchColumnByColumn);
+    QList<QRectF> convertedWidgets = widgetOrganizer->convert(contentArea, existingWidgets,
+                                                widgets, QPointF());
+    QCOMPARE(convertedWidgets.count(), expectedWidgets.count());
+    for (int i = 0; i < expectedWidgets.count(); ++i) {
+        QVERIFY(hsRectCompare(convertedWidgets.at(i), expectedWidgets.at(i)));
+    }
+
+    delete widgetOrganizer;
+    // set orientation back to normal
+    mainWindow.setOrientation(Qt::Vertical);
+}
+
+void TestHsDomainModel::testHsWidgetOrganizerCase3_data()
+{
+    // CASE 3: anchorDistance = 1, searchRowByRow, portrait
+    QTest::addColumn<QRectF>("contentArea");
+    QTest::addColumn<QList<QRectF> >("existingWidgets");
+    QTest::addColumn<QList<QRectF> >("widgets");
+    QTest::addColumn<QList<QRectF> >("expectedWidgets");
+
+    // basic set of similar size rects to simple content area's first column
+    QTest::newRow("case3.1")
+        << QRectF(0, 0, 100, 100) << QList<QRectF>()
+        << (QList<QRectF>() << QRectF(0, 0, 10, 10) << QRectF(0, 0, 10, 10) << QRectF(0, 0, 10, 10))
+        << (QList<QRectF>() << QRectF(0, 0, 10, 10) << QRectF(11, 0, 10, 10) << QRectF(22, 0, 10, 10));
+
+    // set of random size rects to simple content area on multiple columns with existing widgets
+    QTest::newRow("case3.2")
+        << QRectF(0, 0, 100, 100)
+        << (QList<QRectF>() << QRectF(10, 0, 14, 22) << QRectF(64, 0, 14, 34) << QRectF(0, 54, 34, 14) << QRectF(74, 69, 26, 12) << QRectF(41, 80, 11, 20))
+        << (QList<QRectF>() << QRectF(0, 0, 46, 16) << QRectF(0, 0, 40, 19) << QRectF(0, 0, 38, 53) << QRectF(0, 0, 20, 40) << QRectF(0, 0, 38, 25))
+        << (QList<QRectF>() << QRectF(53, 82, 46, 16) << QRectF(0, 80, 40, 19) << QRectF(25, 0, 38, 53) << QRectF(79, 0, 20, 40) << QRectF(35, 54, 38, 25));
+
+}
+
+void TestHsDomainModel::testHsWidgetOrganizerCase3()
+{
+    QFETCH(QRectF, contentArea);
+    QFETCH(QList<QRectF>, existingWidgets);
+    QFETCH(QList<QRectF>, widgets);
+    QFETCH(QList<QRectF>, expectedWidgets);
+
+    HsWidgetOrganizer *widgetOrganizer =
+        new HsWidgetOrganizer(1, HsConfiguration::SearchRowByRow);
+    QList<QRectF> convertedWidgets = widgetOrganizer->convert(contentArea, existingWidgets,
+                                                widgets, QPointF());
+    QCOMPARE(convertedWidgets.count(), expectedWidgets.count());
+    for (int i = 0; i < expectedWidgets.count(); ++i) {
+        QVERIFY(hsRectCompare(convertedWidgets.at(i), expectedWidgets.at(i)));
+    }
+
+    delete widgetOrganizer;
+}
+
+#endif // ONLY_MENU_TESTCASES
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/t_hswidgettoucharea.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,90 @@
+/*
+* 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 <HbTapAndHoldGesture>
+#include <HbPanGesture>
+
+#include "t_hsdomainmodel.h"
+#include "hswidgethost.h"
+#include "hswidgettoucharea.h"
+#include "hsscene.h"
+
+
+
+void TestHsDomainModel::testWidgetTouchAreaConstruction()
+{
+    HsWidgetHost *widget = new HsWidgetHost(-1);
+    HsWidgetTouchArea *widgetTouchArea = new HsWidgetTouchArea(widget->visual());
+    QVERIFY(widgetTouchArea);
+    delete widgetTouchArea;   
+}
+
+void TestHsDomainModel::testWidgetTouchAreaSceneEvent()
+{
+    HsWidgetHost *widget = new HsWidgetHost(-1);
+    HsWidgetTouchArea *widgetTouchArea = new HsWidgetTouchArea(widget->visual());
+    HsScene *scene = HsScene::instance();
+
+    // test shape fetch
+    QPainterPath *path = new QPainterPath(widgetTouchArea->shape());
+    QVERIFY(path);
+    delete path;
+
+    QSignalSpy widgetTapStartedSpy(scene, SIGNAL(widgetTapStarted(QPointF,HsWidgetHost*)));
+    QSignalSpy widgetMoveFinishedSpy(scene, SIGNAL(widgetMoveFinished(const QPointF &, HsWidgetHost*)));
+
+    // test touch begin
+    QTouchEvent::TouchPoint touchPoint;
+    QList<QTouchEvent::TouchPoint> touchPoints;
+    touchPoints.append(touchPoint);
+    QTouchEvent *touchEvent = new QTouchEvent(QEvent::TouchBegin);
+    touchEvent->setTouchPoints(touchPoints);
+    widgetTouchArea->sceneEvent(touchEvent);
+    QCOMPARE(widgetTapStartedSpy.count(), 1);
+
+    delete widgetTouchArea;    
+    delete widget;  
+}
+
+
+void TestHsDomainModel::testWidgetTouchAreaGestureEvent()
+{
+    HsWidgetHost *widget = new HsWidgetHost(-1);
+    HsWidgetTouchArea *widgetTouchArea = new HsWidgetTouchArea(widget->visual());
+    QList<QGesture*> gestureList;
+
+    // test empty gesture list
+    widgetTouchArea->gestureEvent(new QGestureEvent(gestureList));
+
+    // test tapAndHold (not real test as gestures need to be created using qesturerecognizer
+    HbTapAndHoldGesture *tapAndHoldGesture = new HbTapAndHoldGesture();
+    gestureList << tapAndHoldGesture;
+    QGestureEvent *gestureEvent = new QGestureEvent(gestureList);
+    widgetTouchArea->gestureEvent(gestureEvent);
+    
+    gestureList.clear();
+
+    // test pan
+    HbPanGesture *panGesture = new HbPanGesture();
+    gestureList << panGesture;
+    gestureEvent = new QGestureEvent(gestureList);
+    widgetTouchArea->gestureEvent(gestureEvent);
+
+    delete tapAndHoldGesture;
+    delete panGesture;
+    delete widgetTouchArea;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/testcontentservice.cpp	Mon Oct 04 00:07:25 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:
+*
+*/
+
+#include "t_hsdomainmodel.h"
+#include "hscontentservice.h"
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void TestHsDomainModel::testCreateNDeleteWidget()
+{   
+    createSceneWithPages();
+
+    HsContentService contentService;
+
+    QVariantHash params;
+
+    params["uri"]= "invalidmockwidgetplugin";
+    QVERIFY(!contentService.createWidget(params));
+
+    //this has to be uri1 because of mocked factory
+    params["uri"]= "mockwidgetplugin";
+    QVERIFY(contentService.createWidget(params));
+  
+    QVERIFY(!HsContentService::instance()->addWidget(QString(), QVariantHash()));
+
+    destroySceneAndPages();
+}
+
+void TestHsDomainModel::testContentServiceStaticInterface()
+{
+    QVERIFY(HsContentService::instance());
+}
+
+
+void TestHsDomainModel::testContentServiceWidgetCount()
+{
+    createSceneWithPages();
+    HsContentService *contentService = HsContentService::instance();
+    QVERIFY(contentService);
+    int count = 0;
+    QVERIFY(contentService->widgets("testing", QVariantHash(), count));
+    
+    
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/src/testshortcutservice.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,40 @@
+/*
+* 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 <QStateMachine>
+
+#include "hsshortcutservice.h"
+#include "hsshortcutservice_p.h"
+#include "t_hsdomainmodel.h"
+
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void TestHsDomainModel::testShortcutService()
+{
+    QStateMachine *machine = new QStateMachine;
+    
+    HsShortcutService *scService = HsShortcutService::instance(machine);
+
+    QCOMPARE(scService->isItemShortcutWidget(0), false);
+
+    QVERIFY(HsShortcutService::instance());
+
+    scService->executeCollectionAction(0, QString(""));//how to test this?  
+    delete machine;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/t_hsdomainmodel.pri	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,96 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+
+HEADERS += ./inc/*.h
+
+SOURCES += ./src/*.cpp
+
+HEADERS += ../../../hsutils/inc/hspropertyanimationwrapper.h \
+           ../../../hsutils/inc/hswidgetpositioningonorientationchange.h \
+           ../../../hsutils/inc/hsmenueventfactory.h \
+           ../../../hsutils/inc/hsmenuevent.h \
+           ../../../hsutils/inc/hspageindicator.h \
+           ../../../hsutils/inc/hspageindicatoritem.h \
+           ../../../hsutils/inc/hstrashbinwidget.h \
+           ../../../hsutils/inc/hssnapline.h \
+           ./../../inc/hscontentservice.h \
+           ./../../inc/hsdatabase.h  \
+           ./../../inc/hsdomainmodel_global.h  \
+           ./../../inc/hspage.h \
+           ./../../inc/hspagevisual.h \
+           ./../../inc/hspagetoucharea.h \
+           ./../../inc/hspagenewwidgetlayout.h \
+           ./../../inc/hsscene.h \
+           ./../../inc/hsshortcutservice.h \
+           ./../../inc/hsshortcutservice_p.h \
+           ./../../inc/hswallpaper.h \
+           ./../../inc/hswallpaperloader.h \
+           ./../../inc/hswallpaperloaderthread.h \
+           ./../../inc/hshostedwidgetfactory.h \
+           ./../../inc/hswidgethost.h \
+           ./../../inc/hswidgethostvisual.h \
+           ./../../inc/hswidgettoucharea.h \
+           ./../../inc/hsdomainmodeldatastructures.h \
+           ./../../inc/hswidgetcomponentregistry.h \
+           ./../../inc/hswidgetcomponent.h \
+           ./../../inc/hswidgetcomponentdescriptor.h \
+           ./../../inc/hsbackuprestoreobserver.h \
+           ./../../inc/hsconfiguration.h \
+           ./../../inc/hsgui.h \
+           ./../../inc/hsidlewidget.h \
+           ./../../inc/hsdocumentloader.h \
+           ./../../inc/hswidgetpositioningonwidgetadd.h
+
+SOURCES += ../../../hsutils/src/hswidgetpositioningonorientationchange.cpp \
+           ../../../hsutils/src/hsmenueventfactory.cpp \
+           ../../../hsutils/src/hsmenuevent.cpp \
+           ../../../hsutils/src/hspageindicator.cpp \
+           ../../../hsutils/src/hspageindicatoritem.cpp \
+           ../../../hsutils/src/hstrashbinwidget.cpp \
+           ../../../hsutils/src/hssnapline.cpp \
+           ./../../src/hscontentservice.cpp \
+           ./../../src/hsdatabase.cpp  \
+           ./../../src/hspage.cpp  \
+           ./../../src/hspagevisual.cpp \
+           ./../../src/hspagetoucharea.cpp  \
+           ./../../src/hspagenewwidgetlayout.cpp  \
+           ./../../src/hsscene.cpp \
+           ./../../src/hsshortcutservice.cpp \
+           ./../../src/hswallpaper.cpp \
+           ./../../src/hswallpaperloader.cpp \
+           ./../../src/hswallpaperloaderthread.cpp \
+           ./../../src/hshostedwidgetfactory.cpp \
+           ./../../src/hswidgethost.cpp \
+           ./../../src/hswidgethostvisual.cpp \
+           ./../../src/hswidgettoucharea.cpp \
+           ./../../src/hswidgetcomponentregistry.cpp \
+           ./../../src/hswidgetcomponent.cpp \
+           ./../../src/hswidgetcomponentdescriptor.cpp \
+           ./../../src/hsbackuprestoreobserver.cpp \
+           ./../../src/hsconfiguration.cpp \
+           ./../../src/hsgui.cpp \
+           ./../../src/hsidlewidget.cpp \
+           ./../../src/hsdocumentloader.cpp \
+           ./../../src/hswidgetpositioningonwidgetadd.cpp
+           
+symbian: {
+HEADERS += ./../../inc/hsbackuprestoreobserver_p.h \
+           ./../../inc/hsbackuprestoreactivecallback.h \
+           $${EPOCROOT}epoc32/include/connect/abclient.h
+SOURCES += ./../../src/hsbackuprestoreactivecallback.cpp
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/t_hsdomainmodel/t_hsdomainmodel.pro	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,89 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+TEMPLATE = app
+
+CONFIG(debug, debug|release) {
+    LIBS += -L./../../../../../bin/debug -lcaclient
+    DESTDIR = debug
+}
+else {
+    LIBS += -L./../../../../../bin/release  -lcaclient
+    DESTDIR = release
+}
+
+
+
+CONFIG += debug_and_release \
+          console
+
+CONFIG += hb mobility
+MOBILITY = serviceframework
+
+HB += hbfeedback
+
+coverage:DEFINES += COVERAGE_MEASUREMENT
+
+QT += testlib \
+      xml \
+      sql
+
+DEFINES += HOMESCREEN_TEST \
+           HSDOMAINMODEL_TEST \
+           HSUTILS_TEST
+
+DEPENDPATH += .\
+              ./src \
+              ./inc
+
+INCLUDEPATH += .\
+               ./inc \
+               ../../inc \
+               ../../../inc \
+               ../../../hsutils/inc \
+               ../../../hsapplication/inc
+
+exists(../../../../../homescreensrv) {
+INCLUDEPATH += ../../../../../homescreensrv/homescreensrv_plat/contentstorage_api
+
+} else {
+INCLUDEPATH += $${EPOCROOT}sf/mw/homescreensrv/homescreensrv_plat/contentstorage_api
+}
+
+RESOURCES += ../../hsdomainmodel_win.qrc
+
+symbian: {
+    CONFIG += symbian_test
+    CONFIG -= hb
+    load(hb.prf)
+    CONFIG -= symbian_i18n
+    TARGET.UID3 = 0x20022F59
+    TARGET.CAPABILITY = CAP_APPLICATION AllFiles
+    TARGET.EPOCHEAPSIZE = 0x20000 0x1000000 // 128kB - 16MB
+    TARGET.EPOCALLOWDLLDATA=1
+
+    LIBS += -lxqsettingsmanager
+
+    INCLUDEPATH +=$${EPOCROOT}epoc32/include/connect
+    include(installs_symbian.pri)
+    
+    MMP_RULES += SMPSAFE
+}
+
+include(t_hsdomainmodel.pri)
+
+win32:include(installs_win32.pri)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/tsrc/tsrc.pro	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,21 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+TEMPLATE = subdirs
+SUBDIRS  = mockwidgetplugin mockwidgetplugintoobig mockwidgetplugintoosmall mockwidgetplugincheater t_hsdomainmodel
+
+CONFIG  += ordered
+
--- a/homescreenapp/hshomescreenclientplugin/hshomescreenclientplugin.pro	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/hshomescreenclientplugin/hshomescreenclientplugin.pro	Mon Oct 04 00:07:25 2010 +0300
@@ -32,6 +32,7 @@
     TARGET.UID3 = 0x20022F72
     LIBS += -lxqservice
     LIBS += -lxqserviceutil
+    MMP_RULES += SMPSAFE
 }
 
 win32: {
--- a/homescreenapp/hshomescreenclientplugin/tsrc/t_hshomescreenclientplugin/decision_cov_emulator.pl	Fri Sep 17 08:27:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +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: Script for running branch coverage test
-#
-
-#USAGE:
-#    Usage: decision_cov.pl [-make=command]
-#    -make=instrument || run || ctcpost
-
-# import module
-use Getopt::Long;
-
-# read options
-my $make = "all";
-my $success = GetOptions ("make=s"   => \$make);
-
-if($make) {
-    if (($make eq "instrument") || ($make eq "all")) {
-        system("del mon.sym");
-        system("del mon.dat");
-        system("del profile.txt");
-        system("rmdir /s /q CTCFUNCTION");
-        system("rmdir /s /q CTCDECISION");
-		system("call qmake -config coverage");
-		system("call sbs -c winscw_udeb.test");
-		system("call sbs -c winscw_udeb.test clean");
-		system("call sbs -c winscw_udeb clean");
-		system("call sbs -c winscw_udeb");
-		system("call ctcwrap -i fd -2comp -no-conf-check -C EXCLUDE=* -C NO_EXCLUDE=./../../src/* sbs -c winscw_udeb.test");
-	}
-    if (($make eq "run") || ($make eq "all")) {
-		system("call \\epoc32\\release\\winscw\\udeb\\t_hshomescreenclientplugin.exe -o c:\\t_hshomescreenclientplugin.log");
-	}
-	if (($make eq "ctcpost") || ($make eq "all")) {
-		system("call ctcpost -ff -p profile.txt");
-		system("call ctc2html -nsb -i profile.txt -o CTCFUNCTION");
-		system("call del profile.txt");
-		system("call ctcpost -fd -p profile.txt");
-		system("call ctc2html -nsb -i profile.txt -o CTCDECISION");
-		system("call del profile.txt");
-	}
-}	
-print "END.\n";
--- a/homescreenapp/hshomescreenclientplugin/tsrc/t_hshomescreenclientplugin/inc/t_hshomescreenclientplugin.h	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/hshomescreenclientplugin/tsrc/t_hshomescreenclientplugin/inc/t_hshomescreenclientplugin.h	Mon Oct 04 00:07:25 2010 +0300
@@ -40,6 +40,7 @@
      void testAddWidget();
      void testAddInvalidWidget();
      void testSetWallpaper();
+     void testSetWallpaper2();
      void testOnRequestError();
 
 signals:
--- a/homescreenapp/hshomescreenclientplugin/tsrc/t_hshomescreenclientplugin/src/t_hshomescreenclientplugin.cpp	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/hshomescreenclientplugin/tsrc/t_hshomescreenclientplugin/src/t_hshomescreenclientplugin.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -109,6 +109,27 @@
 // ---------------------------------------------------------------------------
 // ---------------------------------------------------------------------------
 //
+void HsHomescreenClientPluginTest::testSetWallpaper2()
+{  
+    HsHomescreenClient *client = new HsHomescreenClient;
+    
+    QSignalSpy requestFinishedSpy(client, SIGNAL(requestFinished()));
+    
+    bool result = client->setWallpaper("wallpaper", "wallpaper");
+    
+    // but emit correct signals
+    connect(this, SIGNAL(onRequestCompletedTest(QVariant)), client, SLOT(onRequestCompleted(QVariant)));
+    emit onRequestCompletedTest(true);
+    
+    QVERIFY(requestFinishedSpy.count());
+    QVERIFY(client->mRequestResult);
+    
+    delete client;    
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
 void HsHomescreenClientPluginTest::testOnRequestError()
 {  
     HsHomescreenClient *client = new HsHomescreenClient;
--- a/homescreenapp/hshomescreenclientplugin/tsrc/t_hshomescreenclientplugin/t_hshomescreenclientplugin.pro	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/hshomescreenclientplugin/tsrc/t_hshomescreenclientplugin/t_hshomescreenclientplugin.pro	Mon Oct 04 00:07:25 2010 +0300
@@ -51,6 +51,8 @@
     TARGET.EPOCHEAPSIZE = 0x20000 0x1000000 // 128kB - 16MB
     LIBS += -lxqservice
     LIBS += -lxqserviceutil
+    
+    MMP_RULES += SMPSAFE
 } else {
     error("Only Symbian supported!")
 }
--- a/homescreenapp/hsmenuclientplugin/hsmenuclientplugin.pro	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/hsmenuclientplugin/hsmenuclientplugin.pro	Mon Oct 04 00:07:25 2010 +0300
@@ -34,6 +34,8 @@
 
 symbian: {
 	TARGET.UID3 = 0x20028715
+	
+	MMP_RULES += SMPSAFE
 }
 
 include(../common.pri)
--- a/homescreenapp/hsmenuclientplugin/src/hsmenuclient.cpp	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/hsmenuclientplugin/src/hsmenuclient.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -18,16 +18,15 @@
 #include <QString>
 #include <QDebug>
 
+#include <caquery.h>
+#include <caentry.h>
+#include <caicondescription.h>
+#include <caservice.h>
+
 #include "hsapp_defs.h"
-#include "caquery.h"
-#include "caentry.h"
-#include "caicondescription.h"
-#include "caservice.h"
-
 #include "hsmenuclient.h"
 #include "hsmenuclient_p.h"
 
-
 /*!
     \class HsMenuClient
     \ingroup group_hsmenuclient
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsmenuclientplugin/tsrc/t_hsmenuclientplugin/inc/caservice_p.h	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,54 @@
+/*
+ * 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: caservice_p.h
+ *
+ */
+
+#ifndef CASERVICE_PRIVATE_H
+#define CASERVICE_PRIVATE_H
+
+#include <QList>
+#include <caentry.h>
+
+class QString;
+class CaQuery;
+class CaServicePrivate
+{
+
+public:
+    ~CaServicePrivate() {
+        clearAll();
+    }
+    
+    QList< QSharedPointer<CaEntry> > mCreatedEntries;
+    QList< QSharedPointer<CaEntry> > mReturnedEntries;
+    int mEntryToRemove;
+    QSharedPointer<CaEntry> mUpdatedEntry;
+    CaQuery* mQueryPassedToGetList;
+    
+    void AddEntriesForUpdate();
+    void clearAll();    
+    static CaServicePrivate& instance() {
+        static CaServicePrivate caServicePrivate;
+        return caServicePrivate;
+    }
+    
+private:
+    
+    explicit CaServicePrivate(): mUpdatedEntry (NULL), mQueryPassedToGetList (NULL)
+    {
+    }    
+};
+
+#endif //CASERVICE_PRIVATE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsmenuclientplugin/tsrc/t_hsmenuclientplugin/inc/t_hsmenuclientplugin.h	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,59 @@
+/*
+* 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:  Tests for hsmenuclientplugin class.
+*
+*/
+
+#ifndef T_HSMMENUCLIENTPLUGINTEST_H
+#define T_HSMMENUCLIENTPLUGINTEST_H
+
+#include <QtTest/QtTest>
+#include <HbMainWindow>
+
+#ifdef Q_OS_SYMBIAN
+#include <e32base.h>
+#endif//Q_OS_SYMBIAN
+
+#include "caservice_p.h" //mock
+/**
+* @test Test class for homescreen::hsutils modules.
+*/
+class HsMenuClientPluginTest : public QObject
+{
+    Q_OBJECT
+
+private slots:
+
+    void initTestCase();
+    void init();
+    
+    void testCreateEntry();
+    void testCreateLocalizedEntry();
+    void testUpdateEntry();
+    void testRemoveEntry();
+    void testListEntry();
+
+    
+    /**
+     * cleanup
+     */
+    void cleanupTestCase();
+    void cleanup();
+    
+private:
+    CaServicePrivate *mCaServicePrivateMock;
+
+};
+    
+#endif //T_HSMMENUCLIENTPLUGINTEST_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsmenuclientplugin/tsrc/t_hsmenuclientplugin/src/caservice.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,426 @@
+/*
+ * 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: caservice.cpp
+ *
+ */
+
+#include <QMetaType>
+#include <QCoreApplication>
+#include <QString>
+#include <QDebug>
+
+#include <caservice.h>
+#include <caservice_p.h>
+#include <caquery.h>
+#include <caentry.h>
+#include <canotifier.h>
+#include <cadefs.h>
+
+#include "hsapp_defs.h"
+#include "t_hsmenuclientplugin.h"
+#include "hsmenuclient.h"
+
+
+// ======== MEMBER FUNCTIONS ========
+
+/*!
+
+ \class CaService.
+ \brief This class operates on data, anable creating and inserting new entry
+ to DB, removing entry from DB, update entry or get entry from DB, executeC
+ command on entry and create notifier to notify client about changes onto DB.
+
+ CaService class uses singleton design pattern, so that it contains static
+ method called instance() to get instance of a class.
+
+ \code
+ QSharedPointer<CaService> service = CaService::instance();
+ \endcode
+
+ For every operations on data is used always one instantiation of a class.
+ Below are examples how to create data and work on those ones.
+
+ */
+
+// Initialization of a static member variable.
+//QWeakPointer<CaService> CaService::m_instance = QWeakPointer<CaService>();
+
+/*!
+ Constructor.
+ \param parent pointer to a parent. It defaults to NULL.
+ */
+CaService::CaService(QObject *parent) :
+    QObject(parent), m_d(&CaServicePrivate::instance())
+{
+
+}
+
+/*!
+ Returns a pointer to the instance of the CaService class.
+ \retval A pointer to the instance of the CaService class.
+ */
+QSharedPointer<CaService> CaService::instance()
+{
+    static QSharedPointer<CaService> instance (new CaService);
+    return instance;
+}
+
+/*!
+ Destructor.
+ */
+CaService::~CaService()
+{
+
+}
+
+// HELP METHODS
+
+void CaServicePrivate::clearAll()
+{
+    mEntryToRemove = -1;
+
+    mUpdatedEntry.clear();
+
+    delete mQueryPassedToGetList;
+    mQueryPassedToGetList = NULL;
+
+    mCreatedEntries.clear();
+    mReturnedEntries.clear();
+}
+
+void CaServicePrivate::AddEntriesForUpdate()
+{
+    QSharedPointer<CaEntry> item0 (new CaEntry());
+
+    // this will be updated:
+    QSharedPointer<CaEntry> item1 (new CaEntry());
+    item1->setText("ModuleTestTApp");
+    item1->setDescription("Unit test app for HsClientPlugin");
+
+    item1->setAttribute(hsitemLaunchUri, "appto://2002DCEC?");
+    item1->setAttribute(hsitemPublisherId, "tappModuleTest");
+    item1->setAttribute(hsitemLaunchUri, "hsclockwidgetplugin");
+
+    item1->setEntryTypeName(Hs::templatedApplicationTypeName);
+    item1->setFlags(VisibleEntryFlag);
+
+    CaIconDescription iconDescription1;
+    iconDescription1.setFilename("iconFileName");
+    iconDescription1.setSkinId("iconSkinId");
+    iconDescription1.setApplicationId("268458321"); //Bluetouth app UID
+    item1->setIconDescription(iconDescription1);
+
+    mCreatedEntries << item0;
+    mCreatedEntries << item1;
+}
+QSharedPointer<CaEntry> CaService::getEntry(int entryId) const
+{
+    return m_d->mCreatedEntries.at(entryId);
+}
+
+
+bool CaService::updateEntry(const CaEntry &entry) const
+{
+    m_d->mUpdatedEntry.clear();
+    m_d->mUpdatedEntry = QSharedPointer<CaEntry>(new CaEntry(entry));
+    return true;
+}
+
+QSharedPointer<CaEntry> CaService::createEntry(const CaEntry &entry) const
+{
+    QSharedPointer<CaEntry> newEntry(new CaEntry(entry));
+    m_d->mCreatedEntries << newEntry;
+    return newEntry;
+}
+
+
+bool CaService::removeEntry(int entryId) const
+{
+    m_d->mEntryToRemove = entryId;
+
+    return true;
+}
+
+
+QList< QSharedPointer<CaEntry> > CaService::getEntries(
+        const QList<int> &entryIdList) const
+{
+    Q_UNUSED(entryIdList);
+    QList< QSharedPointer<CaEntry> > result;
+    return result;
+
+}
+
+QList< QSharedPointer<CaEntry> > CaService::getEntries(const CaQuery &query) const
+{
+    // store the query for verification
+    m_d->mQueryPassedToGetList = new CaQuery (query);
+
+    // return mock list of 2 entires
+    QSharedPointer<CaEntry> item1 (new CaEntry());
+    item1->setText("ModuleTestTApp1");
+    item1->setDescription("Unit test app for HsClientPlugin1");
+    item1->setAttribute(hsitemLaunchUri, "appto://1002DCEC?");
+    item1->setAttribute(hsitemPublisherId, "tappModuleTest1");
+    item1->setAttribute(hsitemLaunchUri, "hsclockwidgetplugin1");
+    item1->setEntryTypeName(Hs::templatedApplicationTypeName);
+    item1->setFlags(VisibleEntryFlag);
+    CaIconDescription iconDescription1;
+    iconDescription1.setFilename("iconFileName1");
+    iconDescription1.setSkinId("iconSkinId1");
+    iconDescription1.setApplicationId("168458321");
+    item1->setIconDescription(iconDescription1);
+
+    QSharedPointer<CaEntry> item2 (new CaEntry());
+    item2->setText("ModuleTestTApp2");
+    item2->setDescription("Unit test app for HsClientPlugin2");
+    item2->setAttribute(hsitemLaunchUri, "appto://2002DCEC?");
+    item2->setAttribute(hsitemPublisherId, "tappModuleTest2");
+    item2->setAttribute(hsitemLaunchUri, "hsclockwidgetplugin2");
+    item2->setEntryTypeName(Hs::templatedApplicationTypeName);
+    item2->setFlags(VisibleEntryFlag);
+    CaIconDescription iconDescription2;
+    iconDescription2.setFilename("iconFileName2");
+    iconDescription2.setSkinId("iconSkinId2");
+    iconDescription2.setApplicationId("268458321");
+    item2->setIconDescription(iconDescription2);
+
+    // store items for verification
+    m_d->mReturnedEntries << item1 << item2;
+
+    // return copies to caller
+    QList< QSharedPointer<CaEntry> > resultList;
+    resultList << item1;
+    resultList << item2;
+
+    return resultList;
+}
+
+QList<int> CaService::getEntryIds(const CaQuery &query) const
+{
+    Q_UNUSED(query);
+    QList<int> result;
+    return result;
+
+}
+
+
+
+bool CaService::removeEntry(const CaEntry &entry) const
+{
+    return removeEntry(entry.id());
+}
+
+
+bool CaService::removeEntries(const QList<int> &entryIdList) const
+{
+    Q_UNUSED(entryIdList);
+    return true;
+}
+
+
+bool CaService::removeEntries(
+        const QList< QSharedPointer<CaEntry> > &entryList) const
+{
+    Q_UNUSED(entryList);
+    return true;
+}
+
+bool CaService::touch(const CaEntry &entry) const
+{
+    Q_UNUSED(entry);
+    return true;
+}
+
+
+bool CaService::insertEntryIntoGroup(int groupId, int entryId,
+                                     int beforeEntryId) const
+{
+    Q_UNUSED(groupId);
+    Q_UNUSED(entryId);
+    Q_UNUSED(beforeEntryId);
+    return true;
+}
+
+
+bool CaService::insertEntryIntoGroup(
+        const CaEntry &group, const CaEntry &entry, int beforeEntryId) const
+{
+    Q_UNUSED(group);
+    Q_UNUSED(entry);
+    Q_UNUSED(beforeEntryId);
+    return true;
+}
+
+
+bool CaService::insertEntriesIntoGroup(int groupId,
+       const QList<int> &entryIdList, int beforeEntryId) const
+{
+    Q_UNUSED(groupId);
+    Q_UNUSED(entryIdList);
+    Q_UNUSED(beforeEntryId);
+    return true;
+}
+
+
+bool CaService::insertEntriesIntoGroup(const CaEntry &group,
+       const QList< QSharedPointer<CaEntry> > &entryList,
+       int beforeEntryId) const
+{
+    Q_UNUSED(group);
+    Q_UNUSED(entryList);
+    Q_UNUSED(beforeEntryId);
+    return true;
+}
+
+
+bool CaService::removeEntryFromGroup(int groupId, int entryId) const
+{
+    Q_UNUSED(groupId);
+    Q_UNUSED(entryId);
+    return true;
+}
+
+
+bool CaService::removeEntryFromGroup(const CaEntry &group,
+        const CaEntry &entry) const
+{
+    Q_UNUSED(group);
+    Q_UNUSED(entry);
+    return true;
+}
+
+
+bool CaService::removeEntriesFromGroup(int groupId,
+       const QList<int> &entryIdList) const
+{
+    Q_UNUSED(groupId);
+    Q_UNUSED(entryIdList);
+    return true;
+}
+
+
+bool CaService::removeEntriesFromGroup(const CaEntry &group,
+        const QList< QSharedPointer<CaEntry> > &entryList) const
+{
+    Q_UNUSED(group);
+    Q_UNUSED(entryList);
+    return true;
+}
+
+
+bool CaService::appendEntryToGroup(int groupId, int entryId) const
+{
+    Q_UNUSED(groupId);
+    Q_UNUSED(entryId);
+    return true;
+}
+
+
+bool CaService::appendEntryToGroup(const CaEntry &group,
+                                   const CaEntry &entry) const
+{
+    Q_UNUSED(group);
+    Q_UNUSED(entry);
+    return true;
+}
+
+
+bool CaService::appendEntriesToGroup(int groupId,
+        const QList<int> &entryIdList) const
+{
+    Q_UNUSED(groupId);
+    Q_UNUSED(entryIdList);
+    return true;
+}
+
+
+bool CaService::appendEntriesToGroup(const CaEntry &group,
+        const QList< QSharedPointer<CaEntry> > &entryList) const
+{
+    Q_UNUSED(group);
+    Q_UNUSED(entryList);
+    return true;
+}
+
+
+bool CaService::prependEntryToGroup(int groupId, int entryId) const
+{
+    Q_UNUSED(groupId);
+    Q_UNUSED(entryId);
+    return true;
+}
+
+
+bool CaService::prependEntryToGroup(const CaEntry &group,
+                                    const CaEntry &entry) const
+{
+    Q_UNUSED(group);
+    Q_UNUSED(entry);
+    return true;
+}
+
+bool CaService::prependEntriesToGroup(int groupId,
+                                      const QList<int> &entryIdList) const
+{
+    Q_UNUSED(groupId);
+    Q_UNUSED(entryIdList);
+    return true;
+}
+
+bool CaService::prependEntriesToGroup(const CaEntry &group,
+        const QList< QSharedPointer<CaEntry> > &entryList) const
+{
+    Q_UNUSED(group);
+    Q_UNUSED(entryList);
+    return true;
+}
+
+int CaService::executeCommand(int entryId, const QString &command,
+        QObject* receiver, const char* member) const
+{
+    Q_UNUSED(entryId);
+    Q_UNUSED(command);
+    Q_UNUSED(receiver);
+    Q_UNUSED(member);
+    return 0;
+}
+
+int CaService::executeCommand(const CaEntry &entry, const QString &command,
+        QObject* receiver, const char* member) const
+{
+    Q_UNUSED(entry);
+    Q_UNUSED(command);
+    Q_UNUSED(receiver);
+    Q_UNUSED(member);
+    return 0;
+}
+
+CaNotifier *CaService::createNotifier(const CaNotifierFilter &filter) const
+{
+    Q_UNUSED(filter);
+    return NULL;
+}
+
+
+bool CaService::customSort(int groupId, QList<int> &entryIdList) const
+{
+    Q_UNUSED(entryIdList);
+    return true;
+}
+
+ErrorCode CaService::lastError() const
+{
+    return NoErrorCode;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsmenuclientplugin/tsrc/t_hsmenuclientplugin/src/t_hsmenuclientplugin.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,349 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Main test class for test library.
+*
+*/
+
+#include <hbinstance.h>
+#include <hbview.h>
+#include <QVariant>
+#include <QList> 
+
+#include <caentry.h>
+#include <caquery.h>
+#include <caicondescription.h>
+#include <caservice.h>
+
+#include <hsapp_defs.h>
+#include "t_hsmenuclientplugin.h"
+#include "hsmenuclient.h"
+
+const QString hsItemId("id");
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void HsMenuClientPluginTest::initTestCase()
+{
+    mCaServicePrivateMock = &CaServicePrivate::instance();
+//    mainWindow();
+}    
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void HsMenuClientPluginTest::init()
+{
+    mCaServicePrivateMock->clearAll();    
+}    
+
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void HsMenuClientPluginTest::cleanupTestCase()
+{
+    
+//    delete mainWindow();
+
+}
+
+void HsMenuClientPluginTest::cleanup()
+{
+    mCaServicePrivateMock->clearAll();
+    qApp->processEvents();
+}
+
+void HsMenuClientPluginTest::testCreateEntry()
+{
+    #ifdef Q_OS_SYMBIAN
+    #ifdef UT_MEMORY_CHECK
+        __UHEAP_MARK;
+    #endif//UT_MEMORY_CHECK
+    #endif//Q_OS_SYMBIAN
+        {    
+            QList<QVariantMap> list;
+            QMap<QString, QVariant> map;
+            map[hsItemName] = "ModuleTestTApp";
+            map[hsItemDescription] = "Unit test app for HsClientPlugin";
+
+            map[hsitemLaunchUri] = "appto://2002DCEC?";
+            map[hsitemPublisherId] = "tappModuleTest";
+            map[hsItemWidgetUri] = "hsclockwidgetplugin";
+            
+            map[hsIconFileName] = "Z:\\private\\20022F35\\import\\widgetregistry\\20022F6C\\tclock.png";
+            map[hsIconName] = "qtg_large_applications_user";
+            map[hsIconApplicationId] = "268458321";
+           
+            
+            
+            HsMenuClient *publisher = new HsMenuClient();
+            QVERIFY(publisher->add(map));
+                        
+            QSharedPointer<CaEntry> res_entry = mCaServicePrivateMock->mCreatedEntries[0];
+            
+            
+            QCOMPARE(res_entry->entryTypeName(),
+                QString(Hs::templatedApplicationTypeName));
+            QCOMPARE(res_entry->role(), ItemEntryRole);
+            QCOMPARE(res_entry->text(), map[hsItemName].toString());
+            QCOMPARE(res_entry->description(), map[hsItemDescription].toString());
+            
+            QCOMPARE(res_entry->attributes().count(), 3);
+            QCOMPARE(res_entry->attribute(hsitemLaunchUri), map[hsitemLaunchUri].toString());
+            QCOMPARE(res_entry->attribute(hsitemPublisherId), map[hsitemPublisherId].toString());
+            QCOMPARE(res_entry->attribute(hsItemWidgetUri), map[hsItemWidgetUri].toString());
+            
+            // icon
+            QCOMPARE(res_entry->iconDescription().filename(), map[hsIconFileName].toString());
+            QCOMPARE(res_entry->iconDescription().skinId(),map[hsIconName].toString());
+            QCOMPARE(res_entry->iconDescription().applicationId(), map[hsIconApplicationId].toString());
+            
+            QCOMPARE(res_entry->flags(), VisibleEntryFlag); // Visible by default, entry not removable
+            
+            delete publisher; 
+
+        }
+    #ifdef Q_OS_SYMBIAN
+    #ifdef UT_MEMORY_CHECK
+        __UHEAP_MARKEND;
+    #endif//UT_MEMORY_CHECK
+    #endif//Q_OS_SYMBIAN
+}
+
+void HsMenuClientPluginTest::testCreateLocalizedEntry()
+{
+    #ifdef Q_OS_SYMBIAN
+    #ifdef UT_MEMORY_CHECK
+        __UHEAP_MARK;
+    #endif//UT_MEMORY_CHECK
+    #endif//Q_OS_SYMBIAN
+        {    
+            QList<QVariantMap> list;
+            QMap<QString, QVariant> map;
+            QString testName("Games");
+            QString testDesc("");
+            map[hsItemName] = "ModuleTestTApp";
+            map[hsItemLocName] = "loc://emailTest/txt_applib_dblist_games";
+            map[hsItemDescription] = "Unit test app for HsClientPlugin";
+            map[hsItemLocDescription] = "loc://emailTest/txt_applib_subtitle_office";
+
+            map[hsitemLaunchUri] = "appto://2002DCEC?";
+            map[hsitemPublisherId] = "tappModuleTest";
+            map[hsItemWidgetUri] = "hsclockwidgetplugin";
+            
+            map[hsIconFileName] = "Z:\\private\\20022F35\\import\\widgetregistry\\20022F6C\\tclock.png";
+            map[hsIconName] = "qtg_large_applications_user";
+            map[hsIconApplicationId] = "268458321";
+           
+            
+            
+            HsMenuClient *publisher = new HsMenuClient();
+            QVERIFY(publisher->add(map));
+                        
+            QSharedPointer<CaEntry> res_entry = mCaServicePrivateMock->mCreatedEntries[0];
+            
+            
+            QCOMPARE(res_entry->entryTypeName(),
+                QString(Hs::templatedApplicationTypeName));
+            QCOMPARE(res_entry->role(), ItemEntryRole);
+            QCOMPARE(res_entry->text(), map[hsItemLocName].toString());
+            QCOMPARE(res_entry->description(), map[hsItemLocDescription].toString());
+            
+            QCOMPARE(res_entry->attribute(hsitemLaunchUri), map[hsitemLaunchUri].toString());
+            QCOMPARE(res_entry->attribute(hsitemPublisherId), map[hsitemPublisherId].toString());
+            QCOMPARE(res_entry->attribute(hsItemWidgetUri), map[hsItemWidgetUri].toString());
+            
+            // icon
+            QCOMPARE(res_entry->iconDescription().filename(), map[hsIconFileName].toString());
+            QCOMPARE(res_entry->iconDescription().skinId(),map[hsIconName].toString());
+            QCOMPARE(res_entry->iconDescription().applicationId(), map[hsIconApplicationId].toString());
+            
+            QCOMPARE(res_entry->flags(), VisibleEntryFlag); // Visible by default, entry not removable
+            
+            delete publisher; 
+
+        }
+    #ifdef Q_OS_SYMBIAN
+    #ifdef UT_MEMORY_CHECK
+        __UHEAP_MARKEND;
+    #endif//UT_MEMORY_CHECK
+    #endif//Q_OS_SYMBIAN
+}
+
+void HsMenuClientPluginTest::testUpdateEntry()
+{
+    #ifdef Q_OS_SYMBIAN
+    #ifdef UT_MEMORY_CHECK
+        __UHEAP_MARK;
+    #endif//UT_MEMORY_CHECK
+    #endif//Q_OS_SYMBIAN
+        {  
+            QMap<QString, QVariant> map;
+            map[hsItemId] = 1; // entry id == 1, entry to update
+            
+            map[hsItemName] = "UpdatedName";
+            map[hsItemDescription] = "UpdatedDescription";
+
+            map[hsitemLaunchUri] = "appto://102828D6?";
+            map[hsitemPublisherId] = "tappModuleTestUpdated";
+            map[hsItemWidgetUri] = "hsclockwidgetpluginUpdated";
+            
+            map[hsIconFileName] = "Z:\\private\\20022F35\\import\\widgetregistry\\20022F6C\\UpdatedClockIcon.png";
+            map[hsIconName] = "qtg_large_applications_user_updated";
+            map[hsIconApplicationId] = "123458321";
+            
+            // create original entry to be updated
+            mCaServicePrivateMock->AddEntriesForUpdate();
+            
+            QScopedPointer<HsMenuClient> publisher (new HsMenuClient());
+            QVERIFY(publisher->add(map));
+                        
+            // from mock
+            QSharedPointer<CaEntry> res_entry = mCaServicePrivateMock->mCreatedEntries[1];
+            
+            QCOMPARE(res_entry->entryTypeName(),
+                QString(Hs::templatedApplicationTypeName));
+            QCOMPARE(res_entry->role(), ItemEntryRole);
+            QCOMPARE(res_entry->flags(), VisibleEntryFlag); // Visible by default, entry not removable
+
+            QCOMPARE(res_entry->text(), map[hsItemName].toString());
+            QCOMPARE(res_entry->description(), map[hsItemDescription].toString());
+            QCOMPARE(res_entry->attributes().count(), 3);
+            QCOMPARE(res_entry->attribute(hsitemLaunchUri), map[hsitemLaunchUri].toString());
+            QCOMPARE(res_entry->attribute(hsitemPublisherId), map[hsitemPublisherId].toString());
+            QCOMPARE(res_entry->attribute(hsItemWidgetUri), map[hsItemWidgetUri].toString());
+            
+            // icon
+            QCOMPARE(res_entry->iconDescription().filename(), map[hsIconFileName].toString());
+            QCOMPARE(res_entry->iconDescription().skinId(),map[hsIconName].toString());
+            QCOMPARE(res_entry->iconDescription().applicationId(), map[hsIconApplicationId].toString());
+             }
+    #ifdef Q_OS_SYMBIAN
+    #ifdef UT_MEMORY_CHECK
+        __UHEAP_MARKEND;
+    #endif//UT_MEMORY_CHECK
+    #endif//Q_OS_SYMBIAN    
+}
+
+void HsMenuClientPluginTest::testRemoveEntry()
+{
+    #ifdef Q_OS_SYMBIAN
+    #ifdef UT_MEMORY_CHECK
+        __UHEAP_MARK;
+    #endif//UT_MEMORY_CHECK
+    #endif//Q_OS_SYMBIAN
+        { 
+            QMap<QString, QVariant> map;
+            map[hsItemName] = "ModuleTestTApp";
+            map[hsitemLaunchUri] = "appto://2002DCEC?";
+            map[hsitemPublisherId] = "tappModuleTest";
+            map[hsItemDescription] = "Unit test app for HsClientPlugin";
+            map[hsIconApplicationId] = "268458321";
+
+            HsMenuClient *publisher = new HsMenuClient();            
+            bool result = publisher->remove(map);
+            QVERIFY(!result);
+
+            mCaServicePrivateMock->mEntryToRemove = -1;
+            map[hsItemId] = 1; // entry id == 1
+            result = publisher->remove(map);
+            QCOMPARE(mCaServicePrivateMock->mEntryToRemove, map[hsItemId].toInt());
+            delete publisher;
+        }
+    #ifdef Q_OS_SYMBIAN
+    #ifdef UT_MEMORY_CHECK
+        __UHEAP_MARKEND;
+    #endif//UT_MEMORY_CHECK
+    #endif//Q_OS_SYMBIAN       
+}
+
+void HsMenuClientPluginTest::testListEntry()
+{
+    #ifdef Q_OS_SYMBIAN
+    #ifdef UT_MEMORY_CHECK
+        __UHEAP_MARK;
+    #endif//UT_MEMORY_CHECK
+    #endif//Q_OS_SYMBIAN
+        { 
+            QMap<QString, QVariant> map;            
+            map[hsItemName] = "Name";
+            map[hsItemDescription] = "Description";
+
+            map[hsitemLaunchUri] = "appto://102828D6?";
+            map[hsitemPublisherId] = "tappModuleTest";
+            map[hsItemWidgetUri] = "hsclockwidgetplugin";
+            map[hsIconFileName] = "Z:\\private\\20022F35\\import\\widgetregistry\\20022F6C\\clockIcon.png";
+            map[hsIconName] = "qtg_large_applications_user";
+            map[hsIconApplicationId] = "223458321";
+            
+            HsMenuClient *publisher = new HsMenuClient();
+            QList<QVariantMap> list;
+            list = publisher->getList(map);
+            
+            // verify query passed to GetEntries
+            QCOMPARE(mCaServicePrivateMock->mQueryPassedToGetList->flagsOn(), VisibleEntryFlag);
+            QCOMPARE(mCaServicePrivateMock->mQueryPassedToGetList->entryRoles(), ItemEntryRole);
+            QCOMPARE(mCaServicePrivateMock->mQueryPassedToGetList->entryTypeNames(), 
+                QStringList(Hs::templatedApplicationTypeName));
+            
+            QCOMPARE(mCaServicePrivateMock->mQueryPassedToGetList->attribute(hsItemName), QString()); // not used
+            QCOMPARE(mCaServicePrivateMock->mQueryPassedToGetList->attribute(hsItemDescription), QString()); // not used
+            
+            QCOMPARE(mCaServicePrivateMock->mQueryPassedToGetList->attribute(hsitemLaunchUri), 
+                map.value(hsitemLaunchUri).toString());
+            QCOMPARE(mCaServicePrivateMock->mQueryPassedToGetList->attribute(hsitemPublisherId), 
+                map.value(hsitemPublisherId).toString());
+            QCOMPARE(mCaServicePrivateMock->mQueryPassedToGetList->attribute(hsItemWidgetUri), 
+                map.value(hsItemWidgetUri).toString());
+            QCOMPARE(mCaServicePrivateMock->mQueryPassedToGetList->attribute(hsIconFileName), 
+                map.value(hsIconFileName).toString());
+            QCOMPARE(mCaServicePrivateMock->mQueryPassedToGetList->attribute(hsIconName), 
+                map.value(hsIconName).toString());
+            QCOMPARE(mCaServicePrivateMock->mQueryPassedToGetList->attribute(hsIconApplicationId), 
+                map.value(hsIconApplicationId).toString());
+
+            // Verify if all values are added to the map
+            QVERIFY(list.count() == 2);            
+            QSharedPointer<CaEntry> res_entry = mCaServicePrivateMock->mReturnedEntries[0];
+            QCOMPARE(res_entry->id(), list.at(0).value(hsItemId).toInt());
+            QCOMPARE(res_entry->text(), list.at(0).value(hsItemName).toString());
+            QCOMPARE(res_entry->description(), list.at(0).value(hsItemDescription).toString());
+            QCOMPARE(res_entry->attribute(hsitemLaunchUri), list.at(0).value(hsitemLaunchUri).toString());
+            QCOMPARE(res_entry->attribute(hsitemPublisherId), list.at(0).value(hsitemPublisherId).toString());
+            QCOMPARE(res_entry->attribute(hsItemWidgetUri), list.at(0).value(hsItemWidgetUri).toString());
+            QCOMPARE(res_entry->iconDescription().filename(), list.at(0).value(hsIconFileName).toString());
+            QCOMPARE(res_entry->iconDescription().skinId(),list.at(0).value(hsIconName).toString());
+            QCOMPARE(res_entry->iconDescription().applicationId(), list.at(0).value(hsIconApplicationId).toString());
+            
+            res_entry = mCaServicePrivateMock->mReturnedEntries[1];            
+            QCOMPARE(res_entry->id(), list.at(1).value(hsItemId).toInt());
+            QCOMPARE(res_entry->text(), list.at(1).value(hsItemName).toString());
+            QCOMPARE(res_entry->description(), list.at(1).value(hsItemDescription).toString());
+            QCOMPARE(res_entry->attribute(hsitemLaunchUri), list.at(1).value(hsitemLaunchUri).toString());
+            QCOMPARE(res_entry->attribute(hsitemPublisherId), list.at(1).value(hsitemPublisherId).toString());
+            QCOMPARE(res_entry->attribute(hsItemWidgetUri), list.at(1).value(hsItemWidgetUri).toString());
+            QCOMPARE(res_entry->iconDescription().filename(), list.at(1).value(hsIconFileName).toString());
+            QCOMPARE(res_entry->iconDescription().skinId(),list.at(1).value(hsIconName).toString());
+            QCOMPARE(res_entry->iconDescription().applicationId(), list.at(1).value(hsIconApplicationId).toString());
+            delete publisher;
+        }
+    #ifdef Q_OS_SYMBIAN
+    #ifdef UT_MEMORY_CHECK
+        __UHEAP_MARKEND;
+    #endif//UT_MEMORY_CHECK
+    #endif//Q_OS_SYMBIAN      
+}
+
+QTEST_MAIN(HsMenuClientPluginTest)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsmenuclientplugin/tsrc/t_hsmenuclientplugin/t_hsmenuclientplugin.pri	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,23 @@
+#
+# 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:
+#
+#Header files
+HEADERS += ./inc/*.h \
+			../../inc/*.h \
+			../../../../homescreen_plat/homescreenclient_api/hsmenuclient.h
+
+#Source files
+SOURCES += ./src/*.cpp \
+           ../../src/*.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsmenuclientplugin/tsrc/t_hsmenuclientplugin/t_hsmenuclientplugin.pro	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,66 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+TEMPLATE = app
+
+include(../../../common.pri)
+
+CONFIG += debug_and_release \
+          console \
+          hb \
+          mobility
+
+MOBILITY = serviceframework
+
+coverage:DEFINES += COVERAGE_MEASUREMENT
+
+QT += testlib
+LIBS += -lcaclient
+
+DEFINES += HSDOMAINMODEL_TEST\
+           HSMENUCLIENTPLUGIN_UNITTEST
+
+win32: {
+DEFINES += CACLIENT_TEST
+}
+
+DEPENDPATH += .\
+              ./src \
+              ./inc \
+              ../../src \
+              ../../inc
+
+INCLUDEPATH += .\
+               ./inc \
+               ../../inc \
+               ../../../../homescreen_plat/homescreenclient_api
+
+symbian: {
+    ### get rid of localization warnings
+    CONFIG -= hb
+    load(hb.prf)
+    CONFIG -= symbian_i18n
+    ###
+    CONFIG += symbian_test
+    coverage: CONFIG -= symbian_test
+    TARGET.UID3 = 20028716
+    TARGET.CAPABILITY = CAP_APPLICATION AllFiles
+    TARGET.EPOCHEAPSIZE = 0x20000 0x1000000 // 128kB - 16MB
+    
+    MMP_RULES += SMPSAFE
+}
+
+include(t_hsmenuclientplugin.pri)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsmenuclientplugin/tsrc/tsrc.pro	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,21 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+TEMPLATE = subdirs
+SUBDIRS  += t_hsmenuclientplugin
+
+CONFIG  += ordered
+
--- a/homescreenapp/hsutils/bwins/hsutilsu.def	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/hsutils/bwins/hsutilsu.def	Mon Oct 04 00:07:25 2010 +0300
@@ -1,83 +1,83 @@
 EXPORTS
 	?trUtf8@HsSnapLine@@SA?AVQString@@PBD0@Z @ 1 NONAME ; class QString HsSnapLine::trUtf8(char const *, char const *)
 	?createOpenAppLibraryEvent@HsMenuEventFactory@@SAPAVQEvent@@W4HsMenuMode@Hs@@VQVariant@@@Z @ 2 NONAME ; class QEvent * HsMenuEventFactory::createOpenAppLibraryEvent(enum Hs::HsMenuMode, class QVariant)
-	?instance@HsWidgetPositioningOnWidgetAdd@@SAPAV1@XZ @ 3 NONAME ; class HsWidgetPositioningOnWidgetAdd * HsWidgetPositioningOnWidgetAdd::instance(void)
-	?trUtf8@HsTitleResolver@@SA?AVQString@@PBD0@Z @ 4 NONAME ; class QString HsTitleResolver::trUtf8(char const *, char const *)
-	?convert@HsAnchorPointInBottomRight@@UAE?AV?$QList@VQRectF@@@@ABVQRectF@@ABV2@1ABVQPointF@@@Z @ 5 NONAME ; class QList<class QRectF> HsAnchorPointInBottomRight::convert(class QRectF const &, class QList<class QRectF> const &, class QList<class QRectF> const &, class QPointF const &)
-	?tr@HsTitleResolver@@SA?AVQString@@PBD0@Z @ 6 NONAME ; class QString HsTitleResolver::tr(char const *, char const *)
-	?setEasingCurve@HsPropertyAnimationWrapper@@QAEXABVQEasingCurve@@@Z @ 7 NONAME ; void HsPropertyAnimationWrapper::setEasingCurve(class QEasingCurve const &)
-	?convert@HsAdvancedWidgetPositioningOnOrientationChange@@UAE?AV?$QList@VQRectF@@@@ABVQRectF@@ABV2@0@Z @ 8 NONAME ; class QList<class QRectF> HsAdvancedWidgetPositioningOnOrientationChange::convert(class QRectF const &, class QList<class QRectF> const &, class QRectF const &)
-	?show@HsMessageBoxWrapper@@QAEXXZ @ 9 NONAME ; void HsMessageBoxWrapper::show(void)
-	?staticMetaObject@HsPageIndicator@@2UQMetaObject@@B @ 10 NONAME ; struct QMetaObject const HsPageIndicator::staticMetaObject
-	?createAddAppsFromCollectionViewEvent@HsMenuEventFactory@@SAPAVQEvent@@HH@Z @ 11 NONAME ; class QEvent * HsMenuEventFactory::createAddAppsFromCollectionViewEvent(int, int)
-	?tr@HsImageFetcherClient@@SA?AVQString@@PBD0@Z @ 12 NONAME ; class QString HsImageFetcherClient::tr(char const *, char const *)
-	?metaObject@HsTrashBinWidget@@UBEPBUQMetaObject@@XZ @ 13 NONAME ; struct QMetaObject const * HsTrashBinWidget::metaObject(void) const
-	??1HsSnapLine@@UAE@XZ @ 14 NONAME ; HsSnapLine::~HsSnapLine(void)
-	?trUtf8@HsSnapLine@@SA?AVQString@@PBD0H@Z @ 15 NONAME ; class QString HsSnapLine::trUtf8(char const *, char const *, int)
-	?qt_metacall@HsTitleResolver@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 16 NONAME ; int HsTitleResolver::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?metaObject@HsImageFetcherClient@@UBEPBUQMetaObject@@XZ @ 17 NONAME ; struct QMetaObject const * HsImageFetcherClient::metaObject(void) const
-	?setInstance@HsWidgetPositioningOnWidgetMove@@SAXPAV1@@Z @ 18 NONAME ; void HsWidgetPositioningOnWidgetMove::setInstance(class HsWidgetPositioningOnWidgetMove *)
-	?extendVerticalLineToIncludeInactiveRect@HsSnapToLines@@AAEXXZ @ 19 NONAME ; void HsSnapToLines::extendVerticalLineToIncludeInactiveRect(void)
-	?getFadeOutDuration@HsSnapLine@@AAEHXZ @ 20 NONAME ; int HsSnapLine::getFadeOutDuration(void)
-	?eventType@HsMenuEvent@@SA?AW4Type@QEvent@@XZ @ 21 NONAME ; enum QEvent::Type HsMenuEvent::eventType(void)
-	?tr@HsImageFetcherClient@@SA?AVQString@@PBD0H@Z @ 22 NONAME ; class QString HsImageFetcherClient::tr(char const *, char const *, int)
-	?qt_metacast@HsPageIndicator@@UAEPAXPBD@Z @ 23 NONAME ; void * HsPageIndicator::qt_metacast(char const *)
-	??0HsMessageBoxWrapper@@QAE@PAVQObject@@@Z @ 24 NONAME ; HsMessageBoxWrapper::HsMessageBoxWrapper(class QObject *)
-	??0HsMenuEvent@@QAE@W4OperationType@0@ABV?$QMap@VQString@@VQVariant@@@@@Z @ 25 NONAME ; HsMenuEvent::HsMenuEvent(enum HsMenuEvent::OperationType, class QMap<class QString, class QVariant> const &)
-	?actionOnFadeOutAnimationStop@HsSnapLine@@AAEXXZ @ 26 NONAME ; void HsSnapLine::actionOnFadeOutAnimationStop(void)
-	?qt_metacall@HsMessageBoxWrapper@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 27 NONAME ; int HsMessageBoxWrapper::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?staticMetaObject@HsImageFetcherClient@@2UQMetaObject@@B @ 28 NONAME ; struct QMetaObject const HsImageFetcherClient::staticMetaObject
-	?trUtf8@HsMessageBoxWrapper@@SA?AVQString@@PBD0@Z @ 29 NONAME ; class QString HsMessageBoxWrapper::trUtf8(char const *, char const *)
-	?close@HsMessageBoxWrapper@@QAEXXZ @ 30 NONAME ; void HsMessageBoxWrapper::close(void)
-	?qt_metacast@HsSnapLine@@UAEPAXPBD@Z @ 31 NONAME ; void * HsSnapLine::qt_metacast(char const *)
-	?extendHorizontalLineToIncludeInactiveRect@HsSnapToLines@@AAEXXZ @ 32 NONAME ; void HsSnapToLines::extendHorizontalLineToIncludeInactiveRect(void)
-	?fetchFailed@HsImageFetcherClient@@IAEXHABVQString@@@Z @ 33 NONAME ; void HsImageFetcherClient::fetchFailed(int, class QString const &)
-	??1HsTitleResolver@@UAE@XZ @ 34 NONAME ; HsTitleResolver::~HsTitleResolver(void)
-	?trUtf8@HsSpinnerDialog@@SA?AVQString@@PBD0@Z @ 35 NONAME ; class QString HsSpinnerDialog::trUtf8(char const *, char const *)
-	?checkInactiveRectBetterFitForHorizontalSnapping@HsSnapToLines@@AAEXMM@Z @ 36 NONAME ; void HsSnapToLines::checkInactiveRectBetterFitForHorizontalSnapping(float, float)
-	?tr@HsPropertyAnimationWrapper@@SA?AVQString@@PBD0H@Z @ 37 NONAME ; class QString HsPropertyAnimationWrapper::tr(char const *, char const *, int)
-	?setQueryText@HsMessageBoxWrapper@@QAEXABVQString@@@Z @ 38 NONAME ; void HsMessageBoxWrapper::setQueryText(class QString const &)
-	??1HsMenuEventTransition@@UAE@XZ @ 39 NONAME ; HsMenuEventTransition::~HsMenuEventTransition(void)
-	?tr@HsSpinnerDialog@@SA?AVQString@@PBD0@Z @ 40 NONAME ; class QString HsSpinnerDialog::tr(char const *, char const *)
-	?fadeInAnimationFinished@HsSnapLine@@AAEXXZ @ 41 NONAME ; void HsSnapLine::fadeInAnimationFinished(void)
-	?checkInactiveRectLieAboveOrBelowOfMovingRect@HsSnapToLines@@AAEXXZ @ 42 NONAME ; void HsSnapToLines::checkInactiveRectLieAboveOrBelowOfMovingRect(void)
-	?setHeader@HsMessageBoxWrapper@@QAEXABVQString@@@Z @ 43 NONAME ; void HsMessageBoxWrapper::setHeader(class QString const &)
-	?setSpacing@HsPageIndicator@@QAEXM@Z @ 44 NONAME ; void HsPageIndicator::setSpacing(float)
-	??_EHsImageFetcherClient@@UAE@I@Z @ 45 NONAME ; HsImageFetcherClient::~HsImageFetcherClient(unsigned int)
-	?qt_metacast@HsPropertyAnimationWrapper@@UAEPAXPBD@Z @ 46 NONAME ; void * HsPropertyAnimationWrapper::qt_metacast(char const *)
-	?createPreviewHSWidgetEvent@HsMenuEventFactory@@SAPAVQEvent@@HABVQString@@00@Z @ 47 NONAME ; class QEvent * HsMenuEventFactory::createPreviewHSWidgetEvent(int, class QString const &, class QString const &, class QString const &)
-	??1HsMenuEvent@@UAE@XZ @ 48 NONAME ; HsMenuEvent::~HsMenuEvent(void)
-	?tr@HsMessageBoxWrapper@@SA?AVQString@@PBD0@Z @ 49 NONAME ; class QString HsMessageBoxWrapper::tr(char const *, char const *)
-	?createCollectionDeletedEvent@HsMenuEventFactory@@SAPAVQEvent@@XZ @ 50 NONAME ; class QEvent * HsMenuEventFactory::createCollectionDeletedEvent(void)
-	?tr@HsImageGridWidget@@SA?AVQString@@PBD0@Z @ 51 NONAME ; class QString HsImageGridWidget::tr(char const *, char const *)
-	?createUninstallApplicationEvent@HsMenuEventFactory@@SAPAVQEvent@@H@Z @ 52 NONAME ; class QEvent * HsMenuEventFactory::createUninstallApplicationEvent(int)
-	?data@HsMenuEvent@@QBE?AV?$QMap@VQString@@VQVariant@@@@XZ @ 53 NONAME ; class QMap<class QString, class QVariant> HsMenuEvent::data(void) const
-	??1HsMenuDialogFactory@@UAE@XZ @ 54 NONAME ; HsMenuDialogFactory::~HsMenuDialogFactory(void)
-	?operation@HsMenuEvent@@QBE?AW4OperationType@1@XZ @ 55 NONAME ; enum HsMenuEvent::OperationType HsMenuEvent::operation(void) const
-	?setBackward@HsPropertyAnimationWrapper@@QAEXXZ @ 56 NONAME ; void HsPropertyAnimationWrapper::setBackward(void)
-	?qt_metacast@HsSpinnerDialog@@UAEPAXPBD@Z @ 57 NONAME ; void * HsSpinnerDialog::qt_metacast(char const *)
-	?getStaticMetaObject@HsPageIndicator@@SAABUQMetaObject@@XZ @ 58 NONAME ; struct QMetaObject const & HsPageIndicator::getStaticMetaObject(void)
-	?compareBottomOfMovingRectForSnapping@HsSnapToLines@@AAEXXZ @ 59 NONAME ; void HsSnapToLines::compareBottomOfMovingRectForSnapping(void)
-	?createUnknownEvent@HsMenuEventFactory@@SAPAVQEvent@@XZ @ 60 NONAME ; class QEvent * HsMenuEventFactory::createUnknownEvent(void)
-	??1HsPropertyAnimationWrapper@@UAE@XZ @ 61 NONAME ; HsPropertyAnimationWrapper::~HsPropertyAnimationWrapper(void)
-	?onNetworkNameChanged@HsTitleResolver@@AAEXABVQString@@@Z @ 62 NONAME ; void HsTitleResolver::onNetworkNameChanged(class QString const &)
-	?metaObject@HsMessageBoxWrapper@@UBEPBUQMetaObject@@XZ @ 63 NONAME ; struct QMetaObject const * HsMessageBoxWrapper::metaObject(void) const
-	?createAppDetailsViewEvent@HsMenuEventFactory@@SAPAVQEvent@@H@Z @ 64 NONAME ; class QEvent * HsMenuEventFactory::createAppDetailsViewEvent(int)
-	?setEndValue@HsPropertyAnimationWrapper@@QAEXABVQVariant@@@Z @ 65 NONAME ; void HsPropertyAnimationWrapper::setEndValue(class QVariant const &)
-	??_EHsSnapLine@@UAE@I@Z @ 66 NONAME ; HsSnapLine::~HsSnapLine(unsigned int)
-	?setContent@HsImageGridWidget@@QAEXABVQStringList@@@Z @ 67 NONAME ; void HsImageGridWidget::setContent(class QStringList const &)
-	?staticMetaObject@XQAIWGetImageClient@@2UQMetaObject@@B @ 68 NONAME ; struct QMetaObject const XQAIWGetImageClient::staticMetaObject
-	?qt_metacall@HsPropertyAnimationWrapper@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 69 NONAME ; int HsPropertyAnimationWrapper::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?qt_metacast@HsMessageBoxWrapper@@UAEPAXPBD@Z @ 70 NONAME ; void * HsMessageBoxWrapper::qt_metacast(char const *)
-	?createArrangeAllCollectionsEvent@HsMenuEventFactory@@SAPAVQEvent@@H@Z @ 71 NONAME ; class QEvent * HsMenuEventFactory::createArrangeAllCollectionsEvent(int)
-	?fetch@XQAIWGetImageClient@@QAEXXZ @ 72 NONAME ; void XQAIWGetImageClient::fetch(void)
-	?metaObject@HsPropertyAnimationWrapper@@UBEPBUQMetaObject@@XZ @ 73 NONAME ; struct QMetaObject const * HsPropertyAnimationWrapper::metaObject(void) const
-	?isAnimationRunning@HsPageIndicator@@QBE_NXZ @ 74 NONAME ; bool HsPageIndicator::isAnimationRunning(void) const
-	?getIndexForCoordinate@HsWidgetOrganizer@@AAEHVQPointF@@@Z @ 75 NONAME ; int HsWidgetOrganizer::getIndexForCoordinate(class QPointF)
-	?createAppSettingsViewEvent@HsMenuEventFactory@@SAPAVQEvent@@H@Z @ 76 NONAME ; class QEvent * HsMenuEventFactory::createAppSettingsViewEvent(int)
-	?trUtf8@HsImageGridWidget@@SA?AVQString@@PBD0@Z @ 77 NONAME ; class QString HsImageGridWidget::trUtf8(char const *, char const *)
-	??1HsAnchorPointInCenter@@UAE@XZ @ 78 NONAME ; HsAnchorPointInCenter::~HsAnchorPointInCenter(void)
-	?createDeleteCollectionEvent@HsMenuEventFactory@@SAPAVQEvent@@H@Z @ 79 NONAME ; class QEvent * HsMenuEventFactory::createDeleteCollectionEvent(int)
+	?trUtf8@HsTitleResolver@@SA?AVQString@@PBD0@Z @ 3 NONAME ; class QString HsTitleResolver::trUtf8(char const *, char const *)
+	?tr@HsTitleResolver@@SA?AVQString@@PBD0@Z @ 4 NONAME ; class QString HsTitleResolver::tr(char const *, char const *)
+	?setEasingCurve@HsPropertyAnimationWrapper@@QAEXABVQEasingCurve@@@Z @ 5 NONAME ; void HsPropertyAnimationWrapper::setEasingCurve(class QEasingCurve const &)
+	?convert@HsAdvancedWidgetPositioningOnOrientationChange@@UAE?AV?$QList@VQRectF@@@@ABVQRectF@@ABV2@0@Z @ 6 NONAME ; class QList<class QRectF> HsAdvancedWidgetPositioningOnOrientationChange::convert(class QRectF const &, class QList<class QRectF> const &, class QRectF const &)
+	?show@HsMessageBoxWrapper@@QAEXXZ @ 7 NONAME ; void HsMessageBoxWrapper::show(void)
+	?staticMetaObject@HsPageIndicator@@2UQMetaObject@@B @ 8 NONAME ; struct QMetaObject const HsPageIndicator::staticMetaObject
+	?qt_metacall@HsImageHandlingClient@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 9 NONAME ; int HsImageHandlingClient::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?createAddAppsFromCollectionViewEvent@HsMenuEventFactory@@SAPAVQEvent@@HH@Z @ 10 NONAME ; class QEvent * HsMenuEventFactory::createAddAppsFromCollectionViewEvent(int, int)
+	?metaObject@HsTrashBinWidget@@UBEPBUQMetaObject@@XZ @ 11 NONAME ; struct QMetaObject const * HsTrashBinWidget::metaObject(void) const
+	??1HsSnapLine@@UAE@XZ @ 12 NONAME ; HsSnapLine::~HsSnapLine(void)
+	?trUtf8@HsSnapLine@@SA?AVQString@@PBD0H@Z @ 13 NONAME ; class QString HsSnapLine::trUtf8(char const *, char const *, int)
+	?qt_metacall@HsTitleResolver@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 14 NONAME ; int HsTitleResolver::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?setInstance@HsWidgetPositioningOnWidgetMove@@SAXPAV1@@Z @ 15 NONAME ; void HsWidgetPositioningOnWidgetMove::setInstance(class HsWidgetPositioningOnWidgetMove *)
+	?extendVerticalLineToIncludeInactiveRect@HsSnapToLines@@AAEXXZ @ 16 NONAME ; void HsSnapToLines::extendVerticalLineToIncludeInactiveRect(void)
+	?handleOk@HsImageHandlingClient@@AAEXABVQVariant@@@Z @ 17 NONAME ; void HsImageHandlingClient::handleOk(class QVariant const &)
+	?getFadeOutDuration@HsSnapLine@@AAEHXZ @ 18 NONAME ; int HsSnapLine::getFadeOutDuration(void)
+	?eventType@HsMenuEvent@@SA?AW4Type@QEvent@@XZ @ 19 NONAME ; enum QEvent::Type HsMenuEvent::eventType(void)
+	?createOpenInstalledViewEvent@HsMenuEventFactory@@SAPAVQEvent@@HVQString@@@Z @ 20 NONAME ; class QEvent * HsMenuEventFactory::createOpenInstalledViewEvent(int, class QString)
+	?qt_metacast@HsPageIndicator@@UAEPAXPBD@Z @ 21 NONAME ; void * HsPageIndicator::qt_metacast(char const *)
+	??0HsMessageBoxWrapper@@QAE@PAVQObject@@@Z @ 22 NONAME ; HsMessageBoxWrapper::HsMessageBoxWrapper(class QObject *)
+	??0HsMenuEvent@@QAE@W4OperationType@0@ABV?$QMap@VQString@@VQVariant@@@@@Z @ 23 NONAME ; HsMenuEvent::HsMenuEvent(enum HsMenuEvent::OperationType, class QMap<class QString, class QVariant> const &)
+	?actionOnFadeOutAnimationStop@HsSnapLine@@AAEXXZ @ 24 NONAME ; void HsSnapLine::actionOnFadeOutAnimationStop(void)
+	?qt_metacall@HsMessageBoxWrapper@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 25 NONAME ; int HsMessageBoxWrapper::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?trUtf8@HsMessageBoxWrapper@@SA?AVQString@@PBD0@Z @ 26 NONAME ; class QString HsMessageBoxWrapper::trUtf8(char const *, char const *)
+	?close@HsMessageBoxWrapper@@QAEXXZ @ 27 NONAME ; void HsMessageBoxWrapper::close(void)
+	?qt_metacast@HsSnapLine@@UAEPAXPBD@Z @ 28 NONAME ; void * HsSnapLine::qt_metacast(char const *)
+	?extendHorizontalLineToIncludeInactiveRect@HsSnapToLines@@AAEXXZ @ 29 NONAME ; void HsSnapToLines::extendHorizontalLineToIncludeInactiveRect(void)
+	??1HsTitleResolver@@UAE@XZ @ 30 NONAME ; HsTitleResolver::~HsTitleResolver(void)
+	?fetch@HsImageHandlingClient@@QAEXXZ @ 31 NONAME ; void HsImageHandlingClient::fetch(void)
+	?acceptActionIndex@HsMenuDialogFactory@@SAHXZ @ 32 NONAME ; int HsMenuDialogFactory::acceptActionIndex(void)
+	?trUtf8@HsSpinnerDialog@@SA?AVQString@@PBD0@Z @ 33 NONAME ; class QString HsSpinnerDialog::trUtf8(char const *, char const *)
+	?checkInactiveRectBetterFitForHorizontalSnapping@HsSnapToLines@@AAEXMM@Z @ 34 NONAME ; void HsSnapToLines::checkInactiveRectBetterFitForHorizontalSnapping(float, float)
+	?tr@HsPropertyAnimationWrapper@@SA?AVQString@@PBD0H@Z @ 35 NONAME ; class QString HsPropertyAnimationWrapper::tr(char const *, char const *, int)
+	?setQueryText@HsMessageBoxWrapper@@QAEXABVQString@@@Z @ 36 NONAME ; void HsMessageBoxWrapper::setQueryText(class QString const &)
+	??1HsMenuEventTransition@@UAE@XZ @ 37 NONAME ; HsMenuEventTransition::~HsMenuEventTransition(void)
+	?tr@HsSpinnerDialog@@SA?AVQString@@PBD0@Z @ 38 NONAME ; class QString HsSpinnerDialog::tr(char const *, char const *)
+	?fadeInAnimationFinished@HsSnapLine@@AAEXXZ @ 39 NONAME ; void HsSnapLine::fadeInAnimationFinished(void)
+	?checkInactiveRectLieAboveOrBelowOfMovingRect@HsSnapToLines@@AAEXXZ @ 40 NONAME ; void HsSnapToLines::checkInactiveRectLieAboveOrBelowOfMovingRect(void)
+	?setHeader@HsMessageBoxWrapper@@QAEXABVQString@@@Z @ 41 NONAME ; void HsMessageBoxWrapper::setHeader(class QString const &)
+	?setSpacing@HsPageIndicator@@QAEXM@Z @ 42 NONAME ; void HsPageIndicator::setSpacing(float)
+	?qt_metacast@HsPropertyAnimationWrapper@@UAEPAXPBD@Z @ 43 NONAME ; void * HsPropertyAnimationWrapper::qt_metacast(char const *)
+	?createPreviewHSWidgetEvent@HsMenuEventFactory@@SAPAVQEvent@@HABVQString@@00@Z @ 44 NONAME ; class QEvent * HsMenuEventFactory::createPreviewHSWidgetEvent(int, class QString const &, class QString const &, class QString const &)
+	??1HsMenuEvent@@UAE@XZ @ 45 NONAME ; HsMenuEvent::~HsMenuEvent(void)
+	?tr@HsMessageBoxWrapper@@SA?AVQString@@PBD0@Z @ 46 NONAME ; class QString HsMessageBoxWrapper::tr(char const *, char const *)
+	?createCollectionDeletedEvent@HsMenuEventFactory@@SAPAVQEvent@@XZ @ 47 NONAME ; class QEvent * HsMenuEventFactory::createCollectionDeletedEvent(void)
+	?tr@HsImageGridWidget@@SA?AVQString@@PBD0@Z @ 48 NONAME ; class QString HsImageGridWidget::tr(char const *, char const *)
+	?createUninstallApplicationEvent@HsMenuEventFactory@@SAPAVQEvent@@H@Z @ 49 NONAME ; class QEvent * HsMenuEventFactory::createUninstallApplicationEvent(int)
+	?data@HsMenuEvent@@QBE?AV?$QMap@VQString@@VQVariant@@@@XZ @ 50 NONAME ; class QMap<class QString, class QVariant> HsMenuEvent::data(void) const
+	??1HsMenuDialogFactory@@UAE@XZ @ 51 NONAME ; HsMenuDialogFactory::~HsMenuDialogFactory(void)
+	?operation@HsMenuEvent@@QBE?AW4OperationType@1@XZ @ 52 NONAME ; enum HsMenuEvent::OperationType HsMenuEvent::operation(void) const
+	?setBackward@HsPropertyAnimationWrapper@@QAEXXZ @ 53 NONAME ; void HsPropertyAnimationWrapper::setBackward(void)
+	?qt_metacast@HsSpinnerDialog@@UAEPAXPBD@Z @ 54 NONAME ; void * HsSpinnerDialog::qt_metacast(char const *)
+	?getStaticMetaObject@HsPageIndicator@@SAABUQMetaObject@@XZ @ 55 NONAME ; struct QMetaObject const & HsPageIndicator::getStaticMetaObject(void)
+	?compareBottomOfMovingRectForSnapping@HsSnapToLines@@AAEXXZ @ 56 NONAME ; void HsSnapToLines::compareBottomOfMovingRectForSnapping(void)
+	?createUnknownEvent@HsMenuEventFactory@@SAPAVQEvent@@XZ @ 57 NONAME ; class QEvent * HsMenuEventFactory::createUnknownEvent(void)
+	??1HsPropertyAnimationWrapper@@UAE@XZ @ 58 NONAME ; HsPropertyAnimationWrapper::~HsPropertyAnimationWrapper(void)
+	?onNetworkNameChanged@HsTitleResolver@@AAEXABVQString@@@Z @ 59 NONAME ; void HsTitleResolver::onNetworkNameChanged(class QString const &)
+	?metaObject@HsMessageBoxWrapper@@UBEPBUQMetaObject@@XZ @ 60 NONAME ; struct QMetaObject const * HsMessageBoxWrapper::metaObject(void) const
+	?createAppDetailsViewEvent@HsMenuEventFactory@@SAPAVQEvent@@H@Z @ 61 NONAME ; class QEvent * HsMenuEventFactory::createAppDetailsViewEvent(int)
+	?setEndValue@HsPropertyAnimationWrapper@@QAEXABVQVariant@@@Z @ 62 NONAME ; void HsPropertyAnimationWrapper::setEndValue(class QVariant const &)
+	??_EHsSnapLine@@UAE@I@Z @ 63 NONAME ; HsSnapLine::~HsSnapLine(unsigned int)
+	?setContent@HsImageGridWidget@@QAEXABVQStringList@@@Z @ 64 NONAME ; void HsImageGridWidget::setContent(class QStringList const &)
+	?staticMetaObject@XQAIWGetImageClient@@2UQMetaObject@@B @ 65 NONAME ; struct QMetaObject const XQAIWGetImageClient::staticMetaObject
+	?qt_metacall@HsPropertyAnimationWrapper@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 66 NONAME ; int HsPropertyAnimationWrapper::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?handleError@HsImageHandlingClient@@AAEXHABVQString@@@Z @ 67 NONAME ; void HsImageHandlingClient::handleError(int, class QString const &)
+	?qt_metacast@HsMessageBoxWrapper@@UAEPAXPBD@Z @ 68 NONAME ; void * HsMessageBoxWrapper::qt_metacast(char const *)
+	?createArrangeAllCollectionsEvent@HsMenuEventFactory@@SAPAVQEvent@@H@Z @ 69 NONAME ; class QEvent * HsMenuEventFactory::createArrangeAllCollectionsEvent(int)
+	?rejectActionIndex@HsMenuDialogFactory@@SAHXZ @ 70 NONAME ; int HsMenuDialogFactory::rejectActionIndex(void)
+	?fetch@XQAIWGetImageClient@@QAEXXZ @ 71 NONAME ; void XQAIWGetImageClient::fetch(void)
+	?metaObject@HsPropertyAnimationWrapper@@UBEPBUQMetaObject@@XZ @ 72 NONAME ; struct QMetaObject const * HsPropertyAnimationWrapper::metaObject(void) const
+	?isAnimationRunning@HsPageIndicator@@QBE_NXZ @ 73 NONAME ; bool HsPageIndicator::isAnimationRunning(void) const
+	?createAppSettingsViewEvent@HsMenuEventFactory@@SAPAVQEvent@@H@Z @ 74 NONAME ; class QEvent * HsMenuEventFactory::createAppSettingsViewEvent(int)
+	?trUtf8@HsImageGridWidget@@SA?AVQString@@PBD0@Z @ 75 NONAME ; class QString HsImageGridWidget::trUtf8(char const *, char const *)
+	??0HsImageHandlingClient@@QAE@PAVQObject@@@Z @ 76 NONAME ; HsImageHandlingClient::HsImageHandlingClient(class QObject *)
+	?staticMetaObject@HsImageHandlingClient@@2UQMetaObject@@B @ 77 NONAME ; struct QMetaObject const HsImageHandlingClient::staticMetaObject
+	?createDeleteCollectionEvent@HsMenuEventFactory@@SAPAVQEvent@@H@Z @ 78 NONAME ; class QEvent * HsMenuEventFactory::createDeleteCollectionEvent(int)
+	?edit@HsImageHandlingClient@@QAEXABVQString@@@Z @ 79 NONAME ; void HsImageHandlingClient::edit(class QString const &)
 	?trUtf8@HsSpinnerDialog@@SA?AVQString@@PBD0H@Z @ 80 NONAME ; class QString HsSpinnerDialog::trUtf8(char const *, char const *, int)
 	?metaObject@XQAIWGetImageClient@@UBEPBUQMetaObject@@XZ @ 81 NONAME ; struct QMetaObject const * XQAIWGetImageClient::metaObject(void) const
 	?fadeOutAnimationFinished@HsSnapLine@@AAEXXZ @ 82 NONAME ; void HsSnapLine::fadeOutAnimationFinished(void)
@@ -89,190 +89,180 @@
 	??1HsSpinnerDialog@@UAE@XZ @ 88 NONAME ; HsSpinnerDialog::~HsSpinnerDialog(void)
 	?checkInactiveRectPositionToHorizontalLine@HsSnapToLines@@AAEXXZ @ 89 NONAME ; void HsSnapToLines::checkInactiveRectPositionToHorizontalLine(void)
 	?qt_metacall@HsPageIndicator@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 90 NONAME ; int HsPageIndicator::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?setInstance@HsWidgetPositioningOnOrientationChange@@SAXPAV1@@Z @ 91 NONAME ; void HsWidgetPositioningOnOrientationChange::setInstance(class HsWidgetPositioningOnOrientationChange *)
-	?run@HsSnapToLines@@UAE?AVResult@HsWidgetPositioningOnWidgetMove@@ABVQRectF@@@Z @ 92 NONAME ; class HsWidgetPositioningOnWidgetMove::Result HsSnapToLines::run(class QRectF const &)
-	?staticMetaObject@HsPropertyAnimationWrapper@@2UQMetaObject@@B @ 93 NONAME ; struct QMetaObject const HsPropertyAnimationWrapper::staticMetaObject
-	?createOpenCollectionFromAppLibraryEvent@HsMenuEventFactory@@SAPAVQEvent@@HABVQString@@@Z @ 94 NONAME ; class QEvent * HsMenuEventFactory::createOpenCollectionFromAppLibraryEvent(int, class QString const &)
-	?staticMetaObject@HsSnapLine@@2UQMetaObject@@B @ 95 NONAME ; struct QMetaObject const HsSnapLine::staticMetaObject
-	?start@HsPropertyAnimationWrapper@@QAEXXZ @ 96 NONAME ; void HsPropertyAnimationWrapper::start(void)
-	??_EHsTrashBinWidget@@UAE@I@Z @ 97 NONAME ; HsTrashBinWidget::~HsTrashBinWidget(unsigned int)
-	?startFadeInAnimation@HsSnapLine@@AAEXXZ @ 98 NONAME ; void HsSnapLine::startFadeInAnimation(void)
-	?metaObject@HsSnapLine@@UBEPBUQMetaObject@@XZ @ 99 NONAME ; struct QMetaObject const * HsSnapLine::metaObject(void) const
-	??1XQAIWGetImageClient@@UAE@XZ @ 100 NONAME ; XQAIWGetImageClient::~XQAIWGetImageClient(void)
-	??_EHsPropertyAnimationWrapper@@UAE@I@Z @ 101 NONAME ; HsPropertyAnimationWrapper::~HsPropertyAnimationWrapper(unsigned int)
-	?activeItemIndex@HsPageIndicator@@QBEHXZ @ 102 NONAME ; int HsPageIndicator::activeItemIndex(void) const
-	?isFadeInAnimationRunning@HsSnapLine@@ABE_NXZ @ 103 NONAME ; bool HsSnapLine::isFadeInAnimationRunning(void) const
-	?qt_metacall@HsSnapLine@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 104 NONAME ; int HsSnapLine::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?layoutItems@HsPageIndicator@@AAEXXZ @ 105 NONAME ; void HsPageIndicator::layoutItems(void)
-	?trUtf8@HsMessageBoxWrapper@@SA?AVQString@@PBD0H@Z @ 106 NONAME ; class QString HsMessageBoxWrapper::trUtf8(char const *, char const *, int)
-	?metaObject@HsSpinnerDialog@@UBEPBUQMetaObject@@XZ @ 107 NONAME ; struct QMetaObject const * HsSpinnerDialog::metaObject(void) const
-	?getStaticMetaObject@HsImageGridWidget@@SAABUQMetaObject@@XZ @ 108 NONAME ; struct QMetaObject const & HsImageGridWidget::getStaticMetaObject(void)
-	?setConfiguration@HsSnapToLines@@UAEXABV?$QHash@VQString@@VQVariant@@@@@Z @ 109 NONAME ; void HsSnapToLines::setConfiguration(class QHash<class QString, class QVariant> const &)
-	?trUtf8@HsPageIndicator@@SA?AVQString@@PBD0@Z @ 110 NONAME ; class QString HsPageIndicator::trUtf8(char const *, char const *)
-	?metaObject@HsTitleResolver@@UBEPBUQMetaObject@@XZ @ 111 NONAME ; struct QMetaObject const * HsTitleResolver::metaObject(void) const
-	?titleChanged@HsTitleResolver@@IAEXABVQString@@@Z @ 112 NONAME ; void HsTitleResolver::titleChanged(class QString const &)
-	?tr@HsPageIndicator@@SA?AVQString@@PBD0@Z @ 113 NONAME ; class QString HsPageIndicator::tr(char const *, char const *)
-	?convert@HsWidgetOrganizer@@UAE?AV?$QList@VQRectF@@@@ABVQRectF@@ABV2@1ABVQPointF@@@Z @ 114 NONAME ; class QList<class QRectF> HsWidgetOrganizer::convert(class QRectF const &, class QList<class QRectF> const &, class QList<class QRectF> const &, class QPointF const &)
-	?tr@HsPropertyAnimationWrapper@@SA?AVQString@@PBD0@Z @ 115 NONAME ; class QString HsPropertyAnimationWrapper::tr(char const *, char const *)
-	?onStatusChanged@HsTitleResolver@@AAEXW4HsDeviceInfoStatus@HsDeviceInfoListener@@@Z @ 116 NONAME ; void HsTitleResolver::onStatusChanged(enum HsDeviceInfoListener::HsDeviceInfoStatus)
-	?createUninstallFailedEvent@HsMenuEventFactory@@SAPAVQEvent@@H@Z @ 117 NONAME ; class QEvent * HsMenuEventFactory::createUninstallFailedEvent(int)
-	?createVerticalLine@HsSnapToLines@@AAEXXZ @ 118 NONAME ; void HsSnapToLines::createVerticalLine(void)
-	?trUtf8@XQAIWGetImageClient@@SA?AVQString@@PBD0H@Z @ 119 NONAME ; class QString XQAIWGetImageClient::trUtf8(char const *, char const *, int)
-	?actionOnFadeInAnimationStop@HsSnapLine@@AAEXXZ @ 120 NONAME ; void HsSnapLine::actionOnFadeInAnimationStop(void)
-	?qt_metacast@HsTrashBinWidget@@UAEPAXPBD@Z @ 121 NONAME ; void * HsTrashBinWidget::qt_metacast(char const *)
-	?createNewCollectionEvent@HsMenuEventFactory@@SAPAVQEvent@@XZ @ 122 NONAME ; class QEvent * HsMenuEventFactory::createNewCollectionEvent(void)
-	?createOpenHomeScreenEvent@HsMenuEventFactory@@SAPAVQEvent@@XZ @ 123 NONAME ; class QEvent * HsMenuEventFactory::createOpenHomeScreenEvent(void)
-	?checkInactiveRectPositionToVerticalLine@HsSnapToLines@@AAEXXZ @ 124 NONAME ; void HsSnapToLines::checkInactiveRectPositionToVerticalLine(void)
-	?findImages@XQAIWGetImageClient@@AAEXABVQString@@ABVQStringList@@AAV3@@Z @ 125 NONAME ; void XQAIWGetImageClient::findImages(class QString const &, class QStringList const &, class QStringList &)
-	??_EHsMenuDialogFactory@@UAE@I@Z @ 126 NONAME ; HsMenuDialogFactory::~HsMenuDialogFactory(unsigned int)
-	??1HsWidgetPositioningOnWidgetAdd@@UAE@XZ @ 127 NONAME ; HsWidgetPositioningOnWidgetAdd::~HsWidgetPositioningOnWidgetAdd(void)
-	?createInstallationLogEvent@HsMenuEventFactory@@SAPAVQEvent@@XZ @ 128 NONAME ; class QEvent * HsMenuEventFactory::createInstallationLogEvent(void)
-	?extendVerticalLine@HsSnapToLines@@AAEXXZ @ 129 NONAME ; void HsSnapToLines::extendVerticalLine(void)
-	?stop@HsSpinnerDialog@@QAEXXZ @ 130 NONAME ; void HsSpinnerDialog::stop(void)
-	?stop@HsPropertyAnimationWrapper@@QAEXXZ @ 131 NONAME ; void HsPropertyAnimationWrapper::stop(void)
-	?tr@HsSpinnerDialog@@SA?AVQString@@PBD0H@Z @ 132 NONAME ; class QString HsSpinnerDialog::tr(char const *, char const *, int)
-	?getStaticMetaObject@HsSnapLine@@SAABUQMetaObject@@XZ @ 133 NONAME ; struct QMetaObject const & HsSnapLine::getStaticMetaObject(void)
-	?handleError@HsImageFetcherClient@@AAEXHABVQString@@@Z @ 134 NONAME ; void HsImageFetcherClient::handleError(int, class QString const &)
-	?searchHeightSpace@HsWidgetOrganizer@@AAE_NH@Z @ 135 NONAME ; bool HsWidgetOrganizer::searchHeightSpace(int)
-	?tr@HsTitleResolver@@SA?AVQString@@PBD0H@Z @ 136 NONAME ; class QString HsTitleResolver::tr(char const *, char const *, int)
-	?setPropertyName@HsPropertyAnimationWrapper@@QAEXABVQByteArray@@@Z @ 137 NONAME ; void HsPropertyAnimationWrapper::setPropertyName(class QByteArray const &)
-	?checkInactiveRectBetterFitForVerticalSnapping@HsSnapToLines@@AAEXMM@Z @ 138 NONAME ; void HsSnapToLines::checkInactiveRectBetterFitForVerticalSnapping(float, float)
-	?onDialogClosed@HsMessageBoxWrapper@@AAEXH@Z @ 139 NONAME ; void HsMessageBoxWrapper::onDialogClosed(int)
-	?createRenameCollectionEvent@HsMenuEventFactory@@SAPAVQEvent@@H@Z @ 140 NONAME ; class QEvent * HsMenuEventFactory::createRenameCollectionEvent(int)
-	?tr@HsTrashBinWidget@@SA?AVQString@@PBD0@Z @ 141 NONAME ; class QString HsTrashBinWidget::tr(char const *, char const *)
-	?getStaticMetaObject@XQAIWGetImageClient@@SAABUQMetaObject@@XZ @ 142 NONAME ; struct QMetaObject const & XQAIWGetImageClient::getStaticMetaObject(void)
-	?getStaticMetaObject@HsTrashBinWidget@@SAABUQMetaObject@@XZ @ 143 NONAME ; struct QMetaObject const & HsTrashBinWidget::getStaticMetaObject(void)
-	?removeItem@HsPageIndicator@@QAEXH@Z @ 144 NONAME ; void HsPageIndicator::removeItem(int)
-	?mInstance@HsWidgetPositioningOnOrientationChange@@0PAV1@A @ 145 NONAME ; class HsWidgetPositioningOnOrientationChange * HsWidgetPositioningOnOrientationChange::mInstance
-	?staticMetaObject@HsSpinnerDialog@@2UQMetaObject@@B @ 146 NONAME ; struct QMetaObject const HsSpinnerDialog::staticMetaObject
-	?setDuration@HsPropertyAnimationWrapper@@QAEXH@Z @ 147 NONAME ; void HsPropertyAnimationWrapper::setDuration(int)
-	??_EXQAIWGetImageClient@@UAE@I@Z @ 148 NONAME ; XQAIWGetImageClient::~XQAIWGetImageClient(unsigned int)
-	??0HsImageFetcherClient@@QAE@PAVQObject@@@Z @ 149 NONAME ; HsImageFetcherClient::HsImageFetcherClient(class QObject *)
-	??_EHsMessageBoxWrapper@@UAE@I@Z @ 150 NONAME ; HsMessageBoxWrapper::~HsMessageBoxWrapper(unsigned int)
-	?tr@HsTrashBinWidget@@SA?AVQString@@PBD0H@Z @ 151 NONAME ; class QString HsTrashBinWidget::tr(char const *, char const *, int)
-	?setTargetObject@HsPropertyAnimationWrapper@@QAEXPAVQObject@@@Z @ 152 NONAME ; void HsPropertyAnimationWrapper::setTargetObject(class QObject *)
-	??0HsTrashBinWidget@@QAE@PAVQGraphicsItem@@@Z @ 153 NONAME ; HsTrashBinWidget::HsTrashBinWidget(class QGraphicsItem *)
-	?compareLeftSideOfMovingRectForSnapping@HsSnapToLines@@AAEXXZ @ 154 NONAME ; void HsSnapToLines::compareLeftSideOfMovingRectForSnapping(void)
-	?fetch@HsImageFetcherClient@@QAEXXZ @ 155 NONAME ; void HsImageFetcherClient::fetch(void)
+	?trUtf8@HsImageHandlingClient@@SA?AVQString@@PBD0H@Z @ 91 NONAME ; class QString HsImageHandlingClient::trUtf8(char const *, char const *, int)
+	?setInstance@HsWidgetPositioningOnOrientationChange@@SAXPAV1@@Z @ 92 NONAME ; void HsWidgetPositioningOnOrientationChange::setInstance(class HsWidgetPositioningOnOrientationChange *)
+	?run@HsSnapToLines@@UAE?AVResult@HsWidgetPositioningOnWidgetMove@@ABVQRectF@@@Z @ 93 NONAME ; class HsWidgetPositioningOnWidgetMove::Result HsSnapToLines::run(class QRectF const &)
+	?staticMetaObject@HsPropertyAnimationWrapper@@2UQMetaObject@@B @ 94 NONAME ; struct QMetaObject const HsPropertyAnimationWrapper::staticMetaObject
+	?fetchFailed@HsImageHandlingClient@@IAEXHABVQString@@@Z @ 95 NONAME ; void HsImageHandlingClient::fetchFailed(int, class QString const &)
+	?createOpenCollectionFromAppLibraryEvent@HsMenuEventFactory@@SAPAVQEvent@@HABVQString@@@Z @ 96 NONAME ; class QEvent * HsMenuEventFactory::createOpenCollectionFromAppLibraryEvent(int, class QString const &)
+	?staticMetaObject@HsSnapLine@@2UQMetaObject@@B @ 97 NONAME ; struct QMetaObject const HsSnapLine::staticMetaObject
+	?start@HsPropertyAnimationWrapper@@QAEXXZ @ 98 NONAME ; void HsPropertyAnimationWrapper::start(void)
+	??_EHsTrashBinWidget@@UAE@I@Z @ 99 NONAME ; HsTrashBinWidget::~HsTrashBinWidget(unsigned int)
+	?startFadeInAnimation@HsSnapLine@@AAEXXZ @ 100 NONAME ; void HsSnapLine::startFadeInAnimation(void)
+	?tr@HsImageHandlingClient@@SA?AVQString@@PBD0H@Z @ 101 NONAME ; class QString HsImageHandlingClient::tr(char const *, char const *, int)
+	?metaObject@HsSnapLine@@UBEPBUQMetaObject@@XZ @ 102 NONAME ; struct QMetaObject const * HsSnapLine::metaObject(void) const
+	??1XQAIWGetImageClient@@UAE@XZ @ 103 NONAME ; XQAIWGetImageClient::~XQAIWGetImageClient(void)
+	??_EHsPropertyAnimationWrapper@@UAE@I@Z @ 104 NONAME ; HsPropertyAnimationWrapper::~HsPropertyAnimationWrapper(unsigned int)
+	?activeItemIndex@HsPageIndicator@@QBEHXZ @ 105 NONAME ; int HsPageIndicator::activeItemIndex(void) const
+	?isFadeInAnimationRunning@HsSnapLine@@ABE_NXZ @ 106 NONAME ; bool HsSnapLine::isFadeInAnimationRunning(void) const
+	?qt_metacall@HsSnapLine@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 107 NONAME ; int HsSnapLine::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?layoutItems@HsPageIndicator@@AAEXXZ @ 108 NONAME ; void HsPageIndicator::layoutItems(void)
+	?trUtf8@HsMessageBoxWrapper@@SA?AVQString@@PBD0H@Z @ 109 NONAME ; class QString HsMessageBoxWrapper::trUtf8(char const *, char const *, int)
+	?metaObject@HsSpinnerDialog@@UBEPBUQMetaObject@@XZ @ 110 NONAME ; struct QMetaObject const * HsSpinnerDialog::metaObject(void) const
+	?getStaticMetaObject@HsImageGridWidget@@SAABUQMetaObject@@XZ @ 111 NONAME ; struct QMetaObject const & HsImageGridWidget::getStaticMetaObject(void)
+	?trUtf8@HsImageHandlingClient@@SA?AVQString@@PBD0@Z @ 112 NONAME ; class QString HsImageHandlingClient::trUtf8(char const *, char const *)
+	?setConfiguration@HsSnapToLines@@UAEXABV?$QHash@VQString@@VQVariant@@@@@Z @ 113 NONAME ; void HsSnapToLines::setConfiguration(class QHash<class QString, class QVariant> const &)
+	??_EHsImageHandlingClient@@UAE@I@Z @ 114 NONAME ; HsImageHandlingClient::~HsImageHandlingClient(unsigned int)
+	?trUtf8@HsPageIndicator@@SA?AVQString@@PBD0@Z @ 115 NONAME ; class QString HsPageIndicator::trUtf8(char const *, char const *)
+	?metaObject@HsTitleResolver@@UBEPBUQMetaObject@@XZ @ 116 NONAME ; struct QMetaObject const * HsTitleResolver::metaObject(void) const
+	?titleChanged@HsTitleResolver@@IAEXABVQString@@@Z @ 117 NONAME ; void HsTitleResolver::titleChanged(class QString const &)
+	?tr@HsPageIndicator@@SA?AVQString@@PBD0@Z @ 118 NONAME ; class QString HsPageIndicator::tr(char const *, char const *)
+	?tr@HsPropertyAnimationWrapper@@SA?AVQString@@PBD0@Z @ 119 NONAME ; class QString HsPropertyAnimationWrapper::tr(char const *, char const *)
+	?onStatusChanged@HsTitleResolver@@AAEXW4HsDeviceInfoStatus@HsDeviceInfoListener@@@Z @ 120 NONAME ; void HsTitleResolver::onStatusChanged(enum HsDeviceInfoListener::HsDeviceInfoStatus)
+	?createUninstallFailedEvent@HsMenuEventFactory@@SAPAVQEvent@@H@Z @ 121 NONAME ; class QEvent * HsMenuEventFactory::createUninstallFailedEvent(int)
+	?createVerticalLine@HsSnapToLines@@AAEXXZ @ 122 NONAME ; void HsSnapToLines::createVerticalLine(void)
+	?trUtf8@XQAIWGetImageClient@@SA?AVQString@@PBD0H@Z @ 123 NONAME ; class QString XQAIWGetImageClient::trUtf8(char const *, char const *, int)
+	?actionOnFadeInAnimationStop@HsSnapLine@@AAEXXZ @ 124 NONAME ; void HsSnapLine::actionOnFadeInAnimationStop(void)
+	?qt_metacast@HsTrashBinWidget@@UAEPAXPBD@Z @ 125 NONAME ; void * HsTrashBinWidget::qt_metacast(char const *)
+	?createNewCollectionEvent@HsMenuEventFactory@@SAPAVQEvent@@XZ @ 126 NONAME ; class QEvent * HsMenuEventFactory::createNewCollectionEvent(void)
+	?createOpenHomeScreenEvent@HsMenuEventFactory@@SAPAVQEvent@@XZ @ 127 NONAME ; class QEvent * HsMenuEventFactory::createOpenHomeScreenEvent(void)
+	?checkInactiveRectPositionToVerticalLine@HsSnapToLines@@AAEXXZ @ 128 NONAME ; void HsSnapToLines::checkInactiveRectPositionToVerticalLine(void)
+	?metaObject@HsImageHandlingClient@@UBEPBUQMetaObject@@XZ @ 129 NONAME ; struct QMetaObject const * HsImageHandlingClient::metaObject(void) const
+	?findImages@XQAIWGetImageClient@@AAEXABVQString@@ABVQStringList@@AAV3@@Z @ 130 NONAME ; void XQAIWGetImageClient::findImages(class QString const &, class QStringList const &, class QStringList &)
+	??_EHsMenuDialogFactory@@UAE@I@Z @ 131 NONAME ; HsMenuDialogFactory::~HsMenuDialogFactory(unsigned int)
+	?createInstallationLogEvent@HsMenuEventFactory@@SAPAVQEvent@@XZ @ 132 NONAME ; class QEvent * HsMenuEventFactory::createInstallationLogEvent(void)
+	?extendVerticalLine@HsSnapToLines@@AAEXXZ @ 133 NONAME ; void HsSnapToLines::extendVerticalLine(void)
+	?stop@HsSpinnerDialog@@QAEXXZ @ 134 NONAME ; void HsSpinnerDialog::stop(void)
+	?stop@HsPropertyAnimationWrapper@@QAEXXZ @ 135 NONAME ; void HsPropertyAnimationWrapper::stop(void)
+	?tr@HsSpinnerDialog@@SA?AVQString@@PBD0H@Z @ 136 NONAME ; class QString HsSpinnerDialog::tr(char const *, char const *, int)
+	?getStaticMetaObject@HsSnapLine@@SAABUQMetaObject@@XZ @ 137 NONAME ; struct QMetaObject const & HsSnapLine::getStaticMetaObject(void)
+	?tr@HsTitleResolver@@SA?AVQString@@PBD0H@Z @ 138 NONAME ; class QString HsTitleResolver::tr(char const *, char const *, int)
+	?setPropertyName@HsPropertyAnimationWrapper@@QAEXABVQByteArray@@@Z @ 139 NONAME ; void HsPropertyAnimationWrapper::setPropertyName(class QByteArray const &)
+	?checkInactiveRectBetterFitForVerticalSnapping@HsSnapToLines@@AAEXMM@Z @ 140 NONAME ; void HsSnapToLines::checkInactiveRectBetterFitForVerticalSnapping(float, float)
+	?onDialogClosed@HsMessageBoxWrapper@@AAEXH@Z @ 141 NONAME ; void HsMessageBoxWrapper::onDialogClosed(int)
+	?createRenameCollectionEvent@HsMenuEventFactory@@SAPAVQEvent@@H@Z @ 142 NONAME ; class QEvent * HsMenuEventFactory::createRenameCollectionEvent(int)
+	?tr@HsTrashBinWidget@@SA?AVQString@@PBD0@Z @ 143 NONAME ; class QString HsTrashBinWidget::tr(char const *, char const *)
+	?getStaticMetaObject@XQAIWGetImageClient@@SAABUQMetaObject@@XZ @ 144 NONAME ; struct QMetaObject const & XQAIWGetImageClient::getStaticMetaObject(void)
+	?getStaticMetaObject@HsTrashBinWidget@@SAABUQMetaObject@@XZ @ 145 NONAME ; struct QMetaObject const & HsTrashBinWidget::getStaticMetaObject(void)
+	?removeItem@HsPageIndicator@@QAEXH@Z @ 146 NONAME ; void HsPageIndicator::removeItem(int)
+	?mInstance@HsWidgetPositioningOnOrientationChange@@0PAV1@A @ 147 NONAME ; class HsWidgetPositioningOnOrientationChange * HsWidgetPositioningOnOrientationChange::mInstance
+	?staticMetaObject@HsSpinnerDialog@@2UQMetaObject@@B @ 148 NONAME ; struct QMetaObject const HsSpinnerDialog::staticMetaObject
+	?setDuration@HsPropertyAnimationWrapper@@QAEXH@Z @ 149 NONAME ; void HsPropertyAnimationWrapper::setDuration(int)
+	??_EXQAIWGetImageClient@@UAE@I@Z @ 150 NONAME ; XQAIWGetImageClient::~XQAIWGetImageClient(unsigned int)
+	??_EHsMessageBoxWrapper@@UAE@I@Z @ 151 NONAME ; HsMessageBoxWrapper::~HsMessageBoxWrapper(unsigned int)
+	?tr@HsTrashBinWidget@@SA?AVQString@@PBD0H@Z @ 152 NONAME ; class QString HsTrashBinWidget::tr(char const *, char const *, int)
+	?setTargetObject@HsPropertyAnimationWrapper@@QAEXPAVQObject@@@Z @ 153 NONAME ; void HsPropertyAnimationWrapper::setTargetObject(class QObject *)
+	??0HsTrashBinWidget@@QAE@PAVQGraphicsItem@@@Z @ 154 NONAME ; HsTrashBinWidget::HsTrashBinWidget(class QGraphicsItem *)
+	?compareLeftSideOfMovingRectForSnapping@HsSnapToLines@@AAEXXZ @ 155 NONAME ; void HsSnapToLines::compareLeftSideOfMovingRectForSnapping(void)
 	?instance@HsWidgetPositioningOnWidgetMove@@SAPAV1@XZ @ 156 NONAME ; class HsWidgetPositioningOnWidgetMove * HsWidgetPositioningOnWidgetMove::instance(void)
 	?staticMetaObject@HsMessageBoxWrapper@@2UQMetaObject@@B @ 157 NONAME ; struct QMetaObject const HsMessageBoxWrapper::staticMetaObject
-	?qt_metacast@HsImageFetcherClient@@UAEPAXPBD@Z @ 158 NONAME ; void * HsImageFetcherClient::qt_metacast(char const *)
-	?trUtf8@HsImageFetcherClient@@SA?AVQString@@PBD0@Z @ 159 NONAME ; class QString HsImageFetcherClient::trUtf8(char const *, char const *)
-	?fetchCompleted@HsImageFetcherClient@@IAEXABVQString@@@Z @ 160 NONAME ; void HsImageFetcherClient::fetchCompleted(class QString const &)
-	?start@HsSpinnerDialog@@QAEXXZ @ 161 NONAME ; void HsSpinnerDialog::start(void)
-	?isFadeOutAnimationRunning@HsSnapLine@@ABE_NXZ @ 162 NONAME ; bool HsSnapLine::isFadeOutAnimationRunning(void) const
-	?trUtf8@HsPropertyAnimationWrapper@@SA?AVQString@@PBD0@Z @ 163 NONAME ; class QString HsPropertyAnimationWrapper::trUtf8(char const *, char const *)
-	?createSnappableRectangles@HsSnapToLines@@AAEXABV?$QList@VQRectF@@@@@Z @ 164 NONAME ; void HsSnapToLines::createSnappableRectangles(class QList<class QRectF> const &)
-	?staticMetaObject@HsImageGridWidget@@2UQMetaObject@@B @ 165 NONAME ; struct QMetaObject const HsImageGridWidget::staticMetaObject
-	??_EHsTitleResolver@@UAE@I@Z @ 166 NONAME ; HsTitleResolver::~HsTitleResolver(unsigned int)
-	?setForward@HsPropertyAnimationWrapper@@QAEXXZ @ 167 NONAME ; void HsPropertyAnimationWrapper::setForward(void)
-	?convert@HsAnchorPointInCenter@@UAE?AV?$QList@VQRectF@@@@ABVQRectF@@ABV2@1ABVQPointF@@@Z @ 168 NONAME ; class QList<class QRectF> HsAnchorPointInCenter::convert(class QRectF const &, class QList<class QRectF> const &, class QList<class QRectF> const &, class QPointF const &)
-	??1HsSnapToLines@@UAE@XZ @ 169 NONAME ; HsSnapToLines::~HsSnapToLines(void)
-	?staticMetaObject@HsTrashBinWidget@@2UQMetaObject@@B @ 170 NONAME ; struct QMetaObject const HsTrashBinWidget::staticMetaObject
-	?title@HsTitleResolver@@QAE?AVQString@@XZ @ 171 NONAME ; class QString HsTitleResolver::title(void)
-	??_EHsWidgetPositioningOnWidgetAdd@@UAE@I@Z @ 172 NONAME ; HsWidgetPositioningOnWidgetAdd::~HsWidgetPositioningOnWidgetAdd(unsigned int)
-	??_EHsMenuEventTransition@@UAE@I@Z @ 173 NONAME ; HsMenuEventTransition::~HsMenuEventTransition(unsigned int)
-	?tr@HsSnapLine@@SA?AVQString@@PBD0@Z @ 174 NONAME ; class QString HsSnapLine::tr(char const *, char const *)
-	?setPagePresentation@HsSnapToLines@@UAEXABVQRectF@@ABV?$QList@VQRectF@@@@0@Z @ 175 NONAME ; void HsSnapToLines::setPagePresentation(class QRectF const &, class QList<class QRectF> const &, class QRectF const &)
-	?trUtf8@HsTrashBinWidget@@SA?AVQString@@PBD0H@Z @ 176 NONAME ; class QString HsTrashBinWidget::trUtf8(char const *, char const *, int)
-	?trUtf8@HsImageFetcherClient@@SA?AVQString@@PBD0H@Z @ 177 NONAME ; class QString HsImageFetcherClient::trUtf8(char const *, char const *, int)
-	??_EHsMenuEvent@@UAE@I@Z @ 178 NONAME ; HsMenuEvent::~HsMenuEvent(unsigned int)
-	??1HsTrashBinWidget@@UAE@XZ @ 179 NONAME ; HsTrashBinWidget::~HsTrashBinWidget(void)
-	?compareTopOfMovingRectForSnapping@HsSnapToLines@@AAEXXZ @ 180 NONAME ; void HsSnapToLines::compareTopOfMovingRectForSnapping(void)
-	??_EHsSnapToLines@@UAE@I@Z @ 181 NONAME ; HsSnapToLines::~HsSnapToLines(unsigned int)
-	?itemCount@HsPageIndicator@@QBEHXZ @ 182 NONAME ; int HsPageIndicator::itemCount(void) const
-	?checkInactiveRectLieLeftOrRightOfMovingRect@HsSnapToLines@@AAEXXZ @ 183 NONAME ; void HsSnapToLines::checkInactiveRectLieLeftOrRightOfMovingRect(void)
-	??1HsImageFetcherClient@@UAE@XZ @ 184 NONAME ; HsImageFetcherClient::~HsImageFetcherClient(void)
-	?createAddAppsFromApplicationsViewEvent@HsMenuEventFactory@@SAPAVQEvent@@W4HsSortAttribute@Hs@@H@Z @ 185 NONAME ; class QEvent * HsMenuEventFactory::createAddAppsFromApplicationsViewEvent(enum Hs::HsSortAttribute, int)
-	??1HsWidgetPositioningOnOrientationChange@@UAE@XZ @ 186 NONAME ; HsWidgetPositioningOnOrientationChange::~HsWidgetPositioningOnOrientationChange(void)
-	?metaObject@HsImageGridWidget@@UBEPBUQMetaObject@@XZ @ 187 NONAME ; struct QMetaObject const * HsImageGridWidget::metaObject(void) const
-	?checkInactiveRectVerticalEdgesInRange@HsSnapToLines@@AAEXM@Z @ 188 NONAME ; void HsSnapToLines::checkInactiveRectVerticalEdgesInRange(float)
-	?imageSelectionCancelled@XQAIWGetImageClient@@AAEXXZ @ 189 NONAME ; void XQAIWGetImageClient::imageSelectionCancelled(void)
-	?gridItemActivated@HsImageGridWidget@@AAEXABVQModelIndex@@@Z @ 190 NONAME ; void HsImageGridWidget::gridItemActivated(class QModelIndex const &)
-	?markReservedAnchors@HsWidgetOrganizer@@AAE_NXZ @ 191 NONAME ; bool HsWidgetOrganizer::markReservedAnchors(void)
-	?createRemoveAppFromCollectionEvent@HsMenuEventFactory@@SAPAVQEvent@@HH@Z @ 192 NONAME ; class QEvent * HsMenuEventFactory::createRemoveAppFromCollectionEvent(int, int)
-	??1HsWidgetPositioningOnWidgetMove@@UAE@XZ @ 193 NONAME ; HsWidgetPositioningOnWidgetMove::~HsWidgetPositioningOnWidgetMove(void)
-	?trUtf8@HsPageIndicator@@SA?AVQString@@PBD0H@Z @ 194 NONAME ; class QString HsPageIndicator::trUtf8(char const *, char const *, int)
-	??0HsSpinnerDialog@@QAE@PAVQGraphicsItem@@@Z @ 195 NONAME ; HsSpinnerDialog::HsSpinnerDialog(class QGraphicsItem *)
-	?createOpenCollectionEvent@HsMenuEventFactory@@SAPAVQEvent@@HABVQString@@@Z @ 196 NONAME ; class QEvent * HsMenuEventFactory::createOpenCollectionEvent(int, class QString const &)
-	?initialize@HsPageIndicator@@QAEXHH@Z @ 197 NONAME ; void HsPageIndicator::initialize(int, int)
-	??1HsPageIndicator@@UAE@XZ @ 198 NONAME ; HsPageIndicator::~HsPageIndicator(void)
-	?instance@HsWidgetPositioningOnOrientationChange@@SAPAV1@XZ @ 199 NONAME ; class HsWidgetPositioningOnOrientationChange * HsWidgetPositioningOnOrientationChange::instance(void)
-	?createAddToHomeScreenEvent@HsMenuEventFactory@@SAPAVQEvent@@HW4HsMenuMode@Hs@@VQVariant@@@Z @ 200 NONAME ; class QEvent * HsMenuEventFactory::createAddToHomeScreenEvent(int, enum Hs::HsMenuMode, class QVariant)
-	?getFadeInDuration@HsSnapLine@@AAEHXZ @ 201 NONAME ; int HsSnapLine::getFadeInDuration(void)
-	?getAnchorPoint@HsWidgetOrganizer@@AAE_NABVQSizeF@@@Z @ 202 NONAME ; bool HsWidgetOrganizer::getAnchorPoint(class QSizeF const &)
-	?fetchCompleted@XQAIWGetImageClient@@IAEXABVQString@@@Z @ 203 NONAME ; void XQAIWGetImageClient::fetchCompleted(class QString const &)
-	?requestCompleted@XQAIWGetImageClient@@AAEXABVQVariant@@@Z @ 204 NONAME ; void XQAIWGetImageClient::requestCompleted(class QVariant const &)
-	?initAnchors@HsWidgetOrganizer@@AAE_NABVQSizeF@@@Z @ 205 NONAME ; bool HsWidgetOrganizer::initAnchors(class QSizeF const &)
-	?accepted@HsMessageBoxWrapper@@IAEXXZ @ 206 NONAME ; void HsMessageBoxWrapper::accepted(void)
-	?getStaticMetaObject@HsMessageBoxWrapper@@SAABUQMetaObject@@XZ @ 207 NONAME ; struct QMetaObject const & HsMessageBoxWrapper::getStaticMetaObject(void)
-	?qt_metacast@XQAIWGetImageClient@@UAEPAXPBD@Z @ 208 NONAME ; void * XQAIWGetImageClient::qt_metacast(char const *)
-	??_EHsImageGridWidget@@UAE@I@Z @ 209 NONAME ; HsImageGridWidget::~HsImageGridWidget(unsigned int)
-	?hideLine@HsSnapLine@@QAEXXZ @ 210 NONAME ; void HsSnapLine::hideLine(void)
-	?metaObject@HsPageIndicator@@UBEPBUQMetaObject@@XZ @ 211 NONAME ; struct QMetaObject const * HsPageIndicator::metaObject(void) const
-	?imageSelected@XQAIWGetImageClient@@AAEXABVQString@@@Z @ 212 NONAME ; void XQAIWGetImageClient::imageSelected(class QString const &)
-	?setActiveItemIndex@HsPageIndicator@@QAEXH@Z @ 213 NONAME ; void HsPageIndicator::setActiveItemIndex(int)
-	?trUtf8@HsImageGridWidget@@SA?AVQString@@PBD0H@Z @ 214 NONAME ; class QString HsImageGridWidget::trUtf8(char const *, char const *, int)
-	?getStaticMetaObject@HsImageFetcherClient@@SAABUQMetaObject@@XZ @ 215 NONAME ; struct QMetaObject const & HsImageFetcherClient::getStaticMetaObject(void)
-	?createOpenInstalledViewEvent@HsMenuEventFactory@@SAPAVQEvent@@XZ @ 216 NONAME ; class QEvent * HsMenuEventFactory::createOpenInstalledViewEvent(void)
-	??0HsSnapLine@@QAE@PAVQGraphicsItem@@@Z @ 217 NONAME ; HsSnapLine::HsSnapLine(class QGraphicsItem *)
-	?startFadeOutAnimation@HsSnapLine@@AAEXXZ @ 218 NONAME ; void HsSnapLine::startFadeOutAnimation(void)
-	?imageSelected@HsImageGridWidget@@IAEXABVQString@@@Z @ 219 NONAME ; void HsImageGridWidget::imageSelected(class QString const &)
-	?getStaticMetaObject@HsTitleResolver@@SAABUQMetaObject@@XZ @ 220 NONAME ; struct QMetaObject const & HsTitleResolver::getStaticMetaObject(void)
-	?trUtf8@XQAIWGetImageClient@@SA?AVQString@@PBD0@Z @ 221 NONAME ; class QString XQAIWGetImageClient::trUtf8(char const *, char const *)
-	?stopFadeInAnimation@HsSnapLine@@AAEXXZ @ 222 NONAME ; void HsSnapLine::stopFadeInAnimation(void)
-	?create@HsMenuDialogFactory@@UBEPAVHbMessageBox@@ABVQString@@W4Options@1@@Z @ 223 NONAME ; class HbMessageBox * HsMenuDialogFactory::create(class QString const &, enum HsMenuDialogFactory::Options) const
-	?lenghtInAnchorPoints@HsWidgetOrganizer@@AAEHVQVariant@@@Z @ 224 NONAME ; int HsWidgetOrganizer::lenghtInAnchorPoints(class QVariant)
-	?createArrangeCollectionEvent@HsMenuEventFactory@@SAPAVQEvent@@HH@Z @ 225 NONAME ; class QEvent * HsMenuEventFactory::createArrangeCollectionEvent(int, int)
-	?deactivate@HsTrashBinWidget@@QAEXXZ @ 226 NONAME ; void HsTrashBinWidget::deactivate(void)
-	?qt_metacast@HsImageGridWidget@@UAEPAXPBD@Z @ 227 NONAME ; void * HsImageGridWidget::qt_metacast(char const *)
-	?isForward@HsPropertyAnimationWrapper@@QBE_NXZ @ 228 NONAME ; bool HsPropertyAnimationWrapper::isForward(void) const
-	?tr@HsPageIndicator@@SA?AVQString@@PBD0H@Z @ 229 NONAME ; class QString HsPageIndicator::tr(char const *, char const *, int)
-	?eventTest@HsMenuEventTransition@@MAE_NPAVQEvent@@@Z @ 230 NONAME ; bool HsMenuEventTransition::eventTest(class QEvent *)
-	?qt_metacall@HsImageGridWidget@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 231 NONAME ; int HsImageGridWidget::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?showLine@HsSnapLine@@QAEXABVQLineF@@@Z @ 232 NONAME ; void HsSnapLine::showLine(class QLineF const &)
-	?tr@HsMessageBoxWrapper@@SA?AVQString@@PBD0H@Z @ 233 NONAME ; class QString HsMessageBoxWrapper::tr(char const *, char const *, int)
-	?qt_metacall@XQAIWGetImageClient@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 234 NONAME ; int XQAIWGetImageClient::qt_metacall(enum QMetaObject::Call, int, void * *)
-	??0XQAIWGetImageClient@@QAE@XZ @ 235 NONAME ; XQAIWGetImageClient::XQAIWGetImageClient(void)
-	?handleOk@HsImageFetcherClient@@AAEXABVQVariant@@@Z @ 236 NONAME ; void HsImageFetcherClient::handleOk(class QVariant const &)
-	??0HsMenuEventTransition@@QAE@W4OperationType@HsMenuEvent@@PAVQState@@1@Z @ 237 NONAME ; HsMenuEventTransition::HsMenuEventTransition(enum HsMenuEvent::OperationType, class QState *, class QState *)
-	?fetchFailed@XQAIWGetImageClient@@IAEXHABVQString@@@Z @ 238 NONAME ; void XQAIWGetImageClient::fetchFailed(int, class QString const &)
-	??0HsTitleResolver@@QAE@PAVQObject@@@Z @ 239 NONAME ; HsTitleResolver::HsTitleResolver(class QObject *)
-	?setConfiguration@HsSnapLine@@QAEXABV?$QHash@VQString@@VQVariant@@@@@Z @ 240 NONAME ; void HsSnapLine::setConfiguration(class QHash<class QString, class QVariant> const &)
-	??_EHsPageIndicator@@UAE@I@Z @ 241 NONAME ; HsPageIndicator::~HsPageIndicator(unsigned int)
-	?stopFadeOutAnimation@HsSnapLine@@AAEXXZ @ 242 NONAME ; void HsSnapLine::stopFadeOutAnimation(void)
-	??_EHsWidgetPositioningOnOrientationChange@@UAE@I@Z @ 243 NONAME ; HsWidgetPositioningOnOrientationChange::~HsWidgetPositioningOnOrientationChange(unsigned int)
-	?setUpActions@HsMenuDialogFactory@@ABEXPAVHbMessageBox@@ABVQStringList@@@Z @ 244 NONAME ; void HsMenuDialogFactory::setUpActions(class HbMessageBox *, class QStringList const &) const
-	?compareRightSideOfMovingRectForSnapping@HsSnapToLines@@AAEXXZ @ 245 NONAME ; void HsSnapToLines::compareRightSideOfMovingRectForSnapping(void)
-	?isRunning@HsPropertyAnimationWrapper@@QAE_NXZ @ 246 NONAME ; bool HsPropertyAnimationWrapper::isRunning(void)
-	?mInstance@HsWidgetPositioningOnWidgetMove@@0PAV1@A @ 247 NONAME ; class HsWidgetPositioningOnWidgetMove * HsWidgetPositioningOnWidgetMove::mInstance
-	?tr@XQAIWGetImageClient@@SA?AVQString@@PBD0@Z @ 248 NONAME ; class QString XQAIWGetImageClient::tr(char const *, char const *)
-	?getAnchorCoordinates@HsWidgetOrganizer@@AAE?AVQPointF@@H@Z @ 249 NONAME ; class QPointF HsWidgetOrganizer::getAnchorCoordinates(int)
-	?finished@HsPropertyAnimationWrapper@@IAEXXZ @ 250 NONAME ; void HsPropertyAnimationWrapper::finished(void)
-	?addItem@HsPageIndicator@@QAEXH@Z @ 251 NONAME ; void HsPageIndicator::addItem(int)
-	??0HsPageIndicator@@QAE@MPAVQGraphicsItem@@@Z @ 252 NONAME ; HsPageIndicator::HsPageIndicator(float, class QGraphicsItem *)
-	?rejected@HsMessageBoxWrapper@@IAEXXZ @ 253 NONAME ; void HsMessageBoxWrapper::rejected(void)
-	?tr@XQAIWGetImageClient@@SA?AVQString@@PBD0H@Z @ 254 NONAME ; class QString XQAIWGetImageClient::tr(char const *, char const *, int)
-	?trUtf8@HsPropertyAnimationWrapper@@SA?AVQString@@PBD0H@Z @ 255 NONAME ; class QString HsPropertyAnimationWrapper::trUtf8(char const *, char const *, int)
-	?qt_metacall@HsSpinnerDialog@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 256 NONAME ; int HsSpinnerDialog::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?mInstance@HsWidgetPositioningOnWidgetAdd@@0PAV1@A @ 257 NONAME ; class HsWidgetPositioningOnWidgetAdd * HsWidgetPositioningOnWidgetAdd::mInstance
-	??1HsMessageBoxWrapper@@UAE@XZ @ 258 NONAME ; HsMessageBoxWrapper::~HsMessageBoxWrapper(void)
-	?setInstance@HsWidgetPositioningOnWidgetAdd@@SAXPAV1@@Z @ 259 NONAME ; void HsWidgetPositioningOnWidgetAdd::setInstance(class HsWidgetPositioningOnWidgetAdd *)
-	?qt_metacast@HsTitleResolver@@UAEPAXPBD@Z @ 260 NONAME ; void * HsTitleResolver::qt_metacast(char const *)
-	??_EHsWidgetPositioningOnWidgetMove@@UAE@I@Z @ 261 NONAME ; HsWidgetPositioningOnWidgetMove::~HsWidgetPositioningOnWidgetMove(unsigned int)
-	?extendHorizontalLine@HsSnapToLines@@AAEXXZ @ 262 NONAME ; void HsSnapToLines::extendHorizontalLine(void)
-	?qt_metacall@HsTrashBinWidget@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 263 NONAME ; int HsTrashBinWidget::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?searchWidthSpace@HsWidgetOrganizer@@AAE_NABVQSizeF@@@Z @ 264 NONAME ; bool HsWidgetOrganizer::searchWidthSpace(class QSizeF const &)
-	??1HsImageGridWidget@@UAE@XZ @ 265 NONAME ; HsImageGridWidget::~HsImageGridWidget(void)
-	??_EHsAnchorPointInCenter@@UAE@I@Z @ 266 NONAME ; HsAnchorPointInCenter::~HsAnchorPointInCenter(unsigned int)
-	?getStaticMetaObject@HsSpinnerDialog@@SAABUQMetaObject@@XZ @ 267 NONAME ; struct QMetaObject const & HsSpinnerDialog::getStaticMetaObject(void)
-	?staticMetaObject@HsTitleResolver@@2UQMetaObject@@B @ 268 NONAME ; struct QMetaObject const HsTitleResolver::staticMetaObject
-	?checkInactiveRectHorizontalEdgesInRange@HsSnapToLines@@AAEXM@Z @ 269 NONAME ; void HsSnapToLines::checkInactiveRectHorizontalEdgesInRange(float)
-	??0HsPropertyAnimationWrapper@@QAE@PAVQObject@@@Z @ 270 NONAME ; HsPropertyAnimationWrapper::HsPropertyAnimationWrapper(class QObject *)
-	?createHorizontalLine@HsSnapToLines@@AAEXXZ @ 271 NONAME ; void HsSnapToLines::createHorizontalLine(void)
-	?tr@HsSnapLine@@SA?AVQString@@PBD0H@Z @ 272 NONAME ; class QString HsSnapLine::tr(char const *, char const *, int)
-	?qt_metacall@HsImageFetcherClient@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 273 NONAME ; int HsImageFetcherClient::qt_metacall(enum QMetaObject::Call, int, void * *)
-	??_EHsSpinnerDialog@@UAE@I@Z @ 274 NONAME ; HsSpinnerDialog::~HsSpinnerDialog(unsigned int)
-	??0HsImageGridWidget@@QAE@ABVQStringList@@PAVQGraphicsItem@@@Z @ 275 NONAME ; HsImageGridWidget::HsImageGridWidget(class QStringList const &, class QGraphicsItem *)
-	?tr@HsImageGridWidget@@SA?AVQString@@PBD0H@Z @ 276 NONAME ; class QString HsImageGridWidget::tr(char const *, char const *, int)
+	?start@HsSpinnerDialog@@QAEXXZ @ 158 NONAME ; void HsSpinnerDialog::start(void)
+	?isFadeOutAnimationRunning@HsSnapLine@@ABE_NXZ @ 159 NONAME ; bool HsSnapLine::isFadeOutAnimationRunning(void) const
+	?trUtf8@HsPropertyAnimationWrapper@@SA?AVQString@@PBD0@Z @ 160 NONAME ; class QString HsPropertyAnimationWrapper::trUtf8(char const *, char const *)
+	?createSnappableRectangles@HsSnapToLines@@AAEXABV?$QList@VQRectF@@@@@Z @ 161 NONAME ; void HsSnapToLines::createSnappableRectangles(class QList<class QRectF> const &)
+	?staticMetaObject@HsImageGridWidget@@2UQMetaObject@@B @ 162 NONAME ; struct QMetaObject const HsImageGridWidget::staticMetaObject
+	??_EHsTitleResolver@@UAE@I@Z @ 163 NONAME ; HsTitleResolver::~HsTitleResolver(unsigned int)
+	?setForward@HsPropertyAnimationWrapper@@QAEXXZ @ 164 NONAME ; void HsPropertyAnimationWrapper::setForward(void)
+	??1HsSnapToLines@@UAE@XZ @ 165 NONAME ; HsSnapToLines::~HsSnapToLines(void)
+	?staticMetaObject@HsTrashBinWidget@@2UQMetaObject@@B @ 166 NONAME ; struct QMetaObject const HsTrashBinWidget::staticMetaObject
+	?title@HsTitleResolver@@QAE?AVQString@@XZ @ 167 NONAME ; class QString HsTitleResolver::title(void)
+	?handleEditorError@HsImageHandlingClient@@AAEXHABVQString@@@Z @ 168 NONAME ; void HsImageHandlingClient::handleEditorError(int, class QString const &)
+	??_EHsMenuEventTransition@@UAE@I@Z @ 169 NONAME ; HsMenuEventTransition::~HsMenuEventTransition(unsigned int)
+	?tr@HsSnapLine@@SA?AVQString@@PBD0@Z @ 170 NONAME ; class QString HsSnapLine::tr(char const *, char const *)
+	?setPagePresentation@HsSnapToLines@@UAEXABVQRectF@@ABV?$QList@VQRectF@@@@0@Z @ 171 NONAME ; void HsSnapToLines::setPagePresentation(class QRectF const &, class QList<class QRectF> const &, class QRectF const &)
+	?trUtf8@HsTrashBinWidget@@SA?AVQString@@PBD0H@Z @ 172 NONAME ; class QString HsTrashBinWidget::trUtf8(char const *, char const *, int)
+	??_EHsMenuEvent@@UAE@I@Z @ 173 NONAME ; HsMenuEvent::~HsMenuEvent(unsigned int)
+	??1HsTrashBinWidget@@UAE@XZ @ 174 NONAME ; HsTrashBinWidget::~HsTrashBinWidget(void)
+	?compareTopOfMovingRectForSnapping@HsSnapToLines@@AAEXXZ @ 175 NONAME ; void HsSnapToLines::compareTopOfMovingRectForSnapping(void)
+	??_EHsSnapToLines@@UAE@I@Z @ 176 NONAME ; HsSnapToLines::~HsSnapToLines(unsigned int)
+	??1HsImageHandlingClient@@UAE@XZ @ 177 NONAME ; HsImageHandlingClient::~HsImageHandlingClient(void)
+	?itemCount@HsPageIndicator@@QBEHXZ @ 178 NONAME ; int HsPageIndicator::itemCount(void) const
+	?checkInactiveRectLieLeftOrRightOfMovingRect@HsSnapToLines@@AAEXXZ @ 179 NONAME ; void HsSnapToLines::checkInactiveRectLieLeftOrRightOfMovingRect(void)
+	?createAddAppsFromApplicationsViewEvent@HsMenuEventFactory@@SAPAVQEvent@@W4HsSortAttribute@Hs@@H@Z @ 180 NONAME ; class QEvent * HsMenuEventFactory::createAddAppsFromApplicationsViewEvent(enum Hs::HsSortAttribute, int)
+	??1HsWidgetPositioningOnOrientationChange@@UAE@XZ @ 181 NONAME ; HsWidgetPositioningOnOrientationChange::~HsWidgetPositioningOnOrientationChange(void)
+	?metaObject@HsImageGridWidget@@UBEPBUQMetaObject@@XZ @ 182 NONAME ; struct QMetaObject const * HsImageGridWidget::metaObject(void) const
+	?checkInactiveRectVerticalEdgesInRange@HsSnapToLines@@AAEXM@Z @ 183 NONAME ; void HsSnapToLines::checkInactiveRectVerticalEdgesInRange(float)
+	?imageSelectionCancelled@XQAIWGetImageClient@@AAEXXZ @ 184 NONAME ; void XQAIWGetImageClient::imageSelectionCancelled(void)
+	?gridItemActivated@HsImageGridWidget@@AAEXABVQModelIndex@@@Z @ 185 NONAME ; void HsImageGridWidget::gridItemActivated(class QModelIndex const &)
+	?createRemoveAppFromCollectionEvent@HsMenuEventFactory@@SAPAVQEvent@@HH@Z @ 186 NONAME ; class QEvent * HsMenuEventFactory::createRemoveAppFromCollectionEvent(int, int)
+	?fetchCompleted@HsImageHandlingClient@@IAEXABVQString@@@Z @ 187 NONAME ; void HsImageHandlingClient::fetchCompleted(class QString const &)
+	??1HsWidgetPositioningOnWidgetMove@@UAE@XZ @ 188 NONAME ; HsWidgetPositioningOnWidgetMove::~HsWidgetPositioningOnWidgetMove(void)
+	?handleEditorOk@HsImageHandlingClient@@AAEXABVQVariant@@@Z @ 189 NONAME ; void HsImageHandlingClient::handleEditorOk(class QVariant const &)
+	??0HsSpinnerDialog@@QAE@PAVQGraphicsItem@@@Z @ 190 NONAME ; HsSpinnerDialog::HsSpinnerDialog(class QGraphicsItem *)
+	?trUtf8@HsPageIndicator@@SA?AVQString@@PBD0H@Z @ 191 NONAME ; class QString HsPageIndicator::trUtf8(char const *, char const *, int)
+	?createOpenCollectionEvent@HsMenuEventFactory@@SAPAVQEvent@@HABVQString@@@Z @ 192 NONAME ; class QEvent * HsMenuEventFactory::createOpenCollectionEvent(int, class QString const &)
+	?initialize@HsPageIndicator@@QAEXHH@Z @ 193 NONAME ; void HsPageIndicator::initialize(int, int)
+	??1HsPageIndicator@@UAE@XZ @ 194 NONAME ; HsPageIndicator::~HsPageIndicator(void)
+	?instance@HsWidgetPositioningOnOrientationChange@@SAPAV1@XZ @ 195 NONAME ; class HsWidgetPositioningOnOrientationChange * HsWidgetPositioningOnOrientationChange::instance(void)
+	?createAddToHomeScreenEvent@HsMenuEventFactory@@SAPAVQEvent@@HW4HsMenuMode@Hs@@VQVariant@@@Z @ 196 NONAME ; class QEvent * HsMenuEventFactory::createAddToHomeScreenEvent(int, enum Hs::HsMenuMode, class QVariant)
+	?createBackFromInstalledViewEvent@HsMenuEventFactory@@SAPAVQEvent@@HVQString@@@Z @ 197 NONAME ; class QEvent * HsMenuEventFactory::createBackFromInstalledViewEvent(int, class QString)
+	?getFadeInDuration@HsSnapLine@@AAEHXZ @ 198 NONAME ; int HsSnapLine::getFadeInDuration(void)
+	?fetchCompleted@XQAIWGetImageClient@@IAEXABVQString@@@Z @ 199 NONAME ; void XQAIWGetImageClient::fetchCompleted(class QString const &)
+	?requestCompleted@XQAIWGetImageClient@@AAEXABVQVariant@@@Z @ 200 NONAME ; void XQAIWGetImageClient::requestCompleted(class QVariant const &)
+	?accepted@HsMessageBoxWrapper@@IAEXXZ @ 201 NONAME ; void HsMessageBoxWrapper::accepted(void)
+	?getStaticMetaObject@HsMessageBoxWrapper@@SAABUQMetaObject@@XZ @ 202 NONAME ; struct QMetaObject const & HsMessageBoxWrapper::getStaticMetaObject(void)
+	?qt_metacast@XQAIWGetImageClient@@UAEPAXPBD@Z @ 203 NONAME ; void * XQAIWGetImageClient::qt_metacast(char const *)
+	??_EHsImageGridWidget@@UAE@I@Z @ 204 NONAME ; HsImageGridWidget::~HsImageGridWidget(unsigned int)
+	?hideLine@HsSnapLine@@QAEXXZ @ 205 NONAME ; void HsSnapLine::hideLine(void)
+	?metaObject@HsPageIndicator@@UBEPBUQMetaObject@@XZ @ 206 NONAME ; struct QMetaObject const * HsPageIndicator::metaObject(void) const
+	?imageSelected@XQAIWGetImageClient@@AAEXABVQString@@@Z @ 207 NONAME ; void XQAIWGetImageClient::imageSelected(class QString const &)
+	?setActiveItemIndex@HsPageIndicator@@QAEXH@Z @ 208 NONAME ; void HsPageIndicator::setActiveItemIndex(int)
+	?trUtf8@HsImageGridWidget@@SA?AVQString@@PBD0H@Z @ 209 NONAME ; class QString HsImageGridWidget::trUtf8(char const *, char const *, int)
+	??0HsSnapLine@@QAE@PAVQGraphicsItem@@@Z @ 210 NONAME ; HsSnapLine::HsSnapLine(class QGraphicsItem *)
+	?getStaticMetaObject@HsImageHandlingClient@@SAABUQMetaObject@@XZ @ 211 NONAME ; struct QMetaObject const & HsImageHandlingClient::getStaticMetaObject(void)
+	?startFadeOutAnimation@HsSnapLine@@AAEXXZ @ 212 NONAME ; void HsSnapLine::startFadeOutAnimation(void)
+	?editorFailed@HsImageHandlingClient@@IAEXHABVQString@@@Z @ 213 NONAME ; void HsImageHandlingClient::editorFailed(int, class QString const &)
+	?editorCompleted@HsImageHandlingClient@@IAEXXZ @ 214 NONAME ; void HsImageHandlingClient::editorCompleted(void)
+	?imageSelected@HsImageGridWidget@@IAEXABVQString@@@Z @ 215 NONAME ; void HsImageGridWidget::imageSelected(class QString const &)
+	?getStaticMetaObject@HsTitleResolver@@SAABUQMetaObject@@XZ @ 216 NONAME ; struct QMetaObject const & HsTitleResolver::getStaticMetaObject(void)
+	?trUtf8@XQAIWGetImageClient@@SA?AVQString@@PBD0@Z @ 217 NONAME ; class QString XQAIWGetImageClient::trUtf8(char const *, char const *)
+	?stopFadeInAnimation@HsSnapLine@@AAEXXZ @ 218 NONAME ; void HsSnapLine::stopFadeInAnimation(void)
+	?create@HsMenuDialogFactory@@UBEPAVHbMessageBox@@ABVQString@@W4Options@1@@Z @ 219 NONAME ; class HbMessageBox * HsMenuDialogFactory::create(class QString const &, enum HsMenuDialogFactory::Options) const
+	?createArrangeCollectionEvent@HsMenuEventFactory@@SAPAVQEvent@@HH@Z @ 220 NONAME ; class QEvent * HsMenuEventFactory::createArrangeCollectionEvent(int, int)
+	?deactivate@HsTrashBinWidget@@QAEXXZ @ 221 NONAME ; void HsTrashBinWidget::deactivate(void)
+	?qt_metacast@HsImageGridWidget@@UAEPAXPBD@Z @ 222 NONAME ; void * HsImageGridWidget::qt_metacast(char const *)
+	?isForward@HsPropertyAnimationWrapper@@QBE_NXZ @ 223 NONAME ; bool HsPropertyAnimationWrapper::isForward(void) const
+	?tr@HsPageIndicator@@SA?AVQString@@PBD0H@Z @ 224 NONAME ; class QString HsPageIndicator::tr(char const *, char const *, int)
+	?tr@HsImageHandlingClient@@SA?AVQString@@PBD0@Z @ 225 NONAME ; class QString HsImageHandlingClient::tr(char const *, char const *)
+	?eventTest@HsMenuEventTransition@@MAE_NPAVQEvent@@@Z @ 226 NONAME ; bool HsMenuEventTransition::eventTest(class QEvent *)
+	?qt_metacall@HsImageGridWidget@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 227 NONAME ; int HsImageGridWidget::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?showLine@HsSnapLine@@QAEXABVQLineF@@@Z @ 228 NONAME ; void HsSnapLine::showLine(class QLineF const &)
+	?tr@HsMessageBoxWrapper@@SA?AVQString@@PBD0H@Z @ 229 NONAME ; class QString HsMessageBoxWrapper::tr(char const *, char const *, int)
+	?qt_metacall@XQAIWGetImageClient@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 230 NONAME ; int XQAIWGetImageClient::qt_metacall(enum QMetaObject::Call, int, void * *)
+	??0XQAIWGetImageClient@@QAE@XZ @ 231 NONAME ; XQAIWGetImageClient::XQAIWGetImageClient(void)
+	??0HsMenuEventTransition@@QAE@W4OperationType@HsMenuEvent@@PAVQState@@1@Z @ 232 NONAME ; HsMenuEventTransition::HsMenuEventTransition(enum HsMenuEvent::OperationType, class QState *, class QState *)
+	?fetchFailed@XQAIWGetImageClient@@IAEXHABVQString@@@Z @ 233 NONAME ; void XQAIWGetImageClient::fetchFailed(int, class QString const &)
+	??0HsTitleResolver@@QAE@PAVQObject@@@Z @ 234 NONAME ; HsTitleResolver::HsTitleResolver(class QObject *)
+	?setConfiguration@HsSnapLine@@QAEXABV?$QHash@VQString@@VQVariant@@@@@Z @ 235 NONAME ; void HsSnapLine::setConfiguration(class QHash<class QString, class QVariant> const &)
+	??_EHsPageIndicator@@UAE@I@Z @ 236 NONAME ; HsPageIndicator::~HsPageIndicator(unsigned int)
+	?stopFadeOutAnimation@HsSnapLine@@AAEXXZ @ 237 NONAME ; void HsSnapLine::stopFadeOutAnimation(void)
+	??_EHsWidgetPositioningOnOrientationChange@@UAE@I@Z @ 238 NONAME ; HsWidgetPositioningOnOrientationChange::~HsWidgetPositioningOnOrientationChange(unsigned int)
+	?setUpActions@HsMenuDialogFactory@@ABEXPAVHbMessageBox@@ABVQStringList@@@Z @ 239 NONAME ; void HsMenuDialogFactory::setUpActions(class HbMessageBox *, class QStringList const &) const
+	?compareRightSideOfMovingRectForSnapping@HsSnapToLines@@AAEXXZ @ 240 NONAME ; void HsSnapToLines::compareRightSideOfMovingRectForSnapping(void)
+	?isRunning@HsPropertyAnimationWrapper@@QAE_NXZ @ 241 NONAME ; bool HsPropertyAnimationWrapper::isRunning(void)
+	?mInstance@HsWidgetPositioningOnWidgetMove@@0PAV1@A @ 242 NONAME ; class HsWidgetPositioningOnWidgetMove * HsWidgetPositioningOnWidgetMove::mInstance
+	?tr@XQAIWGetImageClient@@SA?AVQString@@PBD0@Z @ 243 NONAME ; class QString XQAIWGetImageClient::tr(char const *, char const *)
+	?finished@HsPropertyAnimationWrapper@@IAEXXZ @ 244 NONAME ; void HsPropertyAnimationWrapper::finished(void)
+	?addItem@HsPageIndicator@@QAEXH@Z @ 245 NONAME ; void HsPageIndicator::addItem(int)
+	??0HsPageIndicator@@QAE@MPAVQGraphicsItem@@@Z @ 246 NONAME ; HsPageIndicator::HsPageIndicator(float, class QGraphicsItem *)
+	?rejected@HsMessageBoxWrapper@@IAEXXZ @ 247 NONAME ; void HsMessageBoxWrapper::rejected(void)
+	?tr@XQAIWGetImageClient@@SA?AVQString@@PBD0H@Z @ 248 NONAME ; class QString XQAIWGetImageClient::tr(char const *, char const *, int)
+	?trUtf8@HsPropertyAnimationWrapper@@SA?AVQString@@PBD0H@Z @ 249 NONAME ; class QString HsPropertyAnimationWrapper::trUtf8(char const *, char const *, int)
+	?qt_metacall@HsSpinnerDialog@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 250 NONAME ; int HsSpinnerDialog::qt_metacall(enum QMetaObject::Call, int, void * *)
+	??1HsMessageBoxWrapper@@UAE@XZ @ 251 NONAME ; HsMessageBoxWrapper::~HsMessageBoxWrapper(void)
+	?qt_metacast@HsTitleResolver@@UAEPAXPBD@Z @ 252 NONAME ; void * HsTitleResolver::qt_metacast(char const *)
+	??_EHsWidgetPositioningOnWidgetMove@@UAE@I@Z @ 253 NONAME ; HsWidgetPositioningOnWidgetMove::~HsWidgetPositioningOnWidgetMove(unsigned int)
+	?extendHorizontalLine@HsSnapToLines@@AAEXXZ @ 254 NONAME ; void HsSnapToLines::extendHorizontalLine(void)
+	?qt_metacall@HsTrashBinWidget@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 255 NONAME ; int HsTrashBinWidget::qt_metacall(enum QMetaObject::Call, int, void * *)
+	??1HsImageGridWidget@@UAE@XZ @ 256 NONAME ; HsImageGridWidget::~HsImageGridWidget(void)
+	?qt_metacast@HsImageHandlingClient@@UAEPAXPBD@Z @ 257 NONAME ; void * HsImageHandlingClient::qt_metacast(char const *)
+	?getStaticMetaObject@HsSpinnerDialog@@SAABUQMetaObject@@XZ @ 258 NONAME ; struct QMetaObject const & HsSpinnerDialog::getStaticMetaObject(void)
+	?staticMetaObject@HsTitleResolver@@2UQMetaObject@@B @ 259 NONAME ; struct QMetaObject const HsTitleResolver::staticMetaObject
+	?checkInactiveRectHorizontalEdgesInRange@HsSnapToLines@@AAEXM@Z @ 260 NONAME ; void HsSnapToLines::checkInactiveRectHorizontalEdgesInRange(float)
+	??0HsPropertyAnimationWrapper@@QAE@PAVQObject@@@Z @ 261 NONAME ; HsPropertyAnimationWrapper::HsPropertyAnimationWrapper(class QObject *)
+	?createHorizontalLine@HsSnapToLines@@AAEXXZ @ 262 NONAME ; void HsSnapToLines::createHorizontalLine(void)
+	?tr@HsSnapLine@@SA?AVQString@@PBD0H@Z @ 263 NONAME ; class QString HsSnapLine::tr(char const *, char const *, int)
+	??_EHsSpinnerDialog@@UAE@I@Z @ 264 NONAME ; HsSpinnerDialog::~HsSpinnerDialog(unsigned int)
+	??0HsImageGridWidget@@QAE@ABVQStringList@@PAVQGraphicsItem@@@Z @ 265 NONAME ; HsImageGridWidget::HsImageGridWidget(class QStringList const &, class QGraphicsItem *)
+	?tr@HsImageGridWidget@@SA?AVQString@@PBD0H@Z @ 266 NONAME ; class QString HsImageGridWidget::tr(char const *, char const *, int)
 
--- a/homescreenapp/hsutils/eabi/hsutilsu.def	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/hsutils/eabi/hsutilsu.def	Mon Oct 04 00:07:25 2010 +0300
@@ -108,196 +108,183 @@
 	_ZN17HsImageGridWidgetD0Ev @ 107 NONAME
 	_ZN17HsImageGridWidgetD1Ev @ 108 NONAME
 	_ZN17HsImageGridWidgetD2Ev @ 109 NONAME
-	_ZN17HsWidgetOrganizer11initAnchorsERK6QSizeF @ 110 NONAME
-	_ZN17HsWidgetOrganizer14getAnchorPointERK6QSizeF @ 111 NONAME
-	_ZN17HsWidgetOrganizer16searchWidthSpaceERK6QSizeF @ 112 NONAME
-	_ZN17HsWidgetOrganizer17searchHeightSpaceEi @ 113 NONAME
-	_ZN17HsWidgetOrganizer19markReservedAnchorsEv @ 114 NONAME
-	_ZN17HsWidgetOrganizer20getAnchorCoordinatesEi @ 115 NONAME
-	_ZN17HsWidgetOrganizer20lenghtInAnchorPointsE8QVariant @ 116 NONAME
-	_ZN17HsWidgetOrganizer21getIndexForCoordinateE7QPointF @ 117 NONAME
-	_ZN17HsWidgetOrganizer7convertERK6QRectFRK5QListIS0_ES6_RK7QPointF @ 118 NONAME
-	_ZN18HsMenuEventFactory18createUnknownEventEv @ 119 NONAME
-	_ZN18HsMenuEventFactory24createNewCollectionEventEv @ 120 NONAME
-	_ZN18HsMenuEventFactory25createAppDetailsViewEventEi @ 121 NONAME
-	_ZN18HsMenuEventFactory25createOpenAppLibraryEventEN2Hs10HsMenuModeE8QVariant @ 122 NONAME
-	_ZN18HsMenuEventFactory25createOpenCollectionEventEiRK7QString @ 123 NONAME
-	_ZN18HsMenuEventFactory25createOpenHomeScreenEventEv @ 124 NONAME
-	_ZN18HsMenuEventFactory26createAddToHomeScreenEventEiN2Hs10HsMenuModeE8QVariant @ 125 NONAME
-	_ZN18HsMenuEventFactory26createAppSettingsViewEventEi @ 126 NONAME
-	_ZN18HsMenuEventFactory26createInstallationLogEventEv @ 127 NONAME
-	_ZN18HsMenuEventFactory26createPreviewHSWidgetEventEiRK7QStringS2_S2_ @ 128 NONAME
-	_ZN18HsMenuEventFactory26createUninstallFailedEventEi @ 129 NONAME
-	_ZN18HsMenuEventFactory27createDeleteCollectionEventEi @ 130 NONAME
-	_ZN18HsMenuEventFactory27createRenameCollectionEventEi @ 131 NONAME
-	_ZN18HsMenuEventFactory28createArrangeCollectionEventEii @ 132 NONAME
-	_ZN18HsMenuEventFactory28createCollectionDeletedEventEv @ 133 NONAME
-	_ZN18HsMenuEventFactory28createOpenInstalledViewEventEv @ 134 NONAME
-	_ZN18HsMenuEventFactory31createUninstallApplicationEventEi @ 135 NONAME
-	_ZN18HsMenuEventFactory32createArrangeAllCollectionsEventEi @ 136 NONAME
-	_ZN18HsMenuEventFactory34createRemoveAppFromCollectionEventEii @ 137 NONAME
-	_ZN18HsMenuEventFactory36createAddAppsFromCollectionViewEventEii @ 138 NONAME
-	_ZN18HsMenuEventFactory38createAddAppsFromApplicationsViewEventEN2Hs15HsSortAttributeEi @ 139 NONAME
-	_ZN18HsMenuEventFactory39createOpenCollectionFromAppLibraryEventEiRK7QString @ 140 NONAME
-	_ZN19HsMenuDialogFactoryD0Ev @ 141 NONAME
-	_ZN19HsMenuDialogFactoryD1Ev @ 142 NONAME
-	_ZN19HsMenuDialogFactoryD2Ev @ 143 NONAME
-	_ZN19HsMessageBoxWrapper11qt_metacallEN11QMetaObject4CallEiPPv @ 144 NONAME
-	_ZN19HsMessageBoxWrapper11qt_metacastEPKc @ 145 NONAME
-	_ZN19HsMessageBoxWrapper12setQueryTextERK7QString @ 146 NONAME
-	_ZN19HsMessageBoxWrapper14onDialogClosedEi @ 147 NONAME
-	_ZN19HsMessageBoxWrapper16staticMetaObjectE @ 148 NONAME DATA 16
-	_ZN19HsMessageBoxWrapper19getStaticMetaObjectEv @ 149 NONAME
-	_ZN19HsMessageBoxWrapper4showEv @ 150 NONAME
-	_ZN19HsMessageBoxWrapper5closeEv @ 151 NONAME
-	_ZN19HsMessageBoxWrapper8acceptedEv @ 152 NONAME
-	_ZN19HsMessageBoxWrapper8rejectedEv @ 153 NONAME
-	_ZN19HsMessageBoxWrapper9setHeaderERK7QString @ 154 NONAME
-	_ZN19HsMessageBoxWrapperC1EP7QObject @ 155 NONAME
-	_ZN19HsMessageBoxWrapperC2EP7QObject @ 156 NONAME
-	_ZN19HsMessageBoxWrapperD0Ev @ 157 NONAME
-	_ZN19HsMessageBoxWrapperD1Ev @ 158 NONAME
-	_ZN19HsMessageBoxWrapperD2Ev @ 159 NONAME
-	_ZN19XQAIWGetImageClient10findImagesERK7QStringRK11QStringListRS3_ @ 160 NONAME
-	_ZN19XQAIWGetImageClient11fetchFailedEiRK7QString @ 161 NONAME
-	_ZN19XQAIWGetImageClient11qt_metacallEN11QMetaObject4CallEiPPv @ 162 NONAME
-	_ZN19XQAIWGetImageClient11qt_metacastEPKc @ 163 NONAME
-	_ZN19XQAIWGetImageClient13imageSelectedERK7QString @ 164 NONAME
-	_ZN19XQAIWGetImageClient14fetchCompletedERK7QString @ 165 NONAME
-	_ZN19XQAIWGetImageClient16requestCompletedERK8QVariant @ 166 NONAME
-	_ZN19XQAIWGetImageClient16staticMetaObjectE @ 167 NONAME DATA 16
-	_ZN19XQAIWGetImageClient19getStaticMetaObjectEv @ 168 NONAME
-	_ZN19XQAIWGetImageClient23imageSelectionCancelledEv @ 169 NONAME
-	_ZN19XQAIWGetImageClient5fetchEv @ 170 NONAME
-	_ZN19XQAIWGetImageClientC1Ev @ 171 NONAME
-	_ZN19XQAIWGetImageClientC2Ev @ 172 NONAME
-	_ZN19XQAIWGetImageClientD0Ev @ 173 NONAME
-	_ZN19XQAIWGetImageClientD1Ev @ 174 NONAME
-	_ZN19XQAIWGetImageClientD2Ev @ 175 NONAME
-	_ZN20HsImageFetcherClient11fetchFailedEiRK7QString @ 176 NONAME
-	_ZN20HsImageFetcherClient11handleErrorEiRK7QString @ 177 NONAME
-	_ZN20HsImageFetcherClient11qt_metacallEN11QMetaObject4CallEiPPv @ 178 NONAME
-	_ZN20HsImageFetcherClient11qt_metacastEPKc @ 179 NONAME
-	_ZN20HsImageFetcherClient14fetchCompletedERK7QString @ 180 NONAME
-	_ZN20HsImageFetcherClient16staticMetaObjectE @ 181 NONAME DATA 16
-	_ZN20HsImageFetcherClient19getStaticMetaObjectEv @ 182 NONAME
-	_ZN20HsImageFetcherClient5fetchEv @ 183 NONAME
-	_ZN20HsImageFetcherClient8handleOkERK8QVariant @ 184 NONAME
-	_ZN20HsImageFetcherClientC1EP7QObject @ 185 NONAME
-	_ZN20HsImageFetcherClientC2EP7QObject @ 186 NONAME
-	_ZN20HsImageFetcherClientD0Ev @ 187 NONAME
-	_ZN20HsImageFetcherClientD1Ev @ 188 NONAME
-	_ZN20HsImageFetcherClientD2Ev @ 189 NONAME
-	_ZN21HsAnchorPointInCenter7convertERK6QRectFRK5QListIS0_ES6_RK7QPointF @ 190 NONAME
-	_ZN21HsMenuEventTransition9eventTestEP6QEvent @ 191 NONAME
-	_ZN21HsMenuEventTransitionC1EN11HsMenuEvent13OperationTypeEP6QStateS3_ @ 192 NONAME
-	_ZN21HsMenuEventTransitionC2EN11HsMenuEvent13OperationTypeEP6QStateS3_ @ 193 NONAME
-	_ZN26HsAnchorPointInBottomRight7convertERK6QRectFRK5QListIS0_ES6_RK7QPointF @ 194 NONAME
-	_ZN26HsPropertyAnimationWrapper10setForwardEv @ 195 NONAME
-	_ZN26HsPropertyAnimationWrapper11qt_metacallEN11QMetaObject4CallEiPPv @ 196 NONAME
-	_ZN26HsPropertyAnimationWrapper11qt_metacastEPKc @ 197 NONAME
-	_ZN26HsPropertyAnimationWrapper11setBackwardEv @ 198 NONAME
-	_ZN26HsPropertyAnimationWrapper11setDurationEi @ 199 NONAME
-	_ZN26HsPropertyAnimationWrapper11setEndValueERK8QVariant @ 200 NONAME
-	_ZN26HsPropertyAnimationWrapper14setEasingCurveERK12QEasingCurve @ 201 NONAME
-	_ZN26HsPropertyAnimationWrapper15setPropertyNameERK10QByteArray @ 202 NONAME
-	_ZN26HsPropertyAnimationWrapper15setTargetObjectEP7QObject @ 203 NONAME
-	_ZN26HsPropertyAnimationWrapper16staticMetaObjectE @ 204 NONAME DATA 16
-	_ZN26HsPropertyAnimationWrapper19getStaticMetaObjectEv @ 205 NONAME
-	_ZN26HsPropertyAnimationWrapper4stopEv @ 206 NONAME
-	_ZN26HsPropertyAnimationWrapper5startEv @ 207 NONAME
-	_ZN26HsPropertyAnimationWrapper8finishedEv @ 208 NONAME
-	_ZN26HsPropertyAnimationWrapper9isRunningEv @ 209 NONAME
-	_ZN26HsPropertyAnimationWrapperC1EP7QObject @ 210 NONAME
-	_ZN26HsPropertyAnimationWrapperC2EP7QObject @ 211 NONAME
-	_ZN26HsPropertyAnimationWrapperD0Ev @ 212 NONAME
-	_ZN26HsPropertyAnimationWrapperD1Ev @ 213 NONAME
-	_ZN26HsPropertyAnimationWrapperD2Ev @ 214 NONAME
-	_ZN30HsWidgetPositioningOnWidgetAdd11setInstanceEPS_ @ 215 NONAME
-	_ZN30HsWidgetPositioningOnWidgetAdd8instanceEv @ 216 NONAME
-	_ZN30HsWidgetPositioningOnWidgetAdd9mInstanceE @ 217 NONAME DATA 4
-	_ZN31HsWidgetPositioningOnWidgetMove11setInstanceEPS_ @ 218 NONAME
-	_ZN31HsWidgetPositioningOnWidgetMove8instanceEv @ 219 NONAME
-	_ZN31HsWidgetPositioningOnWidgetMove9mInstanceE @ 220 NONAME DATA 4
-	_ZN38HsWidgetPositioningOnOrientationChange11setInstanceEPS_ @ 221 NONAME
-	_ZN38HsWidgetPositioningOnOrientationChange8instanceEv @ 222 NONAME
-	_ZN38HsWidgetPositioningOnOrientationChange9mInstanceE @ 223 NONAME DATA 4
-	_ZN46HsAdvancedWidgetPositioningOnOrientationChange7convertERK6QRectFRK5QListIS0_ES2_ @ 224 NONAME
-	_ZNK10HsSnapLine10metaObjectEv @ 225 NONAME
-	_ZNK10HsSnapLine24isFadeInAnimationRunningEv @ 226 NONAME
-	_ZNK10HsSnapLine25isFadeOutAnimationRunningEv @ 227 NONAME
-	_ZNK11HsMenuEvent4dataEv @ 228 NONAME
-	_ZNK11HsMenuEvent9operationEv @ 229 NONAME
-	_ZNK15HsPageIndicator10metaObjectEv @ 230 NONAME
-	_ZNK15HsPageIndicator15activeItemIndexEv @ 231 NONAME
-	_ZNK15HsPageIndicator18isAnimationRunningEv @ 232 NONAME
-	_ZNK15HsPageIndicator9itemCountEv @ 233 NONAME
-	_ZNK15HsSpinnerDialog10metaObjectEv @ 234 NONAME
-	_ZNK15HsTitleResolver10metaObjectEv @ 235 NONAME
-	_ZNK16HsTrashBinWidget10metaObjectEv @ 236 NONAME
-	_ZNK17HsImageGridWidget10metaObjectEv @ 237 NONAME
-	_ZNK19HsMenuDialogFactory12setUpActionsEP12HbMessageBoxRK11QStringList @ 238 NONAME
-	_ZNK19HsMenuDialogFactory6createERK7QStringNS_7OptionsE @ 239 NONAME
-	_ZNK19HsMessageBoxWrapper10metaObjectEv @ 240 NONAME
-	_ZNK19XQAIWGetImageClient10metaObjectEv @ 241 NONAME
-	_ZNK20HsImageFetcherClient10metaObjectEv @ 242 NONAME
-	_ZNK26HsPropertyAnimationWrapper10metaObjectEv @ 243 NONAME
-	_ZNK26HsPropertyAnimationWrapper9isForwardEv @ 244 NONAME
-	_ZTI10HsSnapLine @ 245 NONAME
-	_ZTI11HsMenuEvent @ 246 NONAME
-	_ZTI13HsSnapToLines @ 247 NONAME
-	_ZTI15HsPageIndicator @ 248 NONAME
-	_ZTI15HsSpinnerDialog @ 249 NONAME
-	_ZTI15HsTitleResolver @ 250 NONAME
-	_ZTI16HsTrashBinWidget @ 251 NONAME
-	_ZTI17HsImageGridWidget @ 252 NONAME
-	_ZTI17HsWidgetOrganizer @ 253 NONAME
-	_ZTI19HsMenuDialogFactory @ 254 NONAME
-	_ZTI19HsMessageBoxWrapper @ 255 NONAME
-	_ZTI19XQAIWGetImageClient @ 256 NONAME
-	_ZTI20HsImageFetcherClient @ 257 NONAME
-	_ZTI21HsAnchorPointInCenter @ 258 NONAME
-	_ZTI21HsMenuEventTransition @ 259 NONAME
-	_ZTI26HsAnchorPointInBottomRight @ 260 NONAME
-	_ZTI26HsPropertyAnimationWrapper @ 261 NONAME
-	_ZTI30HsWidgetPositioningOnWidgetAdd @ 262 NONAME
-	_ZTI31HsWidgetPositioningOnWidgetMove @ 263 NONAME
-	_ZTI38HsWidgetPositioningOnOrientationChange @ 264 NONAME
-	_ZTI46HsAdvancedWidgetPositioningOnOrientationChange @ 265 NONAME
-	_ZTV10HsSnapLine @ 266 NONAME
-	_ZTV11HsMenuEvent @ 267 NONAME
-	_ZTV13HsSnapToLines @ 268 NONAME
-	_ZTV15HsPageIndicator @ 269 NONAME
-	_ZTV15HsSpinnerDialog @ 270 NONAME
-	_ZTV15HsTitleResolver @ 271 NONAME
-	_ZTV16HsTrashBinWidget @ 272 NONAME
-	_ZTV17HsImageGridWidget @ 273 NONAME
-	_ZTV17HsWidgetOrganizer @ 274 NONAME
-	_ZTV19HsMenuDialogFactory @ 275 NONAME
-	_ZTV19HsMessageBoxWrapper @ 276 NONAME
-	_ZTV19XQAIWGetImageClient @ 277 NONAME
-	_ZTV20HsImageFetcherClient @ 278 NONAME
-	_ZTV21HsAnchorPointInCenter @ 279 NONAME
-	_ZTV21HsMenuEventTransition @ 280 NONAME
-	_ZTV26HsAnchorPointInBottomRight @ 281 NONAME
-	_ZTV26HsPropertyAnimationWrapper @ 282 NONAME
-	_ZTV46HsAdvancedWidgetPositioningOnOrientationChange @ 283 NONAME
-	_ZThn16_N15HsPageIndicatorD0Ev @ 284 NONAME
-	_ZThn16_N15HsPageIndicatorD1Ev @ 285 NONAME
-	_ZThn16_N15HsSpinnerDialogD0Ev @ 286 NONAME
-	_ZThn16_N15HsSpinnerDialogD1Ev @ 287 NONAME
-	_ZThn16_N16HsTrashBinWidgetD0Ev @ 288 NONAME
-	_ZThn16_N16HsTrashBinWidgetD1Ev @ 289 NONAME
-	_ZThn16_N17HsImageGridWidgetD0Ev @ 290 NONAME
-	_ZThn16_N17HsImageGridWidgetD1Ev @ 291 NONAME
-	_ZThn8_N10HsSnapLineD0Ev @ 292 NONAME
-	_ZThn8_N10HsSnapLineD1Ev @ 293 NONAME
-	_ZThn8_N15HsPageIndicatorD0Ev @ 294 NONAME
-	_ZThn8_N15HsPageIndicatorD1Ev @ 295 NONAME
-	_ZThn8_N15HsSpinnerDialogD0Ev @ 296 NONAME
-	_ZThn8_N15HsSpinnerDialogD1Ev @ 297 NONAME
-	_ZThn8_N16HsTrashBinWidgetD0Ev @ 298 NONAME
-	_ZThn8_N16HsTrashBinWidgetD1Ev @ 299 NONAME
-	_ZThn8_N17HsImageGridWidgetD0Ev @ 300 NONAME
-	_ZThn8_N17HsImageGridWidgetD1Ev @ 301 NONAME
+	_ZN18HsMenuEventFactory18createUnknownEventEv @ 110 NONAME
+	_ZN18HsMenuEventFactory24createNewCollectionEventEv @ 111 NONAME
+	_ZN18HsMenuEventFactory25createAppDetailsViewEventEi @ 112 NONAME
+	_ZN18HsMenuEventFactory25createOpenAppLibraryEventEN2Hs10HsMenuModeE8QVariant @ 113 NONAME
+	_ZN18HsMenuEventFactory25createOpenCollectionEventEiRK7QString @ 114 NONAME
+	_ZN18HsMenuEventFactory25createOpenHomeScreenEventEv @ 115 NONAME
+	_ZN18HsMenuEventFactory26createAddToHomeScreenEventEiN2Hs10HsMenuModeE8QVariant @ 116 NONAME
+	_ZN18HsMenuEventFactory26createAppSettingsViewEventEi @ 117 NONAME
+	_ZN18HsMenuEventFactory26createInstallationLogEventEv @ 118 NONAME
+	_ZN18HsMenuEventFactory26createPreviewHSWidgetEventEiRK7QStringS2_S2_ @ 119 NONAME
+	_ZN18HsMenuEventFactory26createUninstallFailedEventEi @ 120 NONAME
+	_ZN18HsMenuEventFactory27createDeleteCollectionEventEi @ 121 NONAME
+	_ZN18HsMenuEventFactory27createRenameCollectionEventEi @ 122 NONAME
+	_ZN18HsMenuEventFactory28createArrangeCollectionEventEii @ 123 NONAME
+	_ZN18HsMenuEventFactory28createCollectionDeletedEventEv @ 124 NONAME
+	_ZN18HsMenuEventFactory28createOpenInstalledViewEventEi7QString @ 125 NONAME
+	_ZN18HsMenuEventFactory31createUninstallApplicationEventEi @ 126 NONAME
+	_ZN18HsMenuEventFactory32createArrangeAllCollectionsEventEi @ 127 NONAME
+	_ZN18HsMenuEventFactory32createBackFromInstalledViewEventEi7QString @ 128 NONAME
+	_ZN18HsMenuEventFactory34createRemoveAppFromCollectionEventEii @ 129 NONAME
+	_ZN18HsMenuEventFactory36createAddAppsFromCollectionViewEventEii @ 130 NONAME
+	_ZN18HsMenuEventFactory38createAddAppsFromApplicationsViewEventEN2Hs15HsSortAttributeEi @ 131 NONAME
+	_ZN18HsMenuEventFactory39createOpenCollectionFromAppLibraryEventEiRK7QString @ 132 NONAME
+	_ZN19HsMenuDialogFactory17acceptActionIndexEv @ 133 NONAME
+	_ZN19HsMenuDialogFactory17rejectActionIndexEv @ 134 NONAME
+	_ZN19HsMenuDialogFactoryD0Ev @ 135 NONAME
+	_ZN19HsMenuDialogFactoryD1Ev @ 136 NONAME
+	_ZN19HsMenuDialogFactoryD2Ev @ 137 NONAME
+	_ZN19HsMessageBoxWrapper11qt_metacallEN11QMetaObject4CallEiPPv @ 138 NONAME
+	_ZN19HsMessageBoxWrapper11qt_metacastEPKc @ 139 NONAME
+	_ZN19HsMessageBoxWrapper12setQueryTextERK7QString @ 140 NONAME
+	_ZN19HsMessageBoxWrapper14onDialogClosedEi @ 141 NONAME
+	_ZN19HsMessageBoxWrapper16staticMetaObjectE @ 142 NONAME DATA 16
+	_ZN19HsMessageBoxWrapper19getStaticMetaObjectEv @ 143 NONAME
+	_ZN19HsMessageBoxWrapper4showEv @ 144 NONAME
+	_ZN19HsMessageBoxWrapper5closeEv @ 145 NONAME
+	_ZN19HsMessageBoxWrapper8acceptedEv @ 146 NONAME
+	_ZN19HsMessageBoxWrapper8rejectedEv @ 147 NONAME
+	_ZN19HsMessageBoxWrapper9setHeaderERK7QString @ 148 NONAME
+	_ZN19HsMessageBoxWrapperC1EP7QObject @ 149 NONAME
+	_ZN19HsMessageBoxWrapperC2EP7QObject @ 150 NONAME
+	_ZN19HsMessageBoxWrapperD0Ev @ 151 NONAME
+	_ZN19HsMessageBoxWrapperD1Ev @ 152 NONAME
+	_ZN19HsMessageBoxWrapperD2Ev @ 153 NONAME
+	_ZN19XQAIWGetImageClient10findImagesERK7QStringRK11QStringListRS3_ @ 154 NONAME
+	_ZN19XQAIWGetImageClient11fetchFailedEiRK7QString @ 155 NONAME
+	_ZN19XQAIWGetImageClient11qt_metacallEN11QMetaObject4CallEiPPv @ 156 NONAME
+	_ZN19XQAIWGetImageClient11qt_metacastEPKc @ 157 NONAME
+	_ZN19XQAIWGetImageClient13imageSelectedERK7QString @ 158 NONAME
+	_ZN19XQAIWGetImageClient14fetchCompletedERK7QString @ 159 NONAME
+	_ZN19XQAIWGetImageClient16requestCompletedERK8QVariant @ 160 NONAME
+	_ZN19XQAIWGetImageClient16staticMetaObjectE @ 161 NONAME DATA 16
+	_ZN19XQAIWGetImageClient19getStaticMetaObjectEv @ 162 NONAME
+	_ZN19XQAIWGetImageClient23imageSelectionCancelledEv @ 163 NONAME
+	_ZN19XQAIWGetImageClient5fetchEv @ 164 NONAME
+	_ZN19XQAIWGetImageClientC1Ev @ 165 NONAME
+	_ZN19XQAIWGetImageClientC2Ev @ 166 NONAME
+	_ZN19XQAIWGetImageClientD0Ev @ 167 NONAME
+	_ZN19XQAIWGetImageClientD1Ev @ 168 NONAME
+	_ZN19XQAIWGetImageClientD2Ev @ 169 NONAME
+	_ZN21HsImageHandlingClient11fetchFailedEiRK7QString @ 170 NONAME
+	_ZN21HsImageHandlingClient11handleErrorEiRK7QString @ 171 NONAME
+	_ZN21HsImageHandlingClient11qt_metacallEN11QMetaObject4CallEiPPv @ 172 NONAME
+	_ZN21HsImageHandlingClient11qt_metacastEPKc @ 173 NONAME
+	_ZN21HsImageHandlingClient12editorFailedEiRK7QString @ 174 NONAME
+	_ZN21HsImageHandlingClient14fetchCompletedERK7QString @ 175 NONAME
+	_ZN21HsImageHandlingClient14handleEditorOkERK8QVariant @ 176 NONAME
+	_ZN21HsImageHandlingClient15editorCompletedEv @ 177 NONAME
+	_ZN21HsImageHandlingClient16staticMetaObjectE @ 178 NONAME DATA 16
+	_ZN21HsImageHandlingClient17handleEditorErrorEiRK7QString @ 179 NONAME
+	_ZN21HsImageHandlingClient19getStaticMetaObjectEv @ 180 NONAME
+	_ZN21HsImageHandlingClient4editERK7QString @ 181 NONAME
+	_ZN21HsImageHandlingClient5fetchEv @ 182 NONAME
+	_ZN21HsImageHandlingClient8handleOkERK8QVariant @ 183 NONAME
+	_ZN21HsImageHandlingClientC1EP7QObject @ 184 NONAME
+	_ZN21HsImageHandlingClientC2EP7QObject @ 185 NONAME
+	_ZN21HsImageHandlingClientD0Ev @ 186 NONAME
+	_ZN21HsImageHandlingClientD1Ev @ 187 NONAME
+	_ZN21HsImageHandlingClientD2Ev @ 188 NONAME
+	_ZN21HsMenuEventTransition9eventTestEP6QEvent @ 189 NONAME
+	_ZN21HsMenuEventTransitionC1EN11HsMenuEvent13OperationTypeEP6QStateS3_ @ 190 NONAME
+	_ZN21HsMenuEventTransitionC2EN11HsMenuEvent13OperationTypeEP6QStateS3_ @ 191 NONAME
+	_ZN26HsPropertyAnimationWrapper10setForwardEv @ 192 NONAME
+	_ZN26HsPropertyAnimationWrapper11qt_metacallEN11QMetaObject4CallEiPPv @ 193 NONAME
+	_ZN26HsPropertyAnimationWrapper11qt_metacastEPKc @ 194 NONAME
+	_ZN26HsPropertyAnimationWrapper11setBackwardEv @ 195 NONAME
+	_ZN26HsPropertyAnimationWrapper11setDurationEi @ 196 NONAME
+	_ZN26HsPropertyAnimationWrapper11setEndValueERK8QVariant @ 197 NONAME
+	_ZN26HsPropertyAnimationWrapper14setEasingCurveERK12QEasingCurve @ 198 NONAME
+	_ZN26HsPropertyAnimationWrapper15setPropertyNameERK10QByteArray @ 199 NONAME
+	_ZN26HsPropertyAnimationWrapper15setTargetObjectEP7QObject @ 200 NONAME
+	_ZN26HsPropertyAnimationWrapper16staticMetaObjectE @ 201 NONAME DATA 16
+	_ZN26HsPropertyAnimationWrapper19getStaticMetaObjectEv @ 202 NONAME
+	_ZN26HsPropertyAnimationWrapper4stopEv @ 203 NONAME
+	_ZN26HsPropertyAnimationWrapper5startEv @ 204 NONAME
+	_ZN26HsPropertyAnimationWrapper8finishedEv @ 205 NONAME
+	_ZN26HsPropertyAnimationWrapper9isRunningEv @ 206 NONAME
+	_ZN26HsPropertyAnimationWrapperC1EP7QObject @ 207 NONAME
+	_ZN26HsPropertyAnimationWrapperC2EP7QObject @ 208 NONAME
+	_ZN26HsPropertyAnimationWrapperD0Ev @ 209 NONAME
+	_ZN26HsPropertyAnimationWrapperD1Ev @ 210 NONAME
+	_ZN26HsPropertyAnimationWrapperD2Ev @ 211 NONAME
+	_ZN31HsWidgetPositioningOnWidgetMove11setInstanceEPS_ @ 212 NONAME
+	_ZN31HsWidgetPositioningOnWidgetMove8instanceEv @ 213 NONAME
+	_ZN31HsWidgetPositioningOnWidgetMove9mInstanceE @ 214 NONAME DATA 4
+	_ZN38HsWidgetPositioningOnOrientationChange11setInstanceEPS_ @ 215 NONAME
+	_ZN38HsWidgetPositioningOnOrientationChange8instanceEv @ 216 NONAME
+	_ZN38HsWidgetPositioningOnOrientationChange9mInstanceE @ 217 NONAME DATA 4
+	_ZN46HsAdvancedWidgetPositioningOnOrientationChange7convertERK6QRectFRK5QListIS0_ES2_ @ 218 NONAME
+	_ZNK10HsSnapLine10metaObjectEv @ 219 NONAME
+	_ZNK10HsSnapLine24isFadeInAnimationRunningEv @ 220 NONAME
+	_ZNK10HsSnapLine25isFadeOutAnimationRunningEv @ 221 NONAME
+	_ZNK11HsMenuEvent4dataEv @ 222 NONAME
+	_ZNK11HsMenuEvent9operationEv @ 223 NONAME
+	_ZNK15HsPageIndicator10metaObjectEv @ 224 NONAME
+	_ZNK15HsPageIndicator15activeItemIndexEv @ 225 NONAME
+	_ZNK15HsPageIndicator18isAnimationRunningEv @ 226 NONAME
+	_ZNK15HsPageIndicator9itemCountEv @ 227 NONAME
+	_ZNK15HsSpinnerDialog10metaObjectEv @ 228 NONAME
+	_ZNK15HsTitleResolver10metaObjectEv @ 229 NONAME
+	_ZNK16HsTrashBinWidget10metaObjectEv @ 230 NONAME
+	_ZNK17HsImageGridWidget10metaObjectEv @ 231 NONAME
+	_ZNK19HsMenuDialogFactory12setUpActionsEP12HbMessageBoxRK11QStringList @ 232 NONAME
+	_ZNK19HsMenuDialogFactory6createERK7QStringNS_7OptionsE @ 233 NONAME
+	_ZNK19HsMessageBoxWrapper10metaObjectEv @ 234 NONAME
+	_ZNK19XQAIWGetImageClient10metaObjectEv @ 235 NONAME
+	_ZNK21HsImageHandlingClient10metaObjectEv @ 236 NONAME
+	_ZNK26HsPropertyAnimationWrapper10metaObjectEv @ 237 NONAME
+	_ZNK26HsPropertyAnimationWrapper9isForwardEv @ 238 NONAME
+	_ZTI10HsSnapLine @ 239 NONAME
+	_ZTI11HsMenuEvent @ 240 NONAME
+	_ZTI13HsSnapToLines @ 241 NONAME
+	_ZTI15HsPageIndicator @ 242 NONAME
+	_ZTI15HsSpinnerDialog @ 243 NONAME
+	_ZTI15HsTitleResolver @ 244 NONAME
+	_ZTI16HsTrashBinWidget @ 245 NONAME
+	_ZTI17HsImageGridWidget @ 246 NONAME
+	_ZTI19HsMenuDialogFactory @ 247 NONAME
+	_ZTI19HsMessageBoxWrapper @ 248 NONAME
+	_ZTI19XQAIWGetImageClient @ 249 NONAME
+	_ZTI21HsImageHandlingClient @ 250 NONAME
+	_ZTI21HsMenuEventTransition @ 251 NONAME
+	_ZTI26HsPropertyAnimationWrapper @ 252 NONAME
+	_ZTI31HsWidgetPositioningOnWidgetMove @ 253 NONAME
+	_ZTI38HsWidgetPositioningOnOrientationChange @ 254 NONAME
+	_ZTI46HsAdvancedWidgetPositioningOnOrientationChange @ 255 NONAME
+	_ZTV10HsSnapLine @ 256 NONAME
+	_ZTV11HsMenuEvent @ 257 NONAME
+	_ZTV13HsSnapToLines @ 258 NONAME
+	_ZTV15HsPageIndicator @ 259 NONAME
+	_ZTV15HsSpinnerDialog @ 260 NONAME
+	_ZTV15HsTitleResolver @ 261 NONAME
+	_ZTV16HsTrashBinWidget @ 262 NONAME
+	_ZTV17HsImageGridWidget @ 263 NONAME
+	_ZTV19HsMenuDialogFactory @ 264 NONAME
+	_ZTV19HsMessageBoxWrapper @ 265 NONAME
+	_ZTV19XQAIWGetImageClient @ 266 NONAME
+	_ZTV21HsImageHandlingClient @ 267 NONAME
+	_ZTV21HsMenuEventTransition @ 268 NONAME
+	_ZTV26HsPropertyAnimationWrapper @ 269 NONAME
+	_ZTV46HsAdvancedWidgetPositioningOnOrientationChange @ 270 NONAME
+	_ZThn16_N15HsPageIndicatorD0Ev @ 271 NONAME
+	_ZThn16_N15HsPageIndicatorD1Ev @ 272 NONAME
+	_ZThn16_N15HsSpinnerDialogD0Ev @ 273 NONAME
+	_ZThn16_N15HsSpinnerDialogD1Ev @ 274 NONAME
+	_ZThn16_N16HsTrashBinWidgetD0Ev @ 275 NONAME
+	_ZThn16_N16HsTrashBinWidgetD1Ev @ 276 NONAME
+	_ZThn16_N17HsImageGridWidgetD0Ev @ 277 NONAME
+	_ZThn16_N17HsImageGridWidgetD1Ev @ 278 NONAME
+	_ZThn8_N10HsSnapLineD0Ev @ 279 NONAME
+	_ZThn8_N10HsSnapLineD1Ev @ 280 NONAME
+	_ZThn8_N15HsPageIndicatorD0Ev @ 281 NONAME
+	_ZThn8_N15HsPageIndicatorD1Ev @ 282 NONAME
+	_ZThn8_N15HsSpinnerDialogD0Ev @ 283 NONAME
+	_ZThn8_N15HsSpinnerDialogD1Ev @ 284 NONAME
+	_ZThn8_N16HsTrashBinWidgetD0Ev @ 285 NONAME
+	_ZThn8_N16HsTrashBinWidgetD1Ev @ 286 NONAME
+	_ZThn8_N17HsImageGridWidgetD0Ev @ 287 NONAME
+	_ZThn8_N17HsImageGridWidgetD1Ev @ 288 NONAME
 
--- a/homescreenapp/hsutils/hsutils.pro	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/hsutils/hsutils.pro	Mon Oct 04 00:07:25 2010 +0300
@@ -34,6 +34,8 @@
 symbian: {
     TARGET.UID3 = 0x20022F3C
     LIBS+=-lxqservice -lxqserviceutil
+    
+    MMP_RULES += SMPSAFE
 }
 
 include(hsutils.pri)
--- a/homescreenapp/hsutils/inc/hsimagefetcherclient.h	Fri Sep 17 08:27:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +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:
-*
-*/
-
-#ifndef HSIMAGEFETCHERCLIENT_H
-#define HSIMAGEFETCHERCLIENT_H
-
-#include <QObject>
-
-#ifdef Q_OS_SYMBIAN
-#include <xqaiwrequest.h>
-#include <xqappmgr.h>
-#endif // Q_OS_SYMBIAN
-
-#include "hsutils_global.h"
-
-class HSUTILS_EXPORT HsImageFetcherClient : public QObject
-{
-    Q_OBJECT
-    
-public:
-    HsImageFetcherClient(QObject *parent = 0);
-    ~HsImageFetcherClient();
-    
-public slots:
-    void fetch();
-    
-private slots: 
-    // Aiw request responses
-    void handleOk(const QVariant &result);
-    void handleError(int errorCode, const QString &errorMessage);
-
-signals:
-    void fetchCompleted(const QString &imageFile);
-    void fetchFailed(int errorCode, const QString &errorMessage);
-
-private:
-    Q_DISABLE_COPY(HsImageFetcherClient)
-
-#ifdef Q_OS_SYMBIAN
-    XQApplicationManager mAppMgr;                
-    XQAiwRequest *mReq;
-#endif // Q_OS_SYMBIAN
-};
-
-#endif // HSIMAGEFETCHERCLIENT_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsutils/inc/hsimagehandlingclient.h	Mon Oct 04 00:07:25 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:
+*
+*/
+
+#ifndef HSIMAGEHANDLINGCLIENT_H
+#define HSIMAGEHANDLINGCLIENT_H
+
+#include <QObject>
+
+#ifdef Q_OS_SYMBIAN
+#include <xqaiwrequest.h>
+#include <xqappmgr.h>
+#endif // Q_OS_SYMBIAN
+
+#include "hsutils_global.h"
+
+class HSUTILS_EXPORT HsImageHandlingClient : public QObject
+{
+    Q_OBJECT
+    
+public:
+    HsImageHandlingClient(QObject *parent = 0);
+    ~HsImageHandlingClient();
+    
+public slots:
+    void fetch();
+    void edit(const QString &imagePath);
+    
+private slots: 
+    // Aiw request responses
+    void handleOk(const QVariant &result);
+    void handleError(int errorCode, const QString &errorMessage);
+    void handleEditorOk(const QVariant& result);
+    void handleEditorError(int errorCode, const QString &errorMessage);
+
+signals:
+    void fetchCompleted(const QString &imageFile);
+    void fetchFailed(int errorCode, const QString &errorMessage);
+    void editorCompleted();
+    void editorFailed(int errorCode, const QString &errorMessage);
+
+private:
+    Q_DISABLE_COPY(HsImageHandlingClient)
+
+#ifdef Q_OS_SYMBIAN
+    XQApplicationManager mAppMgr;                
+    XQAiwRequest *mReq;
+#endif // Q_OS_SYMBIAN
+};
+
+#endif // HSIMAGEHANDLINGCLIENT_H
--- a/homescreenapp/hsutils/inc/hsmenudialogfactory.h	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/hsutils/inc/hsmenudialogfactory.h	Mon Oct 04 00:07:25 2010 +0300
@@ -35,6 +35,8 @@
     virtual HbMessageBox *create(const QString &text,
                                  Options options = OkCancel) const;
     virtual ~HsMenuDialogFactory();
+    static int acceptActionIndex();
+    static int rejectActionIndex();
 private:
     void setUpActions(HbMessageBox *box,
                       const QStringList &translationIdentifiers) const;
--- a/homescreenapp/hsutils/inc/hsmenuevent.h	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/hsutils/inc/hsmenuevent.h	Mon Oct 04 00:07:25 2010 +0300
@@ -44,6 +44,7 @@
         UninstallApplication,
         OpenApplicationLibrary,
         OpenInstalledView,
+        BackFromInstalledView,
         OpenHomeScreen,
         ArrangeCollection,
         ArrangeAllCollections,
--- a/homescreenapp/hsutils/inc/hsmenueventfactory.h	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/hsutils/inc/hsmenueventfactory.h	Mon Oct 04 00:07:25 2010 +0300
@@ -38,7 +38,9 @@
 
 public:
 
-    static QEvent *createAddToHomeScreenEvent(int entryId, Hs::HsMenuMode menuMode, QVariant homescreenData = NULL);
+    static QEvent *createAddToHomeScreenEvent(int entryId,
+        Hs::HsMenuMode menuMode,
+        QVariant homescreenData = NULL);
 
     static QEvent *createOpenCollectionEvent(int itemId,
             const QString &collectionType);
@@ -53,9 +55,16 @@
     static QEvent *createDeleteCollectionEvent(int aItemId);
 
     static QEvent *createOpenAppLibraryEvent(
-        Hs::HsMenuMode menuMode = Hs::NormalHsMenuMode, QVariant homescreenData = NULL);
+        Hs::HsMenuMode menuMode = Hs::NormalHsMenuMode,
+        QVariant homescreenData = NULL);
+    
+    static QEvent *createBackFromInstalledViewEvent(
+        int id,
+        QString collectionType);
 
-    static QEvent *createOpenInstalledViewEvent();
+    static QEvent *createOpenInstalledViewEvent(
+        int id = 0,
+        QString collectionType = "");
     
     static QEvent *createOpenHomeScreenEvent();
 
--- a/homescreenapp/hsutils/inc/hswidgetpositioningonwidgetadd.h	Fri Sep 17 08:27:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,95 +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:
-*
-*/
-
-#ifndef HSWIDGETPOSITIONINGONWIDGETADD_H
-#define HSWIDGETPOSITIONINGONWIDGETADD_H
-
-#include <QList>
-#include <QRectF>
-#include <QPointF>
-#include "hsutils_global.h"
-
-class HsWidgetHost;
-
-class HSUTILS_EXPORT HsWidgetPositioningOnWidgetAdd
-{
-public:
-    virtual ~HsWidgetPositioningOnWidgetAdd() {}
-    
-    virtual QList<QRectF> convert(const QRectF &contentArea,
-                                  const QList<QRectF> &existingRects,
-                                  const QList<QRectF> &newRects,
-                                  const QPointF &startPoint) = 0;
-   
-    static void setInstance(HsWidgetPositioningOnWidgetAdd *instance);
-    static HsWidgetPositioningOnWidgetAdd *instance();
-
-private:
-    static HsWidgetPositioningOnWidgetAdd *mInstance;
-};
-
-class HSUTILS_EXPORT HsAnchorPointInBottomRight : public HsWidgetPositioningOnWidgetAdd
-{
-public:
-    QList<QRectF> convert(const QRectF &contentArea,
-                          const QList<QRectF> &existingRects,
-                          const QList<QRectF> &newRects,
-                          const QPointF &startPoint);
- 
-};
-
-class HSUTILS_EXPORT HsAnchorPointInCenter : public HsWidgetPositioningOnWidgetAdd
-{
-public:
-    QList<QRectF> convert(const QRectF &contentArea,
-                          const QList<QRectF> &existingRects,
-                          const QList<QRectF> &newRects,
-                          const QPointF &startPoint);
- };
-
-class HSUTILS_EXPORT HsWidgetOrganizer : public HsWidgetPositioningOnWidgetAdd
-{
-public:
-    QList<QRectF> convert(const QRectF &contentArea,
-                          const QList<QRectF> &existingRects,
-                          const QList<QRectF> &newRects,
-                          const QPointF &startPoint);
-
-private:
-    bool initAnchors(const QSizeF &areaSize);
-    bool getAnchorPoint(const QSizeF &contentSize);
-    bool searchWidthSpace(const QSizeF &contentSize);
-    bool searchHeightSpace(int contentHeight);
-    bool markReservedAnchors();
-    QPointF getAnchorCoordinates(int index);
-    int getIndexForCoordinate(QPointF position);
-    int lenghtInAnchorPoints(QVariant length);
-
-private:
-    int mAnchorColumns;
-    int mAnchorRows;
-    int mAnchorDistance;
-    QPointF mStartWidthAnchorPoint;
-    QPointF mEndWidthAnchorPoint;
-    QPointF mEndHeightAnchorPoint;
-    // TODO: is there better way to store anchor points, perhaps with pointers?
-    QList<bool> mAnchors;
-
-};
-
-
-#endif // HSWIDGETPOSITIONINGONWIDGETADD_H
--- a/homescreenapp/hsutils/src/hsimagefetcherclient.cpp	Fri Sep 17 08:27:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,157 +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:  Photos image fetcher client.
-*
-*/
-
-
-#include "hsimagefetcherclient.h"
-
-#include <QDir>
-#include <QDebug>
-#include <QVariant>
-#ifdef Q_OS_SYMBIAN
-#include <xqaiwinterfacedescriptor.h>
-#include <xqaiwdecl.h>
-#endif // Q_OS_SYMBIAN
-
-#ifdef COVERAGE_MEASUREMENT
-#pragma CTC SKIP
-#endif //COVERAGE_MEASUREMENT
-
-
-/*!
-    \class HsImageFetcherClient
-    \ingroup group_hsutils
-    \brief 
-*/
-
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
-#ifdef Q_OS_SYMBIAN
-HsImageFetcherClient::HsImageFetcherClient(QObject *parent)
-  : QObject(parent),
-    mReq(0)
-{
-}
-#else
-HsImageFetcherClient::HsImageFetcherClient(QObject *parent)
-  : QObject(parent)
-{
-}
-#endif // Q_OS_SYMBIAN
-
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
-HsImageFetcherClient::~HsImageFetcherClient()
-{
-#ifdef Q_OS_SYMBIAN
-    delete mReq;
-#endif // Q_OS_SYMBIAN
-}
-
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
-void HsImageFetcherClient::fetch()
-{
-#ifdef Q_OS_SYMBIAN
-    qDebug() << "HsImageFetcherClient::fetch START";
-
-    if (mReq) {
-        delete mReq;
-        mReq = 0;
-    }
-
-    mReq = mAppMgr.create(XQI_IMAGE_FETCH, XQOP_IMAGE_FETCH, false);
-    if (mReq) {        
-        connect(mReq, SIGNAL(requestOk(const QVariant&)), this, SLOT(handleOk(const QVariant&)));
-        connect(mReq, SIGNAL(requestError(int,const QString&)), this, SLOT(handleError(int,const QString&)));
-    } else {
-        qCritical() << "HsImageFetcherClient::fetch -> Create request failed";
-        return;
-    }
-
-    if (!(mReq)->send()) {
-        qCritical() << "HsImageFetcherClient::fetch -> Send failed" << mReq->lastErrorMessage();;
-    }
-
-    qDebug() << "HsImageFetcherClient::fetch END";
-#endif // Q_OS_SYMBIAN
-}
-
-
-
-// Aiw request responses
-void HsImageFetcherClient::handleOk(const QVariant &result)
-{
-#ifdef Q_OS_SYMBIAN
-    // disconnect error signal as it will give -4999 (EConnectionClosed) error afterwards even though image
-    // is fetched successfully
-    disconnect(mReq, SIGNAL(requestError(int,const QString&)), this, SLOT(handleError(int,const QString&)));
-
-    XQAiwRequest *request = static_cast<XQAiwRequest *>(sender());
-    int implementationId=-1;
-    implementationId = (request->descriptor().property(XQAiwInterfaceDescriptor::ImplementationId)).toInt();
-
-    if (result.canConvert<QString>()) {
-        qDebug("HsImageFetcherClient::%x:handleOk result=%s,%s",
-               implementationId,
-               result.typeName(),
-               qPrintable(result.value<QString>()));
-
-        emit fetchCompleted(result.value<QString>());
-    } else if (result.canConvert<QStringList>()) {
-        QStringList resultList = result.value<QStringList>();
-	    if (resultList.size() > 0) {
-	        //for debug
-	        QString msg = QString("HsImageFetcherClient::handleOk, size=")+QString::number( resultList.size() )+QString("\n");
-	        for (int i(0), size(resultList.size()); i < size; ++i) {
-                msg += QString::number(i) + QString(":") + resultList[i] + QString("\n");
-	        }
-	        qDebug()<<msg;
-		}
-        emit fetchCompleted(resultList[0]);
-	} else {
-        qCritical("AppMgrClient::%x:handleOk result=%s. Not displayable",
-            implementationId,
-            result.typeName());
-        emit fetchFailed(-1, QString());
-    }
-#else
-	Q_UNUSED(result)
-#endif // Q_OS_SYMBIAN
-}
-
-void HsImageFetcherClient::handleError(int errorCode, const QString &errorMessage)
-{
-#ifdef Q_OS_SYMBIAN
-    XQAiwRequest *request = static_cast<XQAiwRequest *>(sender());
-    int implementationId = -1;
-    implementationId = (request->descriptor().property(XQAiwInterfaceDescriptor::ImplementationId)).toInt();
-
-    qCritical("HsImageFetcherClient::%x:handleError code=%d, errorMessage:%s",
-        implementationId, errorCode, qPrintable(errorMessage));
-    emit fetchFailed(errorCode, errorMessage);
-#else
-	Q_UNUSED(errorCode)
-	Q_UNUSED(errorMessage)
-#endif // Q_OS_SYMBIAN
-}
-
-#ifdef COVERAGE_MEASUREMENT
-#pragma CTC ENDSKIP
-#endif //COVERAGE_MEASUREMENT
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsutils/src/hsimagehandlingclient.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,211 @@
+/*
+* 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:  Photos image handling client.
+*
+*/
+
+
+#include "hsimagehandlingclient.h"
+
+#include <QDir>
+#include <QDebug>
+#include <QVariant>
+#ifdef Q_OS_SYMBIAN
+#include <xqaiwinterfacedescriptor.h>
+#include <xqaiwdecl.h>
+#endif // Q_OS_SYMBIAN
+#ifdef FF_IMAGE_EDITOR
+#include <photoeditor_highway.hrh>
+#endif //FF_IMAGE_EDITOR
+
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC SKIP
+#endif //COVERAGE_MEASUREMENT
+
+
+/*!
+    \class HsImageHandlingClient
+    \ingroup group_hsutils
+    \brief 
+*/
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+#ifdef Q_OS_SYMBIAN
+HsImageHandlingClient::HsImageHandlingClient(QObject *parent)
+  : QObject(parent),
+    mReq(0)
+{
+}
+#else
+HsImageHandlingClient::HsImageHandlingClient(QObject *parent)
+  : QObject(parent)
+{
+}
+#endif // Q_OS_SYMBIAN
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+HsImageHandlingClient::~HsImageHandlingClient()
+{
+#ifdef Q_OS_SYMBIAN
+    delete mReq;
+#endif // Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void HsImageHandlingClient::fetch()
+{
+#ifdef Q_OS_SYMBIAN
+    qDebug() << "HsImageHandlingClient::fetch START";
+
+    if (mReq) {
+        delete mReq;
+        mReq = 0;
+    }
+
+    mReq = mAppMgr.create(XQI_IMAGE_FETCH, XQOP_IMAGE_FETCH, false);
+    if (mReq) {        
+        connect(mReq, SIGNAL(requestOk(const QVariant&)), this, SLOT(handleOk(const QVariant&)));
+        connect(mReq, SIGNAL(requestError(int,const QString&)), this, SLOT(handleError(int,const QString&)));
+    } else {
+        qCritical() << "HsImageHandlingClient::fetch -> Create request failed";
+        return;
+    }
+
+    if (!(mReq)->send()) {
+        qCritical() << "HsImageHandlingClient::fetch -> Send failed" << mReq->lastErrorMessage();;
+    }
+
+    qDebug() << "HsImageHandlingClient::fetch END";
+#endif // Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void HsImageHandlingClient::edit(const QString &imagePath)
+{
+#ifdef Q_OS_SYMBIAN
+    qDebug() << "HsImageHandlingClient::edit START";
+    
+    const QString service = QLatin1String("PhotoEditor");
+    const QString interface = QLatin1String("com.nokia.symbian.imageeditor");
+    const QString operation = QLatin1String("view(QString,int)");
+
+   //Connect to service provider
+    if(mReq == NULL){
+        mReq = mAppMgr.create(service, interface, operation, true);
+        mReq->setEmbedded(true);
+        mReq->setSynchronous(false);
+    }
+    
+    if(mReq == NULL){
+        return;
+    } 
+
+    if (mReq) {        
+        connect(mReq, SIGNAL(requestOk(const QVariant&)), this, SLOT(handleEditorOk(const QVariant&)));
+        connect(mReq, SIGNAL(requestError(int,const QString&)), this, SLOT(handleEditorError(int,const QString&)));
+    } else {
+        qCritical() << "HsImageHandlingClient::edit -> Create request failed";
+        return;
+    }
+    QList<QVariant> args;
+    args << imagePath;
+    args << EEditorHighwayWallpaperCrop;
+    mReq->setArguments(args);
+    if (!(mReq)->send()) {
+        qCritical() << "HsImageHandlingClient::edit -> Send failed" << mReq->lastErrorMessage();;
+    }
+
+    qDebug() << "HsImageHandlingClient::edit END";
+#endif // Q_OS_SYMBIAN
+}
+
+// Aiw request responses
+void HsImageHandlingClient::handleOk(const QVariant &result)
+{
+#ifdef Q_OS_SYMBIAN
+    // disconnect error signal as it will give -4999 (EConnectionClosed) error afterwards even though image
+    // is fetched successfully
+    disconnect(mReq, SIGNAL(requestError(int,const QString&)), this, SLOT(handleError(int,const QString&)));
+
+    XQAiwRequest *request = static_cast<XQAiwRequest *>(sender());
+    int implementationId=-1;
+    implementationId = (request->descriptor().property(XQAiwInterfaceDescriptor::ImplementationId)).toInt();
+
+    if (result.canConvert<QString>()) {
+        qDebug("HsImageHandlingClient::%x:handleOk result=%s,%s",
+               implementationId,
+               result.typeName(),
+               qPrintable(result.value<QString>()));
+
+        emit fetchCompleted(result.value<QString>());
+    } else if (result.canConvert<QStringList>()) {
+        QStringList resultList = result.value<QStringList>();
+	    if (resultList.size() > 0) {
+	        //for debug
+	        QString msg = QString("HsImageHandlingClient::handleOk, size=")+QString::number( resultList.size() )+QString("\n");
+	        for (int i(0), size(resultList.size()); i < size; ++i) {
+                msg += QString::number(i) + QString(":") + resultList[i] + QString("\n");
+	        }
+	        qDebug()<<msg;
+		}
+        emit fetchCompleted(resultList[0]);
+	} else {
+        qCritical("AppMgrClient::%x:handleOk result=%s. Not displayable",
+            implementationId,
+            result.typeName());
+        emit fetchFailed(-1, QString());
+    }
+#else
+	Q_UNUSED(result)
+#endif // Q_OS_SYMBIAN
+}
+
+void HsImageHandlingClient::handleError(int errorCode, const QString &errorMessage)
+{
+#ifdef Q_OS_SYMBIAN
+    XQAiwRequest *request = static_cast<XQAiwRequest *>(sender());
+    int implementationId = -1;
+    implementationId = (request->descriptor().property(XQAiwInterfaceDescriptor::ImplementationId)).toInt();
+
+    qCritical("HsImageHandlingClient::%x:handleError code=%d, errorMessage:%s",
+        implementationId, errorCode, qPrintable(errorMessage));
+    emit fetchFailed(errorCode, errorMessage);
+#else
+	Q_UNUSED(errorCode)
+	Q_UNUSED(errorMessage)
+#endif // Q_OS_SYMBIAN
+}
+
+void HsImageHandlingClient::handleEditorOk(const QVariant& result)
+{
+    Q_UNUSED(result)
+    emit editorCompleted();
+}
+
+void HsImageHandlingClient::handleEditorError(int errorCode,
+                                             const QString& errorMessage)
+{
+    emit editorFailed(errorCode, errorMessage);
+}
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC ENDSKIP
+#endif //COVERAGE_MEASUREMENT
--- a/homescreenapp/hsutils/src/hsmenudialogfactory.cpp	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/hsutils/src/hsmenudialogfactory.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -108,3 +108,14 @@
         box->addAction(action.take());
     }
 }
+
+int HsMenuDialogFactory::acceptActionIndex()
+{
+    return 0;
+}
+
+int HsMenuDialogFactory::rejectActionIndex()
+{
+    return 1;
+}
+
--- a/homescreenapp/hsutils/src/hsmenueventfactory.cpp	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/hsutils/src/hsmenueventfactory.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -135,7 +135,7 @@
  */
 QEvent *HsMenuEventFactory::createOpenAppLibraryEvent(
     Hs::HsMenuMode menuMode,
-	QVariant homescreenData)
+    QVariant homescreenData)
 {
     QVariantMap params;
     params.insert(Hs::menuModeType, menuMode);
@@ -144,13 +144,31 @@
 }
 
 /*!
-    Creates an HsMenuEvent::OpenApplicationLibrary event.
+    Creates an HsMenuEvent::BackFromInstalledView event.
 
-    \return Open Applications Library event.
+    \return Back from installed view event.
  */
-QEvent *HsMenuEventFactory::createOpenInstalledViewEvent()
+QEvent *HsMenuEventFactory::createBackFromInstalledViewEvent(
+    int id, QString collectionType)
 {
-	return new HsMenuEvent(HsMenuEvent::OpenInstalledView);
+    QVariantMap params;
+    params.insert(Hs::itemIdKey, id);
+    params.insert(Hs::entryTypeNameKey, collectionType);
+    return new HsMenuEvent(HsMenuEvent::BackFromInstalledView, params);
+}
+
+/*!
+    Creates an HsMenuEvent::OpenInstalledView event.
+
+    \return Open Installed View event.
+ */
+QEvent *HsMenuEventFactory::createOpenInstalledViewEvent(
+    int id, QString collectionType)
+{
+    QVariantMap params;
+    params.insert(Hs::itemIdKey, id);
+    params.insert(Hs::entryTypeNameKey, collectionType);
+	return new HsMenuEvent(HsMenuEvent::OpenInstalledView, params);
 }
 
 /*!
@@ -211,7 +229,8 @@
     Creates an HsMenuEvent::RemoveAppFromCollection event.
 
     \param aItemId Item id of the application to be removed from a collection.
-    \param aCollectionId Item id of the collection the application is to be removed from.
+    \param aCollectionId Item id of the collection the application is to be
+     removed from.
     \return RemoveAppFromCollection event.
  */
 QEvent *HsMenuEventFactory::createRemoveAppFromCollectionEvent(int aItemId,
@@ -227,7 +246,8 @@
     Creates an HsMenuEvent::UninstallApplication event.
 
     \param aItemId Item id of the application to be removed from a collection.
-    \param aCollectionId Item id of the collection the application is to be removed from.
+    \param aCollectionId Item id of the collection the application is to be
+     removed from.
     \return UninstallApplication event.
  */
 QEvent *HsMenuEventFactory::createUninstallApplicationEvent(int aItemId)
--- a/homescreenapp/hsutils/src/hswidgetpositioningonwidgetadd.cpp	Fri Sep 17 08:27:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,454 +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: 
-*
-*/
-
-#include <QLineF>
-#include <QtGlobal>
-#include <QPointF>
-#include <math.h>
-
-#include <HbInstance>
-
-
-#include "hswidgetpositioningonwidgetadd.h"
-
-const qreal offset = 40; //TODO: Implement this as configurable parameter
-
-
-/*!
-    \class HsWidgetPositioningOnWidgetAdd
-    \ingroup group_hsutils
-    \brief 
-*/
-
-/*!
-    \class HsWidgetPositioningOnWidgetAdd
-    \brief Defines widget positioning on widget add.
-
-    Widget positioning on widget add sets positions for
-    a set of home screen widgets added from application library.
-*/
-
-/*!
-    Sets the positioning \a instance as the current one.
-    Deletes the existing instance if present.
-*/
-void HsWidgetPositioningOnWidgetAdd::setInstance(
-    HsWidgetPositioningOnWidgetAdd *instance)
-{
-    if (mInstance)
-        delete mInstance;
-    mInstance = instance;
-}
- 
-/*!
-    Returns the current positioning instance.
-*/
-HsWidgetPositioningOnWidgetAdd *HsWidgetPositioningOnWidgetAdd::instance()
-{
-    return mInstance;
-}
-
-/*!
-    Stores the current positioning instance.
-*/
-HsWidgetPositioningOnWidgetAdd *HsWidgetPositioningOnWidgetAdd::mInstance = 0;
-
-/*!
-    \class HsAnchorPointInBottomRight
-    \brief Diagonal widget positioning algorithm.
-    
-    Sets widget's lower right corner to follow content area's diagonal.
-    Widgets are positioned to certain offset to each other.
-*/
-QList<QRectF> HsAnchorPointInBottomRight::convert(
-    const QRectF &contentArea,
-    const QList<QRectF> &existingRects,
-    const QList<QRectF> &newRects,
-    const QPointF &startPoint)
-{
-    Q_UNUSED(existingRects);
-
-    QList<QRectF> toGeometries;
-
-    //Offset for widgets' bottom right position to each other
-    qreal k = contentArea.height()/contentArea.width(); //slope of the diagonal
-    qreal offset_x = offset/(sqrt(k + 1));
-    qreal offset_y = k*offset_x;
-    QPointF offsetPoint(offset_x, offset_y);
-    
-    QPointF anchorPoint;
-   
-    if(startPoint.isNull()){
-
-        QLineF diagonal(contentArea.topLeft(), contentArea.bottomRight());
-        QLineF widgetRightSide(contentArea.center().x()+ newRects.at(0).width()/2,
-                           contentArea.top(),
-                           contentArea.center().x()+ newRects.at(0).width()/2,
-                           contentArea.bottom());
-
-        // right side line intersection with diagonal will be bottom right position
-        // for the first rect
-        if(QLineF::BoundedIntersection != 
-            diagonal.intersect(widgetRightSide, &anchorPoint)) {
-            return newRects; //Return original since undefined error.
-                            //In this case widget's must be wider than the content area.
-        }
-    }else{
-        anchorPoint = startPoint - offsetPoint;
-    }
-
-    QRectF widgetRect;
-    for(int i=0;i<newRects.count();++i) {
-        widgetRect = newRects.at(i);
-        widgetRect.moveBottomRight(anchorPoint);
-        //if widget rect doesn't fit, try to move it
-        if(!contentArea.contains(widgetRect)) {
-            /*! precondition is that
-             widget's max height < content area height
-             widget's max widht < content area width
-            */
-            widgetRect.moveBottomRight(contentArea.bottomRight());
-            // anchorPoin is always previous bottom right
-            anchorPoint = widgetRect.bottomRight();
-        }
-        toGeometries << widgetRect;
-        anchorPoint -= offsetPoint;
-        
-    }
-    return toGeometries;
-}
-
-
-/*!
-    \class HsAnchorPointInCenter
-    \brief Diagonal widget positioning algorithm.
-    
-    Sets widget's center point to follow content area's diagonal.
-    Widgets are positioned to certain offset to each other.
-*/
-#ifdef COVERAGE_MEASUREMENT
-#pragma CTC SKIP
-#endif //COVERAGE_MEASUREMENT
-QList<QRectF> HsAnchorPointInCenter::convert(
-    const QRectF &contentArea,
-    const QList<QRectF> &existingRects,
-    const QList<QRectF> &newRects,
-    const QPointF &startPoint )
-{
-    Q_UNUSED(existingRects);
-    Q_UNUSED(startPoint)
-
-    QList<QRectF> toGeometries;
-
-    //Offset for widgets' centers position to each other
-    qreal k = contentArea.height()/contentArea.width(); //slope of the diagonal
-    qreal offset_x = offset/(sqrt(k + 1));
-    qreal offset_y = k*offset_x;
-    QPointF offsetPoint(offset_x, offset_y);
-
-    //First widget to the center of the content area
-    QPointF anchorPoint = contentArea.center();
-    foreach (QRectF g, newRects) {
-        g.moveCenter(anchorPoint);
-        toGeometries << g;
-        anchorPoint -= offsetPoint;
-        if(!contentArea.contains(anchorPoint)) {
-            anchorPoint = contentArea.bottomRight();
-        }
-    }
-    return toGeometries;
-}
-
-/*!
-    \class HsWidgetOrganizer
-    \brief Advanced widget positioning algorithm.
-    
-    Organizes widget's starting from upper left corner towards right,
-    and then continues the on the next line.
-*/
-QList<QRectF> HsWidgetOrganizer::convert(
-    const QRectF &contentArea,
-    const QList<QRectF> &existingRects,
-    const QList<QRectF> &newRects,
-    const QPointF &startPoint)
-{
-    Q_UNUSED(startPoint)
-
-    // TODO: maybe we can utilize start point in some use cases / optimizations?
-
-    QList<QRectF> toGeometries;
-
-    // TODO: anchor distance to configuration?
-    // TODO: optimize anchor distance based on new content amount
-    // TODO: snap value to same as anchor distance?
-    mAnchorDistance = 5;
-    QList<bool> temp;
-    mAnchors = temp;
-
-    // test flag
-//    int test = 0;
-
-    // initialize anchor network for widget positions
-//    if (test == 0) {
-        initAnchors(contentArea.size());
-//    } else {
-//        mAnchorDistance = 2;
-//        initAnchors(QSizeF(6,6));
-//    }
-
-    // mark existing rects (widgets) reserved
-    foreach (QRectF rect, existingRects) {
-        // TODO: could mStartWidthAnchorPoint, mEndWidthAnchorPoint, mEndHeightAnchorPoint be somehow refactored better way?
-        mStartWidthAnchorPoint.setX(lenghtInAnchorPoints(rect.x() - contentArea.x()));
-        mEndWidthAnchorPoint.setX(lenghtInAnchorPoints(rect.x() + rect.width() - contentArea.x()));
-        mStartWidthAnchorPoint.setY(lenghtInAnchorPoints(rect.y() - contentArea.y()));
-        mEndHeightAnchorPoint.setY(lenghtInAnchorPoints(rect.y() + rect.height() - contentArea.y()));
-        // mark reserved anchor points
-        markReservedAnchors();
-        mStartWidthAnchorPoint = QPointF(0,0);
-        mEndWidthAnchorPoint = QPointF(0,0);
-        mEndHeightAnchorPoint = QPointF(0,0);
-    }
-
-    QList<QRectF> notOrganizedRects;
-
-    // get positions for all new rects (widgets)
-    for ( int i = 0; i < newRects.count(); i++) {
-        bool found = false;
-//        if (test == 0) {
-            // find first free anchor point for rect
-            found = getAnchorPoint(newRects.at(i).size());
-//        } else {
-//            found = getAnchorPoint(QSizeF(2,2));
-//        }
-
-        if (found) {
-            // save to geometry list
-            toGeometries << QRectF(mStartWidthAnchorPoint.x() * mAnchorDistance + contentArea.x(),
-                                   mStartWidthAnchorPoint.y() * mAnchorDistance + contentArea.y(),
-                                   newRects.at(i).width(), newRects.at(i).height());
-            // mark new widgets rect reserved
-            markReservedAnchors();
-            // TODO: these optimizations could be used for empty page
-            //mStartWidthAnchorPoint.setX(mEndWidthAnchorPoint.x() + 1);
-            //mStartWidthAnchorPoint.setY(mEndWidthAnchorPoint.y());
-        } else {
-            // collect widgets that do not fit
-            notOrganizedRects << newRects.at(i);
-        }
-        // TODO: remove these to optimize for empty page
-        mStartWidthAnchorPoint = QPointF(0,0);
-        mEndWidthAnchorPoint = QPointF(0,0);
-    }
-
-    // use center algorithm with offset for the rest widget that did not fit to screen
-    if (notOrganizedRects.count() > 0) {
-        QList<QRectF> tmpExistingRects;
-        tmpExistingRects += newRects;
-        tmpExistingRects += existingRects;
-        HsAnchorPointInCenter *centerAlgorithm = new HsAnchorPointInCenter();
-        QList<QRectF> calculatedRects =
-            centerAlgorithm->convert(contentArea, tmpExistingRects, notOrganizedRects, QPointF());
-        toGeometries += calculatedRects;
-        delete centerAlgorithm;
-    }
-
-    return toGeometries;
-}
-
-
-/*!    
-    Initializes anchor points for context area
-*/
-bool HsWidgetOrganizer::initAnchors(const QSizeF &areaSize)
-{
-    // mandatory check ups
-    // TODO: these mAnchorDistance checks to earlier phase
-    if (areaSize == QSizeF(0,0) || areaSize.width() < mAnchorDistance ||
-        areaSize.height() < mAnchorDistance || mAnchorDistance == 0 || mAnchorDistance == 1) {
-        return false;
-    }
-    mAnchorColumns = 0;
-    mAnchorRows = 0;
-
-    // TODO: can we optimize anchor amount utilizing minimum widget size
-    mAnchorColumns = lenghtInAnchorPoints(areaSize.width());
-    mAnchorRows = lenghtInAnchorPoints(areaSize.height());
-
-    // create anchor network
-    for (int i = 0; i < (mAnchorRows * mAnchorColumns); i++) {
-        mAnchors << false;
-    }
-    // zero start points
-    mStartWidthAnchorPoint = QPointF(0,0);
-    mEndWidthAnchorPoint = QPointF(0,0);
-
-    return true;
-}
-
-/*!    
-    Finds anchor points for content size
-*/
-bool HsWidgetOrganizer::getAnchorPoint(const QSizeF &contentSize)
-{
-    bool anchorFound = false;
-
-    while (anchorFound == false) {
-        // if no width found for content
-        if (!searchWidthSpace(contentSize)) {
-            // when content organized in height order remove this line for optimization
-            mStartWidthAnchorPoint = QPointF(0,0);
-            mEndWidthAnchorPoint = QPointF(0,0);
-            return false;
-        }
-        // search height for content
-        int height = lenghtInAnchorPoints(contentSize.height());
-        anchorFound = searchHeightSpace(height);
-    }
-    return true;
-}
-
-/*!    
-    Searches anchor point width for content size
-*/
-bool HsWidgetOrganizer::searchWidthSpace(const QSizeF &contentSize) 
-{
-    int availableWidth = 0;    
-    int contentWidth = lenghtInAnchorPoints(contentSize.width());
-    // TODO: use this optimizations for empty page
-    //int contentHeight = lenghtInAnchorPoints(contentSize.height());
-    bool newRow = true;
-
-    for (int i = getIndexForCoordinate(mStartWidthAnchorPoint); i <= mAnchors.count(); i++) {
-        // no width left on the page
-        if ((newRow == false) && ((i % (mAnchorColumns)) == 0)) {
-            availableWidth = 0;
-            // jump to new row
-            mStartWidthAnchorPoint.setX(0);
-            // TODO: use this optimizations for empty page
-            //mStartWidthAnchorPoint.setY(mStartWidthAnchorPoint.y() + contentHeight + 1);
-            mStartWidthAnchorPoint.setY(mStartWidthAnchorPoint.y() + 1);
-            i = getIndexForCoordinate(mStartWidthAnchorPoint) - 1;
-            // if no height found
-            if (i < 0) {
-                return false;
-            }
-            newRow = true;
-        } else {
-            // if enough width found
-            if (availableWidth == contentWidth) {
-                mEndWidthAnchorPoint = getAnchorCoordinates(i);
-                if (mEndWidthAnchorPoint == QPointF()) {
-                    return false;
-                }
-                return true;
-            }
-            // if anchor reserved
-            if (mAnchors[i] == true) {
-                availableWidth = 0;
-            } else {
-                // update available width
-                availableWidth = availableWidth + 1;
-            }
-            newRow = false;
-        }   
-    }
-    return false;
-}
-
-/*!    
-    Searches anchor point area for content size
-*/
-bool HsWidgetOrganizer::searchHeightSpace(int contentHeight)
-{
-    mEndHeightAnchorPoint = QPointF(0,0);
- 
-    for (int i = mStartWidthAnchorPoint.x(); i <= mEndWidthAnchorPoint.x(); i++) {
-        for (int j = mStartWidthAnchorPoint.y(); j <= (mStartWidthAnchorPoint.y() + contentHeight); j++) {
-            int index = getIndexForCoordinate(QPointF(i,j));
-            // check that index is not out of bounds
-            if (index == -1) {
-                // update start width point one step
-                mStartWidthAnchorPoint.setX(mStartWidthAnchorPoint.x() + 1); 
-                return false;
-            }
-            // if anchor reserved
-            if (mAnchors[index] == true) {
-                // update start width point one step
-                mStartWidthAnchorPoint.setX(mStartWidthAnchorPoint.x() + 1);
-                return false;
-            }
-        }
-    }
-    mEndHeightAnchorPoint = QPointF(mEndWidthAnchorPoint.x(), mEndWidthAnchorPoint.y() + contentHeight);
-    return true;
-}
-
-/*!    
-    Marks reserved anchor points based on pre-defined starting and ending points
-*/
-bool HsWidgetOrganizer::markReservedAnchors()
-{
-    for (int i = mStartWidthAnchorPoint.x(); i <= mEndWidthAnchorPoint.x(); i++) {
-        for (int j = mStartWidthAnchorPoint.y(); j <= mEndHeightAnchorPoint.y(); j++) {
-            mAnchors[getIndexForCoordinate(QPointF(i,j))] = true;
-        }
-    }
-    return true;
-}
-
-/*!    
-    Returns pixel coordinate based on anchor coordinate
-*/
-QPointF HsWidgetOrganizer::getAnchorCoordinates(int index)
-{
-    if (index < mAnchors.count()) {
-        int x = index % mAnchorColumns;
-        int y = (index - x) / mAnchorColumns;
-        return QPointF(x,y);
-    } else {
-        return QPointF();
-    }
-}
-
-/*!    
-    Returns anchor coordinate based on pixel coordinate
-*/
-int HsWidgetOrganizer::getIndexForCoordinate(QPointF position)
-{
-    int index = (position.y() * mAnchorColumns) + position.x();
-    if (index < mAnchors.count()) {
-        return index;
-    } else {
-        return -1;
-    }
-}
-
-/*!    
-    Calculates pixel length as anchor points
-*/
-int HsWidgetOrganizer::lenghtInAnchorPoints(QVariant length)
-{
-    // check remainder
-    int remainder = length.toInt() % mAnchorDistance;
-    return ((length.toInt() - remainder) / mAnchorDistance);
-}
-
-#ifdef COVERAGE_MEASUREMENT
-#pragma CTC ENDSKIP
-#endif //COVERAGE_MEASUREMENT
-
--- a/homescreenapp/hsutils/src/hswidgetpositioningonwidgetmove.cpp	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/hsutils/src/hswidgetpositioningonwidgetmove.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -488,14 +488,10 @@
 */
 void HsSnapToLines::createVerticalLine()
 {
-    if (mRectLieAbove) {
-        mVerticalLine.setP1(QPointF(mMinDistancePosition, mInactiveRectToCompare.top()));
-        mVerticalLine.setP2(QPointF(mMinDistancePosition, mMovingRect.bottom()));
-    }
-    else {
-        mVerticalLine.setP1(QPointF(mMinDistancePosition, mInactiveRectToCompare.bottom()));
-        mVerticalLine.setP2(QPointF(mMinDistancePosition, mMovingRect.top()));
-    }
+    qreal top = qMin( mInactiveRectToCompare.top(), mMovingRect.top());
+    qreal bottom = qMax(mInactiveRectToCompare.bottom(), mMovingRect.bottom()); 
+    mVerticalLine.setP1(QPointF(mMinDistancePosition, top));
+    mVerticalLine.setP2(QPointF(mMinDistancePosition, bottom));
 }
 
 /*!
@@ -785,16 +781,10 @@
 */
 void HsSnapToLines::createHorizontalLine()
 {
-    if (mRectLieLeft) {
-        //save the points for the Horizontal line
-        mHorizontalLine.setP1(QPointF(mInactiveRectToCompare.left(), mMinDistancePosition));
-        mHorizontalLine.setP2(QPointF(mMovingRect.right(), mMinDistancePosition));
-    }
-    else {
-        //save the points for the Horizontal line
-        mHorizontalLine.setP1(QPointF(mInactiveRectToCompare.right(), mMinDistancePosition));
-        mHorizontalLine.setP2(QPointF(mMovingRect.left(), mMinDistancePosition));
-    }
+    qreal left = qMin( mInactiveRectToCompare.left(), mMovingRect.left());
+    qreal right = qMax(mInactiveRectToCompare.right(), mMovingRect.right()); 
+    mHorizontalLine.setP1(QPointF(left, mMinDistancePosition));
+    mHorizontalLine.setP2(QPointF(right, mMinDistancePosition));
 }
 
 /*!
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsutils/tsrc/t_hsutils/inc/mocksysteminfo.h	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,123 @@
+/*
+* 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:  Mock implementation for system info for testing 
+*
+*/
+
+
+
+
+#ifndef QSYSTEMINFO_H
+#define QSYSTEMINFO_H
+
+#include <QObject>
+#include <QSize>
+#include <QPair>
+#include <QString>
+#include <QStringList>
+
+class  QSystemNetworkInfo : public QObject
+{
+    Q_OBJECT
+    Q_ENUMS(NetworkStatus)
+    Q_ENUMS(NetworkMode)
+
+
+public:
+
+    QSystemNetworkInfo(QObject *parent = 0);
+    ~QSystemNetworkInfo();
+
+    enum NetworkStatus {
+        UndefinedStatus = 0,
+        NoNetworkAvailable,
+        EmergencyOnly,
+        Searching,
+        Busy,
+        Connected,
+        HomeNetwork,
+        Denied,
+        Roaming
+    };
+
+    enum NetworkMode {
+        UnknownMode=0,
+        GsmMode,
+        CdmaMode,
+        WcdmaMode,
+        WlanMode,
+        EthernetMode,
+        BluetoothMode,
+        WimaxMode
+    };
+    Q_DECLARE_FLAGS(NetworkModes, NetworkMode)
+
+    QSystemNetworkInfo::NetworkStatus networkStatus(QSystemNetworkInfo::NetworkMode mode);
+    static int networkSignalStrength(QSystemNetworkInfo::NetworkMode mode);
+    static QString networkName(QSystemNetworkInfo::NetworkMode mode);
+
+signals:
+   void networkStatusChanged(QSystemNetworkInfo::NetworkMode, QSystemNetworkInfo::NetworkStatus);
+   void networkNameChanged(QSystemNetworkInfo::NetworkMode,const QString &);
+   void networkModeChanged(QSystemNetworkInfo::NetworkMode);
+private:
+};
+
+
+class  QSystemDeviceInfo : public QObject
+{
+    Q_OBJECT
+    Q_PROPERTY(Profile currentProfile READ currentProfile)
+    Q_PROPERTY(SimStatus simStatus READ simStatus)
+
+    Q_ENUMS(SimStatus)
+    Q_ENUMS(Profile)
+
+public:
+
+    QSystemDeviceInfo(QObject *parent = 0);
+    virtual ~QSystemDeviceInfo();
+
+    enum Profile {
+        UnknownProfile = 0,
+        SilentProfile,
+        NormalProfile,
+        LoudProfile,
+        VibProfile,
+        OfflineProfile,
+        PowersaveProfile,
+        CustomProfile
+    };
+
+    enum SimStatus {
+        SimNotAvailable = 0,
+        SingleSimAvailable,
+        DualSimAvailable,
+        SimLocked
+	};
+
+    QSystemDeviceInfo::SimStatus simStatus();
+    QSystemDeviceInfo::Profile currentProfile();
+
+signals:
+    void currentProfileChanged(QSystemDeviceInfo::Profile);
+
+private:
+};
+
+
+#endif /*QSYSTEMSINFO_H*/
+
+// End of file
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsutils/tsrc/t_hsutils/inc/t_hsutils.h	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,157 @@
+/*
+* 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:  Test class for homescreen::hsutils
+*
+*/
+
+#include <QtTest/QtTest>
+#include <QWidget>
+#include <QGraphicsView>
+#include <QObject>
+#include <QList>
+#include <QGraphicsWidget>
+#include "hswidgetpositioningonwidgetmove.h"
+
+/**
+* @test Test class for homescreen::hsutils modules.
+*/
+class t_hsUtils : public QObject
+{
+    Q_OBJECT
+
+private slots:
+
+    /**
+     *
+     */
+    void initTestCase();
+
+#ifndef ONLY_MENU_TESTCASES
+    /**
+     * t_hswidgetpositioningonorientationchange.cpp
+     */
+    void testWidgetPositioningOnOrientationChangeInstance();
+    void testAdvancedWidgetPositioningOnOrientationChange_data();
+    void testAdvancedWidgetPositioningOnOrientationChange();
+
+	/**
+     * t_hswidgetpositioningonwidgetmove.cpp
+     */
+    void testWidgetPositioningOnWidgetMoveInstance();
+    void testHsSnapToLinesConstruct();
+    void testHsSnapToLines_data();
+    void testHsSnapToLines();
+    void testHsSnapToLinesSnapDisabled_data();
+    void testHsSnapToLinesSnapDisabled();
+
+
+    /**
+     * t_hspageindicator.cpp
+     */
+    void testPageIndicatorConstruction();
+    void testPageIndicatorActiveItem();
+    void testPageIndicatorAddRemoveItem();
+    void testPageIndicatorAnimations();
+
+    /**
+     * t_trashbinwidget.cpp
+     */
+    void testTrashbinWidgetConstruct();
+    void testTrashbinWidgetActivation();
+
+    /**
+     * t_hssnapline.cpp
+     */
+    void testSnapLineConstruction();
+    void testSnapLineSetConfiguration();
+    void testShowAndHideHorizontalLine();
+    void testShowAndHideVerticalLine();
+    void testHideHorizontalLineWhileFadeInAnimationRunning();
+    void testHideVerticalLineWhileFadeInAnimationRunning();
+    void testShowHorizontalLineWhileFadeOutAnimationRunning();
+    void testShowVerticalLineWhileFadeOutAnimationRunning();
+    void testShowHorizontalLineAtNewPositionWhileFadeOutAnimationRunning();
+    void testShowVerticalLineAtNewPositionWhileFadeOutAnimationRunning();
+
+    /**
+    * t_titleresolver.cpp
+    */
+    void testTitleResolver();
+    void testTitleResolverOnStatusChanged();
+    void testTitleResolverOnNetworkNameChanged();
+
+    /**
+    * t_hsdeviceinfolistener.cpp
+    */
+    void testDeviceInfoListener();
+    void testDeviceInfoListenerNetworkMode_data();
+    void testDeviceInfoListenerNetworkMode();
+    void testDeviceInfoListenerOfflineProfile();
+    void testDeviceInfoListenerNetworkStatusChanged();
+    void testDeviceInfoListenerNetworkNameChanged();
+    void testDeviceInfoListenerNetworkCurrentProfileChanged();
+
+    /**
+    * t_hsspinnderdialog.cpp
+    */
+    void testSpinnerDialog();
+    /**
+    * t_hsmessageboxwrapper.cpp
+    */
+    void testMessageBoxWrapper();
+    /**
+    * t_hspropertyanimationwrapper.cpp
+    */
+    void testPropertyAnimationWrapper();
+
+#else // ONLY_MENU_TESTCASES
+    /**
+     * t_hsutils_menuevent.cpp
+     */
+    void testMenuEventConstruction();
+    void testMenuEventFactoryCreateAddToHomeScreenEvent();
+    void testMenuEventFactoryCreatePreviewHSWidgetEvent();
+    void testMenuEventFactoryCreateAppSettingsViewEvent();
+    void testMenuEventFactoryCreateAppDetailsViewEvent();
+    void testMenuEventFactoryCreateOpenCollectionEvent();
+    void testMenuEventFactoryCreateOpenCollectionFromAppLibraryEvent();
+    void testMenuEventFactoryCreateRenameCollectionEvent();
+    void testMenuEventFactoryCreateNewCollectionEvent();
+    void testMenuEventFactoryCreateDeleteCollectionEvent();
+    void testMenuEventFactoryCreateCollectionDeletedEvent();
+    void testMenuEventFactoryCreateBackFromInstalledViewEvent();
+    void testMenuEventFactoryCreateOpenInstalledViewEvent();
+    void testMenuEventFactorycCreateOpenAppLibraryEvent();
+    void testMenuEventFactoryCreateAddAppsFromApplicationsViewEvent();
+    void testMenuEventFactoryCreateAddAppsFromCallectionViewEvent();
+    void testMenuEventFactoryCreateRemoveAppFromCollectionEvent();
+    void testMenuEventFactoryCreateUninstallApplicationEvent();
+    void testMenuEventFactoryCreateInstLogEvent();
+    void testMenuEventFactoryCreateUnknownEvent();
+    void testMenuEventFactoryOpenHSEvent();
+    void testMenuEventTransitionConstruction();
+    void testMenuEventTransitionTestCondition();
+    void testMenuEventFactoryCreateArrangeCollectionEvent();
+    void testMenuEventFactorycreateArrangeAllCollectionsEvent();
+    void testMenuEventFactoryCreateUninstallFailedEvent();
+    void testMenuDialogFactoryCreate();
+#endif // ONLY_MENU_TESTCASES
+
+    void cleanupTestCase();
+
+private:
+    bool hsLineCompare(QLineF l1, QLineF l2);
+    bool hsResultCompare(const HsWidgetPositioningOnWidgetMove::Result& sr1, const HsWidgetPositioningOnWidgetMove::Result& sr2);
+
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsutils/tsrc/t_hsutils/installs_win32.pri	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,26 @@
+#
+# 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:
+#
+
+testfiles.path = ../../../../../bin/hstests/
+testfiles.files = ./debug/t_hsutils.exe \
+                  *.png \
+                  *.jpg
+                  
+testfiles2.path = ./debug/  
+testfiles2.files = *.png \
+                   *.jpg
+
+INSTALLS += testfiles testfiles2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsutils/tsrc/t_hsutils/sis/t_hsutils.pkg	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,36 @@
+;
+; 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:
+;
+
+; Language
+&EN
+
+; SIS header: name, uid, version
+#{"t_hsutils"},(0x20022F4F),1,0,0
+
+; Localised Vendor name
+%{"Nokia"}
+
+; Unique Vendor name
+:"Nokia"
+
+; Supports S60 5th Edition
+[0x1028315F], 0, 0, 0, {"S60ProductID"}
+
+; HS Utils unittest
+"/epoc32/release/armv5/urel/t_hsutils.exe"                         - "c:/sys/bin/t_hsutils.exe"
+"/epoc32/data/z/private/10003a3f/import/apps/t_hsutils_reg.rsc"    - "c:/private/10003a3f/import/apps/t_hsutils_reg.rsc"
+"/epoc32/data/z/resource/apps/t_hsutils.rsc"                       - "c:/resource/apps/t_hsutils.rsc"
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsutils/tsrc/t_hsutils/sis/t_hsutils_sisx.bat	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,30 @@
+@rem
+@rem Copyright (c) 2009 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 t_hsutils.sisx del t_hsutils.sisx
+
+makesis t_hsutils.pkg
+signsis t_hsutils.sis t_hsutils.sisx ../../../../internal/sis/rd.cer ../../../../internal/sis/rd-key.pem
+
+if exist t_hsutils.sisx (
+echo t_hsutils.sisx creation SUCCEEDED
+del t_hsutils.sis
+)
+
+if not exist t_hsutils.sisx (
+echo t_hsutils.sisx creation FAILED
+)
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsutils/tsrc/t_hsutils/src/mocksysteminfo.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,81 @@
+/*
+* 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:  Mock implementation for system info for testing
+*
+*/
+
+
+#include <QVariant>
+
+#include "mocksysteminfo.h"
+
+
+QSystemNetworkInfo::QSystemNetworkInfo(QObject *parent) : QObject(parent)
+{
+}
+QSystemNetworkInfo::~QSystemNetworkInfo()
+{
+}
+
+QSystemNetworkInfo::NetworkStatus QSystemNetworkInfo::networkStatus(QSystemNetworkInfo::NetworkMode mode)
+{
+// property 'testNetworkMode' -> GsmMode / WcdmaMode, others return NoNetworkAvailable
+// property 'testNetworkStatus' -> NoNetworkAvailable / Connected / HomeNetwork, others return NoNetworkAvailable
+    QSystemNetworkInfo::NetworkStatus networkStatus = NoNetworkAvailable;
+    int modeProperty = property("testNetworkMode").toInt();
+    int statusProperty = property("testNetworkStatus").toInt();
+    if ( modeProperty == mode ) {
+        networkStatus = (QSystemNetworkInfo::NetworkStatus) statusProperty;
+    }
+    return networkStatus;
+}
+
+int QSystemNetworkInfo::networkSignalStrength(QSystemNetworkInfo::NetworkMode mode)
+{
+    Q_UNUSED(mode);
+    return -1;
+}
+
+QString QSystemNetworkInfo::networkName(QSystemNetworkInfo::NetworkMode mode)
+{
+    Q_UNUSED(mode);
+    return QString("Testing");
+}
+
+
+QSystemDeviceInfo::QSystemDeviceInfo(QObject *parent) : QObject(parent)
+{
+}
+QSystemDeviceInfo::~QSystemDeviceInfo()
+{
+}
+
+QSystemDeviceInfo::SimStatus QSystemDeviceInfo::simStatus()
+{
+    if (property("simAvailable").toBool()) {
+        return SingleSimAvailable;
+    }
+    return SimNotAvailable;
+}
+
+QSystemDeviceInfo::Profile QSystemDeviceInfo::currentProfile()
+{
+    if (property("offlineMode").toBool()) {
+        return OfflineProfile;
+    }
+    return NormalProfile;
+}
+
+// End of file
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsutils/tsrc/t_hsutils/src/t_hsdeviceinfolistener.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,172 @@
+/*
+* 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:  Test title resolver.
+*
+*/
+
+#ifndef ONLY_MENU_TESTCASES
+
+#include "t_hsutils.h"
+#include "hsdeviceinfolistener.h"
+
+
+const QString KTestingOperatorName = QString("Testing");
+const QString KTestingOperatorName2 = QString("Testing2");
+
+
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsUtils::testDeviceInfoListener()
+    {
+    HsDeviceInfoListener *infoListener = new HsDeviceInfoListener();
+    QCOMPARE(infoListener->operatorName(), KTestingOperatorName);
+    QCOMPARE(infoListener->status(), HsDeviceInfoListener::NoService);
+    QCOMPARE(infoListener->networkStatus(), QSystemNetworkInfo::UndefinedStatus);
+    infoListener->mNetworkInfo->setProperty("testNetworkMode", QVariant((int)QSystemNetworkInfo::GsmMode));
+    infoListener->mNetworkInfo->setProperty("testNetworkStatus", QVariant(QSystemNetworkInfo::Roaming));
+    infoListener->updateCurrentNetworkMode();
+    QCOMPARE(infoListener->networkStatus(), QSystemNetworkInfo::Roaming);
+
+    delete infoListener;
+    }
+
+void t_hsUtils::testDeviceInfoListenerNetworkMode_data()
+    {
+    QTest::addColumn<int>("Mode");
+    QTest::addColumn<int>("Status");
+    QTest::addColumn<int>("Expected");
+    QTest::newRow("Gsm1")
+        << (int)QSystemNetworkInfo::GsmMode
+        << (int)QSystemNetworkInfo::NoNetworkAvailable
+        << (int)HsDeviceInfoListener::NoService;
+    QTest::newRow("Gsm2")
+        << (int)QSystemNetworkInfo::GsmMode
+        << (int)QSystemNetworkInfo::Connected
+        << (int)HsDeviceInfoListener::ServiceAvailable;
+    QTest::newRow("Gsm3")
+        << (int)QSystemNetworkInfo::GsmMode
+        << (int)QSystemNetworkInfo::HomeNetwork
+        << (int)HsDeviceInfoListener::ServiceAvailable;
+    QTest::newRow("Gsm4")
+        << (int)QSystemNetworkInfo::GsmMode
+        << (int)QSystemNetworkInfo::Roaming
+        << (int)HsDeviceInfoListener::ServiceAvailable;
+    QTest::newRow("Wcdma1")
+        << (int)QSystemNetworkInfo::WcdmaMode
+        << (int)QSystemNetworkInfo::NoNetworkAvailable
+        << (int)HsDeviceInfoListener::NoService;
+    QTest::newRow("Wcdma2")
+        << (int)QSystemNetworkInfo::WcdmaMode
+        << (int)QSystemNetworkInfo::Connected
+        << (int)HsDeviceInfoListener::ServiceAvailable;
+    QTest::newRow("Wcdma3")
+        << (int)QSystemNetworkInfo::WcdmaMode
+        << (int)QSystemNetworkInfo::HomeNetwork
+        << (int)HsDeviceInfoListener::ServiceAvailable;
+    QTest::newRow("Wcdma4")
+        << (int)QSystemNetworkInfo::WcdmaMode
+        << (int)QSystemNetworkInfo::Roaming
+        << (int)HsDeviceInfoListener::ServiceAvailable;
+
+    }
+void t_hsUtils::testDeviceInfoListenerNetworkMode()
+    {
+    QFETCH(int, Mode);
+    QFETCH(int, Status);
+    QFETCH(int, Expected);
+
+    HsDeviceInfoListener *infoListener = new HsDeviceInfoListener();
+    infoListener->mNetworkInfo->setProperty("testNetworkMode", QVariant(Mode));
+    infoListener->mNetworkInfo->setProperty("testNetworkStatus", QVariant(Status));
+    infoListener->updateCurrentNetworkMode();
+    infoListener->updateStatus();
+    QCOMPARE(infoListener->operatorName(), KTestingOperatorName);
+    QCOMPARE((int)infoListener->status(), Expected);
+    delete infoListener;
+    }
+
+void t_hsUtils::testDeviceInfoListenerOfflineProfile()
+    {
+    HsDeviceInfoListener *infoListener = new HsDeviceInfoListener();
+    infoListener->mDeviceInfo->setProperty("offlineMode", QVariant(true));
+    infoListener->updateCurrentNetworkMode();
+    infoListener->updateStatus();
+
+    if (infoListener->simStatus() == QSystemDeviceInfo::SimNotAvailable) {
+    	QCOMPARE(infoListener->status(), HsDeviceInfoListener::NoService);
+    }
+    else {
+    	QCOMPARE(infoListener->status(), HsDeviceInfoListener::OfflineProfile);
+    }
+    delete infoListener;
+    }
+
+void t_hsUtils::testDeviceInfoListenerNetworkStatusChanged()
+    {
+    qRegisterMetaType<HsDeviceInfoListener::HsDeviceInfoStatus>(
+        "HsDeviceInfoListener::HsDeviceInfoStatus");
+
+    HsDeviceInfoListener *infoListener = new HsDeviceInfoListener();
+    QSignalSpy spy(infoListener, SIGNAL(statusChanged(HsDeviceInfoListener::HsDeviceInfoStatus)));
+
+    infoListener->onNetworkStatusChanged(QSystemNetworkInfo::GsmMode, QSystemNetworkInfo::Roaming);
+    QCOMPARE(spy.count(), 0);
+
+    infoListener->mNetworkInfo->setProperty("testNetworkMode", QVariant((int)QSystemNetworkInfo::GsmMode));
+    infoListener->mNetworkInfo->setProperty("testNetworkStatus", QVariant(QSystemNetworkInfo::Roaming));
+    infoListener->onNetworkStatusChanged(QSystemNetworkInfo::GsmMode, QSystemNetworkInfo::Roaming);
+    QCOMPARE(spy.count(), 1);
+
+    delete infoListener;
+    }
+
+void t_hsUtils::testDeviceInfoListenerNetworkNameChanged()
+    {
+    HsDeviceInfoListener *infoListener = new HsDeviceInfoListener();
+    QSignalSpy spy(infoListener, SIGNAL(networkNameChanged(const QString &)));
+
+    infoListener->onNetworkNameChanged(QSystemNetworkInfo::GsmMode, KTestingOperatorName2);
+    // this should not emit anything because UnknownMode
+    QCOMPARE(spy.count(), 0);
+
+    infoListener->mNetworkInfo->setProperty("testNetworkMode", QVariant((int)QSystemNetworkInfo::GsmMode));
+    infoListener->mNetworkInfo->setProperty("testNetworkStatus", QVariant(QSystemNetworkInfo::Roaming));
+    infoListener->onNetworkNameChanged(QSystemNetworkInfo::GsmMode, KTestingOperatorName);
+    QCOMPARE(spy.count(), 1);
+    QList<QVariant> arguments = spy.takeFirst();
+    QCOMPARE(arguments.at(0).toString(), KTestingOperatorName);
+
+    delete infoListener;
+    }
+
+void t_hsUtils::testDeviceInfoListenerNetworkCurrentProfileChanged()
+    {
+    HsDeviceInfoListener *infoListener = new HsDeviceInfoListener();
+    infoListener->mDeviceInfo->setProperty("offlineMode", QVariant(true));
+    infoListener->updateCurrentNetworkMode();
+    qRegisterMetaType<HsDeviceInfoListener::HsDeviceInfoStatus>(
+        "HsDeviceInfoListener::HsDeviceInfoStatus");
+    QSignalSpy spy(infoListener, SIGNAL(statusChanged(HsDeviceInfoListener::HsDeviceInfoStatus)));
+
+    infoListener->mDeviceInfo->setProperty("simAvailable", QVariant(true));
+    if (infoListener->simStatus() != QSystemDeviceInfo::SimNotAvailable) {
+        infoListener->onCurrentProfileChanged(QSystemDeviceInfo::OfflineProfile);
+        QCOMPARE(spy.count(), 1);
+    }
+    delete infoListener;
+    }
+
+#endif // ONLY_MENU_TESTCASES
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsutils/tsrc/t_hsutils/src/t_hsmenudialogfactory.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,54 @@
+/*
+* 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 <QString>
+#include <QScopedPointer>
+
+#include <HbGlobal>
+#include <HbAction>
+#include <HbMessageBox>
+#include "hsmenudialogfactory.h"
+#include "t_hsutils.h"
+
+
+#ifdef ONLY_MENU_TESTCASES
+
+void t_hsUtils::testMenuDialogFactoryCreate()
+{
+    HsMenuDialogFactory hsMenuDialogFactory;
+    const QString message("testMessage");
+    QScopedPointer<HbMessageBox> box(
+            hsMenuDialogFactory.create(message, HsMenuDialogFactory::OkCancel));
+
+    QVERIFY(box);
+    QCOMPARE(box->text(), message);
+    QCOMPARE(box->actions().count(), 2);
+    QCOMPARE(box->actions().at(HsMenuDialogFactory::acceptActionIndex())->text(),
+             hbTrId("txt_common_button_ok"));
+    QCOMPARE(box->actions().at(HsMenuDialogFactory::rejectActionIndex())->text(),
+             hbTrId("txt_common_button_cancel"));
+
+    box.reset(
+            hsMenuDialogFactory.create(message, HsMenuDialogFactory::Close));
+
+    QVERIFY(box);
+    QCOMPARE(box->text(), message);
+    QCOMPARE(box->actions().count(), 1);
+    QCOMPARE(box->actions().at(HsMenuDialogFactory::acceptActionIndex())->text(),
+             hbTrId("txt_common_button_close"));
+}
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsutils/tsrc/t_hsutils/src/t_hsmessageboxwrapper.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,34 @@
+/*
+* 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 ONLY_MENU_TESTCASES
+
+#include "t_hsutils.h"
+#include "hsmessageboxwrapper.h"
+
+
+void  t_hsUtils::testMessageBoxWrapper()
+{
+    HsMessageBoxWrapper msgBox;
+    msgBox.setHeader("Why?");
+    msgBox.setQueryText("Do You really want to do it?");
+
+    emit msgBox.accepted();
+    emit msgBox.rejected();
+}
+
+#endif // ONLY_MENU_TESTCASES
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsutils/tsrc/t_hsutils/src/t_hspageindicator.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,152 @@
+/*
+* 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 ONLY_MENU_TESTCASES
+
+#include "t_hsutils.h"
+#include "hspageindicator.h"
+#include "hspageindicatoritem.h"
+
+#include <QGraphicsLayout>
+#include <QGraphicsLinearLayout>
+
+void  t_hsUtils::testPageIndicatorConstruction()
+{
+    HsPageIndicator pi(8);
+    QCOMPARE(pi.itemCount(), 0);
+    QCOMPARE(pi.activeItemIndex(), -1);
+
+    pi.initialize(-1, -1);
+    QCOMPARE(pi.itemCount(), 0);
+    QCOMPARE(pi.activeItemIndex(), -1);
+
+    pi.initialize(0, -1);
+    QCOMPARE(pi.itemCount(), 0);
+    QCOMPARE(pi.activeItemIndex(), -1);
+
+    pi.initialize(1, -1);
+    QCOMPARE(pi.itemCount(), 0);
+    QCOMPARE(pi.activeItemIndex(), -1);
+
+    pi.initialize(1, 2);
+    QCOMPARE(pi.itemCount(), 0);
+    QCOMPARE(pi.activeItemIndex(), -1);
+
+    pi.initialize(3, 1);
+    QCOMPARE(pi.itemCount(), 3);
+    QCOMPARE(pi.activeItemIndex(), 1);
+
+    pi.initialize(3, 2);
+    QCOMPARE(pi.itemCount(), 3);
+    QCOMPARE(pi.activeItemIndex(), 2);
+}
+
+void t_hsUtils::testPageIndicatorActiveItem()
+{
+    HsPageIndicator pi(8);
+    pi.initialize(3, 1);
+    QCOMPARE(pi.itemCount(), 3);
+    QCOMPARE(pi.activeItemIndex(), 1);
+
+    pi.setActiveItemIndex(1);
+    QCOMPARE(pi.activeItemIndex(), 1);
+
+    pi.setActiveItemIndex(0);
+    QCOMPARE(pi.activeItemIndex(), 0);
+
+    pi.setActiveItemIndex(2);
+    QCOMPARE(pi.activeItemIndex(), 2);
+
+    pi.setActiveItemIndex(-1);
+    QCOMPARE(pi.activeItemIndex(), 2);
+
+    pi.setActiveItemIndex(3);
+    QCOMPARE(pi.activeItemIndex(), 2);
+
+    QCOMPARE(pi.mItems.at(0)->isActive(), false);
+    QCOMPARE(pi.mItems.at(1)->isActive(), false);
+    QCOMPARE(pi.mItems.at(2)->isActive(), true);
+}
+
+void t_hsUtils::testPageIndicatorAddRemoveItem()
+{
+    HsPageIndicator pi(8);
+    pi.initialize(3, 1);
+    QCOMPARE(pi.itemCount(), 3);
+    QCOMPARE(pi.activeItemIndex(), 1);
+
+    pi.addItem(-1);
+    QCOMPARE(pi.itemCount(), 3);
+    QCOMPARE(pi.activeItemIndex(), 1);
+
+    pi.addItem(4);
+    QCOMPARE(pi.itemCount(), 3);
+    QCOMPARE(pi.activeItemIndex(), 1);
+
+    pi.addItem(0);
+    QCOMPARE(pi.itemCount(), 4);
+    QCOMPARE(pi.activeItemIndex(), 0);
+
+    pi.addItem(4);
+    QCOMPARE(pi.itemCount(), 5);
+    QCOMPARE(pi.activeItemIndex(), 4);
+
+    pi.addItem(6);
+    QCOMPARE(pi.itemCount(), 5);
+    QCOMPARE(pi.activeItemIndex(), 4);
+
+    pi.removeItem(-1);
+    QCOMPARE(pi.itemCount(), 5);
+    QCOMPARE(pi.activeItemIndex(), 4);
+
+    pi.removeItem(5);
+    QCOMPARE(pi.itemCount(), 5);
+    QCOMPARE(pi.activeItemIndex(), 4);
+
+    pi.removeItem(4);
+    QCOMPARE(pi.itemCount(), 4);
+    QCOMPARE(pi.activeItemIndex(), 3);
+
+    pi.removeItem(3);
+    QCOMPARE(pi.itemCount(), 3);
+    QCOMPARE(pi.activeItemIndex(), 2);
+
+    pi.removeItem(0);
+    QCOMPARE(pi.itemCount(), 2);
+    QCOMPARE(pi.activeItemIndex(), 0);
+}
+
+void t_hsUtils::testPageIndicatorAnimations()
+{
+    HsPageIndicator pi(8);
+    pi.initialize(3, 1);
+    pi.setSpacing(8);
+
+    QCOMPARE(pi.isAnimationRunning(), false);
+    pi.setActiveItemIndex(0);
+    QCOMPARE(pi.isAnimationRunning(), true);
+
+    int i = 5;
+    do {
+        QTest::qWait(1000);
+    } while (pi.isAnimationRunning() && --i);
+    if (!i) {
+        QFAIL("testPageIndicatorAnimations() failed");
+    }
+}
+
+#endif // ONLY_MENU_TESTCASES
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsutils/tsrc/t_hsutils/src/t_hspropertyanimationwrapper.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,64 @@
+/*
+* 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 ONLY_MENU_TESTCASES
+
+#include "t_hsutils.h"
+#include "hspropertyanimationwrapper.h"
+
+class TestObject: public QObject
+{
+    Q_OBJECT
+    Q_PROPERTY(int number READ number WRITE setNumber)
+public:
+    TestObject(QObject *parent=0):QObject(parent),mNumber(0){}
+    int number()const { return mNumber; }
+    void setNumber(int num) {mNumber = num; }
+private:
+    int mNumber;
+};
+#include "t_hspropertyanimationwrapper.moc"
+
+void  t_hsUtils::testPropertyAnimationWrapper()
+{
+    HsPropertyAnimationWrapper propertyAnimation;
+    TestObject target;
+   
+    propertyAnimation.setTargetObject(&target);
+    propertyAnimation.setDuration(1);
+    propertyAnimation.setEndValue(5);
+    propertyAnimation.setPropertyName("number");
+    
+    QSignalSpy spy(&propertyAnimation,SIGNAL(finished()));
+    propertyAnimation.start();
+    QTest::qWait(100);
+    
+    QVERIFY(!propertyAnimation.isRunning());
+    QCOMPARE(spy.count(),1);
+    QVERIFY(target.number() == 5);
+    propertyAnimation.stop();
+    
+    propertyAnimation.setForward();
+    QVERIFY(propertyAnimation.isForward());
+
+    propertyAnimation.setBackward();
+    QVERIFY(!propertyAnimation.isForward());
+    
+    propertyAnimation.setEasingCurve(QEasingCurve::Linear);
+}
+
+#endif // ONLY_MENU_TESTCASES
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsutils/tsrc/t_hsutils/src/t_hssnapline.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,305 @@
+/*
+* 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 ONLY_MENU_TESTCASES
+
+#include "t_hsutils.h"
+#include "hssnapline.h"
+#include "hsapp_defs.h"
+
+void t_hsUtils::testSnapLineConstruction()
+{
+    HsSnapLine sl = HsSnapLine();
+
+    QVERIFY(sl.mFadeInAnimation);
+    QVERIFY(sl.mFadeOutAnimation);
+
+    QVERIFY(qFuzzyCompare(sl.mOpacity, 0));
+    QCOMPARE(sl.mFadeInAnimationDuration,0);
+    QCOMPARE(sl.mFadeOutAnimationDuration,0);
+}
+
+void t_hsUtils::testSnapLineSetConfiguration()
+{
+    HsSnapLine sl = HsSnapLine();
+    QVariantHash configuration;
+    configuration[Hs::snapLineFadeinDuration] = QString::number(1000);
+    configuration[Hs::snapLineFadeoutDuration] = QString::number(500);
+
+    sl.setConfiguration(configuration);
+
+    QCOMPARE(sl.mFadeInAnimationDuration, 1000);
+    QCOMPARE(sl.mFadeOutAnimationDuration , 500);
+}
+
+void t_hsUtils::testShowAndHideHorizontalLine()
+{
+    HsSnapLine slHorizontal = HsSnapLine();
+    QVariantHash configuration;
+    configuration[Hs::snapLineFadeinDuration] = QString::number(1000);
+    configuration[Hs::snapLineFadeoutDuration] = QString::number(500);
+
+    slHorizontal.setConfiguration(configuration);
+
+    //before showing the line, no animation should be running
+    QVERIFY(!slHorizontal.isFadeInAnimationRunning());
+    QVERIFY(!slHorizontal.isFadeOutAnimationRunning());
+
+    QLineF horizontalLine(QPointF(100,100), QPointF(200,100));
+    slHorizontal.showLine(horizontalLine);
+    QVERIFY(slHorizontal.isFadeInAnimationRunning());
+    QTest::qWait(2000);
+    QVERIFY(!slHorizontal.isFadeInAnimationRunning());
+
+    //before hiding the line, fade out animation should not be running
+    QVERIFY(!slHorizontal.isFadeOutAnimationRunning());
+
+    slHorizontal.hideLine();
+    QVERIFY(slHorizontal.isFadeOutAnimationRunning());
+    QTest::qWait(1000);
+    QVERIFY(!slHorizontal.isFadeOutAnimationRunning());
+}
+
+void t_hsUtils::testShowAndHideVerticalLine()
+{
+    HsSnapLine slVertical = HsSnapLine();
+    QVariantHash configuration;
+    configuration[Hs::snapLineFadeinDuration] = QString::number(1000);
+    configuration[Hs::snapLineFadeoutDuration] = QString::number(500);
+
+    slVertical.setConfiguration(configuration);
+
+    //before showing the line, fade in animation should not be running
+    QVERIFY(!slVertical.isFadeInAnimationRunning());
+    QVERIFY(!slVertical.isFadeOutAnimationRunning());
+
+    QLineF verticalLine(QPointF(100, 100), QPointF(100, 200));
+    slVertical.showLine(verticalLine);
+    QVERIFY(slVertical.isFadeInAnimationRunning());
+    QTest::qWait(2000);
+    QVERIFY(!slVertical.isFadeInAnimationRunning());
+
+    //before hiding the line, fade out animation should not be running
+    QVERIFY(!slVertical.isFadeOutAnimationRunning());
+
+    slVertical.hideLine();
+    QVERIFY(slVertical.isFadeOutAnimationRunning());
+    QTest::qWait(1000);
+    QVERIFY(!slVertical.isFadeOutAnimationRunning());
+}
+
+void t_hsUtils::testHideHorizontalLineWhileFadeInAnimationRunning()
+{
+    HsSnapLine slHorizontal = HsSnapLine();
+    QVariantHash configuration;
+    configuration[Hs::snapLineFadeinDuration] = QString::number(1000);
+    configuration[Hs::snapLineFadeoutDuration] = QString::number(500);
+
+    slHorizontal.setConfiguration(configuration);
+
+    //before showing the line, no animation should be running
+    QVERIFY(!slHorizontal.isFadeInAnimationRunning());
+    QVERIFY(!slHorizontal.isFadeOutAnimationRunning());
+
+    QLineF horizontalLine(QPointF(100,100), QPointF(200,100));
+    slHorizontal.showLine(horizontalLine);
+    QVERIFY(slHorizontal.isFadeInAnimationRunning());
+    //Wait only 250ms and call the hideLine()
+    QTest::qWait(250);
+
+    //before hiding the line, fade out animation should not be running
+    QVERIFY(!slHorizontal.isFadeOutAnimationRunning());
+
+    slHorizontal.hideLine();
+    QVERIFY(slHorizontal.isFadeOutAnimationRunning());
+    QTest::qWait(1000);
+    QVERIFY(!slHorizontal.isFadeOutAnimationRunning());
+}
+
+void t_hsUtils::testHideVerticalLineWhileFadeInAnimationRunning()
+{
+    HsSnapLine slVertical = HsSnapLine();
+    QVariantHash configuration;
+    configuration[Hs::snapLineFadeinDuration] = QString::number(1000);
+    configuration[Hs::snapLineFadeoutDuration] = QString::number(500);
+
+    slVertical.setConfiguration(configuration);
+
+    //before showing the line, fade in animation should not be running
+    QVERIFY(!slVertical.isFadeInAnimationRunning());
+    QVERIFY(!slVertical.isFadeOutAnimationRunning());
+
+    QLineF verticalLine(QPointF(100, 100), QPointF(100, 200));
+    slVertical.showLine(verticalLine);
+    QVERIFY(slVertical.isFadeInAnimationRunning());
+    //Wait only 250ms and call the hideLine()
+    QTest::qWait(250);
+
+    //before hiding the line, fade out animation should not be running
+    QVERIFY(!slVertical.isFadeOutAnimationRunning());
+
+    slVertical.hideLine();
+    QVERIFY(slVertical.isFadeOutAnimationRunning());
+    QTest::qWait(1000);
+    QVERIFY(!slVertical.isFadeOutAnimationRunning());
+}
+
+void t_hsUtils::testShowHorizontalLineWhileFadeOutAnimationRunning()
+{
+    HsSnapLine slHorizontal = HsSnapLine();
+    QVariantHash configuration;
+    configuration[Hs::snapLineFadeinDuration] = QString::number(1000);
+    configuration[Hs::snapLineFadeoutDuration] = QString::number(500);
+
+    slHorizontal.setConfiguration(configuration);
+
+    //before showing the line, no animation should be running
+    QVERIFY(!slHorizontal.isFadeInAnimationRunning());
+    QVERIFY(!slHorizontal.isFadeOutAnimationRunning());
+
+    QLineF horizontalLine(QPointF(100,100), QPointF(200,100));
+    slHorizontal.showLine(horizontalLine);
+    QVERIFY(slHorizontal.isFadeInAnimationRunning());
+    QTest::qWait(2000);
+    QVERIFY(!slHorizontal.isFadeInAnimationRunning());
+
+    //before hiding the line, fade out animation should not be running
+    QVERIFY(!slHorizontal.isFadeOutAnimationRunning());
+
+    slHorizontal.hideLine();
+    QVERIFY(slHorizontal.isFadeOutAnimationRunning());
+    //ShowLine is called to show the line at the same location, where the line was displayed before.
+    //Wait only 250ms and call the showline()
+    QTest::qWait(250);
+
+    slHorizontal.showLine(horizontalLine);
+    QVERIFY(!slHorizontal.isFadeOutAnimationRunning());
+    QVERIFY(slHorizontal.isFadeInAnimationRunning());
+    QTest::qWait(2000);
+}
+
+void t_hsUtils::testShowVerticalLineWhileFadeOutAnimationRunning()
+{
+    HsSnapLine slVertical = HsSnapLine();
+    QVariantHash configuration;
+    configuration[Hs::snapLineFadeinDuration] = QString::number(1000);
+    configuration[Hs::snapLineFadeoutDuration] = QString::number(500);
+
+    slVertical.setConfiguration(configuration);
+
+    //before showing the line, fade in animation should not be running
+    QVERIFY(!slVertical.isFadeInAnimationRunning());
+    QVERIFY(!slVertical.isFadeOutAnimationRunning());
+
+    QLineF verticalLine(QPointF(100, 100), QPointF(100, 200));
+    slVertical.showLine(verticalLine);
+    QVERIFY(slVertical.isFadeInAnimationRunning());
+    QTest::qWait(2000);
+    QVERIFY(!slVertical.isFadeInAnimationRunning());
+
+    //before hiding the line, fade out animation should not be running
+    QVERIFY(!slVertical.isFadeOutAnimationRunning());
+
+    slVertical.hideLine();
+    QVERIFY(slVertical.isFadeOutAnimationRunning());
+    //ShowLine is called to show the line at the same location, where the line was displayed before.
+    //Wait only 250ms and call the showline()
+    QTest::qWait(250);
+
+    slVertical.showLine(verticalLine);
+    QVERIFY(!slVertical.isFadeOutAnimationRunning());
+    QVERIFY(slVertical.isFadeInAnimationRunning());
+    QTest::qWait(2000);
+}
+
+void t_hsUtils::testShowHorizontalLineAtNewPositionWhileFadeOutAnimationRunning()
+{
+    HsSnapLine slHorizontal = HsSnapLine();
+    QVariantHash configuration;
+    configuration[Hs::snapLineFadeinDuration] = QString::number(1000);
+    configuration[Hs::snapLineFadeoutDuration] = QString::number(500);
+
+    slHorizontal.setConfiguration(configuration);
+
+    //before showing the line, no animation should be running
+    QVERIFY(!slHorizontal.isFadeInAnimationRunning());
+    QVERIFY(!slHorizontal.isFadeOutAnimationRunning());
+
+    QLineF horizontalLine(QPointF(100,100), QPointF(200,100));
+    slHorizontal.showLine(horizontalLine);
+    QVERIFY(slHorizontal.isFadeInAnimationRunning());
+    QTest::qWait(2000);
+    QVERIFY(!slHorizontal.isFadeInAnimationRunning());
+
+    //before hiding the line, fade out animation should not be running
+    QVERIFY(!slHorizontal.isFadeOutAnimationRunning());
+
+    slHorizontal.hideLine();
+    QVERIFY(slHorizontal.isFadeOutAnimationRunning());
+    QTest::qWait(250);
+
+    //construct a new line which is 100 pixels horizontally away from previous horizontal line
+    QLineF newHorizontalLine(QPointF(100,200), QPointF(200,200));
+    slHorizontal.showLine(newHorizontalLine);
+    QVERIFY(!slHorizontal.isFadeOutAnimationRunning());
+    QVERIFY(slHorizontal.isFadeInAnimationRunning());
+    QTest::qWait(2000);
+    QVERIFY(!slHorizontal.isFadeInAnimationRunning());
+    //As the line is moved by 1 pixel before display, here the line is translated for comparison
+    newHorizontalLine.translate(0.0, -1.0);
+    QVERIFY(newHorizontalLine == slHorizontal.line());
+}
+
+void t_hsUtils::testShowVerticalLineAtNewPositionWhileFadeOutAnimationRunning()
+{
+    HsSnapLine slVertical = HsSnapLine();
+    QVariantHash configuration;
+    configuration[Hs::snapLineFadeinDuration] = QString::number(1000);
+    configuration[Hs::snapLineFadeoutDuration] = QString::number(500);
+
+    slVertical.setConfiguration(configuration);
+
+    //before showing the line, fade in animation should not be running
+    QVERIFY(!slVertical.isFadeInAnimationRunning());
+    QVERIFY(!slVertical.isFadeOutAnimationRunning());
+
+    QLineF verticalLine(QPointF(100, 100), QPointF(100, 200));
+    slVertical.showLine(verticalLine);
+    QVERIFY(slVertical.isFadeInAnimationRunning());
+    QTest::qWait(2000);
+    QVERIFY(!slVertical.isFadeInAnimationRunning());
+
+    //before hiding the line, fade out animation should not be running
+    QVERIFY(!slVertical.isFadeOutAnimationRunning());
+
+    slVertical.hideLine();
+    QVERIFY(slVertical.isFadeOutAnimationRunning());
+    QTest::qWait(250);
+
+    //construct a new line which is 100 pixels vertically away from previous vertical line
+    QLineF newVerticalLine(QPointF(200, 100), QPointF(200, 200));
+    slVertical.showLine(newVerticalLine);
+    QVERIFY(!slVertical.isFadeOutAnimationRunning());
+    QVERIFY(slVertical.isFadeInAnimationRunning());
+    QTest::qWait(2000);
+    QVERIFY(!slVertical.isFadeInAnimationRunning());
+    //As the line is moved by 1 pixel before display, here the line is translated for comparison
+    newVerticalLine.translate(-1.0, 0.0);
+    QVERIFY(newVerticalLine == slVertical.line());
+}
+
+#endif // ONLY_MENU_TESTCASES
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsutils/tsrc/t_hsutils/src/t_hsspinnerdialog.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,41 @@
+/*
+* 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:  Test title resolver.
+*
+*/
+#include <HbMainWindow>
+#include <HbView>
+
+#include "t_hsutils.h"
+#include "hsspinnerdialog.h"
+
+#ifndef ONLY_MENU_TESTCASES
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsUtils::testSpinnerDialog()
+{
+    HbMainWindow mainWindow;
+    
+    HsSpinnerDialog *dialog = new HsSpinnerDialog();
+    QVERIFY(!dialog->isVisible());
+    
+    dialog->start();    
+    QVERIFY(dialog->isVisible());
+    dialog->stop();    
+    // dialog deletes itself
+}
+
+#endif // ONLY_MENU_TESTCASES
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsutils/tsrc/t_hsutils/src/t_hstitleresolver.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,109 @@
+/*
+* 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:  Test title resolver.
+*
+*/
+
+#ifndef ONLY_MENU_TESTCASES
+
+#include "t_hsutils.h"
+#include "hstitleresolver.h"
+
+
+const QString KTestingOperatorName = QString("Testing");
+const QString KTestingOperatorName2 = QString("Testing2");
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsUtils::testTitleResolver()
+    {
+    HsTitleResolver *titleResolver = new HsTitleResolver();
+    QCOMPARE(titleResolver->title(), titleResolver->mNoServiceText);
+
+    titleResolver->mDeviceInfoListener->mNetworkInfo->setProperty("testNetworkMode", QVariant((int)QSystemNetworkInfo::GsmMode));
+    titleResolver->mDeviceInfoListener->mNetworkInfo->setProperty("testNetworkStatus", QVariant(QSystemNetworkInfo::Roaming));
+    titleResolver->mDeviceInfoListener->updateCurrentNetworkMode();
+    titleResolver->mDeviceInfoListener->updateStatus();
+
+    QCOMPARE(titleResolver->title(), KTestingOperatorName);
+
+    titleResolver->mOperatorName.clear();
+    titleResolver->mDeviceInfoListener->updateCurrentNetworkMode();
+    titleResolver->mDeviceInfoListener->updateStatus();
+    QCOMPARE(titleResolver->title(), KTestingOperatorName);
+
+    delete titleResolver;
+
+    }
+
+void t_hsUtils::testTitleResolverOnStatusChanged()
+    {
+    HsTitleResolver *titleResolver = new HsTitleResolver();
+
+    qRegisterMetaType<HsDeviceInfoListener::HsDeviceInfoStatus>(
+        "HsDeviceInfoListener::HsDeviceInfoStatus");
+    QSignalSpy spy(titleResolver, SIGNAL(titleChanged(const QString &)));
+
+    titleResolver->onStatusChanged(HsDeviceInfoListener::ServiceAvailable);
+    QCOMPARE(spy.count(), 1);
+    QList<QVariant> arguments = spy.takeFirst();
+    QCOMPARE(arguments.at(0).toString(), KTestingOperatorName);
+    QCOMPARE(titleResolver->title(), KTestingOperatorName);
+    spy.clear();
+    titleResolver->onStatusChanged(HsDeviceInfoListener::ServiceAvailable);
+    QCOMPARE(spy.count(), 0);
+
+    titleResolver->onStatusChanged(HsDeviceInfoListener::OfflineProfile);
+    QCOMPARE(spy.count(), 1);
+    arguments = spy.takeFirst();
+    QCOMPARE(arguments.at(0).toString(), titleResolver->mOfflineText);
+    QCOMPARE(titleResolver->title(), titleResolver->mOfflineText);
+
+    delete titleResolver;
+    }
+
+void t_hsUtils::testTitleResolverOnNetworkNameChanged()
+    {
+    HsTitleResolver *titleResolver = new HsTitleResolver();
+    QCOMPARE(titleResolver->title(), titleResolver->mNoServiceText);
+
+    qRegisterMetaType<HsDeviceInfoListener::HsDeviceInfoStatus>(
+        "HsDeviceInfoListener::HsDeviceInfoStatus");
+    QSignalSpy spy(titleResolver, SIGNAL(titleChanged(const QString &)));
+
+    titleResolver->onNetworkNameChanged(KTestingOperatorName);
+    // this should not emit anything because UnknownMode
+    QCOMPARE(spy.count(), 0);
+
+    titleResolver->mCurrentStatus = HsDeviceInfoListener::ServiceAvailable;
+    titleResolver->onNetworkNameChanged(KTestingOperatorName2);
+    QCOMPARE(spy.count(), 1);
+    QList<QVariant> arguments = spy.takeFirst();
+    QCOMPARE(arguments.at(0).toString(), KTestingOperatorName2);
+
+    spy.clear();
+    titleResolver->onNetworkNameChanged(KTestingOperatorName);
+    QCOMPARE(spy.count(), 1);
+    arguments = spy.takeFirst();
+    QCOMPARE(arguments.at(0).toString(), KTestingOperatorName);
+
+    spy.clear();
+    titleResolver->onNetworkNameChanged(KTestingOperatorName);
+    QCOMPARE(spy.count(), 0);
+
+    delete titleResolver;
+    }
+
+#endif //ONLY_MENU_TESTCASES
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsutils/tsrc/t_hsutils/src/t_hsutils.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,42 @@
+/*
+* 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:  Main test class for hsutils library.
+*
+*/
+
+
+#include "t_hsutils.h"
+
+
+
+
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsUtils::initTestCase()
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsUtils::cleanupTestCase()
+    {
+    }
+
+
+
+
+QTEST_MAIN(t_hsUtils)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsutils/tsrc/t_hsutils/src/t_hsutils_menuevent.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,528 @@
+/*
+* 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:
+*
+*/
+
+
+#ifdef ONLY_MENU_TESTCASES
+
+#include <QState>
+
+#include "t_hsutils.h"
+#include "hsmenuevent.h"
+#include "hsmenueventfactory.h"
+#include "hsmenueventtransition.h"
+#include "hsapp_defs.h"
+
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsUtils::testMenuEventConstruction()
+{
+    QVariantMap sourceMap;
+    sourceMap.insert("my_key", "my_value");
+    HsMenuEvent menuEvent(HsMenuEvent::AddToHomeScreen, sourceMap);
+
+    QVariantMap resultMap = menuEvent.data();
+    QString value(resultMap.value("my_key").toString());
+    HsMenuEvent::OperationType opType = menuEvent.operation();
+
+    QCOMPARE(value, QString("my_value"));
+    QCOMPARE(opType, HsMenuEvent::AddToHomeScreen);
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsUtils::testMenuEventFactoryCreateAddToHomeScreenEvent()
+{
+
+    {
+        const int expectedId = 12345;
+        const QString expectedEntryTypeName("");
+        const QString expectedUri("");
+        const QString expectedLibrary("");
+
+        QSharedPointer<QEvent>
+        menuEvent(HsMenuEventFactory::createAddToHomeScreenEvent(
+                expectedId, Hs::NormalHsMenuMode));
+        QCOMPARE(static_cast<HsMenuEvent *>(menuEvent.data())->operation(),
+                 HsMenuEvent::AddToHomeScreen);
+
+        QVariantMap resultMap = static_cast<HsMenuEvent *>(
+                menuEvent.data())->data();
+        const int id = resultMap.value(Hs::itemIdKey).toInt();
+        const QString widgetUri(
+                resultMap.value(Hs::widgetUriAttributeName).toString());
+        const QString widgetLibrary(
+                resultMap.value(Hs::widgetLibraryAttributeName).toString());
+        const QString entryTypeName(
+                resultMap.value(Hs::entryTypeNameKey).toString());
+
+        QCOMPARE(expectedId, id);
+        QCOMPARE(expectedUri, widgetUri);
+        QCOMPARE(expectedLibrary, widgetLibrary);
+        QCOMPARE(expectedEntryTypeName, entryTypeName);
+    }
+
+    {
+        int expectedEntrId(667);
+
+        QSharedPointer<QEvent>
+        menuEvent(HsMenuEventFactory::createAddToHomeScreenEvent(
+                expectedEntrId, Hs::NormalHsMenuMode));
+
+        QVariantMap resultMap = static_cast<HsMenuEvent *>(
+                menuEvent.data())->data();
+
+        int id(-1) ;
+        id = resultMap.value(Hs::itemIdKey).toInt();
+
+        QCOMPARE(expectedEntrId, id);
+    }
+
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsUtils::testMenuEventFactoryCreatePreviewHSWidgetEvent()
+{
+    {
+        const int expectedId = 12345;
+        const QString expectedEntryTypeName("");
+        const QString expectedUri("");
+        const QString expectedLibrary("");
+
+        QSharedPointer<QEvent>
+        menuEvent(HsMenuEventFactory::createPreviewHSWidgetEvent(expectedId));
+        QCOMPARE(static_cast<HsMenuEvent *>(menuEvent.data())->operation(),
+                 HsMenuEvent::PreviewHSWidget);
+
+        QVariantMap resultMap = static_cast<HsMenuEvent *>(
+                menuEvent.data())->data();
+        const int id = resultMap.value(Hs::itemIdKey).toInt();
+        const QString widgetUri(
+                resultMap.value(Hs::widgetUriAttributeName).toString());
+        const QString widgetLibrary(
+                resultMap.value(Hs::widgetLibraryAttributeName).toString());
+        const QString entryTypeName(
+                resultMap.value(Hs::entryTypeNameKey).toString());
+
+        QCOMPARE(expectedId, id);
+        QCOMPARE(expectedUri, widgetUri);
+        QCOMPARE(expectedLibrary, widgetLibrary);
+        QCOMPARE(expectedEntryTypeName, entryTypeName);
+    }
+
+    {
+        const QString expectedEntryTypeName(Hs::widgetTypeName);
+        const QString expectedUri("dummyUri");
+        const QString expectedLibrary("dummyLibraryName");
+
+        QSharedPointer<QEvent>
+        menuEvent(HsMenuEventFactory::createPreviewHSWidgetEvent(0,
+                  expectedEntryTypeName, expectedUri, expectedLibrary));
+
+        QVariantMap resultMap = static_cast<HsMenuEvent *>(
+                menuEvent.data())->data();
+
+        const QString widgetUri(
+            resultMap.value(Hs::widgetUriAttributeName).toString());
+        const QString widgetLibrary(
+            resultMap.value(Hs::widgetLibraryAttributeName).toString());
+        const QString entryTypeName(resultMap.value(Hs::entryTypeNameKey).toString());
+
+        QCOMPARE(expectedUri, widgetUri);
+        QCOMPARE(expectedLibrary, widgetLibrary);
+        QCOMPARE(expectedEntryTypeName, entryTypeName);
+    }
+
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsUtils::testMenuEventFactoryCreateAppSettingsViewEvent()
+{
+	int dummyId = 12345;
+    QEvent *menuEvent(NULL);
+    menuEvent = HsMenuEventFactory::createAppSettingsViewEvent(dummyId);
+    QCOMPARE(static_cast<HsMenuEvent *>(menuEvent)->operation(),
+             HsMenuEvent::ShowAppSettings);
+
+    QVariantMap resultMap = static_cast<HsMenuEvent *>(menuEvent)->data();
+    int id = resultMap.value(Hs::itemIdKey).toInt();
+    QCOMPARE(id, dummyId);
+
+    delete menuEvent;
+}
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsUtils::testMenuEventFactoryCreateAppDetailsViewEvent()
+{
+	int dummyId = 12345;
+    QEvent *menuEvent(NULL);
+    menuEvent = HsMenuEventFactory::createAppDetailsViewEvent(dummyId);
+    QCOMPARE(static_cast<HsMenuEvent *>(menuEvent)->operation(),
+             HsMenuEvent::ShowAppDetails );
+
+    QVariantMap resultMap = static_cast<HsMenuEvent *>(menuEvent)->data();
+    int id = resultMap.value(Hs::itemIdKey).toInt();
+    QCOMPARE(id, dummyId);
+
+    delete menuEvent;
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsUtils::testMenuEventFactoryCreateOpenCollectionEvent()
+{
+    int dummyId = 12345;
+    QString dummyType("dummy");
+    QEvent *menuEvent(NULL);
+    menuEvent = HsMenuEventFactory::createOpenCollectionEvent(dummyId, dummyType);
+    QCOMPARE(static_cast<HsMenuEvent *>(menuEvent)->operation(), HsMenuEvent::OpenCollection);
+
+    QVariantMap resultMap = static_cast<HsMenuEvent *>(menuEvent)->data();
+    int id = resultMap.value(Hs::itemIdKey).toInt();
+    QString type = resultMap.value(Hs::entryTypeNameKey).toString();
+    QCOMPARE(id, dummyId);
+    QCOMPARE(type, dummyType);
+
+    delete menuEvent;
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsUtils::testMenuEventFactoryCreateOpenCollectionFromAppLibraryEvent()
+{
+    int dummyId = 12345;
+    QString dummyType("dummy");
+    QEvent *menuEvent(NULL);
+    menuEvent = HsMenuEventFactory::createOpenCollectionFromAppLibraryEvent(dummyId, dummyType);
+    QCOMPARE(static_cast<HsMenuEvent *>(menuEvent)->operation(), HsMenuEvent::OpenCollectionFromAppLibrary);
+
+    QVariantMap resultMap = static_cast<HsMenuEvent *>(menuEvent)->data();
+    int id = resultMap.value(Hs::itemIdKey).toInt();
+    QString type = resultMap.value(Hs::entryTypeNameKey).toString();
+    QCOMPARE(id, dummyId);
+    QCOMPARE(type, dummyType);
+
+    delete menuEvent;
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsUtils::testMenuEventFactoryCreateRenameCollectionEvent()
+{
+    int dummyId = 12345;
+    QEvent *menuEvent(NULL);
+    menuEvent = HsMenuEventFactory::createRenameCollectionEvent(dummyId);
+    QCOMPARE(static_cast<HsMenuEvent *>(menuEvent)->operation(), HsMenuEvent::RenameCollection);
+
+    QVariantMap resultMap = static_cast<HsMenuEvent *>(menuEvent)->data();
+    int id = resultMap.value(Hs::itemIdKey).toInt();
+    QCOMPARE(id, dummyId);
+
+    delete menuEvent;
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsUtils::testMenuEventFactoryCreateNewCollectionEvent()
+{
+    QEvent *menuEvent(NULL);
+    menuEvent = HsMenuEventFactory::createNewCollectionEvent();
+    QCOMPARE(static_cast<HsMenuEvent *>(menuEvent)->operation(),
+             HsMenuEvent::CreateCollection);
+
+    QVariantMap resultMap = static_cast<HsMenuEvent *>(menuEvent)->data();
+    int id = resultMap.value(Hs::itemIdKey).toInt();
+    QCOMPARE(id, 0);
+
+    delete menuEvent;
+}
+
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsUtils::testMenuEventFactoryCreateDeleteCollectionEvent()
+{
+    int dummyId = 12345;
+    QEvent *menuEvent(NULL);
+    menuEvent = HsMenuEventFactory::createDeleteCollectionEvent(dummyId);
+    QCOMPARE(static_cast<HsMenuEvent *>(menuEvent)->operation(), HsMenuEvent::DeleteCollection);
+
+    QVariantMap resultMap = static_cast<HsMenuEvent *>(menuEvent)->data();
+    int id = resultMap.value(Hs::itemIdKey).toInt();
+    QCOMPARE(id, dummyId);
+
+    delete menuEvent;
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsUtils::testMenuEventFactoryCreateCollectionDeletedEvent()
+{
+    QEvent *menuEvent(NULL);
+    menuEvent = HsMenuEventFactory::createCollectionDeletedEvent();
+    QCOMPARE(static_cast<HsMenuEvent *>(menuEvent)->operation(),
+        HsMenuEvent::CollectionDeleted);
+    QVERIFY(static_cast<HsMenuEvent *>(menuEvent)->data().isEmpty());
+    delete menuEvent;
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsUtils::testMenuEventFactoryCreateBackFromInstalledViewEvent()
+{
+    int dummyId = 12345;
+    QString dummyType("dummy");
+    QEvent *menuEvent(NULL);
+    menuEvent = HsMenuEventFactory::createBackFromInstalledViewEvent(
+        dummyId, dummyType);
+    QCOMPARE(static_cast<HsMenuEvent *>(menuEvent)->operation(),
+        HsMenuEvent::BackFromInstalledView);
+    QVariantMap resultMap = static_cast<HsMenuEvent *>(menuEvent)->data();
+    QCOMPARE(resultMap.value(Hs::itemIdKey).toInt(), dummyId);
+    QCOMPARE(resultMap.value(Hs::entryTypeNameKey).toString(), dummyType);
+    delete menuEvent;
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsUtils::testMenuEventFactoryCreateOpenInstalledViewEvent()
+{
+    int dummyId = 12345;
+    QString dummyType("dummy");
+    QEvent *menuEvent(NULL);
+    menuEvent = HsMenuEventFactory::createOpenInstalledViewEvent(
+        dummyId, dummyType);
+    QCOMPARE(static_cast<HsMenuEvent *>(menuEvent)->operation(),
+        HsMenuEvent::OpenInstalledView);
+    QVariantMap resultMap = static_cast<HsMenuEvent *>(menuEvent)->data();
+    QCOMPARE(resultMap.value(Hs::itemIdKey).toInt(), dummyId);
+    QCOMPARE(resultMap.value(Hs::entryTypeNameKey).toString(), dummyType);
+    delete menuEvent;
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsUtils::testMenuEventFactorycCreateOpenAppLibraryEvent()
+{
+    QEvent *menuEvent(NULL);
+    menuEvent = HsMenuEventFactory::createOpenAppLibraryEvent();
+    QCOMPARE(static_cast<HsMenuEvent *>(menuEvent)->operation(), HsMenuEvent::OpenApplicationLibrary);
+    QVERIFY(!static_cast<HsMenuEvent *>(menuEvent)->data().isEmpty());
+    delete menuEvent;
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsUtils::testMenuEventFactoryCreateAddAppsFromApplicationsViewEvent()
+{
+    QEvent *menuEvent(NULL);
+    menuEvent = HsMenuEventFactory::
+                createAddAppsFromApplicationsViewEvent(
+                    Hs::NoHsSortAttribute, 0);
+    QCOMPARE(static_cast<HsMenuEvent *>(menuEvent)->operation(),
+             HsMenuEvent::AddAppsToCollection);
+    QVERIFY(!static_cast<HsMenuEvent *>(menuEvent)->data().isEmpty());
+    delete menuEvent;
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsUtils::testMenuEventFactoryCreateAddAppsFromCallectionViewEvent()
+{
+    QEvent *menuEvent(NULL);
+    menuEvent = HsMenuEventFactory::
+                createAddAppsFromCollectionViewEvent(0, 0);
+    QCOMPARE(static_cast<HsMenuEvent *>(menuEvent)->operation(),
+             HsMenuEvent::AddAppsToCollection);
+    QVERIFY(!static_cast<HsMenuEvent *>(menuEvent)->data().isEmpty());
+    delete menuEvent;
+}
+
+
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsUtils::testMenuEventFactoryCreateRemoveAppFromCollectionEvent()
+{
+    int dummyId = 12345;
+    int dummyColId = 6789;
+    QEvent *menuEvent(NULL);
+    menuEvent = HsMenuEventFactory::createRemoveAppFromCollectionEvent(dummyId, dummyColId);
+    QCOMPARE(static_cast<HsMenuEvent *>(menuEvent)->operation(), HsMenuEvent::RemoveAppFromCollection);
+
+    QVariantMap resultMap = static_cast<HsMenuEvent *>(menuEvent)->data();
+    int id = resultMap.value(Hs::itemIdKey).toInt();
+    int cid = resultMap.value(Hs::collectionIdKey).toInt();
+    QCOMPARE(id, dummyId);
+    QCOMPARE(cid, dummyColId);
+
+    delete menuEvent;
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsUtils::testMenuEventFactoryCreateUninstallApplicationEvent()
+{
+    int dummyId = 54321;
+    QEvent *menuEvent(NULL);
+    menuEvent = HsMenuEventFactory::createUninstallApplicationEvent(dummyId);
+
+    QCOMPARE(static_cast<HsMenuEvent *>(menuEvent)->operation(), HsMenuEvent::UninstallApplication );
+
+    QVariantMap resultMap = static_cast<HsMenuEvent *>(menuEvent)->data();
+    int id = resultMap.value(Hs::itemIdKey).toInt();
+    QCOMPARE(id, dummyId);
+
+    delete menuEvent;
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsUtils::testMenuEventFactoryCreateInstLogEvent()
+{
+    QEvent *menuEvent = HsMenuEventFactory::createInstallationLogEvent();
+    QCOMPARE(static_cast<HsMenuEvent *>(menuEvent)->operation(),
+        HsMenuEvent::ShowInstallationLog);
+    QVERIFY(static_cast<HsMenuEvent *>(menuEvent)->data().isEmpty());
+    delete menuEvent;
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsUtils::testMenuEventFactoryCreateUninstallFailedEvent()
+{
+    int dummyError = 3;
+    QEvent *menuEvent(NULL);
+    menuEvent = HsMenuEventFactory::createUninstallFailedEvent(dummyError);
+
+    QCOMPARE(static_cast<HsMenuEvent *>(menuEvent)->operation(), HsMenuEvent::UninstallationFailed );
+
+    QVariantMap resultMap = static_cast<HsMenuEvent *>(menuEvent)->data();
+    int error = resultMap.value(Hs::uninstallError).toInt();
+    QCOMPARE(error, dummyError);
+
+    delete menuEvent;
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsUtils::testMenuEventFactoryCreateUnknownEvent()
+{
+    QEvent *menuEvent = HsMenuEventFactory::createUnknownEvent();
+    QCOMPARE(static_cast<HsMenuEvent *>(menuEvent)->operation(),
+        HsMenuEvent::Unknown);
+    QVERIFY(static_cast<HsMenuEvent *>(menuEvent)->data().isEmpty());
+    delete menuEvent;
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsUtils::testMenuEventFactoryOpenHSEvent()
+{
+    QEvent *menuEvent = HsMenuEventFactory::createOpenHomeScreenEvent();
+    QCOMPARE(static_cast<HsMenuEvent *>(menuEvent)->operation(),
+             HsMenuEvent::OpenHomeScreen);
+    QVERIFY(static_cast<HsMenuEvent *>(menuEvent)->data().isEmpty());
+    delete menuEvent;
+}
+
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsUtils::testMenuEventTransitionConstruction()
+{
+    HsMenuEventTransition transition(HsMenuEvent::AddToHomeScreen, NULL, NULL);
+    QCOMPARE(transition.mOperation, HsMenuEvent::AddToHomeScreen);
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsUtils::testMenuEventTransitionTestCondition()
+{
+    QVariantMap sourceMap;
+    sourceMap.insert("my_key", "my_value");
+    HsMenuEvent correctMenuEvent(HsMenuEvent::OpenCollectionFromAppLibrary, sourceMap);
+    HsMenuEvent wrongMenuEvent(HsMenuEvent::Unknown, sourceMap);
+
+    HsMenuEventTransition transition(HsMenuEvent::OpenCollectionFromAppLibrary, NULL, NULL);
+    bool correctResult = transition.eventTest(&correctMenuEvent);
+    bool wrongResult = transition.eventTest(&wrongMenuEvent);
+
+    QCOMPARE(correctResult, true);
+    QCOMPARE(wrongResult, false);
+}
+
+void t_hsUtils::testMenuEventFactoryCreateArrangeCollectionEvent()
+{
+    const int topItemId = 12345;
+    const int collectionId = 11;
+    QEvent *menuEvent(NULL);
+    menuEvent = HsMenuEventFactory::createArrangeCollectionEvent(topItemId, collectionId);
+    QCOMPARE(static_cast<HsMenuEvent *>(menuEvent)->operation(),
+             HsMenuEvent::ArrangeCollection);
+
+    QVariantMap resultMap = static_cast<HsMenuEvent *>(menuEvent)->data();
+    const int actualItemId = resultMap.value(Hs::itemIdKey).toInt();
+    const int actualCollectionId = resultMap.value(Hs::collectionIdKey).toInt();
+    QCOMPARE(actualItemId, topItemId);
+    QCOMPARE(actualCollectionId, collectionId);
+
+    delete menuEvent;
+}
+
+void t_hsUtils::testMenuEventFactorycreateArrangeAllCollectionsEvent()
+{
+    const int topItemId = 12345;
+    QEvent *menuEvent(NULL);
+    menuEvent = HsMenuEventFactory::createArrangeAllCollectionsEvent(topItemId);
+    QCOMPARE(static_cast<HsMenuEvent *>(menuEvent)->operation(),
+             HsMenuEvent::ArrangeAllCollections);
+
+    QVariantMap resultMap = static_cast<HsMenuEvent *>(menuEvent)->data();
+    const int actualItemId = resultMap.value(Hs::itemIdKey).toInt();
+    QCOMPARE(actualItemId, topItemId);
+
+    delete menuEvent;
+}
+
+#endif //ONLY_MENU_TESTCASES
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsutils/tsrc/t_hsutils/src/t_hswidgetpositioningonorientationchange.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,100 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#ifndef ONLY_MENU_TESTCASES
+
+#include "t_hsutils.h"
+#include "hswidgetpositioningonorientationchange.h"
+
+Q_DECLARE_METATYPE(QList<QRectF>)
+
+void t_hsUtils::testWidgetPositioningOnOrientationChangeInstance()
+{
+    QVERIFY(!HsWidgetPositioningOnOrientationChange::instance());
+    HsWidgetPositioningOnOrientationChange::setInstance(0);
+    QVERIFY(!HsWidgetPositioningOnOrientationChange::instance());
+    HsWidgetPositioningOnOrientationChange *c = new HsAdvancedWidgetPositioningOnOrientationChange;
+    HsWidgetPositioningOnOrientationChange::setInstance(c);
+    QVERIFY(HsWidgetPositioningOnOrientationChange::instance() == c);
+    HsWidgetPositioningOnOrientationChange::setInstance(0);
+    QVERIFY(!HsWidgetPositioningOnOrientationChange::instance());
+}
+
+void t_hsUtils::testAdvancedWidgetPositioningOnOrientationChange_data()
+{
+    QTest::addColumn<QRectF>("fromRect");
+    QTest::addColumn<QList<QRectF> >("fromGeometries");
+    QTest::addColumn<QRectF>("toRect");
+    QTest::addColumn<QList<QRectF> >("toGeometries");
+
+    QTest::newRow("portrait to landscape1")
+        << QRectF(0, 0, 100, 200)
+        << (QList<QRectF>() << QRectF(0, 100, 10, 10) << QRectF(90, 0, 10, 10) << QRectF(90, 190, 10, 10) << QRectF(50, 150, 10, 10))
+        << QRectF(0, 0, 200, 100)
+        << (QList<QRectF>() << QRectF(100, 0, 10, 10) << QRectF(90, 0, 10, 10) << QRectF(190, 90, 10, 10) << QRectF(150, 50, 10, 10));
+
+    QTest::newRow("portrait to landscape2")
+        << QRectF(0, 0, 100, 200)
+        << (QList<QRectF>() << QRectF(0, 94, 10, 10) << QRectF(0, 95, 10, 10) << QRectF(0, 96, 10, 10) << QRectF(-5, 95, 10, 10) << QRectF(-5, 96, 10, 10))
+        << QRectF(0, 0, 200, 100)
+        << (QList<QRectF>() << QRectF(0, 90, 10, 10) << QRectF(100, 0, 10, 10) << QRectF(100, 0, 10, 10) << QRectF(95, 0, 10, 10) << QRectF(95, 0, 10, 10));
+
+    QTest::newRow("landscape to portrait1")
+        << QRectF(0, 0, 200, 100)
+        << (QList<QRectF>() << QRectF(0, 0, 10, 10) << QRectF(100, 0, 10, 10) << QRectF(90, 0, 10, 10) << QRectF(190, 90, 10, 10) << QRectF(150, 50, 10, 10))
+        << QRectF(0, 0, 100, 200)
+        << (QList<QRectF>() << QRectF(0, 0, 10, 10) << QRectF(90, 100, 10, 10) << QRectF(90, 0, 10, 10) << QRectF(90, 190, 10, 10) << QRectF(90, 150, 10, 10));
+
+    QTest::newRow("landscape to portrait2")
+        << QRectF(0, 0, 200, 100)
+        << (QList<QRectF>() << QRectF(94, 0, 10, 10) << QRectF(95, 0, 10, 10) << QRectF(96, 0, 10, 10) << QRectF(95, -5, 10, 10) << QRectF(96, -5, 10, 10))
+        << QRectF(0, 0, 100, 200)
+        << (QList<QRectF>() << QRectF(90, 0, 10, 10) << QRectF(90, 100, 10, 10) << QRectF(90, 100, 10, 10) << QRectF(90, 95, 10, 10) << QRectF(90, 95, 10, 10));
+
+    QTest::newRow("illegal from points")
+        << QRectF(0, 0, 100, 100)
+        << (QList<QRectF>() << QRectF(-50, -50, 10, 10))
+        << QRectF(0, 0, 100, 100)
+        << (QList<QRectF>() << QRectF(0, 0, 10, 10));
+
+}
+
+void t_hsUtils::testAdvancedWidgetPositioningOnOrientationChange()
+{
+    QFETCH(QRectF, fromRect);
+    QFETCH(QList<QRectF>, fromGeometries);
+    QFETCH(QRectF, toRect);
+    QFETCH(QList<QRectF>, toGeometries);
+
+    HsWidgetPositioningOnOrientationChange *converter =
+        new HsAdvancedWidgetPositioningOnOrientationChange;
+    QList<QRectF> convertedGeometries =
+        converter->convert(fromRect, fromGeometries, toRect);
+
+    QCOMPARE(convertedGeometries.count(), toGeometries.count());
+
+    for (int i = 0; i < toGeometries.count(); ++i) {
+        QVERIFY(qFuzzyCompare(1 + toGeometries.at(i).x(), 1 + convertedGeometries.at(i).x()));
+        QVERIFY(qFuzzyCompare(1 + toGeometries.at(i).y(), 1 + convertedGeometries.at(i).y()));
+        QVERIFY(qFuzzyCompare(1 + toGeometries.at(i).width(), 1 + convertedGeometries.at(i).width()));
+        QVERIFY(qFuzzyCompare(1 + toGeometries.at(i).height(), 1 + convertedGeometries.at(i).height()));
+    }
+
+    delete converter;
+}
+
+#endif // ONLY_MENU_TESTCASES
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsutils/tsrc/t_hsutils/src/t_hswidgetpositioningonwidgetmove.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,447 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#ifndef ONLY_MENU_TESTCASES
+
+#include "t_hsutils.h"
+#include "hsapp_defs.h"
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+
+#define SNAP_GAP_VALUE 6
+#define SNAP_FORCE_VALUE 30
+#define SNAP_ENABLED_VALUE true
+#define SNAP_DISABLED_VALUE false
+
+Q_DECLARE_METATYPE(QList<QRectF>)
+Q_DECLARE_METATYPE(HsWidgetPositioningOnWidgetMove::Result)
+
+void t_hsUtils::testWidgetPositioningOnWidgetMoveInstance()
+{
+    QVERIFY(!HsWidgetPositioningOnWidgetMove::instance());
+    HsWidgetPositioningOnWidgetMove::setInstance(0);
+    QVERIFY(!HsWidgetPositioningOnWidgetMove::instance());
+    HsWidgetPositioningOnWidgetMove *snapToLines = new HsSnapToLines;
+    HsWidgetPositioningOnWidgetMove::setInstance(snapToLines);
+    QVERIFY(HsWidgetPositioningOnWidgetMove::instance() == snapToLines);
+    HsWidgetPositioningOnWidgetMove::setInstance(0);
+    QVERIFY(!HsWidgetPositioningOnWidgetMove::instance());
+}
+
+void t_hsUtils::testHsSnapToLinesConstruct()
+{
+    HsSnapToLines *sl = new HsSnapToLines();
+
+    QVERIFY(sl->mContainerRect.isNull());
+
+    QVERIFY(qFuzzyCompare(sl->mActiveRectWidth, 0));
+    QVERIFY(qFuzzyCompare(sl->mActiveRectHeight, 0));
+
+    QVERIFY(sl->mInactiveSnapRects.isEmpty());
+
+    QVERIFY(sl->mInactiveRectToCompare.isNull());
+
+    QVERIFY(sl->mInactiveSnapRectToCompare.rectangle.isNull());
+    QVERIFY(sl->mMovingRect.isNull());
+
+    QVERIFY(qFuzzyCompare(sl->mMinDistancePosition, 0));
+    QVERIFY(qFuzzyCompare(sl->mHorizontalSnapPosition, 0));
+    QVERIFY(qFuzzyCompare(sl->mVerticalSnapPosition, 0));
+
+    QVERIFY(!sl->mHorizontalSnapFound);
+    QVERIFY(sl->mVerticalLine.isNull());
+
+    QVERIFY(!sl->mVerticalSnapFound);
+    QVERIFY(sl->mHorizontalLine.isNull());
+
+    QVERIFY(!sl->mRectLieAbove);
+    QVERIFY(!sl->mLeftInRange);
+    QVERIFY(!sl->mRightInRange);
+    QVERIFY(!sl->mIsBetterFitHorizontalSnap);
+    QVERIFY(qFuzzyCompare(sl->mDistanceVerticalEdges, 0));
+    QVERIFY(qFuzzyCompare(sl->mVerticalEdgeToLeftOfInactiveRect, 0));
+    QVERIFY(qFuzzyCompare(sl->mVerticalEdgeToRightOfInactiveRect, 0));
+    QVERIFY(qFuzzyCompare(sl->mMinVerticalEdgesDistance, 0));
+    QVERIFY(qFuzzyCompare(sl->mVerticalDistance, 0));
+    QVERIFY(qFuzzyCompare(sl->mVerticalDistanceFromSelectedRect, 0));
+    QVERIFY(qFuzzyCompare(sl->mContainerVerticalEdgeDistance, 0));
+
+    QVERIFY(!sl->mRectLieLeft);
+    QVERIFY(!sl->mTopInRange);
+    QVERIFY(!sl->mBottomInRange);
+    QVERIFY(!sl->mIsBetterFitVerticalSnap);
+    QVERIFY(qFuzzyCompare(sl->mDistanceHorizontalEdges, 0));
+    QVERIFY(qFuzzyCompare(sl->mHorizontalEdgeToTopOfInactiveRect, 0));
+    QVERIFY(qFuzzyCompare(sl->mHorizontalEdgeToBottomOfInactiveRect, 0));
+    QVERIFY(qFuzzyCompare(sl->mMinHorizontalEdgesDistance, 0));
+    QVERIFY(qFuzzyCompare(sl->mHorizontalDistance, 0));
+    QVERIFY(qFuzzyCompare(sl->mHorizontalDistanceFromSelectedRect, 0));
+    QVERIFY(qFuzzyCompare(sl->mContainerHorizontalEdgeDistance, 0));
+
+    QVERIFY(!sl->mSnapEnabled);
+    QVERIFY(qFuzzyCompare(sl->mSnapForce, 0));
+    QVERIFY(qFuzzyCompare(sl->mSnapGap, 0));
+
+    QVERIFY(!sl->mRectVerticalEdgeLiesInLineWithVerticalLine);
+    QVERIFY(!sl->mRectLieAboveVerticalLine);
+    QVERIFY(!sl->mRectLieBelowVerticalLine);
+
+    QVERIFY(!sl->mRectHorizontalEdgeLiesInLineWithHorizontalLine);
+    QVERIFY(!sl->mRectLieLeftOfHorizontalLine);
+    QVERIFY(!sl->mRectLiesRightOfHorizontalLine);
+
+    delete sl;
+}
+
+void t_hsUtils::testHsSnapToLines_data()
+{
+    QTest::addColumn<QRectF>("containerArea");
+    QTest::addColumn<QList<QRectF> >("inActiveRects");
+    QTest::addColumn<QRectF>("activeRect");
+    QTest::addColumn<QRectF>("movingRect");
+    QTest::addColumn<HsWidgetPositioningOnWidgetMove::Result>("expectedResult");
+
+    {
+        QTest::newRow("widgetOverlap")
+            << QRectF(0, 0, 1000, 1000)
+            << (QList<QRectF>() << QRectF(250, 250, 500, 500) << QRectF(200, 200, 100, 100) << QRectF(700, 200, 100, 100)
+                                << QRectF(700, 700, 100, 100) << QRectF(200, 700, 100, 100))
+            << QRectF(0, 0, 800, 150)
+            << QRectF(100, 100, 880, 165)
+            << HsWidgetPositioningOnWidgetMove::Result();
+    }
+
+    {
+        QTest::newRow("oneWidgetOutOfSnapDistance")
+            << QRectF(0, 0, 1000, 1000)
+            << (QList<QRectF>())
+            << QRectF(5, 5, 100, 100)
+            << QRectF(3, 3, 110, 110)
+            << HsWidgetPositioningOnWidgetMove::Result();
+    }
+
+    {
+        HsWidgetPositioningOnWidgetMove::Result snapResultCenter;
+        QTest::newRow("oneWidgetInCenterWithoutSnapping")
+            << QRectF(0, 0, 1000, 1000)
+            << (QList<QRectF>())
+            << QRectF(5, 5, 200, 200)
+            << QRectF(390, 390, 200, 200)
+            << snapResultCenter;
+    }
+
+    {
+        //Data for snapping to Left Edge of Inactive Rectangle.
+        HsWidgetPositioningOnWidgetMove::Result snapResultLeftEdge;
+        snapResultLeftEdge.hasHorizontalSnap = true;
+        snapResultLeftEdge.horizontalSnapPosition = 100;
+        snapResultLeftEdge.verticalSnapLine = QLineF(100, 90, 100, 610);
+        QTest::newRow("snapToLeftEdgeOfInactiveRect")
+            << QRectF(0, 0, 1000, 1000)
+            << (QList<QRectF>() << QRectF(100, 100, 100, 100) << QRectF(175, 75, 100, 150))
+            << QRectF(0, 0, 500, 100)
+            << QRectF(110, 500, 500, 100)
+            << snapResultLeftEdge;
+    }
+
+    {
+        //Data for snapping to Left Edge of Inactive Rectangle,
+        //one inactive rectangle lies below the moving rectangle
+        //one inactive rectangle lies above the moving rectangle. This rectangle does not offer big enough space for moving rectangle's width
+        HsWidgetPositioningOnWidgetMove::Result snapResultLeftEdgeBelowRect;
+        snapResultLeftEdgeBelowRect.hasHorizontalSnap = true;
+        snapResultLeftEdgeBelowRect.horizontalSnapPosition = 10 - SNAP_GAP_VALUE;
+        snapResultLeftEdgeBelowRect.verticalSnapLine = QLineF(560, 910, 560, 390);
+        QTest::newRow("snapToLeftEdgeOfInactiveRectWhichLiesBelow")
+            << QRectF(0, 0, 1000, 1000)
+            << (QList<QRectF>() << QRectF(550, 200, 200, 150) << QRectF(560, 800, 200, 100))
+            << QRectF(5, 0, 550, 100)
+            << QRectF(5, 400, 550, 100)
+            << snapResultLeftEdgeBelowRect;
+    }
+
+    {
+        //Data for snapping to Left Edge of Inactive Rectangle.
+        //The data is similar to one above, except that the rectangle can fit into the space now.
+        HsWidgetPositioningOnWidgetMove::Result snapResultLeftEdgeRectLiesAbove;
+        snapResultLeftEdgeRectLiesAbove.hasHorizontalSnap = true;
+        snapResultLeftEdgeRectLiesAbove.horizontalSnapPosition = 50 - SNAP_GAP_VALUE;
+        snapResultLeftEdgeRectLiesAbove.verticalSnapLine = QLineF(550, 510, 550, 190);
+        QTest::newRow("snapToLeftEdgeOfInactiveRectWhichLiesAbove")
+            << QRectF(0, 0, 1000, 1000)
+            << (QList<QRectF>() << QRectF(560, 800, 200, 100) << QRectF(550, 200, 200, 150))
+            << QRectF(5, 0, 500, 100)
+            << QRectF(55, 400, 500, 100)
+            << snapResultLeftEdgeRectLiesAbove;
+    }
+
+    {
+        //Data for snapping to the left Edge of Inactive rect which are already alligned
+        //and the bottom of already alligned widgets on the bottom
+        HsWidgetPositioningOnWidgetMove::Result snapResultRectsAllignedOnLeftAndBottom;
+        snapResultRectsAllignedOnLeftAndBottom.hasHorizontalSnap = true;
+        snapResultRectsAllignedOnLeftAndBottom.horizontalSnapPosition = 100;
+        snapResultRectsAllignedOnLeftAndBottom.verticalSnapLine = QLineF(100, 910, 100, 90);
+        snapResultRectsAllignedOnLeftAndBottom.hasVerticalSnap = true;
+        snapResultRectsAllignedOnLeftAndBottom.verticalSnapPosition = 820; //The width of the rectangle is 90
+        snapResultRectsAllignedOnLeftAndBottom.horizontalSnapLine = QLineF(80, 910, 910, 910);
+        QTest::newRow("snapToLeftAndBottomEdgeOfTwoAllignedRects")
+            << QRectF(0, 0, 1000, 1000)
+            << (QList<QRectF>() << QRectF(100, 400, 150, 125) << QRectF(100, 100, 100, 100) << QRectF(450, 820, 100, 90) << QRectF(750, 750, 150, 160))
+            << QRectF(50, 750, 100, 90)
+            << QRectF(90, 800, 120, 100)
+            << snapResultRectsAllignedOnLeftAndBottom;
+    }
+
+    {
+        //Data for snapping to the Right side of already alligned widgets on the right side
+        //and top of already alligned widgets
+        HsWidgetPositioningOnWidgetMove::Result snapResultRectsAllignedOnRightAndTop;
+        snapResultRectsAllignedOnRightAndTop.hasHorizontalSnap = true;
+        snapResultRectsAllignedOnRightAndTop.horizontalSnapPosition = 540;
+        snapResultRectsAllignedOnRightAndTop.verticalSnapLine = QLineF(600, 60, 600, 910);
+        snapResultRectsAllignedOnRightAndTop.hasVerticalSnap = true;
+        snapResultRectsAllignedOnRightAndTop.verticalSnapPosition = 50;
+        snapResultRectsAllignedOnRightAndTop.horizontalSnapLine = QLineF(40, 50, 620, 50);
+        QTest::newRow("snapToRightAndTopEdgeOfTwoAllignedRects")
+            << QRectF(0, 0, 1000, 1000)
+            << (QList<QRectF>() << QRectF(300, 50, 50, 300) << QRectF(500, 500, 100, 100) << QRectF(50, 50, 150, 150) << QRectF(400, 800, 200, 100))
+            << QRectF(500, 50, 60, 100)
+            << QRectF(550, 70, 60, 100)
+            << snapResultRectsAllignedOnRightAndTop;
+    }
+
+    {
+        //Data for snapping to the left Edge of one Inactive rect and top edge of another Inactive rect
+        //distance of both edges of the rectangle are at the same distance from the edge under comparison
+        HsWidgetPositioningOnWidgetMove::Result snapResultSameDistanceToMovingEdgesSnapToLeftAndTopEdge;
+        snapResultSameDistanceToMovingEdgesSnapToLeftAndTopEdge.hasHorizontalSnap = true;
+        snapResultSameDistanceToMovingEdgesSnapToLeftAndTopEdge.horizontalSnapPosition = 100;
+        snapResultSameDistanceToMovingEdgesSnapToLeftAndTopEdge.verticalSnapLine = QLineF(100, 450, 100, 90);
+        snapResultSameDistanceToMovingEdgesSnapToLeftAndTopEdge.hasVerticalSnap = true;
+        snapResultSameDistanceToMovingEdgesSnapToLeftAndTopEdge.verticalSnapPosition = 380;
+        snapResultSameDistanceToMovingEdgesSnapToLeftAndTopEdge.horizontalSnapLine = QLineF(70, 380, 690, 380);
+        QTest::newRow("snapToLeftEdgeAndTopEdgeOfInactiveRectDistanceToMovingRectsEdgesSame")
+            << QRectF(0, 0, 1000, 1000)
+            << (QList<QRectF>() << QRectF(100, 100, 200, 100) << QRectF(600, 380, 80, 300))
+            << QRectF(0, 0, 40, 40)
+            << QRectF(80, 400, 40, 40)
+            << snapResultSameDistanceToMovingEdgesSnapToLeftAndTopEdge;
+    }
+
+    {
+        //Data for snapping when the inactive widgets edges are equal distance from the Left and top edge of Moving Rect
+        HsWidgetPositioningOnWidgetMove::Result snapResultMovingRectLeftAndTopEdgeSameDistance;
+        snapResultMovingRectLeftAndTopEdgeSameDistance.hasHorizontalSnap = true;
+        snapResultMovingRectLeftAndTopEdgeSameDistance.horizontalSnapPosition = 80;
+        snapResultMovingRectLeftAndTopEdgeSameDistance.verticalSnapLine = QLineF(80, 90, 80, 450);
+        snapResultMovingRectLeftAndTopEdgeSameDistance.hasVerticalSnap = true;
+        snapResultMovingRectLeftAndTopEdgeSameDistance.verticalSnapPosition = 80;
+        snapResultMovingRectLeftAndTopEdgeSameDistance.horizontalSnapLine = QLineF(90, 80, 450, 80);
+        QTest::newRow("movingRectsLeftAndtopEdgeAreEqualDistanceFromInactiveRectsEdges")
+            << QRectF(0, 0, 1000, 1000)
+            << (QList<QRectF>() << QRectF(280, 400, 40, 40) << QRectF(80, 400, 40, 40) << QRectF(400, 180, 40, 40) << QRectF(400, 80, 40, 40))
+            << QRectF(50, 50, 200, 100)
+            << QRectF(100, 100, 200, 100)
+            << snapResultMovingRectLeftAndTopEdgeSameDistance;
+    }
+
+    {
+        //Data for snapping the Right and Bootom edge of moving rect which are equal distance from Inactive rects edges
+        HsWidgetPositioningOnWidgetMove::Result snapResultMovingRectRightAndBottomEdgeSameDistance;
+        snapResultMovingRectRightAndBottomEdgeSameDistance.hasHorizontalSnap = true;
+        snapResultMovingRectRightAndBottomEdgeSameDistance.horizontalSnapPosition = 690;
+        snapResultMovingRectRightAndBottomEdgeSameDistance.verticalSnapLine = QLineF(840, 190, 840, 950);
+        snapResultMovingRectRightAndBottomEdgeSameDistance.hasVerticalSnap = true;
+        snapResultMovingRectRightAndBottomEdgeSameDistance.verticalSnapPosition = 710;
+        snapResultMovingRectRightAndBottomEdgeSameDistance.horizontalSnapLine = QLineF(190, 860, 860, 860);
+        QTest::newRow("movingRectsRightAndBottomEdgeAreEqualDistanceFromInactiveRectsEdges")
+            << QRectF(0, 0, 1000, 1000)
+            << (QList<QRectF>() << QRectF(680, 200, 40, 40) << QRectF(800, 200, 40, 40) << QRectF(800, 900, 40, 40)
+                                << QRectF(200, 670, 40, 40) << QRectF(200, 820, 40, 40))
+            << QRectF(650, 640, 150, 150)
+            << QRectF(700, 690, 150, 150)
+            << snapResultMovingRectRightAndBottomEdgeSameDistance;
+    }
+
+    {
+        //Data for snapping to Right Edge of Inactive Rectangle, inactive rect lies above the Moving rect,
+        //distance of moving rect's right edge from the inactive widget's right edge is equal to
+        //the distance of moving widget's left edge from the inactive widget's left edge.
+        HsWidgetPositioningOnWidgetMove::Result snapResultRightEdge;
+        snapResultRightEdge.hasHorizontalSnap = true;
+        snapResultRightEdge.horizontalSnapPosition = 200;
+        snapResultRightEdge.verticalSnapLine = QLineF(900, 90, 900, 610);
+        QTest::newRow("snapToRightEdgeOfInactiveRect")
+            << QRectF(0, 0, 1000, 1000)
+            << (QList<QRectF>() << QRectF(725, 75, 100, 150) << QRectF(800, 100, 100, 100))
+            << QRectF(225, 500, 700, 100)
+            << QRectF(225, 500, 700, 100)
+            << snapResultRightEdge;
+    }
+
+    {
+        //Data for snapping to Top Edge of Inactive Rectangle.
+        HsWidgetPositioningOnWidgetMove::Result snapResultTopEdge;
+        snapResultTopEdge.hasVerticalSnap = true;
+        snapResultTopEdge.verticalSnapPosition = 100;
+        snapResultTopEdge.horizontalSnapLine = QLineF(90, 100, 630, 100);
+        QTest::newRow("snapToTopEdgeOfInactiveRect")
+            << QRectF(0, 0, 1000, 1000)
+            << (QList<QRectF>() << QRectF(100, 100, 100, 100) << QRectF(75, 175, 150, 100) << QRectF(100, 600, 100, 100) << QRectF(75, 675, 150, 100))
+            << QRectF(400, 120, 200, 400)
+            << QRectF(400, 120, 220, 440)
+            << snapResultTopEdge;
+    }
+
+    {
+        //Data for snapping to Bottom Edge of Inactive Rectangle.
+        HsWidgetPositioningOnWidgetMove::Result snapResultBottomEdge;
+        snapResultBottomEdge.hasVerticalSnap = true;
+        snapResultBottomEdge.verticalSnapPosition = 315;
+        snapResultBottomEdge.horizontalSnapLine = QLineF(65, 800, 855, 800);
+        QTest::newRow("snapToBottomEdgeOfInactiveRect")
+            << QRectF(0, 0, 1000, 1000)
+            << (QList<QRectF>() << QRectF(100, 100, 100, 100) << QRectF(75, 175, 150, 100) << QRectF(100, 600, 100, 100) << QRectF(75, 675, 150, 125))
+            << QRectF(600, 300, 220, 485)
+            << QRectF(625, 325, 220, 485)
+            << snapResultBottomEdge;
+    }
+
+}
+
+void t_hsUtils::testHsSnapToLines()
+{
+    QFETCH(QRectF, containerArea);
+    QFETCH(QList<QRectF>, inActiveRects);
+    QFETCH(QRectF, activeRect);
+    QFETCH(QRectF, movingRect);
+    QFETCH(HsWidgetPositioningOnWidgetMove::Result, expectedResult);
+
+    HsWidgetPositioningOnWidgetMove::setInstance(new HsSnapToLines);
+
+    QVariantHash snapConfiguration;
+    snapConfiguration[Hs::snapEnabled] = QString::number(SNAP_ENABLED_VALUE);
+    snapConfiguration[Hs::snapForce] = QString::number(SNAP_FORCE_VALUE);
+    snapConfiguration[Hs::snapGap] = QString::number(SNAP_GAP_VALUE);
+
+    HsWidgetPositioningOnWidgetMove::instance()->setConfiguration(snapConfiguration);
+    HsWidgetPositioningOnWidgetMove::instance()->setPagePresentation(containerArea, inActiveRects, activeRect);
+    HsWidgetPositioningOnWidgetMove::Result convertedResult = HsWidgetPositioningOnWidgetMove::instance()->run(movingRect);
+
+    QVERIFY(hsResultCompare(convertedResult, expectedResult));
+}
+
+void t_hsUtils::testHsSnapToLinesSnapDisabled_data()
+{
+    QTest::addColumn<QRectF>("containerArea");
+    QTest::addColumn< QList<QRectF> >("inActiveRects");
+    QTest::addColumn<QRectF>("activeRect");
+    QTest::addColumn<QRectF>("movingRect");
+    QTest::addColumn<HsWidgetPositioningOnWidgetMove::Result>("expectedResult");
+
+    QTest::newRow("SnapDisabled")
+        << QRectF(0, 0, 1000, 1000)
+        << (QList<QRectF>())
+        << QRectF(5, 5, 200, 200)
+        << QRectF(380, 380, 200, 200)
+        << HsWidgetPositioningOnWidgetMove::Result();
+}
+
+void t_hsUtils::testHsSnapToLinesSnapDisabled()
+{
+    QFETCH(QRectF, containerArea);
+    QFETCH(QList<QRectF>, inActiveRects);
+    QFETCH(QRectF, activeRect);
+    QFETCH(QRectF, movingRect);
+    QFETCH(HsWidgetPositioningOnWidgetMove::Result, expectedResult);
+
+    HsWidgetPositioningOnWidgetMove::setInstance(new HsSnapToLines);
+
+    QVariantHash snapConfiguration;
+    snapConfiguration[Hs::snapEnabled] = QString::number(SNAP_DISABLED_VALUE);
+
+    HsWidgetPositioningOnWidgetMove::instance()->setConfiguration(snapConfiguration);
+    HsWidgetPositioningOnWidgetMove::instance()->setPagePresentation(containerArea, inActiveRects, activeRect);
+    HsWidgetPositioningOnWidgetMove::Result convertedResult = HsWidgetPositioningOnWidgetMove::instance()->run(movingRect);
+
+    QVERIFY(hsResultCompare(convertedResult, expectedResult));
+}
+
+bool t_hsUtils::hsLineCompare(QLineF l1, QLineF l2)
+{
+    if ((l1.p1() == l2.p1() || l1.p1() == l2.p2())
+        && (l1.p2() == l2.p1() || l1.p2() == l2.p2())) {
+        return true;
+    }
+    else {
+        return false;
+    }
+}
+
+bool t_hsUtils::hsResultCompare(const HsWidgetPositioningOnWidgetMove::Result& sr1, const HsWidgetPositioningOnWidgetMove::Result& sr2)
+{
+    bool resultsAreSame = false;
+    bool horizontalLinesSame = false;
+    bool verticalLinesSame = false;
+
+    qDebug() << "Converted Result = " <<sr1.hasHorizontalSnap <<sr1.horizontalSnapPosition<<sr1.hasVerticalSnap<<sr1.verticalSnapPosition;
+    qDebug() << "Expectted Result = " <<sr2.hasHorizontalSnap <<sr2.horizontalSnapPosition<<sr2.hasVerticalSnap<<sr2.verticalSnapPosition;
+
+    if ((sr1.hasHorizontalSnap == sr2.hasHorizontalSnap)
+        && (sr1.horizontalSnapPosition == sr2.horizontalSnapPosition)
+        && (sr1.hasVerticalSnap == sr2.hasVerticalSnap)
+        && (sr1.verticalSnapPosition == sr2.verticalSnapPosition)) {
+        //Check if Horizontal Snap Position Exists and compare the vertical line
+        if (sr1.hasHorizontalSnap) {
+            QLineF l1 = sr1.verticalSnapLine;
+            QLineF l2 = sr2.verticalSnapLine;
+            verticalLinesSame = hsLineCompare(l1, l2);
+            qDebug() << "Converted Vertical Line = " << l1.x1() << l1.y1() << l1.x2() << l1.y2();
+            qDebug() << "Expected Vertical Line = " << l2.x1() << l2.y1() << l2.x2() << l2.y2();
+            qDebug() << "Vertical lines are same = " << verticalLinesSame;
+        }
+        else {
+            verticalLinesSame = true;
+        }
+
+        //Check if Vertical Snap Position Exists and compare the horizontal line
+        if (sr1.hasVerticalSnap) {
+            QLineF l1 = sr1.horizontalSnapLine;
+            QLineF l2 = sr2.horizontalSnapLine;
+            horizontalLinesSame = hsLineCompare(l1, l2);
+            qDebug() << "Converted Horizontal Line = " << l1.x1() << l1.y1() << l1.x2() << l1.y2();
+            qDebug() << "Expected Horizontal Line = " << l2.x1() << l2.y1() << l2.x2() << l2.y2();
+            qDebug() << "Horizontal lines are same = " << horizontalLinesSame;
+        }
+        else {
+            horizontalLinesSame = true;
+        }
+
+        if (horizontalLinesSame && verticalLinesSame) {
+            resultsAreSame = true;
+        }
+    }
+
+    if ( !resultsAreSame) {
+        qDebug() << "results are not the same!!!";
+    }
+    return resultsAreSame;
+}
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsutils/tsrc/t_hsutils/src/t_trashbinwidget.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,47 @@
+/*
+* 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 ONLY_MENU_TESTCASES
+
+#include "t_hsutils.h"
+#include "hstrashbinwidget.h"
+
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsUtils::testTrashbinWidgetConstruct()
+{
+    HsTrashBinWidget *widget = new HsTrashBinWidget();
+    QVERIFY(!widget->parentItem());
+    QVERIFY(widget->mIconItem);
+    QVERIFY(widget->layout());
+    delete widget;
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void t_hsUtils::testTrashbinWidgetActivation()
+{
+    HsTrashBinWidget *widget = new HsTrashBinWidget();
+    widget->activate();
+    widget->deactivate();
+    delete widget;
+}
+
+#endif // ONLY_MENU_TESTCASES
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsutils/tsrc/t_hsutils/t_hsutils.pri	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,23 @@
+#
+# 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:
+#
+#Header files
+HEADERS += ./inc/*.h \
+           ../../inc/*.h 
+           
+
+#Source files
+SOURCES += ./src/*.cpp\
+           ../../src/*.cpp 
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsutils/tsrc/t_hsutils/t_hsutils.pro	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,76 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+TEMPLATE = app
+
+CONFIG(debug, debug|release) {
+    DESTDIR = ./debug
+} else {
+    DESTDIR = ./release
+}
+
+CONFIG += debug_and_release \
+          console
+
+CONFIG += hb mobility
+MOBILITY += systeminfo
+
+QT += testlib \
+      xml \
+      sql
+
+coverage:DEFINES += COVERAGE_MEASUREMENT
+bgimage:DEFINES += BG_ENABLED
+
+DEFINES += HOMESCREEN_TEST \
+           HSUTILS_TEST
+
+DEPENDPATH += .\
+              ./src \
+              ../src \
+              ../inc
+
+INCLUDEPATH += .\
+               ./inc \
+               ../../inc \
+               ../../../inc \
+               ../../../serviceproviders/hsmenuserviceprovider/inc
+
+tests_applib: {
+    include(../../../common.pri)
+    DEFINES += ONLY_MENU_TESTCASES
+}
+
+symbian: {
+    LIBS+=-lxqservice -lxqserviceutil
+    CONFIG += symbian_test
+    tests_applib: {
+        coverage: CONFIG -= symbian_test
+    }
+    CONFIG -= hb
+    load(hb.prf)
+    CONFIG -= symbian_i18n
+    TARGET.UID3 = 0x20022F4F
+    TARGET.CAPABILITY = CAP_APPLICATION AllFiles
+    TARGET.EPOCHEAPSIZE = 0x20000 0x1000000 // 128kB - 16MB
+    
+    MMP_RULES += SMPSAFE
+}
+
+include(t_hsutils.pri)
+
+win32:include(installs_win32.pri)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsutils/tsrc/tsrc.pro	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,24 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+TEMPLATE = subdirs
+SUBDIRS  = t_hsutils
+           
+CONFIG  += ordered
+
+symbian: {
+    CONFIG += symbian_test
+}
--- a/homescreenapp/hswidgetuninstaller/hswidgetuninstaller.pro	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/hswidgetuninstaller/hswidgetuninstaller.pro	Mon Oct 04 00:07:25 2010 +0300
@@ -47,4 +47,6 @@
     LIBS += -lxqserviceutil
     LIBS += -lapparc
     LIBS += -lhsdomainmodel
+    
+    MMP_RULES += SMPSAFE
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hswidgetuninstaller/tsrc/t_hswidgetuninstaller/empty.manifest	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,1 @@
+asfasdfsa
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hswidgetuninstaller/tsrc/t_hswidgetuninstaller/fail_new.manifest	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<hswidgetmanifestunknown>
+	<uri>helloworldwidgetplugin</uri>
+	<title>Hello world</title>
+	<description>Hello world homescreen widget example</description>
+	<icon>helloworldwidgetplugin.png</icon>
+	<hidden>false</hidden>
+	<servicexml>helloworldwidgetplugin.xml</servicexml>
+</hswidgetmanifest>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hswidgetuninstaller/tsrc/t_hswidgetuninstaller/inc/t_hswidgetuninstaller.h	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,43 @@
+/*
+* 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:  Test class for hswidgetuninstaller
+*
+*/
+
+#include <QtTest/QtTest>
+#include <QWidget>
+#include <QGraphicsView>
+#include <QObject>
+#include <QList>
+#include <QGraphicsWidget>
+
+/**
+* @test Test class for homescreen::hsutils modules.
+*/
+class t_hswidgetuninstaller : public QObject
+{
+    Q_OBJECT
+
+private slots:
+
+    void initTestCase();
+    void cleanupTestCase();
+    
+    void testWidgetInstallerSender();
+    
+    void testWidgetComponentParser_data();
+    void testWidgetComponentParser();
+    
+
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hswidgetuninstaller/tsrc/t_hswidgetuninstaller/inc/xqrequestinfo_mock.h	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,34 @@
+/*
+* 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:  Mock class for XQRequestInfo
+*
+*/
+
+#ifndef XQREQUESTINFO_H
+#define XQREQUESTINFO_H
+
+class XQRequestInfo
+{
+    public:
+        XQRequestInfo(){} ;
+        virtual ~XQRequestInfo(){} ;
+        
+    public:
+        
+        void setBackground(bool /*on*/) {};
+    private:
+};
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hswidgetuninstaller/tsrc/t_hswidgetuninstaller/inc/xqservicerequest_mock.h	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,49 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Mock class for XQServiceRequest
+*
+*/
+
+#ifndef XQSERVICEREQUEST_H
+#define XQSERVICEREQUEST_H
+#include <QObject>
+#include <QVariant>
+#include "xqrequestinfo_mock.h"
+
+class XQServiceRequest : public QObject
+{
+    Q_OBJECT
+
+public:
+    
+    XQServiceRequest(const QString& /*service*/, const QString& /*message*/, const bool& synchronous = true){
+        Q_UNUSED(synchronous);};
+    ~XQServiceRequest(){};
+
+    bool send(){return true;};
+    
+    void setInfo(const XQRequestInfo &/*info*/){};
+    XQRequestInfo info() const{return XQRequestInfo();};
+    int latestError()  {return 0;};
+    
+    template<typename T>
+    inline XQServiceRequest &operator<< (const T &/*var*/)
+    {
+        return *this;
+    }
+
+private:
+};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hswidgetuninstaller/tsrc/t_hswidgetuninstaller/installs_symbian.pri	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,26 @@
+#
+# 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:
+#
+
+export.sources = empty.manifest \
+                 fail_new.manifest \
+                 ok_new.manifest \
+                 ok_old.manifest \
+                 version10.manifest \
+                 version12.manifest
+                 
+export.path = /hsresources/testresources
+
+DEPLOYMENT += export
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hswidgetuninstaller/tsrc/t_hswidgetuninstaller/installs_win32.pri	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,31 @@
+#
+# 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:
+#
+
+testfiles.path = ../../../../../bin/hstests/
+testfiles.files = ./debug/t_hswidgetuninstaller.exe \
+                  *.manifest
+
+ddepend1.files = ../../../../../bin/debug/caclient.dll \
+                 ../../../../../bin/debug/hsdomainmodel.dll \
+                 ../../../../../bin/debug/hsutils.dll
+ddepend1.path = ./debug
+
+rdepend1.files = ../../../../../bin/release/caclient.dll \
+                 ../../../../../bin/release/hsdomainmodel.dll \
+                 ../../../../../bin/release/hsutils.dll
+rdepend1.path = ./release
+
+INSTALLS += testfiles ddepend1 rdepend1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hswidgetuninstaller/tsrc/t_hswidgetuninstaller/ok_new.manifest	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<hswidgetmanifest>
+	<uri>helloworldwidgetplugin</uri>
+	<title>Hello world</title>
+	<description>Hello world homescreen widget example</description>
+	<icon>helloworldwidgetplugin.png</icon>
+	<hidden>false</hidden>
+	<servicexml>helloworldwidgetplugin.xml</servicexml>
+	<translationfile>helloworldtranslation</translationfile>
+</hswidgetmanifest>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hswidgetuninstaller/tsrc/t_hswidgetuninstaller/ok_old.manifest	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<widgetprovider>
+    <widget library="helloworldwidgetplugin"
+            uri="helloworldwidgetplugin"
+            title="Hello"
+            iconuri="helloworldwidgetplugin.png"
+	    description="widget example."
+	    translationfile="helloworldtranslation"/>
+</widgetprovider>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hswidgetuninstaller/tsrc/t_hswidgetuninstaller/sis/t_hswidgetinstaller.pkg	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,41 @@
+;
+; 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:
+;
+
+; Language
+&EN
+
+; SIS header: name, uid, version
+#{"t_hswidgetuninstaller"},(0x20022F42),1,0,0
+
+; Localised Vendor name
+%{"Nokia"}
+
+; Unique Vendor name
+:"Nokia"
+
+; Supports S60 5th Edition
+[0x1028315F], 0, 0, 0, {"S60ProductID"}
+
+; HS Utils unittest
+"/epoc32/release/armv5/urel/t_hswidgetuninstaller.exe"                      - "c:/sys/bin/t_hswidgetuninstaller.exe"
+"/epoc32/data/z/private/10003a3f/import/apps/t_hswidgetuninstaller_reg.rsc" - "c:/private/10003a3f/import/apps/t_hswidgetuninstaller_reg.rsc"
+"/epoc32/data/z/resource/apps/t_hswidgetuninstaller.rsc"                    - "c:/resource/apps/t_hswidgetuninstaller.rsc"
+"../empty.manifest"                                                         - "c:/private/20022F42/empty.manifest"
+"../fail_new.manifest"                                                      - "c:/private/20022F42/fail_new.manifest"
+"../ok_new.manifest"                                                        - "c:/private/20022F42/ok_new.manifest"
+"../ok_old.manifest"                                                        - "c:/private/20022F42/ok_old.manifest"
+"../version10.manifest"                                                     - "c:/private/20022F42/version10.manifest"
+"../version12.manifest"                                                     - "c:/private/20022F42/version12.manifest"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hswidgetuninstaller/tsrc/t_hswidgetuninstaller/sis/t_hswidgetinstaller_sisx.bat	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,30 @@
+@rem
+@rem Copyright (c) 2009 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 t_hswidgetinstaller.sisx del t_hswidgetinstaller.sisx
+
+makesis t_hswidgetinstaller.pkg
+signsis t_hswidgetinstaller.sis t_hswidgetinstaller.sisx ../../../../internal/sis/rd.cer ../../../../internal/sis/rd-key.pem
+
+if exist t_hswidgetinstaller.sisx (
+echo t_hswidgetinstaller.sisx creation SUCCEEDED
+del t_hswidgetinstaller.sis
+)
+
+if not exist t_hswidgetinstaller.sisx (
+echo t_hswidgetinstaller.sisx creation FAILED
+)
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hswidgetuninstaller/tsrc/t_hswidgetuninstaller/src/t_hswidgetuninstaller.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,77 @@
+/*
+* 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:  Main test class for hswidgetuninstaller.
+*
+*/
+
+
+#include "t_hswidgetuninstaller.h"
+#include "hswidgetinstallersender.h"
+#include "hswidgetcomponentparser.h"
+
+
+
+
+void t_hswidgetuninstaller::initTestCase()
+{
+#ifndef NFT
+    QDir::setCurrent("C:/hsresources/testresources");
+#else      
+    QDir::setCurrent("Z:/hsresources/testresources");
+#endif   
+}
+
+void t_hswidgetuninstaller::cleanupTestCase()
+{
+}
+
+void t_hswidgetuninstaller::testWidgetInstallerSender()
+{
+    HsWidgetInstallerSender sender;
+    HsWidgetComponentDescriptor widgetDescriptor;
+    QString functionName("widgetUninstalled(QVariantHash)");
+    sender.widgetChanged(functionName, widgetDescriptor);
+    // nothing to verify
+}
+
+void t_hswidgetuninstaller::testWidgetComponentParser_data()
+{    
+    QTest::addColumn<QString>("filename");
+    QTest::addColumn<QString>("expecteduri");
+    QTest::addColumn<bool>("expectederror");
+    QTest::addColumn<QString>("expectedtranslationfile");
+    QTest::newRow("notfound") << "notfound.manifest" << "" << true << "";
+    QTest::newRow("empty.manifest") << "empty.manifest" << "" << true << "";
+    QTest::newRow("ok_new") << "ok_new.manifest" << "helloworldwidgetplugin" << false << "helloworldtranslation";
+    QTest::newRow("ok_old") << "ok_old.manifest" << "helloworldwidgetplugin" << false << "";
+    QTest::newRow("fail_new.manifest") << "fail_new.manifest" << "" << true << "";
+    QTest::newRow("version10.manifest") << "version10.manifest" << "helloworldwidgetplugin" << false << "";
+    QTest::newRow("version12.manifest") << "version12.manifest" << "" << true << "";
+}
+
+void t_hswidgetuninstaller::testWidgetComponentParser()
+{
+    QFETCH(QString, filename);
+    QFETCH(QString, expecteduri);
+    QFETCH(bool, expectederror);
+    QFETCH(QString, expectedtranslationfile);
+    HsWidgetComponentParser componentParser(filename);
+    HsWidgetComponentDescriptor widgetDescriptor = componentParser.widgetComponentDescriptor();
+    QCOMPARE(widgetDescriptor.uri(), expecteduri);
+    QCOMPARE(componentParser.error(), expectederror);
+    QCOMPARE(widgetDescriptor.translationFilename(), expectedtranslationfile);
+}
+
+
+QTEST_MAIN(t_hswidgetuninstaller)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hswidgetuninstaller/tsrc/t_hswidgetuninstaller/t_hswidgetuninstaller.pri	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,25 @@
+#
+# 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:
+#
+#Header files
+
+HEADERS += ./inc/*.h \
+           ../../inc/*.h
+           
+
+#Source files
+SOURCES += ./src/*.cpp\
+           ../../src/hswidgetcomponentparser.cpp \
+           ../../src/hswidgetinstallersender.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hswidgetuninstaller/tsrc/t_hswidgetuninstaller/t_hswidgetuninstaller.pro	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,71 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+TEMPLATE = app
+
+CONFIG(debug, debug|release) {
+    LIBS += -L./../../../../../bin/debug -lhsdomainmodel
+    DESTDIR = ./debug
+} else {
+    LIBS += -L./../../../../../bin/release -lhsdomainmodel
+    DESTDIR = ./release
+}
+
+CONFIG += debug_and_release \
+          console
+
+CONFIG += hb
+
+QT += testlib \
+      xml \
+      sql
+
+coverage:DEFINES += COVERAGE_MEASUREMENT
+
+DEFINES += HOMESCREEN_TEST 
+
+DEPENDPATH += .\
+              ./src \
+              ../src \
+              ../inc
+
+INCLUDEPATH += .\
+               ./inc \
+               ../../inc \
+               ../../../inc \
+               ../../../hsdomainmodel/inc 
+               
+
+
+
+symbian: {
+    CONFIG += symbian_test
+    CONFIG -= hb
+    load(hb.prf)
+    CONFIG -= symbian_i18n
+    TARGET.UID3 = 0x20022F42
+    TARGET.CAPABILITY = CAP_APPLICATION AllFiles
+    TARGET.EPOCHEAPSIZE = 0x20000 0x1000000 // 128kB - 16MB
+    
+    include(installs_symbian.pri)
+    
+    MMP_RULES += SMPSAFE
+}
+
+include(t_hswidgetuninstaller.pri)
+
+win32:include(installs_win32.pri)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hswidgetuninstaller/tsrc/t_hswidgetuninstaller/version10.manifest	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<hswidgetmanifest version="1.0">
+	<foo>helloworldwidgetplugin</foo>
+	<uri>helloworldwidgetplugin</uri>
+	<title>Hello world</title>
+	<description>Hello world homescreen widget example</description>
+	<icon>helloworldwidgetplugin.png</icon>
+	<hidden>false</hidden>
+	<servicexml>helloworldwidgetplugin.xml</servicexml>
+</hswidgetmanifest>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hswidgetuninstaller/tsrc/t_hswidgetuninstaller/version12.manifest	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<hswidgetmanifest version="1.2">
+	<foobar>1.0</foobar>
+	<uri>helloworldwidgetplugin</uri>
+	<title>Hello world</title>
+	<description>Hello world homescreen widget example</description>
+	<icon>helloworldwidgetplugin.png</icon>
+	<hidden>false</hidden>
+	<servicexml>helloworldwidgetplugin.xml</servicexml>
+</hswidgetmanifest>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hswidgetuninstaller/tsrc/tsrc.pro	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,19 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+TEMPLATE = subdirs
+SUBDIRS  = t_hswidgetuninstaller
+CONFIG  += ordered
+symbian: CONFIG += symbian_test
--- a/homescreenapp/rom/bld.inf	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/rom/bld.inf	Mon Oct 04 00:07:25 2010 +0300
@@ -1,27 +1,17 @@
 /*
-* ==============================================================================
-*  Name        : bld.inf
-*  Part of     :
-*  Description : This is a top level bld file to generate all libraries.
-*
-* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
+* 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".
 *
-* This library is free software; you can redistribute it and/or
-* modify it under the terms of the GNU Lesser General Public
-* License as published by the Free Software Foundation; either
-* version 2 of the License, or (at your option) any later version.
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
 *
-* This library is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-* Lesser General Public License for more details.
+* Contributors:
 *
-* You should have received a copy of the GNU Lesser General Public
-* License along with this library; if not, write to the
-* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-* Boston, MA 02111-1307, USA.
-*
-* Description : This is a top level bld file to export the data and ROM files
+* Description: homescreen core iby file
 *
 */
 
--- a/homescreenapp/rom/homescreenapp_core.iby	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/rom/homescreenapp_core.iby	Mon Oct 04 00:07:25 2010 +0300
@@ -88,7 +88,5 @@
 file=ABI_DIR\BUILD_DIR\hsclockwidgetplugin.dll                                         SHARED_LIB_DIR\hsclockwidgetplugin.dll
 data=DATAZ_\RESOURCE_FILES_DIR\qt\plugins\homescreen\hsclockwidgetplugin.qtplugin  RESOURCE_FILES_DIR\qt\plugins\homescreen\hsclockwidgetplugin.qtplugin
 data=ZPRIVATE\20022f35\import\widgetregistry\20022F6C\hsclockwidgetplugin.manifest     private\20022f35\import\widgetregistry\20022F6C\hsclockwidgetplugin.manifest
-data=ZPRIVATE\20022f35\import\widgetregistry\20022F6C\tclock.png                       private\20022f35\import\widgetregistry\20022F6C\tclock.png
-data=ZPRIVATE\20022f35\import\widgetregistry\20022F6C\qtg_graf_hswidget_preview_clock.svg  private\20022f35\import\widgetregistry\20022F6C\qtg_graf_hswidget_preview_clock.svg
 
 #endif //__HOMESCREENAPP_CORE_IBY__
--- a/homescreenapp/serviceproviders/hsmenuserviceprovider/bwins/hsmenuserviceprovideru.def	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/serviceproviders/hsmenuserviceprovider/bwins/hsmenuserviceprovideru.def	Mon Oct 04 00:07:25 2010 +0300
@@ -58,4 +58,5 @@
 	?removeApplicationFromCollection@HsMenuService@@SA_NHH@Z @ 57 NONAME ; bool HsMenuService::removeApplicationFromCollection(int, int)
 	?tr@HsMenuItemModel@@SA?AVQString@@PBD0@Z @ 58 NONAME ; class QString HsMenuItemModel::tr(char const *, char const *)
 	?getStaticMetaObject@HsMenuEntryRemovedHandler@@SAABUQMetaObject@@XZ @ 59 NONAME ; struct QMetaObject const & HsMenuEntryRemovedHandler::getStaticMetaObject(void)
+	?executeAction@HsMenuService@@SAHABVCaEntry@@ABVQString@@PAVQObject@@PBD@Z @ 60 NONAME ; int HsMenuService::executeAction(class CaEntry const &, class QString const &, class QObject *, char const *)
 
--- a/homescreenapp/serviceproviders/hsmenuserviceprovider/eabi/hsmenuserviceprovideru.def	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/serviceproviders/hsmenuserviceprovider/eabi/hsmenuserviceprovideru.def	Mon Oct 04 00:07:25 2010 +0300
@@ -62,4 +62,5 @@
 	_ZTV15HsMenuItemModel @ 61 NONAME
 	_ZTV25HsMenuEntryRemovedHandler @ 62 NONAME
 	_ZTV26HsMenuCollectionsItemModel @ 63 NONAME
+	_ZN13HsMenuService13executeActionERK7CaEntryRK7QStringP7QObjectPKc @ 64 NONAME
 
--- a/homescreenapp/serviceproviders/hsmenuserviceprovider/hsmenuserviceprovider.pro	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/serviceproviders/hsmenuserviceprovider/hsmenuserviceprovider.pro	Mon Oct 04 00:07:25 2010 +0300
@@ -27,4 +27,5 @@
         -lcasoftwareregistry
 
 symbian::TARGET.UID3 = 0x20026FA9
+symbian:MMP_RULES += SMPSAFE
 !symbian:exportResources(./resource/*.png, resource)
--- a/homescreenapp/serviceproviders/hsmenuserviceprovider/inc/hsmenuservice.h	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/serviceproviders/hsmenuserviceprovider/inc/hsmenuservice.h	Mon Oct 04 00:07:25 2010 +0300
@@ -49,7 +49,11 @@
     static QStringList getCollectionNames();
     static QString getName(int entryId);
     static int executeAction(int entryId,
-            const QString &actionName = Hs::openActionIdentifier, 
+            const QString &actionName = Hs::openActionIdentifier,
+            QObject* receiver = NULL,
+            const char* member = NULL);
+    static int executeAction(const CaEntry &entry,
+            const QString &actionName = Hs::openActionIdentifier,
             QObject* receiver = NULL,
             const char* member = NULL);
     static bool launchTaskSwitcher();
@@ -66,13 +70,13 @@
     static bool organizeCollection(int groupId, QList<int> &entryIdList);
 
     static int allCollectionsId();
-    
+
     static int collectionIdByType(const QString& collectionType);
 
     static void touch(int entryId);
-    
+
     static void touch(const QList<int> &entryIdList);
-    
+
     static int launchSoftwareUpdate();
 
 private:
--- a/homescreenapp/serviceproviders/hsmenuserviceprovider/src/hsmenuentryremovedhandler.cpp	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/serviceproviders/hsmenuserviceprovider/src/hsmenuentryremovedhandler.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -31,7 +31,8 @@
 
 /*!
  Constructor.
- \param entryId identifies entry which removal is to be observed.
+ \param entryId identifies entry which removal is to be observed. If 0 no entry
+ will be observed.
  \param receiver object which \a callback is to be called on requested entry
  removal. If \receiver is passed 0 no action will be taken on the entry removal.
  \param callback signal or slot that will be called on entry removal. The \a callback
@@ -45,7 +46,7 @@
     const char *callback):
     mNotifier(0)
 {
-    if (receiver != 0 && callback != 0) {
+    if (entryId != 0 && receiver != 0 && callback != 0) {
         connect(this, SIGNAL(notify()), receiver, callback);
         subscribe(entryId);
     }
--- a/homescreenapp/serviceproviders/hsmenuserviceprovider/src/hsmenuservice.cpp	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/serviceproviders/hsmenuserviceprovider/src/hsmenuservice.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -182,7 +182,7 @@
  \param actionName string with action name
  \retval int error code, 0 if no error
  */
-int HsMenuService::executeAction(int entryId, const QString &actionName, 
+int HsMenuService::executeAction(int entryId, const QString &actionName,
         QObject* receiver, const char* member)
 {
     qDebug() << "HsMenuService::executeAction entryId:" << entryId
@@ -192,6 +192,22 @@
 }
 
 /*!
+ Executes action on an item entry
+ \param entry of this item
+ \param actionName string with action name
+ \retval int error code, 0 if no error
+ */
+int HsMenuService::executeAction(const CaEntry &entry,
+        const QString &actionName, QObject* receiver, const char* member)
+{
+    qDebug() << "HsMenuService::executeAction entryId:" << entry.id()
+             << "actionName:" << actionName;
+    return CaService::instance()->executeCommand(
+        entry, actionName, receiver, member);
+}
+
+
+/*!
  Launch task switcher
  \retval boolean launching status
  */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/serviceproviders/hsmenuserviceprovider/tsrc/t_hsmenuserviceprovider/inc/caentry.h	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,123 @@
+/*
+ * 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: caentry.h
+ *
+ */
+
+#ifndef CAENTRY_H
+#define CAENTRY_H
+
+#include <HbIcon>
+#include <QMap>
+#include <QSharedDataPointer>
+#include <QSize>
+#include <cadefs.h>
+
+#include "caicondescription.h"
+class HbIcon;
+
+class CaEntry
+{
+
+public:
+    mutable EntryRole mCaEntryRole;
+    mutable int mIdResult;
+    mutable QString mTextResult;
+    mutable CaIconDescription mSetCaIconDescription;
+    mutable EntryFlags mFlagsResult;
+    mutable QString mEntryTypeNameResult;
+    mutable QMap<QString, QString> mAttributes;
+    mutable QSizeF mMakeIconSize;
+    mutable HbIcon mMakeIconResult;
+    explicit CaEntry(EntryRole entryRole = ItemEntryRole):
+        mCaEntryRole(entryRole),
+        mIdResult(0)
+    {
+        mCaEntryRole = entryRole;
+    }
+    
+    int id() const
+    {
+        return mIdResult;
+    }
+
+    QString text() const
+    {
+        return mTextResult;
+    }
+    
+    void setText(const QString &text)
+    {
+        mTextResult = text;
+    }
+
+    void setIconDescription(const CaIconDescription &iconDescription)
+    {
+        mSetCaIconDescription = iconDescription;
+    }
+    EntryFlags flags() const
+    {
+        return mFlagsResult;
+    }
+    void setFlags(EntryFlags flags)
+    {
+        mFlagsResult = flags;
+    }
+
+    QString entryTypeName() const
+    {
+        return mEntryTypeNameResult;
+    }
+        
+    void setEntryTypeName(const QString &entryTypeName)
+    {
+        mEntryTypeNameResult = entryTypeName;
+    }
+    
+    void setAttribute(const QString &name, const QString &value)
+    {
+        mAttributes.insert(name, value);
+    }
+    QString attribute(const QString &name) const
+    {
+        return mAttributes[name];
+    }
+    
+    HbIcon makeIcon(const QSizeF &size = QSize(70, 70)) const
+    {
+        mMakeIconSize = size;
+        return mMakeIconResult;
+    }
+    
+    EntryRole role() const
+    {
+    	return mCaEntryRole;
+    }
+    
+    // test helper, not belonging to ContentStorage CaEntry
+    void clear()
+    {
+        mCaEntryRole = ItemEntryRole;
+        mIdResult = 0;
+        mTextResult.clear();
+        mSetCaIconDescription.clear();
+        mFlagsResult = 0;
+        mEntryTypeNameResult.clear();  
+        mAttributes.clear();
+        mMakeIconSize.setHeight(-1);
+        mMakeIconSize.setWidth(-1);
+    }
+};
+
+#endif // CAENTRY_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/serviceproviders/hsmenuserviceprovider/tsrc/t_hsmenuserviceprovider/inc/caicondescription.h	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,42 @@
+/*
+ * 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: caicondescription.h
+ *
+ */
+
+#ifndef CAICONDESCRIPTION_H
+#define CAICONDESCRIPTION_H
+
+#include <QSharedDataPointer>
+#include <QString>
+
+// mocks Content Storage CaIconDescrption
+class  CaIconDescription
+{
+
+public:
+    QString mSetFileName;
+    void setFilename(const QString &fileName)
+    {
+        mSetFileName = fileName;
+    }
+    
+    // test helper, not belonging to Content Storage CaIconDescription
+    void clear()
+    {
+        mSetFileName.clear();
+    }
+};
+
+#endif // CAICONDESCRIPTION_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/serviceproviders/hsmenuserviceprovider/tsrc/t_hsmenuserviceprovider/inc/caitemmodel.h	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,180 @@
+/*
+ * 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: caitemmodel.h
+ *
+ */
+
+#ifndef CASTANDARDITEMMODEL_H
+#define CASTANDARDITEMMODEL_H
+
+// System includes
+#include <QAbstractItemModel>
+#include <QAbstractItemView>
+
+#include "caquery.h"
+#include "caentry.h"
+// Forward declarations
+class CaEntry;
+
+// mock Class declaration
+class CaItemModel: public QAbstractItemModel
+{
+
+Q_OBJECT
+
+public:
+    mutable CaQuery mCaItemModelQuery;
+    mutable QVariant mDataResult;
+    mutable QModelIndex mDataIndex;
+    mutable QModelIndex mIndexResult;
+    mutable QModelIndex mRootResult;
+    mutable QModelIndex mParentResult;
+    mutable int mDataRole;
+    mutable int mRowCountResult;
+    mutable int mColumnCountResult;
+    mutable SortAttribute mSetSortAttribute;
+    mutable Qt::SortOrder mSetSortOrder;
+    mutable bool mSecondLineVisibilityResult;
+    mutable bool mIsAutoUpdateResult;
+    mutable QSizeF mGetIconSizeResult;
+    mutable QSharedPointer<CaEntry> mEntryResult;
+    // Data types
+    enum CaItemRole
+    {
+        IdRole = Qt::UserRole + 1,
+        ParentIdRole,
+        TypeRole,
+        FlagsRole,
+        TextRole,//contains title represented as QString,
+        FullTextRole //'title description' convinient for operations such as search
+    };
+
+    // Function declarations
+    CaItemModel(const CaQuery &query, QObject *parent = 0): 
+        QAbstractItemModel(parent), 
+        mCaItemModelQuery(query),
+        mDataRole(0),
+        mSecondLineVisibilityResult(false),
+        mIsAutoUpdateResult(false),
+        mEntryResult(new CaEntry)
+    {
+    }
+    
+    ~CaItemModel(){}
+
+    int columnCount(const QModelIndex &parent = QModelIndex()) const
+    {
+        Q_UNUSED(parent);
+        return mColumnCountResult;
+    }
+    int rowCount(const QModelIndex &parent = QModelIndex()) const
+    {
+        Q_UNUSED(parent);
+        return mRowCountResult;
+    }
+    virtual QModelIndex index(int row, int column = 0,
+        const QModelIndex &parent = QModelIndex()) const
+    {
+        Q_UNUSED(parent);
+        return createIndex(row, column);
+    }
+    
+    virtual QModelIndex parent(const QModelIndex &index) const
+    {
+        Q_UNUSED(index);
+        return mParentResult;
+    }
+    
+    QModelIndex root() const
+    {
+        return mRootResult;
+    }
+    
+    virtual QVariant data(const QModelIndex &index, int role =
+        Qt::DisplayRole) const
+    {
+        mDataIndex = index;
+        mDataRole = role;
+        return mDataResult;
+    }
+    void setAutoUpdate(bool autoUpdate)
+    {
+        mIsAutoUpdateResult = autoUpdate;
+    }
+    void setSecondLineVisibility(bool secondLineVisible)
+    {
+        mSecondLineVisibilityResult = secondLineVisible;
+    }
+    bool secondLineVisibility() const
+    {
+        return mSecondLineVisibilityResult;
+    }
+    
+    bool isAutoUpdate() const
+    {
+        return mIsAutoUpdateResult;
+    }
+    
+    void setSort(SortAttribute sortAttribute, 
+        Qt::SortOrder sortOrder = Qt::AscendingOrder)
+    {
+        mSetSortAttribute = sortAttribute;
+        mSetSortOrder = sortOrder;
+    }
+    
+    void setIconSize(const QSizeF &size) 
+    {
+        mGetIconSizeResult = size;
+    }
+    
+    QSizeF getIconSize() const
+    {
+        return mGetIconSizeResult;
+    }
+    void updateModel(){}
+    void setParentId(int parentId)
+    {
+        Q_UNUSED(parentId);
+    }
+    void setFlagsOn(const EntryFlags &onFlags) 
+    {
+        Q_UNUSED(onFlags);
+    }
+    void setFlagsOff(const EntryFlags &offFlags) 
+    {
+        Q_UNUSED(offFlags);
+    }
+    QSharedPointer<CaEntry> entry(const QModelIndex &index) const 
+    {
+        Q_UNUSED(index);
+        return mEntryResult;
+    }
+    QList<int> getUninstallingEntriesIds(int componentId)
+    {
+        Q_UNUSED(componentId);
+        QList<int> ids;
+        ids.append(mEntryResult->id());
+        ids.append(4);
+        return ids;
+    }
+    void updateProgress(int id, int valueOfProgress)
+    {
+        if (id == mEntryResult->id()) {
+            mEntryResult->setAttribute(QString("uninstall_progress"), 
+                    QString().setNum(valueOfProgress));
+        }
+    }
+};
+
+#endif // CASTANDARDITEMMODEL_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/serviceproviders/hsmenuserviceprovider/tsrc/t_hsmenuserviceprovider/inc/canotifier.h	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,76 @@
+/*
+ * 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: canotifier.h
+ *
+ */
+
+#ifndef CANOTIFIER_H
+#define CANOTIFIER_H
+
+#include <QObject>
+#include "cadefs.h"
+#include "caentry.h"
+
+class CaNotifier: public QObject
+{
+Q_OBJECT
+
+public:
+
+    explicit CaNotifier() {};
+
+    virtual ~CaNotifier() {};
+
+    void issueEntryChanged(int entryId, ChangeType changeType)
+    {
+        emit entryChanged(entryId, changeType);
+    }
+signals:
+
+    /*!
+        A signal emited when the entry is changed.
+        \param entryId entry id.
+        \param changeType the type of the change.
+    */
+    void entryChanged(int entryId, ChangeType changeType);
+
+    /*!
+        A signal emited when the entry is changed.
+        \param entry changed entry.
+        \param changeType the type of the change.
+    */
+    void entryChanged(const CaEntry &entry, ChangeType changeType);
+
+    /*!
+        A signal emited when the entry is touched.
+        \param id entry id.
+    */
+    void entryTouched(int id);
+
+    /*!
+        A signal emited when group content is changed.
+        \param groupId group id.
+    */
+    void groupContentChanged(int groupId);
+
+protected:
+
+    virtual void connectNotify(const char * signal) { Q_UNUSED(signal); }
+
+    virtual void disconnectNotify(const char * signal) { Q_UNUSED(signal); }
+
+};
+
+
+#endif // CANOTIFIER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/serviceproviders/hsmenuserviceprovider/tsrc/t_hsmenuserviceprovider/inc/canotifierfilter.h	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,50 @@
+/*
+ * 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: canotifierfilter.h
+ *
+ */
+
+#ifndef CANOTIFIERFILTER_H
+#define CANOTIFIERFILTER_H
+
+#include <QList>
+
+#include <cadefs.h>
+
+
+
+class CaQuery;
+
+class CaNotifierFilter
+{
+
+public:
+
+    CaNotifierFilter() {}
+    virtual ~CaNotifierFilter() {}
+
+
+    QList<int> getIds() const {return mIds;}
+    void setIds(const QList<int> &ids) {mIds = ids;}
+
+    EntryRoles getEntryRole() const;
+    void setEntryRole(EntryRoles entryRole);
+
+    QStringList getTypeNames() const;
+    void setTypeNames(const QStringList &typeNames);
+
+    QList<int> mIds;
+};
+
+#endif // CANOTIFIERFILTER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/serviceproviders/hsmenuserviceprovider/tsrc/t_hsmenuserviceprovider/inc/caquery.h	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,121 @@
+/*
+ * 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: caquery.h
+ *
+ */
+
+#ifndef CAQUERY_H
+#define CAQUERY_H
+
+#include <QStringList>
+#include <QString>
+#include <QDebug>
+#include <QMap>
+#include "caclient_global.h"
+#include "cadefs.h"
+
+// mocks Content Storage CaQuery
+class CaQuery
+{
+
+public:
+    CaQuery():
+        mSetParentId(0),
+        mSetSortAttribute(NameSortAttribute),
+        mSetSortOrder(Qt::AscendingOrder)
+    {}
+
+    void setEntryRoles(EntryRoles entryRoles);
+
+    void setParentId(int id);
+
+
+    void addEntryTypeName(const QString &entryTypeName);
+
+    void setFlagsOn(const EntryFlags &onFlags);
+
+    void setFlagsOff(const EntryFlags &offFlags);
+
+    void setSort(SortAttribute sortAttribute,
+        Qt::SortOrder sortOrder = Qt::AscendingOrder);
+
+    QMap<QString, QString> attributes() const { return QMap<QString, QString>(); }
+    QString attribute(const QString &name) const {
+        Q_UNUSED(name);
+        return QString(); }
+    void setAttribute(const QString &name, const QString &value) {
+        Q_UNUSED(name);
+        Q_UNUSED(value);
+    }
+
+    void removeAttribute(const QString &name) { Q_UNUSED(name); }
+
+
+    // test supporting members
+    mutable int mSetParentId;
+    mutable EntryRoles mSetEntryRoles;
+    mutable QList<QString> mAddEntryTypeNames;
+    mutable EntryFlags mSetFlagsOn;
+    mutable EntryFlags mSetFlagsOff;
+    mutable SortAttribute  mSetSortAttribute;
+    mutable Qt::SortOrder mSetSortOrder;
+    mutable QString mQueryId;
+
+    // test helper, not belonging to Content Storage CaQuery
+    void clear()
+    {
+        mSetParentId = 0;
+        mSetEntryRoles = 0;
+        mAddEntryTypeNames.clear();
+        mSetFlagsOn = 0;
+        mSetFlagsOff = 0;
+        mSetSortAttribute = NameSortAttribute;
+        mSetSortOrder = Qt::AscendingOrder;
+    }
+
+};
+
+inline void CaQuery::setEntryRoles(EntryRoles entryRoles)
+{
+    mSetEntryRoles = entryRoles;
+}
+
+inline void CaQuery::setParentId(int id)
+{
+    mSetParentId = id;
+}
+
+
+inline void CaQuery::addEntryTypeName(const QString &entryTypeName)
+{
+    mAddEntryTypeNames.append(entryTypeName);
+}
+
+inline void CaQuery::setFlagsOn(const EntryFlags &onFlags)
+{
+    mSetFlagsOn = onFlags;
+}
+
+inline void CaQuery::setFlagsOff(const EntryFlags &offFlags)
+{
+    mSetFlagsOff = offFlags;
+}
+
+inline void CaQuery::setSort(SortAttribute sortAttribute,
+    Qt::SortOrder sortOrder)
+{
+    mSetSortAttribute = sortAttribute;
+    mSetSortOrder = sortOrder;
+}
+#endif // CAQUERY_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/serviceproviders/hsmenuserviceprovider/tsrc/t_hsmenuserviceprovider/inc/caservice.h	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,318 @@
+/*
+ * 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: caservice.h
+ *
+ */
+
+#ifndef CASERVICE_H
+#define CASERVICE_H
+
+#include <QObject>
+#include <QSharedPointer>
+#include <QMetaType>
+#include <QCoreApplication>
+#include <QString>
+#include <QDebug>
+
+
+#include "caservice.h"
+#include "caquery.h"
+#include "caentry.h"
+#include "canotifier.h"
+#include "canotifierfilter.h"
+#include "cadefs.h"
+
+typedef QList< QSharedPointer<CaEntry> > CaEntryList;
+
+// mocks Content Storage's CaService
+class CaService: public QObject
+{
+    Q_OBJECT
+
+    explicit CaService(QObject *parent = 0);
+
+    ~CaService();
+public:
+
+
+    static QSharedPointer<CaService> instance();
+
+    // mock only those methods of original CaService that are used in the module
+    QSharedPointer<CaEntry> getEntry(int entryId) const;
+    QList< QSharedPointer<CaEntry> > getEntries(const CaQuery &query) const;
+    QList<int> getEntryIds(const CaQuery &query) const;
+
+    QSharedPointer<CaEntry> createEntry(const CaEntry &entry) const;
+
+    bool removeEntry(int entryId) const;
+    bool updateEntry(const CaEntry &entry) const;
+    bool touch(const CaEntry &entry) const;
+    bool removeEntryFromGroup(int groupId, int entryId) const;
+    bool appendEntryToGroup(int groupId, int entryId) const;
+    bool appendEntriesToGroup(int groupId,
+        const QList<int> &entryIdList) const;
+
+    int executeCommand(int entryId, const QString &command = 
+        caCmdOpen, QObject* receiver = NULL, const char* member = NULL) const;
+    int executeCommand(const CaEntry &entry, const QString &command =
+        caCmdOpen, QObject* receiver = NULL, const char* member = NULL) const;
+
+    
+    bool customSort(int groupId, QList<int> &entryIdList) const;
+    
+    CaNotifier * createNotifier(const CaNotifierFilter &filter) const;
+    
+    mutable int mGetEntryId;
+    mutable QSharedPointer<CaEntry> mGetEntryResult;
+    mutable CaQuery mGetEntriesQuery;
+    mutable QList< QSharedPointer<CaEntry> > mGetEntriesResult;
+    mutable CaQuery mGetEntryIdQuery;
+    mutable QList<int> mGetEntryIdsResult;
+    mutable CaEntry mCreatedEntry;
+    mutable QSharedPointer<CaEntry>mCreateEntryResult;
+
+    mutable int mRemoveEntryId;
+    mutable bool mRemoveEntryForIdResult;
+
+    mutable CaEntry mUpdateEntry;
+    mutable bool mUpdateEntryResult;
+
+    mutable CaEntry mTouchEntry;
+    mutable QList<int> mTouchEntriesId;
+    mutable bool mTouchResult;
+
+    mutable int mRemoveGroupId;
+    mutable int mRemoveEntryFromGroupId;
+    mutable bool mRemoveEntryFromGroupResult;
+
+    mutable int mAppendGroupId;
+    mutable int mAppenEntryId;
+    mutable bool mAppendEntryToGroupResult;
+
+    mutable int mAppendListGroupId;
+    mutable QList<int> mAppendEntryIdList;
+    mutable bool mAppendEntriesToGroupResult;
+
+    mutable int mExecuteEntryId;
+    mutable QString mExecuteCommand;
+    mutable int mExecuteCommandResult;
+    
+    mutable CaEntry mExecuteEntry;
+    
+    mutable int mCustomSortGroupId;
+    mutable QList<int> mCustomSortEntryIdList;
+    mutable bool mCustomSortResult;
+    
+    mutable CaNotifierFilter mCreateNotifierFilter;
+    mutable CaNotifier *mCreateNotifierResult;
+
+    // helper for tests, not belonging to CaService
+    void clear()
+    {
+        mGetEntryId = 0;
+        mGetEntryResult.clear();
+        mGetEntriesQuery.clear();
+        mGetEntriesResult.clear();
+        mGetEntryIdQuery.clear();
+        mGetEntryIdsResult.clear();
+        mCreatedEntry.clear();
+        mCreateEntryResult.clear();
+        mRemoveEntryId = 0;
+        mRemoveEntryForIdResult = false;
+        
+        mUpdateEntry.clear();
+        mUpdateEntryResult = false;
+        
+        mTouchEntry.clear();
+        mTouchEntriesId.clear();
+        mTouchResult = false;
+        
+        mRemoveGroupId = 0;
+        mRemoveEntryFromGroupId = 0;
+        mRemoveEntryFromGroupResult = false;
+        
+        mAppendGroupId = 0;
+        mAppenEntryId = 0;
+        mAppendEntryToGroupResult = false;
+        
+        mAppendListGroupId = 0;
+        mAppendEntryIdList.clear();
+        mAppendEntriesToGroupResult = false;
+        
+        mExecuteEntryId = 0;
+        mExecuteCommand.clear();
+        mExecuteCommandResult = -333;
+        
+        mCustomSortGroupId = 0;
+        mCustomSortEntryIdList.clear();
+        mCustomSortResult = false;
+        
+        mCreateNotifierFilter = CaNotifierFilter();
+        mCreateNotifierResult = 0;
+    }
+private:
+    Q_DISABLE_COPY(CaService)
+    friend class QtSharedPointer::ExternalRefCount<CaService>;
+};
+
+
+
+
+
+inline CaService::CaService(QObject *parent) :
+        QObject(parent),
+        mGetEntryId(0),
+        mRemoveEntryId(0),
+        mRemoveEntryForIdResult(false),
+        mUpdateEntryResult(false),
+        mTouchResult(false),
+        mRemoveGroupId(0),
+        mRemoveEntryFromGroupId(0),
+        mRemoveEntryFromGroupResult(false),
+        mAppendGroupId(0),
+        mAppenEntryId(0),
+        mAppendEntryToGroupResult(false),
+        mAppendListGroupId(0),
+        mAppendEntriesToGroupResult(false),
+        mExecuteEntryId(0),
+        mExecuteCommandResult(false),
+        mCustomSortGroupId(0),
+        mCustomSortResult(false),
+        mCreateNotifierResult(0)
+
+{
+}
+
+inline QSharedPointer<CaService> CaService::instance()
+{
+    static QSharedPointer<CaService> service(new CaService);
+    return service;
+}
+
+inline CaService::~CaService()
+{
+}
+
+inline QSharedPointer<CaEntry> CaService::getEntry(int entryId) const
+{
+    mGetEntryId = entryId;
+    if (!mGetEntryResult.isNull()) {
+        mGetEntryResult->mIdResult = entryId;
+    }
+    return mGetEntryResult;
+}
+
+
+inline QList< QSharedPointer<CaEntry> > CaService::getEntries(const CaQuery &query) const
+{
+    mGetEntriesQuery = query;
+    return mGetEntriesResult;
+}
+
+inline QList<int> CaService::getEntryIds(const CaQuery &query) const
+{
+    mGetEntryIdQuery = query;
+    return mGetEntryIdsResult;
+}
+
+inline QSharedPointer<CaEntry> CaService::createEntry(const CaEntry &entry) const
+{
+    mCreatedEntry = entry;
+    return mCreateEntryResult;
+}
+
+inline bool CaService::removeEntry(int entryId) const
+{
+    mRemoveEntryId = entryId;
+    return mRemoveEntryForIdResult;
+}
+
+
+inline bool CaService::updateEntry(const CaEntry &entry) const
+{
+    mUpdateEntry = entry;
+    return mUpdateEntryResult;
+}
+
+inline bool CaService::touch(const CaEntry &entry) const
+{
+    if (entry.flags() & RemovableEntryFlag &&
+        (entry.flags() & UsedEntryFlag) == 0 &&
+        entry.role() == ItemEntryRole &&
+        entry.entryTypeName() != QString("package")) { //packageTypeName
+        mTouchEntry = entry;
+        mTouchEntriesId.append(entry.id());
+        return mTouchResult;
+    } else {
+        return true;
+    }
+}
+
+inline bool CaService::removeEntryFromGroup(int groupId, int entryId) const
+{
+    mRemoveGroupId = groupId;
+    mRemoveEntryFromGroupId = entryId;
+    return mRemoveEntryFromGroupResult;
+}
+
+inline bool CaService::appendEntryToGroup(int groupId, int entryId) const
+{
+    mAppendGroupId = groupId;
+    mAppenEntryId = entryId;
+    return mAppendEntryToGroupResult;
+}
+
+inline bool CaService::appendEntriesToGroup(int groupId,
+                                     const QList<int> &entryIdList) const
+{
+    mAppendListGroupId = groupId;
+    mAppendEntryIdList = entryIdList;
+    return mAppendEntriesToGroupResult;
+}
+
+inline int CaService::executeCommand(int entryId, const QString &command, 
+        QObject* receiver, const char* member) const
+{
+    Q_UNUSED(receiver);
+    Q_UNUSED(member);
+    mExecuteEntryId = entryId;
+    mExecuteCommand = command;
+    return mExecuteCommandResult;
+}
+
+inline int CaService::executeCommand(const CaEntry &entry, const QString &command, 
+        QObject* receiver, const char* member) const
+{
+    Q_UNUSED(receiver);
+    Q_UNUSED(member);
+    mExecuteEntry = entry;
+    mExecuteCommand = command;
+    return mExecuteCommandResult;
+}
+
+inline bool CaService::customSort(int groupId, QList<int> &entryIdList) const
+{
+    mCustomSortGroupId = groupId;
+    mCustomSortEntryIdList = entryIdList;
+    return mCustomSortResult;
+}
+
+inline CaNotifier * CaService::createNotifier(const CaNotifierFilter &filter) const
+{
+    mCreateNotifierFilter = filter;
+    return mCreateNotifierResult;
+}
+    
+
+#endif // CASERVICE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/serviceproviders/hsmenuserviceprovider/tsrc/t_hsmenuserviceprovider/inc/t_hsmenuentryremovedcallback.h	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,35 @@
+/*
+* 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:  Tests for HomeScreenStateProvider class.
+*
+*/
+
+#ifndef T_HS_MENU_ENTRY_REMOVED_CALLBACK_H
+#define T_HS_MENU_ENTRY_REMOVED_CALLBACK_H
+
+#include <QObject>
+
+class T_HsMenuEntryRemovedCallback: public QObject
+{
+    Q_OBJECT
+public:
+    T_HsMenuEntryRemovedCallback(): mCallsCount(0) {}
+    int callsCount() {return mCallsCount;}
+public slots:
+        void callback() { ++mCallsCount;};
+private:
+    int mCallsCount;
+};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/serviceproviders/hsmenuserviceprovider/tsrc/t_hsmenuserviceprovider/inc/t_hsmenuserviceprovider.h	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,104 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Tests for HomeScreenStateProvider class.
+*
+*/
+
+
+#ifndef T_HSMCSSTATES_H
+#define T_HSMCSSTATES_H
+#include <QtTest/QtTest>
+#ifdef Q_OS_SYMBIAN
+#include <e32std.h>
+#include <e32const.h>
+#endif
+
+
+class HsMenuItemModel;
+/**
+* @test Test class for menuservice modules.
+*/
+class MenuServiceTest : public QObject
+{
+    Q_OBJECT
+
+private slots:
+
+
+    /**
+     * initialize
+     */
+    void initTestCase();
+    /*
+    * Tests
+    */
+    void MenuService_getAllApplicationsModel();
+    void MenuService_getAllCollectionsModel();
+    void MenuService_getInstalledModel();
+    void MenuService_getCollectionModel();
+    void MenuService_getCollectionNames();
+    void MenuService_getName();
+    void MenuService_executeAction();
+    void MenuService_executeActionEntry();
+#ifdef Q_OS_SYMBIAN
+    void MenuService_launchTS();
+#endif//Q_OS_SYMBIAN
+    void MenuService_createCollection();
+    void MenuService_renameCollection();
+    void MenuService_removeCollection();
+    void MenuService_addApplicationsToCollection();
+    void MenuService_removeApplicationFromCollection();
+    void MenuService_organizeCollection();
+    void MenuService_touchAction();
+    void MenuService_touchListOfIdsAction();
+    void MenuService_launchSoftwareUpdate();
+    void MenuService_collectionIdByType();
+
+
+    void HsMenuItemModel_construction();
+    void HsMenuItemModel_setSort();
+    void HsMenuItemModel_getData();
+    void HsMenuItemModel_newIconNeeded();
+    void HsMenuItemModel_uninstallChange();
+    void HsMenuItemModel_preloadIcons();
+
+    void HsIconsIdleLoader_construction();
+
+    void HsMenuCollectionsItemModel_construction();
+    void HsMenuCollectionsItemModel_getData();
+    void HsMenuCollectionsItemModel_getSecondLine();
+
+    void HsMenuEntryRemovedHandlerTest_data();
+    void HsMenuEntryRemovedHandlerTest();
+
+
+    /**
+     * cleanup
+     */
+    void cleanup();
+    void cleanupTestCase();
+
+private:
+
+    int getId(HsMenuItemModel *model , int index);
+
+private:
+#ifdef Q_OS_SYMBIAN
+    void startThread();
+    void stopThread();
+    RThread iThread;
+#endif //Q_OS_SYMBIAN
+};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/serviceproviders/hsmenuserviceprovider/tsrc/t_hsmenuserviceprovider/installs_unix.pri	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,46 @@
+#
+# 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:
+#
+
+testfiles.path = ../../../../../../bin/hstests/
+
+
+testfiles.files = ./release/t_hsmenuserviceprovider
+
+
+
+
+
+statemachinedllrel.path = ./release/
+
+
+statemachinedllrel.files = ../../../../../hsstatemachine/release/*.so*
+
+
+
+
+
+statemachinedlldebug.path = ./debug/
+
+
+statemachinedlldebug.files = ../../../../../hsstatemachine/debug/*.so
+
+
+
+
+
+INSTALLS += testfiles statemachinedllrel statemachinedlldebug
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/serviceproviders/hsmenuserviceprovider/tsrc/t_hsmenuserviceprovider/installs_win32.pri	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,34 @@
+#
+# 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:
+#
+
+testfiles.path = ../../../../../../bin/debug/
+
+testfiles.files = ./release/t_hsmenuserviceprovider.exe \
+
+testfiles.files = ./debug/t_hsmenuserviceprovider.exe \
+
+
+statemachinedllrel.path = ./release/
+
+statemachinedllrel.files = ../../../../../core/hsstatemachine/release/*.dll
+
+
+
+statemachinedlldebug.path = ./debug/
+
+statemachinedlldebug.files = ../../../../../core/hsstatemachine/debug/*.dll
+
+INSTALLS += testfiles #statemachinedllrel statemachinedlldebug
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/serviceproviders/hsmenuserviceprovider/tsrc/t_hsmenuserviceprovider/src/t_hsmenuentryremovedhandler.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,74 @@
+/*
+ * 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 <QtGlobal>
+#include <QSignalSpy>
+ 
+#include "t_hsmenuserviceprovider.h"
+#include "hsmenuentryremovedhandler.h"
+#include "t_hsmenuentryremovedcallback.h"
+#include <cadefs.h>
+#include "caservice.h"
+#include "canotifier.h"
+#include "canotifierfilter.h"
+
+
+     
+void MenuServiceTest::HsMenuEntryRemovedHandlerTest_data()
+{
+    // define testing data table
+    QTest::addColumn<int>("subscribedId");
+    QTest::addColumn<int>("notifiedChangeType");
+    QTest::addColumn<int>("notificationsCount");
+    QTest::addColumn<int>("callbacksCount");
+    // prepare concrete rows for testing
+    //                                             id   changeType                  
+    QTest::newRow("non_matching_id") << 0 << static_cast<int>(RemoveChangeType) << 1 << 0;
+    
+    QTest::newRow("non_matching_change_type") << 1 << static_cast<int>(AddChangeType) << 1 << 0;
+                                                 
+    QTest::newRow("many_notifications") << 1 << static_cast<int>(RemoveChangeType) << 3  << 1;
+                                                 
+    QTest::newRow("one_notification") << 1 << static_cast<int>(RemoveChangeType) << 1 << 1;
+                                                 
+    QTest::newRow("no_notification") << 1 << static_cast<int>(RemoveChangeType) << 0 << 0;
+}
+
+void MenuServiceTest::HsMenuEntryRemovedHandlerTest()
+{
+    QFETCH(int, subscribedId);
+    QFETCH(int, notifiedChangeType);
+    QFETCH(int, notificationsCount);
+    QFETCH(int, callbacksCount);
+    
+    QPointer<CaNotifier> caNotifierMock(new CaNotifier());
+    CaService::instance()->mCreateNotifierResult = caNotifierMock.data();
+    
+    T_HsMenuEntryRemovedCallback callbackObj;
+    HsMenuEntryRemovedHandler handler(subscribedId, &callbackObj, SLOT(callback()));
+    
+    QSignalSpy spy(&handler, SIGNAL(notify()));
+    
+    for (int i = 0 ; i < notificationsCount && !caNotifierMock.isNull(); ++i) {
+        caNotifierMock->issueEntryChanged(subscribedId, 
+            static_cast<ChangeType>(notifiedChangeType));
+        qApp->processEvents();
+    }
+    
+    QCOMPARE(callbackObj.callsCount(), callbacksCount);
+    QCOMPARE(spy.count(), callbackObj.callsCount());
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/serviceproviders/hsmenuserviceprovider/tsrc/t_hsmenuserviceprovider/src/t_menuitemmodel.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,330 @@
+/*
+* 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 <qcoreapplication.h>
+#include <qstandarditemmodel.h>
+#include "caquery.h"
+#include <hstest_global.h>
+#include "hsmenuservice.h"
+#include "hsmenucollectionsitemmodel.h"
+#include "hsmenuitemmodel.h"
+#include "hsmenuserviceutils.h"
+#include "t_hsmenuserviceprovider.h"
+#include "hsiconsidleloader.h"
+
+void MenuServiceTest::HsMenuItemModel_construction()
+{
+    QScopedPointer<QObject> parent(new QObject);
+    CaQuery query;
+    query.mQueryId = "__HsMenuItemModel_construction_CaQuery";
+    HsMenuItemModel model(query, parent.data());
+    QCOMPARE(model.mCaItemModelQuery.mQueryId, query.mQueryId);
+    QCOMPARE(model.QObject::parent(), parent.data());
+    QVERIFY(model.getIconSize().isValid());
+}
+
+void MenuServiceTest::HsMenuItemModel_setSort()
+{
+    HsMenuItemModel model(CaQuery(), this);
+    
+    {
+        const Hs::HsSortAttribute sortAttribute = Hs::NoHsSortAttribute;
+    
+        model.setSort(sortAttribute);
+        QCOMPARE(model.mSetSortAttribute, HsMenuServiceUtils::sortBy(sortAttribute));
+        QCOMPARE(model.mSetSortOrder, HsMenuServiceUtils::sortOrder(sortAttribute));
+    }
+    {
+        const Hs::HsSortAttribute sortAttribute = Hs::DescendingNameHsSortAttribute;
+    
+        model.setSort(sortAttribute);
+        QCOMPARE(model.mSetSortAttribute, HsMenuServiceUtils::sortBy(sortAttribute));
+        QCOMPARE(model.mSetSortOrder, HsMenuServiceUtils::sortOrder(sortAttribute));        
+    }
+}
+
+void MenuServiceTest::HsMenuItemModel_getData()
+{
+    HsMenuItemModel model(CaQuery(), this);
+    
+    Qt::ItemDataRole role = Qt::DecorationRole;
+    const QModelIndex index = model.index(0, 0);
+    const QVariant expectedDecoration(QString("entryText"));
+    QList<QVariant> expectedResult;
+    expectedResult << expectedDecoration;
+    expectedResult << HbIcon(Hs::newIconId);
+    
+    model.mRootResult = index;
+    model.mEntryResult->mFlagsResult = 0;
+    model.mEntryResult->mEntryTypeNameResult = Hs::collectionDownloadedTypeName;
+    model.setSecondLineVisibility(true);
+    model.mDataResult = QVariant(expectedDecoration);
+
+    QList<QVariant> actualResult = model.data(index, role).toList();
+    
+    QCOMPARE(actualResult.at(0).toString(), 
+        expectedDecoration.toString());
+    QCOMPARE(actualResult.at(1).value<HbIcon>().iconName(), 
+        QString(Hs::newIconId));
+    
+    QCOMPARE(model.data(index), model.mDataResult);
+}
+
+
+void MenuServiceTest::HsMenuItemModel_newIconNeeded()
+{
+    HsMenuItemModel model(CaQuery(), this);
+    
+    const QModelIndex index = model.index(0, 0);
+    model.mRootResult = index;
+    model.mEntryResult->mFlagsResult = 0;
+    model.mEntryResult->mEntryTypeNameResult = Hs::collectionDownloadedTypeName;
+    model.setSecondLineVisibility(true);
+    QVERIFY(model.newIconNeeded(index));
+    
+    model.mRootResult = QModelIndex(); // invalid
+    QVERIFY(!model.root().isValid() && 
+        !model.newIconNeeded(index));
+    
+    model.mRootResult = index;
+    model.mEntryResult->mFlagsResult = UsedEntryFlag;
+    QVERIFY((model.entry(index)->flags() & UsedEntryFlag) && 
+        !model.newIconNeeded(index));
+    
+    model.mEntryResult->mFlagsResult = 0;
+    model.mEntryResult->mEntryTypeNameResult = "";
+    QVERIFY((model.entry(index)->entryTypeName() != Hs::collectionDownloadedTypeName ) && 
+        !model.newIconNeeded(index));
+    
+}
+
+
+void MenuServiceTest::HsMenuItemModel_uninstallChange()
+{
+    HsMenuItemModel model(CaQuery(), this);
+    const QModelIndex index = model.index(0, 0);
+    model.mRootResult = index;
+    model.mEntryResult->mFlagsResult = 0;
+    model.mEntryResult->setAttribute(QString("component_id"), 
+            QString().setNum(1));
+    
+    model.uninstallChange(1, 5);
+    QCOMPARE(model.mComponentId, 1);
+    QCOMPARE(model.mIds.count(), 2);
+    QCOMPARE(model.mEntryResult->attribute(
+            QString("uninstall_progress")), QString("5"));
+    
+    model.uninstallChange(1, 20);
+    QCOMPARE(model.mEntryResult->attribute(
+                QString("uninstall_progress")), QString("20"));
+}
+
+void MenuServiceTest::HsMenuCollectionsItemModel_construction()
+{
+    QScopedPointer<QObject> parent(new QObject);
+    CaQuery query;
+    query.mQueryId = "__HsMenuCollectionItemModel_construction_CaQuery";
+    HsMenuCollectionsItemModel model(query, parent.data());
+    QCOMPARE(model.mCaItemModelQuery.mQueryId, query.mQueryId);
+    QCOMPARE(model.QObject::parent(), parent.data());
+    QVERIFY(model.getIconSize().isValid());
+}
+
+
+
+void MenuServiceTest::HsMenuCollectionsItemModel_getData()
+{
+    HsMenuCollectionsItemModel model(CaQuery(), this);
+    
+    const QModelIndex index = model.index(0, 0);
+    const QString expectedText("entryText");
+    const QString expectedSecondLine(hbTrId("txt_applib_dblist_downloaded_val_empty"));
+    
+    model.mRootResult = index;
+    model.mEntryResult->mFlagsResult = 0;
+    model.mEntryResult->mTextResult = expectedText;
+    model.setSecondLineVisibility(true);
+
+    QList<QVariant> actualResult = model.data(index).toList();
+    
+    QCOMPARE(actualResult.at(0).toString(), 
+        expectedText);
+    QCOMPARE(actualResult.at(1).toString(), 
+        expectedSecondLine);
+
+    
+    Qt::ItemDataRole role = Qt::DecorationRole;
+    const QVariant expectedData;
+
+    model.mDataResult = expectedData;
+    QCOMPARE(model.data(index, role), expectedData);
+
+    model.setSecondLineVisibility(false);
+    QCOMPARE(model.data(index), expectedData);
+}
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+void MenuServiceTest::HsMenuCollectionsItemModel_getSecondLine()
+{    
+    HsMenuCollectionsItemModel model(CaQuery(), this);
+    Qt::ItemDataRole role = Qt::DisplayRole;
+    model.setSecondLineVisibility(true);
+    const QModelIndex index = model.index(0, 0);
+    
+    // set up mock data    
+   
+    // make up 2 items to be stored in a collection
+    QSharedPointer<CaEntry> collectionItemA(new CaEntry);
+    QString collectionItemAName("A");
+    collectionItemA->mTextResult = collectionItemAName;
+    QSharedPointer<CaEntry> collectionItemB(new CaEntry);
+    QString collectionItemBName("B");
+    collectionItemB->mTextResult = collectionItemBName;
+    
+    // make sure CaService will return the 2 entries on getEntries call
+    CaService::instance()->mGetEntriesResult.append(collectionItemA);
+    CaService::instance()->mGetEntriesResult.append(collectionItemB);
+    
+    QString expectedSecondLine(hbTrId("txt_applib_dblist_val_ln_new_applications",
+        CaService::instance()->mGetEntriesResult.count()));
+    
+    // make data() call getSecondLine for 'downloaded' collection
+    model.mEntryResult->setEntryTypeName(Hs::collectionDownloadedTypeName);
+    model.mEntryResult->mIdResult = 5; // just to have any id
+    
+    QString actualSecondLine = model.data(index, role).toList().at(1).toString();
+    
+    QCOMPARE(actualSecondLine, expectedSecondLine);    
+
+    // check what CaQuery was prepared by getSecondLine()
+    CaQuery resultQuery = CaService::instance()->mGetEntriesQuery;
+    QCOMPARE(resultQuery.mSetParentId, model.mEntryResult->mIdResult);
+    QCOMPARE(resultQuery.mSetEntryRoles, ItemEntryRole);
+    const EntryFlags expectedCollectionDownloadedFlags = 
+        RemovableEntryFlag | VisibleEntryFlag;
+    QCOMPARE(resultQuery.mSetFlagsOn, expectedCollectionDownloadedFlags);
+   
+    
+    // case for static collection
+    const EntryFlags expectedCollectionFlag = VisibleEntryFlag;
+    expectedSecondLine = collectionItemAName + "," + collectionItemBName;
+    
+    model.mEntryResult->setEntryTypeName(Hs::collectionTypeName);
+    
+    actualSecondLine = model.data(index, role).toList().at(1).toString();
+    
+    QCOMPARE(actualSecondLine, expectedSecondLine);
+
+    resultQuery = CaService::instance()->mGetEntriesQuery;
+    QCOMPARE(resultQuery.mSetFlagsOn, expectedCollectionFlag);
+}
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void MenuServiceTest::HsMenuItemModel_preloadIcons()
+{
+    HsMenuItemModel model(CaQuery(), this);
+    
+    // set up mock data
+    Qt::ItemDataRole role = Qt::DecorationRole;
+    const QModelIndex index = model.index(0, 0);
+    const QVariant expectedDecoration(QString("entryText"));
+    QList<QVariant> expectedResult;
+    expectedResult << expectedDecoration;
+    expectedResult << HbIcon(Hs::newIconId);
+    model.mRootResult = index;
+    model.mEntryResult->mFlagsResult = 0;
+    model.mEntryResult->mEntryTypeNameResult = Hs::collectionDownloadedTypeName;
+    model.setSecondLineVisibility(true);
+    model.mDataResult = QVariant(expectedDecoration);
+    model.mRowCountResult = 1; // i.e. how many rows the mock model pretends to have
+    QList<QVariant> actualResult = model.data(index, role).toList();
+    model.mEntryResult->mMakeIconResult = HbIcon(Hs::newIconId);
+    
+    // verify mock setup
+    QCOMPARE(actualResult.at(0).toString(), 
+        expectedDecoration.toString());
+    QCOMPARE(actualResult.at(1).value<HbIcon>().iconName(), 
+        QString(Hs::newIconId));
+    QCOMPARE(model.data(index), model.mDataResult);
+    
+    // invoke icon preloader construction
+    model.preloadIcons();
+    QVERIFY(model.mIconsIdleLoader);
+    
+    // invoke icon preloading
+
+    model.mIconsIdleLoader->processWhenIdle();
+    
+    // compare what has been logged in mock object with referece data
+    QCOMPARE(model.mEntryResult->mMakeIconSize, model.getIconSize());
+    QCOMPARE(model.mEntryResult->mMakeIconResult.iconName(),
+        QString(Hs::newIconId));
+}
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void MenuServiceTest::HsIconsIdleLoader_construction()
+{
+    // precondtitons - prepare model
+    HsMenuItemModel model(CaQuery(), this);
+    
+    // set up mock data
+    Qt::ItemDataRole role = Qt::DecorationRole;
+    const QModelIndex index = model.index(0, 0);
+    const QVariant expectedDecoration(QString("entryText"));
+    QList<QVariant> expectedResult;
+    expectedResult << expectedDecoration;
+    expectedResult << HbIcon(Hs::newIconId);
+    model.mRootResult = index;
+    model.mEntryResult->mFlagsResult = 0;
+    model.mEntryResult->mEntryTypeNameResult = Hs::collectionDownloadedTypeName;
+    model.setSecondLineVisibility(true);
+    model.mDataResult = QVariant(expectedDecoration);
+    model.mRowCountResult = 1; // i.e. how many rows the mock model pretends to have
+    QList<QVariant> actualResult = model.data(index, role).toList();
+    model.mEntryResult->mMakeIconResult = HbIcon(Hs::newIconId);
+    
+    QCOMPARE(actualResult.at(0).toString(), 
+        expectedDecoration.toString());
+    QCOMPARE(actualResult.at(1).value<HbIcon>().iconName(), 
+        QString(Hs::newIconId));
+    
+    QCOMPARE(model.data(index), model.mDataResult);
+    
+    // test
+    HsIconsIdleLoader *iconsIdleLoader = new HsIconsIdleLoader(&model);
+    
+    QVERIFY(iconsIdleLoader->mModel);
+    QVERIFY(iconsIdleLoader->mTimer);
+    QVERIFY(iconsIdleLoader->mTimer->isActive());
+    QTest::qWait(10000);
+    QVERIFY(!iconsIdleLoader->mTimer->isActive());
+    
+    delete iconsIdleLoader;
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+int MenuServiceTest::getId(HsMenuItemModel *model , int idx)
+{
+    return model->data(model->index(idx), CaItemModel::IdRole).toInt();
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/serviceproviders/hsmenuserviceprovider/tsrc/t_hsmenuserviceprovider/src/t_menuservice.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,864 @@
+/*
+ * 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:  Main test class for hsHomeScreenStateProvider library.
+ *
+ */
+
+#include <qcoreapplication.h>
+#include <qstandarditemmodel.h>
+#include <hbmainwindow.h>
+#include <hbaction.h>
+#include <hbgridview.h>
+#include <hbgridviewitem.h>
+#include <hstest_global.h>
+#include <qvaluespacepublisher.h>
+
+#include "caitemmodel.h"
+#include "hsmenuitemmodel.h"
+#include "caservice.h"
+#include "hsmenuservice.h"
+#include "hsmenuserviceutils.h"
+#include "t_hsmenuserviceprovider.h"
+
+QTM_USE_NAMESPACE
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuServiceTest::MenuService_getAllApplicationsModel()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif
+#endif
+    {
+        const Hs::HsSortAttribute
+            defaultSortAttribute(Hs::DescendingNameHsSortAttribute);
+
+        QScopedPointer<HsMenuItemModel>
+            model(HsMenuService::getAllApplicationsModel());
+
+        CaQuery actualQuery = model->mCaItemModelQuery;
+        CaQuery expectedQuery;
+        expectedQuery.setEntryRoles(ItemEntryRole);
+        expectedQuery.addEntryTypeName(Hs::applicationTypeName);
+        expectedQuery.addEntryTypeName(Hs::urlTypeName);
+        expectedQuery.addEntryTypeName(Hs::widgetTypeName);
+        expectedQuery.addEntryTypeName(Hs::templatedApplicationTypeName);
+        expectedQuery.setFlagsOn(VisibleEntryFlag);
+        expectedQuery.setFlagsOff(MissingEntryFlag);
+        expectedQuery.setSort(HsMenuServiceUtils::sortBy(defaultSortAttribute),
+                      HsMenuServiceUtils::sortOrder(defaultSortAttribute));
+        QCOMPARE(actualQuery.mSetEntryRoles, expectedQuery.mSetEntryRoles);
+        QCOMPARE(actualQuery.mAddEntryTypeNames,
+            expectedQuery.mAddEntryTypeNames);
+        QCOMPARE(actualQuery.mSetFlagsOn, expectedQuery.mSetFlagsOn);
+        QCOMPARE(actualQuery.mSetFlagsOff, expectedQuery.mSetFlagsOff);
+        QCOMPARE(actualQuery.mSetSortAttribute,
+            expectedQuery.mSetSortAttribute);
+        QCOMPARE(actualQuery.mSetSortOrder, expectedQuery.mSetSortOrder);
+
+        // check non-default sort attribute
+        const Hs::HsSortAttribute
+            ascendingSortAttribute(Hs::AscendingNameHsSortAttribute);
+
+        model.reset(
+            HsMenuService::getAllApplicationsModel(ascendingSortAttribute));
+
+        actualQuery = model->mCaItemModelQuery;
+
+        expectedQuery.setSort(
+            HsMenuServiceUtils::sortBy(ascendingSortAttribute),
+            HsMenuServiceUtils::sortOrder(ascendingSortAttribute));
+
+        QCOMPARE(actualQuery.mSetSortAttribute,
+            expectedQuery.mSetSortAttribute);
+        QCOMPARE(actualQuery.mSetSortOrder, expectedQuery.mSetSortOrder);
+        }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif
+#endif
+
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuServiceTest::MenuService_getAllCollectionsModel()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif
+#endif
+    {
+    const int allCollectionId = 8;
+    // ensure HsMenuService::allCollectionId will return
+    // non zero value, if it does not already
+    CaService::instance()->mGetEntryIdsResult.clear();
+    CaService::instance()->mGetEntryIdsResult << allCollectionId;
+
+        QScopedPointer<HsMenuItemModel>
+            model(HsMenuService::getAllCollectionsModel());
+
+        CaQuery actualQuery = model->mCaItemModelQuery;
+
+        CaQuery expectedQuery;
+        expectedQuery.setParentId(HsMenuService::allCollectionsId());
+        expectedQuery.setFlagsOn(VisibleEntryFlag);
+        expectedQuery.setFlagsOff(MissingEntryFlag);
+
+        QCOMPARE(actualQuery.mSetParentId, expectedQuery.mSetParentId);
+        QCOMPARE(actualQuery.mSetFlagsOn, expectedQuery.mSetFlagsOn);
+        QCOMPARE(actualQuery.mSetFlagsOff, expectedQuery.mSetFlagsOff);
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif
+#endif
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuServiceTest::MenuService_getInstalledModel()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif
+#endif
+    {
+        const Hs::HsSortAttribute
+            defaultSortAttribute(Hs::DescendingNameHsSortAttribute);
+
+        QScopedPointer<HsMenuItemModel>
+            model(HsMenuService::getInstalledModel());
+
+        CaQuery actualQuery = model->mCaItemModelQuery;
+
+        CaQuery expectedQuery;
+        expectedQuery.addEntryTypeName(Hs::packageTypeName);
+        expectedQuery.setFlagsOn(VisibleEntryFlag | RemovableEntryFlag);
+        expectedQuery.setFlagsOff(MissingEntryFlag);
+        expectedQuery.setSort(HsMenuServiceUtils::sortBy(defaultSortAttribute),
+                      HsMenuServiceUtils::sortOrder(defaultSortAttribute));
+
+        QCOMPARE(actualQuery.mAddEntryTypeNames,
+            expectedQuery.mAddEntryTypeNames);
+        QCOMPARE(actualQuery.mSetFlagsOn, expectedQuery.mSetFlagsOn);
+        QCOMPARE(actualQuery.mSetFlagsOff, expectedQuery.mSetFlagsOff);
+        QCOMPARE(actualQuery.mSetSortAttribute,
+            expectedQuery.mSetSortAttribute);
+        QCOMPARE(actualQuery.mSetSortOrder, expectedQuery.mSetSortOrder);
+
+
+        // check non-default sort attribute
+        model.reset(
+            HsMenuService::getInstalledModel(Hs::CustomHsSortAttribute));
+
+        actualQuery = model->mCaItemModelQuery;
+
+        expectedQuery.setSort(
+            HsMenuServiceUtils::sortBy(Hs::CustomHsSortAttribute),
+            HsMenuServiceUtils::sortOrder(Hs::CustomHsSortAttribute));
+
+        QCOMPARE(actualQuery.mSetSortAttribute,
+            expectedQuery.mSetSortAttribute);
+        QCOMPARE(actualQuery.mSetSortOrder, expectedQuery.mSetSortOrder);
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif
+#endif
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuServiceTest::MenuService_getCollectionModel()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif
+#endif
+    {
+        const Hs::HsSortAttribute
+            defaultSortAttribute(Hs::LatestOnTopHsSortAttribute);
+        const QString defaultCollectionType(Hs::collectionTypeName);
+        const int collectionId = 7;
+
+        QScopedPointer<HsMenuItemModel>
+            model(HsMenuService::getCollectionModel(collectionId));
+
+        CaQuery actualQuery = model->mCaItemModelQuery;
+
+        CaQuery expectedQuery;
+        expectedQuery.setParentId(collectionId);
+        expectedQuery.setFlagsOn(VisibleEntryFlag);
+        expectedQuery.setFlagsOff(MissingEntryFlag);
+        expectedQuery.setSort(
+            HsMenuServiceUtils::sortBy(defaultSortAttribute),
+            HsMenuServiceUtils::sortOrder(defaultSortAttribute));
+
+
+        // check with non-default parameters
+        model.reset(HsMenuService::getCollectionModel(collectionId,
+            Hs::NoHsSortAttribute, Hs::collectionDownloadedTypeName));
+
+        actualQuery = model->mCaItemModelQuery;
+
+        expectedQuery.setParentId(collectionId);
+        expectedQuery.setFlagsOn(RemovableEntryFlag | VisibleEntryFlag);
+        expectedQuery.setFlagsOff(MissingEntryFlag);
+        expectedQuery.setSort(
+            HsMenuServiceUtils::sortBy(Hs::NoHsSortAttribute),
+            HsMenuServiceUtils::sortOrder(Hs::NoHsSortAttribute));
+
+
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif
+#endif
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuServiceTest::MenuService_getCollectionNames()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif
+#endif
+    {
+
+
+
+        QSharedPointer<CaEntry> collectionA(new CaEntry);
+        collectionA->mTextResult = "A";
+        QSharedPointer<CaEntry> collectionB(new CaEntry);
+        collectionB->mTextResult = "B";
+
+        CaService::instance()->mGetEntriesResult.clear();
+        CaService::instance()->mGetEntriesResult << collectionA;
+        CaService::instance()->mGetEntriesResult << collectionB;
+
+        QStringList expectedNames;
+        expectedNames << collectionA->text();
+        expectedNames << collectionB->text();
+
+        CaQuery expectedQuery;
+        expectedQuery.setParentId(HsMenuService::allCollectionsId());
+        expectedQuery.setFlagsOn(VisibleEntryFlag);
+        expectedQuery.setFlagsOff(MissingEntryFlag);
+
+        QStringList actualNames = HsMenuService::getCollectionNames();
+
+        QCOMPARE(actualNames, expectedNames);
+
+        CaQuery actualQuery = CaService::instance()->mGetEntriesQuery;
+        QCOMPARE(actualQuery.mSetParentId, expectedQuery.mSetParentId);
+        QCOMPARE(actualQuery.mSetFlagsOn, expectedQuery.mSetFlagsOn);
+        QCOMPARE(actualQuery.mSetFlagsOff, expectedQuery.mSetFlagsOff);
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif
+#endif
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuServiceTest::MenuService_getName()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif
+#endif
+    {
+        const int expectedEntryId = 5989;
+
+        QString actualName = HsMenuService::getName(expectedEntryId);
+        CaService::instance()->mGetEntryResult.clear();
+
+        QCOMPARE(CaService::instance()->mGetEntryId, expectedEntryId);
+        QCOMPARE(actualName, QString());
+
+        CaService::instance()->mGetEntryResult =
+            QSharedPointer<CaEntry>(new CaEntry);
+        const QString expectedName = "ABCD";
+        CaService::instance()->mGetEntryResult->mTextResult = expectedName;
+
+        actualName = HsMenuService::getName(expectedEntryId);
+
+        QCOMPARE(actualName, expectedName);
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif
+#endif
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuServiceTest::MenuService_executeAction()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif
+#endif
+    {
+        QSharedPointer<CaService> service = CaService::instance();
+
+        // first case: command fails for entryId=19 and
+        // "invalidName" action
+        service->mExecuteCommandResult = -333;
+        QString commandName = "invalidName";
+        int entryId = 19;
+
+        QVERIFY(!(HsMenuService::executeAction(entryId, commandName)==0));
+        QCOMPARE(service->mExecuteEntryId, entryId);
+        QCOMPARE(service->mExecuteCommand, commandName);
+
+        // now pretend CaService accepted the command above
+        // so HsMenuService accepts it too
+        service->mExecuteCommandResult = 0;
+        QVERIFY(HsMenuService::executeAction(entryId, commandName)==0);
+
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif
+#endif
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuServiceTest::MenuService_executeActionEntry()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif
+#endif
+    {
+        QSharedPointer<CaService> service = CaService::instance();
+
+        // first case: command fails for entryId=19 and
+        // "invalidName" action
+        service->mExecuteCommandResult = -333;
+        QString commandName = "invalidName";
+        CaEntry entry;
+
+        QVERIFY(!(HsMenuService::executeAction(entry, commandName)==0));
+        QCOMPARE(service->mExecuteCommand, commandName);
+
+        // now pretend CaService accepted the command above
+        // so HsMenuService accepts it too
+        service->mExecuteCommandResult = 0;
+        QVERIFY(HsMenuService::executeAction(entry, commandName)==0);
+
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif
+#endif
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+#ifdef Q_OS_SYMBIAN
+void MenuServiceTest::MenuService_launchTS()
+{
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif
+    {
+        QVERIFY(HsMenuService::launchTaskSwitcher());
+    }
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif
+}
+#endif//Q_OS_SYMBIAN
+
+void MenuServiceTest::MenuService_createCollection()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif
+    {
+        QSharedPointer<CaService> service = CaService::instance();
+
+        // case 1: create collection fails
+        service->mCreateEntryResult.clear();
+        const QString createdCollectionName("collectionName");
+        int actualCollectionId =
+            HsMenuService::createCollection(createdCollectionName);
+
+        QCOMPARE(actualCollectionId, 0);
+
+        CaEntry& collectionEntry = service->mCreatedEntry;
+        QCOMPARE(collectionEntry.entryTypeName(),
+            QString(Hs::collectionTypeName));
+        QCOMPARE(collectionEntry.mCaEntryRole, GroupEntryRole);
+        QCOMPARE(collectionEntry.text(), createdCollectionName);
+        CaIconDescription collectionIcon =
+            collectionEntry.mSetCaIconDescription;
+        QCOMPARE(collectionIcon.mSetFileName,
+            QString(Hs::defaultCollectionIconId));
+
+        // case 2: collection can be created
+        const int createdCollectionId = 9;
+        QSharedPointer<CaEntry> createdEntry(new CaEntry);
+        createdEntry->mIdResult = createdCollectionId;
+        service->mCreateEntryResult = createdEntry;
+
+        actualCollectionId =
+            HsMenuService::createCollection(createdCollectionName);
+
+        QCOMPARE(actualCollectionId, createdCollectionId);
+        QCOMPARE(service->mCreatedEntry.mAttributes[Hs::groupNameAttributeName],
+            createdCollectionName);
+        QCOMPARE(service->mAppendGroupId, HsMenuService::allCollectionsId());
+        QCOMPARE(service->mAppenEntryId, createdCollectionId);
+    }
+#endif
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif
+#endif
+}
+
+void MenuServiceTest::MenuService_renameCollection()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif
+#endif
+    {
+        QSharedPointer<CaService> service = CaService::instance();
+
+        service->mGetEntryResult.clear();
+
+        const QString newCollectionName("DEFG");
+        const int collectionId = 8;
+
+        // case 1: no entry to rename has been found
+        QVERIFY(!HsMenuService::renameCollection(collectionId,
+            newCollectionName));
+        QCOMPARE(service->mGetEntryId, collectionId);
+
+        // case 2: entry to rename has been found
+        QSharedPointer<CaEntry> collectionEntry(new CaEntry);
+        service->mGetEntryResult = collectionEntry;
+        service->mUpdateEntryResult = true;
+        QVERIFY(HsMenuService::renameCollection(collectionId,
+            newCollectionName));
+
+        QCOMPARE(service->mUpdateEntry.text(), newCollectionName);
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif
+#endif
+}
+
+void MenuServiceTest::MenuService_removeCollection()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif
+#endif
+    {
+    QSharedPointer<CaService> service = CaService::instance();
+    const int collectionId = 1;
+
+    // case 1: service cannot remove collection
+    service->mRemoveEntryForIdResult = false;
+    QVERIFY(!HsMenuService::removeCollection(collectionId));
+    QCOMPARE(service->mRemoveEntryId, collectionId);
+
+    // case 2: service can remove collection
+    service->mRemoveEntryForIdResult = true;
+    QVERIFY(HsMenuService::removeCollection(collectionId));
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif
+#endif
+}
+
+
+void MenuServiceTest::MenuService_addApplicationsToCollection()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif
+#endif
+    {
+        QSharedPointer<CaService> service = CaService::instance();
+        QList<int> applicationIdList;
+        applicationIdList << 1 << 2 << 3;
+        const int collectionId = 11;
+
+        service->mAppendEntriesToGroupResult = true;
+        QVERIFY(HsMenuService::addApplicationsToCollection(
+            applicationIdList, collectionId));
+
+        QCOMPARE(service->mAppendEntryIdList, applicationIdList);
+        QCOMPARE(service->mAppendListGroupId , collectionId);
+
+        // pretend CaService to fail on append
+        service->mAppendEntriesToGroupResult = false;
+        QVERIFY(!HsMenuService::addApplicationsToCollection(
+            applicationIdList, collectionId));
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif
+#endif
+}
+
+void MenuServiceTest::MenuService_removeApplicationFromCollection()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif
+#endif
+    {
+        QSharedPointer<CaService> service = CaService::instance();
+
+        const int collectionId = 4;
+        const int applicationId = 25;
+
+        service->mRemoveEntryFromGroupResult = true;
+        QVERIFY(HsMenuService::removeApplicationFromCollection(
+            applicationId, collectionId));
+
+        QCOMPARE(service->mRemoveGroupId, collectionId);
+        QCOMPARE(service->mRemoveEntryFromGroupId, applicationId);
+
+        // pretend CaService to fail on removal operation
+        service->mRemoveEntryFromGroupResult = true;
+        QVERIFY(HsMenuService::removeApplicationFromCollection(
+            applicationId, collectionId));
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif
+#endif
+}
+
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuServiceTest::MenuService_organizeCollection()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif
+#endif
+    {
+        QSharedPointer<CaService> service = CaService::instance();
+        QList<int> entryIdList;
+        entryIdList << 2 << 3 << 4;
+        const int groupId = 2;
+
+        service->mCustomSortResult = true;
+        QVERIFY(HsMenuService::organizeCollection(
+            groupId, entryIdList));
+
+        QCOMPARE(service->mCustomSortGroupId, groupId);
+        QCOMPARE(service->mCustomSortEntryIdList, entryIdList);
+
+        // pretend CaService fails on customSort
+        service->mCustomSortResult = false;
+        QVERIFY(!HsMenuService::organizeCollection(
+            groupId, entryIdList));
+
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif
+#endif
+
+}
+
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuServiceTest::MenuService_touchAction()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif
+#endif
+    {
+        QSharedPointer<CaService> service = CaService::instance();
+
+        ////touch on unused entry
+        const int touchedEntryId = 5;
+        QSharedPointer<CaEntry> touchedEntry(new CaEntry);
+        touchedEntry->mIdResult = touchedEntryId;
+        touchedEntry->setText("GHI");
+        touchedEntry->setFlags(RemovableEntryFlag | VisibleEntryFlag);
+        service->mGetEntryResult = touchedEntry;
+        service->mTouchResult = true;
+
+        HsMenuService::touch(touchedEntryId);
+        QCOMPARE(service->mGetEntryId, touchedEntryId);
+        QCOMPARE(service->mTouchEntry.id(), touchedEntryId);
+        QCOMPARE(service->mTouchEntry.text(), touchedEntry->text());
+
+        ////touch on already used entry
+        const int unTouchedEntryId = 5;
+        QSharedPointer<CaEntry> unTouchedEntry(new CaEntry);
+        unTouchedEntry->mIdResult = unTouchedEntryId;
+        unTouchedEntry->setText("GHI_UT");
+        unTouchedEntry->setFlags(0);
+        service->mGetEntryResult = unTouchedEntry;
+        service->mTouchResult = true;
+
+        HsMenuService::touch(touchedEntryId);
+        QCOMPARE(service->mGetEntryId, unTouchedEntryId);
+        QCOMPARE(service->mTouchEntry.id(), touchedEntryId);
+        QCOMPARE(service->mTouchEntry.text(), touchedEntry->text());
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif
+#endif
+
+}
+
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuServiceTest::MenuService_touchListOfIdsAction()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif
+#endif
+    {
+        QSharedPointer<CaService> service = CaService::instance();
+
+        const int touchedEntryId = 5;
+        QSharedPointer<CaEntry> touchedEntry(new CaEntry);
+        touchedEntry->mIdResult = 9999;
+        touchedEntry->setText("GHI");
+        touchedEntry->setFlags(RemovableEntryFlag | VisibleEntryFlag);
+        service->mGetEntryResult = touchedEntry;
+        service->mTouchResult = true;
+        service->mGetEntryIdsResult.append(touchedEntryId);
+
+        const int alreadyTouchedEntryId = 6;
+        //alreadyTouchedEntryId is not return by mGetEntryIds
+        //service->mGetEntryIdsResult.append(alreadyTouchedEntryId);
+
+        QList<int> entryIdList;
+        entryIdList.append(touchedEntryId);
+        entryIdList.append(alreadyTouchedEntryId);
+
+        HsMenuService::touch(entryIdList);
+
+        QCOMPARE((bool)service->mTouchEntriesId.contains(touchedEntryId),true);
+        QCOMPARE((bool)service->mTouchEntriesId.contains(alreadyTouchedEntryId),false);
+
+        QCOMPARE(service->mGetEntryIdQuery.mSetFlagsOn,RemovableEntryFlag);
+        QCOMPARE(service->mGetEntryIdQuery.mSetFlagsOff,UsedEntryFlag);
+        QCOMPARE(service->mGetEntryIdQuery.mSetEntryRoles,ItemEntryRole);
+
+        QCOMPARE(service->mGetEntryId, touchedEntryId);
+        QCOMPARE(service->mTouchEntry.id(), touchedEntryId);
+        QCOMPARE(service->mTouchEntry.text(), touchedEntry->text());
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif
+#endif
+}
+
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuServiceTest::MenuService_launchSoftwareUpdate()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif
+#endif
+    {
+        CaService::instance()->mExecuteCommandResult = 0;
+        QCOMPARE(HsMenuService::launchSoftwareUpdate(),0);
+        QCOMPARE(CaService::instance()->mExecuteCommand,
+            QString(Hs::openActionIdentifier));
+        QCOMPARE(CaService::instance()->mExecuteEntry.mEntryTypeNameResult,
+            QString(Hs::applicationTypeName));
+        QCOMPARE(CaService::instance()->mExecuteEntry.mAttributes.value(
+            Hs::applicationUidEntryKey),
+            QString::number(Hs::softwareUpdateApplicationUid));
+
+        CaService::instance()->mExecuteCommandResult = -333;
+        QCOMPARE(HsMenuService::launchSoftwareUpdate(),-333);
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif
+#endif
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuServiceTest::MenuService_collectionIdByType()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif
+#endif
+    {
+        const int ourCollectionId = 123;
+        QSharedPointer<CaService> service = CaService::instance();
+        CaService::instance()->mGetEntryIdsResult.clear();
+        CaService::instance()->mGetEntryIdsResult << ourCollectionId;
+
+        int result = HsMenuService::collectionIdByType("collection");
+
+        QCOMPARE(result, ourCollectionId);
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif
+#endif
+}
+
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuServiceTest::initTestCase()
+{
+    const int allCollectionId = 8;
+    // ensure HsMenuService::allCollectionId will return
+    // non zero value, if it does not already
+    CaService::instance()->mGetEntryIdsResult.clear();
+    CaService::instance()->mGetEntryIdsResult << allCollectionId;
+}
+
+void MenuServiceTest::cleanup()
+{
+    CaService::instance()->clear();
+}
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuServiceTest::cleanupTestCase()
+{
+#ifdef Q_OS_SYMBIAN
+//    stopThread();
+#endif //Q_OS_SYMBIAN
+}
+
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+int threadFunction(void *params)
+{
+    Q_UNUSED(params)
+#ifdef Q_OS_SYMBIAN
+    while (ETrue) {
+        User::ResetInactivityTime();//it should help for Viewserver11 panic
+        User::After(5000000);
+    }
+#endif //Q_OS_SYMBIAN
+    return 0;
+}
+
+#ifdef Q_OS_SYMBIAN
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuServiceTest::startThread()
+{
+    User::LeaveIfError(iThread.Create(
+                           _L("thread_kill_viewsrv11"),
+                           threadFunction,
+                           16384,
+                           4000,
+                           4000,
+                           NULL));
+    iThread.Resume();
+}
+#endif //Q_OS_SYMBIAN
+
+
+#ifdef Q_OS_SYMBIAN
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuServiceTest::stopThread()
+{
+    iThread.Close();
+}
+#endif //Q_OS_SYMBIAN
+
+QTEST_MAIN(MenuServiceTest)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/serviceproviders/hsmenuserviceprovider/tsrc/t_hsmenuserviceprovider/t_hsmenuserviceprovider.pri	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,28 @@
+#
+# 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:
+#
+#Header files
+
+#remove declarations of mocked classes
+HEADERS -= $$MW_LAYER_SYSTEMINCLUDE/caservice.h
+HEADERS -= $$MW_LAYER_SYSTEMINCLUDE/caentry.h
+HEADERS -= $$MW_LAYER_SYSTEMINCLUDE/caquery.h
+
+HEADERS += ./inc/*.h \
+           ../../inc/*.h
+		   
+#Source files
+SOURCES += ./src/*.cpp \
+           ../../src/*.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/serviceproviders/hsmenuserviceprovider/tsrc/t_hsmenuserviceprovider/t_hsmenuserviceprovider.pro	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,83 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+TEMPLATE = app
+
+include (../../../../common.pri)
+
+CONFIG += mobility
+MOBILITY += publishsubscribe
+
+LIBS += -lhsdomainmodel        
+LIBS += -lhsutils
+LIBS += -lcasoftwareregistry
+
+CONFIG += debug_and_release \
+    console
+CONFIG += hb
+QT += testlib \
+    xml \
+    sql
+
+#DEFINES += CONTENT_ARSENAL_STORAGE_UT
+DEFINES += MENUSERVICE_TEST
+#DEFINES += CACLIENT_TEST
+DEFINES += MENUSERVICE_UNITTEST
+DEFINES += HSDOMAINMODEL_TEST
+coverage:DEFINES += COVERAGE_MEASUREMENT
+
+DEPENDPATH += . \
+    ./src \
+    ./inc \
+    ../src \
+    ../inc
+    
+#add new paths and put existing at the end to pick up mock files first
+INCLUDEPATH = . \
+    ./inc \
+    ../../inc \
+    ../../../../../homescreenapp/inc \
+    $$INCLUDEPATH
+    
+symbian: {
+    ### get rid of localization warnings
+    CONFIG -= hb
+    load(hb.prf)
+    CONFIG -= symbian_i18n
+    ###
+    
+    CONFIG += symbian_test
+    coverage: CONFIG -= symbian_test
+    TARGET.UID2 = 0x100039CE
+    TARGET.UID3 = 0x20022F6A
+	TARGET.EPOCALLOWDLLDATA=1
+	TARGET.CAPABILITY = ALL -TCB
+    TARGET.EPOCSTACKSIZE = 0x14000 \
+        // \
+        80kB
+    TARGET.EPOCHEAPSIZE = 0x20000 \
+        0x1000000 \
+        // \
+        128kB \
+        - \
+        16MB
+    INCLUDEPATH += $$MW_LAYER_SYSTEMINCLUDE
+    
+    MMP_RULES += SMPSAFE
+}
+include(t_hsmenuserviceprovider.pri)
+win32:include(installs_win32.pri)
+!symbian:unix:include(installs_unix.pri)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/serviceproviders/hsmenuserviceprovider/tsrc/tsrc.pro	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,20 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+TEMPLATE = subdirs
+SUBDIRS  = t_hsmenuserviceprovider
+           
+CONFIG  += ordered
Binary file homescreenapp/stateplugins/hsapplibrarystateplugin/conf/CI_hsapplibrary.confml has changed
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/hsapplibrarystateplugin.pro	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/hsapplibrarystateplugin.pro	Mon Oct 04 00:07:25 2010 +0300
@@ -39,6 +39,8 @@
     
     include(hsapplibrarystateplugin_exports_to_rom.pri)
     LIBS += -lxqsettingsmanager
+    
+    MMP_RULES += SMPSAFE
 }
 
 RESOURCES = $$qrcFile
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsallappsstate.h	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsallappsstate.h	Mon Oct 04 00:07:25 2010 +0300
@@ -52,7 +52,6 @@
 
 private slots:
     void addToCollection();
-    void openInstalledView();
     void ascendingMenuAction();
     void descendingMenuAction();
     void normalModeEntered();
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsapplibrarystate.h	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsapplibrarystate.h	Mon Oct 04 00:07:25 2010 +0300
@@ -70,6 +70,8 @@
     void allAppsStateEntered();
 
     void allCollectionsStateEntered();
+    
+    void collectionStateEntered();
 
 protected:
 
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsbaseviewstate.h	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsbaseviewstate.h	Mon Oct 04 00:07:25 2010 +0300
@@ -52,10 +52,6 @@
     ~HsBaseViewState();
     void scrollToBeginning();
 
-private slots:
-
-    virtual void openAppLibrary();
-
 protected slots:
     
     virtual void stateEntered();
@@ -66,25 +62,34 @@
     virtual void normalModeExited();
     virtual void launchItem(const QModelIndex &index);
     virtual void openCollection(const QModelIndex &index);
-    virtual void showContextMenu(HbAbstractViewItem *item, const QPointF &coords);
+    virtual void showContextMenu(
+        HbAbstractViewItem *item, const QPointF &coords);
     virtual int checkSoftwareUpdates();
     virtual bool openTaskSwitcher();
     virtual void closeContextMenu();
     virtual void addToHomeScreen(const int entryId);
     virtual void contextMenuAction(HbAction *action);
     virtual void addActivated(const QModelIndex &index);
-    virtual void addModeShowContextMenu(HbAbstractViewItem *item,
-                                        const QPointF &coords);
+    virtual void addModeShowContextMenu(
+        HbAbstractViewItem *item,
+        const QPointF &coords);
+    virtual void openInstalledView();
     
 protected:
     
-    void initialize(HsMenuViewBuilder &menuViewBuilder, HsStateContext stateContext);
+    void initialize(
+        HsMenuViewBuilder &menuViewBuilder, HsStateContext stateContext);
     void createApplicationLaunchFailMessage(int errorCode,int itemId);
     void defineTransitions();
 
+private slots:
+
+    virtual void openAppLibrary();
+
 private:
 
-    virtual void setContextMenuOptions(HbAbstractViewItem *item, EntryFlags flags) = 0;
+    virtual void setContextMenuOptions(
+        HbAbstractViewItem *item, EntryFlags flags) = 0;
     virtual void setMenuOptions() = 0;
 
 private:
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hscollectionstate.h	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hscollectionstate.h	Mon Oct 04 00:07:25 2010 +0300
@@ -63,6 +63,7 @@
     void handleEmptyChange(bool empty);
     void lockSearchButton(bool lock);
     void createArrangeCollection();
+    void openInstalledViewFromCollection();
 
 private:
     void construct();
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsinstalledappsstate.h	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsinstalledappsstate.h	Mon Oct 04 00:07:25 2010 +0300
@@ -46,9 +46,13 @@
                          QState *parent = 0);
 
     ~HsInstalledAppsState();
+    
+protected:
+    void onEntry(QEvent *event);
 
 private slots:
 
+    void backFromInstalledView();
     void openInstallationLog();
     void stateEntered();
     void stateExited();
@@ -65,6 +69,8 @@
     Hs::HsSortAttribute mSortAttribute;
     HbAction *mLatestOnTopMenuAction; //not own
     HbAction *mOldestOnTopMenuAction; //not own
+    int mCollectionId; // An id of a collection to which the state machine will return.
+    QString mCollectionType; // A type of a collection to which the state machine will return.
 };
 
 #endif // HSINSTALLEDAPPSSTATE_H
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hslistviewitem.h	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hslistviewitem.h	Mon Oct 04 00:07:25 2010 +0300
@@ -23,38 +23,45 @@
 
 #include "hsmenustates_global.h"
 
+HS_STATES_TEST_CLASS(MenuStatesTest)
+
 // TODO: this is only temporary class for show progress bar.
 // It should be remove when fix from orbit will be in official platfrom.
-class HsProgressBar: public HbProgressBar {
-public:
-    HsProgressBar(QGraphicsItem *parent=0):HbProgressBar(parent),mTargetValue(0),mTimerId(0) {}
-    void setTargetProgressValue(int value);
+class HsProgressBar: public HbProgressBar
+{
+    public:
+        HsProgressBar(QGraphicsItem *parent = 0) : HbProgressBar(parent),
+            mTargetValue(0), mTimerId(0) {}
+        void setTargetProgressValue(int value);
 
-protected:
-    void paint ( QPainter * painter, 
-            const QStyleOptionGraphicsItem * option, 
-            QWidget * widget = 0 );
-    void timerEvent(QTimerEvent *event);
-private:
-    int mTargetValue;
-    int mTimerId;
+    protected:
+        void paint(QPainter *painter,
+                const QStyleOptionGraphicsItem *option,
+                QWidget *widget = 0 );
+        void timerEvent(QTimerEvent *event);
+
+    private:
+        int mTargetValue;
+        int mTimerId;
+
+    HS_STATES_TEST_FRIEND_CLASS(MenuStatesTest)
 };
 
-HS_STATES_TEST_CLASS(MenuStatesTest)
+
 
 class HsListViewItem : public HbListViewItem
 {
     Q_OBJECT
     public:
-                
-        explicit HsListViewItem(QGraphicsItem* parent=0);
+
+        explicit HsListViewItem(QGraphicsItem *parent = 0);
         virtual ~HsListViewItem();
-   
+
         virtual HbAbstractViewItem* createItem();
         virtual void updateChildItems();
-    
-    protected:    
-	    virtual void polish(HbStyleParameters& params);
+
+    protected:
+	    virtual void polish(HbStyleParameters &params);
 
     private:
 	    HsProgressBar *progress;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hssearchfilterproxymodel.h	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description: Proxy model for search and highlight items view.
+ *
+ */
+
+#ifndef HSSEARCHFILETRPROXYMODEL_H_
+#define HSSEARCHFILETRPROXYMODEL_H_
+
+#include <QSortFilterProxyModel>
+
+#define TAG_START "<span style=\"background-color:%1;color:%2\">"
+#define TAG_END   "</span>"
+
+class HsSearchFilterProxyModel : public QSortFilterProxyModel
+{
+    Q_OBJECT
+ 
+public:
+    HsSearchFilterProxyModel(QObject *parent = 0);
+    virtual ~HsSearchFilterProxyModel();
+ 
+public:
+    QVariant data(const QModelIndex &index, int role = Qt::DisplayRole ) const;
+    void setFilterString(const QString &filterCriteria);
+    QString filterString() const;
+    bool filterAcceptsRow (int source_row, const QModelIndex &source_parent) const;
+ 
+private:
+    QString mFilterCriteria;
+    bool mInSettingFilterString;
+};
+
+#endif /* HSSEARCHFILETRPROXYMODEL_H_ */
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hssearchview.h	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hssearchview.h	Mon Oct 04 00:07:25 2010 +0300
@@ -26,8 +26,8 @@
 #include "hsmenustates_global.h"
 #include "hsmenuviewbuilder.h"
 #include "hssearchviewbuilder.h"
+#include "hssearchfilterproxymodel.h"
 
-class QSortFilterProxyModel;
 class HsMainWindow;
 class HbAbstractViewItem;
 class HbLineEdit;
@@ -94,7 +94,7 @@
     QModelIndex mSearchViewInitialIndex;
     QModelIndex mIndexToScrollAfterSearchDone;
     QModelIndex mSearchViewLongPressedIndex;
-    QSortFilterProxyModel *mProxyModel; // owned
+    HsSearchFilterProxyModel *mProxyModel; // owned
     HbView *mSearchView;
     HbListView *mSearchListView;
     HbSearchPanel *mSearchPanel;
@@ -106,6 +106,8 @@
     QScopedPointer<HbShrinkingVkbHost> mVkbHost;
     HsSearchViewBuilder mSearchViewBuilder;
     bool mEmptyResultText;
+    QString mCriteria;
+
 };
 
 #endif /* HSSEARCHVIEW_H_ */
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/resource/emptylabeledview.docml	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/resource/emptylabeledview.docml	Mon Oct 04 00:07:25 2010 +0300
@@ -3,8 +3,8 @@
     <widget name="view" type="HbView">
         <widget name="container" role="HbView:widget" type="HbWidget">
             <widget name="label" type="HbGroupBox">
+                <string name="heading" value="."/>
                 <bool name="marqueeHeading" value="TRUE"/>
-                <string name="heading" value="."/>
                 <fontspec name="fontSpec" role="Title" textheight="0"/>
             </widget>
             <widget name="emptyViewLabelContainer" type="HbWidget">
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsallappsstate.cpp	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsallappsstate.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -113,22 +113,20 @@
     HSMENUTEST_FUNC_ENTRY("HsAllAppsState::setMenuOptions");
     mViewOptions->clearActions();
     mViewOptions->addAction(hbTrId("txt_applib_opt_task_switcher"),
-                           static_cast<HsBaseViewState*>(this), SLOT(openTaskSwitcher()));
+        static_cast<HsBaseViewState*>(this), SLOT(openTaskSwitcher()));
     mViewOptions->addAction(hbTrId("txt_applib_opt_add_to_collection"),
-                           this, SLOT(addToCollection()));
-    mViewOptions->addAction(hbTrId("txt_applib_opt_check_software_updates"),
-                           static_cast<HsBaseViewState*>(this), SLOT(checkSoftwareUpdates()));
-
+        this, SLOT(addToCollection()));
     mAscendingMenuAction =
         mViewOptions->addAction(hbTrId("txt_applib_menu_sort_by_ascending"),
                             this, SLOT(ascendingMenuAction()));
-
     mDescendingMenuAction =
         mViewOptions->addAction(hbTrId("txt_applib_menu_sort_by_descending"),
-                            this, SLOT(descendingMenuAction()));
-
-    mViewOptions->addAction(hbTrId("txt_applib_opt_view_installed_applications"),
-                           this, SLOT(openInstalledView()));
+            this, SLOT(descendingMenuAction()));
+    mViewOptions->addAction(hbTrId("txt_applib_opt_check_software_updates"),
+        static_cast<HsBaseViewState*>(this), SLOT(checkSoftwareUpdates()));
+    mViewOptions->addAction(
+        hbTrId("txt_applib_opt_view_installed_applications"),
+        static_cast<HsBaseViewState*>(this), SLOT(openInstalledView()));
 
     if (mSortAttribute == Hs::AscendingNameHsSortAttribute) {
         mAscendingMenuAction->setVisible(false);
@@ -215,21 +213,6 @@
 }
 
 /*!
- Triggers event so that a installed applications state is entered.
- \retval void
- */
-#ifdef COVERAGE_MEASUREMENT
-#pragma CTC SKIP
-#endif //COVERAGE_MEASUREMENT
-void HsAllAppsState::openInstalledView()
-{
-    machine()->postEvent(HsMenuEventFactory::createOpenInstalledViewEvent());
-}
-#ifdef COVERAGE_MEASUREMENT
-#pragma CTC ENDSKIP
-#endif //COVERAGE_MEASUREMENT
-
-/*!
  Method seting context menu options.
  */
 void HsAllAppsState::setContextMenuOptions(HbAbstractViewItem *item, EntryFlags flags)
@@ -248,9 +231,6 @@
     addToCollectionAction->setData(
         Hs::AddToCollectionFromApplicationsViewContextAction);
 
-    HbAction *uninstallAction = mContextMenu->addAction(
-        hbTrId("txt_common_menu_delete"));
-    uninstallAction->setData(Hs::UninstallContextAction);
     HbAction *appSettingsAction(NULL);
     HbAction *appDetailsAction(NULL);
 
@@ -262,6 +242,11 @@
             hbTrId("txt_common_menu_settings"));
         appSettingsAction->setData(Hs::AppSettingContextAction);
     }
+
+    HbAction *uninstallAction = mContextMenu->addAction(
+        hbTrId("txt_common_menu_delete"));
+    uninstallAction->setData(Hs::UninstallContextAction);
+
     if (!(entry->attribute(Hs::componentIdAttributeName).isEmpty()) &&
             (flags & RemovableEntryFlag) ) {
         appDetailsAction = mContextMenu->addAction(
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsallcollectionsstate.cpp	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsallcollectionsstate.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -94,6 +94,11 @@
 
     mViewOptions->addAction(hbTrId("txt_applib_opt_arrange"),
         this, SLOT(createArrangeCollection()));
+    mViewOptions->addAction(hbTrId("txt_applib_opt_check_software_updates"),
+        static_cast<HsBaseViewState*>(this), SLOT(checkSoftwareUpdates()));
+    mViewOptions->addAction(
+        hbTrId("txt_applib_opt_view_installed_applications"),
+        static_cast<HsBaseViewState*>(this), SLOT(openInstalledView()));
 
     HSMENUTEST_FUNC_EXIT("HsAllCollectionsState::setMenuOptions");
 }
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsapplibrarystate.cpp	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsapplibrarystate.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -114,11 +114,12 @@
 {
     HSMENUTEST_FUNC_ENTRY("HsAppLibraryState::construct");
     setObjectName("homescreen.nokia.com/state/applibrarystate");
-
-    mAllAppsState = new HsAllAppsState(mMenuViewBuilder, mMenuMode, mMainWindow, this);
+    
+    mAllAppsState = new HsAllAppsState(
+        mMenuViewBuilder, mMenuMode, mMainWindow, this);
 
-    mAllCollectionsState = new HsAllCollectionsState(mMenuViewBuilder, mMenuMode,
-            mMainWindow, this);
+    mAllCollectionsState = new HsAllCollectionsState(mMenuViewBuilder,
+        mMenuMode, mMainWindow, this);
 
     QState *initialState = new QState(this);
     setInitialState(initialState);
@@ -127,13 +128,12 @@
         mMenuMode, Hs::NormalHsMenuMode, mAllAppsState);
 
     initialState->addTransition(mHistoryTransaction);
-    initialState->addTransition(new HsMenuModeTransition(
-                                    mMenuMode, Hs::AddHsMenuMode, mAllAppsState));
+    initialState->addTransition(
+        new HsMenuModeTransition(
+        mMenuMode, Hs::AddHsMenuMode, mAllAppsState));
 
     mCollectionState = new HsCollectionState(mMenuViewBuilder,
-            mMenuMode,
-            mMainWindow,
-            this);
+        mMenuMode, mMainWindow, this);
 
     connect(mCollectionState, SIGNAL(entered()),SLOT(clearToolbarLatch()));
 
@@ -142,7 +142,8 @@
                                   this, mCollectionState);
     this->addTransition(openCollectionFromAppLibTransition);
 
-    //It is called from: HsDefaultRuntime::activityRequested(const QString &name)
+    // It is called from:
+    // HsDefaultRuntime::activityRequested(const QString &name)
     HsMenuEventTransition *openCollectionAfterActivityRequest =
             new HsMenuEventTransition(HsMenuEvent::OpenCollection,
                                       this, mCollectionState);
@@ -156,21 +157,26 @@
     //transition for returning from collection
     HsMenuEventTransition *collectionToAppLibTransition =
         new HsMenuEventTransition(HsMenuEvent::OpenApplicationLibrary,
-                                  mCollectionState, mAllCollectionsState);
+            mCollectionState, mAllCollectionsState);
     mCollectionState->addTransition(collectionToAppLibTransition);
 
     mInstalledAppsState = new HsInstalledAppsState(
         mMenuViewBuilder, mMainWindow, this);
 
-    HsMenuEventTransition *installedToAppLibTransition =
-        new HsMenuEventTransition(HsMenuEvent::OpenApplicationLibrary,
-                                  mInstalledAppsState, mAllAppsState);
-    mInstalledAppsState->addTransition(installedToAppLibTransition);
-
     HsMenuEventTransition *allViewToInstalledTransition =
         new HsMenuEventTransition(HsMenuEvent::OpenInstalledView,
-                                  mAllAppsState, mInstalledAppsState);
+            mAllAppsState, mInstalledAppsState);
     mAllAppsState->addTransition(allViewToInstalledTransition);
+    
+    HsMenuEventTransition *allCollectionsToInstalledTransition =
+        new HsMenuEventTransition(HsMenuEvent::OpenInstalledView,
+            mAllCollectionsState, mInstalledAppsState);
+    mAllCollectionsState->addTransition(allCollectionsToInstalledTransition);
+
+    HsMenuEventTransition *collectionToInstalledTransition =
+        new HsMenuEventTransition(HsMenuEvent::OpenInstalledView,
+            mCollectionState, mInstalledAppsState);
+    mCollectionState->addTransition(collectionToInstalledTransition);
 
     constructToolbar();
 
@@ -185,6 +191,9 @@
     connect(mAllCollectionsState, SIGNAL(entered()),
             this, SLOT(allCollectionsStateEntered()));
 
+    connect(mCollectionState, SIGNAL(entered()),
+            this, SLOT(collectionStateEntered()));
+
     HSMENUTEST_FUNC_EXIT("HsAppLibraryState::construct");
 }
 
@@ -216,7 +225,7 @@
         mAllAppsState->scrollToBeginning();
         mAllCollectionsState->scrollToBeginning();
     }
-
+    
     HSMENUTEST_FUNC_EXIT("HsAppLibraryState::onEntry");
 }
 
@@ -249,8 +258,8 @@
         extensionAction->setIcon(HbIcon("qtg_mono_store"));
 
         HbAction *const operatorAction(
-                operatorHandler->prepareOperatorStoreAction(
-                        mMenuViewBuilder.operatorAction()));
+            operatorHandler->prepareOperatorStoreAction(
+            mMenuViewBuilder.operatorAction()));
         operatorAction->setText(hbTrId(operatorHandler->text().toLatin1()));
 
         mMenuViewBuilder.oviStoreAction()->setText(hbTrId("txt_applib_grid_ovi_store"));
@@ -266,12 +275,12 @@
             mMenuViewBuilder.oviStoreAction());
     } else if (operatorHandler->operatorStorePresent()) {
         mMenuViewBuilder.toolBar()->addAction(
-            operatorHandler->prepareOperatorStoreAction(
-                    mMenuViewBuilder.operatorAction()));
+        operatorHandler->prepareOperatorStoreAction(
+        mMenuViewBuilder.operatorAction()));
     }
 
     HbAction *const allCollectionsAction(
-            mMenuViewBuilder.allCollectionsAction());
+        mMenuViewBuilder.allCollectionsAction());
 
     mAllAppsState->addTransition(
         allCollectionsAction, SIGNAL(triggered()), mAllCollectionsState);
@@ -332,13 +341,21 @@
 }
 
 /*!
- All apps stete entered.
+ All apps state entered.
  */
 void HsAppLibraryState::allAppsStateEntered()
 {
     if (mMenuMode.getHsMenuMode() == Hs::NormalHsMenuMode) {
         mHistoryTransaction->setTargetState(mAllAppsState);
     }
+    while (!mInstalledAppsState->transitions().isEmpty()) {
+        mInstalledAppsState->removeTransition(
+            mInstalledAppsState->transitions()[0]);
+    }
+    HsMenuEventTransition *fromInstalledAppsTransition =
+        new HsMenuEventTransition(HsMenuEvent::BackFromInstalledView,
+        mInstalledAppsState, mAllAppsState);
+    mInstalledAppsState->addTransition(fromInstalledAppsTransition);
 }
 
 /*!
@@ -349,6 +366,27 @@
     if (mMenuMode.getHsMenuMode() == Hs::NormalHsMenuMode) {
         mHistoryTransaction->setTargetState(mAllCollectionsState);
     }
+    while (!mInstalledAppsState->transitions().isEmpty()) {
+        mInstalledAppsState->removeTransition(
+            mInstalledAppsState->transitions()[0]);
+    }
+    HsMenuEventTransition *fromInstalledAppsTransition =
+        new HsMenuEventTransition(HsMenuEvent::BackFromInstalledView,
+        mInstalledAppsState, mAllCollectionsState);
+    mInstalledAppsState->addTransition(fromInstalledAppsTransition);
 }
 
-
+/*!
+ Collection state entered.
+ */
+void HsAppLibraryState::collectionStateEntered()
+{
+    while (!mInstalledAppsState->transitions().isEmpty()) {
+        mInstalledAppsState->removeTransition(
+            mInstalledAppsState->transitions()[0]);
+    }
+    HsMenuEventTransition *fromInstalledAppsTransition =
+        new HsMenuEventTransition(HsMenuEvent::BackFromInstalledView,
+        mInstalledAppsState, mCollectionState);
+    mInstalledAppsState->addTransition(fromInstalledAppsTransition);
+}
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsbaseviewstate.cpp	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsbaseviewstate.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -329,55 +329,58 @@
         static_cast<Hs::HsContextAction>(action->data().toInt());
 
     const int itemId = mContextModelIndex.data(CaItemModel::IdRole).toInt();
-
-    switch (command) {
-        case Hs::AddToHomeScreenContextAction:
-            addToHomeScreen(itemId);
-            break;
-        case Hs::AddToCollectionFromApplicationsViewContextAction:
-            // Addding a specific application to
-            // an existing collection via item specific menu.
-            machine()->postEvent(
-                HsMenuEventFactory::createAddAppsFromApplicationsViewEvent(
-                    Hs::NoHsSortAttribute, itemId));
-            break;
-        case Hs::AddToCollectionFromCollectionViewContextAction:
-            machine()->postEvent(
-                HsMenuEventFactory::createAddAppsFromCollectionViewEvent(
-                    -1, itemId));
-            break;
-        case Hs::UninstallContextAction:
-            machine()->postEvent(
-                HsMenuEventFactory::createUninstallApplicationEvent(
-                    itemId));
-            break;
-        case Hs::AppSettingContextAction:
-            machine()->postEvent(
-                HsMenuEventFactory::createAppSettingsViewEvent(itemId));
-            break;
-        case Hs::AppDetailsContextAction:
-            machine()->postEvent(
-                HsMenuEventFactory::createAppDetailsViewEvent(itemId));
-            break;
-        case Hs::OpenAppContextAction:
-            launchItem(mContextModelIndex);
-            break;
-        case Hs::RenameCollectionContextAction:
-            machine()->postEvent(
-                HsMenuEventFactory::createRenameCollectionEvent(itemId));
-            break;
-        case Hs::DeleteCollectionContextAction:
-             machine()->postEvent(
-                HsMenuEventFactory::createDeleteCollectionEvent(itemId));
-            break;
-        case Hs::OpenCollectionContextAction:
-            openCollection(mContextModelIndex);
-            break;
-        default:
-            break;
+    
+    if (itemId > 0) {
+        switch (command) {
+            case Hs::AddToHomeScreenContextAction:
+                addToHomeScreen(itemId);
+                break;
+            case Hs::AddToCollectionFromApplicationsViewContextAction:
+                // Addding a specific application to
+                // an existing collection via item specific menu.
+                machine()->postEvent(
+                    HsMenuEventFactory::createAddAppsFromApplicationsViewEvent(
+                        Hs::NoHsSortAttribute, itemId));
+                break;
+            case Hs::AddToCollectionFromCollectionViewContextAction:
+                machine()->postEvent(
+                    HsMenuEventFactory::createAddAppsFromCollectionViewEvent(
+                        -1, itemId));
+                break;
+            case Hs::UninstallContextAction:
+                machine()->postEvent(
+                    HsMenuEventFactory::createUninstallApplicationEvent(
+                        itemId));
+                break;
+            case Hs::AppSettingContextAction:
+                machine()->postEvent(
+                    HsMenuEventFactory::createAppSettingsViewEvent(itemId));
+                break;
+            case Hs::AppDetailsContextAction:
+                machine()->postEvent(
+                    HsMenuEventFactory::createAppDetailsViewEvent(itemId));
+                break;
+            case Hs::OpenAppContextAction:
+                launchItem(mContextModelIndex);
+                break;
+            case Hs::RenameCollectionContextAction:
+                machine()->postEvent(
+                    HsMenuEventFactory::createRenameCollectionEvent(itemId));
+                break;
+            case Hs::DeleteCollectionContextAction:
+                 machine()->postEvent(
+                    HsMenuEventFactory::createDeleteCollectionEvent(itemId));
+                break;
+            case Hs::OpenCollectionContextAction:
+                openCollection(mContextModelIndex);
+                break;
+            default:
+                break;
+        }
+        HsMenuService::touch(itemId);
+    } else {
+        closeContextMenu();
     }
-    
-    HsMenuService::touch(itemId);
 }
 
 /*!
@@ -461,3 +464,16 @@
             *mMenuMode, Hs::AddHsMenuMode, addModeState));
 }
 
+/*!
+ Triggers event so that an installed applications state is entered.
+ */
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC SKIP
+#endif //COVERAGE_MEASUREMENT
+void HsBaseViewState::openInstalledView()
+{
+    machine()->postEvent(HsMenuEventFactory::createOpenInstalledViewEvent());
+}
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC ENDSKIP
+#endif //COVERAGE_MEASUREMENT
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hscollectionstate.cpp	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hscollectionstate.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -212,16 +212,22 @@
                 hbTrId("txt_applib_menu_sort_by_oldest_on_top"),
                 this, SLOT(oldestOnTopMenuAction()));
 
-        if(mSortAttribute == Hs::LatestOnTopHsSortAttribute)
+        //Default is LatestOnTopHsSortAttribute
+        if(mSortAttribute == Hs::OldestOnTopHsSortAttribute)
         {
-            mLatestOnTopMenuAction->setVisible(false);
-        } else {
             mOldestOnTopMenuAction->setVisible(false);
+        } else {            
+            mLatestOnTopMenuAction->setVisible(false);
         }
-
     }
-
-
+    if (mCollectionType == Hs::collectionDownloadedTypeName) {
+        mViewOptions->addAction(hbTrId("txt_applib_opt_check_software_updates"),
+            static_cast<HsBaseViewState*>(this), SLOT(checkSoftwareUpdates()));
+        mViewOptions->addAction(
+            hbTrId("txt_applib_opt_view_installed_applications"),
+            static_cast<HsBaseViewState*>(this),
+            SLOT(openInstalledViewFromCollection()));
+    }
     mMenuView->view()->setMenu(mViewOptions);
     HSMENUTEST_FUNC_EXIT("HsAllCollectionsState::setMenuOptions");
 }
@@ -299,25 +305,28 @@
  */
 void HsCollectionState::contextMenuAction(HbAction *action)
 	{
-    Hs::HsContextAction command = static_cast<Hs::HsContextAction> (action->data().toInt());
-
-    if (command == Hs::RemoveFromCollectionContextAction) {
-        const int itemId = mContextModelIndex.data(
-            CaItemModel::IdRole).toInt();
-        machine()->postEvent(
-            HsMenuEventFactory::createRemoveAppFromCollectionEvent(itemId,
-            mCollectionId));
-        HsMenuService::touch(itemId);
-    } else if (
-        command == Hs::AddToCollectionFromCollectionViewContextAction) {
-        const int itemId = mContextModelIndex.data(
-            CaItemModel::IdRole).toInt();
-        machine()->postEvent(
-            HsMenuEventFactory::createAddAppsFromCollectionViewEvent(
-            mCollectionId, itemId));
-        HsMenuService::touch(itemId);
+    const int itemId = mContextModelIndex.data(CaItemModel::IdRole).toInt();
+    
+    if (itemId > 0) {
+        Hs::HsContextAction command = 
+                static_cast<Hs::HsContextAction> (action->data().toInt());
+    
+        if (command == Hs::RemoveFromCollectionContextAction) {
+            machine()->postEvent(
+                HsMenuEventFactory::createRemoveAppFromCollectionEvent(itemId,
+                mCollectionId));
+            HsMenuService::touch(itemId);
+        } else if (
+            command == Hs::AddToCollectionFromCollectionViewContextAction) {
+            machine()->postEvent(
+                HsMenuEventFactory::createAddAppsFromCollectionViewEvent(
+                mCollectionId, itemId));
+            HsMenuService::touch(itemId);
+        } else {
+            HsBaseViewState::contextMenuAction(action);
+        }
     } else {
-        HsBaseViewState::contextMenuAction(action);
+        closeContextMenu();
     }
 }
 
@@ -436,10 +445,6 @@
         removeAction->setData(Hs::RemoveFromCollectionContextAction);
     }
 
-    if ((flags & RemovableEntryFlag)) {
-        uninstallAction = mContextMenu->addAction(hbTrId("txt_common_menu_delete"));
-        uninstallAction->setData(Hs::UninstallContextAction);
-    }
     QSharedPointer<const CaEntry> entry = mModel->entry(item->modelIndex());
 
     if (!(entry->attribute(Hs::appSettingsPlugin).isEmpty())) {
@@ -448,6 +453,11 @@
         appSettingsAction->setData(Hs::AppSettingContextAction);
     }
 
+    if ((flags & RemovableEntryFlag)) {
+        uninstallAction = mContextMenu->addAction(hbTrId("txt_common_menu_delete"));
+        uninstallAction->setData(Hs::UninstallContextAction);
+    }
+
     if (!(entry->attribute(Hs::componentIdAttributeName).isEmpty()) &&
             (flags & RemovableEntryFlag) ) {
         appDetailsAction = mContextMenu->addAction(hbTrId(
@@ -507,3 +517,19 @@
             topItemId,
             mCollectionId));
 }
+
+/*!
+ Triggers event so that an installed applications state is entered.
+ */
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC SKIP
+#endif //COVERAGE_MEASUREMENT
+void HsCollectionState::openInstalledViewFromCollection()
+{
+    machine()->postEvent(
+        HsMenuEventFactory::createOpenInstalledViewEvent(
+        mCollectionId, mCollectionType));
+}
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC ENDSKIP
+#endif //COVERAGE_MEASUREMENT
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsinstalledappsstate.cpp	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsinstalledappsstate.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -32,6 +32,7 @@
 #include "hsinstalledappsstate.h"
 #include "hsaddappstocollectionstate.h"
 #include "hsmenumodetransition.h"
+#include "hsmenuevent.h"
 
 /*!
  \class HsInstalledAppsState
@@ -71,11 +72,30 @@
         parent() != 0 ? parent()->objectName() : QString("");
     setObjectName(parentName + "/installedappsstate");
 
-    connect(mBackKeyAction, SIGNAL(triggered()), SLOT(openAppLibrary()));
+    connect(mBackKeyAction,
+        SIGNAL(triggered()),
+        this,
+        SLOT(backFromInstalledView()));
 
     HSMENUTEST_FUNC_EXIT("HsInstalledAppsState::construct");
 }
 
+void HsInstalledAppsState::onEntry(QEvent *event)
+{
+    qDebug("HsInstalledAppsState::onEntry()");
+    HSMENUTEST_FUNC_ENTRY("HsInstalledAppsState::onEntry");
+    QState::onEntry(event);
+
+    if (event->type() == HsMenuEvent::eventType()) {
+        HsMenuEvent *menuEvent = static_cast<HsMenuEvent *>(event);
+        QVariantMap data = menuEvent->data();
+        mCollectionId = data.value(Hs::itemIdKey).toInt();
+        mCollectionType = data.value(Hs::entryTypeNameKey).toString();
+    }
+
+    HSMENUTEST_FUNC_EXIT("HsInstalledAppsState::onEntry");
+}
+
 /*!
  Method seting menu options.
  */
@@ -87,8 +107,6 @@
 
     mViewOptions->addAction(hbTrId("txt_applib_opt_task_switcher"),
                         this, SLOT(openTaskSwitcher()));
-    mViewOptions->addAction(hbTrId("txt_applib_opt_installation_log"),
-                        this, SLOT(openInstallationLog()));
     if (mModel->rowCount() > 0) {
 
         mLatestOnTopMenuAction = mViewOptions->addAction(
@@ -107,6 +125,8 @@
             mLatestOnTopMenuAction->setVisible(false);
         }
     }
+    mViewOptions->addAction(hbTrId("txt_applib_opt_installation_log"),
+                        this, SLOT(openInstallationLog()));
     mMenuView->view()->setMenu(mViewOptions);
     HSMENUTEST_FUNC_EXIT("HsInstalledAppsState::setMenuOptions");
 }
@@ -229,6 +249,22 @@
 }
 
 /*!
+ Menu softkey back action slot
+ */
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC SKIP
+#endif //COVERAGE_MEASUREMENT
+void HsInstalledAppsState::backFromInstalledView()
+{
+    machine()->postEvent(
+        HsMenuEventFactory::createBackFromInstalledViewEvent(
+        mCollectionId, mCollectionType));
+}
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC ENDSKIP
+#endif //COVERAGE_MEASUREMENT
+
+/*!
  Open installation log.
  */
 void HsInstalledAppsState::openInstallationLog()
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hslistviewitem.cpp	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hslistviewitem.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -35,36 +35,36 @@
 #ifdef COVERAGE_MEASUREMENT
 #pragma CTC SKIP
 #endif //COVERAGE_MEASUREMENT
-void HsProgressBar::paint(QPainter * painter, 
-        const QStyleOptionGraphicsItem * option, 
+void HsProgressBar::paint(QPainter * painter,
+        const QStyleOptionGraphicsItem * option,
         QWidget * widget)
 {
     Q_UNUSED(widget)
     QStyleOptionGraphicsItem pixmapOption(*option);
     foreach (QGraphicsItem *child, childItems()) {
-        painter->save();            
+        painter->save();
         painter->translate(child->pos());
         pixmapOption.exposedRect = child->boundingRect();
         child->paint(painter, &pixmapOption, 0);
-        
-        foreach (QGraphicsItem *child2, child->childItems()) {
-            if (child2->isVisible()) {
-                painter->save();            
-                painter->translate(child2->pos());
-                pixmapOption.exposedRect = child2->boundingRect();
-                child2->paint(painter, &pixmapOption, 0);
-                painter->restore(); 
+
+        foreach (QGraphicsItem *grandChild, child->childItems()) {
+            if (grandChild->isVisible()) {
+                painter->save();
+                painter->translate(grandChild->pos());
+                pixmapOption.exposedRect = grandChild->boundingRect();
+                grandChild->paint(painter, &pixmapOption);
+                painter->restore();
             }
         }
         painter->restore();
     }
-}    
+}
 #ifdef COVERAGE_MEASUREMENT
 #pragma CTC ENDSKIP
 #endif //COVERAGE_MEASUREMENT
 
-
-void HsProgressBar::setTargetProgressValue(int value) {
+void HsProgressBar::setTargetProgressValue(int value)
+{
     mTargetValue = value;
     if (value > progressValue() && value <= maximum()) {
         if (!mTimerId) {
@@ -76,22 +76,23 @@
 }
 
 void HsProgressBar::timerEvent(QTimerEvent *event)
- {
-     if (mTargetValue == progressValue()) {
-         killTimer(mTimerId);
-         mTimerId = 0;
-     } else {
-         setProgressValue(progressValue()+1);
-     }
+{
+    Q_UNUSED(event);
+    if (mTargetValue == progressValue()) {
+        killTimer(mTimerId);
+        mTimerId = 0;
+    } else {
+        setProgressValue(progressValue()+1);
+    }
  }
 
-HsListViewItem::HsListViewItem(QGraphicsItem* parent) : 
+HsListViewItem::HsListViewItem(QGraphicsItem* parent) :
     HbListViewItem(parent), progress(0), isProgress(false)
-{   
+{
     setGraphicsSize(LargeIcon);
     setStretchingStyle(StretchLandscape);
     if (this == prototype()) {
-        HbStyleLoader::registerFilePath(":/layout/hslistviewitem.css");        
+        HbStyleLoader::registerFilePath(":/layout/hslistviewitem.css");
     }
 }
 
@@ -116,9 +117,9 @@
         isProgress = true;
         if (!progress) {
             progress = new HsProgressBar(this);
-            HbStyle::setItemName(progress, "progress"); 
+            HbStyle::setItemName(progress, "progress");
             progress->setRange(0, 100);
-            HbEffect::disable(progress);  
+            HbEffect::disable(progress);
             progress->setProgressValue(progresVal);
             repolish();
             connect(progress, SIGNAL(valueChanged(int)), SLOT(updatePixmapCache()));
@@ -132,20 +133,20 @@
                            HbParameterLengthLimiter("txt_applib_dblist_uninstalling_1")
                            .arg(text->text()));
                    break;
-               } 
+               }
            }
-    } else if (progress) {       
+    } else if (progress) {
         disconnect(progress, SIGNAL(valueChanged()));
         delete progress;
         progress = 0;
         repolish();
     }
-    // hide text-2 if we have to 
+    // hide text-2 if we have to
     foreach (QGraphicsItem * item, this->childItems()) {
         if (HbStyle::itemName(item) == "text-2") {
-            item->setVisible(!isProgress);            
+            item->setVisible(!isProgress);
             break;
-        } 
+        }
     }
 }
 
@@ -156,12 +157,12 @@
 
 
 void HsListViewItem::polish(HbStyleParameters& params)
-{       
+{
     if (isProgress) {
         HbStyleLoader::registerFilePath(":/layout/hslistviewitem.widgetml");
     }
     HbListViewItem::setProperty("progress", isProgress);
-    HbListViewItem::polish(params);   
+    HbListViewItem::polish(params);
     if (isProgress) {
         HbStyleLoader::unregisterFilePath(":/layout/hslistviewitem.widgetml");
     }
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsmainwindow.cpp	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsmainwindow.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -21,7 +21,10 @@
 #include "hsmainwindow.h"
 #include "hsmenuview.h"
 #include "hsmenumodewrapper.h"
-
+#include "hsscene.h"
+#include "hspage.h"
+#include "hspagevisual.h"
+#include "hswallpaper.h"
 /*!
  Constructor
  */
@@ -66,6 +69,24 @@
         hbW->addView(view);
     }
     
+    // For some reason all visible items will pe rendered even they are outside of the viewport
+    // Hide inactive pages and wallpapers to make screen shot faster
+    HsScene *scene(HsScene::instance()); 	
+    QList<HsPage *> pages(scene->pages());
+    foreach (HsPage *p, pages) {
+        if (p != scene->activePage()) {
+        		p->wallpaper()->hide();
+            p->visual()->hide();
+        } 
+    }
     bool animate  = !hbW->isObscured();       
+    // source view will be rendered to cache
     hbW->setCurrentView(view, animate, Hb::ViewSwitchCachedFullScreen);
+   	// restore previous
+   	foreach (HsPage *p, pages) {
+        if (p != scene->activePage()) {
+        		p->wallpaper()->show();
+            p->visual()->show();
+        } 
+    } 	
 }
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsoperatorhandler_p.cpp	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsoperatorhandler_p.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -144,13 +144,14 @@
     XQSettingsManager *crManager)
 {
     QVariant variant = getVariantFromKey(
-            crManager, OperatorStoreApplication, XQSettingsManager::TypeString);
+        crManager, OperatorStoreApplication, XQSettingsManager::TypeString);
     if (!variant.isNull()) {
         CaEntry *operatorEntry = new CaEntry;
         operatorEntry->setEntryTypeName(Hs::applicationTypeName);
+        // Convert from a hexadecimal integer into a decimal one (as a string).
         operatorEntry->setAttribute(
-            Hs::applicationUidEntryKey, variant.toString());
-
+            Hs::applicationUidEntryKey,
+            QString::number(variant.toString().toInt(0, 16)));
         return operatorEntry;
     }
     return NULL;
@@ -210,7 +211,7 @@
 
     if (presenceVariant.isValid()) {
         qDebug() << "HsOperatorHandlerPrivate::storePresent"
-                 << presenceVariant.toInt();
+                 << presenceVariant;
         return presenceVariant;
     }
     return QVariant();
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hssearchfilterproxymodel.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,130 @@
+/*
+ * 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: Proxy model for search and highlight items view.
+ *
+ */
+
+#include <QObject>
+#include <hbcolorscheme.h>
+#include <caitemmodel.h>
+
+#include "hssearchfilterproxymodel.h"
+
+/*!
+ \class HsSearchFilterProxyModel
+ \ingroup group_hsmenustateplugin
+ \brief Proxy Model for highlight search string.
+ Highlight search string in model item title.
+ \lib ?library
+ \see QSortFilterProxyModel
+ */
+
+/*!
+ Constructor.
+ \param parent parent for object.
+ */
+HsSearchFilterProxyModel::HsSearchFilterProxyModel(QObject *parent) :
+    QSortFilterProxyModel(parent),
+    mInSettingFilterString(false)
+{
+}
+
+/*
+ Destructor.
+ */
+HsSearchFilterProxyModel::~HsSearchFilterProxyModel()
+{
+}
+
+/*
+The data() method is overridden to have a place where the highlighting
+ is added to the item data. In this implementation HTML-tags for 
+ background color are added to the beginning and end of the match 
+ in the data method using HbColorScheme.
+ \param index source parent index.
+ \param role item role.
+ */
+QVariant HsSearchFilterProxyModel::data(const QModelIndex &index, 
+        int role) const
+{
+    QColor highlight = HbColorScheme::color("qtc_lineedit_marker_normal");
+    QColor color = HbColorScheme::color("qtc_lineedit_selected");
+    
+    if (role == Qt::DisplayRole && !mFilterCriteria.isEmpty()) {
+        QStringList textList = 
+                QSortFilterProxyModel::data(index, role).toStringList();
+        if(!textList[0].isEmpty())
+        {
+            QString start = QString(
+                    TAG_START).arg( highlight.name().toUpper() ).arg(color.name().toUpper());
+            int pos = textList[0].indexOf(mFilterCriteria, 0,Qt::CaseInsensitive);
+            textList[0].insert(pos, start);
+            textList[0].insert(pos + start.length() + mFilterCriteria.length(), TAG_END);
+        }
+        
+        return QVariant(textList);
+    }
+        return QSortFilterProxyModel::data(index, role);
+
+}
+/*
+SetFilterString is the way to set the filtering criteria that is used
+ in highlight filtering. 
+ QSortFilterProxyModel does not allow overriding its own filtering 
+ criteria setting methods, so a separate method is added in the 
+ HighlightFilterProxyModel. 
+ This method stores the current filtering criteria and it can be 
+ used in the data() method in highlighting the matches. 
+ The method also calls the QSortFilterProxyModel method for setting 
+ the filterCriteria. This triggers the base class to do the actual 
+ filtering.
+ \param index source parent index.
+ \param role item role.
+ */
+void HsSearchFilterProxyModel::setFilterString(const QString &filterCriteria)
+{
+    mInSettingFilterString = true;
+    mFilterCriteria = filterCriteria;
+    setFilterRegExp(
+            QRegExp("(^|\\b)" + filterCriteria, Qt::CaseInsensitive));
+    mInSettingFilterString = false;
+}
+
+QString HsSearchFilterProxyModel::filterString() const
+{
+    return mFilterCriteria;
+}
+
+/*
+ Reimplementated from QSortFilterProxyModel.
+ The filterAcceptsRow method is overridden to send a dataChanged signal 
+ to the list view item
+ \param source_row row in source model.
+ \param source_parent source parent index.
+ */
+bool HsSearchFilterProxyModel::filterAcceptsRow (int source_row, 
+        const QModelIndex &source_parent) const
+{
+    bool retVal = QSortFilterProxyModel::filterAcceptsRow(source_row, 
+            source_parent);
+    if (mInSettingFilterString && retVal) {
+        QModelIndex mi = mapFromSource(sourceModel()->index(source_row, 0, 
+                source_parent));
+        emit const_cast<HsSearchFilterProxyModel*>(this)->dataChanged(mi, mi);
+    }
+    return retVal;
+}
+
+
+
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hssearchview.cpp	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hssearchview.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -16,7 +16,6 @@
  */
 
 #include <QApplication>
-#include <QSortFilterProxyModel>
 #include <HbGroupBox>
 #include <HbLineEdit>
 #include <HbListView>
@@ -59,7 +58,7 @@
  */
 HsSearchView::HsSearchView(HsMenuViewBuilder &builder,
         HsStateContext stateContext, HsMainWindow &mainWindow) :
-    mProxyModel(new QSortFilterProxyModel(this)), mSearchView(NULL),
+    mProxyModel(new HsSearchFilterProxyModel(this)), mSearchView(NULL),
     mSearchListView(NULL), mSearchPanel(NULL), mStateContext(stateContext),
     mBuilder(builder), mMainWindow(mainWindow), mListView(NULL),
     mVkbHost(NULL), mSearchViewBuilder(), mEmptyResultText(true)
@@ -128,8 +127,8 @@
 
     mProxyModel->invalidate();
     mProxyModel->setSourceModel(mListView->model());
-    mProxyModel->setFilterRegExp(
-            QRegExp(QString(".*"), Qt::CaseInsensitive, QRegExp::RegExp));
+    mCriteria = QString("");
+    mProxyModel->setFilterString(mCriteria);
 
     mSearchView = mSearchViewBuilder.searchView();
     mSearchListView = mSearchViewBuilder.searchListView();
@@ -144,7 +143,10 @@
     }
 
     mSearchView->hideItems(Hb::AllItems);
-    mSearchListView->setModel(mProxyModel, new HsListViewItem());
+    HsListViewItem *item = new HsListViewItem();
+    item->setTextFormat(Qt::RichText);
+
+    mSearchListView->setModel(mProxyModel, item);
 
     mMainWindow.setCurrentView(mSearchView);
 
@@ -279,11 +281,14 @@
     qDebug() << "HsSearchView::findItem: " + criteriaStr;
     HSMENUTEST_FUNC_ENTRY("HsSearchView::findItem");
 
-    mProxyModel->setFilterRegExp(
-            QRegExp("(^|\\b)" + criteriaStr, Qt::CaseInsensitive));
+    if (criteriaStr == mCriteria) 
+        return;
 
-    mSearchListView->scrollTo(
-            mProxyModel->index(0, 0), HbAbstractItemView::PositionAtTop);
+    mCriteria = criteriaStr;
+    mProxyModel->setFilterString(criteriaStr);
+    if(criteriaStr.isEmpty())
+        mSearchListView->scrollTo(
+                mProxyModel->index(0, 0), HbAbstractItemView::PositionAtTop);
 
     HSMENUTEST_FUNC_EXIT("HsSearchView::findItem");
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/inc/hscontentservice.h	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,23 @@
+/*
+* 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 HSCONTENTSERVICE_H
+#define HSCONTENTSERVICE_H
+
+#include "t_hscontentservice.h"
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/inc/t_hsaddtohomescreenmockstate.h	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,42 @@
+/*
+* 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 T_HS_ADD_TO_HOME_SCREEN_MOCK_STATE_H_
+#define T_HS_ADD_TO_HOME_SCREEN_MOCK_STATE_H_
+
+#include <qstandarditemmodel.h>
+#include <qstate.h>
+#include "caentry.h"
+#include "caitemmodel.h"
+
+
+class AddToHomeScreenMockState: public QState
+{
+    Q_OBJECT
+    bool mEntered;
+public:
+    AddToHomeScreenMockState(QState *aParent = 0);
+    bool enteredValue() const;
+    void setEnteredValue(bool entered) {
+        mEntered = entered;
+    };
+
+protected:
+    void onEntry(QEvent *e);
+};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/inc/t_hscontentservice.h	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,45 @@
+/*
+* 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 T_HSCONTENTSERVICE_H
+#define T_HSCONTENTSERVICE_H
+
+#include <QObject>
+#include <QMetaType>
+#include <QVariant>
+
+class HsWidgetHost;
+
+class HsContentService : public QObject
+{
+    Q_OBJECT
+public:
+    HsContentService(QObject *parent = 0);
+    ~HsContentService();
+
+	bool widgets(const QString &uri, const QVariantHash &preferences, int &count);
+    static HsContentService *instance();
+signals:
+    bool widgetAdded(const QString &, const QVariantHash &);
+    bool widgetRemoved(const QString &, const QVariantHash &);
+private:
+    Q_DISABLE_COPY(HsContentService)
+
+};
+
+Q_DECLARE_METATYPE(HsContentService *)
+
+#endif // T_HSCONTENTSERVICE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/inc/t_hsmockmodel.h	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,38 @@
+/*
+* 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 T_HS_MOCK_MODEL_H_
+#define T_HS_MOCK_MODEL_H_
+
+#include <qstandarditemmodel.h>
+#include "caentry.h"
+#include "hsmenuitemmodel.h"
+
+
+class MockModel: public HsMenuItemModel
+{
+    Q_OBJECT
+    CaEntry mEntry;
+public:
+    MockModel();
+
+    QModelIndex fixedIndex() const;
+
+    const CaEntry *entry(const QModelIndex &index) const;
+};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/inc/t_hsproxymodeltestmockmodel.h	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,52 @@
+/*
+* 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 T_HS_MOCK_MODEL_H_EEEEE
+#define T_HS_MOCK_MODEL_H_EEEEE
+
+#include <qstandarditemmodel.h>
+#include "caentry.h"
+#include "hsmenuitemmodel.h"
+
+class ProxyModelTestMockModel: public HsMenuItemModel
+{
+    Q_OBJECT
+public:
+    ProxyModelTestMockModel(int entryId) :
+        HsMenuItemModel(CaQuery()),
+        mEntryId(entryId) {}
+
+    virtual QModelIndex index(int, int,
+        const QModelIndex &parent = QModelIndex()) const {
+    	Q_UNUSED(parent);
+        return QModelIndex();
+    }
+    virtual QVariant data(const QModelIndex &,
+                              int role = Qt::DisplayRole) const {
+    	Q_UNUSED(role);
+    	return QVariant(mEntryId);
+    }
+
+    const CaEntry *entry(const QModelIndex &index) const;
+    
+private:
+    
+    int mEntryId;
+};
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/src/t_hsaddtohomescreenmockstate.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,31 @@
+/*
+* 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 "t_hsaddtohomescreenmockstate.h"
+
+
+AddToHomeScreenMockState::AddToHomeScreenMockState(QState *aParent):
+    QState(aParent), mEntered(false) {}
+void AddToHomeScreenMockState::onEntry(QEvent *e)
+{
+    Q_UNUSED(e);
+    mEntered = true;
+}
+bool AddToHomeScreenMockState::enteredValue() const
+{
+    return mEntered;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/src/t_hscontentservice.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,34 @@
+/*
+* 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 "t_hscontentservice.h"
+
+HsContentService::HsContentService(QObject *parent): QObject(parent) {}
+
+HsContentService::~HsContentService() {}
+
+bool HsContentService::widgets(const QString &uri, const QVariantHash &preferences, int &count)
+{
+    Q_UNUSED(uri)
+    Q_UNUSED(preferences)
+    count = 0;
+    return true;
+}
+
+HsContentService *HsContentService::instance() {
+    static HsContentService service;
+    return &service;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/src/t_hsmockmodel.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,43 @@
+/*
+* 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 "t_hsmockmodel.h"
+
+MockModel::MockModel():
+    HsMenuItemModel(CaQuery())
+{
+    mEntry.setAttribute("uri",
+                        "homescreen.nokia.com/widget/clock");
+    mEntry.setAttribute("library",
+                        "hsresources/import/widgetregistry/20022F43/hsclockwidgetprovider.dll");
+    mEntry.setEntryTypeName("widget");
+}
+
+QModelIndex MockModel::fixedIndex() const
+{
+    return QAbstractItemModel::createIndex(0, 0, 0);
+}
+
+const CaEntry*
+MockModel::entry(const QModelIndex &index) const
+{
+    const CaEntry *result = NULL;
+    if (index == fixedIndex()) {
+        result = &mEntry;
+    }
+    return result;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_allappsstate/inc/t_allappsstate.h	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,72 @@
+/*
+* 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:  Tests for hsapplibrarystateplugin.
+*
+*/
+
+#ifndef T_ALLAPPSSTATE_H
+#define T_ALLAPPSSTATE_H
+
+#include <QtTest/QtTest>
+
+
+class HbMainWindow;
+class HbAbstractViewItem;
+class QStateMachine;
+
+
+/**
+* @test Test class for homescreen::hsutils modules.
+*/
+class MenuStatesTest : public QObject
+{
+    Q_OBJECT
+
+private slots:
+    //void initTestCase();
+    //void cleanup();
+    //void init();
+    /*
+    * Tests
+    */
+    //HsAllAppsState
+    void construction();
+    void addToCollection();
+    void addToHomeScreen();
+#ifdef Q_OS_SYMBIAN
+    void openTaskSwitcher();
+#endif//Q_OS_SYMBIAN
+    void listItemLongPressed();
+    void contextMenuAction();
+    void sortOrder();
+    void listItemActivated();
+    void addModeAddActivated();
+    void addModeShowContextMenu();
+    void addModeEnteredExited();
+#ifdef Q_OS_SYMBIAN
+    void checkSoftwareUpdates();
+#endif//Q_OS_SYMBIAN
+    //HsAddModeProxyModel
+    void addModeProxyModel_construction();
+    void addModeProxyModel_filterAcceptsRow();
+    
+private:
+    HbMainWindow* mMainWindow;
+    static const char TEST_PARAM_NAME[17];
+    static const char TEST_PARAM_VALUE[17];
+};
+
+
+
+#endif // T_ALLAPPSSTATE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_allappsstate/src/t_addmodeproxymodel.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,157 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Main test class for hsHomeScreenStatePlugin library.
+*
+*/
+
+#include <QScopedPointer>
+#include <QModelIndex>
+
+#include "caentry.h"
+#include "caservice.h"
+#include "hsmenuitemmodel.h"
+#include "t_allappsstate.h"
+#include "hsapp_defs.h"
+#include "hsaddmodeproxymodel.h"
+#include "t_hsproxymodeltestmockmodel.h"
+
+const char MenuStatesTest::TEST_PARAM_NAME[] = "test_param_name";
+const char MenuStatesTest::TEST_PARAM_VALUE[] = "test_param_value";
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::addModeProxyModel_construction()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {		
+        ////clear test entries
+        CaQuery q;
+        q.setAttribute(QString(Hs::widgetParam)+TEST_PARAM_NAME, TEST_PARAM_VALUE);
+        QSharedPointer<CaService> caServiceInstance = CaService::instance(); 
+        QList< QSharedPointer<CaEntry> > testEntries = caServiceInstance->getEntries(q);
+        caServiceInstance->removeEntries(testEntries);
+        ////init
+        CaEntry cwrtWidgetWithMiniViewEntry(ItemEntryRole);
+        cwrtWidgetWithMiniViewEntry.setEntryTypeName(Hs::applicationTypeName);
+        cwrtWidgetWithMiniViewEntry.setText("AccuWeather-W3C_TEST");
+        cwrtWidgetWithMiniViewEntry.setAttribute(Hs::swTypeKey,Hs::HS_CWRT_APP_TYPE);
+        cwrtWidgetWithMiniViewEntry.setAttribute(Hs::widgetUriAttributeName,Hs::HS_WIDGET_URI_ATTRIBUTE_CWRT_VALUE);
+        cwrtWidgetWithMiniViewEntry.setAttribute(QString(Hs::widgetParam)+TEST_PARAM_NAME,TEST_PARAM_VALUE);
+        QSharedPointer<CaEntry> entry = caServiceInstance->createEntry(cwrtWidgetWithMiniViewEntry);
+        QVERIFY(entry.data() != NULL);
+        
+        ////test
+        QVariantHash preferences;
+        preferences.insert(TEST_PARAM_NAME,TEST_PARAM_VALUE);
+        int widgetEntryId = HsAddModeProxyModel::findCwrtWidgetEntryId(preferences);
+        QCOMPARE(widgetEntryId,entry->id());
+        
+        QScopedPointer<HsAddModeProxyModel> addModeProxyModel;
+        addModeProxyModel.reset( new HsAddModeProxyModel());
+        
+        QVERIFY(addModeProxyModel->mNotifier.data() != NULL );
+        QCOMPARE(addModeProxyModel->mQuery.entryTypeNames().contains(Hs::applicationTypeName), QBool(true));
+        QMap<QString, QString> queryAttributes = addModeProxyModel->mQuery.attributes();
+        QCOMPARE(queryAttributes.value(Hs::swTypeKey), QString(Hs::HS_CWRT_APP_TYPE));
+        QCOMPARE(queryAttributes.value(Hs::widgetUriAttributeName), QString(Hs::HS_WIDGET_URI_ATTRIBUTE_CWRT_VALUE));
+        
+        ////cwrt widget entry present in cache
+        QCOMPARE(addModeProxyModel->mCwrtWidgetCache.keys().contains(entry->id()), QBool(true));
+        
+        ////notification: remove entry
+        addModeProxyModel->updateEntryStatus(*entry.data(), RemoveChangeType); 
+        QCOMPARE(addModeProxyModel->mCwrtWidgetCache.keys().contains(entry->id()), QBool(false));
+        ////notification: add entry
+        addModeProxyModel->updateEntryStatus(*entry.data(), AddChangeType); 
+        QCOMPARE(addModeProxyModel->mCwrtWidgetCache.keys().contains(entry->id()), QBool(true));
+        
+        ////clear
+        bool removeResult = caServiceInstance->removeEntry(*entry.data());
+        QCOMPARE( removeResult , true );
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::addModeProxyModel_filterAcceptsRow()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {       
+        ////clear test entries
+        CaQuery q;
+        q.setAttribute(QString(Hs::widgetParam)+TEST_PARAM_NAME, TEST_PARAM_VALUE);
+        QSharedPointer<CaService> caServiceInstance = CaService::instance();
+        QList< QSharedPointer<CaEntry> > testEntries = caServiceInstance->getEntries(q);
+        caServiceInstance->removeEntries(testEntries);
+        ////init
+        CaEntry cwrtWidgetWithMiniViewEntry(ItemEntryRole);
+        cwrtWidgetWithMiniViewEntry.setEntryTypeName(Hs::applicationTypeName);
+        cwrtWidgetWithMiniViewEntry.setText("AccuWeather-W3C_TEST");
+        cwrtWidgetWithMiniViewEntry.setAttribute(Hs::swTypeKey,Hs::HS_CWRT_APP_TYPE);
+        cwrtWidgetWithMiniViewEntry.setAttribute(Hs::widgetUriAttributeName,Hs::HS_WIDGET_URI_ATTRIBUTE_CWRT_VALUE);
+        cwrtWidgetWithMiniViewEntry.setAttribute(QString(Hs::widgetParam)+TEST_PARAM_NAME,TEST_PARAM_VALUE);
+        QSharedPointer<CaEntry> entry = caServiceInstance->createEntry(cwrtWidgetWithMiniViewEntry);
+        QVERIFY(entry.data() != NULL);
+        
+        ////test
+        QScopedPointer<HsAddModeProxyModel> addModeProxyModel;
+        addModeProxyModel.reset( new HsAddModeProxyModel());
+        QCOMPARE(addModeProxyModel->mCwrtWidgetCache.value(entry->id()), false);
+        
+        QScopedPointer<ProxyModelTestMockModel> proxyModelTestMockModel;
+        proxyModelTestMockModel.reset( new ProxyModelTestMockModel(entry->id()));
+        addModeProxyModel->setSourceModel(proxyModelTestMockModel.data());
+        bool result = addModeProxyModel->filterAcceptsRow(0,QModelIndex());
+        ///widget is not on HS so we show it
+        QCOMPARE(result, true);
+
+        QVariantHash preferences;
+        preferences.insert(TEST_PARAM_NAME,TEST_PARAM_VALUE);
+        addModeProxyModel->updateCacheOnAddWidget(Hs::HS_WIDGET_URI_ATTRIBUTE_CWRT_VALUE, preferences);
+        QCOMPARE(addModeProxyModel->mCwrtWidgetCache.value(entry->id()), true);
+        result = addModeProxyModel->filterAcceptsRow(0,QModelIndex());
+        ///widget is on HS so we do not show it
+        QCOMPARE(result, false);
+        
+        addModeProxyModel->updateCacheOnRemoveWidget(Hs::HS_WIDGET_URI_ATTRIBUTE_CWRT_VALUE, preferences);
+        QCOMPARE(addModeProxyModel->mCwrtWidgetCache.value(entry->id()), false);
+        result = addModeProxyModel->filterAcceptsRow(0,QModelIndex());
+        ///widget is not on HS so we show it
+        QCOMPARE(result, true);
+
+        ////clear
+        bool removeResult = caServiceInstance->removeEntry(*entry.data());
+        QCOMPARE( removeResult , true );
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_allappsstate/src/t_allappsstate.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,679 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Main test class for hsHomeScreenStatePlugin library.
+*
+*/
+
+#include <HbMainWindow>
+#include <HbInstance>
+#include <HbView>
+#include <HbListView>
+#include <HbListViewItem>
+#include <HbMenu>
+#include <HbAction>
+#include <qscopedpointer>
+#include <qservicemanager.h>
+#include "caentry.h"
+#include "caitemmodel.h"
+#include "hsmenuview.h"
+#include "hsmenuevent.h"
+#include "hsallappsstate.h"
+#include "hsmenueventtransition.h"
+#include "hsmainwindow.h"
+
+#include "t_hsaddtohomescreenmockstate.h"
+#include "t_hsmockmodel.h"
+#include "t_allappsstate.h"
+
+QTM_USE_NAMESPACE
+
+
+
+class HsMainWindowMock : public HsMainWindow
+{
+    virtual void setCurrentView(HbView *view);
+
+};
+
+void HsMainWindowMock::setCurrentView(HbView *view)
+{
+    Q_UNUSED(view)
+    // do nothing    
+}
+
+//void MenuStatesTest::initTestCase()
+//{
+//    mMainWindow = new HbMainWindow();
+//}
+
+
+//void MenuStatesTest::init()
+//{
+//	if (mMainWindow==NULL)
+//		{
+//	    mMainWindow = new HbMainWindow();
+//		}
+//}
+
+//void MenuStatesTest::cleanup()
+//{
+//    qApp->processEvents();
+//    delete mMainWindow;
+//    mMainWindow = NULL;
+//}
+
+//void MenuStatesTest::cleanupTestCase()
+//{
+//    //    delete mMainWindow;
+//}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::construction()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        ////clear test entries
+        CaQuery q;
+        q.setAttribute(QString(Hs::widgetParam)+TEST_PARAM_NAME,
+            TEST_PARAM_VALUE);
+        QSharedPointer<CaService> caServiceInstance = CaService::instance();
+        QList< QSharedPointer<CaEntry> > testEntries = caServiceInstance->getEntries(q);
+        caServiceInstance->removeEntries(testEntries);
+
+        HsMenuViewBuilder builder;
+        HsMenuModeWrapper menuMode;
+        HsMainWindowMock mainWindow;
+        QScopedPointer<HsAllAppsState> allAppsState(new HsAllAppsState(
+            builder, menuMode, mainWindow, 0));
+
+        QCOMPARE(allAppsState->mSortAttribute,
+                 Hs::AscendingNameHsSortAttribute);
+
+        QVERIFY(allAppsState->mModel != static_cast<HsMenuItemModel *>(0));
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+
+void MenuStatesTest::addModeEnteredExited()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsMenuViewBuilder builder;
+        HsMenuModeWrapper menuMode;
+        HsMainWindowMock mainWindow;
+        QScopedPointer<HsAllAppsState> allAppsState(new HsAllAppsState(
+        builder, menuMode, mainWindow, 0));
+        allAppsState->mViewOptions = new HbMenu();
+
+        allAppsState->mMenuMode->setHsMenuMode(Hs::AddHsMenuMode);
+        allAppsState->addModeEntered();
+        QCOMPARE(allAppsState->mMenuMode->getHsMenuMode(),Hs::AddHsMenuMode);
+        allAppsState->mMenuView->view()->setMenu( 0 );
+        allAppsState->addModeExited();
+        QCOMPARE(allAppsState->mMenuView->view()->menu(),allAppsState->mViewOptions);
+
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::sortOrder()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsMenuViewBuilder builder;
+        HsMenuModeWrapper menuMode;
+        HsMainWindowMock mainWindow;
+        QScopedPointer<HsAllAppsState> allAppsState(new HsAllAppsState(
+            builder, menuMode, mainWindow, 0));
+        allAppsState->scrollToBeginning();
+
+        allAppsState->stateEntered();
+
+        QVERIFY(allAppsState->mModel->columnCount() > 0);
+        QVERIFY(allAppsState->mModel->rowCount() > 0);
+        QVERIFY(allAppsState->mMenuView->view()->menu() != NULL);
+
+        allAppsState->stateExited();
+
+        QVERIFY(allAppsState->mModel->columnCount() > 0);
+        QVERIFY(allAppsState->mModel->rowCount() > 0);
+        QVERIFY(allAppsState->mMenuView->view()->menu()->isEmpty());
+
+        QVERIFY(allAppsState->mModel);
+        QCOMPARE(allAppsState->mSortAttribute,
+                 Hs::AscendingNameHsSortAttribute);
+
+        allAppsState->setMenuOptions();
+        QVERIFY(allAppsState->mAscendingMenuAction != 0);
+        QVERIFY(allAppsState->mDescendingMenuAction != 0);
+        allAppsState->descendingMenuAction();
+        QCOMPARE(allAppsState->mSortAttribute,
+                 Hs::DescendingNameHsSortAttribute);
+
+        allAppsState->ascendingMenuAction();
+        QCOMPARE(allAppsState->mSortAttribute,
+                 Hs::AscendingNameHsSortAttribute);
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::listItemActivated()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        QScopedPointer<QStateMachine> machine(new QStateMachine(0));
+        QState *parent = new QState(machine.data());
+
+        HsMenuViewBuilder builder;
+        HsMenuModeWrapper menuMode;
+        HsMainWindowMock mainWindow;
+        QScopedPointer<HsAllAppsState> allAppsState(new HsAllAppsState(
+            builder, menuMode, mainWindow, parent));
+
+        allAppsState->scrollToBeginning();
+
+        QVERIFY(allAppsState->mModel != NULL);
+        QModelIndex applicationModelIndex = allAppsState->mModel->index(1, 0);
+        
+        allAppsState->launchItem(applicationModelIndex);
+
+        QTest::qWait(1000);
+        QVariant launchedItem = allAppsState->mModel->data(applicationModelIndex,
+                                                           CaItemModel::IdRole);
+        //TODO: made some utils to closing application
+        //HsMenuService::executeAction(launchedItem.toInt(), QString("close"));
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::listItemLongPressed()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        QScopedPointer<QStateMachine> machine(new QStateMachine(0));
+        QState *parent = new QState(machine.data());
+
+        QScopedPointer<HbMainWindow> window(new HbMainWindow);
+
+        HsMenuViewBuilder builder;
+        HsMenuModeWrapper menuMode;
+        HsMainWindowMock mainWindow;
+        
+        QScopedPointer<HsAllAppsState> allAppsState(new HsAllAppsState(
+            builder, menuMode, mainWindow, parent));
+
+        allAppsState->scrollToBeginning();
+
+        allAppsState->stateEntered();
+        QScopedPointer<HbAbstractViewItem> item(new HbListViewItem);
+
+        QVERIFY(allAppsState->mModel != NULL);
+        QModelIndex itemModelIndex = allAppsState->mModel->index(0, 0);
+        item->setModelIndex(itemModelIndex);
+
+        allAppsState->showContextMenu(item.data() , QPointF(50,50));
+
+        QSharedPointer<const CaEntry> entry =
+                allAppsState->mModel->entry(item->modelIndex());
+
+        if (!(entry->attribute(Hs::appSettingsPlugin).isEmpty())) {
+            QVERIFY(allAppsState->mContextMenu->actions().length() == 5);
+        } else {
+            QVERIFY(allAppsState->mContextMenu->actions().length() == 4);
+        }
+
+        QVERIFY(allAppsState->mContextMenu->testAttribute(Qt::WA_DeleteOnClose));
+
+
+        allAppsState->stateExited();
+
+        qApp->processEvents();
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::contextMenuAction()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        QScopedPointer<QStateMachine> machine(new QStateMachine(0));
+
+        QScopedPointer<HbMainWindow> window(new HbMainWindow);
+
+        HsMenuViewBuilder builder;
+        HsMenuModeWrapper menuMode;
+        HsMainWindow mainWindow;
+
+        QScopedPointer<HsAllAppsState> allAppsState(new HsAllAppsState(
+            builder, menuMode, mainWindow, machine.data()));
+
+
+        // we will start from all apps view
+        machine->setInitialState(allAppsState.data());
+
+        // create a state which is to be reached when add-to-home-screen
+        // event is triggered
+        AddToHomeScreenMockState addToHomeScreenState(machine.data());
+
+        // create a transition to the new child state which will be triggered by
+        // an event with specified operation type
+        HsMenuEventTransition addToHomeScreenTransition(
+            HsMenuEvent::AddToHomeScreen, allAppsState.data(), &addToHomeScreenState);
+
+        // prepare the state graph
+        allAppsState->addTransition(&addToHomeScreenTransition);
+
+        // MockModel object is to provide CaEntry representing widget
+        // the object will be deleted on destruction of allAppsState
+        MockModel *allAppsModel = new MockModel;
+        allAppsState->mModel = allAppsModel;
+        allAppsState->mMenuView->setModel(allAppsModel);
+
+        machine->start();
+        qApp->sendPostedEvents();
+
+        HbAction *action = new HbAction("test_addtohomescreen");
+        action->setData(Hs::AddToHomeScreenContextAction);
+        allAppsState->mContextModelIndex = allAppsModel->fixedIndex();
+
+        allAppsState->contextMenuAction(action);
+
+        qApp->sendPostedEvents();
+
+        QVERIFY(addToHomeScreenState.enteredValue());
+
+        machine->stop();
+        qApp->removePostedEvents(0);
+
+        allAppsState->stateExited();
+
+        qApp->processEvents();
+
+        delete action;
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::addModeAddActivated()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        QScopedPointer<QStateMachine> machine(new QStateMachine(0));
+
+        HsMenuViewBuilder builder;
+        HsMenuModeWrapper menuMode;
+        HsMainWindowMock mainWindow;
+        QScopedPointer<HsAllAppsState> allAppsState(new HsAllAppsState(
+            builder, menuMode, mainWindow, machine.data()));
+
+        {
+            // we will start from all apps view
+            machine->setInitialState(allAppsState.data());
+
+            // create a state which is to be reached when add-to-home-screen
+            // event is triggered
+            AddToHomeScreenMockState addToHomeScreenState(machine.data());
+
+            // create a transition to the new child state which will be triggered by
+            // an event with specified operation type
+            HsMenuEventTransition addToHomeScreenTransition(
+                HsMenuEvent::AddToHomeScreen, allAppsState.data(),
+                &addToHomeScreenState);
+
+            // prepare the state graph
+            allAppsState->addTransition(&addToHomeScreenTransition);
+
+            // MockModel object is to provide CaEntry representing widget
+            // the object will be deleted on destruction of allAppsState
+            MockModel *allAppsModel = new MockModel;
+            allAppsState->mModel = allAppsModel;
+            allAppsState->mMenuView->setModel(allAppsModel);
+
+            machine->start();
+            qApp->sendPostedEvents();
+
+            allAppsState->addActivated(allAppsModel->fixedIndex());
+            qApp->sendPostedEvents();
+
+            QVERIFY(addToHomeScreenState.enteredValue());
+            machine->stop();
+            qApp->removePostedEvents(0);
+        }
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::addModeShowContextMenu()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        QScopedPointer<QStateMachine> machine(new QStateMachine(0));
+
+        HsMenuViewBuilder builder;
+        HsMenuModeWrapper menuMode;
+        HsMainWindowMock mainWindow;
+        QScopedPointer<HsAllAppsState> allAppsState(new HsAllAppsState(
+            builder, menuMode, mainWindow, machine.data()));
+
+        {
+            MockModel *allAppsModel = new MockModel;
+            allAppsState->mModel = allAppsModel;
+            allAppsState->mMenuView->setModel(allAppsModel);
+
+            QScopedPointer<HbAbstractViewItem> item(new HbListViewItem);
+            item.data()->setModelIndex(allAppsModel->fixedIndex());
+            allAppsState->addModeShowContextMenu(item.data() , QPointF(50,50));
+            QList<QAction*> actions = allAppsState->mContextMenu->actions();
+            QCOMPARE(actions.size(),1);
+            if(actions.size() > 0 ){
+                //first action is 'add to HS'
+                QCOMPARE(actions.at(0)->data().toInt(),
+                         (int)Hs::AddToHomeScreenContextAction);
+                allAppsState->contextMenuAction( qobject_cast<HbAction*>(actions.at(0)) );
+            }
+        }
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::addToCollection()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsMenuViewBuilder builder;
+        QScopedPointer<QStateMachine> machine(new QStateMachine(0));
+        
+        HsMenuModeWrapper menuMode;
+        HsMainWindowMock mainWindow;
+        HsAllAppsState* allAppsState(new HsAllAppsState(
+            builder, menuMode, mainWindow, machine.data()));
+        
+        
+        // we will start from all apps view
+        machine->setInitialState(allAppsState);
+
+        AddToHomeScreenMockState mockState(machine.data());
+        HsMenuEventTransition addToCollectionTransition(
+            HsMenuEvent::AddAppsToCollection, allAppsState, &mockState);
+
+        // prepare the state graph
+        allAppsState->addTransition(&addToCollectionTransition);
+
+        machine->start();
+        qApp->sendPostedEvents();
+
+        allAppsState->addToCollection();
+
+        qApp->sendPostedEvents();
+
+        QVERIFY(mockState.enteredValue());
+        machine->stop();
+        qApp->removePostedEvents(0);
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::addToHomeScreen()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsMenuViewBuilder builder;    
+        QScopedPointer<QStateMachine> machine(new QStateMachine(0));
+        HsMenuModeWrapper menuMode;
+        HsMainWindowMock mainWindow;
+        QScopedPointer<HsAllAppsState> allAppsState(new HsAllAppsState(
+            builder, menuMode, mainWindow, machine.data()));
+
+        {
+            // we will start from all apps view
+            machine->setInitialState(allAppsState.data());
+
+            // create a state which is to be reached when add-to-home-screen
+            // event is triggered
+            AddToHomeScreenMockState addToHomeScreenState(machine.data());
+
+            // create a transition to the new child state which will be triggered by
+            // an event with specified operation type
+            HsMenuEventTransition addToHomeScreenTransition(
+                HsMenuEvent::AddToHomeScreen, allAppsState.data(), &addToHomeScreenState);
+
+            // prepare the state graph
+            allAppsState->addTransition(&addToHomeScreenTransition);
+
+            // MockModel object is to provide CaEntry representing widget
+            // the object will be deleted on destruction of allAppsState
+            MockModel *allAppsModel = new MockModel;
+            allAppsState->mModel = allAppsModel;
+            allAppsState->mMenuView->setModel(allAppsModel);
+
+            machine->start();
+            qApp->sendPostedEvents();
+
+            allAppsState->addToHomeScreen(
+                    allAppsModel->fixedIndex().data(CaItemModel::IdRole).toInt());
+            qApp->sendPostedEvents();
+
+            QVERIFY(addToHomeScreenState.enteredValue());
+            machine->stop();
+            qApp->removePostedEvents(0);
+            
+        }
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+#ifdef Q_OS_SYMBIAN
+void MenuStatesTest::openTaskSwitcher()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsMenuViewBuilder builder;
+        HsMenuModeWrapper menuMode;
+        HsMainWindowMock mainWindow;
+        QScopedPointer<HsAllAppsState> allAppsState(new HsAllAppsState(
+            builder, menuMode, mainWindow, 0));
+
+        QVERIFY(allAppsState->openTaskSwitcher());
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+#endif//Q_OS_SYMBIAN
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+#ifdef Q_OS_SYMBIAN
+void MenuStatesTest::checkSoftwareUpdates()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsMenuViewBuilder builder;
+        HsMenuModeWrapper menuMode;
+        HsMainWindowMock mainWindow;
+        QScopedPointer<HsAllAppsState> allAppsState(new HsAllAppsState(
+            builder, menuMode, mainWindow, 0));
+
+        QVERIFY(allAppsState->checkSoftwareUpdates()==0);
+        
+        // cleanup
+        QTest::qWait(5000);
+
+        CaQuery query;
+        query.setEntryTypeNames(QStringList(Hs::applicationTypeName));
+        query.setAttribute(Hs::applicationUidEntryKey,
+                           QString::number(Hs::softwareUpdateApplicationUid));
+        
+        QList< QSharedPointer<CaEntry> > appEntries = CaService::instance()->getEntries(query);
+
+        if (!appEntries.isEmpty()) {
+            QSharedPointer<CaEntry> entry = appEntries.first();
+            int entryId = entry->id();
+            HsMenuService::executeAction(entryId, QString("close"));            
+        }
+
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+#endif//Q_OS_SYMBIAN
+
+
+
+
+
+QTEST_MAIN(MenuStatesTest)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_allappsstate/t_allappsstate.pri	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,24 @@
+#
+# 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:
+#
+#Header files
+HEADERS += ./inc/*.h \
+           ../inc/*.h \
+           ../../inc/*.h
+
+#Source files
+SOURCES += ./src/*.cpp \
+           ../src/*.cpp \
+           ../../src/*.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_allappsstate/t_allappsstate.pro	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,76 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+TEMPLATE = app
+CONFIG += hb mobility
+MOBILITY = serviceframework
+
+include(../../../../common.pri)
+include(../../docml.pri)
+
+LIBS += -lhsdomainmodel
+LIBS += -lhsutils
+LIBS += -lhsmenuserviceprovider
+LIBS += -lcaclient
+
+QT += testlib \
+      xml \
+      sql
+
+DEFINES += MENUSTATES_UNITTEST
+
+coverage:DEFINES += COVERAGE_MEASUREMENT
+
+DEPENDPATH += .\
+              ./src \
+              ./inc \
+              ../inc \
+              ../../src \
+              ../../inc
+              
+INCLUDEPATH += .\
+               ./inc \
+               ../inc \
+               ../../inc \
+               ../../../hsmenuworkerstateplugin/inc \
+               ../../../../serviceproviders/hsmenuserviceprovider/inc \               
+               ../../../../hsutils/inc
+               
+symbian {
+    for(docmlFile, docmlFiles): DOCML+=../../$$docmlFile
+    
+    ### get rid of localization warnings
+    CONFIG -= hb
+    load(hb.prf)
+    CONFIG -= symbian_i18n
+    ###
+    TARGET.UID3 = 0x20022F8B
+    TARGET.CAPABILITY = CAP_APPLICATION AllFiles
+    TARGET.EPOCSTACKSIZE = 0x14000 // 80kB
+    TARGET.EPOCHEAPSIZE = 0x20000 0x1000000 // 128kB - 16MB
+    CONFIG += symbian_test
+    coverage: CONFIG -= symbian_test
+	exists($${EPOCROOT}epoc32/include/platform/mw/XQSettingsManager) {
+        LIBS += -lxqsettingsmanager
+        
+    MMP_RULES += SMPSAFE
+    }    
+}
+
+RESOURCES += ../../$$qrcFile
+
+include(t_allappsstate.pri)
+                      
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_allcollectionsstate/inc/t_allcollectionsstate.h	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,66 @@
+/*
+* 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:  Tests for hsapplibrarystateplugin.
+*
+*/
+
+#ifndef T_ALLCOLLECTIONSSTATE_H
+#define T_ALLCOLLECTIONSSTATE_H
+
+#include <QtTest/QtTest>
+
+
+class HbMainWindow;
+class HbAbstractViewItem;
+class QStateMachine;
+
+/**
+* @test Test class for homescreen::hsutils modules.
+*/
+class MenuStatesTest : public QObject
+{
+    Q_OBJECT
+
+private slots:
+    /**
+     * initialize
+     */
+    void initTestCase();
+    void init();
+
+    /*
+    * Tests
+    */
+    void construction();
+    void listItemLongPressed();
+    void contextMenuAction();
+    void listItemActivated();
+    void createNewCollection();
+    void createArrangeCollection();
+#ifdef Q_OS_SYMBIAN
+    void openTaskSwitcher();
+#endif//Q_OS_SYMBIAN
+    void addModeSlots();
+    void addModeEnteredExited();
+    void normalModeEnteredExited();
+
+    /**
+     * cleanup
+     */
+    void cleanup();
+
+private:
+    HbMainWindow *mWindow;
+};
+#endif // T_ALLCOLLECTIONSSTATE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_allcollectionsstate/src/t_allcollectionsstate.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,553 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Main test class for hsHomeScreenStatePlugin library.
+*
+*/
+
+#include <hbmainwindow.h>
+#include <hbinstance.h>
+#include <hbview.h>
+#include <hblistview.h>
+#include <hblistviewitem.h>
+#include <HbMenu>
+#include <HbAction>
+#include <qscopedpointer>
+
+#include "caentry.h"
+#include "caitemmodel.h"
+#include "hsmenuview.h"
+#include "hsmenuviewbuilder.h"
+#include "hsmenumodewrapper.h"
+#include "hsmenuevent.h"
+#include "hsallcollectionsstate.h"
+#include "hsmenueventtransition.h"
+#include "hsmainwindow.h"
+
+#include "t_hsaddtohomescreenmockstate.h"
+#include "t_hsmockmodel.h"
+#include "t_allcollectionsstate.h"
+
+class HsMainWindowMock : public HsMainWindow
+{
+    virtual void setCurrentView(HbView *view);
+
+};
+
+void HsMainWindowMock::setCurrentView(HbView *view)
+{
+    Q_UNUSED(view);
+    // do nothing    
+}
+
+void MenuStatesTest::initTestCase()
+{
+//    mWindow = NULL;
+}
+
+void MenuStatesTest::init()
+{
+//    mWindow = new HbMainWindow;
+}
+
+void MenuStatesTest::cleanup()
+{
+    qApp->processEvents();
+//    delete mWindow;
+//    mWindow = NULL;
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::construction()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsMenuViewBuilder builder;
+        HsMenuModeWrapper menuMode;
+        HsMainWindowMock mainWindow;
+        QState *parent = new QState;
+
+        HsAllCollectionsState *allCollectionsState =
+            new HsAllCollectionsState(builder,
+                                      menuMode,
+                                      mainWindow,
+                                      parent);
+
+        QCOMPARE(allCollectionsState->mBackKeyAction,
+                 allCollectionsState->mMenuView->view()->navigationAction());
+
+        QVERIFY(allCollectionsState->mModel !=
+                static_cast<HsMenuItemModel *>(0));
+        delete parent;
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+
+void MenuStatesTest::addModeEnteredExited()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsMenuViewBuilder builder;
+        HsMenuModeWrapper menuMode;
+        QState *parent = new QState;
+        HsMainWindowMock mainWindow;
+        HsAllCollectionsState *allCollectionsState =
+            new HsAllCollectionsState(
+            builder, menuMode, mainWindow, parent);
+
+        allCollectionsState->mMenuMode->setHsMenuMode(Hs::AddHsMenuMode);
+        allCollectionsState->addModeEntered();
+
+        QCOMPARE(allCollectionsState->mMenuMode->getHsMenuMode(),
+                 Hs::AddHsMenuMode);
+        delete parent;
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+
+void MenuStatesTest::normalModeEnteredExited()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsMenuViewBuilder builder;
+        HsMenuModeWrapper menuMode;
+        HsMainWindowMock mainWindow;
+        QState *parent = new QState;
+        HsAllCollectionsState *allCollectionsState = new HsAllCollectionsState(
+            builder, menuMode, mainWindow, parent);
+
+        allCollectionsState->mMenuMode->setHsMenuMode(Hs::NormalHsMenuMode);
+        allCollectionsState->normalModeEntered();
+        QCOMPARE(allCollectionsState->mMenuMode->getHsMenuMode(),
+                 Hs::NormalHsMenuMode);
+        allCollectionsState->normalModeExited();
+        QCOMPARE(allCollectionsState->mMenuMode->getHsMenuMode(),
+                 Hs::NormalHsMenuMode);
+        delete parent;
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::createNewCollection()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsMenuViewBuilder builder;
+        HsMenuModeWrapper menuMode;
+        HsMainWindowMock mainWindow;
+        QStateMachine *machine = new QStateMachine(0);
+
+        HsAllCollectionsState *allCollectionsState =
+            new HsAllCollectionsState(builder, menuMode, mainWindow, machine);
+
+        machine->setInitialState(allCollectionsState);
+
+        AddToHomeScreenMockState *mockState = new AddToHomeScreenMockState(machine);
+
+        // create a transition to the new child state which will be triggered by
+        // an event with specified operation type
+        HsMenuEventTransition *newCollectionTransition = new HsMenuEventTransition(
+            HsMenuEvent::CreateCollection, allCollectionsState, mockState);
+
+        allCollectionsState->addTransition(newCollectionTransition);
+
+        allCollectionsState->scrollToBeginning();
+        allCollectionsState->stateEntered();
+
+        machine->start();
+        qApp->sendPostedEvents();
+
+        allCollectionsState->createNewCollection();
+        qApp->sendPostedEvents();
+        QVERIFY(mockState->enteredValue());
+        qApp->removePostedEvents(0);
+        machine->stop();
+        delete machine;
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::createArrangeCollection()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsMenuViewBuilder builder;
+        HsMenuModeWrapper menuMode;
+        HsMainWindowMock mainWindow;
+        QStateMachine *machine = new QStateMachine(0);
+        HsAllCollectionsState *allCollectionsState =
+            new HsAllCollectionsState(builder, menuMode, mainWindow, machine);
+
+        machine->setInitialState(allCollectionsState);
+
+        AddToHomeScreenMockState *mockState = new AddToHomeScreenMockState(machine);
+
+        // create a transition to the new child state which will be triggered by
+        // an event with specified operation type
+        HsMenuEventTransition *transition = new HsMenuEventTransition(
+            HsMenuEvent::ArrangeAllCollections, allCollectionsState, mockState);
+
+        allCollectionsState->addTransition(transition);
+
+        allCollectionsState->scrollToBeginning();
+        allCollectionsState->stateEntered();
+        machine->start();
+        qApp->sendPostedEvents();
+
+        allCollectionsState->createArrangeCollection();
+        qApp->sendPostedEvents();
+
+        QVERIFY(mockState->enteredValue());
+        qApp->removePostedEvents(0);
+        machine->stop();
+
+        delete machine;
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::listItemActivated()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsMenuViewBuilder builder;
+        HsMenuModeWrapper menuMode;
+        HsMainWindowMock mainWindow;
+        QStateMachine *machine = new QStateMachine(0);
+        QState *parent = new QState(machine);
+
+        HsAllCollectionsState *allCollectionsState =
+            new HsAllCollectionsState(builder, menuMode, mainWindow, parent);
+
+        allCollectionsState->scrollToBeginning();
+        allCollectionsState->stateEntered();
+
+        QVERIFY(allCollectionsState->mModel != NULL);
+        QModelIndex applicationModelIndex =
+            allCollectionsState->mModel->index(0, 0);
+
+        allCollectionsState->openCollection(applicationModelIndex);
+
+        allCollectionsState->stateExited();
+
+        qApp->processEvents();
+        delete machine;
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+
+void MenuStatesTest::listItemLongPressed()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        QScopedPointer<HbMainWindow> wind(new HbMainWindow);
+
+        HsMenuViewBuilder builder;
+        HsMenuModeWrapper menuMode;
+        HsMainWindowMock mainWindow;
+        
+        QStateMachine *machine = new QStateMachine(0);
+        QState *parent = new QState(machine);
+
+        HsAllCollectionsState *allCollectionsState =
+            new HsAllCollectionsState(builder, menuMode, mainWindow, parent);
+
+        allCollectionsState->scrollToBeginning();
+        allCollectionsState->stateEntered();
+
+        HbAbstractViewItem *item = new HbListViewItem;
+
+        item->setModelIndex(allCollectionsState->mModel->index(0,0));        
+
+        allCollectionsState->showContextMenu(item ,
+                QPointF(50,50));
+
+        uint flags = allCollectionsState->mModel->data(allCollectionsState->mModel->index(0, 0),
+                                          CaItemModel::FlagsRole).value<EntryFlags> ();
+
+        if (flags & RemovableEntryFlag) {
+            QCOMPARE(allCollectionsState->mContextMenu->actions().length(), 4);
+        } else {
+            QCOMPARE(allCollectionsState->mContextMenu->actions().length(), 2);
+        }
+
+
+        QVERIFY(allCollectionsState->mContextMenu->testAttribute(Qt::WA_DeleteOnClose));
+
+        qApp->processEvents();
+
+        allCollectionsState->stateExited();
+
+        qApp->processEvents();
+        delete machine;
+        delete item;
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::contextMenuAction()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        QScopedPointer<QStateMachine> machine(new QStateMachine(0));
+
+        QScopedPointer<HbMainWindow> window(new HbMainWindow);
+
+        HsMenuViewBuilder builder;
+        HsMenuModeWrapper menuMode;
+        HsMainWindow mainWindow;
+
+        QScopedPointer<HsAllCollectionsState> allCollectionsState (new HsAllCollectionsState(
+            builder, menuMode, mainWindow, machine.data()));
+
+
+        // we will start from all apps view
+        machine->setInitialState(allCollectionsState.data());
+
+        // create a state which is to be reached when add-to-home-screen
+        // event is triggered
+        AddToHomeScreenMockState addToHomeScreenState(machine.data());
+
+        // create a transition to the new child state which will be triggered by
+        // an event with specified operation type
+        HsMenuEventTransition addToHomeScreenTransition(
+            HsMenuEvent::AddToHomeScreen, allCollectionsState.data(), &addToHomeScreenState);
+
+        // prepare the state graph
+        allCollectionsState->addTransition(&addToHomeScreenTransition);
+
+        // MockModel object is to provide CaEntry representing widget
+        // the object will be deleted on destruction of allAppsState
+        MockModel *allCollectionsMockModel = new MockModel;
+        allCollectionsState->mModel = allCollectionsMockModel;
+        allCollectionsState->mMenuView->setModel(allCollectionsMockModel);
+
+        machine->start();
+        qApp->sendPostedEvents();
+
+        HbAction *action = new HbAction("test_addtohomescreen");
+        action->setData(Hs::AddToHomeScreenContextAction);
+        allCollectionsState->mContextModelIndex = allCollectionsMockModel->fixedIndex();
+
+        allCollectionsState->contextMenuAction(action);
+
+        qApp->sendPostedEvents();
+
+        QVERIFY(addToHomeScreenState.enteredValue());
+
+        machine->stop();
+        qApp->removePostedEvents(0);
+
+        allCollectionsState->stateExited();
+
+        qApp->processEvents();
+
+        delete action;
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+
+void MenuStatesTest::addModeSlots()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsMenuViewBuilder builder;    
+        QScopedPointer<QStateMachine> machine(new QStateMachine(0));
+        HsMenuModeWrapper menuMode;
+        HsMainWindowMock mainWindow;
+        menuMode.setHsMenuMode(Hs::AddHsMenuMode);
+        QScopedPointer<HsAllCollectionsState> allCollectionsState(
+                    new HsAllCollectionsState(builder, menuMode, mainWindow, machine.data()));
+
+        {
+            // we will start from all apps view
+            machine->setInitialState(allCollectionsState.data());
+
+            // create a state which is to be reached when add-to-home-screen
+            // event is triggered
+            AddToHomeScreenMockState addToHomeScreenState(machine.data());
+
+            // create a transition to the new child state which will be triggered by
+            // an event with specified operation type
+            HsMenuEventTransition addToHomeScreenTransition(
+                HsMenuEvent::AddToHomeScreen, allCollectionsState.data(), &addToHomeScreenState);
+
+            // prepare the state graph
+            allCollectionsState->addTransition(&addToHomeScreenTransition);
+
+            // MockModel object is to provide CaEntry representing widget
+            // the object will be deleted on destruction of allAppsState
+            allCollectionsState->scrollToBeginning();
+            allCollectionsState->stateEntered();
+
+
+            machine->start();
+            qApp->sendPostedEvents();
+			
+            allCollectionsState->addActivated(allCollectionsState->mModel->index(0,0));
+            
+            qApp->sendPostedEvents();
+
+            QVERIFY(addToHomeScreenState.enteredValue());
+            machine->stop();
+            qApp->removePostedEvents(0);
+        }
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+#ifdef Q_OS_SYMBIAN
+void MenuStatesTest::openTaskSwitcher()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsMenuViewBuilder builder;
+        HsMenuModeWrapper menuMode;
+        HsMainWindowMock mainWindow;
+        QStateMachine *machine = new QStateMachine(0);
+        QState *parent = new QState(machine);
+        menuMode.setHsMenuMode(Hs::AddHsMenuMode);
+        HsAllCollectionsState *allCollectionsState =
+            new HsAllCollectionsState(builder, menuMode, mainWindow, parent);
+
+        QVERIFY(allCollectionsState->openTaskSwitcher());
+        delete machine;
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+#endif//Q_OS_SYMBIAN
+
+QTEST_MAIN(MenuStatesTest)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_allcollectionsstate/t_allcollectionsstate.pri	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,24 @@
+#
+# 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:
+#
+#Header files
+HEADERS += ./inc/*.h \
+		   ../inc/*.h \
+           ../../inc/*.h
+
+#Source files
+SOURCES += ./src/*.cpp \
+		   ../src/*.cpp \
+           ../../src/*.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_allcollectionsstate/t_allcollectionsstate.pro	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,76 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+TEMPLATE = app
+CONFIG += hb mobility
+MOBILITY = serviceframework
+
+include(../../../../common.pri)
+include(../../docml.pri)
+
+LIBS += -lhsdomainmodel
+LIBS += -lhsutils
+LIBS += -lhsmenuserviceprovider
+LIBS += -lcaclient
+
+QT += testlib \
+      xml \
+      sql
+
+DEFINES += MENUSTATES_UNITTEST
+
+coverage:DEFINES += COVERAGE_MEASUREMENT
+
+DEPENDPATH += .\
+              ./src \
+              ./inc \
+              ./../inc \
+              ../../src \
+              ../../inc
+              
+INCLUDEPATH += .\
+               ./inc \
+               ./../inc \
+               ../../inc \
+               ../../../hsmenuworkerstateplugin/inc \
+               ../../../../serviceproviders/hsmenuserviceprovider/inc \               
+               ../../../../hsutils/inc \
+               ../../../../hsdomainmodel/inc/
+               
+symbian {
+    for(docmlFile, docmlFiles): DOCML+=../../$$docmlFile
+    ### get rid of localization warnings
+    CONFIG -= hb
+    load(hb.prf)
+    CONFIG -= symbian_i18n
+    ###
+    TARGET.UID3 = 0x2002DCEE
+    TARGET.CAPABILITY = CAP_APPLICATION AllFiles
+    TARGET.EPOCSTACKSIZE = 0x14000 // 80kB
+    TARGET.EPOCHEAPSIZE = 0x20000 0x1000000 // 128kB - 48MB
+    CONFIG += symbian_test
+    coverage: CONFIG -= symbian_test
+    exists($${EPOCROOT}epoc32/include/platform/mw/XQSettingsManager) {
+        LIBS += -lxqsettingsmanager
+        
+    MMP_RULES += SMPSAFE
+    }    
+}
+
+RESOURCES += ../../$$qrcFile
+
+include(t_allcollectionsstate.pri)
+                    
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_applibrarystate/inc/t_applibrarystate.h	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,67 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Tests for hsapplibrarystateplugin.
+*
+*/
+
+#ifndef T_ALLCOLLECTIONSSTATE_H
+#define T_ALLCOLLECTIONSSTATE_H
+
+#include <QtTest/QtTest>
+
+
+class HbMainWindow;
+class HbAbstractViewItem;
+class QStateMachine;
+
+/**
+* @test Test class for homescreen::hsutils modules.
+*/
+class MenuStatesTest : public QObject
+{
+    Q_OBJECT
+
+private slots:
+
+    /*
+    * Tests
+    */
+    // ApplicationLibraryState
+    void ApplicationLibraryState_construction();
+    void ApplicationLibraryState_backSteppingAction();
+    void ApplicationLibraryState_clearToolbarLatch();
+    void ApplicationLibraryState_historySlots();
+
+    //OviStore
+#ifdef Q_OS_SYMBIAN
+#ifdef QT_EXTENSIONS
+    void ApplicationLibraryState_oviStoreAction();
+    void OperatorHandler_icon();
+    void OperatorHandler_text();
+    void OperatorHandler_action();
+    void OperatorHandler_entry();
+    void OperatorHandler_noCrWriteAccess();
+    void OperatorHandler_storesPresent();
+    void OperatorHandler_first();
+    void OperatorHandler_type();
+    void OperatorHandler_createAction();
+#endif//NO_QT_EXTENSIONS
+#endif//Q_OS_SYMBIAN
+
+    //HsBaseViewState
+    void HsBaseViewState_createApplicationLaunchFailMessage();
+
+    void cleanup();
+};
+#endif // T_ALLCOLLECTIONSSTATE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_applibrarystate/src/t_applibrarystate.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,441 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Main test class for hsHomeScreenStatePlugin library.
+*
+*/
+
+#include <hbmainwindow.h>
+#include <hbinstance.h>
+#include <hbview.h>
+#include <hblistview.h>
+#include <hbaction.h>
+#include <hblistviewitem.h>
+#include <qscopedpointer>
+#include <hbmessagebox.h>
+
+#include "hsapplibrarystate.h"
+#include "hscollectionstate.h"
+#include "caentry.h"
+#include "caitemmodel.h"
+#include "hsmenuview.h"
+#include "hsmenuevent.h"
+#include "hsallcollectionsstate.h"
+#include "hsmenueventtransition.h"
+#include "hsallappsstate.h"
+#include "hsinstalledappsstate.h"
+#include "hsoperatorhandler_p.h"
+#include "hsoperatorhandler.h"
+#include "hsmenuservice.h"
+
+#include "t_hsaddtohomescreenmockstate.h"
+#include "t_hsmockmodel.h"
+#include "t_applibrarystate.h"
+
+#include "hsmenumodetransition.h"
+
+#ifdef QT_EXTENSIONS
+#include <XQSettingsManager>
+
+const int IncludeOperatorStore      = 0x00000001;
+const int RemoveOviStore            = 0x00000008;
+//const char *operatorStoreIconPath
+//        = "z:/private/20022F35/customsvg/operatorstore.svg";
+
+void MenuStatesTest::OperatorHandler_storesPresent()
+{
+    HsOperatorHandler oviHandler;
+    XQSettingsManager man;
+
+    bool value = oviHandler.m_q->storeValue(&man, IncludeOperatorStore);
+    oviHandler.m_q->mOperatorStorePresent = value;
+    QCOMPARE(oviHandler.operatorStorePresent(), value);
+
+    bool value1 = !oviHandler.m_q->storeValue(&man, RemoveOviStore);
+    oviHandler.m_q->mOviStorePresent = value1;
+    QCOMPARE(oviHandler.oviStorePresent(), value1);
+
+}
+
+void MenuStatesTest::OperatorHandler_first()
+{
+    HsOperatorHandler oviHandler;
+    XQSettingsManager man;
+
+    bool value = oviHandler.m_q->operatorStoreFirst(&man);
+    oviHandler.m_q->mOperatorStoreFirst = value;
+    QCOMPARE(oviHandler.operatorStoreFirst(), value);
+}
+
+void MenuStatesTest::OperatorHandler_type()
+{
+    HsOperatorHandler oviHandler;
+    XQSettingsManager man;
+
+    HsOperatorHandlerPrivate::HsStoreType value
+            = oviHandler.m_q->operatorStoreType(&man);
+    QVERIFY(value == HsOperatorHandlerPrivate::ApplicationType
+            || value == HsOperatorHandlerPrivate::UrlType
+            || value == HsOperatorHandlerPrivate::NoneType);
+}
+
+void MenuStatesTest::OperatorHandler_createAction()
+{
+    HsOperatorHandler oviHandler;
+    oviHandler.m_q->mIcon = HbIcon();
+    HbAction *action = oviHandler.prepareOperatorStoreAction(new HbAction);
+    QVERIFY(action->icon().isNull());
+}
+
+#endif//QT_EXTENSIONS
+
+
+
+
+class HsMainWindowMock : public HsMainWindow
+{
+    virtual void setCurrentView(HbView *view);
+
+};
+
+void HsMainWindowMock::setCurrentView(HbView *view)
+{
+    Q_UNUSED(view);
+    // do nothing
+}
+
+void MenuStatesTest::cleanup()
+{
+    qApp->processEvents();
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::ApplicationLibraryState_construction()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        QString qApplications(hbTrId("txt_applib_title_applications"));
+
+        QScopedPointer<HsAppLibraryState > appLibraryState(new HsAppLibraryState);
+
+        QCOMPARE(appLibraryState->mMenuViewBuilder.currentView()->title(),
+            qApplications);
+        QVERIFY(appLibraryState->mAllAppsState);
+        QVERIFY(appLibraryState->mAllCollectionsState);
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::ApplicationLibraryState_historySlots()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsAppLibraryState appLibrary;
+
+        appLibrary.allCollectionsStateEntered();
+        QCOMPARE(qobject_cast<QAbstractState *>(appLibrary.mAllCollectionsState),
+            appLibrary.mHistoryTransaction->targetState());
+        QCOMPARE(appLibrary.mInstalledAppsState->transitions().length(), 1);
+        QCOMPARE(appLibrary.mInstalledAppsState->transitions()[0]->sourceState(),
+            qobject_cast<QState *>(appLibrary.mInstalledAppsState));
+        QCOMPARE(appLibrary.mInstalledAppsState->transitions()[0]->targetState(),
+            qobject_cast<QAbstractState *>(appLibrary.mAllCollectionsState));
+
+        appLibrary.allAppsStateEntered();
+        QCOMPARE(qobject_cast<QAbstractState *>(appLibrary.mAllAppsState),
+            appLibrary.mHistoryTransaction->targetState());
+        QCOMPARE(appLibrary.mInstalledAppsState->transitions().length(), 1);
+        QCOMPARE(appLibrary.mInstalledAppsState->transitions()[0]->sourceState(),
+            qobject_cast<QState *>(appLibrary.mInstalledAppsState));
+        QCOMPARE(appLibrary.mInstalledAppsState->transitions()[0]->targetState(),
+            qobject_cast<QAbstractState *>(appLibrary.mAllAppsState));
+
+        appLibrary.collectionStateEntered();
+        QCOMPARE(appLibrary.mInstalledAppsState->transitions().length(), 1);
+        QCOMPARE(appLibrary.mInstalledAppsState->transitions()[0]->sourceState(),
+            qobject_cast<QState *>(appLibrary.mInstalledAppsState));
+        QCOMPARE(appLibrary.mInstalledAppsState->transitions()[0]->targetState(),
+            qobject_cast<QAbstractState *>(appLibrary.mCollectionState));
+
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::ApplicationLibraryState_backSteppingAction()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        QScopedPointer<HbMainWindow> wind(new HbMainWindow);
+        //create statemachine to perform transitions
+        QScopedPointer<QStateMachine> machine(new QStateMachine(0));
+
+        HsAppLibraryState *appLibrary = new HsAppLibraryState(machine.data());
+
+        machine->setInitialState(appLibrary);
+
+        machine->start();
+
+        qApp->sendPostedEvents();
+        //initiate transition from collection state
+        appLibrary->mCollectionState->openAppLibrary();
+
+        qApp->sendPostedEvents();
+
+        QVERIFY(appLibrary->mAllAppsState->mMenuView->view()->menu());
+        machine->stop();
+        qApp->removePostedEvents(0);
+        disconnect(appLibrary,SIGNAL(initialize()),this,SLOT(appLibraryEntered()));
+
+        qApp->processEvents();
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::ApplicationLibraryState_clearToolbarLatch()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsAppLibraryState appLibrary;
+        appLibrary.mMenuViewBuilder.allAppsAction()->setChecked(true);
+        appLibrary.mMenuViewBuilder.toolBarActionGroup()->checkedAction()->setChecked(true);
+        appLibrary.clearToolbarLatch();
+        QVERIFY(appLibrary.mMenuViewBuilder.toolBarActionGroup()->checkedAction() == NULL);
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+#ifdef QT_EXTENSIONS
+void MenuStatesTest::ApplicationLibraryState_oviStoreAction()
+{
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+    {
+        HsAppLibraryState appLibrary;
+        QVERIFY(appLibrary.oviStoreAction()==0);
+    }
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::OperatorHandler_icon()
+{
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+    {
+        HsOperatorHandler oviHandler;
+        XQSettingsManager man;
+        HbIcon testIcon = oviHandler.m_q->createIcon(&man);
+        oviHandler.m_q->mIcon = testIcon;
+        QCOMPARE(oviHandler.icon(), testIcon);
+    }
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::OperatorHandler_text()
+{
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+    {
+        HsOperatorHandler oviHandler;
+        XQSettingsManager man;
+
+        QString testText = oviHandler.m_q->operatorStoreTitle(&man);
+        oviHandler.m_q->mOperatorStoreTitle = testText;
+        QCOMPARE(oviHandler.text(), testText);
+    }
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::OperatorHandler_action()
+{
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+    {
+        HsOperatorHandler oviHandler;
+        HbIcon testIcon;
+        oviHandler.m_q->mIcon = testIcon;
+        oviHandler.m_q->mOperatorEntry = new CaEntry;;
+        QCOMPARE(oviHandler.icon(), testIcon);
+        oviHandler.action();
+        QCOMPARE(oviHandler.icon(), testIcon);
+    }
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::OperatorHandler_entry()
+{
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+    {
+        HsOperatorHandler oviHandler;
+        XQSettingsManager man;
+
+        CaEntry *testAppEntry = oviHandler.m_q->createAppEntry(&man);
+        oviHandler.m_q->mOperatorEntry = testAppEntry;
+        //if entry is NULL then tahts because there were no key in CR
+        //if it is not NULL then it must be application
+        QVERIFY(!testAppEntry || testAppEntry->entryTypeName() ==
+                Hs::applicationTypeName);
+
+        CaEntry *testUrlEntry = oviHandler.m_q->createUrlEntry(&man);
+        oviHandler.m_q->mOperatorEntry = testUrlEntry;
+        //similar as for application above
+        QVERIFY(!testUrlEntry || testUrlEntry->entryTypeName() ==
+                Hs::urlTypeName);
+
+    }
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::OperatorHandler_noCrWriteAccess()
+{
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+    {
+//        XQSettingsManager *crManager = new XQSettingsManager;
+//        XQCentralRepositorySettingsKey urlKey(AppLibUid, OperatorUrl);
+//        QVariant urlVarian = crManager->readItemValue(
+//                                 urlKey, XQSettingsManager::TypeString);
+//        QString dbg = urlVarian.toString();
+//        bool result = crManager->writeItemValue(urlKey, QVariant("test"));
+//        QCOMPARE(result, false);
+    }
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+}
+#endif//QT_EXTENSIONS
+
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::HsBaseViewState_createApplicationLaunchFailMessage()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsMenuViewBuilder menuViewBuilder;
+        HsMenuModeWrapper menuMode;
+        HsMainWindow mainWindow;
+
+        HsAllAppsState viewState(menuViewBuilder, menuMode, mainWindow);
+
+        int errCode = -333;
+        int dummyItemId = 555;
+        viewState.createApplicationLaunchFailMessage(errCode,dummyItemId);
+        QVERIFY(!viewState.mApplicationLaunchFailMessage.isNull());
+
+        QVERIFY(viewState.mApplicationLaunchFailMessage->close());
+        QTest::qWait(2000);
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+
+QTEST_MAIN(MenuStatesTest)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_applibrarystate/t_applibrarystate.pri	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,24 @@
+#
+# 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:
+#
+#Header files
+HEADERS += ./inc/*.h \
+		   ../inc/*.h \
+           ../../inc/*.h
+
+#Source files
+SOURCES += ./src/*.cpp \
+		   ../src/*.cpp \
+           ../../src/*.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_applibrarystate/t_applibrarystate.pro	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,76 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+TEMPLATE = app
+CONFIG += hb mobility
+MOBILITY = serviceframework
+
+include(../../../../common.pri)
+include(../../docml.pri)
+
+LIBS += -lhsdomainmodel
+LIBS += -lhsutils
+LIBS += -lhsmenuserviceprovider
+LIBS += -lcaclient
+
+QT += testlib \
+      xml \
+      sql
+
+DEFINES += MENUSTATES_UNITTEST
+
+coverage:DEFINES += COVERAGE_MEASUREMENT
+
+DEPENDPATH += .\
+              ./src \
+              ./inc \
+              ../inc \
+              ../../src \
+              ../../inc
+              
+INCLUDEPATH += .\
+               ./inc \
+               ../inc \
+               ../../inc \
+               ../../../hsmenuworkerstateplugin/inc \
+               ../../../../serviceproviders/hsmenuserviceprovider/inc \               
+               ../../../../hsutils/inc \
+               ../../../../hsdomainmodel/inc/
+               
+symbian {
+    for(docmlFile, docmlFiles): DOCML+=../../$$docmlFile
+    ### get rid of localization warnings
+    CONFIG -= hb
+    load(hb.prf)
+    CONFIG -= symbian_i18n
+    ###
+    TARGET.UID3 = 0x2002DCF0
+    TARGET.CAPABILITY = CAP_APPLICATION AllFiles
+    TARGET.EPOCSTACKSIZE = 0x14000 // 80kB
+    TARGET.EPOCHEAPSIZE = 0x20000 0x1000000 // 128kB - 16MB
+    CONFIG += symbian_test
+    coverage: CONFIG -= symbian_test
+    exists($${EPOCROOT}epoc32/include/platform/mw/XQSettingsManager) {
+        LIBS += -lxqsettingsmanager
+        
+    MMP_RULES += SMPSAFE
+    }    
+}
+
+RESOURCES += ../../$$qrcFile
+
+include(t_applibrarystate.pri)
+                   
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_collectionsstate/inc/t_collectionsstate.h	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,69 @@
+/*
+* 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:  Tests for hsapplibrarystateplugin.
+*
+*/
+
+#ifndef T_COLLECTIONSSTATE_H
+#define T_COLLECTIONSSTATE_H
+
+#include <QtTest/QtTest>
+#include <HbMainWindow>
+
+class HbAbstractViewItem;
+class QStateMachine;
+
+/**
+* @test Test class for homescreen::hsutils modules.
+*/
+class MenuStatesTest : public QObject
+{
+    Q_OBJECT
+
+private slots:
+
+    /*
+    * Tests
+    */
+    void construction();
+    void updateLabel();
+
+    void contextMenuConstruct();
+    void contextMenuConstructNonEmptyCollection();
+    void addAppsAction();
+    void renameAction();
+    void deleteAppsAction();
+    void addElementToHomeScreen();
+    void addCollectionShortcutToHomeScreenAction();
+    void latestOnTopMenuAction();
+    void oldestOnTopMenuAction();
+    void createArrangeCollection();
+#ifdef Q_OS_SYMBIAN
+    void openTaskSwitcher();
+#endif//Q_OS_SYMBIAN
+    void listItemActivated();
+    void listItemLongPressed();
+    void contextMenuAction();
+    void disableSearchAction();
+
+
+    void init();
+    /**
+     * cleanup
+     */
+    void cleanup();
+private:
+    HbMainWindow *mWindow;
+};
+#endif // T_COLLECTIONSSTATE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_collectionsstate/src/t_collectionsstate.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,1093 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Main test class for hsHomeScreenStatePlugin library.
+*
+*/
+
+#include <hbmainwindow.h>
+#include <hbinstance.h>
+#include <hbview.h>
+#include <hbmenu.h>
+#include <hblabel.h>
+#include <hblistview.h>
+#include <hblistviewitem.h>
+#include <hbgroupbox.h>
+#include <HbAction>
+#include <HbPushButton>
+#include <qscopedpointer>
+
+#include "caentry.h"
+#include "caitemmodel.h"
+#include "hsmenuviewbuilder.h"
+#include "hsmenumodewrapper.h"
+#include "hsmenuevent.h"
+#include "hsmenueventtransition.h"
+#include "hscollectionstate.h"
+#include "hsmainwindow.h"
+
+#include "t_hsaddtohomescreenmockstate.h"
+#include "t_hsmockmodel.h"
+#include "t_collectionsstate.h"
+
+Q_DECLARE_METATYPE(Hs::HsSortAttribute)
+
+
+class HsMainWindowMock : public HsMainWindow
+{
+    virtual void setCurrentView(HbView *view);
+
+};
+
+void HsMainWindowMock::setCurrentView(HbView *view)
+{
+    Q_UNUSED(view);
+    // do nothing
+}
+
+void MenuStatesTest::init()
+{
+}
+
+void MenuStatesTest::cleanup()
+{
+    qApp->processEvents();
+}
+
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::construction()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsMenuViewBuilder builder;
+        HsMenuModeWrapper menuMode;
+        HsMainWindowMock mainWindow;
+        QScopedPointer<QState> parent(new QState);
+        parent->setObjectName(tr("testName1"));
+
+        HsCollectionState *collectionState =
+            new HsCollectionState(builder, menuMode, mainWindow, parent.data());
+
+        QCOMPARE(collectionState->mSortAttribute,
+                 Hs::LatestOnTopHsSortAttribute);
+        QCOMPARE(collectionState->mCollectionId, -1);
+        QCOMPARE(collectionState->mModel, static_cast<HsMenuItemModel *>(0));
+        QCOMPARE(collectionState->objectName(),
+                 tr("testName1/collectionstate"));
+
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::listItemActivated()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsMenuViewBuilder builder;
+        HsMenuModeWrapper menuMode;
+        HsMainWindowMock mainWindow;
+
+        QScopedPointer<QStateMachine> machine(new QStateMachine(0));
+        QState *parent = new QState(machine.data());
+
+        const QString collectionName("testCollection" +
+                                     QDateTime::currentDateTime().
+                                     toString("ddmmyyyy_hh_mm_ss_zzz"));
+        const int collectionId = HsMenuService::createCollection(collectionName);
+
+        HsCollectionState *collectionState =
+            new HsCollectionState(builder, menuMode, mainWindow, parent);
+
+        collectionState->mCollectionId = collectionId;
+
+        HsMenuItemModel *const itemModel =
+            HsMenuService::getAllApplicationsModel(Hs::AscendingNameHsSortAttribute);
+
+        QModelIndex applicationModelIndex = itemModel->index(1, 0);
+
+        QList<int> appList;
+
+        appList << itemModel->data(applicationModelIndex, CaItemModel::IdRole).toInt();
+
+        HsMenuService::addApplicationsToCollection(appList, collectionId);
+
+        collectionState->stateEntered();
+
+        QVERIFY(collectionState->mModel != NULL);
+
+        collectionState->launchItem(applicationModelIndex);
+
+        collectionState->stateExited();
+
+        QTest::qWait(3000);
+
+        //TODO: made some utils to closing application
+        //HsMenuService::executeAction(appList.at(0), QString("close"));
+
+        // cleanup
+        HsMenuService::removeCollection(collectionId);
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::listItemLongPressed()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        QScopedPointer<HbMainWindow> wind(new HbMainWindow);
+
+        HsMenuViewBuilder builder;
+        HsMenuModeWrapper menuMode;
+        HsMainWindow mainWindow;
+
+
+        QScopedPointer<QStateMachine> machine(new QStateMachine(0));
+        QState *parent(new QState(machine.data()));
+
+        const QString collectionName("testCollection" +
+                                     QDateTime::currentDateTime().
+                                     toString("ddmmyyyy_hh_mm_ss_zzz"));
+        const int collectionId = HsMenuService::createCollection(collectionName);
+
+        HsMenuItemModel *appsModel = HsMenuService::getAllApplicationsModel();
+        QList<int> list;
+        list << appsModel->data(appsModel->index(0),CaItemModel::IdRole).toInt();
+        HsMenuService::addApplicationsToCollection(list,collectionId);
+        delete appsModel;
+
+        HsCollectionState *collectionState = new HsCollectionState(builder, menuMode,
+                mainWindow, parent);
+        collectionState->mCollectionId = collectionId;
+        collectionState->mCollectionType = "collection";
+
+        collectionState->stateEntered();
+
+        QScopedPointer<HbAbstractViewItem> item(new HbListViewItem);
+        QModelIndex itemModelIndex = collectionState->mModel->index(0, 0);
+        item->setModelIndex(itemModelIndex);
+
+        collectionState->showContextMenu(item.data(), QPointF(50,50));
+
+        int numberOfActions = 3;
+
+        EntryFlags rootFlags =
+            collectionState->mModel->root().data(CaItemModel::FlagsRole).value<
+            EntryFlags> ();
+        if (rootFlags & RemovableEntryFlag) {
+            numberOfActions++;
+        }
+
+        EntryFlags flags = item->modelIndex().data(CaItemModel::FlagsRole).value<
+                           EntryFlags> ();
+        if ((flags & RemovableEntryFlag)) {
+            numberOfActions++;
+        }
+
+        QSharedPointer<const CaEntry> entry = collectionState->mModel->entry(item->modelIndex());
+        if (!(entry->attribute(Hs::appSettingsPlugin).isEmpty())) {
+            numberOfActions++;
+        }
+
+        QCOMPARE(collectionState->mContextMenu->actions().length(), numberOfActions);
+        QVERIFY(collectionState->mContextMenu->testAttribute(Qt::WA_DeleteOnClose));
+
+        collectionState->stateExited();
+
+        qApp->processEvents();
+
+        // cleanup
+        if (!list.isEmpty()) {
+            for (int i=0; i<list.count(); i++) {
+                HsMenuService::removeApplicationFromCollection(list[i],collectionId);
+            }
+        }
+        HsMenuService::removeCollection(collectionId);
+        wind->removeView(builder.currentView());
+
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::contextMenuAction()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsMenuViewBuilder builder;
+        HsMenuModeWrapper menuMode;
+        HsMainWindowMock mainWindow;
+
+        QScopedPointer<QStateMachine> machine(new QStateMachine(0));
+
+        // we will start from collection view
+
+        const QString collectionName("testCollection" +
+                                     QDateTime::currentDateTime().toString("ddmmyyyy_hh_mm_ss_zzz"));
+        const int collectionId = HsMenuService::createCollection(collectionName);
+
+        HsMenuItemModel *allAppsModel = HsMenuService::getAllApplicationsModel();
+        QVERIFY(allAppsModel->rowCount() >= 1);
+        QModelIndex appIndex = allAppsModel->index(0, 0);
+
+        const int appId = allAppsModel->data(appIndex, CaItemModel::IdRole).toInt();
+        QList<int> appIdList;
+        appIdList << appId;
+
+        HsCollectionState *collectionState = new HsCollectionState(builder,
+                menuMode, mainWindow, machine.data());
+
+        collectionState->mCollectionId = collectionId;
+        HsMenuService::addApplicationsToCollection(appIdList, collectionId);
+
+        // create a state which is to be reached when add-to-home-screen
+        // event is triggered
+        AddToHomeScreenMockState *addToHomeScreenState =
+            new AddToHomeScreenMockState(machine.data());
+
+        // create a transition to the new child state which will be triggered by
+        // an event with specified operation type
+        HsMenuEventTransition addToHomeScreenTransition(
+            HsMenuEvent::AddToHomeScreen, collectionState, addToHomeScreenState);
+
+        // prepare the state graph
+        collectionState->addTransition(&addToHomeScreenTransition);
+
+        machine->setInitialState(collectionState);
+        machine->start();
+        qApp->sendPostedEvents();
+
+        HbAction *action = new HbAction("test_addtohomescreen");
+        action->setData(Hs::AddToHomeScreenContextAction);
+
+        collectionState->mContextModelIndex = collectionState->mModel->index(0,0);
+
+        collectionState->contextMenuAction(action);
+
+        qApp->sendPostedEvents();
+        qApp->processEvents();
+
+        QVERIFY(addToHomeScreenState->enteredValue());
+
+        machine->stop();
+
+        // cleanup
+        delete action;
+        HsMenuService::removeCollection(collectionId);
+
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::contextMenuConstruct()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsMenuViewBuilder menuView;
+        HsMenuModeWrapper menuMode;
+        HsMainWindowMock mainWindow;
+
+        QScopedPointer<QState> parent(new QState);
+
+        const QString collectionName("testCollection" +
+                                     QDateTime::currentDateTime().
+                                     toString("ddmmyyyy_hh_mm_ss_zzz"));
+
+        const int collectionId = HsMenuService::createCollection(collectionName);
+
+        HsCollectionState *collectionState =
+            new HsCollectionState(menuView, menuMode, mainWindow, parent.data());
+
+        collectionState->mCollectionId = collectionId;
+
+        collectionState->stateEntered();
+
+        qApp->processEvents();
+
+        int actionsCount(
+            collectionState->mMenuView->view()->menu()->actions().count());
+        QCOMPARE(actionsCount , 5);
+        collectionState->stateExited();
+
+        // cleanup
+        HsMenuService::removeCollection(collectionId);
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::contextMenuConstructNonEmptyCollection()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsMenuViewBuilder menuView;
+        HsMenuModeWrapper menuMode;
+        HsMainWindowMock mainWindow;
+
+        QScopedPointer<QState> parent(new QState);
+
+        const QString collectionName("testCollection" +
+                                     QDateTime::currentDateTime().
+                                     toString("ddmmyyyy_hh_mm_ss_zzz"));
+
+        const int collectionId = HsMenuService::createCollection(collectionName);
+
+        HsCollectionState *collectionState =
+            new HsCollectionState(menuView, menuMode, mainWindow, parent.data());
+
+        collectionState->mCollectionId = collectionId;
+        QVERIFY(HsMenuService::addApplicationsToCollection(QList<int>()<<1, collectionId));
+
+        collectionState->stateEntered();
+
+        qApp->processEvents();
+
+        const int actionsCount(
+            collectionState->mMenuView->view()->menu()->actions().count());
+        // Arrange is available inside options menu.
+        QCOMPARE(actionsCount , 6);
+        collectionState->stateExited();
+
+        // cleanup
+        HsMenuService::removeCollection(collectionId);
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+
+void MenuStatesTest::addAppsAction()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsMenuViewBuilder builder;
+        HsMenuModeWrapper menuMode;
+        HsMainWindowMock mainWindow;
+
+        QScopedPointer<QStateMachine> machine(new QStateMachine(0));
+
+        const QString collectionName("testCollection" +
+                                     QDateTime::currentDateTime().
+                                     toString("ddmmyyyy_hh_mm_ss_zzz"));
+
+        const int collectionId =
+            HsMenuService::createCollection(collectionName);
+
+        HsCollectionState *collectionState =
+            new HsCollectionState(builder, menuMode, mainWindow, machine.data());
+
+        collectionState->mCollectionId = collectionId;
+
+        AddToHomeScreenMockState *mockState =
+            new AddToHomeScreenMockState(machine.data());
+
+        HsMenuEventTransition transition(
+            HsMenuEvent::AddAppsToCollection, collectionState, mockState);
+
+        collectionState->addTransition(&transition);
+
+        machine->setInitialState(collectionState);
+        machine->start();
+
+        qApp->sendPostedEvents();
+        qApp->processEvents();
+
+        collectionState->addAppsAction();
+
+        qApp->sendPostedEvents();
+        qApp->processEvents();
+
+        QVERIFY(mockState->enteredValue());
+
+        machine->stop();
+
+        // cleanup
+        HsMenuService::removeCollection(collectionId);
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+void MenuStatesTest::renameAction()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsMenuViewBuilder builder;
+        HsMenuModeWrapper menuMode;
+        HsMainWindowMock mainWindow;
+
+        QScopedPointer<QStateMachine> machine(new QStateMachine(0));
+
+        const QString collectionName("testCollection" +
+                                     QDateTime::currentDateTime().
+                                     toString("ddmmyyyy_hh_mm_ss_zzz"));
+
+        const int collectionId = HsMenuService::createCollection(collectionName);
+
+        HsCollectionState *collectionState =
+            new HsCollectionState(builder, menuMode, mainWindow, machine.data());
+
+
+        collectionState->mCollectionId = collectionId;
+
+        AddToHomeScreenMockState *mockState =
+            new AddToHomeScreenMockState(machine.data());
+
+        HsMenuEventTransition transition(
+            HsMenuEvent::RenameCollection, collectionState, mockState);
+
+        collectionState->addTransition(&transition);
+
+        machine->setInitialState(collectionState);
+
+        machine->start();
+
+        qApp->sendPostedEvents();
+
+        collectionState->renameAction();
+
+        qApp->sendPostedEvents();
+
+        QVERIFY(mockState->enteredValue());
+
+        machine->stop();
+
+        // cleanup
+        HsMenuService::removeCollection(collectionId);
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+
+void MenuStatesTest::deleteAppsAction()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsMenuViewBuilder builder;
+        HsMenuModeWrapper menuMode;
+        HsMainWindowMock mainWindow;
+
+        QScopedPointer<QStateMachine> machine(new QStateMachine(0));
+
+        const QString collectionName("testCollection" +
+                                     QDateTime::currentDateTime().
+                                     toString("ddmmyyyy_hh_mm_ss_zzz"));
+
+        const int collectionId = HsMenuService::createCollection(collectionName);
+
+        HsCollectionState *collectionState =
+            new HsCollectionState(builder, menuMode, mainWindow, machine.data());
+
+        collectionState->mCollectionId = collectionId;
+
+        machine->setInitialState(collectionState);
+
+        AddToHomeScreenMockState *mockState =
+            new AddToHomeScreenMockState(machine.data());
+
+        HsMenuEventTransition transition(
+            HsMenuEvent::DeleteCollection, collectionState, mockState);
+
+        collectionState->addTransition(&transition);
+
+        machine->setInitialState(collectionState);
+        machine->start();
+        qApp->sendPostedEvents();
+
+        collectionState->deleteAction();
+
+        qApp->sendPostedEvents();
+
+        QVERIFY(mockState->enteredValue());
+
+        machine->stop();
+
+        // cleanup
+        HsMenuService::removeCollection(collectionId);
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+void MenuStatesTest::updateLabel()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsMenuViewBuilder builder;
+        HsMenuModeWrapper menuMode;
+        HsMainWindowMock mainWindow;
+
+        QScopedPointer<QStateMachine> machine(new QStateMachine(0));
+        QState *rootState = new QState(machine.data());
+        machine->setInitialState(rootState);
+
+        const QString collectionName("testCollection" +
+                                     QDateTime::currentDateTime().
+                                     toString("ddmmyyyy_hh_mm_ss_zzz"));
+
+        const int collectionId =
+            HsMenuService::createCollection(collectionName);
+
+        HsCollectionState *collectionState =
+            new HsCollectionState(builder, menuMode, mainWindow, rootState);
+
+        collectionState->mCollectionId = collectionId;
+
+        collectionState->mModel =
+            static_cast<HsMenuItemModel *>(
+                HsMenuService::getCollectionModel(collectionState->mCollectionId,
+                        collectionState->mSortAttribute));
+
+        const QString label1 = collectionState->mModel->root().data(
+                                   Qt::DisplayRole).toString();
+
+        const QString newName(label1 +
+                              QDateTime::currentDateTime().
+                              toString("ddmmyyyy_hh_mm_ss_zzz"));
+
+        const bool renamed = HsMenuService::renameCollection(
+                                 collectionState->mCollectionId, newName);
+
+        QVERIFY(renamed);
+
+        QTest::qWait(3000);
+
+        collectionState->updateLabel();
+
+        const QString label2 = builder.currentViewLabel()->heading();
+
+        QCOMPARE(label2, newName);
+
+        QVERIFY(HsMenuService::renameCollection(collectionState->mCollectionId, label1));
+
+        // cleanup
+        HsMenuService::removeCollection(collectionId);
+    }
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::addElementToHomeScreen()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsMenuViewBuilder builder;
+        HsMenuModeWrapper menuMode;
+        HsMainWindowMock mainWindow;
+
+        QScopedPointer<QStateMachine> machine(new QStateMachine(0));
+
+        const QString collectionName("testCollection" +
+                                     QDateTime::currentDateTime().
+                                     toString("ddmmyyyy_hh_mm_ss_zzz"));
+
+        const int collectionId = HsMenuService::createCollection(collectionName);
+        HsMenuItemModel *allAppsModel = HsMenuService::getAllApplicationsModel();
+        QVERIFY(allAppsModel->rowCount() >= 1);
+        QModelIndex appIndex = allAppsModel->index(0, 0);
+
+        const int appId = allAppsModel->data(appIndex, CaItemModel::IdRole).toInt();
+        QList<int> appIdList;
+        appIdList << appId;
+
+        HsCollectionState *collectionState =
+            new HsCollectionState(builder, menuMode, mainWindow, machine.data());
+        collectionState->mCollectionId = collectionId;
+
+        HsMenuService::addApplicationsToCollection(appIdList, collectionId);
+
+        // create a state which is to be reached when add-to-home-screen
+        // event is triggered
+        AddToHomeScreenMockState *addToHomeScreenState =
+            new AddToHomeScreenMockState(machine.data());
+
+        // create a transition to the new child state which will be triggered by
+        // an event with specified operation type
+        HsMenuEventTransition addToHomeScreenTransition(
+            HsMenuEvent::AddToHomeScreen, collectionState, addToHomeScreenState);
+
+        // prepare the state graph
+        collectionState->addTransition(&addToHomeScreenTransition);
+
+        machine->setInitialState(collectionState);
+        machine->start();
+        qApp->processEvents();
+
+        const QModelIndex idx = collectionState->mModel->index(0);
+
+        collectionState->addToHomeScreen(idx.data(CaItemModel::IdRole).toInt());
+
+        qApp->processEvents();
+
+        QVERIFY(addToHomeScreenState->enteredValue());
+
+        machine->stop();
+
+        // cleanup
+        if (!appIdList.isEmpty()) {
+            for (int i=0; i<appIdList.count(); i++) {
+                HsMenuService::removeApplicationFromCollection(appIdList[i],collectionId);
+            }
+        }
+        HsMenuService::removeCollection(collectionId);
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::addCollectionShortcutToHomeScreenAction()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsMenuViewBuilder builder;
+        HsMenuModeWrapper menuMode;
+        HsMainWindowMock mainWindow;
+
+        QScopedPointer<QStateMachine> machine(new QStateMachine(0));
+
+        // we will start from collection view
+
+        const QString collectionName("testCollection" +
+                                     QDateTime::currentDateTime().toString("ddmmyyyy_hh_mm_ss_zzz"));
+
+        const int collectionId = HsMenuService::createCollection(collectionName);
+
+        HsCollectionState *collectionState = new HsCollectionState(builder,
+                menuMode, mainWindow, machine.data());
+        collectionState->mCollectionId = collectionId;
+
+        // create a state which is to be reached when add-to-home-screen
+        // event is triggered
+        AddToHomeScreenMockState *addToHomeScreenState =
+            new AddToHomeScreenMockState(machine.data());
+
+        // create a transition to the new child state which will be triggered by
+        // an event with specified operation type
+        HsMenuEventTransition addToHomeScreenTransition(
+            HsMenuEvent::AddToHomeScreen, collectionState, addToHomeScreenState);
+
+        // prepare the state graph
+        collectionState->addTransition(&addToHomeScreenTransition);
+
+
+        machine->setInitialState(collectionState);
+        machine->start();
+        qApp->sendPostedEvents();
+
+        collectionState->addCollectionShortcutToHomeScreenAction();
+        qApp->sendPostedEvents();
+
+        QVERIFY(addToHomeScreenState->enteredValue());
+
+        // cleanup
+        HsMenuService::removeCollection(collectionId);
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::latestOnTopMenuAction()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsMenuViewBuilder builder;
+        HsMenuModeWrapper menuMode;
+        HsMainWindowMock mainWindow;
+
+        QScopedPointer<QState> parent(new QState);
+        parent->setObjectName(tr("testName1"));
+
+        const QString collectionName("testCollection" +
+                                     QDateTime::currentDateTime().toString("ddmmyyyy_hh_mm_ss_zzz"));
+        const int collectionId = HsMenuService::createCollection(collectionName);
+
+        HsCollectionState *collectionState = new HsCollectionState(
+            builder, menuMode, mainWindow, parent.data());
+        collectionState->mCollectionId = collectionId;
+
+        collectionState->mSortAttribute =
+            Hs::OldestOnTopHsSortAttribute;
+
+        MockModel *collectionModel = new MockModel;
+        collectionState->mModel = collectionModel;
+        collectionState->mMenuView->setModel(collectionModel);
+
+        qRegisterMetaType<Hs::HsSortAttribute>(
+            "Hs::HsSortAttribute");
+        collectionState->mCollectionType = Hs::collectionDownloadedTypeName;
+        collectionState->setMenuOptions();
+        QVERIFY(collectionModel->rowCount() > 1 );
+        QVERIFY(collectionState->mLatestOnTopMenuAction != 0);
+        QVERIFY(collectionState->mOldestOnTopMenuAction != 0);
+        collectionState->latestOnTopMenuAction();
+
+        QCOMPARE(collectionState->mSortAttribute,
+                 Hs::LatestOnTopHsSortAttribute);
+
+        // cleanup
+        HsMenuService::removeCollection(collectionId);
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::oldestOnTopMenuAction()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        // GUI objects set up
+
+        HsMenuViewBuilder builder;
+        HsMenuModeWrapper menuMode;
+        HsMainWindowMock mainWindow;
+
+        QScopedPointer<QState> parent(new QState);
+        parent->setObjectName(tr("testName1"));
+
+        const QString collectionName("testCollection" +
+                                     QDateTime::currentDateTime().toString("ddmmyyyy_hh_mm_ss_zzz"));
+        const int collectionId = HsMenuService::createCollection(collectionName);
+
+        HsCollectionState *collectionState =
+            new HsCollectionState(builder, menuMode, mainWindow, parent.data());
+        collectionState->mCollectionId = collectionId;
+
+        collectionState->mSortAttribute =
+            Hs::LatestOnTopHsSortAttribute;
+
+        MockModel *collectionModel = new MockModel;
+        collectionState->mModel = collectionModel;
+        collectionState->mMenuView->setModel(collectionModel);
+
+        qRegisterMetaType<Hs::HsSortAttribute>(
+            "Hs::HsSortAttribute");
+        collectionState->mCollectionType = Hs::collectionDownloadedTypeName;
+        collectionState->setMenuOptions();
+        QVERIFY(collectionModel->rowCount() > 1 );
+        QVERIFY(collectionState->mLatestOnTopMenuAction != 0);
+        QVERIFY(collectionState->mOldestOnTopMenuAction != 0);
+
+        collectionState->oldestOnTopMenuAction();
+
+        QCOMPARE(collectionState->mSortAttribute,
+                 Hs::OldestOnTopHsSortAttribute);
+
+        // cleanup
+        HsMenuService::removeCollection(collectionId);
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::createArrangeCollection()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsMenuViewBuilder builder;
+        HsMenuModeWrapper menuMode;
+        HsMainWindowMock mainWindow;
+        QStateMachine *machine = new QStateMachine(0);
+
+        const QString collectionName("testCollection" +
+                                     QDateTime::currentDateTime().
+                                     toString("ddmmyyyy_hh_mm_ss_zzz"));
+        const int collectionId = HsMenuService::createCollection(collectionName);
+
+        HsCollectionState *collectionState =
+            new HsCollectionState(builder, menuMode, mainWindow, machine);
+
+        collectionState->mCollectionId = collectionId;
+
+        machine->setInitialState(collectionState);
+
+        AddToHomeScreenMockState *mockState = new AddToHomeScreenMockState(machine);
+
+        // create a transition to the new child state which will be triggered by
+        // an event with specified operation type
+        HsMenuEventTransition *transition = new HsMenuEventTransition(
+            HsMenuEvent::ArrangeCollection, collectionState, mockState);
+        collectionState->addTransition(transition);
+
+        machine->start();
+        qApp->sendPostedEvents();
+        collectionState->createArrangeCollection();
+        qApp->sendPostedEvents();
+
+        QVERIFY(mockState->enteredValue());
+        qApp->removePostedEvents(0);
+        machine->stop();
+
+        delete machine;
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+#ifdef Q_OS_SYMBIAN
+void MenuStatesTest::openTaskSwitcher()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+
+        HsMenuViewBuilder builder;
+        HsMenuModeWrapper menuMode;
+        HsMainWindowMock mainWindow;
+        QScopedPointer<QStateMachine> machine(new QStateMachine(0));
+        HsCollectionState *collectionState =
+            new HsCollectionState(builder, menuMode, mainWindow, machine.data());
+        QVERIFY(collectionState->openTaskSwitcher());
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+#endif//Q_OS_SYMBIAN
+
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::disableSearchAction()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsMenuViewBuilder builder;
+        HsMenuModeWrapper menuMode;
+        HsMainWindowMock mainWindow;
+
+        QScopedPointer<QStateMachine> machine(new QStateMachine(0));
+
+        const QString collectionName("testCollection" +
+                                     QDateTime::currentDateTime().
+                                     toString("ddmmyyyy_hh_mm_ss_zzz"));
+
+        const int collectionId = HsMenuService::createCollection(collectionName);
+
+        HsCollectionState *collectionState =
+            new HsCollectionState(builder, menuMode, mainWindow, machine.data());
+
+
+        collectionState->mCollectionId = collectionId;
+
+        machine->setInitialState(collectionState);
+
+        machine->start();
+
+        qApp->sendPostedEvents();
+
+        collectionState->stateEntered();
+
+        collectionState->mMenuView->disableSearch(true);
+
+        QVERIFY(!collectionState->mMenuView->mBuilder.searchAction()->isEnabled());
+
+        collectionState->mMenuView->disableSearch(false);
+
+        QVERIFY(collectionState->mMenuView->mBuilder.searchAction()->isEnabled());
+
+        collectionState->lockSearchButton(true);
+
+        QVERIFY(!collectionState->mMenuView->mBuilder.searchAction()->isEnabled());
+
+        collectionState->lockSearchButton(false);
+
+        QVERIFY(collectionState->mMenuView->mBuilder.searchAction()->isEnabled());
+
+        collectionState->stateExited();
+
+        machine->stop();
+
+        // cleanup
+        HsMenuService::removeCollection(collectionId);
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+QTEST_MAIN(MenuStatesTest)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_collectionsstate/t_collectionsstate.pri	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,24 @@
+#
+# 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:
+#
+#Header files
+HEADERS += ./inc/*.h \
+		   ../inc/*.h \
+           ../../inc/*.h
+
+#Source files
+SOURCES += ./src/*.cpp \
+		   ../src/*.cpp \
+           ../../src/*.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_collectionsstate/t_collectionsstate.pro	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,78 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+TEMPLATE = app
+CONFIG += hb mobility
+MOBILITY = serviceframework
+
+include(../../../../common.pri)
+include(../../docml.pri)
+
+LIBS += -lhsdomainmodel
+LIBS += -lhsutils
+LIBS += -lhsmenuserviceprovider
+LIBS += -lcaclient
+
+QT += testlib \
+      xml \
+      sql
+
+DEFINES += MENUSTATES_UNITTEST
+
+coverage:DEFINES += COVERAGE_MEASUREMENT
+
+DEPENDPATH += .\
+              ./src \
+              ./inc \
+              ../src \
+              ../inc \              
+              ../../src \
+              ../../inc
+              
+INCLUDEPATH += .\
+               ./inc \
+               ../../inc \
+               ../src \
+               ../inc \                  
+               ../../../hsmenuworkerstateplugin/inc \
+               ../../../../serviceproviders/hsmenuserviceprovider/inc \               
+               ../../../../hsutils/inc \
+               ../../../../hsdomainmodel/inc/
+               
+symbian {
+    for(docmlFile, docmlFiles): DOCML+=../../$$docmlFile
+    ### get rid of localization warnings
+    CONFIG -= hb
+    load(hb.prf)
+    CONFIG -= symbian_i18n
+    ###
+    TARGET.UID3 = 0x2002DCED
+    TARGET.CAPABILITY = CAP_APPLICATION AllFiles
+    TARGET.EPOCSTACKSIZE = 0x14000 // 80kB
+    TARGET.EPOCHEAPSIZE = 0x20000 0x1000000 // 128kB - 16MB
+    CONFIG += symbian_test
+    coverage: CONFIG -= symbian_test
+    exists($${EPOCROOT}epoc32/include/platform/mw/XQSettingsManager) {
+        LIBS += -lxqsettingsmanager
+        
+    MMP_RULES += SMPSAFE
+    }    
+}
+
+RESOURCES += ../../$$qrcFile
+
+include(t_collectionsstate.pri)
+                      
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_installedappsstate/inc/t_installedappsstate.h	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,58 @@
+/*
+* 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:  Tests for hsapplibrarystateplugin.
+*
+*/
+
+#ifndef T_ALLAPPSSTATE_H
+#define T_ALLAPPSSTATE_H
+
+#include <QtTest/QtTest>
+#include <HbMainWindow>
+
+class HbMainWindow;
+class HbAbstractViewItem;
+class QStateMachine;
+
+/**
+* @test Test class for homescreen::hsutils modules.
+*/
+class MenuStatesTest : public QObject
+{
+    Q_OBJECT
+
+private slots:
+
+    /*
+    * Tests
+    */
+    void construction();
+#ifdef Q_OS_SYMBIAN
+    void openTaskSwitcher();
+    void openInstallationLog();
+#endif//Q_OS_SYMBIAN
+    void emptyLabelVisibility();
+    void stateEnteredExited();
+    void listItemLongPressed();
+    void latestOldestOnTopMenuAction();
+    /**
+     * cleanup
+     */
+
+    void cleanup();
+    
+private:
+    HbMainWindow mWindow;
+};
+#endif // T_ALLAPPSSTATE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_installedappsstate/src/t_installedappsstate.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,399 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Main test class for hsHomeScreenStatePlugin library.
+*
+*/
+
+#include <QSignalSpy>
+
+#include <HbMainWindow>
+#include <HbInstance>
+#include <HbView>
+#include <HbListView>
+#include <HbListViewItem>
+#include <HbSearchPanel>
+#include <HbMenu>
+#include <HbAction>
+#include <HbPushButton>
+#include <HbLabel>
+#include <qscopedpointer>
+
+#include <caentry.h>
+#include <caitemmodel.h>
+#include <hsmenuevent.h>
+#include "hsmenuview.h"
+#include "hsinstalledappsstate.h"
+#include "hsmainwindow.h"
+#include "hsmenuitemmodel.h"
+
+#include "hsmenueventtransition.h"
+
+#include "t_installedappsstate.h"
+
+#include "t_hsaddtohomescreenmockstate.h"
+
+
+class HsMainWindowMock : public HsMainWindow
+{
+    virtual void setCurrentView(HbView *view);
+
+};
+
+void HsMainWindowMock::setCurrentView(HbView *view)
+{
+    Q_UNUSED(view);
+    // do nothing    
+}
+
+void MenuStatesTest::cleanup()
+{
+    qApp->processEvents();
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::construction()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsMenuViewBuilder builder;
+        HsMainWindowMock mainWindow;
+
+        QScopedPointer<QState> parent(new QState);
+
+        QScopedPointer<HsInstalledAppsState> allAppsState(
+            new HsInstalledAppsState(builder, mainWindow, parent.data()));
+
+
+        QVERIFY(!allAppsState->mModel);
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+#ifdef Q_OS_SYMBIAN
+void MenuStatesTest::openTaskSwitcher()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsMenuViewBuilder builder;
+        HsMainWindowMock mainWindow;
+        
+        QScopedPointer<QState> parent(new QState);
+
+        QScopedPointer<HsInstalledAppsState> installedAppsState (
+            new HsInstalledAppsState(builder, mainWindow, parent.data()));
+
+        QVERIFY(installedAppsState->openTaskSwitcher());
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+#endif//Q_OS_SYMBIAN
+
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+#ifdef Q_OS_SYMBIAN
+void MenuStatesTest::openInstallationLog()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+    HsMenuViewBuilder builder;
+    HsMainWindowMock mainWindow;
+    QStateMachine *machine = new QStateMachine(0);
+
+    HsInstalledAppsState *installedAppsState =
+        new HsInstalledAppsState(builder, mainWindow, machine);
+
+    machine->setInitialState(installedAppsState);
+
+    AddToHomeScreenMockState *mockState = new AddToHomeScreenMockState(machine);
+
+    // create a transition to the new child state which will be triggered by
+    // an event with specified operation type
+    HsMenuEventTransition *newCollectionTransition = new HsMenuEventTransition(
+        HsMenuEvent::ShowInstallationLog, installedAppsState, mockState);
+
+    installedAppsState->addTransition(newCollectionTransition);
+
+    installedAppsState->stateEntered();
+
+    machine->start();
+    qApp->sendPostedEvents();
+    
+    installedAppsState->openInstallationLog();
+    QTest::qWait(5000);
+
+    QVERIFY(mockState->enteredValue());
+    qApp->removePostedEvents(0);
+    machine->stop();
+    delete machine;
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+#endif//Q_OS_SYMBIAN
+
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::stateEnteredExited()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        int fakeId = 2;
+        QString fakeCollectionType("fakeCollectionType");
+        
+        HsMenuViewBuilder builder;
+        HsMainWindowMock mainWindow;
+        
+        QScopedPointer<QState> parent(new QState);
+
+        HsInstalledAppsState *installedAppsState =
+            new HsInstalledAppsState(builder, mainWindow, parent.data());
+            
+        QVariantMap params;
+        params.insert(Hs::itemIdKey, fakeId);
+        params.insert(Hs::entryTypeNameKey, fakeCollectionType);
+        QEvent *event = new HsMenuEvent(
+            HsMenuEvent::BackFromInstalledView, params);
+        installedAppsState->onEntry(event);
+        delete event;
+        event = NULL;
+        QCOMPARE(installedAppsState->mCollectionId, fakeId);
+        QCOMPARE(installedAppsState->mCollectionType, fakeCollectionType);
+
+        installedAppsState->stateEntered();
+
+        QVERIFY(installedAppsState->mModel);
+
+        installedAppsState->mContextMenu = new HbMenu();
+        installedAppsState->mContextMenu->setAttribute(Qt::WA_DeleteOnClose);
+
+        QVERIFY(!installedAppsState->mMenuView->view()->menu()->isEmpty());
+
+        installedAppsState->stateExited();
+
+        QVERIFY(!installedAppsState->mMenuView->view()->menu()->isEmpty());
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::emptyLabelVisibility()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsMenuViewBuilder builder;
+        HsMainWindowMock mainWindow;
+        QScopedPointer<QStateMachine> machine(new QStateMachine(0));
+        HsInstalledAppsState *installedAppsState =
+            new HsInstalledAppsState(builder, mainWindow, machine.data());
+        
+        installedAppsState->stateEntered();
+
+        QVERIFY(installedAppsState->mModel);
+        
+        installedAppsState->setEmptyLabelVisibility(true);
+
+        QCOMPARE(installedAppsState->mMenuView->mBuilder.mStateContext,
+                 HsInstalledAppsContext);
+        QCOMPARE(installedAppsState->mMenuView->mBuilder.mOperationalContext,
+                 HsEmptyLabelContext);
+
+
+        installedAppsState->setEmptyLabelVisibility(false);
+
+        QCOMPARE(installedAppsState->mMenuView->mBuilder.mStateContext,
+                 HsInstalledAppsContext);
+        QCOMPARE(installedAppsState->mMenuView->mBuilder.mOperationalContext,
+                 HsItemViewContext);
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::listItemLongPressed()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        QScopedPointer<HbMainWindow> window(new HbMainWindow);
+        HsMenuViewBuilder builder;
+        HsMainWindow mainWindow;
+
+        QScopedPointer<QState> parent(new QState);
+
+        HsInstalledAppsState *installedAppsState =
+            new HsInstalledAppsState(builder, mainWindow, parent.data());
+
+        installedAppsState->stateEntered();
+        QVERIFY(installedAppsState->mModel);
+
+        QScopedPointer<HbAbstractViewItem> item(new HbListViewItem);
+
+        QVERIFY(installedAppsState->mModel != NULL);
+
+        // to ensure that we have at least one item in model assign
+        // installedAppsState with All Applications Model..
+        installedAppsState->mModel = HsMenuService::getAllApplicationsModel();
+
+        if( installedAppsState->mModel->rowCount() > 0 )
+        {
+            QModelIndex itemModelIndex = installedAppsState->mModel->index(0, 0);
+
+            QSharedPointer<CaEntry> entry
+                    = installedAppsState->mModel->entry(itemModelIndex);
+
+            entry->setAttribute(Hs::componentIdAttributeName, QString("0"));
+            entry->setFlags(entry->flags() | RemovableEntryFlag);
+
+            item->setModelIndex(itemModelIndex);
+
+            installedAppsState->showContextMenu(item.data() , QPointF(50,50));
+
+            QCOMPARE(installedAppsState->mContextMenu->actions().length(), 2);
+
+            Hs::HsContextAction uninstallAction = static_cast<Hs::HsContextAction>(
+                    installedAppsState->mContextMenu->actions()[0]->data().toInt());
+            QCOMPARE(uninstallAction, Hs::UninstallContextAction);
+
+            Hs::HsContextAction detailsAction = static_cast<Hs::HsContextAction>(
+                    installedAppsState->mContextMenu->actions()[1]->data().toInt());
+            QCOMPARE(detailsAction, Hs::AppDetailsContextAction);
+
+            installedAppsState->mContextMenu->close();
+
+        } else {
+            QWARN("No item in Installed App View");
+        }
+
+        installedAppsState->stateExited();
+
+        window->removeView(builder.currentView());
+        qApp->processEvents();
+    
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::latestOldestOnTopMenuAction()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsMenuViewBuilder builder;
+        HsMainWindowMock mainWindow;
+        QScopedPointer<QStateMachine> machine(new QStateMachine(0));
+        HsInstalledAppsState *installedAppsState =
+            new HsInstalledAppsState(builder, mainWindow, machine.data());
+        
+        installedAppsState->stateEntered();
+
+        QVERIFY(installedAppsState->mModel);        
+        
+        // model must have some items
+        delete installedAppsState->mModel;
+        installedAppsState->mModel = HsMenuService::getAllApplicationsModel(Hs::OldestOnTopHsSortAttribute);
+        
+        installedAppsState->setMenuOptions();
+        
+        installedAppsState->latestOnTopMenuAction();
+
+        QCOMPARE(installedAppsState->mSortAttribute,
+                Hs::OldestOnTopHsSortAttribute);
+        
+        installedAppsState->oldestOnTopMenuAction();
+        QCOMPARE(installedAppsState->mSortAttribute,
+                Hs::LatestOnTopHsSortAttribute);
+        
+        delete installedAppsState;
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+
+QTEST_MAIN(MenuStatesTest)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_installedappsstate/t_installedappsstate.pri	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,24 @@
+#
+# 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:
+#
+#Header files
+HEADERS += ./inc/*.h \
+		   ../inc/*.h \
+           ../../inc/*.h
+
+#Source files
+SOURCES += ./src/*.cpp \
+		   ../src/*.cpp \
+           ../../src/*.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_installedappsstate/t_installedappsstate.pro	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,77 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+TEMPLATE = app
+CONFIG += hb mobility
+MOBILITY = serviceframework
+
+include(../../../../common.pri)
+include(../../docml.pri)
+
+LIBS += -lhsdomainmodel
+LIBS += -lhsutils
+LIBS += -lhsmenuserviceprovider
+LIBS += -lcaclient
+
+QT += testlib \
+      xml \
+      sql
+
+DEFINES += MENUSTATES_UNITTEST
+
+coverage:DEFINES += COVERAGE_MEASUREMENT
+
+DEPENDPATH += .\
+              ./src \
+              ./inc \
+              ./../src \
+              ./../inc \
+              ../../src \
+              ../../inc
+              
+INCLUDEPATH += .\
+               ./inc \
+               ./../inc \
+               ../../inc \
+               ../../../hsmenuworkerstateplugin/inc \
+               ../../../../serviceproviders/hsmenuserviceprovider/inc \               
+               ../../../../hsutils/inc \
+               ../../../../hsdomainmodel/inc/
+               
+symbian {
+    for(docmlFile, docmlFiles): DOCML+=../../$$docmlFile
+    ### get rid of localization warnings
+    CONFIG -= hb
+    load(hb.prf)
+    CONFIG -= symbian_i18n
+    ###
+    TARGET.UID3 = 0x2002DCF4
+    TARGET.CAPABILITY = CAP_APPLICATION AllFiles
+    TARGET.EPOCSTACKSIZE = 0x14000 // 80kB
+    TARGET.EPOCHEAPSIZE = 0x20000 0x1000000 // 128kB - 16MB
+    CONFIG += symbian_test
+    coverage: CONFIG -= symbian_test
+    exists($${EPOCROOT}epoc32/include/platform/mw/XQSettingsManager) {
+        LIBS += -lxqsettingsmanager
+        
+    MMP_RULES += SMPSAFE
+    }    
+}
+
+RESOURCES += ../../$$qrcFile
+
+include(t_installedappsstate.pri)
+                     
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_menuviewbuilder/inc/t_menuviewbuilder.h	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,81 @@
+/*
+* 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:  Tests for hsapplibrarystateplugin.
+*
+*/
+
+#ifndef T_MENUVIEWBUILDER_H
+#define T_MENUVIEWBUILDER_H
+
+#include <QtTest/QtTest>
+#include <QPoint>
+
+class HbMainWindow;
+class HbAbstractViewItem;
+class QStateMachine;
+
+/**
+* @test Test class for homescreen::hsutils modules.
+*/
+class MenuStatesTest : public QObject
+{
+    Q_OBJECT
+
+private slots:
+    /*
+    * Tests
+    */
+    void HsMenuViewBuilder_construction();
+    void HsMenuViewBuilder_view();
+    void HsMenuViewBuilder_listView();
+    void HsMenuViewBuilder_label();
+    void HsMenuViewBuilder_allAppsAction();
+    void HsMenuViewBuilder_allCollectionsAction();
+    void HsMenuViewBuilder_searchAction();
+    void HsMenuViewBuilder_oviStoreAction();
+    void HsMenuViewBuilder_operatorAction();
+    void HsMenuViewBuilder_toolBar();
+    void HsMenuViewBuilder_toolBarExtension();
+
+    //Menu view
+    void MenuView_toolBarExtension();
+    void HsMenuView_scrolling();
+    void MenuView_slots();
+    void MenuView_reset();
+    void MenuView_showHideSearchPanel();
+    // HsListViewItem
+    void HsListViewItem_updateChildItems();
+    void HsListViewItem_createItem();
+    void HsListViewItem_polish();
+    void HsProgressBar_timerEvent();
+    void HsProgressBar_setTargetProgressValue();
+
+    void cleanup();
+
+    /**
+     * special slots for  tests
+     */
+    void testslot_activated(const QModelIndex &aIndex);
+    void testslot_longpressed(HbAbstractViewItem *item,
+                              const QPointF &coords);
+private:
+
+    HbAbstractViewItem *mItem;
+
+    QModelIndex mIndex;
+    QPointF mPoint;
+
+
+};
+#endif // T_MENUVIEWBUILDER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_menuviewbuilder/src/t_menuviewbuilder.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,614 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Main test class for hsHomeScreenStatePlugin library.
+*
+*/
+
+#include <hbmainwindow.h>
+#include <hbinstance.h>
+#include <hbview.h>
+#include <hblistview.h>
+#include <hblistviewitem.h>
+#include <qscopedpointer>
+#include <hbaction.h>
+#include <hbgridview.h>
+#include <hbgroupbox.h>
+#include <hbtoolbar.h>
+#include <qsortfilterproxymodel.h>
+#include <HbShrinkingVkbHost>
+
+#include "caentry.h"
+#include "caitemmodel.h"
+#include "hsmenuview.h"
+#include "hsmenuevent.h"
+#include "hsmenuviewbuilder.h"
+#include "hssearchviewbuilder.h"
+#include "hsmenueventtransition.h"
+#include "hsallcollectionsstate.h"
+#include "hsapplibrarystate.h"
+#include "hsallappsstate.h"
+#include "hslistviewitem.h"
+
+#include "t_hsaddtohomescreenmockstate.h"
+#include "t_hsmockmodel.h"
+#include "t_menuviewbuilder.h"
+
+
+
+void MenuStatesTest::cleanup()
+{
+    qApp->processEvents();
+}
+
+class HsMainWindowMock : public HsMainWindow
+{
+    virtual void setCurrentView(HbView *view);
+
+};
+
+void HsMainWindowMock::setCurrentView(HbView *view)
+{
+    Q_UNUSED(view);
+    // do nothing
+}
+
+class HsMainWindowSpy: public HsMainWindow
+{
+public:
+    virtual void setCurrentView(HbView *view)
+    {
+        mSwitchedToView = view;
+    }
+
+    HbView *mSwitchedToView;
+
+    HsMainWindowSpy(): mSwitchedToView(NULL) {};
+};
+
+void MenuStatesTest::HsMenuViewBuilder_construction()
+{
+    const HsMenuViewBuilder builder;
+    QList<QAction *> expectedActionList;
+    expectedActionList << builder.allAppsAction();
+    expectedActionList << builder.allCollectionsAction();
+    expectedActionList << builder.searchAction();
+
+    QList<QAction *> actualActionList(builder.toolBar()->actions());
+
+    QCOMPARE(actualActionList, expectedActionList);
+
+}
+
+void MenuStatesTest::HsMenuViewBuilder_view()
+{
+    HsMenuViewBuilder builder;
+    const HbView *view = builder.currentView();
+
+    builder.setStateContext(HsAllAppsContext);
+    builder.setOperationalContext(HsItemViewContext);
+
+    view = builder.currentView();
+
+    QVERIFY(view != NULL);
+    QCOMPARE(view->objectName(), QString("view"));
+    QString title = view->title();
+    QCOMPARE(title, hbTrId("txt_applib_title_applications"));
+
+    view = builder.currentView();
+
+    builder.setOperationalContext(HsEmptyLabelContext);
+    QVERIFY(view != NULL);
+    QCOMPARE(view->objectName(), QString("view"));
+    title = view->title();
+    QCOMPARE(title, hbTrId("txt_applib_title_applications"));
+}
+
+void MenuStatesTest::HsMenuViewBuilder_listView()
+{
+    HsMenuViewBuilder builder;
+    builder.setStateContext(HsAllAppsContext);
+    builder.setOperationalContext(HsItemViewContext);
+
+    const HbAbstractItemView *const itemView = builder.currentListView();
+
+    QVERIFY(itemView);
+    QVERIFY(itemView->inherits("HbListView"));
+    QVERIFY(itemView->itemRecycling());
+    const bool visible = itemView->property("visible").toBool();
+    QVERIFY(visible);
+}
+
+void MenuStatesTest::HsMenuViewBuilder_label()
+{
+    HsMenuViewBuilder builder;
+
+    const HbGroupBox *const allAppsLabel = builder.currentViewLabel();
+
+    QVERIFY(allAppsLabel == NULL || !allAppsLabel->isVisible());
+
+    builder.setStateContext(HsInstalledAppsContext);
+
+    const HbGroupBox *const collectionLabel = builder.currentViewLabel();
+
+    QVERIFY(collectionLabel != NULL);
+    QVERIFY(collectionLabel->isVisible());
+    QCOMPARE(collectionLabel->fontSpec().role(), HbFontSpec::Title);
+    QCOMPARE(collectionLabel->marqueeHeading(), true);
+}
+
+void MenuStatesTest::HsMenuViewBuilder_allAppsAction()
+{
+    const HsMenuViewBuilder builder;
+    const HbAction *const action = builder.allAppsAction();
+
+    QVERIFY(action != NULL);
+    QCOMPARE(action->icon().iconName(),
+             QString("qtg_mono_applications_all"));
+
+}
+
+void MenuStatesTest::HsMenuViewBuilder_allCollectionsAction()
+{
+    const HsMenuViewBuilder builder;
+    const HbAction *const action = builder.allCollectionsAction();
+
+    QVERIFY(action != NULL);
+    QCOMPARE(action->icon().iconName(),
+             QString("qtg_mono_applications_collections"));
+}
+
+void MenuStatesTest::HsMenuViewBuilder_searchAction()
+{
+    const HsMenuViewBuilder builder;
+    const HbAction *const action = builder.searchAction();
+
+    QVERIFY(action != NULL);
+    QCOMPARE(action->icon().iconName(),
+             QString("qtg_mono_search"));
+}
+
+void MenuStatesTest::HsMenuViewBuilder_oviStoreAction()
+{
+    const HsMenuViewBuilder builder;
+    const HbAction *const action = builder.oviStoreAction();
+
+    QVERIFY(action != NULL);
+    QCOMPARE(action->icon().iconName(),
+             QString("qtg_mono_ovistore"));
+}
+
+void MenuStatesTest::HsMenuViewBuilder_operatorAction()
+{
+    const HsMenuViewBuilder builder;
+    const HbAction *const action = builder.operatorAction();
+
+    QVERIFY(action != NULL);
+    //we do not have operator icon name
+    //QCOMPARE(action->icon().iconName(),
+    //             QString("qtg_mono_store"));
+}
+
+void MenuStatesTest::HsMenuViewBuilder_toolBar()
+{
+    HsMenuViewBuilder builder;
+    HbToolBar *toolBar = builder.toolBar();
+
+    QVERIFY(toolBar != 0);
+    QCOMPARE(toolBar->orientation(), Qt::Horizontal);
+
+    const QList<QAction *> actions = toolBar->actions();
+
+    QCOMPARE(actions.count(), 3);
+    QCOMPARE(actions.at(0),
+             static_cast<QAction *>(builder.allAppsAction()));
+    QCOMPARE(actions.at(1),
+             static_cast<QAction *>(builder.allCollectionsAction()));
+    QCOMPARE(actions.at(2),
+             static_cast<QAction *>(builder.searchAction()));
+    QCOMPARE(toolBar, builder.currentView()->toolBar());
+}
+
+void MenuStatesTest::HsMenuViewBuilder_toolBarExtension()
+{
+    HsMenuViewBuilder builder;
+    HbToolBarExtension *toolBarExtension = builder.toolBarExtension();
+
+    QVERIFY(toolBarExtension);
+}
+
+
+
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::MenuView_slots()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsMenuViewBuilder builder;
+        HsMainWindowMock mainWindow;
+        HsMenuView menuView(builder, HsAllAppsContext, mainWindow);
+
+        connect(&menuView,
+                SIGNAL(activated(QModelIndex)),
+                this,
+                SLOT(testslot_activated(QModelIndex)));
+        connect(&menuView,
+                SIGNAL(longPressed(HbAbstractViewItem *, QPointF)),
+                this,
+                SLOT(testslot_longpressed(HbAbstractViewItem *, QPointF)));
+
+        emit menuView.activated(QModelIndex());
+
+        QScopedPointer<HbListViewItem> item(new HbListViewItem());
+
+        emit menuView.longPressed(item.data(), QPoint(50,50));
+
+        QCOMPARE(mIndex, QModelIndex());
+        QVERIFY(item.data()  == mItem);
+        QCOMPARE(mPoint.x(), double(50));
+        QCOMPARE(mPoint.y(), double(50));
+
+        disconnect(&menuView,
+                   SIGNAL(activated(QModelIndex)),
+                   this,
+                   SLOT(testslot_activated(QModelIndex)));
+        disconnect(&menuView,
+                   SIGNAL(longPressed(HbAbstractViewItem *, QPointF)),
+                   this,
+                   SLOT(testslot_longpressed(HbAbstractViewItem *, QPointF)));
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::HsMenuView_scrolling()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        QScopedPointer<HbMainWindow> wind(new HbMainWindow);
+        HsMenuViewBuilder builder;
+        HsMenuModeWrapper menuMode;
+        HsMainWindow mainWindow;
+
+        QScopedPointer<QState> parent(new QState);
+
+
+        HsAllAppsState *allAppsState = new HsAllAppsState(builder,
+                menuMode, mainWindow, parent.data());
+
+        wind->addView(builder.currentView());
+
+
+        QVERIFY(allAppsState->mModel != 0);
+        const int rowCount = allAppsState->mModel->rowCount();
+        QVERIFY(rowCount > 0);
+
+        allAppsState->scrollToBeginning();
+        allAppsState->stateEntered();
+        qApp->processEvents();
+
+        const int expectedRow(0);
+
+        QVERIFY(allAppsState->mMenuView->listView() != NULL);
+        QVERIFY(allAppsState->mMenuView->listView()->visibleItems().count() >= 1);
+
+        int actualRow =
+            allAppsState->mMenuView->listView()->visibleItems().at(0)->modelIndex().row();
+
+        QCOMPARE(actualRow, expectedRow);
+
+        allAppsState->mMenuView->scrollToRow(rowCount -1);
+
+        actualRow =
+            allAppsState->mMenuView->listView()->visibleItems().at(0)->modelIndex().row();
+
+        QVERIFY(actualRow != expectedRow);
+        qApp->processEvents();
+
+        allAppsState->mMenuView->scrollToRow(expectedRow);
+
+        actualRow =
+            allAppsState->mMenuView->listView()->visibleItems().at(0)->modelIndex().row();
+
+        QCOMPARE(actualRow, expectedRow);
+        qApp->processEvents();
+
+       allAppsState->stateExited();
+
+        qApp->processEvents();
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::MenuView_toolBarExtension()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsMenuViewBuilder menuViewBuilder;
+        HbToolBarExtension *toolBarExtension = menuViewBuilder.toolBarExtension();
+        QVERIFY(toolBarExtension != NULL);
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::MenuView_reset()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsMenuViewBuilder builder;
+        HsMainWindowMock mainWindow;
+        HsMenuView menuView(builder, HsCollectionContext, mainWindow);
+
+        QVERIFY(menuView.viewLabel() != 0);
+
+        const QString headingLabel("abcd");
+
+        QScopedPointer<HbAction> backSteppingAction(new HbAction(Hb::BackNaviAction));
+        backSteppingAction->setObjectName("backSteppingAction");
+
+        menuView.viewLabel()->setHeading(headingLabel);
+        menuView.view()->setNavigationAction(backSteppingAction.data());
+
+        menuView.reset(HsEmptyLabelContext);
+
+        QCOMPARE(menuView.mBuilder.mStateContext, HsCollectionContext);
+        QCOMPARE(menuView.mBuilder.mOperationalContext, HsEmptyLabelContext);
+
+        QCOMPARE(menuView.view()->navigationAction()->objectName(),
+                 backSteppingAction->objectName());
+
+        QVERIFY(menuView.viewLabel());
+        QCOMPARE(menuView.viewLabel()->heading(), headingLabel);
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::testslot_activated(const QModelIndex &aIndex)
+{
+    mIndex = aIndex;
+}
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::testslot_longpressed(HbAbstractViewItem *item,
+        const QPointF &coords)
+{
+    mPoint = coords;
+    mItem = item;
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::HsListViewItem_updateChildItems()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsMenuViewBuilder builder;
+        HsMenuModeWrapper menuMode;
+        HsMainWindowMock mainWindow;
+        QScopedPointer<HsAllAppsState> allAppsState(new HsAllAppsState(
+            builder, menuMode, mainWindow, 0));
+
+	    HsMenuItemModel *model = allAppsState->mModel;
+
+        QVERIFY(model != static_cast<HsMenuItemModel *>(0));
+        QVERIFY(model->rowCount() > 0);
+        QModelIndex itemModelIndex = model->index(0, 0);
+
+        QScopedPointer<HsListViewItem> listViewItem(new HsListViewItem);
+
+        listViewItem->setModelIndex(itemModelIndex);
+
+
+        QCOMPARE((int)listViewItem->progress,0);
+        QCOMPARE(listViewItem->isProgress,false);
+        listViewItem->updateChildItems();
+        QCOMPARE((int)listViewItem->progress,0);
+        QCOMPARE(listViewItem->isProgress,false);
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::HsListViewItem_createItem()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        QScopedPointer<HsListViewItem> listViewItem(new HsListViewItem);
+
+        QCOMPARE((HbAbstractViewItem*)listViewItem.data() ,listViewItem->prototype() );
+        QScopedPointer<HbAbstractViewItem> newItem( listViewItem->createItem() );
+
+        QCOMPARE(newItem->prototype(), (HbAbstractViewItem*)listViewItem.data() );
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::HsListViewItem_polish()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        QScopedPointer<HsListViewItem> listViewItem(new HsListViewItem);
+        HbStyleParameters styleParam;
+
+        bool expectedVal = false;
+        listViewItem->isProgress = expectedVal;
+        listViewItem->polish(styleParam);
+        QVariant property = listViewItem->property("progress");
+        bool val = property.value<bool>();
+
+        QCOMPARE(val, expectedVal);
+
+        expectedVal = true;
+        listViewItem->isProgress = expectedVal;
+        listViewItem->polish(styleParam);
+        property = listViewItem->property("progress");
+        val = property.value<bool>();
+
+        QCOMPARE(val, expectedVal);
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::HsProgressBar_timerEvent()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsProgressBar bar;
+        QTimerEvent event(0);
+        bar.timerEvent(&event);
+        QCOMPARE(bar.mTimerId, 0);
+        int val = bar.progressValue();
+        bar.mTargetValue = 1;
+        bar.timerEvent(&event);
+        QCOMPARE(bar.progressValue(), val + 1);
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::HsProgressBar_setTargetProgressValue()
+{
+#ifdef Q_OS_SYMBIAN
+    User::ResetInactivityTime();//it should help for Viewserver11 panic
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsProgressBar bar;
+        bar.setTargetProgressValue(0);
+        QCOMPARE(bar.mTargetValue, 0);
+        bar.setTargetProgressValue(1);
+        QCOMPARE(bar.mTargetValue, 1);
+        QVERIFY(bar.mTimerId);
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+void MenuStatesTest::MenuView_showHideSearchPanel()
+{
+    HsMenuViewBuilder builder;
+    HsMainWindowSpy window;
+    HsMenuView menuView(builder, HsAllAppsContext, window);
+
+    menuView.showSearchPanel();
+    HbView *originatingView = menuView.view();
+    QVERIFY(window.mSwitchedToView != originatingView);
+    menuView.hideSearchPanel();
+    QVERIFY(window.mSwitchedToView == originatingView);
+
+}
+
+
+QTEST_MAIN(MenuStatesTest)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_menuviewbuilder/t_menuviewbuilder.pri	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,24 @@
+#
+# 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:
+#
+#Header files
+HEADERS += ./inc/*.h \
+		   ../inc/*.h \
+           ../../inc/*.h
+
+#Source files
+SOURCES += ./src/*.cpp \
+		   ../src/*.cpp \
+           ../../src/*.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_menuviewbuilder/t_menuviewbuilder.pro	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,77 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+TEMPLATE = app
+CONFIG += hb mobility
+MOBILITY = serviceframework
+
+include(../../../../common.pri)
+include(../../docml.pri)
+
+LIBS += -lhsdomainmodel
+LIBS += -lhsutils
+LIBS += -lhsmenuserviceprovider
+LIBS += -lcaclient
+
+QT += testlib \
+      xml \
+      sql
+
+DEFINES += MENUSTATES_UNITTEST
+
+coverage:DEFINES += COVERAGE_MEASUREMENT
+
+DEPENDPATH += .\
+              ./src \
+              ./inc \
+              ./../inc \
+              ../../src \
+              ../../inc \
+              ../../resource
+              
+INCLUDEPATH += .\
+               ./inc \
+               ./../inc \
+               ../../inc \
+               ../../../hsmenuworkerstateplugin/inc \
+               ../../../../serviceproviders/hsmenuserviceprovider/inc \               
+               ../../../../hsutils/inc \
+               ../../../../hsdomainmodel/inc/
+               
+symbian {
+    for(docmlFile, docmlFiles): DOCML+=../../$$docmlFile
+    ### get rid of localization warnings
+    CONFIG -= hb
+    load(hb.prf)
+    CONFIG -= symbian_i18n
+    ###
+    TARGET.UID3 = 0x2002DCEF
+    TARGET.CAPABILITY = CAP_APPLICATION AllFiles
+    TARGET.EPOCSTACKSIZE = 0x14000 // 80kB
+    TARGET.EPOCHEAPSIZE = 0x20000 0x1000000 // 128kB - 16MB
+    CONFIG += symbian_test
+    coverage: CONFIG -= symbian_test
+    exists($${EPOCROOT}epoc32/include/platform/mw/XQSettingsManager) {
+        LIBS += -lxqsettingsmanager
+        
+    MMP_RULES += SMPSAFE
+    }    
+}
+
+RESOURCES += ../../$$qrcFile
+
+include(t_menuviewbuilder.pri)
+                     
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_searchviewbuilder/inc/t_searchviewbuilder.h	Mon Oct 04 00:07:25 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:  Tests for hsapplibrarystateplugin.
+*
+*/
+
+#ifndef T_MENUVIEWBUILDER_H
+#define T_MENUVIEWBUILDER_H
+
+#include <QtTest/QtTest>
+#include <QPoint>
+
+class HbMainWindow;
+class HbAbstractViewItem;
+class QStateMachine;
+
+/**
+* @test Test class for homescreen::hsutils modules.
+*/
+class MenuStatesTest : public QObject
+{
+    Q_OBJECT
+
+private slots:
+    /*
+    * Tests
+    */
+    void HsSearchViewBuilder_construction();
+    void HsSearchViewBuilder_uiObjects();
+    void HsSearchViewBuilder_setSearchLabledContext();
+    void HsSearchViewBuilder_loadViewEmptySection();
+    void HsSearchViewBuilder_loadViewListSection();
+
+    void HsSearchViewBuilder_searchViewConstruction();
+    void HsSearchViewBuilder_activatedProxySlot();
+    void HsSearchViewBuilder_longPressedProxySlot();
+    void HsSearchViewBuilder_showHide();
+    void HsSearchViewBuilder_hideVkb();
+
+
+    void cleanup();
+
+    void testSlot();
+
+private:
+    bool mSlotActivated;
+
+};
+#endif // T_MENUVIEWBUILDER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_searchviewbuilder/src/t_searchviewbuilder.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,187 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Main test class for hsHomeScreenStatePlugin library.
+*
+*/
+
+#include "t_searchviewbuilder.h"
+#include <QInputContext>
+#include <QSortFilterProxyModel>
+#include <HbAbstractViewItem>
+#include "hssearchviewbuilder.h"
+#include "hsmenuviewbuilder.h"
+#include "hsmainwindow.h"
+#include "hssearchview.h"
+#include "caitemmodel.h"
+
+class HsMainWindowMock : public HsMainWindow
+{
+    virtual void setCurrentView(HbView *view) { Q_UNUSED(view); }
+};
+
+class MockViewItem : public HbAbstractViewItem
+{
+    virtual HbAbstractViewItem *createItem()
+    {
+        HbAbstractViewItem *item = new MockViewItem;
+        return item;
+    }
+};
+
+void MenuStatesTest::testSlot()
+{
+    mSlotActivated = true;
+}
+
+
+void MenuStatesTest::cleanup()
+{
+    qApp->processEvents();
+}
+
+void MenuStatesTest::HsSearchViewBuilder_construction()
+{
+    HsSearchViewBuilder builder;
+    QVERIFY(builder.mLoadedObjects.count());
+}
+
+void MenuStatesTest::HsSearchViewBuilder_uiObjects()
+{
+    HsSearchViewBuilder builder;
+    QVERIFY(builder.searchListView());
+    QVERIFY(builder.searchPanel());
+    QVERIFY(builder.searchView());
+    QVERIFY(builder.searchViewLabel());
+}
+
+void MenuStatesTest::HsSearchViewBuilder_setSearchLabledContext()
+{
+    HsSearchViewBuilder builder;
+    builder.setSearchLabledContext();
+    QVERIFY(builder.mLabledContext);
+}
+
+void MenuStatesTest::HsSearchViewBuilder_loadViewEmptySection()
+{
+    HsSearchViewBuilder builder;
+    int firstCount = builder.mLoadedObjects.count();
+    builder.loadViewEmptySection();
+    QCOMPARE(firstCount, builder.mLoadedObjects.count());
+}
+
+void MenuStatesTest::HsSearchViewBuilder_loadViewListSection()
+{
+    HsSearchViewBuilder builder;
+    int firstCount = builder.mLoadedObjects.count();
+    builder.loadViewListSection();
+    QCOMPARE(firstCount, builder.mLoadedObjects.count());
+}
+
+void MenuStatesTest::HsSearchViewBuilder_searchViewConstruction()
+{
+    HsMenuViewBuilder builder;
+    HsMainWindowMock window;
+
+    HsSearchView search(builder, HsAllAppsContext, window);
+
+    QCOMPARE(search.mProxyModel->filterRole(), int(CaItemModel::TextRole));
+    QCOMPARE(search.mProxyModel->filterKeyColumn(), 0);
+    QCOMPARE(search.mProxyModel->sortRole(), int(CaItemModel::TextRole));
+}
+
+void MenuStatesTest::HsSearchViewBuilder_activatedProxySlot()
+{
+    HsMenuViewBuilder builder;
+    HsMainWindowMock window;
+
+    HsSearchView search(builder, HsAllAppsContext, window);
+    connect(&search, SIGNAL(activated(QModelIndex)),
+            this, SLOT(testSlot()));
+    QModelIndex idx;
+
+    mSlotActivated = false;
+    search.activatedProxySlot(idx);
+    QCOMPARE(mSlotActivated, true);
+}
+
+void MenuStatesTest::HsSearchViewBuilder_longPressedProxySlot()
+{
+    HsMenuViewBuilder builder;
+    HsMainWindowMock window;
+
+    HsSearchView search(builder, HsAllAppsContext, window);
+    connect(&search, SIGNAL(longPressed(HbAbstractViewItem *, QPointF)),
+            this, SLOT(testSlot()));
+
+    MockViewItem item;
+    QPointF point;
+
+    mSlotActivated = false;
+    search.longPressedProxySlot(&item, point);
+    QCOMPARE(mSlotActivated, true);
+}
+
+void MenuStatesTest::HsSearchViewBuilder_showHide()
+{
+    HsMenuViewBuilder builder;
+    HsMainWindowMock window;
+
+    HsSearchView search(builder, HsAllAppsContext, window);
+
+    search.setSearchPanelVisible(true);
+    QVERIFY(search.mSearchListView);
+    search.hideSearchPanel();
+    QVERIFY(!search.mSearchListView);
+
+}
+
+
+class MockInputContext: public QInputContext
+{
+public:
+    QEvent::Type mEventType;
+    MockInputContext(): mEventType(QEvent::None) {}
+    QString 	identifierName() { return qApp->inputContext()->identifierName();}
+    bool 	isComposing() const { return qApp->inputContext()->isComposing();}
+    QString 	language() { return qApp->inputContext()->language();}
+    void 	reset() {;}
+    void        setFocusWidget(QWidget* widget) {QInputContext::setFocusWidget(widget);}
+    bool filterEvent(const QEvent* event)
+    {
+        mEventType = event->type();
+        return true;
+    }
+};
+
+void MenuStatesTest::HsSearchViewBuilder_hideVkb()
+{
+    HsMenuViewBuilder builder;
+    HsMainWindowMock window;
+
+    HsSearchView search(builder, HsAllAppsContext, window);
+
+    MockInputContext *const newInputContext(new MockInputContext());
+
+    qApp->setInputContext(newInputContext);
+
+    search.hideVkb();
+
+    QEvent::Type actualEventType = newInputContext->mEventType;
+    qApp->setInputContext(0);
+
+    QCOMPARE(actualEventType, QEvent::CloseSoftwareInputPanel);
+}
+
+
+QTEST_MAIN(MenuStatesTest)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_searchviewbuilder/t_searchviewbuilder.pri	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,24 @@
+#
+# 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:
+#
+#Header files
+HEADERS += ./inc/*.h \
+		   ../inc/*.h \
+           ../../inc/*.h
+
+#Source files
+SOURCES += ./src/*.cpp \
+		   ../src/*.cpp \
+           ../../src/*.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/t_searchviewbuilder/t_searchviewbuilder.pro	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,77 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+TEMPLATE = app
+CONFIG += hb mobility
+MOBILITY = serviceframework
+
+include(../../../../common.pri)
+include(../../docml.pri)
+
+LIBS += -lhsdomainmodel
+LIBS += -lhsutils
+LIBS += -lhsmenuserviceprovider
+LIBS += -lcaclient
+
+QT += testlib \
+      xml \
+      sql
+
+DEFINES += MENUSTATES_UNITTEST
+
+coverage:DEFINES += COVERAGE_MEASUREMENT
+
+DEPENDPATH += .\
+              ./src \
+              ./inc \
+              ./../inc \
+              ../../src \
+              ../../inc \
+              ../../resource
+              
+INCLUDEPATH += .\
+               ./inc \
+               ./../inc \
+               ../../inc \
+               ../../../hsmenuworkerstateplugin/inc \
+               ../../../../serviceproviders/hsmenuserviceprovider/inc \               
+               ../../../../hsutils/inc \
+               ../../../../hsdomainmodel/inc/
+               
+symbian {
+    for(docmlFile, docmlFiles): DOCML+=../../$$docmlFile
+    ### get rid of localization warnings
+    CONFIG -= hb
+    load(hb.prf)
+    CONFIG -= symbian_i18n
+    ###
+    TARGET.UID3 = 0x2002DCF9
+    TARGET.CAPABILITY = CAP_APPLICATION AllFiles
+    TARGET.EPOCSTACKSIZE = 0x14000 // 80kB
+    TARGET.EPOCHEAPSIZE = 0x20000 0x1000000 // 128kB - 16MB
+    CONFIG += symbian_test
+    coverage: CONFIG -= symbian_test
+    exists($${EPOCROOT}epoc32/include/platform/mw/XQSettingsManager) {
+        LIBS += -lxqsettingsmanager
+        
+    MMP_RULES += SMPSAFE    
+    }    
+}
+
+RESOURCES += ../../$$qrcFile
+
+include(t_searchviewbuilder.pri)
+                    
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/tsrc/tsrc.pro	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,27 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+TEMPLATE = subdirs
+SUBDIRS  += t_allappsstate \
+            t_collectionsstate \
+            t_allcollectionsstate \
+            t_applibrarystate \
+			t_installedappsstate \
+            t_menuviewbuilder \
+			t_searchviewbuilder
+
+CONFIG  += ordered
+
--- a/homescreenapp/stateplugins/hshomescreenstateplugin/hshomescreenstateplugin.pro	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/hshomescreenstateplugin.pro	Mon Oct 04 00:07:25 2010 +0300
@@ -43,6 +43,7 @@
 symbian: {
     TARGET.UID3 = 0x20022F41
     LIBS += -lxqsettingsmanager
+    MMP_RULES += SMPSAFE
 }
 
 include(hshomescreenstateplugin.pri)
--- a/homescreenapp/stateplugins/hshomescreenstateplugin/inc/hsidlestate.h	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/inc/hsidlestate.h	Mon Oct 04 00:07:25 2010 +0300
@@ -66,6 +66,7 @@
     void event_preRemovePage();
     void event_removePage();
     void event_toggleConnection();
+    void event_MoveWidgetDelete();
 
 protected:
     bool eventFilter(QObject *watched, QEvent *event);
@@ -111,7 +112,9 @@
     void action_moveWidget_connectOrientationChangeEventHandler();
     void action_moveWidget_setWidgetSnap();
     void action_moveWidget_reparentToPage();
+    void action_moveWidgetDelete_deleteWidgetOnTrashbin();
     void action_moveWidget_startWidgetDropEffect();
+    void action_moveWidget_disableInteractive();
     void action_moveWidget_disconnectGestureHandlers();
     void action_moveWidget_disconnectOrientationChangeEventHandler();
     void action_moveWidget_preventZoneAnimation();
@@ -150,6 +153,7 @@
 
 private:
     bool isEditor(const QPointF &point, HsWidgetHost *widget);
+    void stopPageChangeAnimations();
     
 private:
     HbAction *mNavigationAction;
--- a/homescreenapp/stateplugins/hshomescreenstateplugin/inc/hswallpaperselectionstate.h	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/inc/hswallpaperselectionstate.h	Mon Oct 04 00:07:25 2010 +0300
@@ -27,7 +27,7 @@
 class HsSpinnerDialog;
 
 #ifdef Q_OS_SYMBIAN
-class HsImageFetcherClient;
+class HsImageHandlingClient;
 #else
 class XQAIWGetImageClient;
 #endif
@@ -51,7 +51,8 @@
 
 private slots:    
     void action_selectingImage_start();
-    void action_selectingImage_cleanup();
+    void action_imageHandler_cleanup();
+    void action_editingImage_start();
     void action_assigningImage_showWaitDialog();
     void action_assigningImage_start();
     void action_assigningImage_cleanup();
@@ -62,12 +63,12 @@
     void onFetchFailed(int errorCode, const QString &errorMessage);
     void onImageSet();
     void onImageSetFailed();
-
+    void onEditorCompleted();
 private:    
 #ifdef Q_OS_SYMBIAN
-    HsImageFetcherClient *mImageFetcher;
+    HsImageHandlingClient *mImageHandler;
 #else
-    XQAIWGetImageClient *mImageFetcher;
+    XQAIWGetImageClient *mImageHandler;
 #endif
     QString mImagePath;
     HsWallpaper *mWallpaper;    
--- a/homescreenapp/stateplugins/hshomescreenstateplugin/src/hsidlestate.cpp	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/src/hsidlestate.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -228,7 +228,12 @@
 
     QState *state_waitInput = new QState(this);
     setInitialState(state_waitInput);
+
     QState *state_moveWidget = new QState(this);
+    QState *state_moveWidgetMoving = new QState(state_moveWidget);
+    QState *state_moveWidgetDelete = new QState(state_moveWidget);
+    state_moveWidget->setInitialState(state_moveWidgetMoving);
+    
     QState *state_moveScene = new QState(this);
     HsWallpaperSelectionState *state_wallpaperSelectionState =
         new HsWallpaperSelectionState(this);
@@ -252,7 +257,11 @@
     state_waitInput->addTransition(
         this, SIGNAL(event_moveWidget()), state_moveWidget);
 
-    state_moveWidget->addTransition(
+    state_moveWidgetMoving->addTransition(
+        this, SIGNAL(event_waitInput()), state_waitInput);
+    state_moveWidgetMoving->addTransition(
+        this, SIGNAL(event_MoveWidgetDelete()), state_moveWidgetDelete);
+    state_moveWidgetDelete->addTransition(
         this, SIGNAL(event_waitInput()), state_waitInput);
 
     state_moveScene->addTransition(
@@ -298,14 +307,16 @@
     ENTRY_ACTION(state_moveWidget, action_moveWidget_connectGestureHandlers)
     ENTRY_ACTION(state_moveWidget, action_moveWidget_connectOrientationChangeEventHandler)
     ENTRY_ACTION(state_moveWidget, action_moveWidget_setWidgetSnap)
-
     EXIT_ACTION(state_moveWidget, action_moveWidget_reparentToPage)
     EXIT_ACTION(state_moveWidget, action_moveWidget_startWidgetDropEffect)
+    EXIT_ACTION(state_moveWidget, action_moveWidget_disableInteractive)
     EXIT_ACTION(state_moveWidget, action_moveWidget_disconnectGestureHandlers)
     EXIT_ACTION(state_moveWidget, action_moveWidget_disconnectOrientationChangeEventHandler)
     EXIT_ACTION(state_moveWidget, action_moveWidget_preventZoneAnimation)
     EXIT_ACTION(state_moveWidget, action_moveWidget_deleteWidgetSnap)
 
+    ENTRY_ACTION(state_moveWidgetDelete, action_moveWidgetDelete_deleteWidgetOnTrashbin)
+
     ENTRY_ACTION(state_moveScene, action_moveScene_connectGestureHandlers)
     EXIT_ACTION(state_moveScene, action_moveScene_moveToNearestPage)
     EXIT_ACTION(state_moveScene, action_moveScene_disconnectGestureHandlers)
@@ -335,7 +346,9 @@
 */
 void HsIdleState::startPageChangeAnimation(int targetPageIndex, int duration)
 {
-    hbInstance->allMainWindows().first()->setInteractive(false);
+    if (!HsScene::instance()->activeWidget()) {
+        hbInstance->allMainWindows().first()->setInteractive(false);
+    }
     HsPropertyAnimationWrapper *animation = HsGui::instance()->pageChangeAnimation();
     if (animation->isRunning()) {
         animation->stop();
@@ -615,7 +628,6 @@
 void HsIdleState::onWidgetTapStarted(QPointF point, HsWidgetHost *widget)
 {
     HsScene *scene = HsScene::instance();
-    scene->setActiveWidget(widget);
     HsPage *page = scene->activePage();
     QMetaObject::invokeMethod(page, "updateZValues", Qt::QueuedConnection);
     HbVkbHost::HbVkbStatus status = HbVkbHostBridge::instance()->keypadStatus();
@@ -712,7 +724,7 @@
 {
     Q_UNUSED(scenePos)
     Q_UNUSED(widget)
-    emit event_waitInput();
+    emit event_MoveWidgetDelete();
 }
 
 /*!
@@ -765,6 +777,7 @@
 void HsIdleState::action_idle_orientationChanged()
 {
     HsScene::instance()->activePage()->resetNewWidgets();
+    stopPageChangeAnimations();
     action_idle_showActivePage();
 }
 
@@ -1041,7 +1054,6 @@
         HsGui::instance()->pageCrawlingAnimation();
     if (pageCrawlingAnimation->isRunning()&& 
         pageCrawlingAnimation->isForward()) {
-
         pageCrawlingAnimation->setDuration(HSCONFIGURATION_GET(pageChangeZoneReverseAnimationDuration));
         pageCrawlingAnimation->setBackward();
     }
@@ -1049,13 +1061,8 @@
     HsScene *scene = HsScene::instance();
     HsPage *page = scene->activePage();
     HsWidgetHost *widget = scene->activeWidget();
-
-    if (HsGui::instance()->idleWidget()->trashBin()->isUnderMouse()) {
-        HbInstantFeedback::play(HSCONFIGURATION_GET(widgetDropToTrashbinFeedbackEffect));
-        widget->page()->removeWidget(widget);
-        widget->remove();
-        scene->setActiveWidget(0);
-    } else {
+    
+    if (widget) {
         if (widget->page() != page) {
             widget->page()->removeWidget(widget);
             page->addExistingWidget(widget);
@@ -1080,11 +1087,30 @@
 
         widget->savePresentation();
         page->updateZValues();
+
+        widget->visual()->setParentItem(HsScene::instance()->activePage()->visual());
     }
+    HsGui::instance()->idleWidget()->showPageIndicator();
+    
+    emit event_waitInput();
+}
+
 
-    widget->visual()->setParentItem(HsScene::instance()->activePage()->visual());
+/*!
+    Reparents the active widget to the active page.
+*/
+void HsIdleState::action_moveWidgetDelete_deleteWidgetOnTrashbin()
+{
+    HsScene *scene = HsScene::instance();
+    HsWidgetHost *widget = scene->activeWidget();
 
-    HsGui::instance()->idleWidget()->showPageIndicator();
+    if ( widget && HsGui::instance()->idleWidget()->trashBin()->isUnderMouse() ) {
+        HbInstantFeedback::play(HSCONFIGURATION_GET(widgetDropToTrashbinFeedbackEffect));
+        widget->page()->removeWidget(widget);
+        widget->remove();
+        scene->setActiveWidget(0);
+    }
+    emit event_waitInput();
 }
 
 /*!
@@ -1099,6 +1125,21 @@
 }
 
 /*!
+    Set interactive to false.
+*/
+void HsIdleState::action_moveWidget_disableInteractive()
+{
+    HsWidgetHost *widget = HsScene::instance()->activeWidget();
+    if (widget) {
+        HsPropertyAnimationWrapper *animation = HsGui::instance()->pageChangeAnimation();
+        if (animation->isRunning()) {
+            hbInstance->allMainWindows().first()->setInteractive(false);
+        }
+        HsScene::instance()->setActiveWidget(0);
+    }
+}
+
+/*!
     Disconnects gesture handlers
 */
 void HsIdleState::action_moveWidget_disconnectGestureHandlers()
@@ -1512,3 +1553,24 @@
     }
     return isWidgetEditor;
 }
+
+/*!
+    Stops page change and page crawling animations.
+*/
+void HsIdleState::stopPageChangeAnimations()
+{
+    HsPropertyAnimationWrapper *animation = HsGui::instance()->pageChangeAnimation();
+    if (animation->isRunning()) {
+        animation->stop();
+        hbInstance->allMainWindows().first()->setInteractive(true);
+    }        
+    animation->disconnect(this);
+    
+    HsPropertyAnimationWrapper *pageCrawlingAnimation = 
+        HsGui::instance()->pageCrawlingAnimation();
+
+    if (pageCrawlingAnimation->isRunning()) {
+        pageCrawlingAnimation->stop();
+    }
+}
+
--- a/homescreenapp/stateplugins/hshomescreenstateplugin/src/hswallpaperselectionstate.cpp	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/src/hswallpaperselectionstate.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -23,7 +23,7 @@
 #include "hsconfiguration.h"
 
 #ifdef Q_OS_SYMBIAN
-#include "hsimagefetcherclient.h"
+#include "hsimagehandlingclient.h"
 #else
 #include "xqaiwgetimageclient.h"
 #endif
@@ -45,7 +45,7 @@
 */
 HsWallpaperSelectionState::HsWallpaperSelectionState(QState *parent)
   : QState(parent),    
-    mImageFetcher(0),
+    mImageHandler(0),
     mWallpaper(0),    
     mWaitDialog(0)
 {
@@ -69,6 +69,7 @@
     
     QState *state_processing = new QState(this);
     QState *state_selectingImage = new QState(state_processing);
+    QState *state_editingImage = new QState(state_processing);
     QState *state_assigningImage = new QState(state_processing);
     QState *state_errorMessage = new QState(this);
     
@@ -76,9 +77,13 @@
     state_processing->setInitialState(state_selectingImage);
     
     // Transitions
-
+#if defined (Q_OS_SYMBIAN) && !defined (__WINSCW__)
+    state_selectingImage->addTransition(
+        this, SIGNAL(event_assignImage()), state_editingImage);
+#else
     state_selectingImage->addTransition(
         this, SIGNAL(event_assignImage()), state_assigningImage);
+#endif // Q_OS_SYMBIAN
     
     state_processing->addTransition(
         this, SIGNAL(event_error()), state_errorMessage);
@@ -86,7 +91,10 @@
     // Actions
 
     ENTRY_ACTION(state_selectingImage, action_selectingImage_start)
-    EXIT_ACTION(state_selectingImage, action_selectingImage_cleanup)
+    EXIT_ACTION(state_selectingImage, action_imageHandler_cleanup)
+
+    ENTRY_ACTION(state_editingImage, action_editingImage_start)
+    EXIT_ACTION(state_editingImage, action_imageHandler_cleanup)
 
     ENTRY_ACTION(state_assigningImage, action_assigningImage_showWaitDialog)
     ENTRY_ACTION(state_assigningImage, action_assigningImage_start)
@@ -102,27 +110,27 @@
 void HsWallpaperSelectionState::action_selectingImage_start()
 {
 #ifdef Q_OS_SYMBIAN
-    mImageFetcher = new HsImageFetcherClient;
+    mImageHandler = new HsImageHandlingClient;
 #else    
-    mImageFetcher = new XQAIWGetImageClient;
+    mImageHandler = new XQAIWGetImageClient;
 #endif
 
-    connect(mImageFetcher, SIGNAL(fetchCompleted(const QString&)),
+    connect(mImageHandler, SIGNAL(fetchCompleted(const QString&)),
             this, SLOT(onFetchCompleted(const QString&)));
-    connect(mImageFetcher, SIGNAL(fetchFailed(int, const QString&)),
+    connect(mImageHandler, SIGNAL(fetchFailed(int, const QString&)),
             this, SLOT(onFetchFailed(int, const QString&)));
 
-    mImageFetcher->fetch();
+    mImageHandler->fetch();
 }
  
 /*!
 
 */
-void HsWallpaperSelectionState::action_selectingImage_cleanup()
+void HsWallpaperSelectionState::action_imageHandler_cleanup()
 {
-    mImageFetcher->disconnect(this);
-    mImageFetcher->deleteLater();
-    mImageFetcher = 0;
+    mImageHandler->disconnect(this);
+    mImageHandler->deleteLater();
+    mImageHandler = 0;
 }
 
 /*!
@@ -180,6 +188,29 @@
     emit event_waitInput();
 }
 
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC SKIP
+#endif //COVERAGE_MEASUREMENT
+/*!
+
+*/
+void HsWallpaperSelectionState::action_editingImage_start()
+{
+#ifdef Q_OS_SYMBIAN    
+    mImageHandler = new HsImageHandlingClient; 
+
+    connect(mImageHandler, SIGNAL(editorCompleted()),
+            this, SLOT(onEditorCompleted()));
+    connect(mImageHandler, SIGNAL(editorFailed(int, const QString&)),
+            this, SLOT(onFetchFailed(int, const QString&)));
+
+    mImageHandler->edit(mImagePath);
+#endif //Q_OS_SYMBIAN
+}
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC ENDSKIP
+#endif //COVERAGE_MEASUREMENT
+
 /*!
 
 */
@@ -214,3 +245,17 @@
 {
     emit event_error();
 }
+
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC SKIP
+#endif //COVERAGE_MEASUREMENT
+/*!
+
+*/
+void HsWallpaperSelectionState::onEditorCompleted()
+{    
+    emit event_waitInput();
+}
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC ENDSKIP
+#endif //COVERAGE_MEASUREMENT
Binary file homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/foundicon.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/inc/t_hshomescreenstateplugin.h	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,112 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Tests for HsHomeScreenStatePlugin class.
+*
+*/
+
+#include <QtTest/QtTest>
+#include <QtGui>
+#include "hshomescreenstateplugin.h"
+#include "hsidlestate.h"
+#include "hsloadscenestate.h"
+#include "hscontentservice.h"
+#include "hspage.h"
+#include "hswidgethost.h"
+
+/**
+* @test Test class for homescreen::hsutils modules.
+*/
+class HomeScreenStatePluginTest : public QObject
+{
+    Q_OBJECT
+
+signals:
+    void finishStateMachine();
+
+private slots:
+
+    /**
+     * initialize
+     */
+    void initTestCase();
+    void cleanup();
+    void init();
+    void cleanupTestCase();
+
+    /**
+     * hswallpaperselectionstate.cpp
+     */
+    void testWallpaperSelectionStateConstruction();
+    void testWallpaperSelectionStateImageSelection();
+    void testWallpaperSelectionStateImageAssignment();
+    void testWallpaperSelectionStateSimpleMethods();
+
+    /**
+     * hsloadscenestate.cpp
+     */
+    void testLoadSceneStateConstructors();
+    void testLoadSceneStateOnEntryExit();
+#ifdef Q_OS_SYMBIAN
+    void testLoadSceneStateHandleKeyChange();
+#endif
+    /**
+     * hsrootstate.cpp
+     */
+    void testLoadRootStateConstructors();
+    void testLoadRootStateOnEntryExit();
+
+    /**
+     * t_hsbackuprestorestate.cpp
+     */
+    void testLoadBackupRestoreStateConstructors();
+    void testLoadBackupRestoreStateOnEntryExit();
+
+    /**
+     * hsidlestate.cpp
+     */
+    void testIdleStateConstruction();
+    void testIdleStateEntryAndExit();
+    void testIdleStatePageLayerPos();
+    void testIdleStatePageChangeAnimation();
+    void testIdleStatePageChangeZones();
+    void testIdleStateAddPage();
+    void testIdleStateRemoveActivePage();
+    void testIdleStateRemovePage();
+    void testIdleStateToggleConnection();
+    void testIdleStateTapPage();
+    void testIdleStatePanPage();
+    void testIdleStateTapWidget();
+    void testIdleStateDragWidget();
+    void testIdleStateDeleteWidget();
+    void testIdleStateMisc();
+    void testIdleStateChromeBehaviour();
+    void testEventFilter();
+    void testIdleStateSnapToObject();
+    void testIdleStateSnapToObjectSnapEffectDisabled();
+    void testIdleStateSnapToObjectSnappingDisabled();
+    void testOnVerticalSnapLineTimerTimeout();
+    void testOnHorizontalSnapLineTimerTimeout();
+    void testShowHorizontalLine();
+    void testEditorAndVKB();
+    
+   
+
+private:
+    void createSceneAndWindow(int pageCount, int defaultPageIndex = 0, int maximumPageCount = 8);
+    void deleteSceneAndWindow();
+
+private:
+    HbMainWindow *mMainWindow;
+    int mImageProcessingDelay;
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/inc/testwidget.h	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,51 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#ifndef HOMESCREEN_TEST_TESTWIDGET_H
+#define HOMESCREEN_TEST_TESTWIDGET_H
+
+#include <HbWidget>
+
+class TestWidget : public HbWidget
+{
+    Q_OBJECT
+
+public:
+    TestWidget(QGraphicsItem *parent = 0, Qt::WindowFlags flags = 0);
+    ~TestWidget();
+
+signals:
+    void finished();
+
+public slots:
+    void onInitialize();
+    void onShow();
+    void onHide();
+
+public:
+    QRectF boundingRect() const;
+    QPainterPath shape() const;
+    void setSucceeded() { emit finished(); }
+
+protected:
+    void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
+
+private:
+    friend class HomeScreenStatePluginTest;
+};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/installs_win32.pri	Mon Oct 04 00:07:25 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:
+#
+
+testfiles.path = ../../../../../../bin/hstests/
+testfiles.files = ./debug/t_hshomescreenstateplugin.exe
+
+testresources.path = ../../../../../../bin/hstests/hsresources/
+testresources.files = ../../resource/controllayer.docml
+
+docmltestresources_local.path = ./hsresources/
+docmltestresources_local.files = ../../resource/controllayer.docml
+
+dtestresources_local.path = ./debug/hsresources/
+dtestresources_local.files = ../../../../hsdomainmodel/resource/controllayer.docml
+
+image.path = ./debug
+image.files = ./foundicon.png
+
+INSTALLS += testfiles testresources docmltestresources_local dtestresources_local image
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/sis/t_hshomescreenstateplugin.pkg	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,35 @@
+;
+; 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:
+;
+
+; Language
+&EN
+
+; SIS header: name, uid, version
+#{"t_hshomescreenstateplugin"},(0x20022F60),1,0,0
+
+; Localised Vendor name
+%{"Nokia"}
+
+; Unique Vendor name
+:"Nokia"
+
+; Supports S60 5th Edition
+[0x1028315F], 0, 0, 0, {"S60ProductID"}
+
+; HS Framework Core unittest
+"/epoc32/release/armv5/urel/t_hshomescreenstateplugin.exe"                      - "c:/sys/bin/t_hshomescreenstateplugin.exe"
+"/epoc32/data/z/private/10003a3f/import/apps/t_hshomescreenstateplugin_reg.rsc" - "c:/private/10003a3f/import/apps/t_hshomescreenstateplugin_reg.rsc"
+"/epoc32/data/z/resource/apps/t_hshomescreenstateplugin.rsc"                    - "c:/resource/apps/t_hshomescreenstateplugin.rsc"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/sis/t_hshomescreenstateplugin_sisx.bat	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,30 @@
+@rem
+@rem Copyright (c) 2009 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 t_hshomescreenstateplugin.sisx del t_hshomescreenstateplugin.sisx
+
+makesis t_hshomescreenstateplugin.pkg
+signsis t_hshomescreenstateplugin.sis t_hshomescreenstateplugin.sisx ../../../../../internal/sis/rd.cer ../../../../../internal/sis/rd-key.pem
+
+if exist t_hshomescreenstateplugin.sisx (
+echo t_hshomescreenstateplugin.sisx creation SUCCEEDED
+del t_hshomescreenstateplugin.sis
+)
+
+if not exist t_hshomescreenstateplugin.sisx (
+echo t_hshomescreenstateplugin.sisx creation FAILED
+)
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/src/hsbackuprestoreobserver_mock.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,90 @@
+/*
+* 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"
+
+
+/*!
+    Singleton. 
+*/
+HsBackupRestoreObserver *HsBackupRestoreObserver::instance()
+{
+    if (!mInstance) {
+        mInstance = new HsBackupRestoreObserver();
+    }
+    return mInstance;
+}
+
+/*!
+    Constructs a new observer with the given \a parent object.
+*/
+HsBackupRestoreObserver::HsBackupRestoreObserver(QObject *parent)
+ : QObject(parent),
+   mBUROngoing(false)
+{
+}
+
+/*!
+    Destructor.
+*/
+HsBackupRestoreObserver::~HsBackupRestoreObserver()
+{
+}
+
+/*!
+    Called when backup/restore is started.
+*/
+void HsBackupRestoreObserver::backupRestoreStarted()
+{
+	mBUROngoing = true;
+	emit event_backupRestoreStarted();
+}
+
+/*!
+    Called when backup/restore is completed.
+*/
+void HsBackupRestoreObserver::backupRestoreCompleted()
+{
+	mBUROngoing = false;
+	emit event_backupRestoreCompleted();
+}
+
+/*!
+    Called when Home screen is ready for backup/restore.
+*/
+void HsBackupRestoreObserver::readyForBUR()
+{
+}
+
+/*!
+    Returns true if bacup/restore is ongoing.
+*/
+bool HsBackupRestoreObserver::checkBUR()
+{
+	if (mBUROngoing) {
+		return true;
+	}
+    return false;
+}
+/*!
+    Points to the observer instance.
+*/
+HsBackupRestoreObserver *HsBackupRestoreObserver::mInstance(0);
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/src/hsdatabase_mock.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,228 @@
+/*
+* 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 <QSqlDatabase>
+#include <QSqlQuery>
+#include <QSqlRecord>
+#include <QVariantHash>
+#include <QDir>
+
+#include "hsdatabase.h"
+#include "hsdomainmodeldatastructures.h"
+
+HsDatabase::HsDatabase(QObject *parent)
+  : QObject(parent)
+{
+}
+
+HsDatabase::~HsDatabase()
+{
+ 
+}
+
+void HsDatabase::setConnectionName(const QString &name)
+{
+    mConnectionName = name;
+}
+ 
+QString HsDatabase::connectionName() const
+{
+    return mConnectionName;
+}
+
+void HsDatabase::setDatabaseName(const QString &name)
+{
+    mDatabaseName = QDir::toNativeSeparators(name);
+}
+ 
+QString HsDatabase::databaseName() const
+{
+    return mDatabaseName;
+}
+
+bool HsDatabase::open()
+{
+    return true;
+}
+ 
+void HsDatabase::close()
+{
+    
+}
+
+bool HsDatabase::transaction()
+{
+    return true;
+}
+ 
+bool HsDatabase::rollback()
+{
+    return true;
+}
+ 
+bool HsDatabase::commit()
+{
+    return true;
+}
+
+bool HsDatabase::scene(HsSceneData &)
+{
+    return true;
+}
+
+bool HsDatabase::pages(QList<HsPageData> &)
+{
+    return true;
+}
+
+bool HsDatabase::page(HsPageData &)
+{
+   return true;
+}
+
+bool HsDatabase::insertPage(HsPageData &)
+{
+   return true;
+}
+
+bool HsDatabase::updatePage(const HsPageData &)
+{
+    return true;
+}
+
+bool HsDatabase::deletePage(int )
+{
+   return true;
+}
+
+bool HsDatabase::widgets(int , QList<HsWidgetData> &)
+{
+   return true;
+}
+
+bool HsDatabase::widgets(const QString &, QList<HsWidgetData> &)
+{
+    return true;
+}
+
+bool HsDatabase::widgets(const QString &, const QVariantHash &, int &count)
+{
+    count = 0;
+    return true;
+}
+bool HsDatabase::widget(HsWidgetData &)
+{
+    return true;
+}
+
+bool HsDatabase::insertWidget(HsWidgetData &)
+{
+    return true;
+}
+
+bool HsDatabase::updateWidget(const HsWidgetData &)
+{
+    return true;
+}
+
+bool HsDatabase::deleteWidget(int )
+{
+    return true;
+}
+
+bool HsDatabase::deleteWidgets(const QString &)
+{
+    return true;
+}
+
+bool HsDatabase::widgetPresentation(HsWidgetPresentationData &)
+{
+    return true;
+}
+
+bool HsDatabase::setWidgetPresentation(const HsWidgetPresentationData &)
+{
+    return true;
+}
+
+bool HsDatabase::deleteWidgetPresentation(int, Qt::Orientation)
+{
+    return true;
+}
+
+bool HsDatabase::widgetPreferences(int , QVariantHash &)
+{
+    return true;
+}
+
+bool HsDatabase::widgetPreference(int , const QString &, QVariant &)
+{
+    return true;
+}
+
+bool HsDatabase::setWidgetPreferences(int , const QVariantHash &)
+{
+    return true;
+}
+ 
+void HsDatabase::setInstance(HsDatabase *instance)
+{
+    if (mInstance != instance) {
+        HsDatabase *oldInstance = mInstance;
+        mInstance = instance;
+        delete oldInstance;
+    }
+}
+
+HsDatabase *HsDatabase::instance()
+{
+    return mInstance;
+}
+
+HsDatabase *HsDatabase::takeInstance()
+{
+    HsDatabase *instance = mInstance;
+    mInstance = 0;
+    return instance;
+}
+  
+bool HsDatabase::checkConnection() const
+{
+    return true;
+}
+
+bool HsDatabase::configuration(QVariantHash &configuration)
+{
+    Q_UNUSED(configuration)
+    return true;
+}
+
+bool HsDatabase::updateWidgetZValues(const QHash<int, qreal> &data, Qt::Orientation orientation)
+{
+    Q_UNUSED(data)
+    Q_UNUSED(orientation)
+    return true;
+}
+
+bool HsDatabase::matchWidgetPreferences(const QVariantHash &preferences, const QMultiMap<QString, QString>& storedPreferences)
+{
+    Q_UNUSED(preferences)
+    Q_UNUSED(storedPreferences)
+    return true;
+}
+
+HsDatabase *HsDatabase::mInstance(0);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/src/hsgui_mock.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,195 @@
+/*
+* 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 <HbMainWindow>
+#include <HbView>
+#include <HbMenu>
+#include <HbAction>
+
+#include "hsgui.h"
+#include "hsidlewidget.h"
+#include "hsscene.h"
+#include "hspropertyanimationwrapper.h"
+
+namespace {
+      const char gApplicationLibraryIconName[] = "qtg_mono_applications_all";
+}
+
+/*!
+    \class HsGui
+    \ingroup group_hsdomainmodel
+    \brief Represents a view in the framework.
+    HsGui includes common UI components for Home screen.
+*/
+
+HsGui *HsGui::mInstance(0);
+
+struct HsGuiImpl
+{
+    HsIdleWidget *mIdleWidget;
+    HbView *mIdleView;
+    HbMainWindow *mWindow;
+    HbAction *mNavigationAction;
+    HsPropertyAnimationWrapper *mPageChangeAnimation;
+    HsPropertyAnimationWrapper *mPageCrawlingAnimation;
+};
+
+
+
+HsGui::~HsGui()
+{
+    if (mImpl->mNavigationAction) {
+        delete mImpl->mNavigationAction;
+    }
+
+    if (mImpl->mPageChangeAnimation) {
+        mImpl->mPageChangeAnimation->stop();
+        delete mImpl->mPageChangeAnimation;
+    }
+    if (mImpl->mPageCrawlingAnimation) {
+        mImpl->mPageCrawlingAnimation->stop();
+        delete mImpl->mPageCrawlingAnimation;
+    }
+    delete mImpl;
+}
+
+HsGui *HsGui::setInstance(HsGui *instance)
+{
+    HsGui *old = mInstance;
+    if (mInstance != instance) {
+        mInstance = instance;
+    }
+    return old;
+}
+
+HsGui *HsGui::instance()
+{
+    if (!mInstance) {
+        mInstance = new HsGui(QCoreApplication::instance());
+    }
+    return mInstance;
+}
+
+HsGui *HsGui::takeInstance()
+{
+    HsGui *instance = mInstance;
+    mInstance = 0;
+    return instance;
+}
+
+void HsGui::setupIdleUi()
+{
+    if (!mImpl->mIdleWidget) {
+        mImpl->mIdleWidget = new HsIdleWidget;
+        mImpl->mIdleView = mImpl->mWindow->addView(mImpl->mIdleWidget);
+        mImpl->mIdleView->setContentFullScreen();
+
+        delete mImpl->mNavigationAction;
+        mImpl->mNavigationAction = 0;
+        mImpl->mNavigationAction = new HbAction;
+        mImpl->mNavigationAction->setIcon(HbIcon(gApplicationLibraryIconName));
+        mImpl->mNavigationAction->setObjectName("applib_navigation_action");
+        connect(mImpl->mNavigationAction, SIGNAL(triggered()), SIGNAL(navigateToApplibrary()));
+        mImpl->mIdleView->setNavigationAction(mImpl->mNavigationAction);
+    }
+    mImpl->mWindow->setCurrentView(mImpl->mIdleView);    
+}
+
+void HsGui::cleanupIdleUi()
+{
+    if (mImpl->mIdleView) {
+        mImpl->mIdleView->setNavigationAction(0);
+        delete mImpl->mNavigationAction;
+        mImpl->mNavigationAction = 0;
+        
+        mImpl->mWindow->removeView(mImpl->mIdleView);
+        delete mImpl->mIdleView;
+        mImpl->mIdleView = 0;
+
+        delete mImpl->mPageChangeAnimation;
+        mImpl->mPageChangeAnimation = 0;
+        
+        delete mImpl->mPageCrawlingAnimation;
+        mImpl->mPageCrawlingAnimation = 0;
+    }
+    
+}
+
+void HsGui::setOrientation(Qt::Orientation orientation)
+{
+    mImpl->mWindow->setOrientation(orientation);
+}
+
+Qt::Orientation HsGui::orientation()
+{
+    return mImpl->mWindow->orientation();
+}
+
+HbView *HsGui::idleView() const
+{
+    return mImpl->mIdleView;
+}
+
+HsIdleWidget *HsGui::idleWidget() const
+{
+    return mImpl->mIdleWidget;
+}
+
+QRectF HsGui::layoutRect() const
+{
+    return mImpl->mWindow->layoutRect();
+}
+
+void HsGui::show()
+{
+    mImpl->mWindow->raise();
+    mImpl->mWindow->show();
+}
+
+HsPropertyAnimationWrapper *HsGui::pageChangeAnimation()
+{
+    if (!mImpl->mPageChangeAnimation) {
+        mImpl->mPageChangeAnimation = new HsPropertyAnimationWrapper;
+        mImpl->mPageChangeAnimation->setTargetObject(mImpl->mIdleWidget);
+        mImpl->mPageChangeAnimation->setPropertyName("sceneX"); 
+    }
+    return mImpl->mPageChangeAnimation;
+}
+HsPropertyAnimationWrapper *HsGui::pageCrawlingAnimation()
+{
+    if (!mImpl->mPageCrawlingAnimation) {
+        mImpl->mPageCrawlingAnimation = new HsPropertyAnimationWrapper;
+        mImpl->mPageCrawlingAnimation->setTargetObject(mImpl->mIdleWidget);
+        mImpl->mPageCrawlingAnimation->setPropertyName("sceneX"); 
+    }
+    return mImpl->mPageCrawlingAnimation;
+}
+
+HsGui::HsGui(QObject *parent):
+    QObject(parent),mImpl(new HsGuiImpl)
+{
+    mImpl->mIdleView = 0;
+    mImpl->mIdleWidget = 0;
+    mImpl->mNavigationAction = 0;
+    mImpl->mPageChangeAnimation = 0;
+    mImpl->mPageCrawlingAnimation = 0;
+
+    mImpl->mWindow = hbInstance->allMainWindows().first();
+    connect(mImpl->mWindow, SIGNAL(orientationChanged(Qt::Orientation)),
+        SIGNAL(orientationChanged(Qt::Orientation)));
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/src/hsimagehandlingclient_mock.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,102 @@
+/*
+* 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:  Mocked Photos image handling client.
+*
+*/
+
+
+#include "hsimagehandlingclient.h"
+#include <QVariant>
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+#ifdef Q_OS_SYMBIAN
+HsImageHandlingClient::HsImageHandlingClient(QObject *parent)
+    : QObject(parent),
+      mReq(0)
+#else
+HsImageHandlingClient::HsImageHandlingClient(QObject *parent)
+    : QObject(parent)
+#endif
+{
+    setProperty("testSetToFail", QVariant(true));
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+HsImageHandlingClient::~HsImageHandlingClient()
+{
+#ifdef Q_OS_SYMBIAN
+    delete mReq;
+#endif
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void HsImageHandlingClient::fetch()
+{
+    if (property("testSetToFail").value<bool>() == true)
+    {
+        handleError(-1,"KErrNotFound");
+    }
+    else
+    {
+         handleOk("");
+    }
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void HsImageHandlingClient::edit(const QString &imagePath)
+{
+    Q_UNUSED(imagePath);
+
+    if (property("testSetToFail").value<bool>() == true)
+    {
+        handleEditorError(-1,"KErrNotFound");
+    }
+    else
+    {
+        handleEditorOk("");
+    }    
+}
+
+// Aiw request responses
+void HsImageHandlingClient::handleOk(const QVariant& result)
+{
+    emit fetchCompleted(result.toString());
+}
+
+void HsImageHandlingClient::handleError(int errorCode, const QString& errorMessage)
+{
+    Q_UNUSED(errorCode);
+    Q_UNUSED(errorMessage);
+    emit fetchFailed(-1, "KErrNotFound");
+}
+
+void HsImageHandlingClient::handleEditorOk(const QVariant& result)
+{
+    Q_UNUSED(result)
+    emit editorCompleted();
+}
+
+void HsImageHandlingClient::handleEditorError(int errorCode,
+                                             const QString& errorMessage)
+{
+    emit editorFailed(errorCode, errorMessage);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/src/hsmenuservice_mock.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,23 @@
+/*
+* 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 "hsmenuservice.h"
+
+bool HsMenuService::launchTaskSwitcher()
+{
+    return true;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/src/hsmessageboxwrapper_mock.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,78 @@
+/*
+* 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 "hsmessageboxwrapper.h"
+
+/*!
+    \class HsMessageBoxWrapper
+    \ingroup group_hsutils
+    \brief 
+*/
+struct HsMessageBoxWrapperImpl{
+
+};
+/*!
+
+*/
+HsMessageBoxWrapper::HsMessageBoxWrapper(QObject *parent)
+  : QObject(parent), mImpl(new HsMessageBoxWrapperImpl)
+{
+}
+
+/*!
+
+*/
+HsMessageBoxWrapper::~HsMessageBoxWrapper()
+{
+  delete mImpl;
+}
+
+/*!
+
+*/
+void HsMessageBoxWrapper::setHeader(const QString &header)
+{
+ 	Q_UNUSED(header);
+}
+/*!
+
+*/
+void HsMessageBoxWrapper::setQueryText(const QString &queryText)
+{
+   	Q_UNUSED(queryText);
+}
+/*!
+
+*/
+void HsMessageBoxWrapper::show()
+{
+    emit accepted();   
+}
+/*!
+
+*/
+void HsMessageBoxWrapper::close()
+{
+}
+
+/*!
+
+*/
+void HsMessageBoxWrapper::onDialogClosed(int action)
+{
+    Q_UNUSED(action)
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/src/hspage_mock.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,487 @@
+/*
+* 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 <HbInstance>
+
+#include "hsdomainmodeldatastructures.h"
+#include "hspage.h"
+#include "hspagetoucharea.h"
+#include "hspagenewwidgetlayout.h"
+#include "hsscene.h"
+#include "hswidgethost.h"
+#include "hswidgethostvisual.h"
+#include "hswallpaper.h"
+#include "hswidgetpositioningonwidgetadd.h"
+#include "hswidgetpositioningonorientationchange.h"
+#include "hsconfiguration.h"
+#include "hspagevisual.h"
+#include "hsgui.h" 
+/*!
+    \class HsPage
+    \ingroup group_hsdomainmodel
+    \brief Represents a page in the framework.
+    HsPage contains group of widgets. HsPage can have a wallpaper.
+*/
+
+/*!
+    Constructor.
+
+    \a parent Owner.
+    \a aFlags Window flags.
+*/
+HsPage::HsPage(QObject* parent)
+    : QObject(parent),
+      mDatabaseId(-1),
+      mPageVisual(new HsPageVisual),
+      mWallpaper(0),
+      mRemovable(true),     
+      mPageMargin(0.0)
+{
+    //Page margin
+    mPageMargin = HSCONFIGURATION_GET(pageMargin);
+    connect(HsConfiguration::instance(), SIGNAL(propertyChanged(QString)), SLOT(onPageMarginChanged(QString)));
+}
+
+/*!
+    Destructor.
+*/
+HsPage::~HsPage()
+{
+    delete mWallpaper;
+    delete mPageVisual;
+}
+
+/*!
+    Returns the database id.
+*/
+int HsPage::databaseId() const
+{
+    return mDatabaseId;
+}
+
+/*!
+    Sets the database id to \a id.
+*/
+void HsPage::setDatabaseId(int id)
+{
+    mDatabaseId = id;
+}
+
+
+/*!
+    Loads widgets.
+*/
+bool HsPage::load()
+{
+    if (HSCONFIGURATION_GET(sceneType) == HsConfiguration::PageWallpapers) {
+        mWallpaper = new HsPageWallpaper(this);
+    }
+
+    HsWidgetHost *widget = new HsWidgetHost(-1);
+    mWidgets.append(widget);
+    connectWidget(widget);
+    widget->setPage(this);   
+    widget->startWidget();
+    return true;
+}
+
+/*!
+    Return wallpaper.
+*/
+HsWallpaper *HsPage::wallpaper() const
+{
+    return mWallpaper;
+}
+/*!
+    Add given existing \a widgetHost to a page. Returns true if successful
+*/
+bool HsPage::addExistingWidget(HsWidgetHost *widgetHost)
+{
+    if (!widgetHost) {
+        return false;
+    }
+
+    if (mWidgets.contains(widgetHost)) {
+        return true;
+    }
+
+    if (!widgetHost->setPage(this)) {
+        return false;
+    }
+
+    connectWidget(widgetHost);
+    mWidgets << widgetHost;  
+
+    return true;
+ }
+
+/*!
+    Remove given \a widgetHost from a page. Widget is not deleted.
+    Returns true if successful
+*/
+bool HsPage::removeWidget(HsWidgetHost *widgetHost)
+{
+    if (!widgetHost || !widgetHost->setPage(0)) {
+        return false;
+    }
+
+    disconnectWidget(widgetHost);
+    mWidgets.removeOne(widgetHost);  
+
+    return true;
+}
+
+/*!
+    Returns list of new widgets belonging to a page. Widgets which are
+    not yet layouted are considered as new widgets.
+*/
+QList<HsWidgetHost *> HsPage::newWidgets()
+{
+    return mNewWidgets;
+}
+
+/*!
+    Adds new widget into a page. Returns true if successfull.
+*/
+bool HsPage::addNewWidget(HsWidgetHost* widgetHost, const QPointF &touchPoint)
+{
+    Q_UNUSED(touchPoint)
+    if (!widgetHost || mWidgets.contains(widgetHost)) {
+        return false;
+    }
+
+    if (mNewWidgets.contains(widgetHost)) {
+        return true;
+    }
+
+    HsWidgetPresentationData presentation;
+    presentation.orientation = HsGui::instance()->orientation();
+    if (!widgetHost->getPresentation(presentation)) {
+        presentation.orientation = HsGui::instance()->orientation();
+        presentation.setPos(QPointF());
+        presentation.zValue = 0;
+        widgetHost->savePresentation(presentation);
+    }    
+
+    connectWidget(widgetHost);
+    mNewWidgets << widgetHost;
+
+    return true;
+}
+
+/*!
+    Layouts all the new widgets
+*/
+void HsPage::layoutNewWidgets()
+{
+    if (mNewWidgets.isEmpty()) {
+        return;
+    }
+
+    updateZValues();
+    HsWidgetHost *widget = 0;
+    for (int i = 0; i < mNewWidgets.count(); ++i) {
+        widget = mNewWidgets.at(i);
+        widget->setPage(this);      
+        widget->showWidget();   
+    }
+    mWidgets << mNewWidgets;
+    mNewWidgets.clear();
+}
+
+/*!
+    Clears new widgets list and resets layout.
+*/
+void HsPage::resetNewWidgets()
+{
+    mNewWidgets.clear();   
+}
+
+/*!
+    Remove page and all it's contained widgets from database
+*/
+bool HsPage::deleteFromDatabase()
+{
+	//Not used in mock
+    return true;
+}
+
+/*!
+    Return list of widgets belonging to a page
+*/
+QList<HsWidgetHost *> HsPage::widgets() const
+{
+    return mWidgets;
+}
+
+/*!
+    Returns true if the page can be removed. Otherwise,
+    returns false.
+*/
+bool HsPage::isRemovable() const
+{
+    return mRemovable;
+}
+
+/*!
+    Sets removable flag to \a removable.
+*/
+void HsPage::setRemovable(bool removable)
+{
+    mRemovable = removable;
+}
+
+/*!
+    Return true if page is default page.
+*/
+bool HsPage::isDefaultPage() const
+{
+    return mDatabaseId == HSCONFIGURATION_GET(defaultPageId);
+}
+
+/*!
+    Return true if page is active page.
+*/
+bool HsPage::isActivePage() const
+{
+    return this == HsScene::instance()->activePage();
+}
+
+/*!
+    Create page into database and return instance of a new page.
+*/
+HsPage *HsPage::createInstance(const HsPageData &pageData)
+{
+    Q_UNUSED(pageData);
+    HsPage *page = new HsPage;
+    return page;
+}
+
+/*!
+    The widget is bounded in the rectangle which is smaller by PageMargin on all sides of page.
+*/
+QPointF HsPage::adjustedWidgetPosition(const QRectF &origWidgetRect)
+{
+    QRectF widgetAreaRect = contentGeometry();
+    qreal widgetX = qBound(widgetAreaRect.left(), origWidgetRect.x(), widgetAreaRect.right() - origWidgetRect.width());
+    qreal widgetY = qBound(widgetAreaRect.top(), origWidgetRect.y(), widgetAreaRect.bottom() - origWidgetRect.height());
+
+    return QPointF(widgetX, widgetY);
+}
+
+/*!
+    Returns rect of rectangular where widgets are allowed to be placed in the page.
+*/
+QRectF HsPage::contentGeometry()
+{
+    return contentGeometry(HsGui::instance()->orientation());
+}
+
+/*!
+    Returns rect of rectangular where widgets are allowed to be placed in the page.
+*/
+QRectF HsPage::contentGeometry(Qt::Orientation orientation)
+{
+    QRectF pageRect;
+    //pageRect = rect();
+
+    if (orientation != HsGui::instance()->orientation()) {
+        qreal width = pageRect.width();
+        qreal height = pageRect.height();
+        pageRect.setWidth(height);
+        pageRect.setHeight(width);
+    }
+
+    //Take care of chrome in both orientation
+    pageRect.setTop(64);
+
+    //Shrink by page margins at each side
+    return pageRect.adjusted(mPageMargin, mPageMargin, -mPageMargin, -mPageMargin);
+}
+
+/*!
+    Returns rect of rectangular where widgets are allowed to be placed in the page.
+*/
+QRectF HsPage::contentRect()
+{
+    return contentRect(HsGui::instance()->orientation());
+}
+
+/*!
+    Returns rect of rectangular where widgets are allowed to be placed in the page.
+*/
+QRectF HsPage::contentRect(Qt::Orientation orientation)
+{
+    QRectF rect = contentGeometry(orientation);
+    rect.moveTopLeft(QPointF(0,0));
+    return rect;
+}
+
+/*!
+    Calls onShow() for contained widgets.
+*/
+void HsPage::showWidgets()
+{    
+}
+
+/*!
+    Calls onHide() for contained widgets.
+*/
+void HsPage::hideWidgets()
+{
+}
+
+/*!
+    Propagate online state to widgets.
+*/
+void HsPage::setOnline(bool online)
+{
+    foreach (HsWidgetHost *widget, mNewWidgets) {
+        widget->setOnline(online);
+    }
+    foreach (HsWidgetHost *widget, mWidgets) {
+        widget->setOnline(online);
+    }
+}
+
+/*!
+    Update widgets z-values and persist those. Active widget has top most
+    z-value.
+*/
+void HsPage::updateZValues()
+{
+
+}
+
+/*!
+    Return this page's index.
+*/
+int HsPage::pageIndex()
+{
+    return HsScene::instance()->pages().indexOf(this);
+}
+
+/*!
+    Utility to connect widget signals to page.
+*/
+void HsPage::connectWidget(HsWidgetHost *widget)
+{
+    connect(widget, SIGNAL(finished()), SLOT(onWidgetFinished()));
+    connect(widget, SIGNAL(faulted()), SLOT(onWidgetFaulted()));
+    connect(widget->visual(), SIGNAL(resized()), SLOT(onWidgetResized()));
+    connect(widget, SIGNAL(available()), SLOT(onWidgetAvailable()));
+    connect(widget, SIGNAL(unavailable()), SLOT(onWidgetUnavailable()));
+}
+/*!
+    Disconnect widget signals from page
+*/
+void HsPage::disconnectWidget(HsWidgetHost *widget)
+{
+    widget->disconnect(this);
+}
+/*!
+    Disconnect and remove widget
+*/
+void HsPage::onWidgetFinished()
+{
+    HsWidgetHost *widget = qobject_cast<HsWidgetHost *>(sender());
+
+    // It can be in new widget list if we haven't layouted it yet
+    // or layouted new widget and widget list
+    if (!mNewWidgets.removeOne(widget)) {
+        mWidgets.removeOne(widget);
+    }
+
+    disconnectWidget(widget);
+    widget->remove();
+}
+/*!
+    Remove widget if it faulted
+*/
+void HsPage::onWidgetFaulted()
+{
+    onWidgetFinished();
+}
+
+/*!
+    Calculates new widget position on page when widget size changes. If page has layout then there are new widgets
+    and we use layout to calculate new widget positions.
+*/
+void HsPage::onWidgetResized()
+{
+}
+/*!
+    Show widget if it came available
+*/
+void HsPage::onWidgetAvailable()
+{
+    HsWidgetHost *widget = qobject_cast<HsWidgetHost *>(sender());
+
+    mUnavailableWidgets.removeOne(widget);
+    mWidgets.append(widget);
+
+    widget->startWidget(isActivePage());
+}
+/*!
+    Update internal bookkeeping and hide widget
+*/
+void HsPage::onWidgetUnavailable()
+{
+    HsWidgetHost *widget = qobject_cast<HsWidgetHost *>(sender());
+
+    if (mWidgets.contains(widget)) {
+        mWidgets.removeOne(widget);
+    } else if (mNewWidgets.contains(widget)) {
+        mNewWidgets.removeOne(widget);
+    } else {
+        return;
+    }
+
+    mUnavailableWidgets.append(widget);
+}
+
+/*!
+    Run positioning algorithm for widgets which don't have position on
+    target orientation. Otherwise set orientation positions for widgets.
+*/
+void HsPage::onOrientationChanged(Qt::Orientation orientation)
+{
+    Q_UNUSED(orientation)
+}
+
+void HsPage::onPageMarginChanged(const QString &value)
+{
+    if (value == "pageMargin") {
+        mPageMargin = HSCONFIGURATION_GET(pageMargin);
+
+        if (!mWidgets.isEmpty()) {
+            foreach (HsWidgetHost *widget, mWidgets) {        
+                widget->savePresentation();
+            }
+        }
+
+        if (!mNewWidgets.isEmpty()) {
+            foreach (HsWidgetHost *widget, mNewWidgets) {          
+                widget->savePresentation();
+            }
+        }
+    }
+}
+HsPageVisual *HsPage::visual() const
+{
+	return mPageVisual;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/src/hspropertyanimationwrapper_mock.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,111 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#include <QPropertyAnimation>
+#include "hspropertyanimationwrapper.h"
+
+/*!
+    \class HsMessageBoxWrapper
+    \ingroup group_hsutils
+    \brief 
+*/
+struct HsPropertyAnimationWrapperImpl
+{
+public:
+    bool running;
+    bool forward;
+};
+
+/*!
+
+*/
+HsPropertyAnimationWrapper::HsPropertyAnimationWrapper(QObject *parent)
+  : QObject(parent),mImpl(new HsPropertyAnimationWrapperImpl)
+{
+    mImpl->running = false;
+    mImpl->forward = true;
+}
+
+/*!
+
+*/
+HsPropertyAnimationWrapper::~HsPropertyAnimationWrapper()
+{
+  
+}
+
+/*!
+
+*/
+void HsPropertyAnimationWrapper::setTargetObject(QObject *target)
+{
+   Q_UNUSED(target)
+}
+/*!
+
+*/
+void HsPropertyAnimationWrapper::setPropertyName(const QByteArray &propertyName)
+{
+   Q_UNUSED(propertyName)
+}
+
+bool HsPropertyAnimationWrapper::isRunning()
+{
+    return mImpl->running;
+}
+void HsPropertyAnimationWrapper::setEndValue(const QVariant &value)
+{
+     Q_UNUSED(value)
+}
+void HsPropertyAnimationWrapper::setDuration(int msecs)
+{
+     Q_UNUSED(msecs)
+}
+void HsPropertyAnimationWrapper::setForward()
+{
+    mImpl->forward = true;
+}
+
+void HsPropertyAnimationWrapper::setBackward()
+{
+     mImpl->forward = false;
+}
+
+bool HsPropertyAnimationWrapper::isForward() const
+{
+    return mImpl->forward;
+}
+void HsPropertyAnimationWrapper::start()
+{
+    mImpl->running = true;
+    emit finished();
+}
+/*!
+
+*/
+void HsPropertyAnimationWrapper::stop()
+{
+    mImpl->running = false;
+}
+
+/*!
+
+*/
+void HsPropertyAnimationWrapper::setEasingCurve(const QEasingCurve &curve)
+{
+   Q_UNUSED(curve)
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/src/hsscene_mock.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,234 @@
+/*
+* 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 <HbInstance>
+#include "hsdomainmodeldatastructures.h"
+#include "hsscene.h"
+#include "hspage.h"
+#include "hswidgethost.h"
+#include "hswallpaper.h"
+#include "hsconfiguration.h"
+
+HsScene::~HsScene()
+{
+    delete mWallpaper;
+    qDeleteAll(mPages);
+}
+
+int HsScene::databaseId() const
+{
+    return mDatabaseId;
+}
+
+bool HsScene::load()
+{
+    int pageCount = property("pageCount").toInt();
+    if ( pageCount <= 0 ){        
+        pageCount = 1;
+    }
+    int defaultPageIndex = property("defaultPageIndex").toInt();
+
+    mDatabaseId = 1; //Just one scene in the test
+    if (HSCONFIGURATION_GET(sceneType) == HsConfiguration::SceneWallpaper) {
+        mWallpaper = new HsSceneWallpaper(this);
+    }
+    
+    for (int i = 0; i < pageCount; ++i) {
+        HsPage *page = new HsPage;
+        page->load();
+        mPages << page;
+    }
+
+    if(defaultPageIndex > -1){
+        mActivePage = mPages[defaultPageIndex];
+        mActivePage->setRemovable(false);
+    }
+
+    return true;
+}
+
+HsWallpaper *HsScene::wallpaper() const
+{
+    return mWallpaper;
+}
+
+QList<HsPage *> HsScene::pages() const
+{
+    return mPages;
+}
+
+bool HsScene::addPage(HsPage *page)
+{
+    if (!page) {
+        return false;
+    }
+
+    if (mPages.contains(page)) {
+        return true;
+    }
+
+    mPages << page;
+    return true;
+}
+
+bool HsScene::removePage(HsPage *page)
+{
+    if (!page) {
+        return false;
+    }
+    int index = activePageIndex();
+    mPages.removeOne(page);
+    if(mPages.isEmpty()) {
+        mActivePage = 0;
+    }
+    if(page == mActivePage){
+        if(index >= mPages.count()){
+            index--;
+        }
+        setActivePageIndex(index);
+    }
+    return true; 
+}
+
+bool HsScene::setActivePage(HsPage *page)
+{
+    if (!page) {
+        return false;
+    }
+
+    if (!mPages.contains(page)) {
+        return false;
+    }
+
+    if (page == mActivePage) {
+        return true;
+    }
+
+    mActivePage = page;
+    emit activePageChanged();
+
+    foreach (HsPage *p, mPages) {
+        if (p == mActivePage) {
+            p->showWidgets();
+        } else {
+            p->hideWidgets();
+        }
+    }
+
+    return true;
+}
+
+bool HsScene::setActivePageIndex(int index)
+{
+    if (index < 0 || mPages.count() <= index) {
+        return false;
+    }
+    return setActivePage(mPages[index]);
+}
+
+HsPage *HsScene::activePage() const
+{
+    return mActivePage;
+}
+
+int HsScene::activePageIndex() const
+{
+    return mPages.indexOf(mActivePage);
+}
+
+void HsScene::setActiveWidget(HsWidgetHost *widget)
+{
+    mActiveWidget = widget;
+}
+
+HsWidgetHost *HsScene::activeWidget() const
+{
+    return mActiveWidget;
+}
+
+void HsScene::setOnline(bool online)
+{
+    mIsOnline = online;
+    foreach (HsPage *page, mPages) {
+        page->setOnline(online);
+    }
+}
+
+bool HsScene::isOnline()const
+{
+    return mIsOnline;
+}
+
+/*!
+    Singleton.
+*/
+HsScene *HsScene::instance()
+{
+    if (!mInstance) {
+        mInstance = new HsScene;
+    }
+    return mInstance;
+}
+
+HsScene *HsScene::takeInstance()
+{
+    HsScene *instance = mInstance;
+    mInstance = 0;
+    return instance;
+}
+ 
+void HsScene::setInstance(HsScene *instance)
+{
+    if (mInstance != instance) {
+        delete mInstance;
+        mInstance = instance; 
+    }    
+}
+
+
+/*!
+    Listens for application background/foreground changes.
+*/
+bool HsScene::eventFilter(QObject *watched, QEvent *event)
+{
+    switch (event->type()) {
+        case QEvent::ApplicationActivate:
+            mActivePage->showWidgets();
+            break;
+		case QEvent::ApplicationDeactivate:
+            mActivePage->hideWidgets();
+            break;
+        default:
+            break;
+	}
+    return QObject::eventFilter(watched, event);
+}
+
+HsScene::HsScene(QObject *parent)
+  : QObject(parent),
+    mDatabaseId(-1),
+    mWallpaper(0),
+    mActivePage(0),
+    mActiveWidget(0),
+    mIsOnline(true)
+{
+}
+
+/*!
+    Points to the scene instance.
+*/
+HsScene *HsScene::mInstance = 0;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/src/hswallpaper_mock.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,302 @@
+/*
+* 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 <QDir>
+#include <QFile>
+#include <QVariantHash>
+#include <QGraphicsLinearLayout>
+
+#include <HbMainWindow>
+#include <HbIconItem>
+
+#include "hswallpaper.h"
+#include "hsscene.h"
+#include "hspage.h"
+#include "hswallpaperloader.h"
+#include "hsconfiguration.h"
+#include "hsgui.h"
+
+/*!
+
+*/
+
+/*!
+
+*/
+HsWallpaper::HsWallpaper(QGraphicsItem *parent)
+  : HbWidget(parent),
+    mIsDefaultImage(false),
+    mIconItem(0)
+{
+    setFlag(ItemHasNoContents);
+    setSizePolicy(QSizePolicy::Ignored,QSizePolicy::Ignored);    
+
+    mIconItem = new HbIconItem();
+    QGraphicsLinearLayout *layout = new QGraphicsLinearLayout;
+    layout->setContentsMargins(0, 0, 0, 0);
+    layout->addItem(mIconItem);
+    setLayout(layout);
+
+    connect(HsGui::instance(),
+        SIGNAL(orientationChanged(Qt::Orientation)),
+        SLOT(updateIconItem(Qt::Orientation)));
+}
+
+/*!
+
+*/
+HsWallpaper::~HsWallpaper()
+{
+}
+
+/*!
+
+*/
+void HsWallpaper::setImage(const QString &path)
+{
+    Q_UNUSED(path);
+    emit imageSet();   
+}
+
+void HsWallpaper::setImages(const QString &portraitFileName, const QString &landscapeFileName)
+{
+    Q_UNUSED(portraitFileName)
+    Q_UNUSED(landscapeFileName)
+    emit imageSet();
+}
+
+/*!
+
+*/
+void HsWallpaper::setDefaultImage()
+{
+    if (mIsDefaultImage) {
+        return;
+    }
+
+    mIsDefaultImage = true;
+    mLandscapeImagePath = QString();
+    mPortraitImagePath = QString();
+
+    updateIconItem(HsGui::instance()->orientation());
+}
+
+/*!
+
+*/
+void HsWallpaper::remove()
+{
+    if (mIsDefaultImage) {
+        mIsDefaultImage = false;
+    } else {
+        QFile::remove(mPortraitImagePath);
+        QFile::remove(mLandscapeImagePath);
+    }
+    mPortraitImagePath.clear();
+    mLandscapeImagePath.clear();
+}
+
+/*!
+
+*/
+bool HsWallpaper::setExistingImage()
+{
+    QDir dir(wallpaperDirectory());
+    QStringList filters;
+    filters << QString("%1_portrait.*").arg(mId);
+    filters << QString("%1_landscape.*").arg(mId);
+    QFileInfoList infos = dir.entryInfoList(
+        filters, QDir::Files, QDir::Name | QDir::IgnoreCase);
+
+    Q_ASSERT(infos.isEmpty() || infos.count() == 2);
+
+    if (infos.isEmpty()) {
+        return false;
+    }
+
+    mIsDefaultImage = false;
+    mLandscapeImagePath = infos.first().absoluteFilePath();
+    mPortraitImagePath = infos.last().absoluteFilePath();
+
+    updateIconItem(HsGui::instance()->orientation());
+    return true;
+}
+
+QString HsWallpaper::rootDirectory() const
+{
+#ifdef Q_OS_SYMBIAN
+    QString directory("c:/private/20022f35/wallpapers/");
+#else
+    QString directory(QDir::currentPath() + "/private/20022f35/wallpapers/");
+#endif
+
+#ifdef HSDOMAINMODEL_TEST
+    directory = QDir::currentPath() + "/wallpapers/";
+#endif
+    return directory;
+}
+
+/*!
+
+*/
+void HsWallpaper::onLoaderFinished()
+{
+    if (mIsDefaultImage) {
+        mIsDefaultImage = false;
+    } else {
+        QFile::remove(mPortraitImagePath);
+        QFile::remove(mLandscapeImagePath);
+    }
+    foreach (QString path, mLoader->targets().keys()) {
+        QString newName = path; newName.remove("temp");
+        QFile::rename(path, newName);
+    }
+    setExistingImage();
+    emit imageSet();
+}
+
+/*!
+
+*/
+void HsWallpaper::onLoaderFailed()
+{
+    foreach (QString path, mLoader->targets().keys()) {
+        QFile::remove(path);
+    }
+    emit imageSetFailed();
+}
+
+/*!
+
+*/
+void HsWallpaper::updateIconItem(Qt::Orientation orientation)
+{
+    if (orientation == Qt::Vertical) {
+        mIconItem->setIcon(HbIcon(QIcon(mPortraitImagePath)));
+    } else {
+        mIconItem->setIcon(HbIcon(QIcon(mLandscapeImagePath)));
+    }
+}
+
+/*!
+
+*/
+HsSceneWallpaper::HsSceneWallpaper(HsScene *scene, QGraphicsItem *parent)
+  : HsWallpaper(parent),
+    mScene(0)
+{
+    setScene(scene);
+}
+
+/*!
+
+*/
+HsSceneWallpaper::~HsSceneWallpaper()
+{
+}
+
+/*!
+
+*/
+void HsSceneWallpaper::setScene(HsScene *scene)
+{
+    Q_UNUSED(scene);    
+}
+
+/*!
+
+*/
+QString HsSceneWallpaper::wallpaperDirectory() const
+{
+    return QDir::toNativeSeparators(rootDirectory() + "scene/");
+}
+
+/*!
+
+*/
+QVariantHash HsSceneWallpaper::createTargets(const QString &sourcePath)
+{
+    QVariantHash targets;
+
+    QString path = wallpaperDirectory()
+                   + QString("temp%1_").arg(mId)
+                   + QString("%1.")
+                   + QFileInfo(sourcePath).suffix();
+
+    targets.insert(path.arg("portrait"), QSize((2 * 360) + HSCONFIGURATION_GET(bounceEffect), 640));
+    targets.insert(path.arg("landscape"), QSize((2 * 640) + HSCONFIGURATION_GET(bounceEffect), 360));
+    return targets;
+}
+
+/*!
+ PAGE
+*/
+HsPageWallpaper::HsPageWallpaper(HsPage *page, QGraphicsItem *parent)
+  : HsWallpaper(parent),
+    mPage(0)
+{
+    setPage(page);
+}
+
+/*!
+
+*/
+HsPageWallpaper::~HsPageWallpaper()
+{
+}
+
+/*!
+
+*/
+void HsPageWallpaper::setPage(HsPage *page)
+{
+    if (!page) {
+        return;
+    }
+
+    mPage = page;
+    mId = page->databaseId();
+    if (!setExistingImage()) {
+        setDefaultImage();
+    }
+}
+
+/*!
+
+*/
+QString HsPageWallpaper::wallpaperDirectory() const
+{
+    return QDir::toNativeSeparators(rootDirectory() + "page/");
+}
+
+/*!
+
+*/
+QVariantHash HsPageWallpaper::createTargets(const QString &sourcePath)
+{
+    QVariantHash targets;
+
+    QString path = wallpaperDirectory()
+                   + QString("temp%1_").arg(mId)
+                   + QString("%1.")
+                   + QFileInfo(sourcePath).suffix();
+
+    targets.insert(path.arg("portrait"), QSize(360, 640));
+    targets.insert(path.arg("landscape"), QSize(640, 360));
+    return targets;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/src/hswidgethost_mock.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,408 @@
+/*
+* 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 <QApplication>
+#include <QStateMachine>
+#include <QState>
+#include <QFinalState>
+#include <QGraphicsLinearLayout>
+#include <QParallelAnimationGroup>
+#include <QPropertyAnimation>
+#include <QGraphicsDropShadowEffect>
+#include <QGraphicsSceneResizeEvent>
+#include <QGesture>
+#include <QGraphicsScene>
+
+#include <qservicemanager.h>
+#include <qservicefilter.h>
+#include <qserviceinterfacedescriptor.h>
+
+#include <HbInstantFeedback>
+#include <HbTouchArea>
+
+#include "hsdatabase.h"
+#include "hsdomainmodeldatastructures.h"
+#include "hsscene.h"
+#include "hspage.h"
+#include "hswidgethost.h"
+#include "hswidgethostvisual.h"
+#include "hswidgettoucharea.h"
+#include "hswidgetcomponentregistry.h"
+#include "hswidgetcomponent.h"
+#include "hsconfiguration.h"
+#include "hscontentservice.h"
+#include "testwidget.h"
+
+// Helper macros for connecting state entry and exit actions.
+#define ENTRY_ACTION(state, action) \
+    connect(state, SIGNAL(entered()), SLOT(action()));
+#define EXIT_ACTION(state, action) \
+    connect(state, SIGNAL(exited()), SLOT(action()));
+
+QTM_USE_NAMESPACE
+
+HsWidgetHost::HsWidgetHost(int databaseId, QObject *parent)
+  : QObject(parent),
+    mDatabaseId(databaseId),
+    mVisual(new HsWidgetHostVisual),    
+    mStateMachine(0),
+    mWidget(0),
+    mPage(0),
+    mComponent(0),
+    mIsFinishing(false)
+{
+    setupStates();
+}
+
+HsWidgetHost::~HsWidgetHost()
+{
+    delete mVisual;
+}
+
+HsWidgetHost *HsWidgetHost::createInstance(HsWidgetData &widgetData, 
+                                           const QVariantHash &preferences)
+{
+    Q_UNUSED(widgetData);
+    Q_UNUSED(preferences);
+    HsWidgetHost *host = NULL;
+    host = new HsWidgetHost(-1);
+    return host;
+}
+
+int HsWidgetHost::databaseId() const
+{
+    return mDatabaseId;
+}
+
+bool HsWidgetHost::setPage(HsPage *page)
+{
+    mPage = page;
+    return true;
+}
+ 
+HsPage *HsWidgetHost::page() const
+{
+    return mPage;
+}
+
+bool HsWidgetHost::loadPresentation()
+{
+    return true;
+}
+
+bool HsWidgetHost::loadPresentation(Qt::Orientation orientation)
+{
+    Q_UNUSED(orientation)
+    return true;
+}
+
+bool HsWidgetHost::savePresentation()
+{
+    return true;
+}
+
+bool HsWidgetHost::savePresentation(Qt::Orientation orientation)
+{
+    Q_UNUSED(orientation)
+    return true;
+}
+
+bool HsWidgetHost::savePresentation(HsWidgetPresentationData &presentation)
+{
+    Q_UNUSED(presentation)
+    return true;
+}
+
+bool HsWidgetHost::getPresentation(HsWidgetPresentationData &presentation)
+{
+    Q_UNUSED(presentation)
+    return true;
+}
+
+bool HsWidgetHost::removePresentation(Qt::Orientation orientation)
+{
+    Q_UNUSED(orientation)
+    return true;
+}
+
+
+void HsWidgetHost::startWidget(bool show)
+{
+    if (show) {
+        emit event_startAndShow();
+    } else {
+        emit event_startAndHide();
+    }
+}
+ 
+void HsWidgetHost::showWidget()
+{
+    emit event_show();
+}
+    
+void HsWidgetHost::hideWidget()
+{
+    emit event_hide();
+}
+
+void HsWidgetHost::setOnline(bool online)
+{
+    mIsOnlineProperty.write(mWidget, online);
+}
+
+void HsWidgetHost::remove()
+{
+    emit event_remove();
+}
+ 
+void HsWidgetHost::close()
+{
+    emit event_close();
+}
+
+
+
+void HsWidgetHost::setupStates()
+{
+    // State machine
+
+    mStateMachine = new QStateMachine(this);
+    mStateMachine->setAnimated(false);
+    
+    // States
+
+    QState *state_component = new QState;
+    QState *state_unloaded = new QState(state_component);
+    QState *state_running = new QState(state_component);
+    QState *state_show = new QState(state_running);
+    QState *state_hide = new QState(state_running);
+    QState *state_finished = new QState;
+    QState *state_faulted = new QState;
+    QState *state_remove = new QState;
+    QFinalState *state_final = new QFinalState;
+
+    mStateMachine->addState(state_component);
+    mStateMachine->addState(state_finished);
+    mStateMachine->addState(state_faulted);
+    mStateMachine->addState(state_remove);
+    mStateMachine->addState(state_final);
+
+    mStateMachine->setInitialState(state_component);
+    state_component->setInitialState(state_unloaded);
+    state_running->setInitialState(state_hide);
+
+    // Transitions
+
+    state_component->addTransition(
+        this, SIGNAL(event_close()), state_final);
+    state_component->addTransition(
+        this, SIGNAL(event_remove()), state_remove);
+    state_component->addTransition(
+        this, SIGNAL(event_finished()), state_finished);
+    state_component->addTransition(
+        this, SIGNAL(event_faulted()), state_faulted);
+
+    state_unloaded->addTransition(
+        this, SIGNAL(event_startAndShow()), state_show);
+    state_unloaded->addTransition(
+        this, SIGNAL(event_startAndHide()), state_hide);
+
+    state_running->addTransition(
+        this, SIGNAL(event_unload()), state_unloaded);
+    
+    state_show->addTransition(
+        this, SIGNAL(event_hide()), state_hide);
+
+    state_hide->addTransition(
+        this, SIGNAL(event_show()), state_show);
+
+    state_finished->addTransition(
+        this, SIGNAL(event_remove()), state_remove);
+    state_finished->addTransition(
+        this, SIGNAL(event_close()), state_final);
+
+    state_faulted->addTransition(
+        this, SIGNAL(event_remove()), state_remove);
+    state_faulted->addTransition(
+        this, SIGNAL(event_close()), state_final);
+
+    state_remove->addTransition(state_final);
+
+    // Actions
+
+    ENTRY_ACTION(state_component, action_connectComponent)
+    EXIT_ACTION(state_component, action_disconnectComponent)
+
+    ENTRY_ACTION(state_running, action_load)
+    ENTRY_ACTION(state_running, action_initialize)
+    EXIT_ACTION(state_running, action_uninitialize)
+    EXIT_ACTION(state_running, action_unload)
+
+    ENTRY_ACTION(state_show, action_show)
+
+    ENTRY_ACTION(state_hide, action_hide)
+
+    ENTRY_ACTION(state_finished, action_finished)
+
+    ENTRY_ACTION(state_faulted, action_faulted)
+
+    ENTRY_ACTION(state_remove, action_notifyRemove)
+    ENTRY_ACTION(state_remove, action_remove)
+
+    // Delete on finish.
+
+    connect(mStateMachine, SIGNAL(finished()), SLOT(deleteLater()), 
+            Qt::QueuedConnection);
+}
+
+bool HsWidgetHost::setProperty(const char *name, QMetaProperty &property)
+{
+    const QMetaObject *object = mWidget->metaObject();
+    int index = object->indexOfProperty(name);
+    property = object->property(index);
+    return index >= 0;
+}
+
+bool HsWidgetHost::setMethod(const char *signature, QMetaMethod &method)
+{
+    const QMetaObject *object = mWidget->metaObject();
+    int index = object->indexOfMethod(
+        QMetaObject::normalizedSignature(signature));
+    method = object->method(index);
+    return index >= 0;
+}
+
+bool HsWidgetHost::hasSignal(const char *signature)
+{
+    const QMetaObject *object = mWidget->metaObject();
+    int index = object->indexOfSignal(
+        QMetaObject::normalizedSignature(signature));
+    return index >= 0;
+}
+
+
+bool HsWidgetHost::setPreferencesToWidget()
+{
+    return true;
+}
+
+void HsWidgetHost::action_connectComponent()
+{    
+}
+
+void HsWidgetHost::action_disconnectComponent()
+{
+}
+
+void HsWidgetHost::action_load()
+{   
+
+}
+
+void HsWidgetHost::action_unload()
+{
+    delete mWidget;
+    mWidget = 0;
+
+    mOnInitializeMethod = QMetaMethod();
+    mOnShowMethod = QMetaMethod();
+    mOnHideMethod = QMetaMethod();
+    mOnUninitializeMethod = QMetaMethod();    
+    mIsOnlineProperty = QMetaProperty();
+	mRootPathProperty = QMetaProperty();    
+}
+
+void HsWidgetHost::action_initialize()
+{    
+    setPreferencesToWidget();
+    setOnline(HsScene::instance()->isOnline());
+    mOnInitializeMethod.invoke(mWidget);
+}
+
+void HsWidgetHost::action_uninitialize()
+{
+    mOnUninitializeMethod.invoke(mWidget);
+}
+
+void HsWidgetHost::action_show()
+{
+    if (!mIsFinishing) {
+        mOnShowMethod.invoke(mWidget);
+    }
+}
+
+void HsWidgetHost::action_hide()
+{
+    if (!mIsFinishing) {
+        mOnHideMethod.invoke(mWidget);
+    }
+}
+
+void HsWidgetHost::action_finished()
+{
+    emit finished();
+}
+
+void HsWidgetHost::action_faulted()
+{
+    emit faulted();
+}
+
+void HsWidgetHost::action_remove()
+{   
+    mDatabaseId = -1;
+}
+
+void HsWidgetHost::action_notifyRemove()
+{
+    //Empty at mock
+}
+
+void HsWidgetHost::onFinished()
+{
+    mIsFinishing = true;
+    emit event_finished();
+}
+ 
+void HsWidgetHost::onError()
+{
+    mIsFinishing = true;
+    emit event_faulted();
+}
+
+void HsWidgetHost::onSetPreferences(const QStringList &names)
+{
+    Q_UNUSED(names)
+}
+/*!
+    Starts the drag effect.
+*/
+void HsWidgetHost::startDragEffect()
+{   
+}
+
+/*!
+    Starts the drop effect.
+*/
+void HsWidgetHost::startDropEffect()
+{    
+}
+HsWidgetHostVisual *HsWidgetHost::visual() const
+{
+    return mVisual;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/src/t_hsbackuprestorestate.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,62 @@
+/*
+* 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 <HbInstance>
+#include <HbMainWindow>
+
+#include "t_hshomescreenstateplugin.h"
+#include "hsbackuprestorestate.h"
+#include "hsscene.h"
+#include "hsdatabase.h"
+#include "hsgui.h"
+
+void HomeScreenStatePluginTest::testLoadBackupRestoreStateConstructors()
+{
+    HsBackupRestoreState *brs = new HsBackupRestoreState;
+    delete brs;
+}
+
+void HomeScreenStatePluginTest::testLoadBackupRestoreStateOnEntryExit()
+{
+    HbInstance::instance();
+    HbMainWindow mainWindow;
+    mainWindow.show();   
+    QCoreApplication::sendPostedEvents();
+   
+    QStateMachine *sm = new QStateMachine;
+    HsBackupRestoreState *brs = new HsBackupRestoreState;
+
+    sm->addState(brs);
+    sm->setInitialState(brs);    
+    
+
+    QFinalState *fs = new QFinalState;
+    sm->addState(fs);
+
+    brs->addTransition(this, SIGNAL(finishStateMachine()), fs);
+
+    sm->start();   
+    QCoreApplication::sendPostedEvents();  
+    emit finishStateMachine();
+
+    sm->stop();
+    // main window deleted -> HsGui must be deleted also
+    delete HsGui::takeInstance();
+    delete sm;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/src/t_hshomescreenmain.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,140 @@
+/*
+* 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:  Main test class for hsHomeScreenStatePlugin library.
+*
+*/
+
+#include <QMetaType>
+#include <QAction>
+#include <QState>
+
+#include <HbMainWindow>
+#include <HbInstance>
+#include <HbView>
+
+#include "t_hshomescreenstateplugin.h"
+#include "hshomescreenstateplugin.h"
+#include "testwidget.h"
+#include "hsdatabase.h"
+#include "hsscene.h"
+#include "hsgui.h"
+#include "hswidgethost.h"
+#include "hsdomainmodeldatastructures.h"
+#include "hsconfiguration.h"
+
+#include "hswidgetpositioningonorientationchange.h"
+#include "hswidgetpositioningonwidgetadd.h"
+#include "hswidgetpositioningonwidgetmove.h"
+
+#ifdef Q_OS_SYMBIAN
+#include <e32base.h>
+#endif
+
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void HomeScreenStatePluginTest::initTestCase()
+{
+    mMainWindow = 0;
+
+#ifdef Q_OS_SYMBIAN
+    mImageProcessingDelay = 5000;
+#else
+    mImageProcessingDelay = 2000;
+#endif
+
+    HsWidgetPositioningOnOrientationChange::setInstance(
+        new HsAdvancedWidgetPositioningOnOrientationChange);
+
+    HsWidgetPositioningOnWidgetAdd::setInstance(
+        new HsAnchorPointInBottomRight);
+
+    HsWidgetPositioningOnWidgetMove::setInstance(new HsSnapToLines);
+
+    HsDatabase::setInstance(new HsDatabase);
+
+    HsConfiguration::setInstance(new HsConfiguration);
+   
+}
+
+void HomeScreenStatePluginTest::cleanupTestCase()
+{
+    
+}
+
+void HomeScreenStatePluginTest::cleanup()
+{
+    //Scene already deleted as child of mainwindow
+    HsScene *scene = HsScene::takeInstance();
+    delete scene;
+}
+
+void HomeScreenStatePluginTest::init()
+{
+
+}
+
+void HomeScreenStatePluginTest::createSceneAndWindow(int pageCount, int defaultPageIndex, int maximumPageCount)
+{
+    HSCONFIGURATION_SET(setMaximumPageCount, maximumPageCount);
+
+    HbInstance::instance();
+    mMainWindow = new HbMainWindow;
+    mMainWindow->move(0, 0);
+    mMainWindow->show();
+    
+    QEventLoop waitUntilMainWindowCreated;
+    QTimer eventLoopTimer;
+    eventLoopTimer.setInterval(15000);
+    eventLoopTimer.setSingleShot(true);
+    connect(mMainWindow, SIGNAL(viewReady()),
+            &waitUntilMainWindowCreated, SLOT(quit()));
+    connect(&eventLoopTimer, SIGNAL(timeout()), 
+            &waitUntilMainWindowCreated, SLOT(quit()));
+    eventLoopTimer.start();
+    waitUntilMainWindowCreated.exec();
+    eventLoopTimer.stop();
+
+    HsScene *scene = HsScene::instance();
+    scene->setProperty("pageCount", pageCount);
+    scene->setProperty("defaultPageIndex", defaultPageIndex);
+    scene->setProperty("maximumPageCount", maximumPageCount);
+    scene->load();
+}
+
+void HomeScreenStatePluginTest::deleteSceneAndWindow()
+{
+    delete mMainWindow;
+    mMainWindow = 0;
+    delete HsGui::takeInstance();
+}
+
+#ifdef Q_OS_SYMBIAN
+//QTEST_MAIN corrected since crashes if TRAP not in correct place.
+//Will be corrected in later (estimate 4.6.0) Qt release for Symbian.
+int main(int argc, char *argv[])
+{
+    QApplication app(argc, argv);
+    int error = 0;
+    TRAPD(err, \
+    QTEST_DISABLE_KEYPAD_NAVIGATION \
+    HomeScreenStatePluginTest tc; \
+    error = QTest::qExec(&tc, argc, argv););
+    Q_UNUSED(err);
+    return error;
+}
+#else //Q_OS_SYMBIAN
+QTEST_MAIN(HomeScreenStatePluginTest)
+#endif //Q_OS_SYMBIAN
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/src/t_hsidlestate.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,772 @@
+/*
+* 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:  Tests for HsIdleState class.
+*
+*/
+
+#include <QStateMachine>
+#include <QGestureEvent>
+
+#include <HbMainWindow>
+#include <hbview.h>
+#include <hbmenu.h>
+#include <HbMessageBox>
+#include <HbAction>
+#include <HbTapAndHoldGesture>
+#include <HbPanGesture>
+#include "t_hshomescreenstateplugin.h"
+#include "hsscene.h"
+#include "hsgui.h"
+#include "hspage.h"
+#include "hswidgethost.h"
+#include "hswidgethostvisual.h"
+#include "hstitleresolver.h"
+#include "hsconfiguration.h"
+#include "hsidlewidget.h"
+
+void HomeScreenStatePluginTest::testIdleStateConstruction()
+{
+    QState *parent = new QState;
+    HsIdleState *is = new HsIdleState(parent);
+
+    QVERIFY(is->parent() == parent);
+    QVERIFY(!is->mNavigationAction);
+
+    QVERIFY(!is->findChildren<QState *>().isEmpty());
+
+    delete parent;
+}
+
+void HomeScreenStatePluginTest::testIdleStateEntryAndExit()
+{
+    createSceneAndWindow(1, 0);
+
+    HsIdleState *is = new HsIdleState;
+
+    QStateMachine *sm = new QStateMachine;
+    sm->addState(is);
+    sm->setInitialState(is);
+
+    QFinalState *fs = new QFinalState;
+    sm->addState(fs);
+
+    is->addTransition(this, SIGNAL(finishStateMachine()), fs);
+
+    sm->start();
+   // QApplication::processEvents();
+    QCoreApplication::sendPostedEvents();
+
+    emit finishStateMachine();
+
+    sm->stop();
+    delete sm;
+
+    deleteSceneAndWindow();
+}
+
+void HomeScreenStatePluginTest::testIdleStatePageLayerPos()
+{
+    createSceneAndWindow(1, 0);
+
+    HsIdleState *is = new HsIdleState;
+    QVERIFY(qFuzzyCompare(is->pageLayerXPos(0), qreal(0)));
+
+    delete is;
+    deleteSceneAndWindow();
+}
+
+void HomeScreenStatePluginTest::testIdleStatePageChangeAnimation()
+{
+    createSceneAndWindow(2, 0);
+
+    HsIdleState *is = new HsIdleState;
+
+    QStateMachine *sm = new QStateMachine;
+    sm->addState(is);
+    sm->setInitialState(is);
+
+    QFinalState *fs = new QFinalState;
+    sm->addState(fs);
+
+    is->addTransition(this, SIGNAL(finishStateMachine()), fs);
+
+    sm->start();
+    QCoreApplication::sendPostedEvents();
+    is->startPageChangeAnimation(1, 10);
+
+    // Start two anims in a row
+    is->startPageChangeAnimation(1, 10);
+    is->startPageChangeAnimation(2, 10);
+
+    emit finishStateMachine();
+
+    sm->stop();
+    delete sm;
+
+    deleteSceneAndWindow();
+}
+
+void HomeScreenStatePluginTest::testIdleStatePageChangeZones()
+{
+    createSceneAndWindow(1, 0);
+    HsIdleState *is = new HsIdleState;
+
+    QStateMachine *sm = new QStateMachine;
+    sm->addState(is);
+    sm->setInitialState(is);
+    sm->start();
+    QCoreApplication::sendPostedEvents();
+    
+    //Test left page change zone's left border
+    is->mWidgetHotSpot = QPointF(0, 0);
+    QVERIFY(is->isInLeftPageChangeZone());
+    QVERIFY(!is->isInRightPageChangeZone());
+    QVERIFY(is->isInPageChangeZone());
+
+    //Test left page change zone's right border
+    is->mWidgetHotSpot = QPointF(HSCONFIGURATION_GET(pageChangeZoneWidth) - 1, 0);
+    QVERIFY(is->isInLeftPageChangeZone());
+    QVERIFY(!is->isInRightPageChangeZone());
+    QVERIFY(is->isInPageChangeZone());
+
+    //Test not in either of the page change zones
+    is->mWidgetHotSpot = QPointF(HSCONFIGURATION_GET(pageChangeZoneWidth), 0);
+    QVERIFY(!is->isInLeftPageChangeZone());
+    QVERIFY(!is->isInRightPageChangeZone());
+    QVERIFY(!is->isInPageChangeZone());
+
+    //Test right page change zone's right border
+    HsScene *scene = HsScene::instance();
+
+    sm->stop();
+    delete sm;
+    deleteSceneAndWindow();
+}
+
+void HomeScreenStatePluginTest::testIdleStateAddPage()
+{
+    createSceneAndWindow(2, 0, 3); //pagecount 2, default page 0, max pages 3
+
+    HsIdleState *is = new HsIdleState;
+
+    QStateMachine *sm = new QStateMachine;
+    sm->addState(is);
+    sm->setInitialState(is);
+    sm->start();
+    QCoreApplication::sendPostedEvents();
+    QString menuaction;
+    bool found = false;
+    HbView *idleView = HsGui::instance()->idleView();
+    for(int i=0; i < idleView->menu()->actions().count(); i++){
+        menuaction = idleView->menu()->actions()[i]->text();
+        if(menuaction.left(27) == "txt_homescreen_opt_add_page"){
+            found = true;
+        }
+    }
+    if(!found){
+        QFAIL("txt_homescreen_opt_add_page menu action not found!");
+    }
+
+    emit is->event_addPage();
+
+    HsScene *scene = HsScene::instance();
+    QCOMPARE(scene->pages().count(), 3);
+    // Active page index 0, the new page is created to the right side of it.
+    QCOMPARE(scene->activePageIndex(), 1);
+
+    found = false;
+    for(int i=0; i < idleView->menu()->actions().count(); i++){
+        menuaction = idleView->menu()->actions()[i]->text();
+        if(menuaction.left(27) == "txt_homescreen_opt_add_page"){
+            found = true;
+        }
+    }
+    if(found){
+        QFAIL("txt_homescreen_opt_add_page menu action should not be found!");
+    }
+
+    sm->stop();
+    delete sm;
+
+    deleteSceneAndWindow();
+}
+
+void HomeScreenStatePluginTest::testIdleStateRemoveActivePage()
+{
+    createSceneAndWindow(3, 2);
+
+    HsIdleState *is = new HsIdleState;
+    QStateMachine *sm = new QStateMachine;
+    sm->addState(is);
+    sm->setInitialState(is);
+    sm->start();
+    QCoreApplication::sendPostedEvents();
+    HsScene *scene = HsScene::instance();
+    int numOfPages = scene->pages().count();
+
+    emit is->event_preRemovePage();
+    QCoreApplication::sendPostedEvents(0, QEvent::DeferredDelete);
+    QVERIFY(scene->pages().count() == numOfPages-1);
+    QVERIFY(scene->activePageIndex() == 1);
+    
+    sm->stop();
+    
+    delete sm;
+
+    deleteSceneAndWindow();
+}
+
+void HomeScreenStatePluginTest::testIdleStateRemovePage()
+{
+    createSceneAndWindow(2, 0);
+    HsScene::instance()->setActivePageIndex(1); // default page 0 cannot be removed
+
+    HsIdleState *is = new HsIdleState;
+
+    QStateMachine *sm = new QStateMachine;
+    sm->addState(is);
+    sm->setInitialState(is);
+    sm->start();
+   
+    QCoreApplication::sendPostedEvents();
+    
+    QString menuaction;
+    bool found = false;
+    HbView *idleView = HsGui::instance()->idleView();
+    for(int i=0; i < idleView->menu()->actions().count(); i++){
+        menuaction = idleView->menu()->actions()[i]->text();
+        if(menuaction.left(30) == "txt_homescreen_opt_remove_page"){
+            found = true;
+        }
+    }
+    if(!found){
+        QFAIL("txt_homescreen_opt_remove_page menu action not found!");
+    }
+
+    emit is->event_preRemovePage();
+    
+    QCoreApplication::sendPostedEvents(0, QEvent::DeferredDelete);
+
+    HsScene *scene = HsScene::instance();
+    QCOMPARE(scene->pages().count(), 1); 
+    QCOMPARE(scene->activePageIndex(), 0);
+
+    found = false;
+    idleView = HsGui::instance()->idleView();
+    for(int i=0; i < idleView->menu()->actions().count(); i++){
+        menuaction = idleView->menu()->actions()[i]->text();
+        if(menuaction.left(30) == "txt_homescreen_opt_remove_page"){
+            found = true;
+        }
+    }
+    if(found){ // Se above comment.
+        QFAIL("txt_homescreen_opt_remove_page menu action shound not be found!");
+    }
+
+    sm->stop();
+    
+    delete sm;
+
+    deleteSceneAndWindow();
+}
+
+void HomeScreenStatePluginTest::testIdleStateToggleConnection()
+{
+    createSceneAndWindow(1, 0);
+
+    HsIdleState *is = new HsIdleState;
+
+    QStateMachine *sm = new QStateMachine;
+    sm->addState(is);
+    sm->setInitialState(is);
+    sm->start();
+    QCoreApplication::sendPostedEvents();
+    
+    HsScene *scene = HsScene::instance();
+
+    QVERIFY(scene->isOnline());
+    emit is->event_toggleConnection();
+    QVERIFY(!scene->isOnline());
+    
+    sm->stop();
+    delete sm;
+
+    deleteSceneAndWindow();
+}
+
+void HomeScreenStatePluginTest::testIdleStateTapPage()
+{
+    createSceneAndWindow(HSCONFIGURATION_GET(maximumPageCount), 0);
+
+    HsIdleState *is = new HsIdleState;
+
+    QStateMachine *sm = new QStateMachine;
+    sm->addState(is);
+    sm->setInitialState(is);
+    sm->start();
+    QCoreApplication::sendPostedEvents();
+    
+    HbTapAndHoldGesture *gesture = new HbTapAndHoldGesture;
+    gesture->setHotSpot(QPointF(10, 100));
+    QList<QGesture *> gestures;
+    gestures << gesture;
+    QGestureEvent *gestureEvent = new QGestureEvent(gestures);
+
+    QVERIFY(!is->mSceneMenu);
+    is->onPageTapAndHoldFinished(gestureEvent);
+    QVERIFY(is->mSceneMenu);
+    QVERIFY(is->mSceneMenu->actions().count() == 2);  //Add page action should not exist
+
+    delete gestureEvent;
+    gestures.clear(); 
+    sm->stop();
+    delete sm;
+
+    deleteSceneAndWindow();
+}
+
+void HomeScreenStatePluginTest::testIdleStatePanPage()
+{
+    createSceneAndWindow(2, 0);
+
+    HsIdleState *is = new HsIdleState;
+
+    QStateMachine *sm = new QStateMachine;
+    sm->addState(is);
+    sm->setInitialState(is);
+    sm->start();
+    QCoreApplication::sendPostedEvents();
+    
+    HbPanGesture *gesture = new HbPanGesture;
+    gesture->setHotSpot(QPointF(10, 100));
+    QList<QGesture *> gestures;
+    gestures << gesture;
+    QGestureEvent *gestureEvent = new QGestureEvent(gestures);
+
+    //Start Panning
+    QSignalSpy moveSceneSpy(is, SIGNAL(event_moveScene()));
+    is->onPagePanStarted(gestureEvent);
+    QCOMPARE(moveSceneSpy.count(), 1);
+
+    //Continue Panning
+    gesture->setHotSpot(QPointF(50, 100));
+    is->onPagePanUpdated(gestureEvent);
+
+    //Finish Panning
+    gesture->setHotSpot(QPointF(150, 100));
+    QSignalSpy waitInputSpy(is, SIGNAL(event_waitInput()));
+    is->onPagePanFinished(gestureEvent);
+    QCOMPARE(waitInputSpy.count(), 1);
+
+    delete gestureEvent;
+    gestures.clear(); 
+    sm->stop();
+    delete sm;
+
+    deleteSceneAndWindow();
+}
+
+void HomeScreenStatePluginTest::testIdleStateTapWidget()
+{
+    createSceneAndWindow(2, 0);
+
+    HsIdleState *is = new HsIdleState;
+
+    QStateMachine *sm = new QStateMachine;
+    sm->addState(is);
+    sm->setInitialState(is);
+    sm->start();
+    QCoreApplication::sendPostedEvents();
+    
+    HsScene *scene = HsScene::instance();
+    HsWidgetHost *widget = scene->activePage()->widgets().first();
+    is->onWidgetTapStarted(QPointF(0,0), widget);
+    // widget is not activated on tap, only on tap and hold
+    QVERIFY(!scene->activeWidget());
+
+    sm->stop();
+    delete sm;
+
+    deleteSceneAndWindow();
+}
+
+void HomeScreenStatePluginTest::testIdleStateDragWidget()
+{
+    createSceneAndWindow(2, 0, 3);
+    QStateMachine *sm = new QStateMachine;
+    HsIdleState *is = new HsIdleState;
+    sm->addState(is);
+    sm->setInitialState(is);
+    sm->start();
+    QCoreApplication::sendPostedEvents();
+    // try to move widget left from page 1, which isn't possible
+    HbTapAndHoldGesture *gesture = new HbTapAndHoldGesture;
+    gesture->setHotSpot(QPointF(10, 100));
+    QList<QGesture *> gestures;
+    gestures << gesture;
+    QGestureEvent *gestureEvent = new QGestureEvent(gestures);
+    QSignalSpy moveWidgetSpy(is, SIGNAL(event_moveWidget()));
+    HsScene *scene = HsScene::instance();
+    HsWidgetHost *widget = scene->activePage()->widgets().first();
+    is->onWidgetTapAndHoldFinished(gestureEvent, widget);
+    QCOMPARE(moveWidgetSpy.count(), 1);
+    moveWidgetSpy.clear();
+    
+    is->onWidgetMoveUpdated(QPointF(10, 150), widget);
+    is->onWidgetMoveUpdated(QPointF(150, 150), widget);
+    QSignalSpy waitInputSpy(is, SIGNAL(event_MoveWidgetDelete()));
+    is->onWidgetMoveFinished(QPointF(150, 150), widget);
+    QCOMPARE(waitInputSpy.count(), 1);
+    waitInputSpy.clear();
+     
+    // move widget to second page
+    gesture->setHotSpot(QPointF(150, 150));
+    is->onWidgetTapAndHoldFinished(gestureEvent, widget);
+    QCOMPARE(moveWidgetSpy.count(), 1);
+    moveWidgetSpy.clear();
+    is->onWidgetMoveUpdated(QPointF(355, 150), widget);
+    is->onWidgetMoveUpdated(QPointF(150, 150), widget);
+    
+    // move widget back to first page
+    is->onWidgetMoveUpdated(QPointF(10, 150), widget);
+    is->onWidgetMoveUpdated(QPointF(150, 150), widget);
+    
+    // move widget to second page
+    is->onWidgetMoveUpdated(QPointF(350, 150), widget);
+    is->onWidgetMoveUpdated(QPointF(150, 150), widget);
+
+    // try to add page without releasing mouse button
+    is->onWidgetMoveUpdated(QPointF(350, 150), widget);
+    is->onWidgetMoveUpdated(QPointF(150, 150), widget);
+    is->onWidgetMoveFinished(QPointF(150, 150), widget);
+    QCOMPARE(waitInputSpy.count(), 1);
+    waitInputSpy.clear();
+
+    // add page 3
+    gesture->setHotSpot(QPointF(150, 150));
+    is->onWidgetTapAndHoldFinished(gestureEvent, widget);
+    QCOMPARE(moveWidgetSpy.count(), 1);
+    moveWidgetSpy.clear();
+    is->onWidgetMoveUpdated(QPointF(350, 150), widget);
+    is->onWidgetMoveUpdated(QPointF(150, 150), widget);
+    is->onWidgetMoveFinished(QPointF(150, 150), widget);
+    QCOMPARE(waitInputSpy.count(), 1);
+    waitInputSpy.clear();
+
+    // try to move widget over trash bin
+    gesture->setHotSpot(QPointF(150, 150));
+    is->onWidgetTapAndHoldFinished(gestureEvent, widget);
+    QCOMPARE(moveWidgetSpy.count(), 1);
+    moveWidgetSpy.clear();
+    is->onWidgetMoveUpdated(QPointF(180, 600), widget);
+    is->onWidgetMoveUpdated(QPointF(180, 605), widget);
+    is->onWidgetMoveUpdated(QPointF(180, 610), widget);
+    is->onWidgetMoveUpdated(QPointF(180, 615), widget);
+    is->onWidgetMoveUpdated(QPointF(180, 620), widget);
+    is->onWidgetMoveUpdated(QPointF(180, 625), widget);
+    is->onWidgetMoveUpdated(QPointF(180, 630), widget);
+    is->onWidgetMoveUpdated(QPointF(180, 635), widget);
+    is->onWidgetMoveUpdated(QPointF(150, 150), widget);
+    is->onWidgetMoveFinished(QPointF(150, 150), widget);
+    QCOMPARE(waitInputSpy.count(), 1);
+    waitInputSpy.clear();
+    
+    is->pageChangeAnimationFinished();
+  
+
+    sm->stop();
+    delete sm;
+
+    deleteSceneAndWindow();
+}
+
+void HomeScreenStatePluginTest::testIdleStateDeleteWidget()
+{
+    createSceneAndWindow(2, 0, 3);
+    QStateMachine *sm = new QStateMachine;
+    HsIdleState *is = new HsIdleState;
+    sm->addState(is);
+    sm->setInitialState(is);
+    sm->start();
+    //QApplication::processEvents();
+    QCoreApplication::sendPostedEvents();
+    // try to move widget left from page 1, which isn't possible
+    HbTapAndHoldGesture *gesture = new HbTapAndHoldGesture;
+    gesture->setHotSpot(QPointF(10, 100));
+    QList<QGesture *> gestures;
+    gestures << gesture;
+    QGestureEvent *gestureEvent = new QGestureEvent(gestures);
+    QSignalSpy moveWidgetSpy(is, SIGNAL(event_moveWidget()));
+    HsScene *scene = HsScene::instance();
+    HsWidgetHost *widget = scene->activePage()->widgets().first();
+    is->onWidgetTapAndHoldFinished(gestureEvent, widget);
+    QCOMPARE(moveWidgetSpy.count(), 1);
+    moveWidgetSpy.clear();
+    
+    // test cases where active widget is not set and stop widget drag (should not be possible in real life)
+    QSignalSpy waitDeleteSpy(is, SIGNAL(event_MoveWidgetDelete()));
+    QSignalSpy waitInputSpy(is, SIGNAL(event_waitInput()));
+    scene->setActiveWidget(0);
+    is->onWidgetMoveFinished(QPointF(150, 150), widget);
+    QCOMPARE(waitInputSpy.count(), 2);
+    QCOMPARE(waitDeleteSpy.count(), 1);
+    
+    is->pageChangeAnimationFinished();
+  
+
+    sm->stop();
+    delete sm;
+
+    deleteSceneAndWindow();
+    
+    
+}
+
+void HomeScreenStatePluginTest::testIdleStateMisc()
+{
+    createSceneAndWindow(2, 0);
+
+    HsIdleState *is = new HsIdleState;
+
+    QStateMachine *sm = new QStateMachine;
+    sm->addState(is);
+    sm->setInitialState(is);
+    sm->start();
+    QCoreApplication::sendPostedEvents();
+    
+    is->onAddContentFromOptionsMenuActionTriggered();
+    is->onAddContentFromContextMenuActionTriggered();
+    is->action_idle_orientationChanged();
+
+    HsScene *scene = HsScene::instance();
+    scene->setActiveWidget(scene->activePage()->widgets().first());
+    is->updateSnapAlgorithmParameters();
+
+    sm->stop();
+    delete sm;
+
+    deleteSceneAndWindow();
+}
+
+void HomeScreenStatePluginTest::testIdleStateChromeBehaviour()
+{
+    createSceneAndWindow(1, 0);
+    QScopedPointer<HsIdleState> is(new HsIdleState());
+
+    is->action_idle_setupView();
+
+    QString newTitle("title");
+
+    is->action_idle_setupTitle();
+
+    is->mTitleResolver->metaObject()->invokeMethod(is->mTitleResolver,
+                                                   "titleChanged",
+                                                   Q_ARG(QString, newTitle));
+    HbView *idleView = HsGui::instance()->idleView();
+
+    QCOMPARE(idleView->title(), newTitle);
+
+    QString t2("new title");
+
+    is->action_idle_cleanupTitle();
+
+    is->mTitleResolver->metaObject()->invokeMethod(is->mTitleResolver,
+                                                   "titleChanged",
+                                                   Q_ARG(QString, t2));
+
+    QCOMPARE(idleView->title(), newTitle);
+
+    is->action_idle_setupTitle();
+
+    is->mTitleResolver->metaObject()->invokeMethod(is->mTitleResolver,
+                                                   "titleChanged",
+                                                   Q_ARG(QString, t2));
+
+    QCOMPARE(idleView->title(), t2);
+
+    deleteSceneAndWindow();
+}
+
+void HomeScreenStatePluginTest::testEventFilter()
+{
+	// Create with no active page
+    createSceneAndWindow(1, -1);
+	HsIdleState *is = new HsIdleState();
+	QEvent e(QEvent::ApplicationActivate);
+	is->eventFilter(0, &e);
+
+	HsScene *s = HsScene::instance();
+	HsPage *page = new HsPage();
+	HsWidgetHost *wh = new HsWidgetHost(1);
+	page->addNewWidget(wh);
+	s->addPage(page);
+	s->setActivePage(page);
+
+	is->eventFilter(0, &e);
+
+	is->action_idle_setupView();
+
+	QEvent ee(QEvent::ApplicationDeactivate);
+	QSignalSpy spy(is, SIGNAL(event_waitInput()));
+	is->eventFilter(0, &ee);
+
+	QCOMPARE(1, spy.count());
+
+	deleteSceneAndWindow();
+	delete is;
+}
+
+void HomeScreenStatePluginTest::testIdleStateSnapToObject()
+{
+    createSceneAndWindow(2, 0);
+
+    HsIdleState *is = new HsIdleState;
+
+    QStateMachine *sm = new QStateMachine;
+    sm->addState(is);
+    sm->setInitialState(is);
+    sm->start();
+    QCoreApplication::sendPostedEvents();
+    
+    //The page has one widget, remove the widget.
+    HsScene *scene = HsScene::instance();
+    HsWidgetHost *widget = scene->activePage()->widgets().first();
+    scene->activePage()->removeWidget(widget);
+
+    sm->stop();
+    delete sm;
+
+    deleteSceneAndWindow();
+}
+
+void HomeScreenStatePluginTest::testIdleStateSnapToObjectSnapEffectDisabled()
+{
+    createSceneAndWindow(2, 0);
+
+    HSCONFIGURATION_SET(setSnapEffectsEnabled, false);
+    HsIdleState *is = new HsIdleState;
+
+    QStateMachine *sm = new QStateMachine;
+    sm->addState(is);
+    sm->setInitialState(is);
+    sm->start();
+	QCoreApplication::sendPostedEvents();
+
+    //The page has one widget, remove the widget
+    HsScene *scene = HsScene::instance();
+    HsWidgetHost *widget = scene->activePage()->widgets().first();
+    scene->activePage()->removeWidget(widget);
+
+    sm->stop();
+    delete sm;
+
+    deleteSceneAndWindow();
+}
+
+void HomeScreenStatePluginTest::testIdleStateSnapToObjectSnappingDisabled()
+{
+    createSceneAndWindow(2, 0);
+
+    HSCONFIGURATION_SET(setSnapEnabled, false);
+    HsIdleState *is = new HsIdleState;
+
+    QStateMachine *sm = new QStateMachine;
+    sm->addState(is);
+    sm->setInitialState(is);
+    sm->start();
+	QCoreApplication::sendPostedEvents();
+
+    //The page has one widget, remove the widget
+    HsScene *scene = HsScene::instance();
+    HsWidgetHost *widget = scene->activePage()->widgets().first();
+    scene->activePage()->removeWidget(widget);
+
+    sm->stop();
+    delete sm;
+
+    deleteSceneAndWindow();
+}
+
+void HomeScreenStatePluginTest::testOnVerticalSnapLineTimerTimeout()
+{
+    createSceneAndWindow(1, 0);
+
+    HsIdleState *is = new HsIdleState;
+
+    QStateMachine *sm = new QStateMachine;
+    sm->addState(is);
+    sm->setInitialState(is);
+    sm->start();
+    QCoreApplication::sendPostedEvents();
+    is->onVerticalSnapLineTimerTimeout();
+    sm->stop();
+    delete sm;
+
+    deleteSceneAndWindow();
+}
+
+void HomeScreenStatePluginTest::testOnHorizontalSnapLineTimerTimeout()
+{
+    createSceneAndWindow(1, 0);
+
+    HsIdleState *is = new HsIdleState;
+
+    QStateMachine *sm = new QStateMachine;
+    sm->addState(is);
+    sm->setInitialState(is);
+    sm->start();
+    QCoreApplication::sendPostedEvents();
+    is->onHorizontalSnapLineTimerTimeout();
+    sm->stop();
+    delete sm;
+
+    deleteSceneAndWindow();
+}
+
+void HomeScreenStatePluginTest::testShowHorizontalLine()
+{
+    createSceneAndWindow(1, 0);
+
+    HsIdleState *is = new HsIdleState;
+
+    QStateMachine *sm = new QStateMachine;
+    sm->addState(is);
+    sm->setInitialState(is);
+    sm->start();
+    QCoreApplication::sendPostedEvents();
+    is->showHorizontalLine();
+    sm->stop();
+    delete sm;
+
+    deleteSceneAndWindow();
+}
+
+void HomeScreenStatePluginTest::testEditorAndVKB()
+{
+    createSceneAndWindow(1, 0);
+
+    HsIdleState *is = new HsIdleState;
+    
+    is->closeVirtualKeyboard();
+    
+    HsScene *scene = HsScene::instance();
+    HsWidgetHost *widget = scene->activePage()->widgets().first();
+    
+    // scene is not set for the widgets yet.
+    QVERIFY(!is->isEditor(QPointF(0,0), widget));
+    
+    delete is;
+    
+    deleteSceneAndWindow();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/src/t_hsloadscenestate.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,75 @@
+/*
+* 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 <QStateMachine>
+#ifdef Q_OS_SYMBIAN
+#include <XQSettingsManager>
+#include <startupdomainpskeys.h>
+#endif
+#include <HbInstance>
+#include <HbMainWindow>
+
+#include "t_hshomescreenstateplugin.h"
+#include "hsloadscenestate.h"
+#include "hsscene.h"
+#include "hsgui.h"
+
+void HomeScreenStatePluginTest::testLoadSceneStateConstructors()
+{
+    HsLoadSceneState *lss = new HsLoadSceneState;
+    delete lss;
+}
+
+void HomeScreenStatePluginTest::testLoadSceneStateOnEntryExit()
+{
+    HbInstance::instance();
+    HbMainWindow mainWindow;
+    mainWindow.show();
+
+    HsLoadSceneState *lss = new HsLoadSceneState;
+
+    QStateMachine *sm = new QStateMachine;
+    sm->addState(lss);
+    sm->setInitialState(lss);
+    sm->start();
+    QCoreApplication::sendPostedEvents();
+    // main window deleted -> HsGui must be deleted also
+    delete HsGui::takeInstance();
+    delete sm;
+}
+
+#ifdef Q_OS_SYMBIAN
+void HomeScreenStatePluginTest::testLoadSceneStateHandleKeyChange()
+{
+    HbInstance::instance();
+    HbMainWindow mainWindow;
+    mainWindow.show();
+    QCoreApplication::sendPostedEvents();
+    
+    HsLoadSceneState *lss = new HsLoadSceneState;
+    XQSettingsKey testKey(XQSettingsKey::TargetPublishAndSubscribe, KPSUidStartup.iUid, KPSStartupUiPhase);
+    QVariant variant(QVariant::Int);
+    lss->handleKeyChange(testKey, variant);
+    int value = EStartupUiPhaseAllDone;
+    variant.setValue(value);
+    lss->handleKeyChange(testKey, variant);
+
+    // main window deleted -> HsGui must be deleted also
+    delete HsGui::takeInstance();
+    delete lss;
+}
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/src/t_hsrootstate.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,49 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#include <QStateMachine>
+
+#include "t_hshomescreenstateplugin.h"
+#include "hsrootstate.h"
+#include "hsscene.h"
+
+void HomeScreenStatePluginTest::testLoadRootStateConstructors()
+{
+    HsRootState *rs = new HsRootState;
+    delete rs;
+}
+
+void HomeScreenStatePluginTest::testLoadRootStateOnEntryExit()
+{
+    HsRootState *rs = new HsRootState;
+
+    QStateMachine *sm = new QStateMachine;
+    sm->addState(rs);
+    sm->setInitialState(rs);    
+    	
+    QFinalState *fs = new QFinalState;
+    sm->addState(fs);
+
+    rs->addTransition(this, SIGNAL(finishStateMachine()), fs);
+
+    sm->start();
+    QCoreApplication::sendPostedEvents();
+    emit finishStateMachine();
+
+    sm->stop();
+    delete sm;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/src/t_hswallpaperselectionstate.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,136 @@
+/*
+* 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 <QStateMachine>
+
+#include <HbInstance>
+#include <HbMainWindow>
+
+#include "t_hshomescreenstateplugin.h"
+#include "hswallpaperselectionstate.h"
+#include "hsscene.h"
+#include "hspage.h"
+#include "hsspinnerdialog.h"
+#include "hsconfiguration.h"
+#include "hsgui.h"
+
+#ifdef Q_OS_SYMBIAN
+#include "hsimagehandlingclient.h"
+#else
+#include "xqaiwgetimageclient.h"
+#endif
+
+void HomeScreenStatePluginTest::testWallpaperSelectionStateConstruction()
+{
+    HsWallpaperSelectionState *s = new HsWallpaperSelectionState;
+    QVERIFY(!s->mImageHandler);
+    QVERIFY(!s->mWallpaper);
+    QVERIFY(!s->mWaitDialog);
+    QCOMPARE(s->findChildren<QState *>().count(), 5);
+    delete s;
+}
+
+void HomeScreenStatePluginTest::testWallpaperSelectionStateImageSelection()
+{
+    HsWallpaperSelectionState *s = new HsWallpaperSelectionState;
+        
+    // Generate mImageHandler.
+    s->action_selectingImage_start();
+    
+    QSignalSpy assignImageSpy(s, SIGNAL(event_assignImage()));
+    QSignalSpy errorSpy(s, SIGNAL(event_error()));
+
+    s->mImageHandler->setProperty("testSetToFail", false);
+    s->mImageHandler->fetch();
+    
+    QCOMPARE(assignImageSpy.count(), 1);
+    assignImageSpy.clear();
+    QCOMPARE(errorSpy.count(), 0);
+
+    s->mImageHandler->setProperty("testSetToFail", true);
+    s->mImageHandler->fetch();
+    
+    QCOMPARE(assignImageSpy.count(), 0);    
+    QCOMPARE(errorSpy.count(), 1);
+    errorSpy.clear();
+
+    delete s;
+}
+
+void HomeScreenStatePluginTest::testWallpaperSelectionStateImageAssignment()
+{    
+    createSceneAndWindow(1, 0);    
+    HsWallpaperSelectionState *s = new HsWallpaperSelectionState;
+        
+    QSignalSpy waitInputSpy(s, SIGNAL(event_waitInput()));
+    s->action_assigningImage_start();
+    QCOMPARE(waitInputSpy.count(), 1);
+    QVERIFY(s->mWallpaper);
+    s->action_assigningImage_cleanup();
+    QVERIFY(!s->mWallpaper);
+
+    delete s;
+    deleteSceneAndWindow();    
+}
+
+void HomeScreenStatePluginTest::testWallpaperSelectionStateSimpleMethods()
+{
+    HbInstance::instance();
+    HbMainWindow *window = new HbMainWindow;
+    window->move(0, 0);
+    window->show();
+    
+    HsWallpaperSelectionState *s = new HsWallpaperSelectionState;
+
+    // Cleanup
+    s->action_selectingImage_start();
+    s->action_imageHandler_cleanup();
+    QVERIFY(!s->mImageHandler);
+
+    delete s;
+    s = new HsWallpaperSelectionState;
+
+    // Wait dialog
+    s->action_assigningImage_showWaitDialog();
+    QVERIFY(s->mWaitDialog);
+    s->mWaitDialog->stop();
+    s->action_assigningImage_hideWaitDialog();
+    QVERIFY(!s->mWaitDialog);
+
+    delete s;
+    s = new HsWallpaperSelectionState;
+
+    QSignalSpy waitInputSpy(s, SIGNAL(event_waitInput()));
+    s->action_errorMessage_show();
+    QCOMPARE(waitInputSpy.count(), 1);    
+    waitInputSpy.clear();
+    
+    s->onImageSet();
+    QCOMPARE(waitInputSpy.count(), 1);
+    waitInputSpy.clear();
+
+    QSignalSpy errorSpy(s, SIGNAL(event_error()));
+
+    s->onImageSetFailed();
+    QCOMPARE(errorSpy.count(), 1);
+
+    delete s;
+    // main window deleted -> HsGui must be deleted also
+    delete HsGui::takeInstance();
+    delete window;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/src/testwidget.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,60 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#include <QPainter>
+#include "testwidget.h"
+
+TestWidget::TestWidget(QGraphicsItem *parent, Qt::WindowFlags flags)
+  : HbWidget(parent, flags)     
+{
+    setPreferredSize(100, 100);
+}
+
+TestWidget::~TestWidget()
+{
+}
+
+void TestWidget::onInitialize()
+{
+}
+
+void TestWidget::onShow()
+{
+}
+
+void TestWidget::onHide()
+{
+}
+
+void TestWidget::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
+{
+    Q_UNUSED(option)
+    Q_UNUSED(widget)
+    painter->drawRect(rect());
+}
+
+QRectF TestWidget::boundingRect() const
+{
+    return rect();
+}
+
+QPainterPath TestWidget::shape() const
+{
+    QPainterPath path;
+    path.addRect(rect());
+    return path;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/src/xqaiwgetimageclient_mock.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,72 @@
+/*
+* 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:  Moc impl for image fetcher api.
+*
+*/
+
+
+#include "xqaiwgetimageclient.h"
+#include "hsimagegridwidget.h"
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+XQAIWGetImageClient::XQAIWGetImageClient():
+    mImageGrid(0)
+{
+    setProperty("testSetToFail", QVariant(true));
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+XQAIWGetImageClient::~XQAIWGetImageClient()
+{
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void XQAIWGetImageClient::fetch()
+{
+    if (property("testSetToFail").value<bool>() == true)
+    {
+        imageSelectionCancelled();
+    }
+    else
+    {
+        imageSelected(QString(""));
+    }
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void XQAIWGetImageClient::imageSelected(const QString& val)
+{
+    emit fetchCompleted(val);
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void XQAIWGetImageClient::requestCompleted(const QVariant& val)
+{
+    Q_UNUSED(val)
+}
+
+void XQAIWGetImageClient::imageSelectionCancelled()
+{
+    emit fetchFailed(-1, QString()); //KErrNotFound
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/t_hshomescreenstateplugin.pri	Mon Oct 04 00:07:25 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:
+#
+#Header files
+HEADERS += ./inc/*.h \
+           ../../inc/*.h \
+           ../../../../hsdomainmodel/inc/hsdomainmodeldatastructures.h \
+           ../../../../hsdomainmodel/inc/hsdatabase.h \
+           ../../../../hsdomainmodel/inc/hspage.h \
+           ../../../../hsdomainmodel/inc/hspagevisual.h \
+           ../../../../hsdomainmodel/inc/hspagetoucharea.h \
+           ../../../../hsdomainmodel/inc/hswidgethost.h \
+           ../../../../hsdomainmodel/inc/hswidgethostvisual.h \
+           ../../../../hsdomainmodel/inc/hswidgettoucharea.h \
+           ../../../../hsdomainmodel/inc/hsscene.h \
+           ../../../../hsdomainmodel/inc/hscontentservice.h \
+           ../../../../hsdomainmodel/inc/hsshortcutservice.h \
+           ../../../../hsdomainmodel/inc/hsshortcutservice_p.h \
+           ../../../../hsdomainmodel/inc/hswallpaper.h \
+           ../../../../hsdomainmodel/inc/hsbackuprestoreobserver.h \
+           ../../../../hsdomainmodel/inc/hsgui.h \
+           ../../../../hsdomainmodel/inc/hsidlewidget.h \
+           ../../../../hsdomainmodel/inc/hsdocumentloader.h \ 
+           ../../../../hsdomainmodel/inc/hsconfiguration.h \
+           ../../../../hsutils/inc/*.h \
+           ../../../../hsutils/tsrc/t_hsutils/inc/mocksysteminfo.h 
+           
+
+
+#Source files
+SOURCES += ./src/*.cpp \
+           ../../src/*.cpp \
+           ../../../../hsdomainmodel/src/hscontentservice.cpp \
+           ../../../../hsdomainmodel/src/hsshortcutservice.cpp \
+           ../../../../hsdomainmodel/src/hsconfiguration.cpp \
+						../../../../hsdomainmodel/src/hsidlewidget.cpp \
+					../../../../hsdomainmodel/src/hsdocumentloader.cpp \
+					../../../../hsdomainmodel/src/hspagevisual.cpp \
+           ../../../../hsdomainmodel/src/hspagetoucharea.cpp \
+           ../../../../hsdomainmodel/src/hswidgethostvisual.cpp \
+           ../../../../hsdomainmodel/src/hswidgettoucharea.cpp \
+           ../../../../hsdomainmodel/src/hswidgetpositioningonwidgetadd.cpp \           
+           ../../../../hsutils/src/hsimagegridwidget.cpp \
+           ../../../../hsutils/src/hsmenuevent.cpp \
+           ../../../../hsutils/src/hsmenueventfactory.cpp \
+           ../../../../hsutils/src/hsmenueventtransition.cpp \
+           ../../../../hsutils/src/hspageindicator.cpp \
+           ../../../../hsutils/src/hspageindicatoritem.cpp \
+           ../../../../hsutils/src/hstrashbinwidget.cpp \
+           ../../../../hsutils/src/hswidgetpositioningonorientationchange.cpp \
+           ../../../../hsutils/src/hstitleresolver.cpp \
+           ../../../../hsutils/src/hsdeviceinfolistener.cpp \
+           ../../../../hsutils/tsrc/t_hsutils/src/mocksysteminfo.cpp \
+           ../../../../hsutils/src/hsspinnerdialog.cpp \
+           ../../../../hsutils/src/hswidgetpositioningonwidgetmove.cpp \
+           ../../../../hsutils/src/hssnapline.cpp 
+           
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/t_hshomescreenstateplugin.pro	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,94 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+TEMPLATE = app
+
+CONFIG(debug, debug|release) {
+    DESTDIR = ./debug
+} else {
+    DESTDIR = ./release
+}
+
+CONFIG += debug_and_release \
+          console
+CONFIG += hb mobility
+
+MOBILITY = serviceframework
+
+QT += testlib \
+      xml \
+      sql
+HB += hbfeedback
+
+RESOURCES += t_hshomescreenstateplugin.qrc
+
+CONFIG(debug, debug|release) {
+    DESTDIR = ./debug
+} else {
+    DESTDIR = ./release
+}
+
+DEFINES += HOMESCREEN_TEST \
+           HSDOMAINMODEL_TEST \
+           HSUTILS_TEST \
+           MENUSERVICE_TEST
+
+coverage:DEFINES += COVERAGE_MEASUREMENT
+
+DEPENDPATH += .\
+              ./src \
+              ./inc \
+              ../../src \
+              ../../inc
+
+INCLUDEPATH += .\
+               ./inc \
+               ../../inc \
+               ../../../../../homescreenapp/inc \
+               ../../../../hsutils/inc \
+               ../../../../hsdomainmodel/inc \
+               ../../../../hsapplication/inc \
+               ../../../../serviceproviders/hsmenuserviceprovider/inc \
+               ../../../../hsutils/tsrc/t_hsutils/inc
+
+exists(../../../../../../homescreensrv) {
+INCLUDEPATH += ../../../../../../homescreensrv/homescreensrv_plat/contentstorage_api \
+               ../../../../../../homescreensrv/contentstorage/caclient/inc \
+               ../../../../../../homescreensrv/contentstorage/caclient/stub/inc
+} else {
+INCLUDEPATH += $${EPOCROOT}sf/mw/homescreensrv/homescreensrv_plat/contentstorage_api \
+               $${EPOCROOT}sf/mw/homescreensrv/contentstorage/caclient/inc \
+               $${EPOCROOT}sf/mw/homescreensrv/contentstorage/caclient/stub/inc
+}
+
+symbian: {
+    CONFIG += symbian_test
+    CONFIG -= hb
+    load(hb.prf)
+    CONFIG -= symbian_i18n
+    SYMBIAN_PLATFORMS = WINSCW ARMV5
+    TARGET.UID3 = 0x20022F60
+    TARGET.CAPABILITY = CAP_APPLICATION AllFiles
+    TARGET.EPOCHEAPSIZE = 0x20000 0x1000000 // 128kB - 16MB
+
+    LIBS+=-lxqservice -lxqserviceutil -labclient -lxqsettingsmanager
+    
+    MMP_RULES += SMPSAFE
+}
+
+include(t_hshomescreenstateplugin.pri)
+
+win32:include(installs_win32.pri)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/t_hshomescreenstateplugin.qrc	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,6 @@
+<RCC>
+    <qresource prefix="/" >           
+        <file alias="foundicon.png">foundicon.png</file>
+        <file alias="controllayer.docml">../../../../hsdomainmodel/resource/controllayer.docml</file>
+    </qresource>    
+</RCC>
\ No newline at end of file
Binary file homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/wallpapers/default_landscape.png has changed
Binary file homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/t_hshomescreenstateplugin/wallpapers/default_portrait.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/tsrc.pro	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,25 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+TEMPLATE = subdirs
+SUBDIRS  = t_hshomescreenstateplugin
+
+CONFIG  += ordered
+
+symbian: {
+    CONFIG += symbian_test
+}
+
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/hsmenuworkerstateplugin.pro	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/hsmenuworkerstateplugin.pro	Mon Oct 04 00:07:25 2010 +0300
@@ -44,6 +44,8 @@
         LIBS += -lhal
     }
     for(docmlFile, docmlFiles): DOCML+=$$docmlFile
+    
+    MMP_RULES += SMPSAFE
 }
 
 RESOURCES += $$qrcFile
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsaddtohomescreenstate.h	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsaddtohomescreenstate.h	Mon Oct 04 00:07:25 2010 +0300
@@ -19,6 +19,7 @@
 #ifndef HSADDSHORTCUTSTATE_H
 #define HSADDSHORTCUTSTATE_H
 
+#include <QScopedPointer>
 #include <QState>
 #include <QVariant>
 
@@ -33,7 +34,7 @@
 class CaEntry;
 class CaNotifier;
 class HsContentService;
-
+class HsDialogController;
 
 class HsAddToHomeScreenState: public  QState
 {
@@ -53,7 +54,9 @@
 
     void cleanUp();
 
-    void messageWidgetCorruptedFinished(HbAction* finishedAction);
+    void openHomeScreen();
+
+    void removeWidget();
 
 signals:
 
@@ -78,10 +81,6 @@
     QString mLibraryPath;
 
     int mEntryId;
-
-    HbMessageBox *mCorruptedMessage;
-
-    QAction *mConfirmAction;
     
     Hs::HsMenuMode mMenuMode;
     
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsdeletecollectionitemstate.h	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsdeletecollectionitemstate.h	Mon Oct 04 00:07:25 2010 +0300
@@ -25,7 +25,6 @@
 
 class QAction;
 class HbAction;
-class HbMessageBox;
 class HsShortcutService;
 class HsMenuService;
 
@@ -46,9 +45,7 @@
     void onEntry(QEvent *event);
 
 private slots:
-
-    void deleteMessageFinished(HbAction* finishedAction);
-
+    void removeApplicationFromCollection();
     void cleanUp();
 
 signals:
@@ -64,11 +61,6 @@
     int mItemId;
 
     int mCollectionId;
-
-    HbMessageBox *mDeleteMessage; // deletes itself automatically on close
-
-    QAction *mConfirmAction; // child for mDeleteMessage
-
 };
 
 #endif //HSDELETECOLLECTIONITEMSTATE_H
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsdeletecollectionstate.h	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsdeletecollectionstate.h	Mon Oct 04 00:07:25 2010 +0300
@@ -46,7 +46,7 @@
 
 private slots:
 
-    void deleteMessageFinished(HbAction* finishedAction);
+    void deleteCollection();
 
     void cleanUp();
 
@@ -60,8 +60,6 @@
 
 private:
     int mItemId;
-    HbMessageBox *mDeleteMessage; // deletes itself automatically on close
-    QAction *mConfirmAction; // child for mDeleteMessage
 };
 
 #endif //HSDELETECOLLECTIONSTATE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsdialogcontroller.h	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description:
+ *
+ */
+#ifndef HS_DIALOG_CONTROLLER_H
+#define HS_DIALOG_CONTROLLER_H
+
+#include <QObject>
+#include <QPair>
+#include <QMap>
+
+class QAction;
+class QString;
+class HbDialog;
+
+#include "hsmenudialogfactory.h"
+#include "hsmenuentryremovedhandler.h"
+
+class HsDialogController: public QObject
+{
+    Q_OBJECT
+public:
+    HsDialogController(
+            const QString &message,
+            HsMenuDialogFactory::Options =
+                 HsMenuDialogFactory::OkCancel);
+
+    HsDialogController(HbDialog *dialog, int acceptActionIndex,
+                       int rejectActionIndex);
+
+    ~HsDialogController();
+
+    void openDialog(int entryId = 0);
+
+
+signals:
+    void acceptActionTriggered(QAction* action);
+    void rejectActionTriggered(QAction* action);
+    void dialogCompleted();
+
+public slots:
+    void dismissDialog();
+
+private slots:
+    void onDialogFinished(HbAction* action);
+private:
+    HbDialog *mDialog;
+
+    const int mAcceptActionIndex;
+    const int mRejectActionIndex;
+};
+
+#endif
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsinstallationlogstate.h	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsinstallationlogstate.h	Mon Oct 04 00:07:25 2010 +0300
@@ -23,8 +23,6 @@
 #include "hsmenustates_global.h"
 HS_STATES_TEST_CLASS(MenuStatesTest)
 
-class HbDialog;
-
 class HsInstallationLogState: public QState
 {
     Q_OBJECT
@@ -40,13 +38,6 @@
 protected:
 
     void onEntry(QEvent *event);
-    void onExit(QEvent *event);
-
-private slots:
-
-    void stateExited();
-    void cleanUp();
-
 signals:
 
     void exit();
@@ -55,11 +46,6 @@
 
     void construct();
     void createInstallationLogDialog();
-
-private:
-    
-    HbDialog* mInstalationLogDialog;
-
 };
 
 #endif //HSINSTALLATIONLOGSTATE_H
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hspreviewhswidgetstate.h	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hspreviewhswidgetstate.h	Mon Oct 04 00:07:25 2010 +0300
@@ -50,9 +50,9 @@
 
 private slots:
 
-    void previewDialogFinished(HbAction* finishedAction);
+    void addToHomeScreen();
 
-    void messageWidgetCorruptedFinished(HbAction* finishedAction);
+    void removeWidget();
     
     void onEntry(QEvent *event);
 
@@ -62,21 +62,12 @@
     void exit();
 
 private:
-
     void showMessageWidgetCorrupted();
-    
     HbDialog* buildPreviewDialog(const CaEntry& entry) const;
 
 private:
-    
-    HbDialog *mPreviewDialog;
-    QScopedPointer<HsMenuEntryRemovedHandler> mEntryObserver;
+
     int mEntryId;
-
-    HbMessageBox *mCorruptedMessage;
-
-    QAction *mConfirmRemovalAction;
-    QAction *mAddToHomescreenAction;
     
     QVariant mToken;
     
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsuinstallfailedstate.h	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsuinstallfailedstate.h	Mon Oct 04 00:07:25 2010 +0300
@@ -43,12 +43,6 @@
 protected:
 
     void onEntry(QEvent *event);
-    void onExit(QEvent *event);
-
-private slots:
-
-    void stateExited();
-    void cleanUp();
     
 signals:
 
@@ -58,9 +52,7 @@
 
     void construct();
 
-private:
 
-    HbMessageBox *mBox;
 };
 
 #endif /* HSUINSTALLFAILEDSTATE_H_ */
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsuninstallitemstate.h	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsuninstallitemstate.h	Mon Oct 04 00:07:25 2010 +0300
@@ -19,17 +19,21 @@
 #define HSUNINSTALLITEMSTATE_H
 
 #include <QState>
+#include <QSharedPointer>
 
 #include "hsmenustates_global.h"
 HS_STATES_TEST_CLASS(MenuStatesTest)
 
 class QAction;
+class HbDocumentLoader;
+class HsDialogController;
 class HbAction;
 class HbMessageBox;
 class HsShortcutService;
 class HsMenuService;
 class HbDialog;
 class CaNotifier;
+class CaEntry;
 
 class HsUninstallItemState: public QState
 {
@@ -38,11 +42,6 @@
     HS_STATES_TEST_FRIEND_CLASS(MenuStatesTest)
 
 public:
-    enum UninstallDialogType {
-        UninstallDialogDefinition02 = 1,
-        UninstallDialogDefinition03,
-        UninstallDialogDefinition04
-    };
 
     HsUninstallItemState(QState *parent = 0);
 
@@ -54,10 +53,10 @@
 
 private slots:
 
-    void uninstallMessageFinished(HbAction* finishedAction);
+    void uninstallItem();
 
     void cleanUp();
-    
+
 public slots:
 
     void uninstallFailed(int error);
@@ -69,23 +68,25 @@
 private:
 
     void construct();
-    
+
     bool getApplicationsNames(QString &componentName,
         QStringList &applicationsNames,
         QString &confirmationMessage);
-    
+
     void createSimpleUninstallMessage(bool isJava=false);
     void createUninstallJavaMessage();
+    HsDialogController *prepareDialog(HbDialog *dialog);
+    QString loadProperSection(QStringList &applicationsNames,
+            QString &detailsMessage,
+            HbDocumentLoader &loader);
+    void prepareApplicationListLabel( QStringList & applicationsNames,
+            HbDocumentLoader & loader);
+    void prepareDialogLabel(
+            QString &componentName, HbDocumentLoader &loader);
 
 private:
 
-    int mItemId;
-    
-    HbMessageBox *mUninstallMessage; // deletes itself automatically on close
-    HbDialog *mUninstallJavaMessage;
-    UninstallDialogType mDialogType;
-
-    QAction *mConfirmAction; // child for mConfirmMessage
+    QSharedPointer<CaEntry> mEntry;
 
 };
 
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsviewappdetailsstate.h	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsviewappdetailsstate.h	Mon Oct 04 00:07:25 2010 +0300
@@ -28,7 +28,6 @@
 
 class HbListWidget;
 class HsMenuItemModel;
-class HbDialog;
 class CaNotifier;
 class HbDocumentLoader;
 
@@ -48,11 +47,6 @@
 protected:
 
     void onEntry(QEvent *event);
-    void onExit(QEvent *event);
-
-private slots:
-
-    void stateExited();
     
 signals:
     void exit();    
@@ -63,10 +57,6 @@
     void setFieldPresentation(QString key,
             CaSoftwareRegistry::DetailMap &detailMap,
             HbDocumentLoader &loader);
-
-private:
-
-    HbDialog *mDialog;
 };
 
 #endif /* HSVIEWAPPDETAILSSTATE_H_ */
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsviewappsettingsstate.h	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsviewappsettingsstate.h	Mon Oct 04 00:07:25 2010 +0300
@@ -44,7 +44,7 @@
     virtual ~HsViewAppSettingsState();
     
 signals:
-    void initialize(const QString &aUid);      
+    void initialize(const QString &aUid, const QString &aAppName);      
     void exit();
 
 protected:
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/resource/hsappchecklist.docml	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/resource/hsappchecklist.docml	Mon Oct 04 00:07:25 2010 +0300
@@ -13,7 +13,6 @@
         <enums name="dismissPolicy" value="NoDismiss"/>
         <widget name="aps_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_select_items" name="plainText"/>
             <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
         </widget>
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/resource/hsarrangedialog.docml	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/resource/hsarrangedialog.docml	Mon Oct 04 00:07:25 2010 +0300
@@ -8,7 +8,6 @@
         </object>
         <widget name="qtl_dialog_pri_heading" role="HbDialog:headingWidget" type="HbLabel">
             <enums name="alignment" value="AlignLeft|AlignLeading"/>
-            <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
             <string locid="txt_applib_title_arrange" name="plainText"/>
             <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
         </widget>
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/resource/hscollectionslistdialog.docml	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/resource/hscollectionslistdialog.docml	Mon Oct 04 00:07:25 2010 +0300
@@ -10,7 +10,6 @@
         <enums name="dismissPolicy" value="NoDismiss"/>
         <widget name="qtl_dialog_pri_heading" role="HbDialog:headingWidget" type="HbLabel">
             <enums name="alignment" value="AlignLeft|AlignLeading"/>
-            <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
             <string locid="txt_applib_title_add_to" name="plainText"/>
             <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
         </widget>
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/resource/hsinstallationlogdialog.docml	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/resource/hsinstallationlogdialog.docml	Mon Oct 04 00:07:25 2010 +0300
@@ -9,7 +9,6 @@
         <enums name="dismissPolicy" value="NoDismiss"/>
         <widget name="qtl_dialog_pri_heading" role="HbDialog:headingWidget" type="HbLabel">
             <enums name="alignment" value="AlignLeft|AlignLeading"/>
-            <contentsmargins bottom="var(hb-param-margin-gene-popup)" left="var(hb-param-margin-gene-popup)" right="var(hb-param-margin-gene-popup)" top="var(hb-param-margin-gene-popup)"/>
             <string locid="txt_applib_title_installation_logs" name="plainText"/>
             <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
         </widget>
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsaddtohomescreenstate.cpp	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsaddtohomescreenstate.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -23,8 +23,7 @@
 #include <hbaction.h>
 #include <hbnotificationdialog.h>
 #include <hsmenueventfactory.h>
-#include "hsmenudialogfactory.h"
-#include "hsmenuentryremovedhandler.h"
+#include "hsdialogcontroller.h"
 
 #include "hsaddtohomescreenstate.h"
 #include "hsmenuevent.h"
@@ -55,8 +54,7 @@
  \retval void
  */
 HsAddToHomeScreenState::HsAddToHomeScreenState(QState *parent) :
-    QState(parent), 
-    mCorruptedMessage(NULL), mConfirmAction(NULL),
+    QState(parent),
     mMenuMode(Hs::NormalHsMenuMode)
 {
     setObjectName("/AddToHomeScreenState");
@@ -69,11 +67,14 @@
 }
 
 /*!
- Destructor. Empty one.
+ Destructor.
  */
 HsAddToHomeScreenState::~HsAddToHomeScreenState()
 {
-    cleanUp();
+    QT_TRY {
+        emit exit();
+    } QT_CATCH (...) {
+    }
 }
 
 /*!
@@ -124,10 +125,7 @@
 /*!
  Adds a widget to active page of home screen
  \param contentService: service for adding widgets
- \param library: widget library path and file name
  \param uri: widget uri
- \param entryId: widget entry id (ignored)
- \param activePage: active page of home screen
  \retval true if successful
  */
 bool HsAddToHomeScreenState::addWidget(HsContentService &contentService, 
@@ -141,11 +139,7 @@
     if (!success) {
         showMessageWidgetCorrupted();
     } else {
-        emit exit();
-        if (mMenuMode == Hs::AddHsMenuMode) {
-            machine()->postEvent(
-                HsMenuEventFactory::createOpenHomeScreenEvent());
-        }
+        openHomeScreen();
     }
     logActionResult("Adding widget", mEntryId, success);
     HSMENUTEST_FUNC_EXIT("HsAddToHomeScreenState::addWidget");
@@ -153,7 +147,7 @@
 }
 
 /*!
- Shows message about corrupted widget library. Deletes widget eventually
+ Shows message about corrupted widget library. Deletes widget eventually.
  \param itemId entryId of widget (needed to delete it)
  \retval void
  */
@@ -161,62 +155,78 @@
 {
     HSMENUTEST_FUNC_ENTRY("HsCollectionState::showMessageWidgetCorrupted");
 
-    mCorruptedMessage = HsMenuDialogFactory().create(
-            hbTrId("txt_applib_dialog_file_corrupted_unable_to_use_wi"));
-    mConfirmAction = mCorruptedMessage->actions().value(0);
+    QScopedPointer<HsDialogController> dialogController(
+            new HsDialogController(
+                hbTrId(
+                    "txt_applib_dialog_file_corrupted_unable_to_use_wi")));
+
+    connect(dialogController.data(),
+            SIGNAL(acceptActionTriggered(QAction*)),
+            this,
+            SLOT(removeWidget()));
+
+    connect(dialogController.data(),
+            SIGNAL(dialogCompleted()),
+            this,
+            SLOT(openHomeScreen()));
+
+    // ensure dialog is dismissed on app key pressed
+    connect(this, SIGNAL(exited()),
+            dialogController.data(),
+            SLOT(dismissDialog()));
+
+    dialogController.take()->openDialog(
+            mEntryId
+            );
     
-    QScopedPointer<HsMenuEntryRemovedHandler> entryObserver(
-        new HsMenuEntryRemovedHandler(mEntryId, 
-            mCorruptedMessage, SLOT(close())));
-    
-    entryObserver.take()->setParent(mCorruptedMessage); 
-    
-    mCorruptedMessage->open(this, SLOT(messageWidgetCorruptedFinished(HbAction*)));
-
     HSMENUTEST_FUNC_EXIT("HsCollectionState::showMessageWidgetCorrupted");
 }
 
 /*!
- Slot launched on dismissing the corrupted widget error note
+ Exits the state. When in Add Mode sends event requesting back step to
+ Home Screen.
  \retval void
  */
-void HsAddToHomeScreenState::messageWidgetCorruptedFinished
-        (HbAction* finishedAction)
+void HsAddToHomeScreenState::openHomeScreen()
 {
-    if (static_cast<QAction*>(finishedAction) == mConfirmAction) {
-        HsMenuService::executeAction(mEntryId, Hs::removeActionIdentifier);
-    }
     emit exit();
     if (mMenuMode == Hs::AddHsMenuMode) {
         machine()->postEvent(
             HsMenuEventFactory::createOpenHomeScreenEvent());
     }
-    mConfirmAction = NULL;
 }
 
 
 /*!
+ Slot. Removes entry requested that was subject of
+ current 'add to homescreen' action.
+ \retval void
+ */
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC SKIP
+#endif //COVERAGE_MEASUREMENT
+void HsAddToHomeScreenState::removeWidget()
+{
+    HsMenuService::executeAction(mEntryId, Hs::removeActionIdentifier);
+}
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC ENDSKIP
+#endif //COVERAGE_MEASUREMENT
+
+/*!
  Slot launched after state has exited and in destructor.
  \retval void
  */
 void HsAddToHomeScreenState::cleanUp()
 {
-    // Close popups if App key was pressed
-    if (mCorruptedMessage != NULL) {
-        mCorruptedMessage->close();
-        mCorruptedMessage = NULL;
-    }
-    
     mToken = NULL;
 }
 
 
 /*!
  Adds a shortcut to active page of home screen
- \param shortcutService: service for adding shortcuts
- \param entryId: menu entry id
- \param activePage: active page of home screen
- \retval true if successful
+ \param contentService service for adding shortcuts.
+ \retval true if successful.
  */
 bool HsAddToHomeScreenState::addShortcut(HsContentService &contentService)
 {
@@ -234,10 +244,9 @@
 }
 
 /*!
- Adds a tapplication to active page of home screen
- \param shortcutService: service for adding shortcuts
- \param entryId: menu entry id
- \param data: data from event
+ Adds a tapplication to active page of Home Screen.
+ \param contentService Service for adding shortcuts.
+ \param entry Entry being added to Home Screen.
  \retval true if successful
  */
 bool HsAddToHomeScreenState::addApplication(HsContentService &contentService,
@@ -270,11 +279,8 @@
     } else {
             success = addShortcut(contentService);
     }
-    emit exit();
-    if (mMenuMode == Hs::AddHsMenuMode) {
-        machine()->postEvent(
-            HsMenuEventFactory::createOpenHomeScreenEvent());
-    }
+    openHomeScreen();
+
     return success;
 }
 
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hscollectionnamedialog.cpp	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hscollectionnamedialog.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -135,10 +135,31 @@
 
     unsigned int numToAppend(1);
 
-    while (mOtherCollectionsNames.contains(newName)) {
-        newName = hbTrId("txt_applib_dialog_entry_collectionl1").arg(
+    bool defaultCollection = false;
+    if (newName == hbTrId("txt_applib_dialog_entry_collection")) {
+        defaultCollection = true;
+    }
+    if (defaultCollection) {
+        while (mOtherCollectionsNames.contains(newName)) {
+            newName = hbTrId("txt_applib_dialog_entry_collectionl1").arg(
                 numToAppend);
-        numToAppend++;
+            numToAppend++;
+        }
+    }
+    else {
+        QString textMap = hbTrId(
+            "txt_applib_dialog_collection_name_entry_1_l1");
+        // TODO: Temporary workaround.
+        // The "if" instruction below can be removed when
+        // a text map "txt_applib_dialog_collection_name_entry_1_l1"
+        // is available in the platform.
+        if (textMap == "txt_applib_dialog_collection_name_entry_1_l1") {
+            textMap = "%2 (%L1)";
+        }
+        while (mOtherCollectionsNames.contains(newName)) {
+            newName = textMap.arg(numToAppend).arg(name);
+            numToAppend++;
+        }
     }
 
     HSMENUTEST_FUNC_EXIT("HsInputDialog::newName");
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsdeletecollectionitemstate.cpp	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsdeletecollectionitemstate.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -21,7 +21,7 @@
 #include <hsmenuservice.h>
 #include <hsmenueventfactory.h>
 
-#include "hsmenudialogfactory.h"
+#include "hsdialogcontroller.h"
 #include "hsdeletecollectionitemstate.h"
 #include "hsmenuevent.h"
 
@@ -39,9 +39,7 @@
 HsDeleteCollectionItemState::HsDeleteCollectionItemState(QState *parent) :
     QState(parent),
     mItemId(0),
-    mCollectionId(0),
-    mDeleteMessage(NULL),
-    mConfirmAction(NULL)
+    mCollectionId(0)
 {
     construct();
 }
@@ -51,7 +49,10 @@
  */
 HsDeleteCollectionItemState::~HsDeleteCollectionItemState()
 {
-    cleanUp(); // in case of throw
+    QT_TRY {
+        emit exit();
+    } QT_CATCH (...) {
+    }
 }
 
 /*!
@@ -83,30 +84,49 @@
 
     QString message;
     message.append(
-        HbParameterLengthLimiter("txt_applib_dialog_remove_1_from_collection").arg(
-            HsMenuService::getName(mItemId)));
+        HbParameterLengthLimiter(
+                "txt_applib_dialog_remove_1_from_collection").arg(
+                HsMenuService::getName(mItemId)));
+
+    QScopedPointer<HsDialogController> dialogController(
+            new HsDialogController(message));
+
+    connect(dialogController.data(),
+            SIGNAL(acceptActionTriggered(QAction*)),
+            this,
+            SLOT(removeApplicationFromCollection()));
 
-    // create and show message box
-    mDeleteMessage = HsMenuDialogFactory().create(message);
-    mConfirmAction = mDeleteMessage->actions().value(0);
-    mDeleteMessage->open(this, SLOT(deleteMessageFinished(HbAction*)));
+    connect(dialogController.data(),
+            SIGNAL(dialogCompleted()),
+            this,
+            SIGNAL(exit()));
+
+    // ensure dialog is dismissed on app key pressed
+    connect(this, SIGNAL(exited()),
+            dialogController.data(),
+            SLOT(dismissDialog()));
+
+    dialogController.take()->openDialog();
 
     HSMENUTEST_FUNC_EXIT("HsDeleteCollectionItemState::onEntry");
 }
 
+
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC SKIP
+#endif //COVERAGE_MEASUREMENT
 /*!
- Action after closed confirmation dialog.
- \param finishedAction chosen action.
+ Slot. Removes application from collection, both specified by event
+ passed to the state on entry.
  \retval void
  */
-void HsDeleteCollectionItemState::deleteMessageFinished(HbAction* finishedAction)
+void HsDeleteCollectionItemState::removeApplicationFromCollection()
 {
-    if (static_cast<QAction*>(finishedAction) == mConfirmAction) {
-        HsMenuService::removeApplicationFromCollection(mItemId, mCollectionId);
-    }
-    emit exit();
-    mConfirmAction = NULL;
+    HsMenuService::removeApplicationFromCollection(mItemId, mCollectionId);
 }
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC ENDSKIP
+#endif //COVERAGE_MEASUREMENT
 
 /*!
  Slot launched after state has exited and in destructor.
@@ -114,14 +134,6 @@
  */
 void HsDeleteCollectionItemState::cleanUp()
 {
-    // Close messagebox if App key was pressed
-    if (mDeleteMessage) {
-		disconnect(mDeleteMessage, SIGNAL(finished(HbAction*)), this, SLOT(deleteMessageFinished(HbAction*)));
-        mDeleteMessage->close();
-		mDeleteMessage = NULL;
-    }
-	
-    mConfirmAction = NULL;
     mItemId = 0;
     mCollectionId = 0;
 }
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsdeletecollectionstate.cpp	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsdeletecollectionstate.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -24,7 +24,7 @@
 #include <hsmenueventfactory.h>
 
 #include "hsdeletecollectionstate.h"
-#include "hsmenudialogfactory.h"
+#include "hsdialogcontroller.h"
 #include "hsmenuevent.h"
 
 /*!
@@ -40,9 +40,7 @@
  */
 HsDeleteCollectionState::HsDeleteCollectionState(QState *parent) :
     QState(parent),
-    mItemId(0),
-    mDeleteMessage(NULL),
-    mConfirmAction(NULL)
+    mItemId(0)
 {
     construct();
 }
@@ -52,7 +50,10 @@
  */
 HsDeleteCollectionState::~HsDeleteCollectionState()
 {
-    cleanUp(); // in case of throw
+    QT_TRY {
+        emit exit();
+    } QT_CATCH (...) {
+    }
 }
 
 /*!
@@ -91,41 +92,46 @@
                            HsMenuService::getName(mItemId)));
     }
 
-    // create and show message box
-    mDeleteMessage = HsMenuDialogFactory().create(message);
-    mConfirmAction = mDeleteMessage->actions().value(0);
-    mDeleteMessage->open(this, SLOT(deleteMessageFinished(HbAction*)));
+    QScopedPointer<HsDialogController> dialogController(
+            new HsDialogController(message));
+
+    connect(dialogController.data(),
+            SIGNAL(acceptActionTriggered(QAction*)),
+            this,
+            SLOT(deleteCollection()));
+
+    connect(dialogController.data(),
+            SIGNAL(dialogCompleted()),
+            this,
+            SIGNAL(exit()));
+
+    // ensure dialog is dismissed on app key pressed
+    connect(this, SIGNAL(exited()),
+            dialogController.data(),
+            SLOT(dismissDialog()));
+
+    dialogController.take()->openDialog();
 
     HSMENUTEST_FUNC_EXIT("HsDeleteCollectionState::onEntry");
 }
 
-
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
-void HsDeleteCollectionState::deleteMessageFinished(HbAction* finishedAction)
+/*!
+ Slot. Removes collection specified by event passed on entry to the state.
+ \retval void
+ */
+void HsDeleteCollectionState::deleteCollection()
 {
-    if (static_cast<QAction*>(finishedAction) == mConfirmAction) {
-        HsMenuService::removeCollection(mItemId);
-        machine()->postEvent(
+    HsMenuService::removeCollection(mItemId);
+    machine()->postEvent(
         HsMenuEventFactory::createCollectionDeletedEvent());
-    }
-    emit exit();
-    mConfirmAction = NULL;
 }
 
+
 /*!
  Slot launched after state has exited and in destructor.
  \retval void
  */
 void HsDeleteCollectionState::cleanUp()
 {
-    // Close messagebox if App key was pressed
-    if (mDeleteMessage) {
-        mDeleteMessage->close();
-        mDeleteMessage = NULL;
-    }
-
-    mConfirmAction = NULL;
     mItemId = 0;
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsdialogcontroller.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,150 @@
+/*
+ * 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: Dialog controller
+ *
+ */
+
+#include <HbAction>
+#include <QString>
+#include <HbMessageBox>
+
+#include "hsdialogcontroller.h"
+
+/*!
+ \class HsDialogController
+ \ingroup group_hsworkerstateplugin
+ \brief Dialog utility.
+
+ Manages dialog lifetime depending on entry removal or
+ signal arrival, forwards dialog originating actions to user specified callbacks.
+ */
+
+/*!
+    \fn void acceptActionTriggered(QAction* action)
+    \param action Pointer to action which triggered the signal.
+    Emitted when controlled  dialog closed with \a accept action.
+*/
+
+
+/*!
+    \fn rejectActionTriggered(QAction* action)
+    \param action Pointer to action which triggered the signal.
+    Emitted when controlled dialog is closed with \a reject action.
+*/
+
+/*!
+   \fn void dialogCompleted()
+   Emitted whenever controlled dialog is closed.
+*/
+
+/*!
+  \param message Dialog's message.
+  \param options Dialog type indicator.
+  \see HsMenuDialogFactory
+  Creates dialog controller instance with prediefinded dialog type.
+  */
+HsDialogController::HsDialogController(
+        const QString &message,
+        HsMenuDialogFactory::Options options):
+    mDialog(HsMenuDialogFactory().create(message, options)),
+    mAcceptActionIndex(HsMenuDialogFactory::acceptActionIndex()),
+    mRejectActionIndex(HsMenuDialogFactory::rejectActionIndex())
+{
+}
+
+/*!
+  \param dialog Instance of the dialog to be displayed.
+  Ownership of the dialog is taken by this object.
+  \param acceptActionIndex Index of an \a accept action in a dialog action list
+     Actions indices are 0 based. (\see QGraphicsWidget).
+  \param rejectActionIndex Index of a \a reject action in a dialog action list.
+  Actions indices are 0 based.(\see QGraphicsWidget).
+  Creates dialog controller instance with custom dialog type.
+
+  */
+HsDialogController::HsDialogController(HbDialog *dialog,
+                                       int acceptActionIndex,
+                                       int rejectActionIndex):
+    mDialog(dialog),
+    mAcceptActionIndex(acceptActionIndex),
+    mRejectActionIndex(rejectActionIndex)
+{
+    Q_ASSERT(mDialog != NULL);
+    mDialog->setAttribute(Qt::WA_DeleteOnClose);
+}
+
+/*!
+  Destroys controlled dialog.
+  */
+HsDialogController::~HsDialogController()
+{
+    QT_TRY {
+        mDialog->deleteLater();
+    } QT_CATCH (...) {
+    }
+}
+
+
+/*!
+  \param entryId Id of the entry which removal will close the dialog.
+  Opens dialog.
+ */
+void HsDialogController::openDialog(int entryId)
+{
+    HsMenuEntryRemovedHandler *entryRemovedHandler =
+        new HsMenuEntryRemovedHandler(entryId, mDialog, SLOT(close()));
+
+    QT_TRY {
+        // this object should be deleted when controlled dialog is deleted
+        setParent(mDialog);
+    } QT_CATCH (const std::bad_alloc &) {
+        delete entryRemovedHandler;
+        QT_RETHROW;
+    }
+
+    mDialog->open(this, SLOT(onDialogFinished(HbAction*)));
+}
+
+/*!
+  This slot closes dialog.
+  */
+void HsDialogController::dismissDialog()
+{
+    mDialog->close();
+}
+
+/*!
+  \param action Identifies dialog's action.
+  Sends signals appropriate for \a action. Irrespective of the action,
+  always sends \a dialogCompleted signal.
+  */
+void HsDialogController::onDialogFinished(HbAction* action)
+{
+    mDialog->disconnect();
+
+    const int actionIndex = mDialog->actions().indexOf(action);
+
+    if (actionIndex == mAcceptActionIndex)
+    {
+        emit acceptActionTriggered(action);
+    } else if (actionIndex == mRejectActionIndex) {
+        emit rejectActionTriggered(action);
+    }
+
+    emit dialogCompleted();
+
+    mDialog->disconnect();
+}
+
+
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsinstallationlogstate.cpp	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsinstallationlogstate.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -23,7 +23,7 @@
 #include <casoftwareregistry.h>
 
 #include "hsinstallationlogstate.h"
-
+#include "hsdialogcontroller.h"
 /*!
  \class HsInstallationLogState
  \ingroup group_hsworkerstateplugin
@@ -36,8 +36,7 @@
  \param parent Parent state.
  */
 HsInstallationLogState::HsInstallationLogState(QState *parent) :
-    QState(parent),
-    mInstalationLogDialog(NULL)
+    QState(parent)
 {
     construct();
 }
@@ -47,7 +46,10 @@
  */
 HsInstallationLogState::~HsInstallationLogState()
 {
-    cleanUp(); // in case of throw
+    QT_TRY {
+        emit exit();
+    } QT_CATCH (...) {
+    }
 }
 
 /*!
@@ -59,7 +61,6 @@
     if (this->parent()) {
         setObjectName(this->parent()->objectName() + objectName());
     }
-    connect(this, SIGNAL(exited()), SLOT(cleanUp()));
 }
 
 /*!
@@ -77,13 +78,6 @@
     HSMENUTEST_FUNC_EXIT("HsInstallationLogState::onEntry");
 }
 
-/*!
- Invoked on exiting state
- */
-void HsInstallationLogState::onExit(QEvent *event)
-{
-    QState::onExit(event);
-}
 
 /*!
  Create installation log dialog.
@@ -100,13 +94,13 @@
     Q_ASSERT_X(loadStatusOk, HS_INSTALLATION_LOG_DIALOG_LAYOUT,
            "Error while loading docml file.");
 
-    mInstalationLogDialog = qobject_cast<HbDialog*>(
-        loader.findWidget(HS_INSTALLATION_LOG_DIALOG_NAME));
+    QScopedPointer<HbDialog> dialog(qobject_cast<HbDialog*>(
+        loader.findWidget(HS_INSTALLATION_LOG_DIALOG_NAME)));
     
-    if (mInstalationLogDialog != NULL) {
-        mInstalationLogDialog->actions()[0]->setParent(mInstalationLogDialog);
-        mInstalationLogDialog->setTimeout(HbPopup::NoTimeout);
-        mInstalationLogDialog->setAttribute(Qt::WA_DeleteOnClose, true);
+    if (!dialog.isNull()) {
+        dialog->actions()[0]->setParent(dialog.data());
+        dialog->setTimeout(HbPopup::NoTimeout);
+        dialog->setAttribute(Qt::WA_DeleteOnClose, true);
     
         HbLabel* logList;
         QString applicationsList;
@@ -143,27 +137,26 @@
 
         applicationsList.chop(2 * newLine.size());
         logList->setPlainText(applicationsList);
-    
-        mInstalationLogDialog->open(this, SLOT(stateExited()));
+
+
+        QScopedPointer<HsDialogController> dialogController(
+            new HsDialogController(dialog.take(),
+                HsMenuDialogFactory::acceptActionIndex(),
+                HsMenuDialogFactory::rejectActionIndex()));
+
+        connect(dialogController.data(),
+                SIGNAL(dialogCompleted()),
+                this,
+                SIGNAL(exit()));
+
+        // ensure dialog is dismissed on app key pressed
+        connect(this, SIGNAL(exited()),
+                dialogController.data(),
+                SLOT(dismissDialog()));
+
+        dialogController.take()->openDialog();
     }
 }
 
-void HsInstallationLogState::stateExited()
-{
-    mInstalationLogDialog = NULL;
-    emit exit();
-}
 
-/*!
- Slot launched after state has exited and in destructor.
- \retval void
- */
-void HsInstallationLogState::cleanUp()
-{
-    // Close popups if App key was pressed
-    if (mInstalationLogDialog) {
-        mInstalationLogDialog->close();
-        mInstalationLogDialog = NULL;
-    }
-}
 
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hspreviewhswidgetstate.cpp	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hspreviewhswidgetstate.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -34,7 +34,7 @@
 #include "hswidgethost.h"
 #include "hspreviewhswidgetstate.h"
 #include "hsmenuevent.h"
-#include "hsmenudialogfactory.h"
+#include "hsdialogcontroller.h"
 #include "hsapp_defs.h"
 #include "hsscene.h"
 #include "hspage.h"
@@ -63,11 +63,7 @@
  */
 HsPreviewHSWidgetState::HsPreviewHSWidgetState(QState *parent) :
     QState(parent),
-    mPreviewDialog(0),
     mEntryId(0),
-    mCorruptedMessage(0),
-    mConfirmRemovalAction(0),
-    mAddToHomescreenAction(0),
     mToken(),
     mUri()
 {
@@ -83,7 +79,10 @@
  */
 HsPreviewHSWidgetState::~HsPreviewHSWidgetState()
 {
-    cleanUp(); // in case of throw
+    QT_TRY {
+        emit exit();
+    } QT_CATCH (...) {
+    }
 }
 
 /*!
@@ -112,16 +111,33 @@
     QSharedPointer<CaEntry> entry =
         CaService::instance()->getEntry(mEntryId);
     mUri = entry->attribute(Hs::widgetUriAttributeName);
-    mPreviewDialog = buildPreviewDialog(*entry);
-    mAddToHomescreenAction = mPreviewDialog->actions().value(0);
+    QScopedPointer<HbDialog> previewDialog(buildPreviewDialog(*entry));
     
-    if (mPreviewDialog != NULL) {
+    if (!previewDialog.isNull()) {
         // Launch popup asyncronously
-        
-        mEntryObserver.reset(
-            new HsMenuEntryRemovedHandler(mEntryId, this, SIGNAL(exit())));
-        
-        mPreviewDialog->open(this, SLOT(previewDialogFinished(HbAction*)));
+
+
+        QScopedPointer<HsDialogController> dialogController(
+                new HsDialogController(previewDialog.take(),
+                    HsMenuDialogFactory::acceptActionIndex(),
+                    HsMenuDialogFactory::rejectActionIndex()));
+
+        connect(dialogController.data(),
+                SIGNAL(acceptActionTriggered(QAction*)),
+                this,
+                SLOT(addToHomeScreen()));
+
+        connect(dialogController.data(),
+                SIGNAL(dialogCompleted()),
+                this,
+                SIGNAL(exit()));
+
+        // ensure dialog is dismissed on app key pressed
+        connect(this, SIGNAL(exited()),
+                dialogController.data(),
+                SLOT(dismissDialog()));
+
+        dialogController.take()->openDialog(mEntryId);
     }
     
     HSMENUTEST_FUNC_EXIT("HsPreviewHSWidgetState::onEntry");
@@ -132,52 +148,31 @@
  \retval void
  */
 void HsPreviewHSWidgetState::cleanUp()
-{
-    if (mPreviewDialog != NULL) {
-        mPreviewDialog->disconnect();
-        mPreviewDialog ->close();
-        mPreviewDialog = NULL;
-    }
-    
-    if (mCorruptedMessage != NULL) {
-        mCorruptedMessage->disconnect();
-        mCorruptedMessage->close();
-        mCorruptedMessage = NULL;
-    }
-    
+{  
     mToken = NULL;
 }
 
 /*!
- Slot launched on dismissing the preview dialog
+ Slot. Adds the entry controlled by the state to Home Screen.
  \retval void
  */
-void HsPreviewHSWidgetState::previewDialogFinished(HbAction* finishedAction)
+void HsPreviewHSWidgetState::addToHomeScreen()
 {
-    mPreviewDialog = NULL;
+    QVariantHash widgetData;
+    widgetData[Hs::uri] = mUri;
+    widgetData[Hs::homescreenData] = mToken;
 
-    if (finishedAction == mAddToHomescreenAction) {
+    bool success = HsContentService::instance()->createWidget(widgetData);
 
-        QVariantHash widgetData;
-        widgetData[Hs::uri] = mUri;
-        widgetData[Hs::homescreenData] = mToken;
-        
-        bool success = HsContentService::instance()->createWidget(widgetData);
-        
-        if (success) {
-            HbNotificationDialog *notificationDialog = new HbNotificationDialog();
-            notificationDialog->setAttribute(Qt::WA_DeleteOnClose);
-            notificationDialog->setTitle(hbTrId("txt_applib_dpophead_added_to_homescreen"));
-            notificationDialog->show();
-            emit exit();
-        }
-        else {
-            showMessageWidgetCorrupted();            
-        }
-    } else {
-        emit exit();
+    if (success) {
+        HbNotificationDialog *notificationDialog = new HbNotificationDialog();
+        notificationDialog->setAttribute(Qt::WA_DeleteOnClose);
+        notificationDialog->setTitle(hbTrId("txt_applib_dpophead_added_to_homescreen"));
+        notificationDialog->show();
     }
-    mAddToHomescreenAction = 0;
+    else {
+        showMessageWidgetCorrupted();
+    }
 }
 
 /*!
@@ -188,31 +183,46 @@
 {
     HSMENUTEST_FUNC_ENTRY("HsCollectionState::showMessageWidgetCorrupted");
 
-    mCorruptedMessage = HsMenuDialogFactory().create(
-            hbTrId("txt_applib_dialog_file_corrupted_unable_to_use_wi"));
+    QScopedPointer<HsDialogController> dialogController(
+            new HsDialogController(
+                hbTrId(
+                    "txt_applib_dialog_file_corrupted_unable_to_use_wi")));
+
+    connect(dialogController.data(),
+            SIGNAL(acceptActionTriggered(QAction*)),
+            this,
+            SLOT(removeWidget()));
 
-    mConfirmRemovalAction = mCorruptedMessage->actions().value(0);
-    mCorruptedMessage
-        ->open(this, SLOT(messageWidgetCorruptedFinished(HbAction*)));
+    connect(dialogController.data(),
+            SIGNAL(dialogCompleted()),
+            this,
+            SIGNAL(exit()));
+
+    // ensure dialog is dismissed on app key pressed
+    connect(this, SIGNAL(exited()),
+            dialogController.data(),
+            SLOT(dismissDialog()));
+
+    dialogController.take()->openDialog(mEntryId);
 
     HSMENUTEST_FUNC_EXIT("HsCollectionState::showMessageWidgetCorrupted");
 }
 
 /*!
- Slot launched on dismissing the corrupted widget error note
+ Slot. Removes the entry controlled by the state from App Library.
  \retval void
  */
-void HsPreviewHSWidgetState::messageWidgetCorruptedFinished(HbAction* finishedAction)
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC SKIP
+#endif //COVERAGE_MEASUREMENT
+
+void HsPreviewHSWidgetState::removeWidget()
 {
-    mCorruptedMessage = NULL;
-	
-    if (static_cast<QAction*>(finishedAction) == mConfirmRemovalAction) {
-        HsMenuService::executeAction(mEntryId, Hs::removeActionIdentifier);
-    }
-    emit exit();
-    
-    mConfirmRemovalAction = NULL;
+    HsMenuService::executeAction(mEntryId, Hs::removeActionIdentifier);
 }
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC ENDSKIP
+#endif //COVERAGE_MEASUREMENT
 
 /*!
  \param entry The entry which is to be presented by the preview dialog.
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsuinstallfailedstate.cpp	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsuinstallfailedstate.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -19,6 +19,7 @@
 #include "hsuinstallfailedstate.h"
 #include "hsmenuevent.h"
 #include "hsapp_defs.h"
+#include "hsdialogcontroller.h"
 
 const int installerBusyError = 4;
 
@@ -27,7 +28,7 @@
  /param parent Parent state.
  */
 HsUninstallFailedState::HsUninstallFailedState(QState *parent) :
-    QState(parent), mBox(0)
+    QState(parent)
 {
     construct();
 }
@@ -37,7 +38,10 @@
  */
 HsUninstallFailedState::~HsUninstallFailedState()
 {
-    cleanUp(); // in case of throw
+    QT_TRY {
+        emit exit();
+    } QT_CATCH (...) {
+    }
 }
 
 /*!
@@ -49,8 +53,6 @@
     if (this->parent()) {
         setObjectName(this->parent()->objectName() + objectName());
     }
-    
-    connect(this, SIGNAL(exited()), SLOT(cleanUp()));
 }
 
 
@@ -59,54 +61,42 @@
  \param event entry event.
  */
 void HsUninstallFailedState::onEntry(QEvent *event)
-{
-
-    
+{    
     QState::onEntry(event);
     HsMenuEvent *menuEvent = static_cast<HsMenuEvent *>(event);
     QVariantMap data = menuEvent->data();
     int error = data.value(Hs::uninstallError).toInt();
+    QScopedPointer<HbMessageBox> dialog;
     if (error == installerBusyError) {
         // Installer is in use
-        mBox = new HbMessageBox(HbMessageBox::MessageTypeInformation);
-        mBox->setText(hbTrId("txt_applib_info_installer_is_currently_busy"));
+        dialog.reset(new HbMessageBox(HbMessageBox::MessageTypeInformation));
+        dialog->setText(hbTrId("txt_applib_info_installer_is_currently_busy"));
     } else {
         // other errors
-        mBox = new HbMessageBox(HbMessageBox::MessageTypeWarning);
-        mBox->setText(hbTrId("txt_applib_info_uninstallation_failed"));
+        dialog.reset(new HbMessageBox(HbMessageBox::MessageTypeWarning));
+        dialog->setText(hbTrId("txt_applib_info_uninstallation_failed"));
     }
 
-    mBox->setAttribute(Qt::WA_DeleteOnClose);
-    mBox->setStandardButtons(HbMessageBox::Close);
-    mBox->open(this, SLOT(stateExited()));
+
+    dialog->setStandardButtons(HbMessageBox::Close);
+
+    QScopedPointer<HsDialogController> dialogController(
+        new HsDialogController(dialog.take(),
+            HsMenuDialogFactory::acceptActionIndex(),
+            HsMenuDialogFactory::rejectActionIndex()));
+
+    connect(dialogController.data(),
+            SIGNAL(dialogCompleted()),
+            this,
+            SIGNAL(exit()));
+
+    // ensure dialog is dismissed on app key pressed
+    connect(this, SIGNAL(exited()),
+            dialogController.data(),
+            SLOT(dismissDialog()));
+
+    dialogController.take()->openDialog();
 }
 
-/*!
- Invoked on exiting state
- */
-void HsUninstallFailedState::onExit(QEvent *event)
-{
-    QState::onExit(event);
-}
 
-/*!
- State exited.
- */
-void HsUninstallFailedState::stateExited()
-{
-    mBox = NULL;
-    emit exit();
-}
 
-/*!
- Slot launched after state has exited and in destructor.
- \retval void
- */
-void HsUninstallFailedState::cleanUp()
-{
-    // Close popups if App key was pressed
-    if (mBox) {
-        mBox->close();
-        mBox = NULL;
-    }
-}
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsuninstallitemstate.cpp	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsuninstallitemstate.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -15,28 +15,35 @@
  *
  */
 
-#include <hbmessagebox.h>
-#include <hbaction.h>
-#include <hsmenuservice.h>
-#include <hsshortcutservice.h>
+
+#include <QScopedPointer>
+#include <QStandardItemModel>
+#include <QStandardItem>
+#include <QStateMachine>
+
+#include <HbMessageBox>
+#include <HbAction>
 #include <HbDocumentLoader>
 #include <HbLabel>
 #include <HbListView>
 #include <HbParameterLengthLimiter>
 
-#include <QScopedPointer>
-#include <QStandardItemModel>
-#include <QStandardItem>
-#include <QStateMachine>
+#include "hsmenuservice.h"
+#include "hsshortcutservice.h"
+#include "hsuninstallitemstate.h"
+#include "hsmenuevent.h"
+#include "hsmenudialogfactory.h"
+#include "hsdialogcontroller.h"
+#include "hsmenueventfactory.h"
+
 #include <casoftwareregistry.h>
 #include <caquery.h>
 #include <canotifier.h>
 
-#include "hsuninstallitemstate.h"
-#include "hsmenuevent.h"
-#include "hsmenudialogfactory.h"
-#include "hsmenuentryremovedhandler.h"
-#include "hsmenueventfactory.h"
+const char definition02 [] = "uninstallDialogDefinition02";
+const char definition03 [] = "uninstallDialogDefinition03";
+const char definition04 [] = "uninstallDialogDefinition04";
+
 
 /*!
  \class HsUninstallItemState
@@ -51,10 +58,7 @@
  */
 HsUninstallItemState::HsUninstallItemState(QState *parent) :
     QState(parent),
-    mItemId(0),
-    mUninstallMessage(NULL),
-    mUninstallJavaMessage(NULL),
-    mConfirmAction(NULL)
+    mEntry(NULL)
 {
     construct();
 }
@@ -64,7 +68,11 @@
  */
 HsUninstallItemState::~HsUninstallItemState()
 {
-    cleanUp(); // in case of throw
+    QT_TRY {
+        emit exit();
+    } QT_CATCH (...) {
+        qDebug("Exception thrown");
+    }
 }
 
 /*!
@@ -77,7 +85,6 @@
         setObjectName(this->parent()->objectName() + objectName());
     }
     connect(this, SIGNAL(exited()), SLOT(cleanUp()));
-    
 }
 
 /*!
@@ -87,42 +94,43 @@
 void HsUninstallItemState::onEntry(QEvent *event)
 {
     HSMENUTEST_FUNC_ENTRY("HsUninstallItemState::onEntry");
+    qDebug("HsUninstallItemState::onEntry()");
+
     QState::onEntry(event);
-    qDebug("HsUninstallItemState::onEntry()");
+
     HsMenuEvent *menuEvent = static_cast<HsMenuEvent *>(event);
-    QVariantMap data = menuEvent->data();
+    int itemId = menuEvent->data().value(Hs::itemIdKey).toInt();
+    mEntry = CaService::instance()->getEntry(itemId);
 
-    mItemId = data.value(Hs::itemIdKey).toInt();
-    QSharedPointer<CaEntry> entry = CaService::instance()->getEntry(mItemId);
-    QString appType = entry->attribute(Hs::swTypeKey);
-    if (!appType.compare(Hs::javaSwType)) {
-        // java
-        createUninstallJavaMessage();
-    } else {
-        // other
-        createSimpleUninstallMessage();
+    if (mEntry) {
+        QString appType = mEntry->attribute(Hs::swTypeKey);
+
+        if (!appType.compare(Hs::javaSwType)) {
+            // java
+            createUninstallJavaMessage();
+        } else {
+            // other
+            createSimpleUninstallMessage();
+        }
     }
-        
     HSMENUTEST_FUNC_EXIT("HsUninstallItemState::onEntry");
 }
 
 /*!
- Action after closed confirmation dialog.
- \param finishedAction chosen action.
+ Slots. Uninstalls item controlled by the state.
  \retval void
  */
-void HsUninstallItemState::uninstallMessageFinished(HbAction* finishedAction)
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC SKIP
+#endif //COVERAGE_MEASUREMENT
+void HsUninstallItemState::uninstallItem()
 {
-    if (static_cast<QAction*>(finishedAction) == mConfirmAction) {
-
-        HsMenuService::executeAction(mItemId, Hs::removeActionIdentifier, 
-                this, SLOT(uninstallFailed(int)));
-    }
-    mConfirmAction = NULL;
-    mUninstallMessage = NULL;
-	mUninstallJavaMessage = NULL;
-    emit exit();
+    HsMenuService::executeAction(*mEntry.data(), Hs::removeActionIdentifier,
+            this, SLOT(uninstallFailed(int)));
 }
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC ENDSKIP
+#endif //COVERAGE_MEASUREMENT
 
 /*!
  Return information about a component: component name, a list of names
@@ -139,31 +147,26 @@
     componentName.clear();
     applicationsNames.clear();
     confirmationMessage.clear();
-    
+
     QSharedPointer<CaService> service = CaService::instance();
-    QSharedPointer<CaEntry> entry = service->getEntry(mItemId);
-    const int componentId =
-        entry->attribute(Hs::componentIdAttributeName).toInt();
-    
-    QSharedPointer<CaSoftwareRegistry> softwareRegistry =
-        CaSoftwareRegistry::create();
+    const int componentId = mEntry->attribute(
+            Hs::componentIdAttributeName).toInt();
+
     QStringList appUids;
-    bool retval = softwareRegistry->getUninstallDetails(componentId,
-        componentName,
-        appUids,
-        confirmationMessage);
+    bool retval = CaSoftwareRegistry::create()->getUninstallDetails(
+            componentId, componentName, appUids, confirmationMessage);
     if (retval) {
         CaQuery query;
         foreach (QString uid, appUids) {
             query.setAttribute(Hs::applicationUidEntryKey, uid);
             QList< QSharedPointer<CaEntry> > entries =
-                service->getEntries(query);
+                    service->getEntries(query);
             if (entries.length() > 0) {
                 applicationsNames << entries[0]->text();
             }
         }
-        if (applicationsNames.length()==1
-            && applicationsNames[0]==componentName) {
+        if (applicationsNames.length() == 1
+                && applicationsNames[0] == componentName) {
             applicationsNames.clear();
         }
     }
@@ -177,19 +180,7 @@
  */
 void HsUninstallItemState::cleanUp()
 {
-    // Close messagebox if App key was pressed
-    if (mUninstallMessage != NULL) {
-        mUninstallMessage->close();
-        mUninstallMessage = NULL;
-    }
-    
-    if (mUninstallJavaMessage != NULL) {
-        mUninstallJavaMessage->close();
-        mUninstallJavaMessage = NULL;
-    }
-
-    mConfirmAction = NULL;
-    mItemId = 0;
+    mEntry.clear();
 }
 
 #ifdef COVERAGE_MEASUREMENT
@@ -216,35 +207,45 @@
 void HsUninstallItemState::createSimpleUninstallMessage(bool isJava)
 {
     CaQuery parentsQuery;
-    parentsQuery.setChildId(mItemId);
+    parentsQuery.setChildId(mEntry->id());
     parentsQuery.setEntryTypeNames(QStringList(Hs::collectionTypeName));
-    QList<int> parentsIds = CaService::instance()->getEntryIds(
-            parentsQuery);
+    QList<int> parentsIds = CaService::instance()->getEntryIds(parentsQuery);
     QString message;
-    if (HsShortcutService::instance()->isItemShortcutWidget(mItemId) || (parentsIds.count() > 0)) {
-        message.append(
-            HbParameterLengthLimiter("txt_applib_dialog_uninstalls_1_and_deletes_all_sh").arg(
-                HsMenuService::getName(mItemId)));
+    if (HsShortcutService::instance()->isItemShortcutWidget(mEntry->id())
+            || (parentsIds.count() > 0)) {
+        message.append(HbParameterLengthLimiter(
+                "txt_applib_dialog_uninstalls_1_and_deletes_all_sh").arg(
+                        mEntry->text()));
     } else {
-        message.append(
-            HbParameterLengthLimiter("txt_applib_dialog_1_will_be_removed_from_phone_c").arg(
-                HsMenuService::getName(mItemId)));
+        message.append(HbParameterLengthLimiter(
+                "txt_applib_dialog_1_will_be_removed_from_phone_c").arg(
+                        mEntry->text()));
     }
 
     // create and show message box
-    mUninstallMessage = HsMenuDialogFactory().create(message);
-    if( isJava ){
-        QSharedPointer<CaEntry> entry = CaService::instance()->getEntry(mItemId);
-        HbIcon icon = entry->makeIcon();
-        mUninstallMessage->setIcon(icon);
+
+    QScopedPointer<HbMessageBox> dialog(
+            HsMenuDialogFactory().create(message));
+    if (isJava){
+        dialog->setIcon(mEntry->makeIcon());
     }
-    mConfirmAction = mUninstallMessage->actions().value(0);
-    
-    QScopedPointer<HsMenuEntryRemovedHandler> entryObserver(
-        new HsMenuEntryRemovedHandler(mItemId, this, SIGNAL(exit())));
-    entryObserver.take()->setParent(mUninstallMessage);
-    
-    mUninstallMessage->open(this, SLOT(uninstallMessageFinished(HbAction*)));
+
+    QScopedPointer<HsDialogController> dialogController(
+            new HsDialogController(dialog.take(),
+                    HsMenuDialogFactory::acceptActionIndex(),
+                    HsMenuDialogFactory::rejectActionIndex()));
+
+    connect(dialogController.data(), SIGNAL(acceptActionTriggered(QAction*)),
+            this, SLOT(uninstallItem()));
+
+    connect(dialogController.data(), SIGNAL(dialogCompleted()),
+            this, SIGNAL(exit()));
+
+    // ensure dialog is dismissed on app key pressed
+    connect(this, SIGNAL(exited()),
+            dialogController.data(), SLOT(dismissDialog()));
+
+    dialogController.take()->openDialog(mEntry->id());
 }
 
 /*!
@@ -253,109 +254,133 @@
  */
 void HsUninstallItemState::createUninstallJavaMessage()
 {
-    HbDocumentLoader loader;
-    bool loadStatusOk = false;
-    loader.load(HS_UNINSTALL_DIALOG_LAYOUT, &loadStatusOk);
-    
-    Q_ASSERT_X(loadStatusOk,
-            HS_UNINSTALL_DIALOG_LAYOUT,
-           "Error while loading docml file.");
-
     QString componentName;
     QStringList applicationsNames;
     QString detailsMessage;
     getApplicationsNames(componentName, applicationsNames, detailsMessage);
-    
-    QString section;
-    if (applicationsNames.isEmpty() && detailsMessage.isEmpty()) {        
+
+    if (applicationsNames.isEmpty() && detailsMessage.isEmpty()) {
         createSimpleUninstallMessage(true);
-    }
-    else {
-        if ( (!applicationsNames.isEmpty()) && (!detailsMessage.isEmpty())) {
-            mDialogType = UninstallDialogDefinition02;
-            section = QString("uninstallDialogDefinition02");
-            loader.load(
-                HS_UNINSTALL_DIALOG_LAYOUT, section, &loadStatusOk);
-        }
-        else if ( (!applicationsNames.isEmpty() && detailsMessage.isEmpty())) {
-            mDialogType = UninstallDialogDefinition03;
-            section = QString("uninstallDialogDefinition03");
-            loader.load(
-                HS_UNINSTALL_DIALOG_LAYOUT, section, &loadStatusOk);
-        }
-        else if (applicationsNames.isEmpty() && (!detailsMessage.isEmpty())) {
-            mDialogType = UninstallDialogDefinition04;
-            section = QString("uninstallDialogDefinition04");
-            loader.load(
-                HS_UNINSTALL_DIALOG_LAYOUT, section, &loadStatusOk);
-        }
+    } else {
+        HbDocumentLoader loader;
+
+        QString section = loadProperSection(applicationsNames,
+                detailsMessage, loader);
+        if (!section.isNull()) {
+            HbDialog *const dialog = qobject_cast<HbDialog*>(
+                    loader.findWidget(HS_UNINSTALL_DIALOG_NAME));
 
-        mUninstallJavaMessage = qobject_cast<HbDialog*>(
-            loader.findWidget(HS_UNINSTALL_DIALOG_NAME));
+            if (dialog) {
+                prepareDialog(dialog);
 
-        if (mUninstallJavaMessage) {
-            mUninstallJavaMessage->setAttribute(Qt::WA_DeleteOnClose);
-            mUninstallJavaMessage->setTimeout(HbPopup::NoTimeout);
-            mUninstallJavaMessage->actions()[0]->setParent(mUninstallJavaMessage);
-            mUninstallJavaMessage->actions()[1]->setParent(mUninstallJavaMessage);
+                HbLabel* iconLabel = qobject_cast<HbLabel*>(loader.findWidget(
+                        HS_UNINSTALL_DIALOG_CONFIRMATION_DIALOG_ICON));
+                iconLabel->setIcon(mEntry->makeIcon());
 
-            HbLabel* iconLabel =
-            qobject_cast<HbLabel*>(
-                loader.findWidget(HS_UNINSTALL_DIALOG_CONFIRMATION_DIALOG_ICON));
-            QSharedPointer<CaEntry> entry2 = CaService::instance()->getEntry(mItemId);
-            HbIcon icon = entry2->makeIcon();
-            iconLabel->setIcon(icon);
+                prepareDialogLabel(componentName, loader);
 
-            CaQuery parentsQuery;
-            parentsQuery.setChildId(mItemId);
-            parentsQuery.setEntryTypeNames(QStringList(Hs::collectionTypeName));
-            QList<int> parentsIds = CaService::instance()->getEntryIds(
-                    parentsQuery);
-            
-            HbLabel* textLabel =
-            qobject_cast<HbLabel*>(
-                loader.findWidget(HS_UNINSTALL_DIALOG_CONFIRMATION_DIALOG_LABEL));
-            if (HsShortcutService::instance()->isItemShortcutWidget(mItemId) ||
-                (parentsIds.count() > 0)) {
-                textLabel->setPlainText(HbParameterLengthLimiter(
-                    "txt_applib_info_delete_1_all_its_shortcuts_and").arg(
-                            componentName));
-            } else {
-                textLabel->setPlainText(HbParameterLengthLimiter(
-                    "txt_applib_info_delete_1_and_associated_data").arg(
-                            componentName));
-            }
+                if ((section == definition02) || (section == definition04)) {
+                    qobject_cast<HbLabel*>( loader.findWidget(
+                            HS_UNINSTALL_DIALOG_DELETE_LABEL))->setPlainText(
+                                    detailsMessage);
+                }
+
+                if ((section == definition02) || (section == definition03)) {
+                    prepareApplicationListLabel(applicationsNames, loader);
+                }
 
-            HbLabel* detailsUninstalLabel;
-            if ((mDialogType == UninstallDialogDefinition02) ||
-                (mDialogType == UninstallDialogDefinition04)) {
-                detailsUninstalLabel= qobject_cast<HbLabel*>(
-                    loader.findWidget(HS_UNINSTALL_DIALOG_DELETE_LABEL));
-                detailsUninstalLabel->setPlainText(detailsMessage);
-            }
+                QScopedPointer<HsDialogController> dialogController(
+                        new HsDialogController( dialog,
+                                HsMenuDialogFactory::acceptActionIndex(),
+                                HsMenuDialogFactory::rejectActionIndex()));
+                connect(dialogController.data(), SIGNAL(acceptActionTriggered(QAction*)),
+                        this, SLOT(uninstallItem()));
+                connect(dialogController.data(), SIGNAL(dialogCompleted()),
+                        this, SIGNAL(exit()));
+                connect(this, SIGNAL(exited()),
+                        dialogController.data(), SLOT(dismissDialog()));
 
-            HbLabel* listView;
-            QString applicationsList;
-            QString newLine("\n");
-            if ((mDialogType == UninstallDialogDefinition02) ||
-                (mDialogType == UninstallDialogDefinition03)) {
-                listView = qobject_cast<HbLabel*>(
-                    loader.findWidget(HS_UNINSTALL_DIALOG_LIST_VIEW_LABEL));
-
-                for (int i=0; i<applicationsNames.count(); i++) {
-                    applicationsList = applicationsList + applicationsNames[i] + newLine;
-                }
-                listView->setPlainText(applicationsList);
+                dialogController.take()->openDialog(mEntry->id());
             }
-
-            mConfirmAction = qobject_cast<HbAction*>(loader.findObject(
-                    HS_UNINSTALL_DIALOG_CONFIRMATION_ACTION));
-        
-            QScopedPointer<HsMenuEntryRemovedHandler> entryObserver(
-                new HsMenuEntryRemovedHandler(mItemId, this, SIGNAL(exit())));
-            entryObserver.take()->setParent(mUninstallJavaMessage);
-            
-            mUninstallJavaMessage->open(this, SLOT(uninstallMessageFinished(HbAction*)));
         }
     }
 }
+
+void HsUninstallItemState::prepareDialogLabel(
+    QString &componentName, HbDocumentLoader &loader)
+{
+    CaQuery parentsQuery;
+    parentsQuery.setChildId(mEntry->id());
+    parentsQuery.setEntryTypeNames(QStringList(Hs::collectionTypeName));
+    QList<int> parentsIds = CaService::instance()->getEntryIds(parentsQuery);
+
+    HbLabel* textLabel = qobject_cast<HbLabel*>(loader.findWidget(
+            HS_UNINSTALL_DIALOG_CONFIRMATION_DIALOG_LABEL));
+
+    QString plainText;
+    if (HsShortcutService::instance()->isItemShortcutWidget(mEntry->id())
+            || parentsIds.count()) {
+        plainText = HbParameterLengthLimiter(
+                "txt_applib_info_delete_1_all_its_shortcuts_and").arg(
+                        componentName);
+    } else {
+        plainText = HbParameterLengthLimiter(
+                "txt_applib_info_delete_1_and_associated_data").arg(
+                        componentName);
+    }
+    textLabel->setPlainText(plainText);
+}
+
+void HsUninstallItemState::prepareApplicationListLabel(
+        QStringList & applicationsNames, HbDocumentLoader & loader)
+{
+    QString applicationsList;
+    QString newLine("\n");
+    for(int i = 0;i < applicationsNames.count();i++){
+        applicationsList += applicationsNames[i] + newLine;
+    }
+
+    HbLabel *listView;
+    listView = qobject_cast<HbLabel*>(loader.findWidget(
+            HS_UNINSTALL_DIALOG_LIST_VIEW_LABEL));
+    listView->setPlainText(applicationsList);
+}
+
+QString HsUninstallItemState::loadProperSection(
+        QStringList &applicationsNames, QString &detailsMessage,
+        HbDocumentLoader &loader)
+{
+    QString section;
+    if (!applicationsNames.isEmpty() && !detailsMessage.isEmpty()) {
+        section = QString(definition02);
+    } else if (!applicationsNames.isEmpty() && detailsMessage.isEmpty()) {
+        section = QString(definition03);
+    }else if (applicationsNames.isEmpty() && !detailsMessage.isEmpty()) {
+        section = QString(definition04);
+    }
+    if(!section.isNull()){
+        bool loadStatusOk = false;
+        loader.load(HS_UNINSTALL_DIALOG_LAYOUT, &loadStatusOk);
+
+        Q_ASSERT_X(loadStatusOk,
+                HS_UNINSTALL_DIALOG_LAYOUT,
+               "Error while loading docml file.");
+
+        loader.load(
+                HS_UNINSTALL_DIALOG_LAYOUT, section, &loadStatusOk);
+        Q_ASSERT_X(loadStatusOk,
+                HS_UNINSTALL_DIALOG_LAYOUT,
+               "Error while loading docml file section.");
+    }
+    return section;
+}
+
+HsDialogController *HsUninstallItemState::prepareDialog(
+        HbDialog *dialog)
+{
+    dialog->setAttribute(Qt::WA_DeleteOnClose);
+    dialog->setTimeout(HbPopup::NoTimeout);
+    dialog->actions()[0]->setParent(dialog);
+    dialog->actions()[1]->setParent(dialog);
+    return NULL;
+}
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsviewappdetailsstate.cpp	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsviewappdetailsstate.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -31,7 +31,7 @@
 #include "hsviewappdetailsstate.h"
 #include "hsmenuevent.h"
 #include "hsmenuitemmodel.h"
-#include "hsmenuentryremovedhandler.h"
+#include "hsdialogcontroller.h"
 
 static const char *const HS_VIEWAPPDETAILS_JAVA_DIALOG_SECTION_NAME=
         "detailsDialogForJavaApplication";
@@ -41,7 +41,7 @@
  /param parent Parent state.
  */
 HsViewAppDetailsState::HsViewAppDetailsState(QState *parent) :
-    QState(parent), mDialog(0)
+    QState(parent)
 {
     construct();
 }
@@ -51,7 +51,10 @@
  */
 HsViewAppDetailsState::~HsViewAppDetailsState()
 {
-    delete mDialog;
+    QT_TRY {
+        emit exit();
+    } QT_CATCH (...) {
+    }
 }
 
 /*!
@@ -82,7 +85,7 @@
     QSharedPointer<const CaEntry> entry
         = CaService::instance()->getEntry(entryId);
     if (!entry) {
-        stateExited();
+        emit exit();
         return;
     }
     const int componentId = entry->attribute(
@@ -96,7 +99,7 @@
 
     //TODO: Should we display something In that case?
     if (detailMap.size() < 1){
-        stateExited();
+        emit exit();
         return;
     }
 
@@ -112,13 +115,12 @@
                                   section, &loadStatusOk);
     }
 
-    mDialog = qobject_cast<HbDialog*>(
-        loader.findWidget(HS_DETAILS_DIALOG_NAME));
+    QScopedPointer<HbDialog> dialog(qobject_cast<HbDialog*>(
+        loader.findWidget(HS_DETAILS_DIALOG_NAME)));
 
-    if (mDialog != NULL) {
-        mDialog->setTimeout(HbPopup::NoTimeout);
-        mDialog->setAttribute(Qt::WA_DeleteOnClose, true);
-        mDialog->actions()[0]->setParent(mDialog);
+    if (!dialog.isNull()) {
+        dialog->setTimeout(HbPopup::NoTimeout);
+        dialog->actions()[0]->setParent(dialog.data());
 
         setFieldPresentation(CaSoftwareRegistry::componentNameKey(),
             detailMap, loader);
@@ -140,14 +142,24 @@
                 detailMap, loader);
         }
 
-        QScopedPointer<HsMenuEntryRemovedHandler> entryObserver(
-            new HsMenuEntryRemovedHandler(entryId, this, SIGNAL(exit())));
+        QScopedPointer<HsDialogController> dialogController(
+            new HsDialogController(dialog.take(),
+                HsMenuDialogFactory::acceptActionIndex(),
+                HsMenuDialogFactory::rejectActionIndex()));
 
-        entryObserver.take()->setParent(mDialog);
+        connect(dialogController.data(),
+                SIGNAL(dialogCompleted()),
+                this,
+                SIGNAL(exit()));
 
-        mDialog->open(this, SLOT(stateExited()));
+        // ensure dialog is dismissed on app key pressed
+        connect(this, SIGNAL(exited()),
+                dialogController.data(),
+                SLOT(dismissDialog()));
+
+        dialogController.take()->openDialog(entryId);
     } else {
-        stateExited();
+        emit exit();
     }
     HSMENUTEST_FUNC_EXIT("HsViewAppDetailsState::onEntry");
 }
@@ -179,28 +191,5 @@
     }
 }
 
-/*!
- Slot invoked when a state is exited.
- */
-void HsViewAppDetailsState::stateExited()
-{
-    HSMENUTEST_FUNC_ENTRY("HsViewAppDetailsState::stateExited");
-    emit exit();
-    HSMENUTEST_FUNC_EXIT("HsViewAppDetailsState::stateExited");
-    qDebug("HsViewAppDetailsState::stateExited()");
-}
 
-/*!
- Invoked on exiting state
- */
-void HsViewAppDetailsState::onExit(QEvent *event)
-{
-    QState::onExit(event);
-    // Close popups if App key was pressed or
-    // memory card removed
-    if (mDialog != NULL) {
-        mDialog->close();
-        mDialog = NULL;
-    }
-}
 
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsviewappsettingsstate.cpp	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsviewappsettingsstate.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -52,11 +52,6 @@
  */
 
 /*!
- \var HsViewAppSettingsState::mActionConfirm
- Confirm action. Owned.
- */
-
-/*!
  Constructor
  \param parent Parent state.
  \retval void
@@ -118,10 +113,11 @@
             new HsMenuEntryRemovedHandler(entryId, this, SIGNAL(exit())));
         
         entryObserver.take()->setParent(mView);
-        
-        QObject::connect(this, SIGNAL(initialize(QString)), mView, SLOT(initialize(QString)));        
+        // remove it when JAVA will start to provide only version with two strings
+        QObject::connect(this, SIGNAL(initialize(QString, QString)), mView, SLOT(initialize(QString)));        
+        QObject::connect(this, SIGNAL(initialize(QString, QString)), mView, SLOT(initialize(QString, QString)));
         mView->setParent(this);
-        emit initialize(entry->attribute(Hs::applicationUidEntryKey));        
+        emit initialize(entry->attribute(Hs::applicationUidEntryKey), entry->text());        
         // Add View to main window
         HbMainWindow *hbMainWindow = mainWindow();
         // add confirm action
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/data/DS_Snow.jad	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,19 @@
+MIDlet-1: DS_Snow, ds.png, DS_Snow
+xMIDlet-2: DS_Snow2, , DS_Snow2
+MIDlet-Jar-Size: 11094
+MIDlet-Jar-URL: DS_Snow.jar
+MIDlet-Name: DS_Snow
+MIDlet-Vendor: DS_Effects
+MIDlet-Version: 1.0
+MicroEdition-Configuration: CLDC-1.0
+MicroEdition-Profile: MIDP-1.0
+xNokia-MIDlet-UID-1: 0x2eff000e
+xNokia-MIDlet-UID-2: 0x2eff000f
+Nokia-MIDlet-On-Screen-Keypad: no
+Nokia-MIDlet-Auto-Start-1: true
+Nokia-MIDlet-Auto-Start-2: once
+Nokia-MIDlet-Install-Debug: times
+xMIDlet-Delete-Confirm: Do you really want to uninstall DS_Snow application?
+xMIDlet-Delete-Confirm-fi: Haluatko varmasti poistaa DS_Snow sovelluksen?
+xMIDlet-Delete-Confirm-sv-FI: Vill du verkligen ta bort DS_Snow applikation?
+Nokia-MIDlet-Download-URL: http://midlet.download.url
Binary file homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/data/DS_Snow.jar has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/data/MIDPTestIcons.jad	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,25 @@
+MIDlet-1: Icon PNG, /Duke.png, com.nokia.midp.test.midptest.MIDPTest
+MIDlet-10: Icon WMF, /AN04369_.WMF, com.nokia.midp.test.midptest.MIDPTest
+MIDlet-11: Icon WMF2, /TR00232_.WMF, com.nokia.midp.test.midptest.MIDPTest
+MIDlet-12: Icon WBMP, /happy.wbmp, com.nokia.midp.test.midptest.MIDPTest
+MIDlet-2: Icon GIF, /gs_98x98.gif, com.nokia.midp.test.midptest.NoUIMIDlet
+MIDlet-3: Icon GIF2, /gs_16x16.gif, com.nokia.midp.test.midptest.MIDPTest
+MIDlet-4: Icon BMP, /logo.bmp, com.nokia.midp.test.midptest.MIDPTest
+MIDlet-5: Icon JPG, /j_131x155.jpg, com.nokia.midp.test.midptest.MIDPTest
+MIDlet-6: Icon JPG2, /j_29x29.jpg, com.nokia.midp.test.midptest.MIDPTest
+MIDlet-7: Icon MNG, /DUTCH1.mng, com.nokia.midp.test.midptest.MIDPTest
+MIDlet-8: Icon TIF, /Sample_UPC_TIF.tif, com.nokia.midp.test.midptest.MIDPTest
+MIDlet-9: Icon ICO, /favicon.ico, com.nokia.midp.test.midptest.MIDPTest
+MIDlet-Data-Size: 0
+MIDlet-Delete-Confirm: This is delete confirm text....
+MIDlet-Description: Testing support for several icon formats
+MIDlet-Icon: /Duke.png
+MIDlet-Jar-Size: 174409
+MIDlet-Jar-URL: MIDPTestIcons.jar
+MIDlet-Name: MIDP Test Icon
+MIDlet-Vendor: Nokia - OMJ Testing
+MIDlet-Version: 3.91.2
+MicroEdition-Configuration: CLDC-1.0
+MicroEdition-Profile: MIDP-1.0
+Nokia-MIDlet-no-exit: true
+UserDefined1: Foo value
Binary file homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/data/MIDPTestIcons.jar has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/inc/hscontentservice.h	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,23 @@
+/*
+* 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 HSCONTENTSERVICE_H
+#define HSCONTENTSERVICE_H
+
+#include "t_hscontentservice.h"
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/inc/hsshortcutservice.h	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,24 @@
+/*
+* 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:  Entry point for shortcut widget
+*
+*/
+
+#ifndef HSSHORTCUTSERVICE_H
+#define HSSHORTCUTSERVICE_H
+
+#include "t_hsshortcutservice.h"
+
+#endif // HSSHORTCUTSERVICE_H
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/inc/t_hscontentservice.h	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,45 @@
+/*
+* 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 T_HSCONTENTSERVICE_H
+#define T_HSCONTENTSERVICE_H
+
+#include <QObject>
+#include <QMetaType>
+#include <QVariant>
+
+class HsWidgetHost;
+
+class HsContentService : public QObject
+{
+    Q_OBJECT
+public:
+    HsContentService(QObject *parent = 0);
+    ~HsContentService();
+
+    bool createWidget(const QVariantHash &params);
+    HsWidgetHost *createWidgetForPreview(const QVariantHash &params);
+    static HsContentService *instance();
+public:
+    QVariantHash mParams;
+private:
+    Q_DISABLE_COPY(HsContentService)
+
+};
+
+Q_DECLARE_METATYPE(HsContentService *)
+
+#endif // T_HSCONTENTSERVICE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/inc/t_hsmenuworkerstateplugin.h	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,199 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Tests for HomeScreenStatePlugin class.
+*
+*/
+
+#ifndef T_HSMCSSTATES_H
+#define T_HSMCSSTATES_H
+
+#include <QtTest/QtTest>
+#include <QGraphicsScene>
+#include <QGraphicsView>
+#include <QScopedPointer>
+#include <hsmenuservice.h>
+#include <caitemmodel.h>
+#include "t_hsshortcutservice.h"
+
+#ifdef Q_OS_SYMBIAN
+#include <e32std.h>
+#endif
+
+class QStateMachine;
+class HbMainWindow;
+class HbAction;
+class HsCollectionNameDialog;
+
+/**
+* @test Test class for hsutils modules.
+*/
+class MenuStatesTest : public QObject
+{
+    Q_OBJECT
+
+private slots:
+
+    /**
+     * initialize
+     */
+    void initTestCase();
+
+    /*
+    * Tests
+    */
+
+    // WorkerState
+    void MenuWorkerState_construction();
+
+
+    // HsPreviewHSWidgetState
+
+    void HsPreviewHSWidgetState_construction();
+    void HsPreviewHSWidgetState_onEntry();
+    void HsPreviewHSWidgetState_showMessageWidgetCorrupted();
+    void HsPreviewHSWidgetState_buildPreviewDialog();
+    void HsPreviewHSWidgetState_addToHomeScreen();
+    // HsAddToHomeScreenState
+
+    void AddToHomeScreenState_construction();
+    void AddToHomeScreenState_showMessageWidgetCorrupted();
+    void AddToHomeScreenState_openHomeScreen();
+
+    void AddToHomeScreenState_onEntry();
+
+    void AddToHomeScreenState_onEntry_2();
+    void AddToHomeScreenState_onEntry_3();
+    void AddToHomeScreenState_onEntry_4();
+
+
+
+    // HsCollectionNameState
+    void CollectionNameState_construction1();
+    void CollectionNameState_onEntry();
+    void CollectionNameState_dialogFinished();
+
+    // HsDeleteCollectionItemState
+    void DeleteCollectionItemState_construction();
+    void DeleteCollectionItemState_onEntry();
+
+    // HsUninstallItemState
+    void HsUninstallItemState_construction();
+    void HsUninstallItemState_onEntry();
+#ifdef Q_OS_SYMBIAN
+	void HsUninstallItemState_getApplicationsNames();
+#endif // Q_OS_SYMBIAN
+
+    // HsAddAppsToCollectionState
+    void AddAppsToCollectionState_construction();
+    void AddAppsToCollectionState_save();
+    void AddAppsToCollectionState_cleanData();
+    void AddAppsToCollectionState_setCollectionName();
+    void AddAppsToCollectionState_setCollectionId();
+    void AddAppsToCollectionState_setAppList();
+    void AddAppsToCollectionState_showMessageAppsAdded();
+    void AddAppsToCollectionState_selectCollection();
+    void AddAppsToCollectionState_listDialogFinished();
+    void AddAppsToCollectionState_newCollection();
+    void AddAppsToCollectionState_editorDialogFinished();
+	void AddAppsToCollectionState_appsCheckListState();
+	void AddAppsToCollectionState_selectApplicationsDone();
+    void AddAppsToCollectionState_collectionSelected();
+
+    void AppsCheckList_showAppsCheckboxList();
+    void AppsCheckList_getItemsList();
+    void AppsCheckList_setSortOrder();
+    void AppsCheckList_selectedItemsChanged();
+
+    void HsCollectionNameDialog_ConstructWithNoParams();
+    void HsCollectionNameDialog_ConstructWithId();
+    void HsCollectionNameDialog_uniqueCollectionName();
+    void HsCollectionNameDialog_closeEvent();
+
+
+    // HsDeleteCollectionState
+    void DeleteCollectionState_construction1();
+
+    void DeleteCollectionState_onEntry();
+    void DeleteCollectionState_deleteCollection();
+
+    // HsArrangeState
+    void ArrangeState_FulfillEntriesList();
+    void ArrangeState_Save();
+    void ArrangeState_onEntry();
+    void ArrangeState_arrangeDialogFinished();
+
+
+    // HsViewAppSettingsState
+    void ViewAppSettings_construction();
+    void ViewAppSettings_onEntry();
+    void ViewAppSettings_onExit();
+
+    // HsInstallationLogState
+    void HsInstallationLogState_construction();
+    void HsInstallationLogState_onEntry();
+
+    // HsUninstallFailedState
+    void HsUninstallFailedState_construction();
+    void HsUninstallFailedState_onEntry();
+
+    // HsViewAppDetailsState
+    void ViewAppDetails_construction();
+    void ViewAppDetails_onEntry();
+
+
+    /**
+     * cleanup
+     */
+    void cleanupTestCase();
+    void cleanup();
+
+    /**
+     * test slot for popup actions
+     */
+    void testSlot(HbAction* finished);
+
+    /**
+     * test slot to check if exit() was emitted
+     */
+    int testExitSlot();
+
+    /**
+     * test slot for AppsCheckList_showAppsCheckboxList test
+     */
+    void testCommitSlot(const QList<int> &appList);
+
+	/**
+     * test slot for AddAppsToCollectionState_appsCheckListState test
+     */
+	void testTransitToStateSlot();
+
+private:
+    void checkDialogController();
+    void startThread();
+    void stopThread();
+
+#ifdef Q_OS_SYMBIAN
+    RThread iThread;
+#endif
+
+private:
+    QSharedPointer<HsShortcutService> mShortcutService;
+    QStateMachine *mStateMachine;
+    HbMainWindow *mWindow;
+    bool mFinishedEmited;
+    bool mCommitEmited;
+    bool mTransitToStateEmited;
+};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/inc/t_hsshortcutservice.h	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,50 @@
+/*
+* 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 T_HSSHORTCUTSERVICE_H
+#define T_HSSHORTCUTSERVICE_H
+#include <QObject>
+#include <QIcon>
+#include <QSharedPointer>
+#include <QMetaType>
+
+#include "hsdomainmodel_global.h"
+
+class QStateMachine;
+
+class HsShortcutService : public QObject
+{
+    Q_OBJECT
+
+public:
+    ~HsShortcutService();
+    static QSharedPointer<HsShortcutService> instance(QStateMachine *machine = 0);
+
+    void executeCollectionAction(int shortcutId, QString collectionType);
+    bool isItemShortcutWidget(int aItemId);
+
+private:
+    HsShortcutService(QStateMachine *aStateMachine, QObject *parent = 0);
+
+    Q_DISABLE_COPY(HsShortcutService)
+
+
+private:
+};
+
+Q_DECLARE_METATYPE(HsShortcutService *)
+
+#endif // T_HSSHORTCUTSERVICE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/inc/testwidget.h	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,51 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#ifndef HOMESCREEN_TEST_TESTWIDGET_H
+#define HOMESCREEN_TEST_TESTWIDGET_H
+
+#include <HbWidget>
+
+class TestWidget : public HbWidget
+{
+    Q_OBJECT
+
+public:
+    TestWidget(QGraphicsItem *parent = 0, Qt::WindowFlags flags = 0);
+    ~TestWidget();
+
+signals:
+    void finished();
+
+public slots:
+    void onInitialize();
+    void onShow();
+    void onHide();
+
+public:
+    QRectF boundingRect() const;
+    QPainterPath shape() const;
+    void setSucceeded() { emit finished(); }
+
+protected:
+    void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
+
+private:
+    friend class HomeScreenStatePluginTest;
+};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/src/hsbackuprestoreobserver_mock.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,90 @@
+/*
+* 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"
+
+
+/*!
+    Singleton. 
+*/
+HsBackupRestoreObserver *HsBackupRestoreObserver::instance()
+{
+    if (!mInstance) {
+        mInstance = new HsBackupRestoreObserver();
+    }
+    return mInstance;
+}
+
+/*!
+    Constructs a new observer with the given \a parent object.
+*/
+HsBackupRestoreObserver::HsBackupRestoreObserver(QObject *parent)
+ : QObject(parent),
+   mBUROngoing(false)
+{
+}
+
+/*!
+    Destructor.
+*/
+HsBackupRestoreObserver::~HsBackupRestoreObserver()
+{
+}
+
+/*!
+    Called when backup/restore is started.
+*/
+void HsBackupRestoreObserver::backupRestoreStarted()
+{
+	mBUROngoing = true;
+	emit event_backupRestoreStarted();
+}
+
+/*!
+    Called when backup/restore is completed.
+*/
+void HsBackupRestoreObserver::backupRestoreCompleted()
+{
+	mBUROngoing = false;
+	emit event_backupRestoreCompleted();
+}
+
+/*!
+    Called when Home screen is ready for backup/restore.
+*/
+void HsBackupRestoreObserver::readyForBUR()
+{
+}
+
+/*!
+    Returns true if bacup/restore is ongoing.
+*/
+bool HsBackupRestoreObserver::checkBUR()
+{
+	if (mBUROngoing) {
+		return true;
+	}
+    return false;
+}
+/*!
+    Points to the observer instance.
+*/
+HsBackupRestoreObserver *HsBackupRestoreObserver::mInstance(0);
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/src/hsdatabase_mock.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,228 @@
+/*
+* 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 <QSqlDatabase>
+#include <QSqlQuery>
+#include <QSqlRecord>
+#include <QVariantHash>
+#include <QDir>
+
+#include "hsdatabase.h"
+#include "hsdomainmodeldatastructures.h"
+
+HsDatabase::HsDatabase(QObject *parent)
+  : QObject(parent)
+{
+}
+
+HsDatabase::~HsDatabase()
+{
+ 
+}
+
+void HsDatabase::setConnectionName(const QString &name)
+{
+    mConnectionName = name;
+}
+ 
+QString HsDatabase::connectionName() const
+{
+    return mConnectionName;
+}
+
+void HsDatabase::setDatabaseName(const QString &name)
+{
+    mDatabaseName = QDir::toNativeSeparators(name);
+}
+ 
+QString HsDatabase::databaseName() const
+{
+    return mDatabaseName;
+}
+
+bool HsDatabase::open()
+{
+    return true;
+}
+ 
+void HsDatabase::close()
+{
+    
+}
+
+bool HsDatabase::transaction()
+{
+    return true;
+}
+ 
+bool HsDatabase::rollback()
+{
+    return true;
+}
+ 
+bool HsDatabase::commit()
+{
+    return true;
+}
+
+bool HsDatabase::scene(HsSceneData &)
+{
+    return true;
+}
+
+bool HsDatabase::pages(QList<HsPageData> &)
+{
+    return true;
+}
+
+bool HsDatabase::page(HsPageData &)
+{
+   return true;
+}
+
+bool HsDatabase::insertPage(HsPageData &)
+{
+   return true;
+}
+
+bool HsDatabase::updatePage(const HsPageData &)
+{
+    return true;
+}
+
+bool HsDatabase::deletePage(int )
+{
+   return true;
+}
+
+bool HsDatabase::widgets(int , QList<HsWidgetData> &)
+{
+   return true;
+}
+
+bool HsDatabase::widgets(const QString &, QList<HsWidgetData> &)
+{
+    return true;
+}
+
+bool HsDatabase::widgets(const QString &, const QVariantHash &, int &count)
+{
+    count = 0;
+    return true;
+}
+bool HsDatabase::widget(HsWidgetData &)
+{
+    return true;
+}
+
+bool HsDatabase::insertWidget(HsWidgetData &)
+{
+    return true;
+}
+
+bool HsDatabase::updateWidget(const HsWidgetData &)
+{
+    return true;
+}
+
+bool HsDatabase::deleteWidget(int )
+{
+    return true;
+}
+
+bool HsDatabase::deleteWidgets(const QString &)
+{
+    return true;
+}
+
+bool HsDatabase::widgetPresentation(HsWidgetPresentationData &)
+{
+    return true;
+}
+
+bool HsDatabase::setWidgetPresentation(const HsWidgetPresentationData &)
+{
+    return true;
+}
+
+bool HsDatabase::deleteWidgetPresentation(int, Qt::Orientation)
+{
+    return true;
+}
+
+bool HsDatabase::widgetPreferences(int , QVariantHash &)
+{
+    return true;
+}
+
+bool HsDatabase::widgetPreference(int , const QString &, QVariant &)
+{
+    return true;
+}
+
+bool HsDatabase::setWidgetPreferences(int , const QVariantHash &)
+{
+    return true;
+}
+ 
+void HsDatabase::setInstance(HsDatabase *instance)
+{
+    if (mInstance != instance) {
+        HsDatabase *oldInstance = mInstance;
+        mInstance = instance;
+        delete oldInstance;
+    }
+}
+
+HsDatabase *HsDatabase::instance()
+{
+    return mInstance;
+}
+
+HsDatabase *HsDatabase::takeInstance()
+{
+    HsDatabase *instance = mInstance;
+    mInstance = 0;
+    return instance;
+}
+  
+bool HsDatabase::checkConnection() const
+{
+    return true;
+}
+
+bool HsDatabase::configuration(QVariantHash &configuration)
+{
+    Q_UNUSED(configuration)
+    return true;
+}
+
+bool HsDatabase::updateWidgetZValues(const QHash<int, qreal> &data, Qt::Orientation orientation)
+{
+    Q_UNUSED(data)
+    Q_UNUSED(orientation)
+    return true;
+}
+
+bool HsDatabase::matchWidgetPreferences(const QVariantHash &preferences, const QMultiMap<QString, QString>& storedPreferences)
+{
+    Q_UNUSED(preferences)
+    Q_UNUSED(storedPreferences)
+    return true;
+}
+
+HsDatabase *HsDatabase::mInstance(0);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/src/hsgui_mock.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,188 @@
+/*
+* 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 <HbMainWindow>
+#include <HbView>
+#include <HbMenu>
+#include <HbAction>
+
+#include "hsgui.h"
+#include "hsidlewidget.h"
+#include "hsscene.h"
+#include "hspropertyanimationwrapper.h"
+
+namespace {
+      const char gApplicationLibraryIconName[] = "qtg_mono_applications_all";
+}
+
+/*!
+    \class HsGui
+    \ingroup group_hsdomainmodel
+    \brief Represents a view in the framework.
+    HsGui includes common UI components for Home screen.
+*/
+
+HsGui *HsGui::mInstance(0);
+
+struct HsGuiImpl
+{
+    HsIdleWidget *mIdleWidget;
+    HbView *mIdleView;
+    HbMainWindow *mWindow;
+    HbAction *mNavigationAction;
+    HsPropertyAnimationWrapper *mPageChangeAnimation;
+    HsPropertyAnimationWrapper *mPageCrawlingAnimation;
+};
+
+
+
+HsGui::~HsGui()
+{
+    if (mImpl->mNavigationAction) {
+        delete mImpl->mNavigationAction;
+    }
+
+    if (mImpl->mPageChangeAnimation) {
+        mImpl->mPageChangeAnimation->stop();
+        delete mImpl->mPageChangeAnimation;
+    }
+    if (mImpl->mPageCrawlingAnimation) {
+        mImpl->mPageCrawlingAnimation->stop();
+        delete mImpl->mPageCrawlingAnimation;
+    }
+    delete mImpl;
+}
+
+HsGui *HsGui::setInstance(HsGui *instance)
+{
+    HsGui *old = mInstance;
+    if (mInstance != instance) {
+        mInstance = instance;
+    }
+    return old;
+}
+
+HsGui *HsGui::instance()
+{
+    if (!mInstance) {
+        mInstance = new HsGui(QCoreApplication::instance());
+    }
+    return mInstance;
+}
+
+void HsGui::setupIdleUi()
+{
+    if (!mImpl->mIdleWidget) {
+        mImpl->mIdleWidget = new HsIdleWidget;
+        mImpl->mIdleView = mImpl->mWindow->addView(mImpl->mIdleWidget);
+        mImpl->mIdleView->setContentFullScreen();
+
+        delete mImpl->mNavigationAction;
+        mImpl->mNavigationAction = 0;
+        mImpl->mNavigationAction = new HbAction;
+        mImpl->mNavigationAction->setIcon(HbIcon(gApplicationLibraryIconName));
+        mImpl->mNavigationAction->setObjectName("applib_navigation_action");
+        connect(mImpl->mNavigationAction, SIGNAL(triggered()), SIGNAL(navigateToApplibrary()));
+        mImpl->mIdleView->setNavigationAction(mImpl->mNavigationAction);
+    }
+    mImpl->mWindow->setCurrentView(mImpl->mIdleView);    
+}
+
+void HsGui::cleanupIdleUi()
+{
+    if (mImpl->mIdleView) {
+        mImpl->mIdleView->setNavigationAction(0);
+        delete mImpl->mNavigationAction;
+        mImpl->mNavigationAction = 0;
+        
+        mImpl->mWindow->removeView(mImpl->mIdleView);
+        delete mImpl->mIdleView;
+        mImpl->mIdleView = 0;
+
+        delete mImpl->mPageChangeAnimation;
+        mImpl->mPageChangeAnimation = 0;
+        
+        delete mImpl->mPageCrawlingAnimation;
+        mImpl->mPageCrawlingAnimation = 0;
+    }
+    
+}
+
+void HsGui::setOrientation(Qt::Orientation orientation)
+{
+    mImpl->mWindow->setOrientation(orientation);
+}
+
+Qt::Orientation HsGui::orientation()
+{
+    return mImpl->mWindow->orientation();
+}
+
+HbView *HsGui::idleView() const
+{
+    return mImpl->mIdleView;
+}
+
+HsIdleWidget *HsGui::idleWidget() const
+{
+    return mImpl->mIdleWidget;
+}
+
+QRectF HsGui::layoutRect() const
+{
+    return mImpl->mWindow->layoutRect();
+}
+
+void HsGui::show()
+{
+    mImpl->mWindow->raise();
+    mImpl->mWindow->show();
+}
+
+HsPropertyAnimationWrapper *HsGui::pageChangeAnimation()
+{
+    if (!mImpl->mPageChangeAnimation) {
+        mImpl->mPageChangeAnimation = new HsPropertyAnimationWrapper;
+        mImpl->mPageChangeAnimation->setTargetObject(mImpl->mIdleWidget);
+        mImpl->mPageChangeAnimation->setPropertyName("sceneX"); 
+    }
+    return mImpl->mPageChangeAnimation;
+}
+HsPropertyAnimationWrapper *HsGui::pageCrawlingAnimation()
+{
+    if (!mImpl->mPageCrawlingAnimation) {
+        mImpl->mPageCrawlingAnimation = new HsPropertyAnimationWrapper;
+        mImpl->mPageCrawlingAnimation->setTargetObject(mImpl->mIdleWidget);
+        mImpl->mPageCrawlingAnimation->setPropertyName("sceneX"); 
+    }
+    return mImpl->mPageCrawlingAnimation;
+}
+
+HsGui::HsGui(QObject *parent):
+    QObject(parent),mImpl(new HsGuiImpl)
+{
+    mImpl->mIdleView = 0;
+    mImpl->mIdleWidget = 0;
+    mImpl->mNavigationAction = 0;
+    mImpl->mPageChangeAnimation = 0;
+    mImpl->mPageCrawlingAnimation = 0;
+
+    mImpl->mWindow = hbInstance->allMainWindows().first();
+    connect(mImpl->mWindow, SIGNAL(orientationChanged(Qt::Orientation)),
+        SIGNAL(orientationChanged(Qt::Orientation)));
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/src/hspage_mock.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,555 @@
+/*
+* 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 <HbInstance>
+
+#include "hsdomainmodeldatastructures.h"
+#include "hspage.h"
+#include "hspagetoucharea.h"
+#include "hspagenewwidgetlayout.h"
+#include "hsscene.h"
+#include "hswidgethost.h"
+#include "hswallpaper.h"
+#include "hswidgetpositioningonwidgetadd.h"
+#include "hswidgetpositioningonorientationchange.h"
+#include "hsconfiguration.h"
+#include "hsgui.h"
+
+/*!
+    \class HsPage
+    \ingroup group_hsdomainmodel
+    \brief Represents a page in the framework.
+    HsPage contains group of widgets. HsPage can have a wallpaper.
+*/
+
+/*!
+    Constructor.
+
+    \a parent Owner.
+    \a aFlags Window flags.
+*/
+HsPage::HsPage(QObject* parent)
+    : QObject(parent),
+      mDatabaseId(-1),
+      mWallpaper(0),
+      mRemovable(true),
+      mPageMargin(0.0)
+{
+    
+    //Page margin
+    mPageMargin = HSCONFIGURATION_GET(pageMargin);
+    connect(HsConfiguration::instance(), SIGNAL(propertyChanged(QString)), SLOT(onPageMarginChanged(QString)));
+}
+
+/*!
+    Destructor.
+*/
+HsPage::~HsPage()
+{
+    delete mWallpaper;
+}
+
+/*!
+    Returns the database id.
+*/
+int HsPage::databaseId() const
+{
+    return mDatabaseId;
+}
+
+/*!
+    Sets the database id to \a id.
+*/
+void HsPage::setDatabaseId(int id)
+{
+    mDatabaseId = id;
+}
+
+
+
+/*!
+    Loads widgets.
+*/
+bool HsPage::load()
+{
+    if (HSCONFIGURATION_GET(sceneType) == HsConfiguration::PageWallpapers) {
+        mWallpaper = new HsPageWallpaper(this);
+    }
+
+  /*  HsWidgetHost *widget = new HsWidgetHost(-1);
+    mWidgets.append(widget);
+    connectWidget(widget);
+    widget->setPage(this);
+    widget->setParentItem(this);
+    widget->setPos(100, 100);
+    widget->startWidget();
+    */
+    return true;
+}
+
+/*!
+    Return wallpaper.
+*/
+HsWallpaper *HsPage::wallpaper() const
+{
+    return mWallpaper;
+}
+/*!
+    Add given existing \a widgetHost to a page. Returns true if successful
+*/
+bool HsPage::addExistingWidget(HsWidgetHost *widgetHost)
+{
+    if (!widgetHost) {
+        return false;
+    }
+
+    if (mWidgets.contains(widgetHost)) {
+        return true;
+    }
+
+    if (!widgetHost->setPage(this)) {
+        return false;
+    }
+
+    connectWidget(widgetHost);
+    mWidgets << widgetHost;
+   // widgetHost->setParentItem(this);
+
+    return true;
+ }
+
+/*!
+    Remove given \a widgetHost from a page. Widget is not deleted.
+    Returns true if successful
+*/
+bool HsPage::removeWidget(HsWidgetHost *widgetHost)
+{
+    if (!widgetHost || !widgetHost->setPage(0)) {
+        return false;
+    }
+
+    disconnectWidget(widgetHost);
+    mWidgets.removeOne(widgetHost);
+   // widgetHost->setParentItem(0);
+
+    return true;
+}
+
+/*!
+    Returns list of new widgets belonging to a page. Widgets which are
+    not yet layouted are considered as new widgets.
+*/
+QList<HsWidgetHost *> HsPage::newWidgets()
+{
+    return mNewWidgets;
+}
+
+/*!
+    Adds new widget into a page. Returns true if successfull.
+*/
+bool HsPage::addNewWidget(HsWidgetHost* widgetHost, const QPointF &touchPoint)
+{
+    Q_UNUSED(touchPoint)
+    if (!widgetHost || mWidgets.contains(widgetHost)) {
+        return false;
+    }
+
+    if (mNewWidgets.contains(widgetHost)) {
+        return true;
+    }
+
+    HsWidgetPresentationData presentation;
+    presentation.orientation = HsGui::instance()->orientation();
+    if (!widgetHost->getPresentation(presentation)) {
+        presentation.orientation = HsGui::instance()->orientation();
+        presentation.setPos(QPointF());
+        presentation.zValue = 0;
+        widgetHost->savePresentation(presentation);
+    }
+
+   // widgetHost->hide();
+   // widgetHost->setPos(presentation.x, presentation.y);
+   // widgetHost->setZValue(presentation.zValue);
+
+    connectWidget(widgetHost);
+    mNewWidgets << widgetHost;
+
+    return true;
+}
+
+/*!
+    Layouts all the new widgets
+*/
+void HsPage::layoutNewWidgets()
+{
+    if (mNewWidgets.isEmpty()) {
+        return;
+    }
+
+    updateZValues();
+    HsWidgetHost *widget = 0;
+    for (int i = 0; i < mNewWidgets.count(); ++i) {
+        widget = mNewWidgets.at(i);
+//Not used in mock        newWidgetLayout->addItem(widget);
+        widget->setPage(this);
+   //     widget->setParentItem(this);
+        widget->showWidget();
+   //     widget->show();
+    }
+    mWidgets << mNewWidgets;
+    mNewWidgets.clear();
+}
+
+/*!
+    Clears new widgets list and resets layout.
+*/
+void HsPage::resetNewWidgets()
+{
+    mNewWidgets.clear();
+    //setLayout(0);
+}
+
+/*!
+    Remove page and all it's contained widgets from database
+*/
+bool HsPage::deleteFromDatabase()
+{
+	//Not used in mock
+    return true;
+}
+
+/*!
+    Return list of widgets belonging to a page
+*/
+QList<HsWidgetHost *> HsPage::widgets() const
+{
+    return mWidgets;
+}
+
+/*!
+    Returns true if the page can be removed. Otherwise,
+    returns false.
+*/
+bool HsPage::isRemovable() const
+{
+    return mRemovable;
+}
+
+/*!
+    Sets removable flag to \a removable.
+*/
+void HsPage::setRemovable(bool removable)
+{
+    mRemovable = removable;
+}
+
+/*!
+    Return true if page is default page.
+*/
+bool HsPage::isDefaultPage() const
+{
+    return mDatabaseId == HSCONFIGURATION_GET(defaultPageId);
+}
+
+/*!
+    Return true if page is active page.
+*/
+bool HsPage::isActivePage() const
+{
+    return this == HsScene::instance()->activePage();
+}
+
+/*!
+    Create page into database and return instance of a new page.
+*/
+HsPage *HsPage::createInstance(const HsPageData &pageData)
+{
+    Q_UNUSED(pageData);
+    HsPage *page = new HsPage;
+    return page;
+}
+
+/*!
+    The widget is bounded in the rectangle which is smaller by PageMargin on all sides of page.
+*/
+QPointF HsPage::adjustedWidgetPosition(const QRectF &origWidgetRect)
+{
+    QRectF widgetAreaRect = contentGeometry();
+    qreal widgetX = qBound(widgetAreaRect.left(), origWidgetRect.x(), widgetAreaRect.right() - origWidgetRect.width());
+    qreal widgetY = qBound(widgetAreaRect.top(), origWidgetRect.y(), widgetAreaRect.bottom() - origWidgetRect.height());
+
+    return QPointF(widgetX, widgetY);
+}
+
+/*!
+    Returns rect of rectangular where widgets are allowed to be placed in the page.
+*/
+QRectF HsPage::contentGeometry()
+{
+    return contentGeometry(HsGui::instance()->orientation());
+}
+
+/*!
+    Returns rect of rectangular where widgets are allowed to be placed in the page.
+*/
+QRectF HsPage::contentGeometry(Qt::Orientation orientation)
+{
+    QRectF pageRect;
+    //pageRect = rect();
+
+    if (orientation != HsGui::instance()->orientation()) {
+        qreal width = pageRect.width();
+        qreal height = pageRect.height();
+        pageRect.setWidth(height);
+        pageRect.setHeight(width);
+    }
+
+    //Take care of chrome in both orientation
+    pageRect.setTop(64);
+
+    //Shrink by page margins at each side
+    return pageRect.adjusted(mPageMargin, mPageMargin, -mPageMargin, -mPageMargin);
+}
+
+/*!
+    Returns rect of rectangular where widgets are allowed to be placed in the page.
+*/
+QRectF HsPage::contentRect()
+{
+    return contentRect(HsGui::instance()->orientation());
+}
+
+/*!
+    Returns rect of rectangular where widgets are allowed to be placed in the page.
+*/
+QRectF HsPage::contentRect(Qt::Orientation orientation)
+{
+    QRectF rect = contentGeometry(orientation);
+    rect.moveTopLeft(QPointF(0,0));
+    return rect;
+}
+
+/*!
+    Calls onShow() for contained widgets.
+*/
+void HsPage::showWidgets()
+{
+  /*  foreach (HsWidgetHost *widget, mWidgets) {
+        if (widget->parentItem() == this) {
+            widget->showWidget();
+        }
+    }
+    */
+}
+
+/*!
+    Calls onHide() for contained widgets.
+*/
+void HsPage::hideWidgets()
+{
+ /*   foreach (HsWidgetHost *widget, mWidgets) {
+        if (widget->parentItem() == this) {
+            widget->hideWidget();
+        }
+    }
+    */
+}
+
+/*!
+    Propagate online state to widgets.
+*/
+void HsPage::setOnline(bool online)
+{
+    foreach (HsWidgetHost *widget, mNewWidgets) {
+        widget->setOnline(online);
+    }
+    foreach (HsWidgetHost *widget, mWidgets) {
+        widget->setOnline(online);
+    }
+}
+
+/*!
+    Update widgets z-values and persist those. Active widget has top most
+    z-value.
+*/
+void HsPage::updateZValues()
+{
+    int z = 0;
+
+    /*if (!mWidgets.isEmpty()) {
+        QMultiMap<qreal, HsWidgetHost *> map;
+        foreach (HsWidgetHost *widget, mWidgets) {
+            map.insert(widget->zValue(), widget);
+        }
+
+        QList<HsWidgetHost *> sortedWidgets = map.values();
+
+        HsWidgetHost *activeWidget = HsScene::instance()->activeWidget();
+        if (sortedWidgets.contains(activeWidget)) {
+            sortedWidgets.removeOne(activeWidget);
+            sortedWidgets.append(activeWidget);
+        }
+
+        foreach (HsWidgetHost *widget, sortedWidgets) {
+            widget->setZValue(z++);
+            widget->savePresentation();
+        }
+    }
+
+    if (!mNewWidgets.isEmpty()) {
+        foreach (HsWidgetHost *widget, mNewWidgets) {
+            widget->setZValue(z++);
+            widget->savePresentation();
+        }
+    }
+    */
+}
+
+/*!
+    Return this page's index.
+*/
+int HsPage::pageIndex()
+{
+    return HsScene::instance()->pages().indexOf(this);
+}
+
+/*!
+    Utility to connect widget signals to page.
+*/
+void HsPage::connectWidget(HsWidgetHost *widget)
+{
+    connect(widget, SIGNAL(finished()), SLOT(onWidgetFinished()));
+    connect(widget, SIGNAL(faulted()), SLOT(onWidgetFaulted()));
+    connect(widget, SIGNAL(resized()), SLOT(onWidgetResized()));
+    connect(widget, SIGNAL(available()), SLOT(onWidgetAvailable()));
+    connect(widget, SIGNAL(unavailable()), SLOT(onWidgetUnavailable()));
+}
+/*!
+    Disconnect widget signals from page
+*/
+void HsPage::disconnectWidget(HsWidgetHost *widget)
+{
+    widget->disconnect(this);
+}
+/*!
+    Disconnect and remove widget
+*/
+void HsPage::onWidgetFinished()
+{
+    HsWidgetHost *widget = qobject_cast<HsWidgetHost *>(sender());
+
+    // It can be in new widget list if we haven't layouted it yet
+    // or layouted new widget and widget list
+    if (!mNewWidgets.removeOne(widget)) {
+        mWidgets.removeOne(widget);
+    }
+
+    disconnectWidget(widget);
+    widget->remove();
+}
+/*!
+    Remove widget if it faulted
+*/
+void HsPage::onWidgetFaulted()
+{
+    onWidgetFinished();
+}
+
+/*!
+    Calculates new widget position on page when widget size changes. If page has layout then there are new widgets
+    and we use layout to calculate new widget positions.
+*/
+void HsPage::onWidgetResized()
+{
+ /*   if ( !layout() ) {
+        HsWidgetHost *widget = qobject_cast<HsWidgetHost *>(sender());
+        widget->setPos(adjustedWidgetPosition(widget->geometry()));
+    } else {
+        layout()->invalidate();
+    }
+    */
+}
+/*!
+    Show widget if it came available
+*/
+void HsPage::onWidgetAvailable()
+{
+    HsWidgetHost *widget = qobject_cast<HsWidgetHost *>(sender());
+
+    mUnavailableWidgets.removeOne(widget);
+    mWidgets.append(widget);
+
+  //  widget->setParentItem(this);
+    widget->startWidget(isActivePage());
+  //  widget->show();
+}
+/*!
+    Update internal bookkeeping and hide widget
+*/
+void HsPage::onWidgetUnavailable()
+{
+    HsWidgetHost *widget = qobject_cast<HsWidgetHost *>(sender());
+
+    if (mWidgets.contains(widget)) {
+        mWidgets.removeOne(widget);
+    } else if (mNewWidgets.contains(widget)) {
+        mNewWidgets.removeOne(widget);
+    } else {
+        return;
+    }
+
+    mUnavailableWidgets.append(widget);
+
+  /*  widget->hide();
+    widget->setParentItem(0);
+    */
+}
+
+/*!
+    Run positioning algorithm for widgets which don't have position on
+    target orientation. Otherwise set orientation positions for widgets.
+*/
+void HsPage::onOrientationChanged(Qt::Orientation orientation)
+{
+    Q_UNUSED(orientation)
+}
+
+void HsPage::onPageMarginChanged(const QString &value)
+{
+    if (value == "pageMargin") {
+        mPageMargin = HSCONFIGURATION_GET(pageMargin);
+
+        if (!mWidgets.isEmpty()) {
+            foreach (HsWidgetHost *widget, mWidgets) {
+         //       widget->setPos(adjustedWidgetPosition(widget->geometry()));
+                widget->savePresentation();
+            }
+        }
+
+        if (!mNewWidgets.isEmpty()) {
+            foreach (HsWidgetHost *widget, mNewWidgets) {
+           //     widget->setPos(adjustedWidgetPosition(widget->geometry()));
+                widget->savePresentation();
+            }
+        }
+    }
+}
+
+HsPageVisual *HsPage::visual()const
+{
+	return 0;	
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/src/hsscene_mock.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,205 @@
+/*
+* 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 <HbInstance>
+#include "hsdomainmodeldatastructures.h"
+#include "hsscene.h"
+#include "hspage.h"
+#include "hswidgethost.h"
+#include "hswallpaper.h"
+#include "hsconfiguration.h"
+
+HsScene::~HsScene()
+{
+    delete mWallpaper;
+    qDeleteAll(mPages);
+}
+
+int HsScene::databaseId() const
+{
+    return mDatabaseId;
+}
+
+bool HsScene::load()
+{
+    int pageCount = property("pageCount").toInt();
+    int defaultPageIndex = property("defaultPageIndex").toInt();
+
+    mDatabaseId = 1; //Just one scene in the test
+    if (HSCONFIGURATION_GET(sceneType) == HsConfiguration::SceneWallpaper) {
+        mWallpaper = new HsSceneWallpaper(this);
+    }
+    
+    for (int i = 0; i < pageCount; ++i) {
+        HsPage *page = new HsPage;
+        page->load();
+        mPages << page;
+    }
+
+    if(defaultPageIndex > -1){
+        mActivePage = mPages[defaultPageIndex];
+        mActivePage->setRemovable(false);
+    }
+
+    return true;
+}
+
+HsWallpaper *HsScene::wallpaper() const
+{
+    return mWallpaper;
+}
+
+QList<HsPage *> HsScene::pages() const
+{
+    return mPages;
+}
+
+bool HsScene::addPage(HsPage *page)
+{
+    if (!page) {
+        return false;
+    }
+
+    if (mPages.contains(page)) {
+        return true;
+    }
+
+    mPages << page;
+    return true;
+}
+
+bool HsScene::removePage(HsPage *page)
+{
+    if (!page) {
+        return false;
+    }
+    return mPages.removeOne(page);
+}
+
+bool HsScene::setActivePage(HsPage *page)
+{
+    if (!page) {
+        return false;
+    }
+
+    if (!mPages.contains(page)) {
+        return false;
+    }
+
+    mActivePage = page;
+    return true;
+}
+
+bool HsScene::setActivePageIndex(int index)
+{
+    if (index < 0 || mPages.count() <= index) {
+        return false;
+    }
+    return setActivePage(mPages[index]);
+}
+
+HsPage *HsScene::activePage() const
+{
+    return mActivePage;
+}
+
+int HsScene::activePageIndex() const
+{
+    return mPages.indexOf(mActivePage);
+}
+
+void HsScene::setActiveWidget(HsWidgetHost *widget)
+{
+    mActiveWidget = widget;
+}
+
+HsWidgetHost *HsScene::activeWidget() const
+{
+    return mActiveWidget;
+}
+
+void HsScene::setOnline(bool online)
+{
+    mIsOnline = online;
+    foreach (HsPage *page, mPages) {
+        page->setOnline(online);
+    }
+}
+
+bool HsScene::isOnline()const
+{
+    return mIsOnline;
+}
+
+/*!
+    Singleton.
+*/
+HsScene *HsScene::instance()
+{
+    if (!mInstance) {
+        mInstance = new HsScene;
+    }
+    return mInstance;
+}
+
+HsScene *HsScene::takeInstance()
+{
+    HsScene *instance = mInstance;
+    mInstance = 0;
+    return instance;
+}
+ 
+void HsScene::setInstance(HsScene *instance)
+{
+    if (mInstance != instance) {
+        delete mInstance;
+        mInstance = instance; 
+    }    
+}
+
+/*!
+    Listens for application background/foreground changes.
+*/
+bool HsScene::eventFilter(QObject *watched, QEvent *event)
+{
+	switch (event->type()) {
+        case QEvent::ApplicationActivate:
+            mActivePage->showWidgets();
+            break;
+		case QEvent::ApplicationDeactivate:
+            mActivePage->hideWidgets();
+            break;
+        default:
+            break;
+	}
+    return QObject::eventFilter(watched, event);
+}
+
+HsScene::HsScene(QObject *parent)
+  : QObject(parent),
+    mDatabaseId(-1),
+    mWallpaper(0),
+    mActivePage(0),
+    mActiveWidget(0),
+    mIsOnline(true)
+{
+}
+
+/*!
+    Points to the scene instance.
+*/
+HsScene *HsScene::mInstance = 0;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/src/hswallpaper_mock.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,324 @@
+/*
+* 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 <QDir>
+#include <QFile>
+#include <QVariantHash>
+#include <QGraphicsLinearLayout>
+
+#include <HbMainWindow>
+#include <HbIconItem>
+
+#include "hswallpaper.h"
+#include "hsscene.h"
+#include "hspage.h"
+#include "hswallpaperloader.h"
+#include "hsconfiguration.h"
+#include "hsgui.h"
+/*!
+
+*/
+
+/*!
+
+*/
+HsWallpaper::HsWallpaper(QGraphicsItem *parent)
+  : HbWidget(parent),
+    mIsDefaultImage(false),
+    mIconItem(0)/*,
+    mLoader(0)*/
+{
+    setFlag(ItemHasNoContents);
+    setSizePolicy(QSizePolicy::Ignored,QSizePolicy::Ignored);
+
+    /*
+    mLoader = new HsWallpaperLoader(this);
+    connect(mLoader, SIGNAL(finished()), SLOT(onLoaderFinished()), Qt::UniqueConnection);
+    connect(mLoader, SIGNAL(failed()), SLOT(onLoaderFailed()), Qt::UniqueConnection);
+    */
+
+    mIconItem = new HbIconItem();
+    QGraphicsLinearLayout *layout = new QGraphicsLinearLayout;
+    layout->setContentsMargins(0, 0, 0, 0);
+    layout->addItem(mIconItem);
+    setLayout(layout);
+
+    connect(HsGui::instance(),
+        SIGNAL(orientationChanged(Qt::Orientation)),
+        SLOT(updateIconItem(Qt::Orientation)));
+}
+
+/*!
+
+*/
+HsWallpaper::~HsWallpaper()
+{
+}
+
+/*!
+
+*/
+void HsWallpaper::setImage(const QString &path)
+{
+    Q_UNUSED(path);
+}
+
+void HsWallpaper::setImages(const QString &portraitFileName, const QString &landscapeFileName)
+{
+    Q_UNUSED(portraitFileName)
+    Q_UNUSED(landscapeFileName)
+    emit imageSet();
+}
+
+/*!
+
+*/
+void HsWallpaper::setDefaultImage()
+{
+    if (mIsDefaultImage) {
+        return;
+    }
+
+    QDir dir(wallpaperDirectory());
+    QStringList filters;
+    filters << "default_portrait.*";
+    filters << "default_landscape.*";
+    QFileInfoList infos = dir.entryInfoList(
+        filters, QDir::Files, QDir::Name | QDir::IgnoreCase);
+
+    Q_ASSERT(infos.count() == 2);
+
+    mIsDefaultImage = true;
+    mLandscapeImagePath = infos.first().absoluteFilePath();
+    mPortraitImagePath = infos.last().absoluteFilePath();
+
+    updateIconItem(HsGui::instance()->orientation());
+}
+
+/*!
+
+*/
+void HsWallpaper::remove()
+{
+    if (mIsDefaultImage) {
+        mIsDefaultImage = false;
+    } else {
+        QFile::remove(mPortraitImagePath);
+        QFile::remove(mLandscapeImagePath);
+    }
+    mPortraitImagePath.clear();
+    mLandscapeImagePath.clear();
+}
+
+/*!
+
+*/
+bool HsWallpaper::setExistingImage()
+{
+    QDir dir(wallpaperDirectory());
+    QStringList filters;
+    filters << QString("%1_portrait.*").arg(mId);
+    filters << QString("%1_landscape.*").arg(mId);
+    QFileInfoList infos = dir.entryInfoList(
+        filters, QDir::Files, QDir::Name | QDir::IgnoreCase);
+
+    Q_ASSERT(infos.isEmpty() || infos.count() == 2);
+
+    if (infos.isEmpty()) {
+        return false;
+    }
+
+    mIsDefaultImage = false;
+    mLandscapeImagePath = infos.first().absoluteFilePath();
+    mPortraitImagePath = infos.last().absoluteFilePath();
+
+    updateIconItem(HsGui::instance()->orientation());
+    return true;
+}
+
+QString HsWallpaper::rootDirectory() const
+{
+#ifdef Q_OS_SYMBIAN
+    QString directory("c:/private/20022f35/wallpapers/");
+#else
+    QString directory(QDir::currentPath() + "/private/20022f35/wallpapers/");
+#endif
+
+#ifdef HSDOMAINMODEL_TEST
+    directory = QDir::currentPath() + "/wallpapers/";
+#endif
+    return directory;
+}
+
+/*!
+
+*/
+void HsWallpaper::onLoaderFinished()
+{
+    if (mIsDefaultImage) {
+        mIsDefaultImage = false;
+    } else {
+        QFile::remove(mPortraitImagePath);
+        QFile::remove(mLandscapeImagePath);
+    }
+    foreach (QString path, mLoader->targets().keys()) {
+        QString newName = path; newName.remove("temp");
+        QFile::rename(path, newName);
+    }
+    setExistingImage();
+    emit imageSet();
+}
+
+/*!
+
+*/
+void HsWallpaper::onLoaderFailed()
+{
+    foreach (QString path, mLoader->targets().keys()) {
+        QFile::remove(path);
+    }
+    emit imageSetFailed();
+}
+
+/*!
+
+*/
+void HsWallpaper::updateIconItem(Qt::Orientation orientation)
+{
+    if (orientation == Qt::Vertical) {
+        mIconItem->setIcon(HbIcon(QIcon(mPortraitImagePath)));
+    } else {
+        mIconItem->setIcon(HbIcon(QIcon(mLandscapeImagePath)));
+    }
+}
+
+/*!
+
+*/
+HsSceneWallpaper::HsSceneWallpaper(HsScene *scene, QGraphicsItem *parent)
+  : HsWallpaper(parent),
+    mScene(0)
+{
+    setScene(scene);
+}
+
+/*!
+
+*/
+HsSceneWallpaper::~HsSceneWallpaper()
+{
+}
+
+/*!
+
+*/
+void HsSceneWallpaper::setScene(HsScene *scene)
+{
+    if (!scene) {
+        return;
+    }
+
+    mScene = scene;
+    mId = scene->databaseId();
+    if (!setExistingImage()) {
+        setDefaultImage();
+    }
+}
+
+/*!
+
+*/
+QString HsSceneWallpaper::wallpaperDirectory() const
+{
+    return QDir::toNativeSeparators(rootDirectory() + "scene/");
+}
+
+/*!
+
+*/
+QVariantHash HsSceneWallpaper::createTargets(const QString &sourcePath)
+{
+    QVariantHash targets;
+
+    QString path = wallpaperDirectory()
+                   + QString("temp%1_").arg(mId)
+                   + QString("%1.")
+                   + QFileInfo(sourcePath).suffix();
+
+    targets.insert(path.arg("portrait"), QSize((2 * 360) + HSCONFIGURATION_GET(bounceEffect), 640));
+    targets.insert(path.arg("landscape"), QSize((2 * 640) + HSCONFIGURATION_GET(bounceEffect), 360));
+    return targets;
+}
+
+/*!
+ PAGE
+*/
+HsPageWallpaper::HsPageWallpaper(HsPage *page, QGraphicsItem *parent)
+  : HsWallpaper(parent),
+    mPage(0)
+{
+    setPage(page);
+}
+
+/*!
+
+*/
+HsPageWallpaper::~HsPageWallpaper()
+{
+}
+
+/*!
+
+*/
+void HsPageWallpaper::setPage(HsPage *page)
+{
+    if (!page) {
+        return;
+    }
+
+    mPage = page;
+    mId = page->databaseId();
+    if (!setExistingImage()) {
+        setDefaultImage();
+    }
+}
+
+/*!
+
+*/
+QString HsPageWallpaper::wallpaperDirectory() const
+{
+    return QDir::toNativeSeparators(rootDirectory() + "page/");
+}
+
+/*!
+
+*/
+QVariantHash HsPageWallpaper::createTargets(const QString &sourcePath)
+{
+    QVariantHash targets;
+
+    QString path = wallpaperDirectory()
+                   + QString("temp%1_").arg(mId)
+                   + QString("%1.")
+                   + QFileInfo(sourcePath).suffix();
+
+    targets.insert(path.arg("portrait"), QSize(360, 640));
+    targets.insert(path.arg("landscape"), QSize(640, 360));
+    return targets;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/src/hswidgethost_mock.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,495 @@
+/*
+* 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 <QApplication>
+#include <QStateMachine>
+#include <QState>
+#include <QFinalState>
+#include <QGraphicsLinearLayout>
+#include <QParallelAnimationGroup>
+#include <QPropertyAnimation>
+#include <QGraphicsDropShadowEffect>
+#include <QGraphicsSceneResizeEvent>
+#include <QGesture>
+#include <QGraphicsScene>
+
+#include <qservicemanager.h>
+#include <qservicefilter.h>
+#include <qserviceinterfacedescriptor.h>
+
+#include <HbInstantFeedback>
+
+#include "hsdatabase.h"
+#include "hsdomainmodeldatastructures.h"
+#include "hsscene.h"
+#include "hspage.h"
+#include "hswidgethost.h"
+#include "hswidgettoucharea.h"
+#include "hswidgetcomponentregistry.h"
+#include "hswidgetcomponent.h"
+#include "hsconfiguration.h"
+#include "testwidget.h"
+
+// Helper macros for connecting state entry and exit actions.
+#define ENTRY_ACTION(state, action) \
+    connect(state, SIGNAL(entered()), SLOT(action()));
+#define EXIT_ACTION(state, action) \
+    connect(state, SIGNAL(exited()), SLOT(action()));
+
+QTM_USE_NAMESPACE
+
+HsWidgetHost::HsWidgetHost(int databaseId, QObject *parent)
+  : QObject(parent),
+    mDatabaseId(databaseId),
+    mStateMachine(0),
+    mWidget(0),
+    mPage(0),
+    mComponent(0),
+    mIsFinishing(false)
+{
+   /* setFlag(QGraphicsItem::ItemClipsChildrenToShape);
+    setFlag(QGraphicsItem::ItemHasNoContents);
+
+    grabGesture(Qt::TapGesture);
+    grabGesture(Qt::TapAndHoldGesture);
+    grabGesture(Qt::PanGesture);
+    grabGesture(Qt::PinchGesture);
+    grabGesture(Qt::SwipeGesture);
+    grabGesture(Qt::CustomGesture);
+
+    setupTouchArea();
+    setupEffects();*/
+    setupStates();
+}
+
+HsWidgetHost::~HsWidgetHost()
+{
+}
+
+HsWidgetHost *HsWidgetHost::createInstance(HsWidgetData &widgetData, 
+                                           const QVariantHash &preferences)
+{
+    Q_UNUSED(widgetData);
+    Q_UNUSED(preferences);
+    HsWidgetHost *host = NULL;
+    host = new HsWidgetHost(-1);
+    return host;
+}
+
+int HsWidgetHost::databaseId() const
+{
+    return mDatabaseId;
+}
+
+bool HsWidgetHost::setPage(HsPage *page)
+{    
+    mPage = page;
+    return true;
+}
+ 
+HsPage *HsWidgetHost::page() const
+{
+    return mPage;
+}
+
+bool HsWidgetHost::loadPresentation()
+{
+    return true;
+}
+
+bool HsWidgetHost::loadPresentation(Qt::Orientation orientation)
+{
+    Q_UNUSED(orientation)
+    return true;
+}
+
+bool HsWidgetHost::savePresentation()
+{
+    return true;
+}
+
+bool HsWidgetHost::savePresentation(Qt::Orientation orientation)
+{
+    Q_UNUSED(orientation)
+    return true;
+}
+
+bool HsWidgetHost::savePresentation(HsWidgetPresentationData &presentation)
+{
+    Q_UNUSED(presentation)
+    return true;
+}
+
+bool HsWidgetHost::getPresentation(HsWidgetPresentationData &presentation)
+{
+    Q_UNUSED(presentation)
+    return true;
+}
+
+bool HsWidgetHost::removePresentation(Qt::Orientation orientation)
+{
+    Q_UNUSED(orientation)
+    return true;
+}
+
+
+
+void HsWidgetHost::startWidget(bool show)
+{
+    if (show) {
+        emit event_startAndShow();
+    } else {
+        emit event_startAndHide();
+    }
+}
+ 
+void HsWidgetHost::showWidget()
+{
+    emit event_show();
+}
+    
+void HsWidgetHost::hideWidget()
+{
+    emit event_hide();
+}
+
+void HsWidgetHost::setOnline(bool online)
+{
+    mIsOnlineProperty.write(mWidget, online);
+}
+
+void HsWidgetHost::remove()
+{
+    emit event_remove();
+}
+ 
+void HsWidgetHost::close()
+{
+    emit event_close();
+}
+
+void HsWidgetHost::startDragEffect()
+{
+    /* TODO: Uncomment after the Qt bug has been fixed.
+    QGraphicsDropShadowEffect *effect =
+        static_cast<QGraphicsDropShadowEffect *>(graphicsEffect());
+    */
+  /*  HbInstantFeedback::play(HbFeedback::ItemPick);
+
+    setTransformOriginPoint(rect().center());
+
+    QParallelAnimationGroup *animationGroup = new QParallelAnimationGroup();
+
+    QPropertyAnimation *animation = new QPropertyAnimation(this, "scale");
+    animation->setDuration(HSCONFIGURATION_GET(widgetDragEffectDuration));
+    animation->setEndValue(1.1);
+    animationGroup->addAnimation(animation);
+*/
+    /* TODO: Uncomment after the Qt bug has been fixed.
+    animation = new QPropertyAnimation(effect, "offset");
+    animation->setDuration(200);
+    animation->setEndValue(QPointF(8 ,8));
+    animationGroup->addAnimation(animation);
+    */
+
+  //  animationGroup->start(QAbstractAnimation::DeleteWhenStopped);
+}
+
+void HsWidgetHost::startDropEffect()
+{
+    /* TODO: Uncomment after the Qt bug has been fixed.
+    QGraphicsDropShadowEffect *effect =
+        static_cast<QGraphicsDropShadowEffect *>(graphicsEffect());
+    */
+   /* HbInstantFeedback::play(HbFeedback::ItemDrop);
+
+    QParallelAnimationGroup *animationGroup = new QParallelAnimationGroup;
+
+    QPropertyAnimation *animation = new QPropertyAnimation(this, "scale");
+    animation->setDuration(HSCONFIGURATION_GET(widgetDropEffectDuration));
+    animation->setEndValue(1);
+    animationGroup->addAnimation(animation);
+*/
+    /* TODO: Uncomment after the Qt bug has been fixed.
+    animation = new QPropertyAnimation(effect, "offset");
+    animation->setDuration(200);
+    animation->setEndValue(QPointF(3, 3));
+    animationGroup->addAnimation(animation);
+    */
+
+  //  animationGroup->start(QAbstractAnimation::DeleteWhenStopped);
+}
+
+
+
+void HsWidgetHost::setupStates()
+{
+    // State machine
+
+    mStateMachine = new QStateMachine(this);
+    mStateMachine->setAnimated(false);
+    
+    // States
+
+    QState *state_component = new QState;
+    QState *state_unloaded = new QState(state_component);
+    QState *state_running = new QState(state_component);
+    QState *state_show = new QState(state_running);
+    QState *state_hide = new QState(state_running);
+    QState *state_finished = new QState;
+    QState *state_faulted = new QState;
+    QState *state_remove = new QState;
+    QFinalState *state_final = new QFinalState;
+
+    mStateMachine->addState(state_component);
+    mStateMachine->addState(state_finished);
+    mStateMachine->addState(state_faulted);
+    mStateMachine->addState(state_remove);
+    mStateMachine->addState(state_final);
+
+    mStateMachine->setInitialState(state_component);
+    state_component->setInitialState(state_unloaded);
+    state_running->setInitialState(state_hide);
+
+    // Transitions
+
+    state_component->addTransition(
+        this, SIGNAL(event_close()), state_final);
+    state_component->addTransition(
+        this, SIGNAL(event_remove()), state_remove);
+    state_component->addTransition(
+        this, SIGNAL(event_finished()), state_finished);
+    state_component->addTransition(
+        this, SIGNAL(event_faulted()), state_faulted);
+
+    state_unloaded->addTransition(
+        this, SIGNAL(event_startAndShow()), state_show);
+    state_unloaded->addTransition(
+        this, SIGNAL(event_startAndHide()), state_hide);
+
+    state_running->addTransition(
+        this, SIGNAL(event_unload()), state_unloaded);
+    
+    state_show->addTransition(
+        this, SIGNAL(event_hide()), state_hide);
+
+    state_hide->addTransition(
+        this, SIGNAL(event_show()), state_show);
+
+    state_finished->addTransition(
+        this, SIGNAL(event_remove()), state_remove);
+    state_finished->addTransition(
+        this, SIGNAL(event_close()), state_final);
+
+    state_faulted->addTransition(
+        this, SIGNAL(event_remove()), state_remove);
+    state_faulted->addTransition(
+        this, SIGNAL(event_close()), state_final);
+
+    state_remove->addTransition(state_final);
+
+    // Actions
+
+    ENTRY_ACTION(state_component, action_connectComponent)
+    EXIT_ACTION(state_component, action_disconnectComponent)
+
+    ENTRY_ACTION(state_running, action_load)
+    ENTRY_ACTION(state_running, action_initialize)
+    EXIT_ACTION(state_running, action_uninitialize)
+    EXIT_ACTION(state_running, action_unload)
+
+    ENTRY_ACTION(state_show, action_show)
+
+    ENTRY_ACTION(state_hide, action_hide)
+
+    ENTRY_ACTION(state_finished, action_finished)
+
+    ENTRY_ACTION(state_faulted, action_faulted)
+
+    ENTRY_ACTION(state_remove, action_remove)
+
+    // Connect and start
+
+    connect(mStateMachine, SIGNAL(finished()), SLOT(deleteLater()), 
+            Qt::QueuedConnection);
+    
+    mStateMachine->start();
+
+    // Starts the state machine. QStateMachine start uses
+    // queued connection.
+
+    QApplication::processEvents(QEventLoop::ExcludeUserInputEvents);
+}
+
+bool HsWidgetHost::setProperty(const char *name, QMetaProperty &property)
+{
+    const QMetaObject *object = mWidget->metaObject();
+    int index = object->indexOfProperty(name);
+    property = object->property(index);
+    return index >= 0;
+}
+
+bool HsWidgetHost::setMethod(const char *signature, QMetaMethod &method)
+{
+    const QMetaObject *object = mWidget->metaObject();
+    int index = object->indexOfMethod(
+        QMetaObject::normalizedSignature(signature));
+    method = object->method(index);
+    return index >= 0;
+}
+
+bool HsWidgetHost::hasSignal(const char *signature)
+{
+    const QMetaObject *object = mWidget->metaObject();
+    int index = object->indexOfSignal(
+        QMetaObject::normalizedSignature(signature));
+    return index >= 0;
+}
+
+bool HsWidgetHost::setPreferencesToWidget()
+{
+    return true;
+}
+
+void HsWidgetHost::action_connectComponent()
+{    
+}
+
+void HsWidgetHost::action_disconnectComponent()
+{
+}
+
+void HsWidgetHost::action_load()
+{   
+    mWidget = new TestWidget;
+
+    if (!mWidget ||
+        !setMethod("onShow()", mOnShowMethod) ||
+        !setMethod("onHide()", mOnHideMethod)) {
+        mWidget = 0;        
+        emit event_faulted();
+        return;
+    }
+
+    setMethod("onInitialize()", mOnInitializeMethod);
+    setMethod("onUninitialize()", mOnUninitializeMethod);
+    
+    setProperty("isOnline", mIsOnlineProperty);
+	setProperty("rootPath", mRootPathProperty);
+    
+    if (hasSignal("setPreferences(const QStringList&)")) {
+        connect(mWidget, SIGNAL(setPreferences(QStringList)),
+                SLOT(onSetPreferences(QStringList)));
+    }
+    if (hasSignal("finished()")) {
+        connect(mWidget, SIGNAL(finished()),
+                SLOT(onFinished()));
+    }
+    if (hasSignal("error()")) {
+        connect(mWidget, SIGNAL(error()),
+                SLOT(onError()));
+    }
+
+    mWidget->installEventFilter(this);
+
+    //HsScene *scene = HsScene::instance();
+    //setMaximumSize(scene->maximumWidgetSizeInPixels());
+    //setMinimumSize(scene->minimumWidgetSizeInPixels());
+
+    loadPresentation();
+
+   /* mWidget->setParentItem(this);
+
+    setNewSize(mWidget->size());
+    */
+}
+
+void HsWidgetHost::action_unload()
+{
+    delete mWidget;
+    mWidget = 0;
+
+    mOnInitializeMethod = QMetaMethod();
+    mOnShowMethod = QMetaMethod();
+    mOnHideMethod = QMetaMethod();
+    mOnUninitializeMethod = QMetaMethod();
+    mIsOnlineProperty = QMetaProperty();
+	mRootPathProperty = QMetaProperty();    
+}
+
+void HsWidgetHost::action_initialize()
+{    
+    //mRootPathProperty.write(mWidget, mComponent->rootPath());
+    setPreferencesToWidget();
+    setOnline(HsScene::instance()->isOnline());
+    mOnInitializeMethod.invoke(mWidget);
+}
+
+void HsWidgetHost::action_uninitialize()
+{
+    mOnUninitializeMethod.invoke(mWidget);
+}
+
+void HsWidgetHost::action_show()
+{
+    if (!mIsFinishing) {
+        mOnShowMethod.invoke(mWidget);
+    }
+}
+
+void HsWidgetHost::action_hide()
+{
+    if (!mIsFinishing) {
+        mOnHideMethod.invoke(mWidget);
+    }
+}
+
+void HsWidgetHost::action_finished()
+{
+    emit finished();
+}
+
+void HsWidgetHost::action_faulted()
+{
+    emit faulted();
+}
+
+void HsWidgetHost::action_remove()
+{   
+    mDatabaseId = -1;
+}
+
+void HsWidgetHost::action_notifyRemove()
+{   
+}
+
+void HsWidgetHost::onFinished()
+{
+    mIsFinishing = true;
+    emit event_finished();
+}
+ 
+void HsWidgetHost::onError()
+{
+    mIsFinishing = true;
+    emit event_faulted();
+}
+
+void HsWidgetHost::onSetPreferences(const QStringList &names)
+{
+    Q_UNUSED(names)
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/src/t_hsaddappstocollectionstate.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,613 @@
+/*
+* 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:  Main test class for hsHomeScreenStatePlugin library.
+*
+*/
+
+#include <QStateMachine>
+#include <QTest>
+#include <qstandarditemmodel.h>
+#include <hbaction.h>
+#include <hblistview.h>
+
+#include "t_hsmenuworkerstateplugin.h"
+#include "hsaddappstocollectionstate.h"
+#include "hsmenuworkerstate.h"
+#include "hsaddtohomescreenstate.h"
+#include "hsappschecklist.h"
+
+#include "hscollectionnamedialog.h"
+#include "hsapp_defs.h"
+
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::AddAppsToCollectionState_construction()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsMenuWorkerState parentState1;
+
+        HsAddAppsToCollectionState aatcs1(&parentState1);
+        QString s1 = aatcs1.objectName();
+        QVERIFY(s1 == tr("homescreen.nokia.com/state/addappstocollectionstate"));
+
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::AddAppsToCollectionState_save()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsMenuWorkerState parentState1;
+
+        HsAddAppsToCollectionState aatcs1(&parentState1);
+
+        aatcs1.mCollectionId = 10;
+        aatcs1.save();
+        QCOMPARE(aatcs1.mCollectionId, 10);
+
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::AddAppsToCollectionState_cleanData()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsMenuWorkerState parentState1;
+
+        HsAddAppsToCollectionState aatcs1(&parentState1);
+
+        aatcs1.mCollectionId = 10;
+        aatcs1.cleanData();
+        QVERIFY(aatcs1.mCollectionId == 0);
+
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::AddAppsToCollectionState_setCollectionName()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsMenuWorkerState parentState1;
+
+        HsAddAppsToCollectionState aatcs1(&parentState1);
+
+        aatcs1.setCollectionName("test");
+        QVERIFY(aatcs1.mCollectionName == "test");
+
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::AddAppsToCollectionState_setCollectionId()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsMenuWorkerState parentState1;
+
+        HsAddAppsToCollectionState aatcs1(&parentState1);
+
+        aatcs1.setCollectionId(1);
+        QVERIFY(aatcs1.mCollectionId == 1);
+
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::AddAppsToCollectionState_setAppList()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsMenuWorkerState parentState1;
+
+        HsAddAppsToCollectionState aatcs1(&parentState1);
+
+        QList<int> appList;
+        appList.append(1);
+        aatcs1.setAppList(appList);
+        QVERIFY(aatcs1.mAppList.count() == 1);
+
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::AddAppsToCollectionState_showMessageAppsAdded()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsMenuWorkerState parentState;
+        HsAddAppsToCollectionState aatcs(&parentState);
+
+        //aatcs.mMenuService = new MenuService();
+
+        aatcs.onEntry(new HsMenuEvent(HsMenuEvent::OpenCollectionFromAppLibrary, QVariantMap()));
+        aatcs.showMessageAppsAdded(10);
+        aatcs.stateExited();
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::AddAppsToCollectionState_selectCollection()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+    HsMenuWorkerState parentState;
+    HsAddAppsToCollectionState aatcs(&parentState);
+    QVERIFY(aatcs.mListDialog == NULL);
+
+    aatcs.selectCollection();
+
+    QVERIFY(aatcs.mListDialog);
+    QVERIFY(aatcs.mListDialog->testAttribute(Qt::WA_DeleteOnClose));
+    QCOMPARE(aatcs.mListDialog->dismissPolicy(), HbPopup::NoDismiss);
+    // disconnect to check if connection was done
+    bool result = disconnect(aatcs.mListDialog, SIGNAL(finished(HbAction*)),
+               &aatcs, SLOT(listDialogFinished(HbAction*)));
+    QVERIFY (result);
+
+    aatcs.mListDialog->close();
+
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::AddAppsToCollectionState_listDialogFinished()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+    HsMenuWorkerState parentState;
+    HsAddAppsToCollectionState aatcs(&parentState);
+    QVERIFY(aatcs.mListDialog == NULL);
+
+    aatcs.selectCollection();
+
+    QVERIFY(aatcs.mListDialog);
+    
+    aatcs.listDialogFinished(qobject_cast<HbAction *>(aatcs.mListDialog->actions().value(1))); //Cancel
+    
+    QVERIFY(aatcs.mListDialog == NULL);
+
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::AddAppsToCollectionState_newCollection()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+    HsMenuWorkerState parentState;
+    HsAddAppsToCollectionState aatcs(&parentState);
+    QVERIFY(aatcs.mEditorDialog == NULL);
+
+    aatcs.newCollection();
+
+    QVERIFY(aatcs.mEditorDialog);
+    QVERIFY(aatcs.mEditorDialog->testAttribute(Qt::WA_DeleteOnClose));
+
+    // disconnect to check if connection was done 
+    bool result = disconnect(aatcs.mEditorDialog, SIGNAL(finished(HbAction*)),
+               &aatcs, SLOT(editorDialogFinished(HbAction*)));
+    QVERIFY (result);
+
+    aatcs.mEditorDialog->close();
+
+
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::AddAppsToCollectionState_editorDialogFinished()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+    HsMenuWorkerState parentState;
+    HsAddAppsToCollectionState aatcs(&parentState);
+    aatcs.mEditorDialog = new HsCollectionNameDialog();
+    
+    aatcs.editorDialogFinished(qobject_cast<HbAction *>(aatcs.mEditorDialog->actions().value(0)));
+    
+    QVERIFY(aatcs.mEditorDialog == NULL);
+
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::AddAppsToCollectionState_collectionSelected()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+    HsMenuWorkerState parentState;
+    HsAddAppsToCollectionState aatcs(&parentState);
+    QVERIFY(aatcs.mListDialog == NULL);
+
+    aatcs.selectCollection();
+
+    QVERIFY(aatcs.mListDialog);
+
+    QStandardItemModel *standardItemModel = aatcs.standardItemModel(0);
+    QModelIndex index(standardItemModel->indexFromItem(standardItemModel->item(3,0)));
+    QVERIFY(index.isValid());
+    aatcs.collectionSelected(index);
+    
+    QVERIFY(aatcs.mListDialog == NULL);
+    delete standardItemModel;
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::AddAppsToCollectionState_appsCheckListState()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+    HsAddAppsToCollectionState addAppsState;
+    connect(&addAppsState,SIGNAL(transitToFinalState()),
+        this,SLOT(testTransitToStateSlot()));
+    QCOMPARE((int)addAppsState.mAppsCheckList,NULL);
+    addAppsState.appsCheckListState();
+    QVERIFY(addAppsState.mAppsCheckList != NULL);
+    QCOMPARE(addAppsState.mAppsCheckList->mSortAttribute,
+        addAppsState.mApplicationsSortAttribute);
+    mTransitToStateEmited = false;
+    addAppsState.mAppsCheckList->mAppsSelectDialog->close();
+    QTest::qWait(150);
+    QCOMPARE(mTransitToStateEmited,true);
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::AddAppsToCollectionState_selectApplicationsDone()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+    HsAddAppsToCollectionState addAppsState;
+    connect(&addAppsState,SIGNAL(transitToSaveState(const QList<int>&)),
+        this,SLOT(testTransitToStateSlot()));
+    QList<int> appList;
+    appList.append(1222);
+    QCOMPARE(addAppsState.mActionType,
+        HsAddAppsToCollectionState::NoActionType);
+    mTransitToStateEmited = false;
+    addAppsState.selectApplicationsDone(appList);
+    QTest::qWait(100);
+    QCOMPARE(mTransitToStateEmited,true);
+    
+    addAppsState.mActionType =
+        HsAddAppsToCollectionState::ViaAllViewOptionMenuType;
+    disconnect(&addAppsState,SIGNAL(transitToFinalState()),
+            this,SLOT(testTransitToStateSlot()));
+    connect(&addAppsState,SIGNAL(transitToSelectCollectionState()),
+            this,SLOT(testTransitToStateSlot()));
+    mTransitToStateEmited = false;
+    addAppsState.selectApplicationsDone(appList);
+    QTest::qWait(100);
+    QCOMPARE(mTransitToStateEmited,true);
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::AppsCheckList_showAppsCheckboxList()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsAppsCheckList checkList;
+        Hs::HsSortAttribute sortOrder = Hs::NoHsSortAttribute;
+        mCommitEmited = false;
+        connect(&checkList,SIGNAL(commit(const QList<int>&)),
+                this,SLOT(testCommitSlot(const QList<int>&)));
+        checkList.showAppsCheckboxList(sortOrder);
+        QVERIFY(checkList.mModel != NULL);
+        QVERIFY(checkList.mActionConfirm != NULL);
+        QVERIFY(checkList.mListView != NULL);
+        QVERIFY(checkList.mAppsSelectDialog != NULL);
+        QCOMPARE(mCommitEmited,false);
+        checkList.mAppsSelectDialog->close();
+        QTest::qWait(100);
+        QCOMPARE((int)checkList.mAppsSelectDialog,NULL);
+        QCOMPARE(mCommitEmited,true);
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::testCommitSlot(const QList<int> &appList)
+{
+    if(appList.isEmpty()){
+        mCommitEmited = true;
+    } else {
+        mCommitEmited = false;
+    }
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::AppsCheckList_getItemsList()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        QStandardItemModel *standardModel = new QStandardItemModel(2,1);
+        QStandardItem *standardItem = new QStandardItem();
+        standardItem->setData(2, CaItemModel::IdRole);
+        standardItem->setData(QString("bbb"), Qt::DisplayRole);
+        QList<QStandardItem *> items;
+        items << standardItem;
+        standardModel->insertRow(0, items);
+        {
+            QStandardItem *standardItem = new QStandardItem();
+            standardItem->setData(3, CaItemModel::IdRole);
+            //standardItem->setData(QString("aaa"), Qt::DisplayRole);
+            QList<QVariant> text;
+            text << QString("aaa");
+            text << QString("ccc");
+            standardItem->setData(text, Qt::DisplayRole);
+
+            QList<QStandardItem *> items;
+            items << standardItem;
+            standardModel->insertRow(0, items);
+        }
+
+        QModelIndexList modelIndexList;
+        modelIndexList.append(standardModel->index(0,0));
+        modelIndexList.append(standardModel->index(1,0));
+
+        HsMenuWorkerState parentState;
+
+        HsAppsCheckList checkList;
+        QList<int> list = checkList.getSortedItemsList(modelIndexList);
+        QCOMPARE(list.count(), 2);
+        QCOMPARE(list[0], 3);
+        QCOMPARE(list[1], 2);
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::AppsCheckList_setSortOrder()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsAppsCheckList checkList;
+        QCOMPARE(checkList.mSortAttribute, Hs::AscendingNameHsSortAttribute);
+        checkList.setSortOrder(Hs::DescendingNameHsSortAttribute);
+        QCOMPARE(checkList.mSortAttribute, Hs::DescendingNameHsSortAttribute);
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::AppsCheckList_selectedItemsChanged()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsAppsCheckList checkList;
+        checkList.mModel =
+                HsMenuService::getAllApplicationsModel(Hs::NoHsSortAttribute);
+        checkList.constructControls();
+        QVERIFY(checkList.mActionConfirm != NULL);
+        QVERIFY(checkList.mListView != NULL);
+        QVERIFY(checkList.mAppsSelectDialog != NULL);
+        checkList.selectedItemsChanged();
+        QCOMPARE(checkList.mActionConfirm->isEnabled(),false);
+        QItemSelectionModel *model = checkList.mListView->selectionModel();
+        model->select(model->model()->index(0,0),QItemSelectionModel::Select);
+        QTest::qWait(100);
+        checkList.selectedItemsChanged();
+        QCOMPARE(checkList.mActionConfirm->isEnabled(),true);
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::testTransitToStateSlot()
+{
+    mTransitToStateEmited = true;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/src/t_hsaddtohomescreenstate.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,374 @@
+/*
+* 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:  Main test class for hsHomeScreenStatePlugin library.
+*
+*/
+
+
+#include "t_hsmenuworkerstateplugin.h"
+
+#include <hbmainwindow.h>
+#include <HbMessageBox>
+#include <HbAction>
+
+#include <QGraphicsItem>
+#include <qstatemachine.h>
+
+#include "hsmenuitemmodel.h"
+#include "hsmenuservice.h"
+#include "hscontentservice.h"
+#include "hsshortcutservice.h"
+#include "hsmenuworkerstate.h"
+#include "hsaddtohomescreenstate.h"
+#include "hsdialogcontroller.h"
+#include "hsapp_defs.h"
+#include "hspage.h"
+
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::AddToHomeScreenState_construction()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        QState *parent = new QState();
+
+        HsAddToHomeScreenState *as1 = new HsAddToHomeScreenState(parent);
+
+        HsAddToHomeScreenState *as2 = new HsAddToHomeScreenState(parent);
+
+        QString on1 = as1->objectName();
+        QString on2 = as2->objectName();
+        QVERIFY(on1 == on2);
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::AddToHomeScreenState_onEntry()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        const QString SHORTCUT_WIDGET_URI("hsshortcutwidgetplugin");
+
+        HsAddToHomeScreenState addToHomeScreenState;
+
+        QScopedPointer<HsMenuItemModel>
+            model(HsMenuService::getAllApplicationsModel(
+                  Hs::DescendingNameHsSortAttribute));
+        
+        const QString clockWidgetName("Clock");
+
+        int clockId = 0;
+        int appId = 0;
+        for (int i = 0; i< model->rowCount(); ++i) {
+            const QString textRole = model->data((model->index(i)),
+                                           CaItemModel::TextRole).toString();
+            const QString entryTypeName = model->data((model->index(i)),
+                                           CaItemModel::TypeRole).toString();
+            
+            if (entryTypeName == Hs::applicationTypeName) {
+                appId = model->data((model->index(i)), CaItemModel::IdRole).toInt();
+            }
+
+            if((entryTypeName == Hs::widgetTypeName) && (textRole == clockWidgetName)) {
+                clockId = model->data((model->index(i)),
+                        CaItemModel::IdRole).toInt();
+            }
+        }
+		QVERIFY(clockId != 0);
+        const QString clockWidgetUri("hsclockwidgetplugin");
+
+        QVariantMap eventAttributes;
+
+        eventAttributes.insert(Hs::widgetUriAttributeName,
+                               clockWidgetUri);
+
+        eventAttributes.insert(Hs::entryTypeNameKey, Hs::widgetTypeName);
+
+        eventAttributes.insert(Hs::itemIdKey, clockId);
+
+        HsMenuEvent *addWidgetEvent =
+            new HsMenuEvent(HsMenuEvent::AddToHomeScreen, eventAttributes);
+
+        addToHomeScreenState.onEntry(addWidgetEvent);
+
+        {
+            QCOMPARE(HsContentService::instance()->mParams["uri"].toString(), 
+                clockWidgetUri);
+        }
+
+        eventAttributes.remove(Hs::itemIdKey);
+        eventAttributes.insert(Hs::itemIdKey, appId);
+
+        HsMenuEvent *addShortcutEvent =
+            new HsMenuEvent(HsMenuEvent::AddToHomeScreen, eventAttributes);
+
+        addToHomeScreenState.onEntry(addShortcutEvent);
+
+        {
+            QCOMPARE(HsContentService::instance()->mParams["uri"].toString(), 
+                SHORTCUT_WIDGET_URI);
+        }
+
+        delete addWidgetEvent;
+        delete addShortcutEvent;
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::AddToHomeScreenState_onEntry_2()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+    const QString SHORTCUT_WIDGET_URI("hsshortcutwidgetplugin");
+
+     HsAddToHomeScreenState addToHomeScreenState;
+
+     QScopedPointer<HsMenuItemModel>
+         model(HsMenuService::getAllApplicationsModel(
+               Hs::DescendingNameHsSortAttribute));
+
+     const QString clockWidgetUri("homescreen.nokia.com/widget/clock");
+     
+     CaEntry item( ItemEntryRole );
+     item.setText( "TestTemplateAppWithUri" );
+     item.setEntryTypeName(Hs::templatedApplicationTypeName);
+     item.setAttribute(Hs::widgetUriAttributeName, clockWidgetUri);
+     QSharedPointer<CaEntry> newItem = CaService::instance()->createEntry( item );
+     QVERIFY(!newItem.isNull());
+     QVERIFY(newItem->id());
+     
+     QVariantMap eventAttributes;
+     eventAttributes.insert(Hs::entryTypeNameKey, Hs::templatedApplicationTypeName);
+     eventAttributes.insert(Hs::itemIdKey, newItem->id());
+     eventAttributes.insert(Hs::widgetUriAttributeName, clockWidgetUri);
+
+     HsMenuEvent *addWidgetEvent =
+         new HsMenuEvent(HsMenuEvent::AddToHomeScreen, eventAttributes);
+
+     addToHomeScreenState.onEntry(addWidgetEvent);
+     
+     {
+         QCOMPARE(HsContentService::instance()->mParams["uri"].toString(), clockWidgetUri);
+     }
+     
+     QVERIFY(CaService::instance()->removeEntry(newItem->id()));
+
+     delete addWidgetEvent;
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::AddToHomeScreenState_onEntry_3()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+    const QString SHORTCUT_WIDGET_URI("hsshortcutwidgetplugin");
+
+     HsAddToHomeScreenState addToHomeScreenState;
+
+     QScopedPointer<HsMenuItemModel>
+         model(HsMenuService::getAllApplicationsModel(
+               Hs::DescendingNameHsSortAttribute));
+
+     const QString clockWidgetName("Clock");
+
+     int clockId = 0;
+
+     for (int i = 0; i< model->rowCount(); ++i) {
+         const QString textRole = model->data((model->index(i)),
+                                        CaItemModel::TextRole).toString();
+
+         if(textRole == clockWidgetName) {
+             clockId = model->data((model->index(i)),
+                     CaItemModel::IdRole).toInt();
+         }
+     }
+  
+     CaEntry item( ItemEntryRole );
+     item.setText( "TestTemplateAppWithoutUri" );
+     item.setEntryTypeName(Hs::templatedApplicationTypeName);
+     QSharedPointer<CaEntry> newItem = CaService::instance()->createEntry( item );
+     QVERIFY(newItem->id());
+     
+
+     QVariantMap eventAttributes;
+     eventAttributes.insert(Hs::entryTypeNameKey, Hs::templatedApplicationTypeName);
+     eventAttributes.insert(Hs::itemIdKey, newItem->id());
+
+     HsMenuEvent *addWidgetEvent =
+         new HsMenuEvent(HsMenuEvent::AddToHomeScreen, eventAttributes);
+
+     addToHomeScreenState.onEntry(addWidgetEvent);
+     
+     QVERIFY(CaService::instance()->removeEntry(newItem->id()));
+
+     delete addWidgetEvent;
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::AddToHomeScreenState_onEntry_4()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+    const QString SHORTCUT_WIDGET_URI("hsshortcutwidgetplugin");
+
+     HsAddToHomeScreenState addToHomeScreenState;
+
+     QScopedPointer<HsMenuItemModel>
+         model(HsMenuService::getAllApplicationsModel(
+               Hs::DescendingNameHsSortAttribute));
+
+     const QString clockWidgetUri("homescreen.nokia.com/widget/clock");
+     
+     CaEntry item( ItemEntryRole );
+     item.setText( "TestParametrizedTemplateAppWithUri" );
+     item.setEntryTypeName(Hs::templatedApplicationTypeName);
+     item.setAttribute(Hs::widgetUriAttributeName, clockWidgetUri);
+     // add widget param atrib to entry
+     item.setAttribute(QString(Hs::widgetParam+QString("caEntryId")), QString("12"));
+     QSharedPointer<CaEntry> newItem = CaService::instance()->createEntry( item );
+     QVERIFY(!newItem.isNull());
+     QVERIFY(newItem->id());
+     
+     QVariantMap eventAttributes;
+     eventAttributes.insert(Hs::entryTypeNameKey, Hs::templatedApplicationTypeName);
+     eventAttributes.insert(Hs::itemIdKey, newItem->id());
+     eventAttributes.insert(Hs::widgetUriAttributeName, clockWidgetUri);
+
+     QVariantMap widgetParams;
+     widgetParams.insert(QString(Hs::widgetParam+QString("mcsId")), QString("12"));
+     eventAttributes.insert(Hs::widgetParam,widgetParams);
+
+     HsMenuEvent *addWidgetEvent =
+         new HsMenuEvent(HsMenuEvent::AddToHomeScreen, eventAttributes);
+
+     addToHomeScreenState.onEntry(addWidgetEvent);
+     
+     {
+         QCOMPARE(HsContentService::instance()->mParams["uri"].toString(), 
+             clockWidgetUri);
+     }
+     
+     QVERIFY(CaService::instance()->removeEntry(newItem->id()));
+
+     delete addWidgetEvent;
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+
+void MenuStatesTest::AddToHomeScreenState_showMessageWidgetCorrupted()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        QScopedPointer<HsAddToHomeScreenState> as(new HsAddToHomeScreenState());
+
+        as->showMessageWidgetCorrupted();
+        checkDialogController();
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+void MenuStatesTest::AddToHomeScreenState_openHomeScreen()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        QScopedPointer<HsAddToHomeScreenState> as(new HsAddToHomeScreenState());
+        QSignalSpy spy(as.data(), SIGNAL(exit()));
+        as->openHomeScreen();
+        QCOMPARE(spy.count(), 1);
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/src/t_hsarrangestate.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,211 @@
+/*
+* 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:  Main test class for hsHomeScreenStatePlugin library.
+*
+*/
+
+#include <QStateMachine>
+#include <hblistwidget.h>
+#include <qabstractitemmodel.h>
+#include <hblabel.h>
+#include <hbdialog.h>
+#include <HbAction>
+
+#include "t_hsmenuworkerstateplugin.h"
+#include "hsmenuworkerstate.h"
+#include "hsarrangestate.h"
+#include "hsmenuitemmodel.h"
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::ArrangeState_FulfillEntriesList()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsMenuWorkerState parentState;
+
+        HsArrangeState arrangeState(&parentState);
+        QString s1 = arrangeState.objectName();
+        QVERIFY(s1 == tr("homescreen.nokia.com/state/arrangestate"));
+
+        arrangeState.mEntriesList = new HbListWidget();
+        arrangeState.mItemModel = HsMenuService::getAllCollectionsModel();
+
+        arrangeState.mTopItemId = arrangeState.mItemModel->index(
+                                      arrangeState.mItemModel->rowCount() / 2).data(
+                                      CaItemModel::IdRole).toInt();
+        arrangeState.fulfillEntriesList(*arrangeState.mEntriesList);
+
+        QVERIFY(arrangeState.mEntriesList->count() > 0);
+        QVERIFY(arrangeState.mItemModel->rowCount() > 0);
+
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::ArrangeState_Save()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsMenuWorkerState parentState;
+
+        HsArrangeState arrangeState(&parentState);
+        QString s1 = arrangeState.objectName();
+        QVERIFY(s1 == tr("homescreen.nokia.com/state/arrangestate"));
+
+        arrangeState.mEntriesList = new HbListWidget();
+        arrangeState.mItemModel = HsMenuService::getAllCollectionsModel();
+
+        arrangeState.mTopItemId = arrangeState.mItemModel->index(
+                                      arrangeState.mItemModel->rowCount() / 2).data(
+                                      CaItemModel::IdRole).toInt();
+        arrangeState.fulfillEntriesList(*arrangeState.mEntriesList);
+
+        QVERIFY(arrangeState.mEntriesList->count() > 0);
+        QVERIFY(arrangeState.mTopModelIndex != QModelIndex());
+        QVERIFY(arrangeState.mItemModel->rowCount() > 0);
+
+        // arrange items
+        HbListWidgetItem *itemFirst = arrangeState.mEntriesList->takeItem(0);
+        HbListWidgetItem *itemLast = arrangeState.mEntriesList->takeItem(
+                                         arrangeState.mEntriesList->count()-1);
+
+        arrangeState.mEntriesList->insertItem(0, itemLast);
+        arrangeState.mEntriesList->addItem(itemFirst);
+        HbLabel *label = new HbLabel(QString("arrange"));
+        arrangeState.mDialog = new HbDialog();
+        arrangeState.mDialog->setHeadingWidget(label);
+        arrangeState.mDialog->setContentWidget(arrangeState.mEntriesList);
+        arrangeState.save(*arrangeState.mEntriesList);
+
+        QVERIFY(arrangeState.mCollItemIdList != arrangeState.mArrangedCollItemIdList);
+        QCOMPARE(arrangeState.mCollItemIdList.at(0),
+                 arrangeState.mArrangedCollItemIdList.at(arrangeState.mArrangedCollItemIdList.count()-1));
+        QCOMPARE(arrangeState.mCollItemIdList.at(arrangeState.mCollItemIdList.count()-1),
+                 arrangeState.mArrangedCollItemIdList.at(0));
+
+        arrangeState.stateExited();
+
+        QVERIFY(!arrangeState.mCollItemIdList.count());
+        QVERIFY(!arrangeState.mArrangedCollItemIdList.count());
+
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::ArrangeState_onEntry()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsMenuWorkerState parentState;
+        HsArrangeState arrangeState (&parentState);
+
+        QVariantMap params;
+        params.insert(Hs::itemIdKey, 1);
+        QScopedPointer<HsMenuEvent> event (new HsMenuEvent(HsMenuEvent::ArrangeCollection, params));
+
+        arrangeState.onEntry(event.data());
+
+        QVERIFY(arrangeState.mEntriesList);
+        QVERIFY(arrangeState.mDialog);
+        QVERIFY(arrangeState.mEntriesList->arrangeMode());
+
+        QVERIFY(arrangeState.mDialog);
+        QVERIFY(arrangeState.mDialog->testAttribute(Qt::WA_DeleteOnClose));
+
+        // disconnect to check if connection was done
+        bool result = disconnect(arrangeState.mDialog, SIGNAL(finished(HbAction*)),
+                   &arrangeState, SLOT(arrangeDialogFinished(HbAction*)));
+        QVERIFY(result);
+
+        arrangeState.mDialog->close();
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::ArrangeState_arrangeDialogFinished()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsMenuWorkerState parentState;
+
+        HsArrangeState arrangeState(&parentState);
+        QString s1 = arrangeState.objectName();
+        QVERIFY(s1 == tr("homescreen.nokia.com/state/arrangestate"));
+
+
+        arrangeState.mEntriesList = new HbListWidget();
+        arrangeState.mItemModel = HsMenuService::getAllCollectionsModel();
+        arrangeState.mTopItemId = arrangeState.mItemModel->index(
+                                      arrangeState.mItemModel->rowCount() / 2).data(
+                                      CaItemModel::IdRole).toInt();
+        arrangeState.fulfillEntriesList(*arrangeState.mEntriesList);
+
+        arrangeState.mDialog = new HbDialog();
+        arrangeState.mDialog->clearActions();
+        HbAction *action  = new HbAction("Primary", arrangeState.mDialog);
+        arrangeState.mDialog->addAction(action);
+
+        arrangeState.arrangeDialogFinished(action);
+
+        QVERIFY(arrangeState.mEntriesList->arrangeMode() == false);
+
+        arrangeState.stateExited();
+        QVERIFY(arrangeState.mDialog == NULL);
+
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/src/t_hscollectionnamedialog.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,166 @@
+/*
+* 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:  Main test class for hsHomeScreenStatePlugin library.
+*
+*/
+
+
+#include <hblineedit.h>
+#include <hbaction.h>
+
+#include "hscollectionnamedialog.h"
+#include "t_hsmenuworkerstateplugin.h"
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::HsCollectionNameDialog_ConstructWithNoParams()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        int collCount = 0;
+
+        {
+            HsCollectionNameDialog dialog;
+            QCOMPARE(dialog.inputMode(), HbInputDialog::TextInput);
+            QCOMPARE(dialog.promptText(), hbTrId("txt_applib_title_collection_name"));
+            QCOMPARE(dialog.lineEdit()->maxLength(), 248);
+            QCOMPARE(dialog.value().toString(), hbTrId("txt_applib_dialog_entry_collection"));
+            collCount = dialog.mOtherCollectionsNames.count();
+        }
+
+        {
+
+            const int id = HsMenuService::createCollection(QString("TestConstruct"));
+
+            QTest::qWait(3000);
+
+            HsCollectionNameDialog dialog;
+
+            QCOMPARE(dialog.mOtherCollectionsNames.count(), collCount + 1);
+
+            HsMenuService::removeCollection(id);
+
+            QTest::qWait(3000);
+
+        }
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+void MenuStatesTest::HsCollectionNameDialog_ConstructWithId()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        int id = HsMenuService::createCollection(QString("TestConstruct"));
+
+        QTest::qWait(3000);
+
+        HsCollectionNameDialog dialogItem(id);
+        QCOMPARE(dialogItem.value().toString(), HsMenuService::getName(id));
+        QCOMPARE(dialogItem.uniqueCollectionName(), dialogItem.value().toString());
+        HsMenuService::removeCollection(id);
+
+        QTest::qWait(3000);
+
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::HsCollectionNameDialog_uniqueCollectionName()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        QString testNewName(QString("TestNewName") +
+                            QDateTime::currentDateTime().toString("ddmmyyyy_hh_mm_ss_zzz"));
+
+        int id = HsMenuService::createCollection(testNewName);
+
+        QString otherTestName(QString("OtherTestName") +
+                            QDateTime::currentDateTime().toString("ddmmyyyy_hh_mm_ss_zzz"));
+
+        int otherId = HsMenuService::createCollection(otherTestName);
+
+        QTest::qWait(3000);
+
+        HsCollectionNameDialog dialog(id);
+        
+        QCOMPARE(dialog.uniqueCollectionName(), testNewName);
+
+        dialog.setValue(otherTestName);
+
+        QCOMPARE(dialog.uniqueCollectionName().contains("1"), QBool(true) );
+
+        HsMenuService::removeCollection(id);
+        HsMenuService::removeCollection(otherId);
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::HsCollectionNameDialog_closeEvent()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+        {
+        mFinishedEmited = false;
+        HsCollectionNameDialog *dlg = new HsCollectionNameDialog();
+        dlg->open(this, SLOT(testSlot(HbAction*)));
+        
+        QVERIFY(dlg->testAttribute(Qt::WA_DeleteOnClose));
+        
+        dlg->close();
+        
+        QVERIFY(mFinishedEmited);
+
+        }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/src/t_hscollectionnamestate.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,124 @@
+/*
+* 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:  Main test class for hsHomeScreenStatePlugin library.
+*
+*/
+
+#include <hbaction>
+#include "hscollectionnamedialog.h"
+#include "hscollectionnamestate.h"
+
+#include "hsmenuevent.h"
+#include "t_hsmenuworkerstateplugin.h"
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::CollectionNameState_construction1()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        QState parentState1;
+        parentState1.setObjectName(tr("testName1"));
+
+        HsCollectionNameState rename1(&parentState1);
+        QString s1 = rename1.objectName();
+        QVERIFY(s1 == tr("testName1/collectionnamestate"));
+
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::CollectionNameState_onEntry()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        QState parentState1;
+        HsCollectionNameState rename1(&parentState1);
+
+        // prepare input event
+        QVariantMap params;
+        params.insert(Hs::itemIdKey, 1000);
+        QScopedPointer<QEvent> event (new HsMenuEvent(
+                    HsMenuEvent::RenameCollection, params));
+
+        rename1.onEntry(event.data());
+
+        QVERIFY(rename1.mCollectionNameDialog);
+        QVERIFY(rename1.mCollectionNameDialog->testAttribute(Qt::WA_DeleteOnClose));
+
+        // disconnect to check if connection was done
+        bool result = disconnect(rename1.mCollectionNameDialog, SIGNAL(finished(HbAction*)),
+                   &rename1, SLOT(dialogFinished(HbAction*)));
+        QVERIFY (result);
+
+        rename1.mCollectionNameDialog->close();
+
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::CollectionNameState_dialogFinished()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        QState parentState1;
+        parentState1.setObjectName(tr("testName1"));
+
+        HsCollectionNameState rename1(&parentState1);
+        QString s1 = rename1.objectName();
+        QVERIFY(s1 == tr("testName1/collectionnamestate"));
+
+
+        rename1.mCollectionNameDialog = new HsCollectionNameDialog();
+        rename1.dialogFinished(qobject_cast<HbAction*>(rename1.mCollectionNameDialog->actions().value(1)));
+
+        QVERIFY(rename1.mCollectionNameDialog == NULL);
+
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/src/t_hscontentservice.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,38 @@
+/*
+* 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 "t_hscontentservice.h"
+
+HsContentService::HsContentService(QObject *parent): QObject(parent) {}
+
+HsContentService::~HsContentService() {}
+
+HsContentService *HsContentService::instance() {
+    static HsContentService service;
+    return &service;
+}
+bool HsContentService::createWidget(const QVariantHash &params)
+{
+    mParams = params;
+    return true;
+}
+
+HsWidgetHost *HsContentService::createWidgetForPreview(const QVariantHash &params)
+{
+    Q_UNUSED(params);
+    return 0;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/src/t_hsdeletecollectionitemstate.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,98 @@
+/*
+* 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:  Main test class for hsHomeScreenStatePlugin library.
+*
+*/
+
+#include <QAction>
+#include <HbMainWindow>
+#include<hbmessagebox.h>
+#include<hbaction.h>
+
+#include "hsdeletecollectionitemstate.h"
+#include "t_hsmenuworkerstateplugin.h"
+#include "hscontentservice.h"
+#include "hsshortcutservice.h"
+#include "hsmenuevent.h"
+#include "hsmenuitemmodel.h"
+#include "hsdialogcontroller.h"
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::DeleteCollectionItemState_construction()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        QState parentState1;
+        parentState1.setObjectName(tr("testName1"));
+
+        HsDeleteCollectionItemState del1(&parentState1);
+        QString s1 = del1.objectName();
+        QVERIFY(s1 == tr("testName1/DeleteCollectionItemState"));
+
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+
+
+void MenuStatesTest::DeleteCollectionItemState_onEntry()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        QState parentState3;
+        parentState3.setObjectName(tr("testName3"));
+        HsDeleteCollectionItemState del3(&parentState3);
+
+        int SomeAppId = 14; ////app to delete //esheel
+        int dummyCollectionID = 123456789;
+        QVariantMap params;
+        params.insert(Hs::itemIdKey, SomeAppId);
+        params.insert(Hs::collectionIdKey, dummyCollectionID);
+
+        QEvent *e = new HsMenuEvent(HsMenuEvent::RemoveAppFromCollection, params);
+        
+        QString s3 = del3.objectName();
+        QCOMPARE(s3, tr("testName3/DeleteCollectionItemState"));
+        
+        del3.onEntry( e );
+        
+        QCOMPARE(del3.mItemId, SomeAppId);
+        QCOMPARE(del3.mCollectionId , dummyCollectionID);
+
+        checkDialogController();
+        
+        del3.cleanUp();
+        
+        QCOMPARE(del3.mItemId, 0);
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/src/t_hsdeletecollectionstate.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,122 @@
+/*
+* 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:  Main test class for hsHomeScreenStatePlugin library.
+*
+*/
+
+#include<qscopedpointer.h>
+#include<hbmessagebox.h>
+#include<hbaction.h>
+#include <HbParameterLengthLimiter>
+
+#include "hsdeletecollectionstate.h"
+#include "t_hsmenuworkerstateplugin.h"
+#include "hscontentservice.h"
+#include "hsshortcutservice.h"
+#include "hsmenuevent.h"
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::DeleteCollectionState_construction1()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        QState parentState1;
+        parentState1.setObjectName(tr("testName1"));
+
+        HsDeleteCollectionState del1(&parentState1);
+        QString s1 = del1.objectName();
+        QVERIFY(s1 == tr("testName1/DeleteCollectionState"));
+
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+
+void MenuStatesTest::DeleteCollectionState_onEntry()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        QState parentState;
+        HsDeleteCollectionState del(&parentState);
+
+        //test event
+        QVariantMap params;
+        const int testId = 1000;
+        params.insert(Hs::itemIdKey, testId);
+        QScopedPointer<HsMenuEvent> event(new HsMenuEvent(HsMenuEvent::DeleteCollection, params));
+
+        del.onEntry(event.data());
+        checkDialogController();
+
+        QCOMPARE(del.mItemId, testId);
+
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+void MenuStatesTest::DeleteCollectionState_deleteCollection()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        QScopedPointer<QStateMachine> machine(new QStateMachine(0));
+
+        QState parentState;
+        parentState.setObjectName(tr("testName"));
+        HsDeleteCollectionState del(&parentState);
+
+        machine->addState(&del);
+        machine->setInitialState(&del);
+
+        machine->start();
+
+        const int newCollId = HsMenuService::createCollection("DeleteColl_test");
+
+        del.mItemId = newCollId;
+
+        del.deleteCollection();
+
+        const QString nonExistingCollName = HsMenuService::getName(newCollId);
+
+        QCOMPARE(nonExistingCollName, QString());
+        machine->stop();
+
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/src/t_hsinstallationlogstate.cpp	Mon Oct 04 00:07:25 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:  Main test class for hsHomeScreenStatePlugin library.
+*
+*/
+
+#include<qscopedpointer.h>
+#include<hbmessagebox.h>
+#include<hbaction.h>
+#include <HbParameterLengthLimiter>
+#include <HbLabel>
+
+#include "hsinstallationlogstate.h"
+#include "t_hsmenuworkerstateplugin.h"
+#include "hscontentservice.h"
+#include "hsshortcutservice.h"
+#include "hsmenuevent.h"
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::HsInstallationLogState_construction()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        QState parentState1;
+        parentState1.setObjectName(tr("testName1"));
+
+        HsInstallationLogState logState(&parentState1);
+        QString s1 = logState.objectName();
+        QVERIFY(s1 == tr("testName1/InstallationLogState"));
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+
+void MenuStatesTest::HsInstallationLogState_onEntry()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+    QState parentState;
+    HsInstallationLogState logState(&parentState);
+
+    //test event
+    QScopedPointer<HsMenuEvent> event(new HsMenuEvent(HsMenuEvent::ShowInstallationLog));
+
+    logState.onEntry(event.data());
+
+    checkDialogController();
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/src/t_hsmenustates.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,153 @@
+/*
+* 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:  Main test class for hsHomeScreenStatePlugin library.
+*
+*/
+
+#include <QStateMachine>
+
+#include <HbDialog>
+#include <HbMainWindow>
+#include <hbmainwindow.h>
+
+#include "t_hsmenuworkerstateplugin.h"
+
+#include "hsaddtohomescreenstate.h"
+#include "hsshortcutservice.h"
+#include "hsdialogcontroller.h"
+
+void MenuStatesTest::initTestCase()
+{
+#ifdef Q_OS_SYMBIAN
+    startThread();
+    QDir::setCurrent("C:/");
+#endif //Q_OS_SYMBIAN
+    mStateMachine = new QStateMachine;
+    mShortcutService = QSharedPointer<HsShortcutService>
+                       (HsShortcutService::instance(mStateMachine/*,0*/));
+    mWindow = new HbMainWindow();
+}
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::cleanupTestCase()
+{
+#ifdef Q_OS_SYMBIAN
+    stopThread();
+#endif //Q_OS_SYMBIAN
+    delete mStateMachine;
+    delete mWindow;
+    mWindow = NULL;
+}
+
+void MenuStatesTest::cleanup()
+{
+    qApp->processEvents();
+}
+
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+int threadFunction(void *params)
+{
+    Q_UNUSED(params);
+#ifdef Q_OS_SYMBIAN
+    while (ETrue) {
+        User::ResetInactivityTime();//it should help for Viewserver11 panic
+        User::After(5000000);
+    }
+#endif //Q_OS_SYMBIAN
+    return 0;
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::startThread()
+{
+#ifdef Q_OS_SYMBIAN
+    User::LeaveIfError(iThread.Create(
+                           _L("thread_kill_viewsrv11"),
+                           threadFunction,
+                           16384,
+                           4000,
+                           4000,
+                           NULL));
+    iThread.Resume();
+#endif //Q_OS_SYMBIAN
+}
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::stopThread()
+{
+#ifdef Q_OS_SYMBIAN
+    iThread.Close();
+    QTest::qWait(3000);
+#endif //Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::testSlot(HbAction* finished)
+{
+    Q_UNUSED(finished)
+    mFinishedEmited = true;
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+int MenuStatesTest::testExitSlot()
+{
+    mFinishedEmited = true;
+    return 0;
+}
+
+void MenuStatesTest::checkDialogController()
+{
+
+    QGraphicsScene *scene = mWindow->scene();
+    QGraphicsItem *focusItem = scene->focusItem();
+    QPointer<HbDialog> dialog =
+        qobject_cast<HbDialog*>(focusItem->toGraphicsObject());
+
+    QVERIFY(!dialog.isNull());
+
+    QPointer<HsDialogController> controller(NULL);
+
+    foreach (QObject* obj, dialog->children())
+    {
+        controller = qobject_cast<HsDialogController*>(obj);
+
+        if (!controller.isNull())
+        {
+            break;
+        }
+    }
+
+    QVERIFY(!controller.isNull());
+
+    QSignalSpy spy(controller.data(), SIGNAL(dialogCompleted()));
+    controller->dismissDialog();
+
+    QTest::qWait(1000);
+
+    QVERIFY(dialog.isNull());
+    QVERIFY(controller.isNull());
+    QCOMPARE(spy.count(), 1);
+}
+
+QTEST_MAIN(MenuStatesTest)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/src/t_hsmenuworkerstate.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,60 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Main test class for hsHomeScreenStateProvider library.
+*
+*/
+
+#include "t_hsmenuworkerstateplugin.h"
+
+#include "hsaddtohomescreenstate.h"
+
+#include "hsmenuworkerstate.h"
+#include "hsmenuevent.h"
+#include "hsmenueventfactory.h"
+#include "hsmenueventtransition.h"
+
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::MenuWorkerState_construction()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsMenuWorkerState workerStateS;
+        QVERIFY(workerStateS.parent() == 0);
+        QVERIFY(workerStateS.objectName() == "homescreen.nokia.com/state/MenuWorkerState");
+
+        HsMenuWorkerState *workerStateH0 = new HsMenuWorkerState();
+        QVERIFY(workerStateH0->parent() == 0);
+        QVERIFY(workerStateH0->objectName() == "homescreen.nokia.com/state/MenuWorkerState");
+
+        HsMenuWorkerState *workerStateH1 = new HsMenuWorkerState(workerStateH0);
+        QVERIFY(workerStateH1->parent() == workerStateH0);
+
+
+        delete workerStateH1;
+        delete workerStateH0;
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/src/t_hspreviewhswidgetstate.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,209 @@
+/*
+* 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:  Main test class for hsHomeScreenStatePlugin library.
+*
+*/
+
+
+#include "t_hsmenuworkerstateplugin.h"
+
+#include <QStateMachine>
+#include <HbMainwindow>
+#include <HbDialog>
+#include <HbAction>
+#include <HbLabel>
+#include <HbWidget>
+#include <HbScrollarea>
+#include <HbMessageBox>
+
+#include <hsmenueventfactory.h>
+#include <hsconfiguration.h>
+#include "hscontentservice.h"
+#include "hsshortcutservice.h"
+#include "hsmenuworkerstate.h"
+#include "hspreviewhswidgetstate.h"
+#include "hsapp_defs.h"
+#include "hspage.h"
+#include "hsscene.h"
+#include "HsWidgetHost.h"
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::HsPreviewHSWidgetState_construction()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        QState *parent = new QState();
+
+        HsPreviewHSWidgetState *as1 = new HsPreviewHSWidgetState(parent);
+
+        HsPreviewHSWidgetState *as2 = new HsPreviewHSWidgetState(parent);
+
+        QString on1 = as1->objectName();
+        QString on2 = as2->objectName();
+        QVERIFY(on1 == on2);
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::HsPreviewHSWidgetState_showMessageWidgetCorrupted()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        QState *parent = new QState();
+        HsPreviewHSWidgetState *as1 = new HsPreviewHSWidgetState(parent);
+        as1->showMessageWidgetCorrupted();
+        checkDialogController();
+
+        delete parent;
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::HsPreviewHSWidgetState_onEntry()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        QState *parent = new QState();
+        HsPreviewHSWidgetState *as1 = new HsPreviewHSWidgetState(parent);
+
+        QVariantMap params;
+        params.insert(Hs::itemIdKey, 2);
+        params.insert(
+            Hs::widgetUriAttributeName,
+            QString("test_uri"));
+        params.insert(
+            Hs::widgetLibraryAttributeName,
+            QString("test_library"));
+        params.insert(Hs::entryTypeNameKey, Hs::widgetTypeName);
+
+        QScopedPointer<QEvent> event (new HsMenuEvent(
+                    HsMenuEvent::PreviewHSWidget, params));
+
+        mFinishedEmited = false; //test slot
+
+        as1->onEntry(event.data());
+
+        QCOMPARE(params.value(Hs::itemIdKey).toInt(), as1->mEntryId);
+
+        checkDialogController();
+
+        delete as1;
+        delete parent;
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::HsPreviewHSWidgetState_buildPreviewDialog()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsPreviewHSWidgetState previewWidgetState;
+
+        CaEntry entry;
+        entry.setText("entry text");
+
+        QScopedPointer<HbDialog> previewDialog(
+            previewWidgetState.buildPreviewDialog(entry));
+
+        QVERIFY(previewDialog != NULL);
+        QVERIFY(previewDialog->actions()[0]->parent() == previewDialog.data());
+        QVERIFY(previewDialog->actions()[1]->parent() == previewDialog.data());
+
+        QVERIFY(previewDialog->testAttribute(Qt::WA_DeleteOnClose));
+        HbLabel *const headingLabel(qobject_cast<HbLabel*>(
+            previewDialog->headingWidget()));
+        QCOMPARE(headingLabel->plainText(), entry.text());
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::HsPreviewHSWidgetState_addToHomeScreen()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        QState *parent = new QState();
+        HsConfiguration::setInstance(new HsConfiguration);
+        HsPreviewHSWidgetState *as1 = new HsPreviewHSWidgetState(parent);
+
+        QScopedPointer<HsPage> page(new HsPage);
+        HsScene::instance()->addPage(page.data());
+        page.take();
+        HsScene::instance()->load();
+
+        as1->addToHomeScreen();
+
+        QCOMPARE(HsContentService::instance()->mParams.size(), 2);
+        QCOMPARE(HsContentService::instance()->mParams[Hs::uri], QVariant(QString()));
+        QVERIFY(HsContentService::instance()->mParams[Hs::homescreenData].isNull());
+        delete as1;
+        delete parent;
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/src/t_hsshortcutservice.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,40 @@
+/*
+* 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 "t_hsshortcutservice.h"
+
+HsShortcutService::~HsShortcutService()
+{
+}
+
+QSharedPointer<HsShortcutService>
+HsShortcutService::instance(QStateMachine *machine)
+{
+    return QSharedPointer<HsShortcutService >(new HsShortcutService(machine));
+}
+
+void HsShortcutService::executeCollectionAction(int, QString)
+{
+}
+
+bool HsShortcutService::isItemShortcutWidget(int)
+{
+    return false;
+}
+
+HsShortcutService::HsShortcutService(QStateMachine *, QObject *)
+{
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/src/t_hsuinstallfailedstate.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,84 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Main test class for hsHomeScreenStatePlugin library.
+*
+*/
+
+#include<hbmessagebox.h>
+#include<hbaction.h>
+
+#include "hsuinstallfailedstate.h"
+#include "t_hsmenuworkerstateplugin.h"
+#include "hscontentservice.h"
+#include "hsmenueventfactory.h"
+#include "hsmenuevent.h"
+#include "hsmenuitemmodel.h"
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::HsUninstallFailedState_construction()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        QState parentState1;
+        parentState1.setObjectName(tr("testName1"));
+
+        HsUninstallFailedState uni1(&parentState1);
+        QString s1 = uni1.objectName();
+        QVERIFY(s1 == tr("testName1/HsUninstallFailedState"));
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::HsUninstallFailedState_onEntry()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+    QState parentState;
+    HsUninstallFailedState failedState(&parentState);
+    
+    int fakeError = 3;
+    QVariantMap params;
+    params.insert(Hs::uninstallError, fakeError);
+
+    //test event
+    QScopedPointer<HsMenuEvent> event(new HsMenuEvent(HsMenuEvent::UninstallationFailed, params));
+
+    failedState.onEntry(event.data());
+
+    checkDialogController();
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/src/t_hsuninstallitemstate.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,170 @@
+/*
+* 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:  Main test class for hsHomeScreenStatePlugin library.
+*
+*/
+
+#include<hbmessagebox.h>
+#include<hbaction.h>
+
+#ifdef Q_OS_SYMBIAN
+#include <usif/sif/sif.h>
+#include <usif/scr/scr.h>
+#endif//Q_OS_SYMBIAN
+
+#include "hsuninstallitemstate.h"
+#include "t_hsmenuworkerstateplugin.h"
+#include "hscontentservice.h"
+#include "hsshortcutservice.h"
+#include "hsmenueventfactory.h"
+#include "hsmenuevent.h"
+#include "hsmenuitemmodel.h"
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::HsUninstallItemState_construction()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        QState parentState1;
+        parentState1.setObjectName(tr("testName1"));
+
+        HsUninstallItemState uni1(&parentState1);
+        QString s1 = uni1.objectName();
+        QVERIFY(s1 == tr("testName1/UninstallItemState"));
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+
+void MenuStatesTest::HsUninstallItemState_onEntry()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        QState parentState3;
+        parentState3.setObjectName(tr("testName3"));
+        HsUninstallItemState uni3(&parentState3);
+
+        int SomeAppId = 14; ////app to uninst
+
+        QVariantMap params;
+        params.insert(Hs::itemIdKey, SomeAppId);
+
+        QEvent *e = new HsMenuEvent(HsMenuEvent::UninstallApplication, params);
+
+        QString s3 = uni3.objectName();
+        QCOMPARE(s3, tr("testName3/UninstallItemState"));
+
+        uni3.onEntry( e );
+        checkDialogController();
+
+        QCOMPARE(uni3.mEntry->id(), SomeAppId);
+
+        uni3.cleanUp();
+
+        QVERIFY(uni3.mEntry.isNull());
+
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+#ifdef Q_OS_SYMBIAN
+void MenuStatesTest::HsUninstallItemState_getApplicationsNames()
+{
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+    {
+
+        static const char javaUid[] = "270437153";   //in DS_Snow
+
+        Usif::RSoftwareInstall sif;
+        CleanupClosePushL( sif );
+        User::LeaveIfError( sif.Connect() );
+
+        // Install the component
+        _LIT16( KDsSnowJadPath, "c:\\testing\\data\\t_hsmenuworkerstateplugin\\installs\\DS_Snow.jad" );
+        Usif::COpaqueNamedParams* arguments = NULL;
+        Usif::COpaqueNamedParams* results = NULL;
+        arguments = Usif::COpaqueNamedParams::NewLC();
+        results = Usif::COpaqueNamedParams::NewLC();
+        arguments->AddIntL( Usif::KSifInParam_InstallSilently, 1 );
+        TRequestStatus status;
+        sif.Install( KDsSnowJadPath, *arguments, *results, status, EFalse );
+        User::WaitForRequest( status );
+        User::LeaveIfError( status.Int() );
+
+        CleanupStack::PopAndDestroy( results );
+        CleanupStack::PopAndDestroy( arguments );
+
+        // Disconnect from the SIF server
+        CleanupStack::PopAndDestroy( &sif );
+
+
+        QSharedPointer<CaService> service = CaService::instance();
+        CaQuery query;
+        query.setAttribute(Hs::applicationUidEntryKey, javaUid);
+        QList< QSharedPointer<CaEntry> > entries = service->getEntries(query);
+        QCOMPARE(entries.length(), 1);
+        QSharedPointer<CaEntry> entry = entries[0];
+
+        HsUninstallItemState state;
+
+        QVariantMap params;
+        params.insert(Hs::itemIdKey, entry->id());
+
+        QEvent *e = new HsMenuEvent(HsMenuEvent::UninstallApplication, params);
+        state.onEntry( e );
+
+        QCOMPARE(state.mEntry->id(), entry->id());
+
+
+        QString componentName;
+        QStringList appNames;
+        QString confirmationMessage;
+
+        bool result = state.getApplicationsNames(componentName,
+            appNames, confirmationMessage);
+        QVERIFY(result);
+        QCOMPARE(componentName, QString("DS_Snow"));
+        QCOMPARE(appNames.length(), 0); //in DS_Snow
+
+        const QString remove("remove");
+        service->executeCommand(entry->id(), remove);
+
+        state.cleanUp();
+        QVERIFY(state.mEntry.isNull());
+    }
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+}
+#endif // Q_OS_SYMBIAN
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/src/t_hsviewappdetailsstate.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,103 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Main test class for hsHomeScreenStatePlugin library.
+*
+*/
+
+#include <QStateMachine>
+#include <QSet>
+#include <HbDialog>
+#include <HbLabel>
+#include <HbScrollArea>
+#include "hsmenuworkerstate.h"
+#include "hsviewappdetailsstate.h"
+#include <casoftwareregistry.h>
+#include "t_hsmenuworkerstateplugin.h"
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::ViewAppDetails_construction()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsMenuWorkerState parentState1;
+
+        HsViewAppDetailsState vas1(&parentState1);
+        QString s1 = vas1.objectName();
+        QVERIFY(s1 == tr("homescreen.nokia.com/state/MenuWorkerState/ViewAppDetailsState"));
+
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::ViewAppDetails_onEntry()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsMenuWorkerState parentState1;
+        HsViewAppDetailsState viewAppDetailsState(&parentState1);
+
+        QString testNewName(QString("TestNewName") +
+                            QDateTime::currentDateTime().toString("ddmmyyyy_hh_mm_ss_zzz"));
+
+        CaQuery query;
+        query.setFlagsOn(RemovableEntryFlag);
+        QStringList typeNames;
+        typeNames.append(Hs::applicationTypeName);
+        query.setEntryTypeNames(typeNames);
+        QList< QSharedPointer<CaEntry> > entries = CaService::instance()->getEntries(query);
+
+        int entryId = entries.size() < 1 ? 555 : entries[0]->id();
+
+        QVariantMap eventAttributes;
+        eventAttributes.insert(Hs::itemIdKey, entryId);
+        QScopedPointer<HsMenuEvent> viewAppDetailsEvent;
+        viewAppDetailsEvent.reset(new HsMenuEvent(
+                HsMenuEvent::ShowAppDetails, eventAttributes));
+
+
+        viewAppDetailsState.onEntry(viewAppDetailsEvent.data());
+
+        if (entries.size() < 1) {
+            QWARN("No removable application or widget present.");
+            return;
+        }
+
+        checkDialogController();
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/src/t_hsviewappsettingsstate.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,122 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Main test class for hsHomeScreenStatePlugin library.
+*
+*/
+
+#include <QStateMachine>
+
+#include "hsmenuworkerstate.h"
+#include "hsviewappsettingsstate.h"
+
+#include "t_hsmenuworkerstateplugin.h"
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::ViewAppSettings_construction()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsMenuWorkerState parentState1;
+
+        HsViewAppSettingsState vas1(&parentState1);
+        QString s1 = vas1.objectName();
+        QVERIFY(s1 == tr("homescreen.nokia.com/state/MenuWorkerState/ViewAppSettingsState"));
+
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::ViewAppSettings_onEntry()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+        HsMenuWorkerState parentState1;
+        HsViewAppSettingsState viewAppSettingsState(&parentState1);
+        
+        const QString javaSettingsPlugin("dumy/resource/qt/plugins/appsettings/javaapplicationsettingsview.qtplugin");
+        const QString javaAppUid("269636027");
+        CaEntry item( ItemEntryRole );
+        item.setText( "TestJavaApp" );
+        item.setEntryTypeName(Hs::applicationTypeName);
+        //item.setAttribute(Hs::applicationUidEntryKey, javaAppUid);
+        item.setAttribute(Hs::appSettingsPlugin, javaSettingsPlugin);
+        QSharedPointer<CaEntry>  newItem = CaService::instance()->createEntry( item );
+        QVERIFY(!newItem.isNull());
+        QVERIFY(newItem->id());
+        
+        QVariantMap eventAttributes;
+        eventAttributes.insert(Hs::itemIdKey, newItem->id());
+
+        HsMenuEvent *viewAppSettingsEvent =
+            new HsMenuEvent(HsMenuEvent::ShowAppSettings, eventAttributes);
+        
+        viewAppSettingsState.onEntry(viewAppSettingsEvent);
+        
+        QVERIFY(CaService::instance()->removeEntry(newItem->id()));
+
+        delete viewAppSettingsEvent;        
+
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void MenuStatesTest::ViewAppSettings_onExit()
+{
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARK;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+    {
+    QState *parent = new QState();
+    HsViewAppSettingsState *viewAppSettingsState = new HsViewAppSettingsState(parent);
+
+    QEvent *event = new QEvent(QEvent::StateMachineSignal);
+    viewAppSettingsState->onExit(event);
+    delete event;
+    delete viewAppSettingsState;
+    delete parent;
+    }
+#ifdef Q_OS_SYMBIAN
+#ifdef UT_MEMORY_CHECK
+    __UHEAP_MARKEND;
+#endif//UT_MEMORY_CHECK
+#endif//Q_OS_SYMBIAN
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/src/testwidget.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,60 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#include <QPainter>
+#include "testwidget.h"
+
+TestWidget::TestWidget(QGraphicsItem *parent, Qt::WindowFlags flags)
+  : HbWidget(parent, flags)     
+{
+    setPreferredSize(100, 100);
+}
+
+TestWidget::~TestWidget()
+{
+}
+
+void TestWidget::onInitialize()
+{
+}
+
+void TestWidget::onShow()
+{
+}
+
+void TestWidget::onHide()
+{
+}
+
+void TestWidget::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
+{
+    Q_UNUSED(option)
+    Q_UNUSED(widget)
+    painter->drawRect(rect());
+}
+
+QRectF TestWidget::boundingRect() const
+{
+    return rect();
+}
+
+QPainterPath TestWidget::shape() const
+{
+    QPainterPath path;
+    path.addRect(rect());
+    return path;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/t_hsmenuworkerstateplugin.pri	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,42 @@
+# 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:
+# Header files
+HEADERS += ./inc/*.h \
+    ../../inc/*.h  \
+    ../../../../hsdomainmodel/inc/hsdomainmodeldatastructures.h \
+    ../../../../hsdomainmodel/inc/hsdatabase.h \
+    ../../../../hsdomainmodel/inc/hspage.h \
+    ../../../../hsdomainmodel/inc/hspagetoucharea.h \
+    ../../../../hsdomainmodel/inc/hswidgethost.h \
+    ../../../../hsdomainmodel/inc/hswidgethostvisual.h \
+    ../../../../hsdomainmodel/inc/hswidgettoucharea.h \
+    ../../../../hsdomainmodel/inc/hsscene.h \
+    ../../../../hsdomainmodel/inc/hswallpaper.h \
+    ../../../../hsdomainmodel/inc/hsbackuprestoreobserver.h \
+    ../../../../hsdomainmodel/inc/hsgui.h \
+    ../../../../hsdomainmodel/inc/hsidlewidget.h \
+    ../../../../hsdomainmodel/inc/hsdocumentloader.h \
+    ../../../../hsdomainmodel/inc/hsconfiguration.h 
+ 
+    
+
+HEADERS -= ../../../hsdomainmodel/inc/hscontentservice.h
+HEADERS -= ../../../hsdomainmodel/inc/hsshortcutservice.h
+
+# Source files
+SOURCES += ./src/*.cpp \
+    ../../src/*.cpp \
+    ../../../../hsdomainmodel/src/hsconfiguration.cpp \
+    ../../../../hsdomainmodel/src/hspagetoucharea.cpp \
+    ../../../../hsdomainmodel/src/hswidgettoucharea.cpp \
+    ../../../../hsdomainmodel/src/hswidgethostvisual.cpp \
+    ../../../../hsdomainmodel/src/hsidlewidget.cpp \
+     ../../../../hsdomainmodel/src/hsdocumentloader.cpp 
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/t_hsmenuworkerstateplugin/t_hsmenuworkerstateplugin.pro	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,107 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+TEMPLATE = app
+
+include(../../../../common.pri)
+include(../../docml.pri)
+
+LIBS += -lhsutils
+LIBS += -lhsmenuserviceprovider
+LIBS += -lcaclient
+LIBS += -lcasoftwareregistry
+
+
+CONFIG += hb console plugin mobility
+MOBILITY = serviceframework
+
+QT += testlib \
+      xml \
+      sql
+HB += hbfeedback
+DEFINES += MENUSTATES_UNITTEST HSDOMAINMODEL_TEST HSWIDGETMODEL_LIB
+
+coverage:DEFINES += COVERAGE_MEASUREMENT
+
+DEPENDPATH += .\
+              ./src \
+              ./inc \
+              ../../src \
+              ../../inc
+
+INCLUDEPATH += .\
+               ./inc \
+               ../../inc \
+               ../../../../../../homescreen/homescreenapp/inc \
+			   ../../../../../../homescreen/homescreenapp/hsdomainmodel/inc \
+               ../../../../../../homescreen/homescreenapp/serviceproviders/hsmenuserviceprovider/inc \ 
+               ../../../../../../homescreen/homescreenapp/hsutils/inc
+
+                   
+win32: {
+DEFINES += HSDOMAINMODEL_TEST
+}
+
+symbian {
+    for(docmlFile, docmlFiles): DOCML+=../../$$docmlFile
+    
+    ### get rid of localization warnings
+    CONFIG -= hb
+    load(hb.prf)
+    CONFIG -= symbian_i18n
+    ###
+    TARGET.UID3 = 0x20022F6B
+    LIBS += -lPlatformEnv
+    TARGET.CAPABILITY = All -TCB
+    TARGET.EPOCSTACKSIZE = 0x14000 // 131kB
+    TARGET.EPOCHEAPSIZE = 0x20000 0x1000000 // 128kB - 48MB
+    
+    LIBS += -lsif
+    LIBS += -lscrclient
+
+    BLD_INF_RULES.prj_testexports += "./data/MIDPTestIcons.jad c:/testing/data/t_hsmenuworkerstateplugin/installs/" \
+     "./data/MIDPTestIcons.jar c:/testing/data/t_hsmenuworkerstateplugin/installs/"
+
+    BLD_INF_RULES.prj_exports += "./data/MIDPTestIcons.jad c:/testing/data/t_hsmenuworkerstateplugin/installs/" \
+     "./data/MIDPTestIcons.jar c:/testing/data/t_hsmenuworkerstateplugin/installs/"
+     
+    BLD_INF_RULES.prj_testexports += "./data/DS_Snow.jad c:/testing/data/t_hsmenuworkerstateplugin/installs/" \
+     "./data/DS_Snow.jar c:/testing/data/t_hsmenuworkerstateplugin/installs/"
+
+    BLD_INF_RULES.prj_exports += "./data/DS_Snow.jad c:/testing/data/t_hsmenuworkerstateplugin/installs/" \
+     "./data/DS_Snow.jar c:/testing/data/t_hsmenuworkerstateplugin/installs/"
+     
+    exportArmSis.sources += ./data/MIDPTestIcons.jad \
+        ./data/MIDPTestIcons.jar
+    exportArmSis.sources += ./data/DS_Snow.jad \
+        ./data/DS_Snow.jar
+	exportArmSis.path = c:/testing/data/t_hsmenuworkerstateplugin/installs
+	DEPLOYMENT += exportArmSis	
+
+    CONFIG += symbian_test	
+    coverage: CONFIG -= symbian_test
+    
+    MMP_RULES += SMPSAFE
+    }
+
+    
+RESOURCES += ../../$$qrcFile      
+
+
+include(t_hsmenuworkerstateplugin.pri)
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/tsrc/tsrc.pro	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,21 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+TEMPLATE = subdirs
+SUBDIRS  = t_hsmenuworkerstateplugin
+           
+CONFIG  += ordered
+
--- a/homescreenapp/widgetplugins/hsclockwidgetplugin/hsclockwidgetplugin.pro	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/widgetplugins/hsclockwidgetplugin/hsclockwidgetplugin.pro	Mon Oct 04 00:07:25 2010 +0300
@@ -36,7 +36,7 @@
 symbian: {
     TARGET.UID3 = 0x20022F6C
     LIBS += -lbafl -lapgrfx -lcone
-    
+    MMP_RULES += SMPSAFE
     
 }
 
@@ -46,5 +46,3 @@
 RESOURCES = hsclockwidgetplugin.qrc
 
 exportResources(./resource/*.manifest, $$WIDGET_SUBDIR)
-exportResources(./resource/*.png, $$WIDGET_SUBDIR)
-exportResources(./resource/*.svg, $$WIDGET_SUBDIR)
--- a/homescreenapp/widgetplugins/hsclockwidgetplugin/resource/hsclockwidgetplugin.manifest	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/widgetplugins/hsclockwidgetplugin/resource/hsclockwidgetplugin.manifest	Mon Oct 04 00:07:25 2010 +0300
@@ -3,8 +3,8 @@
     <uri>hsclockwidgetplugin</uri>
     <title>Clock</title>
     <description>Themable clock widget.</description>
-    <icon>tclock.png</icon>
-    <previewimage>qtg_graf_hswidget_preview_clock.svg</previewimage>
+    <icon>qtg_large_clock</icon>
+    <previewimage>qtg_large_clock</previewimage>
     <hidden>false</hidden>
     <servicexml>hsclockwidgetplugin.xml</servicexml>
 </hswidgetmanifest>
--- a/homescreenapp/widgetplugins/hsclockwidgetplugin/resource/qtg_graf_hswidget_preview_clock.svg	Fri Sep 17 08:27:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,160 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="320px" height="210px" viewBox="0 0 320 210">
-<g>
-<path fill-opacity="0.4" stroke-opacity="0.4" d="M160,187.164c-45.306,0-82.163-36.856-82.163-82.163S114.694,22.835,160,22.835   c45.307,0,82.162,36.86,82.162,82.166S205.307,187.164,160,187.164L160,187.164z"/>
-<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="409.04" y1="1018.6201" x2="409.04" y2="1182.7592" gradientTransform="matrix(1 0 0 1 -249.04 -995.9609)">
-<stop offset="0" style="stop-color:#DCDCDC"/>
-<stop offset="0.6" style="stop-color:#C0C0C0"/>
-<stop offset="1" style="stop-color:#A7A7A7"/>
-</linearGradient>
-<circle fill="url(#SVGID_1_)" cx="160" cy="105" r="81.404"/>
-<path fill-opacity="0.4" stroke-opacity="0.4" fill="#FFFFFF" d="M160,23.596c-44.958,0-81.405,36.444-81.405,81.405   c0,44.956,36.446,81.402,81.405,81.402c44.958,0,81.404-36.446,81.404-81.402C241.404,60.042,204.958,23.596,160,23.596z    M160,185.642c-44.467,0-80.643-36.176-80.643-80.644c0-44.467,36.176-80.644,80.643-80.644c44.465,0,80.643,36.176,80.643,80.644   S204.465,185.642,160,185.642z"/>
-<path fill="#E5E5E5" d="M160,179.556c-41.111,0-74.557-33.443-74.557-74.558c0-41.112,33.445-74.557,74.557-74.557   s74.556,33.445,74.556,74.557C234.556,146.112,201.111,179.556,160,179.556L160,179.556z"/>
-<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="409.0391" y1="1173.9941" x2="409.0391" y2="1027.9258" gradientTransform="matrix(1 0 0 1 -249.04 -995.9609)">
-<stop offset="0" style="stop-color:#FFFFFF"/>
-<stop offset="0.4121" style="stop-color:#DCDCDC"/>
-<stop offset="0.9455" style="stop-color:#CBCBCB"/>
-<stop offset="1" style="stop-color:#CBCBCB"/>
-</linearGradient>
-<circle fill="url(#SVGID_2_)" cx="160" cy="104.999" r="73.034"/>
-<path fill-opacity="0.5" stroke-opacity="0.5" d="M160,31.964c-40.338,0-73.036,32.699-73.036,73.037   c0,40.333,32.698,73.032,73.036,73.032c40.336,0,73.035-32.698,73.035-73.032C233.035,64.663,200.336,31.964,160,31.964z    M160,177.282c-39.854,0-72.283-32.425-72.283-72.281c0-39.856,32.427-72.283,72.283-72.283c39.855,0,72.285,32.426,72.285,72.283   C232.285,144.857,199.857,177.282,160,177.282z"/>
-<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="409.04" y1="1165.6299" x2="409.04" y2="1036.293" gradientTransform="matrix(1 0 0 1 -249.04 -995.9609)">
-<stop offset="0" style="stop-color:#B4B4B4"/>
-<stop offset="1" style="stop-color:#A0A0A0"/>
-</linearGradient>
-<circle fill="url(#SVGID_3_)" cx="160" cy="105.001" r="64.668"/>
-<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="409.041" y1="1037.8115" x2="409.041" y2="1164.1035" gradientTransform="matrix(1 0 0 1 -249.04 -995.9609)">
-<stop offset="0" style="stop-color:#FFFFFF"/>
-<stop offset="0.9455" style="stop-color:#CBCBCB"/>
-<stop offset="1" style="stop-color:#CBCBCB"/>
-</linearGradient>
-<path fill="url(#SVGID_4_)" d="M160,168.144c-34.819,0-63.146-28.323-63.146-63.146c0-34.818,28.325-63.147,63.146-63.147   c34.818,0,63.146,28.329,63.146,63.147C223.146,139.819,194.82,168.144,160,168.144L160,168.144z"/>
-<circle fill="#C8C8C8" cx="160" cy="105" r="2.282"/>
-<path fill="none" d="M160,168.144c-34.819,0-63.146-28.323-63.146-63.146c0-34.818,28.325-63.147,63.146-63.147   c34.818,0,63.146,28.329,63.146,63.147C223.146,139.819,194.82,168.144,160,168.144L160,168.144z"/>
-<circle fill="#646464" cx="160" cy="45.657" r="2.283"/>
-<path fill="#646464" d="M155.424,51.53h-0.033l-1.951,1.053l-0.293-1.158l2.451-1.311h1.294v11.221h-1.467L155.424,51.53   L155.424,51.53z"/>
-<path fill="#646464" d="M159.689,61.335v-0.933l1.19-1.157c2.862-2.726,4.181-4.176,4.181-5.869c0-1.14-0.535-2.193-2.21-2.193   c-1.018,0-1.864,0.52-2.382,0.951l-0.486-1.068c0.762-0.64,1.885-1.14,3.16-1.14c2.416,0,3.438,1.657,3.438,3.262   c0,2.07-1.504,3.746-3.864,6.024l-0.881,0.828v0.035h5.021v1.26H159.689z"/>
-<circle fill="#646464" cx="189.67" cy="53.61" r="2.282"/>
-<circle fill="#646464" cx="211.39" cy="75.329" r="2.281"/>
-<circle fill="#646464" cx="219.342" cy="105" r="2.282"/>
-<path fill="#646464" d="M208.58,108.819c0.425,0.256,1.392,0.68,2.447,0.68c1.898,0,2.51-1.205,2.496-2.141   c-0.019-1.545-1.41-2.207-2.854-2.207h-0.829v-1.121h0.829c1.086,0,2.463-0.562,2.463-1.867c0-0.882-0.563-1.664-1.938-1.664   c-0.883,0-1.733,0.391-2.207,0.729l-0.408-1.085c0.595-0.423,1.715-0.85,2.904-0.85c2.172,0,3.157,1.292,3.157,2.633   c0,1.153-0.696,2.124-2.038,2.616v0.031c1.358,0.255,2.446,1.273,2.461,2.82c0,1.765-1.393,3.312-4.025,3.312   c-1.238,0-2.323-0.392-2.868-0.747L208.58,108.819z"/>
-<path fill="#646464" d="M211.39,132.386c1.263,0,2.284,1.023,2.284,2.285c0,1.258-1.021,2.282-2.284,2.282   c-1.262,0-2.282-1.024-2.282-2.282C209.107,133.41,210.13,132.386,211.39,132.386z"/>
-<rect x="199.037" y="122.135" transform="matrix(-0.5001 0.8659 -0.8659 -0.5001 411.3268 19.0048)" fill="#646464" width="2.283" height="12.17"/>
-<path fill="#646464" d="M189.67,154.108c1.262,0,2.281,1.025,2.281,2.281c0,1.263-1.021,2.285-2.281,2.285   c-1.264,0-2.284-1.022-2.284-2.285C187.386,155.134,188.408,154.108,189.67,154.108z"/>
-<rect x="182.08" y="139.113" transform="matrix(-0.8658 0.5005 -0.5005 -0.8658 414.5156 179.2164)" fill="#646464" width="2.283" height="12.179"/>
-<circle fill="#646464" cx="159.998" cy="164.343" r="2.283"/>
-<path fill="#646464" d="M162.701,149.888c-0.308-0.021-0.697,0.017-1.119,0.08c-2.366,0.377-3.59,2.078-3.844,3.912h0.031   c0.528-0.715,1.465-1.291,2.688-1.291c1.956,0,3.336,1.43,3.336,3.57c0,2.041-1.376,3.91-3.688,3.91   c-2.349,0-3.896-1.835-3.896-4.71c0-2.179,0.766-3.896,1.868-4.983c0.92-0.898,2.146-1.462,3.539-1.631   c0.442-0.07,0.815-0.084,1.091-0.084v1.227H162.701z M162.277,156.263c0-1.582-0.897-2.53-2.276-2.53c-0.9,0-1.75,0.543-2.16,1.358   c-0.083,0.172-0.151,0.373-0.151,0.646c0.016,1.821,0.866,3.183,2.449,3.183C161.412,158.917,162.277,157.847,162.277,156.263z"/>
-<circle fill="#646464" cx="130.33" cy="156.391" r="2.282"/>
-<rect x="135.673" y="139.116" transform="matrix(-0.8649 -0.5019 0.5019 -0.8649 182.2667 339.4583)" fill="#646464" width="2.284" height="12.171"/>
-<rect x="182.27" y="57.743" transform="matrix(-0.8657 -0.5006 0.5006 -0.8657 310.2312 210.9045)" fill="#646464" width="2.283" height="12.172"/>
-<path fill="#646464" d="M108.61,132.386c1.259,0,2.28,1.023,2.28,2.285c0,1.258-1.021,2.282-2.28,2.282   c-1.262,0-2.284-1.024-2.284-2.282C106.326,133.41,107.349,132.386,108.61,132.386z"/>
-<rect x="118.682" y="122.11" transform="matrix(-0.501 -0.8654 0.8654 -0.501 68.9082 296.1266)" fill="#646464" width="2.281" height="12.176"/>
-<rect x="199.694" y="75.09" transform="matrix(-0.5005 -0.8658 0.8658 -0.5005 231.0666 295.6795)" fill="#646464" width="2.283" height="12.176"/>
-<circle fill="#646464" cx="100.658" cy="105" r="2.282"/>
-<path fill="#646464" d="M106.733,109.507c0.323,0.032,0.701,0,1.215-0.053c0.873-0.119,1.694-0.463,2.327-1.076   c0.737-0.668,1.267-1.646,1.474-2.943h-0.052c-0.617,0.754-1.507,1.179-2.637,1.179c-1.986,0-3.27-1.506-3.27-3.405   c0-2.105,1.523-3.954,3.799-3.954c2.276,0,3.681,1.833,3.681,4.708c0,2.431-0.819,4.14-1.916,5.202   c-0.856,0.843-2.036,1.356-3.235,1.491c-0.548,0.085-1.028,0.104-1.387,0.085L106.733,109.507L106.733,109.507z M107.28,103.121   c0,1.388,0.84,2.364,2.141,2.364c1.009,0,1.798-0.499,2.192-1.165c0.084-0.155,0.136-0.31,0.136-0.566   c0-1.899-0.703-3.354-2.295-3.354C108.186,100.4,107.28,101.529,107.28,103.121z"/>
-<circle fill="#646464" cx="108.61" cy="75.329" r="2.281"/>
-<rect x="118.688" y="75.73" transform="matrix(0.5005 -0.8658 0.8658 0.5005 -10.9739 144.6138)" fill="#646464" width="2.283" height="12.173"/>
-<circle fill="#646464" cx="130.33" cy="53.608" r="2.283"/>
-<rect x="135.664" y="58.733" transform="matrix(0.8661 -0.5 0.5 0.8661 -14.0812 77.0793)" fill="#646464" width="2.283" height="12.171"/>
-<rect x="152.465" y="34.622" transform="matrix(0.9947 -0.1031 0.1031 0.9947 -2.9898 15.9509)" fill="#646464" width="0.758" height="4.564"/>
-<rect x="166.781" y="170.8" transform="matrix(0.9942 -0.1079 0.1079 0.9942 -17.6988 19.0461)" fill="#646464" width="0.76" height="4.567"/>
-<rect x="145.386" y="35.751" transform="matrix(0.9783 -0.2073 0.2073 0.9783 -4.7182 31.0491)" fill="#646464" width="0.761" height="4.564"/>
-<rect x="173.859" y="169.688" transform="matrix(0.9771 -0.2126 0.2126 0.9771 -32.5762 40.9726)" fill="#646464" width="0.763" height="4.564"/>
-<rect x="138.457" y="37.598" transform="matrix(0.9513 -0.3082 0.3082 0.9513 -5.5328 44.7255)" fill="#646464" width="0.764" height="4.564"/>
-<rect x="180.774" y="167.848" transform="matrix(0.9507 -0.31 0.31 0.9507 -43.8184 64.5433)" fill="#646464" width="0.756" height="4.564"/>
-<rect x="131.773" y="40.167" transform="matrix(0.9144 -0.4048 0.4048 0.9144 -5.8719 57.1258)" fill="#646464" width="0.764" height="4.563"/>
-<rect x="187.461" y="165.269" transform="matrix(0.914 -0.4058 0.4058 0.914 -51.8284 90.6373)" fill="#646464" width="0.763" height="4.56"/>
-<rect x="119.373" y="47.327" transform="matrix(0.8099 -0.5866 0.5866 0.8099 -6.3341 79.6745)" fill="#646464" width="0.761" height="4.566"/>
-<rect x="199.879" y="158.11" transform="matrix(0.8096 -0.5869 0.5869 0.8096 -56.0172 148.0756)" fill="#646464" width="0.759" height="4.564"/>
-<rect x="113.799" y="51.834" transform="matrix(0.7445 -0.6676 0.6676 0.7445 -6.9562 90.0548)" fill="#646464" width="0.762" height="4.563"/>
-<rect x="205.434" y="153.598" transform="matrix(0.742 -0.6704 0.6704 0.742 -51.402 178.1881)" fill="#646464" width="0.763" height="4.564"/>
-<rect x="108.736" y="56.902" transform="matrix(0.6685 -0.7437 0.7437 0.6685 -7.8437 100.77)" fill="#646464" width="0.76" height="4.564"/>
-<rect x="210.48" y="148.555" transform="matrix(0.6697 -0.7426 0.7426 0.6697 -42.373 206.4011)" fill="#646464" width="0.764" height="4.568"/>
-<rect x="104.222" y="62.489" transform="matrix(0.5862 -0.8102 0.8102 0.5862 -9.1904 111.55)" fill="#646464" width="0.763" height="4.565"/>
-<rect x="215.034" y="142.94" transform="matrix(0.588 -0.8088 0.8088 0.588 -28.7162 234.0664)" fill="#646464" width="0.761" height="4.565"/>
-<rect x="97.076" y="74.865" transform="matrix(0.4074 -0.9132 0.9132 0.4074 -12.7047 134.7127)" fill="#646464" width="0.76" height="4.563"/>
-<rect x="222.191" y="130.6" transform="matrix(0.4104 -0.9119 0.9119 0.4104 10.0494 281.3069)" fill="#646464" width="0.761" height="4.563"/>
-<rect x="94.501" y="81.561" transform="matrix(0.3058 -0.9521 0.9521 0.3058 -13.9611 148.5399)" fill="#646464" width="0.76" height="4.566"/>
-<rect x="224.746" y="123.89" transform="matrix(0.3124 -0.95 0.95 0.3124 34.9469 300.6219)" fill="#646464" width="0.757" height="4.564"/>
-<rect x="92.643" y="88.476" transform="matrix(0.2066 -0.9784 0.9784 0.2066 -14.9956 163.0256)" fill="#646464" width="0.761" height="4.567"/>
-<rect x="226.604" y="116.941" transform="matrix(0.2055 -0.9787 0.9787 0.2055 63.6602 316.8646)" fill="#646464" width="0.76" height="4.567"/>
-<rect x="91.525" y="95.564" transform="matrix(0.1015 -0.9948 0.9948 0.1015 -14.7675 179.3414)" fill="#646464" width="0.76" height="4.566"/>
-<rect x="227.712" y="109.901" transform="matrix(0.1104 -0.9939 0.9939 0.1104 91.4231 326.5013)" fill="#646464" width="0.761" height="4.563"/>
-<rect x="91.526" y="109.874" transform="matrix(-0.1041 -0.9946 0.9946 -0.1041 -10.0743 215.2361)" fill="#646464" width="0.76" height="4.563"/>
-<rect x="227.73" y="95.544" transform="matrix(-0.1005 -0.9949 0.9949 -0.1005 153.7093 334.614)" fill="#646464" width="0.758" height="4.564"/>
-<rect x="92.642" y="116.962" transform="matrix(-0.2043 -0.9789 0.9789 -0.2043 -4.7056 234.6612)" fill="#646464" width="0.76" height="4.562"/>
-<rect x="226.609" y="88.465" transform="matrix(-0.2071 -0.9783 0.9783 -0.2071 185.2206 331.6101)" fill="#646464" width="0.759" height="4.566"/>
-<rect x="94.498" y="123.878" transform="matrix(-0.3089 -0.9511 0.9511 -0.3089 4.1975 255.3723)" fill="#646464" width="0.762" height="4.565"/>
-<rect x="224.747" y="81.55" transform="matrix(-0.3058 -0.9521 0.9521 -0.3058 214.1556 323.8108)" fill="#646464" width="0.76" height="4.564"/>
-<rect x="97.058" y="130.565" transform="matrix(-0.4078 -0.9131 0.9131 -0.4078 15.876 275.9901)" fill="#646464" width="0.762" height="4.564"/>
-<rect x="222.19" y="74.854" transform="matrix(-0.4061 -0.9138 0.9138 -0.4061 242.4765 311.8519)" fill="#646464" width="0.76" height="4.565"/>
-<rect x="104.229" y="142.964" transform="matrix(-0.5868 -0.8097 0.8097 -0.5868 48.3844 315.1844)" fill="#646464" width="0.762" height="4.566"/>
-<rect x="215.003" y="62.46" transform="matrix(-0.5843 -0.8115 0.8115 -0.5843 288.702 277.3557)" fill="#646464" width="0.759" height="4.561"/>
-<rect x="108.753" y="148.511" transform="matrix(-0.6716 -0.7409 0.7409 -0.6716 70.6991 332.9232)" fill="#646464" width="0.761" height="4.564"/>
-<rect x="210.512" y="56.891" transform="matrix(-0.6699 -0.7424 0.7424 -0.6699 308.2413 255.3895)" fill="#646464" width="0.761" height="4.567"/>
-<rect x="113.822" y="153.608" transform="matrix(-0.744 -0.6682 0.6682 -0.744 95.0044 348.1786)" fill="#646464" width="0.76" height="4.563"/>
-<rect x="205.449" y="51.851" transform="matrix(-0.7401 -0.6725 0.6725 -0.7401 321.7531 232.619)" fill="#646464" width="0.759" height="4.566"/>
-<rect x="119.359" y="158.119" transform="matrix(-0.8102 -0.5862 0.5862 -0.8102 122.7238 360.5475)" fill="#646464" width="0.763" height="4.567"/>
-<rect x="199.878" y="47.321" transform="matrix(-0.8088 -0.588 0.588 -0.8088 333.0692 207.4829)" fill="#646464" width="0.761" height="4.566"/>
-<rect x="131.785" y="165.269" transform="matrix(-0.9129 -0.4083 0.4083 -0.9129 184.4057 374.4613)" fill="#646464" width="0.761" height="4.563"/>
-<rect x="187.46" y="40.138" transform="matrix(-0.9129 -0.4083 0.4083 -0.9129 341.9913 157.8347)" fill="#646464" width="0.761" height="4.564"/>
-<rect x="138.449" y="167.854" transform="matrix(-0.9518 -0.3066 0.3066 -0.9518 218.8126 374.6401)" fill="#646464" width="0.761" height="4.562"/>
-<rect x="180.768" y="37.601" transform="matrix(-0.9507 -0.31 0.31 -0.9507 341.001 133.9623)" fill="#646464" width="0.756" height="4.566"/>
-<rect x="145.384" y="169.696" transform="matrix(-0.979 -0.204 0.204 -0.979 253.3792 370.0781)" fill="#646464" width="0.761" height="4.567"/>
-<rect x="173.89" y="35.722" transform="matrix(-0.9777 -0.2102 0.2102 -0.9777 336.6534 111.7981)" fill="#646464" width="0.757" height="4.566"/>
-<rect x="152.472" y="170.807" transform="matrix(-0.995 -0.1003 0.1003 -0.995 287.5774 360.6373)" fill="#646464" width="0.76" height="4.57"/>
-<rect x="166.782" y="34.628" transform="matrix(-0.9942 -0.1073 0.1073 -0.9942 329.3942 91.5465)" fill="#646464" width="0.755" height="4.565"/>
-<path fill="#646464" d="M158.271,33.417c0.573,0,1.006,0.202,1.299,0.61c0.293,0.406,0.437,1.123,0.437,2.152   c0,1.125-0.147,1.892-0.444,2.293c-0.296,0.403-0.732,0.603-1.31,0.603c-0.505,0-0.888-0.132-1.146-0.401   c-0.257-0.265-0.424-0.603-0.502-1.012c-0.078-0.409-0.117-0.905-0.117-1.483c0-1.008,0.147-1.719,0.449-2.136   C157.238,33.625,157.683,33.417,158.271,33.417z M158.246,38.458c0.253,0,0.437-0.141,0.556-0.426   c0.117-0.283,0.177-0.902,0.177-1.855c0-0.917-0.062-1.504-0.182-1.76c-0.124-0.254-0.305-0.384-0.551-0.384   c-0.223,0-0.387,0.089-0.492,0.268c-0.105,0.178-0.174,0.413-0.198,0.698c-0.024,0.289-0.039,0.68-0.039,1.18   c0,0.979,0.058,1.606,0.175,1.877C157.808,38.322,157.994,38.458,158.246,38.458z"/>
-<path fill="#646464" d="M162.14,33.417c0.569,0,1.005,0.202,1.298,0.61c0.293,0.406,0.438,1.123,0.438,2.152   c0,1.125-0.147,1.892-0.442,2.293c-0.297,0.403-0.732,0.603-1.313,0.603c-0.51,0-0.887-0.132-1.146-0.401   c-0.257-0.265-0.423-0.603-0.503-1.012c-0.075-0.409-0.116-0.905-0.116-1.483c0-1.008,0.15-1.719,0.45-2.136   C161.107,33.625,161.549,33.417,162.14,33.417z M162.111,38.458c0.252,0,0.438-0.141,0.558-0.426   c0.116-0.283,0.174-0.902,0.174-1.855c0-0.917-0.062-1.504-0.181-1.76c-0.118-0.254-0.305-0.384-0.551-0.384   c-0.225,0-0.389,0.089-0.492,0.268c-0.104,0.178-0.172,0.413-0.193,0.698c-0.025,0.289-0.04,0.68-0.04,1.18   c0,0.979,0.06,1.606,0.175,1.877C161.675,38.322,161.857,38.458,162.111,38.458z"/>
-<path fill="#646464" d="M97.489,71.503l1.193,0.688c0.028-0.06,0.086-0.165,0.176-0.316c0.272-0.477,0.613-0.771,1.014-0.881   c0.402-0.11,0.843-0.027,1.326,0.253c0.55,0.315,0.875,0.691,0.98,1.125c0.106,0.435-0.01,0.939-0.342,1.517   c-0.188,0.326-0.439,0.651-0.753,0.971l-0.568-0.328l0.006-0.006c0.334-0.336,0.563-0.612,0.687-0.825   c0.186-0.323,0.24-0.609,0.163-0.858s-0.297-0.475-0.658-0.684c-0.316-0.183-0.604-0.237-0.862-0.161   c-0.258,0.076-0.484,0.285-0.681,0.625c-0.135,0.233-0.26,0.474-0.373,0.721l-2.333-1.347l1.432-2.477l0.555,0.32L97.489,71.503z"/>
-<path fill="#646464" d="M99.076,67.355c0.286-0.495,0.677-0.767,1.176-0.818c0.498-0.049,1.192,0.183,2.082,0.698   c0.977,0.563,1.564,1.071,1.766,1.53c0.199,0.46,0.157,0.935-0.132,1.436c-0.252,0.438-0.561,0.704-0.92,0.79   c-0.36,0.09-0.739,0.068-1.129-0.071c-0.395-0.136-0.84-0.351-1.343-0.64c-0.872-0.504-1.414-0.99-1.625-1.457   C98.74,68.355,98.781,67.865,99.076,67.355z M103.429,69.899c0.126-0.221,0.096-0.453-0.09-0.696   c-0.186-0.241-0.692-0.603-1.519-1.081c-0.793-0.457-1.331-0.698-1.613-0.721c-0.283-0.022-0.486,0.073-0.608,0.283   c-0.11,0.194-0.115,0.38-0.015,0.561c0.104,0.18,0.271,0.354,0.507,0.52c0.235,0.168,0.569,0.373,0.999,0.623   c0.851,0.491,1.42,0.751,1.713,0.787C103.093,70.209,103.302,70.117,103.429,69.899z"/>
-<path fill="#646464" d="M92.157,104.909h0.639v0.57h1.22v1.003h-1.22v2.229h-0.61l-2.847-1.744l-0.893-0.543v-0.945h3.711V104.909z    M92.157,107.936v-1.454h-2.439L92.157,107.936z"/>
-<path fill="#646464" d="M89.116,103.373h1.378c-0.006-0.067-0.009-0.187-0.009-0.363c0-0.552,0.146-0.975,0.438-1.272   c0.291-0.296,0.717-0.444,1.273-0.444c0.635,0,1.106,0.162,1.414,0.487c0.308,0.323,0.462,0.816,0.462,1.482   c0,0.38-0.057,0.785-0.167,1.218h-0.653v-0.006c0.121-0.459,0.18-0.813,0.18-1.061c0-0.373-0.096-0.647-0.287-0.822   c-0.192-0.176-0.496-0.268-0.913-0.268c-0.366,0-0.642,0.099-0.826,0.294c-0.186,0.195-0.277,0.491-0.277,0.878   c0,0.272,0.014,0.543,0.038,0.814h-2.694v-2.857h0.641v1.919L89.116,103.373L89.116,103.373z"/>
-<path fill="#646464" d="M101.206,138.851l0.554-0.32l0.286,0.497l1.056-0.612l0.502,0.867l-1.058,0.611l1.114,1.931l-0.525,0.304   l-3.34-0.08l-1.044-0.029l-0.472-0.814l3.214-1.857L101.206,138.851z M102.72,141.472l-0.725-1.258l-2.115,1.221L102.72,141.472z"/>
-<path fill="#646464" d="M96.938,138.941c-0.286-0.497-0.325-0.976-0.121-1.433c0.207-0.455,0.754-0.938,1.644-1.453   c0.977-0.563,1.71-0.817,2.208-0.765c0.498,0.058,0.889,0.332,1.178,0.83c0.252,0.438,0.326,0.839,0.224,1.192   c-0.103,0.355-0.312,0.668-0.625,0.938c-0.317,0.271-0.724,0.559-1.227,0.848c-0.872,0.502-1.563,0.729-2.073,0.678   C97.634,139.729,97.234,139.446,96.938,138.941z M101.315,136.441c-0.125-0.222-0.342-0.31-0.646-0.271   c-0.305,0.036-0.87,0.297-1.696,0.771c-0.793,0.459-1.271,0.809-1.433,1.033c-0.161,0.234-0.179,0.463-0.057,0.668   c0.109,0.195,0.271,0.295,0.477,0.295c0.208,0.002,0.442-0.057,0.702-0.18c0.264-0.119,0.61-0.304,1.042-0.551   c0.849-0.49,1.361-0.855,1.537-1.092C101.419,136.886,101.443,136.661,101.315,136.441z"/>
-<path fill="#646464" d="M127.951,166.431c-0.63-0.367-1.062-0.526-1.293-0.487c-0.23,0.034-0.422,0.19-0.576,0.454   c-0.134,0.232-0.174,0.443-0.118,0.634c0.058,0.188,0.212,0.358,0.461,0.501c0.221,0.13,0.559,0.253,1.019,0.371l0.006,0.004   l-0.325,0.568c-0.461-0.133-0.856-0.293-1.182-0.479c-0.492-0.282-0.805-0.596-0.936-0.938c-0.133-0.338-0.085-0.707,0.144-1.104   c0.156-0.271,0.365-0.466,0.627-0.57c0.261-0.115,0.554-0.125,0.876-0.049c-0.271-0.228-0.427-0.484-0.472-0.775   s0.02-0.586,0.19-0.883c0.284-0.488,0.641-0.772,1.067-0.856c0.428-0.078,0.927,0.045,1.501,0.379   c0.343,0.19,0.667,0.449,0.965,0.756l-0.322,0.562l-0.005-0.004c-0.361-0.35-0.663-0.592-0.903-0.729   c-0.293-0.17-0.555-0.224-0.787-0.163c-0.23,0.064-0.429,0.244-0.603,0.536c-0.181,0.315-0.225,0.592-0.126,0.83   c0.097,0.235,0.464,0.543,1.1,0.909L127.951,166.431z"/>
-<path fill="#646464" d="M123.149,165.574l0.689-1.194c-0.062-0.029-0.167-0.088-0.317-0.174c-0.478-0.273-0.771-0.613-0.882-1.014   c-0.111-0.4-0.024-0.844,0.251-1.328c0.32-0.545,0.694-0.875,1.128-0.98s0.939,0.015,1.517,0.344   c0.328,0.189,0.653,0.439,0.972,0.759l-0.329,0.563l-0.006-0.004c-0.336-0.332-0.612-0.564-0.825-0.688   c-0.321-0.185-0.608-0.233-0.856-0.159c-0.25,0.072-0.478,0.297-0.687,0.652c-0.183,0.32-0.235,0.607-0.158,0.863   c0.075,0.262,0.284,0.485,0.622,0.682c0.234,0.133,0.477,0.263,0.724,0.375l-1.348,2.33l-2.477-1.432l0.32-0.556L123.149,165.574z"/>
-<path fill="#646464" d="M162.969,174.224c-0.729,0-1.184,0.072-1.363,0.222c-0.182,0.147-0.271,0.376-0.271,0.687   c0,0.271,0.074,0.471,0.22,0.61c0.144,0.14,0.36,0.206,0.647,0.206c0.254,0,0.607-0.066,1.063-0.191h0.009v0.655   c-0.467,0.118-0.889,0.173-1.263,0.173c-0.567,0-0.995-0.115-1.276-0.339c-0.285-0.229-0.429-0.571-0.429-1.026   c0-0.316,0.086-0.588,0.259-0.813c0.172-0.225,0.414-0.389,0.734-0.48c-0.348-0.06-0.611-0.207-0.798-0.435   c-0.185-0.229-0.276-0.519-0.276-0.864c0-0.566,0.166-0.99,0.497-1.275c0.326-0.279,0.824-0.426,1.485-0.426   c0.396,0,0.806,0.061,1.219,0.176v0.646h-0.008c-0.486-0.12-0.867-0.179-1.146-0.179c-0.337,0-0.59,0.083-0.764,0.258   c-0.171,0.171-0.253,0.422-0.253,0.764c0,0.36,0.101,0.625,0.302,0.78c0.206,0.16,0.676,0.239,1.411,0.239L162.969,174.224   L162.969,174.224z"/>
-<path fill="#646464" d="M157.859,176.581c-0.572,0-1.002-0.201-1.295-0.609c-0.291-0.402-0.437-1.119-0.437-2.148   c0-1.125,0.146-1.895,0.442-2.296c0.297-0.403,0.732-0.604,1.311-0.604c0.506,0,0.887,0.133,1.145,0.4   c0.26,0.271,0.426,0.605,0.504,1.016c0.076,0.412,0.115,0.902,0.115,1.481c0,1.01-0.148,1.724-0.447,2.136   C158.895,176.376,158.449,176.581,157.859,176.581z M157.888,171.542c-0.253,0-0.438,0.145-0.556,0.428   c-0.117,0.279-0.176,0.901-0.176,1.854c0,0.916,0.06,1.503,0.183,1.761c0.121,0.258,0.304,0.383,0.55,0.383   c0.223,0,0.385-0.086,0.491-0.271c0.104-0.177,0.172-0.415,0.196-0.696c0.025-0.289,0.041-0.684,0.041-1.18   c0-0.982-0.062-1.607-0.176-1.878C158.322,171.677,158.141,171.542,157.888,171.542z"/>
-<path fill="#646464" d="M193.443,162.63l-0.324-0.558l2.871-1.658l0.201,0.351c0.195,0.336,0.309,0.664,0.342,0.992   s0.018,0.631-0.047,0.91c-0.063,0.282-0.16,0.611-0.295,0.977c-0.158,0.438-0.238,0.76-0.236,0.947   c0.006,0.188,0.046,0.355,0.125,0.498c0.144,0.248,0.318,0.396,0.523,0.448c0.203,0.048,0.438-0.002,0.7-0.155   c0.276-0.162,0.574-0.424,0.892-0.802l0.006-0.003l0.328,0.573c-0.336,0.37-0.709,0.67-1.102,0.897   c-0.488,0.281-0.917,0.387-1.294,0.318c-0.376-0.064-0.685-0.311-0.929-0.723c-0.131-0.233-0.209-0.493-0.223-0.787   c-0.021-0.293,0.08-0.74,0.299-1.338c0.123-0.334,0.209-0.608,0.271-0.814c0.056-0.213,0.081-0.421,0.08-0.634   c-0.002-0.213-0.052-0.418-0.155-0.615L193.443,162.63z"/>
-<path fill="#646464" d="M194.033,167.202l-0.689-1.193c-0.055,0.035-0.16,0.102-0.309,0.187c-0.479,0.274-0.918,0.362-1.32,0.256   c-0.4-0.104-0.743-0.396-1.021-0.879c-0.313-0.552-0.412-1.037-0.285-1.47c0.125-0.422,0.476-0.807,1.056-1.141   c0.328-0.191,0.711-0.347,1.14-0.463l0.325,0.563l-0.007,0.007c-0.458,0.124-0.791,0.246-1.01,0.373   c-0.319,0.187-0.512,0.405-0.567,0.657c-0.056,0.257,0.021,0.564,0.229,0.927c0.183,0.313,0.403,0.506,0.666,0.567   c0.265,0.063,0.563-0.004,0.904-0.201c0.231-0.131,0.463-0.278,0.686-0.438l1.349,2.333l-2.478,1.431l-0.32-0.555L194.033,167.202z   "/>
-<path fill="#646464" d="M217.779,138.177l-0.558-0.322l1.655-2.866l0.352,0.204c0.336,0.188,0.598,0.422,0.79,0.686   c0.192,0.27,0.335,0.536,0.417,0.813c0.086,0.271,0.166,0.605,0.233,0.99c0.08,0.463,0.173,0.774,0.271,0.939   s0.217,0.287,0.358,0.369c0.249,0.145,0.472,0.186,0.676,0.127c0.199-0.061,0.376-0.223,0.528-0.484   c0.16-0.279,0.283-0.66,0.369-1.142l0.006-0.007l0.57,0.332c-0.11,0.49-0.275,0.933-0.506,1.328   c-0.279,0.486-0.603,0.796-0.961,0.926c-0.359,0.128-0.748,0.074-1.164-0.169c-0.234-0.132-0.432-0.322-0.592-0.568   c-0.16-0.243-0.297-0.682-0.408-1.308c-0.063-0.354-0.121-0.631-0.176-0.84c-0.059-0.209-0.14-0.406-0.244-0.592   c-0.109-0.183-0.255-0.334-0.438-0.453L217.779,138.177z"/>
-<path fill="#646464" d="M220.921,142.644c-0.285,0.492-0.677,0.767-1.177,0.816c-0.496,0.049-1.188-0.184-2.08-0.695   c-0.973-0.563-1.563-1.073-1.762-1.532c-0.201-0.457-0.158-0.935,0.129-1.437c0.254-0.438,0.562-0.699,0.92-0.787   c0.361-0.092,0.738-0.067,1.129,0.069c0.395,0.136,0.841,0.353,1.343,0.644c0.872,0.502,1.415,0.99,1.628,1.457   C221.26,141.642,221.218,142.132,220.921,142.644z M216.57,140.103c-0.125,0.216-0.098,0.445,0.09,0.691   c0.188,0.242,0.69,0.604,1.52,1.082c0.794,0.456,1.332,0.697,1.609,0.717c0.283,0.022,0.488-0.068,0.613-0.283   c0.11-0.191,0.113-0.377,0.016-0.559c-0.104-0.18-0.271-0.354-0.508-0.521c-0.234-0.17-0.568-0.372-1.002-0.618   c-0.849-0.491-1.418-0.757-1.709-0.788C216.904,139.79,216.695,139.882,216.57,140.103z"/>
-<path fill="#646464" d="M122.619,44.73l0.688,1.193c0.057-0.038,0.159-0.1,0.31-0.185c0.479-0.276,0.918-0.365,1.322-0.258   c0.399,0.107,0.743,0.399,1.02,0.881c0.318,0.55,0.414,1.037,0.286,1.468c-0.125,0.426-0.477,0.81-1.054,1.143   c-0.328,0.186-0.708,0.343-1.14,0.462l-0.326-0.567l0.008-0.004c0.459-0.121,0.793-0.246,1.007-0.371   c0.323-0.184,0.511-0.405,0.568-0.663c0.059-0.254-0.018-0.56-0.226-0.92c-0.183-0.316-0.405-0.509-0.667-0.569   c-0.261-0.065-0.563,0.003-0.901,0.199c-0.233,0.134-0.463,0.281-0.687,0.441l-1.345-2.333l2.476-1.431l0.321,0.552L122.619,44.73z   "/>
-<path fill="#646464" d="M125.968,42.798l0.689,1.192c0.054-0.037,0.159-0.099,0.308-0.186c0.479-0.275,0.919-0.363,1.321-0.256   c0.402,0.104,0.743,0.399,1.021,0.881c0.317,0.549,0.414,1.036,0.286,1.465c-0.124,0.429-0.477,0.81-1.054,1.144   c-0.328,0.19-0.708,0.344-1.138,0.464l-0.328-0.564l0.007-0.007c0.457-0.124,0.793-0.246,1.008-0.371   c0.322-0.187,0.512-0.408,0.569-0.663c0.057-0.254-0.019-0.563-0.227-0.92c-0.184-0.319-0.405-0.51-0.667-0.569   c-0.263-0.065-0.562,0.002-0.902,0.197c-0.234,0.135-0.463,0.282-0.686,0.44l-1.348-2.333l2.478-1.428l0.319,0.551L125.968,42.798z   "/>
-<path fill="#646464" d="M226.58,104.96h-0.596v-3.28h0.596v1.166h4.145l-0.271-1.166h0.597l0.519,1.636v0.54h-4.988V104.96   L226.58,104.96z"/>
-<path fill="#646464" d="M230.882,106.626h-1.377c0.006,0.067,0.009,0.188,0.009,0.36c0,0.553-0.146,0.976-0.438,1.274   c-0.293,0.295-0.717,0.442-1.275,0.442c-0.633,0-1.104-0.163-1.41-0.485c-0.311-0.322-0.464-0.817-0.464-1.484   c0-0.377,0.056-0.783,0.17-1.219h0.651v0.01c-0.123,0.458-0.182,0.813-0.182,1.061c0,0.37,0.098,0.645,0.286,0.822   c0.192,0.178,0.494,0.268,0.912,0.268c0.368,0,0.646-0.1,0.827-0.297c0.186-0.193,0.275-0.488,0.275-0.877   c0-0.271-0.014-0.543-0.037-0.813h2.691v2.857h-0.64V106.626L230.882,106.626L230.882,106.626z"/>
-<path fill="#646464" d="M195.176,43.458l-0.688,1.195c0.063,0.027,0.166,0.085,0.313,0.173c0.479,0.276,0.772,0.616,0.886,1.015   c0.109,0.402,0.023,0.845-0.255,1.326c-0.315,0.549-0.692,0.875-1.127,0.982c-0.435,0.104-0.938-0.009-1.514-0.343   c-0.328-0.187-0.652-0.44-0.97-0.752l0.326-0.567l0.008,0.004c0.332,0.332,0.613,0.563,0.824,0.687   c0.321,0.185,0.606,0.238,0.856,0.161s0.476-0.297,0.687-0.655c0.18-0.318,0.234-0.605,0.158-0.865   c-0.076-0.256-0.285-0.482-0.621-0.677c-0.234-0.135-0.475-0.261-0.725-0.374l1.348-2.333l2.479,1.428l-0.317,0.556L195.176,43.458   z"/>
-<path fill="#646464" d="M217.636,71.669l-0.515,0.297l-1.641-2.84l0.514-0.297l0.586,1.01l3.589-2.073l-0.817-0.876l0.52-0.297   l1.266,1.16l0.27,0.467l-4.319,2.495L217.636,71.669z"/>
-<path fill="#646464" d="M223.063,71.061c0.287,0.497,0.324,0.969,0.12,1.428c-0.204,0.456-0.753,0.94-1.646,1.456   c-0.973,0.563-1.711,0.817-2.207,0.761c-0.494-0.056-0.889-0.332-1.176-0.832c-0.254-0.435-0.326-0.835-0.226-1.189   c0.104-0.357,0.313-0.672,0.625-0.944c0.315-0.271,0.726-0.553,1.226-0.842c0.873-0.505,1.564-0.73,2.076-0.679   C222.365,70.269,222.768,70.55,223.063,71.061z M218.684,73.558c0.125,0.22,0.342,0.309,0.646,0.267   c0.304-0.037,0.869-0.297,1.695-0.774c0.795-0.458,1.271-0.806,1.434-1.035c0.16-0.234,0.18-0.458,0.058-0.669   c-0.11-0.192-0.271-0.291-0.478-0.292c-0.206-0.002-0.44,0.058-0.703,0.178c-0.264,0.121-0.609,0.304-1.041,0.554   c-0.85,0.489-1.36,0.854-1.537,1.089C218.582,73.113,218.556,73.341,218.684,73.558z"/>
-<circle fill="none" cx="160" cy="104.999" r="73.034"/>
-<rect x="77.074" y="22.073" fill="none" width="165.852" height="165.854"/>
-<path fill-opacity="0.4" d="M178.83,124.903c-0.299,0.297-0.776,0.297-1.072,0.005l-60.259-60.261   c-0.295-0.294-0.293-0.771,0.003-1.069l1.075-1.076c0.297-0.297,0.777-0.299,1.07-0.007l60.263,60.262   c0.291,0.295,0.291,0.773-0.008,1.068L178.83,124.903z"/>
-<rect x="147.946" y="51.095" transform="matrix(-0.7065 0.7077 -0.7077 -0.7065 320.0809 54.657)" fill="#FFFFFF" width="1.521" height="85.22"/>
-<linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="426.8613" y1="1063.6152" x2="426.8613" y2="1099.1973" gradientTransform="matrix(1 0 0 1 -249.04 -995.9609)">
-<stop offset="0" style="stop-color:#FFFFFF"/>
-<stop offset="0.9455" style="stop-color:#CBCBCB"/>
-<stop offset="1" style="stop-color:#CBCBCB"/>
-</linearGradient>
-<path display="none" fill="url(#SVGID_5_)" d="M163.73,103.988c-3.875,0-6.007-2.244-6.007-6.319v-13.96   c0-4.23,3.511-5.73,6.517-5.73h0.287c0.248,0,0.271-0.002,0.474-0.01l0.163-0.006c1.625-0.056,3.359-1.23,3.357-4.359   c-0.002-2.646,0.717-4.59,2.139-5.769c1.217-1.011,2.662-1.222,3.664-1.222c0.711,0,1.211,0.107,1.229,0.112   c14.013,2.417,21.495,14.197,22.323,21.788c0.234,2.158-0.549,4.538-2.045,6.206c-1.002,1.117-2.793,2.45-5.637,2.45   c-4.256,0-5.938,1.468-6.84,2.57l-0.255,0.317c-1.168,1.471-3.125,3.933-7.319,3.933L163.73,103.988L163.73,103.988z"/>
-<linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="426.8613" y1="1099.5459" x2="426.8613" y2="1062.8889" gradientTransform="matrix(1 0 0 1 -249.04 -995.9609)">
-<stop offset="0" style="stop-color:#B4B4B4"/>
-<stop offset="1" style="stop-color:#A0A0A0"/>
-</linearGradient>
-<path display="none" fill="url(#SVGID_6_)" d="M197.877,88.514c-0.828-7.591-8.313-19.371-22.323-21.788   c-0.021-0.005-0.521-0.112-1.229-0.112c-1.002,0-2.447,0.211-3.664,1.222c-1.422,1.179-2.141,3.122-2.139,5.769   c0.002,3.129-1.732,4.304-3.357,4.359l-0.163,0.006c-0.2,0.008-0.226,0.01-0.474,0.01h-0.287c-3.006,0-6.517,1.5-6.517,5.73v13.96   c0,4.075,2.134,6.319,6.007,6.319h12.055c4.193,0,6.149-2.462,7.318-3.931l0.254-0.317c0.897-1.104,2.586-2.57,6.842-2.57   c2.844,0,4.634-1.333,5.638-2.45C197.326,93.051,198.113,90.672,197.877,88.514z M190.195,96.529c-4.494,0-6.334,1.576-7.336,2.807   c-1.164,1.436-2.896,4.014-7.076,4.014c-4.183,0-7.479,0-12.057,0s-5.365-3.25-5.365-5.681c0-2.429,0-13.96,0-13.96   c0-3.771,3.051-5.091,5.877-5.091c0.639,0,0.479,0.002,0.945-0.015c2.119-0.072,3.979-1.645,3.977-4.998   c-0.006-7.635,6.252-6.255,6.252-6.255c13.789,2.379,21.035,13.987,21.824,21.231C197.609,91.963,195.219,96.529,190.195,96.529z"/>
-<polygon fill-opacity="0.4" points="172.523,96.783 127.42,141.884 122.601,142.13 123.136,137.562 168.218,92.478  "/>
-<polygon points="168.218,93.554 171.447,96.783 127.087,141.14 123.463,141.325 123.86,137.911  "/>
-<polygon fill-opacity="0.4" points="154.207,93.823 188.01,127.628 187.72,132.985 182.611,132.988 148.826,99.202  "/>
-<polygon fill="#1A1A1A" points="149.902,99.202 154.207,94.899 187.267,127.958 186.914,132.123 182.962,132.265  "/>
-<path fill-opacity="0.4" d="M155.16,100.157c2.668-2.672,7.013-2.669,9.684,0c2.669,2.669,2.669,7.012,0,9.68   c-2.671,2.672-7.014,2.674-9.684,0.002C152.49,107.171,152.49,102.824,155.16,100.157L155.16,100.157z"/>
-<linearGradient id="SVGID_7_" gradientUnits="userSpaceOnUse" x1="-4726.458" y1="3070.1074" x2="-4726.458" y2="3057.7832" gradientTransform="matrix(-0.7071 0.7071 0.7071 0.7071 -5348.5923 1280.5605)">
-<stop offset="0" style="stop-color:#999999"/>
-<stop offset="0.31" style="stop-color:#4D4D4D"/>
-<stop offset="1" style="stop-color:#000000"/>
-</linearGradient>
-<circle fill="url(#SVGID_7_)" cx="160.001" cy="104.998" r="6.162"/>
-<path fill="#E6E6E6" d="M156.129,101.124c2.135-2.133,5.609-2.136,7.749,0c2.134,2.136,2.134,5.61-0.003,7.747   c-2.137,2.136-5.612,2.136-7.746,0C153.992,106.734,153.994,103.261,156.129,101.124L156.129,101.124z"/>
-</g>
-<rect fill="none" width="320" height="210"/>
-</svg>
Binary file homescreenapp/widgetplugins/hsclockwidgetplugin/resource/tclock.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/widgetplugins/hsclockwidgetplugin/tsrc/t_hsclockwidgetplugin/inc/t_hsclockwidget.h	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,85 @@
+/*
+* Copyright (c) 2008, 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:  test code
+*
+*/
+
+
+
+#include <QtTest/QtTest>
+
+#ifdef Q_OS_SYMBIAN  
+#include <e32const.h>
+#endif
+
+// forward declaration
+class HsClockWidget;
+
+/**
+* @test Implementation for the clock plugin test code
+*/
+class TestClockWidget : public QObject
+{
+    Q_OBJECT
+
+    private slots:
+
+    void initTestCase();
+    void cleanupTestCase();
+    void init();
+    void cleanup();
+
+    // hsclockwidget.cpp tests
+    void createClockWidget();
+    void toggleAnalogDigital();
+
+    void testClockOnInitalize();
+    void testClockOnShow();
+    void testClockOnHide();
+    void testOnUninitialize();
+    void testOnSettingsChanged();
+    void testClockShape();
+
+    // hsanalogclockwidget.cpp tests    
+    void createAnalogClockWidget();
+    void analogClockWidgetTick();
+    void analogClockWidgetPolish();
+    void analogClockWidgetShape();
+    
+    // hsdigitalclocklabel.cpp tests    
+    void createDigitalClockWidget();
+    void digitalClockWidgetTick();
+    void digitalClockWidgetPolish();
+    void digitalClockWidgetShape();
+
+    // hsclockwidgettimer.cpp
+    void testHsClockWidgetTimer();
+    
+#ifdef Q_OS_SYMBIAN    
+    // hsclocksettingsnotifier_symbian.cpp tests
+    void testSettingOfClockAndTimeFormat();
+#endif
+
+private:
+
+    HsClockWidget *mClockWidget;
+
+#ifdef Q_OS_SYMBIAN
+    TClockFormat mClockFormat;
+    TTimeFormat mTimeFormat;
+#endif
+    
+    };
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/widgetplugins/hsclockwidgetplugin/tsrc/t_hsclockwidgetplugin/installs_win32.pri	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,20 @@
+#
+# 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:
+#
+
+testfiles.path = ../../../../../../bin/hstests/
+testfiles.files = ./debug/t_hsclockwidgetplugin.exe
+
+INSTALLS += testfiles
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/widgetplugins/hsclockwidgetplugin/tsrc/t_hsclockwidgetplugin/sis/t_hsclockwidgetplugin.pkg	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,36 @@
+;
+; 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:
+;
+
+; Language
+&EN
+
+; SIS header: name, uid, version
+#{"t_t_hsclockwidgetplugin"},(0x20022F6D),1,0,0
+
+; Localised Vendor name
+%{"Nokia"}
+
+; Unique Vendor name
+:"Nokia"
+
+; Supports S60 5th Edition
+[0x1028315F], 0, 0, 0, {"S60ProductID"}
+
+; Clock widget unittest
+"/epoc32/release/armv5/urel/t_hsclockwidgetplugin.exe"                         - "c:/sys/bin/t_hsclockwidgetplugin.exe"
+"/epoc32/data/z/private/10003a3f/import/apps/t_hsclockwidgetplugin_reg.rsc"    - "c:/private/10003a3f/import/apps/t_hsclockwidgetplugin_reg.rsc"
+"/epoc32/data/z/resource/apps/t_hsclockwidgetplugin.rsc"                       - "c:/resource/apps/t_hsclockwidgetplugin.rsc"
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/widgetplugins/hsclockwidgetplugin/tsrc/t_hsclockwidgetplugin/sis/t_hsclockwidgetplugin_sisx.bat	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,30 @@
+@rem
+@rem Copyright (c) 2009 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 t_hsclockwidgetplugin.sisx del t_hsclockwidgetplugin.sisx
+
+makesis t_hsclockwidgetplugin.pkg
+signsis t_hsclockwidgetplugin.sis t_hsclockwidgetplugin.sisx ../../../../../internal/sis/rd.cer ../../../../../internal/sis/rd-key.pem
+
+if exist t_hsclockwidgetplugin.sisx (
+echo t_hsclockwidgetplugin.sisx creation SUCCEEDED
+del t_hsclockwidgetplugin.sis
+)
+
+if not exist t_hsclockwidgetplugin.sisx (
+echo t_hsclockwidgetplugin.sisx creation FAILED
+)
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/widgetplugins/hsclockwidgetplugin/tsrc/t_hsclockwidgetplugin/src/hsdatabase_mock.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,228 @@
+/*
+* 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 <QSqlDatabase>
+#include <QSqlQuery>
+#include <QSqlRecord>
+#include <QVariantHash>
+#include <QDir>
+
+#include "hsdatabase.h"
+#include "hsdomainmodeldatastructures.h"
+
+HsDatabase::HsDatabase(QObject *parent)
+  : QObject(parent)
+{
+}
+
+HsDatabase::~HsDatabase()
+{
+ 
+}
+
+void HsDatabase::setConnectionName(const QString &name)
+{
+    mConnectionName = name;
+}
+ 
+QString HsDatabase::connectionName() const
+{
+    return mConnectionName;
+}
+
+void HsDatabase::setDatabaseName(const QString &name)
+{
+    mDatabaseName = QDir::toNativeSeparators(name);
+}
+ 
+QString HsDatabase::databaseName() const
+{
+    return mDatabaseName;
+}
+
+bool HsDatabase::open()
+{
+    return true;
+}
+ 
+void HsDatabase::close()
+{
+    
+}
+
+bool HsDatabase::transaction()
+{
+    return true;
+}
+ 
+bool HsDatabase::rollback()
+{
+    return true;
+}
+ 
+bool HsDatabase::commit()
+{
+    return true;
+}
+
+bool HsDatabase::scene(HsSceneData &)
+{
+    return true;
+}
+
+bool HsDatabase::pages(QList<HsPageData> &)
+{
+    return true;
+}
+
+bool HsDatabase::page(HsPageData &)
+{
+   return true;
+}
+
+bool HsDatabase::insertPage(HsPageData &)
+{
+   return true;
+}
+
+bool HsDatabase::updatePage(const HsPageData &)
+{
+    return true;
+}
+
+bool HsDatabase::deletePage(int )
+{
+   return true;
+}
+
+bool HsDatabase::widgets(int , QList<HsWidgetData> &)
+{
+   return true;
+}
+
+bool HsDatabase::widgets(const QString &, QList<HsWidgetData> &)
+{
+    return true;
+}
+
+bool HsDatabase::widgets(const QString &, const QVariantHash &, int &count)
+{
+    count = 0;
+    return true;
+}
+bool HsDatabase::widget(HsWidgetData &)
+{
+    return true;
+}
+
+bool HsDatabase::insertWidget(HsWidgetData &)
+{
+    return true;
+}
+
+bool HsDatabase::updateWidget(const HsWidgetData &)
+{
+    return true;
+}
+
+bool HsDatabase::deleteWidget(int )
+{
+    return true;
+}
+
+bool HsDatabase::deleteWidgets(const QString &)
+{
+    return true;
+}
+
+bool HsDatabase::widgetPresentation(HsWidgetPresentationData &)
+{
+    return true;
+}
+
+bool HsDatabase::setWidgetPresentation(const HsWidgetPresentationData &)
+{
+    return true;
+}
+
+bool HsDatabase::deleteWidgetPresentation(int ,Qt::Orientation)
+{
+    return true;
+}
+
+bool HsDatabase::widgetPreferences(int , QVariantHash &)
+{
+    return true;
+}
+
+bool HsDatabase::widgetPreference(int , const QString &, QVariant &)
+{
+    return true;
+}
+
+bool HsDatabase::setWidgetPreferences(int , const QVariantHash &)
+{
+    return true;
+}
+ 
+void HsDatabase::setInstance(HsDatabase *instance)
+{
+    if (mInstance != instance) {
+        HsDatabase *oldInstance = mInstance;
+        mInstance = instance;
+        delete oldInstance;
+    }
+}
+
+HsDatabase *HsDatabase::instance()
+{
+    return mInstance;
+}
+
+HsDatabase *HsDatabase::takeInstance()
+{
+    HsDatabase *instance = mInstance;
+    mInstance = 0;
+    return instance;
+}
+  
+bool HsDatabase::checkConnection() const
+{
+    return true;
+}
+
+bool HsDatabase::configuration(QVariantHash &configuration)
+{
+    Q_UNUSED(configuration)
+    return true;
+}
+
+bool HsDatabase::updateWidgetZValues(const QHash<int, qreal> &data, Qt::Orientation orientation)
+{
+    Q_UNUSED(data)
+    Q_UNUSED(orientation)
+    return true;
+}
+
+bool HsDatabase::matchWidgetPreferences(const QVariantHash &preferences, const QMultiMap<QString, QString>& storedPreferences)
+{
+    Q_UNUSED(preferences)
+    Q_UNUSED(storedPreferences)
+    return true;
+}
+
+HsDatabase *HsDatabase::mInstance(0);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/widgetplugins/hsclockwidgetplugin/tsrc/t_hsclockwidgetplugin/src/t_hsanalogclockwidget.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,70 @@
+/*
+* Copyright (c) 2008, 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:  test code
+*
+*/
+
+
+
+#include <QtTest/QtTest>
+
+#include <QGraphicsSceneResizeEvent>
+#include <HbStyleParameters>
+#include <HbIconItem>
+
+#include "t_hsclockwidget.h"
+#include "hsanalogclockwidget.h"
+
+
+void TestClockWidget::createAnalogClockWidget()
+{
+    HsAnalogClockWidget *clock = new HsAnalogClockWidget();
+    QVERIFY(clock);
+
+    QVERIFY(clock->mBackground);
+    QVERIFY(clock->mHourHand);
+    QVERIFY(clock->mMinuteHand);
+    QVERIFY(clock->mSecondHand);
+
+    QGraphicsSceneResizeEvent event;
+    clock->resizeEvent(&event);
+
+    delete clock;
+}
+
+void TestClockWidget::analogClockWidgetTick()
+{
+    HsAnalogClockWidget *clock = new HsAnalogClockWidget();
+    clock->tick();
+    delete clock;
+}
+
+void TestClockWidget::analogClockWidgetPolish()
+{
+    HsAnalogClockWidget *clock = new HsAnalogClockWidget();
+    HbStyleParameters params;
+    clock->polish(params);
+    HbIconItem *iconItem=static_cast<HbIconItem*>(clock->mHourHand);
+    QVERIFY(iconItem);
+    delete clock;
+}
+
+void TestClockWidget::analogClockWidgetShape()
+{
+    HsAnalogClockWidget *clock = new HsAnalogClockWidget();
+    QPainterPath path = clock->shape();
+    delete clock;
+}
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/widgetplugins/hsclockwidgetplugin/tsrc/t_hsclockwidgetplugin/src/t_hsclocksettingsnotifier.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,104 @@
+/*
+* Copyright (c) 2008, 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:  test code
+*
+*/
+
+
+
+#include <QtTest/QtTest>
+
+#ifdef Q_OS_SYMBIAN
+#include "t_hsclockwidget.h"
+#include "hsclocksettingsnotifier_symbian.h"
+
+#include <bacntf.h> // CEnvironmentChangeNotifier
+
+
+namespace
+{
+    const char ANALOG[] = "analog";
+    const char DIGITAL[] = "digital";
+    const char TIME12[] = "TIME12";
+    const char TIME24[] = "TIME24";
+}
+
+
+void TestClockWidget::testSettingOfClockAndTimeFormat()
+    {
+    HsClockSettingsNotifier clockSettingsNotifier;
+    
+    QVERIFY(clockSettingsNotifier.mDateTimeNotifier);
+    QVERIFY(clockSettingsNotifier.mDateTimeNotifier->IsActive());
+    
+    TLocale locale;
+    
+    // ANALOG, TIME12
+    locale.SetClockFormat(EClockAnalog);
+    locale.SetTimeFormat(ETime12);
+    locale.Set();
+    qApp->processEvents();
+    
+    TClockFormat clockFormat = locale.ClockFormat();
+    TTimeFormat timeFormat = locale.TimeFormat();
+
+    QCOMPARE( clockSettingsNotifier.clockFormat(), QString(ANALOG));
+    QCOMPARE( clockSettingsNotifier.timeFormat(), QString(TIME12));
+
+    // ANALOG, TIME24
+    locale.SetClockFormat(EClockAnalog);
+    locale.SetTimeFormat(ETime24);
+    locale.Set();
+    qApp->processEvents();
+    
+    clockFormat = locale.ClockFormat();
+    timeFormat = locale.TimeFormat();
+        
+    QCOMPARE( clockSettingsNotifier.clockFormat(), QString(ANALOG));
+    QCOMPARE( clockSettingsNotifier.timeFormat(), QString(TIME24));
+    
+    // DIGITAL, TIME24
+    locale.SetClockFormat(EClockDigital);
+    locale.SetTimeFormat(ETime24);
+    locale.Set();
+    qApp->processEvents();
+    
+    clockFormat = locale.ClockFormat();
+    timeFormat = locale.TimeFormat();
+        
+    QCOMPARE( clockSettingsNotifier.clockFormat(), QString(DIGITAL));
+    QCOMPARE( clockSettingsNotifier.timeFormat(), QString(TIME24));
+
+    // DIGITAL, TIME12
+    locale.SetClockFormat(EClockDigital);
+    locale.SetTimeFormat(ETime12);
+    locale.Set();
+    qApp->processEvents();
+    
+    clockFormat = locale.ClockFormat();
+    timeFormat = locale.TimeFormat();
+        
+    QCOMPARE( clockSettingsNotifier.clockFormat(), QString(DIGITAL));
+    QCOMPARE( clockSettingsNotifier.timeFormat(), QString(TIME12));
+
+    clockSettingsNotifier.createObserver();
+    QVERIFY(clockSettingsNotifier.mDateTimeNotifier);
+    QVERIFY(clockSettingsNotifier.mDateTimeNotifier->IsActive());
+    }
+
+
+
+#endif
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/widgetplugins/hsclockwidgetplugin/tsrc/t_hsclockwidgetplugin/src/t_hsclockwidget.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,198 @@
+/*
+* Copyright (c) 2008, 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:  test code
+*
+*/
+
+
+
+#include <QtTest/QtTest>
+#include <QGraphicsItem>
+#include <QGraphicsSceneMouseEvent>
+#include <QPainter>
+#include <QComboBox>
+#include <QMap>
+
+#include "t_hsclockwidget.h"
+#include "hsclockwidget.h"
+#include "hsanalogclockwidget.h"
+#include "hsdigitalclockwidget.h"
+#include "hsclockwidgettimer.h"
+
+#ifdef Q_OS_SYMBIAN
+#include <bacntf.h> // TLocale
+#include <apgtask.h>
+#include <eikenv.h>
+#endif //Q_OS_SYMBIAN
+
+namespace
+{
+    const char ANALOG[] = "analog";
+    const char DIGITAL[] = "digital";
+    const char TIME12[] = "TIME12";
+    const char TIME24[] = "TIME24";
+}
+
+
+#ifdef Q_OS_SYMBIAN
+#define KClockApUid TUid::Uid(0x10005903)
+#endif //Q_OS_SYMBIAN
+
+void TestClockWidget::initTestCase()
+    {
+#ifdef Q_OS_SYMBIAN
+    TLocale locale;
+    mClockFormat = locale.ClockFormat();
+    mTimeFormat = locale.TimeFormat();
+#endif
+    }
+
+void TestClockWidget::cleanupTestCase()
+    {
+#ifdef Q_OS_SYMBIAN
+    TLocale locale;
+    locale.SetClockFormat(mClockFormat);
+    locale.SetTimeFormat(mTimeFormat);
+    locale.Set();
+#endif
+    }
+
+void TestClockWidget::init()
+    {
+    QGraphicsWidget *hostWidget = new QGraphicsWidget();
+    mClockWidget = new HsClockWidget(hostWidget);
+    mClockWidget->resize(100,100);
+    QVERIFY( mClockWidget );
+    }
+
+void TestClockWidget::cleanup()
+    {
+    //delete mClockWidget->parentItem();
+    delete mClockWidget;
+    mClockWidget = 0;
+
+    }
+
+void TestClockWidget::createClockWidget()
+    {
+    }
+
+
+void TestClockWidget::toggleAnalogDigital()
+    {
+    mClockWidget->onInitialize();
+    QString clockType = mClockWidget->mClockType;
+    
+    mClockWidget->onClockTapped();
+
+#ifndef Q_OS_SYMBIAN
+    // toggles analog/digital on windows
+    if (clockType == DIGITAL) {
+        QCOMPARE( mClockWidget->mClockType, QString(ANALOG));
+    } else {
+        QCOMPARE( mClockWidget->mClockType, QString(DIGITAL));
+    }
+
+    clockType = mClockWidget->mClockType;
+
+    mClockWidget->onClockTapped();
+
+    if (clockType == DIGITAL) {
+        QCOMPARE( mClockWidget->mClockType, QString(ANALOG));
+    } else {
+        QCOMPARE( mClockWidget->mClockType, QString(DIGITAL));
+    }
+#else    
+    QCOMPARE( mClockWidget->mClockType, clockType);   
+    QTest::qWait(6000);
+    TApaTaskList taskList(CEikonEnv::Static()->WsSession());    
+    TApaTask task = taskList.FindApp(KClockApUid);    
+    if (task.Exists()){
+        task.SendToBackground();        
+    }    
+    else {
+        QWARN("Clock application start failed");
+    }
+#endif
+    }
+
+
+void TestClockWidget::testClockOnInitalize()
+{
+    mClockWidget->onInitialize();
+    QVERIFY(mClockWidget->mWidget);
+}
+
+void TestClockWidget::testClockOnShow()
+{
+    mClockWidget->onInitialize();
+    QVERIFY(mClockWidget->mWidget);
+    QVERIFY(!HsClockWidgetTimer::instance()->mTimer->isActive());
+    mClockWidget->onShow();
+    QVERIFY(HsClockWidgetTimer::instance()->mTimer->isActive());
+
+    QSignalSpy updateSpy(HsClockWidgetTimer::instance()->mTimer,SIGNAL(timeout()));
+    QEventLoop waitUntilTimeoutSignaled;
+    QTimer eventLoopTimer;
+    eventLoopTimer.setInterval(1500);
+    eventLoopTimer.setSingleShot(true);
+    connect(HsClockWidgetTimer::instance()->mTimer, SIGNAL(timeout()),
+            &waitUntilTimeoutSignaled, SLOT(quit()));
+    connect(&eventLoopTimer, SIGNAL(timeout()), &waitUntilTimeoutSignaled, SLOT(quit()));
+    eventLoopTimer.start();
+    waitUntilTimeoutSignaled.exec();
+
+    //Verify timeout was received instead of eventLoopTimer has elapsed.
+    QCOMPARE(updateSpy.count(), 1);
+    QVERIFY(eventLoopTimer.isActive());
+    eventLoopTimer.stop();
+
+}
+
+void TestClockWidget::testClockOnHide()
+{
+    mClockWidget->onInitialize();
+    mClockWidget->onShow();
+    mClockWidget->onHide();
+}
+
+void TestClockWidget::testOnUninitialize()
+{
+    mClockWidget->onInitialize(); 
+    mClockWidget->onUninitialize();
+}
+
+
+void TestClockWidget::testOnSettingsChanged()
+{
+    mClockWidget->mClockType = QString(ANALOG);
+    mClockWidget->mTimeType = QString(TIME12);
+
+    mClockWidget->onInitialize();
+    mClockWidget->onShow();
+    mClockWidget->onSettingsChanged(QString(DIGITAL), QString(TIME24));
+    mClockWidget->onSettingsChanged(QString(DIGITAL), QString(TIME12));
+    mClockWidget->onSettingsChanged(QString(ANALOG), QString(TIME24));
+    mClockWidget->onSettingsChanged(QString(ANALOG), QString(TIME12));
+}
+
+void TestClockWidget::testClockShape()
+{
+    mClockWidget->onInitialize();
+    mClockWidget->shape();	
+}
+
+QTEST_MAIN(TestClockWidget)
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/widgetplugins/hsclockwidgetplugin/tsrc/t_hsclockwidgetplugin/src/t_hsdigitalclockwidget.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,78 @@
+/*
+* Copyright (c) 2008, 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:  test code
+*
+*/
+
+
+
+#include <QtTest/QtTest>
+
+#include <QGraphicsSceneResizeEvent>
+#include "t_hsclockwidget.h"
+#include "hsdigitalclockwidget.h"
+#include "hsclockwidgettimer.h"
+
+
+
+void TestClockWidget::createDigitalClockWidget()
+{
+    HsDigitalClockWidget *clock = new HsDigitalClockWidget();
+    QVERIFY(clock);
+
+    QVERIFY(clock->mBackground);
+    QVERIFY(clock->mDigit1);
+    QVERIFY(clock->mDigit2);
+    QVERIFY(clock->mDigit3);
+    QVERIFY(clock->mDigit4);
+    QVERIFY(clock->mDigit5);
+    QVERIFY(clock->mDigit6);
+
+    QGraphicsSceneResizeEvent event;
+    clock->resizeEvent(&event);
+
+    delete clock;
+}
+
+void TestClockWidget::digitalClockWidgetTick()
+{
+    HsDigitalClockWidget *clock = new HsDigitalClockWidget(false);
+    clock->tick();
+    clock->setAmPm(true);
+    clock->setAmPm(false);
+    clock->setAmPm(false);
+    delete clock;
+}
+
+void TestClockWidget::digitalClockWidgetPolish()
+{
+    HsDigitalClockWidget *clock = new HsDigitalClockWidget();
+    HbStyleParameters params;
+    clock->polish(params);
+    HbIconItem *iconItem=static_cast<HbIconItem*>(clock->mDigit2);
+    QVERIFY(iconItem);
+    delete clock;
+}
+
+void TestClockWidget::digitalClockWidgetShape()
+{
+    HsDigitalClockWidget *clock = new HsDigitalClockWidget();
+    QPainterPath path = clock->shape();
+    delete clock;
+}
+
+void TestClockWidget::testHsClockWidgetTimer()
+{
+    HsClockWidgetTimer timer;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/widgetplugins/hsclockwidgetplugin/tsrc/t_hsclockwidgetplugin/t_hsclockwidgetplugin.pro	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,71 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+TEMPLATE = app
+
+CONFIG += debug_and_release
+
+QT += testlib
+QT += sql 
+
+CONFIG(debug, debug|release) {
+    DESTDIR = ./debug
+	} else {
+    DESTDIR = ./release
+	}
+
+CONFIG += hb
+
+HB += hbfeedback
+
+DEFINES += HOMESCREEN_TEST \
+           HSDOMAINMODEL_TEST
+
+
+coverage: {
+    DEFINES += COVERAGE_MEASUREMENT
+}
+
+INCLUDEPATH += ./inc \
+               ../../inc \
+               ../../../../inc \
+               ../../../../hsdomainmodel/inc
+
+DEPENDPATH += ./inc \
+              ./src \
+              ../../inc \
+              ../../src
+
+win32:include(t_hsclockwidgetplugin_win.pri)
+symbian:include(t_hsclockwidgetplugin_symbian.pri)
+
+symbian: {
+    CONFIG += symbian_test
+    CONFIG -= hb
+    load(hb.prf)
+    CONFIG -= symbian_i18n
+    TARGET.UID3 = 0x20022F6D
+    TARGET.CAPABILITY = CAP_APPLICATION AllFiles WriteDeviceData ReadDeviceData
+    LIBS += -lbafl -lapgrfx -lcone
+    
+    MMP_RULES += SMPSAFE
+
+}
+
+RESOURCES = ../../hsclockwidgetplugin.qrc
+
+win32:include(installs_win32.pri)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/widgetplugins/hsclockwidgetplugin/tsrc/t_hsclockwidgetplugin/t_hsclockwidgetplugin_symbian.pri	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,33 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+HEADERS += ./inc/*.h \
+           ../../inc/hsanalogclockwidget.h \
+           ../../inc/hsclockwidget.h \
+           ../../inc/hsclockwidgettimer.h \
+           ../../inc/hsdigitalclockwidget.h \
+           ../../inc/hsclocksettingsnotifier_symbian.h \
+           ../../../../hsdomainmodel/inc/hsconfiguration.h \
+           ../../../../hsdomainmodel/inc/hsdatabase.h    
+
+SOURCES += ./src/*.cpp \
+           ../../src/hsanalogclockwidget.cpp \
+           ../../src/hsclockwidget.cpp \
+           ../../src/hsclockwidgettimer.cpp \
+           ../../src/hsdigitalclockwidget.cpp \
+           ../../src/hsclocksettingsnotifier_symbian.cpp \
+           ../../../../hsdomainmodel/src/hsconfiguration.cpp
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/widgetplugins/hsclockwidgetplugin/tsrc/t_hsclockwidgetplugin/t_hsclockwidgetplugin_win.pri	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,31 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+HEADERS += ./inc/*.h \
+           ../../inc/hsanalogclockwidget.h \
+           ../../inc/hsclockwidget.h \
+           ../../inc/hsclockwidgettimer.h \
+           ../../inc/hsdigitalclockwidget.h \
+           ../../../../hsdomainmodel/inc/hsconfiguration.h \
+           ../../../../hsdomainmodel/inc/hsdatabase.h    
+
+
+SOURCES += ./src/*.cpp \
+           ../../src/hsanalogclockwidget.cpp \
+           ../../src/hsclockwidget.cpp \
+           ../../src/hsclockwidgettimer.cpp \
+           ../../src/hsdigitalclockwidget.cpp \
+           ../../../../hsdomainmodel/src/hsconfiguration.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/widgetplugins/hsclockwidgetplugin/tsrc/tsrc.pro	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,21 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+TEMPLATE = subdirs
+SUBDIRS  = t_hsclockwidgetplugin
+           
+CONFIG  += ordered
+
--- a/homescreenapp/widgetplugins/hsshortcutwidgetplugin/hsshortcutwidgetplugin.pro	Fri Sep 17 08:27:54 2010 +0300
+++ b/homescreenapp/widgetplugins/hsshortcutwidgetplugin/hsshortcutwidgetplugin.pro	Mon Oct 04 00:07:25 2010 +0300
@@ -41,6 +41,7 @@
 
 symbian: {
     TARGET.UID3 = 0x20022F46
+    MMP_RULES += SMPSAFE
 }
 
 exportResources(./resource/*.manifest, $$WIDGET_SUBDIR)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/widgetplugins/hsshortcutwidgetplugin/tsrc/t_hsshortcutwidget/inc/t_hsshortcutwidget.h	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,40 @@
+/*
+* Copyright (c) 2008, 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 <QtTest/QtTest>
+#include "hsshortcutservice.h"
+
+class QStateMachine;
+
+class TestShortcutWidget : public QObject
+{
+    Q_OBJECT
+
+private slots:
+    void initTestCase();
+    void cleanupTestCase();
+
+    void testConstruction();
+    void testProperties();
+    void testSignals();
+    void testShowHide();
+    void testCaNotifier();
+    void testUserInteraction();
+
+private:
+    HsShortcutService *mShortcutService;
+    QStateMachine *mMachine;
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/widgetplugins/hsshortcutwidgetplugin/tsrc/t_hsshortcutwidget/sis/t_hsshortcutwidget.pkg	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,35 @@
+;
+; 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:
+;
+
+; Language
+&EN
+
+; SIS header: name, uid, version
+#{"t_hsshortcutwidget"},(0x20022F64),1,0,0
+
+; Localised Vendor name
+%{"Nokia"}
+
+; Unique Vendor name
+:"Nokia"
+
+; Supports S60 5th Edition
+[0x1028315F], 0, 0, 0, {"S60ProductID"}
+
+; Shortcut widget unittest
+"/epoc32/release/armv5/urel/t_hsshortcutwidget.exe"                         - "c:/sys/bin/t_hsshortcutwidget.exe"
+"/epoc32/data/z/private/10003a3f/import/apps/t_hsshortcutwidget_reg.rsc"    - "c:/private/10003a3f/import/apps/t_hsshortcutwidget_reg.rsc"
+"/epoc32/data/z/resource/apps/t_hsshortcutwidget.rsc"                       - "c:/resource/apps/t_hsshortcutwidget.rsc"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/widgetplugins/hsshortcutwidgetplugin/tsrc/t_hsshortcutwidget/sis/t_hsshortcutwidget_sisx.bat	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,30 @@
+@rem
+@rem Copyright (c) 2009 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 t_hsshortcutwidget.sisx del t_hsshortcutwidget.sisx
+
+makesis t_hsshortcutwidget.pkg
+signsis t_hsshortcutwidget.sis t_hsshortcutwidget.sisx ../../../../../internal/sis/rd.cer ../../../../../internal/sis/rd-key.pem
+
+if exist t_hsshortcutwidget.sisx (
+echo t_hsshortcutwidget.sisx creation SUCCEEDED
+del t_hsshortcutwidget.sis
+)
+
+if not exist t_hsshortcutwidget.sisx (
+echo t_hsshortcutwidget.sisx creation FAILED
+)
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/widgetplugins/hsshortcutwidgetplugin/tsrc/t_hsshortcutwidget/src/hsdatabase_mock.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,228 @@
+/*
+* 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 <QSqlDatabase>
+#include <QSqlQuery>
+#include <QSqlRecord>
+#include <QVariantHash>
+#include <QDir>
+
+#include "hsdatabase.h"
+#include "hsdomainmodeldatastructures.h"
+
+HsDatabase::HsDatabase(QObject *parent)
+  : QObject(parent)
+{
+}
+
+HsDatabase::~HsDatabase()
+{
+ 
+}
+
+void HsDatabase::setConnectionName(const QString &name)
+{
+    mConnectionName = name;
+}
+ 
+QString HsDatabase::connectionName() const
+{
+    return mConnectionName;
+}
+
+void HsDatabase::setDatabaseName(const QString &name)
+{
+    mDatabaseName = QDir::toNativeSeparators(name);
+}
+ 
+QString HsDatabase::databaseName() const
+{
+    return mDatabaseName;
+}
+
+bool HsDatabase::open()
+{
+    return true;
+}
+ 
+void HsDatabase::close()
+{
+    
+}
+
+bool HsDatabase::transaction()
+{
+    return true;
+}
+ 
+bool HsDatabase::rollback()
+{
+    return true;
+}
+ 
+bool HsDatabase::commit()
+{
+    return true;
+}
+
+bool HsDatabase::scene(HsSceneData &)
+{
+    return true;
+}
+
+bool HsDatabase::pages(QList<HsPageData> &)
+{
+    return true;
+}
+
+bool HsDatabase::page(HsPageData &)
+{
+   return true;
+}
+
+bool HsDatabase::insertPage(HsPageData &)
+{
+   return true;
+}
+
+bool HsDatabase::updatePage(const HsPageData &)
+{
+    return true;
+}
+
+bool HsDatabase::deletePage(int )
+{
+   return true;
+}
+
+bool HsDatabase::widgets(int , QList<HsWidgetData> &)
+{
+   return true;
+}
+
+bool HsDatabase::widgets(const QString &, QList<HsWidgetData> &)
+{
+    return true;
+}
+
+bool HsDatabase::widgets(const QString &, const QVariantHash &, int &count)
+{
+    count = 0;
+    return true;
+}
+bool HsDatabase::widget(HsWidgetData &)
+{
+    return true;
+}
+
+bool HsDatabase::insertWidget(HsWidgetData &)
+{
+    return true;
+}
+
+bool HsDatabase::updateWidget(const HsWidgetData &)
+{
+    return true;
+}
+
+bool HsDatabase::deleteWidget(int )
+{
+    return true;
+}
+
+bool HsDatabase::deleteWidgets(const QString &)
+{
+    return true;
+}
+
+bool HsDatabase::widgetPresentation(HsWidgetPresentationData &)
+{
+    return true;
+}
+
+bool HsDatabase::setWidgetPresentation(const HsWidgetPresentationData &)
+{
+    return true;
+}
+
+bool HsDatabase::deleteWidgetPresentation(int, Qt::Orientation)
+{
+    return true;
+}
+
+bool HsDatabase::widgetPreferences(int , QVariantHash &)
+{
+    return true;
+}
+
+bool HsDatabase::widgetPreference(int , const QString &, QVariant &)
+{
+    return true;
+}
+
+bool HsDatabase::setWidgetPreferences(int , const QVariantHash &)
+{
+    return true;
+}
+ 
+void HsDatabase::setInstance(HsDatabase *instance)
+{
+    if (mInstance != instance) {
+        HsDatabase *oldInstance = mInstance;
+        mInstance = instance;
+        delete oldInstance;
+    }
+}
+
+HsDatabase *HsDatabase::instance()
+{
+    return mInstance;
+}
+
+HsDatabase *HsDatabase::takeInstance()
+{
+    HsDatabase *instance = mInstance;
+    mInstance = 0;
+    return instance;
+}
+  
+bool HsDatabase::checkConnection() const
+{
+    return true;
+}
+
+bool HsDatabase::configuration(QVariantHash &configuration)
+{
+    Q_UNUSED(configuration)
+    return true;
+}
+
+bool HsDatabase::updateWidgetZValues(const QHash<int, qreal> &data, Qt::Orientation orientation)
+{
+    Q_UNUSED(data)
+    Q_UNUSED(orientation)
+    return true;
+}
+
+bool HsDatabase::matchWidgetPreferences(const QVariantHash &preferences, const QMultiMap<QString, QString>& storedPreferences)
+{
+    Q_UNUSED(preferences)
+    Q_UNUSED(storedPreferences)
+    return true;
+}
+
+HsDatabase *HsDatabase::mInstance(0);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/widgetplugins/hsshortcutwidgetplugin/tsrc/t_hsshortcutwidget/src/mockshortcutservice.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,118 @@
+/*
+* 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:  Entry point for shortcut widget
+*
+*/
+
+#include <QStateMachine>
+
+#include "hsshortcutservice.h"
+#include "hsshortcutservice_p.h"
+#include "hscontentservice.h"
+#include "hsmenueventfactory.h"
+#include "hspage.h"
+#include "hsdomainmodeldatastructures.h"
+
+#include "canotifier.h"
+#include "canotifierfilter.h"
+#include "caservice.h"
+
+
+HsShortcutService *HsShortcutService::mInstance(0);
+
+HsShortcutServicePrivate::HsShortcutServicePrivate(
+    QStateMachine* aStateMachine,
+    QObject *parent)
+    : QObject(parent),
+    mStateMachine(aStateMachine)
+{
+}
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+HsShortcutServicePrivate::~HsShortcutServicePrivate()
+{
+
+}
+
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void HsShortcutServicePrivate::executeCollectionAction(int shortcutId,
+        const QString& collectionType)
+{
+    QEvent* menuEvent = HsMenuEventFactory::createOpenCollectionEvent(
+            shortcutId, collectionType);
+    mStateMachine->postEvent(menuEvent);
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+bool HsShortcutServicePrivate::isItemShortcutWidget(int aItemId)
+{
+    Q_UNUSED(aItemId);
+    return false;
+}
+
+HsShortcutService *HsShortcutService::instance(QStateMachine* machine)
+{
+    if(!mInstance && machine) {
+        mInstance = new HsShortcutService(machine);
+    }
+    return mInstance;
+}
+
+
+
+/*!
+    Contructor
+
+    \a aManifestFileWithPath e.g c:/foo/bar/shortcutwidget.manifest
+    \a aContentService Pointer to content service.
+    \a aContentStore Pointer to content store.
+    \a aMcsService Pointer to mcs service.
+    \a aStateMachine Pointer to state machine to post events.
+    \a parent Parent object.
+*/
+HsShortcutService::HsShortcutService(
+    QStateMachine* aStateMachine,
+    QObject *parent)
+    : QObject(parent)
+{
+    mD.reset(new HsShortcutServicePrivate(aStateMachine));
+}
+
+/*!
+    Destructor
+*/
+HsShortcutService::~HsShortcutService()
+{
+
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void HsShortcutService::executeCollectionAction(int shortcutId,
+        const QString &collectionType)
+{
+    mD->executeCollectionAction(shortcutId, collectionType);
+}
+
+bool HsShortcutService::isItemShortcutWidget(int aItemId)
+{
+    return mD->isItemShortcutWidget(aItemId);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/widgetplugins/hsshortcutwidgetplugin/tsrc/t_hsshortcutwidget/src/t_hsshortcutwidget.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,182 @@
+/*
+* Copyright (c) 2008, 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:  test code
+*
+*/
+
+#include <QtTest/QtTest>
+#include <QStateMachine>
+#include <QGraphicsSceneMouseEvent>
+
+#include <HbTouchArea>
+#include <HbFrameItem>
+
+#include "t_hsshortcutwidget.h"
+#include "hsshortcutwidget.h"
+#include "hsshortcutservice.h"
+#include "hsconfiguration.h"
+
+#include "caentry.h"
+#include "caservice.h"
+
+void TestShortcutWidget::initTestCase()
+{
+    mMachine = new QStateMachine;
+    mShortcutService = HsShortcutService::instance(mMachine);
+    HsConfiguration::setInstance(new HsConfiguration);
+}
+
+void TestShortcutWidget::cleanupTestCase()
+{
+    delete mMachine;
+}
+
+void TestShortcutWidget::testConstruction()
+{
+    HSCONFIGURATION_SET(setShortcutLabelVisible, true);
+    HsShortcutWidget *w = new HsShortcutWidget;
+    QVERIFY(w->mBackground);
+    QVERIFY(w->mIcon);
+    QVERIFY(w->mText);    
+    QCOMPARE(w->mCaEntryId, -1);
+    QCOMPARE(w->mCaEntryRole, ItemEntryRole);
+    w->createPrimitives();
+    QVERIFY(w->mBackground);
+    QVERIFY(w->mIcon);
+    QVERIFY(w->mText);
+    QCOMPARE(w->mCaEntryId, -1);
+    QCOMPARE(w->mCaEntryRole, ItemEntryRole);
+    
+    w->setText("testing");
+    QCOMPARE(w->text(), QString("testing"));
+    
+    delete w;
+    
+    HSCONFIGURATION_SET(setShortcutLabelVisible, false);
+    w = new HsShortcutWidget;
+    QVERIFY(!w->mText);
+    w->setText("testing");
+    QCOMPARE(w->text(), QString(""));
+    delete w;
+}
+
+void TestShortcutWidget::testProperties()
+{
+    HsShortcutWidget *w = new HsShortcutWidget;
+
+    QCOMPARE(w->property("caEntryId").toInt(), -1);
+    w->setProperty("caEntryId", 1);
+    QCOMPARE(w->property("caEntryId").toInt(), 1);
+
+    QCOMPARE(w->property("uid").toString(), QString());
+    w->setProperty("uid", "0xABBAACDC");
+    QCOMPARE(w->property("uid").toString(), QString("0xABBAACDC"));
+
+    delete w;
+}
+
+void TestShortcutWidget::testSignals()
+{
+    HsShortcutWidget *w = new HsShortcutWidget;
+
+    QSignalSpy spy(w, SIGNAL(finished()));
+    w->onInitialize();
+    QCOMPARE(spy.count(), 1);
+    spy.clear();
+
+    CaEntry e;
+    ChangeType c = RemoveChangeType;
+
+    w->onEntryChanged(e, c);
+    QCOMPARE(spy.count(), 1);
+    spy.clear();
+
+    delete w;
+}
+
+void TestShortcutWidget::testShowHide()
+{
+    HsShortcutWidget *w = new HsShortcutWidget;
+
+    w->onShow();
+    QVERIFY(w->isVisible());
+    w->onHide();
+
+    w->mCaEntryFlags = MissingEntryFlag;
+    w->onShow();
+    QVERIFY(!w->isVisible());
+    w->onHide();
+
+    delete w;
+}
+
+void TestShortcutWidget::testCaNotifier()
+{
+    HSCONFIGURATION_SET(setShortcutLabelVisible, true);
+    HsShortcutWidget *w = new HsShortcutWidget;
+
+    w->createCaNotifier();
+    
+    CaEntry e;
+    ChangeType c = UpdateChangeType;
+    w->onEntryChanged(e, c);
+    QVERIFY(w->isVisible());
+
+    //Media detached
+    QSignalSpy spy(w, SIGNAL(finished()));
+    c = RemoveChangeType;
+    e.setFlags(e.flags() | MissingEntryFlag);
+    w->onEntryChanged(e, c);
+    QVERIFY(!w->isVisible());
+    QCOMPARE(spy.count(), 0);
+    spy.clear();
+
+    //Genuinely removed
+    c = RemoveChangeType;
+    //Remove MissingEntryFlag
+    e.setFlags(e.flags() & ~MissingEntryFlag);
+    w->onEntryChanged(e, c);
+    QVERIFY(w->isVisible());
+    QCOMPARE(spy.count(), 1);
+    spy.clear();
+    delete w;
+    
+
+    HSCONFIGURATION_SET(setShortcutLabelVisible, false);
+    w = new HsShortcutWidget;
+    w->createCaNotifier();
+    c = UpdateChangeType;
+    w->onEntryChanged(e, c);
+    QVERIFY(w->isVisible());
+    delete w;
+    
+}
+
+void TestShortcutWidget::testUserInteraction()
+{
+    HsShortcutWidget *w = new HsShortcutWidget;
+    w->resize(100, 100);
+
+    w->setBackgroundToNormal();
+    QCOMPARE(w->mBackground->frameDrawer().frameGraphicsName(), QLatin1String("qtg_fr_hsshortcut_normal"));
+
+    w->setBackgroundToPressed();
+    QCOMPARE(w->mBackground->frameDrawer().frameGraphicsName(), QLatin1String("qtg_fr_hsitems_pressed"));
+        
+    w->launch();
+
+    delete w;
+}
+
+QTEST_MAIN(TestShortcutWidget)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/widgetplugins/hsshortcutwidgetplugin/tsrc/t_hsshortcutwidget/t_hsshortcutwidget.pri	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,27 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+HEADERS += ./inc/*.h \
+           ../../inc/hsshortcutwidget.h \
+           ../../../../hsdomainmodel/inc/hsshortcutservice.h \
+           ../../../../hsdomainmodel/inc/hsshortcutservice_p.h \
+           ../../../hsdomainmodel/inc/hsconfiguration.h \
+           ../../../hsdomainmodel/inc/hsdatabase.h
+
+SOURCES += ./src/*.cpp \
+           ../../src/hsshortcutwidget.cpp \
+           ../../../hsdomainmodel/src/hsconfiguration.cpp           
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/widgetplugins/hsshortcutwidgetplugin/tsrc/t_hsshortcutwidget/t_hsshortcutwidget.pro	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,75 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+TEMPLATE = app
+
+QT += testlib sql
+
+CONFIG += debug_and_release
+
+CONFIG(debug, debug|release) {
+  DESTDIR = debug
+  LIBS += -L../../../../../../bin/debug -lhsutils
+  LIBS += -L../../../../../../bin/debug -lcaclient
+}
+else {
+  DESTDIR = release
+  LIBS += -L../../../../../../bin/release -lhsutils
+  LIBS += -L../../../../../../bin/release -lcaclient
+}
+
+CONFIG += hb mobility
+MOBILITY = serviceframework
+
+HB += hbfeedback
+
+DEFINES += HOMESCREEN_TEST \
+           HSDOMAINMODEL_TEST
+           
+coverage:DEFINES += COVERAGE_MEASUREMENT
+
+exists(../../../../../../homescreensrv) {
+INCLUDEPATH += ../../../../../../homescreensrv/homescreensrv_plat/contentstorage_api \
+}
+else {
+INCLUDEPATH += $${EPOCROOT}sf/mw/homescreensrv/homescreensrv_plat/contentstorage_api \
+}
+
+INCLUDEPATH += ./inc \
+               ../../inc \
+               ../../../../inc \
+               ../../../../hsdomainmodel/inc \               
+               ../../../../hsutils/inc  
+
+DEPENDPATH += ./inc \
+              ./src \
+              ../../inc \
+              ../../src
+
+include(t_hsshortcutwidget.pri)
+
+symbian: {
+    CONFIG += symbian_test
+    CONFIG -= hb
+    load(hb.prf)
+    CONFIG -= symbian_i18n
+    TARGET.UID3 = 0x20022F64
+    TARGET.CAPABILITY = CAP_APPLICATION AllFiles
+    
+    MMP_RULES += SMPSAFE
+}
+
+win32:include(t_hsshortcutwidget_installs_win32.pri)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/widgetplugins/hsshortcutwidgetplugin/tsrc/t_hsshortcutwidget/t_hsshortcutwidget_installs_win32.pri	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,35 @@
+#
+# 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:
+#
+
+testfiles.path = ../../../../../../bin/hstests/
+testfiles.files = ./debug/t_hsshortcutwidget.exe
+
+compos.path = ../../../../../../bin/hstests/
+compos.files =  ../../../../../../bin/debug/caclient.dll \
+		            ../../../../../../bin/debug/hsutils.dll \
+                ../../../../../../homescreensrv/contentstorage/castorage/data/castorage.db \
+                
+compos3.path = ./debug
+compos3.files =  ../../../../../../bin/debug/caclient.dll \
+								 ../../../../../../bin/debug/hsutils.dll \
+                 ../../../../../../homescreensrv/contentstorage/castorage/data/castorage.db \
+
+
+compos4.path = ./
+compos4.files =  ../../../../../../homescreensrv/contentstorage/castorage/data/castorage.db \
+                 
+INSTALLS += testfiles compos compos3 compos4
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/widgetplugins/hsshortcutwidgetplugin/tsrc/tsrc.pro	Mon Oct 04 00:07:25 2010 +0300
@@ -0,0 +1,21 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+TEMPLATE = subdirs
+SUBDIRS  = t_hsshortcutwidget
+           
+CONFIG  += ordered
+
--- a/screensaver/devicedialogplugins/snsrdevicedialogplugin/snsrdevicedialogplugin.pro	Fri Sep 17 08:27:54 2010 +0300
+++ b/screensaver/devicedialogplugins/snsrdevicedialogplugin/snsrdevicedialogplugin.pro	Mon Oct 04 00:07:25 2010 +0300
@@ -36,6 +36,7 @@
     pluginstub.sources = snsrdevicedialogplugin.dll
     pluginstub.path = /resource/plugins/devicedialogs
     DEPLOYMENT += pluginstub
+    MMP_RULES += SMPSAFE
 }
 
 win32: {
--- a/screensaver/screensavermodel/screensavermodel.pro	Fri Sep 17 08:27:54 2010 +0300
+++ b/screensaver/screensavermodel/screensavermodel.pro	Mon Oct 04 00:07:25 2010 +0300
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# Copyright (c) 2009 - 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"
@@ -20,6 +20,7 @@
 
 symbian: {
 TARGET.UID3 = 0x20027051
+MMP_RULES += SMPSAFE
 }
 
 DEFINES += SREENSAVERMODEL_LIB
--- a/screensaver/screensaverplugins/snsrbigclockscreensaverplugin/snsrbigclockscreensaverplugin.pro	Fri Sep 17 08:27:54 2010 +0300
+++ b/screensaver/screensaverplugins/snsrbigclockscreensaverplugin/snsrbigclockscreensaverplugin.pro	Mon Oct 04 00:07:25 2010 +0300
@@ -34,6 +34,7 @@
 
 symbian: {
     TARGET.UID3 = 0x20027052
+    MMP_RULES += SMPSAFE
 }
 
 include(snsrbigclockscreensaverplugin.pri)
--- a/screensaver/snsrdisplaycontrol_s60/group/snsrdisplaycontrolclient.mmp	Fri Sep 17 08:27:54 2010 +0300
+++ b/screensaver/snsrdisplaycontrol_s60/group/snsrdisplaycontrolclient.mmp	Mon Oct 04 00:07:25 2010 +0300
@@ -32,3 +32,4 @@
 SOURCE          snsrdisplaycontrolclient.cpp 
 
 LIBRARY         euser.lib
+SMPSAFE
\ No newline at end of file
--- a/screensaver/snsrdisplaycontrol_s60/group/snsrdisplaycontrolserver.mmp	Fri Sep 17 08:27:54 2010 +0300
+++ b/screensaver/snsrdisplaycontrol_s60/group/snsrdisplaycontrolserver.mmp	Mon Oct 04 00:07:25 2010 +0300
@@ -23,7 +23,7 @@
 SECUREID        0x20031E00
 VENDORID        VID_DEFAULT
 
-CAPABILITY      CAP_APPLICATION 
+CAPABILITY      ReadDeviceData WriteDeviceData PowerMgmt
 
 USERINCLUDE     ../inc
 APP_LAYER_SYSTEMINCLUDE
@@ -36,3 +36,4 @@
 LIBRARY         power_save_display_mode.lib
 LIBRARY         hal.lib
 
+SMPSAFE
\ No newline at end of file
--- a/screensaver/snsrdisplaycontrol_s60/src/snsrdisplaycontrolsession.cpp	Fri Sep 17 08:27:54 2010 +0300
+++ b/screensaver/snsrdisplaycontrol_s60/src/snsrdisplaycontrolsession.cpp	Mon Oct 04 00:07:25 2010 +0300
@@ -18,6 +18,8 @@
 
 #include <power_save_display_mode.h>
 #include <hal.h>
+#include <coreapplicationuisdomainpskeys.h>
+#include <e32property.h>
 
 #include "snsrdisplaycontrolsession.h"
 #include "snsrdisplaycontrolcommon.h"
@@ -96,13 +98,19 @@
         {
         case ESnsrDispCtrlSrvDisplayOff:
             {
-            // off
-            // TODO
+            // Disable touch
+            HAL::Set( HALData::EPenState, 0 );
+            
+            // Lights off
+            err = RProperty::Set(KPSUidCoreApplicationUIs, KLightsSSForcedLightsOn, 0);
             break;
             }
         case ESnsrDispCtrlSrvDisplayLowPower:
             {
-            // low power
+            // Disable touch
+            HAL::Set( HALData::EPenState, 0 );
+            
+            // Set display mode
             TInt startRow = aMessage.Int0();
             TInt endRow = aMessage.Int1();
             // TODO: for now, we pass a zero-filled pixel buffer to power save API.
@@ -114,8 +122,14 @@
             }
         case ESnsrDispCtrlSrvDisplayFullPower:
             {
-            // full power
+            // Enable touch
+            HAL::Set( HALData::EPenState, 1 );
+            
+            // Set display mode
             err = iPowerSave->Exit();
+            
+            // Lights on
+            err = RProperty::Set(KPSUidCoreApplicationUIs, KLightsSSForcedLightsOn, 30) || err;
             break;
             }
         default:
--- a/screensaver/snsrutils/snsrutils.pro	Fri Sep 17 08:27:54 2010 +0300
+++ b/screensaver/snsrutils/snsrutils.pro	Mon Oct 04 00:07:25 2010 +0300
@@ -24,6 +24,7 @@
 
 symbian: {
     TARGET.UID3 = 0x20027056
+    MMP_RULES += SMPSAFE
 }
 
 include(snsrutils.pri)