Revision: 201001 PDK_3.0.f
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 26 Jan 2010 11:48:23 +0200
changeset 4 4d54b72983ae
parent 3 fb3763350a08
child 5 c743ef5928ba
Revision: 201001 Kit: 201004
idlehomescreen/data/qhd_tch/desktop_20026f4f/hsps/00/desktopconfiguration.dtd
idlehomescreen/data/qhd_tch/desktop_20026f4f/hsps/00/manifest.dat
idlehomescreen/data/qhd_tch/desktop_20026f4f/loc/desktopconfiguration.loc
idlehomescreen/data/qhd_tch/profile_2001cb7c/group/bld.inf
idlehomescreen/data/qhd_tch/profile_2001cb7c/hsps/00/manifest.dat
idlehomescreen/data/qhd_tch/profile_2001cb7c/hsps/00/profileconfiguration.dtd
idlehomescreen/data/qhd_tch/profile_2001cb7c/loc/profileconfiguration.loc
idlehomescreen/data/qhd_tch/profile_2001cb7c/loc/profilewidget.loc
idlehomescreen/data/qhd_tch/wideimage_2001f489/group/bld.inf
idlehomescreen/data/qhd_tch/wideimage_2001f489/hsps/00/widgetconfiguration.xml
idlehomescreen/data/qhd_tch/wideimage_2001f489/loc/wideimage.loc
idlehomescreen/data/qhd_tch/wideimage_2001f489/xuikon/00/wideimage.css
idlehomescreen/data/qhd_tch/wideimage_2001f489/xuikon/00/wideimage.dat
idlehomescreen/data/qhd_tch/wideimage_2001f489/xuikon/00/wideimage.dtd
idlehomescreen/data/qhd_tch/wideimage_2001f489/xuikon/00/wideimage.xml
idlehomescreen/help/data/xhtml.zip
idlehomescreen/help/inc/hmsc.hlp.hrh
idlehomescreen/inc/xnanimation.h
idlehomescreen/inc/xneditmode.h
idlehomescreen/nativeuicontroller/inc/nativeuicontroller.h
idlehomescreen/nativeuicontroller/src/nativeuicontroller.cpp
idlehomescreen/sapiwrapper/hspswrapper/bwins/hspswrapper.def
idlehomescreen/sapiwrapper/hspswrapper/eabi/hspswrapper.def
idlehomescreen/sapiwrapper/hspswrapper/inc/plugininfo.h
idlehomescreen/sapiwrapper/hspswrapper/src/plugininfo.cpp
idlehomescreen/sapiwrapper/hspswrapper/src/pluginmap.cpp
idlehomescreen/widgetmanager/data/widgetmanagerview.loc
idlehomescreen/widgetmanager/data/widgetmanagerview.rss
idlehomescreen/widgetmanager/group/bld.inf
idlehomescreen/widgetmanager/group/widgetmanager.mmp
idlehomescreen/widgetmanager/inc/wmconfiguration.h
idlehomescreen/widgetmanager/inc/wmcrkeys.h
idlehomescreen/widgetmanager/inc/wmmaincontainer.h
idlehomescreen/widgetmanager/inc/wmplugin.h
idlehomescreen/widgetmanager/inc/wmresourceloader.h
idlehomescreen/widgetmanager/loc/widgetmanagerview.loc
idlehomescreen/widgetmanager/rom/widgetmanager_resources.iby
idlehomescreen/widgetmanager/sis/widgetmanager_udeb.pkg
idlehomescreen/widgetmanager/sis/widgetmanager_urel.pkg
idlehomescreen/widgetmanager/src/wmconfiguration.cpp
idlehomescreen/widgetmanager/src/wmimageconverter.cpp
idlehomescreen/widgetmanager/src/wmlistbox.cpp
idlehomescreen/widgetmanager/src/wmmaincontainer.cpp
idlehomescreen/widgetmanager/src/wmplugin.cpp
idlehomescreen/widgetmanager/src/wmportalbutton.cpp
idlehomescreen/widgetmanager/src/wmresourceloader.cpp
idlehomescreen/xmluicontroller/inc/aixmluiconstants.h
idlehomescreen/xmluicontroller/inc/contentrenderer.h
idlehomescreen/xmluicontroller/src/contentrenderer.cpp
idlehomescreen/xmluicontroller/src/xmluicontroller.cpp
idlehomescreen/xmluirendering/ecomelement/xndomvisitor/inc/xnliteral.h
idlehomescreen/xmluirendering/ecomelement/xndomvisitor/src/xndomvisitor.cpp
idlehomescreen/xmluirendering/group/bld.inf
idlehomescreen/xmluirendering/renderingplugins/xnanimationfactory/group/bld.inf
idlehomescreen/xmluirendering/renderingplugins/xnanimationfactory/group/xnanimationfactory.mmp
idlehomescreen/xmluirendering/renderingplugins/xnanimationfactory/inc/xnanimationadapter.h
idlehomescreen/xmluirendering/renderingplugins/xnanimationfactory/inc/xnanimationfactory.h
idlehomescreen/xmluirendering/renderingplugins/xnanimationfactory/src/xn3animationfactory.rss
idlehomescreen/xmluirendering/renderingplugins/xnanimationfactory/src/xnanimation.cpp
idlehomescreen/xmluirendering/renderingplugins/xnanimationfactory/src/xnanimationadapter.cpp
idlehomescreen/xmluirendering/renderingplugins/xnanimationfactory/src/xnanimationfactory.cpp
idlehomescreen/xmluirendering/rom/ai3xmluirendering.iby
idlehomescreen/xmluirendering/uiengine/inc/xnbackgroundmanager.h
idlehomescreen/xmluirendering/uiengine/src/xnbackgroundmanager.cpp
idlehomescreen/xmluirendering/uiengine/src/xneditmode.cpp
idlehomescreen/xmluirendering/uiengine/src/xneditor.cpp
idlehomescreen/xmluirendering/uiengine/src/xnnodeimpl.cpp
idlehomescreen/xmluirendering/uiengine/src/xnuiengineimpl.cpp
idlehomescreen/xmluirendering/uiengine/src/xnviewadapter.cpp
idlehomescreen/xmluirendering/uiengine/src/xnviewmanager.cpp
menufw/hierarchynavigator/hnmetadatamodel/inc/hnglobals.h
menufw/hierarchynavigator/hnmetadatamodel/inc/hnmdmenuitem.h
menufw/hierarchynavigator/hnmetadatamodel/src/hnmdmenuitem.cpp
menufw/hierarchynavigator/hnmetadatamodel/src/hnxmlmodelprovider.cpp
menufw/hierarchynavigator/hnpresentationmodel/bwins/hnpresentationmodelu.def
menufw/hierarchynavigator/hnpresentationmodel/eabi/hnpresentationmodelu.def
menufw/hierarchynavigator/hnpresentationmodel/inc/hnmenuitemmodel.h
menufw/hierarchynavigator/hnpresentationmodel/src/hnmenuitemmodel.cpp
menufw/menufwui/matrixmenu/inc/mmappui.h
menufw/menufwui/matrixmenu/src/mmappui.cpp
menufw/menufwui/mmwidgets/bwins/mmwidgetsu.def
menufw/menufwui/mmwidgets/eabi/mmwidgetsu.def
menufw/menufwui/mmwidgets/group/mmwidgets.mmp
menufw/menufwui/mmwidgets/inc/mmcacheforitem.h
menufw/menufwui/mmwidgets/inc/mmcacheforitem.inl
menufw/menufwui/mmwidgets/inc/mmgrid.h
menufw/menufwui/mmwidgets/inc/mmgridview.h
menufw/menufwui/mmwidgets/inc/mmhighlighttimer.h
menufw/menufwui/mmwidgets/inc/mmlistbox.h
menufw/menufwui/mmwidgets/inc/mmlistboxitemdrawer.h
menufw/menufwui/mmwidgets/inc/mmlistboxmodel.h
menufw/menufwui/mmwidgets/inc/mmsubcellssetupcode.h
menufw/menufwui/mmwidgets/inc/mmwidgetcontainer.h
menufw/menufwui/mmwidgets/inc/mmwidgetsconstants.h
menufw/menufwui/mmwidgets/src/mmcacheforitem.cpp
menufw/menufwui/mmwidgets/src/mmgrid.cpp
menufw/menufwui/mmwidgets/src/mmgridcontainer.cpp
menufw/menufwui/mmwidgets/src/mmgridview.cpp
menufw/menufwui/mmwidgets/src/mmhighlighttimer.cpp
menufw/menufwui/mmwidgets/src/mmitemsdatacache.cpp
menufw/menufwui/mmwidgets/src/mmlistbox.cpp
menufw/menufwui/mmwidgets/src/mmlistboxcontainer.cpp
menufw/menufwui/mmwidgets/src/mmlistboxitemdrawer.cpp
menufw/menufwui/mmwidgets/src/mmlistboxmodel.cpp
menufw/menufwui/mmwidgets/src/mmlistboxview.cpp
menufw/menufwui/mmwidgets/src/mmpostevaluationprocessor.cpp
menufw/menufwui/mmwidgets/src/mmwidgetcontainer.cpp
menufw/menusuites/data/mmenuschema.xsd
menufw/menusuites/foldersuite/data/items_touch.xml
taskswitcher/contextengine/group/bld.inf
taskswitcher/contextengine/hgctxutils/BWINS/hgcontextservicesutilsu.def
taskswitcher/contextengine/hgctxutils/EABI/hgcontextservicesutilsu.def
taskswitcher/contextengine/hgctxutils/group/bld.inf
taskswitcher/contextengine/hgctxutils/group/hgcontextservicesutils.mmp
taskswitcher/contextengine/hgctxutils/inc/hgcenreplistener.h
taskswitcher/contextengine/hgctxutils/inc/hgproplistener.h
taskswitcher/contextengine/hgctxutils/src/hgcenreplistener.cpp
taskswitcher/contextengine/hgctxutils/src/hgproplistener.cpp
taskswitcher/contextengine/hgfswpreviewprovider/bwins/hgpreviewprovideru.def
taskswitcher/contextengine/hgfswpreviewprovider/eabi/hgpreviewprovideru.def
taskswitcher/contextengine/hgfswpreviewprovider/group/bld.inf
taskswitcher/contextengine/hgfswpreviewprovider/group/previewprovider.mmp
taskswitcher/contextengine/hgfswpreviewprovider/inc/hgfastswappreviewproviderlogging.h
taskswitcher/contextengine/hgfswpreviewprovider/inc/hgpreviewobserver.h
taskswitcher/contextengine/hgfswpreviewprovider/inc/hgpreviewprovider.h
taskswitcher/contextengine/hgfswpreviewprovider/inc/previewmsg.h
taskswitcher/contextengine/hgfswpreviewprovider/inc/previewproviderlogging.h
taskswitcher/contextengine/hgfswpreviewprovider/rom/hgfastswappreviewprovider.iby
taskswitcher/contextengine/hgfswpreviewprovider/src/previewprovider.cpp
taskswitcher/contextengine/hgfswpreviewprovider/wsplugin/group/bld.inf
taskswitcher/contextengine/hgfswpreviewprovider/wsplugin/group/previewprovidercrp.mmp
taskswitcher/contextengine/hgfswpreviewprovider/wsplugin/inc/previewprovidercrp.h
taskswitcher/contextengine/hgfswpreviewprovider/wsplugin/inc/previewprovidercrplogging.h
taskswitcher/contextengine/hgfswpreviewprovider/wsplugin/src/20016BEC.rss
taskswitcher/contextengine/hgfswpreviewprovider/wsplugin/src/previewprovidercrp.cpp
taskswitcher/contextengine/hgfswserver/client/bwins/hgfswclientu.def
taskswitcher/contextengine/hgfswserver/client/eabi/hgfswclientu.def
taskswitcher/contextengine/hgfswserver/client/group/bld.inf
taskswitcher/contextengine/hgfswserver/client/group/hgfswclient.mmp
taskswitcher/contextengine/hgfswserver/client/inc/clientlogging.h
taskswitcher/contextengine/hgfswserver/client/inc/hgfswclient.h
taskswitcher/contextengine/hgfswserver/client/inc/hgfswclientimpl.h
taskswitcher/contextengine/hgfswserver/client/inc/hgfswclientobserver.h
taskswitcher/contextengine/hgfswserver/client/src/hgfswclient.cpp
taskswitcher/contextengine/hgfswserver/client/src/hgfswclientimpl.cpp
taskswitcher/contextengine/hgfswserver/engine/bwins/hgfswengineu.def
taskswitcher/contextengine/hgfswserver/engine/eabi/hgfswengineu.def
taskswitcher/contextengine/hgfswserver/engine/group/bld.inf
taskswitcher/contextengine/hgfswserver/engine/group/hgfswengine.mmp
taskswitcher/contextengine/hgfswserver/engine/inc/enginelogging.h
taskswitcher/contextengine/hgfswserver/engine/inc/hgfsalwaysshownapplist.h
taskswitcher/contextengine/hgfswserver/engine/inc/hgfshiddenapplist.h
taskswitcher/contextengine/hgfswserver/engine/inc/hgfswengine.h
taskswitcher/contextengine/hgfswserver/engine/inc/hgfswiconcache.h
taskswitcher/contextengine/hgfswserver/engine/inc/hgfswidgetlist.h
taskswitcher/contextengine/hgfswserver/engine/inc/hgfswobservers.h
taskswitcher/contextengine/hgfswserver/engine/src/hgfsalwaysshownapplist.cpp
taskswitcher/contextengine/hgfswserver/engine/src/hgfshiddenapplist.cpp
taskswitcher/contextengine/hgfswserver/engine/src/hgfswengine.cpp
taskswitcher/contextengine/hgfswserver/engine/src/hgfswiconcache.cpp
taskswitcher/contextengine/hgfswserver/engine/src/hgfswidgetlist.cpp
taskswitcher/contextengine/hgfswserver/group/bld.inf
taskswitcher/contextengine/hgfswserver/inc/hgfswcommon.h
taskswitcher/contextengine/hgfswserver/rom/hgfswserver.iby
taskswitcher/contextengine/hgfswserver/server/group/bld.inf
taskswitcher/contextengine/hgfswserver/server/group/hgfswserver.mmp
taskswitcher/contextengine/hgfswserver/server/inc/hgfswappui.h
taskswitcher/contextengine/hgfswserver/server/inc/hgfswserver.h
taskswitcher/contextengine/hgfswserver/server/inc/hgfswsession.h
taskswitcher/contextengine/hgfswserver/server/inc/serverlogging.h
taskswitcher/contextengine/hgfswserver/server/src/hgfswappui.cpp
taskswitcher/contextengine/hgfswserver/server/src/hgfswserver.cpp
taskswitcher/contextengine/hgfswserver/server/src/hgfswsession.cpp
taskswitcher/contextengine/hgfswserver/utils/bwins/hgfswutilsu.def
taskswitcher/contextengine/hgfswserver/utils/eabi/hgfswutilsu.def
taskswitcher/contextengine/hgfswserver/utils/group/bld.inf
taskswitcher/contextengine/hgfswserver/utils/group/hgfswutils.mmp
taskswitcher/contextengine/hgfswserver/utils/inc/hgfswentry.h
taskswitcher/contextengine/hgfswserver/utils/inc/utilslogging.h
taskswitcher/contextengine/hgfswserver/utils/src/hgfswentry.cpp
taskswitcher/contextengine/rom/hgcontextservices.iby
taskswitcher/contextengine/rom/tscontextservices.iby
taskswitcher/contextengine/sis/stubs/createstubs.bat
taskswitcher/contextengine/sis/stubs/hgctxsrv_stub.pkg
taskswitcher/contextengine/sis/stubs/hgctxsrv_stub.sis
taskswitcher/contextengine/sis/stubs/tsctxsrv_stub.pkg
taskswitcher/contextengine/sis/stubs/tsctxsrv_stub.sis
taskswitcher/contextengine/trace/hglogging.h
taskswitcher/contextengine/trace/hglogutils.h
taskswitcher/contextengine/trace/tslogging.h
taskswitcher/contextengine/trace/tslogutils.h
taskswitcher/contextengine/tsctxutils/bwins/tscontextservicesutilsu.def
taskswitcher/contextengine/tsctxutils/eabi/tscontextservicesutilsu.def
taskswitcher/contextengine/tsctxutils/group/bld.inf
taskswitcher/contextengine/tsctxutils/group/tscontextservicesutils.mmp
taskswitcher/contextengine/tsctxutils/inc/tscenreplistener.h
taskswitcher/contextengine/tsctxutils/inc/tsproplistener.h
taskswitcher/contextengine/tsctxutils/src/tscenreplistener.cpp
taskswitcher/contextengine/tsctxutils/src/tsproplistener.cpp
taskswitcher/contextengine/tsfswpreviewprovider/bwins/tspreviewprovideru.def
taskswitcher/contextengine/tsfswpreviewprovider/eabi/tspreviewprovideru.def
taskswitcher/contextengine/tsfswpreviewprovider/group/bld.inf
taskswitcher/contextengine/tsfswpreviewprovider/group/previewprovider.mmp
taskswitcher/contextengine/tsfswpreviewprovider/inc/previewmsg.h
taskswitcher/contextengine/tsfswpreviewprovider/inc/previewproviderlogging.h
taskswitcher/contextengine/tsfswpreviewprovider/inc/tsfastswappreviewproviderlogging.h
taskswitcher/contextengine/tsfswpreviewprovider/inc/tspreviewobserver.h
taskswitcher/contextengine/tsfswpreviewprovider/inc/tspreviewprovider.h
taskswitcher/contextengine/tsfswpreviewprovider/inc/tspreviewproviderclient.h
taskswitcher/contextengine/tsfswpreviewprovider/inc/tspropertylistener.h
taskswitcher/contextengine/tsfswpreviewprovider/rom/tsfastswappreviewprovider.iby
taskswitcher/contextengine/tsfswpreviewprovider/src/tspreviewprovider.cpp
taskswitcher/contextengine/tsfswpreviewprovider/src/tspreviewproviderclient.cpp
taskswitcher/contextengine/tsfswpreviewprovider/src/tspropertylistener.cpp
taskswitcher/contextengine/tsfswpreviewprovider/wsplugin/group/bld.inf
taskswitcher/contextengine/tsfswpreviewprovider/wsplugin/group/previewprovidercrp.mmp
taskswitcher/contextengine/tsfswpreviewprovider/wsplugin/inc/previewprovidercrp.h
taskswitcher/contextengine/tsfswpreviewprovider/wsplugin/inc/previewprovidercrplogging.h
taskswitcher/contextengine/tsfswpreviewprovider/wsplugin/src/20016BEC.rss
taskswitcher/contextengine/tsfswpreviewprovider/wsplugin/src/previewprovidercrp.cpp
taskswitcher/contextengine/tsfswserver/client/bwins/tsfswclientu.def
taskswitcher/contextengine/tsfswserver/client/eabi/tsfswclientu.def
taskswitcher/contextengine/tsfswserver/client/group/bld.inf
taskswitcher/contextengine/tsfswserver/client/group/tsfswclient.mmp
taskswitcher/contextengine/tsfswserver/client/inc/clientlogging.h
taskswitcher/contextengine/tsfswserver/client/inc/tsfswclient.h
taskswitcher/contextengine/tsfswserver/client/inc/tsfswclientimpl.h
taskswitcher/contextengine/tsfswserver/client/inc/tsfswclientobserver.h
taskswitcher/contextengine/tsfswserver/client/src/tsfswclient.cpp
taskswitcher/contextengine/tsfswserver/client/src/tsfswclientimpl.cpp
taskswitcher/contextengine/tsfswserver/engine/bwins/tsfswengineu.def
taskswitcher/contextengine/tsfswserver/engine/eabi/tsfswengineu.def
taskswitcher/contextengine/tsfswserver/engine/group/bld.inf
taskswitcher/contextengine/tsfswserver/engine/group/tsfswengine.mmp
taskswitcher/contextengine/tsfswserver/engine/inc/enginelogging.h
taskswitcher/contextengine/tsfswserver/engine/inc/tsfsalwaysshownapplist.h
taskswitcher/contextengine/tsfswserver/engine/inc/tsfshiddenapplist.h
taskswitcher/contextengine/tsfswserver/engine/inc/tsfswengine.h
taskswitcher/contextengine/tsfswserver/engine/inc/tsfswiconcache.h
taskswitcher/contextengine/tsfswserver/engine/inc/tsfswidgetlist.h
taskswitcher/contextengine/tsfswserver/engine/inc/tsfswobservers.h
taskswitcher/contextengine/tsfswserver/engine/src/tsfsalwaysshownapplist.cpp
taskswitcher/contextengine/tsfswserver/engine/src/tsfshiddenapplist.cpp
taskswitcher/contextengine/tsfswserver/engine/src/tsfswengine.cpp
taskswitcher/contextengine/tsfswserver/engine/src/tsfswiconcache.cpp
taskswitcher/contextengine/tsfswserver/engine/src/tsfswidgetlist.cpp
taskswitcher/contextengine/tsfswserver/group/bld.inf
taskswitcher/contextengine/tsfswserver/inc/tsfswclient.h
taskswitcher/contextengine/tsfswserver/inc/tsfswclientobserver.h
taskswitcher/contextengine/tsfswserver/inc/tsfswcommon.h
taskswitcher/contextengine/tsfswserver/rom/tsfswserver.iby
taskswitcher/contextengine/tsfswserver/server/group/bld.inf
taskswitcher/contextengine/tsfswserver/server/group/tsfswserver.mmp
taskswitcher/contextengine/tsfswserver/server/inc/serverlogging.h
taskswitcher/contextengine/tsfswserver/server/inc/tsfswappui.h
taskswitcher/contextengine/tsfswserver/server/inc/tsfswserver.h
taskswitcher/contextengine/tsfswserver/server/inc/tsfswsession.h
taskswitcher/contextengine/tsfswserver/server/src/tsfswappui.cpp
taskswitcher/contextengine/tsfswserver/server/src/tsfswserver.cpp
taskswitcher/contextengine/tsfswserver/server/src/tsfswsession.cpp
taskswitcher/contextengine/tsfswserver/utils/bwins/tsfswutilsu.def
taskswitcher/contextengine/tsfswserver/utils/eabi/tsfswutilsu.def
taskswitcher/contextengine/tsfswserver/utils/group/bld.inf
taskswitcher/contextengine/tsfswserver/utils/group/tsfswutils.mmp
taskswitcher/contextengine/tsfswserver/utils/inc/tsfswentry.h
taskswitcher/contextengine/tsfswserver/utils/inc/utilslogging.h
taskswitcher/contextengine/tsfswserver/utils/src/tsfswentry.cpp
taskswitcher/group/bld.inf
taskswitcher/taskswitcherui/group/bld.inf
taskswitcher/taskswitcherui/inc/tsappuid.hrh
taskswitcher/taskswitcherui/inc/tsgraphicids.h
taskswitcher/taskswitcherui/inc/tsgraphictab.h
taskswitcher/taskswitcherui/inc/tsuid.hrh
taskswitcher/taskswitcherui/rom/taskswitcher.iby
taskswitcher/taskswitcherui/rom/taskswitcherresources.iby
taskswitcher/taskswitcherui/sis/stubs/createstubs.bat
taskswitcher/taskswitcherui/sis/stubs/taskswitcher_stub.pkg
taskswitcher/taskswitcherui/sis/stubs/taskswitcher_stub.sis
taskswitcher/taskswitcherui/sis/taskswitcher.pkg
taskswitcher/taskswitcherui/taskswitcherapp/data/tstaskswitcher.rss
taskswitcher/taskswitcherui/taskswitcherapp/data/tstaskswitcher_reg.rss
taskswitcher/taskswitcherui/taskswitcherapp/group/backup_registration.xml
taskswitcher/taskswitcherui/taskswitcherapp/group/bld.inf
taskswitcher/taskswitcherui/taskswitcherapp/group/tsapp.mmp
taskswitcher/taskswitcherui/taskswitcherapp/inc/tsapplication.h
taskswitcher/taskswitcherui/taskswitcherapp/inc/tsapplogging.h
taskswitcher/taskswitcherui/taskswitcherapp/inc/tsappui.h
taskswitcher/taskswitcherui/taskswitcherapp/inc/tsappview.h
taskswitcher/taskswitcherui/taskswitcherapp/inc/tscommands.hrh
taskswitcher/taskswitcherui/taskswitcherapp/inc/tsdatachangeobserver.h
taskswitcher/taskswitcherui/taskswitcherapp/inc/tsdevicestate.h
taskswitcher/taskswitcherui/taskswitcherapp/inc/tsdocument.h
taskswitcher/taskswitcherui/taskswitcherapp/inc/tseventcontroler.h
taskswitcher/taskswitcherui/taskswitcherapp/inc/tseventcontrolerobserver.h
taskswitcher/taskswitcherui/taskswitcherapp/inc/tsfastswaparea.h
taskswitcher/taskswitcherui/taskswitcherapp/inc/tsfastswapgrid.h
taskswitcher/taskswitcherui/taskswitcherapp/inc/tsphysics.h
taskswitcher/taskswitcherui/taskswitcherapp/inc/tsphysicsengine.h
taskswitcher/taskswitcherui/taskswitcherapp/inc/tsuid.hrh
taskswitcher/taskswitcherui/taskswitcherapp/loc/taskswitcher.loc
taskswitcher/taskswitcherui/taskswitcherapp/src/tsapplication.cpp
taskswitcher/taskswitcherui/taskswitcherapp/src/tsappui.cpp
taskswitcher/taskswitcherui/taskswitcherapp/src/tsappview.cpp
taskswitcher/taskswitcherui/taskswitcherapp/src/tsdevicestate.cpp
taskswitcher/taskswitcherui/taskswitcherapp/src/tsdocument.cpp
taskswitcher/taskswitcherui/taskswitcherapp/src/tseventcontroler.cpp
taskswitcher/taskswitcherui/taskswitcherapp/src/tsfastswaparea.cpp
taskswitcher/taskswitcherui/taskswitcherapp/src/tsfastswapgrid.cpp
taskswitcher/taskswitcherui/taskswitcherapp/src/tsphysics.cpp
taskswitcher/taskswitcherui/taskswitcherapp/src/tsphysicsengine.cpp
taskswitcher/taskswitcherui/taskswitcherapp/src/tstaskswitcher.cpp
taskswitcher/taskswitcherui/taskswitcherappecom/data/tsappecom.rss
taskswitcher/taskswitcherui/taskswitcherappecom/group/bld.inf
taskswitcher/taskswitcherui/taskswitcherappecom/group/tsappecom.mmp
taskswitcher/taskswitcherui/taskswitcherappecom/inc/tsappecom.h
taskswitcher/taskswitcherui/taskswitcherappecom/inc/tsappecomconst.hrh
taskswitcher/taskswitcherui/taskswitcherappecom/inc/tsappecomlogging.h
taskswitcher/taskswitcherui/taskswitcherappecom/src/proxy.cpp
taskswitcher/taskswitcherui/taskswitcherappecom/src/tsappecom.cpp
taskswitcher/taskswitcherui/trace/tslogging.h
taskswitcher/taskswitcherui/trace/tslogutils.h
taskswitcher/teleportui/group/bld.inf
taskswitcher/teleportui/hgteleportapp/data/hgteleport.rss
taskswitcher/teleportui/hgteleportapp/data/hgteleport_reg.rss
taskswitcher/teleportui/hgteleportapp/group/backup_registration.xml
taskswitcher/teleportui/hgteleportapp/group/bld.inf
taskswitcher/teleportui/hgteleportapp/group/hgteleportapp.mmp
taskswitcher/teleportui/hgteleportapp/inc/hgteleportapplication.h
taskswitcher/teleportui/hgteleportapp/inc/hgteleportapplogging.h
taskswitcher/teleportui/hgteleportapp/inc/hgteleportappui.h
taskswitcher/teleportui/hgteleportapp/inc/hgteleportappview.h
taskswitcher/teleportui/hgteleportapp/inc/hgteleportcommands.hrh
taskswitcher/teleportui/hgteleportapp/inc/hgteleportdatachangeobserver.h
taskswitcher/teleportui/hgteleportapp/inc/hgteleportdevicestate.h
taskswitcher/teleportui/hgteleportapp/inc/hgteleportdocument.h
taskswitcher/teleportui/hgteleportapp/inc/hgteleporteventcontroler.h
taskswitcher/teleportui/hgteleportapp/inc/hgteleporteventcontrolerobserver.h
taskswitcher/teleportui/hgteleportapp/inc/hgteleportfastswaparea.h
taskswitcher/teleportui/hgteleportapp/inc/hgteleportfastswapgrid.h
taskswitcher/teleportui/hgteleportapp/inc/hgteleportphysics.h
taskswitcher/teleportui/hgteleportapp/inc/hgteleportphysicsengine.h
taskswitcher/teleportui/hgteleportapp/inc/hgteleportuid.hrh
taskswitcher/teleportui/hgteleportapp/loc/taskswitcher.loc
taskswitcher/teleportui/hgteleportapp/src/hgteleport.cpp
taskswitcher/teleportui/hgteleportapp/src/hgteleportapplication.cpp
taskswitcher/teleportui/hgteleportapp/src/hgteleportappui.cpp
taskswitcher/teleportui/hgteleportapp/src/hgteleportappview.cpp
taskswitcher/teleportui/hgteleportapp/src/hgteleportdevicestate.cpp
taskswitcher/teleportui/hgteleportapp/src/hgteleportdocument.cpp
taskswitcher/teleportui/hgteleportapp/src/hgteleporteventcontroler.cpp
taskswitcher/teleportui/hgteleportapp/src/hgteleportfastswaparea.cpp
taskswitcher/teleportui/hgteleportapp/src/hgteleportfastswapgrid.cpp
taskswitcher/teleportui/hgteleportapp/src/hgteleportphysics.cpp
taskswitcher/teleportui/hgteleportapp/src/hgteleportphysicsengine.cpp
taskswitcher/teleportui/hgteleportappecom/data/hgteleportappecom.rss
taskswitcher/teleportui/hgteleportappecom/group/bld.inf
taskswitcher/teleportui/hgteleportappecom/group/hgteleportappecom.mmp
taskswitcher/teleportui/hgteleportappecom/inc/hgteleportappecom.h
taskswitcher/teleportui/hgteleportappecom/inc/hgteleportappecomconst.hrh
taskswitcher/teleportui/hgteleportappecom/inc/hgteleportappecomlogging.h
taskswitcher/teleportui/hgteleportappecom/src/hgteleportappecom.cpp
taskswitcher/teleportui/hgteleportappecom/src/proxy.cpp
taskswitcher/teleportui/inc/hggraphicids.h
taskswitcher/teleportui/inc/hggraphictab.h
taskswitcher/teleportui/rom/hgteleport.iby
taskswitcher/teleportui/rom/hgteleportresources.iby
taskswitcher/teleportui/sis/stubs/createstubs.bat
taskswitcher/teleportui/sis/stubs/teleport_stub.pkg
taskswitcher/teleportui/sis/stubs/teleport_stub.sis
taskswitcher/teleportui/sis/teleport.pkg
taskswitcher/teleportui/trace/hglogging.h
taskswitcher/teleportui/trace/hglogutils.h
--- a/idlehomescreen/data/qhd_tch/desktop_20026f4f/hsps/00/desktopconfiguration.dtd	Fri Jan 22 09:35:14 2010 +0200
+++ b/idlehomescreen/data/qhd_tch/desktop_20026f4f/hsps/00/desktopconfiguration.dtd	Tue Jan 26 11:48:23 2010 +0200
@@ -24,9 +24,18 @@
 
 <!--
 qtn_desktop_configuration_name.attributes
-qtn_desktop_configuration_name.layout "list_single_pane_t1_cp2"
+qtn_desktop_configuration_name.layout "listrow_wgtman_pane_t1"
 qtn_desktop_configuration_name.release "TB9.2"
-qtn_desktop_configuration_name.description "Shortcut"
+qtn_desktop_configuration_name.description "Shortcut widget name"
 qtn_desktop_configuration_name.parents ""
 -->
-<!ENTITY qtn_desktop_configuration_name  "Shortcut">
\ No newline at end of file
+<!ENTITY qtn_desktop_configuration_name  "Shortcut">
+
+<!--
+qtn_desktop_configuration_desc.attributes
+qtn_desktop_configuration_desc.layout "listrow_wgtman_pane_t2"
+qtn_desktop_configuration_desc.release "TB9.2"
+qtn_desktop_configuration_desc.description "Shortcut widget description"
+qtn_desktop_configuration_desc.parents ""
+-->
+<!ENTITY qtn_desktop_configuration_desc  "Provides quick access to your favorite applications from Home Screen.">
--- a/idlehomescreen/data/qhd_tch/desktop_20026f4f/hsps/00/manifest.dat	Fri Jan 22 09:35:14 2010 +0200
+++ b/idlehomescreen/data/qhd_tch/desktop_20026f4f/hsps/00/manifest.dat	Tue Jan 26 11:48:23 2010 +0200
@@ -27,7 +27,7 @@
 
     <multiinstance>2</multiinstance>
 
-    <description>RnD description desktop plugin</description>
+    <description>&amp;qtn_desktop_configuration_desc;</description>
     <filelogo>skin(270501603 9361):mif(icon.mif 16384 16385)</filelogo>
     
     <!-- Locale independent/common resources -->
--- a/idlehomescreen/data/qhd_tch/desktop_20026f4f/loc/desktopconfiguration.loc	Fri Jan 22 09:35:14 2010 +0200
+++ b/idlehomescreen/data/qhd_tch/desktop_20026f4f/loc/desktopconfiguration.loc	Tue Jan 26 11:48:23 2010 +0200
@@ -15,8 +15,14 @@
 * 
 */
 
-// d: Shortcuts
-// l: list_single_pane_t1_cp2
+// d: Shortcut widget name 
+// l: listrow_wgtman_pane_t1
 // w:
 // r: TB9.2
 #define qtn_desktop_configuration_name  "Shortcut"
+
+// d: Shortcut widget description
+// l: listrow_wgtman_pane_t2
+// w:
+// r: TB9.2
+#define qtn_desktop_configuration_desc  "Provides quick access to your favorite applications from Home Screen."
--- a/idlehomescreen/data/qhd_tch/profile_2001cb7c/group/bld.inf	Fri Jan 22 09:35:14 2010 +0200
+++ b/idlehomescreen/data/qhd_tch/profile_2001cb7c/group/bld.inf	Tue Jan 26 11:48:23 2010 +0200
@@ -23,6 +23,9 @@
 //********************************************************
 ../hsps/00/manifest.dat /epoc32/data/Z/resource/homescreen/profile_2001cb7c/hsps/manifest.dat
 ../hsps/00/widgetconfiguration.xml /epoc32/data/Z/resource/homescreen/profile_2001cb7c/hsps/widgetconfiguration.xml
+// waiting for localization from platform
+//../hsps/00/profileconfiguration.dtd /epoc32/data/Z/resource/homescreen/profile_2001cb7c/hsps/profileconfiguration.dtd
+
 ../xuikon/00/profile.dat /epoc32/data/Z/resource/homescreen/profile_2001cb7c/xuikon/profile_2001cb7c.dat
 ../xuikon/00/profile.css /epoc32/data/Z/resource/homescreen/profile_2001cb7c/xuikon/profile.css
 ../xuikon/00/profile.xml /epoc32/data/Z/resource/homescreen/profile_2001cb7c/xuikon/profile.xml
@@ -42,6 +45,8 @@
 //*****************************
 // export localizable loc files (engineering versions)
 ../loc/profilewidget.loc    APP_LAYER_LOC_EXPORT_PATH(profilewidget.loc)
+// waiting for localization from platform
+//../loc/profileconfiguration.loc    APP_LAYER_LOC_EXPORT_PATH(profileconfiguration.loc)
 
 // Support for S60 builds
 //***********************
--- a/idlehomescreen/data/qhd_tch/profile_2001cb7c/hsps/00/manifest.dat	Fri Jan 22 09:35:14 2010 +0200
+++ b/idlehomescreen/data/qhd_tch/profile_2001cb7c/hsps/00/manifest.dat	Tue Jan 26 11:48:23 2010 +0200
@@ -14,16 +14,23 @@
 
     <configurationuid>0x2001cb7c</configurationuid>
 
+    <!-- Name of the localization files 
+    waiting for localization from platform
+    <filedtd>profileconfiguration.dtd</filedtd>
+    <fullname>&amp;qtn_profile_configuration_name;</fullname>
+    <description>&amp;qtn_profile_configuration_desc;</description>
+    -->
+    
     <!-- description -->
-    <fullname>&amp;qtn_hs_profile_edit;</fullname>
+    <fullname>profilename waits loc</fullname>
     <shortname>profile</shortname>
     <version>1.0</version>
 
     <!-- configuration -->
     <filexml>widgetconfiguration.xml</filexml>
 
-    <description>RnD description profile plugin</description>
-    
+    <description>profiledesc waits localization from platform</description>
+   
     <filelogo>skin(270501603 9360):mif(icon.mif 16384 16385)</filelogo>
     <!-- Locale specific resources -->
     <localization>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/qhd_tch/profile_2001cb7c/hsps/00/profileconfiguration.dtd	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+============================================================================
+<FileName: "desktopconfiguration.dtd">
+<PartOf  : "desktopconfiguration">
+
+<FileDescription: "Localization strings for the configuration">
+<FileVersion    : >
+
+<Copyright:
+"Copyright © 2007 Nokia Corporation.
+This material, including documentation and any related
+computer programs, is protected by copyright controlled by
+Nokia Corporation. All rights are reserved. Copying,
+including reproducing, storing,  adapting or translating, any
+or all of this material requires the prior written consent of
+Nokia Corporation. This material also contains confidential
+information which may not be disclosed to others without the
+prior written consent of Nokia Corporation.">
+============================================================================
+-->
+
+<!-- NOTE: make sure that there is at last one space character (hex 20) after the entity name -->
+
+<!--
+qtn_desktop_configuration_name.attributes
+qtn_desktop_configuration_name.layout "listrow_wgtman_pane_t1"
+qtn_desktop_configuration_name.release "TB9.2"
+qtn_desktop_configuration_name.description "Shortcut"
+qtn_desktop_configuration_name.parents ""
+-->
+<!ENTITY qtn_profile_configuration_name  "Profile">
+
+<!--
+qtn_desktop_configuration_desc.attributes
+qtn_desktop_configuration_desc.layout "listrow_wgtman_pane_t2"
+qtn_desktop_configuration_desc.release "TB9.2"
+qtn_desktop_configuration_desc.description "Shortcut widget description"
+qtn_desktop_configuration_desc.parents ""
+-->
+<!ENTITY qtn_profile_configuration_desc  "Provides quick access to calendar, time&date and change profile.">
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/qhd_tch/profile_2001cb7c/loc/profileconfiguration.loc	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,29 @@
+/*
+* Copyright (c) 2005-2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Localization strings for project Active Idle 3 (hsps)
+*
+*/
+
+
+// d: profile widget name
+// l: listrow_wgtman_pane_t1
+// w:
+// r: TB9.2
+#define qtn_profile_configuration_name  "Profile"
+
+// d: profile widget description
+// l: listrow_wgtman_pane_t2
+// w:
+// r: TB9.2
+#define qtn_profile_configuration_desc  "Provides quick access to calendar, time&date and change profile."
\ No newline at end of file
--- a/idlehomescreen/data/qhd_tch/profile_2001cb7c/loc/profilewidget.loc	Fri Jan 22 09:35:14 2010 +0200
+++ b/idlehomescreen/data/qhd_tch/profile_2001cb7c/loc/profilewidget.loc	Tue Jan 26 11:48:23 2010 +0200
@@ -11,7 +11,7 @@
 *
 * Contributors:
 *
-* Description:  Localization strings for project Active Idle 3
+* Description:  Localization strings for project Active Idle 3 (xuikon)
 *
 */
 
@@ -20,5 +20,4 @@
 // l: list_single_pane_t1_cp2
 // w:
 // r: TB9.1
-#define qtn_hs_profile_edit "Edit active profile"
-#define qtn_hs_profile_desc  "localized RnD profilewidget description."
+#define qtn_hs_profile_edit  "Edit active profile"
--- a/idlehomescreen/data/qhd_tch/wideimage_2001f489/group/bld.inf	Fri Jan 22 09:35:14 2010 +0200
+++ b/idlehomescreen/data/qhd_tch/wideimage_2001f489/group/bld.inf	Tue Jan 26 11:48:23 2010 +0200
@@ -30,14 +30,7 @@
 ../xuikon/00/wideimage.dat /epoc32/data/Z/resource/homescreen/wideimage_2001f489/xuikon/wideimage_2001f489.dat
 ../xuikon/00/wideimage.css /epoc32/data/Z/resource/homescreen/wideimage_2001f489/xuikon/wideimage.css
 ../xuikon/00/wideimage.xml /epoc32/data/Z/resource/homescreen/wideimage_2001f489/xuikon/wideimage.xml
-../xuikon/00/wideimage.dtd /epoc32/data/Z/resource/homescreen/wideimage_2001f489/xuikon/wideimage.dtd
 
-// Support for S60 localization
-//*****************************
-#ifndef __WIDEIMAGE_LOC__
-#define __WIDEIMAGE_LOC__
-../loc/wideimage.loc APP_LAYER_LOC_EXPORT_PATH(wideimage.loc)
-#endif // __WIDEIMAGE_LOC__
 
 // Support for S60 builds
 //***********************
--- a/idlehomescreen/data/qhd_tch/wideimage_2001f489/hsps/00/widgetconfiguration.xml	Fri Jan 22 09:35:14 2010 +0200
+++ b/idlehomescreen/data/qhd_tch/wideimage_2001f489/hsps/00/widgetconfiguration.xml	Tue Jan 26 11:48:23 2010 +0200
@@ -9,9 +9,16 @@
                 <property name="value" value=""/> 
             </item>          
             <!-- Template designer choice -->
-            <item id="prop1" name="contentdata">
+             <item id="prop1" name="contentdata">
+                <property name="class" value="def_image"/>  
+            </item> 
+            <item id="prop2" name="contentdata">
+                <property name="class" value="def_text"/>  
+            </item> 
+            <item id="prop3" name="contentdata">
                 <property name="class" value="image1"/>  
-            </item>              
+            </item>  
+            
             <!-- Template designer choice -->
             <item id="p_trigger" name="pubtrigger">   
                 <property name="name" value="selected"/> 
--- a/idlehomescreen/data/qhd_tch/wideimage_2001f489/loc/wideimage.loc	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-/*
-* Copyright (c) 2005-2006 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Localization strings for WideImage widget (Xuikon)
-*
-*/
-
-// d: Loading content
-// l: ai_gene_pane_1_t1/opt4
-// w: 
-// r: TB9.2
-#define qtn_ai_loading_content  "Loading content..."
\ No newline at end of file
--- a/idlehomescreen/data/qhd_tch/wideimage_2001f489/xuikon/00/wideimage.css	Fri Jan 22 09:35:14 2010 +0200
+++ b/idlehomescreen/data/qhd_tch/wideimage_2001f489/xuikon/00/wideimage.css	Tue Jan 26 11:48:23 2010 +0200
@@ -1,22 +1,53 @@
 widget#wideimage_template
 {
     nav-index: appearance;
-    background-color: none;
+    block-progression:rl;
 }
 
-image#wide_image
+box#image_container
 {
     /* Will be updated by content policy */
     display: none;
 }
+box#default_container
+{
+    /* Will be updated by content policy */
+   block-progression: rl;
+   direction:ltr; 
+   display: block;
+}
 
-text#wide_text
+image#default_image
+{
+    padding-top:9px;
+    padding-bottom:9px;
+    padding-left:9px;
+    padding-right:9px;
+    height: 64px;
+    width: 64px;
+}
+
+animation#loading
 {
-    padding-left: 5px;
-    text-align: center;
+	position: absolute;
+	top:9px;
+	left:273px;
+	right:9px;
+	width:30px;
+	height:30px;
+	/* Will be updated by dataplugin */
+	display: none;
+}
+
+text
+{
+    padding-left:9px;
+    padding-right:9px;
+    height : 10u;
+    font-line-space: 15;
+    text-align:left;
+    text-overflow-mode: wrap;
     font-family: EAknLogicalFontSecondaryFont;
-    font-size: 23px;
+    font-size: 4u;
     color: "SKIN(268458534 13056 74)";
 }
-
-
--- a/idlehomescreen/data/qhd_tch/wideimage_2001f489/xuikon/00/wideimage.dat	Fri Jan 22 09:35:14 2010 +0200
+++ b/idlehomescreen/data/qhd_tch/wideimage_2001f489/xuikon/00/wideimage.dat	Tue Jan 26 11:48:23 2010 +0200
@@ -8,5 +8,4 @@
     <ThemeVersion>1.0</ThemeVersion>
     <FileXML>wideimage.xml</FileXML>
     <FileCSS>wideimage.css</FileCSS>
-    <FileDTD>wideimage.dtd</FileDTD>
 </data>
\ No newline at end of file
--- a/idlehomescreen/data/qhd_tch/wideimage_2001f489/xuikon/00/wideimage.dtd	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-============================================================================
-<FileName: "wideimage.dtd">
-<PartOf  : "AI3">
-
-<FileDescription: "Localization strings for AI3">
-<FileVersion    : >
-
-<Copyright:
-"Copyright © 2005 Nokia Corporation.
-This material, including documentation and any related
-computer programs, is protected by copyright controlled by
-Nokia Corporation. All rights are reserved. Copying,
-including reproducing, storing,  adapting or translating, any
-or all of this material requires the prior written consent of
-Nokia Corporation. This material also contains confidential
-information which may not be disclosed to others without the
-prior written consent of Nokia Corporation.">
-============================================================================
--->
-
-
-<!--
-qtn_ai_loading_content.attributes
-qtn_ai_loading_content.layout "ai_gene_pane_1_t1/opt4"
-qtn_ai_loading_content.release "5.0"
-qtn_ai_loading_content.description "Shows information text for slow loading widgets"
-qtn_ai_loading_content.parents "ai_gene_pane_1"
--->
-<!ENTITY qtn_ai_loading_content  "Loading content...">
-
-
-
-
-
--- a/idlehomescreen/data/qhd_tch/wideimage_2001f489/xuikon/00/wideimage.xml	Fri Jan 22 09:35:14 2010 +0200
+++ b/idlehomescreen/data/qhd_tch/wideimage_2001f489/xuikon/00/wideimage.xml	Tue Jan 26 11:48:23 2010 +0200
@@ -1,11 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE xmluiml SYSTEM "wideimage.dtd">
 <xmluiml xmlns="http://www.series60.com/xml/xmluiml/1" version="1.0">
     <widget id="wideimage_template" focusable="true" _s60-initial-focus="1">        
         
         <!-- Data plugin in this widget -->
         <contentsource id="wideimage_plugin" name="" value="0x200286DD" />
-        
         <configuration name="service" value="Service.ContentPublishing"/>
         <configuration name="interface" value="IContentPublishing"/>
         <configuration name="command" value="GetList"/>
@@ -17,22 +15,29 @@
                 <event id="p_trigger" name="" />            
             </action>
         </actions>
-        <box id="container" sizeaware="true">
-            <actions>
+        <box id="default_container" _s60-initial-focus="1">
+            <image id="default_image">
+	            <property id="prop1" class=""/>
+            </image>
+            <text id="default_text">
+            	<property id="prop2" class=""/>
+            </text>
+ 			 </box>            
+       <box id="image_container" sizeaware="true" _s60-initial-focus="1">   
+       	    <actions>
                 <action>
                     <trigger name="sizechanged"/>
                     <event name="ui/setelementsizetocps(container)"/>
                 </action>
             </actions>
             <image id="wide_image">
-                <property id="prop1" class=""/>
-                <property class="policy/emptyContent" name="wide_image" value="display: none;"/>
-                <property class="policy/Content" name="wide_image" value="display: block;"/>
-                <property class="policy/emptyContent" name="wide_text" value="display: block;"/>
-                <property class="policy/Content" name="wide_text" value="display: none;"/>            
+                <property id="prop3" class=""/>
+                <property class="policy/emptyContent" name="image_container" value="display: none;"/>
+                <property class="policy/Content" name="image_container" value="display: block;"/>
+                <property class="policy/Content" name="default_container" value="display: none;"/>
             </image>
-            <text id="wide_text">&qtn_ai_loading_content;</text>
-        </box>
+       </box>
+       <animation id="loading"/>
         <menuextension>
             <!-- dynmenuitems are mapped to HS view.xml menu based on target attribute.
                  HS view.xml provides localisation for predined items: "settings" and "refresh". -->                
Binary file idlehomescreen/help/data/xhtml.zip has changed
--- a/idlehomescreen/help/inc/hmsc.hlp.hrh	Fri Jan 22 09:35:14 2010 +0200
+++ b/idlehomescreen/help/inc/hmsc.hlp.hrh	Tue Jan 26 11:48:23 2010 +0200
@@ -24,8 +24,6 @@
 
 _LIT(KSET_HLP_HOME_SCREEN, "SET_HLP_HOME_SCREEN"); // 
 _LIT(KSET_HLP_HOME_SCREEN_EDIT, "SET_HLP_HOME_SCREEN_EDIT"); // 
-_LIT(KSET_HLP_HOME_SCREEN_SHORTCUTS, "SET_HLP_HOME_SCREEN_SHORTCUTS"); // 
 _LIT(KWM_HLP_WIDGET_COLLECTION, "WM_HLP_WIDGET_COLLECTION"); // 
-_LIT(KSET_HLP_HOME_SCREEN_NON_TOUCH, "SET_HLP_HOME_SCREEN_NON_TOUCH"); //
 
 #endif 
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/inc/xnanimation.h	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,92 @@
+/*
+* Copyright (c) 2002-2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Wrapper class for Animation.
+*
+*/
+
+
+
+#ifndef _XNANIMATION_H
+#define _XNANIMATION_H
+
+//  INCLUDES
+#include "xncomponent.h"
+#include "mxncomponentinterface.h"
+
+// FORWARD DECLARATIONS
+class CFbsBitmap;
+
+// CLASS DECLARATION
+
+namespace XnAnimationInterface
+{
+_LIT8(KType, "animation");
+class MXnAnimationInterface : public XnComponentInterface::MXnComponentInterface
+   {
+
+public:
+		
+    static inline const TDesC8& Type()
+        {
+        return KType;
+        }
+		
+// Add New functions if needed 
+   };
+ }   
+    
+/**
+*  @ingroup group_xnanimationfactory
+*  @lib xn3animationfactory.dll
+*  @since Series 60 9.2
+*/
+class CXnAnimation : public CXnComponent, public XnAnimationInterface::MXnAnimationInterface
+   {
+
+public:
+
+	/**
+	 * 2 phase construction.
+	 */
+	static CXnAnimation* NewL();
+
+	/**
+	 * Destructor.
+	 */
+	virtual ~CXnAnimation();
+
+public: // from CCoeControl
+   	/**
+      * Create a component interface according to the given type.
+      * @param aType Type of the interface to create
+      * @return Created interface or NULL if the provided type is not supported.
+      */ 
+    virtual XnComponentInterface::MXnComponentInterface* MakeInterfaceL(const TDesC8& aType); 
+  
+	        
+private:
+    /**
+     * Default constructor.
+     */
+    CXnAnimation();
+    
+    /**
+     * ConstructL
+     */
+	void ConstructL();
+   };
+
+#endif      // _XNANIMATION_H
+            
+// End of File
--- a/idlehomescreen/inc/xneditmode.h	Fri Jan 22 09:35:14 2010 +0200
+++ b/idlehomescreen/inc/xneditmode.h	Tue Jan 26 11:48:23 2010 +0200
@@ -119,7 +119,14 @@
      * @since Series 60 5.0
      */
     void HandleScreenDeviceChangedL();
-        
+
+    /**
+     * Reset the dragging state and update screen
+     *
+     * @since Series 60 5.0
+     */
+    void StopDraggingL();
+
 private:
     // new functions
 
--- a/idlehomescreen/nativeuicontroller/inc/nativeuicontroller.h	Fri Jan 22 09:35:14 2010 +0200
+++ b/idlehomescreen/nativeuicontroller/inc/nativeuicontroller.h	Tue Jan 26 11:48:23 2010 +0200
@@ -135,6 +135,17 @@
 
     TBool RequiresSubscription( const TAiPublisherInfo& aPublisherInfo ) const;
     
+    TInt SetProperty( MAiPropertyExtension& aPlugin,
+            const TDesC8& aElementId,
+            const TDesC8& aPropertyName,
+            const TDesC8& aPropertyValue );
+    
+    TInt SetProperty( MAiPropertyExtension& aPlugin,
+            const TDesC8& aElementId,
+            const TDesC8& aPropertyName,
+            const TDesC8& aPropertyValue,  
+            MAiContentObserver::TValueType aValueType);
+
 // new methods
 
     /**
--- a/idlehomescreen/nativeuicontroller/src/nativeuicontroller.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ b/idlehomescreen/nativeuicontroller/src/nativeuicontroller.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -1040,6 +1040,32 @@
     }
 
 // ----------------------------------------------------------------------------
+// CNativeUiController::SetProperty()
+// ----------------------------------------------------------------------------
+//
+TInt CNativeUiController::SetProperty( MAiPropertyExtension& /*aPlugin*/,
+        const TDesC8& /*aElementId*/,
+        const TDesC8& /*aPropertyName*/,
+        const TDesC8& /*aPropertyValue*/ ) 
+    {
+   
+    return KErrNotSupported;
+    }
+
+// ----------------------------------------------------------------------------
+// CNativeUiController::SetProperty()
+// ----------------------------------------------------------------------------
+//   
+TInt CNativeUiController::SetProperty(MAiPropertyExtension& /*aPlugin*/,
+        const TDesC8& /*aElementId*/,
+        const TDesC8& /*aPropertyName*/,
+        const TDesC8& /*aPropertyValue*/,
+        MAiContentObserver::TValueType /*aValueType*/) 
+    {
+    return KErrNotSupported;
+    }
+
+// ----------------------------------------------------------------------------
 // CNativeUiController::NewApplication()
 // ----------------------------------------------------------------------------
 //
--- a/idlehomescreen/sapiwrapper/hspswrapper/bwins/hspswrapper.def	Fri Jan 22 09:35:14 2010 +0200
+++ b/idlehomescreen/sapiwrapper/hspswrapper/bwins/hspswrapper.def	Tue Jan 26 11:48:23 2010 +0200
@@ -8,93 +8,93 @@
 	?ItemName@CItemMap@hspswrapper@@QBEABVTDesC8@@XZ @ 7 NONAME ; class TDesC8 const & hspswrapper::CItemMap::ItemName(void) const
 	??1CPluginMap@hspswrapper@@UAE@XZ @ 8 NONAME ; hspswrapper::CPluginMap::~CPluginMap(void)
 	?ActivationState@CPluginMap@hspswrapper@@QBEHXZ @ 9 NONAME ; int hspswrapper::CPluginMap::ActivationState(void) const
-	?SetAppConfigurationL@CHspsWrapper@hspswrapper@@QAEHABVTDesC8@@@Z @ 10 NONAME ; int hspswrapper::CHspsWrapper::SetAppConfigurationL(class TDesC8 const &)
-	?Uid@CPluginInfo@hspswrapper@@QBEABVTDesC8@@XZ @ 11 NONAME ; class TDesC8 const & hspswrapper::CPluginInfo::Uid(void) const
-	?ConfigurationState@CPluginInfo@hspswrapper@@QBEABVTDesC8@@XZ @ 12 NONAME ; class TDesC8 const & hspswrapper::CPluginInfo::ConfigurationState(void) const
-	?NameL@CObjectMap@hspswrapper@@QBEABVTDesC8@@XZ @ 13 NONAME ; class TDesC8 const & hspswrapper::CObjectMap::NameL(void) const
-	?Value@CPropertyMap@hspswrapper@@QBEABVTDesC8@@XZ @ 14 NONAME ; class TDesC8 const & hspswrapper::CPropertyMap::Value(void) const
-	?NewL@CPropertyMap@hspswrapper@@SAPAV12@XZ @ 15 NONAME ; class hspswrapper::CPropertyMap * hspswrapper::CPropertyMap::NewL(void)
-	??1CPluginInfo@hspswrapper@@UAE@XZ @ 16 NONAME ; hspswrapper::CPluginInfo::~CPluginInfo(void)
-	?AddObjectMapL@CHspsConfiguration@hspswrapper@@QAEAAV12@PAVCObjectMap@2@@Z @ 17 NONAME ; class hspswrapper::CHspsConfiguration & hspswrapper::CHspsConfiguration::AddObjectMapL(class hspswrapper::CObjectMap *)
-	?PluginId@CPluginMap@hspswrapper@@QBEABVTDesC8@@XZ @ 18 NONAME ; class TDesC8 const & hspswrapper::CPluginMap::PluginId(void) const
-	?PluginMaps@CHspsConfiguration@hspswrapper@@QAEAAV?$RPointerArray@VCPluginMap@hspswrapper@@@@XZ @ 19 NONAME ; class RPointerArray<class hspswrapper::CPluginMap> & hspswrapper::CHspsConfiguration::PluginMaps(void)
-	?NewL@CPluginMap@hspswrapper@@SAPAV12@XZ @ 20 NONAME ; class hspswrapper::CPluginMap * hspswrapper::CPluginMap::NewL(void)
-	??1CPropertyMap@hspswrapper@@UAE@XZ @ 21 NONAME ; hspswrapper::CPropertyMap::~CPropertyMap(void)
-	?SetNameL@CObjectMap@hspswrapper@@QAEAAV12@ABVTDesC8@@@Z @ 22 NONAME ; class hspswrapper::CObjectMap & hspswrapper::CObjectMap::SetNameL(class TDesC8 const &)
-	?SetPluginIdL@CPluginMap@hspswrapper@@QAEAAV12@ABVTDesC8@@@Z @ 23 NONAME ; class hspswrapper::CPluginMap & hspswrapper::CPluginMap::SetPluginIdL(class TDesC8 const &)
-	?SetConfigurationStateL@CPluginInfo@hspswrapper@@QAEAAV12@ABVTDesC8@@@Z @ 24 NONAME ; class hspswrapper::CPluginInfo & hspswrapper::CPluginInfo::SetConfigurationStateL(class TDesC8 const &)
-	??1CHspsConfiguration@hspswrapper@@UAE@XZ @ 25 NONAME ; hspswrapper::CHspsConfiguration::~CHspsConfiguration(void)
-	?Status@CAddPluginResult@hspswrapper@@QBEHXZ @ 26 NONAME ; int hspswrapper::CAddPluginResult::Status(void) const
-	?NewLC@CHspsConfiguration@hspswrapper@@SAPAV12@XZ @ 27 NONAME ; class hspswrapper::CHspsConfiguration * hspswrapper::CHspsConfiguration::NewLC(void)
-	?Name@CPluginInfo@hspswrapper@@QBEABVTDesC8@@XZ @ 28 NONAME ; class TDesC8 const & hspswrapper::CPluginInfo::Name(void) const
-	??1CHspsWrapper@hspswrapper@@UAE@XZ @ 29 NONAME ; hspswrapper::CHspsWrapper::~CHspsWrapper(void)
-	?SetMultiInstanceL@CPluginInfo@hspswrapper@@QAEAAV12@J@Z @ 30 NONAME ; class hspswrapper::CPluginInfo & hspswrapper::CPluginInfo::SetMultiInstanceL(long)
-	?MultiInstance@CPluginInfo@hspswrapper@@QBEABJXZ @ 31 NONAME ; long const & hspswrapper::CPluginInfo::MultiInstance(void) const
-	?SetStatus@CAddPluginResult@hspswrapper@@QAEXH@Z @ 32 NONAME ; void hspswrapper::CAddPluginResult::SetStatus(int)
-	?AddItemMapL@CHspsConfiguration@hspswrapper@@QAEAAV12@PAVCItemMap@2@@Z @ 33 NONAME ; class hspswrapper::CHspsConfiguration & hspswrapper::CHspsConfiguration::AddItemMapL(class hspswrapper::CItemMap *)
-	?MovePluginsL@CHspsWrapper@hspswrapper@@QAEHABVTDesC8@@ABVMDesC8Array@@@Z @ 34 NONAME ; int hspswrapper::CHspsWrapper::MovePluginsL(class TDesC8 const &, class MDesC8Array const &)
-	?HspsInterface@CHspsWrapper@hspswrapper@@QBEPAVMLiwInterface@@XZ @ 35 NONAME ; class MLiwInterface * hspswrapper::CHspsWrapper::HspsInterface(void) const
-	?PluginInfo@CHspsConfiguration@hspswrapper@@QAEAAVCPluginInfo@2@XZ @ 36 NONAME ; class hspswrapper::CPluginInfo & hspswrapper::CHspsConfiguration::PluginInfo(void)
-	?NewL@CAddPluginResult@hspswrapper@@SAPAV12@XZ @ 37 NONAME ; class hspswrapper::CAddPluginResult * hspswrapper::CAddPluginResult::NewL(void)
-	?GetPluginConfigurationL@CHspsWrapper@hspswrapper@@QAEPAVCHspsConfiguration@2@ABVTDesC8@@@Z @ 38 NONAME ; class hspswrapper::CHspsConfiguration * hspswrapper::CHspsWrapper::GetPluginConfigurationL(class TDesC8 const &)
-	?Properties@CItemMap@hspswrapper@@QBEAAV?$RPointerArray@VCPropertyMap@hspswrapper@@@@XZ @ 39 NONAME ; class RPointerArray<class hspswrapper::CPropertyMap> & hspswrapper::CItemMap::Properties(void) const
-	?Path@CObjectMap@hspswrapper@@QBEABVTDesC8@@XZ @ 40 NONAME ; class TDesC8 const & hspswrapper::CObjectMap::Path(void) const
-	?NewLC@CHspsWrapper@hspswrapper@@SAPAV12@ABVTDesC8@@PAVMHspsWrapperObserver@2@@Z @ 41 NONAME ; class hspswrapper::CHspsWrapper * hspswrapper::CHspsWrapper::NewLC(class TDesC8 const &, class hspswrapper::MHspsWrapperObserver *)
-	?SetNameL@CPropertyMap@hspswrapper@@QAEAAV12@ABVTDesC8@@@Z @ 42 NONAME ; class hspswrapper::CPropertyMap & hspswrapper::CPropertyMap::SetNameL(class TDesC8 const &)
-	?SetConfStateL@CHspsWrapper@hspswrapper@@QAEHABVTDesC8@@0H@Z @ 43 NONAME ; int hspswrapper::CHspsWrapper::SetConfStateL(class TDesC8 const &, class TDesC8 const &, int)
-	?MediaType@CObjectMap@hspswrapper@@QBEABVTDesC8@@XZ @ 44 NONAME ; class TDesC8 const & hspswrapper::CObjectMap::MediaType(void) const
-	?SetTypeL@CPluginInfo@hspswrapper@@QAEAAV12@ABVTDesC8@@@Z @ 45 NONAME ; class hspswrapper::CPluginInfo & hspswrapper::CPluginInfo::SetTypeL(class TDesC8 const &)
-	?AddPropertyMapL@CItemMap@hspswrapper@@QAEAAV12@PAVCPropertyMap@2@@Z @ 46 NONAME ; class hspswrapper::CItemMap & hspswrapper::CItemMap::AddPropertyMapL(class hspswrapper::CPropertyMap *)
-	?NewLC@CObjectMap@hspswrapper@@SAPAV12@XZ @ 47 NONAME ; class hspswrapper::CObjectMap * hspswrapper::CObjectMap::NewLC(void)
-	?GetAppConfigurationsL@CHspsWrapper@hspswrapper@@QAEXAAV?$RPointerArray@VCPluginInfo@hspswrapper@@@@@Z @ 48 NONAME ; void hspswrapper::CHspsWrapper::GetAppConfigurationsL(class RPointerArray<class hspswrapper::CPluginInfo> &)
-	?NewL@CPluginInfo@hspswrapper@@SAPAV12@XZ @ 49 NONAME ; class hspswrapper::CPluginInfo * hspswrapper::CPluginInfo::NewL(void)
-	?SetItemNameL@CItemMap@hspswrapper@@QAEAAV12@ABVTDesC8@@@Z @ 50 NONAME ; class hspswrapper::CItemMap & hspswrapper::CItemMap::SetItemNameL(class TDesC8 const &)
-	?AddPluginL@CHspsWrapper@hspswrapper@@QAEPAVCAddPluginResult@2@ABVTDesC8@@0@Z @ 51 NONAME ; class hspswrapper::CAddPluginResult * hspswrapper::CHspsWrapper::AddPluginL(class TDesC8 const &, class TDesC8 const &)
-	?NewL@CHspsConfiguration@hspswrapper@@SAPAV12@XZ @ 52 NONAME ; class hspswrapper::CHspsConfiguration * hspswrapper::CHspsConfiguration::NewL(void)
-	?SetLogoIconL@CPluginInfo@hspswrapper@@QAEAAV12@ABVTDesC8@@@Z @ 53 NONAME ; class hspswrapper::CPluginInfo & hspswrapper::CPluginInfo::SetLogoIconL(class TDesC8 const &)
-	?SetPluginUidL@CPluginMap@hspswrapper@@QAEAAV12@ABVTDesC8@@@Z @ 54 NONAME ; class hspswrapper::CPluginMap & hspswrapper::CPluginMap::SetPluginUidL(class TDesC8 const &)
-	?SetValueL@CPropertyMap@hspswrapper@@QAEAAV12@ABVTDesC8@@@Z @ 55 NONAME ; class hspswrapper::CPropertyMap & hspswrapper::CPropertyMap::SetValueL(class TDesC8 const &)
-	??1CObjectMap@hspswrapper@@UAE@XZ @ 56 NONAME ; hspswrapper::CObjectMap::~CObjectMap(void)
-	??1CItemMap@hspswrapper@@UAE@XZ @ 57 NONAME ; hspswrapper::CItemMap::~CItemMap(void)
-	?Name@CPropertyMap@hspswrapper@@QBEABVTDesC8@@XZ @ 58 NONAME ; class TDesC8 const & hspswrapper::CPropertyMap::Name(void) const
-	?SetPluginSettingsL@CHspsWrapper@hspswrapper@@QAEHABVTDesC8@@ABV?$RPointerArray@VCItemMap@hspswrapper@@@@@Z @ 59 NONAME ; int hspswrapper::CHspsWrapper::SetPluginSettingsL(class TDesC8 const &, class RPointerArray<class hspswrapper::CItemMap> const &)
-	?ConfId@CHspsConfiguration@hspswrapper@@QBEABVTDesC8@@XZ @ 60 NONAME ; class TDesC8 const & hspswrapper::CHspsConfiguration::ConfId(void) const
-	?GetPluginsL@CHspsWrapper@hspswrapper@@QAEXAAV?$RPointerArray@VCPluginInfo@hspswrapper@@@@ABVTDesC8@@1@Z @ 61 NONAME ; void hspswrapper::CHspsWrapper::GetPluginsL(class RPointerArray<class hspswrapper::CPluginInfo> &, class TDesC8 const &, class TDesC8 const &)
-	?ItemId@CItemMap@hspswrapper@@QBEABVTDesC8@@XZ @ 62 NONAME ; class TDesC8 const & hspswrapper::CItemMap::ItemId(void) const
-	?GetAppConfigurationL@CHspsWrapper@hspswrapper@@QAEPAVCHspsConfiguration@2@XZ @ 63 NONAME ; class hspswrapper::CHspsConfiguration * hspswrapper::CHspsWrapper::GetAppConfigurationL(void)
-	?NewL@CItemMap@hspswrapper@@SAPAV12@XZ @ 64 NONAME ; class hspswrapper::CItemMap * hspswrapper::CItemMap::NewL(void)
-	?SetPathL@CObjectMap@hspswrapper@@QAEAAV12@ABVTDesC8@@@Z @ 65 NONAME ; class hspswrapper::CObjectMap & hspswrapper::CObjectMap::SetPathL(class TDesC8 const &)
-	?PluginId@CAddPluginResult@hspswrapper@@QBEABVTDesC8@@XZ @ 66 NONAME ; class TDesC8 const & hspswrapper::CAddPluginResult::PluginId(void) const
-	??1CAddPluginResult@hspswrapper@@UAE@XZ @ 67 NONAME ; hspswrapper::CAddPluginResult::~CAddPluginResult(void)
-	?Description@CPluginInfo@hspswrapper@@QBEABVTDesC16@@XZ @ 68 NONAME ; class TDesC16 const & hspswrapper::CPluginInfo::Description(void) const
-	?NewLC@CPluginMap@hspswrapper@@SAPAV12@XZ @ 69 NONAME ; class hspswrapper::CPluginMap * hspswrapper::CPluginMap::NewLC(void)
-	?ReplacePluginL@CHspsWrapper@hspswrapper@@QAEHABVTDesC8@@0@Z @ 70 NONAME ; int hspswrapper::CHspsWrapper::ReplacePluginL(class TDesC8 const &, class TDesC8 const &)
-	?Resources@CHspsConfiguration@hspswrapper@@QAEAAV?$RPointerArray@VCObjectMap@hspswrapper@@@@XZ @ 71 NONAME ; class RPointerArray<class hspswrapper::CObjectMap> & hspswrapper::CHspsConfiguration::Resources(void)
-	?ServiceHandler@CHspsWrapper@hspswrapper@@QBEPAVCLiwServiceHandler@@XZ @ 72 NONAME ; class CLiwServiceHandler * hspswrapper::CHspsWrapper::ServiceHandler(void) const
-	?Interface@CPluginInfo@hspswrapper@@QBEABVTDesC8@@XZ @ 73 NONAME ; class TDesC8 const & hspswrapper::CPluginInfo::Interface(void) const
-	?SetActivePluginL@CHspsWrapper@hspswrapper@@QAEHABVTDesC8@@@Z @ 74 NONAME ; int hspswrapper::CHspsWrapper::SetActivePluginL(class TDesC8 const &)
-	?SetDescriptionL@CPluginInfo@hspswrapper@@QAEAAV12@ABVTDesC8@@@Z @ 75 NONAME ; class hspswrapper::CPluginInfo & hspswrapper::CPluginInfo::SetDescriptionL(class TDesC8 const &)
-	?AddPluginL@CHspsWrapper@hspswrapper@@QAEPAVCAddPluginResult@2@ABVTDesC8@@0H@Z @ 76 NONAME ; class hspswrapper::CAddPluginResult * hspswrapper::CHspsWrapper::AddPluginL(class TDesC8 const &, class TDesC8 const &, int)
-	?SetPluginIdL@CAddPluginResult@hspswrapper@@QAEXABVTDesC8@@@Z @ 77 NONAME ; void hspswrapper::CAddPluginResult::SetPluginIdL(class TDesC8 const &)
-	?SetUidL@CPluginInfo@hspswrapper@@QAEAAV12@ABVTDesC8@@@Z @ 78 NONAME ; class hspswrapper::CPluginInfo & hspswrapper::CPluginInfo::SetUidL(class TDesC8 const &)
-	?SetTagL@CObjectMap@hspswrapper@@QAEAAV12@ABVTDesC8@@@Z @ 79 NONAME ; class hspswrapper::CObjectMap & hspswrapper::CObjectMap::SetTagL(class TDesC8 const &)
-	?NewLC@CPluginInfo@hspswrapper@@SAPAV12@XZ @ 80 NONAME ; class hspswrapper::CPluginInfo * hspswrapper::CPluginInfo::NewLC(void)
-	?SetNameL@CPluginInfo@hspswrapper@@QAEAAV12@ABVTDesC8@@@Z @ 81 NONAME ; class hspswrapper::CPluginInfo & hspswrapper::CPluginInfo::SetNameL(class TDesC8 const &)
-	?SetMediaTypeL@CObjectMap@hspswrapper@@QAEAAV12@ABVTDesC8@@@Z @ 82 NONAME ; class hspswrapper::CObjectMap & hspswrapper::CObjectMap::SetMediaTypeL(class TDesC8 const &)
-	?Tag@CObjectMap@hspswrapper@@QBEABVTDesC8@@XZ @ 83 NONAME ; class TDesC8 const & hspswrapper::CObjectMap::Tag(void) const
-	?SetItemIdL@CItemMap@hspswrapper@@QAEAAV12@ABVTDesC8@@@Z @ 84 NONAME ; class hspswrapper::CItemMap & hspswrapper::CItemMap::SetItemIdL(class TDesC8 const &)
-	?NewLC@CItemMap@hspswrapper@@SAPAV12@XZ @ 85 NONAME ; class hspswrapper::CItemMap * hspswrapper::CItemMap::NewLC(void)
-	?SetLogoIconL@CPluginInfo@hspswrapper@@QAEAAV12@ABVTDesC16@@@Z @ 86 NONAME ; class hspswrapper::CPluginInfo & hspswrapper::CPluginInfo::SetLogoIconL(class TDesC16 const &)
-	?SetInterfaceL@CPluginInfo@hspswrapper@@QAEAAV12@ABVTDesC8@@@Z @ 87 NONAME ; class hspswrapper::CPluginInfo & hspswrapper::CPluginInfo::SetInterfaceL(class TDesC8 const &)
-	?AddPluginMapL@CHspsConfiguration@hspswrapper@@QAEAAV12@PAVCPluginMap@2@@Z @ 88 NONAME ; class hspswrapper::CHspsConfiguration & hspswrapper::CHspsConfiguration::AddPluginMapL(class hspswrapper::CPluginMap *)
-	?RemovePluginL@CHspsWrapper@hspswrapper@@QAEHABVTDesC8@@@Z @ 89 NONAME ; int hspswrapper::CHspsWrapper::RemovePluginL(class TDesC8 const &)
-	?SetActivationStateL@CPluginMap@hspswrapper@@QAEAAV12@ABVTDesC8@@@Z @ 90 NONAME ; class hspswrapper::CPluginMap & hspswrapper::CPluginMap::SetActivationStateL(class TDesC8 const &)
-	?Type@CPluginInfo@hspswrapper@@QBEABVTDesC8@@XZ @ 91 NONAME ; class TDesC8 const & hspswrapper::CPluginInfo::Type(void) const
-	?SetConfIdL@CHspsConfiguration@hspswrapper@@QAEAAV12@ABVTDesC8@@@Z @ 92 NONAME ; class hspswrapper::CHspsConfiguration & hspswrapper::CHspsConfiguration::SetConfIdL(class TDesC8 const &)
-	?SetDescriptionL@CPluginInfo@hspswrapper@@QAEAAV12@ABVTDesC16@@@Z @ 93 NONAME ; class hspswrapper::CPluginInfo & hspswrapper::CPluginInfo::SetDescriptionL(class TDesC16 const &)
-	?NewLC@CPropertyMap@hspswrapper@@SAPAV12@XZ @ 94 NONAME ; class hspswrapper::CPropertyMap * hspswrapper::CPropertyMap::NewLC(void)
-	??0CAddPluginResult@hspswrapper@@AAE@XZ @ 95 NONAME ; hspswrapper::CAddPluginResult::CAddPluginResult(void)
-	?SetMaxChild@CPluginInfo@hspswrapper@@QAEAAV12@J@Z @ 96 NONAME ; class hspswrapper::CPluginInfo & hspswrapper::CPluginInfo::SetMaxChild(long)
-	?MaxChild@CPluginInfo@hspswrapper@@QBEABJXZ @ 97 NONAME ; long const & hspswrapper::CPluginInfo::MaxChild(void) const
-	?SetLockingStatusL@CPluginMap@hspswrapper@@QAEAAV12@ABVTDesC8@@@Z @ 98 NONAME ; class hspswrapper::CPluginMap & hspswrapper::CPluginMap::SetLockingStatusL(class TDesC8 const &)
-	?LockingStatus@CPluginMap@hspswrapper@@QBEABVTDesC8@@XZ @ 99 NONAME ; class TDesC8 const & hspswrapper::CPluginMap::LockingStatus(void) const
+	?SetMaxChild@CPluginInfo@hspswrapper@@QAEAAV12@J@Z @ 10 NONAME ; class hspswrapper::CPluginInfo & hspswrapper::CPluginInfo::SetMaxChild(long)
+	?SetAppConfigurationL@CHspsWrapper@hspswrapper@@QAEHABVTDesC8@@@Z @ 11 NONAME ; int hspswrapper::CHspsWrapper::SetAppConfigurationL(class TDesC8 const &)
+	?Uid@CPluginInfo@hspswrapper@@QBEABVTDesC8@@XZ @ 12 NONAME ; class TDesC8 const & hspswrapper::CPluginInfo::Uid(void) const
+	?ConfigurationState@CPluginInfo@hspswrapper@@QBEABVTDesC8@@XZ @ 13 NONAME ; class TDesC8 const & hspswrapper::CPluginInfo::ConfigurationState(void) const
+	?NameL@CObjectMap@hspswrapper@@QBEABVTDesC8@@XZ @ 14 NONAME ; class TDesC8 const & hspswrapper::CObjectMap::NameL(void) const
+	?Value@CPropertyMap@hspswrapper@@QBEABVTDesC8@@XZ @ 15 NONAME ; class TDesC8 const & hspswrapper::CPropertyMap::Value(void) const
+	?NewL@CPropertyMap@hspswrapper@@SAPAV12@XZ @ 16 NONAME ; class hspswrapper::CPropertyMap * hspswrapper::CPropertyMap::NewL(void)
+	??1CPluginInfo@hspswrapper@@UAE@XZ @ 17 NONAME ; hspswrapper::CPluginInfo::~CPluginInfo(void)
+	?AddObjectMapL@CHspsConfiguration@hspswrapper@@QAEAAV12@PAVCObjectMap@2@@Z @ 18 NONAME ; class hspswrapper::CHspsConfiguration & hspswrapper::CHspsConfiguration::AddObjectMapL(class hspswrapper::CObjectMap *)
+	?PluginId@CPluginMap@hspswrapper@@QBEABVTDesC8@@XZ @ 19 NONAME ; class TDesC8 const & hspswrapper::CPluginMap::PluginId(void) const
+	?Description@CPluginInfo@hspswrapper@@QBEABVTDesC8@@XZ @ 20 NONAME ; class TDesC8 const & hspswrapper::CPluginInfo::Description(void) const
+	?PluginMaps@CHspsConfiguration@hspswrapper@@QAEAAV?$RPointerArray@VCPluginMap@hspswrapper@@@@XZ @ 21 NONAME ; class RPointerArray<class hspswrapper::CPluginMap> & hspswrapper::CHspsConfiguration::PluginMaps(void)
+	?NewL@CPluginMap@hspswrapper@@SAPAV12@XZ @ 22 NONAME ; class hspswrapper::CPluginMap * hspswrapper::CPluginMap::NewL(void)
+	??1CPropertyMap@hspswrapper@@UAE@XZ @ 23 NONAME ; hspswrapper::CPropertyMap::~CPropertyMap(void)
+	?SetNameL@CObjectMap@hspswrapper@@QAEAAV12@ABVTDesC8@@@Z @ 24 NONAME ; class hspswrapper::CObjectMap & hspswrapper::CObjectMap::SetNameL(class TDesC8 const &)
+	?SetPluginIdL@CPluginMap@hspswrapper@@QAEAAV12@ABVTDesC8@@@Z @ 25 NONAME ; class hspswrapper::CPluginMap & hspswrapper::CPluginMap::SetPluginIdL(class TDesC8 const &)
+	?SetConfigurationStateL@CPluginInfo@hspswrapper@@QAEAAV12@ABVTDesC8@@@Z @ 26 NONAME ; class hspswrapper::CPluginInfo & hspswrapper::CPluginInfo::SetConfigurationStateL(class TDesC8 const &)
+	??1CHspsConfiguration@hspswrapper@@UAE@XZ @ 27 NONAME ; hspswrapper::CHspsConfiguration::~CHspsConfiguration(void)
+	?Status@CAddPluginResult@hspswrapper@@QBEHXZ @ 28 NONAME ; int hspswrapper::CAddPluginResult::Status(void) const
+	?NewLC@CHspsConfiguration@hspswrapper@@SAPAV12@XZ @ 29 NONAME ; class hspswrapper::CHspsConfiguration * hspswrapper::CHspsConfiguration::NewLC(void)
+	?Name@CPluginInfo@hspswrapper@@QBEABVTDesC8@@XZ @ 30 NONAME ; class TDesC8 const & hspswrapper::CPluginInfo::Name(void) const
+	??1CHspsWrapper@hspswrapper@@UAE@XZ @ 31 NONAME ; hspswrapper::CHspsWrapper::~CHspsWrapper(void)
+	?SetMultiInstanceL@CPluginInfo@hspswrapper@@QAEAAV12@J@Z @ 32 NONAME ; class hspswrapper::CPluginInfo & hspswrapper::CPluginInfo::SetMultiInstanceL(long)
+	?MultiInstance@CPluginInfo@hspswrapper@@QBEABJXZ @ 33 NONAME ; long const & hspswrapper::CPluginInfo::MultiInstance(void) const
+	?SetStatus@CAddPluginResult@hspswrapper@@QAEXH@Z @ 34 NONAME ; void hspswrapper::CAddPluginResult::SetStatus(int)
+	?AddItemMapL@CHspsConfiguration@hspswrapper@@QAEAAV12@PAVCItemMap@2@@Z @ 35 NONAME ; class hspswrapper::CHspsConfiguration & hspswrapper::CHspsConfiguration::AddItemMapL(class hspswrapper::CItemMap *)
+	?MovePluginsL@CHspsWrapper@hspswrapper@@QAEHABVTDesC8@@ABVMDesC8Array@@@Z @ 36 NONAME ; int hspswrapper::CHspsWrapper::MovePluginsL(class TDesC8 const &, class MDesC8Array const &)
+	?HspsInterface@CHspsWrapper@hspswrapper@@QBEPAVMLiwInterface@@XZ @ 37 NONAME ; class MLiwInterface * hspswrapper::CHspsWrapper::HspsInterface(void) const
+	?PluginInfo@CHspsConfiguration@hspswrapper@@QAEAAVCPluginInfo@2@XZ @ 38 NONAME ; class hspswrapper::CPluginInfo & hspswrapper::CHspsConfiguration::PluginInfo(void)
+	?NewL@CAddPluginResult@hspswrapper@@SAPAV12@XZ @ 39 NONAME ; class hspswrapper::CAddPluginResult * hspswrapper::CAddPluginResult::NewL(void)
+	?GetPluginConfigurationL@CHspsWrapper@hspswrapper@@QAEPAVCHspsConfiguration@2@ABVTDesC8@@@Z @ 40 NONAME ; class hspswrapper::CHspsConfiguration * hspswrapper::CHspsWrapper::GetPluginConfigurationL(class TDesC8 const &)
+	?Properties@CItemMap@hspswrapper@@QBEAAV?$RPointerArray@VCPropertyMap@hspswrapper@@@@XZ @ 41 NONAME ; class RPointerArray<class hspswrapper::CPropertyMap> & hspswrapper::CItemMap::Properties(void) const
+	?Path@CObjectMap@hspswrapper@@QBEABVTDesC8@@XZ @ 42 NONAME ; class TDesC8 const & hspswrapper::CObjectMap::Path(void) const
+	?NewLC@CHspsWrapper@hspswrapper@@SAPAV12@ABVTDesC8@@PAVMHspsWrapperObserver@2@@Z @ 43 NONAME ; class hspswrapper::CHspsWrapper * hspswrapper::CHspsWrapper::NewLC(class TDesC8 const &, class hspswrapper::MHspsWrapperObserver *)
+	?SetNameL@CPropertyMap@hspswrapper@@QAEAAV12@ABVTDesC8@@@Z @ 44 NONAME ; class hspswrapper::CPropertyMap & hspswrapper::CPropertyMap::SetNameL(class TDesC8 const &)
+	?SetConfStateL@CHspsWrapper@hspswrapper@@QAEHABVTDesC8@@0H@Z @ 45 NONAME ; int hspswrapper::CHspsWrapper::SetConfStateL(class TDesC8 const &, class TDesC8 const &, int)
+	?MediaType@CObjectMap@hspswrapper@@QBEABVTDesC8@@XZ @ 46 NONAME ; class TDesC8 const & hspswrapper::CObjectMap::MediaType(void) const
+	?SetTypeL@CPluginInfo@hspswrapper@@QAEAAV12@ABVTDesC8@@@Z @ 47 NONAME ; class hspswrapper::CPluginInfo & hspswrapper::CPluginInfo::SetTypeL(class TDesC8 const &)
+	?AddPropertyMapL@CItemMap@hspswrapper@@QAEAAV12@PAVCPropertyMap@2@@Z @ 48 NONAME ; class hspswrapper::CItemMap & hspswrapper::CItemMap::AddPropertyMapL(class hspswrapper::CPropertyMap *)
+	?NewLC@CObjectMap@hspswrapper@@SAPAV12@XZ @ 49 NONAME ; class hspswrapper::CObjectMap * hspswrapper::CObjectMap::NewLC(void)
+	?GetAppConfigurationsL@CHspsWrapper@hspswrapper@@QAEXAAV?$RPointerArray@VCPluginInfo@hspswrapper@@@@@Z @ 50 NONAME ; void hspswrapper::CHspsWrapper::GetAppConfigurationsL(class RPointerArray<class hspswrapper::CPluginInfo> &)
+	?NewL@CPluginInfo@hspswrapper@@SAPAV12@XZ @ 51 NONAME ; class hspswrapper::CPluginInfo * hspswrapper::CPluginInfo::NewL(void)
+	?SetItemNameL@CItemMap@hspswrapper@@QAEAAV12@ABVTDesC8@@@Z @ 52 NONAME ; class hspswrapper::CItemMap & hspswrapper::CItemMap::SetItemNameL(class TDesC8 const &)
+	?AddPluginL@CHspsWrapper@hspswrapper@@QAEPAVCAddPluginResult@2@ABVTDesC8@@0@Z @ 53 NONAME ; class hspswrapper::CAddPluginResult * hspswrapper::CHspsWrapper::AddPluginL(class TDesC8 const &, class TDesC8 const &)
+	?NewL@CHspsConfiguration@hspswrapper@@SAPAV12@XZ @ 54 NONAME ; class hspswrapper::CHspsConfiguration * hspswrapper::CHspsConfiguration::NewL(void)
+	?SetLogoIconL@CPluginInfo@hspswrapper@@QAEAAV12@ABVTDesC8@@@Z @ 55 NONAME ; class hspswrapper::CPluginInfo & hspswrapper::CPluginInfo::SetLogoIconL(class TDesC8 const &)
+	?SetPluginUidL@CPluginMap@hspswrapper@@QAEAAV12@ABVTDesC8@@@Z @ 56 NONAME ; class hspswrapper::CPluginMap & hspswrapper::CPluginMap::SetPluginUidL(class TDesC8 const &)
+	?SetValueL@CPropertyMap@hspswrapper@@QAEAAV12@ABVTDesC8@@@Z @ 57 NONAME ; class hspswrapper::CPropertyMap & hspswrapper::CPropertyMap::SetValueL(class TDesC8 const &)
+	??1CObjectMap@hspswrapper@@UAE@XZ @ 58 NONAME ; hspswrapper::CObjectMap::~CObjectMap(void)
+	??1CItemMap@hspswrapper@@UAE@XZ @ 59 NONAME ; hspswrapper::CItemMap::~CItemMap(void)
+	?Name@CPropertyMap@hspswrapper@@QBEABVTDesC8@@XZ @ 60 NONAME ; class TDesC8 const & hspswrapper::CPropertyMap::Name(void) const
+	?SetPluginSettingsL@CHspsWrapper@hspswrapper@@QAEHABVTDesC8@@ABV?$RPointerArray@VCItemMap@hspswrapper@@@@@Z @ 61 NONAME ; int hspswrapper::CHspsWrapper::SetPluginSettingsL(class TDesC8 const &, class RPointerArray<class hspswrapper::CItemMap> const &)
+	?ConfId@CHspsConfiguration@hspswrapper@@QBEABVTDesC8@@XZ @ 62 NONAME ; class TDesC8 const & hspswrapper::CHspsConfiguration::ConfId(void) const
+	?GetPluginsL@CHspsWrapper@hspswrapper@@QAEXAAV?$RPointerArray@VCPluginInfo@hspswrapper@@@@ABVTDesC8@@1@Z @ 63 NONAME ; void hspswrapper::CHspsWrapper::GetPluginsL(class RPointerArray<class hspswrapper::CPluginInfo> &, class TDesC8 const &, class TDesC8 const &)
+	?ItemId@CItemMap@hspswrapper@@QBEABVTDesC8@@XZ @ 64 NONAME ; class TDesC8 const & hspswrapper::CItemMap::ItemId(void) const
+	?GetAppConfigurationL@CHspsWrapper@hspswrapper@@QAEPAVCHspsConfiguration@2@XZ @ 65 NONAME ; class hspswrapper::CHspsConfiguration * hspswrapper::CHspsWrapper::GetAppConfigurationL(void)
+	?NewL@CItemMap@hspswrapper@@SAPAV12@XZ @ 66 NONAME ; class hspswrapper::CItemMap * hspswrapper::CItemMap::NewL(void)
+	?SetPathL@CObjectMap@hspswrapper@@QAEAAV12@ABVTDesC8@@@Z @ 67 NONAME ; class hspswrapper::CObjectMap & hspswrapper::CObjectMap::SetPathL(class TDesC8 const &)
+	?PluginId@CAddPluginResult@hspswrapper@@QBEABVTDesC8@@XZ @ 68 NONAME ; class TDesC8 const & hspswrapper::CAddPluginResult::PluginId(void) const
+	??1CAddPluginResult@hspswrapper@@UAE@XZ @ 69 NONAME ; hspswrapper::CAddPluginResult::~CAddPluginResult(void)
+	?NewLC@CPluginMap@hspswrapper@@SAPAV12@XZ @ 70 NONAME ; class hspswrapper::CPluginMap * hspswrapper::CPluginMap::NewLC(void)
+	?ReplacePluginL@CHspsWrapper@hspswrapper@@QAEHABVTDesC8@@0@Z @ 71 NONAME ; int hspswrapper::CHspsWrapper::ReplacePluginL(class TDesC8 const &, class TDesC8 const &)
+	?Resources@CHspsConfiguration@hspswrapper@@QAEAAV?$RPointerArray@VCObjectMap@hspswrapper@@@@XZ @ 72 NONAME ; class RPointerArray<class hspswrapper::CObjectMap> & hspswrapper::CHspsConfiguration::Resources(void)
+	?MaxChild@CPluginInfo@hspswrapper@@QBEABJXZ @ 73 NONAME ; long const & hspswrapper::CPluginInfo::MaxChild(void) const
+	?SetLockingStatusL@CPluginMap@hspswrapper@@QAEAAV12@ABVTDesC8@@@Z @ 74 NONAME ; class hspswrapper::CPluginMap & hspswrapper::CPluginMap::SetLockingStatusL(class TDesC8 const &)
+	?ServiceHandler@CHspsWrapper@hspswrapper@@QBEPAVCLiwServiceHandler@@XZ @ 75 NONAME ; class CLiwServiceHandler * hspswrapper::CHspsWrapper::ServiceHandler(void) const
+	?Interface@CPluginInfo@hspswrapper@@QBEABVTDesC8@@XZ @ 76 NONAME ; class TDesC8 const & hspswrapper::CPluginInfo::Interface(void) const
+	?SetActivePluginL@CHspsWrapper@hspswrapper@@QAEHABVTDesC8@@@Z @ 77 NONAME ; int hspswrapper::CHspsWrapper::SetActivePluginL(class TDesC8 const &)
+	?SetDescriptionL@CPluginInfo@hspswrapper@@QAEAAV12@ABVTDesC8@@@Z @ 78 NONAME ; class hspswrapper::CPluginInfo & hspswrapper::CPluginInfo::SetDescriptionL(class TDesC8 const &)
+	?AddPluginL@CHspsWrapper@hspswrapper@@QAEPAVCAddPluginResult@2@ABVTDesC8@@0H@Z @ 79 NONAME ; class hspswrapper::CAddPluginResult * hspswrapper::CHspsWrapper::AddPluginL(class TDesC8 const &, class TDesC8 const &, int)
+	?SetPluginIdL@CAddPluginResult@hspswrapper@@QAEXABVTDesC8@@@Z @ 80 NONAME ; void hspswrapper::CAddPluginResult::SetPluginIdL(class TDesC8 const &)
+	?SetUidL@CPluginInfo@hspswrapper@@QAEAAV12@ABVTDesC8@@@Z @ 81 NONAME ; class hspswrapper::CPluginInfo & hspswrapper::CPluginInfo::SetUidL(class TDesC8 const &)
+	?SetTagL@CObjectMap@hspswrapper@@QAEAAV12@ABVTDesC8@@@Z @ 82 NONAME ; class hspswrapper::CObjectMap & hspswrapper::CObjectMap::SetTagL(class TDesC8 const &)
+	?NewLC@CPluginInfo@hspswrapper@@SAPAV12@XZ @ 83 NONAME ; class hspswrapper::CPluginInfo * hspswrapper::CPluginInfo::NewLC(void)
+	?SetNameL@CPluginInfo@hspswrapper@@QAEAAV12@ABVTDesC8@@@Z @ 84 NONAME ; class hspswrapper::CPluginInfo & hspswrapper::CPluginInfo::SetNameL(class TDesC8 const &)
+	?SetMediaTypeL@CObjectMap@hspswrapper@@QAEAAV12@ABVTDesC8@@@Z @ 85 NONAME ; class hspswrapper::CObjectMap & hspswrapper::CObjectMap::SetMediaTypeL(class TDesC8 const &)
+	?Tag@CObjectMap@hspswrapper@@QBEABVTDesC8@@XZ @ 86 NONAME ; class TDesC8 const & hspswrapper::CObjectMap::Tag(void) const
+	?SetItemIdL@CItemMap@hspswrapper@@QAEAAV12@ABVTDesC8@@@Z @ 87 NONAME ; class hspswrapper::CItemMap & hspswrapper::CItemMap::SetItemIdL(class TDesC8 const &)
+	?NewLC@CItemMap@hspswrapper@@SAPAV12@XZ @ 88 NONAME ; class hspswrapper::CItemMap * hspswrapper::CItemMap::NewLC(void)
+	?SetLogoIconL@CPluginInfo@hspswrapper@@QAEAAV12@ABVTDesC16@@@Z @ 89 NONAME ; class hspswrapper::CPluginInfo & hspswrapper::CPluginInfo::SetLogoIconL(class TDesC16 const &)
+	?SetInterfaceL@CPluginInfo@hspswrapper@@QAEAAV12@ABVTDesC8@@@Z @ 90 NONAME ; class hspswrapper::CPluginInfo & hspswrapper::CPluginInfo::SetInterfaceL(class TDesC8 const &)
+	?AddPluginMapL@CHspsConfiguration@hspswrapper@@QAEAAV12@PAVCPluginMap@2@@Z @ 91 NONAME ; class hspswrapper::CHspsConfiguration & hspswrapper::CHspsConfiguration::AddPluginMapL(class hspswrapper::CPluginMap *)
+	?RemovePluginL@CHspsWrapper@hspswrapper@@QAEHABVTDesC8@@@Z @ 92 NONAME ; int hspswrapper::CHspsWrapper::RemovePluginL(class TDesC8 const &)
+	?LockingStatus@CPluginMap@hspswrapper@@QBEABVTDesC8@@XZ @ 93 NONAME ; class TDesC8 const & hspswrapper::CPluginMap::LockingStatus(void) const
+	?SetActivationStateL@CPluginMap@hspswrapper@@QAEAAV12@ABVTDesC8@@@Z @ 94 NONAME ; class hspswrapper::CPluginMap & hspswrapper::CPluginMap::SetActivationStateL(class TDesC8 const &)
+	?Type@CPluginInfo@hspswrapper@@QBEABVTDesC8@@XZ @ 95 NONAME ; class TDesC8 const & hspswrapper::CPluginInfo::Type(void) const
+	?SetConfIdL@CHspsConfiguration@hspswrapper@@QAEAAV12@ABVTDesC8@@@Z @ 96 NONAME ; class hspswrapper::CHspsConfiguration & hspswrapper::CHspsConfiguration::SetConfIdL(class TDesC8 const &)
+	?NewLC@CPropertyMap@hspswrapper@@SAPAV12@XZ @ 97 NONAME ; class hspswrapper::CPropertyMap * hspswrapper::CPropertyMap::NewLC(void)
+	??0CAddPluginResult@hspswrapper@@AAE@XZ @ 98 NONAME ; hspswrapper::CAddPluginResult::CAddPluginResult(void)
+
--- a/idlehomescreen/sapiwrapper/hspswrapper/eabi/hspswrapper.def	Fri Jan 22 09:35:14 2010 +0200
+++ b/idlehomescreen/sapiwrapper/hspswrapper/eabi/hspswrapper.def	Tue Jan 26 11:48:23 2010 +0200
@@ -10,125 +10,124 @@
 	_ZN11hspswrapper10CObjectMapD2Ev @ 9 NONAME
 	_ZN11hspswrapper10CPluginMap12SetPluginIdLERK6TDesC8 @ 10 NONAME
 	_ZN11hspswrapper10CPluginMap13SetPluginUidLERK6TDesC8 @ 11 NONAME
-	_ZN11hspswrapper10CPluginMap19SetActivationStateLERK6TDesC8 @ 12 NONAME
-	_ZN11hspswrapper10CPluginMap4NewLEv @ 13 NONAME
-	_ZN11hspswrapper10CPluginMap5NewLCEv @ 14 NONAME
-	_ZN11hspswrapper10CPluginMapD0Ev @ 15 NONAME
-	_ZN11hspswrapper10CPluginMapD1Ev @ 16 NONAME
-	_ZN11hspswrapper10CPluginMapD2Ev @ 17 NONAME
-	_ZN11hspswrapper11CPluginInfo12SetLogoIconLERK6TDesC8 @ 18 NONAME
-	_ZN11hspswrapper11CPluginInfo12SetLogoIconLERK7TDesC16 @ 19 NONAME
-	_ZN11hspswrapper11CPluginInfo13SetInterfaceLERK6TDesC8 @ 20 NONAME
-	_ZN11hspswrapper11CPluginInfo15SetDescriptionLERK6TDesC8 @ 21 NONAME
-	_ZN11hspswrapper11CPluginInfo15SetDescriptionLERK7TDesC16 @ 22 NONAME
-	_ZN11hspswrapper11CPluginInfo17SetMultiInstanceLEl @ 23 NONAME
-	_ZN11hspswrapper11CPluginInfo22SetConfigurationStateLERK6TDesC8 @ 24 NONAME
-	_ZN11hspswrapper11CPluginInfo4NewLEv @ 25 NONAME
-	_ZN11hspswrapper11CPluginInfo5NewLCEv @ 26 NONAME
-	_ZN11hspswrapper11CPluginInfo7SetUidLERK6TDesC8 @ 27 NONAME
-	_ZN11hspswrapper11CPluginInfo8SetNameLERK6TDesC8 @ 28 NONAME
-	_ZN11hspswrapper11CPluginInfo8SetTypeLERK6TDesC8 @ 29 NONAME
-	_ZN11hspswrapper11CPluginInfoD0Ev @ 30 NONAME
-	_ZN11hspswrapper11CPluginInfoD1Ev @ 31 NONAME
-	_ZN11hspswrapper11CPluginInfoD2Ev @ 32 NONAME
-	_ZN11hspswrapper12CHspsWrapper10AddPluginLERK6TDesC8S3_ @ 33 NONAME
-	_ZN11hspswrapper12CHspsWrapper10AddPluginLERK6TDesC8S3_i @ 34 NONAME
-	_ZN11hspswrapper12CHspsWrapper11GetPluginsLER13RPointerArrayINS_11CPluginInfoEERK6TDesC8S7_ @ 35 NONAME
-	_ZN11hspswrapper12CHspsWrapper12MovePluginsLERK6TDesC8RK11MDesC8Array @ 36 NONAME
-	_ZN11hspswrapper12CHspsWrapper13RemovePluginLERK6TDesC8 @ 37 NONAME
-	_ZN11hspswrapper12CHspsWrapper13SetConfStateLERK6TDesC8S3_i @ 38 NONAME
-	_ZN11hspswrapper12CHspsWrapper14ReplacePluginLERK6TDesC8S3_ @ 39 NONAME
-	_ZN11hspswrapper12CHspsWrapper16SetActivePluginLERK6TDesC8 @ 40 NONAME
-	_ZN11hspswrapper12CHspsWrapper18SetPluginSettingsLERK6TDesC8RK13RPointerArrayINS_8CItemMapEE @ 41 NONAME
-	_ZN11hspswrapper12CHspsWrapper20GetAppConfigurationLEv @ 42 NONAME
-	_ZN11hspswrapper12CHspsWrapper20SetAppConfigurationLERK6TDesC8 @ 43 NONAME
-	_ZN11hspswrapper12CHspsWrapper21GetAppConfigurationsLER13RPointerArrayINS_11CPluginInfoEE @ 44 NONAME
-	_ZN11hspswrapper12CHspsWrapper23GetPluginConfigurationLERK6TDesC8 @ 45 NONAME
-	_ZN11hspswrapper12CHspsWrapper4NewLERK6TDesC8PNS_20MHspsWrapperObserverE @ 46 NONAME
-	_ZN11hspswrapper12CHspsWrapper5NewLCERK6TDesC8PNS_20MHspsWrapperObserverE @ 47 NONAME
-	_ZN11hspswrapper12CHspsWrapperD0Ev @ 48 NONAME
-	_ZN11hspswrapper12CHspsWrapperD1Ev @ 49 NONAME
-	_ZN11hspswrapper12CHspsWrapperD2Ev @ 50 NONAME
-	_ZN11hspswrapper12CPropertyMap4NewLEv @ 51 NONAME
-	_ZN11hspswrapper12CPropertyMap5NewLCEv @ 52 NONAME
-	_ZN11hspswrapper12CPropertyMap8SetNameLERK6TDesC8 @ 53 NONAME
-	_ZN11hspswrapper12CPropertyMap9SetValueLERK6TDesC8 @ 54 NONAME
-	_ZN11hspswrapper12CPropertyMapD0Ev @ 55 NONAME
-	_ZN11hspswrapper12CPropertyMapD1Ev @ 56 NONAME
-	_ZN11hspswrapper12CPropertyMapD2Ev @ 57 NONAME
-	_ZN11hspswrapper16CAddPluginResult12SetPluginIdLERK6TDesC8 @ 58 NONAME
-	_ZN11hspswrapper16CAddPluginResult4NewLEv @ 59 NONAME
-	_ZN11hspswrapper16CAddPluginResult9SetStatusEi @ 60 NONAME
-	_ZN11hspswrapper16CAddPluginResultC1Ev @ 61 NONAME
-	_ZN11hspswrapper16CAddPluginResultC2Ev @ 62 NONAME
-	_ZN11hspswrapper16CAddPluginResultD0Ev @ 63 NONAME
-	_ZN11hspswrapper16CAddPluginResultD1Ev @ 64 NONAME
-	_ZN11hspswrapper16CAddPluginResultD2Ev @ 65 NONAME
-	_ZN11hspswrapper18CHspsConfiguration10PluginInfoEv @ 66 NONAME
-	_ZN11hspswrapper18CHspsConfiguration10PluginMapsEv @ 67 NONAME
-	_ZN11hspswrapper18CHspsConfiguration10SetConfIdLERK6TDesC8 @ 68 NONAME
-	_ZN11hspswrapper18CHspsConfiguration11AddItemMapLEPNS_8CItemMapE @ 69 NONAME
-	_ZN11hspswrapper18CHspsConfiguration13AddObjectMapLEPNS_10CObjectMapE @ 70 NONAME
-	_ZN11hspswrapper18CHspsConfiguration13AddPluginMapLEPNS_10CPluginMapE @ 71 NONAME
-	_ZN11hspswrapper18CHspsConfiguration4NewLEv @ 72 NONAME
-	_ZN11hspswrapper18CHspsConfiguration5NewLCEv @ 73 NONAME
-	_ZN11hspswrapper18CHspsConfiguration8SettingsEv @ 74 NONAME
-	_ZN11hspswrapper18CHspsConfiguration9ResourcesEv @ 75 NONAME
-	_ZN11hspswrapper18CHspsConfigurationD0Ev @ 76 NONAME
-	_ZN11hspswrapper18CHspsConfigurationD1Ev @ 77 NONAME
-	_ZN11hspswrapper18CHspsConfigurationD2Ev @ 78 NONAME
-	_ZN11hspswrapper8CItemMap10SetItemIdLERK6TDesC8 @ 79 NONAME
-	_ZN11hspswrapper8CItemMap12SetItemNameLERK6TDesC8 @ 80 NONAME
-	_ZN11hspswrapper8CItemMap15AddPropertyMapLEPNS_12CPropertyMapE @ 81 NONAME
-	_ZN11hspswrapper8CItemMap4NewLEv @ 82 NONAME
-	_ZN11hspswrapper8CItemMap5NewLCEv @ 83 NONAME
-	_ZN11hspswrapper8CItemMapD0Ev @ 84 NONAME
-	_ZN11hspswrapper8CItemMapD1Ev @ 85 NONAME
-	_ZN11hspswrapper8CItemMapD2Ev @ 86 NONAME
-	_ZNK11hspswrapper10CObjectMap3TagEv @ 87 NONAME
-	_ZNK11hspswrapper10CObjectMap4PathEv @ 88 NONAME
-	_ZNK11hspswrapper10CObjectMap5NameLEv @ 89 NONAME
-	_ZNK11hspswrapper10CObjectMap9MediaTypeEv @ 90 NONAME
-	_ZNK11hspswrapper10CPluginMap15ActivationStateEv @ 91 NONAME
-	_ZNK11hspswrapper10CPluginMap8PluginIdEv @ 92 NONAME
-	_ZNK11hspswrapper10CPluginMap9PluginUidEv @ 93 NONAME
-	_ZNK11hspswrapper11CPluginInfo11DescriptionEv @ 94 NONAME
-	_ZNK11hspswrapper11CPluginInfo13MultiInstanceEv @ 95 NONAME
-	_ZNK11hspswrapper11CPluginInfo18ConfigurationStateEv @ 96 NONAME
-	_ZNK11hspswrapper11CPluginInfo3UidEv @ 97 NONAME
-	_ZNK11hspswrapper11CPluginInfo4NameEv @ 98 NONAME
-	_ZNK11hspswrapper11CPluginInfo4TypeEv @ 99 NONAME
-	_ZNK11hspswrapper11CPluginInfo8LogoIconEv @ 100 NONAME
-	_ZNK11hspswrapper11CPluginInfo9InterfaceEv @ 101 NONAME
-	_ZNK11hspswrapper12CHspsWrapper11HspsServiceEv @ 102 NONAME
-	_ZNK11hspswrapper12CHspsWrapper13HspsInterfaceEv @ 103 NONAME
-	_ZNK11hspswrapper12CHspsWrapper14ServiceHandlerEv @ 104 NONAME
-	_ZNK11hspswrapper12CPropertyMap4NameEv @ 105 NONAME
-	_ZNK11hspswrapper12CPropertyMap5ValueEv @ 106 NONAME
-	_ZNK11hspswrapper16CAddPluginResult6StatusEv @ 107 NONAME
-	_ZNK11hspswrapper16CAddPluginResult8PluginIdEv @ 108 NONAME
-	_ZNK11hspswrapper18CHspsConfiguration6ConfIdEv @ 109 NONAME
-	_ZNK11hspswrapper8CItemMap10PropertiesEv @ 110 NONAME
-	_ZNK11hspswrapper8CItemMap6ItemIdEv @ 111 NONAME
-	_ZNK11hspswrapper8CItemMap8ItemNameEv @ 112 NONAME
-	_ZTIN11hspswrapper10CObjectMapE @ 113 NONAME
-	_ZTIN11hspswrapper10CPluginMapE @ 114 NONAME
-	_ZTIN11hspswrapper11CPluginInfoE @ 115 NONAME
-	_ZTIN11hspswrapper12CHspsWrapperE @ 116 NONAME
-	_ZTIN11hspswrapper12CPropertyMapE @ 117 NONAME
-	_ZTIN11hspswrapper16CAddPluginResultE @ 118 NONAME
-	_ZTIN11hspswrapper18CHspsConfigurationE @ 119 NONAME
-	_ZTIN11hspswrapper8CItemMapE @ 120 NONAME
-	_ZTVN11hspswrapper10CObjectMapE @ 121 NONAME
-	_ZTVN11hspswrapper10CPluginMapE @ 122 NONAME
-	_ZTVN11hspswrapper11CPluginInfoE @ 123 NONAME
-	_ZTVN11hspswrapper12CHspsWrapperE @ 124 NONAME
-	_ZTVN11hspswrapper12CPropertyMapE @ 125 NONAME
-	_ZTVN11hspswrapper16CAddPluginResultE @ 126 NONAME
-	_ZTVN11hspswrapper18CHspsConfigurationE @ 127 NONAME
-	_ZTVN11hspswrapper8CItemMapE @ 128 NONAME
-	_ZN11hspswrapper11CPluginInfo11SetMaxChildEl @ 129 NONAME
-	_ZNK11hspswrapper11CPluginInfo8MaxChildEv @ 130 NONAME
-	_ZN11hspswrapper10CPluginMap17SetLockingStatusLERK6TDesC8 @ 131 NONAME
-	_ZNK11hspswrapper10CPluginMap13LockingStatusEv @ 132 NONAME
+	_ZN11hspswrapper10CPluginMap17SetLockingStatusLERK6TDesC8 @ 12 NONAME
+	_ZN11hspswrapper10CPluginMap19SetActivationStateLERK6TDesC8 @ 13 NONAME
+	_ZN11hspswrapper10CPluginMap4NewLEv @ 14 NONAME
+	_ZN11hspswrapper10CPluginMap5NewLCEv @ 15 NONAME
+	_ZN11hspswrapper10CPluginMapD0Ev @ 16 NONAME
+	_ZN11hspswrapper10CPluginMapD1Ev @ 17 NONAME
+	_ZN11hspswrapper10CPluginMapD2Ev @ 18 NONAME
+	_ZN11hspswrapper11CPluginInfo11SetMaxChildEl @ 19 NONAME
+	_ZN11hspswrapper11CPluginInfo12SetLogoIconLERK6TDesC8 @ 20 NONAME
+	_ZN11hspswrapper11CPluginInfo12SetLogoIconLERK7TDesC16 @ 21 NONAME
+	_ZN11hspswrapper11CPluginInfo13SetInterfaceLERK6TDesC8 @ 22 NONAME
+	_ZN11hspswrapper11CPluginInfo15SetDescriptionLERK6TDesC8 @ 23 NONAME
+	_ZN11hspswrapper11CPluginInfo17SetMultiInstanceLEl @ 24 NONAME
+	_ZN11hspswrapper11CPluginInfo22SetConfigurationStateLERK6TDesC8 @ 25 NONAME
+	_ZN11hspswrapper11CPluginInfo4NewLEv @ 26 NONAME
+	_ZN11hspswrapper11CPluginInfo5NewLCEv @ 27 NONAME
+	_ZN11hspswrapper11CPluginInfo7SetUidLERK6TDesC8 @ 28 NONAME
+	_ZN11hspswrapper11CPluginInfo8SetNameLERK6TDesC8 @ 29 NONAME
+	_ZN11hspswrapper11CPluginInfo8SetTypeLERK6TDesC8 @ 30 NONAME
+	_ZN11hspswrapper11CPluginInfoD0Ev @ 31 NONAME
+	_ZN11hspswrapper11CPluginInfoD1Ev @ 32 NONAME
+	_ZN11hspswrapper11CPluginInfoD2Ev @ 33 NONAME
+	_ZN11hspswrapper12CHspsWrapper10AddPluginLERK6TDesC8S3_ @ 34 NONAME
+	_ZN11hspswrapper12CHspsWrapper10AddPluginLERK6TDesC8S3_i @ 35 NONAME
+	_ZN11hspswrapper12CHspsWrapper11GetPluginsLER13RPointerArrayINS_11CPluginInfoEERK6TDesC8S7_ @ 36 NONAME
+	_ZN11hspswrapper12CHspsWrapper12MovePluginsLERK6TDesC8RK11MDesC8Array @ 37 NONAME
+	_ZN11hspswrapper12CHspsWrapper13RemovePluginLERK6TDesC8 @ 38 NONAME
+	_ZN11hspswrapper12CHspsWrapper13SetConfStateLERK6TDesC8S3_i @ 39 NONAME
+	_ZN11hspswrapper12CHspsWrapper14ReplacePluginLERK6TDesC8S3_ @ 40 NONAME
+	_ZN11hspswrapper12CHspsWrapper16SetActivePluginLERK6TDesC8 @ 41 NONAME
+	_ZN11hspswrapper12CHspsWrapper18SetPluginSettingsLERK6TDesC8RK13RPointerArrayINS_8CItemMapEE @ 42 NONAME
+	_ZN11hspswrapper12CHspsWrapper20GetAppConfigurationLEv @ 43 NONAME
+	_ZN11hspswrapper12CHspsWrapper20SetAppConfigurationLERK6TDesC8 @ 44 NONAME
+	_ZN11hspswrapper12CHspsWrapper21GetAppConfigurationsLER13RPointerArrayINS_11CPluginInfoEE @ 45 NONAME
+	_ZN11hspswrapper12CHspsWrapper23GetPluginConfigurationLERK6TDesC8 @ 46 NONAME
+	_ZN11hspswrapper12CHspsWrapper4NewLERK6TDesC8PNS_20MHspsWrapperObserverE @ 47 NONAME
+	_ZN11hspswrapper12CHspsWrapper5NewLCERK6TDesC8PNS_20MHspsWrapperObserverE @ 48 NONAME
+	_ZN11hspswrapper12CHspsWrapperD0Ev @ 49 NONAME
+	_ZN11hspswrapper12CHspsWrapperD1Ev @ 50 NONAME
+	_ZN11hspswrapper12CHspsWrapperD2Ev @ 51 NONAME
+	_ZN11hspswrapper12CPropertyMap4NewLEv @ 52 NONAME
+	_ZN11hspswrapper12CPropertyMap5NewLCEv @ 53 NONAME
+	_ZN11hspswrapper12CPropertyMap8SetNameLERK6TDesC8 @ 54 NONAME
+	_ZN11hspswrapper12CPropertyMap9SetValueLERK6TDesC8 @ 55 NONAME
+	_ZN11hspswrapper12CPropertyMapD0Ev @ 56 NONAME
+	_ZN11hspswrapper12CPropertyMapD1Ev @ 57 NONAME
+	_ZN11hspswrapper12CPropertyMapD2Ev @ 58 NONAME
+	_ZN11hspswrapper16CAddPluginResult12SetPluginIdLERK6TDesC8 @ 59 NONAME
+	_ZN11hspswrapper16CAddPluginResult4NewLEv @ 60 NONAME
+	_ZN11hspswrapper16CAddPluginResult9SetStatusEi @ 61 NONAME
+	_ZN11hspswrapper16CAddPluginResultC1Ev @ 62 NONAME
+	_ZN11hspswrapper16CAddPluginResultC2Ev @ 63 NONAME
+	_ZN11hspswrapper16CAddPluginResultD0Ev @ 64 NONAME
+	_ZN11hspswrapper16CAddPluginResultD1Ev @ 65 NONAME
+	_ZN11hspswrapper16CAddPluginResultD2Ev @ 66 NONAME
+	_ZN11hspswrapper18CHspsConfiguration10PluginInfoEv @ 67 NONAME
+	_ZN11hspswrapper18CHspsConfiguration10PluginMapsEv @ 68 NONAME
+	_ZN11hspswrapper18CHspsConfiguration10SetConfIdLERK6TDesC8 @ 69 NONAME
+	_ZN11hspswrapper18CHspsConfiguration11AddItemMapLEPNS_8CItemMapE @ 70 NONAME
+	_ZN11hspswrapper18CHspsConfiguration13AddObjectMapLEPNS_10CObjectMapE @ 71 NONAME
+	_ZN11hspswrapper18CHspsConfiguration13AddPluginMapLEPNS_10CPluginMapE @ 72 NONAME
+	_ZN11hspswrapper18CHspsConfiguration4NewLEv @ 73 NONAME
+	_ZN11hspswrapper18CHspsConfiguration5NewLCEv @ 74 NONAME
+	_ZN11hspswrapper18CHspsConfiguration8SettingsEv @ 75 NONAME
+	_ZN11hspswrapper18CHspsConfiguration9ResourcesEv @ 76 NONAME
+	_ZN11hspswrapper18CHspsConfigurationD0Ev @ 77 NONAME
+	_ZN11hspswrapper18CHspsConfigurationD1Ev @ 78 NONAME
+	_ZN11hspswrapper18CHspsConfigurationD2Ev @ 79 NONAME
+	_ZN11hspswrapper8CItemMap10SetItemIdLERK6TDesC8 @ 80 NONAME
+	_ZN11hspswrapper8CItemMap12SetItemNameLERK6TDesC8 @ 81 NONAME
+	_ZN11hspswrapper8CItemMap15AddPropertyMapLEPNS_12CPropertyMapE @ 82 NONAME
+	_ZN11hspswrapper8CItemMap4NewLEv @ 83 NONAME
+	_ZN11hspswrapper8CItemMap5NewLCEv @ 84 NONAME
+	_ZN11hspswrapper8CItemMapD0Ev @ 85 NONAME
+	_ZN11hspswrapper8CItemMapD1Ev @ 86 NONAME
+	_ZN11hspswrapper8CItemMapD2Ev @ 87 NONAME
+	_ZNK11hspswrapper10CObjectMap3TagEv @ 88 NONAME
+	_ZNK11hspswrapper10CObjectMap4PathEv @ 89 NONAME
+	_ZNK11hspswrapper10CObjectMap5NameLEv @ 90 NONAME
+	_ZNK11hspswrapper10CObjectMap9MediaTypeEv @ 91 NONAME
+	_ZNK11hspswrapper10CPluginMap13LockingStatusEv @ 92 NONAME
+	_ZNK11hspswrapper10CPluginMap15ActivationStateEv @ 93 NONAME
+	_ZNK11hspswrapper10CPluginMap8PluginIdEv @ 94 NONAME
+	_ZNK11hspswrapper10CPluginMap9PluginUidEv @ 95 NONAME
+	_ZNK11hspswrapper11CPluginInfo11DescriptionEv @ 96 NONAME
+	_ZNK11hspswrapper11CPluginInfo13MultiInstanceEv @ 97 NONAME
+	_ZNK11hspswrapper11CPluginInfo18ConfigurationStateEv @ 98 NONAME
+	_ZNK11hspswrapper11CPluginInfo3UidEv @ 99 NONAME
+	_ZNK11hspswrapper11CPluginInfo4NameEv @ 100 NONAME
+	_ZNK11hspswrapper11CPluginInfo4TypeEv @ 101 NONAME
+	_ZNK11hspswrapper11CPluginInfo8LogoIconEv @ 102 NONAME
+	_ZNK11hspswrapper11CPluginInfo8MaxChildEv @ 103 NONAME
+	_ZNK11hspswrapper11CPluginInfo9InterfaceEv @ 104 NONAME
+	_ZNK11hspswrapper12CHspsWrapper11HspsServiceEv @ 105 NONAME
+	_ZNK11hspswrapper12CHspsWrapper13HspsInterfaceEv @ 106 NONAME
+	_ZNK11hspswrapper12CHspsWrapper14ServiceHandlerEv @ 107 NONAME
+	_ZNK11hspswrapper12CPropertyMap4NameEv @ 108 NONAME
+	_ZNK11hspswrapper12CPropertyMap5ValueEv @ 109 NONAME
+	_ZNK11hspswrapper16CAddPluginResult6StatusEv @ 110 NONAME
+	_ZNK11hspswrapper16CAddPluginResult8PluginIdEv @ 111 NONAME
+	_ZNK11hspswrapper18CHspsConfiguration6ConfIdEv @ 112 NONAME
+	_ZNK11hspswrapper8CItemMap10PropertiesEv @ 113 NONAME
+	_ZNK11hspswrapper8CItemMap6ItemIdEv @ 114 NONAME
+	_ZNK11hspswrapper8CItemMap8ItemNameEv @ 115 NONAME
+	_ZTIN11hspswrapper10CObjectMapE @ 116 NONAME
+	_ZTIN11hspswrapper10CPluginMapE @ 117 NONAME
+	_ZTIN11hspswrapper11CPluginInfoE @ 118 NONAME
+	_ZTIN11hspswrapper12CHspsWrapperE @ 119 NONAME
+	_ZTIN11hspswrapper12CPropertyMapE @ 120 NONAME
+	_ZTIN11hspswrapper16CAddPluginResultE @ 121 NONAME
+	_ZTIN11hspswrapper18CHspsConfigurationE @ 122 NONAME
+	_ZTIN11hspswrapper8CItemMapE @ 123 NONAME
+	_ZTVN11hspswrapper10CObjectMapE @ 124 NONAME
+	_ZTVN11hspswrapper10CPluginMapE @ 125 NONAME
+	_ZTVN11hspswrapper11CPluginInfoE @ 126 NONAME
+	_ZTVN11hspswrapper12CHspsWrapperE @ 127 NONAME
+	_ZTVN11hspswrapper12CPropertyMapE @ 128 NONAME
+	_ZTVN11hspswrapper16CAddPluginResultE @ 129 NONAME
+	_ZTVN11hspswrapper18CHspsConfigurationE @ 130 NONAME
+	_ZTVN11hspswrapper8CItemMapE @ 131 NONAME
 
--- a/idlehomescreen/sapiwrapper/hspswrapper/inc/plugininfo.h	Fri Jan 22 09:35:14 2010 +0200
+++ b/idlehomescreen/sapiwrapper/hspswrapper/inc/plugininfo.h	Tue Jan 26 11:48:23 2010 +0200
@@ -149,13 +149,6 @@
     IMPORT_C CPluginInfo& SetMaxChild( const TInt32 aMaxChild );    
     
     /**
-     * Set widget description
-     *
-     * @param aDescription widget description
-     */
-    IMPORT_C CPluginInfo& SetDescriptionL( const TDesC& aDescription );
-    
-    /**
      * Set widget description (TDesC8)
      *
      * @param aDescription widget description
@@ -167,7 +160,7 @@
      *
      * @return Description widget description or KNullDesC
      */
-    IMPORT_C const TDesC& Description() const;
+    IMPORT_C const TDesC8& Description() const;
     
     /**
      * Set Logo icon
@@ -232,7 +225,7 @@
     /**
      * Own. Plugin description
      */
-    HBufC* iDescription;
+    HBufC8* iDescription;
     
     /**
      * Own. Plugin logo icon
--- a/idlehomescreen/sapiwrapper/hspswrapper/src/plugininfo.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ b/idlehomescreen/sapiwrapper/hspswrapper/src/plugininfo.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -247,7 +247,7 @@
 // ---------------------------------------------------------------------------
 // ---------------------------------------------------------------------------
 //
-EXPORT_C CPluginInfo& CPluginInfo::SetDescriptionL( const TDesC& aDescription )
+EXPORT_C CPluginInfo& CPluginInfo::SetDescriptionL( const TDesC8& aDescription )
     {
     delete iDescription;
     iDescription = NULL;
@@ -256,25 +256,12 @@
     return *this;
     }
 
-    // ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CPluginInfo& CPluginInfo::SetDescriptionL( const TDesC8& aDescription )
-    {
-    delete iDescription;
-    iDescription = NULL;
-
-    iDescription = HBufC::NewL( aDescription.Length() );
-    iDescription->Des().Copy( aDescription );
-    return *this;
-    }
-
 // ---------------------------------------------------------------------------
 // ---------------------------------------------------------------------------
 //
-EXPORT_C const TDesC& CPluginInfo::Description() const
+EXPORT_C const TDesC8& CPluginInfo::Description() const
     {
-    return iDescription ? *iDescription : KNullDesC();
+    return iDescription ? *iDescription : KNullDesC8();
     }
 
 // ---------------------------------------------------------------------------
--- a/idlehomescreen/sapiwrapper/hspswrapper/src/pluginmap.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ b/idlehomescreen/sapiwrapper/hspswrapper/src/pluginmap.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -67,6 +67,7 @@
     delete iPluginId;
     delete iPluginUid;
     delete iActivationState;
+    delete iLockingStatus;
     }
 
 // ---------------------------------------------------------------------------
--- a/idlehomescreen/widgetmanager/data/widgetmanagerview.loc	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,163 +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: Localisation file of Widget Manager 
-*
-*/
-
-
-
-// TITLES OF EACH VIEW
-
-// d: Title of Application
-// d: 
-// d: 
-// l: title_pane_t2/opt12
-// w:
-// r: TB9.2
-#define qtn_wm_title_text "Widget Catalog"
-
-
-
-// OPTIONS-MENU MENUITEMS
-
-// d: Add-menuitem in Options-menu 
-// d: 
-// d: 
-// l: list_single_pane_t1_cp2
-// w:
-// r: TB9.2
-//
-#define qtn_options_wm_add "Add To Homescreen"
-
-// d: Launch-menuitem in Options-menu
-// d: 
-// d: 
-// l: list_single_pane_t1_cp2
-// w:
-// r: TB9.2
-//
-#define qtn_options_wm_launch_widget "Launch"
-
-// d: Search-menuitem in Options-menu
-// d: 
-// d: 
-// l: list_single_pane_t1_cp2
-// w:
-// r: TB9.2
-//
-#define qtn_options_wm_search "Search"
-
-// d: Uninstall-menuitem in Options-menu 
-// d: 
-// d: 
-// l: list_single_pane_t1_cp2
-// w:
-// r: TB9.2
-//
-#define qtn_options_wm_uninstall "Uninstall"
-
-// d: Open-menuitem in Options-menu 
-// d: 
-// d: 
-// l: list_single_pane_t1_cp2
-// w:
-// r: TB9.2
-//
-#define qtn_options_wm_open "Open"
-
-// d: Sort alphabetically-menuitem in Options-menu
-// d: 
-// d: 
-// l: list_single_pane_t1_cp2
-// w:
-// r: TB9.2
-//
-#define qtn_options_wm_sort_alpha "Sort alphabetically"
-
-// d: Details-menuitem in Options-menu
-// d: 
-// d: 
-// l: list_single_pane_t1_cp2
-// w:
-// r: TB9.2
-//
-#define qtn_options_wm_show_details "Details"
-
-
-
-// MISC
-
-// d: Text displayed on OVI Store button 
-// d: 
-// d: 
-// l: wgtman_btn_pane_t1
-// w:
-// r: TB9.2
-//
-#define qtn_wm_ovi_store_title "Ovi Store"
-
-// d: Info popup to indicate that an item can not be added to home screen
-// d: because current view is full
-// d: 
-// l: popup_note_window
-// w:
-// r: TB9.2
-//
-#define qtn_hs_add_widget_no_space_note "Not enough space to add new widget to active page. Remove some content first"
-
-// d: Info popup to indicate that an item can not be added to home screen
-// d: because maximum instance count of current widget would be exceeded
-// d: 
-// l: popup_note_window
-// w:
-// r: TB9.2
-//
-#define qtn_hs_add_widget_max_count_note "Unable to add. Home screen does not allow more instances of this widget"
-
-// d: widget details dialog left softkey for adding widget to home screen
-// d: Note: widgets dialog is not necessarily full screen width, which may affect
-// d: string max length!
-// l: control_pane_t1/opt7
-// w:
-// r: TB9.2
-//
-#define qtn_wm_details_add_to_hs "Add"
-
-// d: widget details dialog - no description
-// d: 
-// d: 
-// l: listrow_wgtman_pane_t2
-// w:
-// r: TB9.2
-//
-#define qtn_wm_details_no_description "No description available"
-
-// d: widget uninstall not allowed
-// d: 
-// d: 
-// l: popup_note_window
-// w:
-// r: TB9.2
-//
-#define qtn_wm_uninst_not_allowed "%U can not be uninstalled "
-
-// d: widget details dialog default text for wrt widgets
-// d: 
-// d: 
-// l: popup_note_window
-// w:
-// r: TB9.2
-//
-#define qtn_wm_widget_details_wrt "HomeScreen application that uses internet connection to show dynamic updates from web"
-
--- a/idlehomescreen/widgetmanager/data/widgetmanagerview.rss	Fri Jan 22 09:35:14 2010 +0200
+++ b/idlehomescreen/widgetmanager/data/widgetmanagerview.rss	Tue Jan 26 11:48:23 2010 +0200
@@ -24,9 +24,10 @@
 #include <appinfo.rh>
 #include <avkon.mbg>
 #include <activeidle3.loc>
+#include <widgetmanagerview.loc>
 
 #include "widgetmanager.hrh"
-#include "widgetmanagerview.loc"
+
 
 //  RESOURCE IDENTIFIER
 NAME    WIGZ // 4 letter ID
@@ -136,11 +137,6 @@
             {
             flags = 0;
             txt = qtn_wm_ovi_store_title;
-            bmpfile = AVKON_BITMAP_FILE;
-            bmpid = EMbmAvkonQgn_graf_wml_wait_globe_04;
-            bmpmask = EMbmAvkonQgn_graf_wml_wait_globe_04_mask;
-            press_bmpid = EMbmAvkonQgn_graf_wml_wait_globe_04;
-            press_bmpmask = EMbmAvkonQgn_graf_wml_wait_globe_04_mask;
             }
         };
     }
--- a/idlehomescreen/widgetmanager/group/bld.inf	Fri Jan 22 09:35:14 2010 +0200
+++ b/idlehomescreen/widgetmanager/group/bld.inf	Tue Jan 26 11:48:23 2010 +0200
@@ -21,7 +21,7 @@
 
 PRJ_EXPORTS
 ../rom/widgetmanager.iby               CORE_APP_LAYER_IBY_EXPORT_PATH(widgetmanager.iby)
-../rom/widgetmanager_resources.iby     CORE_APP_LAYER_IBY_EXPORT_PATH(widgetmanager_resources.iby)
+../rom/widgetmanager_resources.iby     LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(widgetmanager_resources.iby)
 
 ../sis/widgetmanager_stub.sis          /epoc32/data/z/system/install/widgetmanager_stub.sis
 
@@ -29,6 +29,8 @@
 ../conf/widgetmanager.confml          APP_LAYER_CONFML(widgetmanager.confml)
 ../conf/widgetmanager_20026F53.crml   APP_LAYER_CRML(widgetmanager_20026F53.crml)
 
+../loc/widgetmanagerview.loc         APP_LAYER_LOC_EXPORT_PATH(widgetmanagerview.loc)
+
 PRJ_EXTENSIONS
 START EXTENSION s60/mifconv
 OPTION TARGETFILE widgetmanager.mif
--- a/idlehomescreen/widgetmanager/group/widgetmanager.mmp	Fri Jan 22 09:35:14 2010 +0200
+++ b/idlehomescreen/widgetmanager/group/widgetmanager.mmp	Tue Jan 26 11:48:23 2010 +0200
@@ -32,6 +32,8 @@
 VERSION 1.0
 paged
 
+LANGUAGE_IDS
+
 CAPABILITY CAP_ECOM_PLUGIN
 
 SOURCEPATH      ../src
@@ -59,13 +61,12 @@
 SOURCEPATH		../data
 START RESOURCE	widgetmanagerview.rss
 HEADER
-TARGETPATH      RESOURCE_FILES_DIR
+TARGETPATH      APP_RESOURCE_DIR
 LANGUAGE_IDS
 END //RESOURCE
 
 USERINCLUDE .
 USERINCLUDE ../inc
-USERINCLUDE ../data
 
 APP_LAYER_SYSTEMINCLUDE
 SYSTEMINCLUDE   /epoc32/include/ecom
--- a/idlehomescreen/widgetmanager/inc/wmconfiguration.h	Fri Jan 22 09:35:14 2010 +0200
+++ b/idlehomescreen/widgetmanager/inc/wmconfiguration.h	Tue Jan 26 11:48:23 2010 +0200
@@ -54,13 +54,17 @@
 public: // API
 
     /**
-     * portal button methods
+     * portal button methods. This - along with the parameter -
+     * represents the action that the portal button is configured
+     * to do when pressed. The portal button itself should contain
+     * the execution code itself.
      */
     enum TMethod
         {
         ENone = 0, // no method
         EHttp, // open browser to a certain page
-        EWidget // open given widget with params
+        EWidget, // open given widget with params
+        EApplication // launch an application
         };
 
     /**
@@ -76,19 +80,12 @@
     
     /**
      * Icon to be displayed on a portal button
-     * Logo syntax follows the widget icon syntax in MHsContentInfo
+     * Logo syntax follows the widget icon syntax in CWmImageConverter
      * @param aIndex index of the button, starting at 0
      */
     const TDesC& PortalButtonIcon( TInt aIndex );
     
     /**
-     * Bundle ID related to this button
-     * parameter is valid if this button launches an application
-     * @param aIndex index of the button, starting at 0
-     */
-    const TDesC& PortalButtonBundleId( TInt aIndex );
-    
-    /**
      * Portal button action method.
      * Defines what happens when the portal button is pressed.
      * @param aIndex index of the button, starting at 0
@@ -96,9 +93,19 @@
     TMethod PortalButtonPrimaryMethod( TInt aIndex );
     
     /**
+     * Service name for the primary method.
+     * For EHttp this is unused.
+     * For EWidget, this is the widget Bundle ID.
+     * For EApplication, this is the application name.
+     * @param aIndex index of the button, starting at 0
+     */
+    const TDesC& PortalButtonPrimaryService( TInt aIndex );
+    
+    /**
      * parameters related to the method.
      * For EHttp this is the HTTP address
-     * for EWidget the parameters passed to the widget
+     * For EWidget the parameters passed to the widget
+     * For EApplication the params passed to the app.
      * @param aIndex index of the button, starting at 0
      */
     const TDesC& PortalButtonPrimaryParams( TInt aIndex );
@@ -112,18 +119,28 @@
     TMethod PortalButtonSecondaryMethod( TInt aIndex );
     
     /**
+     * Service name for the primary method.
+     * For EHttp this is unused.
+     * For EWidget, this is the widget Bundle ID.
+     * For EApplication, this is the application name.
+     * @param aIndex index of the button, starting at 0
+     */
+    const TDesC& PortalButtonSecondaryService( TInt aIndex );
+    
+    /**
      * Parameters for Secondary method. Like Primary method
      * Works like Primary params.
      * @param aIndex index of the button, starting at 0
      */
     const TDesC& PortalButtonSecondaryParams( TInt aIndex );
     
-    
 private: // New functions
     
+    void LoadConfigurationL();
     TInt FindCorrectLanguageId();
     HBufC* ReadParameterL( TInt aKey );
     HBufC* ReadLocalisedParameterL( TInt aOffset );
+    void IndexConversion( TInt& aIndex );
 
 private:
 
@@ -144,29 +161,45 @@
     TInt                    iLanguageIndex;
 
     /**
-     * OviStore widget bundle ID
+     * OVI store button text
      */
-    HBufC*                  iOviStoreBundleId;
+    HBufC*                  iOviButtonTitle;
     
     /**
-     * OviStore widget client param
+     * OVI store button icon
+     */
+    HBufC*                  iOviButtonIcon;
+    
+    /**
+     * OVI store button browser Url
+     * (browser is used if OVI client is not working)
+     */
+    HBufC*                  iOviButtonUrl;
+    
+    /**
+     * OVI store button widget client param
      */
     HBufC*                  iOviStoreClientParam;
     
     /**
-     * Localized Url to start browser
+     * OVI store button widget bundle ID
      */
-    HBufC*                  iOviStoreUrl;
+    HBufC*                  iOviStoreBundleId;
     
     /**
-     * Localised OVI store text
+     * OPERATOR button text
      */
-    HBufC*                  iOviStoreText;
+    HBufC*                  iOperatorButtonTitle;
     
     /**
-     * OVI store icon
+     * OPERATOR store icon
      */
-    HBufC*                  iOviStoreIcon;
+    HBufC*                  iOperatorButtonIcon;
+    
+    /**
+     * OPERATOR store button browser Url
+     */
+    HBufC*                  iOperatorButtonUrl;
     
     };
 
--- a/idlehomescreen/widgetmanager/inc/wmcrkeys.h	Fri Jan 22 09:35:14 2010 +0200
+++ b/idlehomescreen/widgetmanager/inc/wmcrkeys.h	Tue Jan 26 11:48:23 2010 +0200
@@ -22,47 +22,53 @@
 // WidgetManager CR key
 const TUint32 KCrWidgetManagerm = 0x20026F53;
 
-/**
- * Key Id's from 0x1 to 0x28 are reserved for languages.
- * LangId_0                 0x1
- * OviStoreBrowserUrl_0     0x2
- * OperatorUrl_0            0x3
- * OperatorButtonText_0     0x4
- * ...
- * LangId_9                 0x25
- * OviStoreBrowserUrl_9     0x26
- * OperatorUrl_9            0x27
- * OperatorButtonText_9     0x28 
- */
+
 
-const TUint32 KLangGroupSize = 4;
-const TUint32 KOviStoreBrowserUrlOffset = 1;
-const TUint32 OperatorUrlOffset = 2;
-const TUint32 KperatorButtonTextOffset = 3;
+// ************************************************************
+// LOCALISED parameters start here
+// Key Id's from 0x1 to 0x28 are reserved for languages.
+// LangId_0                 0x1
+// OviStoreBrowserUrl_0     0x2
+// OperatorUrl_0            0x3
+// OperatorButtonText_0     0x4
+// ...
+// LangId_1                 0x5
+// ...
+// LangId_9                 0x25
+// OviStoreBrowserUrl_9     0x26
+// OperatorUrl_9            0x27
+// OperatorButtonText_9     0x28 
+// ************************************************************
 
-/**
- * Key to first language id  
- */
+/** localised set #0, language ID */
 const TUint32 KLangId0 = 0x1;
+/** localised set #0, Ovi store browser URL */
+const TUint32 KOviStoreBrowserUrl0 = 0x2;
+/** localised set #0, Operator button URL */
+const TUint32 KOperatorButtonUrl0 = 0x3;
+/** localised set #0, Operator button text */
+const TUint32 KOperatorButtonText0 = 0x4;
 
-/**
- * Key to last language id  
- */
+/** localised set #1, language ID */
+const TUint32 KLangId1 = 0x5;
+
+/** localised set #9, language ID */
 const TUint32 KLangId9 = 0x25;
 
-/**
- * Key to Ovi Store Client param  
- */
+
+// ************************************************************
+// NON-LOCALISED parameters
+// ************************************************************
+
+/** Key to Ovi Store Client param */
 const TUint32 KOviStoreClientParam = 0x29;
 
-/**
- * Key to Operator button icon
- */
+/** Key to Operator button icon */
 const TUint32 KOperatorButtonIcon = 0x2A;
 
-/**
- * Key to Ovi Store client BunbleId
- */
-const TUint32 KOviStoreBunbleId = 0x2B;
+/** Key to Ovi Store client BundleId */
+const TUint32 KOviStoreBundleId = 0x2B;
+
+
 
 #endif // __WMCRKEYS_H__
--- a/idlehomescreen/widgetmanager/inc/wmmaincontainer.h	Fri Jan 22 09:35:14 2010 +0200
+++ b/idlehomescreen/widgetmanager/inc/wmmaincontainer.h	Tue Jan 26 11:48:23 2010 +0200
@@ -86,11 +86,6 @@
 public: // new functions	
 
     /** 
-     * @return reference to WmPlugin 
-     */
-    CWmPlugin& WmPlugin();
-    
-    /** 
      * @return true, if portal button is currently selected 
      */
     TBool PortalSelected();
@@ -336,26 +331,19 @@
      * portal button
      * (if there is only one button, this is it)
      */
-    CWmPortalButton*             iPortalButtonOne;
+    CWmPortalButton*         iPortalButtonOne;
 
     /**
      * portal button
      * (if there is only one button, this is NULL)
      */
-    CWmPortalButton*             iPortalButtonTwo;
+    CWmPortalButton*         iPortalButtonTwo;
 
-    /** GUI layout modes */
-    enum TWmLayout
-        {
-        EPortrait,
-        ELandscape,
-        ELandscapeMirrored
-        };
+    /** whether we are orientated in landscape */
+    TBool                   iLandscape;
 
-    /**
-     * current widget manager container layout
-     */
-    TWmLayout               iLayout;
+    /** whether we have mirrored layout */
+    TBool                   iMirrored;
 
     /** focus modes */
     enum TWmFocusMode
--- a/idlehomescreen/widgetmanager/inc/wmplugin.h	Fri Jan 22 09:35:14 2010 +0200
+++ b/idlehomescreen/widgetmanager/inc/wmplugin.h	Tue Jan 26 11:48:23 2010 +0200
@@ -29,7 +29,6 @@
 
 class CAknViewAppUi;
 class CWmResourceLoader;
-class CWmMainContainerView;
 class CWmMainContainer;
 class CWmEffectManager;
 
@@ -166,10 +165,6 @@
      */
     CWmMainContainer*  iWmMainContainer;
 
-    /**
-     * main view (not owned)
-     */
-    CWmMainContainerView* iWmMainView;
 
     /**
      * resource loader
--- a/idlehomescreen/widgetmanager/inc/wmresourceloader.h	Fri Jan 22 09:35:14 2010 +0200
+++ b/idlehomescreen/widgetmanager/inc/wmresourceloader.h	Tue Jan 26 11:48:23 2010 +0200
@@ -24,9 +24,7 @@
 #include <e32base.h>
 
 // FORWARD DECLARATIONS
-class CAknStylusPopUpMenu;
 class CEikonEnv;
-class CAknButton;
 class CAknInformationNote;
 
 /**
@@ -50,17 +48,6 @@
 public: // services
 
     /**
-     * Loads a button from the widgetmanager resource file
-     * using CAknButton::ConstructFromResourceL
-     * 
-     * @param aResource handle to the empty button instance
-     * @param aResourceId ID of the resource to use in loading
-     */
-    void LoadButtonL(
-            CAknButton& aResource,
-            TInt aResourceId );
-
-    /**
      * shows a simple info popup with OK button
      * @param aResourceId the resource id of string to be shown
      * @param aString additional string to be replaced into %U
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/loc/widgetmanagerview.loc	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,163 @@
+/*
+* 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: Localisation file of Widget Manager 
+*
+*/
+
+
+
+// TITLES OF EACH VIEW
+
+// d: Title of Application
+// d: 
+// d: 
+// l: title_pane_t2/opt12
+// w:
+// r: TB9.2
+#define qtn_wm_title_text "Widget Catalog"
+
+
+
+// OPTIONS-MENU MENUITEMS
+
+// d: Add-menuitem in Options-menu 
+// d: 
+// d: 
+// l: list_single_pane_t1_cp2
+// w:
+// r: TB9.2
+//
+#define qtn_options_wm_add "Add To Homescreen"
+
+// d: Launch-menuitem in Options-menu
+// d: 
+// d: 
+// l: list_single_pane_t1_cp2
+// w:
+// r: TB9.2
+//
+#define qtn_options_wm_launch_widget "Launch"
+
+// d: Search-menuitem in Options-menu
+// d: 
+// d: 
+// l: list_single_pane_t1_cp2
+// w:
+// r: TB9.2
+//
+#define qtn_options_wm_search "Search"
+
+// d: Uninstall-menuitem in Options-menu 
+// d: 
+// d: 
+// l: list_single_pane_t1_cp2
+// w:
+// r: TB9.2
+//
+#define qtn_options_wm_uninstall "Uninstall"
+
+// d: Open-menuitem in Options-menu 
+// d: 
+// d: 
+// l: list_single_pane_t1_cp2
+// w:
+// r: TB9.2
+//
+#define qtn_options_wm_open "Open"
+
+// d: Sort alphabetically-menuitem in Options-menu
+// d: 
+// d: 
+// l: list_single_pane_t1_cp2
+// w:
+// r: TB9.2
+//
+#define qtn_options_wm_sort_alpha "Sort alphabetically"
+
+// d: Details-menuitem in Options-menu
+// d: 
+// d: 
+// l: list_single_pane_t1_cp2
+// w:
+// r: TB9.2
+//
+#define qtn_options_wm_show_details "Details"
+
+
+
+// MISC
+
+// d: Text displayed on OVI Store button 
+// d: 
+// d: 
+// l: wgtman_btn_pane_t1
+// w:
+// r: TB9.2
+//
+#define qtn_wm_ovi_store_title "Ovi Store"
+
+// d: Info popup to indicate that an item can not be added to home screen
+// d: because current view is full
+// d: 
+// l: popup_note_window
+// w:
+// r: TB9.2
+//
+#define qtn_hs_add_widget_no_space_note "Not enough space to add new widget to active page. Remove some content first"
+
+// d: Info popup to indicate that an item can not be added to home screen
+// d: because maximum instance count of current widget would be exceeded
+// d: 
+// l: popup_note_window
+// w:
+// r: TB9.2
+//
+#define qtn_hs_add_widget_max_count_note "Unable to add. Home screen does not allow more instances of this widget"
+
+// d: widget details dialog left softkey for adding widget to home screen
+// d: Note: widgets dialog is not necessarily full screen width, which may affect
+// d: string max length!
+// l: control_pane_t1/opt7
+// w:
+// r: TB9.2
+//
+#define qtn_wm_details_add_to_hs "Add"
+
+// d: widget details dialog - no description
+// d: 
+// d: 
+// l: listrow_wgtman_pane_t2
+// w:
+// r: TB9.2
+//
+#define qtn_wm_details_no_description "No description available"
+
+// d: widget uninstall not allowed
+// d: 
+// d: 
+// l: popup_note_window
+// w:
+// r: TB9.2
+//
+#define qtn_wm_uninst_not_allowed "%U can not be uninstalled "
+
+// d: widget details dialog default text for wrt widgets
+// d: 
+// d: 
+// l: popup_note_window
+// w:
+// r: TB9.2
+//
+#define qtn_wm_widget_details_wrt "HomeScreen application that uses internet connection to show dynamic updates from web"
+
--- a/idlehomescreen/widgetmanager/rom/widgetmanager_resources.iby	Fri Jan 22 09:35:14 2010 +0200
+++ b/idlehomescreen/widgetmanager/rom/widgetmanager_resources.iby	Tue Jan 26 11:48:23 2010 +0200
@@ -18,8 +18,9 @@
 #ifndef WIDGETMANAGER_RESOURCES_IBY
 #define WIDGETMANAGER_RESOURCES_IBY
 
+
 // widgetmanager resources
-data=DATAZ_\resource\widgetmanagerview.rsc  \resource\widgetmanagerview.rsc
+data=DATAZ_\APP_RESOURCE_DIR\widgetmanagerview.rsc  APP_RESOURCE_DIR\widgetmanagerview.rsc
 
 #endif // WIDGETMANAGER_RESOURCES_IBY
 
--- a/idlehomescreen/widgetmanager/sis/widgetmanager_udeb.pkg	Fri Jan 22 09:35:14 2010 +0200
+++ b/idlehomescreen/widgetmanager/sis/widgetmanager_udeb.pkg	Tue Jan 26 11:48:23 2010 +0200
@@ -38,7 +38,12 @@
 "\epoc32\data\z\resource\plugins\widgetmanager.rsc"     -"C:\resource\plugins\widgetmanager.rsc"
 
 ; widgetmanager resource file
-"\epoc32\data\z\resource\widgetmanagerview.rsc"         -"C:\resource\widgetmanagerview.rsc"
+"\epoc32\data\z\resource\apps\widgetmanagerview.rsc"    -"C:\resource\apps\widgetmanagerview.rsc"
+
+; These two languages are added just for testing. If sis update is really used for providing
+; updates to end user these need to be fixed.
+"\epoc32\data\z\resource\apps\widgetmanagerview.r01"    -"C:\resource\apps\widgetmanagerview.r01"
+"\epoc32\data\z\resource\apps\widgetmanagerview.r02"    -"C:\resource\apps\widgetmanagerview.r02"
 
 ; widgetmanager icons
 "\epoc32\data\z\resource\apps\widgetmanager.mif"        -"C:\resource\apps\widgetmanager.mif"
--- a/idlehomescreen/widgetmanager/sis/widgetmanager_urel.pkg	Fri Jan 22 09:35:14 2010 +0200
+++ b/idlehomescreen/widgetmanager/sis/widgetmanager_urel.pkg	Tue Jan 26 11:48:23 2010 +0200
@@ -38,7 +38,12 @@
 "\epoc32\data\z\resource\plugins\widgetmanager.rsc"     -"C:\resource\plugins\widgetmanager.rsc"
 
 ; widgetmanager resource file
-"\epoc32\data\z\resource\widgetmanagerview.rsc"         -"C:\resource\widgetmanagerview.rsc"
+"\epoc32\data\z\resource\apps\widgetmanagerview.rsc"    -"C:\resource\apps\widgetmanagerview.rsc"
+
+; These two languages are added just for testing. If sis update is really used for providing
+; updates to end user these need to be fixed.
+"\epoc32\data\z\resource\apps\widgetmanagerview.r01"    -"C:\resource\apps\widgetmanagerview.r01"
+"\epoc32\data\z\resource\apps\widgetmanagerview.r02"    -"C:\resource\apps\widgetmanagerview.r02"
 
 ; widgetmanager icons
 "\epoc32\data\z\resource\apps\widgetmanager.mif"        -"C:\resource\apps\widgetmanager.mif"
--- a/idlehomescreen/widgetmanager/src/wmconfiguration.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ b/idlehomescreen/widgetmanager/src/wmconfiguration.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -27,8 +27,15 @@
 #include "wmresourceloader.h"
 #include "wmcrkeys.h"
 
-// CONSTANTS
-const TInt KMaxIconDescriptorLength = 256;
+// some constants regarging the central repository localised section.
+// these will ensure CR localisation section compatibility even if
+// new strings are added
+const TInt KLangOffsetOviStoreUrl = KOviStoreBrowserUrl0 - KLangId0;
+const TInt KLangOffsetOperatorUrl = KOperatorButtonUrl0 - KLangId0;
+const TInt KLangOffsetOperatorText = KOperatorButtonText0 - KLangId0;
+const TInt KLangGroupSize = KLangId1 - KLangId0;
+const TUint32 KLastLangId = KLangId9;
+
 
 // ---------------------------------------------------------
 // CWmConfiguration::NewL
@@ -52,12 +59,15 @@
         CWmResourceLoader& aResourceLoader )
     : iResourceLoader( aResourceLoader )
 	{
-    iOviStoreText = NULL;
-    iOviStoreIcon = NULL;
-	iRepository = NULL;
-	iOviStoreBundleId = NULL;
-	iOviStoreClientParam = NULL;
-    iOviStoreUrl = NULL;
+    iRepository = NULL;
+    iOviStoreBundleId = NULL;
+    iOviStoreClientParam = NULL;
+    iOviButtonTitle = NULL;
+    iOviButtonIcon = NULL;
+    iOviButtonUrl = NULL;
+    iOperatorButtonTitle = NULL;
+    iOperatorButtonIcon = NULL;
+    iOperatorButtonUrl = NULL;
 	}
 
 // ---------------------------------------------------------
@@ -66,12 +76,15 @@
 //
 CWmConfiguration::~CWmConfiguration()
 	{
-    delete iOviStoreText;
-    delete iOviStoreIcon;
-	delete iRepository;
+    delete iRepository;
     delete iOviStoreBundleId;
     delete iOviStoreClientParam;
-    delete iOviStoreUrl;
+    delete iOviButtonTitle;
+    delete iOviButtonIcon;
+    delete iOviButtonUrl;
+    delete iOperatorButtonTitle;
+    delete iOperatorButtonIcon;
+    delete iOperatorButtonUrl;
 	}
 
 // ---------------------------------------------------------
@@ -81,32 +94,54 @@
 void CWmConfiguration::ConstructL()
 	{
 	// localised ovistore button text
-    iOviStoreText = StringLoader::LoadL( R_QTN_WM_GO_TO_OVI_STORE );
+    iOviButtonTitle = StringLoader::LoadL( R_QTN_WM_GO_TO_OVI_STORE );
 
     // ovistore icon descriptor. It will look something like this:
     // skin( 0x101f86e3 0x23f6 ):mif( z:\resource\apps\widgetmanager.mif 16388 16389 )
+    _LIT( KSkinMifIconFormat, "skin( 0x%x 0x%x ):mif( %S %d %d )");
+    const TInt KMaxIconDescriptorLength = 256;
     TBuf<KMaxIconDescriptorLength> buf;
-    _LIT( KSkinMifIconFormat, "skin( 0x%x 0x%x ):mif( %S %d %d )");
     buf.Format( KSkinMifIconFormat(),
              EAknsMajorGeneric, EAknsMinorGenericQgnMenuOviStore,
              &iResourceLoader.IconFilePath(),
              EMbmWidgetmanagerQgn_menu_ovistore,
              EMbmWidgetmanagerQgn_menu_ovistore_mask );
-    iOviStoreIcon = buf.AllocL();
+    iOviButtonIcon = buf.AllocL();
 
     // read data from repository
-    TRAP_IGNORE(
-        iRepository = CRepository::NewL( 
-                TUid::Uid( KCrWidgetManagerm ) );
-    
-        iLanguageIndex = FindCorrectLanguageId();
-        iOviStoreBundleId = ReadParameterL( KOviStoreBunbleId );
-        iOviStoreClientParam = ReadParameterL( KOviStoreClientParam );
-        iOviStoreUrl = ReadLocalisedParameterL( KOviStoreBrowserUrlOffset );
-        );
+    TRAP_IGNORE( LoadConfigurationL(); );
+
 	}
 
 // ---------------------------------------------------------
+// CWmConfiguration::LoadConfigurationL
+// ---------------------------------------------------------
+//
+void CWmConfiguration::LoadConfigurationL()
+    {
+    iRepository = CRepository::NewL( 
+            TUid::Uid( KCrWidgetManagerm ) );
+
+    // read fixed parameters
+    iOviStoreBundleId = ReadParameterL( KOviStoreBundleId );
+    iOviStoreClientParam = ReadParameterL( KOviStoreClientParam );
+    // determine language and read localised parameters
+    iLanguageIndex = FindCorrectLanguageId();
+    iOviButtonUrl = ReadLocalisedParameterL( KLangOffsetOviStoreUrl );
+    iOperatorButtonTitle = ReadLocalisedParameterL( KLangOffsetOperatorText );
+    iOperatorButtonUrl = ReadLocalisedParameterL( KLangOffsetOperatorUrl );
+
+    if ( iOperatorButtonUrl && iOperatorButtonUrl->Length() > 0 )
+        {
+        // construct the operator button icon.
+        iOperatorButtonIcon = ReadParameterL( KOperatorButtonIcon );
+        }
+
+    delete iRepository;
+    iRepository = NULL;
+    }
+
+// ---------------------------------------------------------
 // CWmConfiguration::FindCorrectLanguageId
 // ---------------------------------------------------------
 //
@@ -118,7 +153,7 @@
     TLanguage sysLang = User::Language();
     
     //read language id's from cenrep, find a match
-    for( TUint32 i=KLangId0; i<=KLangId9 && languageIndex<0; i+=KLangGroupSize )
+    for( TUint32 i=KLangId0; i<=KLastLangId && languageIndex<0; i+=KLangGroupSize )
         {
         TInt crLang = 0;
         if ( iRepository->Get( i, crLang ) == KErrNone )
@@ -191,9 +226,11 @@
 // ---------------------------------------------------------
 //
 TInt CWmConfiguration::PortalButtonCount()
-	{
-	return 1;
-	}
+    {
+    if ( iOperatorButtonUrl && iOperatorButtonUrl->Length() > 0 )
+        return 2;
+    return 1;
+    }
 
 // ---------------------------------------------------------
 // CWmConfiguration::PortalButtonText
@@ -201,7 +238,11 @@
 //
 const TDesC& CWmConfiguration::PortalButtonText( TInt aIndex )
     {
-    if ( aIndex == 0 && iOviStoreText ) return *iOviStoreText;
+    IndexConversion( aIndex );
+    if ( aIndex == 0 && iOviButtonTitle )
+        return *iOviButtonTitle;
+    if ( aIndex == 1 && iOperatorButtonTitle )
+        return *iOperatorButtonTitle;
     return KNullDesC;
     }
 
@@ -211,41 +252,54 @@
 //
 const TDesC& CWmConfiguration::PortalButtonIcon( TInt aIndex )
     {
-    if ( aIndex == 0 && iOviStoreIcon ) return *iOviStoreIcon;
+    IndexConversion( aIndex );
+    if ( aIndex == 0 && iOviButtonIcon )
+        return *iOviButtonIcon;
+    if ( aIndex == 1 && iOperatorButtonIcon )
+        return *iOperatorButtonIcon;
     return KNullDesC;
     }
 
 // ---------------------------------------------------------
-// CWmConfiguration::PortalButtonBundleId
-// ---------------------------------------------------------
-//
-const TDesC&
-    CWmConfiguration::PortalButtonBundleId( TInt aIndex )
-    {
-    if ( aIndex == 0 && iOviStoreBundleId ) return *iOviStoreBundleId;
-    return KNullDesC;
-    }
-
-
-// ---------------------------------------------------------
 // CWmConfiguration::PortalButtonPrimaryMethod
 // ---------------------------------------------------------
 //
 CWmConfiguration::TMethod
     CWmConfiguration::PortalButtonPrimaryMethod( TInt aIndex )
     {
-    if ( aIndex == 0 && iOviStoreClientParam ) return EWidget;
+    IndexConversion( aIndex );
+    if ( aIndex == 0 && iOviStoreBundleId && iOviStoreBundleId->Length() > 0 )
+        return EWidget;
+    if ( aIndex == 1 && iOperatorButtonUrl && iOperatorButtonUrl->Length() > 0 )
+        return EHttp;
     return ENone;
     }
 
 // ---------------------------------------------------------
+// CWmConfiguration::PortalButtonPrimaryService
+// ---------------------------------------------------------
+//
+const TDesC&
+    CWmConfiguration::PortalButtonPrimaryService( TInt aIndex )
+    {
+    IndexConversion( aIndex );
+    if ( aIndex == 0 && iOviStoreBundleId && iOviStoreBundleId->Length() > 0 )
+        return *iOviStoreBundleId;
+    return KNullDesC;
+    }
+
+// ---------------------------------------------------------
 // CWmConfiguration::PortalButtonPrimaryParams
 // ---------------------------------------------------------
 //
 const TDesC&
     CWmConfiguration::PortalButtonPrimaryParams( TInt aIndex )
     {
-    if ( aIndex == 0 && iOviStoreClientParam ) return *iOviStoreClientParam;
+    IndexConversion( aIndex );
+    if ( aIndex == 0 && iOviStoreClientParam )
+        return *iOviStoreClientParam;
+    if ( aIndex == 1 && iOperatorButtonUrl )
+        return *iOperatorButtonUrl;
     return KNullDesC;
     }
 
@@ -257,21 +311,51 @@
 CWmConfiguration::TMethod
     CWmConfiguration::PortalButtonSecondaryMethod( TInt aIndex )
     {
-    if ( aIndex == 0 && iOviStoreUrl ) return EHttp;
+    IndexConversion( aIndex );
+    if ( aIndex == 0 && iOviButtonUrl && iOviButtonUrl->Length() > 0 )
+        return EHttp;
     return ENone;
     }
 
 // ---------------------------------------------------------
+// CWmConfiguration::PortalButtonSecondaryService
+// ---------------------------------------------------------
+//
+const TDesC&
+    CWmConfiguration::PortalButtonSecondaryService( TInt aIndex )
+    {
+    IndexConversion( aIndex );
+    return KNullDesC;
+    }
+
+// ---------------------------------------------------------
 // CWmConfiguration::PortalButtonSecondaryParams
 // ---------------------------------------------------------
 //
 const TDesC&
     CWmConfiguration::PortalButtonSecondaryParams( TInt aIndex )
     {
-    if ( aIndex == 0 && iOviStoreUrl ) return *iOviStoreUrl;
+    IndexConversion( aIndex );
+    if ( aIndex == 0 && iOviButtonUrl )
+        return *iOviButtonUrl;
     return KNullDesC;
     }
 
+// ---------------------------------------------------------
+// CWmConfiguration::IndexConversion
+// ---------------------------------------------------------
+//
+void CWmConfiguration::IndexConversion( TInt& /*aIndex*/ )
+    {
+    // if there is a need to configure switching button places
+    // (operator button left, then OVI button) then this method
+    // would have something like this:
+    
+    // if ( iSwitchButtons ) aIndex = 1 - aIndex;
+    
+    // but for now, this method is empty.
+    }
+
 
 
 
--- a/idlehomescreen/widgetmanager/src/wmimageconverter.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ b/idlehomescreen/widgetmanager/src/wmimageconverter.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -209,21 +209,19 @@
         RApaLsSession lsSession;
         User::LeaveIfError( lsSession.Connect() );
         CleanupClosePushL( lsSession );
-    
-        CArrayFixFlat<TSize>* sizeArray = new (ELeave) CArrayFixFlat<TSize>(3);
+        
+        const TInt KAppSizeArraySize = 3;
+        CArrayFixFlat<TSize>* sizeArray = new (ELeave)
+            CArrayFixFlat<TSize>( KAppSizeArraySize );
         CleanupStack::PushL( sizeArray );
         User::LeaveIfError( lsSession.GetAppIconSizes( aUid, *sizeArray ) );
-        TInt sizeCount = sizeArray->Count();
         TSize size;
-        if ( sizeCount > 0 )
+        for( TInt i=0; i < sizeArray->Count(); i++ )
             {
-            for( TInt i=0; i < sizeArray->Count(); i++ )
+            size = (*sizeArray)[i];
+            if ( size == iSize )
                 {
-                size = (*sizeArray)[i];
-                if ( size == iSize )
-                    {
-                    break;
-                    }
+                break;
                 }
             }
         CApaMaskedBitmap* maskedBmp = CApaMaskedBitmap::NewLC();
@@ -314,6 +312,8 @@
         }
 
     TDisplayMode mode = CEikonEnv::Static()->ScreenDevice()->DisplayMode();
+    if ( mode >= ERgb ) // currently svg engine doesn't render correctly
+        { mode = EColor16M; } // in this or above mode ( ou1cimx1#229434 )
     TFontSpec fontspec;
     
     CFbsBitmap* frameBuffer = new ( ELeave ) CFbsBitmap;
@@ -322,18 +322,20 @@
     
     CSvgEngineInterfaceImpl* svgEngine = CSvgEngineInterfaceImpl::NewL( 
             frameBuffer, NULL, fontspec );
-    svgEngine->SetDRMMode( EFalse );  
+    CleanupStack::PushL( svgEngine );
+    
+    svgEngine->SetDRMMode( EFalse );
 
     TInt domHandle;
     CheckSvgErrorL( svgEngine->PrepareDom( aFileName, domHandle ) );
     
     CFbsBitmap* bitmap = new(ELeave) CFbsBitmap;    
-    User::LeaveIfError( bitmap->Create( iSize, mode) );
     CleanupStack::PushL( bitmap );
+    User::LeaveIfError( bitmap->Create( iSize, mode ) );
     
     CFbsBitmap* mask = new(ELeave) CFbsBitmap;    
+    CleanupStack::PushL( mask );
     User::LeaveIfError( mask->Create( iSize, EGray256 ) );
-    CleanupStack::PushL( mask );
     
     CheckSvgErrorL( svgEngine->UseDom( domHandle, bitmap, mask ) );
 
@@ -346,6 +348,7 @@
 
     CleanupStack::Pop( mask );
     CleanupStack::Pop( bitmap );
+    CleanupStack::PopAndDestroy( svgEngine );
     CleanupStack::PopAndDestroy( frameBuffer );
     
     iBitmap = bitmap;
--- a/idlehomescreen/widgetmanager/src/wmlistbox.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ b/idlehomescreen/widgetmanager/src/wmlistbox.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -18,8 +18,6 @@
 
 // INCLUDE FILES
 #include <coemain.h>
-#include <StringLoader.h>
-#include <aknstyluspopupmenu.h> 
 #include <AknsDrawUtils.h>
 #include <AknsFrameBackgroundControlContext.h>
 #include <AknsListBoxBackgroundControlContext.h>
@@ -28,6 +26,8 @@
 #include <aknlayoutscalable_avkon.cdl.h>
 #include <aknlayoutscalable_apps.cdl.h>
 #include <AknLayout.lag>
+#include <AknIconArray.h>
+#include <gulicon.h>
 #include <widgetmanagerview.rsg>
 #include <widgetmanager.mbg>
 #include "wmcommon.h"
@@ -123,6 +123,20 @@
             EMbmWidgetmanagerAdd_widget_button,
             EMbmWidgetmanagerAdd_widget_button_mask,
             KRgbWhite );
+    
+    // This is temporary fix for ou1cimx1#228810
+    // Can be removed when avkon provides real fix for this error.
+    // Currently forever loop in CFormattedCellListBoxData::DrawFormattedSimple
+    // never exits if there is no iconarray and name contains tab+digit which  
+    // confuses listbox e.g. considering name as icon index 
+    CArrayPtr<CGulIcon>* dummyArray = new( ELeave ) CAknIconArray(2);
+    CleanupStack::PushL(dummyArray);
+    CGulIcon* dummyIcon = CGulIcon::NewLC();
+    CGulIcon* dummyIcon2 = CGulIcon::NewLC();
+    dummyArray->AppendL(dummyIcon);
+    dummyArray->AppendL(dummyIcon2);
+    ColumnData()->SetIconArray(dummyArray);
+    CleanupStack::Pop(3);
     }
 
 // ---------------------------------------------------------
@@ -256,9 +270,9 @@
     TAknTextLineLayout titleTextLayout = 
               AknLayoutScalable_Apps::listrow_wgtman_pane_t1().LayoutLine();
 
-    TAknLayoutText textLayout;
-    textLayout.LayoutText( itemRect, titleTextLayout );
-    textLayout.DrawText( gc, wData.Name(), ETrue, textColor );
+    TAknLayoutText textLayoutTitle;
+    textLayoutTitle.LayoutText( itemRect, titleTextLayout );
+    textLayoutTitle.DrawText( gc, wData.Name(), ETrue, textColor );
     
     if ( !wData.IsUninstalling() &&
         wData.HsContentInfo().CanBeAdded() )
@@ -285,8 +299,9 @@
             AknLayoutScalable_Apps::listrow_wgtman_pane_t2().LayoutLine();
         gc.SetPenSize(TSize(1,1));
         // DRAW DESCRIPTION TEXT
-        textLayout.LayoutText( itemRect, descTextLayout );
-        textLayout.DrawText( gc, wData.Description(), ETrue, textColor );
+        TAknLayoutText textLayoutDes;
+        textLayoutDes.LayoutText( itemRect, descTextLayout );
+        textLayoutDes.DrawText( gc, wData.Description(), ETrue, textColor );
         }
     else
         {
@@ -523,7 +538,11 @@
 //
 void CWmListBox::RedrawItem( TInt aItemIndex )
     {
-    View()->DrawItem( aItemIndex );
+    if ( aItemIndex >= 0 &&
+        aItemIndex < Model()->NumberOfItems() )
+        {
+        View()->DrawItem( aItemIndex );
+        }
     }
 
 // ---------------------------------------------------------
@@ -552,9 +571,6 @@
             cellData,
             this );
     CleanupStack::Pop(); // cellData
-
-    // enable extended drawing
-    EnableExtendedDrawingL();
     }
 
 // ---------------------------------------------------------
@@ -690,22 +706,31 @@
 //
 void CWmListBox::HandlePointerEventL( const TPointerEvent& aPointerEvent )
     {
-	// Check if pointer is down ( needed for drawing correct hightlight frame )
+    CAknDouble2LargeStyleListBox::HandlePointerEventL( aPointerEvent );
+
+    // Check if pointer is down ( needed for drawing correct hightlight frame )
 	if ( Rect().Contains( aPointerEvent.iPosition ) )
 		{
-		if ( aPointerEvent.iType == TPointerEvent::EButton1Down )
-			{
-			iPressedDown = ETrue;
-			RedrawItem( CurrentListBoxItemIndex() );
-			}
-		else if( aPointerEvent.iType == TPointerEvent::EButton1Up )
-			{
-			iPressedDown = EFalse;
-			RedrawItem( CurrentListBoxItemIndex() );
-			}
+        TInt itemIndex = CurrentListBoxItemIndex();
+        TBool itemPointed = View()->XYPosToItemIndex(
+                                aPointerEvent.iPosition,
+                                itemIndex );
+        if ( itemIndex >= 0 && itemPointed )
+            {
+            if ( aPointerEvent.iType == TPointerEvent::EButton1Down )
+                {
+                iPressedDown = ETrue;
+                // redraw item
+                RedrawItem( itemIndex );
+                }
+            else if( aPointerEvent.iType == TPointerEvent::EButton1Up )
+                {
+                iPressedDown = EFalse;
+                // redraw item
+                RedrawItem( itemIndex );
+                }
+            }
 		}
-
-	CAknDouble2LargeStyleListBox::HandlePointerEventL( aPointerEvent );	
     }
 
 // ---------------------------------------------------------
--- a/idlehomescreen/widgetmanager/src/wmmaincontainer.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ b/idlehomescreen/widgetmanager/src/wmmaincontainer.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -196,36 +196,53 @@
 //
 void CWmMainContainer::LayoutControls()
 	{
-    TBool landscape = Layout_Meta_Data::IsLandscapeOrientation();
-
-    TAknWindowLineLayout listPane = 
-                AknLayoutScalable_Apps::listscroll_wgtman_pane(landscape ? 1 : 0).LayoutLine();
+    TRect rect( Rect() );
 
-    TAknWindowLineLayout btnPane = 
-                AknLayoutScalable_Apps::wgtman_btn_pane(landscape ? 1 : 0).LayoutLine();
-
-	TRect rect = Rect();	
+    // determine layout type
+    iLandscape = Layout_Meta_Data::IsLandscapeOrientation();
+    iMirrored = Layout_Meta_Data::IsMirrored();
     
-	if ( landscape )
+    // layout iPortalButtons
+	if ( iConfiguration->PortalButtonCount() == 1 )
 	    {
-        if ( Layout_Meta_Data::IsMirrored() )
-            {
-            iLayout = ELandscapeMirrored;
-            }
-        else
-            {
-            iLayout = ELandscape;
-            }
+	    // one button
+	    TAknWindowLineLayout btnPane = AknLayoutScalable_Apps
+	       ::wgtman_btn_pane( iLandscape ? 1 : 0 ).LayoutLine();
+	    AknLayoutUtils::LayoutControl( iPortalButtonOne, rect, btnPane );
 	    }
 	else
 	    {
-        iLayout = EPortrait;
+	    // two buttons
+        // **********************************
+        // we do not have layouts for two buttons yet - layout manually
+        TAknWindowLineLayout btnPane = AknLayoutScalable_Apps
+            ::wgtman_btn_pane( iLandscape ? 1 : 0 ).LayoutLine();
+	    TAknLayoutRect layoutrect;
+	    layoutrect.LayoutRect( rect, btnPane );
+	    TRect r( layoutrect.Rect() );
+	    TRect r1, r2;
+	    const TInt gap = 3;
+	    if ( iLandscape )
+	        {
+	        r1 = TRect( r.iTl, TSize( r.Width(), r.Height() / 2 - gap ) );
+	        r2 = r1;
+            r2.Move( 0, r.Height() / 2 + gap );
+	        }
+	    else
+	        {
+            r1 = TRect( r.iTl, TSize( r.Width() / 2 - gap, r.Height() ) );
+            r2 = r1;
+            if (iMirrored) r1.Move( r.Width() / 2 + gap, 0 );
+            else r2.Move( r.Width() / 2 + gap, 0 );
+            }
+        iPortalButtonOne->SetRect( r1 );
+        iPortalButtonTwo->SetRect( r2 );
+        // *************************************
 	    }
-	
-    // portal button layout
-	// todo: 2-button layout
-    AknLayoutUtils::LayoutControl( iPortalButtonOne, rect, btnPane );
     
+	// layout iWidgetsList
+    TAknWindowLineLayout listPane = AknLayoutScalable_Apps
+        ::listscroll_wgtman_pane( iLandscape ? 1 : 0 ).LayoutLine();
     if( iFindbox && iFindPaneIsVisible )
         {
 		TAknLayoutRect layoutRect;
@@ -420,7 +437,7 @@
         // ------------------------------------
         // focus is in the WIDGETS LIST
         // ------------------------------------
-        if ( iLayout == EPortrait &&
+        if ( !iLandscape &&
                 aKeyEvent.iScanCode == EStdKeyUpArrow &&
                 iWidgetsList->CurrentItemIndex() == 0 )
             {
@@ -429,7 +446,7 @@
                 SetFocusToPortalButton( 0 );
             keyResponse = EKeyWasConsumed;
             }
-        else if ( iLayout == EPortrait &&
+        else if ( !iLandscape &&
                 aKeyEvent.iScanCode == EStdKeyDownArrow &&
                 iWidgetsList->CurrentItemIndex() ==
                    iWidgetsList->Model()->NumberOfItems() - 1 )
@@ -439,15 +456,15 @@
                 SetFocusToPortalButton( 0 );
             keyResponse = EKeyWasConsumed;
             }
-        else if ( iLayout == ELandscape &&
+        else if ( iLandscape && !iMirrored &&
                 aKeyEvent.iScanCode == EStdKeyRightArrow )
             {
-            // widget list -> right -> ovi button (landscape)
+            // widget list -> right -> ovi button (landscape normal)
             if ( aType == EEventKey )
                 SetFocusToPortalButton( 0 );
             keyResponse = EKeyWasConsumed;
             }
-        else if ( iLayout == ELandscapeMirrored &&
+        else if ( iLandscape && iMirrored &&
                 aKeyEvent.iScanCode == EStdKeyLeftArrow )
             {
             // widget list -> left -> ovi button (landscape mirrored)
@@ -461,53 +478,61 @@
         // ------------------------------------
         // focus is in the FIRST PORTAL BUTTON
         // ------------------------------------
-        if ( iLayout == EPortrait &&
+        if ( !iLandscape &&
                 aKeyEvent.iScanCode == EStdKeyDownArrow )
             {
-            // left portal -> down -> widget list top
+            // left portal -> down -> widget list top (portrait)
             if ( aType == EEventKey )
                 SetFocusToWidgetList( 0 );
             keyResponse = EKeyWasConsumed;
             }
-        else if ( iLayout == EPortrait &&
+        else if ( !iLandscape &&
                 aKeyEvent.iScanCode == EStdKeyUpArrow )
             {
-            // left portal -> up -> widget list bottom
+            // left portal -> up -> widget list bottom (portrait)
             if ( aType == EEventKey )
                 SetFocusToWidgetList( iWidgetsList->Model()->NumberOfItems()-1 );
             keyResponse = EKeyWasConsumed;
             }
-        else if ( iLayout == EPortrait &&
+        else if ( !iLandscape && !iMirrored &&
                 aKeyEvent.iScanCode == EStdKeyRightArrow &&
                 iConfiguration->PortalButtonCount() > 1 )
             {
-            // left portal -> right -> right portal
+            // left portal -> right -> right portal (portrait normal)
+            if ( aType == EEventKey )
+                SetFocusToPortalButton( 1 );
+            keyResponse = EKeyWasConsumed;
+            }
+        else if ( !iLandscape && iMirrored &&
+                aKeyEvent.iScanCode == EStdKeyLeftArrow &&
+                iConfiguration->PortalButtonCount() > 1 )
+            {
+            // right portal -> left -> left portal (portrait mirrored)
             if ( aType == EEventKey )
                 SetFocusToPortalButton( 1 );
             keyResponse = EKeyWasConsumed;
             }
-        else if ( iLayout == ELandscape &&
+        else if ( iLandscape && !iMirrored &&
                 aKeyEvent.iScanCode == EStdKeyLeftArrow )
             {
-            // upper portal -> left -> widget list
+            // upper portal -> left -> widget list (landscape normal)
             if ( aType == EEventKey )
                 SetFocusToWidgetList();
             keyResponse = EKeyWasConsumed;
             }
-        else if ( iLayout == ELandscapeMirrored &&
+        else if ( iLandscape && iMirrored &&
                 aKeyEvent.iScanCode == EStdKeyRightArrow )
             {
-            // upper portal -> right -> widget list (mirrored)
+            // upper portal -> right -> widget list (landscape mirrored)
             if ( aType == EEventKey )
                 SetFocusToWidgetList();
             keyResponse = EKeyWasConsumed;
             }
-        else if ( ( iLayout == ELandscape ||
-                iLayout == ELandscapeMirrored ) &&
+        else if ( iLandscape &&
                 aKeyEvent.iScanCode == EStdKeyDownArrow &&
                 iConfiguration->PortalButtonCount() > 1 )
             {
-            // upper portal -> down -> lower portal
+            // upper portal -> down -> lower portal (landscape)
             if ( aType == EEventKey )
                 SetFocusToPortalButton( 1 );
             keyResponse = EKeyWasConsumed;
@@ -518,52 +543,60 @@
         // ------------------------------------
         // focus is in the SECOND PORTAL BUTTON
         // ------------------------------------
-        if ( iLayout == EPortrait &&
+        if ( !iLandscape &&
                 aKeyEvent.iScanCode == EStdKeyDownArrow )
             {
-            // right portal -> down -> widget list top
+            // right portal -> down -> widget list top (portrait)
             if ( aType == EEventKey )
                 SetFocusToWidgetList( 0 );
             keyResponse = EKeyWasConsumed;
             }
-        else if ( iLayout == EPortrait &&
+        else if ( !iLandscape &&
                 aKeyEvent.iScanCode == EStdKeyUpArrow )
             {
-            // right portal -> up -> widget list bottom
+            // right portal -> up -> widget list bottom (portrait)
             if ( aType == EEventKey )
                 SetFocusToWidgetList( iWidgetsList->Model()->NumberOfItems()-1 );
             keyResponse = EKeyWasConsumed;
             }
-        else if ( iLayout == EPortrait &&
+        else if ( !iLandscape && !iMirrored &&
+                aKeyEvent.iScanCode == EStdKeyLeftArrow &&
+                iConfiguration->PortalButtonCount() > 1 )
+            {
+            // right portal -> left -> left portal (portrait normal)
+            if ( aType == EEventKey )
+                SetFocusToPortalButton( 0 );
+            keyResponse = EKeyWasConsumed;
+            }
+        else if ( !iLandscape && iMirrored &&
                 aKeyEvent.iScanCode == EStdKeyRightArrow &&
                 iConfiguration->PortalButtonCount() > 1 )
             {
-            // right portal -> right -> left portal
+            // left portal -> right -> right portal (portrait mirrored)
             if ( aType == EEventKey )
                 SetFocusToPortalButton( 0 );
             keyResponse = EKeyWasConsumed;
             }
-        else if ( iLayout == ELandscape &&
+        else if ( iLandscape && !iMirrored &&
                 aKeyEvent.iScanCode == EStdKeyLeftArrow )
             {
-            // lower portal -> left -> widget list
+            // lower portal -> left -> widget list (landscape normal)
             if ( aType == EEventKey )
                 SetFocusToWidgetList();
             keyResponse = EKeyWasConsumed;
             }
-        else if ( iLayout == ELandscapeMirrored &&
+        else if ( iLandscape && iMirrored &&
                 aKeyEvent.iScanCode == EStdKeyRightArrow )
             {
-            // lower portal -> right -> widget list (mirrored)
+            // lower portal -> right -> widget list (landscape mirrored)
             if ( aType == EEventKey )
                 SetFocusToWidgetList();
             keyResponse = EKeyWasConsumed;
             }
-        else if ( ( iLayout == ELandscape ||
-                iLayout == ELandscapeMirrored ) &&
+        else if ( iLandscape &&
                 aKeyEvent.iScanCode == EStdKeyUpArrow )
             {
-            // lower portal -> up -> upper portal
+            // lower portal -> up -> upper portal (landscape)
             if ( aType == EEventKey )
                 SetFocusToPortalButton( 0 );
             keyResponse = EKeyWasConsumed;
@@ -705,16 +738,14 @@
                     {
                     TInt itemIndex = iWidgetsList->CurrentListBoxItemIndex();
                     TBool itemPointed = iWidgetsList->View()->XYPosToItemIndex(
-                            aPointerEvent.iParentPosition,
+                            aPointerEvent.iPosition,
                             itemIndex );
-                    if ( itemIndex >= 1 && itemPointed )
+                    if ( itemIndex >= 0 && itemPointed )
                         {
-                        iWidgetsList->SetCurrentItemIndex( itemIndex - 1 );
+                        iWidgetsList->SetCurrentItemIndex( itemIndex );
                         }
                     }
-
-	            // Set focus to the control that was clicked
-	            control->SetFocus( ETrue );
+	            
 	            // remove focus from ALL other child controls.
 	            CCoeControlArray::TCursor cursor = Components().Begin();
 	            CCoeControl* c;
@@ -723,6 +754,10 @@
 	                if ( c != control && c->IsFocused() ) c->SetFocus( EFalse );
 	                cursor.Next();
 	                }
+	            
+	            // Set focus to the control that was clicked
+	            control->SetFocus( ETrue );
+	                            
 	            // update focus mode accordingly
 	            UpdateFocusMode();
 	            // repaint
@@ -867,15 +902,6 @@
     }
 
 // ---------------------------------------------------------
-// CWmMainContainer::WmPlugin
-// ---------------------------------------------------------
-//
-CWmPlugin& CWmMainContainer::WmPlugin()
-    {    
-    return iWmPlugin;
-    }
-
-// ---------------------------------------------------------
 // CWmMainContainer::PortalSelected
 // ---------------------------------------------------------
 //
@@ -976,7 +1002,7 @@
 //
 TBool CWmMainContainer::CanDoDetails()
     {
-    return WidgetSelected();
+    return ( WidgetSelected() && iWidgetsList->WidgetData() );
     }
 
 // ---------------------------------------------------------
@@ -1257,10 +1283,17 @@
 void CWmMainContainer::HandleListBoxEventL(
         CEikListBox* /*aListBox*/, TListBoxEvent aEventType )
     {
-    if ( !iClosingDown && ( aEventType == EEventEnterKeyPressed ||
-            aEventType == EEventItemSingleClicked ) )
+    if ( aEventType == EEventEnterKeyPressed ||
+        aEventType == EEventItemSingleClicked )
         {
-        AddWidgetToHomeScreenL();
+        if ( iFindPaneIsVisible )
+            {
+            DeactivateFindPaneL();
+            }
+        else if ( !iClosingDown )
+            {
+            AddWidgetToHomeScreenL();
+            }
         }
     }
 
--- a/idlehomescreen/widgetmanager/src/wmplugin.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ b/idlehomescreen/widgetmanager/src/wmplugin.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -20,6 +20,8 @@
 #include <bautils.h>
 #include <coemain.h>
 #include <aknViewAppUi.h>
+#include <eikappui.h>
+#include <eikapp.h>
 #include <e32property.h>
 #include <activeidle2domainpskeys.h>
 
@@ -52,30 +54,47 @@
 CWmPlugin::~CWmPlugin()
     {
     iPostponedCommand = ENone;
+
+    // delete WM UI resources
     if ( iViewAppUi )
         {
         if ( iWmMainContainer && IsActive() )
             {
+            // WM is showing. Hide first!
             iWmMainContainer->SetClosingDown( ETrue );
             TRAPD( err, iViewAppUi->ActivateLocalViewL(
                             iPreviousViewUid.iViewUid ); );
             if ( KErrNone == err )
                 {
+                // wait until previous view is switched on top
+                // then continue destruction.
                 iWait->Start();
-                // remove view from appui
-                iViewAppUi->RemoveView( 
-                        TUid::Uid( EWmMainContainerViewId ) );
                 }
             else
                 {
-                TRAP_IGNORE( iViewAppUi->DeactivateActiveViewL(); );
-                iViewAppUi->RemoveFromViewStack( 
-                        *iWmMainView, iWmMainContainer );
-                delete iWmMainContainer;
-                iWmMainContainer = NULL;
+                // try to activate default view
+                TVwsViewId viewId;
+                if ( iViewAppUi->GetDefaultViewId( viewId ) != KErrNone )
+                    {
+                    viewId.iAppUid = iViewAppUi->Application()->AppDllUid();
+                    viewId.iViewUid = TUid::Uid( 1 );
+                    }
+                
+                TRAPD( err, iViewAppUi->ActivateLocalViewL( viewId.iViewUid ); );
+                if ( KErrNone == err )
+                    {
+                    // wait until previous view is switched on top
+                    // then continue destruction.
+                    iWait->Start();
+                    }
                 }
             }
-        }    
+        // remove view from appui (also deletes it)
+        iViewAppUi->RemoveView( 
+                TUid::Uid( EWmMainContainerViewId ) );
+        }
+
+    // delete other members
     delete iResourceLoader;
     delete iEffectManager;
     delete iPostponedContent;
@@ -98,7 +117,6 @@
 void CWmPlugin::ConstructL()
     {
     iWmMainContainer = NULL;
-    iWmMainView = NULL;
 
     // store static view app ui
     CEikonEnv* eikonEnv = CEikonEnv::Static();
@@ -120,7 +138,6 @@
     CleanupStack::PushL( mainView );
 	iViewAppUi->AddViewL( mainView );	
 	CleanupStack::Pop( mainView );
-	iWmMainView = mainView;
     }
 
 // ---------------------------------------------------------
--- a/idlehomescreen/widgetmanager/src/wmportalbutton.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ b/idlehomescreen/widgetmanager/src/wmportalbutton.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -111,12 +111,6 @@
         {
         User::Leave( KErrArgument );
         }
-    else if ( iPortalButtonIndex != 0 )
-        {
-        // operator button not supported until layout available.
-        User::Leave( KErrNotSupported );
-        }
-
     SetContainerWindowL( *aParent );
     
     // Obtain pointer to main container.
@@ -208,7 +202,7 @@
 // Runs WIDGET method: (launches given widget with parameters)
 // ---------------------------------------------------------------------------
 //
-void TryRunWidgetL( const TDesC& aParam, const TDesC& aBundleId )
+void TryRunWidgetL( const TDesC& aBundleId, const TDesC& aParam )
     {
     RApaLsSession session;
     User::LeaveIfError( session.Connect() );
@@ -240,22 +234,34 @@
     }
 
 // ---------------------------------------------------------------------------
+// Runs APPLICATION method: (launches given application with parameters)
+// ---------------------------------------------------------------------------
+//
+void TryRunApplicationL( const TDesC& /*aApplication*/, const TDesC& /*aParam*/ )
+    {
+    // This method has not been implemented
+    User::Leave( KErrNotSupported );
+    }
+
+// ---------------------------------------------------------------------------
 // Tries to open a portal with given method and parameters.
 // this method may be called twice on a portal button, if a primary
 // method fails.
 // ---------------------------------------------------------------------------
 //
 void TryOpenPortalL(
-        CWmConfiguration::TMethod aMethod, const TDesC& aParam,
-        const TDesC& aBundleId )
+        CWmConfiguration::TMethod aMethod, const TDesC& aService,
+        const TDesC& aParam )
     {
     // open portal according to the method.
     if ( aMethod == CWmConfiguration::EHttp )
         { TryRunHttpL( aParam ); }
     else if ( aMethod == CWmConfiguration::EWidget )
-        { TryRunWidgetL( aParam, aBundleId ); }
+        { TryRunWidgetL( aService, aParam ); }
+    else if ( aMethod == CWmConfiguration::EApplication )
+        { TryRunApplicationL( aService, aParam ); }
     else
-        { /* do nothing */ }
+        { User::Leave( KErrNotSupported ); }
     }
 
 // ---------------------------------------------------------------------------
@@ -270,15 +276,15 @@
     TRAPD( err,
         TryOpenPortalL(
             aConfiguration.PortalButtonPrimaryMethod( aPortalIndex ),
-            aConfiguration.PortalButtonPrimaryParams( aPortalIndex ),
-            aConfiguration.PortalButtonBundleId( aPortalIndex ) ); );
+            aConfiguration.PortalButtonPrimaryService( aPortalIndex ),
+            aConfiguration.PortalButtonPrimaryParams( aPortalIndex ) ); );
     if ( err != KErrNone )
         {
         // if secondary method fails, leave will be propagated.
         TryOpenPortalL(
             aConfiguration.PortalButtonSecondaryMethod( aPortalIndex ),
-            aConfiguration.PortalButtonSecondaryParams( aPortalIndex ),
-            aConfiguration.PortalButtonBundleId( aPortalIndex ) );
+            aConfiguration.PortalButtonSecondaryService( aPortalIndex ),
+            aConfiguration.PortalButtonSecondaryParams( aPortalIndex ) );
         }
     }
 
@@ -429,18 +435,13 @@
         {
         TBool landscape = Layout_Meta_Data::IsLandscapeOrientation();
         
-        
         // draw image if one exists
         if ( iButtonIcon && iButtonIconMask )
             {
             TAknLayoutRect imageLayout;
-            // todo: 2-button layout
-            if ( iWmMainContainer->Configuration().PortalButtonCount() == 1 )
-                {
-                imageLayout.LayoutRect( rect,
-                        AknLayoutScalable_Apps::wgtman_btn_pane_g1(
-                                landscape ? 1 : 0).LayoutLine() );
-                }
+            imageLayout.LayoutRect( rect,
+                    AknLayoutScalable_Apps::wgtman_btn_pane_g1(
+                            landscape ? 1 : 0).LayoutLine() );
             imageLayout.DrawImage( gc, iButtonIcon, iButtonIconMask );
             }
         
@@ -448,12 +449,8 @@
         if ( !landscape )
             {
             TAknTextComponentLayout leftLayout;
-            // todo: 2-button layout
-            if ( iWmMainContainer->Configuration().PortalButtonCount() == 1 )
-                {
-                leftLayout = AknLayoutScalable_Apps::wgtman_btn_pane_t1( 
-                                                    landscape ? 1 : 0  );
-                }
+            leftLayout = AknLayoutScalable_Apps::wgtman_btn_pane_t1( 
+                                                landscape ? 1 : 0  );
             DrawText( gc, state->Text(), leftLayout, 1 );
             }
         }
--- a/idlehomescreen/widgetmanager/src/wmresourceloader.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ b/idlehomescreen/widgetmanager/src/wmresourceloader.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -21,9 +21,6 @@
 #include <eikappui.h>
 #include <aknapp.h>
 #include <bautils.h>
-#include <gdi.h>
-#include <aknbutton.h>
-#include <AknIconUtils.h>
 #include <StringLoader.h>
 #include <aknnotewrappers.h>
 #include <widgetmanagerview.rsg>
@@ -33,8 +30,8 @@
 // CONSTANTS
 _LIT( KZdrive, "Z:" );
 _LIT( KRelativeMifPath, "\\resource\\apps\\widgetmanager.mif" );
-_LIT( KRelativeResourcePathWithWildcard, "\\resource\\widgetmanagerview.r*" );
-_LIT( KRelativeResourcePath, "\\resource\\widgetmanagerview.rsc" );
+_LIT( KRelativeResourcePathWithWildcard, "\\resource\\apps\\widgetmanagerview.r*" );
+_LIT( KRelativeResourcePath, "\\resource\\apps\\widgetmanagerview.rsc" );
 
 // ---------------------------------------------------------
 // CWmResourceLoader::NewL
@@ -163,19 +160,6 @@
     }
 
 // ---------------------------------------------------------
-// CWmResourceLoader::LoadButtonL
-// ---------------------------------------------------------
-void CWmResourceLoader::LoadButtonL(
-        CAknButton& aResource,
-        TInt aResourceId )
-    {
-    TResourceReader reader;
-    iEnv.CreateResourceReaderLC( reader, aResourceId );
-    aResource.ConstructFromResourceL( reader );
-    CleanupStack::PopAndDestroy(); // reader
-    }
-
-// ---------------------------------------------------------
 // LoadStringLC
 // loads a string from resource. If an additional string is
 // given (the length is greater than zero) uses a different
--- a/idlehomescreen/xmluicontroller/inc/aixmluiconstants.h	Fri Jan 22 09:35:14 2010 +0200
+++ b/idlehomescreen/xmluicontroller/inc/aixmluiconstants.h	Tue Jan 26 11:48:23 2010 +0200
@@ -111,6 +111,7 @@
             _LIT8( KText, "text" );
             _LIT8( KConfiguration, "configuration" );
             _LIT8( KNewsTicker, "newsticker" );            
+            _LIT8( KAnimation, "animation" ); 
             }
         
          }   // End of namespace xml
--- a/idlehomescreen/xmluicontroller/inc/contentrenderer.h	Fri Jan 22 09:35:14 2010 +0200
+++ b/idlehomescreen/xmluicontroller/inc/contentrenderer.h	Tue Jan 26 11:48:23 2010 +0200
@@ -22,6 +22,7 @@
 #include <e32base.h>
 #include <e32hashtab.h>
 #include "xnnewsticker.h"
+#include "xnproperty.h"
 #include "aicontentobserver.h"
 
 class TXnUiEngineAppIf;
@@ -124,7 +125,21 @@
     TAny* Extension( TUid aUid );
     
     TBool RequiresSubscription( const TAiPublisherInfo& aPublisherInfo ) const;
-	        
+    
+    TInt SetProperty(MAiPropertyExtension& aPlugin,
+            const TDesC8& aElementId,
+            const TDesC8& aPropertyName,
+            const TDesC8& aPropertyValue );
+       
+    TInt SetProperty(MAiPropertyExtension& aPlugin,
+            const TDesC8& aElementId,
+            const TDesC8& aPropertyName,
+            const TDesC8& aPropertyValue,  
+            MAiContentObserver::TValueType aValueType);  
+    
+    CXnDomPropertyValue::TPrimitiveValueType 
+        DomPropertyValueType(MAiContentObserver::TValueType aValueType);
+
 private:
 
     CContentRenderer( CAppUi& aAppUi );
@@ -204,6 +219,12 @@
     
     void RegisterNewstickerCallbackInterfaceL( CXnNodeAppIf& aTarget );
     
+    TInt SetPropertyL(MAiPropertyExtension& aPlugin,
+               const TDesC8& aElementId,
+               const TDesC8& aPropertyName,
+               const TDesC8& aPropertyValue,  
+               MAiContentObserver::TValueType aValueType);
+
 // From XnNewstickerInterface::MXnNewstickerCallbackInterface    
 
     void TitleScrolled(TInt aTitleIndex);
--- a/idlehomescreen/xmluicontroller/src/contentrenderer.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ b/idlehomescreen/xmluicontroller/src/contentrenderer.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -674,6 +674,114 @@
     return ETrue;
     }
 
+TInt CContentRenderer::SetProperty( MAiPropertyExtension& aPlugin,
+        const TDesC8& aElementId,
+        const TDesC8& aPropertyName,
+        const TDesC8& aPropertyValue ) 
+    {
+   return ( SetProperty( aPlugin, aElementId, 
+               aPropertyName, aPropertyValue,
+               MAiContentObserver::EValueString ) );
+    }
+
+TInt CContentRenderer::SetProperty( MAiPropertyExtension& aPlugin,
+        const TDesC8& aElementId,
+        const TDesC8& aPropertyName,
+        const TDesC8& aPropertyValue,
+        MAiContentObserver::TValueType aValueType) 
+    {
+    TInt error( KErrNone );
+    TInt retval( KErrNone );
+
+    TRAP( error, retval = SetPropertyL( aPlugin, aElementId, aPropertyName,
+            aPropertyValue, aValueType ) );
+    
+    if( !error && retval )
+     {
+     error = retval;
+     }
+    
+    return error;
+    }
+
+TInt CContentRenderer::SetPropertyL( MAiPropertyExtension& aPlugin,
+        const TDesC8& aElementId,
+        const TDesC8& aPropertyName,
+        const TDesC8& aPropertyValue,
+        MAiContentObserver::TValueType aValueType) 
+    {
+    TInt err = KErrNone;
+    // Find node
+    CXnNodeAppIf* targetNode = FindNodeByIdL( aElementId, aPlugin.PublisherInfoL()->iNamespace );
+    if ( targetNode )
+       {
+       CXnDomStringPool& sp( targetNode->UiEngineL()->StringPool() );
+              
+       CXnProperty* prop = CXnProperty::NewL( 
+               aPropertyName,
+               aPropertyValue,
+               DomPropertyValueType(aValueType), sp );
+                      
+       CleanupStack::PushL( prop );
+    
+       targetNode->SetPropertyL( prop );
+      
+       CleanupStack::Pop( prop );
+       }
+    else
+       {
+       err = KErrNotFound;
+       }
+    return err;
+    }
+
+
+CXnDomPropertyValue::TPrimitiveValueType 
+    CContentRenderer::DomPropertyValueType(
+            MAiContentObserver::TValueType aValueType)
+    {
+    CXnDomPropertyValue::TPrimitiveValueType type = 
+            CXnDomPropertyValue::EUnknown;
+    switch ( aValueType )
+        {
+        case MAiContentObserver::EValueNumber :
+            {
+            type = CXnDomPropertyValue::ENumber;
+            }
+            break;
+        case MAiContentObserver::EValuePercentage :
+            {
+            type = CXnDomPropertyValue::EPercentage;
+            }
+            break;
+        case MAiContentObserver::EValuePx :
+            {
+            type = CXnDomPropertyValue::EPx;
+            }
+            break;
+        case MAiContentObserver::EValueString :
+            {
+            type = CXnDomPropertyValue::EString;
+            }
+            break;
+        case MAiContentObserver::EValueRgbColor :
+            {
+            type = CXnDomPropertyValue::ERgbColor;
+            }
+            break;
+        case MAiContentObserver::EValueUnitValue :
+            {
+            type = CXnDomPropertyValue::EUnitValue;
+            }
+            break;
+        default:
+            {
+            type = CXnDomPropertyValue::EUnknown;
+            }
+        }
+    return type;
+    }
+
 void CContentRenderer::DoStartTransactionL( TInt aTxId )
     {
     MTransaction* tr = iFactory->CreateTransactionL( aTxId );
--- a/idlehomescreen/xmluicontroller/src/xmluicontroller.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ b/idlehomescreen/xmluicontroller/src/xmluicontroller.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -637,7 +637,8 @@
             // Get the content model and configuration for the supported elements
             else if( nodeType == AiUiDef::xml::element::KImage ||
                      nodeType == AiUiDef::xml::element::KText ||
-                     nodeType == AiUiDef::xml::element::KNewsTicker )
+                     nodeType == AiUiDef::xml::element::KNewsTicker ||
+                     nodeType == AiUiDef::xml::element::KAnimation )
                 {
                 // Is created in GetContenItem and used in GetConfigurationsL
                 HBufC* confOwner( NULL );
--- a/idlehomescreen/xmluirendering/ecomelement/xndomvisitor/inc/xnliteral.h	Fri Jan 22 09:35:14 2010 +0200
+++ b/idlehomescreen/xmluirendering/ecomelement/xndomvisitor/inc/xnliteral.h	Tue Jan 26 11:48:23 2010 +0200
@@ -62,6 +62,7 @@
 _STLIT8(KEditor,      "editor");
 _STLIT8(KMarquee,	"marquee");
 _STLIT8(KNewsticker, "newsticker");
+_STLIT8(KAnimation,  "animation");
 _STLIT8(KTooltip,	"tooltip");
 //XHTML
 _STLIT8(KObject,	"object");
--- a/idlehomescreen/xmluirendering/ecomelement/xndomvisitor/src/xndomvisitor.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ b/idlehomescreen/xmluirendering/ecomelement/xndomvisitor/src/xndomvisitor.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -71,6 +71,7 @@
         { (const void*)&KEditor,            &SetElementWithTextPropertiesL, EEmpty},
 	    { (const void*)&KMarquee,           &SetElementWithTextPropertiesL, EPCData},
 	    { (const void*)&KNewsticker,        &SetElementWithTextPropertiesL, EPCData},
+	    { (const void*)&KAnimation,         &SetCommonPropertiesL,          EPCData},
 
         { (const void*)&KObject,            NULL,          		            EPCData},
         { (const void*)&KParam,             NULL,          		            EEmpty},
--- a/idlehomescreen/xmluirendering/group/bld.inf	Fri Jan 22 09:35:14 2010 +0200
+++ b/idlehomescreen/xmluirendering/group/bld.inf	Tue Jan 26 11:48:23 2010 +0200
@@ -41,6 +41,7 @@
 #include "../renderingplugins/xnvolumecontrolfactory/group/bld.inf"
 #include "../renderingplugins/xnnewstickerfactory/group/bld.inf"
 #include "../renderingplugins/xntexteditorfactory/group/bld.inf"
+#include "../renderingplugins/xnanimationfactory/group/bld.inf"
 #include "../ecomelement/group/bld.inf"
 
 PRJ_PLATFORMS
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/xmluirendering/renderingplugins/xnanimationfactory/group/bld.inf	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,29 @@
+/*
+* Copyright (c) 2002-2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Building information file
+*
+*/
+
+
+#include <platform_paths.hrh>
+
+PRJ_PLATFORMS
+
+ARMV5 WINSCW
+
+PRJ_EXPORTS
+
+PRJ_MMPFILES
+
+xnanimationfactory.mmp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/xmluirendering/renderingplugins/xnanimationfactory/group/xnanimationfactory.mmp	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,52 @@
+/*
+* Copyright (c) 2002-2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Xuikon Animation plugin.
+*
+*/
+
+
+#include <platform_paths.hrh>
+#include  <platform/mw/aisystemuids.hrh>
+
+TARGET          xn3animationfactory.dll
+TARGETTYPE      PLUGIN
+UID             0x10009d8d AI3_UID_RENDERING_PLUGIN_ANIMATIONFACTORY
+
+CAPABILITY      CAP_ECOM_PLUGIN
+VENDORID        VID_DEFAULT
+
+SOURCEPATH      ../src 
+SOURCE          xnanimationfactory.cpp
+SOURCE          xnanimation.cpp
+SOURCE          xnanimationadapter.cpp 
+
+USERINCLUDE     ../inc
+USERINCLUDE     ../../../inc
+USERINCLUDE     ../../../../inc
+APP_LAYER_SYSTEMINCLUDE
+
+LIBRARY	        euser.lib  
+LIBRARY         cone.lib
+LIBRARY	        xn3layoutengine.lib
+LIBRARY	        xn3utils.lib
+LIBRARY         avkon.lib
+LIBRARY         aknskins.lib 
+
+LANG            SC
+
+START RESOURCE  xn3animationfactory.rss
+#ifdef SYMBIAN_SECURE_ECOM
+TARGET xn3animationfactory.rsc
+#endif
+END
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/xmluirendering/renderingplugins/xnanimationfactory/inc/xnanimationadapter.h	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,137 @@
+/*
+* Copyright (c) 2005-2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Implements Xuikon animation component.
+*
+*/
+
+
+
+#ifndef _XNANIMATIONAPADAPTER_H
+#define _XNANIMATIONAPADAPTER_H
+
+//  INCLUDES
+#include "xncontroladapter.h"
+
+
+// FORWARD DECLARATIONS
+class CXnNodePluginIf;
+class CAknBitmapAnimation;
+class CXnAnimationControl;
+class CPeriodic;
+
+// CLASS DECLARATION
+/**
+*  @ingroup group_xnbitmapfactory
+*  @lib xn3bitmapfactory.dll
+*  @since Series 60 3.1
+*/
+class CXnAnimationAdapter : public CXnControlAdapter
+   {
+    public:
+        /**
+         * 2 phase construction.
+         */
+        static CXnAnimationAdapter* NewL(CXnNodePluginIf& aNode);
+    
+        /**
+         * Destructor.
+         */
+        virtual ~CXnAnimationAdapter();
+    
+    public: // From Base classes 
+        /**
+        * From CXnControlAdapter Handles the property changes.
+        * @since Series 60 3.1
+        * @return void.
+        */    
+        void DoHandlePropertyChangeL(CXnProperty* aProperty = NULL);
+        
+    protected:
+        /**
+         * From CCoeControl.
+         * Draws the control.
+         * 
+         * @param aRect TRect to draw
+         */
+        void Draw(const TRect& aRect) const;
+        
+        /**
+        * From CCoeControl.
+        * Control   visual state.
+        * 
+        * @param aVisible visibility (ETrue/EFalse)
+        */
+        void MakeVisible( TBool aVisible );
+        
+    private:
+        /**
+        * Constructor 
+        * 
+        * @param aNode plugin node
+        */
+        CXnAnimationAdapter(CXnNodePluginIf& aNode);
+        
+        /**
+        * 2nd phase constructor 
+        * 
+        * @param aNode plugin node
+        */
+        void ConstructL(CXnNodePluginIf& aNode);
+    
+        /**
+        * Periodic timer call back  
+        * 
+        * @param aAny pointer reference
+        */
+        static TInt TimerCallBack(TAny* aAny);
+        
+        /**
+        * Update the next image for animation  
+        * 
+        */
+        void Update();
+    
+        /**
+        * Starts the animation   
+        * 
+        */
+        void StartAnimation();
+        
+        /**
+        * Stops the animation   
+        * 
+        */
+        void StopAnimation();
+        
+    private: // Data
+        
+        // UI node, not owned
+        CXnNodePluginIf& iNode;
+    
+        // display on(block) or off(none)
+        TBool iDisplay;
+        
+        // Whether the animation started or not
+        TBool iAnimationSarted;
+       
+        // Image Skind Id
+        TAknsItemID iSkinId;
+       
+        // Timer for animation, owned  
+        CPeriodic* iPeriodicTimer;
+   };
+
+#endif      // _XNANIMATIONAPADAPTER_H
+            
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/xmluirendering/renderingplugins/xnanimationfactory/inc/xnanimationfactory.h	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,94 @@
+/*
+* Copyright (c) 2002-2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Factory for creating CXnAnimation -component
+*
+*/
+
+#ifndef _XNANIMATIONFACTORY_H
+#define _XNANIMATIONFACTORY_H
+
+//  INCLUDES
+#include "xncomponentfactory.h"
+#include <e32base.h>
+#include <e32std.h>
+
+#include <ecom/ecom.h>
+#include <ecom/implementationproxy.h>
+
+// FORWARD DECLARATIONS
+class CXnComponent;
+class CXnMap;
+class CXnType;
+
+// CLASS DECLARATION
+/**
+*  @ingroup group_xnanimationfactory
+*  Layout Area UI factory interface for creating UI representations of the layout areas.
+*  This class is wrapper for containing CAnimation
+*
+*  @lib xn3animationfactory.dll
+*  @since Series 60 3.1
+*/
+// inheritance order must be this, despite codescanner warnings
+class CXnAnimationFactory : public MXnComponentFactory, public CBase
+    {
+    public:  // Constructors and destructor
+        
+        /**
+        * Two-phased constructor.
+        */
+        static CXnAnimationFactory* NewL();
+        
+        /**
+        * Destructor.
+        */
+        virtual ~CXnAnimationFactory();
+
+    public: // Functions from base classes
+
+		/**
+		* @see MXnComponentFactory.h
+		*/
+        TXnComponentFactoryResponse MakeXnComponentL( 
+                                                CXnNodePluginIf& aNode,
+                                                CXnComponent*& aTargetComponent
+        										);
+
+		/**
+		* @see MXnComponentFactory.h
+		*/
+        CXnControlAdapter* MakeXnControlAdapterL( 
+                                                CXnNodePluginIf& aNode,
+                                                CXnControlAdapter* aParent = NULL
+        										);
+
+    private:
+
+        /**
+        * 2nd phase constructor. 
+        */
+        void ConstructL();
+
+        /**
+        * C++ default constructor. 
+        */
+        CXnAnimationFactory();
+    };
+    
+// Exported factory function required by ECOM-framework
+IMPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount);
+
+#endif      // _XNANIMATIONFACTORY_H
+            
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/xmluirendering/renderingplugins/xnanimationfactory/src/xn3animationfactory.rss	Tue Jan 26 11:48:23 2010 +0200
@@ -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:
+*
+*/
+// 102073FE.RSS
+//
+#include <ecom/registryinfo.rh>
+#include <platform/mw/aisystemuids.hrh>
+
+RESOURCE REGISTRY_INFO theInfo
+{
+dll_uid = AI3_UID_RENDERING_PLUGIN_ANIMATIONFACTORY;
+interfaces =
+    {
+    INTERFACE_INFO
+        {
+        interface_uid = AI3_RENDERING_PLUGIN_ECOM_FACTORY_UID;
+        implementations =
+            {
+            IMPLEMENTATION_INFO
+                {
+                implementation_uid = AI3_UID_RENDERING_PLUGIN_ANIMATIONFACTORY_IMPLEMENTATION;
+                version_no = 1;
+                display_name = "XnAnimation";
+                default_data = "animation";
+                opaque_data = "";
+                }
+            };
+        }
+    };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/xmluirendering/renderingplugins/xnanimationfactory/src/xnanimation.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,79 @@
+/*
+* Copyright (c) 2002-2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Xuikon Animation component.
+*
+*/
+
+
+
+#include "xnanimation.h"
+#include "xnanimationadapter.h"
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CXnAnimation::NewL
+// Symbian static 1st phase constructor
+// -----------------------------------------------------------------------------
+//
+CXnAnimation* CXnAnimation::NewL()
+    {
+	CXnAnimation* self = new( ELeave ) CXnAnimation;
+
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop();
+
+    return self;	
+    }
+
+// -----------------------------------------------------------------------------
+// CXnAnimation::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CXnAnimation::ConstructL()
+    {
+    }
+    
+// -----------------------------------------------------------------------------
+// CXnAnimation::CXnAnimation
+// C++ default constructor
+// -----------------------------------------------------------------------------
+//
+CXnAnimation::CXnAnimation()
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CXnAnimation::~CXnAnimation
+// C++ destructor
+// -----------------------------------------------------------------------------
+//
+CXnAnimation::~CXnAnimation()
+    {
+    }
+
+// ---------------------------------------------------------
+// CXnAnimation::MakeInterfaceL
+// ---------------------------------------------------------
+XnComponentInterface::MXnComponentInterface* CXnAnimation::MakeInterfaceL(const TDesC8& aType)
+    {
+    if (aType != XnAnimationInterface::KType)
+        {
+        return NULL;
+        }
+    XnAnimationInterface::MXnAnimationInterface* animationintr = static_cast<XnAnimationInterface::MXnAnimationInterface*>(this);
+    return animationintr;
+    }           
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/xmluirendering/renderingplugins/xnanimationfactory/src/xnanimationadapter.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,228 @@
+/*
+* Copyright (c) 2002-2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Xuikon Bitmap Plugin.
+*
+*/
+#include <AknsUtils.h>
+#include <aknsdrawutils.h>
+#include <aknsconstants.h>
+#include <barsread.h>
+#include "xnnodepluginif.h"
+#include "xndomproperty.h"
+#include "xnproperty.h"
+#include "xncontroladapter.h"
+
+#include "xnanimationadapter.h"
+
+const TInt KPeriodicTimerInterval5Sec(100000); // 0.1 sec
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CXnAnimationAdapter::NewL
+// Symbian static 1st phase constructor
+// -----------------------------------------------------------------------------
+//
+CXnAnimationAdapter* CXnAnimationAdapter::NewL(CXnNodePluginIf& aNode)
+    {
+	CXnAnimationAdapter* self = new( ELeave ) CXnAnimationAdapter( aNode );
+    
+    CleanupStack::PushL( self );
+    self->ConstructL( aNode );
+    CleanupStack::Pop();
+
+    return self;	
+    }
+
+// -----------------------------------------------------------------------------
+// CXnAnimationAdapter::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CXnAnimationAdapter::ConstructL(CXnNodePluginIf& aNode)
+    {
+    CXnControlAdapter::ConstructL( aNode );
+    iSkinId = KAknsIIDNone;
+    iAnimationSarted = EFalse;
+    }
+    
+// -----------------------------------------------------------------------------
+// CXnAnimationAdapter::CXnAnimationAdapter
+// C++ default constructor
+// -----------------------------------------------------------------------------
+//
+CXnAnimationAdapter::CXnAnimationAdapter(CXnNodePluginIf& aNode) : iNode( aNode )    
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CXnAnimationAdapter::~CXnAnimationAdapter
+// C++ destructor
+// -----------------------------------------------------------------------------
+//
+CXnAnimationAdapter::~CXnAnimationAdapter()
+    {
+    if (iPeriodicTimer)
+        {
+        iPeriodicTimer->Cancel();
+        delete iPeriodicTimer;
+        iPeriodicTimer = NULL;
+        }
+    }
+
+
+// -----------------------------------------------------------------------------
+// CXnAnimationAdapter::Draw
+// -----------------------------------------------------------------------------
+//
+void CXnAnimationAdapter::Draw(const TRect& aRect) const
+    {
+    CXnControlAdapter::Draw( aRect );    
+    AknsDrawUtils::DrawCachedImage( AknsUtils::SkinInstance(),
+               SystemGc(), aRect, iSkinId  );
+    }
+
+// -----------------------------------------------------------------------------
+// CXnAnimationAdapter::HandlePropertyChangeL
+// -----------------------------------------------------------------------------
+//
+void CXnAnimationAdapter::DoHandlePropertyChangeL( CXnProperty* aProperty )
+    {
+    if( aProperty )
+        {
+        const TDesC8& name( aProperty->Property()->Name( ) );
+        
+        if( name == XnPropertyNames::style::common::KDisplay )
+           {
+           const TDesC8& display( aProperty->StringValue() );
+ 
+           if( display == XnPropertyNames::style::common::display::KBlock )
+               {
+               iDisplay = ETrue; 
+               StartAnimation();
+               }    
+           else
+               {
+               iDisplay = EFalse;
+               StopAnimation();
+               }
+           }
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNewstickerAdapter::MakeVisible()
+// -----------------------------------------------------------------------------
+//
+void CXnAnimationAdapter::MakeVisible( TBool aVisible )
+    {
+    if( aVisible )
+        {
+        StartAnimation();
+        }
+    else
+        {
+        StopAnimation();
+        }
+    CCoeControl::MakeVisible( aVisible );
+    }
+
+// -----------------------------------------------------------------------------
+// CXnAnimationAdapter::Update
+// -----------------------------------------------------------------------------
+//
+void CXnAnimationAdapter::Update()
+    {
+    if (iAnimationSarted )
+        {
+        switch(iSkinId.iMinor )
+            {
+            case EAknsMinorGenericQgnHomeRefreshing1:
+                {
+                iSkinId.Set(KAknsIIDQgnHomeRefreshing2);
+                }
+                break;
+            case EAknsMinorGenericQgnHomeRefreshing2:
+                {
+                iSkinId.Set(KAknsIIDQgnHomeRefreshing3);
+                }
+                break;
+            case EAknsMinorGenericQgnHomeRefreshing3:
+                {
+                iSkinId.Set(KAknsIIDQgnHomeRefreshing4);
+                }
+                break;                
+            case EAknsMinorGenericQgnHomeRefreshing4:
+                {
+                iSkinId.Set(KAknsIIDQgnHomeRefreshing1);
+                }
+                break;
+            default :
+                break;
+            };
+        DrawNow();
+        }
+    }
+
+// ----------------------------------------------------------------------------
+// CXnAnimationAdapter::PeriodicTimerCallBack(TAny* aAny)
+// The call back function.
+// ----------------------------------------------------------------------------
+//
+TInt CXnAnimationAdapter::TimerCallBack(TAny* aAny)
+    {
+    CXnAnimationAdapter* self = static_cast<CXnAnimationAdapter*> (aAny);
+
+    // Update widget every 5 seconds
+    self->Update();
+
+    return KErrNone; // Return value ignored by CPeriodic
+    }
+
+// ----------------------------------------------------------------------------
+// CXnAnimationAdapter::StartAnimation()
+// ----------------------------------------------------------------------------
+//
+void CXnAnimationAdapter::StartAnimation()
+    {
+    if ( !iAnimationSarted && iDisplay )
+        {
+       TRAPD(err, iPeriodicTimer = CPeriodic::NewL(CActive::EPriorityIdle) );
+       if ( err == KErrNone )
+           {
+           iPeriodicTimer->Start( KPeriodicTimerInterval5Sec,
+                   KPeriodicTimerInterval5Sec, TCallBack( TimerCallBack, this ) );
+           iSkinId = KAknsIIDQgnHomeRefreshing1;
+           iAnimationSarted = ETrue;
+           }
+        }
+    }
+
+// ----------------------------------------------------------------------------
+// CXnAnimationAdapter::StopAnimation()
+// ----------------------------------------------------------------------------
+//
+void CXnAnimationAdapter::StopAnimation()
+    {
+    if ( iAnimationSarted )
+        {
+        iPeriodicTimer->Cancel();
+        delete iPeriodicTimer;
+        iPeriodicTimer = NULL;
+        iSkinId = KAknsIIDNone;
+        iAnimationSarted = EFalse;
+        }
+    }
+
+// End of File
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/xmluirendering/renderingplugins/xnanimationfactory/src/xnanimationfactory.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,129 @@
+/*
+* Copyright (c) 2002-2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Implementation for factory creating container for Active Idle plugins.
+*
+*/
+
+
+#include <e32base.h>
+#include <coecntrl.h>
+#include <barsread.h>
+
+#include "xntype.h"
+#include "xncomponent.h"
+#include "xnnodepluginif.h"
+#include "xnanimationfactory.h"
+#include "xnanimationadapter.h"
+#include "xnanimation.h"
+#include <aisystemuids.hrh>
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+
+_LIT8(KXnAnimation, "animation");
+// -----------------------------------------------------------------------------
+// CXnAnimationFactory::MakeXnComponentL
+// -----------------------------------------------------------------------------
+//
+
+MXnComponentFactory::TXnComponentFactoryResponse CXnAnimationFactory::MakeXnComponentL( 
+                                        CXnNodePluginIf& aNode,
+                                        CXnComponent*& aTargetComponent
+										)
+    {
+    MXnComponentFactory::TXnComponentFactoryResponse retVal = MXnComponentFactory::EXnFactoryResponseComponentNotSupported;
+    // Check that the given type of a control is parent (or ancestor) of this control
+    if (aNode.Type()->Type() == KXnAnimation)
+        {
+        aTargetComponent = CXnAnimation::NewL();
+        retVal = MXnComponentFactory::EXnFactoryResponseComponentConstructed;
+	    }
+    return retVal;
+    }
+
+// -----------------------------------------------------------------------------
+// CXnAnimationFactory::MakeXnControlAdapterL
+// -----------------------------------------------------------------------------
+//
+
+CXnControlAdapter* CXnAnimationFactory::MakeXnControlAdapterL( 
+                                        CXnNodePluginIf& aNode,
+                                        CXnControlAdapter* /*aParent*/
+										)
+    {
+    return CXnAnimationAdapter::NewL(aNode);
+    }
+
+
+// -----------------------------------------------------------------------------
+// CXnAnimationFactory::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CXnAnimationFactory* CXnAnimationFactory::NewL()
+    {
+    CXnAnimationFactory* self = new( ELeave ) CXnAnimationFactory;
+    
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop();
+
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CXnAnimationFactory::CXnAnimationFactory
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CXnAnimationFactory::CXnAnimationFactory()
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CXnAnimationFactory::~CXnAnimationFactory
+// Destructor.
+// -----------------------------------------------------------------------------
+//
+CXnAnimationFactory::~CXnAnimationFactory()
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CXnAnimationFactory::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CXnAnimationFactory::ConstructL()
+    {
+    }
+
+
+// Define the interface UIDs
+const TImplementationProxy ImplementationTable[] =
+    {
+    #ifdef __EABI__ 
+    	IMPLEMENTATION_PROXY_ENTRY(AI3_UID_RENDERING_PLUGIN_ANIMATIONFACTORY_IMPLEMENTATION, CXnAnimationFactory::NewL)
+    #else
+        {{AI3_UID_RENDERING_PLUGIN_ANIMATIONFACTORY_IMPLEMENTATION}, CXnAnimationFactory::NewL}
+    #endif
+    };
+
+EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount)
+    {
+    aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy);
+
+    return ImplementationTable;
+    }
--- a/idlehomescreen/xmluirendering/rom/ai3xmluirendering.iby	Fri Jan 22 09:35:14 2010 +0200
+++ b/idlehomescreen/xmluirendering/rom/ai3xmluirendering.iby	Tue Jan 26 11:48:23 2010 +0200
@@ -51,6 +51,7 @@
 ECOM_PLUGIN( xn3clockfactory.dll , xn3clockfactory.rsc )
 ECOM_PLUGIN( xn3nppluginfactory.dll , xn3nppluginfactory.rsc )
 ECOM_PLUGIN( xn3texteditorfactory.dll , xn3texteditorfactory.rsc )
+ECOM_PLUGIN( xn3animationfactory.dll , xn3animationfactory.rsc )
 
 #endif // XMLUIRENDERING_IBY
 
--- a/idlehomescreen/xmluirendering/uiengine/inc/xnbackgroundmanager.h	Fri Jan 22 09:35:14 2010 +0200
+++ b/idlehomescreen/xmluirendering/uiengine/inc/xnbackgroundmanager.h	Tue Jan 26 11:48:23 2010 +0200
@@ -2,9 +2,9 @@
 * 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 the License "Symbian Foundation License v1.0"
+* under the terms of "Eclipse Public License v1.0"
 * which accompanies this distribution, and is available
-* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
 *
 * Initial Contributors:
 * Nokia Corporation - initial contribution.
--- a/idlehomescreen/xmluirendering/uiengine/src/xnbackgroundmanager.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnbackgroundmanager.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -2,9 +2,9 @@
 * 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 the License "Symbian Foundation License v1.0"
+* under the terms of "Eclipse Public License v1.0"
 * which accompanies this distribution, and is available
-* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
 *
 * Initial Contributors:
 * Nokia Corporation - initial contribution.
--- a/idlehomescreen/xmluirendering/uiengine/src/xneditmode.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ b/idlehomescreen/xmluirendering/uiengine/src/xneditmode.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -849,4 +849,17 @@
         }
     }
 
+// -----------------------------------------------------------------------------
+// CXnEditMode::StopDraggingL()
+// -----------------------------------------------------------------------------
+//
+void CXnEditMode::StopDraggingL()
+    {
+    if( iState == CXnEditMode::EDragging )
+        {
+        StopDragL();
+        UpdateScreen();
+        }
+    }
+
 // End of file
--- a/idlehomescreen/xmluirendering/uiengine/src/xneditor.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ b/idlehomescreen/xmluirendering/uiengine/src/xneditor.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -820,8 +820,16 @@
 
     if( plugin.Removable() )
         {
-        TRAP_IGNORE( iViewManager.UnloadWidgetFromPluginL( plugin ) );
-        }       
+        TRAPD( err, err = iViewManager.UnloadWidgetFromPluginL( plugin ) );
+        
+        if ( err != KErrNone )
+            {
+            HBufC* msg = StringLoader::LoadLC( 
+                    R_QTN_HS_OPERATION_FAILED_NO_DISK );    
+            ShowErrorNoteL( *msg );
+            CleanupStack::PopAndDestroy( msg );
+            }
+        }
     }
 
 // ---------------------------------------------------------------------------
--- a/idlehomescreen/xmluirendering/uiengine/src/xnnodeimpl.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnnodeimpl.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -3161,12 +3161,15 @@
 
     if ( attribute )
         {
+        
         const TDesC8& value( attribute->Value() );
         TLex8 lex( value );
         TInt effect;
         lex.Val( effect );
+        
         aEngine.AppUiAdapter().EffectManager()->BeginFullscreenEffectL(
                 effect, aEngine.ViewManager()->ActiveViewData() );
+        
         }
     }
 
@@ -4321,7 +4324,12 @@
         }
     else if ( nameString == XnPropertyNames::action::event::KRunFullScreenEffect )
         {
-        RunFullScreenEffectL( aEngine, aEventNode );
+        TInt viewCount( aEngine.ViewManager()->ViewAmount() );
+
+        if ( viewCount > KOneView )
+            {
+            RunFullScreenEffectL( aEngine, aEventNode );
+            }
         }
     else if ( nameString == XnPropertyNames::action::event::KActivateNextView )
         {
--- a/idlehomescreen/xmluirendering/uiengine/src/xnuiengineimpl.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnuiengineimpl.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -8678,7 +8678,7 @@
         {
         if ( *itemType == KAddWidget )
             {
-            if ( aPlugin )
+            if ( aPlugin && &aPlugin->Node() )
                 {
                 CXnPluginData& data( viewData.Plugin( &aPlugin->Node() ) );
                 
--- a/idlehomescreen/xmluirendering/uiengine/src/xnviewadapter.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnviewadapter.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -41,6 +41,7 @@
 
 #include "xnviewadapter.h"
 #include "xnmenu.h"
+#include "xneditmode.h"
 
 // Constants
 const TUid KXmlViewUid = { 1 };
@@ -475,7 +476,13 @@
          aStatus == MXnUiStateObserver::EBackground )
         {
         iFlags.Clear( EIsForeground );
-        
+
+        CXnEditMode* editMode = iAppUiAdapter.UiEngine().EditMode();
+        if( editMode )
+            {
+            editMode->StopDraggingL();
+            }
+
         iFocusControl->MakeVisible( EFalse );
         
         TRAP_IGNORE( ChangeControlsStateL( EFalse ) );
--- a/idlehomescreen/xmluirendering/uiengine/src/xnviewmanager.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnviewmanager.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -869,7 +869,7 @@
         }
         
     // Activate view
-    if ( next.Occupied() )
+    if ( next.Occupied() && !next.Active() )
         {            
         iAppUiAdapter.ViewAdapter().ActivateContainerL( next );                
         UpdateWallpaperL( current, next );
@@ -892,7 +892,7 @@
         }
         
     // Activate view
-    if ( prev.Occupied() )
+    if ( prev.Occupied() && !prev.Active() )
         {   
         iAppUiAdapter.ViewAdapter().ActivateContainerL( prev );
         UpdateWallpaperL( current, prev );
--- a/menufw/hierarchynavigator/hnmetadatamodel/inc/hnglobals.h	Fri Jan 22 09:35:14 2010 +0200
+++ b/menufw/hierarchynavigator/hnmetadatamodel/inc/hnglobals.h	Tue Jan 26 11:48:23 2010 +0200
@@ -149,6 +149,7 @@
 _LIT8( KEventElementName8,          "event" );
 _LIT8( KMenuItemElementName8,       "menuitem" );
 _LIT8( KMenuItemSpecificElementName8,       "menuitem_specific" );
+_LIT8( KMenuItemActionElementName8,       "menuitem_action" );
 _LIT8( KLocalizationElementName8,   "localization" );
 _LIT8( KNotifyRequestElementName8,  "notify_request" );
 _LIT8( KMenuButton8,				"button" );
--- a/menufw/hierarchynavigator/hnmetadatamodel/inc/hnmdmenuitem.h	Fri Jan 22 09:35:14 2010 +0200
+++ b/menufw/hierarchynavigator/hnmetadatamodel/inc/hnmdmenuitem.h	Tue Jan 26 11:48:23 2010 +0200
@@ -23,11 +23,11 @@
 #include <e32hashtab.h>
 #include <e32base.h>
 #include <xmlengelement.h> 
+#include <hnmenuitemmodel.h>
 
 struct THnMdCommonPointers;
 class CHnCondition;
 class CLiwGenericParamList;
-class CHnMenuItemModel;
 class CHnConditionInterface;
 
 /**
@@ -42,6 +42,18 @@
 NONSHARABLE_CLASS(CHnMdMenuItem) : public CBase
     {
 public:
+    /**
+     * Checkes if argument descriptor is equal to one of 
+     * menu items elements names.
+     *
+     * @since S60 5.0
+     * @param aNameToCompare name to compare.
+     * @return ETrue if aNameToCompare is equal to one of 
+     *         menu items elements names.
+     */
+    static TBool IsMenuItemElementName(const TDesC8& aNameToCompare);
+    
+public:
 
     /**
      * Two-phase constructor.
@@ -184,10 +196,10 @@
     CHnConditionInterface* iCondition;
     
     /**
-     * Is menu item "item specific".
+     * Is menu item "type".
      */
-    TBool iSpecific;
-
+    CHnMenuItemModel::THnMenuItemType iType;
+    
     };
 
 #endif // C_HNMULMENUITEM_H
--- a/menufw/hierarchynavigator/hnmetadatamodel/src/hnmdmenuitem.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ b/menufw/hierarchynavigator/hnmetadatamodel/src/hnmdmenuitem.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -32,6 +32,17 @@
 // 
 // ---------------------------------------------------------------------------
 //
+TBool CHnMdMenuItem::IsMenuItemElementName( const TDesC8& aNameToCompare )    
+    {
+    return !aNameToCompare.Compare( KMenuItemElementName8 )
+        || !aNameToCompare.Compare( KMenuItemSpecificElementName8 )
+        || !aNameToCompare.Compare( KMenuItemActionElementName8 );
+    }
+
+// ---------------------------------------------------------------------------
+// 
+// ---------------------------------------------------------------------------
+//
 void CHnMdMenuItem::AppendChildItemL( CHnMdMenuItem* aMenuItem )
     {
     iChildren.AppendL( aMenuItem );
@@ -56,7 +67,7 @@
       }
     aMenuModel->SetCommand( iEvent );
     aMenuModel->SetPosition( iPosition );
-    aMenuModel->SetItemSpecific( iSpecific );
+    aMenuModel->SetMenuItemType( iType );
     }
 
 // ---------------------------------------------------------------------------
@@ -67,7 +78,15 @@
 void CHnMdMenuItem::CreatePropertiesL( TXmlEngElement aElement,
                                  THnMdCommonPointers* /* aCmnPtrs */ )
     {
-    iSpecific = !aElement.Name().Compare( KMenuItemSpecificElementName8 );
+    iType = CHnMenuItemModel::EItemApplication;
+    if ( !aElement.Name().Compare( KMenuItemSpecificElementName8 ) )
+    	{
+    	iType = CHnMenuItemModel::EItemSpecific;
+    	}
+    else if ( !aElement.Name().Compare( KMenuItemActionElementName8 ) )
+    	{
+    	iType = CHnMenuItemModel::EItemAction;
+    	}
     
     // name
     HBufC* name = HnConvUtils::Str8ToStrLC(
@@ -112,8 +131,7 @@
     for ( TInt i = 0; i < count; i++ )
         {
         TXmlEngElement child = children.Next();
-        if ( !child.Name().Compare( KMenuItemElementName8 ) 
-        		|| !child.Name().Compare( KMenuItemSpecificElementName8 ) )
+        if ( IsMenuItemElementName( child.Name() ) )
             {
             AppendChildItemL( CHnMdMenuItem::NewL( child, aCmnPtrs ) );
             }
@@ -129,8 +147,7 @@
 void CHnMdMenuItem::ConstructL( TXmlEngElement aElement,
                                 THnMdCommonPointers* aCmnPtrs )
     {
-    if ( !aElement.Name().Compare( KMenuItemElementName8 )
-    		|| !aElement.Name().Compare( KMenuItemSpecificElementName8 ) )
+    if ( IsMenuItemElementName( aElement.Name() ) )
         { // this is an ordinary menu item
         CreatePropertiesL( aElement, aCmnPtrs );
         CreateChildrenL( aElement, aCmnPtrs ); // in case there are subitems
--- a/menufw/hierarchynavigator/hnmetadatamodel/src/hnxmlmodelprovider.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ b/menufw/hierarchynavigator/hnmetadatamodel/src/hnxmlmodelprovider.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -24,6 +24,7 @@
 #include "menudebug.h"
 #include "hnhelper.inl"
 #include "hnmdmodel.h"
+#include "hnmdmenuitem.h"
 
 // ======== MEMBER FUNCTIONS ========
 
@@ -306,8 +307,8 @@
 		TXmlEngElement child = children.Next();
 		TPtrC8 childName = child.Name();
 
-		if (!childName.Compare(KEventName8) || !childName.Compare(
-				KMenuItemName8) ||!childName.Compare( KMenuItemSpecificName8 ) 
+		if (!childName.Compare(KEventName8) 
+				|| CHnMdMenuItem::IsMenuItemElementName( childName )
 				|| !child.Name().Compare(KMenuToolbar8))
 			{
 			ChangeEventNamesToIdsL(child);
@@ -591,8 +592,7 @@
         for( TInt i( 0 ); i < count; i++ )
             {
             TXmlEngElement element = children.Next();
-            if ( !element.Name().Compare( KMenuItemName8 ) ||
-            		!element.Name().Compare( KMenuItemSpecificName8 ) ||
+            if ( CHnMdMenuItem::IsMenuItemElementName( element.Name() ) ||
                     !element.Name().Compare( KMenuButton8 ) )
                 {
                 ChangeEventNamesToIdsL( element );
--- a/menufw/hierarchynavigator/hnpresentationmodel/bwins/hnpresentationmodelu.def	Fri Jan 22 09:35:14 2010 +0200
+++ b/menufw/hierarchynavigator/hnpresentationmodel/bwins/hnpresentationmodelu.def	Tue Jan 26 11:48:23 2010 +0200
@@ -181,8 +181,8 @@
 	?NewLC@CHnAttrImgProvLiwImage@@SAPAV1@AAPAVTLiwVariant@@0@Z @ 180 NONAME ; class CHnAttrImgProvLiwImage * CHnAttrImgProvLiwImage::NewLC(class TLiwVariant * &, class TLiwVariant * &)
 	?GetTemplate@CHnSuiteModel@@QBEABVTDesC8@@XZ @ 181 NONAME ; class TDesC8 const & CHnSuiteModel::GetTemplate(void) const
 	?GetActions@CHnItemModel@@QAEAAV?$RHashMap@HPAV?$CArrayPtr@VCHnActionModel@@@@@@XZ @ 182 NONAME ; class RHashMap<int, class CArrayPtr<class CHnActionModel> *> & CHnItemModel::GetActions(void)
-	?SetItemSpecific@CHnMenuItemModel@@QAEXH@Z @ 183 NONAME ; void CHnMenuItemModel::SetItemSpecific(int)
+	?SetMenuItemType@CHnMenuItemModel@@QAEXW4THnMenuItemType@1@@Z @ 183 NONAME ; void CHnMenuItemModel::SetMenuItemType(enum CHnMenuItemModel::THnMenuItemType)
 	?HasNextSpecific@CHnMenuItemModel@@UAEHXZ @ 184 NONAME ; int CHnMenuItemModel::HasNextSpecific(void)
 	?GetNextSpecific@CHnMenuItemModel@@UAEPAV1@XZ @ 185 NONAME ; class CHnMenuItemModel * CHnMenuItemModel::GetNextSpecific(void)
-	?IsItemSpecific@CHnMenuItemModel@@QAEHXZ @ 186 NONAME ; int CHnMenuItemModel::IsItemSpecific(void)
+	?MenuItemType@CHnMenuItemModel@@QAE?AW4THnMenuItemType@1@XZ @ 186 NONAME ; enum CHnMenuItemModel::THnMenuItemType CHnMenuItemModel::MenuItemType(void)
 
--- a/menufw/hierarchynavigator/hnpresentationmodel/eabi/hnpresentationmodelu.def	Fri Jan 22 09:35:14 2010 +0200
+++ b/menufw/hierarchynavigator/hnpresentationmodel/eabi/hnpresentationmodelu.def	Tue Jan 26 11:48:23 2010 +0200
@@ -194,8 +194,8 @@
 	_ZThn4_N16CHnMenuItemModel7HasNextEv @ 193 NONAME
 	_ZN16CHnMenuItemModel15GetNextSpecificEv @ 194 NONAME
 	_ZN16CHnMenuItemModel15HasNextSpecificEv @ 195 NONAME
-	_ZN16CHnMenuItemModel15SetItemSpecificEi @ 196 NONAME
+	_ZN16CHnMenuItemModel15SetMenuItemTypeENS_15THnMenuItemTypeE @ 196 NONAME
 	_ZThn4_N16CHnMenuItemModel15GetNextSpecificEv @ 197 NONAME
 	_ZThn4_N16CHnMenuItemModel15HasNextSpecificEv @ 198 NONAME
-	_ZN16CHnMenuItemModel14IsItemSpecificEv @ 199 NONAME
+	_ZN16CHnMenuItemModel12MenuItemTypeEv @ 199 NONAME
 
--- a/menufw/hierarchynavigator/hnpresentationmodel/inc/hnmenuitemmodel.h	Fri Jan 22 09:35:14 2010 +0200
+++ b/menufw/hierarchynavigator/hnpresentationmodel/inc/hnmenuitemmodel.h	Tue Jan 26 11:48:23 2010 +0200
@@ -95,6 +95,13 @@
     public MHnMenuItemModelIterator
     {
 public:
+	enum THnMenuItemType {
+		EItemApplication,	//in options with & without focus
+		EItemAction,		//in options with focus
+		EItemSpecific		//in options with focus & in stylus popup
+	};
+    
+public:
         
     /**
      * Two-phased constructor.
@@ -185,12 +192,12 @@
     IMPORT_C void SetPosition( TInt aPosition );
     
     /**
-     * Sets menu item specific flag.
+     * Sets menu item type.
      *
      * @since S60 5.0
-     * @param aItemSpecific Is menu element item specific.
+     * @param aMenuItemType type of menu element.
      */
-    IMPORT_C void SetItemSpecific( TBool aItemSpecific );
+    IMPORT_C void SetMenuItemType( THnMenuItemType aMenuItemType );
 
     /**
      * Appends child item.
@@ -201,12 +208,12 @@
     IMPORT_C void AppendChildMenuL( CHnMenuItemModel* aMenuModel );
     
     /**
-     * Tells if menu item is item specific.
+     * Returns menu item type.
      * 
      * @since S60 5.0
-     * @return ETrue if menu item is item specific.
+     * @return menu item type.
      */
-    IMPORT_C TBool IsItemSpecific();
+    IMPORT_C THnMenuItemType MenuItemType();
     
 private:
     
@@ -253,9 +260,9 @@
     RPointerArray< CHnMenuItemModel > iChildren;
     
     /**
-     * Is menu item item specific.
+     * Type of menu item.
      */
-    TBool iItemSpecific;
+    THnMenuItemType iMenuItemType;
     };
 
 #endif // HNMENUITEMMODEL_H_
--- a/menufw/hierarchynavigator/hnpresentationmodel/src/hnmenuitemmodel.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ b/menufw/hierarchynavigator/hnpresentationmodel/src/hnmenuitemmodel.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -83,7 +83,7 @@
     	{
     	Reset();
     	}
-    else if ( iChildren[iNextMenu]->IsItemSpecific() )
+    else if ( iChildren[iNextMenu]->MenuItemType() == EItemSpecific )
     	{
     	hasNext = ETrue;
     	}
@@ -102,7 +102,7 @@
 EXPORT_C CHnMenuItemModel* CHnMenuItemModel::GetNextSpecific()
     {
     ASSERT( iNextMenu < iChildren.Count() );
-    ASSERT( iChildren[iNextMenu]->IsItemSpecific() );
+    ASSERT( iChildren[iNextMenu]->MenuItemType() == EItemSpecific );
     CHnMenuItemModel* nextSpecific = iChildren[ iNextMenu ];
     iNextMenu++;
     return nextSpecific;
@@ -143,7 +143,7 @@
 void CHnMenuItemModel::ConstructL( const TDesC& aName )
     {
     ASSERT( aName.Length() );
-    iItemSpecific = EFalse;
+    iMenuItemType = EItemApplication;
     iName.CreateL( aName );
     }
 
@@ -196,18 +196,18 @@
 // 
 // ---------------------------------------------------------------------------
 //
-EXPORT_C void CHnMenuItemModel::SetItemSpecific( TBool aItemSpecific )
+EXPORT_C void CHnMenuItemModel::SetMenuItemType( THnMenuItemType aMenuItemType )
     {
-    iItemSpecific = aItemSpecific;
+    iMenuItemType = aMenuItemType;
     }
 
 // ---------------------------------------------------------------------------
 // 
 // ---------------------------------------------------------------------------
 //
-EXPORT_C TBool CHnMenuItemModel::IsItemSpecific()
+EXPORT_C CHnMenuItemModel::THnMenuItemType CHnMenuItemModel::MenuItemType()
     {
-    return iItemSpecific;
+    return iMenuItemType;
     }
 
 // ---------------------------------------------------------------------------
--- a/menufw/menufwui/matrixmenu/inc/mmappui.h	Fri Jan 22 09:35:14 2010 +0200
+++ b/menufw/menufwui/matrixmenu/inc/mmappui.h	Tue Jan 26 11:48:23 2010 +0200
@@ -12,7 +12,7 @@
 * Contributors:
 *
 * Description:  Application UI class
-*  Version     : %version: MM_83.1.2.1.23.1.19 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: MM_83.1.2.1.23.1.20 % << Don't touch! Updated by Synergy at check-out.
 *
 */
 
@@ -844,11 +844,6 @@
       */
      void HandleFocusLostL();
 
-     /**
-      * Detects when options menu pops up and hides.
-      */
-     void DetectOptionsMenuOpenDisplayChangeL();
-
 private: // Data
 
     /**
@@ -1011,16 +1006,6 @@
      */
     CAknStylusPopUpMenu* iPopupMenu;
 
-    /**
-     * Application UI factory for this app UI object.
-     */
-    MEikAppUiFactory* iAppUiFactory;
-
-    /**
-     * ETrue if Options menu is open.
-     */
-    TBool iOptionsMenuIsOpen;
-
     };
 
 #endif // C_MMAPPUI_H
--- a/menufw/menufwui/matrixmenu/src/mmappui.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ b/menufw/menufwui/matrixmenu/src/mmappui.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -12,8 +12,8 @@
 * Contributors:
 *
 * Description:  Application UI class
-*  Version     : %version: MM_176.1.28.1.56 % << Don't touch! Updated by Synergy at check-out.
-*  Version     : %version: MM_176.1.28.1.56 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: MM_176.1.28.1.60 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: MM_176.1.28.1.60 % << Don't touch! Updated by Synergy at check-out.
 *
 */
 
@@ -96,8 +96,6 @@
     	EAknEnableSkin | EAknSingleClickCompatible :
         EAknEnableSkin | EAknEnableMSK;
     BaseConstructL( appUiFlags );
-    iAppUiFactory = CEikonEnv::Static()->AppUiFactory( *this );
-    ASSERT( iAppUiFactory );
 
     FeatureManager::InitializeLibL();
     iIsKastorEffectStarted = EFalse;
@@ -129,7 +127,6 @@
 
     iSkinSrvSession.Connect(this);
     iAppkeyHandler = CMmAppkeyHandler::NewL();
-    iOptionsMenuIsOpen = EFalse;
 
     RProperty::Define( KMMenuPSCat, KMMenuLastViewKey, RProperty::EText );
 
@@ -214,12 +211,12 @@
         iIsKastorEffectStarted = ETrue;
         TInt lastItemIndex = iCurrentContainer->NumberOfItems() - 1;
 
-        if ( lastItemIndex >= 0 && iCurrentContainer->ItemIsFullyVisible( lastItemIndex ) && 
+        if ( lastItemIndex >= 0 && iCurrentContainer->ItemIsFullyVisible( lastItemIndex ) &&
         		!iCurrentContainer->IsHighlightVisible() )
         	{
         	iCurrentContainer->SetManualHighlightL( lastItemIndex, EFalse );
         	}
-     
+
         iCurrentContainer->SetRect( ClientRect() );
         iDummyContainer->SetRect( ClientRect() );
 
@@ -324,6 +321,12 @@
         {
         if ( !iAppkeyHandler->IsActive() )
         	{
+            //make dummy container visible when returning
+            //to menu by AppKey
+        	iDummyContainer->MakeVisible( ETrue );
+            RefreshUiPanesL( ETrue );
+            iCurrentContainer->MakeVisible( EFalse );
+            iDummyContainer->DrawNow();
             CleanupForExitL( EExitKeyApplication );
 			User::LeaveIfError( iCoeEnv->WsSession().SetWindowGroupOrdinalPosition(
 						CEikonEnv::Static()->RootWin().Identifier(), 0 ) );
@@ -796,10 +799,7 @@
                 {
                 iCurrentSuiteModel->SetVisibleL(EFalse);
                 }
-            if( iMmExtManager )
-                {
-                iMmExtManager->ExecuteActionL(TUid::Null(), KCommandDeleteDialog, NULL );
-                }
+
             }
             break;
         case ERemoveLiwObjects:
@@ -1313,7 +1313,7 @@
 
 	if ( !popupMenuDisplayed && iCurrentContainer )
 		{
-		iCurrentContainer->EndLongTapL( EFalse );
+		iCurrentContainer->EndLongTapL( ETrue );
 		HandleHighlightItemSingleClickedL(
 				iCurrentContainer->Widget()->CurrentItemIndex() );
 		}
@@ -1430,11 +1430,14 @@
 //
 void CMmAppUi::HandleMessageL( const TDesC8& aMessage )
     {
+    if( iMmExtManager )
+        {
+        iMmExtManager->ExecuteActionL(TUid::Null(), KCommandDeleteDialog, NULL );
+        }
     if ( IsEditMode() )
         {
         SetEditModeL( EFalse );
         }
-
     if ( aMessage.Find( KRootWithPref ) != KErrNotFound )
         {
         RemoveFromStack( iCurrentContainer );
@@ -1520,19 +1523,13 @@
                             aMenuPane->
                                 ItemData( aMenuPane->MenuItemCommandId( i ) ) );
                         }
-                    
-                    TInt itemSpecificMenuItemsCount = 0;
+
 
                     //get custom menu items and their positions
                     while ( menuIterator->HasNext() )
                         {
                         CHnMenuItemModel* menuItem = menuIterator->GetNext();
-                        TBool isItemSpecific = menuItem->IsItemSpecific();
-                        if ( isItemSpecific )
-                            {
-                            ++itemSpecificMenuItemsCount;
-                            }
-                        if ( !isItemSpecific || !ignoreItemSpecific )
+                        if ( (menuItem->MenuItemType() == CHnMenuItemModel::EItemApplication) || !ignoreItemSpecific )
                         	{
                         	CEikMenuPaneItem::SData menuData;
 							menuData.iCommandId = menuItem->Command();
@@ -1570,11 +1567,6 @@
 							menuItemMap.InsertL( menuItem->Position(), menuData );
                         	}
                         }
-                    
-                    // DynInitMenuPaneL always gets called immediately after an item is touched and
-                    // because of that it is possible to enable/disable settings that affect long
-                    // tap behavior here.
-                    iCurrentContainer->EnableLongTapAnimation( itemSpecificMenuItemsCount > 0 );
 
                     aMenuPane->Reset();
                     positionArray.Sort();
@@ -1818,7 +1810,16 @@
             {
             StartLayoutSwitchFullScreen();
             }
+
+        TBool highlightVisibleBefore = iCurrentContainer != NULL &&
+			iCurrentContainer->IsHighlightVisible();
+
         HandleWidgetChangeRefreshL( aWidgetContainer );
+
+        if ( highlightVisibleBefore )
+        	{
+        	iCurrentContainer->SetHighlightVisibilityL( ETrue );
+        	}
         }
     else
         {
@@ -2147,9 +2148,8 @@
         {
         HandleFullOrPartialForegroundLostL();
         }
+    }
 
-    DetectOptionsMenuOpenDisplayChangeL();
-    }
 // ---------------------------------------------------------------------------
 //
 // ---------------------------------------------------------------------------
@@ -2166,8 +2166,6 @@
     return EErrorNotHandled;
     }
 
-
-
 // ---------------------------------------------------------------------------
 //
 // ---------------------------------------------------------------------------
@@ -3010,19 +3008,9 @@
 	{
 	DEBUG(("_Mm_:CMmAppUi::HandleWsEventL "
 			"- KAknFullOrPartialForegroundLost"));
-	iMmExtManager->ExecuteActionL(
-			TUid::Null(), KCommandDeleteDialog, NULL );
 	if ( iCurrentContainer )
 		{
 		iCurrentContainer->HandleBackgroundGainedL();
-		if ( !IsRootdisplayedL() || IsEditMode() ||
-		        iEditModeStatus == ETransitionFromEditMode )
-			{
-			iDummyContainer->MakeVisible( ETrue );
-			RefreshUiPanesL( ETrue );
-			iCurrentContainer->MakeVisible( EFalse );
-			iDummyContainer->DrawNow();
-			}
 		if ( IsRootdisplayedL() )
 			{
 			iCurrentContainer->RestoreWidgetPosition();
@@ -3031,23 +3019,4 @@
 		}
 	}
 
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CMmAppUi::DetectOptionsMenuOpenDisplayChangeL()
-    {
-    CEikMenuBar* menuBar = iAppUiFactory->MenuBar();
-    TBool optionsMenuIsOpen = menuBar && menuBar->IsDisplayed();
-    if ( !!iOptionsMenuIsOpen != !!optionsMenuIsOpen )
-        {
-        iOptionsMenuIsOpen = optionsMenuIsOpen;
-        if ( iCurrentContainer )
-        	{
-            iCurrentContainer->HandleOptionsMenuVisibilityChangeL(
-            		iOptionsMenuIsOpen );
-        	}
-        }
-    }
-
 // End of File
--- a/menufw/menufwui/mmwidgets/bwins/mmwidgetsu.def	Fri Jan 22 09:35:14 2010 +0200
+++ b/menufw/menufwui/mmwidgets/bwins/mmwidgetsu.def	Tue Jan 26 11:48:23 2010 +0200
@@ -25,19 +25,16 @@
 	?SetEmptyTextL@CMmGridContainer@@UAEXABVTDesC16@@@Z @ 24 NONAME ; void CMmGridContainer::SetEmptyTextL(class TDesC16 const &)
 	?HandleItemAdditionL@CMmWidgetContainer@@UAEXXZ @ 25 NONAME ; void CMmWidgetContainer::HandleItemAdditionL(void)
 	?StopMovingL@CMmWidgetContainer@@QAEXXZ @ 26 NONAME ; void CMmWidgetContainer::StopMovingL(void)
-	?SetEmptyTextL@CMmListBoxContainer@@UAEXABVTDesC16@@@Z @ 27 NONAME ; void CMmListBoxContainer::SetEmptyTextL(class TDesC16 const &)
-	?NewListBoxContainerL@CMmWidgetContainer@@SAPAV1@ABVTRect@@PAVMObjectProvider@@PAVCMmTemplateLibrary@@@Z @ 28 NONAME ; class CMmWidgetContainer * CMmWidgetContainer::NewListBoxContainerL(class TRect const &, class MObjectProvider *, class CMmTemplateLibrary *)
+	?NewListBoxContainerL@CMmWidgetContainer@@SAPAV1@ABVTRect@@PAVMObjectProvider@@PAVCMmTemplateLibrary@@@Z @ 27 NONAME ; class CMmWidgetContainer * CMmWidgetContainer::NewListBoxContainerL(class TRect const &, class MObjectProvider *, class CMmTemplateLibrary *)
+	?SetEmptyTextL@CMmListBoxContainer@@UAEXABVTDesC16@@@Z @ 28 NONAME ; void CMmListBoxContainer::SetEmptyTextL(class TDesC16 const &)
 	?PrepareForGarbage@CMmWidgetContainer@@QAEXXZ @ 29 NONAME ; void CMmWidgetContainer::PrepareForGarbage(void)
 	?GetHighlight@CMmWidgetContainer@@UAEHXZ @ 30 NONAME ; int CMmWidgetContainer::GetHighlight(void)
-	?NewLC@CMmHighlightTimer@@SAPAV1@PAVCMmWidgetContainer@@@Z @ 31 NONAME ; class CMmHighlightTimer * CMmHighlightTimer::NewLC(class CMmWidgetContainer *)
-	?RestoreWidgetPosition@CMmWidgetContainer@@QAEXXZ @ 32 NONAME ; void CMmWidgetContainer::RestoreWidgetPosition(void)
-	?EnableLongTapAnimation@CMmWidgetContainer@@QAEXH@Z @ 33 NONAME ; void CMmWidgetContainer::EnableLongTapAnimation(int)
-	?SetHighlightVisibilityL@CMmWidgetContainer@@UAEXH@Z @ 34 NONAME ; void CMmWidgetContainer::SetHighlightVisibilityL(int)
-	?NewL@CMmHighlightTimer@@SAPAV1@PAVCMmWidgetContainer@@@Z @ 35 NONAME ; class CMmHighlightTimer * CMmHighlightTimer::NewL(class CMmWidgetContainer *)
-	?ResetWidgetPosition@CMmWidgetContainer@@QAEXXZ @ 36 NONAME ; void CMmWidgetContainer::ResetWidgetPosition(void)
-	?HandleOptionsMenuVisibilityChangeL@CMmWidgetContainer@@UAEXH@Z @ 37 NONAME ; void CMmWidgetContainer::HandleOptionsMenuVisibilityChangeL(int)
-	?ItemIsFullyVisible@CMmWidgetContainer@@QAEHH@Z @ 38 NONAME ; int CMmWidgetContainer::ItemIsFullyVisible(int)
-	?SetIsFaded@CMmWidgetContainer@@QAEXH@Z @ 39 NONAME ; void CMmWidgetContainer::SetIsFaded(int)
-	?CacheWidgetPosition@CMmWidgetContainer@@QAEXXZ @ 40 NONAME ; void CMmWidgetContainer::CacheWidgetPosition(void)
-	?CancelDragL@CMmWidgetContainer@@QAEXH@Z @ 41 NONAME ; void CMmWidgetContainer::CancelDragL(int)
+	?RestoreWidgetPosition@CMmWidgetContainer@@QAEXXZ @ 31 NONAME ; void CMmWidgetContainer::RestoreWidgetPosition(void)
+	?EnableLongTapAnimation@CMmWidgetContainer@@QAEXH@Z @ 32 NONAME ; void CMmWidgetContainer::EnableLongTapAnimation(int)
+	?SetHighlightVisibilityL@CMmWidgetContainer@@UAEXH@Z @ 33 NONAME ; void CMmWidgetContainer::SetHighlightVisibilityL(int)
+	?ResetWidgetPosition@CMmWidgetContainer@@QAEXXZ @ 34 NONAME ; void CMmWidgetContainer::ResetWidgetPosition(void)
+	?ItemIsFullyVisible@CMmWidgetContainer@@QAEHH@Z @ 35 NONAME ; int CMmWidgetContainer::ItemIsFullyVisible(int)
+	?CacheWidgetPosition@CMmWidgetContainer@@QAEXXZ @ 36 NONAME ; void CMmWidgetContainer::CacheWidgetPosition(void)
+	?SetIsFaded@CMmWidgetContainer@@QAEXH@Z @ 37 NONAME ; void CMmWidgetContainer::SetIsFaded(int)
+	?CancelDragL@CMmWidgetContainer@@QAEXH@Z @ 38 NONAME ; void CMmWidgetContainer::CancelDragL(int)
 
--- a/menufw/menufwui/mmwidgets/eabi/mmwidgetsu.def	Fri Jan 22 09:35:14 2010 +0200
+++ b/menufw/menufwui/mmwidgets/eabi/mmwidgetsu.def	Tue Jan 26 11:48:23 2010 +0200
@@ -1,44 +1,41 @@
 EXPORTS
 	_ZN16CMmGridContainer13SetEmptyTextLERK7TDesC16 @ 1 NONAME
 	_ZN16CMmGridContainer20SetDefaultHighlightLEi @ 2 NONAME
-	_ZN17CMmHighlightTimer4NewLEP18CMmWidgetContainer @ 3 NONAME
-	_ZN17CMmHighlightTimer5NewLCEP18CMmWidgetContainer @ 4 NONAME
-	_ZN18CMmTemplateLibrary4NewLEv @ 5 NONAME
-	_ZN18CMmTemplateLibrary5NewLCEv @ 6 NONAME
-	_ZN18CMmWidgetContainer10SetIsFadedEi @ 7 NONAME
-	_ZN18CMmWidgetContainer10WidgetTypeEv @ 8 NONAME
-	_ZN18CMmWidgetContainer11CancelDragLEi @ 9 NONAME
-	_ZN18CMmWidgetContainer11EndLongTapLEi @ 10 NONAME
-	_ZN18CMmWidgetContainer11IsDraggableEv @ 11 NONAME
-	_ZN18CMmWidgetContainer11SetObserverEP17MMmWidgetObserver @ 12 NONAME
-	_ZN18CMmWidgetContainer11StopMovingLEv @ 13 NONAME
-	_ZN18CMmWidgetContainer12GetHighlightEv @ 14 NONAME
-	_ZN18CMmWidgetContainer12GetItemRectLEi @ 15 NONAME
-	_ZN18CMmWidgetContainer12SetHasFocusLEi @ 16 NONAME
-	_ZN18CMmWidgetContainer13ItemIconZoomLEi @ 17 NONAME
-	_ZN18CMmWidgetContainer13NumberOfItemsEv @ 18 NONAME
-	_ZN18CMmWidgetContainer13ScrollToItemLEi @ 19 NONAME
-	_ZN18CMmWidgetContainer14GetSuiteModelLEv @ 20 NONAME
-	_ZN18CMmWidgetContainer17NewGridContainerLERK5TRectP15MObjectProviderP18CMmTemplateLibrary @ 21 NONAME
-	_ZN18CMmWidgetContainer17PrepareForGarbageEv @ 22 NONAME
-	_ZN18CMmWidgetContainer18HandleItemRemovalLEv @ 23 NONAME
-	_ZN18CMmWidgetContainer18IsHighlightVisibleEv @ 24 NONAME
-	_ZN18CMmWidgetContainer18ItemIsFullyVisibleEi @ 25 NONAME
-	_ZN18CMmWidgetContainer18SetLongTapObserverEP18MMmLongTapObserver @ 26 NONAME
-	_ZN18CMmWidgetContainer19CacheWidgetPositionEv @ 27 NONAME
-	_ZN18CMmWidgetContainer19HandleItemAdditionLEv @ 28 NONAME
-	_ZN18CMmWidgetContainer19ResetWidgetPositionEv @ 29 NONAME
-	_ZN18CMmWidgetContainer20GetPreviousHighlightEv @ 30 NONAME
-	_ZN18CMmWidgetContainer20NewListBoxContainerLERK5TRectP15MObjectProviderP18CMmTemplateLibrary @ 31 NONAME
-	_ZN18CMmWidgetContainer21NumberOfItemsChangedLE16TItemsChangeType @ 32 NONAME
-	_ZN18CMmWidgetContainer21RestoreWidgetPositionEv @ 33 NONAME
-	_ZN18CMmWidgetContainer22EnableLongTapAnimationEi @ 34 NONAME
-	_ZN18CMmWidgetContainer23HandleBackgroundGainedLEv @ 35 NONAME
-	_ZN18CMmWidgetContainer23HandleForegroundGainedLEv @ 36 NONAME
-	_ZN18CMmWidgetContainer23SetHighlightVisibilityLEi @ 37 NONAME
-	_ZN18CMmWidgetContainer34HandleOptionsMenuVisibilityChangeLEi @ 38 NONAME
-	_ZN19CMmListBoxContainer13SetEmptyTextLERK7TDesC16 @ 39 NONAME
-	_ZN19CMmListBoxContainer20SetDefaultHighlightLEi @ 40 NONAME
-	_ZThn52_N18CMmWidgetContainer23HandleBackgroundGainedLEv @ 41 NONAME
-	_ZThn52_N18CMmWidgetContainer23HandleForegroundGainedLEv @ 42 NONAME
+	_ZN18CMmTemplateLibrary4NewLEv @ 3 NONAME
+	_ZN18CMmTemplateLibrary5NewLCEv @ 4 NONAME
+	_ZN18CMmWidgetContainer10SetIsFadedEi @ 5 NONAME
+	_ZN18CMmWidgetContainer10WidgetTypeEv @ 6 NONAME
+	_ZN18CMmWidgetContainer11CancelDragLEi @ 7 NONAME
+	_ZN18CMmWidgetContainer11EndLongTapLEi @ 8 NONAME
+	_ZN18CMmWidgetContainer11IsDraggableEv @ 9 NONAME
+	_ZN18CMmWidgetContainer11SetObserverEP17MMmWidgetObserver @ 10 NONAME
+	_ZN18CMmWidgetContainer11StopMovingLEv @ 11 NONAME
+	_ZN18CMmWidgetContainer12GetHighlightEv @ 12 NONAME
+	_ZN18CMmWidgetContainer12GetItemRectLEi @ 13 NONAME
+	_ZN18CMmWidgetContainer12SetHasFocusLEi @ 14 NONAME
+	_ZN18CMmWidgetContainer13ItemIconZoomLEi @ 15 NONAME
+	_ZN18CMmWidgetContainer13NumberOfItemsEv @ 16 NONAME
+	_ZN18CMmWidgetContainer13ScrollToItemLEi @ 17 NONAME
+	_ZN18CMmWidgetContainer14GetSuiteModelLEv @ 18 NONAME
+	_ZN18CMmWidgetContainer17NewGridContainerLERK5TRectP15MObjectProviderP18CMmTemplateLibrary @ 19 NONAME
+	_ZN18CMmWidgetContainer17PrepareForGarbageEv @ 20 NONAME
+	_ZN18CMmWidgetContainer18HandleItemRemovalLEv @ 21 NONAME
+	_ZN18CMmWidgetContainer18IsHighlightVisibleEv @ 22 NONAME
+	_ZN18CMmWidgetContainer18ItemIsFullyVisibleEi @ 23 NONAME
+	_ZN18CMmWidgetContainer18SetLongTapObserverEP18MMmLongTapObserver @ 24 NONAME
+	_ZN18CMmWidgetContainer19CacheWidgetPositionEv @ 25 NONAME
+	_ZN18CMmWidgetContainer19HandleItemAdditionLEv @ 26 NONAME
+	_ZN18CMmWidgetContainer19ResetWidgetPositionEv @ 27 NONAME
+	_ZN18CMmWidgetContainer20GetPreviousHighlightEv @ 28 NONAME
+	_ZN18CMmWidgetContainer20NewListBoxContainerLERK5TRectP15MObjectProviderP18CMmTemplateLibrary @ 29 NONAME
+	_ZN18CMmWidgetContainer21NumberOfItemsChangedLE16TItemsChangeType @ 30 NONAME
+	_ZN18CMmWidgetContainer21RestoreWidgetPositionEv @ 31 NONAME
+	_ZN18CMmWidgetContainer22EnableLongTapAnimationEi @ 32 NONAME
+	_ZN18CMmWidgetContainer23HandleBackgroundGainedLEv @ 33 NONAME
+	_ZN18CMmWidgetContainer23HandleForegroundGainedLEv @ 34 NONAME
+	_ZN18CMmWidgetContainer23SetHighlightVisibilityLEi @ 35 NONAME
+	_ZN19CMmListBoxContainer13SetEmptyTextLERK7TDesC16 @ 36 NONAME
+	_ZN19CMmListBoxContainer20SetDefaultHighlightLEi @ 37 NONAME
+	_ZThn52_N18CMmWidgetContainer23HandleBackgroundGainedLEv @ 38 NONAME
+	_ZThn52_N18CMmWidgetContainer23HandleForegroundGainedLEv @ 39 NONAME
 
--- a/menufw/menufwui/mmwidgets/group/mmwidgets.mmp	Fri Jan 22 09:35:14 2010 +0200
+++ b/menufw/menufwui/mmwidgets/group/mmwidgets.mmp	Tue Jan 26 11:48:23 2010 +0200
@@ -37,7 +37,6 @@
 SOURCE          mmgridcontainer.cpp
 SOURCE          mmwidgetcontainer.cpp 
 SOURCE          mmmarqueeadapter.cpp
-SOURCE          mmhighlighttimer.cpp 
 SOURCE          mmfloatingitem.cpp 
 SOURCE          mmdraweranimator.cpp
 SOURCE          mmlctutils.cpp
--- a/menufw/menufwui/mmwidgets/inc/mmcacheforitem.h	Fri Jan 22 09:35:14 2010 +0200
+++ b/menufw/menufwui/mmwidgets/inc/mmcacheforitem.h	Tue Jan 26 11:48:23 2010 +0200
@@ -81,7 +81,7 @@
      * 
      * @param aValid (Self-explanatory).
      */
-    inline void SetValid( TBool aValid );
+    inline void SetValidL( TBool aValid );
     
     /**
      * Returns information whether at the moment of updating this cache object
@@ -190,6 +190,12 @@
      * 2nd phase constructor.
      */
     void ConstructL();
+    
+    /**
+     * Updates the iIconList so that it reflects the contents of
+     * iIconHolderList.
+     */
+    void UpdateIconListL();
 
 protected:
     /**
@@ -240,6 +246,14 @@
      */
     CMmItemsDataCache& iParent;
 
+    /**
+     * Array of icons stored in the icon holders which are in iIconHolderList.
+     * This member is only valid when this cache object is marked as valid
+     * using the SetValidL method.
+     * Own.
+     */
+    CArrayPtr<CGulIcon>* iIconList;
+
     };
 
 #include "mmcacheforitem.inl"
--- a/menufw/menufwui/mmwidgets/inc/mmcacheforitem.inl	Fri Jan 22 09:35:14 2010 +0200
+++ b/menufw/menufwui/mmwidgets/inc/mmcacheforitem.inl	Tue Jan 26 11:48:23 2010 +0200
@@ -48,9 +48,16 @@
 //
 // -----------------------------------------------------------------------------
 //
-inline void CMmCacheForItem::SetValid( TBool aValid )
+inline void CMmCacheForItem::SetValidL( TBool aValid )
     {
-    iIsValid = aValid;
+    if ( !!iIsValid != !!aValid ) // Ex-OR
+        {
+        iIsValid = aValid;
+        if ( iIsValid )
+            {
+            UpdateIconListL();
+            }
+        }
     }
 
 // -----------------------------------------------------------------------------
--- a/menufw/menufwui/mmwidgets/inc/mmgrid.h	Fri Jan 22 09:35:14 2010 +0200
+++ b/menufw/menufwui/mmwidgets/inc/mmgrid.h	Tue Jan 26 11:48:23 2010 +0200
@@ -12,7 +12,7 @@
 * Contributors:
 *
 * Description:  CMmGrid declaration
-*  Version     : %version: MM_32.1.20 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: MM_32.1.22 % << Don't touch! Updated by Synergy at check-out.
 *
 */
 
@@ -398,6 +398,34 @@
      * area. In normal (non-mirrored) mode this method does nothing.
      */
     void RedrawScrollbarBackground() const;
+    
+    /**
+     * Does actual handling of scroll events.
+     * 
+     * @param aScrollBar Scrollbar being scrolled.
+     * @param aEventType Type of scrollbar event.
+     */
+    void ProcessScrollEventL( CEikScrollBar* aScrollBar, 
+            TEikScrollEvent aEventType );
+    
+    /**
+     * Handles periodic events from @c iRedrawTimer.
+     * Such events are generated at equal time intervals while
+     * the view is being scrolled using the scrollbar.
+     * This function typically calls @c ProcessScrollEventL,
+     * which actually scrolls the view and causes a redraw. 
+     */
+    void HandleRedrawTimerEvent();
+    
+private:
+    /**
+     * Callback function for @c iRedrawTimer.
+     * It simply calls @c HandleRedrawTimerEvent and returns 0.
+     * 
+     * @param aPtr A pointer to CMmGrid object.
+     * @return 0 (always).
+     */
+    static TInt RedrawTimerCallback( TAny* aPtr );
 
 private:
     /**
@@ -448,6 +476,33 @@
      * are blocked in the CountComponentControls() method;   
      */
     TBool iDisableChildComponentDrawing;
+    
+    /**
+     * This member is only used in edit mode to store the position of the pointer
+     * during EButton1Down event.
+     */
+    TPoint iButton1DownPos;
+
+    /**
+     * ETrue if the view is being scrolled with the scrollbar.
+     */
+    TBool iScrollbarThumbIsBeingDragged;
+    
+    /**
+     * Stores the number of scrollbar events that were ignored.
+     * It is only used while scrolling the view using scrollbar,
+     * in such situation the scroll events that this object receives
+     * are ignored, and actual scrolling is done only when
+     * iRedrawTimer completes.
+     */
+    TInt iSkippedScrollbarEventsCount;
+    
+    /**
+     * A timer that initiates redraws at certain time intervals.
+     * It is used to refresh the view while scrolling with
+     * the scrollbar.
+     */
+    CPeriodic* iRedrawTimer;
     };
 
 #endif // C_MMGRID_H
--- a/menufw/menufwui/mmwidgets/inc/mmgridview.h	Fri Jan 22 09:35:14 2010 +0200
+++ b/menufw/menufwui/mmwidgets/inc/mmgridview.h	Tue Jan 26 11:48:23 2010 +0200
@@ -12,7 +12,7 @@
 * Contributors:
 *
 * Description:  CMmGridView declaration
-*  Version     : %version: MM_24.1.7 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: MM_24.1.8 % << Don't touch! Updated by Synergy at check-out.
 *
 */
 
@@ -66,14 +66,6 @@
 	void Draw( const TRect* aClipRect ) const;
 	
 	/**
-     * Draws item definied by index.
-     *
-     * @since S60 v3.0
-     * @param aItemIndex Item index which should be draw.
-     */
-	void DrawItem(TInt aItemIndex) const;
-	
-	/**
      * Gets item position.
      * 
      * This fuction from @c CAknGridView is overridden so that it
--- a/menufw/menufwui/mmwidgets/inc/mmhighlighttimer.h	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,200 +0,0 @@
-/*
-* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  highlight timer class
-*  Version     : %version: MM_11.1.4 % << Don't touch! Updated by Synergy at check-out.
-*
-*/
-
-
-#ifndef C_MMHIGHLIGHTTIMER_H
-#define C_MMHIGHLIGHTTIMER_H
-
-#include <e32base.h>
-#include <e32std.h>
-
-class CMmWidgetContainer;
-
-/**
- *  Used by Multimedia Menu to handle highlight behaviour.
- *  If the timer is set up highlight is due to disappera after set up
- *  time.
- *
- *  @code
- *  @endcode
- *  @lib mmwidgets
- *  @since S60 v3.0
- *  @ingroup group_mmwidgets
- */
-NONSHARABLE_CLASS( CMmHighlightTimer ) : public CActive
-    {
-public:
-    /**
-     * Two-phased constructor.
-     * 
-     * @since S60 v3.0
-     * @param aContainer Widget container that will use timer.
-     * @return Instance of highlight timer.
-     */
-    IMPORT_C static CMmHighlightTimer* NewL( 
-            CMmWidgetContainer* aContainer );
-    
-    /**
-     * Two-phased constructor.
-     * 
-     * @since S60 v3.0
-     * @param aContainer Widget container that will use timer.
-     * @return Instance of highlight timer.
-     */
-    IMPORT_C static CMmHighlightTimer* NewLC( 
-            CMmWidgetContainer* aContainer );
-
-    /**
-     * Destructor.
-     * 
-     * @since S60 v3.0
-     */
-    virtual ~CMmHighlightTimer();
-
-    /**
-     * Starts the timer with the time specified. Also draws the highlight.
-     * Highlight timer is the only element eligible to draw highlight with single click.
-     * If aTime parameter is negative or null the highlight is set permanently until it is 
-     * cancelled manually (e.g. by calling StopL). 
-     *
-     * @since S60 v5.0
-     * @param aTime Time after which timer expires.
-     * @param aPressDownState The highlight state to be drawn. Default is highlight pressed down.
-     */
-    void StartL( TInt aTime, TBool aPressDownState = ETrue );
-    
-    /**
-     * Continues the highlight visibility for a specific time.
-     * If highlight wasn't active (visible) then this method does nothing.
-     *
-     * @since S60 v5.0
-     * @param aTime Time after which timer expires.
-     */
-    void ContinueL( TInt aTime );
-    
-    /**
-     * Cancels the asynchronous request and draws over the highlighted item (if told to).
-     *
-     * @since S60 v5.0
-     * @param aDrawOverHighlight Tells if previous highlight should be drawn over with no highlight.
-     */
-    void StopL( TBool aDrawOverHighlight = ETrue );
-    
-    
-    /**
-     * Returns the previously drawn highlight index.
-     *
-     * @since S60 v5.0
-     * @return Previously drawn highlight index.
-     */
-    TInt TimerHighlightIndex() const;
-
-private:
-	
-    /**
-     * Constructor.
-     * 
-     * @since S60 v3.0
-     * @param aContainer The widget for which highlight is handled by the timer.
-     */
-    CMmHighlightTimer( CMmWidgetContainer* aContainer );
-    
-    /**
-     * 2nd phase constructor.
-     * 
-     * @since S60 v3.0
-     */
-    void ConstructL();
-
-    /**
-     * Disables highlight and redraws the view.
-     *
-     * @since S60 v3.0
-     */
-    void RunL();
-    
-    /**
-     * Cancels timer.
-     *
-     * @since S60 v3.0
-     */
-    void DoCancel();
-    
-    /**
-     * Run if error occurred.
-     *
-     * @since S60 v3.0
-     * @param aError Error for which error handling should be run.
-     * @return Error code.
-     */
-    TInt RunError( TInt aError );
-    
-    /**
-     * Draws the highlight.
-     *
-     * @since S60 v5.0
-     * @param aItemIndex The index of the highlight.
-     */
-    void DrawHighlightL( TInt aItemIndex );
-    
-    /**
-     * Sets press down state on widget drawer to draw highlight as told.
-     *
-     * @since S60 v5.0
-     * @param aPressDownState ETrue to set press down state. Otherwise press down state is disabled.
-     */
-    void SetPressDownState(TBool aPressDownState);
-    
-private:
-	
-    /**
-     * Defines states of the CMmHighlightTimer.
-     */    
-    enum THighlightTimerState
-        {
-        EInactivityState,
-        ETimerExpirationCompletionState,
-        EExternalCompletionState
-        };
-    
-    /**
-     * Actual state of the CMmHighlightTimer.
-     */
-    TInt iState;
-    
-    /**
-     * Timer class. CMmHighlightTimer requests notifications
-     * from this member every 6 seconds.
-     */
-    RTimer iTimer;
-    
-    /**
-     * Manages highlight. Receives notifications.
-     * Not own.
-     */
-    CMmWidgetContainer* iContainer;
-    
-    /**
-     * Index of drawn item.
-     */
-    TInt iTimerHighlightIndex;
-    
-    };
-    
-#endif // C_MMHIGHLIGHTTIMER_H
-    
--- a/menufw/menufwui/mmwidgets/inc/mmlistbox.h	Fri Jan 22 09:35:14 2010 +0200
+++ b/menufw/menufwui/mmwidgets/inc/mmlistbox.h	Tue Jan 26 11:48:23 2010 +0200
@@ -12,7 +12,7 @@
 * Contributors:
 *
 * Description:  CMmListBox
-*  Version     : %version: MM_22.1.14 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: MM_22.1.16 % << Don't touch! Updated by Synergy at check-out.
 *
 */
 
@@ -275,6 +275,16 @@
      */
     void SetDisableChildComponentDrawing( TBool aDisable );
     
+    /**
+     * Handles scrolling event.
+     *
+     * @since S60 v3.0
+     * @param aScrollBar Scrollbar being scrolled.
+     * @param aEventType Type of scrollbar event.
+     */
+    void HandleScrollEventL( CEikScrollBar* aScrollBar, 
+            TEikScrollEvent aEventType );
+    
 private:
     /**
      * Default constructor.
@@ -363,6 +373,34 @@
      */
     void RedrawScrollbarBackground() const;
     
+    /**
+     * Does actual handling of scroll events.
+     * 
+     * @param aScrollBar Scrollbar being scrolled.
+     * @param aEventType Type of scrollbar event.
+     */
+    void ProcessScrollEventL( CEikScrollBar* aScrollBar, 
+            TEikScrollEvent aEventType );
+    
+    /**
+     * Handles periodic events from @c iRedrawTimer.
+     * Such events are generated at equal time intervals while
+     * the view is being scrolled using the scrollbar.
+     * This function typically calls @c ProcessScrollEventL,
+     * which actually scrolls the view and causes a redraw. 
+     */
+    void HandleRedrawTimerEvent();
+    
+private:
+    /**
+     * Callback function for @c iRedrawTimer.
+     * It simply calls @c HandleRedrawTimerEvent and returns 0.
+     * 
+     * @param aPtr A pointer to CMmListBox object.
+     * @return 0 (always).
+     */
+    static TInt RedrawTimerCallback( TAny* aPtr );
+    
 private: // Data
     /**
      * Item drawer.
@@ -384,6 +422,33 @@
      * are blocked in the CountComponentControls() method;   
      */
 	TBool iDisableChildComponentDrawing;
+	
+	/**
+     * This member is only used in edit mode to store the position of the pointer
+     * during EButton1Down event.
+     */
+    TPoint iButton1DownPos;
+    
+    /**
+     * ETrue if the view is being scrolled with the scrollbar.
+     */
+    TBool iScrollbarThumbIsBeingDragged;
+    
+    /**
+     * Stores the number of scrollbar events that were ignored.
+     * It is only used while scrolling the view using scrollbar,
+     * in such situation the scroll events that this object receives
+     * are ignored, and actual scrolling is done only when
+     * iRedrawTimer completes.
+     */
+    TInt iSkippedScrollbarEventsCount;
+    
+    /**
+     * A timer that initiates redraws at certain time intervals.
+     * It is used to refresh the view while scrolling with
+     * the scrollbar.
+     */
+    CPeriodic* iRedrawTimer;
 	};
 	
 #endif // MMLISTBOX_H
--- a/menufw/menufwui/mmwidgets/inc/mmlistboxitemdrawer.h	Fri Jan 22 09:35:14 2010 +0200
+++ b/menufw/menufwui/mmwidgets/inc/mmlistboxitemdrawer.h	Tue Jan 26 11:48:23 2010 +0200
@@ -12,7 +12,7 @@
 * Contributors:
 *
 * Description:  CMmListBoxItemDrawer
-*  Version     : %version: MM_38.1.14 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: MM_38.1.15 % << Don't touch! Updated by Synergy at check-out.
 *
 */
 
@@ -913,6 +913,22 @@
      * Set to ETrue if item has backdrop.
      */
     mutable TBool iItemHasBackdrop;
+    
+    /**
+     * Number of subcells in iData.
+     */
+    mutable TInt iCurrentNumberOfSubcellsSet;
+    
+    /**
+     * A structure that stores color information needed to draw an item.
+     */
+    mutable CFormattedCellListBoxData::TColors iColors;
+    
+    /**
+     * ETrue if the item that was last drawn was a floating item.
+     */
+    mutable TBool iLastDrawnItemWasFloating;
+
 	};
 
 #endif // MMLISTBOXITEMDRAWER_H
--- a/menufw/menufwui/mmwidgets/inc/mmlistboxmodel.h	Fri Jan 22 09:35:14 2010 +0200
+++ b/menufw/menufwui/mmwidgets/inc/mmlistboxmodel.h	Tue Jan 26 11:48:23 2010 +0200
@@ -12,7 +12,7 @@
 * Contributors:
 *
 * Description:  CMmListBoxItemModel
-*  Version     : %version: MM_18.1.3 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: MM_18.1.4 % << Don't touch! Updated by Synergy at check-out.
 *
 */
 
@@ -121,6 +121,15 @@
     void HandleSuiteEventL( THnCustomSuiteEvent aCustomSuiteEvent, 
             CHnSuiteModel* aModel );
     
+    /**
+     * Determines the number of item-specific menu items for given item.
+     * 
+     * @since S60 v3.0
+     * @param aItemIndex Item index.
+     * @return Number of item-specific menu items.
+     */
+    TInt GetNumberOfSpecificMenuItemsL( TInt aItemIndex );
+    
 private:
 
 	/**
--- a/menufw/menufwui/mmwidgets/inc/mmsubcellssetupcode.h	Fri Jan 22 09:35:14 2010 +0200
+++ b/menufw/menufwui/mmwidgets/inc/mmsubcellssetupcode.h	Tue Jan 26 11:48:23 2010 +0200
@@ -38,10 +38,12 @@
  *    and in the same order.
  * 3. AddTemplateInfo
  * 4. AddIsCurrentInfo
- * It was assumed that there would never be more than 6
- * MmTemplateContants::KSubCellsCount subcells. If that
- * should ever change, consider changing the type of iCode
- * member to TUint64.
+ * It is currently possible to store information about up to 21
+ * subcells (type of iCode is TUint64 and single subcell info
+ * takes 3 bits). It can be easily proven that CMmListBoxItemDrawer
+ * will never try to store more than
+ * (2 * MmTemplateContants::KSubCellsCount) subcell infos
+ * (2 * 6 = 12; 12 <= 21, so everything is fine).
  * Default assignment operator and copy constructor are ok
  * for this class.
  */
@@ -58,7 +60,8 @@
         ENoSubcell = 0,
         EGraphicsSubcell = 1,
         ETextSubcell = 2,
-        EBackdropSubcell = 3
+        EBackdropSubcell = 3,
+        ESkippedSubcell = 4
         };
 public:
     /**
@@ -106,7 +109,7 @@
     /**
      * The subcells setup code.
      */
-    TUint32 iCode;
+    TUint64 iCode;
     };
 
 #include "mmsubcellssetupcode.inl"
--- a/menufw/menufwui/mmwidgets/inc/mmwidgetcontainer.h	Fri Jan 22 09:35:14 2010 +0200
+++ b/menufw/menufwui/mmwidgets/inc/mmwidgetcontainer.h	Tue Jan 26 11:48:23 2010 +0200
@@ -12,7 +12,7 @@
 * Contributors:
 *
 * Description:
-*  Version     : %version: MM_48.1.36 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: MM_48.1.37 % << Don't touch! Updated by Synergy at check-out.
 *
 */
 
@@ -182,7 +182,7 @@
      * @param aVisible Visibility status.
      */
 	IMPORT_C virtual void SetHighlightVisibilityL( TBool aVisible );
-
+	
     /**
      * Set highlight visibility.
      *
@@ -230,17 +230,6 @@
 	virtual void RemoveLiwObjects();
 
 	/**
-	 * Checks if timer is active.
-	 * Calling this method without parameters will cause to return
-	 * timer activity state globally (without reference to a specific item index - which tells
-	 * if timer is active at all).
-     *
-     * @param aItemIndex Item index for which to check timer activity. Can be not defined.
-     * @return ETrue if timer is active which means highlight is visible.
-	 */
-	TBool IsTimerActive( TInt aItemIndex = KErrNotFound );
-
-	/**
 	 * Sets the long tap observer.
      *
      * @param aObserver Observer to receive long tap events.
@@ -255,12 +244,6 @@
 	 */
 	IMPORT_C virtual void EndLongTapL( TBool aStopTimer = ETrue );
 
-	/**
-	 * Is called when options menu visibility changes (hides or pops up)
-	 * @param aOptionsMenuVisible ETrue when option menu pops up.
-	 */
-	IMPORT_C virtual void HandleOptionsMenuVisibilityChangeL(
-			TBool aOptionsMenuVisible );
 public:
 
 	/**
@@ -672,6 +655,13 @@
      * if marquee animation can be enabled.
      */
     IMPORT_C void SetIsFaded( TBool aIsFaded );
+    
+    /**
+     * Determines if long tap is in progress.
+     * 
+     * @return ETrue if long tap is in progress.
+     */
+    TBool LongTapInProgress() const;
 
 public: // from MMmVisibilityObserver
 
@@ -884,13 +874,6 @@
       */
      MEikListBoxObserver* iListBoxObserver;
 
-     /**
-     * Notifies about time expiration.
-     *
-     * Owned by descendant.
-     */
-    CMmHighlightTimer* iTimer;
-
     /**
      * Marquee adapter.
      * Own.
--- a/menufw/menufwui/mmwidgets/inc/mmwidgetsconstants.h	Fri Jan 22 09:35:14 2010 +0200
+++ b/menufw/menufwui/mmwidgets/inc/mmwidgetsconstants.h	Tue Jan 26 11:48:23 2010 +0200
@@ -12,7 +12,7 @@
 * Contributors:
 *
 * Description:  Constants for the matrixmenu
-*  Version     : %version: 33.1.9 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: 33.1.11 % << Don't touch! Updated by Synergy at check-out.
 *
 */
 
@@ -441,4 +441,17 @@
     EManualAlignRight
     };
 
+/**
+ * The minimal drag vector y-length that can trigger kinetic scrolling.
+ * This is just a rough estimation of the actual trigger value used by AVKON,
+ * but it is sufficient for our purposes.  
+ */
+const TInt KDragTreshold = 18;
+
+/**
+ * The interval between redraws when scrolling using the scrollbar.
+ * This will give us nice ~30 fps.
+ */
+const TInt KScrollingRedrawInterval = 33333;
+
 #endif // MMWIDGETSCONSTANTS_H
--- a/menufw/menufwui/mmwidgets/src/mmcacheforitem.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ b/menufw/menufwui/mmwidgets/src/mmcacheforitem.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -21,6 +21,7 @@
 #include "hniconholder.h"
 
 const TInt KIconHolderListGranularity = 2;
+const TInt KIconListGranularity = 2;
 
 // -----------------------------------------------------------------------------
 //
@@ -54,6 +55,7 @@
     ClearIconArray();
     iIconHolderList.Close();
     iItemText.Close();
+    delete iIconList;
     }
 
 // -----------------------------------------------------------------------------
@@ -82,19 +84,7 @@
 CArrayPtr<CGulIcon>* CMmCacheForItem::GetIconListL()
     {
     __ASSERT_DEBUG( iIsValid, User::Invariant() );
-
-    const TInt iconCount = iIconHolderList.Count();
-    CArrayPtr<CGulIcon>* iconList = new (ELeave) CArrayPtrFlat<CGulIcon>(
-             Max( iconCount, 1 ) );
-    CleanupStack::PushL( iconList );
-    
-    for ( TInt i = 0; i < iconCount; ++i )
-        {
-        iconList->AppendL( iIconHolderList[i]->GetGulIcon() );
-        }
-    
-    CleanupStack::Pop( iconList );
-    return iconList;
+    return iIconList;
     }
 
 // -----------------------------------------------------------------------------
@@ -121,6 +111,7 @@
 //
 void CMmCacheForItem::ClearIconArray()
     {
+    iIconList->Reset();
     const TInt count = iIconHolderList.Count();
     for (TInt i = 0; i < count; ++i )
         {
@@ -142,7 +133,7 @@
     if ( iSubcellsSetupCode != aSubcellsSetupCode ||
             (!!iIsCurrent) != (!!aIsItemCurrent) )
         {
-        iIsValid = EFalse;
+        SetValidL( EFalse );
         }
     }
 
@@ -160,5 +151,20 @@
 // -----------------------------------------------------------------------------
 //
 void CMmCacheForItem::ConstructL()
-    {    
+    {
+    iIconList = new ( ELeave ) CArrayPtrFlat<CGulIcon>( KIconListGranularity );
     }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMmCacheForItem::UpdateIconListL()
+    {
+    iIconList->Reset();
+    const TInt iconCount = iIconHolderList.Count();
+    for ( TInt i = 0; i < iconCount; ++i )
+        {
+        iIconList->AppendL( iIconHolderList[i]->GetGulIcon() );
+        }
+    }
--- a/menufw/menufwui/mmwidgets/src/mmgrid.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ b/menufw/menufwui/mmwidgets/src/mmgrid.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -12,7 +12,7 @@
 * Contributors:
 *
 * Description:
-*  Version     : %version: MM_95 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: MM_97 % << Don't touch! Updated by Synergy at check-out.
 *
 */
 
@@ -51,6 +51,7 @@
 //
 CMmGrid::~CMmGrid()
     {
+    delete iRedrawTimer;
     }
 
 // -----------------------------------------------------------------------------
@@ -215,42 +216,65 @@
 void CMmGrid::HandleScrollEventL( CEikScrollBar* aScrollBar,
         TEikScrollEvent aEventType )
     {
-    CAknGrid::HandleScrollEventL(aScrollBar, aEventType);
-    iCurrentTopItemIndex = TopItemIndex();
-
-    // setting default highligh in order not to overwrite the top item index
-    // set before in the SetLayout method
-    CMmWidgetContainer* parent = static_cast< CMmWidgetContainer* > ( Parent() );
-    if (!parent->IsHighlightVisible())
-         {
-         parent->SetDefaultHighlightL( EFalse );
+    if ( aEventType == EEikScrollThumbDragVert && !iScrollbarThumbIsBeingDragged )
+        {
+        iScrollbarThumbIsBeingDragged = ETrue;
+        static_cast<CMmListBoxItemDrawer*>(
+                View()->ItemDrawer() )->EnableCachedDataUse( ETrue );
+        iRedrawTimer->Start( KScrollingRedrawInterval, KScrollingRedrawInterval,
+                TCallBack( &CMmGrid::RedrawTimerCallback, static_cast<TAny*>( this ) ) );
+        }
+    else if ( aEventType == EEikScrollThumbReleaseVert )
+        {
+        iScrollbarThumbIsBeingDragged = EFalse;
+        static_cast<CMmListBoxItemDrawer*>(
+                View()->ItemDrawer() )->EnableCachedDataUse( EFalse );
+        // The view will be redrawn with cache disabled when ProcessScrollEventL
+        // calls the base class's HandleScrollEventL method -- no need to
+        // explicitly redraw the view.
+        iRedrawTimer->Cancel();
+        }
 
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST
-         MAknListBoxTfxInternal* transApi = CAknListLoader::TfxApiInternal(
-                 static_cast<CMmGridView*>(iView)->Gc() );
-         TBool effects = transApi && !transApi->EffectsDisabled();
-         if ( effects && aEventType == EEikScrollPageUp ||
-                 aEventType == EEikScrollPageDown )
-             {
-             DrawNow();
-             }
-#endif
-
-         }
+    if ( !iScrollbarThumbIsBeingDragged )
+        {
+        ProcessScrollEventL( aScrollBar, aEventType );
+        }
+    else
+        {
+        __ASSERT_DEBUG( aEventType == EEikScrollThumbDragVert, User::Invariant() );
+        ++iSkippedScrollbarEventsCount;
+        }
     }
 
 // -----------------------------------------------------------------------------
-//
+// Clearing ELeftDownInViewRect flag before invoking the base class
+// HandlePointerEventL method effectively prevents that method from doing most
+// of the things it would normally do in response to EButton1Down event.
+// This flag is explicitly cleared to achieve two things:
+// 1. Prevent kinetic scrolling (flick) in edit mode.
+// 2. Prevent highlight removal when popup menu is displayed.
 // -----------------------------------------------------------------------------
 //
 void CMmGrid::HandlePointerEventInEditModeL( const TPointerEvent& aPointerEvent )
     {
+    if ( aPointerEvent.iType == TPointerEvent::EButton1Down )
+        {
+        iButton1DownPos = aPointerEvent.iPosition;
+        }
+    else if ( aPointerEvent.iType == TPointerEvent::EButton1Up )
+        {
+        CMmWidgetContainer* parent = static_cast<CMmWidgetContainer*>( Parent() );
+        TPoint dragDelta = iButton1DownPos - aPointerEvent.iPosition;
+        if ( Abs( dragDelta.iY ) > KDragTreshold || parent->LongTapInProgress() )
+            {
+            iListBoxFlags &= ~ELeftDownInViewRect;
+            }
+        }
+
     TInt itemUnderPointerIndex = KErrNotFound;
-
     if ( aPointerEvent.iType == TPointerEvent::EButton1Up ||
             aPointerEvent.iType == TPointerEvent::EButton1Down )
         {
-        iListBoxFlags &= ~ELeftDownInViewRect; // prevent kinetic scrolling
         CAknGrid::HandlePointerEventL( aPointerEvent );
         }
     else if ( View()->XYPosToItemIndex(
@@ -638,6 +662,7 @@
         }
 
     DoSetupLayoutL();
+    iRedrawTimer = CPeriodic::NewL( EPriorityRealTime );
     }
 
 // -----------------------------------------------------------------------------
@@ -955,6 +980,62 @@
 //
 // -----------------------------------------------------------------------------
 //
+void CMmGrid::ProcessScrollEventL( CEikScrollBar* aScrollBar, 
+            TEikScrollEvent aEventType )
+    {
+    CAknGrid::HandleScrollEventL( aScrollBar, aEventType );
+    iCurrentTopItemIndex = TopItemIndex();
+
+    // setting default highligh in order not to overwrite the top item index
+    // set before in the SetLayout method
+    CMmWidgetContainer* parent = static_cast< CMmWidgetContainer* > ( Parent() );
+    if (!parent->IsHighlightVisible())
+         {
+         parent->SetDefaultHighlightL( EFalse );
+
+#ifdef RD_UI_TRANSITION_EFFECTS_LIST
+         MAknListBoxTfxInternal* transApi = CAknListLoader::TfxApiInternal(
+                 static_cast<CMmGridView*>(iView)->Gc() );
+         TBool effects = transApi && !transApi->EffectsDisabled();
+         if ( effects && aEventType == EEikScrollPageUp ||
+                 aEventType == EEikScrollPageDown )
+             {
+             DrawNow();
+             }
+#endif
+
+         }
+    }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMmGrid::HandleRedrawTimerEvent()
+    {
+    if ( iSkippedScrollbarEventsCount )
+        {
+        ProcessScrollEventL( ScrollBarFrame()->VerticalScrollBar(),
+                EEikScrollThumbDragVert );
+        }
+    iSkippedScrollbarEventsCount = 0;
+    }
+    
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TInt CMmGrid::RedrawTimerCallback( TAny* aPtr )
+    {
+    CMmGrid* self = static_cast<CMmGrid*>( aPtr );
+    self->HandleRedrawTimerEvent();
+    return 0;
+    }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
 void CMmGrid::SetVerticalItemOffset(TInt aOffset)
 	{
 	static_cast<CMmGridView*> (View())->SetItemOffsetInPixels(aOffset);
--- a/menufw/menufwui/mmwidgets/src/mmgridcontainer.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ b/menufw/menufwui/mmwidgets/src/mmgridcontainer.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -12,8 +12,8 @@
 * Contributors:
 *
 * Description:
-*  Version     : %version: MM_73 % << Don't touch! Updated by Synergy at check-out.
-*  Version     : %version: MM_73 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: MM_74 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: MM_74 % << Don't touch! Updated by Synergy at check-out.
 *
 */
 
@@ -25,7 +25,6 @@
 #include <AknsLayeredBackgroundControlContext.h>
 #include <AknsListBoxBackgroundControlContext.h>
 #include <layoutmetadata.cdl.h>
-#include "mmhighlighttimer.h"
 #include "hnsuitemodel.h"
 #include "mmgrid.h"
 #include "mmwidgetsconstants.h"
--- a/menufw/menufwui/mmwidgets/src/mmgridview.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ b/menufw/menufwui/mmwidgets/src/mmgridview.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -80,24 +80,6 @@
 //
 // -----------------------------------------------------------------------------
 //
-void CMmGridView::DrawItem(TInt aItemIndex) const
-	{
-	CMmListBoxItemDrawer* itemDrawer =
-	        STATIC_CAST( CMmListBoxItemDrawer*, ItemDrawer() );
-	TSize size = itemDrawer->GetItemSize( 0, ETrue );
-	if ( itemDrawer->ItemCellSize() != size  )
-		{
-		const_cast<CMmGridView*>( this )->SetItemHeight(size.iHeight);
-		const_cast<CMmGridView*>( this )->SetColumnWidth(size.iWidth);
-		}
-
-	CAknGridView::DrawItem( aItemIndex );
-	}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
 TPoint CMmGridView::ItemPos( TInt aItemIndex ) const
     {
     if ( aItemIndex < 0 )
@@ -232,6 +214,14 @@
 //
 void CMmGridView::Draw(const TRect* aClipRect) const
     {
+    CMmListBoxItemDrawer* itemDrawer =
+            STATIC_CAST( CMmListBoxItemDrawer*, ItemDrawer() );
+    TSize size = itemDrawer->GetItemSize( 0, EFalse );
+    if ( itemDrawer->ItemCellSize() != size  )
+        {
+        const_cast<CMmGridView*>( this )->SetItemHeight( size.iHeight );
+        const_cast<CMmGridView*>( this )->SetColumnWidth( size.iWidth );
+        }
     DoDraw( aClipRect );
     }
 
--- a/menufw/menufwui/mmwidgets/src/mmhighlighttimer.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,236 +0,0 @@
-/*
-* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  highlight control class
-*
-*/
-#include <eiklbi.h>
-
-#include "mmhighlighttimer.h"
-#include "mmwidgetcontainer.h"
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CMmHighlightTimer::CMmHighlightTimer(CMmWidgetContainer* aContainer) :
-	CActive(EPriorityStandard), iState(EInactivityState), 
-	iContainer( aContainer )
-	{
-	}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CMmHighlightTimer* CMmHighlightTimer::NewLC(
-		CMmWidgetContainer* aContainer)
-	{
-	ASSERT(aContainer);
-	CMmHighlightTimer* self = new (ELeave) CMmHighlightTimer( aContainer );
-	CleanupStack::PushL( self );
-	self->ConstructL();
-	return self;
-	}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CMmHighlightTimer* CMmHighlightTimer::NewL(
-		CMmWidgetContainer* aContainer)
-	{
-	CMmHighlightTimer* self = CMmHighlightTimer::NewLC( aContainer );
-	CleanupStack::Pop( self );
-	return self;
-	}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CMmHighlightTimer::ConstructL()
-	{
-	User::LeaveIfError( iTimer.CreateLocal() );
-	CActiveScheduler::Add( this );
-	}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CMmHighlightTimer::~CMmHighlightTimer()
-	{
-	Cancel();
-	iTimer.Close();
-	}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CMmHighlightTimer::DoCancel()
-	{
-	if (iState == ETimerExpirationCompletionState)
-		{
-		iTimer.Cancel();
-		}
-	else if (iState == EExternalCompletionState)
-		{
-		TRequestStatus* status = &iStatus;
-		User::RequestComplete( status, KErrCancel );
-		}
-	iState = EInactivityState;
-	}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CMmHighlightTimer::StartL( TInt aTime, TBool aPressDownState )
-	{
-	CListBoxView* view = iContainer->Widget()->View();
-	if ( IsActive() &&
-			iTimerHighlightIndex != iContainer->Widget()->CurrentItemIndex())
-		{
-		// draw over previous highlight
-		// this occurs when e.g. highlight is set by rocker and later another 
-		// item is pressed.
-		DrawHighlightL( iTimerHighlightIndex );
-		}
-	Cancel();
-	if (aTime > 0)
-		{
-		iTimer.After(iStatus, aTime);
-		iState = ETimerExpirationCompletionState;
-		}
-	else
-		{
-		iStatus = KRequestPending;
-		iState = EExternalCompletionState;
-		}
-
-	SetActive();
-	iContainer->SetHighlightVisibilityL( ETrue );
-		{
-		SetPressDownState( aPressDownState );
-		TInt currentItemIndex =
-			iContainer->Widget()->View()->CurrentItemIndex();
-		DrawHighlightL( currentItemIndex );
-		iTimerHighlightIndex = currentItemIndex;
-		}
-	iContainer->SetHighlightVisibilityL( EFalse );
-	}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CMmHighlightTimer::RunL()
-	{
-	DrawHighlightL(iContainer->Widget()->View()->CurrentItemIndex());
-	iState = EInactivityState;
-	}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-TInt CMmHighlightTimer::RunError(TInt /*aError*/)
-	{
-	iState = EInactivityState;
-	return KErrNone;
-	}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CMmHighlightTimer::StopL( TBool aDrawOverHighlight )
-	{
-	if (IsActive())
-		{
-		Cancel();
-		if ( aDrawOverHighlight )
-			{
-			DrawHighlightL( iContainer->Widget()->View()->CurrentItemIndex() );
-			}
-		}
-	iState = EInactivityState;
-	}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-TInt CMmHighlightTimer::TimerHighlightIndex() const
-	{
-	return iTimerHighlightIndex;
-	}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CMmHighlightTimer::DrawHighlightL(TInt aItemIndex)
-	{
-	if ( iContainer->IsVisible() )
-		{
-		CListBoxView* view = iContainer->Widget()->View();
-		iContainer->Widget()->DrawNow( TRect(
-				view->ItemPos( aItemIndex ), view->ItemSize(
-						aItemIndex) ) );
-		}
-	}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CMmHighlightTimer::SetPressDownState(TBool aPressDownState)
-	{
-	if ( aPressDownState )
-		{
-		iContainer->Widget()->View()->ItemDrawer()->SetFlags(
-				CListItemDrawer::EPressedDownState );
-		}
-	else 
-		{
-		iContainer->Widget()->View()->ItemDrawer()->ClearFlags(
-				CListItemDrawer::EPressedDownState );
-		}
-	}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CMmHighlightTimer::ContinueL( TInt aTime )
-	{
-	if ( IsActive() )
-		{
-		Cancel();
-		if ( aTime > 0 )
-			{
-			iTimer.After( iStatus, aTime );
-			iState = ETimerExpirationCompletionState;
-			}
-		else
-			{
-			iStatus = KRequestPending;
-			iState = EExternalCompletionState;
-			}
-		SetActive();
-		}
-	}
-// End of file
--- a/menufw/menufwui/mmwidgets/src/mmitemsdatacache.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ b/menufw/menufwui/mmwidgets/src/mmitemsdatacache.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -110,7 +110,7 @@
     const TInt count = iItemCacheArr.Count();
     for ( TInt i = 0; i < count; ++i )
         {
-        iItemCacheArr[i]->SetValid( EFalse );
+        iItemCacheArr[i]->SetValidL( EFalse );
         }
     }
 
--- a/menufw/menufwui/mmwidgets/src/mmlistbox.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ b/menufw/menufwui/mmwidgets/src/mmlistbox.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -58,6 +58,7 @@
 //
 CMmListBox::~CMmListBox()
 	{
+	delete iRedrawTimer;
 	}
 
 // -----------------------------------------------------------------------------
@@ -116,24 +117,42 @@
 
     EnableExtendedDrawingL();
 
-
     iItemDrawer->SetDrawMark(EFalse);
     CEikListBox::ConstructL(aParent,aFlags);
     iMmDrawer->SetView( this );
+    iRedrawTimer = CPeriodic::NewL( EPriorityRealTime );
 	}
 
 // -----------------------------------------------------------------------------
-//
+// Clearing ELeftDownInViewRect flag before invoking the base class
+// HandlePointerEventL method effectively prevents that method from doing most
+// of the things it would normally do in response to EButton1Down event.
+// This flag is explicitly cleared to achieve two things:
+// 1. Prevent kinetic scrolling (flick) in edit mode.
+// 2. Prevent highlight removal when popup menu is displayed.
 // -----------------------------------------------------------------------------
 //
 void CMmListBox::HandlePointerEventInEditModeL(
         const TPointerEvent& aPointerEvent )
     {
+    if ( aPointerEvent.iType == TPointerEvent::EButton1Down )
+        {
+        iButton1DownPos = aPointerEvent.iPosition;
+        }
+    else if ( aPointerEvent.iType == TPointerEvent::EButton1Up )
+        {
+        CMmWidgetContainer* parent = static_cast<CMmWidgetContainer*>( Parent() );
+        TPoint dragDelta = iButton1DownPos - aPointerEvent.iPosition;
+        if ( Abs( dragDelta.iY ) > KDragTreshold || parent->LongTapInProgress() )
+            {
+            iListBoxFlags &= ~ELeftDownInViewRect;
+            }
+        }
+    
     TInt itemUnderPointerIndex = KErrNotFound;
     if ( aPointerEvent.iType == TPointerEvent::EButton1Up ||
             aPointerEvent.iType == TPointerEvent::EButton1Down )
         {
-        iListBoxFlags &= ~ELeftDownInViewRect; // prevent kinetic scrolling
         CEikFormattedCellListBoxTypedef::HandlePointerEventL( aPointerEvent );
         }
     else if ( View()->XYPosToItemIndex(
@@ -354,6 +373,42 @@
 //
 // -----------------------------------------------------------------------------
 //
+void CMmListBox::ProcessScrollEventL( CEikScrollBar* aScrollBar, 
+            TEikScrollEvent aEventType )
+    {
+    CEikFormattedCellListBoxTypedef::HandleScrollEventL(
+            aScrollBar, aEventType );
+    }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMmListBox::HandleRedrawTimerEvent()
+    {
+    if ( iSkippedScrollbarEventsCount )
+        {
+        ProcessScrollEventL( ScrollBarFrame()->VerticalScrollBar(),
+                EEikScrollThumbDragVert );
+        }
+    iSkippedScrollbarEventsCount = 0;
+    }
+    
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TInt CMmListBox::RedrawTimerCallback( TAny* aPtr )
+    {
+    CMmListBox* self = static_cast<CMmListBox*>( aPtr );
+    self->HandleRedrawTimerEvent();
+    return 0;
+    }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
 TKeyResponse CMmListBox::OfferKeyEventL(
         const TKeyEvent& aKeyEvent,TEventCode aType )
     {
@@ -887,4 +942,41 @@
     iDisableChildComponentDrawing = aDisable;
     }
 
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMmListBox::HandleScrollEventL( CEikScrollBar* aScrollBar, 
+            TEikScrollEvent aEventType )
+    {
+    if ( aEventType == EEikScrollThumbDragVert && !iScrollbarThumbIsBeingDragged )
+        {
+        iScrollbarThumbIsBeingDragged = ETrue;
+        static_cast<CMmListBoxItemDrawer*>(
+                View()->ItemDrawer() )->EnableCachedDataUse( ETrue );
+        iRedrawTimer->Start( KScrollingRedrawInterval, KScrollingRedrawInterval,
+                TCallBack( &CMmListBox::RedrawTimerCallback, static_cast<TAny*>( this ) ) );
+        }
+    else if ( aEventType == EEikScrollThumbReleaseVert )
+        {
+        iScrollbarThumbIsBeingDragged = EFalse;
+        static_cast<CMmListBoxItemDrawer*>(
+                View()->ItemDrawer() )->EnableCachedDataUse( EFalse );
+        // The view will be redrawn with cache disabled when ProcessScrollEventL
+        // calls the base class's HandleScrollEventL method -- no need to
+        // explicitly redraw the view.
+        iRedrawTimer->Cancel();
+        }
+
+    if ( !iScrollbarThumbIsBeingDragged )
+        {
+        ProcessScrollEventL( aScrollBar, aEventType );
+        }
+    else
+        {
+        __ASSERT_DEBUG( aEventType == EEikScrollThumbDragVert, User::Invariant() );
+        ++iSkippedScrollbarEventsCount;
+        }
+    }
+
 // End of file
--- a/menufw/menufwui/mmwidgets/src/mmlistboxcontainer.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ b/menufw/menufwui/mmwidgets/src/mmlistboxcontainer.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -12,7 +12,7 @@
 * Contributors:
 *
 * Description:   
-*  Version     : %version: MM_64 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: MM_65 % << Don't touch! Updated by Synergy at check-out.
 *
 */
 
@@ -35,7 +35,7 @@
 #include "mmtemplatelibrary.h"
 #include "mmpostevaluationprocessor.h"
 #include "mmdraweranimator.h"
-#include "mmhighlighttimer.h"
+
 
 // ============================ MEMBER FUNCTIONS ===============================
 
--- a/menufw/menufwui/mmwidgets/src/mmlistboxitemdrawer.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ b/menufw/menufwui/mmwidgets/src/mmlistboxitemdrawer.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -73,6 +73,8 @@
 	iRedrawBackground = ETrue;
 	iZoomIconIndex = -1;
 	iIconAnimationZoomRatio = 1;
+	// this is needed to get iColors initialized on first use:
+	iLastDrawnItemWasFloating = ETrue;
     SetFlags( CListItemDrawer::EDisableHighlight );
 	}
 
@@ -86,8 +88,6 @@
 	delete iItemsDataCache;
 	delete iAnimator;
 	delete iSubcellText;
-	delete ColumnData()->IconArray();
-    ColumnData()->SetIconArray( NULL );
 	}
 
 // -----------------------------------------------------------------------------
@@ -96,8 +96,11 @@
 //
 void CMmListBoxItemDrawer::EnableCachedDataUse( TBool aEnable )
     {
-    __ASSERT_DEBUG( !( aEnable && IsEditMode() ), User::Invariant() );
     iUseCache = aEnable;
+    if ( aEnable )
+        {
+        RemoveFloatingItems();
+        }
     }
 
 // -----------------------------------------------------------------------------
@@ -351,6 +354,9 @@
         {
         if ( !Widget()->View()->RedrawDisabled() )
             {
+            TBool highlightVisible =
+                !( Flags() & CListItemDrawer::ESingleClickDisabledHighlight );
+            aItemIsCurrent = aItemIsCurrent && highlightVisible;
             DoDrawItem( aItemIndex, aItemRectPos, aItemIsSelected,
                     aItemIsCurrent, aViewIsEmphasized, aViewIsDimmed);
             }
@@ -444,19 +450,20 @@
         SetupSubCellsL( aItemIsCurrent, aItemIndex );
         }
     __ASSERT_DEBUG( cache->IsValid(), User::Invariant() );
-    CArrayPtr<CGulIcon>* oldIconList = FormattedCellData()->IconArray();
+    
     FormattedCellData()->SetIconArray( cache->GetIconListL() );
-    delete oldIconList;
-    oldIconList = NULL;
 
-
-    TBool highlightShown = ETrue;
-	CFormattedCellListBoxData::TColors colors;
-
-	colors = SetupColors( IsFloating( aItemIndex ) );
+	TBool isFloating = !iUseCache && IsFloating( aItemIndex );
+	if ( !!isFloating != !!iLastDrawnItemWasFloating ) // Ex-OR
+	    {
+	    iLastDrawnItemWasFloating = isFloating;
+	    iColors = SetupColors( isFloating );
+	    }
 
 	CFormattedCellListBoxData* data = static_cast<CFormattedCellListBoxData*>(iData);
 	data->EnableMarqueeL( EFalse );
+	
+    TBool highlightShown = ETrue;
 	if (FormattedCellData()->RespectFocus() && !aViewIsEmphasized)
 		{
 #ifdef RD_UI_TRANSITION_EFFECTS_LIST
@@ -468,9 +475,9 @@
 #endif
 		highlightShown = EFalse;
 		}
-	
+
     data->Draw( Properties(aItemIndex), *iGc, &( cache->GetItemText() ), aItemTextRect,
-    		GetHighlightVisibility( aItemIndex, aItemIsCurrent, highlightShown ), colors );
+    		GetHighlightVisibility( aItemIndex, aItemIsCurrent, highlightShown ), iColors );
 
 #ifdef RD_UI_TRANSITION_EFFECTS_LIST
 	MAknListBoxTfxInternal *transApi = CAknListLoader::TfxApiInternal( iGc );
@@ -493,7 +500,6 @@
 		}
 #endif
 
-	delete ColumnData()->IconArray();
 	ColumnData()->SetIconArray( NULL );
     }
 
@@ -624,7 +630,7 @@
 
 		{
 		if (iMarqueeAdapter && IsTextClippedL( aSubCellTemplate, *iSubcellText )
-			&& STATIC_CAST(CMmWidgetContainer*,Widget()->Parent())->IsTimerActive() )
+			&& STATIC_CAST(CMmWidgetContainer*,Widget()->Parent())->IsHighlightVisible() )
 		    {
 		    data->SetSubCellSizeL( aIndex, TSize(0,0));
     		const_cast<CMmListBoxItemDrawer*>(this)->AddSubcellMarqueeElementL(
@@ -751,6 +757,7 @@
 void CMmListBoxItemDrawer::AddFloatingItemL( TMmFloatingItem& aFloatingItem,
         TInt aPosition )
     {
+    EnableCachedDataUse( EFalse );
     if (aPosition != KErrNotFound)
         {
         iFloatingItems.InsertL( aFloatingItem, aPosition );
@@ -1202,13 +1209,9 @@
         	}
         else
             {
-            // Even when there is no graphics in the model, it is
-            // necessary to set up an empty subcell in place of
-            // what would normally be an icon (graphics) subcell.
-            // This ensures that TMmSubcellsSetupCode will work
-            // properly.
-            SetupSubNoCellL( aSubcellIncrement, aItemIndex );
-            aSubcellIncrement++;
+            // Mark the fact that subcell was not set to ensure that TMmSubcellsSetupCode
+            // works properly.
+            iLastSubcellsSetupCode.AddSubcellInfo( TMmSubcellsSetupCode::ESkippedSubcell );
             }
 		}
 
@@ -1336,7 +1339,7 @@
         TInt aItemIndex ) const
     {
     CMmCacheForItem* cache = iItemsDataCache->GetItemCacheL( aItemIndex );
-    cache->SetValid( EFalse );
+    cache->SetValidL( EFalse );
     
     const TDesC8& mmTemplate = iMmModel->GetAttributeAsText( aItemIndex, KMmTemplate8 );
     if ( !mmTemplate.Compare( KNullDesC8 ) || !mmTemplate.Compare( KEmpty8 ) )
@@ -1397,8 +1400,12 @@
     		SetupIconSubcellL( templateChildArray, i, aItemIndex, itemText, subcellIncrement );
     		}
 		}
+	TInt subcellsJustSet = subcellIncrement;
+	iCurrentNumberOfSubcellsSet = Max( iCurrentNumberOfSubcellsSet, subcellsJustSet );
+	__ASSERT_DEBUG( iCurrentNumberOfSubcellsSet <= MmTemplateContants::KSubCellsCount,
+	        User::Invariant() );
 
-	for ( TInt i = subcellIncrement; i < MmTemplateContants::KSubCellsCount; i++ )
+	for ( TInt i = subcellIncrement; i < iCurrentNumberOfSubcellsSet; i++ )
 	    {
 	    SetupSubNoCellL( i, aItemIndex );
 	    }
@@ -1412,7 +1419,7 @@
 	cache->SetSubcellsSetupCode( iLastSubcellsSetupCode );
 	// the line below is here only to make the cached information complete
 	GetItemSize( aItemIndex, aItemIsCurrent );
-	cache->SetValid( ETrue );
+	cache->SetValidL( ETrue );
 	}
 
 // -----------------------------------------------------------------------------
@@ -1491,7 +1498,7 @@
 			ItemHasFloatingType( aItemIndex, EDrag ) ||
 			ItemHasFloatingType( aItemIndex, EDragTransition );
 		
-		if ( ( STATIC_CAST(CMmWidgetContainer*,Widget()->Parent())->IsTimerActive()
+		if ( ( STATIC_CAST(CMmWidgetContainer*,Widget()->Parent())->IsHighlightVisible()
 				&& aItemIsCurrent && aAllowHighlightForNonDraggedItem )
 				|| currentlyDraggedItem )
 			{
@@ -1516,7 +1523,7 @@
     		&& !currentlyDraggedItem /* backdrop is disabled for dragged items */
     		&& !iIsIndicatorItem /* in non-touch backdrop is not drawn, just "move indicators" */
     		&& !iLeftOverAreaUnderAnimatedItem /* is the currently drawn item the area left over behind dragged item*/
-    		&& !( STATIC_CAST( CMmWidgetContainer*,Widget()->Parent() )->IsTimerActive() 
+    		&& !( STATIC_CAST( CMmWidgetContainer*,Widget()->Parent() )->IsHighlightVisible() 
     				&& aItemIsCurrent );/*if the timer is active then we want to draw highlight (not backdrop) on the current index*/
 	}
 
--- a/menufw/menufwui/mmwidgets/src/mmlistboxmodel.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ b/menufw/menufwui/mmwidgets/src/mmlistboxmodel.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -25,6 +25,7 @@
 #include "hnitemmodel.h"
 #include "hnattributebase.h"
 #include "hnattributeimage.h"
+#include "hnmenuitemmodel.h"
 
 // -----------------------------------------------------------------------------
 //
@@ -195,4 +196,29 @@
         }
     }
 
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+// 
+TInt CMmListBoxModel::GetNumberOfSpecificMenuItemsL( TInt aItemIndex )
+    {
+    TInt itemSpecificMenuItemCount = KErrNotFound;
+    if ( iSuiteModel )
+        {
+        TInt itemId = iSuiteModel->IdByIndex( aItemIndex );
+        if ( itemId != KErrNotFound )
+            {
+            itemSpecificMenuItemCount = 0;
+            MHnMenuItemModelIterator* menuItemModelIter =
+                    iSuiteModel->GetMenuStructureL( itemId );
+            while ( menuItemModelIter && menuItemModelIter->HasNextSpecific() )
+                {
+                menuItemModelIter->GetNextSpecific();
+                ++itemSpecificMenuItemCount;
+                }
+            }
+        }
+    return itemSpecificMenuItemCount;
+    }
+
 // End of file
--- a/menufw/menufwui/mmwidgets/src/mmlistboxview.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ b/menufw/menufwui/mmwidgets/src/mmlistboxview.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -12,7 +12,7 @@
 * Contributors:
 *
 * Description:
- *  Version     : %version: MM_49 % << Don't touch! Updated by Synergy at check-out.
+ *  Version     : %version: MM_50 % << Don't touch! Updated by Synergy at check-out.
  *
 */
 
@@ -596,10 +596,13 @@
 //
 void CMmListBoxView::DrawSingleItem (TInt aItemIndex) const
 	{
-	CMmListBoxItemDrawer* itemDrawer= STATIC_CAST( CMmListBoxItemDrawer*, iItemDrawer );
-	TSize size = itemDrawer->GetItemSize( aItemIndex, CurrentItemIndex ()
-			== aItemIndex);
-	itemDrawer->SetItemCellSize (size);
+	CMmListBoxItemDrawer* itemDrawer =
+            STATIC_CAST( CMmListBoxItemDrawer*, iItemDrawer );
+	TBool highlightVisible = !( itemDrawer->Flags()
+	        & CListItemDrawer::ESingleClickDisabledHighlight );
+	TSize size = itemDrawer->GetItemSize( aItemIndex, highlightVisible &&
+	        CurrentItemIndex() == aItemIndex );
+	itemDrawer->SetItemCellSize( size );
 	
 	// CMmListBoxView* view= CONST_CAST( CMmListBoxView*, this );
 	// view->SetItemHeight( size.iHeight );
--- a/menufw/menufwui/mmwidgets/src/mmpostevaluationprocessor.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ b/menufw/menufwui/mmwidgets/src/mmpostevaluationprocessor.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -91,8 +91,6 @@
     if ( mm_template.Compare( KNullDesC8 ) && mm_template.Compare( KEmpty8 ) )
     	{
         iDrawer.SetupSubCellsL( EFalse, iIndexToProcess );
-    	delete iDrawer.ColumnData()->IconArray();
-    	iDrawer.ColumnData()->SetIconArray( NULL );
     	}
     
     if ( ++iIndexToProcess < iDrawer.iMmModel->NumberOfItems() )
--- a/menufw/menufwui/mmwidgets/src/mmwidgetcontainer.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ b/menufw/menufwui/mmwidgets/src/mmwidgetcontainer.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -12,7 +12,7 @@
 * Contributors:
 *
 * Description:
-*  Version     : %version: MM_71.1.17.1.47 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: MM_71.1.17.1.49 % << Don't touch! Updated by Synergy at check-out.
 *
 */
 
@@ -33,7 +33,6 @@
 #include "mmlistboxmodel.h"
 #include "mmmarqueeadapter.h"
 #include "mmwidgetobserver.h"
-#include "mmhighlighttimer.h"
 #include "mmvisibilityobserver.h"
 #include "mmlistboxcontainer.h"
 #include "mmgridcontainer.h"
@@ -91,10 +90,6 @@
 //
 void CMmWidgetContainer::ConstructL()
 	{
-    if ( AknLayoutUtils::PenEnabled() )
-    	{
-    	iTimer = CMmHighlightTimer::NewL( this );
-    	}
     iBgContext = CAknsBasicBackgroundControlContext::NewL(
     	KAknsIIDQsnBgAreaMainAppsGrid, Rect(), EFalse);
     iLongTapDetector = CAknLongTapDetector::NewL( this );
@@ -124,7 +119,6 @@
     {
     AknsUtils::DeregisterControlPosition( this );
     AknsUtils::DeregisterControlPosition( this->iWidget );
-    delete iTimer;
     delete iBgContext;
     delete iPostProcessor;
     delete iLongTapDetector;
@@ -441,8 +435,7 @@
         }
     if ( !aHasFocus )
     	{
-    	ASSERT(iTimer);
-    	iTimer->StopL();
+    	SetHighlightVisibilityL( EFalse );
     	}
     }
 
@@ -463,6 +456,15 @@
 //
 // -----------------------------------------------------------------------------
 //
+TBool CMmWidgetContainer::LongTapInProgress() const
+    {
+    return iLongTapInProgress;
+    }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
 TBool CMmWidgetContainer::IsDeleteLockedL( TInt aItemIndex )
 	{
 	TBool result = ETrue;
@@ -610,6 +612,21 @@
 
     TInt index = KErrNotFound;
     TBool itemExists = iWidget->View()->XYPosToItemIndex( aPointerEvent.iPosition, index );
+    
+    if ( iLongTapDetector )
+        {
+        if ( aPointerEvent.iType == TPointerEvent::EButton1Down )
+            {
+            iLongTapDetector->EnableLongTapAnimation( itemExists &&
+                    GetMmModel()->GetNumberOfSpecificMenuItemsL( index ) > 0 );
+            }
+        TPointerEvent longTapPointerEvent = aPointerEvent;
+        if ( aPointerEvent.iType == TPointerEvent::EButtonRepeat )
+            {
+            longTapPointerEvent.iType = TPointerEvent::EDrag;
+            }
+        iLongTapDetector->PointerEventL( longTapPointerEvent );
+        }
 
     CCoeControl::HandlePointerEventL(aPointerEvent);
 
@@ -627,7 +644,7 @@
     		{
         	if ( GetHighlight() != index )
         	    {
-        	    iTimer->StopL();
+        	    SetHighlightVisibilityL( EFalse );
         	    if ( IsEditMode() )
         	    	{
         		    SetHighlightL( index );
@@ -636,7 +653,7 @@
     		}
     	else
     		{
-    		iTimer->StopL();
+    		SetHighlightVisibilityL( EFalse );
     		}
     	}
 
@@ -653,21 +670,6 @@
     	{
 		HandlePointerEventsInEditModeL(aPointerEvent, abortAnimation);
     	}
-
-    if ( iLongTapDetector )
-    	{
-    	if ( !itemExists )
-    	    {
-    	    iLongTapDetector->EnableLongTapAnimation( EFalse );
-    	    }
-    	TPointerEvent longTapPointerEvent = aPointerEvent;
-        if ( aPointerEvent.iType == TPointerEvent::EButtonRepeat )
-        	{
-        	longTapPointerEvent.iType = TPointerEvent::EDrag;
-        	}
-        iLongTapDetector->PointerEventL( longTapPointerEvent );
-    	}
-
     }
 
 // -----------------------------------------------------------------------------
@@ -743,7 +745,7 @@
     if ( !aEnable )
         {
         iWidget->View()->ItemDrawer()->SetFlags(
-            CListItemDrawer::EDisableHighlight );
+            CListItemDrawer::ESingleClickDisabledHighlight );
 #ifdef RD_UI_TRANSITION_EFFECTS_LIST
 	    if ( transApi )
 	        {
@@ -754,17 +756,26 @@
     else
         {
         iWidget->View()->ItemDrawer()->ClearFlags(
-            CListItemDrawer::EDisableHighlight );
+            CListItemDrawer::ESingleClickDisabledHighlight );
         }
-   }
+    
+    if ( IsVisible() )
+        {
+        TInt highlight = GetHighlight();
+        CListBoxView* view = Widget()->View();
+        Widget()->DrawNow( TRect( view->ItemPos( highlight ),
+                view->ItemSize( highlight ) ) );
+        }
+    }
 
 // -----------------------------------------------------------------------------
 //
-// -----------------------------------------------	------------------------------
+// ----------------------------------------------------------------------------
 //
 EXPORT_C TBool CMmWidgetContainer::IsHighlightVisible()
     {
-    return IsTimerActive();
+    return !( iWidget->View()->ItemDrawer()->Flags() & 
+    		CListItemDrawer::ESingleClickDisabledHighlight );
     }
 
 // -----------------------------------------------------------------------------
@@ -1014,11 +1025,7 @@
 
     if ( resp == EKeyWasNotConsumed )
         {
-//        here is a workaround for avkon to enable cursor movement we need to set highlight visibility
-//        to ETrue so that single click implementation in avkon will change the current item index.
-        SetHighlightVisibilityL(ETrue); //workaround
         resp = iWidget->OfferKeyEventL( aKeyEvent, aType );
-        SetHighlightVisibilityL(EFalse);//workaround
         }
 
     if ( iKeyEventObserver )
@@ -1040,79 +1047,12 @@
 
 			SetHighlightVisibilityL( ETrue );
 			SetDefaultHighlightL( ETrue );
-			if ( iTimer )
-				{
-				iTimer->StartL( KDelayInSeconds6, EFalse );
-				HandleForegroundGainedL();
-				}
+			HandleForegroundGainedL();
 			}
     	}
     return resp;
     }
 
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-//TBool CMmWidgetContainer::HighlightWouldLoop( const TKeyEvent& aKeyEvent,
-//		const TEventCode& aType )
-//	{
-//	TInt viewColCount ( ColumnsInCurrentView() );
-//
-//	if ( viewColCount == 0 )
-//		return ETrue;
-//
-//	// this allows to finish drag'n'drop operation
-//	if ( iDraggedIndex != KErrNotFound && aType == EEventKeyUp )
-//		return EFalse;
-//
-//	TBool wouldLoop = EFalse;
-//	TInt highlightIndex = GetHighlight();
-//
-//	TInt highlightRow = highlightIndex / viewColCount;
-//	TInt lastRowWithItems = ( NumberOfItems() - 1 ) / viewColCount;
-//	TInt highlightCol = highlightIndex % viewColCount;
-//	TInt lastItemCol = ( NumberOfItems() - 1 ) % viewColCount;
-//
-//	TInt keyScanCode = aKeyEvent.iScanCode;
-//
-//	if ( AknLayoutUtils::LayoutMirrored() )
-//		{
-//		if ( keyScanCode == EStdKeyLeftArrow )
-//			keyScanCode = EStdKeyRightArrow;
-//		else if ( keyScanCode == EStdKeyRightArrow )
-//			keyScanCode = EStdKeyLeftArrow;
-//		}
-//
-//	if ( keyScanCode == EStdKeyRightArrow )
-//		{
-//			if ( highlightIndex == NumberOfItems() - 1 )
-//				wouldLoop = ETrue;
-//			else if ( highlightCol == viewColCount - 1 )
-//				wouldLoop = ETrue;
-//		}
-//	else if ( keyScanCode == EStdKeyLeftArrow )
-//		{
-//			if ( highlightCol == 0 )
-//				wouldLoop = ETrue;
-//		}
-//	else if ( keyScanCode == EStdKeyUpArrow )
-//		{
-//			if ( highlightRow == 0 )
-//				wouldLoop = ETrue;
-//		}
-//	else if ( keyScanCode == EStdKeyDownArrow )
-//		{
-//			if ( highlightRow == lastRowWithItems )
-//				wouldLoop = ETrue;
-//			else if ( highlightRow == lastRowWithItems - 1 && highlightCol > lastItemCol)
-//				wouldLoop = ETrue;
-//		}
-//
-//	return wouldLoop;
-//	}
-
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
@@ -1172,19 +1112,18 @@
     // handle arrow: draw highlight when arrow used
     if ( arrowHasHandling )
         {
-        if ( !iTimer->IsActive() )
+        if ( !IsHighlightVisible() )
             {
             if ( aType == EEventKey  || aType == EEventKeyUp )
                 {
-                // if no highlight and key released - show highlight
-                SetDefaultHighlightL( EFalse );
+                SetHighlightVisibilityL( ETrue );
+                SetDefaultHighlightL( ETrue );
                 }
-           	// ignore all navigation events when highlight not visible
+           	// override avkon's default highlight setting
          	resp = EKeyWasConsumed;
             }
         else
             {
-
             // this block is used to set the highlight only once for each event
             if ( aKeyEvent.iRepeats > 0 )
                 {
@@ -1203,13 +1142,6 @@
                     }
                 }
             }
-
-    	// run timer in order to hide the highlight
-	    if ( aType == EEventKey && iTimer)
-	        {
-	        iTimer->StartL( KDelayInSeconds6, EFalse );
-	        HandleForegroundGainedL();
-	        }
     	}
     else if( arrowKeyPressed )
         {
@@ -1649,20 +1581,22 @@
 //
 void CMmWidgetContainer::MakeVisible(TBool aVisible)
 	{
-	if (!aVisible)
+	if ( !aVisible )
 		{
-		ASSERT(iTimer);
-		TRAP_IGNORE( iTimer->StopL( EFalse ) );
 		RestoreWidgetPosition();
 		CacheWidgetPosition();
 		iDrawer->RemoveFloatingItems();
 		}
-	else if (aVisible)
+	else if ( aVisible )
 		{
 		RestoreWidgetPosition();
 		}
 	CCoeControl::MakeVisible(aVisible);
 	iWidget->MakeVisible(aVisible);
+	if ( !aVisible )
+        {
+        SetHighlightVisibilityL( EFalse );
+        }
 	}
 
 // ---------------------------------------------------------------------------
@@ -1710,8 +1644,7 @@
 //
 void CMmWidgetContainer::HandleNumberOfItemsChangedL( TItemsChangeType aChange )
 	{
-	ASSERT(iTimer);
-	iTimer->StopL();
+	SetHighlightVisibilityL( EFalse );
 	if ( aChange == EItemsAdded )
 		{
 		HandleItemAdditionL();
@@ -1894,29 +1827,13 @@
 //
 // -----------------------------------------------------------------------------
 //
-TBool CMmWidgetContainer::IsTimerActive( TInt aItemIndex )
-	{
-	ASSERT(iTimer);
-	TBool timerActive = iTimer->IsActive();
-	if ( aItemIndex >= 0 && timerActive )
-		{
-		timerActive = ( aItemIndex == iTimer->TimerHighlightIndex() );
-		}
-	return timerActive;
-	}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
 void CMmWidgetContainer::HandleLongTapEventL( const TPoint& aPenEventLocation,
                                       const TPoint& aPenEventScreenLocation )
 	{
 	TInt index( KErrNotFound );
 	if ( iWidget->View()->XYPosToItemIndex( aPenEventLocation, index ) )
 		{
-		ASSERT( iTimer );
-		iTimer->ContinueL( KDelayInfinite );
+		SetHighlightVisibilityL( ETrue );
 	    iLongTapInProgress = ETrue;
 		if ( iLongTapObserver )
 			{
@@ -1945,8 +1862,7 @@
 		iLongTapInProgress = EFalse;
 		if( aStopTimer )
 			{
-			ASSERT( iTimer );
-			iTimer->StopL();
+			SetHighlightVisibilityL( EFalse );
 			}
 		}
 	}
@@ -1958,7 +1874,6 @@
 void CMmWidgetContainer::HandleListBoxEventL( CEikListBox* aListBox,
         TListBoxEvent aEventType )
     {
-    ASSERT( iTimer );
 //    handle same behaviour in edit mode and normal mode
     switch ( aEventType )
 		{
@@ -1967,7 +1882,7 @@
 			iDragOccured = EFalse;
 			if ( !iLongTapInProgress )
 				{
-				iTimer->StartL( KDelayInfinite );
+				SetHighlightVisibilityL( ETrue );
 				}
 			break;
 			}
@@ -1976,14 +1891,14 @@
 			if ( !iDragOccured && !iLongTapInProgress )
 				{
 				SetHighlightL( Widget()->CurrentItemIndex() );
-				iTimer->StopL( ETrue );
+				SetHighlightVisibilityL( EFalse );
 				}
 			iDragOccured = EFalse;
 			break;
 			}
 		case MEikListBoxObserver::EEventItemDraggingActioned:
 			{
-			iTimer->StopL();
+			SetHighlightVisibilityL( EFalse );
 			iDragOccured = ETrue;
 			break;
 			}
@@ -1992,7 +1907,7 @@
 		case MEikListBoxObserver::EEventFlickStarted:
 		case MEikListBoxObserver::EEventFlickStopped:
 			{
-			iTimer->StopL( EFalse );
+			SetHighlightVisibilityL( EFalse );
 			break;
 			}
 		}
@@ -2040,17 +1955,4 @@
 
     }
 
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CMmWidgetContainer::HandleOptionsMenuVisibilityChangeL(
-		TBool aOptionsMenuVisible )
-	{
-	if ( IsTimerActive() )
-		{
-		TInt delay = (aOptionsMenuVisible) ? KDelayInfinite : KDelayInSeconds6;
-		iTimer->StartL( delay, EFalse );
-		}
-	}
 //End of file
--- a/menufw/menusuites/data/mmenuschema.xsd	Fri Jan 22 09:35:14 2010 +0200
+++ b/menufw/menusuites/data/mmenuschema.xsd	Tue Jan 26 11:48:23 2010 +0200
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" ?>
+<?xml version="1.0" encoding="utf-8" ?>
 <xs:schema xmlns:mmenu="http://nokia.com/mmenu" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://nokia.com/mmenu" xmlns:xs="http://www.w3.org/2001/XMLSchema">
   <xs:element name="content">
     <xs:annotation>
@@ -320,6 +320,11 @@
           <xs:documentation>This tag is the same as menuitem but describes menu items displayed only which have specific relation to the item</xs:documentation>
         </xs:annotation>
       </xs:element>
+      <xs:element xmlns:q1="http://nokia.com/mmenu" minOccurs="0" maxOccurs="unbounded" name="menuitem_action" type="q1:menuItemType">
+        <xs:annotation>
+          <xs:documentation>This tag is the same as menuitem but describes action commands - such functions that happen via touch-down and release on the item (e.g. Open)</xs:documentation>
+        </xs:annotation>
+      </xs:element>
       <xs:element minOccurs="0" maxOccurs="1" name="toolbar" type="mmenu:toolbarType">
         <xs:annotation>
           <xs:documentation>This element describes the layout of toolbar, for the highlighted item.</xs:documentation>
--- a/menufw/menusuites/foldersuite/data/items_touch.xml	Fri Jan 22 09:35:14 2010 +0200
+++ b/menufw/menusuites/foldersuite/data/items_touch.xml	Tue Jan 26 11:48:23 2010 +0200
@@ -72,7 +72,7 @@
         <mm:menuitem name="foldersuite_rsc:R_SKINS_LIST_APPSHELL_GRID" event="custom:change_widget_to_grid" position="82" condition="mm:suite/type != grid &amp; mm:suite/allowed_types HAS grid"/>
 		
         <mm:edit_mode count="1" template="logical_template_3|list_single_hc_apps_pane" id="parent_item" type="custom:parent_folder" condition="params:folder_id != 1">
-            
+            <mm:menuitem_action name="foldersuite_rsc:R_MENU_OPEN" event="key:select" position="80" />
 			<mm:menuitem name="foldersuite_rsc:R_OPTIONS_ORG_NEW_FOLDER" event="custom:add_folder" position="82" condition="params:remove_locked != true" />
             <mm:menuitem name="foldersuite_rsc:R_OPTIONS_HELP" event="custom:help" position="91" />
        
@@ -129,6 +129,7 @@
     </mm:item>
    
     <mm:item count="folder_items:ReturnValue/[$count]" template="logical_template_3|list_single_hc_apps_pane" id="folder_suite_items" remove_locked="folder_items:ReturnValue/[$index]/delete_locked" type="folder_items:ReturnValue/[$index]/type" running="folder_items:ReturnValue/[$index]/running" custom_id="folder_items:ReturnValue/[$index]/id" drm_protection="folder_items:ReturnValue/[$index]/drm_protection" uid="folder_items:ReturnValue/[$index]/uid" >
+		<mm:menuitem_action name="foldersuite_rsc:R_MENU_OPEN" event="key:select" position="80" />
 	    <mm:menuitem name="foldersuite_rsc:R_SKINS_LIST_APPSHELL_LIST" event="custom:change_widget_to_list" position="81" condition="mm:suite/type != list &amp; mm:suite/allowed_types HAS list"/>
         <mm:menuitem name="foldersuite_rsc:R_SKINS_LIST_APPSHELL_GRID" event="custom:change_widget_to_grid" position="81" condition="mm:suite/type != grid &amp; mm:suite/allowed_types HAS grid"/> 
         <mm:menuitem name="foldersuite_rsc:R_MENU_FOLDER_EDIT" event="custom:edit_mode" position="82" condition="params:remove_locked != true" />
@@ -260,6 +261,7 @@
         </mm:event>
 
 		<mm:edit_mode count="folder_items:ReturnValue/[$count]"  template="logical_template_3|list_single_hc_apps_pane" id="folder_suite_items" remove_locked="folder_items:ReturnValue/[$index]/delete_locked" type="folder_items:ReturnValue/[$index]/type" custom_id="folder_items:ReturnValue/[$index]/id" uid="folder_items:ReturnValue/[$index]/uid">
+		    <mm:menuitem_action name="foldersuite_rsc:R_MENU_OPEN" event="key:select" position="80" condition="folder_items:ReturnValue/[$index]/type = menu:folder" />
             <mm:menuitem_specific name="foldersuite_rsc:R_OPTIONS_ORG_MOVE_TO_FOLDER" event="custom:move_to_folder" position="81" condition="params:remove_locked != true" />
 			<mm:menuitem name="foldersuite_rsc:R_OPTIONS_ORG_NEW_FOLDER" event="custom:add_folder" position="82" condition="params:remove_locked != true" />    
             <mm:menuitem_specific name="foldersuite_rsc:R_FLDR_DELETE" event="custom:delete_folder" position="83" condition="folder_items:ReturnValue/[$index]/type = menu:folder &amp; params:remove_locked != true &amp; folder_items:ReturnValue/[$index]/delete_locked != true &amp; folder_items:ReturnValue/[$index]/children_count = 0" />
--- a/taskswitcher/contextengine/group/bld.inf	Fri Jan 22 09:35:14 2010 +0200
+++ b/taskswitcher/contextengine/group/bld.inf	Tue Jan 26 11:48:23 2010 +0200
@@ -1,19 +1,18 @@
 /*
-* ============================================================================
-*  Name        : bld.inf
-*  Part of     : Huriganes / Context Services
-*  Description : Build info file for Context Services.
-*  Version     : %version: sa1spcx1#55 %
+* 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".
 *
-*  Copyright © 2008 Nokia.  All rights reserved.
-*  This material, including documentation and any related computer
-*  programs, is protected by copyright controlled by Nokia.  All
-*  rights are reserved.  Copying, including reproducing, storing,
-*  adapting or translating, any or all of this material requires the
-*  prior written consent of Nokia.  This material also contains
-*  confidential information which may not be disclosed to others
-*  without the prior written consent of Nokia.
-* ============================================================================
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Build info file for Context Services.
+*
 */
 
 #include <platform_paths.hrh>
@@ -21,14 +20,12 @@
 PRJ_EXPORTS
 
 // stub sis files
-../sis/stubs/hgctxsrv_stub.sis                          /epoc32/release/winscw/udeb/z/system/install/hgctxsrv_stub.sis
+../sis/stubs/tsctxsrv_stub.sis                          /epoc32/release/winscw/udeb/z/system/install/tsctxsrv_stub.sis
 
 // iby files
-../rom/hgcontextservices.iby    CORE_MW_LAYER_IBY_EXPORT_PATH(hgcontextservices.iby)
-
-
+../rom/tscontextservices.iby    CORE_MW_LAYER_IBY_EXPORT_PATH(tscontextservices.iby)
 
-#include "../hgfswpreviewprovider/group/bld.inf"
-#include "../hgfswserver/group/bld.inf"
+#include "../tsfswpreviewprovider/group/bld.inf"
+#include "../tsfswserver/group/bld.inf"
 
-#include "../hgctxutils/group/bld.inf"
+#include "../tsctxutils/group/bld.inf"
--- a/taskswitcher/contextengine/hgctxutils/BWINS/hgcontextservicesutilsu.def	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-EXPORTS
-	??1CHgPropertyListener@@UAE@XZ @ 1 NONAME ; CHgPropertyListener::~CHgPropertyListener(void)
-	?Value@CHgCenrepListener@@QAEHXZ @ 2 NONAME ; int CHgCenrepListener::Value(void)
-	?NewL@CHgCenrepListener@@SAPAV1@ABVTUid@@KAAVMHgCenrepChangeObserver@@@Z @ 3 NONAME ; class CHgCenrepListener * CHgCenrepListener::NewL(class TUid const &, unsigned long, class MHgCenrepChangeObserver &)
-	??1CHgCenrepListener@@UAE@XZ @ 4 NONAME ; CHgCenrepListener::~CHgCenrepListener(void)
-	??0CHgPropertyListener@@QAE@VTUid@@IAAVMHgPropertyChangeObserver@@@Z @ 5 NONAME ; CHgPropertyListener::CHgPropertyListener(class TUid, unsigned int, class MHgPropertyChangeObserver &)
-	?NewLC@CHgCenrepListener@@SAPAV1@ABVTUid@@KAAVMHgCenrepChangeObserver@@@Z @ 6 NONAME ; class CHgCenrepListener * CHgCenrepListener::NewLC(class TUid const &, unsigned long, class MHgCenrepChangeObserver &)
-
--- a/taskswitcher/contextengine/hgctxutils/EABI/hgcontextservicesutilsu.def	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-EXPORTS
-	_ZN17CHgCenrepListener4NewLERK4TUidmR23MHgCenrepChangeObserver @ 1 NONAME
-	_ZN17CHgCenrepListener5NewLCERK4TUidmR23MHgCenrepChangeObserver @ 2 NONAME
-	_ZN17CHgCenrepListener5ValueEv @ 3 NONAME
-	_ZN17CHgCenrepListenerD0Ev @ 4 NONAME
-	_ZN17CHgCenrepListenerD1Ev @ 5 NONAME
-	_ZN17CHgCenrepListenerD2Ev @ 6 NONAME
-	_ZN19CHgPropertyListenerC1E4TUidjR25MHgPropertyChangeObserver @ 7 NONAME
-	_ZN19CHgPropertyListenerC2E4TUidjR25MHgPropertyChangeObserver @ 8 NONAME
-	_ZN19CHgPropertyListenerD0Ev @ 9 NONAME
-	_ZN19CHgPropertyListenerD1Ev @ 10 NONAME
-	_ZN19CHgPropertyListenerD2Ev @ 11 NONAME
-
--- a/taskswitcher/contextengine/hgctxutils/group/bld.inf	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-/*
-* ============================================================================
-*  Name        : bld.inf
-*  Part of     : Huriganes / Context Services Utils
-*  Description : Project definition file for project Context Services Client
-*  Version     : %version: sa1spcx1#15 %
-*
-*  Copyright © 2008 Nokia.  All rights reserved.
-*  This material, including documentation and any related computer
-*  programs, is protected by copyright controlled by Nokia.  All
-*  rights are reserved.  Copying, including reproducing, storing,
-*  adapting or translating, any or all of this material requires the
-*  prior written consent of Nokia.  This material also contains
-*  confidential information which may not be disclosed to others
-*  without the prior written consent of Nokia.
-* ============================================================================
-*/
-
-#include <platform_paths.hrh>
-
-PRJ_EXPORTS
-../inc/hgproplistener.h         |../../inc/hgproplistener.h
-../inc/hgcenreplistener.h       |../../inc/hgcenreplistener.h
-
-PRJ_MMPFILES
-hgcontextservicesutils.mmp
-
-PRJ_TESTMMPFILES
-
--- a/taskswitcher/contextengine/hgctxutils/group/hgcontextservicesutils.mmp	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-/*
-* ===========================================================================
-*  Name        : hgcontextservicesutils.mmp
-*  Part of     : Huriganes / Context Services Utils
-*  Description : Project definition file for project Context Services
-*  Version     : %version: sa1spcx1#24 %
-*
-*  Copyright © 2008 Nokia.  All rights reserved.
-*  This material, including documentation and any related computer
-*  programs, is protected by copyright controlled by Nokia.  All
-*  rights are reserved.  Copying, including reproducing, storing,
-*  adapting or translating, any or all of this material requires the
-*  prior written consent of Nokia.  This material also contains
-*  confidential information which may not be disclosed to others
-*  without the prior written consent of Nokia.
-* ============================================================================
-*/
-
-#include <platform_paths.hrh>
-#include <data_caging_paths.hrh>
-
-
-TARGET        	hgcontextservicesutils.dll
-TARGETTYPE      dll
-UID             0x1000008d
-
-CAPABILITY       CAP_GENERAL_DLL  
-VENDORID         VID_DEFAULT
-
-USERINCLUDE     ../inc
-USERINCLUDE     ../../trace
-
-SOURCEPATH      ../src
-SOURCE          hgproplistener.cpp
-SOURCE          hgcenreplistener.cpp
-
-APP_LAYER_SYSTEMINCLUDE
-
-LIBRARY	        euser.lib  
-LIBRARY         centralrepository.lib
-
-DEBUGLIBRARY	flogger.lib
-
--- a/taskswitcher/contextengine/hgctxutils/inc/hgcenreplistener.h	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,85 +0,0 @@
-/*
-* ===========================================================================
-*  Name        : HgCenrepListener.h
-*  Part of     : Hg
-*  Description : Class to get notifications about changes to a cenrep key
-*
-*  Copyright © 2008 Nokia Corporation.
-*  This material, including documentation and any related 
-*  computer programs, is protected by copyright controlled by 
-*  Nokia Corporation. All rights are reserved. Copying, 
-*  including reproducing, storing, adapting or translating, any 
-*  or all of this material requires the prior written consent of 
-*  Nokia Corporation. This material also contains confidential 
-*  information which may not be disclosed to others without the 
-*  prior written consent of Nokia Corporation.
-* ===========================================================================
-*/
-
-#ifndef __CENREPLISTENER_H__
-#define __CENREPLISTENER_H__
-
-#include <e32base.h>
-
-class CRepository;
-
-/**
- * Observer interface for getting notifications about a cenrep key change.
- */
-class MHgCenrepChangeObserver
-    {
-public:
-    virtual void CenrepChanged( TUint32 aKey, TInt aNewValue ) = 0;
-    };
-
-/**
- * Class to get notifications about changes to a cenrep key.
- */
-NONSHARABLE_CLASS( CHgCenrepListener ) : public CActive
-    {
-public:
-    /**
-     * Fist step constructor
-     */
-    IMPORT_C static CHgCenrepListener* NewL(const TUid& aRep, TUint32 aKey,
-                                            MHgCenrepChangeObserver& aObserver);
-    
-    /**
-     * Fist step constructor
-     */
-    IMPORT_C static CHgCenrepListener* NewLC(const TUid& aRep, TUint32 aKey,
-                                             MHgCenrepChangeObserver& aObserver);
-    
-    /**
-     * Destructor.
-     */
-    IMPORT_C ~CHgCenrepListener();
-    
-    /**
-     * Returns the current value of the watched key.
-     */
-    IMPORT_C TInt Value();
-    
-private:
-    /**
-     * Constructor.
-     * Starts listening for the key.
-     */
-    CHgCenrepListener(TUint32 aKey,
-        MHgCenrepChangeObserver& aObserver );
-    
-    /**
-     * Second step constructor 
-     */
-    void ConstructL(const TUid& aRep);
-    
-    void DoCancel();
-    void RunL(); 
-    TInt RunError( TInt aError );
-    
-    MHgCenrepChangeObserver& iObserver;
-    CRepository* iRep;
-    TUint32 iKey;
-    };
-    
-#endif
--- a/taskswitcher/contextengine/hgctxutils/inc/hgproplistener.h	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,65 +0,0 @@
-/*
-* ===========================================================================
-*  Name        : HgPropListener.h
-*  Part of     : Hg
-*  Description : Class to get notifications about changes to a P&S property
-*
-*  Copyright © 2008 Nokia Corporation.
-*  This material, including documentation and any related 
-*  computer programs, is protected by copyright controlled by 
-*  Nokia Corporation. All rights are reserved. Copying, 
-*  including reproducing, storing, adapting or translating, any 
-*  or all of this material requires the prior written consent of 
-*  Nokia Corporation. This material also contains confidential 
-*  information which may not be disclosed to others without the 
-*  prior written consent of Nokia Corporation.
-* ===========================================================================
-*/
-
-#ifndef __PROPLISTENER_H__
-#define __PROPLISTENER_H__
-
-#include <e32base.h>
-#include <e32property.h>
-
-/**
- * Observer interface for getting notifications about a P&S property change.
- */
-class MHgPropertyChangeObserver
-	{
-public:
-	virtual void PropertyChanged( TUid aCategory, TUint aKey ) = 0;
-	};
-
-/**
- * Class to get notifications about changes to a P&S property.
- */
-NONSHARABLE_CLASS( CHgPropertyListener ) : public CActive
-	{
-public:
-    /**
-     * Constructor.
-     * Starts listening for the property with the given category/key.
-     */
-	IMPORT_C CHgPropertyListener( TUid aCategory,
-	    TUint aKey, MHgPropertyChangeObserver& aObserver );
-	    
-	/**
-	 * Destructor.
-	 */
-	IMPORT_C ~CHgPropertyListener();
-    
-private:
-	void DoCancel();
-	void RunL(); 
-	TInt RunError( TInt aError );
-
-	MHgPropertyChangeObserver& iObserver;
-	RProperty iProperty;
-	TUid iCategory;
-	TUint iKey;
-	};
-    
-#endif
-
-// End of file
--- a/taskswitcher/contextengine/hgctxutils/src/hgcenreplistener.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,114 +0,0 @@
-/*
-* ===========================================================================
-*  Name        : HgCenrepListener.cpp
-*  Part of     : Hg
-*  Description : Active class to get notifications about changes to a cenrep key
-*
-*  Copyright © 2008 Nokia Corporation.
-*  This material, including documentation and any related 
-*  computer programs, is protected by copyright controlled by 
-*  Nokia Corporation. All rights are reserved. Copying, 
-*  including reproducing, storing, adapting or translating, any 
-*  or all of this material requires the prior written consent   of 
-*  Nokia Corporation. This material also contains confidential 
-*  information which may not be disclosed to others without the 
-*  prior written consent of Nokia Corporation.
-* ===========================================================================
-*/
-
-#include <e32cmn.h>
-#include <centralrepository.h>
-#include "hgcenreplistener.h"
-
-// -----------------------------------------------------------------------------
-// NewL
-// -----------------------------------------------------------------------------
-EXPORT_C CHgCenrepListener* CHgCenrepListener::NewL(const TUid& aRep, TUint32 aKey,
-                                   MHgCenrepChangeObserver& aObserver)
-    {
-    CHgCenrepListener* self = CHgCenrepListener::NewLC(aRep, aKey, aObserver);
-    CleanupStack::Pop(self);
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// NewLC
-// -----------------------------------------------------------------------------
-EXPORT_C CHgCenrepListener* CHgCenrepListener::NewLC(const TUid& aRep, TUint32 aKey,
-                                       MHgCenrepChangeObserver& aObserver)
-    {
-    CHgCenrepListener *self = new(ELeave) CHgCenrepListener(aKey, aObserver);
-    CleanupStack::PushL(self);
-    self->ConstructL(aRep);
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// CHgCenrepListener
-// -----------------------------------------------------------------------------
-CHgCenrepListener::CHgCenrepListener(TUint32 aKey, 
-                                     MHgCenrepChangeObserver& aObserver)
-: CActive( CActive::EPriorityStandard ), iObserver( aObserver ), iKey( aKey )
-    {
-    CActiveScheduler::Add(this);
-    }
-
-// -----------------------------------------------------------------------------
-// ConstructL
-// -----------------------------------------------------------------------------
-void CHgCenrepListener::ConstructL(const TUid& aRep)
-    {
-    iRep = CRepository::NewL( aRep );
-    iRep->NotifyRequest( iKey, iStatus );
-    SetActive();
-    }
-
-// -----------------------------------------------------------------------------
-// ~CHgCenrepListener
-// -----------------------------------------------------------------------------
-EXPORT_C CHgCenrepListener::~CHgCenrepListener()
-    {
-    Cancel();
-    delete iRep;
-    }
-
-// -----------------------------------------------------------------------------
-// DoCancel
-// -----------------------------------------------------------------------------
-void CHgCenrepListener::DoCancel()
-    {
-    iRep->NotifyCancelAll();
-    }
-
-// -----------------------------------------------------------------------------
-// RunL
-// -----------------------------------------------------------------------------
-void CHgCenrepListener::RunL()
-    {
-    if ( iStatus.Int() != KErrCancel )
-        {
-        iObserver.CenrepChanged( iKey, Value() );
-        iRep->NotifyRequest( iKey, iStatus );
-        SetActive();
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// RunError
-// -----------------------------------------------------------------------------
-TInt CHgCenrepListener::RunError( TInt /*aError*/ )
-    {
-    return KErrNone;
-    }
-
-// -----------------------------------------------------------------------------
-// Value
-// -----------------------------------------------------------------------------
-EXPORT_C TInt CHgCenrepListener::Value()
-    {
-    TInt val = 0;
-    iRep->Get( iKey, val );
-    return val;
-    }
-
-// end of file
--- a/taskswitcher/contextengine/hgctxutils/src/hgproplistener.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +0,0 @@
-/*
-* ===========================================================================
-*  Name        : HgPropListener.cpp
-*  Part of     : Hg
-*  Description : Active class to get notifications about changes to a P&S property
-*
-*  Copyright © 2008 Nokia Corporation.
-*  This material, including documentation and any related 
-*  computer programs, is protected by copyright controlled by 
-*  Nokia Corporation. All rights are reserved. Copying, 
-*  including reproducing, storing, adapting or translating, any 
-*  or all of this material requires the prior written consent   of 
-*  Nokia Corporation. This material also contains confidential 
-*  information which may not be disclosed to others without the 
-*  prior written consent of Nokia Corporation.
-* ===========================================================================
-*/
-
-#include <e32cmn.h>
-
-#include "hgproplistener.h"
-
-EXPORT_C CHgPropertyListener::CHgPropertyListener(
-        TUid aCategory, TUint aKey, MHgPropertyChangeObserver& aObserver )
-	: CActive( CActive::EPriorityStandard),
-	    iObserver( aObserver ), iCategory( aCategory ), iKey( aKey )
-	{
-	CActiveScheduler::Add( this );
-	TInt err = iProperty.Attach( iCategory, iKey );
-	if ( err == KErrNone )
-		{
-		iProperty.Subscribe( iStatus );
-		SetActive();
-		}
-	}
-
-EXPORT_C CHgPropertyListener::~CHgPropertyListener()
-	{
-	Cancel();
-	iProperty.Close();
-	}
-
-void CHgPropertyListener::DoCancel()
-	{
-	iProperty.Cancel();
-	}
-    
-void CHgPropertyListener::RunL()
-	{
-	if ( iStatus.Int() != KErrCancel ) // when cancelling the subscribe it completes with KErrCancel
-		{
-		iObserver.PropertyChanged( iCategory, iKey );
-		iProperty.Subscribe( iStatus );
-		SetActive();
-		}
-	}    
-
-TInt CHgPropertyListener::RunError( TInt /*aError*/ )
-	{
-	iProperty.Subscribe( iStatus );
-	SetActive();
-	return KErrNone;
-	}
-
-	
-// end of file
--- a/taskswitcher/contextengine/hgfswpreviewprovider/bwins/hgpreviewprovideru.def	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-EXPORTS
-	??1CHgFastSwapPreviewProvider@@UAE@XZ @ 1 NONAME ; CHgFastSwapPreviewProvider::~CHgFastSwapPreviewProvider(void)
-	?ChangeScreen@CHgFastSwapPreviewProvider@@QAEHH@Z @ 2 NONAME ; int CHgFastSwapPreviewProvider::ChangeScreen(int)
-	?NewL@CHgFastSwapPreviewProvider@@SAPAV1@AAVMHgFastSwapPreviewObserver@@@Z @ 3 NONAME ; class CHgFastSwapPreviewProvider * CHgFastSwapPreviewProvider::NewL(class MHgFastSwapPreviewObserver &)
-	?Register@CHgFastSwapPreviewProvider@@QAEHH@Z @ 4 NONAME ; int CHgFastSwapPreviewProvider::Register(int)
-	?SetPreviewParam@CHgFastSwapPreviewProvider@@QAEHABVTSize@@W4TDisplayMode@@@Z @ 5 NONAME ; int CHgFastSwapPreviewProvider::SetPreviewParam(class TSize const &, enum TDisplayMode)
-	?TakePreview@CHgFastSwapPreviewProvider@@QAEHXZ @ 6 NONAME ; int CHgFastSwapPreviewProvider::TakePreview(void)
-	?Unregister@CHgFastSwapPreviewProvider@@QAEHH@Z @ 7 NONAME ; int CHgFastSwapPreviewProvider::Unregister(int)
-	?AckPreview@CHgFastSwapPreviewProvider@@QAEXH@Z @ 8 NONAME ; void CHgFastSwapPreviewProvider::AckPreview(int)
-
--- a/taskswitcher/contextengine/hgfswpreviewprovider/eabi/hgpreviewprovideru.def	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-EXPORTS
-	_ZN26CHgFastSwapPreviewProvider10UnregisterEi @ 1 NONAME
-	_ZN26CHgFastSwapPreviewProvider11TakePreviewEv @ 2 NONAME
-	_ZN26CHgFastSwapPreviewProvider12ChangeScreenEi @ 3 NONAME
-	_ZN26CHgFastSwapPreviewProvider15SetPreviewParamERK5TSize12TDisplayMode @ 4 NONAME
-	_ZN26CHgFastSwapPreviewProvider4NewLER26MHgFastSwapPreviewObserver @ 5 NONAME
-	_ZN26CHgFastSwapPreviewProvider8RegisterEi @ 6 NONAME
-	_ZN26CHgFastSwapPreviewProviderD0Ev @ 7 NONAME
-	_ZN26CHgFastSwapPreviewProviderD1Ev @ 8 NONAME
-	_ZN26CHgFastSwapPreviewProviderD2Ev @ 9 NONAME
-	_ZN26CHgFastSwapPreviewProvider10AckPreviewEi @ 10 NONAME
-
--- a/taskswitcher/contextengine/hgfswpreviewprovider/group/bld.inf	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-/*
-* ==============================================================================
-*  Name        : %name: bld.inf %
-*  Part of     : Hg fast swap preview provider plugin
-*  Description : bld.inf
-*  Version     : %version: 1 %
-*
-*  Copyright (c) 2008 Nokia Corporation.
-*  This material, including documentation and any related
-*  computer programs, is protected by copyright controlled by
-*  Nokia Corporation. All rights are reserved. Copying,
-*  including reproducing, storing, adapting or translating, any
-*  or all of this material requires the prior written consent of
-*  Nokia Corporation. This material also contains confidential
-*  information which may not be disclosed to others without the
-*  prior written consent of Nokia Corporation.
-* ==============================================================================
-*/
-
-#include <platform_paths.hrh>
-
-PRJ_PLATFORMS
-DEFAULT
-
-PRJ_EXPORTS
-../rom/hgfastswappreviewprovider.iby    CORE_MW_LAYER_IBY_EXPORT_PATH(hgfastswappreviewprovider.iby)
-../inc/hgpreviewprovider.h              |../../inc/hgpreviewprovider.h
-../inc/hgpreviewobserver.h              |../../inc/hgpreviewobserver.h
-
-PRJ_MMPFILES
-previewprovider.mmp
-
-#include "../wsplugin/group/bld.inf"
--- a/taskswitcher/contextengine/hgfswpreviewprovider/group/previewprovider.mmp	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-/*
-* ==============================================================================
-*  Name        : %name: previewprovider.mmp %
-*  Part of     : Hg fast swap preview provider plugin
-*  Description : MMP file for previewprovider dll
-*  Version     : %version: sa1spcx1#2 %
-*
-*  Copyright (c) 2008 Nokia Corporation.
-*  This material, including documentation and any related
-*  computer programs, is protected by copyright controlled by
-*  Nokia Corporation. All rights are reserved. Copying,
-*  including reproducing, storing, adapting or translating, any
-*  or all of this material requires the prior written consent of
-*  Nokia Corporation. This material also contains confidential
-*  information which may not be disclosed to others without the
-*  prior written consent of Nokia Corporation.
-* ==============================================================================
-*/
-
-#include <platform_paths.hrh>
-#include <defaultcaps.hrh>
-
-TARGET         hgpreviewprovider.dll
-TARGETTYPE     DLL 
-UID            0x1000008D 0x20016BEB
-CAPABILITY     CAP_CLIENT_DLL
-VENDORID       VID_DEFAULT
-
-USERINCLUDE    ../inc
-USERINCLUDE    ../../trace
-
-MW_LAYER_SYSTEMINCLUDE
-
-SOURCEPATH     ../src
-SOURCE         previewprovider.cpp
-
-LIBRARY        euser.lib
-LIBRARY        ws32.lib
-LIBRARY        estor.lib 
-DEBUGLIBRARY   flogger.lib
--- a/taskswitcher/contextengine/hgfswpreviewprovider/inc/hgfastswappreviewproviderlogging.h	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-/*
-* ============================================================================
-*  Name        : hgfastswappreviewproviderlogging.h
-*  Part of     : Classic UI / Teleport
-*  Description : Defines logs for hgfastswappreviewprovider
-*  Version     : %version:  sa1spcx1#3 % 
-*
-*  Copyright (c) 2009 Nokia.  All rights reserved.
-*  This material, including documentation and any related computer
-*  programs, is protected by copyright controlled by Nokia.  All
-*  rights are reserved.  Copying, including reproducing, storing,
-*  adapting or translating, any or all of this material requires the
-*  prior written consent of Nokia.  This material also contains
-*  confidential information which may not be disclosed to others
-*  without the prior written consent of Nokia.
-* ============================================================================
-* Template version: 4.1.1
-*/
-
-#ifdef _DEBUG // codescanner::ifpreprocessor
-_LIT( KHgLogFile, "hgfastswappreviewprovider.txt" );
-_LIT( KHgLogPath, "teleport" );
-#define _HGLOG_LOG_COMPONENT_ID 0x20016BEC
-
-#endif
-#include "hglogging.h"
--- a/taskswitcher/contextengine/hgfswpreviewprovider/inc/hgpreviewobserver.h	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-/*
-* ==============================================================================
-*  Name        : %name: hgpreviewobserver.h %
-*  Part of     : Hg fast swap preview provider plugin
-*  Description : Preview provider API
-*  Version     : %version: 1 %
-*
-*  Copyright (c) 2008 Nokia Corporation.
-*  This material, including documentation and any related
-*  computer programs, is protected by copyright controlled by
-*  Nokia Corporation. All rights are reserved. Copying,
-*  including reproducing, storing, adapting or translating, any
-*  or all of this material requires the prior written consent of
-*  Nokia Corporation. This material also contains confidential
-*  information which may not be disclosed to others without the
-*  prior written consent of Nokia Corporation.
-* ==============================================================================
-*/
-
-#ifndef HGPREVIEWOBSERVER_H
-#define HGPREVIEWOBSERVER_H
-
-// INCLUDES
-#include <e32base.h>
-
-/**
- * Observer for preview screenshot changes. Client must implement this and 
- * register itself when calling CHgFastSwapPreviewProvider::NewL. Callback
- * methods are called whenever there is a new preview screenshot taken from
- * the applications or when an application is exited.
- *
- * @see CHgFastSwapPreviewProvider
- */
-class MHgFastSwapPreviewObserver
-    {
-public:
-
-    /**
-     * Called when application has changed and screenshot has been taken. 
-     * New sceenshots will be taken and provided to the client via this 
-     * callback every time the application goes to background.
-     *
-     * @param aWgId Window group id of the application.
-     * @param aFbsHandle Handle to screenshot CFbsBitmap.
-     */         
-    virtual void HandleFswPpApplicationChange( TInt aWgId, TInt aFbsHandle ) = 0;
-    
-    /**
-     * Called when application has been exited. Client can free the resources
-     * related to aWgId (for example a copied bitmap) since the application is
-     * no more running.
-     *
-     * @param aWgId Window group id of the application.
-     */         
-    virtual void HandleFswPpApplicationUnregistered( TInt aWgId ) = 0;    
-    };
-
-#endif // HGPREVIEWOBSERVER_H
-
-// End of file
--- a/taskswitcher/contextengine/hgfswpreviewprovider/inc/hgpreviewprovider.h	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,130 +0,0 @@
-/*
-* ==============================================================================
-*  Name        : %name: hgpreviewprovider.h %
-*  Part of     : Hg fast swap preview provider plugin
-*  Description : Preview provider API
-*  Version     : %version: sa1spcx1#2 %
-*
-*  Copyright (c) 2008 Nokia Corporation.
-*  This material, including documentation and any related
-*  computer programs, is protected by copyright controlled by
-*  Nokia Corporation. All rights are reserved. Copying,
-*  including reproducing, storing, adapting or translating, any
-*  or all of this material requires the prior written consent of
-*  Nokia Corporation. This material also contains confidential
-*  information which may not be disclosed to others without the
-*  prior written consent of Nokia Corporation.
-* ==============================================================================
-*/
-
-#ifndef HGPREVIEWPROVIDER_H
-#define HGPREVIEWPROVIDER_H
-
-// INCLUDES
-#include <e32base.h>
-#include <gdi.h>
-
-// FORWARD DECLARATIONS
-class CHgFastSwapPreviewProviderClient;
-class MHgFastSwapPreviewObserver;
-
-/**
- * Preview provider API class. Applications (window groups) must be
- * registered before screenshots can be received. Also, closed apps
- * should be unregistered to save resources.
- * TakePreview() can be called to take a screenshot right away.
- * A client needing notifications has to create an instance
- * so that screenshots can be delivered to it via MHgFastSwapPreviewObserver.
- *
- * @see MHgFastSwapPreviewObserver
- * @lib hgpreviewprovider.lib
- */
-NONSHARABLE_CLASS( CHgFastSwapPreviewProvider ) : public CBase
-    {
-public:
-
-    /**
-     * Two phased constructor.
-     * @see MHgFastSwapPreviewObserver
-     *
-     * @param aObs Observer.     
-     */   
-    IMPORT_C static CHgFastSwapPreviewProvider* NewL(
-        MHgFastSwapPreviewObserver& aObs );
-    
-    /**
-     * Destructor.
-     */   
-    IMPORT_C ~CHgFastSwapPreviewProvider();
-    
-    /**
-     * Registers window group for screenshots.
-     *
-     * @param aWgId Window group id.
-     * @return Error code.     
-     */       
-    IMPORT_C TInt Register( TInt aWgId );
-    
-    /**
-     * Unregisters window group.
-     *
-     * @param aWgId Window group id.
-     * @return Error code.     
-     */       
-    IMPORT_C TInt Unregister( TInt aWgId );
-    
-    /**
-     * Change screen.
-     *
-     * @param aScreenId Screen id.
-     * @return Error code.     
-     */       
-    IMPORT_C TInt ChangeScreen( TInt aScreenId );
-    
-    /**
-     * Defines the dimensions and format of the screenshots.
-     * @see TDisplayMode.
-     *
-     * @param aSize Size to be used for the preview screenshots.
-     * @param aMode Color depth to be used for the preview screenshots.
-     * @return Error code.
-     */       
-    IMPORT_C TInt SetPreviewParam( const TSize& aSize, TDisplayMode aMode );
-    
-    /**
-     * Takes a screenshot.
-     * 
-     * @return Error code.     
-     */       
-    IMPORT_C TInt TakePreview();
-    
-    /**
-     * Ack preview ready message
-     */
-    IMPORT_C void AckPreview( TInt aPreviewId );
-    
-private:
-
-    /**
-     * C++ constructor.
-     */   
-    CHgFastSwapPreviewProvider();
-    
-    /**
-     * 2nd phase constructor.
-     *
-     * @param aObs Observer.
-     */       
-    void ConstructL( MHgFastSwapPreviewObserver& aObs );
-       
-private:    
-
-    /**
-     * Implementation class.
-     */   
-    CHgFastSwapPreviewProviderClient* iClient;
-    };
-
-#endif // HGPREVIEWPROVIDER_H
-
-// End of file
--- a/taskswitcher/contextengine/hgfswpreviewprovider/inc/previewmsg.h	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-/*
-* ==============================================================================
-*  Name        : %name: previewmsg.h %
-*  Part of     : Hg fast swap preview provider plugin
-*  Description : Message types for preview plugin
-*  Version     : %version: sa1spcx1#2 %
-*
-*  Copyright (c) 2008 Nokia Corporation.
-*  This material, including documentation and any related
-*  computer programs, is protected by copyright controlled by
-*  Nokia Corporation. All rights are reserved. Copying,
-*  including reproducing, storing, adapting or translating, any
-*  or all of this material requires the prior written consent of
-*  Nokia Corporation. This material also contains confidential
-*  information which may not be disclosed to others without the
-*  prior written consent of Nokia Corporation.
-* ==============================================================================
-*/
-
-#ifndef PREVIEWMSG_H
-#define PREVIEWMSG_H
-
-namespace NPreviewMsg
-    {
-    /**
-     * Messages that are sent between PreviewProviderClient and PreviewProvider
-     * ECOM plugin via window server. 
-     */
-    enum 
-        {
-        // From PreviewProviderClient to PreviewProvider ECOM plugin. 
-        ENone,
-        ERegister,
-        EUnregister,
-        EChangeScreen,
-        ESetPreviewParam,
-        ETakePreview,
-        
-        // From PreviewProvider ECOM plugin to PreviewProviderClient. 
-        EPreviewReady,
-        EAckPreviewReady,
-        EUnregisterReady
-        };
-    }
-
-#endif // PREVIEWMSG_H
--- a/taskswitcher/contextengine/hgfswpreviewprovider/inc/previewproviderlogging.h	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-/*
-* ============================================================================
-*  Name        : %name: previewproviderlogging.h %
-*  Part of     : Hg fast swap preview provider plugin
-*  Description : Header file used for logging
-*  Version     : %version: 1 %
-*
-*  Copyright © 2008 Nokia.  All rights reserved.
-*  This material, including documentation and any related computer
-*  programs, is protected by copyright controlled by Nokia.  All
-*  rights are reserved.  Copying, including reproducing, storing,
-*  adapting or translating, any or all of this material requires the
-*  prior written consent of Nokia.  This material also contains
-*  confidential information which may not be disclosed to others
-*  without the prior written consent of Nokia.
-* ============================================================================
-* 
-*/
-
-#ifndef PREVIEWPROVIDERLOGGING_H
-#define PREVIEWPROVIDERLOGGING_H
-
-_LIT( KHgLogFile, "hgpreviewprovider.txt" );
-_LIT( KHgLogPath, "hgpreviewprovider" );
-#define _HGLOG_LOG_COMPONENT_ID 6715359
-//#define _HGLOG_RDEBUG
-
-#include <e32debug.h>
-#include "hglogging.h"
-
-#endif // PREVIEWPROVIDERLOGGING_H
-
-// End of file
--- a/taskswitcher/contextengine/hgfswpreviewprovider/rom/hgfastswappreviewprovider.iby	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-/*
-* ==============================================================================
-*  Name        : %name: hgfastswappreviewprovider.iby %
-*  Part of     : Hg fast swap previer provider plugin
-*  Description : IBY file
-*  Version     : %version: sa1spcx1#2 %
-*
-*  Copyright (c) 2008 Nokia Corporation.
-*  This material, including documentation and any related
-*  computer programs, is protected by copyright controlled by
-*  Nokia Corporation. All rights are reserved. Copying,
-*  including reproducing, storing, adapting or translating, any
-*  or all of this material requires the prior written consent of
-*  Nokia Corporation. This material also contains confidential
-*  information which may not be disclosed to others without the
-*  prior written consent of Nokia Corporation.
-* ==============================================================================
-*/
-
-#ifndef HGFASTSWAPPREVIEWPROVIDER_IBY
-#define HGFASTSWAPPREVIEWPROVIDER_IBY
-
-#include <data_caging_paths_for_iby.hrh>
-
-// fsw preview
-ECOM_PLUGIN( 20016BEC.DLL, 20016BEC.rsc )
-file=ABI_DIR/BUILD_DIR/hgpreviewprovider.dll    SHARED_LIB_DIR/hgpreviewprovider.dll
-
-#endif // HGFASTSWAPPREVIEWPROVIDER_IBY
--- a/taskswitcher/contextengine/hgfswpreviewprovider/src/previewprovider.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,586 +0,0 @@
-/*
-* ==============================================================================
-*  Name        : %name: previewprovider.cpp %
-*  Part of     : Hg fast swap preview provider plugin
-*  Description : Preview provider API
-*  Version     : %version: sa1spcx1#3 %
-*
-*  Copyright (c) 2008 Nokia Corporation.
-*  This material, including documentation and any related
-*  computer programs, is protected by copyright controlled by
-*  Nokia Corporation. All rights are reserved. Copying,
-*  including reproducing, storing, adapting or translating, any
-*  or all of this material requires the prior written consent of
-*  Nokia Corporation. This material also contains confidential
-*  information which may not be disclosed to others without the
-*  prior written consent of Nokia Corporation.
-* ==============================================================================
-*/
-
-#include "hgpreviewprovider.h"
-#include "hgpreviewobserver.h"
-#include "previewmsg.h"
-#include "previewproviderlogging.h"
-#include <w32std.h>
-#include <s32mem.h>
-#include <e32property.h>
-
-#define SZ( x ) ( sizeof( x ) / sizeof( TInt ) )
-
-// CONSTANTS
-
-// Publish & subscribe UID (akncapserver.exe SID so that it can define the keys)
-const TUid KPSUidPreviewProvider = { 0x10207218 };
-
-// P&S keys
-const TUint32 KPSKeyWgId = 0x20016BE1;
-const TUint32 KPSKeyFbsBitmapId = 0x20016BE2;
-const TUint32 KPSKeyOperation = 0x20016BE3;
-
-/**
- * Operation which will be done after P&S keys have changed.
- */
-enum TPreviewOperation
-    {
-    EOperationNone,
-    EOperationUnregister,
-    EOperationBitmapUpdated
-    };
-
-/**
- * CPropertyListener
- */
-NONSHARABLE_CLASS( CPropertyListener ) : public CActive
-    {
-public:
-    static CPropertyListener* NewL( MHgFastSwapPreviewObserver& aObs );
-    virtual ~CPropertyListener();
-    
-protected:
-    CPropertyListener( MHgFastSwapPreviewObserver& aObs );
-    void ConstructL();  
-
-private: // From CActive
-    void RunL();
-    void DoCancel();
-    
-private:    
-    void ReadPropertiesL();
-    void DefinePropertyL( TInt aPSKey ); 
-    void Subscribe();
-
-private:
-    MHgFastSwapPreviewObserver& iObs;
-    RProperty iProperty;
-   
-    TInt iWgId;
-    TInt iFbsBitmapId;
-    
-    TPreviewOperation iOperation;
-    };
-
-// --------------------------------------------------------------------------
-// CPropertyListener::~CPropertyListener
-// --------------------------------------------------------------------------
-//
-CPropertyListener::~CPropertyListener()
-    {
-    Cancel();
-    iProperty.Close();
-    }
-
-// --------------------------------------------------------------------------
-// CPropertyListener::CPropertyListener
-// --------------------------------------------------------------------------
-//
-CPropertyListener::CPropertyListener( MHgFastSwapPreviewObserver& aObs ) : 
-    CActive( CActive::EPriorityHigh ), iObs( aObs )
-    {
-    }
-
-// --------------------------------------------------------------------------
-// CPropertyListener::NewL
-// --------------------------------------------------------------------------
-//
-CPropertyListener* CPropertyListener::NewL( MHgFastSwapPreviewObserver& aObs )
-    {
-    CPropertyListener* self = new ( ELeave ) CPropertyListener( aObs );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;    
-    }
-
-// --------------------------------------------------------------------------
-// CPropertyListener::RunL
-// --------------------------------------------------------------------------
-//
-void CPropertyListener::RunL()
-    {
-    // Resubscribe before processing new value to prevent missing updates
-    Subscribe();
-    
-    // Read all properties to member variables
-    ReadPropertiesL();
-    
-    // Do the callback
-    switch( iOperation )
-        {
-        case EOperationUnregister:
-            {
-            iObs.HandleFswPpApplicationUnregistered( iWgId );
-            break;            
-            }        
-        case EOperationBitmapUpdated:
-            {
-            iObs.HandleFswPpApplicationChange( iWgId, iFbsBitmapId );
-            break;
-            }
-        default:
-            break;
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CPropertyListener::DoCancel
-// --------------------------------------------------------------------------
-//
-void CPropertyListener::DoCancel()
-    {
-    iProperty.Cancel();
-    }
-
-// --------------------------------------------------------------------------
-// CPropertyListener::ReadProperties
-// --------------------------------------------------------------------------
-//
-void CPropertyListener::ReadPropertiesL()
-    {
-    // Read all properties
-    User::LeaveIfError( iProperty.Get( KPSUidPreviewProvider, KPSKeyWgId, iWgId ) );
-    User::LeaveIfError( iProperty.Get( KPSUidPreviewProvider, KPSKeyFbsBitmapId, iFbsBitmapId ) );
-    TInt operation( 0 );
-    User::LeaveIfError( iProperty.Get( KPSUidPreviewProvider, KPSKeyOperation, operation ) );
-    iOperation = static_cast<TPreviewOperation>( operation );    
-    }
-
-// --------------------------------------------------------------------------
-// CPropertyListener::DefinePropertyL
-// --------------------------------------------------------------------------
-//
-void CPropertyListener::DefinePropertyL( TInt aPSKey )
-    {
-    TInt err = RProperty::Define( KPSUidPreviewProvider, aPSKey, RProperty::EInt );
-    // Don't mind the already exists error
-    if ( err != KErrAlreadyExists && err != KErrPermissionDenied )
-        {
-        User::LeaveIfError( err );
-        }    
-    }
-
-// --------------------------------------------------------------------------
-// CPropertyListener::Subscribe
-// --------------------------------------------------------------------------
-//
-void CPropertyListener::Subscribe()
-    {
-    iProperty.Subscribe( iStatus );
-    SetActive();  
-    }
-
-// --------------------------------------------------------------------------
-// CPropertyListener::ConstructL
-// --------------------------------------------------------------------------
-//
-void CPropertyListener::ConstructL()
-    {
-    HGLOG_CONTEXT( ConstructL, HGLOG_LOCAL );
-    HGLOG_IN();
-    
-    DefinePropertyL( KPSKeyWgId );
-    DefinePropertyL( KPSKeyFbsBitmapId );
-    DefinePropertyL( KPSKeyOperation );
-    
-    User::LeaveIfError( iProperty.Attach( KPSUidPreviewProvider, KPSKeyWgId ) );
-    CActiveScheduler::Add( this );
-    
-    // initial subscription
-    Subscribe();
-    
-    HGLOG_OUT();    
-    }
-
-/**
- * CHgFastSwapPreviewProviderClient
- */
-NONSHARABLE_CLASS( CHgFastSwapPreviewProviderClient ) : public CWsGraphic
-    {
-public:
-    CHgFastSwapPreviewProviderClient( MHgFastSwapPreviewObserver& aObs );
-    void ConstructL();
-    void Register( TInt aWgId );
-    void Unregister( TInt aWgId );
-    void ChangeScreen( TInt aScreenNo );
-    void SetPreviewParam( const TSize& aSize, TDisplayMode aMode );
-    void TakePreview();
-    void AckPreview( TInt aPreviewId );
-    virtual ~CHgFastSwapPreviewProviderClient();
-private:
-    void HandleMessage( const TDesC8& aData );
-    void OnReplace();
-private:
-    void DoHandleMessageL( const TDesC8& aData );
-    void SetProperties( TInt aHandle, TInt aWgId, TInt aOp );    
-private:
-    MHgFastSwapPreviewObserver& iObs;
-    CPropertyListener* iListener;
-    };
-
-
-// --------------------------------------------------------------------------
-// CHgFastSwapPreviewProviderClient::CHgFastSwapPreviewProviderClient
-// --------------------------------------------------------------------------
-//
-CHgFastSwapPreviewProviderClient::CHgFastSwapPreviewProviderClient(
-        MHgFastSwapPreviewObserver& aObs ) : iObs( aObs )
-    {
-    }
-
-// --------------------------------------------------------------------------
-// CHgFastSwapPreviewProviderClient::~CHgFastSwapPreviewProviderClient
-// --------------------------------------------------------------------------
-//
-CHgFastSwapPreviewProviderClient::~CHgFastSwapPreviewProviderClient()
-    {
-    delete iListener;
-    }
-
-// --------------------------------------------------------------------------
-// CHgFastSwapPreviewProviderClient::ConstructL
-// --------------------------------------------------------------------------
-//
-void CHgFastSwapPreviewProviderClient::ConstructL()
-    {
-    HGLOG_CONTEXT( ConstructL, HGLOG_LOCAL );
-    HGLOG_IN();
-
-    const TUid id = { 0x20016BEC };
-    BaseConstructL( id, KNullDesC8 );
-    iListener = CPropertyListener::NewL( iObs );
-    
-    HGLOG_OUT();        
-    }    
-
-// --------------------------------------------------------------------------
-// CHgFastSwapPreviewProviderClient::Register
-// --------------------------------------------------------------------------
-//    
-void CHgFastSwapPreviewProviderClient::Register( TInt aWgId )
-    {
-    HGLOG_CONTEXT( Register, HGLOG_LOCAL );
-    HGLOG_IN();
-    
-    const TInt msg[] = {
-        NPreviewMsg::ERegister,
-        aWgId
-        };
-    TPckgC<TInt[SZ(msg)]> buf(msg);
-    SendMessage(buf);
-    Flush();
-
-    HGLOG_OUT();
-    }
-
-// --------------------------------------------------------------------------
-// CHgFastSwapPreviewProviderClient::Unregister
-// --------------------------------------------------------------------------
-//    
-void CHgFastSwapPreviewProviderClient::Unregister( TInt aWgId )
-    {
-    HGLOG_CONTEXT( Unregister, HGLOG_LOCAL );
-    HGLOG_IN();
-
-    const TInt msg[] = {
-        NPreviewMsg::EUnregister,
-        aWgId
-        };
-    TPckgC<TInt[SZ(msg)]> buf(msg);
-    SendMessage(buf);
-    Flush();
-    
-    HGLOG_OUT();
-    }
-
-// --------------------------------------------------------------------------
-// CHgFastSwapPreviewProviderClient::ChangeScreen
-// --------------------------------------------------------------------------
-//    
-void CHgFastSwapPreviewProviderClient::ChangeScreen( TInt aScreenNo )
-    {
-    HGLOG_CONTEXT( ChangeScreen, HGLOG_LOCAL );
-    HGLOG_IN();
-    
-    const TInt msg[] = {
-        NPreviewMsg::EChangeScreen,
-        aScreenNo
-        };
-    TPckgC<TInt[SZ(msg)]> buf(msg);
-    SendMessage(buf);
-    Flush();
-    
-    HGLOG_OUT();     
-    }
-
-// --------------------------------------------------------------------------
-// CHgFastSwapPreviewProviderClient::SetPreviewParam
-// --------------------------------------------------------------------------
-//    
-void CHgFastSwapPreviewProviderClient::SetPreviewParam(const TSize& aSize,
-        TDisplayMode aMode)
-    {
-    HGLOG_CONTEXT( SetPreviewParam, HGLOG_LOCAL );
-    HGLOG_IN();
-    
-    const TInt msg[] = {
-        NPreviewMsg::ESetPreviewParam,
-        aSize.iWidth,
-        aSize.iHeight,
-        static_cast<TInt>(aMode)
-        };
-    TPckgC<TInt[SZ(msg)]> buf(msg);
-    SendMessage(buf);
-    Flush();
-
-    HGLOG_OUT();
-    }
-
-// --------------------------------------------------------------------------
-// CHgFastSwapPreviewProviderClient::TakePreview 
-// --------------------------------------------------------------------------
-//    
-void CHgFastSwapPreviewProviderClient::TakePreview()
-    {
-    HGLOG_CONTEXT( TakePreview, HGLOG_LOCAL );
-    HGLOG_IN();
-    
-    TPckgC<TInt> buf(NPreviewMsg::ETakePreview);
-    SendMessage(buf);
-    Flush();
-    
-    HGLOG_OUT();      
-    }
-
-// --------------------------------------------------------------------------
-// CHgFastSwapPreviewProviderClient::AckPreview 
-// --------------------------------------------------------------------------
-//
-void CHgFastSwapPreviewProviderClient::AckPreview( TInt aPreviwId )
-    {
-    HGLOG_CONTEXT( TakePreview, HGLOG_LOCAL );
-    HGLOG_IN();
-    
-    const TInt msg[] = { NPreviewMsg::EAckPreviewReady,
-                         aPreviwId };
-    TPckgC<TInt[SZ(msg)]> buf(msg);
-    SendMessage(buf);
-    Flush();
-    
-    HGLOG_OUT();
-    }
-
-// --------------------------------------------------------------------------
-// CHgFastSwapPreviewProviderClient::HandleMessage
-// --------------------------------------------------------------------------
-//    
-void CHgFastSwapPreviewProviderClient::HandleMessage( const TDesC8& aData )
-    {
-    TRAP_IGNORE(DoHandleMessageL(aData));
-    }
-
-// --------------------------------------------------------------------------
-// CHgFastSwapPreviewProviderClient::DoHandleMessageL
-// --------------------------------------------------------------------------
-//
-void CHgFastSwapPreviewProviderClient::DoHandleMessageL( const TDesC8& aData )
-    {
-    HGLOG_CONTEXT( DoHandleMessageL, HGLOG_LOCAL );
-    HGLOG_IN();
-    
-    RDesReadStream in( aData );
-    TInt message = in.ReadInt32L();
-    switch ( message )
-        {
-        case NPreviewMsg::EPreviewReady:
-            {
-            const TInt id = in.ReadInt32L();
-            const TInt handle = in.ReadInt32L();    
-            SetProperties( handle, id, EOperationBitmapUpdated );
-            }
-            break;
-        case NPreviewMsg::EUnregisterReady:
-            {
-            const TInt id = in.ReadInt32L();
-            const TInt handle = in.ReadInt32L();
-            SetProperties( handle, id, EOperationUnregister );
-            }
-            break;
-        }
-
-    HGLOG_OUT();
-    }
-
-// --------------------------------------------------------------------------
-// CHgFastSwapPreviewProviderClient::SetProperties
-// --------------------------------------------------------------------------
-//
-void CHgFastSwapPreviewProviderClient::SetProperties(TInt aHandle, TInt aWgId,
-        TInt aOp)
-    {
-    // Notify CPropertyListener via P&S
-    RProperty::Set( KPSUidPreviewProvider, KPSKeyFbsBitmapId, aHandle );
-    RProperty::Set( KPSUidPreviewProvider, KPSKeyOperation, aOp );
-    // KPSKeyWgId should be notified first since that is being listened 
-    // by CPropertyListener 
-    RProperty::Set( KPSUidPreviewProvider, KPSKeyWgId, aWgId );    
-    }
-
-// --------------------------------------------------------------------------
-// CHgFastSwapPreviewProviderClient::OnReplace
-// --------------------------------------------------------------------------
-//
-void CHgFastSwapPreviewProviderClient::OnReplace()
-    {
-    }
-    
-/////////////////////////////////////////////////////////////////////////////
-
-
-// --------------------------------------------------------------------------
-// CHgFastSwapPreviewProvider::NewL
-// --------------------------------------------------------------------------
-//
-EXPORT_C CHgFastSwapPreviewProvider* CHgFastSwapPreviewProvider::NewL(
-        MHgFastSwapPreviewObserver& aObs)
-    {
-    CHgFastSwapPreviewProvider* p = new (ELeave) CHgFastSwapPreviewProvider();
-    CleanupStack::PushL( p );
-    p->ConstructL( aObs );
-    CleanupStack::Pop( p );
-    return p;
-    }
-
-// --------------------------------------------------------------------------
-// CHgFastSwapPreviewProvider::~CHgFastSwapPreviewProvider
-// --------------------------------------------------------------------------
-//    
-EXPORT_C CHgFastSwapPreviewProvider::~CHgFastSwapPreviewProvider()
-    {
-    if ( iClient )
-        {
-        iClient->Destroy();
-        }
-    delete iClient;
-    }
-
-// --------------------------------------------------------------------------
-// CHgFastSwapPreviewProvider::Register
-// --------------------------------------------------------------------------
-//    
-EXPORT_C TInt CHgFastSwapPreviewProvider::Register( TInt aWgId )
-    {
-    iClient->Register( aWgId );
-    return KErrNone;
-    }
-
-// --------------------------------------------------------------------------
-// CHgFastSwapPreviewProvider::Unregister
-// --------------------------------------------------------------------------
-//    
-EXPORT_C TInt CHgFastSwapPreviewProvider::Unregister( TInt aWgId )    
-    {
-    iClient->Unregister( aWgId );
-    return KErrNone;
-    }
-
-// --------------------------------------------------------------------------
-// CHgFastSwapPreviewProvider::ChangeScreen
-// --------------------------------------------------------------------------
-//    
-EXPORT_C TInt CHgFastSwapPreviewProvider::ChangeScreen( TInt aScreenId )
-    {
-    iClient->ChangeScreen( aScreenId );
-    return KErrNone;
-    }    
-
-// --------------------------------------------------------------------------
-// CHgFastSwapPreviewProvider::SetPreviewParam
-// --------------------------------------------------------------------------
-//
-EXPORT_C TInt CHgFastSwapPreviewProvider::SetPreviewParam(const TSize& aSize,
-        TDisplayMode aMode)
-    {
-    HGLOG_CONTEXT( SetPreviewParam, HGLOG_LOCAL );
-    HGLOG_IN();
-    
-    TInt error( KErrNone );
-    
-    if ( aMode == ENone || aMode == EColor64K )
-        {
-        iClient->SetPreviewParam( aSize, aMode );        
-        }
-    else
-        {
-        error = KErrNotSupported;
-        }
-   
-    HGLOG_OUT();
-    return error;
-    }
-
-// --------------------------------------------------------------------------
-// CHgFastSwapPreviewProvider::TakePreview
-// --------------------------------------------------------------------------
-//    
-EXPORT_C TInt CHgFastSwapPreviewProvider::TakePreview()
-    {
-    // Reset timer for screensaver (dismiss screensaver)
-    User::ResetInactivityTime(); 
-           
-    iClient->TakePreview();
-    return KErrNone;
-    }
-
-// --------------------------------------------------------------------------
-// CHgFastSwapPreviewProvider::AckPreview
-// --------------------------------------------------------------------------
-//
-EXPORT_C void CHgFastSwapPreviewProvider::AckPreview( TInt aPreviewId )
-    {
-    iClient->AckPreview( aPreviewId );
-    }
-
-// --------------------------------------------------------------------------
-// CHgFastSwapPreviewProvider::CHgFastSwapPreviewProvider
-// --------------------------------------------------------------------------
-//    
-CHgFastSwapPreviewProvider::CHgFastSwapPreviewProvider()
-    {
-    }
-
-// --------------------------------------------------------------------------
-// CHgFastSwapPreviewProvider::ConstructL
-// --------------------------------------------------------------------------
-//    
-void CHgFastSwapPreviewProvider::ConstructL( MHgFastSwapPreviewObserver& aObs )
-    {
-    HGLOG_CONTEXT( ConstructL, HGLOG_LOCAL );
-    HGLOG_IN();
-    
-    iClient = new ( ELeave ) CHgFastSwapPreviewProviderClient( aObs );
-    iClient->ConstructL();
-    
-    HGLOG_OUT();
-    }
-
-// End of file
-
--- a/taskswitcher/contextengine/hgfswpreviewprovider/wsplugin/group/bld.inf	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-/*
-* ==============================================================================
-*  Name        : %name: bld.inf %
-*  Part of     : Hg fast swap preview provider plugin
-*  Description : bld.inf
-*  Version     : %version: 1 %
-*
-*  Copyright (c) 2008 Nokia Corporation.
-*  This material, including documentation and any related
-*  computer programs, is protected by copyright controlled by
-*  Nokia Corporation. All rights are reserved. Copying,
-*  including reproducing, storing, adapting or translating, any
-*  or all of this material requires the prior written consent of
-*  Nokia Corporation. This material also contains confidential
-*  information which may not be disclosed to others without the
-*  prior written consent of Nokia Corporation.
-* ==============================================================================
-*/
-
-#include <platform_paths.hrh>
-
-PRJ_PLATFORMS
-DEFAULT
-
-PRJ_MMPFILES
-previewprovidercrp.mmp
--- a/taskswitcher/contextengine/hgfswpreviewprovider/wsplugin/group/previewprovidercrp.mmp	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-/*
-* ==============================================================================
-*  Name        : %name: previewprovidercrp.mmp %
-*  Part of     : Hg fast swap preview provider plugin
-*  Description : MMP file for preview provider ECOM plugin
-*  Version     : %version: sa1spcx1#4 %
-*
-*  Copyright (c) 2008 Nokia Corporation.
-*  This material, including documentation and any related
-*  computer programs, is protected by copyright controlled by
-*  Nokia Corporation. All rights are reserved. Copying,
-*  including reproducing, storing, adapting or translating, any
-*  or all of this material requires the prior written consent of
-*  Nokia Corporation. This material also contains confidential
-*  information which may not be disclosed to others without the
-*  prior written consent of Nokia Corporation.
-* ==============================================================================
-*/
-#include <platform_paths.hrh>
-#include <defaultcaps.hrh>
-
-TARGET          20016BEC.DLL
-TARGETTYPE      PLUGIN 
-UID             0x10009D8D 0x20016BEC
-CAPABILITY      CAP_ECOM_PLUGIN
-VENDORID        VID_DEFAULT
-
-OPTION_REPLACE  ARMCC --arm -O3 --cpu 6
-
-USERINCLUDE     ../inc
-USERINCLUDE     ../../inc
-USERINCLUDE     ../../../trace
-
-MW_LAYER_SYSTEMINCLUDE
-
-SOURCEPATH      ../src
-SOURCE          previewprovidercrp.cpp
-
-RESOURCE        20016BEC.rss
-
-LIBRARY         ecom.lib
-LIBRARY         euser.lib
-LIBRARY         wsgraphicdrawer.lib
-LIBRARY         fbscli.lib
-LIBRARY         estor.lib 
-LIBRARY         gdi.lib 
-DEBUGLIBRARY    flogger.lib
--- a/taskswitcher/contextengine/hgfswpreviewprovider/wsplugin/inc/previewprovidercrp.h	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,179 +0,0 @@
-/*
-* ==============================================================================
-*  Name        : %name: previewprovidercrp.h %
-*  Part of     : Hg fast swap preview provider plugin
-*  Description : Preview provider ECOM plugin
-*  Version     : %version: sa1spcx1#3 %
-*
-*  Copyright (c) 2008 Nokia Corporation.
-*  This material, including documentation and any related
-*  computer programs, is protected by copyright controlled by
-*  Nokia Corporation. All rights are reserved. Copying,
-*  including reproducing, storing, adapting or translating, any
-*  or all of this material requires the prior written consent of
-*  Nokia Corporation. This material also contains confidential
-*  information which may not be disclosed to others without the
-*  prior written consent of Nokia Corporation.
-* ==============================================================================
-*/
-
-#ifndef PREVIEWPROVIDERCRP_H
-#define PREVIEWPROVIDERCRP_H
-
-// INCLUDES
-#include <w32std.h>
-#include <graphics/wsgraphicdrawerinterface.h>
-#include <graphics/wsgraphicdrawer.h>
-
-// Number of screenshots used at the same time,
-// each window group change will cause a screenshot
-// to one of these, the index for the current one is
-// switched after each screenshot capture. (this is needed
-// to prevent overwriting screenshots before the client could
-// make a copy of them)
-const TInt KMaxShots = 4;
-
-/**
- * Preview provider window server ECOM plugin class.
- */
-NONSHARABLE_CLASS( CPreviewProviderCRP ) : public CWsGraphicDrawer, 
-                                           public MWsEventHandler 
-    {
-public:
-
-    /**
-     * Creates a new instance of the plguin.
-     *
-     * @return Created instance.
-     */ 
-    static CWsGraphicDrawer* CreateL();
-    
-    /**
-     * Destructor
-     */ 
-    ~CPreviewProviderCRP();
-    
-private:
-
-    /**
-     * From CWsGraphicDrawer.
-     *
-     * @param aGc
-     * @param aRect
-     * @param aData
-     */ 
-    void DoDraw( MWsGc& aGc, const TRect& aRect, const TDesC8& aData ) const;
-    
-    /**
-     * Handles message from PreviewProviderClient.
-     *
-     * @param aData Message data.
-     */ 
-    void HandleMessage( const TDesC8& aData );
-
-    /**
-     * 2nd phase constructor.
-     *
-     * @param aEnv
-     * @param aId
-     * @param aOwner
-     * @param aData
-     */     
-    void ConstructL( MWsGraphicDrawerEnvironment& aEnv, 
-                     const TGraphicDrawerId& aId, 
-                     MWsClient& aOwner, 
-                     const TDesC8& aData );
-    
-    /**
-     * From MWsEventHandler.
-     * 
-     * Observer for TWservCrEvent::EWindowGroupChanged to take the screenshot
-     * when application changes.
-     *
-     * @param aEvent
-     */     
-    void DoHandleEvent( const TWservCrEvent& aEvent );
-    
-private:
-
-    /**
-     * 2nd phase constructor.
-     */ 
-    void ConstructL();
-    
-    /**
-     * Handles application registration.
-     *
-     * @param aWgId Window group id.
-     */ 
-    void Register( TInt aWgId );
-    
-    /**
-     * Handler application unregistration.
-     *
-     * @param aWgId Window group id.
-     */     
-    void Unregister( TInt aWgId );
-    
-    /*
-     * Allocate resources and take screenshot
-     */
-    void ScreenshotL();
-    
-    /**
-     * Takes the screenshot.
-     */     
-    void ScreenshotL( CFbsBitmap& aBitmap );
-    
-    /**
-     * Remove bitmap reference fom list
-     */
-    void RemoveScreenshot( TInt aBitmapHandle );
-    
-    /**
-     * Remove all bitmaps overflow
-     */
-    void CheckOverflow();
-    
-    /**
-     * Handles message from PreviewProviderClient.
-     *
-     * @param aData Message data.
-     */     
-    void DoHandleMessageL( const TDesC8& aData );
-    
-    /**
-     * Notifies the PreviewProviderClient when screenshot is ready for copying.
-     */     
-    void ScaleCompleteL(const CFbsBitmap& aBitmap);
-    
-    /**
-     * Notifies the PreviewProviderClient when an application has been exited.
-     */
-    void UnregisterComplete( TInt aWgId );
-    
-    /**
-     * Uses window server front buffer to create a screenshot.
-     * @param aFront preallocated destination bitmap
-     * @param aFront Front buffer. 
-     * @param aSrcSize Size of the source front buffer in pixels.
-     * @param aSrcStride Source stride.
-     */
-    void FrontBufferScreenShot(
-        CFbsBitmap& aBitmap,
-        MWsFrontBuffer& aFront, const TSize& aSrcSize, TInt aSrcStride );  
-    
-private:
-    TInt iScreen;
-    TInt iPrevId;
-    TInt iPrevReg; // to work around the problem with wgid not set when app brought 
-                   // to foreground first time
-    RPointerArray<CFbsBitmap> iScreenshots;
-    TSize iScreenshotSize;
-    TDisplayMode iScreenshotMode;
-    RArray<TInt> iWgIds;
-    };
-
-#endif // PREVIEWPROVIDERCRP_H
-
-// End of file
--- a/taskswitcher/contextengine/hgfswpreviewprovider/wsplugin/inc/previewprovidercrplogging.h	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-/*
-* ============================================================================
-*  Name        : %name: previewprovidercrplogging.h %
-*  Part of     : Hg fast swap preview provider plugin
-*  Description : Header file used for logging
-*  Version     : %version: 1 %
-*
-*  Copyright © 2008 Nokia.  All rights reserved.
-*  This material, including documentation and any related computer
-*  programs, is protected by copyright controlled by Nokia.  All
-*  rights are reserved.  Copying, including reproducing, storing,
-*  adapting or translating, any or all of this material requires the
-*  prior written consent of Nokia.  This material also contains
-*  confidential information which may not be disclosed to others
-*  without the prior written consent of Nokia.
-* ============================================================================
-* 
-*/
-
-#ifndef PREVIEWPROVIDERCRPLOGGING_H
-#define PREVIEWPROVIDERCRPLOGGING_H
-
-_LIT( KHgLogFile, "hgpreviewprovidercrp.txt" );
-_LIT( KHgLogPath, "hgpreviewprovider" );
-#define _HGLOG_LOG_COMPONENT_ID 6715358
-//#define _HGLOG_RDEBUG
-
-#include <e32debug.h>
-#include "hglogging.h"
-
-#endif // PREVIEWPROVIDERCRPLOGGING_H
-
-// End of file
--- a/taskswitcher/contextengine/hgfswpreviewprovider/wsplugin/src/20016BEC.rss	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-/*
-* ==============================================================================
-*  Name        : %name: 20016BEC.rss %
-*  Part of     : Hg fast swap previer provider plugin
-*  Description : ECOM registration file
-*  Version     : %version: sa1spcx1#2 %
-*
-*  Copyright (c) 2008 Nokia Corporation.
-*  This material, including documentation and any related
-*  computer programs, is protected by copyright controlled by
-*  Nokia Corporation. All rights are reserved. Copying,
-*  including reproducing, storing, adapting or translating, any
-*  or all of this material requires the prior written consent of
-*  Nokia Corporation. This material also contains confidential
-*  information which may not be disclosed to others without the
-*  prior written consent of Nokia Corporation.
-* ==============================================================================
-*/
-
-#include <ecom/registryinfo.rh>
-
-RESOURCE REGISTRY_INFO theInfo
-	{
-	dll_uid = 0x20016BEC;
-	interfaces =
-		{
-		INTERFACE_INFO
-			{
-			interface_uid = 0x10281924;
-			implementations =
-				{
-				IMPLEMENTATION_INFO
-					{
-					implementation_uid = 0x20016BEC;
-					version_no = 1;
-					display_name = "previewprovider";
-					default_data = "";
-					opaque_data = "";
-					}
-				};
-			}
-		};
-	}
--- a/taskswitcher/contextengine/hgfswpreviewprovider/wsplugin/src/previewprovidercrp.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,437 +0,0 @@
-/*
-* ==============================================================================
-*  Name        : %name: previewprovidercrp.cpp %
-*  Part of     : Hg fast swap preview provider plugin
-*  Description : Preview provider ECOM plugin
-*  Version     : %version: sa1spcx1#8 %
-*
-*  Copyright (c) 2008 Nokia Corporation.
-*  This material, including documentation and any related
-*  computer programs, is protected by copyright controlled by
-*  Nokia Corporation. All rights are reserved. Copying,
-*  including reproducing, storing, adapting or translating, any
-*  or all of this material requires the prior written consent of
-*  Nokia Corporation. This material also contains confidential
-*  information which may not be disclosed to others without the
-*  prior written consent of Nokia Corporation.
-* ==============================================================================
-*/
-
-#include <bldvariant.hrh>
-#ifdef SYMBIAN_BUILD_GCE
-#define NGA
-#endif
-
-#include "previewprovidercrp.h"
-#include "previewmsg.h"
-#include "previewprovidercrplogging.h"
-#include <ecom/implementationproxy.h>
-#include <s32mem.h> //RDesReadStream
-
-#ifdef NGA
-#include <graphics/wsscreendevice.h>
-#endif
-
-// CONSTANTS
-const TInt KImpId( 0x20016BEC );
-
-// --------------------------------------------------------------------------
-// CPreviewProviderCRP::CreateL
-// --------------------------------------------------------------------------
-//
-CWsGraphicDrawer* CPreviewProviderCRP::CreateL()
-    {
-    CPreviewProviderCRP* crp = new (ELeave) CPreviewProviderCRP();
-    CleanupStack::PushL( crp );
-    crp->ConstructL();
-    CleanupStack::Pop( crp );
-    return crp;
-    }
-
-// --------------------------------------------------------------------------
-// CPreviewProviderCRP::ConstructL
-// --------------------------------------------------------------------------
-//    
-void CPreviewProviderCRP::ConstructL()
-    { 
-    }
-
-// --------------------------------------------------------------------------
-// CPreviewProviderCRP::~CPreviewProviderCRP
-// --------------------------------------------------------------------------
-//    
-CPreviewProviderCRP::~CPreviewProviderCRP()    
-    {
-    Env().UnregisterEventHandler( this );
-    iScreenshots.ResetAndDestroy();
-    iWgIds.Close();
-    }
-
-// --------------------------------------------------------------------------
-// CPreviewProviderCRP::DoDraw
-// --------------------------------------------------------------------------
-//
-void CPreviewProviderCRP::DoDraw( MWsGc& /*aGc*/, const TRect& /*aRect*/, 
-    const TDesC8& /*aData*/) const
-    {
-    //draws nothing
-    }
-
-// --------------------------------------------------------------------------
-// CPreviewProviderCRP::HandleMessage
-// --------------------------------------------------------------------------
-//    
-void CPreviewProviderCRP::HandleMessage( const TDesC8& aData )
-    {
-    TRAP_IGNORE( DoHandleMessageL( aData ) );
-    }
-    
-// --------------------------------------------------------------------------
-// CPreviewProviderCRP::DoHandleMessageL
-// --------------------------------------------------------------------------
-//    
-void CPreviewProviderCRP::DoHandleMessageL( const TDesC8& aData )
-    {  
-    HGLOG_CONTEXT( DoHandleMessageL, HGLOG_LOCAL );
-    HGLOG_IN();
-    
-    RDesReadStream in( aData );
-    switch( in.ReadInt32L() )
-        {
-        case NPreviewMsg::ERegister:
-            {
-            const TInt id = in.ReadInt32L();
-            Register( id );
-            }
-            break;
-        case NPreviewMsg::EUnregister:
-            {
-            const TInt id = in.ReadInt32L();
-            Unregister( id );
-            }
-            break;
-        case NPreviewMsg::EChangeScreen:
-            {
-            const TInt screen = in.ReadInt32L();
-            if ( Env().ScreenCount() )
-                {
-                iScreen = screen;
-                }
-            }
-            break;
-        case NPreviewMsg::ESetPreviewParam:
-            iScreenshotSize.iWidth = in.ReadInt32L();
-            iScreenshotSize.iHeight = in.ReadInt32L();
-            iScreenshotMode = static_cast<TDisplayMode>( in.ReadInt32L() );
-            break;
-        case NPreviewMsg::ETakePreview:
-            ScreenshotL();
-            break;
-        case NPreviewMsg::EAckPreviewReady:
-            RemoveScreenshot( in.ReadInt32L() );
-            break;
-        }
-    
-    HGLOG_OUT();
-    }
-
-// --------------------------------------------------------------------------
-// CPreviewProviderCRP::ConstructL
-// --------------------------------------------------------------------------
-//    
-void CPreviewProviderCRP::ConstructL( MWsGraphicDrawerEnvironment& aEnv,
-    const TGraphicDrawerId& aId, MWsClient& aOwner, const TDesC8& /*aData*/ )
-    {
-    HGLOG_CONTEXT( ConstructL, HGLOG_LOCAL );
-    HGLOG_IN();
-    
-    BaseConstructL( aEnv, aId, aOwner );
-    aEnv.RegisterEventHandler( this, this, TWservCrEvent::EWindowGroupChanged );
-    
-    HGLOG_OUT();
-    }
-    
-// --------------------------------------------------------------------------
-// CPreviewProviderCRP::DoHandleEvent
-// --------------------------------------------------------------------------
-//    
-void CPreviewProviderCRP::DoHandleEvent( const TWservCrEvent& aEvent )
-    {
-    HGLOG_CONTEXT( DoHandleEvent, HGLOG_LOCAL );
-    HGLOG_IN();
-    
-    if ( aEvent.Type() == TWservCrEvent::EWindowGroupChanged )
-        {
-        const TInt wgId = aEvent.WindowGroupIdentifier();
-        if ( iWgIds.FindInOrder( iPrevId ) >= 0 ||
-            ( iPrevId == 0 &&  iPrevReg != 0 ) )
-            {
-            TRAP_IGNORE( ScreenshotL() );
-            iPrevReg = 0;
-            }
-        iPrevId = wgId;
-        }
-    
-    HGLOG_OUT();
-    }
-    
-// --------------------------------------------------------------------------
-// CPreviewProviderCRP::ScaleComplete
-// --------------------------------------------------------------------------
-//    
-void CPreviewProviderCRP::ScaleCompleteL( const CFbsBitmap& aBitmap )
-    {
-    HGLOG_CONTEXT( ScaleComplete, HGLOG_LOCAL );
-    HGLOG_IN();
-    
-    const TInt msg[] = {
-            NPreviewMsg::EPreviewReady,
-            iPrevId?iPrevId:iPrevReg,
-            aBitmap.Handle()
-            };
-    TPckgC<TInt[sizeof(msg) / sizeof(TInt)]> buf(msg);
-    User::LeaveIfError( SendMessage( buf ) );
-    HGLOG3( HGLOG_INFO, "size = %dx%d handle = %d",
-        aBitmap.SizeInPixels().iWidth,
-        aBitmap.SizeInPixels().iHeight,
-        aBitmap.Handle() );
-    HGLOG_OUT();
-    }
-
-// --------------------------------------------------------------------------
-// CPreviewProviderCRP::UnregisterComplete
-// --------------------------------------------------------------------------
-//    
-void CPreviewProviderCRP::UnregisterComplete( TInt aWgId )
-    {
-    HGLOG_CONTEXT( UnregisterComplete, HGLOG_LOCAL );
-    HGLOG_IN();
-    
-    const TInt msg[] = {
-            NPreviewMsg::EUnregisterReady,
-            aWgId,
-            0
-            };
-    TPckgC<TInt[sizeof(msg) / sizeof(TInt)]> buf(msg);
-    SendMessage(buf);
-    
-    HGLOG_OUT();
-    }
-
-// --------------------------------------------------------------------------
-// CPreviewProviderCRP::Register
-// --------------------------------------------------------------------------
-//    
-void CPreviewProviderCRP::Register( TInt aWgId )
-    {
-    HGLOG_CONTEXT( Register, HGLOG_LOCAL );
-    HGLOG_IN();
-    
-    iPrevReg = aWgId;
-    iWgIds.InsertInOrder( aWgId );
-    
-    HGLOG_OUT();
-    }
-
-// --------------------------------------------------------------------------
-// CPreviewProviderCRP::Unregister
-// --------------------------------------------------------------------------
-//
-void CPreviewProviderCRP::Unregister( TInt aWgId )
-    {
-    HGLOG_CONTEXT( Unregister, HGLOG_LOCAL );
-    HGLOG_IN();
-    
-    const TInt index = iWgIds.FindInOrder( aWgId );
-    if ( index >= 0 )
-        {
-        iWgIds.Remove( index );
-        }
-    
-    UnregisterComplete( aWgId );
-    
-    HGLOG_OUT();
-    }
-
-// --------------------------------------------------------------------------
-// CPreviewProviderCRP::ScreenShotL
-// --------------------------------------------------------------------------
-//
-void CPreviewProviderCRP::ScreenshotL()
-    {
-    CFbsBitmap* screenshot = new (ELeave)CFbsBitmap();
-    CleanupStack::PushL( screenshot );
-    ScreenshotL( *screenshot );
-    ScaleCompleteL( *screenshot );
-    iScreenshots.InsertL( screenshot, iScreenshots.Count() );
-    CleanupStack::Pop( screenshot );
-    CheckOverflow();
-    }
-
-// --------------------------------------------------------------------------
-// CPreviewProviderCRP::ScreenShotL
-// --------------------------------------------------------------------------
-//
-void CPreviewProviderCRP::ScreenshotL(CFbsBitmap& aBitmap)
-    {
-    HGLOG_CONTEXT( ScreenShot, HGLOG_LOCAL );
-    HGLOG_IN();
-
-    if( 0 > iScreen || Env().ScreenCount() <= iScreen )
-        {
-        //screen offset out of range. skip request
-        User::Leave(KErrArgument);
-        }
-    // Find the screen resolution
-    MWsScreenConfig* screenConfig = 
-        Env().Screen( iScreen )->ObjectInterface<MWsScreenConfig>();    
-    
-    const TSize sz = screenConfig->ScreenModeSizeInPixels();
-
-    // Get the screen buffer (containing screenshot data)
-    MWsFrontBuffer* screenFront = 
-        Env().Screen( iScreen )->ObjectInterface<MWsFrontBuffer>();
-    
-    // With NGA we do not support downscaling of the screenshots.
-    // So use the size of the screen if no screenshot size has been explicitly
-    // set or if the old method for taking screenshots is not available.
-    if ( iScreenshotSize.iWidth == 0 || 
-         iScreenshotSize.iHeight == 0 || 
-         !screenFront )
-        {
-        iScreenshotSize = sz;
-        }
-    // Use the the same DisplayMode as for the source image
-    // so override the display mode, ignoring any requests.
-    iScreenshotMode = screenConfig->DisplayMode();
-    
-    HGLOG3( HGLOG_INFO, "iShotSize: %dx%d mode: %d",
-        iScreenshotSize.iWidth, iScreenshotSize.iHeight, iScreenshotMode );
-    
-    aBitmap.Reset();
-    User::LeaveIfError( aBitmap.Create( iScreenshotSize, iScreenshotMode ) );
-  
-    // Check if front buffer is available.
-    // Will always be NULL with NGA.
-    if ( screenFront )
-        {
-        HGLOG0( HGLOG_INFO, "non-NGA, using front buffer" );
-        FrontBufferScreenShot( aBitmap, *screenFront, sz, screenConfig->Stride() );
-        }
-#ifdef NGA
-    else
-        {
-        HGLOG0( HGLOG_INFO, "NGA, using CopyScreenToBitmapL" );
-        MWsScreenDevice* screenDevice = static_cast<MWsScreenDevice*>(
-            Env().Screen( iScreen )->ResolveObjectInterface(
-                MWsScreenDevice::EWsObjectInterfaceId ) );
-        User::LeaveIfNull( screenDevice );
-        screenDevice->CopyScreenToBitmapL( &aBitmap, iScreenshotSize );
-        }
-#endif
-    HGLOG_OUT();
-    }
-
-// --------------------------------------------------------------------------
-// CPreviewProviderCRP::RemoveShot
-// --------------------------------------------------------------------------
-//
-void CPreviewProviderCRP::RemoveScreenshot( TInt aBitmapHandle )
-    {
-    for( int iter(0); iter < iScreenshots.Count(); ++iter )
-        {
-        if( iScreenshots[iter]->Handle() == aBitmapHandle )
-            {
-            delete iScreenshots[iter];
-            iScreenshots.Remove(iter);
-            break;
-            }
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CPreviewProviderCRP::CheckOverflow
-// --------------------------------------------------------------------------
-//
-void CPreviewProviderCRP::CheckOverflow()
-    {
-    TInt overflow( iScreenshots.Count() - KMaxShots);
-    while( 0 < overflow-- )
-        {
-        delete iScreenshots[0];
-        iScreenshots.Remove(0);
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CPreviewProviderCRP::FrontBufferScreenShot
-// --------------------------------------------------------------------------
-//    
-void CPreviewProviderCRP::FrontBufferScreenShot( CFbsBitmap& aBitmap, 
-                                                 MWsFrontBuffer& aFront, 
-                                                 const TSize& aSrcSize, 
-                                                 TInt aSrcStride )
-    {
-    HGLOG_CONTEXT( CPreviewProviderCRP::FrontBufferScreenShot, HGLOG_LOCAL );
-    HGLOG_IN();
-    
-    const TUint8* src = static_cast<const TUint8*> ( aFront.GetBits() );
-    HGLOG1( HGLOG_INFO, "src address = [%d]", src );
-        
-    TInt srcstride( aSrcStride );
-    TInt srcwidth( aSrcSize.iWidth );
-    TInt srcheight( aSrcSize.iHeight ); 
-    TInt dststride( aBitmap.DataStride() );
-    TInt dstheight( iScreenshotSize.iHeight );
-    TInt dstwidth( iScreenshotSize.iWidth );
-    TInt stepdst( dststride / dstwidth );
-    TInt stepsrc( srcstride / srcwidth );
-    // scale must be TInt type
-    TInt scaleX( aSrcSize.iWidth / iScreenshotSize.iWidth );
-    TInt scaleY( aSrcSize.iHeight / iScreenshotSize.iHeight );
-    
-    aBitmap.LockHeap();
-    
-    TUint8* dst = ( TUint8* ) aBitmap.DataAddress();
-    
-    TInt minWidth = Min( srcwidth, dstwidth );
-    TInt minHeight = Min( srcheight, dstheight );
-    TInt minStep = Min( stepsrc, stepdst );
-    
-    for ( TInt y = minHeight; y > 0; y-- )
-         {
-         for ( TInt x = minWidth; x > 0; x-- )
-             {
-             Mem::Copy( dst, src, minStep );
-             dst += stepdst;
-             src += scaleX*stepdst;
-             }
-         src += srcstride - scaleX * stepdst * minWidth;
-         src += ( scaleY - 1 ) * srcstride;
-         }
-         
-    aBitmap.UnlockHeap();
-    HGLOG_OUT();
-    }
-    
-// --------------------------------------------------------------------------
-// KImplementationTable
-// --------------------------------------------------------------------------
-//    
-LOCAL_C const TImplementationProxy KImplementationTable[] = 
-    {
-    IMPLEMENTATION_PROXY_ENTRY(KImpId, CPreviewProviderCRP::CreateL)
-    };
-
-// --------------------------------------------------------------------------
-// ImplementationGroupProxy
-// --------------------------------------------------------------------------
-//    
-EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount)
-    {
-    aTableCount = (sizeof(KImplementationTable) / sizeof(TImplementationProxy));
-    return KImplementationTable;
-    }
-
-
-// End of file
--- a/taskswitcher/contextengine/hgfswserver/client/bwins/hgfswclientu.def	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-EXPORTS
-	?NewL@CHgFswClient@@SAPAV1@XZ @ 1 NONAME ; class CHgFswClient * CHgFswClient::NewL(void)
-	?CancelSubscribe@CHgFswClient@@QAEXXZ @ 2 NONAME ; void CHgFswClient::CancelSubscribe(void)
-	?SwitchToApp@CHgFswClient@@QAEXH@Z @ 3 NONAME ; void CHgFswClient::SwitchToApp(int)
-	?NewLC@CHgFswClient@@SAPAV1@XZ @ 4 NONAME ; class CHgFswClient * CHgFswClient::NewLC(void)
-	?ForegroundAppUid@CHgFswClient@@QAE?AVTUid@@W4THgFswFgAppType@1@@Z @ 5 NONAME ; class TUid CHgFswClient::ForegroundAppUid(enum CHgFswClient::THgFswFgAppType)
-	?Subscribe@CHgFswClient@@QAEXAAVMHgFswObserver@@@Z @ 6 NONAME ; void CHgFswClient::Subscribe(class MHgFswObserver &)
-	?GetContentL@CHgFswClient@@QAEXAAV?$RPointerArray@VCHgFswEntry@@@@@Z @ 7 NONAME ; void CHgFswClient::GetContentL(class RPointerArray<class CHgFswEntry> &)
-	?CloseApp@CHgFswClient@@QAEXH@Z @ 8 NONAME ; void CHgFswClient::CloseApp(int)
-
--- a/taskswitcher/contextengine/hgfswserver/client/eabi/hgfswclientu.def	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-EXPORTS
-	_ZN12CHgFswClient11GetContentLER13RPointerArrayI11CHgFswEntryE @ 1 NONAME
-	_ZN12CHgFswClient11SwitchToAppEi @ 2 NONAME
-	_ZN12CHgFswClient15CancelSubscribeEv @ 3 NONAME
-	_ZN12CHgFswClient16ForegroundAppUidENS_15THgFswFgAppTypeE @ 4 NONAME
-	_ZN12CHgFswClient4NewLEv @ 5 NONAME
-	_ZN12CHgFswClient5NewLCEv @ 6 NONAME
-	_ZN12CHgFswClient8CloseAppEi @ 7 NONAME
-	_ZN12CHgFswClient9SubscribeER14MHgFswObserver @ 8 NONAME
-
--- a/taskswitcher/contextengine/hgfswserver/client/group/bld.inf	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-/*
- * ===========================================================================
- *  Name        : bld.inf
- *  Part of     : Huriganes / Fast Swap Server
- *  Description : build info file for client dll
- *  Version     : %version: 5 %
- *
- *  Copyright © 2008 Nokia Corporation.
- *  This material, including documentation and any related 
- *  computer programs, is protected by copyright controlled by 
- *  Nokia Corporation. All rights are reserved. Copying, 
- *  including reproducing, storing, adapting or translating, any 
- *  or all of this material requires the prior written consent of 
- *  Nokia Corporation. This material also contains confidential 
- *  information which may not be disclosed to others without the 
- *  prior written consent of Nokia Corporation.
- * ===========================================================================
- */
-
-PRJ_EXPORTS
-../inc/hgfswclient.h            |../../../inc/hgfswclient.h
-../inc/hgfswclientobserver.h    |../../../inc/hgfswclientobserver.h
-
-PRJ_MMPFILES
-hgfswclient.mmp
--- a/taskswitcher/contextengine/hgfswserver/client/group/hgfswclient.mmp	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-/*
- * ===========================================================================
- *  Name        : hgfswclient.mmp
- *  Part of     : Huriganes / Fast Swap Server
- *  Description : client dll
- *  Version     : %version: 7 %
- *
- *  Copyright © 2008 Nokia Corporation.
- *  This material, including documentation and any related 
- *  computer programs, is protected by copyright controlled by 
- *  Nokia Corporation. All rights are reserved. Copying, 
- *  including reproducing, storing, adapting or translating, any 
- *  or all of this material requires the prior written consent of 
- *  Nokia Corporation. This material also contains confidential 
- *  information which may not be disclosed to others without the 
- *  prior written consent of Nokia Corporation.
- * ===========================================================================
- */
-
-#include <platform_paths.hrh>
-
-TARGET  hgfswclient.dll
-TARGETTYPE DLL
-CAPABILITY CAP_GENERAL_DLL
-
-SOURCEPATH ../src
-SOURCE          hgfswclient.cpp
-SOURCE          hgfswclientimpl.cpp
-
-MW_LAYER_SYSTEMINCLUDE
-
-USERINCLUDE     ../inc
-USERINCLUDE     ../../inc
-USERINCLUDE     ../../../inc
-USERINCLUDE     ../../../trace
-
-LIBRARY euser.lib
-LIBRARY estor.lib
-
-LIBRARY hgfswutils.lib
-
-DEBUGLIBRARY flogger.lib
--- a/taskswitcher/contextengine/hgfswserver/client/inc/clientlogging.h	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-/*
-* ============================================================================
-*  Name        : clientlogging.h
-*  Part of     : Classic UI / Teleport
-*  Description : Defines logs for client
-*  Version     : %version:  sa1spcx1#3 % 
-*
-*  Copyright (c) 2009 Nokia.  All rights reserved.
-*  This material, including documentation and any related computer
-*  programs, is protected by copyright controlled by Nokia.  All
-*  rights are reserved.  Copying, including reproducing, storing,
-*  adapting or translating, any or all of this material requires the
-*  prior written consent of Nokia.  This material also contains
-*  confidential information which may not be disclosed to others
-*  without the prior written consent of Nokia.
-* ============================================================================
-* Template version: 4.1.1
-*/
-
-#ifdef _DEBUG // codescanner::ifpreprocessor
-_LIT( KHgLogFile, "hgfswclient.txt" );
-_LIT( KHgLogPath, "teleport" );
-#define _HGLOG_LOG_COMPONENT_ID 0x0000000
-#endif
-
-#include "hglogging.h"
--- a/taskswitcher/contextengine/hgfswserver/client/inc/hgfswclient.h	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,132 +0,0 @@
-/*
- * ===========================================================================
- *  Name        : hgfswclient.h
- *  Part of     : Huriganes / Fast Swap Server
- *  Description : Client API
- *  Version     : %version: 6 %
- *
- *  Copyright © 2008 Nokia Corporation.
- *  This material, including documentation and any related 
- *  computer programs, is protected by copyright controlled by 
- *  Nokia Corporation. All rights are reserved. Copying, 
- *  including reproducing, storing, adapting or translating, any 
- *  or all of this material requires the prior written consent of 
- *  Nokia Corporation. This material also contains confidential 
- *  information which may not be disclosed to others without the 
- *  prior written consent of Nokia Corporation.
- * ===========================================================================
- */
-
-#ifndef __HGFSWCLIENT_H
-#define __HGFSWCLIENT_H
-
-#include <e32std.h>
-#include "hgfswentry.h"
-
-class MHgFswObserver;
-class CHgFswClientImpl;
-
-/**
- * Client API for the Huriganes Fast Swap Server.
- */    
-NONSHARABLE_CLASS( CHgFswClient ) : public CBase
-    {
-public:
-    /**
-     * Possible values for aType argument of ForegroundAppUid().
-     */
-    enum THgFswFgAppType
-        {
-        /**
-         * Means that even when the foreground app has another app embedded
-         * into it the uid of the container application will be returned.
-         */
-        EUseStandaloneUid,
-        /**
-         * Means that if the foreground app has another app embedded
-         * into it then the returned uid will be the uid of the embedded
-         * app.
-         */
-        EUseEmbeddedUid
-        };
-
-    /**
-     * Creates a new instance.
-     * @capability LocalServices
-     */
-    IMPORT_C static CHgFswClient* NewL();
-    
-    /**
-     * Creates a new instance.
-     * @capability LocalServices
-     */
-    IMPORT_C static CHgFswClient* NewLC();
-    
-    /**
-     * Destructor.
-     */
-    ~CHgFswClient();
-    
-    /**
-     * Queries the fast swap content from the server and
-     * copies it into the given array.
-     * Previous content of the array is removed (by using ResetAndDestroy).
-     * @param   aDst    array to which data is stored
-     * @capability LocalServices
-     */
-    IMPORT_C void GetContentL( RHgFswArray& aDst );
-    
-    /**
-     * Subscribes for continuous notifications about changes in the
-     * fast swap content.
-     * The notifications are generated until CancelSubscribe is called
-     * or the instance is destroyed.
-     * @capability LocalServices
-     */
-    IMPORT_C void Subscribe( MHgFswObserver& aObserver );
-    
-    /**
-     * Cancels the subscription for change notifications.
-     * @capability LocalServices
-     */
-    IMPORT_C void CancelSubscribe();
-    
-    /**
-     * Tries to close the application with the given id.
-     * @capability LocalServices
-     */
-    IMPORT_C void CloseApp( TInt aWgId );
-    
-    /**
-     * Brings the application with the given id into foreground.
-     * @capability LocalServices
-     */
-    IMPORT_C void SwitchToApp( TInt aWgId );
-
-    /**
-     * Returns the uid of the foreground app or KNullUid if something goes wrong.
-     *
-     * Will never return hidden apps, only those which can also be seen in the
-     * array returned by GetContentL.
-     *
-     * However the handling of embedded applications might be different:
-     * (as opposed to GetContentL)
-     * If aType == EUseEmbeddedUid:
-     *   This function will always return the embedded application's uid, unlike
-     *   GetContentL which will always refer to the container app (except for the
-     *   screenshot of course). This means that the returned uid is simply the
-     *   uid belonging to the first (non-hidden, etc.) window group from the window group list.
-     * If aType == EUseStandaloneUid:
-     *   Embedded applications are ignored and the returned uid is the app uid belonging
-     *   to the first parentless window group.
-     */
-    IMPORT_C TUid ForegroundAppUid( THgFswFgAppType aType );
-
-private:
-    CHgFswClient();
-    void ConstructL();
-
-    CHgFswClientImpl* iImpl;
-    };
-
-#endif
--- a/taskswitcher/contextengine/hgfswserver/client/inc/hgfswclientimpl.h	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
-/*
- * ===========================================================================
- *  Name        : hgfswclientimpl.h
- *  Part of     : Huriganes / Fast Swap Server
- *  Description : Client API, private implementation
- *  Version     : %version: 5 %
- *
- *  Copyright © 2008 Nokia Corporation.
- *  This material, including documentation and any related 
- *  computer programs, is protected by copyright controlled by 
- *  Nokia Corporation. All rights are reserved. Copying, 
- *  including reproducing, storing, adapting or translating, any 
- *  or all of this material requires the prior written consent of 
- *  Nokia Corporation. This material also contains confidential 
- *  information which may not be disclosed to others without the 
- *  prior written consent of Nokia Corporation.
- * ===========================================================================
- */
-
-#ifndef __HGFSWCLIENTIMPL_H
-#define __HGFSWCLIENTIMPL_H
-
-#include <e32std.h>
-#include "hgfswentry.h"
-
-class MHgFswObserver;
-    
-NONSHARABLE_CLASS( CHgFswClientImpl ) : public CActive
-    {
-public:
-    static CHgFswClientImpl* NewL();
-    static CHgFswClientImpl* NewLC();
-    ~CHgFswClientImpl();
-    
-    void GetContentL( RHgFswArray& aDst );
-    
-    void Subscribe( MHgFswObserver& aObserver );
-    void CancelSubscribe();
-    
-    void CloseApp( TInt aWgId );
-    void SwitchToApp( TInt aWgId );
-
-    TUid ForegroundAppUid( TInt aType );
-
-private:
-    void RunL();
-    void DoCancel();
-
-private:
-    CHgFswClientImpl();
-    void ConstructL();
-
-    NONSHARABLE_CLASS( RHgFswClient ) : public RSessionBase
-        {
-    public:
-        TInt Connect();
-        void Subscribe( TRequestStatus& aStatus );
-        void CancelSubscribe();
-        void GetContentL( RHgFswArray& aDst );
-        void CloseApp( TInt aWgId );
-        void SwitchToApp( TInt aWgId );
-        TUid ForegroundAppUid( TInt aType );
-        };
-    RHgFswClient iClient;
-    
-    MHgFswObserver* iObserver; // not own
-    };
-
-#endif
--- a/taskswitcher/contextengine/hgfswserver/client/inc/hgfswclientobserver.h	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-/*
- * ===========================================================================
- *  Name        : hgfswclientobserver.h
- *  Part of     : Huriganes / Fast Swap Server
- *  Description : Client API
- *  Version     : %version: sa1spcx1#2 %
- *
- *  Copyright © 2008 Nokia Corporation.
- *  This material, including documentation and any related 
- *  computer programs, is protected by copyright controlled by 
- *  Nokia Corporation. All rights are reserved. Copying, 
- *  including reproducing, storing, adapting or translating, any 
- *  or all of this material requires the prior written consent of 
- *  Nokia Corporation. This material also contains confidential 
- *  information which may not be disclosed to others without the 
- *  prior written consent of Nokia Corporation.
- * ===========================================================================
- */
-
-#ifndef __HGFSWCLIENTOBSERVER_H
-#define __HGFSWCLIENTOBSERVER_H
-
-#include <e32base.h>
-
-/**
- * Observer interface for getting notifications about fast swap content changes.
- */
-class MHgFswObserver
-    {
-public:
-    /**
-     * Called when there is a change in the fast swap content.
-     * The data can be queried via CHgFswClient::GetContentL
-     */
-    virtual void HandleFswContentChanged() = 0;
-    };
-
-#endif
--- a/taskswitcher/contextengine/hgfswserver/client/src/hgfswclient.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,83 +0,0 @@
-/*
- * ===========================================================================
- *  Name        : hgfswclient.cpp
- *  Part of     : Huriganes / Fast Swap Server
- *  Description : Client API
- *  Version     : %version: 3 %
- *
- *  Copyright © 2008 Nokia Corporation.
- *  This material, including documentation and any related 
- *  computer programs, is protected by copyright controlled by 
- *  Nokia Corporation. All rights are reserved. Copying, 
- *  including reproducing, storing, adapting or translating, any 
- *  or all of this material requires the prior written consent of 
- *  Nokia Corporation. This material also contains confidential 
- *  information which may not be disclosed to others without the 
- *  prior written consent of Nokia Corporation.
- * ===========================================================================
- */
-
-#include "hgfswclient.h"
-#include "hgfswclientimpl.h"
-
-EXPORT_C CHgFswClient* CHgFswClient::NewL()
-    {
-    CHgFswClient* self = NewLC();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-EXPORT_C CHgFswClient* CHgFswClient::NewLC()
-    {
-    CHgFswClient* self = new ( ELeave ) CHgFswClient;
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    return self;
-    }
-
-CHgFswClient::CHgFswClient()
-    {
-    }
-
-CHgFswClient::~CHgFswClient()
-    {
-    delete iImpl;
-    }
-
-void CHgFswClient::ConstructL()
-    {
-    iImpl = CHgFswClientImpl::NewL();
-    }
-
-EXPORT_C void CHgFswClient::GetContentL( RHgFswArray& aDst )
-    {
-    iImpl->GetContentL( aDst );
-    }
-
-EXPORT_C void CHgFswClient::Subscribe( MHgFswObserver& aObserver )
-    {
-    iImpl->Subscribe( aObserver );
-    }
-    
-EXPORT_C void CHgFswClient::CancelSubscribe()
-    {
-    iImpl->CancelSubscribe();
-    }
-
-EXPORT_C void CHgFswClient::CloseApp( TInt aWgId )
-    {
-    iImpl->CloseApp( aWgId );
-    }
-    
-EXPORT_C void CHgFswClient::SwitchToApp( TInt aWgId )
-    {
-    iImpl->SwitchToApp( aWgId );
-    }
-
-EXPORT_C TUid CHgFswClient::ForegroundAppUid( THgFswFgAppType aType )
-    {
-    return iImpl->ForegroundAppUid( aType );
-    }
-
-
-// end of file
--- a/taskswitcher/contextengine/hgfswserver/client/src/hgfswclientimpl.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,232 +0,0 @@
-/*
- * ===========================================================================
- *  Name        : hgfswclientimpl.cpp
- *  Part of     : Huriganes / Fast Swap Server
- *  Description : Client API, private implementation
- *  Version     : %version: sa1spcx1#10 %
- *
- *  Copyright © 2008 Nokia Corporation.
- *  This material, including documentation and any related 
- *  computer programs, is protected by copyright controlled by 
- *  Nokia Corporation. All rights are reserved. Copying, 
- *  including reproducing, storing, adapting or translating, any 
- *  or all of this material requires the prior written consent of 
- *  Nokia Corporation. This material also contains confidential 
- *  information which may not be disclosed to others without the 
- *  prior written consent of Nokia Corporation.
- * ===========================================================================
- */
-
-#include "hgfswclientimpl.h"
-#include "hgfswclientobserver.h"
-#include "hgfswcommon.h"
-#include <s32mem.h>
-
-#include "clientlogging.h"
-
-static TInt StartServer()
-    {
-    RProcess server;
-    const TUidType uid( KNullUid, KNullUid, KHgFswServerUid );
-    TInt err = server.Create( KHgFswServerImg, KNullDesC, uid );
-    if ( err != KErrNone )
-        {
-        return err;
-        }
-    TRequestStatus stat;
-    server.Rendezvous( stat );
-    if ( stat != KRequestPending )
-        {
-        server.Kill( 0 );
-        }
-    else
-        {
-        server.Resume();
-        }
-    User::WaitForRequest( stat );
-    err = server.ExitType() == EExitPanic ? KErrGeneral : stat.Int();
-    server.Close();
-    return err;
-    }
-
-TInt CHgFswClientImpl::RHgFswClient::Connect()
-    {
-    const TInt KAsyncMessageSlots = 4;
-    const TInt KMaxRetry = 4;
-    
-    TInt retry = KMaxRetry;
-    for ( ; ; )
-        {
-        TInt err = CreateSession( KHgFswServerName, TVersion( 0, 0, 0 ), KAsyncMessageSlots );
-        if ( err != KErrNotFound && err != KErrServerTerminated )
-            {
-            return err;
-            }
-        if ( !--retry )
-            {
-            return err;
-            }
-        err = StartServer();
-        if ( err != KErrNone && err != KErrAlreadyExists )
-            {
-            return err;
-            }
-        }
-    }
-
-void CHgFswClientImpl::RHgFswClient::Subscribe( TRequestStatus& aStatus )
-    {
-    SendReceive( EHgFswSubscribe, aStatus );
-    }
-    
-void CHgFswClientImpl::RHgFswClient::CancelSubscribe()
-    {
-    SendReceive( EHgFswCancel );
-    }
-
-void CHgFswClientImpl::RHgFswClient::GetContentL( RHgFswArray& aDst )
-    {
-    HGLOG_CONTEXT( GetContentL, HGLOG_LOCAL );
-    HGLOG_IN();
-
-    for ( ; ; )
-        {
-        TPckgBuf<TInt> bufSize;
-        User::LeaveIfError( SendReceive( EHgFswGetBufferSize,
-            TIpcArgs( &bufSize ) ) );
-        HBufC8* buf = HBufC8::NewLC( bufSize() );
-        TPtr8 p( buf->Des() );
-        TInt err = SendReceive( EHgFswGetBuffer,
-            TIpcArgs( &p, bufSize() ) );
-        if ( err == KErrNone )
-            {
-            RDesReadStream strm( p );
-            CleanupClosePushL( strm );
-            CHgFswEntry::InternalizeArrayL( strm, aDst );
-            CleanupStack::PopAndDestroy( &strm );
-            }
-        else if ( err != KErrArgument )
-            {
-            User::Leave( err );
-            }
-        CleanupStack::PopAndDestroy( buf );
-        if ( err == KErrNone )
-            {
-            break;
-            }
-        // If result was KErrArgument then the size received from GetBufferSize is
-        // not valid anymore so restart the whole procedure.
-        }
-
-    HGLOG_OUT();
-    }
-
-void CHgFswClientImpl::RHgFswClient::CloseApp( TInt aWgId )
-    {
-    SendReceive( EHgFswCloseApp, TIpcArgs( aWgId ) );
-    }
-
-void CHgFswClientImpl::RHgFswClient::SwitchToApp( TInt aWgId )
-    {
-    SendReceive( EHgFswSwitchToApp, TIpcArgs( aWgId ) );
-    }
-
-TUid CHgFswClientImpl::RHgFswClient::ForegroundAppUid( TInt aType )
-    {
-    TUid result = KNullUid;
-    TPckgBuf<TInt> uidBuf;
-    if ( SendReceive( EHgFswForegroundAppUid,
-            TIpcArgs( &uidBuf, &aType ) ) == KErrNone )
-        {
-        result = TUid::Uid( uidBuf() );
-        }
-    return result;
-    }
-
-CHgFswClientImpl* CHgFswClientImpl::NewL()
-    {
-    CHgFswClientImpl* self = NewLC();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-CHgFswClientImpl* CHgFswClientImpl::NewLC()
-    {
-    CHgFswClientImpl* self = new ( ELeave ) CHgFswClientImpl;
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    return self;
-    }
-
-CHgFswClientImpl::CHgFswClientImpl()
-        : CActive( CActive::EPriorityStandard )
-    {
-    CActiveScheduler::Add( this );
-    }
-
-CHgFswClientImpl::~CHgFswClientImpl()
-    {
-    Cancel();
-    iClient.Close();
-    }
-
-void CHgFswClientImpl::ConstructL()
-    {
-    User::LeaveIfError( iClient.Connect() );
-    }
-
-void CHgFswClientImpl::GetContentL( RHgFswArray& aDst )
-    {
-    iClient.GetContentL( aDst );
-    }
-
-void CHgFswClientImpl::Subscribe( MHgFswObserver& aObserver )
-    {
-    Cancel();
-    iObserver = &aObserver;
-    iClient.Subscribe( iStatus );
-    SetActive();
-    }
-    
-void CHgFswClientImpl::CancelSubscribe()
-    {
-    Cancel();
-    }
-
-void CHgFswClientImpl::CloseApp( TInt aWgId )
-    {
-    iClient.CloseApp( aWgId );
-    }
-    
-void CHgFswClientImpl::SwitchToApp( TInt aWgId )
-    {
-    iClient.SwitchToApp( aWgId );
-    }
-
-TUid CHgFswClientImpl::ForegroundAppUid( TInt aType )
-    {
-    return iClient.ForegroundAppUid( aType );
-    }
-
-void CHgFswClientImpl::RunL()
-    {
-    HGLOG_CONTEXT( RunL, HGLOG_LOCAL );
-    HGLOG1_IN( "%d", iStatus.Int() );
-
-    if ( iStatus == KErrNone && iObserver )
-        {
-        iClient.Subscribe( iStatus );
-        SetActive();
-        iObserver->HandleFswContentChanged();
-        }
-
-    HGLOG_OUT();
-    }
-    
-void CHgFswClientImpl::DoCancel()
-    {
-    iClient.CancelSubscribe();
-    }
-
-
-// end of file
--- a/taskswitcher/contextengine/hgfswserver/engine/bwins/hgfswengineu.def	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-EXPORTS
-	?FswDataL@CHgFswEngine@@QAEABV?$RPointerArray@VCHgFswEntry@@@@XZ @ 1 NONAME ; class RPointerArray<class CHgFswEntry> const & CHgFswEngine::FswDataL(void)
-	?ForegroundAppUidL@CHgFswEngine@@QAE?AVTUid@@H@Z @ 2 NONAME ; class TUid CHgFswEngine::ForegroundAppUidL(int)
-	?SwitchToAppL@CHgFswEngine@@QAEXH@Z @ 3 NONAME ; void CHgFswEngine::SwitchToAppL(int)
-	?NewL@CHgFswEngine@@SAPAV1@AAVMHgFswEngineObserver@@@Z @ 4 NONAME ; class CHgFswEngine * CHgFswEngine::NewL(class MHgFswEngineObserver &)
-	?CloseAppL@CHgFswEngine@@QAEXH@Z @ 5 NONAME ; void CHgFswEngine::CloseAppL(int)
-	?NewLC@CHgFswEngine@@SAPAV1@AAVMHgFswEngineObserver@@@Z @ 6 NONAME ; class CHgFswEngine * CHgFswEngine::NewLC(class MHgFswEngineObserver &)
-
--- a/taskswitcher/contextengine/hgfswserver/engine/eabi/hgfswengineu.def	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-EXPORTS
-	_ZN12CHgFswEngine12SwitchToAppLEi @ 1 NONAME
-	_ZN12CHgFswEngine17ForegroundAppUidLEi @ 2 NONAME
-	_ZN12CHgFswEngine4NewLER20MHgFswEngineObserver @ 3 NONAME
-	_ZN12CHgFswEngine5NewLCER20MHgFswEngineObserver @ 4 NONAME
-	_ZN12CHgFswEngine8FswDataLEv @ 5 NONAME
-	_ZN12CHgFswEngine9CloseAppLEi @ 6 NONAME
-
--- a/taskswitcher/contextengine/hgfswserver/engine/group/bld.inf	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-/*
- * ===========================================================================
- *  Name        : bld.inf
- *  Part of     : Huriganes / Fast Swap Server
- *  Description : build info file for engine component
- *  Version     : %version: 5 %
- *
- *  Copyright © 2008 Nokia Corporation.
- *  This material, including documentation and any related 
- *  computer programs, is protected by copyright controlled by 
- *  Nokia Corporation. All rights are reserved. Copying, 
- *  including reproducing, storing, adapting or translating, any 
- *  or all of this material requires the prior written consent of 
- *  Nokia Corporation. This material also contains confidential 
- *  information which may not be disclosed to others without the 
- *  prior written consent of Nokia Corporation.
- * ===========================================================================
- */
-
-PRJ_EXPORTS
-../inc/hgfswengine.h        |../../../inc/hgfswengine.h
-../inc/hgfswobservers.h     |../../../inc/hgfswobservers.h
-
-PRJ_MMPFILES
-hgfswengine.mmp
--- a/taskswitcher/contextengine/hgfswserver/engine/group/hgfswengine.mmp	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-/*
- * ===========================================================================
- *  Name        : hgfswengine.mmp
- *  Part of     : Huriganes / Fast Swap Server
- *  Description : engine component
- *  Version     : %version: sa1spcx1#17 %
- *
- *  Copyright © 2008 Nokia Corporation.
- *  This material, including documentation and any related 
- *  computer programs, is protected by copyright controlled by 
- *  Nokia Corporation. All rights are reserved. Copying, 
- *  including reproducing, storing, adapting or translating, any 
- *  or all of this material requires the prior written consent of 
- *  Nokia Corporation. This material also contains confidential 
- *  information which may not be disclosed to others without the 
- *  prior written consent of Nokia Corporation.
- * ===========================================================================
- */
-
-#include <platform_paths.hrh>
-
-TARGET  hgfswengine.dll
-TARGETTYPE DLL
-CAPABILITY CAP_GENERAL_DLL
-
-SOURCEPATH ../src
-SOURCE          hgfswengine.cpp
-SOURCE          hgfshiddenapplist.cpp
-SOURCE          hgfsalwaysshownapplist.cpp
-SOURCE          hgfswidgetlist.cpp
-SOURCE          hgfswiconcache.cpp
-
-MW_LAYER_SYSTEMINCLUDE
-
-USERINCLUDE     ../inc
-USERINCLUDE     ../../inc
-USERINCLUDE     ../../../inc
-USERINCLUDE     ../../../trace
-
-LIBRARY euser.lib
-LIBRARY estor.lib
-LIBRARY eikcore.lib
-LIBRARY cone.lib
-LIBRARY apparc.lib
-LIBRARY ws32.lib
-LIBRARY apgrfx.lib
-LIBRARY fbscli.lib
-LIBRARY bitgdi.lib
-LIBRARY aknicon.lib
-LIBRARY aknskins.lib
-LIBRARY egul.lib
-LIBRARY         widgetregistryclient.lib
-LIBRARY         featmgr.lib
-
-LIBRARY hgpreviewprovider.lib
-LIBRARY hgfswutils.lib
-
-DEBUGLIBRARY    flogger.lib
-
--- a/taskswitcher/contextengine/hgfswserver/engine/inc/enginelogging.h	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-/*
-* ============================================================================
-*  Name        : enginelogging.h
-*  Part of     : Classic UI / Teleport
-*  Description : Defines logs for engine
-*  Version     : %version:  sa1spcx1#3 % 
-*
-*  Copyright (c) 2009 Nokia.  All rights reserved.
-*  This material, including documentation and any related computer
-*  programs, is protected by copyright controlled by Nokia.  All
-*  rights are reserved.  Copying, including reproducing, storing,
-*  adapting or translating, any or all of this material requires the
-*  prior written consent of Nokia.  This material also contains
-*  confidential information which may not be disclosed to others
-*  without the prior written consent of Nokia.
-* ============================================================================
-* Template version: 4.1.1
-*/
-
-#ifdef _DEBUG // codescanner::ifpreprocessor
-_LIT( KHgLogFile, "hgfswengine.txt" );
-_LIT( KHgLogPath, "teleport" );
-#define _HGLOG_LOG_COMPONENT_ID 0x0000000
-#endif
-
-#include "hglogging.h"
--- a/taskswitcher/contextengine/hgfswserver/engine/inc/hgfsalwaysshownapplist.h	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,75 +0,0 @@
-/*
- * ============================================================================
- *  Name        : hgfsalwaysshownapplist.h
- *  Part of     : Hg Teleport
- *  Description : Non-closeable app list class
- *  Version     : %version: sa1spcx1#2 %
- *
- *  Copyright 2008 Nokia.  All rights reserved.
- *  This material, including documentation and any related computer
- *  programs, is protected by copyright controlled by Nokia.  All
- *  rights are reserved.  Copying, including reproducing, storing,
- *  adapting or translating, any or all of this material requires the
- *  prior written consent of Nokia.  This material also contains
- *  confidential information which may not be disclosed to others
- *  without the prior written consent of Nokia.
- * ============================================================================
- */
-
-#ifndef HGFSALWAYSSHOWNAPPLIST_H
-#define HGFSALWAYSSHOWNAPPLIST_H
-
-#include <e32base.h>
-#include <apgcli.h>
-
-/**
- * List of always shown applications.
- */
-NONSHARABLE_CLASS( CHgFsAlwaysShownAppList ) : public CBase
-    {
-public:
-    /**
-     * Two-phased constructor.
-     *
-     * @param aParent
-     */
-    static CHgFsAlwaysShownAppList* NewL();
-
-    /*
-     * Default C++ constructor
-     */
-    CHgFsAlwaysShownAppList();
-
-    /*
-     * Destructor
-     */
-    ~CHgFsAlwaysShownAppList();
-
-    /**
-     * Initializes the list that stores applications that are always
-     * shown in the fast swap provided they have been installed
-     * in the phone rom
-     * @return   -
-     */
-    void InitializeAlwaysShownListL();
-
-    /**
-     * If application uid exists in the always shown application list
-     * @return   ETrue  application uid exists in the list
-     *           EFalse application uid doesn't exist in the list
-     * @param    TUid aAppUid the application uid
-     */
-    TBool IsAlwaysShownApp( TUid aAppUid );
-
-    /**
-     * Returning reference to iAppList
-     */
-    RArray<TUid>& AppList() { return iAppList; }
-
-private:    
-    void ConstructL();
-    RArray<TUid> iAppList;
-    RApaLsSession iAppArcSession;
-    };
-
-#endif
--- a/taskswitcher/contextengine/hgfswserver/engine/inc/hgfshiddenapplist.h	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,107 +0,0 @@
-/*
-* ============================================================================
-*  Name        : hgfshiddenapplist.h
-*  Part of     : Hg Teleport / Fast Swap module
-*  Description : Class that checks if chosen applications should be hidden
-*                from the task swap.
-*  Version     : %version: 1 %
-*
-*  Copyright 2008 Nokia.  All rights reserved.
-*  This material, including documentation and any related computer
-*  programs, is protected by copyright controlled by Nokia.  All
-*  rights are reserved.  Copying, including reproducing, storing,
-*  adapting or translating, any or all of this material requires the
-*  prior written consent of Nokia.  This material also contains
-*  confidential information which may not be disclosed to others
-*  without the prior written consent of Nokia.
-* ============================================================================
-*/
-
-#ifndef HGFSHIDDENAPPLIST_H_
-#define HGFSHIDDENAPPLIST_H_
-
-#include <e32base.h>    // For CActive, link against: euser.lib
-#include <e32std.h>     // For RTimer, link against: euser.lib
-#include <e32property.h>// For RProperty
-#include "hgfswobservers.h"
-
-//FORWARD DECLARATIONS
-class RWsSession;
-
-/**
- * This class is handling the application which are hidden
- * from fast swap feature.
- */
-NONSHARABLE_CLASS( CHgFsHiddenAppList ) : public CActive
-    {
-public:
-
-    /**
-     * Symbian based two phased constructor.
-     */
-    static CHgFsHiddenAppList* NewL( MHgFsHiddenAppListObserver& aObserver );
-
-    /**
-     * Symbian based two phased constructor.
-     */
-    static CHgFsHiddenAppList* NewLC( MHgFsHiddenAppListObserver& aObserver );
-
-    /**
-     * Destructor
-     */
-    ~CHgFsHiddenAppList();
-
-    /**
-     * Whether application is hidden from FSW.
-     */
-    TBool IsHiddenL( TUid aAppUid, const RWsSession& aWsSession, TInt aWgId );
-
-    /**
-     * Updating application list
-     */
-    void UpdateListL();
-
-protected:
-    /**
-     * Default constructor.
-     */
-    CHgFsHiddenAppList( MHgFsHiddenAppListObserver& aObserver );
-
-    /**
-     * Second phase construction
-     */
-    void ConstructL();
-
-    /**
-     * Reset application array list.
-     */
-    void ResetArray();
-
-    /**
-     * Derived from CActive
-     */
-    virtual void DoCancel();
-
-    /**
-     * Derived from CActive
-     */
-    virtual void RunL();
-
-private:
-    /**
-     * Property reader for reading Hiden app list from FSW
-     */
-    RProperty iProperty;
-
-    /**
-     * Hidden App list
-     */
-    CArrayFixFlat<TInt>* iHiddenAppList;
-
-    /**
-     * hidden apps list observer
-     */
-    MHgFsHiddenAppListObserver& iObserver;
-    };
-
-#endif /*HGFSHIDDENAPPLIST_H_*/
--- a/taskswitcher/contextengine/hgfswserver/engine/inc/hgfswengine.h	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,329 +0,0 @@
-/*
- * ===========================================================================
- *  Name        : hgfswengine.h
- *  Part of     : Huriganes / Fast Swap Server
- *  Description : Task monitor engine
- *  Version     : %version: sa1spcx1#22 %
- *
- *  Copyright © 2008 Nokia Corporation.
- *  This material, including documentation and any related 
- *  computer programs, is protected by copyright controlled by 
- *  Nokia Corporation. All rights are reserved. Copying, 
- *  including reproducing, storing, adapting or translating, any 
- *  or all of this material requires the prior written consent of 
- *  Nokia Corporation. This material also contains confidential 
- *  information which may not be disclosed to others without the 
- *  prior written consent of Nokia Corporation.
- * ===========================================================================
- */
-
-#ifndef __HGFSWENGINE_H
-#define __HGFSWENGINE_H
-
-#include <e32base.h>
-#include <e32cmn.h>
-#include <s32strm.h>
-#include <fbs.h>
-#include <eikenv.h>
-#include <w32std.h>
-#include <e32hashtab.h>
-#include <apgcli.h>
-#include <e32property.h>
-#include "hgpreviewobserver.h"
-#include "hgfswentry.h"
-#include "hgfswobservers.h"
-
-class CHgFsAlwaysShownAppList;
-class CHgFsHiddenAppList;
-class CHgFsWidgetList;
-class MHgFswEngineObserver;
-class CHgFswIconCache;
-class CHgFastSwapPreviewProvider;
-class CApaWindowGroupName;
-//class CHgContextUtility;
-
-// descriptor big enough to store hex repr of 32-bit integer plus 0x prefix
-typedef TBuf<10> TAppUidHexString;
-
-/**
- * Engine for fast swap server.
- * Performs task monitoring, notifications about wg changes are
- * received from the appui.
- */
-NONSHARABLE_CLASS( CHgFswEngine ) : public CActive,
-        public MHgFswTaskListObserver,
-        public MHgFswResourceObserver,
-        public MHgFsHiddenAppListObserver,
-        public MHgFastSwapPreviewObserver
-    {
-public:
-    /**
-     * Creates a new instance.
-     * @param   aObserver   ref to observer
-     */
-    IMPORT_C static CHgFswEngine* NewL( MHgFswEngineObserver& aObserver );
-    
-    /**
-     * @copydoc NewL
-     */
-    IMPORT_C static CHgFswEngine* NewLC( MHgFswEngineObserver& aObserver );
-    
-    /**
-     * Destructor.
-     */
-    ~CHgFswEngine();
-
-    /**
-     * Returns a reference to the current content.
-     * Also performs sanity checks, e.g. associates application icons
-     * when no screenshot has been received.
-     * @return  ref to content array
-     */
-    IMPORT_C const RHgFswArray& FswDataL();
-    
-    /**
-     * Tries to close the given app.
-     * @param   aWgId   value given by WgId() for an entry in iData
-     */
-    IMPORT_C void CloseAppL( TInt aWgId );
-    
-    /**
-     * Brings the given app to foreground.
-     * @param   aWgId   value given by WgId() for an entry in iData
-     */
-    IMPORT_C void SwitchToAppL( TInt aWgId );
-
-    /**
-     * Returns the uid of the foreground app or KNullUid.
-     * Will never return hidden apps, only those which can
-     * also be seen in the array returned by FswDataL.
-     *
-     * In case of embedded apps the behaviour is controlled
-     * by aType: it will return either the uid of the embedded
-     * application or the container app.
-     *
-     * @param   aType   @see CHgFswClient::THgFswFgAppType
-     */
-    IMPORT_C TUid ForegroundAppUidL( TInt aType );
-
-private:
-    // from CActive
-    void RunL();
-    TInt RunError( TInt aError );
-    void DoCancel();
-
-    // from MHgFswTaskListObserver
-    void UpdateTaskList();
-    
-    // from MHgFswResourceObserver
-    void HandleResourceChange( TInt aType );
-
-    // from MHgFsHiddenAppListObserver
-    void HiddenAppListUpdated();
-
-    // from MHgFastSwapPreviewObserver
-    void HandleFswPpApplicationChange( TInt aWgId, TInt aFbsHandle );
-    void HandleFswPpApplicationUnregistered( TInt aWgId );
-
-private:
-    /**
-     * Constructor.
-     */
-    CHgFswEngine( MHgFswEngineObserver& aObserver );
-    
-    /**
-     * Performs 2nd phase construction.
-     */
-    void ConstructL();
-    
-    /**
-     * Gets the window group list and reconstructs the fsw content.
-     * @return   TBool   ETrue if the list has been modified
-     */
-    TBool CollectTasksL();
-    
-    /**
-     * Called from CollectTasksL for each entry in the task list.
-     * @param   aWgId       window group id
-     * @param   aAppUid     application uid
-     * @param   aWgName     window group name or NULL
-     * @param   aNewList    list to add to
-     * @param   aIsWidget   true if the entry corresponds to a web widget
-     * @return  TBool   ETrue if it was really a new entry in the list
-     */
-    TBool AddEntryL( TInt aWgId, const TUid& aAppUid,
-        CApaWindowGroupName* aWgName, RHgFswArray& aNewList,
-        TBool aIsWidget );
-
-    /**
-     * Checks if there is an entry for same app in the content list.
-     * If yes then it takes some of the data for the entry that
-     * will correspond to the same app in the refreshed content list.
-     * @param   aEntry      new entry in content list
-     * @param   aAppUid     application uid
-     * @param   aChanged    ref to change-flag, set to ETrue if it is sure
-     * that the new content list will be different from the previous one
-     * @param   aNewList    ref to new content list
-     * @return  ETrue if app was found
-     */
-    TBool CheckIfExistsL( CHgFswEntry& aEntry,
-        const TUid& aAppUid,
-        TBool& aChanged,
-        RHgFswArray& aNewList );
-
-    /**
-     * Adds running widgets to the list.
-     * @param   aNewList    array to add to
-     */
-    void CheckWidgetsL( RHgFswArray& aNewList );
-
-    /**
-     * Finds out the app uid for the given window group id.
-     * @param   aWgId   a valid window group id
-     * @return  application uid
-     */
-    TUid AppUidForWgIdL( TInt aWgId );
-    
-    /**
-     * Returns the parent's wg id or KErrNotFound.
-     * @param   aWgId   a valid window group id
-     * @return parent wg id or KErrNotFound if there is no parent
-     */
-    TInt FindParentWgId( TInt aWgId );
-    
-    /**
-     * Finds out the application name.
-     * @param   aWindowName window group name or NULL
-     * @param   aAppUId     application uid
-     * @param   aWgId       window group id
-     * @return  application name, ownership transferred to caller
-     */
-    HBufC* FindAppNameLC( CApaWindowGroupName* aWindowName,
-        const TUid& aAppUid, TInt aWgId );
-
-    /**
-     * Makes a copy of the bitmap with the given handle.
-     * @param   aFbsHandle          bitmap handle
-     * @param   aKeepAspectRatio    if true then aspect ratio is kept
-     * @return  CFbsBitmap*     the copy, ownership transferred to caller
-     */
-    CFbsBitmap* CopyBitmapL( TInt aFbsHandle, TBool aKeepAspectRatio );
-    
-    /**
-     * Checks if the app to which the screenshot belongs is in the task list
-     * and updates the entry when found. Also triggers change notification
-     * to observer when data is modified.
-     * @param   aWgIdForScreenshot  wgid for the screenshot 
-     * @param   aBitmapHandle       handle for screenshot bitmap
-     */
-    void AssignScreenshotHandle( TInt aWgIdForScreenshot, TInt aBitmapHandle );
-    
-    /**
-     * Returns the bitmap handle for the screenshot belonging to the given app
-     * or 0 if not (yet) found.
-     * @param   aWgIdForApp     a window group id (from the window group list)
-     * @return  bitmap handle or 0
-     */
-    TInt LookupScreenshotHandle( TInt aWgIdForApp );
-    
-    /**
-     * Callback for the iUpdateStarter timer.
-     * Calls CollectTasksL and notifies the observer if the task list
-     * has really been modified.
-     */
-    static TInt UpdateStarterCallback( TAny* aParam );
-
-    /**
-     * Brings the given web widget to foreground.
-     * @param   aWidgetIndex    index in the list of running widgets
-     */
-    void SwitchToWidgetL( TInt aWidgetIndex );
-
-    /**
-     * Configues the preview provider with current screen size.
-     */
-    void SetPreviewParams();
-
-    /**
-     * Registers and unregisters window groups to iPreviewProvider
-     * if the window group list has been changed.
-     */
-    void UpdatePreviewContent();
-
-    /**
-     * Gets and publishes the foreground app uid to CFW.
-     */
-    void PublishFgAppUidL();
-
-    /**
-     * Helper function to publish something to CFW.
-     * @param   aType   context type
-     * @param   aValue  value to publish
-     */
-    //void PublishContextL( const TDesC& aType, const TDesC& aValue );
-
-private: // data    
-    MHgFswEngineObserver& iObserver;
-    RHgFswArray iData; // current fsw content, i.e. the task list
-    CEikonEnv* iEnv; // not own
-
-    // always shown app list, own    
-    CHgFsAlwaysShownAppList* iAlwaysShownAppList;
-    
-    // hidden app list, own
-    CHgFsHiddenAppList* iHiddenAppList;
-    
-    // web widget list, own
-    CHgFsWidgetList* iWidgetList;
-
-    // window server session
-    RWsSession iWsSession;
-    
-    // apparc session
-    RApaLsSession iAppArcSession;
-
-    /**
-     * Hash table storing the screenshots.
-     * Key: window group id for the screenshot
-     * (the one received in ApplicationChange)
-     * Value: CFbsBitmap*, pointers owned
-     */    
-    RHashMap<TInt, CFbsBitmap*> iScreenshots;
-    
-    // preview provider instance, own
-    CHgFastSwapPreviewProvider* iPreviewProvider;
-    
-    // timer to defer content refresh
-    CPeriodic* iUpdateStarter;
-    
-    // app icon provider/container instance, own
-    CHgFswIconCache* iAppIcons;
-    
-    // true if web widgets are supported by the system
-    TBool iWidgetsSupported;
-    // wgid of widget appui is saved here
-    TInt iWidgetAppUiWgId;
-
-    // PS property to listen for swi status changes
-    RProperty iSwiProp;
-    // when true CollectTasksL will call GetAllApps etc.
-    // which is slow and need not be done normally, except
-    // during startup and perhaps when new applications are installed
-    TBool iAppDataRefreshNeeded;
-
-    // window group ids returned by last WindowGroupList call
-    RArray<TInt> iWgIds;
-    
-    // Dirty flag, indicates that iData is not up-to-date because
-    // there were no subscribed clients during a previous possible
-    // change of the task list.
-    TBool iTaskListDirty;
-
-    // For publishing the foreground app uid to Context Framework    
-    //CHgContextUtility* iContextUtility;
-    TAppUidHexString iFgAppUidStr;
-    TUid iFgAppUid;
-
-    };
-
-#endif
--- a/taskswitcher/contextengine/hgfswserver/engine/inc/hgfswiconcache.h	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,100 +0,0 @@
-/*
-* ============================================================================
-*  Name        : hgfswiconcache.h
-*  Part of     : Hg Teleport / Fast Swap module
-*  Description : Icon cache
-*  Version     : %version: 2 %
-*
-*  Copyright 2008 Nokia.  All rights reserved.
-*  This material, including documentation and any related computer
-*  programs, is protected by copyright controlled by Nokia.  All
-*  rights are reserved.  Copying, including reproducing, storing,
-*  adapting or translating, any or all of this material requires the
-*  prior written consent of Nokia.  This material also contains
-*  confidential information which may not be disclosed to others
-*  without the prior written consent of Nokia.
-* ============================================================================
-*/
-
-#ifndef HGFSWICONCACHE_H_
-#define HGFSWICONCACHE_H_
-
-#include <e32base.h>
-#include <e32hashtab.h>
-
-class CFbsBitmap;
-class CGulIcon;
-
-/**
- * App icon cache.
- */
-NONSHARABLE_CLASS( CHgFswIconCache ) : public CBase
-    {
-public:
-
-    /**
-     * Two phased constructor.
-     */
-    static CHgFswIconCache* NewL();
-
-    /**
-     * Two phased constructor.
-     */
-    static CHgFswIconCache* NewLC();
-
-    /**
-     * Destructor
-     */
-    ~CHgFswIconCache();
-
-    /**
-     * Gets the bitmaps associated with the given app from the cache.
-     * If not found then creates the app icon, stores it to the cache,
-     * and returns that.
-     * @param   aAppUid application uid
-     * @param   aBitmap bitmap ptr, ownership NOT transferred to caller, or NULL
-     * @param   aMask   mask ptr, ownership NOT transferred to caller, or NULL
-     */
-    void GetIconL( const TUid& aAppUid,
-        CFbsBitmap*& aBitmap, CFbsBitmap*& aMask );
-
-    /**
-     * Sets the ptrs to the default icon.
-     * Ownership not transferred to caller.
-     */
-    void DefaultIcon( CFbsBitmap*& aBitmap, CFbsBitmap*& aMask );
-
-private:
-    /**
-     * Default constructor.
-     */
-    CHgFswIconCache();
-
-    /**
-     * Second phase construction
-     */
-    void ConstructL();
-
-    /**
-     * Retrieves the bitmap/mask for the icon of the given app.
-     * @param   aAppUid application uid
-     * @param   aBitmap bitmap ptr, ownership transferred to caller, or NULL
-     * @param   aMask   mask ptr, ownership transferred to caller, or NULL
-     */
-    void GetAppIconL( const TUid& aAppUid,
-        CFbsBitmap*& aBitmap, CFbsBitmap*& aMask );
-
-private:
-    struct SHgBitmapPair
-        {
-        SHgBitmapPair( CFbsBitmap* aBitmap, CFbsBitmap* aMask )
-            : iBitmap( aBitmap ), iMask( aMask ) { }
-        CFbsBitmap* iBitmap;
-        CFbsBitmap* iMask;
-        };
-    RHashMap<TInt, SHgBitmapPair> iAppIcons;
-    
-    CGulIcon* iDefaultIcon;
-    };
-
-#endif
--- a/taskswitcher/contextengine/hgfswserver/engine/inc/hgfswidgetlist.h	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-/*
- * ============================================================================
- *  Name        : hgfswidgetlist.h
- *  Part of     : Hg Teleport
- *  Description : web widget list
- *  Version     : %version: sa1spcx1#5 %
- *
- *  Copyright 2008 Nokia.  All rights reserved.
- *  This material, including documentation and any related computer
- *  programs, is protected by copyright controlled by Nokia.  All
- *  rights are reserved.  Copying, including reproducing, storing,
- *  adapting or translating, any or all of this material requires the
- *  prior written consent of Nokia.  This material also contains
- *  confidential information which may not be disclosed to others
- *  without the prior written consent of Nokia.
- * ============================================================================
- */
-
-#ifndef HGFSWIDGETLIST_H_
-#define HGFSWIDGETLIST_H_
-
-#include <e32base.h>
-#include <widgetregistryclient.h>
-
-const TUint32 KWidgetAppUidValue = 0x10282822;
-
-/**
- * class handling the list of running wrt widgets
- */
-NONSHARABLE_CLASS(CHgFsWidgetList) : public CBase
-    {
-public:
-    static CHgFsWidgetList* NewL();
-
-    /** Destructor */
-    ~CHgFsWidgetList();
-
-    /**
-     * Initializes the list that stores widgets.
-     * @return   -
-     */        
-    void InitializeWidgetListL();
-
-    /**
-     * Returns a ref to the list of running widgets.
-     */
-    const RWidgetInfoArray& RunningWidgets() const { return iRunningWidgets; }
-
-private:
-    /** Constructor */
-    CHgFsWidgetList();
-    void ResetArrayOfWidgetInfo( RWidgetInfoArray& aWidgetInfoArr );
-    
-    static void CleanupConnect( TAny* aThis );
-
-private:
-    /** Contains list of widgets that are currently running */
-    RWidgetInfoArray iRunningWidgets;
-    RWidgetRegistryClientSession iWidgetRegistryClientSession;
-    };
-
-#endif
--- a/taskswitcher/contextengine/hgfswserver/engine/inc/hgfswobservers.h	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,81 +0,0 @@
-/*
- * ===========================================================================
- *  Name        : hgfswobservers.h
- *  Part of     : Huriganes / Fast Swap Server
- *  Description : Observer interfaces to get notifications from appui and from engine
- *  Version     : %version: sa1spcx1#4 %
- *
- *  Copyright © 2008 Nokia Corporation.
- *  This material, including documentation and any related 
- *  computer programs, is protected by copyright controlled by 
- *  Nokia Corporation. All rights are reserved. Copying, 
- *  including reproducing, storing, adapting or translating, any 
- *  or all of this material requires the prior written consent of 
- *  Nokia Corporation. This material also contains confidential 
- *  information which may not be disclosed to others without the 
- *  prior written consent of Nokia Corporation.
- * ===========================================================================
- */
-
-#ifndef __HGFSWOBSERVERS_H
-#define __HGFSWOBSERVERS_H
-
-/**
- * Interface to get notifications from appui when window groups
- * have changed.
- */
-class MHgFswTaskListObserver
-    {
-public:
-    /**
-     * Function called by AppUi to notify about possible
-     * changes in task list
-     */
-    virtual void UpdateTaskList() = 0;
-    };
-
-/**
- * Interface to get notifications from appui's HandleResourceChangeL.
- */
-class MHgFswResourceObserver
-    {
-public:
-    /**
-     * Function called by AppUi to notify about resource changes.
-     */
-    virtual void HandleResourceChange( TInt aType ) = 0;
-    };
-
-/**
- * Observer interface to get notifications from engine
- * when fsw content has changed.
- */
-class MHgFswEngineObserver
-    {
-public:
-    /**
-     * Called when there is a change in the task list.
-     */
-    virtual void FswDataChanged() = 0;
-
-    /**
-     * Called to find out how many clients are subscribed
-     * for fsw content change notifications.
-     */
-    virtual TInt FswDataListenerCount() = 0;
-    };
-
-/**
- * This class is interface for CHgFsHiddenAppList
- * to notify about list change
- */
-class MHgFsHiddenAppListObserver
-    {
-public:
-    /**
-     * This function is called by CHgFsHiddenAppList when list is changed.
-     */
-    virtual void HiddenAppListUpdated() = 0;
-    };
-
-#endif
--- a/taskswitcher/contextengine/hgfswserver/engine/src/hgfsalwaysshownapplist.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,119 +0,0 @@
-/*
- * ============================================================================
- *  Name        : hgfsalwaysshownapplist.cpp
- *  Part of     : Hg Teleport
- *  Description : File containing application list classes
- *  Version     : %version: 4 %
- *
- *  Copyright 2008 Nokia.  All rights reserved.
- *  This material, including documentation and any related computer
- *  programs, is protected by copyright controlled by Nokia.  All
- *  rights are reserved.  Copying, including reproducing, storing,
- *  adapting or translating, any or all of this material requires the
- *  prior written consent of Nokia.  This material also contains
- *  confidential information which may not be disclosed to others
- *  without the prior written consent of Nokia.
- * ============================================================================
- */
-
-//INCLUDES:
-#include <apaid.h>
-#include "hgfsalwaysshownapplist.h"
-
-//CONSTANTS:
-/* Array for all application uid that need to be always displayed (if they are running).
-   Also, there will be no Close option for such apps. */
-const TUint32 KHgFsUidArray[] =
-    {
-    0x102750F0 // Idle App Uid
-    ,0x0EFC346A //Search App Uid
-/* never show menu app */    //,0x101F4CD2 // Menu App Uid
-    };
-
-// ================= MEMBER FUNCTIONS =======================
-
-// --------------------------------------------------------------------------
-// CHgFsAlwaysShownAppList::NewL
-// --------------------------------------------------------------------------
-//
-CHgFsAlwaysShownAppList* CHgFsAlwaysShownAppList::NewL()
-    {
-    CHgFsAlwaysShownAppList* self =
-        new (ELeave) CHgFsAlwaysShownAppList;
-    CleanupStack::PushL (self );
-    self->ConstructL ( );
-    CleanupStack::Pop ( self );
-    return self;
-    }
-
-// --------------------------------------------------------------------------
-// CHgFsAlwaysShownAppList::CHgFsAlwaysShownAppList
-// --------------------------------------------------------------------------
-//
-CHgFsAlwaysShownAppList::CHgFsAlwaysShownAppList()
-    {
-    }
-
-// --------------------------------------------------------------------------
-// CHgFsAlwaysShownAppList::~CHgFsAlwaysShownAppList
-// --------------------------------------------------------------------------
-//
-CHgFsAlwaysShownAppList::~CHgFsAlwaysShownAppList( )
-    {
-    iAppList.Close();
-    iAppArcSession.Close();
-    }
-
-// --------------------------------------------------------------------------
-// CHgFsAlwaysShownAppList::ConstructL
-// --------------------------------------------------------------------------
-//
-void CHgFsAlwaysShownAppList::ConstructL( )
-    {
-    User::LeaveIfError( iAppArcSession.Connect() );
-    }
-
-// --------------------------------------------------------------------------
-// CHgFsAlwaysShownAppList::InitializeAlwaysShownListL
-// Applications that are always shown in fast swap are stored
-// in different their own list whether they exist
-// in the phone rom or not
-// --------------------------------------------------------------------------
-//
-void CHgFsAlwaysShownAppList::InitializeAlwaysShownListL( )
-    {
-    iAppList.Reset();
-    // order of always shown applications
-    TApaAppInfo applicationInfo;
-    for (TInt index = 0,
-            sizeOfArray = ( sizeof(KHgFsUidArray) / sizeof( TUint32 ) );
-            index < sizeOfArray; index++ )
-        {
-        // if exists in phone rom
-        if ( iAppArcSession.GetAppInfo( applicationInfo,
-                TUid::Uid( KHgFsUidArray[index] ) )!= KErrNotFound )
-            {
-            iAppList.AppendL( TUid::Uid( KHgFsUidArray[index] ) );
-            }
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CHgFsAlwaysShownAppList::IsAlwaysShownApp
-// If application uid exists in the always shown application list
-// --------------------------------------------------------------------------
-//
-TBool CHgFsAlwaysShownAppList::IsAlwaysShownApp( TUid aAppUid )
-    {
-    for ( TInt index = 0, count = iAppList.Count ( ); index < count; index++ )
-        {
-        if ( iAppList[index] == aAppUid )
-            {
-            return ETrue;
-            }
-        }
-    return EFalse;
-    }
-
-
-// end of file
--- a/taskswitcher/contextengine/hgfswserver/engine/src/hgfshiddenapplist.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,226 +0,0 @@
-/*
-* ============================================================================
-*  Name        : hgfshiddenapplist.cpp
-*  Part of     : Hg Teleport / Fast Swap module
-*  Description : Class that checks if chosen applications should be hidden
-*                from the task swap.
-*  Version     : %version: sa1spcx1#3 %
-*
-*  Copyright 2008 Nokia.  All rights reserved.
-*  This material, including documentation and any related computer
-*  programs, is protected by copyright controlled by Nokia.  All
-*  rights are reserved.  Copying, including reproducing, storing,
-*  adapting or translating, any or all of this material requires the
-*  prior written consent of Nokia.  This material also contains
-*  confidential information which may not be disclosed to others
-*  without the prior written consent of Nokia.
-* ============================================================================
-*/
-
-// INCLUDES
-#include "hgfshiddenapplist.h"
-#include <apgwgnam.h>
-
-#include <eikenv.h>
-
-// the maximum size of array (25 32-bit UIDs equal 100 bytes)
-const TInt KMaxHiddenApps = 25;
-
-/**
- * Category id for the hidden application list.
- */
-const TUid KPSUidUikon = { 0x101F8773 };
-const TUint32 KUikAppHiddenList  = 0x00000010;
-
-/**
- * Apps that are always hidden, no matter what settings the system reports.
- */
-const TUint32 KHgFsAlwaysHiddenUidArray[] =
-    {
-    0x100056CF // screensaver
-    };
-
-// -----------------------------------------------------------------------------
-// CHgFsHiddenAppList::NewL
-// -----------------------------------------------------------------------------
-//
-CHgFsHiddenAppList* CHgFsHiddenAppList::NewL(
-        MHgFsHiddenAppListObserver& aObserver )
-    {
-    CHgFsHiddenAppList* self =
-        new ( ELeave ) CHgFsHiddenAppList( aObserver );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// CHgFsHiddenAppList::NewLC
-// -----------------------------------------------------------------------------
-//
-CHgFsHiddenAppList* CHgFsHiddenAppList::NewLC(
-        MHgFsHiddenAppListObserver& aObserver )
-    {
-    CHgFsHiddenAppList* self = CHgFsHiddenAppList::NewL( aObserver );
-    CleanupStack::PushL( self );
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// CHgFsHiddenAppList::~CHgFsHiddenAppList
-// -----------------------------------------------------------------------------
-//
-CHgFsHiddenAppList::~CHgFsHiddenAppList()
-    {
-    Cancel();
-
-    ResetArray();
-    delete iHiddenAppList;
-
-    iProperty.Close();
-    }
-
-// -----------------------------------------------------------------------------
-// CHgFsHiddenAppList::IsHiddenL
-// -----------------------------------------------------------------------------
-//
-TBool CHgFsHiddenAppList::IsHiddenL( TUid aAppUid,
-                                     const RWsSession& aWsSession,
-                                     TInt aWgId )
-    {
-    TBool ret = EFalse;
-
-    CApaWindowGroupName* windowName =
-                        CApaWindowGroupName::NewLC( aWsSession, aWgId );
-
-    if ( windowName->Hidden() )
-        {
-        ret = ETrue;
-        }
-    else
-        {
-        for ( TInt i = 0, ie = iHiddenAppList->Count(); i != ie; ++i )
-            {
-            if ( aAppUid.iUid == iHiddenAppList->At( i ) )
-                {
-                ret = ETrue;
-                break;
-                }
-            }
-        if ( !ret )
-            {
-            for ( TInt i = 0,
-                    arrCnt = sizeof( KHgFsAlwaysHiddenUidArray ) / sizeof( TUint32 );
-                    i != arrCnt; ++i )
-                {
-                if ( KHgFsAlwaysHiddenUidArray[i] == aAppUid.iUid )
-                    {
-                    ret = ETrue;
-                    break;
-                    }
-                }
-            }
-        }
-
-    CleanupStack::PopAndDestroy( windowName );
-    return ret;
-    }
-
-// -----------------------------------------------------------------------------
-// CHgFsHiddenAppList::CHgFsHiddenAppList
-// -----------------------------------------------------------------------------
-//
-CHgFsHiddenAppList::CHgFsHiddenAppList(
-        MHgFsHiddenAppListObserver& aObserver )
-            :CActive( CActive::EPriorityHigh ), iObserver( aObserver )
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// CHgFsHiddenAppList::ConstructL
-// -----------------------------------------------------------------------------
-//
-void CHgFsHiddenAppList::ConstructL()
-    {
-    const TInt KMaxGranularity = 4;
-    CActiveScheduler::Add( this );
-
-    iHiddenAppList = new (ELeave) CArrayFixFlat<TInt>( KMaxGranularity );
-    User::LeaveIfError( iProperty.Attach( KPSUidUikon, KUikAppHiddenList, EOwnerThread ) );
-
-    // must not call RunL directly from here as things are not fully initialized yet
-    TRequestStatus* status = &iStatus;
-    User::RequestComplete( status, KErrNone );
-    SetActive();
-    }
-
-// -----------------------------------------------------------------------------
-// CHgFsHiddenAppList::ResetArray
-// -----------------------------------------------------------------------------
-//
-void CHgFsHiddenAppList::ResetArray()
-    {
-    if ( iHiddenAppList )
-        {
-        iHiddenAppList->Reset();
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CHgFsHiddenAppList::UpdateListL
-// -----------------------------------------------------------------------------
-//
-void CHgFsHiddenAppList::UpdateListL()
-    {
-    ResetArray();
-
-    // hidden list array
-    TBuf16 <2*KMaxHiddenApps> hiddenList;
-    iProperty.Get( hiddenList );
-
-    for ( TInt i = 0; i < hiddenList.Length(); i = i + 2 )
-        {
-        TUint32 uid = 0x00000000;
-        uid = hiddenList[i];
-        uid = uid << 16; // codescanner::magicnumbers
-        uid |= hiddenList[i+1];
-
-        if ( uid != 0 )
-            {
-            iHiddenAppList->AppendL( uid );
-            }
-        else
-            {
-            break;
-            }
-        }
-
-    iObserver.HiddenAppListUpdated();
-    }
-
-// -----------------------------------------------------------------------------
-// CHgFsHiddenAppList::DoCancel
-// -----------------------------------------------------------------------------
-//
-void CHgFsHiddenAppList::DoCancel()
-    {
-    iProperty.Cancel();
-    }
-
-// -----------------------------------------------------------------------------
-// CHgFsHiddenAppList::RunL
-// -----------------------------------------------------------------------------
-//
-void CHgFsHiddenAppList::RunL()
-    {
-    if ( !IsActive() )
-        {
-        iProperty.Subscribe( iStatus );
-        SetActive();
-        }
-    UpdateListL();
-    }
-
-
-// end of file
--- a/taskswitcher/contextengine/hgfswserver/engine/src/hgfswengine.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1062 +0,0 @@
-/*
- * ===========================================================================
- *  Name        : hgfswengine.cpp
- *  Part of     : Huriganes / Fast Swap Server
- *  Description : Task monitor engine
- *  Version     : %version: sa1spcx1#37 %
- *
- *  Copyright © 2008 Nokia Corporation.
- *  This material, including documentation and any related 
- *  computer programs, is protected by copyright controlled by 
- *  Nokia Corporation. All rights are reserved. Copying, 
- *  including reproducing, storing, adapting or translating, any 
- *  or all of this material requires the prior written consent of 
- *  Nokia Corporation. This material also contains confidential 
- *  information which may not be disclosed to others without the 
- *  prior written consent of Nokia Corporation.
- * ===========================================================================
- */
-
-#include "hgfswengine.h"
-#include "hgfsalwaysshownapplist.h"
-#include "hgfshiddenapplist.h"
-#include "hgfswidgetlist.h"
-#include "hgfswiconcache.h"
-#include "hgpreviewprovider.h"
-#include "hgfswclient.h"
-#include <apgtask.h>
-#include <AknDef.h>
-#include <apgwgnam.h>
-#include <mmf/common/mmfcontrollerpluginresolver.h> // for CleanupResetAndDestroyPushL
-#include <featmgr.h>
-#include <swi/swispubsubdefs.h>
-
-#include "enginelogging.h"
-
-// time to wait before refreshing content
-const TInt KContentRefreshDelay = 500000; // 0.5 sec
-
-// for screenshots, they are scaled down to (screensize/this_factor).
-const TInt KScreenSizeFactor = 2;
-
-// format to get a lowercase hex string prefixed with 0x
-_LIT( KHexFmt, "0x%x" );
-
-// --------------------------------------------------------------------------
-// CHgFswEngine::NewL
-// --------------------------------------------------------------------------
-//
-EXPORT_C CHgFswEngine* CHgFswEngine::NewL( MHgFswEngineObserver& aObserver )
-    {
-    CHgFswEngine* self = NewLC( aObserver );
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswEngine::NewLC
-// --------------------------------------------------------------------------
-//
-EXPORT_C CHgFswEngine* CHgFswEngine::NewLC( MHgFswEngineObserver& aObserver )
-    {
-    CHgFswEngine* self = new ( ELeave ) CHgFswEngine( aObserver );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    return self;
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswEngine::CHgFswEngine
-// --------------------------------------------------------------------------
-//
-CHgFswEngine::CHgFswEngine( MHgFswEngineObserver& aObserver )
-        : CActive( EPriorityStandard ), iObserver( aObserver )
-    {
-    CActiveScheduler::Add( this );
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswEngine::ConstructL
-// --------------------------------------------------------------------------
-//
-void CHgFswEngine::ConstructL()
-    {
-    iEnv = CEikonEnv::Static();
-
-    User::LeaveIfError( iWsSession.Connect() );
-    User::LeaveIfError( iAppArcSession.Connect() );
-
-    iHiddenAppList = CHgFsHiddenAppList::NewL( *this );
-    iAlwaysShownAppList = CHgFsAlwaysShownAppList::NewL();
-
-    iWidgetsSupported = FeatureManager::FeatureSupported( KFeatureIdWebWidgets );
-    if ( iWidgetsSupported )
-        {
-        iWidgetList = CHgFsWidgetList::NewL();
-        }
-
-    // create app icon retriever instance
-    iAppIcons = CHgFswIconCache::NewL();
-
-    // get an initial list of tasks
-    iAppDataRefreshNeeded = ETrue;
-    CollectTasksL();
-
-    // listen for app screenshots
-    iPreviewProvider = CHgFastSwapPreviewProvider::NewL( *this );
-    SetPreviewParams();
-    UpdatePreviewContent();
-
-    iUpdateStarter = CPeriodic::NewL( CActive::EPriorityStandard );
-    
-    // start listening for swi ps property
-    if ( iSwiProp.Attach( KUidSystemCategory,
-            Swi::KUidSoftwareInstallKey ) == KErrNone )
-        {
-        iSwiProp.Subscribe( iStatus );
-        SetActive();
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswEngine::~CHgFswEngine
-// --------------------------------------------------------------------------
-//
-CHgFswEngine::~CHgFswEngine()
-    {
-    Cancel();
-    iSwiProp.Close();
-
-    delete iUpdateStarter;
-    delete iPreviewProvider;
-
-    // delete the bitmaps as the hash map cannot do that
-    THashMapIter<TInt, CFbsBitmap*> iter( iScreenshots );
-    while ( const TInt* key = iter.NextKey() )
-        {
-        CFbsBitmap** value = iter.CurrentValue();
-        delete *value;
-        }
-    iScreenshots.Close();
-    delete iAppIcons;
-
-    iData.ResetAndDestroy();
-    iWgIds.Close();
-
-    delete iHiddenAppList;
-    delete iAlwaysShownAppList;
-    delete iWidgetList;
-    iAppArcSession.Close();
-    iWsSession.Close();
-
-//    delete iContextUtility;
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswEngine::FswDataL
-// --------------------------------------------------------------------------
-//
-EXPORT_C const RHgFswArray& CHgFswEngine::FswDataL()
-    {
-    HGLOG_CONTEXT( FswDataL, HGLOG_LOCAL );
-    HGLOG1_IN( "dirty flag = %d", iTaskListDirty );
-
-    // check the dirty flag and refresh if needed
-    if ( iTaskListDirty )
-        {
-        CollectTasksL();
-        // dirty flag is cleared in the above call
-        }
-
-    // Get app icon for entries without screenshot,
-    // do this only here as the app icon is not needed in case a screenshot
-    // is already available.
-    for ( TInt i = 0, ie = iData.Count(); i != ie; ++i )
-        {
-        if ( !iData[i]->ScreenshotHandle() )
-            {
-            CFbsBitmap* bmp;
-            CFbsBitmap* mask;
-            TUid appUid = iData[i]->AppUid();
-            // this will leave with -46 in case of widgets if we do not have AllFiles cap
-            TRAPD( err, iAppIcons->GetIconL( appUid, bmp, mask ) );
-            if ( err == KErrNone && bmp )
-                {
-                iData[i]->SetAppIconHandles( bmp->Handle(),
-                    mask ? mask->Handle() : 0 );
-                }
-            else
-                {
-                iAppIcons->DefaultIcon( bmp, mask );
-                iData[i]->SetAppIconHandles( bmp->Handle(),
-                    mask ? mask->Handle() : 0 );
-                }
-            }
-        }
-
-    HGLOG_OUT();
-    return iData;
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswEngine::CloseAppL
-// --------------------------------------------------------------------------
-//
-EXPORT_C void CHgFswEngine::CloseAppL( TInt aWgId )
-    {
-    HGLOG_CONTEXT( CloseAppL, HGLOG_LOCAL );
-    HGLOG1_IN( "aWgId = %d", aWgId );
-
-    if ( iWidgetsSupported && aWgId < 0 && iWidgetAppUiWgId )
-        {
-        // for widgets clients see a wgid that is -1*(index+1)
-        const RWidgetInfoArray& arr( iWidgetList->RunningWidgets() );
-        // convert aWgId to an index in the list of running widgets
-        TInt idx = -aWgId - 1;
-        // if index is valid then handle the widget specially
-        if ( idx >= 0 && idx < arr.Count() )
-            {
-            TWsEvent event;
-            event.SetType( EEventUser );
-            TUint8* eventData = event.EventData();
-            // Fill bits 0-31 with widget application uid.
-            reinterpret_cast<TUint32&>( *eventData ) = KWidgetAppUidValue;
-            eventData += sizeof( TUint32 );
-            // Fill bits 32-63 with uid of the widget that should be closed.
-            reinterpret_cast<TUint32&>( *eventData ) = arr[idx]->iUid.iUid;
-            // Send the event to Widget AppUi.
-            iEnv->WsSession().SendEventToWindowGroup(
-                iWidgetAppUiWgId, event );
-            // closing a widget may not cause a window group change so trigger
-            // the update manually
-            UpdateTaskList();
-            HGLOG0_OUT( "widget processing finished" );
-            return;
-            }
-        }
-
-    TUid appUid = AppUidForWgIdL( aWgId );
-    if ( !iAlwaysShownAppList->IsAlwaysShownApp( appUid ) )
-        {
-        // send window group event to kill the app
-        TWsEvent event;
-        event.SetTimeNow();
-        event.SetType( KAknShutOrHideApp );
-        iEnv->WsSession().SendEventToWindowGroup( aWgId, event );
-        HGLOG0( HGLOG_INFO, "event sent to wg" );
-        }
-
-    HGLOG_OUT();
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswEngine::SwitchToAppL
-// --------------------------------------------------------------------------
-//
-EXPORT_C void CHgFswEngine::SwitchToAppL( TInt aWgId )
-    {
-    HGLOG_CONTEXT( SwitchToAppL, HGLOG_LOCAL );
-    HGLOG1_IN( "aWgId = %d", aWgId );
-
-    if ( iWidgetsSupported && aWgId < 0 )
-        {
-        // for widgets clients see a wgid that is -1*(index+1)
-        const RWidgetInfoArray& arr( iWidgetList->RunningWidgets() );
-        // convert aWgId to an index in the list of running widgets
-        TInt idx = -aWgId - 1;
-        // if index is valid then handle the widget specially
-        if ( idx >= 0 && idx < arr.Count() )
-            {
-            SwitchToWidgetL( idx );
-            HGLOG1_OUT( "switched to widget %d", idx );
-            return;
-            }
-        }
-
-    TApaTask task( iEnv->WsSession() );
-    task.SetWgId( aWgId );
-    task.BringToForeground();
-
-    HGLOG_OUT();
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswEngine::SwitchToWidgetL
-// --------------------------------------------------------------------------
-//
-void CHgFswEngine::SwitchToWidgetL( TInt aWidgetIndex )
-    {
-    const RWidgetInfoArray& arr( iWidgetList->RunningWidgets() );
-    RApaLsSession ls;
-    User::LeaveIfError( ls.Connect() );
-    CleanupClosePushL( ls );
-    CApaCommandLine* cmdLine = CApaCommandLine::NewLC();
-    cmdLine->SetCommandL( EApaCommandRun );
-    TApaAppInfo info;
-    iAppArcSession.GetAppInfo( info, arr[aWidgetIndex]->iUid ); // codescanner::accessArrayElementWithoutCheck2 (aWidgetIndex checked in SwitchToAppL())
-    cmdLine->SetExecutableNameL( info.iFullName );
-    ls.StartApp( *cmdLine );
-    CleanupStack::PopAndDestroy( 2, &ls );
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswEngine::UpdateTaskList
-// Callback from appui
-// --------------------------------------------------------------------------
-//
-void CHgFswEngine::UpdateTaskList()
-    {
-    HGLOG_CONTEXT( UpdateTaskList, HGLOG_LOCAL );
-    HGLOG_IN();
-
-    // If no clients are subscribed for fsw content change notifications
-    // then there is no need to waste time with rebuilding the task list,
-    // just set the dirty flag.
-    TInt listenerCount = iObserver.FswDataListenerCount();
-    HGLOG1( HGLOG_INFO, "listener count = %d", listenerCount );
-    if ( listenerCount > 0 )
-        {
-        // There can be many calls in a row, use a timer to prevent degrading
-        // device performance.
-        if ( !iUpdateStarter->IsActive() )
-            {
-            iUpdateStarter->Start( KContentRefreshDelay, 0,
-                TCallBack( UpdateStarterCallback, this ) );
-            }
-        }
-    else
-        {
-        iTaskListDirty = ETrue;
-        }
-
-    // screenshot taking support - call Register and Unregister when needed
-    UpdatePreviewContent();
-
-    // get the foreground app uid and publish it to CFW if different than before
-    TRAP_IGNORE( PublishFgAppUidL() );
-    
-    HGLOG_OUT();
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswEngine::ForegroundAppUidL
-// --------------------------------------------------------------------------
-//
-EXPORT_C TUid CHgFswEngine::ForegroundAppUidL( TInt aType )
-    {
-    // Do not use GetFocusWindowGroup or others.
-    // We want to see only "real" application uids in FgApp,
-    // i.e. stuff that would also be shown in the task swapper
-    // area of Teleport.
-
-    TUid result = KNullUid;
-    RArray<RWsSession::TWindowGroupChainInfo> allWgIds;
-    CleanupClosePushL( allWgIds );
-    User::LeaveIfError( iWsSession.WindowGroupList( 0, &allWgIds ) );
-    TInt count = allWgIds.Count();
-    for ( TInt i = 0; i < count; ++i )
-        {
-        // Depending on aType we may not need to bother with iParentId here.
-        // If aType == EUseEmbeddedUid => embedded apps are treated as others.
-        // If aType == EUseStandaloneUid => embedded apps must be ignored.
-        if ( allWgIds[i].iParentId > 0
-                && aType == CHgFswClient::EUseStandaloneUid )
-            {
-            continue;
-            }
-
-        CApaWindowGroupName* wgn = CApaWindowGroupName::NewLC(
-            iWsSession, allWgIds[i].iId );
-        TUid newUid = wgn->AppUid();
-        TBool hidden = wgn->Hidden() || iHiddenAppList->IsHiddenL(
-            newUid, iWsSession, allWgIds[i].iId );
-        CleanupStack::PopAndDestroy( wgn );
-
-        if ( !hidden && newUid.iUid )
-            {
-            result = newUid;
-            break;
-            }
-        }
-    CleanupStack::PopAndDestroy( &allWgIds );
-    
-    return result;
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswEngine::PublishFgAppUidL
-// --------------------------------------------------------------------------
-//
-void CHgFswEngine::PublishFgAppUidL()
-    {
-    HGLOG_CONTEXT( PublishFgAppUidL, HGLOG_LOCAL );
-    HGLOG_IN();
-
-    TUid newUid = ForegroundAppUidL( CHgFswClient::EUseEmbeddedUid );
-    HGLOG2( HGLOG_INFO, "ws says: %x we have: %x", newUid.iUid, iFgAppUid.iUid );
-    if ( iFgAppUid != newUid && newUid.iUid )
-        {
-        iFgAppUid = newUid;
-        iFgAppUidStr.Format( KHexFmt, iFgAppUid.iUid );
-        //PublishContextL( KHgCFTypeFgApp, iFgAppUidStr );
-        }
-
-    HGLOG_OUT();
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswEngine::PublishContextL
-// --------------------------------------------------------------------------
-//
-//void CHgFswEngine::PublishContextL( const TDesC& aType, const TDesC& aValue )
-//    {
-//    HGLOG_CONTEXT( PublishContextL, HGLOG_LOCAL );
-//    HGLOG2_IN( "%S: %S", &aType, &aValue );
-//    if ( !iContextUtility )
-//        {
-//        iContextUtility = CHgContextUtility::NewL();
-//        iContextUtility->AllowPublishFromBackground( ETrue );
-//        }
-//    iContextUtility->PublishContextL( aType, aValue );
-//    HGLOG_OUT();
-//    }
-
-// --------------------------------------------------------------------------
-// CHgFswEngine::UpdateStarterCallback
-// Callback for the timer
-// --------------------------------------------------------------------------
-//
-TInt CHgFswEngine::UpdateStarterCallback( TAny* aParam )
-    {
-    CHgFswEngine* self = static_cast<CHgFswEngine*>( aParam );
-    self->iUpdateStarter->Cancel();
-    // get list of tasks and notify observer if there is a change in the list
-    TBool changed = EFalse;
-    TRAPD( err, changed = self->CollectTasksL() );
-    if ( err == KErrNone && changed )
-        {
-        self->iObserver.FswDataChanged();
-        }
-    return 0;
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswEngine::CollectTasksL
-// --------------------------------------------------------------------------
-//
-TBool CHgFswEngine::CollectTasksL()
-    {
-    HGLOG_CONTEXT( CollectTasksL, HGLOG_LOCAL );
-    HGLOG_IN();
-
-    // clear dirty flag
-    iTaskListDirty = EFalse;
-
-    TBool changed = EFalse;
-    RHgFswArray newList;
-    CleanupResetAndDestroyPushL( newList );
-
-    // update app data if needed
-    // (usually on startup and when new apps might have been installed)
-    if ( iAppDataRefreshNeeded )
-        {
-        HGLOG0( HGLOG_INFO, "refreshing app data" );
-        iAppArcSession.GetAllApps();
-        iAlwaysShownAppList->InitializeAlwaysShownListL();
-        iAppDataRefreshNeeded = EFalse;
-        }
-
-    // get all window groups
-    RArray<RWsSession::TWindowGroupChainInfo> allWgIds;
-    CleanupClosePushL( allWgIds );
-    User::LeaveIfError( iWsSession.WindowGroupList( 0, &allWgIds ) );
-    TInt count = allWgIds.Count();
-
-    for ( TInt i = 0; i < count; ++i )
-        {
-        // ignore uninteresting entries (e.g. embedded apps)
-        if ( allWgIds[i].iParentId > 0 )
-            {
-            continue;
-            }
-
-        // get window group name
-        TInt wgId = allWgIds[i].iId;
-        CApaWindowGroupName* windowName =
-            CApaWindowGroupName::NewLC( iWsSession, wgId );
-        TUid appUid = windowName->AppUid();
-
-        // ignore entries with null uid
-        if ( !appUid.iUid )
-            {
-            CleanupStack::PopAndDestroy( windowName );
-            continue;
-            }
-
-        // will append the task to our own list only if it is not hidden
-        TBool onHiddenList = iHiddenAppList->IsHiddenL(
-            appUid, iWsSession, wgId );
-
-        // if this is the widget app then save wgid for later use
-        // and ignore it, but include running widgets instead
-        if ( iWidgetsSupported && appUid.iUid == KWidgetAppUidValue )
-            {
-            iWidgetAppUiWgId = wgId;
-            onHiddenList = ETrue;
-            CheckWidgetsL( newList );
-            }
-
-        // get screen number (-1=console, 0=main screen, 1=cover ui)
-        TInt appScreen = 0;
-        TInt scrNumErr = iAppArcSession.GetDefaultScreenNumber( appScreen, appUid );
-
-        // check if it is on always-shown list
-        TBool mustShow = iAlwaysShownAppList->IsAlwaysShownApp( appUid );
-
-#ifdef _DEBUG
-        const TDesC& captionDbg( windowName->Caption() );
-        HGLOG4( HGLOG_INFO, "[%d] wgid=%d appuid=%x (%S)", i, wgId,
-            appUid.iUid, &captionDbg );
-        HGLOG4( HGLOG_INFO, "hidden=%d onhiddenlist=%d mustshow=%d scrno=%d",
-            windowName->Hidden(), onHiddenList, mustShow, appScreen );
-#endif
-
-        // add item to task list if it is always-shown OR it is not hidden
-        // and it is not on cover ui
-        if ( mustShow
-                || ( !onHiddenList
-                    && !windowName->Hidden()
-                    && ( appScreen == 0 || appScreen == -1 )
-                    && scrNumErr == KErrNone ) )
-            {
-            if ( AddEntryL( wgId, appUid, windowName, newList, EFalse ) )
-                {
-                changed = ETrue;
-                }
-            }
-        CleanupStack::PopAndDestroy( windowName );
-        }
-    CleanupStack::PopAndDestroy( &allWgIds );    
-
-    // if counts for old and new lists do not match then there is a change for sure,
-    // probably an app has been closed
-    if ( iData.Count() != newList.Count() )
-        {
-        changed = ETrue;
-        }
-
-    // move pointers from the temporary list into the real one
-    iData.ResetAndDestroy();
-    TInt newListCount = newList.Count();
-    HGLOG1( HGLOG_INFO, "new list count = %d", newListCount );
-    for ( TInt i = 0; i < newListCount; ++i )
-        {
-        HGLOG3( HGLOG_INFO, "[%d] %S wgid=%d",
-            i, &newList[i]->AppName(), newList[i]->WgId() );
-        iData.AppendL( newList[i] );
-        newList[i] = 0;
-        }
-    CleanupStack::PopAndDestroy( &newList );
-    
-    HGLOG1_OUT( "change flag = %d", changed );
-    return changed;
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswEngine::AddEntryL
-// --------------------------------------------------------------------------
-//
-TBool CHgFswEngine::AddEntryL( TInt aWgId, const TUid& aAppUid,
-        CApaWindowGroupName* aWgName, RHgFswArray& aNewList,
-        TBool aIsWidget )
-    {
-    TBool changed = EFalse;
-    CHgFswEntry* entry = CHgFswEntry::NewLC();
-    entry->SetWgId( aWgId );
-    entry->SetAppUid( aAppUid );
-    entry->SetWidget( aIsWidget );
-
-    // check if present in old list and if yes then take some of the old data
-    TBool found = CheckIfExistsL( *entry, aAppUid, changed, aNewList );
-
-    // if not present previously then find out app name
-    // and check if screenshot is already available
-    if ( !found )
-        {
-        // when adding a new entry to the list it is changed for sure
-        changed = ETrue;
-        HBufC* name = FindAppNameLC( aWgName, aAppUid, aWgId );
-        if ( name )
-            {
-            entry->SetAppNameL( *name );
-            }
-        CleanupStack::PopAndDestroy( name );
-        TInt h = LookupScreenshotHandle( aWgId );
-        if ( h )
-            {
-            entry->SetScreenshotHandle( h );
-            }
-        entry->SetAlwaysShown( iAlwaysShownAppList->IsAlwaysShownApp( aAppUid ) );
-        if ( aWgName )
-            {
-            entry->SetSystemApp( aWgName->IsSystem() );
-            }
-        }
-
-    // add to new list, ownership is transferred
-    aNewList.AppendL( entry );
-    CleanupStack::Pop( entry );
-    return changed;
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswEngine::CheckIfExistsL
-// --------------------------------------------------------------------------
-//
-TBool CHgFswEngine::CheckIfExistsL( CHgFswEntry& aEntry,
-        const TUid& aAppUid,
-        TBool& aChanged,
-        RHgFswArray& aNewList )
-    {
-    for ( TInt entryIdx = 0, oldCount = iData.Count();
-            entryIdx < oldCount; ++entryIdx )
-        {
-        // Enough to check appuid, no need to bother with wgid as the
-        // screenshot handle is up-to-date or will be updated later anyway.
-        if ( iData[entryIdx]->AppUid() == aAppUid )
-            {
-            // if positions do not match then the list is different than before
-            if ( entryIdx != aNewList.Count() )
-                {
-                aChanged = ETrue;
-                }
-            CHgFswEntry* oldEntry = iData[entryIdx];
-            aEntry.SetAppNameL( oldEntry->AppName() );
-            aEntry.SetScreenshotHandle( oldEntry->ScreenshotHandle() );
-            aEntry.SetAlwaysShown( oldEntry->AlwaysShown() );
-            aEntry.SetSystemApp( oldEntry->SystemApp() );
-            return ETrue;
-            }
-        }
-    return EFalse;
-    }
-    
-// --------------------------------------------------------------------------
-// CHgFswEngine::CheckWidgetsL
-// --------------------------------------------------------------------------
-//
-void CHgFswEngine::CheckWidgetsL( RHgFswArray& aNewList )
-    {
-    if ( iWidgetsSupported )
-        {
-        iWidgetList->InitializeWidgetListL();
-        const RWidgetInfoArray& arr( iWidgetList->RunningWidgets() );
-        for ( TInt i = 0, ie = arr.Count(); i != ie; ++i )
-            {
-            // wgid will be a special negative value
-            // windowgroupname is not needed here so pass NULL
-            AddEntryL( -(i+1), arr[i]->iUid, 0, aNewList, ETrue );
-            }
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswEngine::HiddenAppListUpdated
-// Callback from the hidden app list watcher
-// --------------------------------------------------------------------------
-//
-void CHgFswEngine::HiddenAppListUpdated()
-    {
-    UpdateTaskList();
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswEngine::AppUidForWgIdL
-// --------------------------------------------------------------------------
-//
-TUid CHgFswEngine::AppUidForWgIdL( TInt aWgId )
-    {
-    CApaWindowGroupName* windowName =
-        CApaWindowGroupName::NewLC( iWsSession, aWgId );
-    TUid appUid = windowName->AppUid();
-    CleanupStack::PopAndDestroy( windowName );
-    return appUid;
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswEngine::FindParentWgId
-// --------------------------------------------------------------------------
-//
-TInt CHgFswEngine::FindParentWgId( TInt aWgId )
-    {
-    TInt parent( KErrNotFound );
-    RArray<RWsSession::TWindowGroupChainInfo> allWgIds;
-    // Ask for window group list from RWsSession
-    TInt error = iWsSession.WindowGroupList( 0, &allWgIds );
-    if ( !error )
-        {
-        TInt count( allWgIds.Count() );
-        for ( TInt i( 0 ); i < count; i++ )
-            {
-            RWsSession::TWindowGroupChainInfo info = allWgIds[i];
-            if ( info.iId == aWgId )
-                {
-                parent = info.iParentId;
-                break;
-                }
-            }
-        }
-    allWgIds.Close();
-    return parent;
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswEngine::FindAppNameLC
-// --------------------------------------------------------------------------
-//
-HBufC* CHgFswEngine::FindAppNameLC( CApaWindowGroupName* aWindowName,
-                                  const TUid& aAppUid,
-                                  TInt aWgId )
-    {
-    //Retrieve the app name
-    TApaAppInfo info;
-    iAppArcSession.GetAppInfo( info, aAppUid );
-    TPtrC caption = info.iShortCaption;
-
-    HBufC* tempName = 0;
-    if ( !caption.Length() && aWindowName ) // if not set - use thread name instead
-        {
-        if ( aWindowName->Caption().Length() )
-            {
-            tempName = aWindowName->Caption().AllocL();
-            //put on cleanupstack after the if
-            }
-        else
-            {
-            TThreadId threadId;
-            TInt err = iWsSession.GetWindowGroupClientThreadId(
-                    aWgId, threadId );
-            if ( err == KErrNone )
-                {
-                RThread thread;
-                CleanupClosePushL( thread );
-                err = thread.Open ( threadId );
-                if ( err==KErrNone )
-                    {
-                    tempName = thread.Name().AllocL(); // codescanner::forgottoputptroncleanupstack
-                    // tempName put on cleanupstack after the if
-                    }
-                CleanupStack::PopAndDestroy( &thread );
-                }
-            }
-        }
-    else
-        {
-        tempName = caption.AllocL();
-        //put on cleanupstack after the if
-        }
-    CleanupStack::PushL( tempName );
-    return tempName;
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswEngine::CopyBitmapL
-// --------------------------------------------------------------------------
-//
-CFbsBitmap* CHgFswEngine::CopyBitmapL( TInt aFbsHandle, TBool aKeepAspectRatio )
-    {
-    CFbsBitmap* ret = new (ELeave) CFbsBitmap;
-    CleanupStack::PushL( ret );
-    CFbsBitmap* bmp = new (ELeave) CFbsBitmap;
-    CleanupStack::PushL( bmp );
-    User::LeaveIfError( bmp->Duplicate( aFbsHandle ) );
-
-    //Make bitmap width and height equal so that it will look better in FSW control.
-    TSize size  = bmp->SizeInPixels();
-
-    if ( !aKeepAspectRatio )
-        {
-        if ( size.iHeight > size.iWidth )
-            {
-            size.iHeight = size.iWidth;
-            }
-        else
-            {
-            size.iWidth = size.iHeight;
-            }
-        }
-
-    // preserve size and mode
-    User::LeaveIfError( ret->Create( size, EColor64K ) );
-
-    CFbsBitmapDevice* doubleBufferDev = CFbsBitmapDevice::NewL( ret );
-    CleanupStack::PushL( doubleBufferDev );
-
-    CFbsBitGc* doubleBufferGc = 0;
-    User::LeaveIfError( doubleBufferDev->CreateContext( doubleBufferGc ) );
-    CleanupStack::PushL( doubleBufferGc );
-
-    // preserve size
-    doubleBufferGc->BitBlt( TPoint( 0, 0 ), bmp, TRect(size) );
-
-    CleanupStack::PopAndDestroy( doubleBufferGc );
-    CleanupStack::PopAndDestroy( doubleBufferDev );
-    CleanupStack::PopAndDestroy( bmp );
-    CleanupStack::Pop( ret );
-
-    return ret;
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswEngine::UpdatePreviewContent
-// --------------------------------------------------------------------------
-//
-void CHgFswEngine::UpdatePreviewContent()
-    {
-    HGLOG_CONTEXT( UpdatePreviewContent, HGLOG_LOCAL );
-    HGLOG_IN();
-
-    RArray<RWsSession::TWindowGroupChainInfo> allWgIds;
-    if ( iWsSession.WindowGroupList( 0, &allWgIds ) == KErrNone )
-        {
-        // check window groups that do not exist anymore
-        for ( TInt i = 0, ie = iWgIds.Count(); i != ie; ++i )
-            {
-            TInt wgid = iWgIds[i];
-            TBool present = EFalse;
-            for ( TInt j = 0, je = allWgIds.Count(); j != je; ++j )
-                {
-                if ( allWgIds[j].iId == wgid )
-                    {
-                    present = ETrue;
-                    break;
-                    }
-                }
-            if ( !present )
-                {
-                HGLOG1( HGLOG_INFO, "unregister: %d", wgid );
-                iPreviewProvider->Unregister( wgid );
-                }
-            }
-        // check topmost window group
-        if ( allWgIds.Count() )
-            {
-            if ( !iWgIds.Count() || allWgIds[0].iId != iWgIds[0] )
-                {
-                TInt wgid = allWgIds[0].iId;
-                HGLOG1( HGLOG_INFO, "registering %d", wgid );
-                iPreviewProvider->Register( wgid );
-                }
-            }
-        // store the new list
-        iWgIds.Reset();
-        for ( TInt i = 0, ie = allWgIds.Count(); i != ie; ++i )
-            {
-            iWgIds.Append( allWgIds[i].iId );
-            }
-        }
-    allWgIds.Close();
-
-    HGLOG_OUT();
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswEngine::HandleFswPpApplicationChange
-// Callback from CHgFastSwapPreviewProvider
-// Note: aWgId is for the window group for which the screenshot is taken,
-// it may not be the same as the application's wgid (in case of embedded apps)
-// --------------------------------------------------------------------------
-//
-void CHgFswEngine::HandleFswPpApplicationChange( TInt aWgId, TInt aFbsHandle )
-    {
-    HGLOG_CONTEXT( HandleFswPpApplicationChange, HGLOG_LOCAL );
-    HGLOG2_IN( "aWgId = %d aFbsHandle = %d", aWgId, aFbsHandle );
-
-    CFbsBitmap* bmp = 0;
-    TRAPD( err, bmp = CopyBitmapL( aFbsHandle, EFalse ) );
-    iPreviewProvider->AckPreview(aFbsHandle);
-    if ( err == KErrNone )
-        {
-        CFbsBitmap** oldbmp = iScreenshots.Find( aWgId );
-        if ( oldbmp )
-            {
-            delete *oldbmp;
-            }
-        if ( iScreenshots.Insert( aWgId, bmp ) != KErrNone )
-            {
-            delete bmp;
-            iScreenshots.Remove( aWgId );
-            }
-        else
-            {
-            AssignScreenshotHandle( aWgId, bmp->Handle() );
-            }
-        }
-
-    HGLOG_OUT();
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswEngine::HandleFswPpApplicationUnregistered
-// Callback from CHgFastSwapPreviewProvider
-// --------------------------------------------------------------------------
-//
-void CHgFswEngine::HandleFswPpApplicationUnregistered( TInt aWgId )
-    {
-    HGLOG_CONTEXT( HandleFswPpApplicationUnregistered, HGLOG_LOCAL );
-    HGLOG1_IN( "aWgId = %d", aWgId );
-
-    CFbsBitmap** bmp = iScreenshots.Find( aWgId );
-    if ( bmp )
-        {
-        delete *bmp;
-        iScreenshots.Remove( aWgId );
-        AssignScreenshotHandle( aWgId, 0 );
-        }
-
-    HGLOG_OUT();
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswEngine::AssignScreenshotHandle
-// Called when a screenshot arrives to check if there is a corresponding
-// application in the task list.
-// --------------------------------------------------------------------------
-//
-void CHgFswEngine::AssignScreenshotHandle( TInt aWgIdForScreenshot,
-        TInt aBitmapHandle )
-    {
-    TBool changed = EFalse;
-    TInt parentWgId = FindParentWgId( aWgIdForScreenshot );
-    // now parentWgId is a valid wgid or KErrNotFound (-1)
-    for ( TInt i = 0, ie = iData.Count(); i != ie; ++i )
-        {
-        if ( iData[i]->Widget() )
-            {
-            // Do not do anything for now => no screenshot for widgets.
-            continue;
-            }
-        TInt appWgId = iData[i]->WgId();
-        if ( appWgId == aWgIdForScreenshot || appWgId == parentWgId )
-            {
-            iData[i]->SetScreenshotHandle( aBitmapHandle );
-            changed = ETrue;
-            break;
-            }
-        }
-    if ( changed )
-        {
-        iObserver.FswDataChanged();
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswEngine::LookupScreenshotHandle
-// Called to check if there is a screenshot already stored for the given
-// app. (or a screenshot with a wgid for which aWgIdForApp is the parent)
-// --------------------------------------------------------------------------
-//
-TInt CHgFswEngine::LookupScreenshotHandle( TInt aWgIdForApp )
-    {
-    CFbsBitmap** bmp = iScreenshots.Find( aWgIdForApp );
-    if ( bmp )
-        {
-        // there is a screenshot stored for this wgid
-        return (*bmp)->Handle();
-        }
-    else if ( aWgIdForApp > 0 )
-        {
-        // must check if there is a screenshot for which aWgIdForApp is the parent
-        THashMapIter<TInt, CFbsBitmap*> iter( iScreenshots );
-        while ( const TInt* wgid = iter.NextKey() )
-            {
-            if ( FindParentWgId( *wgid ) == aWgIdForApp )
-                {
-                CFbsBitmap** bmp = iter.CurrentValue();
-                return (*bmp)->Handle();
-                }
-            }
-        }
-    else if ( aWgIdForApp < 0 )
-        {
-        // Must be a widget, wgid is useless in this case.
-        // Do not do anything for now => no screenshot for widgets.
-        }
-    return 0;
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswEngine::RunL
-// --------------------------------------------------------------------------
-//
-void CHgFswEngine::RunL()
-    {
-    if ( iStatus != KErrCancel ) // when cancelling the subscribe it completes with KErrCancel
-        {
-        TInt value = 0;
-        if ( iSwiProp.Get( value ) == KErrNone )
-            {
-            TInt operationStatus( value & Swi::KSwisOperationStatusMask );
-            // When an (un)installation has finished change the flag to
-            // refresh the app list during the next task list update.
-            if ( operationStatus == Swi::ESwisStatusSuccess )
-                {
-                iAppDataRefreshNeeded = ETrue;
-                }
-            }
-        iSwiProp.Subscribe( iStatus );
-        SetActive();
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswEngine::DoCancel
-// --------------------------------------------------------------------------
-//
-void CHgFswEngine::DoCancel()
-    {
-    iSwiProp.Cancel();
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswEngine::RunError
-// --------------------------------------------------------------------------
-//
-TInt CHgFswEngine::RunError( TInt /*aError*/ )
-    {
-    return KErrNone;
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswEngine::HandleResourceChange
-// callback from appui's HandleResourceChangeL
-// --------------------------------------------------------------------------
-//
-void CHgFswEngine::HandleResourceChange( TInt aType )
-    {
-    HGLOG_CONTEXT( HandleResourceChange, HGLOG_LOCAL );
-    HGLOG_IN();
-
-    if ( iPreviewProvider && aType == KEikDynamicLayoutVariantSwitch )
-        {
-        SetPreviewParams();
-        }
-
-    HGLOG_OUT();
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswEngine::SetPreviewParams
-// --------------------------------------------------------------------------
-//
-void CHgFswEngine::SetPreviewParams()
-    {
-    TSize screenSize = iEnv->ScreenDevice()->SizeInPixels();
-    iPreviewProvider->SetPreviewParam(
-        TSize( screenSize.iWidth / KScreenSizeFactor,
-            screenSize.iHeight / KScreenSizeFactor ),
-        EColor64K ); // displaymode is ignored
-    }
-
-    
-// end of file
--- a/taskswitcher/contextengine/hgfswserver/engine/src/hgfswiconcache.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,141 +0,0 @@
-/*
- * ============================================================================
- *  Name        : hgfswiconcache.cpp
- *  Part of     : Hg Teleport
- *  Description : Icon cache
- *  Version     : %version: sa1spcx1#5 %
- *
- *  Copyright 2008 Nokia.  All rights reserved.
- *  This material, including documentation and any related computer
- *  programs, is protected by copyright controlled by Nokia.  All
- *  rights are reserved.  Copying, including reproducing, storing,
- *  adapting or translating, any or all of this material requires the
- *  prior written consent of Nokia.  This material also contains
- *  confidential information which may not be disclosed to others
- *  without the prior written consent of Nokia.
- * ============================================================================
- */
-
-#include "hgfswiconcache.h"
-#include <fbs.h>
-#include <AknsUtils.h>
-#include <gulicon.h>
-#include <avkon.mbg>
-
-// size for the created app icons
-const TInt KAppIconWidth = 96;
-const TInt KAppIconHeight = 96;
-
-// --------------------------------------------------------------------------
-// CHgFswIconCache::NewL
-// --------------------------------------------------------------------------
-//
-CHgFswIconCache* CHgFswIconCache::NewL()
-    {
-    CHgFswIconCache* self = new (ELeave) CHgFswIconCache;
-    CleanupStack::PushL (self );
-    self->ConstructL ( );
-    CleanupStack::Pop ( self );
-    return self;
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswIconCache::CHgFswIconCache
-// --------------------------------------------------------------------------
-//
-CHgFswIconCache::CHgFswIconCache()
-    {
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswIconCache::~CHgFswIconCache
-// --------------------------------------------------------------------------
-//
-CHgFswIconCache::~CHgFswIconCache( )
-    {
-    THashMapIter<TInt, SHgBitmapPair> iter( iAppIcons );
-    while ( const TInt* key = iter.NextKey() )
-        {
-        SHgBitmapPair* value = iter.CurrentValue();
-        delete value->iBitmap;
-        delete value->iMask;
-        }
-    iAppIcons.Close();
-    delete iDefaultIcon;
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswIconCache::ConstructL
-// --------------------------------------------------------------------------
-//
-void CHgFswIconCache::ConstructL()
-    {
-    iDefaultIcon = AknsUtils::CreateGulIconL( 
-        AknsUtils::SkinInstance(),
-        KAknsIIDQgnMenuUnknownCxt,
-        AknIconUtils::AvkonIconFileName(),
-        EMbmAvkonQgn_menu_unknown_cxt,
-        EMbmAvkonQgn_menu_unknown_cxt_mask );
-    TSize sz( KAppIconWidth, KAppIconHeight );
-    AknIconUtils::SetSize( iDefaultIcon->Bitmap(), sz );
-    AknIconUtils::SetSize( iDefaultIcon->Mask(), sz );
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswIconCache::GetAppIconL
-// --------------------------------------------------------------------------
-//
-void CHgFswIconCache::GetAppIconL( const TUid& aAppUid,
-        CFbsBitmap*& aBitmap, CFbsBitmap*& aMask )
-    {
-    aBitmap = aMask = 0;
-    MAknsSkinInstance* skinInstance = AknsUtils::SkinInstance();
-    if ( skinInstance )
-        {
-        AknsUtils::CreateAppIconLC( skinInstance, aAppUid, EAknsAppIconTypeList,
-            aBitmap, aMask );
-        // The CreateAppIconLC method leaves both the bitmaps in the cleanup stack.
-        // The order in which they are pushed into the stack and types of 
-        // the items in the stack are both undefined.
-        CleanupStack::Pop( 2 ); // codescanner::cleanup
-        TSize sz( KAppIconWidth, KAppIconHeight );
-        AknIconUtils::SetSize( aBitmap, sz );
-        AknIconUtils::SetSize( aMask, sz );
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswIconCache::GetIconL
-// --------------------------------------------------------------------------
-//
-void CHgFswIconCache::GetIconL( const TUid& aAppUid,
-        CFbsBitmap*& aBitmap, CFbsBitmap*& aMask )
-    {
-    aBitmap = aMask = 0;
-    SHgBitmapPair* bp = iAppIcons.Find( aAppUid.iUid );
-    if ( bp )
-        {
-        // ownership stays with the hash table
-        aBitmap = bp->iBitmap;
-        aMask = bp->iMask;
-        }
-    else
-        {
-        GetAppIconL( aAppUid, aBitmap, aMask ); // ownership of the bitmap is ours
-        // insert to hash table and pass ownership
-        iAppIcons.InsertL( aAppUid.iUid, SHgBitmapPair( aBitmap, aMask ) );
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswIconCache::DefaultIcon
-// --------------------------------------------------------------------------
-//
-void CHgFswIconCache::DefaultIcon( CFbsBitmap*& aBitmap, CFbsBitmap*& aMask )
-    {
-    aBitmap = iDefaultIcon->Bitmap();
-    aMask = iDefaultIcon->Mask();
-    }
-
-
-// end of file
--- a/taskswitcher/contextengine/hgfswserver/engine/src/hgfswidgetlist.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,89 +0,0 @@
-/*
- * ============================================================================
- *  Name        : hgfswidgetlist.cpp
- *  Part of     : Hg Teleport
- *  Description : web widget list
- *  Version     : %version: sa1spcx1#5 %
- *
- *  Copyright 2008 Nokia.  All rights reserved.
- *  This material, including documentation and any related computer
- *  programs, is protected by copyright controlled by Nokia.  All
- *  rights are reserved.  Copying, including reproducing, storing,
- *  adapting or translating, any or all of this material requires the
- *  prior written consent of Nokia.  This material also contains
- *  confidential information which may not be disclosed to others
- *  without the prior written consent of Nokia.
- * ============================================================================
- */
-
-#include "hgfswidgetlist.h"
-#include <widgetregistrydata.h>
-
-// --------------------------------------------------------------------------
-// CHgFsWidgetList::NewL
-// --------------------------------------------------------------------------
-//
-CHgFsWidgetList* CHgFsWidgetList::NewL()
-    {
-    return new (ELeave) CHgFsWidgetList;
-    }
-
-// --------------------------------------------------------------------------
-// CHgFsWidgetList::CHgFsWidgetList
-// --------------------------------------------------------------------------
-//   
-CHgFsWidgetList::CHgFsWidgetList()
-    {
-    }
-
-// --------------------------------------------------------------------------
-// CHgFsWidgetList::~CHgFsWidgetList
-// --------------------------------------------------------------------------
-//
-CHgFsWidgetList::~CHgFsWidgetList()
-    {
-    ResetArrayOfWidgetInfo( iRunningWidgets );        
-    iRunningWidgets.Reset();
-    }
-
-// --------------------------------------------------------------------------
-// CHgFsWidgetList::CleanupConnect
-// --------------------------------------------------------------------------
-//
-void CHgFsWidgetList::CleanupConnect( TAny* aThis )
-    {
-    CHgFsWidgetList* self = static_cast<CHgFsWidgetList*>( aThis );
-    self->iWidgetRegistryClientSession.Disconnect();
-    }
-
-// --------------------------------------------------------------------------
-// CHgFsWidgetList::InitializeWidgetListL
-// --------------------------------------------------------------------------
-//
-void CHgFsWidgetList::InitializeWidgetListL()
-    {
-    ResetArrayOfWidgetInfo( iRunningWidgets );
-    iRunningWidgets.Reset();
-    User::LeaveIfError( iWidgetRegistryClientSession.Connect() );
-    CleanupStack::PushL( TCleanupItem( CleanupConnect, this) );
-    iWidgetRegistryClientSession.RunningWidgetsL(iRunningWidgets);
-    CleanupStack::Pop(); // clean WidgetRegistryClientSession item
-    iWidgetRegistryClientSession.Disconnect();
-    }
-
-// --------------------------------------------------------------------------
-// CHgFsWidgetList::ResetArrayOfWidgetInfo
-// --------------------------------------------------------------------------
-//
-void CHgFsWidgetList::ResetArrayOfWidgetInfo( 
-        RWidgetInfoArray& aWidgetInfoArr )
-    {
-    for ( TInt i = 0; i < aWidgetInfoArr.Count(); i++ )
-        {
-        CWidgetInfo *item = aWidgetInfoArr[i];
-        delete item;
-        }
-    }
-
-
-// end of file
--- a/taskswitcher/contextengine/hgfswserver/group/bld.inf	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-/*
- * ===========================================================================
- *  Name        : bld.inf
- *  Part of     : Huriganes / Fast Swap Server
- *  Description : main build info file
- *  Version     : %version: 7 %
- *
- *  Copyright © 2008 Nokia Corporation.
- *  This material, including documentation and any related 
- *  computer programs, is protected by copyright controlled by 
- *  Nokia Corporation. All rights are reserved. Copying, 
- *  including reproducing, storing, adapting or translating, any 
- *  or all of this material requires the prior written consent of 
- *  Nokia Corporation. This material also contains confidential 
- *  information which may not be disclosed to others without the 
- *  prior written consent of Nokia Corporation.
- * ===========================================================================
- */
-
-#include <platform_paths.hrh>
-
-PRJ_EXPORTS
-../rom/hgfswserver.iby    CORE_MW_LAYER_IBY_EXPORT_PATH(hgfswserver.iby)
-
-#include "../utils/group/bld.inf"
-#include "../engine/group/bld.inf"
-#include "../server/group/bld.inf"
-#include "../client/group/bld.inf"
-
--- a/taskswitcher/contextengine/hgfswserver/inc/hgfswcommon.h	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-/*
- * ===========================================================================
- *  Name        : hgfswcommon.h
- *  Part of     : Huriganes / Fast Swap Server
- *  Description : common constants
- *  Version     : %version: sa1spcx1#5 %
- *
- *  Copyright © 2008 Nokia Corporation.
- *  This material, including documentation and any related 
- *  computer programs, is protected by copyright controlled by 
- *  Nokia Corporation. All rights are reserved. Copying, 
- *  including reproducing, storing, adapting or translating, any 
- *  or all of this material requires the prior written consent of 
- *  Nokia Corporation. This material also contains confidential 
- *  information which may not be disclosed to others without the 
- *  prior written consent of Nokia Corporation.
- * ===========================================================================
- */
-
-#ifndef __HGFSWCOMMON_H
-#define __HGFSWCOMMON_H
-
-#include <e32std.h>
-
-_LIT( KHgFswServerName, "hgfswserver" );
-_LIT( KHgFswServerImg, "hgfswserver" );
-
-const TUid KHgFswServerUid = { 0x2001CBE1 };
-
-enum THgFswServerMessages
-    {
-    EHgFswSubscribe,
-    EHgFswCancel,
-    EHgFswGetBufferSize,
-    EHgFswGetBuffer, // there must be a GetBufferSize request before GetBuffer
-    EHgFswCloseApp,
-    EHgFswSwitchToApp,
-    EHgFswForegroundAppUid
-    };
-
-#endif
--- a/taskswitcher/contextengine/hgfswserver/rom/hgfswserver.iby	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-/*
-* ============================================================================
-*  Name        : hgfswserver.iby
-*  Part of     : Huriganes
-*  Description : Iby file for fast swap server
-*  Version     : %version: sa1spcx1#2 %
-*
-*  Copyright © 2008 Nokia.  All rights reserved.
-*  This material, including documentation and any related computer
-*  programs, is protected by copyright controlled by Nokia.  All
-*  rights are reserved.  Copying, including reproducing, storing,
-*  adapting or translating, any or all of this material requires the
-*  prior written consent of Nokia.  This material also contains
-*  confidential information which may not be disclosed to others
-*  without the prior written consent of Nokia.
-* ============================================================================
-*/
-
-#ifndef __HGFSWSERVER_IBY__
-#define __HGFSWSERVER_IBY__
-
-file=ABI_DIR/BUILD_DIR/hgfswclient.dll                                     SHARED_LIB_DIR/hgfswclient.dll
-file=ABI_DIR/BUILD_DIR/hgfswutils.dll                                      SHARED_LIB_DIR/hgfswutils.dll
-file=ABI_DIR/BUILD_DIR/hgfswengine.dll                                     SHARED_LIB_DIR/hgfswengine.dll
-file=ABI_DIR/BUILD_DIR/hgfswserver.exe                                     SHARED_LIB_DIR/hgfswserver.exe
-
-#endif 
--- a/taskswitcher/contextengine/hgfswserver/server/group/bld.inf	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,21 +0,0 @@
-/*
- * ===========================================================================
- *  Name        : bld.inf
- *  Part of     : Huriganes / Fast Swap Server
- *  Description : server component build info file
- *  Version     : %version: 4 %
- *
- *  Copyright © 2008 Nokia Corporation.
- *  This material, including documentation and any related 
- *  computer programs, is protected by copyright controlled by 
- *  Nokia Corporation. All rights are reserved. Copying, 
- *  including reproducing, storing, adapting or translating, any 
- *  or all of this material requires the prior written consent of 
- *  Nokia Corporation. This material also contains confidential 
- *  information which may not be disclosed to others without the 
- *  prior written consent of Nokia Corporation.
- * ===========================================================================
- */
-
-PRJ_MMPFILES
-hgfswserver.mmp
--- a/taskswitcher/contextengine/hgfswserver/server/group/hgfswserver.mmp	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-/*
- * ===========================================================================
- *  Name        : hgfswserver.mmp
- *  Part of     : Huriganes / Fast Swap Server
- *  Description : server component
- *  Version     : %version: 9 %
- *
- *  Copyright © 2008 Nokia Corporation.
- *  This material, including documentation and any related 
- *  computer programs, is protected by copyright controlled by 
- *  Nokia Corporation. All rights are reserved. Copying, 
- *  including reproducing, storing, adapting or translating, any 
- *  or all of this material requires the prior written consent of 
- *  Nokia Corporation. This material also contains confidential 
- *  information which may not be disclosed to others without the 
- *  prior written consent of Nokia Corporation.
- * ===========================================================================
- */
-
-#include <platform_paths.hrh>
-
-TARGET hgfswserver.exe
-TARGETTYPE EXE
-UID 0x0 0x2001CBE1
-// AllFiles cap needed to get icon for wrt widgets
-CAPABILITY CAP_SERVER AllFiles
-
-SOURCEPATH ../src
-SOURCE          hgfswserver.cpp
-SOURCE          hgfswsession.cpp
-SOURCE          hgfswappui.cpp
-
-MW_LAYER_SYSTEMINCLUDE
-
-USERINCLUDE     ../inc
-USERINCLUDE     ../../inc
-USERINCLUDe     ../../../inc
-
-LIBRARY euser.lib
-LIBRARY estor.lib
-LIBRARY eikcore.lib
-LIBRARY cone.lib
-LIBRARY ws32.lib
-LIBRARY apgrfx.lib
-LIBRARY fbscli.lib
-LIBRARY avkon.lib
-
-LIBRARY hgfswengine.lib
-LIBRARY hgfswutils.lib
-
--- a/taskswitcher/contextengine/hgfswserver/server/inc/hgfswappui.h	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,64 +0,0 @@
-/*
- * ===========================================================================
- *  Name        : hgfswappui.h
- *  Part of     : Huriganes / Fast Swap Server
- *  Description : appui for server
- *  Version     : %version: 5 %
- *
- *  Copyright © 2008 Nokia Corporation.
- *  This material, including documentation and any related 
- *  computer programs, is protected by copyright controlled by 
- *  Nokia Corporation. All rights are reserved. Copying, 
- *  including reproducing, storing, adapting or translating, any 
- *  or all of this material requires the prior written consent of 
- *  Nokia Corporation. This material also contains confidential 
- *  information which may not be disclosed to others without the 
- *  prior written consent of Nokia Corporation.
- * ===========================================================================
- */
-
-#ifndef __HGFSWAPPUI_H
-#define __HGFSWAPPUI_H
-
-#include <aknappui.h>
-
-class MHgFswTaskListObserver;
-class MHgFswResourceObserver;
-
-/**
- * Appui for the fsw server.
- * Reimplements HandleWsEventL from base class to get notifications about
- * window group changes.
- */
-class CHgFswAppUi : public CAknAppUi
-    {
-public:
-    ~CHgFswAppUi();
-    void ConstructL();
-
-    /**
-     * Setter function.
-     *
-     * @param aTaskListObserver Observer to be notified if task list
-     *                     has changed
-     */
-    void SetTaskListObserver( MHgFswTaskListObserver& aTaskListObserver );
-
-    /**
-     * Setter function.
-     *
-     * @param aResourceObserver Observer to be notified when resources are changed.
-     */
-    void SetResourceObserver( MHgFswResourceObserver& aResourceObserver );
-
-private:
-    // from CEikAppUi
-    void HandleWsEventL( const TWsEvent& aEvent, CCoeControl* aDestination );
-    void HandleResourceChangeL( TInt aType );
-            
-private:
-    MHgFswTaskListObserver* iTaskListObserver; // not own
-    MHgFswResourceObserver* iResourceObserver; // not own
-    };
-
-#endif
--- a/taskswitcher/contextengine/hgfswserver/server/inc/hgfswserver.h	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,79 +0,0 @@
-/*
- * ===========================================================================
- *  Name        : hgfswserver.h
- *  Part of     : Huriganes / Fast Swap Server
- *  Description : server class
- *  Version     : %version: 6 %
- *
- *  Copyright © 2008 Nokia Corporation.
- *  This material, including documentation and any related 
- *  computer programs, is protected by copyright controlled by 
- *  Nokia Corporation. All rights are reserved. Copying, 
- *  including reproducing, storing, adapting or translating, any 
- *  or all of this material requires the prior written consent of 
- *  Nokia Corporation. This material also contains confidential 
- *  information which may not be disclosed to others without the 
- *  prior written consent of Nokia Corporation.
- * ===========================================================================
- */
-
-#ifndef __HGFSWSERVER_H
-#define __HGFSWSERVER_H
-
-#include <e32base.h>
-#include "hgfswcommon.h"
-#include "hgfswobservers.h"
-
-/**
- * Possible panic reasons.
- */
-enum THgFswPanic
-    {
-    EPanicBadDescriptor,
-    EPanicIllegalFunction,
-    EPanicAccessDenied
-    };
-
-/**
- * Panic name.
- */
-_LIT( KHgFswPanicName, "hgfsw" );
-
-class CHgFswEngine;
-class CHgFswAppUi;
-
-/**
- * Hg FastSwap Server.
- */
-class CHgFswServer : public CServer2, public MHgFswEngineObserver
-    {
-public:
-    static CHgFswServer* NewLC( CHgFswAppUi& aAppUi );
-    ~CHgFswServer();
-    void AddSession();
-    void DropSession();
-
-    void SerializeAndGetBufferSizeL( const RMessage2& aMessage );
-    void GetBufferL( const RMessage2& aMessage );
-    void CloseAppL( TInt aWgId );
-    void SwitchToAppL( TInt aWgId );
-    void ForegroundAppUidL( const RMessage2& aMessage );
-
-private:
-    CHgFswServer( TInt aPriority, CHgFswAppUi& aAppUi );
-    void ConstructL();
-    CSession2* NewSessionL( const TVersion& aVersion,
-        const RMessage2& aMessage ) const;
-        
-    // from MHgFswEngineObserver
-    void FswDataChanged();
-    TInt FswDataListenerCount();
-
-private:
-    TInt iSessionCount;
-    CHgFswEngine* iEngine;
-    CBufFlat* iBuffer;
-    CHgFswAppUi& iAppUi;
-    };
-
-#endif
--- a/taskswitcher/contextengine/hgfswserver/server/inc/hgfswsession.h	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-/*
- * ===========================================================================
- *  Name        : hgfswsession.h
- *  Part of     : Huriganes / Fast Swap Server
- *  Description : session class for server
- *  Version     : %version: 4 %
- *
- *  Copyright © 2008 Nokia Corporation.
- *  This material, including documentation and any related 
- *  computer programs, is protected by copyright controlled by 
- *  Nokia Corporation. All rights are reserved. Copying, 
- *  including reproducing, storing, adapting or translating, any 
- *  or all of this material requires the prior written consent of 
- *  Nokia Corporation. This material also contains confidential 
- *  information which may not be disclosed to others without the 
- *  prior written consent of Nokia Corporation.
- * ===========================================================================
- */
-
-#ifndef __HGFSWSESSION_H
-#define __HGFSWSESSION_H
-
-#include "hgfswserver.h"
-#include "hgfswentry.h"
-
-/**
- * Session class.
- */
-class CHgFswSession : public CSession2
-    {
-public:
-    CHgFswSession();
-    void CreateL();
-    
-    /**
-     * Called from the server when fsw content has changed.
-     */
-    void FswDataChanged();
-    
-    /**
-     * Returns true if there is a pending subscribe request to this session.
-     */
-    TBool IsListening();
-
-private:
-    ~CHgFswSession();
-    CHgFswServer& Server();
-    void ServiceL( const RMessage2& aMessage );
-    void ServiceError( const RMessage2& aMessage, TInt aError );
-    void CompleteSubscribe( TInt aError );
-
-    RArray<RMessage2> iSubscribeRequests; // non-completed EHgFswSubscribe messages
-    };
-
-#endif
--- a/taskswitcher/contextengine/hgfswserver/server/inc/serverlogging.h	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-/*
-* ============================================================================
-*  Name        : serverlogging.h
-*  Part of     : Classic UI / Teleport
-*  Description : Defines logs for server
-*  Version     : %version:  sa1spcx1#3 % 
-*
-*  Copyright (c) 2009 Nokia.  All rights reserved.
-*  This material, including documentation and any related computer
-*  programs, is protected by copyright controlled by Nokia.  All
-*  rights are reserved.  Copying, including reproducing, storing,
-*  adapting or translating, any or all of this material requires the
-*  prior written consent of Nokia.  This material also contains
-*  confidential information which may not be disclosed to others
-*  without the prior written consent of Nokia.
-* ============================================================================
-* Template version: 4.1.1
-*/
-
-#ifdef _DEBUG // codescanner::ifpreprocessor
-_LIT( KHgLogFile, "hgfswserver.txt" );
-_LIT( KHgLogPath, "teleport" );
-#define _HGLOG_LOG_COMPONENT_ID 0x2001CBE1
-
-#endif
-#include "hglogging.h"
--- a/taskswitcher/contextengine/hgfswserver/server/src/hgfswappui.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,95 +0,0 @@
-/*
- * ===========================================================================
- *  Name        : hgfswappui.cpp
- *  Part of     : Huriganes / Fast Swap Server
- *  Description : appui implementation
- *  Version     : %version: sa1spcx1#6 %
- *
- *  Copyright © 2008 Nokia Corporation.
- *  This material, including documentation and any related 
- *  computer programs, is protected by copyright controlled by 
- *  Nokia Corporation. All rights are reserved. Copying, 
- *  including reproducing, storing, adapting or translating, any 
- *  or all of this material requires the prior written consent of 
- *  Nokia Corporation. This material also contains confidential 
- *  information which may not be disclosed to others without the 
- *  prior written consent of Nokia Corporation.
- * ===========================================================================
- */
-
-#include "hgfswappui.h"
-#include "hgfswobservers.h"
-
-// --------------------------------------------------------------------------
-// CHgFswAppUi::~CHgFswAppUi
-// --------------------------------------------------------------------------
-//
-CHgFswAppUi::~CHgFswAppUi()
-    {
-    // empty
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswAppUi::ConstructL
-// --------------------------------------------------------------------------
-//
-void CHgFswAppUi::ConstructL()
-    {
-    CAknAppUi::BaseConstructL( ENoAppResourceFile | EAknEnableSkin );
-    RWindowGroup& windowGroup = CCoeEnv::Static()->RootWin();
-    windowGroup.EnableFocusChangeEvents();
-    windowGroup.EnableGroupListChangeEvents();
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswAppUi::SetTaskListObserver
-// --------------------------------------------------------------------------
-//
-void CHgFswAppUi::SetTaskListObserver( MHgFswTaskListObserver& aTaskListObserver )
-    {
-    iTaskListObserver = &aTaskListObserver;
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswAppUi::SetResourceObserver
-// --------------------------------------------------------------------------
-//
-void CHgFswAppUi::SetResourceObserver( MHgFswResourceObserver& aResourceObserver )
-    {
-    iResourceObserver = &aResourceObserver;
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswAppUi::HandleWsEventL
-// --------------------------------------------------------------------------
-//
-void CHgFswAppUi::HandleWsEventL( const TWsEvent& aEvent, CCoeControl* aDestination )
-    {
-    TInt eventType = aEvent.Type();
-
-    if ( eventType == EEventFocusGroupChanged
-            || eventType == EEventWindowGroupListChanged )
-        {
-        if ( iTaskListObserver )
-            {
-            iTaskListObserver->UpdateTaskList();
-            }
-        }
-
-    CAknAppUi::HandleWsEventL( aEvent, aDestination );
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswAppUi::HandleResourceChangeL
-// --------------------------------------------------------------------------
-//
-void CHgFswAppUi::HandleResourceChangeL( TInt aType ) // codescanner::LFunctionCantLeave (virtual)
-    {
-    if ( iResourceObserver )
-        {
-        iResourceObserver->HandleResourceChange( aType );
-        }
-    }
-
-
-// end of file
--- a/taskswitcher/contextengine/hgfswserver/server/src/hgfswserver.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,283 +0,0 @@
-/*
- * ===========================================================================
- *  Name        : hgfswserver.cpp
- *  Part of     : Huriganes / Fast Swap Server
- *  Description : server implementation
- *  Version     : %version: sa1spcx1#14 %
- *
- *  Copyright © 2008 Nokia Corporation.
- *  This material, including documentation and any related 
- *  computer programs, is protected by copyright controlled by 
- *  Nokia Corporation. All rights are reserved. Copying, 
- *  including reproducing, storing, adapting or translating, any 
- *  or all of this material requires the prior written consent of 
- *  Nokia Corporation. This material also contains confidential 
- *  information which may not be disclosed to others without the 
- *  prior written consent of Nokia Corporation.
- * ===========================================================================
- */
-
-#include "hgfswserver.h"
-#include "hgfswsession.h"
-#include "hgfswappui.h"
-#include "hgfswengine.h"
-
-#include <s32mem.h>
-#include <eikenv.h>
-#include <apgwgnam.h>
-
-// --------------------------------------------------------------------------
-// CHgFswServer::CHgFswServer
-// --------------------------------------------------------------------------
-//
-CHgFswServer::CHgFswServer( TInt aPriority, CHgFswAppUi& aAppUi )
-        : CServer2( aPriority ), iAppUi( aAppUi )
-    {
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswServer::NewLC
-// --------------------------------------------------------------------------
-//
-CHgFswServer* CHgFswServer::NewLC( CHgFswAppUi& aAppUi )
-    {
-    CHgFswServer* self = new ( ELeave ) CHgFswServer(
-        EPriorityNormal, aAppUi );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    return self;
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswServer::ConstructL
-// --------------------------------------------------------------------------
-//
-void CHgFswServer::ConstructL()
-    {
-    StartL( KHgFswServerName );
-    iEngine = CHgFswEngine::NewL( *this );
-    iAppUi.SetTaskListObserver( *iEngine );
-    iAppUi.SetResourceObserver( *iEngine );
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswServer::~CHgFswServer
-// --------------------------------------------------------------------------
-//
-CHgFswServer::~CHgFswServer()
-    {
-    delete iBuffer;
-    delete iEngine;
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswServer::NewSessionL
-// --------------------------------------------------------------------------
-//
-CSession2* CHgFswServer::NewSessionL( const TVersion&,
-        const RMessage2& ) const
-    {
-    return new ( ELeave ) CHgFswSession;
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswServer::AddSession
-// --------------------------------------------------------------------------
-//
-void CHgFswServer::AddSession()
-    {
-    ++iSessionCount;
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswServer::DropSession
-// --------------------------------------------------------------------------
-//
-void CHgFswServer::DropSession()
-    {
-    --iSessionCount;
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswServer::SerializeAndGetBufferSizeL
-// --------------------------------------------------------------------------
-//
-void CHgFswServer::SerializeAndGetBufferSizeL( const RMessage2& aMessage )
-    {
-    const TInt KBufferExpandSize = 128;
-    const RHgFswArray& array( iEngine->FswDataL() );
-    delete iBuffer; iBuffer = NULL;
-    iBuffer = CBufFlat::NewL( KBufferExpandSize );
-    RBufWriteStream ws;
-    CleanupClosePushL( ws );
-    ws.Open( *iBuffer );
-    CHgFswEntry::ExternalizeArrayL( ws, array );
-    CleanupStack::PopAndDestroy( &ws );
-    TPtr8 p( iBuffer->Ptr( 0 ) );
-    TPckg<TInt> size( p.Length() );
-    aMessage.WriteL( 0, size );
-    aMessage.Complete( KErrNone );
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswServer::GetBufferL
-// --------------------------------------------------------------------------
-//
-void CHgFswServer::GetBufferL( const RMessage2& aMessage )
-    {
-    if ( !iBuffer )
-        {
-        User::Leave( KErrGeneral );
-        }
-    TPtr8 p( iBuffer->Ptr( 0 ) );
-    // If the size expected by the client does not match indicate it with a leave
-    // so the client can recognize it by checking the return value of SendReceive
-    // and can request the buffer size again.
-    if ( p.Length() != aMessage.Int1() )
-        {
-        User::Leave( KErrArgument );
-        }
-    aMessage.WriteL( 0, p );
-    aMessage.Complete( KErrNone );
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswServer::CloseAppL
-// --------------------------------------------------------------------------
-//
-void CHgFswServer::CloseAppL( TInt aWgId )
-    {
-    iEngine->CloseAppL( aWgId );
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswServer::SwitchToAppL
-// --------------------------------------------------------------------------
-//
-void CHgFswServer::SwitchToAppL( TInt aWgId )
-    {
-    iEngine->SwitchToAppL( aWgId );
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswServer::ForegroundAppUidL
-// --------------------------------------------------------------------------
-//
-void CHgFswServer::ForegroundAppUidL( const RMessage2& aMessage )
-    {
-    TUid uid = iEngine->ForegroundAppUidL( aMessage.Int1() );
-    TPckg<TInt> uidPckg( uid.iUid );
-    aMessage.WriteL( 0, uidPckg );
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswServer::FswDataChanged
-// callback from engine
-// --------------------------------------------------------------------------
-//
-void CHgFswServer::FswDataChanged()
-    {
-    // notify all sessions about the change
-    iSessionIter.SetToFirst();
-    while ( CHgFswSession* session = static_cast<CHgFswSession*>( iSessionIter++ ) )
-        {
-        if ( session->IsListening() )
-            {
-            session->FswDataChanged();
-            }
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswServer::FswDataListenersCount
-// callback from engine
-// --------------------------------------------------------------------------
-//
-TInt CHgFswServer::FswDataListenerCount()
-    {
-    TInt n = 0;
-    iSessionIter.SetToFirst();
-    while ( CHgFswSession* session = static_cast<CHgFswSession*>( iSessionIter++ ) )
-        {
-        if ( session->IsListening() )
-            {
-            ++n;
-            }
-        }
-    return n;
-    }
-
-// --------------------------------------------------------------------------
-// RunServerL
-// --------------------------------------------------------------------------
-//
-static void RunServerL( CHgFswAppUi& aAppUi, CEikonEnv& aEnv )
-    {
-    // change thread name
-    User::LeaveIfError( RThread::RenameMe( KHgFswServerName ) );
-
-    // set app as hidden
-    CApaWindowGroupName* wgName =
-        CApaWindowGroupName::NewL( aEnv.WsSession(),
-            aEnv.RootWin().Identifier() );
-    wgName->SetHidden( ETrue );
-    wgName->SetWindowGroupName( aEnv.RootWin() );
-    delete wgName;
-
-    // start server
-    CHgFswServer* server = CHgFswServer::NewLC( aAppUi );
-    RProcess::Rendezvous( KErrNone );
-    CActiveScheduler::Start();
-    CleanupStack::PopAndDestroy( server );
-    }
-
-// --------------------------------------------------------------------------
-// E32Main
-// --------------------------------------------------------------------------
-//
-TInt E32Main()
-    {
-    __UHEAP_MARK;
-    CTrapCleanup* cleanup = CTrapCleanup::New();
-    TInt err = KErrNoMemory;
-    if ( cleanup )
-        {
-        CEikonEnv* env = new CEikonEnv;
-        if ( env )
-            {
-            TRAP( err, env->ConstructL() );
-            if ( err == KErrNone )
-                {
-                env->DisableExitChecks( ETrue );
-                CHgFswAppUi* ui = new CHgFswAppUi;
-                if ( ui )
-                    {
-                    TRAP( err, ui->ConstructL() );
-                    if ( err == KErrNone )
-                        {
-                        // hide from tasklist and prevent from coming foreground
-                        env->RootWin().SetOrdinalPosition( 0,
-                            ECoeWinPriorityNeverAtFront );
-                        // set as system app so will not be closed when memory is low
-                        env->SetSystem( ETrue );
-                        
-                        RFbsSession::Connect();
-                        
-                        TRAP( err, RunServerL( *ui, *env ) );
-                        
-                        RFbsSession::Disconnect();
-                        
-                        ui->PrepareToExit();
-                        }
-                    }
-                }
-            env->DestroyEnvironment();
-            }
-        delete cleanup;
-        }
-    __UHEAP_MARKEND;
-    return err;
-    }
-
-
-// end of file
--- a/taskswitcher/contextengine/hgfswserver/server/src/hgfswsession.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,159 +0,0 @@
-/*
- * ===========================================================================
- *  Name        : hgfswsession.cpp
- *  Part of     : Huriganes / Fast Swap Server
- *  Description : session implementation
- *  Version     : %version: sa1spcx1#8 %
- *
- *  Copyright © 2008 Nokia Corporation.
- *  This material, including documentation and any related 
- *  computer programs, is protected by copyright controlled by 
- *  Nokia Corporation. All rights are reserved. Copying, 
- *  including reproducing, storing, adapting or translating, any 
- *  or all of this material requires the prior written consent of 
- *  Nokia Corporation. This material also contains confidential 
- *  information which may not be disclosed to others without the 
- *  prior written consent of Nokia Corporation.
- * ===========================================================================
- */
-
-#include "hgfswsession.h"
-
-// --------------------------------------------------------------------------
-// CHgFswSession::CHgFswSession
-// --------------------------------------------------------------------------
-//
-CHgFswSession::CHgFswSession()
-    {
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswSession::Server
-// --------------------------------------------------------------------------
-//
-CHgFswServer& CHgFswSession::Server()
-    {
-    return *static_cast<CHgFswServer*>(
-        const_cast<CServer2*>( CSession2::Server() ) );
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswSession::CreateL
-// --------------------------------------------------------------------------
-//
-void CHgFswSession::CreateL() // codescanner::LFunctionCantLeave (virtual)
-    {
-    Server().AddSession();
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswSession::~CHgFswSession
-// --------------------------------------------------------------------------
-//
-CHgFswSession::~CHgFswSession()
-    {
-    CompleteSubscribe( KErrCancel );
-    iSubscribeRequests.Close();
-    Server().DropSession();
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswSession::CompleteSubscribe
-// --------------------------------------------------------------------------
-//
-void CHgFswSession::CompleteSubscribe( TInt aError )
-    {
-    for ( TInt i = 0, ie = iSubscribeRequests.Count(); i != ie; ++i )
-        {
-        iSubscribeRequests[i].Complete( aError );
-        }
-    iSubscribeRequests.Reset();
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswSession::ServiceL
-// --------------------------------------------------------------------------
-//
-void CHgFswSession::ServiceL( const RMessage2& aMessage )
-    {
-    if ( !aMessage.HasCapability( ECapabilityLocalServices ) )
-        {
-        aMessage.Panic( KHgFswPanicName, EPanicAccessDenied );
-        return;
-        }
-
-    switch ( aMessage.Function() )
-        {
-    case EHgFswSubscribe:
-        iSubscribeRequests.AppendL( aMessage );
-        break;
-
-    case EHgFswCancel:
-        CompleteSubscribe( KErrCancel );
-        aMessage.Complete( KErrNone );
-        break;
-
-    case EHgFswGetBufferSize:
-        Server().SerializeAndGetBufferSizeL( aMessage );
-        break;
-
-    case EHgFswGetBuffer:
-        Server().GetBufferL( aMessage );
-        break;
-
-    case EHgFswCloseApp:
-        Server().CloseAppL( aMessage.Int0() );
-        aMessage.Complete( KErrNone );
-        break;
-
-    case EHgFswSwitchToApp:
-        Server().SwitchToAppL( aMessage.Int0() );
-        aMessage.Complete( KErrNone );
-        break;
-        
-    case EHgFswForegroundAppUid:
-        Server().ForegroundAppUidL( aMessage );
-        aMessage.Complete( KErrNone );
-        break;
-
-    default:
-        aMessage.Panic( KHgFswPanicName, EPanicIllegalFunction );
-        break;
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswSession::ServiceError
-// --------------------------------------------------------------------------
-//
-void CHgFswSession::ServiceError( const RMessage2& aMessage,
-        TInt aError )
-    {
-    if ( aError == KErrBadDescriptor )
-        {
-        aMessage.Panic( KHgFswPanicName, EPanicBadDescriptor );
-        }
-    CSession2::ServiceError( aMessage, aError );
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswSession::FswDataChanged
-// called by server when notification is received from engine
-// --------------------------------------------------------------------------
-//
-void CHgFswSession::FswDataChanged()
-    {
-    CompleteSubscribe( KErrNone );
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswSession::IsListening
-// --------------------------------------------------------------------------
-//
-TBool CHgFswSession::IsListening()
-    {
-    return iSubscribeRequests.Count() > 0;
-    }
-
-
-// end of file
--- a/taskswitcher/contextengine/hgfswserver/utils/bwins/hgfswutilsu.def	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-EXPORTS
-	?AppName@CHgFswEntry@@QBEABVTDesC16@@XZ @ 1 NONAME ; class TDesC16 const & CHgFswEntry::AppName(void) const
-	?AppUid@CHgFswEntry@@QBE?AVTUid@@XZ @ 2 NONAME ; class TUid CHgFswEntry::AppUid(void) const
-	?ExternalizeArrayL@CHgFswEntry@@SAXAAVRWriteStream@@ABV?$RPointerArray@VCHgFswEntry@@@@@Z @ 3 NONAME ; void CHgFswEntry::ExternalizeArrayL(class RWriteStream &, class RPointerArray<class CHgFswEntry> const &)
-	?ExternalizeL@CHgFswEntry@@QAEXAAVRWriteStream@@@Z @ 4 NONAME ; void CHgFswEntry::ExternalizeL(class RWriteStream &)
-	?InternalizeArrayL@CHgFswEntry@@SAXAAVRReadStream@@AAV?$RPointerArray@VCHgFswEntry@@@@@Z @ 5 NONAME ; void CHgFswEntry::InternalizeArrayL(class RReadStream &, class RPointerArray<class CHgFswEntry> &)
-	?InternalizeL@CHgFswEntry@@QAEXAAVRReadStream@@@Z @ 6 NONAME ; void CHgFswEntry::InternalizeL(class RReadStream &)
-	?NewL@CHgFswEntry@@SAPAV1@XZ @ 7 NONAME ; class CHgFswEntry * CHgFswEntry::NewL(void)
-	?NewLC@CHgFswEntry@@SAPAV1@XZ @ 8 NONAME ; class CHgFswEntry * CHgFswEntry::NewLC(void)
-	?ScreenshotHandle@CHgFswEntry@@QBEHXZ @ 9 NONAME ; int CHgFswEntry::ScreenshotHandle(void) const
-	?SetAppNameL@CHgFswEntry@@QAEXABVTDesC16@@@Z @ 10 NONAME ; void CHgFswEntry::SetAppNameL(class TDesC16 const &)
-	?SetAppUid@CHgFswEntry@@QAEXABVTUid@@@Z @ 11 NONAME ; void CHgFswEntry::SetAppUid(class TUid const &)
-	?SetScreenshotHandle@CHgFswEntry@@QAEXH@Z @ 12 NONAME ; void CHgFswEntry::SetScreenshotHandle(int)
-	?SetWgId@CHgFswEntry@@QAEXH@Z @ 13 NONAME ; void CHgFswEntry::SetWgId(int)
-	?WgId@CHgFswEntry@@QBEHXZ @ 14 NONAME ; int CHgFswEntry::WgId(void) const
-	?AlwaysShown@CHgFswEntry@@QBEHXZ @ 15 NONAME ; int CHgFswEntry::AlwaysShown(void) const
-	?SetAlwaysShown@CHgFswEntry@@QAEXH@Z @ 16 NONAME ; void CHgFswEntry::SetAlwaysShown(int)
-	?AppIconBitmapHandle@CHgFswEntry@@QBEHXZ @ 17 NONAME ; int CHgFswEntry::AppIconBitmapHandle(void) const
-	?AppIconMaskHandle@CHgFswEntry@@QBEHXZ @ 18 NONAME ; int CHgFswEntry::AppIconMaskHandle(void) const
-	?SetAppIconHandles@CHgFswEntry@@QAEXHH@Z @ 19 NONAME ; void CHgFswEntry::SetAppIconHandles(int, int)
-	?SetWidget@CHgFswEntry@@QAEXH@Z @ 20 NONAME ; void CHgFswEntry::SetWidget(int)
-	?Widget@CHgFswEntry@@QBEHXZ @ 21 NONAME ; int CHgFswEntry::Widget(void) const
-	?SetSystemApp@CHgFswEntry@@QAEXH@Z @ 22 NONAME ; void CHgFswEntry::SetSystemApp(int)
-	?SystemApp@CHgFswEntry@@QBEHXZ @ 23 NONAME ; int CHgFswEntry::SystemApp(void) const
-
--- a/taskswitcher/contextengine/hgfswserver/utils/eabi/hgfswutilsu.def	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-EXPORTS
-	_ZN11CHgFswEntry11SetAppNameLERK7TDesC16 @ 1 NONAME
-	_ZN11CHgFswEntry12ExternalizeLER12RWriteStream @ 2 NONAME
-	_ZN11CHgFswEntry12InternalizeLER11RReadStream @ 3 NONAME
-	_ZN11CHgFswEntry17ExternalizeArrayLER12RWriteStreamRK13RPointerArrayIS_E @ 4 NONAME
-	_ZN11CHgFswEntry17InternalizeArrayLER11RReadStreamR13RPointerArrayIS_E @ 5 NONAME
-	_ZN11CHgFswEntry19SetScreenshotHandleEi @ 6 NONAME
-	_ZN11CHgFswEntry4NewLEv @ 7 NONAME
-	_ZN11CHgFswEntry5NewLCEv @ 8 NONAME
-	_ZN11CHgFswEntry7SetWgIdEi @ 9 NONAME
-	_ZN11CHgFswEntry9SetAppUidERK4TUid @ 10 NONAME
-	_ZNK11CHgFswEntry16ScreenshotHandleEv @ 11 NONAME
-	_ZNK11CHgFswEntry4WgIdEv @ 12 NONAME
-	_ZNK11CHgFswEntry6AppUidEv @ 13 NONAME
-	_ZNK11CHgFswEntry7AppNameEv @ 14 NONAME
-	_ZN11CHgFswEntry14SetAlwaysShownEi @ 15 NONAME
-	_ZNK11CHgFswEntry11AlwaysShownEv @ 16 NONAME
-	_ZN11CHgFswEntry17SetAppIconHandlesEii @ 17 NONAME
-	_ZNK11CHgFswEntry17AppIconMaskHandleEv @ 18 NONAME
-	_ZNK11CHgFswEntry19AppIconBitmapHandleEv @ 19 NONAME
-	_ZN11CHgFswEntry9SetWidgetEi @ 20 NONAME
-	_ZNK11CHgFswEntry6WidgetEv @ 21 NONAME
-	_ZN11CHgFswEntry12SetSystemAppEi @ 22 NONAME
-	_ZNK11CHgFswEntry9SystemAppEv @ 23 NONAME
-
--- a/taskswitcher/contextengine/hgfswserver/utils/group/bld.inf	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,24 +0,0 @@
-/*
- * ===========================================================================
- *  Name        : bld.inf
- *  Part of     : Huriganes / Fast Swap Server
- *  Description : build info file for utility component
- *  Version     : %version: 5 %
- *
- *  Copyright © 2008 Nokia Corporation.
- *  This material, including documentation and any related 
- *  computer programs, is protected by copyright controlled by 
- *  Nokia Corporation. All rights are reserved. Copying, 
- *  including reproducing, storing, adapting or translating, any 
- *  or all of this material requires the prior written consent of 
- *  Nokia Corporation. This material also contains confidential 
- *  information which may not be disclosed to others without the 
- *  prior written consent of Nokia Corporation.
- * ===========================================================================
- */
-
-PRJ_EXPORTS
-../inc/hgfswentry.h     |../../../inc/hgfswentry.h
-
-PRJ_MMPFILES
-hgfswutils.mmp
--- a/taskswitcher/contextengine/hgfswserver/utils/group/hgfswutils.mmp	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-/*
- * ===========================================================================
- *  Name        : hgfswutils.mmp
- *  Part of     : Huriganes / Fast Swap Server
- *  Description : utility component
- *  Version     : %version: 5 %
- *
- *  Copyright © 2008 Nokia Corporation.
- *  This material, including documentation and any related 
- *  computer programs, is protected by copyright controlled by 
- *  Nokia Corporation. All rights are reserved. Copying, 
- *  including reproducing, storing, adapting or translating, any 
- *  or all of this material requires the prior written consent of 
- *  Nokia Corporation. This material also contains confidential 
- *  information which may not be disclosed to others without the 
- *  prior written consent of Nokia Corporation.
- * ===========================================================================
- */
-
-#include <platform_paths.hrh>
-
-TARGET  hgfswutils.dll
-TARGETTYPE DLL
-CAPABILITY CAP_GENERAL_DLL
-
-SOURCEPATH ../src
-SOURCE          hgfswentry.cpp
-
-MW_LAYER_SYSTEMINCLUDE
-
-USERINCLUDE     ../inc
-
-LIBRARY euser.lib
-LIBRARY estor.lib
--- a/taskswitcher/contextengine/hgfswserver/utils/inc/hgfswentry.h	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,130 +0,0 @@
-/*
- * ===========================================================================
- *  Name        : hgfswentry.h
- *  Part of     : Huriganes / Fast Swap Server
- *  Description : Task list entry
- *  Version     : %version: 7 %
- *
- *  Copyright © 2008 Nokia Corporation.
- *  This material, including documentation and any related 
- *  computer programs, is protected by copyright controlled by 
- *  Nokia Corporation. All rights are reserved. Copying, 
- *  including reproducing, storing, adapting or translating, any 
- *  or all of this material requires the prior written consent of 
- *  Nokia Corporation. This material also contains confidential 
- *  information which may not be disclosed to others without the 
- *  prior written consent of Nokia Corporation.
- * ===========================================================================
- */
-
-#ifndef __HGFSWENTRY_H
-#define __HGFSWENTRY_H
-
-#include <e32base.h>
-#include <e32cmn.h>
-
-class CHgFswEntry;
-class RReadStream;
-class RWriteStream;
-
-typedef RPointerArray<CHgFswEntry> RHgFswArray;
-
-/**
- * An entry in the task list.
- */
-NONSHARABLE_CLASS( CHgFswEntry ) : public CBase
-    {
-public:
-    IMPORT_C static CHgFswEntry* NewL();
-    IMPORT_C static CHgFswEntry* NewLC();
-    ~CHgFswEntry();
-
-    /**
-     * Window group id.
-     * In case of wrt widgets this is negative and is not a valid window group id.
-     * Use this when calling CloseApp or SwitchToApp. (these work with widgets too)
-     */
-    IMPORT_C TInt WgId() const;
-    
-    /**
-     * Application uid.
-     */
-    IMPORT_C TUid AppUid() const;
-    
-    /**
-     * Application name.
-     */
-    IMPORT_C const TDesC& AppName() const;
-    
-    /**
-     * Bitmap handle to the screenshot or 0 if not available.
-     */
-    IMPORT_C TInt ScreenshotHandle() const;
-    
-    /**
-     * ETrue if the application is always shown in the fast swapper.
-     * (no use to call CloseApp for such an application)
-     */
-    IMPORT_C TBool AlwaysShown() const;
-
-    /**
-     * ETrue if the application is a system application.
-     * (no use to call CloseApp for such an application)
-     */
-    IMPORT_C TBool SystemApp() const;
-
-    /**
-     * ETrue if this is a wrt widget.
-     */
-    IMPORT_C TBool Widget() const;
-    
-    /**
-     * Application icon bitmap handle or 0.
-     * If may not be set if the screenshot is available, i.e. it is
-     * only guaranteed to be non-zero when ScreenshotHandle() returns 0.
-     */
-    IMPORT_C TInt AppIconBitmapHandle() const;
-    
-    /**
-     * Application icon mask handle.
-     * @see AppIconBitmapHandle
-     * The mask handle may be 0 even when the bitmap handle is non-zero.
-     */
-    IMPORT_C TInt AppIconMaskHandle() const;
-
-
-    IMPORT_C void SetWgId( TInt aWgId );
-    IMPORT_C void SetAppUid( const TUid& aUid );
-    IMPORT_C void SetAppNameL( const TDesC& aAppName );
-    IMPORT_C void SetScreenshotHandle( TInt aHandle );
-    IMPORT_C void SetAlwaysShown( TBool aValue );
-    IMPORT_C void SetSystemApp( TBool aValue );
-    IMPORT_C void SetWidget( TBool aValue );
-    IMPORT_C void SetAppIconHandles( TInt aBitmapHandle, TInt aMaskHandle );
-
-    IMPORT_C void ExternalizeL( RWriteStream& aStream );
-    IMPORT_C void InternalizeL( RReadStream& aStream );
-
-    IMPORT_C static void ExternalizeArrayL( RWriteStream& aStream,
-        const RHgFswArray& aArray );
-    IMPORT_C static void InternalizeArrayL( RReadStream& aStream,
-        RHgFswArray& aArray );
-
-private:
-    TInt iWgId;
-    TUid iAppUid;
-    HBufC* iAppName;
-    TInt iScreenshotHandle;
-    TBool iAlwaysShown;
-    TBool iSystemApp;
-    TBool iWidget;
-    TInt iAppIconBitmapHandle;
-    TInt iAppIconMaskHandle;
-    
-    TInt iReserved0;
-    TInt iReserved1;
-    TInt iReserved2;
-    TInt iReserved3;
-    };
-
-#endif
--- a/taskswitcher/contextengine/hgfswserver/utils/inc/utilslogging.h	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-/*
-* ============================================================================
-*  Name        : utilslogging.h
-*  Part of     : Classic UI / Teleport
-*  Description : Defines logs for utils
-*  Version     : %version:  sa1spcx1#3 % 
-*
-*  Copyright (c) 2009 Nokia.  All rights reserved.
-*  This material, including documentation and any related computer
-*  programs, is protected by copyright controlled by Nokia.  All
-*  rights are reserved.  Copying, including reproducing, storing,
-*  adapting or translating, any or all of this material requires the
-*  prior written consent of Nokia.  This material also contains
-*  confidential information which may not be disclosed to others
-*  without the prior written consent of Nokia.
-* ============================================================================
-* Template version: 4.1.1
-*/
-
-#ifdef _DEBUG // codescanner::ifpreprocessor
-_LIT( KHgLogFile, "hgfswutils.txt" );
-_LIT( KHgLogPath, "teleport" );
-#define _HGLOG_LOG_COMPONENT_ID 0x0000000
-
-#endif
-#include "hglogging.h"
--- a/taskswitcher/contextengine/hgfswserver/utils/src/hgfswentry.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,278 +0,0 @@
-/*
- * ===========================================================================
- *  Name        : hgfswentry.cpp
- *  Part of     : Huriganes / Fast Swap Server
- *  Description : Task list entry
- *  Version     : %version: 7 %
- *
- *  Copyright © 2008 Nokia Corporation.
- *  This material, including documentation and any related 
- *  computer programs, is protected by copyright controlled by 
- *  Nokia Corporation. All rights are reserved. Copying, 
- *  including reproducing, storing, adapting or translating, any 
- *  or all of this material requires the prior written consent of 
- *  Nokia Corporation. This material also contains confidential 
- *  information which may not be disclosed to others without the 
- *  prior written consent of Nokia Corporation.
- * ===========================================================================
- */
-
-#include "hgfswentry.h"
-#include <s32strm.h>
-
-// --------------------------------------------------------------------------
-// CHgFswEntry::NewL
-// --------------------------------------------------------------------------
-//
-EXPORT_C CHgFswEntry* CHgFswEntry::NewL()
-    {
-    CHgFswEntry* self = NewLC();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswEntry::NewLC
-// --------------------------------------------------------------------------
-//
-EXPORT_C CHgFswEntry* CHgFswEntry::NewLC()
-    {
-    CHgFswEntry* self = new ( ELeave ) CHgFswEntry;
-    CleanupStack::PushL( self );
-    return self;
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswEntry::~CHgFswEntry
-// --------------------------------------------------------------------------
-//
-CHgFswEntry::~CHgFswEntry()
-    {
-    delete iAppName;
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswEntry::SetWgId
-// --------------------------------------------------------------------------
-//
-EXPORT_C void CHgFswEntry::SetWgId( TInt aWgId )
-    {
-    iWgId = aWgId;
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswEntry::SetAppUid
-// --------------------------------------------------------------------------
-//
-EXPORT_C void CHgFswEntry::SetAppUid( const TUid& aUid )
-    {
-    iAppUid = aUid;
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswEntry::SetAppNameL
-// --------------------------------------------------------------------------
-//
-EXPORT_C void CHgFswEntry::SetAppNameL( const TDesC& aAppName )
-    {
-    delete iAppName; iAppName = 0;
-    iAppName = aAppName.AllocL();
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswEntry::SetScreenshotHandle
-// --------------------------------------------------------------------------
-//
-EXPORT_C void CHgFswEntry::SetScreenshotHandle( TInt aHandle )
-    {
-    iScreenshotHandle = aHandle;
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswEntry::SetAlwaysShown
-// --------------------------------------------------------------------------
-//
-EXPORT_C void CHgFswEntry::SetAlwaysShown( TBool aValue )
-    {
-    iAlwaysShown = aValue;
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswEntry::SetSystemApp
-// --------------------------------------------------------------------------
-//
-EXPORT_C void CHgFswEntry::SetSystemApp( TBool aValue )
-    {
-    iSystemApp = aValue;
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswEntry::SetWidget
-// --------------------------------------------------------------------------
-//
-EXPORT_C void CHgFswEntry::SetWidget( TBool aValue )
-    {
-    iWidget = aValue;
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswEntry::SetAppIconHandles
-// --------------------------------------------------------------------------
-//
-EXPORT_C void CHgFswEntry::SetAppIconHandles( TInt aBitmapHandle, TInt aMaskHandle )
-    {
-    iAppIconBitmapHandle = aBitmapHandle;
-    iAppIconMaskHandle = aMaskHandle;
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswEntry::WgId
-// --------------------------------------------------------------------------
-//
-EXPORT_C TInt CHgFswEntry::WgId() const
-    {
-    return iWgId;
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswEntry::AppUid
-// --------------------------------------------------------------------------
-//
-EXPORT_C TUid CHgFswEntry::AppUid() const
-    {
-    return iAppUid;
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswEntry::AppName
-// --------------------------------------------------------------------------
-//
-EXPORT_C const TDesC& CHgFswEntry::AppName() const
-    {
-    return iAppName ? *iAppName : KNullDesC();
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswEntry::ScreenshotHandle
-// --------------------------------------------------------------------------
-//
-EXPORT_C TInt CHgFswEntry::ScreenshotHandle() const
-    {
-    return iScreenshotHandle;
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswEntry::AlwaysShown
-// --------------------------------------------------------------------------
-//
-EXPORT_C TBool CHgFswEntry::AlwaysShown() const
-    {
-    return iAlwaysShown;
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswEntry::SystemApp
-// --------------------------------------------------------------------------
-//
-EXPORT_C TBool CHgFswEntry::SystemApp() const
-    {
-    return iSystemApp;
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswEntry::Widget
-// --------------------------------------------------------------------------
-//
-EXPORT_C TBool CHgFswEntry::Widget() const
-    {
-    return iWidget;
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswEntry::AppIconBitmapHandle
-// --------------------------------------------------------------------------
-//
-EXPORT_C TInt CHgFswEntry::AppIconBitmapHandle() const
-    {
-    return iAppIconBitmapHandle;
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswEntry::AppIconMaskHandle
-// --------------------------------------------------------------------------
-//
-EXPORT_C TInt CHgFswEntry::AppIconMaskHandle() const
-    {
-    return iAppIconMaskHandle;
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswEntry::ExternalizeL
-// --------------------------------------------------------------------------
-//
-EXPORT_C void CHgFswEntry::ExternalizeL( RWriteStream& aStream )
-    {
-    aStream.WriteInt32L( iWgId );
-    aStream.WriteInt32L( iAppUid.iUid );
-    aStream << AppName();
-    aStream.WriteInt32L( iScreenshotHandle );
-    aStream.WriteInt32L( iAlwaysShown );
-    aStream.WriteInt32L( iSystemApp );
-    aStream.WriteInt32L( iWidget );
-    aStream.WriteInt32L( iAppIconBitmapHandle );
-    aStream.WriteInt32L( iAppIconMaskHandle );
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswEntry::InternalizeL
-// --------------------------------------------------------------------------
-//
-EXPORT_C void CHgFswEntry::InternalizeL( RReadStream& aStream )
-    {
-    iWgId = aStream.ReadInt32L();
-    iAppUid = TUid::Uid( aStream.ReadInt32L() );
-    delete iAppName; iAppName = 0;
-    iAppName = HBufC::NewL( aStream, KMaxTInt );
-    iScreenshotHandle = aStream.ReadInt32L();
-    iAlwaysShown = aStream.ReadInt32L();
-    iSystemApp = aStream.ReadInt32L();
-    iWidget = aStream.ReadInt32L();
-    iAppIconBitmapHandle = aStream.ReadInt32L();
-    iAppIconMaskHandle = aStream.ReadInt32L();
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswEntry::ExternalizeArrayL
-// --------------------------------------------------------------------------
-//
-EXPORT_C void CHgFswEntry::ExternalizeArrayL( RWriteStream& aStream,
-        const RHgFswArray& aArray )
-    {
-    TInt count = aArray.Count();
-    aStream.WriteInt32L( count );
-    for ( TInt i = 0; i < count; ++i )
-        {
-        aArray[i]->ExternalizeL( aStream );
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CHgFswEntry::InternalizeArrayL
-// --------------------------------------------------------------------------
-//
-EXPORT_C void CHgFswEntry::InternalizeArrayL( RReadStream& aStream,
-        RHgFswArray& aArray )
-    {
-    aArray.ResetAndDestroy();
-    TInt count = aStream.ReadInt32L();
-    for ( TInt i = 0; i < count; ++i )
-        {
-        CHgFswEntry* entry = CHgFswEntry::NewLC();
-        entry->InternalizeL( aStream );
-        aArray.AppendL( entry );
-        CleanupStack::Pop( entry );
-        }
-    }
-
-
-// end of file
--- a/taskswitcher/contextengine/rom/hgcontextservices.iby	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-/*
-* ============================================================================
-*  Name        : hgcontextservices.iby
-*  Part of     : Huriganes / context Services
-*  Description : Iby file for Context Services
-*  Version     : %version: sa1spcx1#62 % 
-*
-*  Copyright © 2008 Nokia.  All rights reserved.
-*  This material, including documentation and any related computer
-*  programs, is protected by copyright controlled by Nokia.  All
-*  rights are reserved.  Copying, including reproducing, storing,
-*  adapting or translating, any or all of this material requires the
-*  prior written consent of Nokia.  This material also contains
-*  confidential information which may not be disclosed to others
-*  without the prior written consent of Nokia.
-* ============================================================================
-*/
-#ifndef HGCONTEXTSERVICES_IBY
-#define HGCONTEXTSERVICES_IBY
-
-// Context Services binaries
-file=ABI_DIR/BUILD_DIR/hgcontextservicesutils.dll    SHARED_LIB_DIR/hgcontextservicesutils.dll
-
-// backup registration
-data=DATAZ_/private/20011417/backup_registration.xml    private/20011417/backup_registration.xml
-
-// stub sis
-data=ZSYSTEM/install/hgctxsrv_stub.sis    system/install/hgctxsrv_stub.sis
-
-#endif // HGCONTEXTSERVICES
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/rom/tscontextservices.iby	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,30 @@
+/*
+* 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:  Iby file for Context Services
+*
+*/
+
+#ifndef TSCONTEXTSERVICES_IBY
+#define TSCONTEXTSERVICES_IBY
+
+// Context Services binaries
+file=ABI_DIR/BUILD_DIR/tscontextservicesutils.dll    SHARED_LIB_DIR/tscontextservicesutils.dll
+
+// backup registration
+data=DATAZ_/private/20011417/backup_registration.xml    private/20011417/backup_registration.xml
+
+// stub sis
+data=ZSYSTEM/install/tsctxsrv_stub.sis    system/install/tsctxsrv_stub.sis
+
+#endif // TSCONTEXTSERVICES
--- a/taskswitcher/contextengine/sis/stubs/createstubs.bat	Fri Jan 22 09:35:14 2010 +0200
+++ b/taskswitcher/contextengine/sis/stubs/createstubs.bat	Tue Jan 26 11:48:23 2010 +0200
@@ -1,1 +1,17 @@
+@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
+
 for %%f in (*.pkg) do makesis -s %%f
--- a/taskswitcher/contextengine/sis/stubs/hgctxsrv_stub.pkg	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-; ------------------------------------------------------------------------------
-; HG Context Services stub SIS package file.
-; Used to enable HG Context Services to be updated from ROM with a SIS package.
-; When you add new files into this stub, please remember to update
-; SIS stub with "makesis -s" command.
-; ------------------------------------------------------------------------------
-;
-;Language - standard language definitions
-&EN
-
-; standard SIS file header
-#{"hgctxutils"},(0x20019569),1,0,0,TYPE=SA
-
-;Localized Vendor Name
-%{"Nokia"}
-
-;Unique Vendor name
-:"Nokia"
-
-""-"Z:\sys\bin\hgcontextservicesutils.dll"
Binary file taskswitcher/contextengine/sis/stubs/hgctxsrv_stub.sis has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/sis/stubs/tsctxsrv_stub.pkg	Tue Jan 26 11:48:23 2010 +0200
@@ -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: 
+;
+; ------------------------------------------------------------------------------
+; TS Context Services stub SIS package file.
+; Used to enable TS Context Services to be updated from ROM with a SIS package.
+; When you add new files into this stub, please remember to update
+; SIS stub with "makesis -s" command.
+; ------------------------------------------------------------------------------
+;
+;Language - standard language definitions
+&EN
+
+; standard SIS file header
+#{"tsctxutils"},(0x20019569),1,0,0,TYPE=SA
+
+;Localized Vendor Name
+%{"Nokia"}
+
+;Unique Vendor name
+:"Nokia"
+
+""-"Z:\sys\bin\tscontextservicesutils.dll"
Binary file taskswitcher/contextengine/sis/stubs/tsctxsrv_stub.sis has changed
--- a/taskswitcher/contextengine/trace/hglogging.h	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,219 +0,0 @@
-/*
-* ==============================================================================
-*  Name        : hglogging.h
-*  Part of     : Teleport / Context Services
-*  Description : Defines all available logging macros.
-*  Version     : %version: 2 %
-*
-*  Copyright © 2008 Nokia. All rights reserved.
-*  This material, including documentation and any related 
-*  computer programs, is protected by copyright controlled by 
-*  Nokia. All rights are reserved. Copying, including 
-*  reproducing, storing, adapting or translating, any 
-*  or all of this material requires the prior written consent of 
-*  Nokia. This material also contains confidential 
-*  information which may not be disclosed to others without the 
-*  prior written consent of Nokia.
-* ==============================================================================
-*/
-
-#ifndef HGLOGLOGUTILS_H
-#define HGLOGLOGUTILS_H
-
-/**
- * @file
- * 
- * TAKING LOGGING INTO USE:
- * 
- * This step is needed to do once per component.
- * 
- * For each component that uses these common logging macros should specify
- * their own logging configuration file, which includes this file. In that
- * configuration file, following constants and macros must be defined.
- *  For example:
- * @code
- * 
- * _LIT( KHgLogFile, "text_file_for_logging.txt" );
- * _LIT( KHgLogPath, "folder_for_text_file" );
- * #define _HGLOG_LOG_COMPONENT_ID <some unique number here>
- * 
- * #include "hglogging.h"
- * 
- * @/code
- * 
- * KHgLogFile   : This is the name of the file, where all the logs for
- *                this components are being written.
- * 
- * KHgLogPath   : This is the folder name under c:\logs, where the file
- *                is to be stored. For example, if KHgLogPath is "test",
- *                log file is created into folder c:\logs\test.
- * 
- * _HGLOG_LOG_COMPONENT_ID  : Unique number id of the component. This is 
- *                            for filtering purposes.
- * 
- * _HGLOG_RDEBUG    : When defined tracing instead of file logging. 
- *                    Default is for file logging.
- * 
- * --------------------------------------------------------------------------
- * 
- * USING LOGGING:
- * 
- * Basically the use is simple, register function use with HGLOG_CONTEXT, 
- * then log function enter by any HGLOG_IN -macro, then possibly use HGLOG
- * -macros for function logging and finally HGLOG_OUT -macros for returning
- * from the function.
- * 
- * @code
- * TInt CGood::Example( TInt aSomething )
- *     {
- *     // Create log context class, which is maintained for lifetime of the 
- *     // method. 
- *     HGLOG_CONTEXT( Example, HGLOG_LOCAL );
- * 
- *     // Indicate we are entering the function. 
- *     HGLOG_IN1( "aSomething contains value %d", aSomething );
- * 
- *     // Your buggy code...
- * 
- *     // Before leaving, indicate function execution has ended.
- *     HGLOG_OUT();
- * 
- *     return 0;
- *     }
- * @/code
- */
-
-#include <e32def.h>
-#include <e32std.h>
-
-#include "hglogutils.h"
-
-#define HGLOG_API 0
-#define HGLOG_LOCAL 1
-
-#define HGLOG_INFO 0
-#define HGLOG_WARNING 1
-#define HGLOG_ERROR 2
-
-#define HGLOG_ASSERT(_assertion)  __HGLOG_ASSERT_DBG(_assertion) 
-#define HGLOG_TRACE_ASSERT(_assertion) __ASSERT_DEBUG((_assertion), User::Invariant() )
-
-#ifdef _DEBUG
-            
-/*****************************************************************************
- LOGGING MACROS - LOGGING ON
-*****************************************************************************/             
-
-    /** 
-     * Context initialization 
-     * NOTE: HGLOG_STATIC_CONTEXT is meant for static methods.
-     * 
-     * @param _fn   Name of the function.
-     * @param _vis  Visibility for the client, use values HGLOG_API or HGLOG_LOCAL
-     * @param _thdId For static functions, thread id can be given here.
-     */
-    #define HGLOG_CONTEXT(_fn, _vis ) _THgLogContext _dc((TText*)L ## #_fn, _HGLOG_LOG_COMPONENT_ID, _vis, (TUint)this, RProcess().SecureId().iId )
-    #define HGLOG_STATIC_CONTEXT(_fn, _vis, _thdId) _THgLogContext _dc((TText*)L ## #_fn, _HGLOG_LOG_COMPONENT_ID, _vis, _thdId, RProcess().SecureId().iId )
-
-    /** 
-     * Entering function 
-     * 
-     * @param string    Custom text. Example: HGLOG_IN0( "Yeah!!!" );
-     * @param p1 - p5   For multiple variables in same string.
-     */
-    #define HGLOG_IN() do { _CHK_MULTIIN(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]>%s "), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn); _MARK_ENTRY(); } while(0)
-    #define HGLOG0_IN(string) do { _CHK_MULTIIN(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]>%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn); _MARK_ENTRY(); } while(0)
-    #define HGLOG1_IN(string, p1) do { _CHK_MULTIIN(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]>%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1); _MARK_ENTRY(); } while(0)
-    #define HGLOG2_IN(string, p1, p2) do { _CHK_MULTIIN(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]>%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2); _MARK_ENTRY(); } while(0)
-    #define HGLOG3_IN(string, p1, p2, p3) do { _CHK_MULTIIN(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]>%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2, p3); _MARK_ENTRY(); } while(0)
-    #define HGLOG4_IN(string, p1, p2, p3, p4) do { _CHK_MULTIIN(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]>%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2, p3, p4); _MARK_ENTRY(); } while(0)
-    #define HGLOG5_IN(string, p1, p2, p3, p4, p5) do { _CHK_MULTIIN(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]>%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2, p3, p4, p5); _MARK_ENTRY(); } while(0)
-
-    /** Leaving function */
-    #define HGLOG_OUT() do { _DOINCHK(); _CHK_MULTIOUT(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s "), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn); _MARK_EXIT(); } while(0)
-    #define HGLOG0_OUT(string) do { _DOINCHK(); _CHK_MULTIOUT(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn); _MARK_EXIT(); } while(0)
-    #define HGLOG1_OUT(string, p1) do { _DOINCHK(); _CHK_MULTIOUT(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1); _MARK_EXIT(); } while(0)
-    #define HGLOG2_OUT(string, p1, p2) do { _DOINCHK(); _CHK_MULTIOUT(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2); _MARK_EXIT(); } while(0)
-    #define HGLOG3_OUT(string, p1, p2, p3) do { _DOINCHK(); _CHK_MULTIOUT(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2, p3); _MARK_EXIT(); } while(0)
-    #define HGLOG4_OUT(string, p1, p2, p3, p4) do { _DOINCHK(); _CHK_MULTIOUT(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2, p3, p4); _MARK_EXIT(); } while(0)
-    #define HGLOG5_OUT(string, p1, p2, p3, p4, p5) do { _DOINCHK(); _CHK_MULTIOUT(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2, p3, p4, p5); _MARK_EXIT(); } while(0)
-
-    /** Leaving function with return value */
-    #define HGLOG0_RET(val, fmtstr) do { do { _DOINCHK(); _CHK_MULTIOUT(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## fmtstr), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, val); _MARK_EXIT(); } while(0); return val;} while(0)
-    #define HGLOG1_RET(val, fmtstr, p1) do { do { _DOINCHK(); _CHK_MULTIOUT(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## fmtstr), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, val, p1); _MARK_EXIT(); } while(0); return val;} while(0)
-    #define HGLOG2_RET(val, fmtstr, p1, p2) do { do { _DOINCHK(); _CHK_MULTIOUT(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## fmtstr), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, val, p1, p2); _MARK_EXIT(); } while(0); return val;} while(0)
-    #define HGLOG3_RET(val, fmtstr, p1, p2, p3) do { do { _DOINCHK(); _CHK_MULTIOUT(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## fmtstr), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, val, p1, p2, p3); _MARK_EXIT(); } while(0); return val;} while(0)
-    #define HGLOG4_RET(val, fmtstr, p1, p2, p3, p4) do { do { _DOINCHK(); _CHK_MULTIOUT(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## fmtstr), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, val, p1, p2, p3, p4); _MARK_EXIT(); } while(0); return val;} while(0)
-    #define HGLOG5_RET(val, fmtstr, p1, p2, p3, p4, p5) do { do { _DOINCHK(); _CHK_MULTIOUT(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## fmtstr), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, val, p1, p2, p3, p4, p5); _MARK_EXIT(); } while(0); return val;} while(0)
-
-    /** 
-     * General log lines 
-     * 
-     * @param level     This can be used as internal information 
-     *                  field, such as info, error, warning etc.
-     * @param string    Custom string
-     * @param p1 - p5   For multiple variables in same string.
-     */
-    #define HGLOG0(level, string) do { _DOINCHK(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]%s " L ## string), _dc.iVis, level, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn); } while(0)
-    #define HGLOG1(level, string, p1) do { _DOINCHK(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]%s " L ## string), _dc.iVis, level, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1); } while(0)
-    #define HGLOG2(level, string, p1, p2) do { _DOINCHK(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]%s " L ## string), _dc.iVis, level, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2); } while(0)
-    #define HGLOG3(level, string, p1, p2, p3) do { _DOINCHK(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]%s " L ## string), _dc.iVis, level, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2, p3); } while(0)
-    #define HGLOG4(level, string, p1, p2, p3, p4) do { _DOINCHK(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]%s " L ## string), _dc.iVis, level, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2, p3, p4); } while(0)
-    #define HGLOG5(level, string, p1, p2, p3, p4, p5) do { _DOINCHK(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]%s " L ## string), _dc.iVis, level, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2, p3, p4, p5); } while(0)
-
-    /** Error logging */
-    #define __HGLOG_ASSERT_DBG( _assertion ) do { if( _assertion ) { break; } TFileName file; file.Copy( _L8( __FILE__ ) );   _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s Assert:%S:%d:" L ## #_assertion) , _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, &file, __LINE__ ); User::Invariant(); } while( 0 )
-    #define __HGLOG_TRACE_ASSERT_DBG(_assertion, _textToPrint, _panicCode)  do { if (_assertion) { break; } _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s ASSERTION FAILED!!! %s file: %s, line: %s"), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, _textToPrint, __FILE__, __LINE__); User::Panic(_L("AssertionFailed"), _panicCode} while(0)
-    #define HGLOG_TRAPHANDLER() _THgLogTrapHandler _traceTrapHandler; _traceTrapHandler.oldHandler = User::SetTrapHandler(&_traceTrapHandler)
-
-/*****************************************************************************
- LOGGING MACROS - NO LOGGING
-*****************************************************************************/ 
-#else // _DEBUG
-
-    #define HGLOG_CONTEXT(_fn, _vis )
-    #define HGLOG_STATIC_CONTEXT(_fn, _vis, _thdId)
-
-    #define HGLOG_IN()
-    #define HGLOG0_IN(string)
-    #define HGLOG1_IN(string, p1)
-    #define HGLOG2_IN(string, p1, p2)
-    #define HGLOG3_IN(string, p1, p2, p3)
-    #define HGLOG4_IN(string, p1, p2, p3, p4)
-    #define HGLOG5_IN(string, p1, p2, p3, p4, p5)
-
-    #define HGLOG_OUT()
-    #define HGLOG0_OUT(string)
-    #define HGLOG1_OUT(string, p1)
-    #define HGLOG2_OUT(string, p1, p2)
-    #define HGLOG3_OUT(string, p1, p2, p3)
-    #define HGLOG4_OUT(string, p1, p2, p3, p4)
-    #define HGLOG5_OUT(string, p1, p2, p3, p4, p5)
-
-    #define HGLOG0_RET(val, fmtstr) return val
-    #define HGLOG1_RET(val, fmtstr, p1) return val
-    #define HGLOG2_RET(val, fmtstr, p1, p2) return val
-    #define HGLOG3_RET(val, fmtstr, p1, p2, p3) return val
-    #define HGLOG4_RET(val, fmtstr, p1, p2, p3, p4) return val
-    #define HGLOG5_RET(val, fmtstr, p1, p2, p3, p4, p5) return val
-
-    #define HGLOG0(level, string)
-    #define HGLOG1(level, string, p1)
-    #define HGLOG2(level, string, p1, p2)
-    #define HGLOG3(level, string, p1, p2, p3)
-    #define HGLOG4(level, string, p1, p2, p3, p4)
-    #define HGLOG5(level, string, p1, p2, p3, p4, p5)
-    
-    #define BIND_TRACE_TRAPHANDLER()
-    #define TRACE_DECL() TInt _iTraceThreadId
-    #define TRACE_FAST_CREATE(_thdId) _thdId++;
-    #define TRACE_CREATE()
-
-    #define __HGLOG_ASSERT_DBG(_assertion)
-    #define __TRACE_ASSERT_DBG(_assertion, _message, _panicCode )
-
-#endif // _DEBUG
-
-#endif      // HGLOGLOGUTILS_H
-            
-// End of File
--- a/taskswitcher/contextengine/trace/hglogutils.h	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,212 +0,0 @@
-/*
-* ==============================================================================
-*  Name        : hglogutils.h
-*  Part of     : Teleport / Context Services
-*  Description : Logging behavior
-*  Version     : %version: 3 %
-*
-*  Copyright © 2008 Nokia. All rights reserved.
-*  This material, including documentation and any related 
-*  computer programs, is protected by copyright controlled by 
-*  Nokia. All rights are reserved. Copying, including 
-*  reproducing, storing, adapting or translating, any 
-*  or all of this material requires the prior written consent of 
-*  Nokia. This material also contains confidential 
-*  information which may not be disclosed to others without the 
-*  prior written consent of Nokia.
-* ==============================================================================
-*/
-
-#ifndef HGLOGUTILS_H
-#define HGLOGUTILS_H
-
-/**
- * NOTE: This file contains the logic related to logging. Change only if you
- * know what you're doing.
- */
-
-
-
-
-
-
-
-
-
-
-#ifdef _DEBUG
-
-#include <e32debug.h>
-#include <e32std.h>
-
-static const TUint HGLOGERR   = 2;  /**< Used to create an error message */
-
-// These macros are real macros, that should be used. For temporary purposes, these
-// are left out and the logging is done by simple entry logging
-#define _HGLOG_UNCONTROLLED_INPUT_MSG  L"%s%d[%x:%x:%x]>%s UNCONTROLLED ENTRY!"
-#define _HGLOG_MULTIPLE_ENTRY_MSG      L"%s%d[%x:%x:%x]%s  ADDITIONAL ENTRY!"
-#define _HGLOG_UNCONTROLLER_EXIT_MSG   L"%s%d[%x:%x:%x]<%s UNCONTROLLED EXIT!"
-#define _HGLOG_MULTIPLE_EXIT_MSG       L"%s%d[%x:%x:%x]%s  ADDITIONAL EXIT!"
-#define _HGLOG_TRAP_HARNESS_ENTRY      L"_D%d[%x:%x:%x]TraceFramework: Entering trap harness"
-#define _HGLOG_TRAP_HARNESS_EXIT       L"_D%d[%x:%x:%x]TraceFramework: Exiting trap harness"
-#define _HGLOG_TRAP_HARNESS_LEAVE      L"_D%d[%x:%x:%x]TraceFramework: ---------- LEAVE OCCURRED !!! ---------- "
-#define _HGLOG_API_PREFIX              L"_A"
-#define _HGLOG_LOCAL_PREFIX            L"_L"
-
-/**
-* @file 
-* trace_utils.h contains definitions needed for advanced tracing features.
-* Tracing can be customized using the following compile time flags:
-* - <b>_DEBUG</b>
-*   - With this flag undefined, all traces are disabled
-* - <b>__KERNEL_MODE__</b>
-*   - if kernel mode flag is defined, kernel macro variants are used (no unicode or shared heap related stuff, faster)
-* - <b>DISABLE_SYNTAX_CHECK</b>
-*   - If this flag is defined, runtime syntax checking features are disabled from traces
-*/
-#ifndef DISABLE_SYNTAX_CHECK
-    #define _MARK_ENTRY() _dc.inOk=ETrue
-    #define _DOINCHK() _dc.DoInChk()
-    #define _CHK_MULTIIN() _dc.ChkMultiIn()
-    #define _CHK_MULTIOUT() _dc.ChkMultiOut()
-    #define _MARK_EXIT() _dc.outOk=ETrue
-#else
-    #define _MARK_ENTRY()
-    #define _DOINCHK()
-    #define _CHK_MULTIIN()
-    #define _CHK_MULTIOUT()
-    #define _MARK_EXIT()
-#endif // DISABLE_SYNTAX_CHECK
-    
-/** For tracing */
-#ifdef _HGLOG_RDEBUG
-    #define _IT(a) (TPtrC((const TText *)(a)))
-    #define _HGLOGPRINTER RDebug::Print        
-        
-/** For filedebug */
-#else   // _HGLOG_RDEBUG
-
-    /** Includes */
-    #include <e32base.h>
-    #include <e32std.h>
-    #include <e32def.h>
-    #include <e32svr.h>
-
-// both of headers defines KLogBufferSize
-#ifndef __COMMSDEBUGUTILITY_H__
-    #include <flogger.h>
-#endif
-
-    #define _IT(a) KHgLogPath, KHgLogFile, EFileLoggingModeAppend, (TPtrC((const TText *)(a)))    
-    #define _HGLOGPRINTER RFileLogger::WriteFormat    
-#endif // _HGLOG_RDEBUG    
-
-class _THgLogContext
-    {
-    public:
-        _THgLogContext(
-            const TText* _fn, 
-            const TUint _id, 
-            const TUint _vis, 
-            const TUint _addr, 
-            const TUint _thdId, 
-            const TUint _category=0 )
-            : 
-            iFn(_fn), 
-            iId(_id), 
-            iApi((TBool)_vis), 
-            iAddr(_addr), 
-            iThdId(_thdId), 
-            iVis((_vis == 0 ? (TText*)_HGLOG_API_PREFIX : (TText*)_HGLOG_LOCAL_PREFIX)),
-            iCategory(_category)            
-        #ifndef DISABLE_SYNTAX_CHECK
-            ,outOk(EFalse), inOk(EFalse)
-        #endif
-            {
-            }
-        ~_THgLogContext() 
-            {
-            #ifndef DISABLE_SYNTAX_CHECK
-                do
-                    {                   
-                    DoInChk();
-                    if (!outOk)
-                        {
-                        _HGLOGPRINTER(_IT(_HGLOG_UNCONTROLLER_EXIT_MSG), iVis, iCategory, iId, iThdId, iAddr, iFn);
-                        }
-                    } while (0);
-            #endif // DISABLE_SYNTAX_CHECK
-            }
-
-        const TText* iFn;
-        const TUint iId;
-        const TText* iVis;
-        const TUint iAddr;
-        const TInt iThdId;
-        const TBool iApi;
-        const TUint iCategory;
-        
-        #ifndef DISABLE_SYNTAX_CHECK
-            inline void DoInChk()
-                {
-                if (!inOk)
-                    {
-                    _HGLOGPRINTER(_IT(_HGLOG_UNCONTROLLED_INPUT_MSG), iVis, iCategory, iId, iThdId, iAddr, iFn);
-                    inOk = ETrue;
-                    }
-                }
-                        
-            inline void ChkMultiIn()
-                {
-                if (inOk)
-                    {
-                    _HGLOGPRINTER(_IT(_HGLOG_MULTIPLE_ENTRY_MSG), iVis, iCategory, iId, iThdId, iAddr, iFn);                
-                    }
-                }
-    
-            inline void ChkMultiOut()
-                {
-                if (outOk)
-                    {           
-                    _HGLOGPRINTER(_IT(_HGLOG_MULTIPLE_EXIT_MSG), iVis, iCategory, iId, iThdId, iAddr, iFn);                                        
-                    }
-                }
-
-            TBool inOk;
-            TBool outOk;
-        #endif // DISABLE_SYNTAX_CHECK
-    };
-    
-class _THgLogTrapHandler: public TTrapHandler
-    {
-    public:
-
-        _THgLogTrapHandler(_THgLogContext& _context) : _dc( _context ) 
-            {
-            RThread me;
-            iThdId = (TInt)me.Id();
-            }
-    	void Trap() 
-    	    {
-    	    _HGLOGPRINTER(_IT(_HGLOG_TRAP_HARNESS_ENTRY), 0, HGLOGERR, iThdId, this);
-    	    oldHandler->Trap();
-    	    } 
-    	void UnTrap()
-    	    {
-    	    _HGLOGPRINTER(_IT(_HGLOG_TRAP_HARNESS_EXIT), 0, HGLOGERR, iThdId, this);
-    	    oldHandler->UnTrap();
-    	    }	
-    	void Leave(TInt aValue)
-    	    {
-    	    _HGLOGPRINTER(_IT(_HGLOG_TRAP_HARNESS_LEAVE), 0, HGLOGERR, iThdId, this);
-    	    oldHandler->Leave(aValue);
-    	    }	
-    	TTrapHandler* oldHandler;
-    private:
-        _THgLogContext& _dc;
-        TInt iThdId;
-    };
-    
-#endif // _DEBUG    
-
-#endif // HGLOGUTILS_H
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/trace/tslogging.h	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,218 @@
+/*
+* 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:  Defines all available logging macros.
+*
+*/
+
+
+#ifndef TSLOGLOGUTILS_H
+#define TSLOGLOGUTILS_H
+
+/**
+ * @file
+ * 
+ * TAKING LOGGING INTO USE:
+ * 
+ * This step is needed to do once per component.
+ * 
+ * For each component that uses these common logging macros should specify
+ * their own logging configuration file, which includes this file. In that
+ * configuration file, following constants and macros must be defined.
+ *  For example:
+ * @code
+ * 
+ * _LIT( KTsLogFile, "text_file_for_logging.txt" );
+ * _LIT( KTsLogPath, "folder_for_text_file" );
+ * #define _TSLOG_LOG_COMPONENT_ID <some unique number here>
+ * 
+ * #include "tslogging.h"
+ * 
+ * @/code
+ * 
+ * KTsLogFile   : This is the name of the file, where all the logs for
+ *                this components are being written.
+ * 
+ * KTsLogPath   : This is the folder name under c:\logs, where the file
+ *                is to be stored. For example, if KTsLogPath is "test",
+ *                log file is created into folder c:\logs\test.
+ * 
+ * _TSLOG_LOG_COMPONENT_ID  : Unique number id of the component. This is 
+ *                            for filtering purposes.
+ * 
+ * _TSLOG_RDEBUG    : When defined tracing instead of file logging. 
+ *                    Default is for file logging.
+ * 
+ * --------------------------------------------------------------------------
+ * 
+ * USING LOGGING:
+ * 
+ * Basically the use is simple, register function use with TSLOG_CONTEXT, 
+ * then log function enter by any TSLOG_IN -macro, then possibly use TSLOG
+ * -macros for function logging and finally TSLOG_OUT -macros for returning
+ * from the function.
+ * 
+ * @code
+ * TInt CGood::Example( TInt aSomething )
+ *     {
+ *     // Create log context class, which is maintained for lifetime of the 
+ *     // method. 
+ *     TSLOG_CONTEXT( Example, TSLOG_LOCAL );
+ * 
+ *     // Indicate we are entering the function. 
+ *     TSLOG_IN1( "aSomething contains value %d", aSomething );
+ * 
+ *     // Your buggy code...
+ * 
+ *     // Before leaving, indicate function execution has ended.
+ *     TSLOG_OUT();
+ * 
+ *     return 0;
+ *     }
+ * @/code
+ */
+
+#include <e32def.h>
+#include <e32std.h>
+
+#include "tslogutils.h"
+
+#define TSLOG_API 0
+#define TSLOG_LOCAL 1
+
+#define TSLOG_INFO 0
+#define TSLOG_WARNING 1
+#define TSLOG_ERROR 2
+
+#define TSLOG_ASSERT(_assertion)  __TSLOG_ASSERT_DBG(_assertion) 
+#define TSLOG_TRACE_ASSERT(_assertion) __ASSERT_DEBUG((_assertion), User::Invariant() )
+
+#ifdef _DEBUG
+            
+/*****************************************************************************
+ LOGGING MACROS - LOGGING ON
+*****************************************************************************/             
+
+    /** 
+     * Context initialization 
+     * NOTE: TSLOG_STATIC_CONTEXT is meant for static methods.
+     * 
+     * @param _fn   Name of the function.
+     * @param _vis  Visibility for the client, use values TSLOG_API or TSLOG_LOCAL
+     * @param _thdId For static functions, thread id can be given here.
+     */
+    #define TSLOG_CONTEXT(_fn, _vis ) _TTsLogContext _dc((TText*)L ## #_fn, _TSLOG_LOG_COMPONENT_ID, _vis, (TUint)this, RProcess().SecureId().iId )
+    #define TSLOG_STATIC_CONTEXT(_fn, _vis, _thdId) _TTsLogContext _dc((TText*)L ## #_fn, _TSLOG_LOG_COMPONENT_ID, _vis, _thdId, RProcess().SecureId().iId )
+
+    /** 
+     * Entering function 
+     * 
+     * @param string    Custom text. Example: TSLOG_IN0( "Yeah!!!" );
+     * @param p1 - p5   For multiple variables in same string.
+     */
+    #define TSLOG_IN() do { _CHK_MULTIIN(); _TSLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]>%s "), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn); _MARK_ENTRY(); } while(0)
+    #define TSLOG0_IN(string) do { _CHK_MULTIIN(); _TSLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]>%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn); _MARK_ENTRY(); } while(0)
+    #define TSLOG1_IN(string, p1) do { _CHK_MULTIIN(); _TSLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]>%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1); _MARK_ENTRY(); } while(0)
+    #define TSLOG2_IN(string, p1, p2) do { _CHK_MULTIIN(); _TSLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]>%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2); _MARK_ENTRY(); } while(0)
+    #define TSLOG3_IN(string, p1, p2, p3) do { _CHK_MULTIIN(); _TSLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]>%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2, p3); _MARK_ENTRY(); } while(0)
+    #define TSLOG4_IN(string, p1, p2, p3, p4) do { _CHK_MULTIIN(); _TSLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]>%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2, p3, p4); _MARK_ENTRY(); } while(0)
+    #define TSLOG5_IN(string, p1, p2, p3, p4, p5) do { _CHK_MULTIIN(); _TSLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]>%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2, p3, p4, p5); _MARK_ENTRY(); } while(0)
+
+    /** Leaving function */
+    #define TSLOG_OUT() do { _DOINCHK(); _CHK_MULTIOUT(); _TSLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s "), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn); _MARK_EXIT(); } while(0)
+    #define TSLOG0_OUT(string) do { _DOINCHK(); _CHK_MULTIOUT(); _TSLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn); _MARK_EXIT(); } while(0)
+    #define TSLOG1_OUT(string, p1) do { _DOINCHK(); _CHK_MULTIOUT(); _TSLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1); _MARK_EXIT(); } while(0)
+    #define TSLOG2_OUT(string, p1, p2) do { _DOINCHK(); _CHK_MULTIOUT(); _TSLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2); _MARK_EXIT(); } while(0)
+    #define TSLOG3_OUT(string, p1, p2, p3) do { _DOINCHK(); _CHK_MULTIOUT(); _TSLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2, p3); _MARK_EXIT(); } while(0)
+    #define TSLOG4_OUT(string, p1, p2, p3, p4) do { _DOINCHK(); _CHK_MULTIOUT(); _TSLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2, p3, p4); _MARK_EXIT(); } while(0)
+    #define TSLOG5_OUT(string, p1, p2, p3, p4, p5) do { _DOINCHK(); _CHK_MULTIOUT(); _TSLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2, p3, p4, p5); _MARK_EXIT(); } while(0)
+
+    /** Leaving function with return value */
+    #define TSLOG0_RET(val, fmtstr) do { do { _DOINCHK(); _CHK_MULTIOUT(); _TSLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## fmtstr), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, val); _MARK_EXIT(); } while(0); return val;} while(0)
+    #define TSLOG1_RET(val, fmtstr, p1) do { do { _DOINCHK(); _CHK_MULTIOUT(); _TSLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## fmtstr), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, val, p1); _MARK_EXIT(); } while(0); return val;} while(0)
+    #define TSLOG2_RET(val, fmtstr, p1, p2) do { do { _DOINCHK(); _CHK_MULTIOUT(); _TSLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## fmtstr), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, val, p1, p2); _MARK_EXIT(); } while(0); return val;} while(0)
+    #define TSLOG3_RET(val, fmtstr, p1, p2, p3) do { do { _DOINCHK(); _CHK_MULTIOUT(); _TSLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## fmtstr), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, val, p1, p2, p3); _MARK_EXIT(); } while(0); return val;} while(0)
+    #define TSLOG4_RET(val, fmtstr, p1, p2, p3, p4) do { do { _DOINCHK(); _CHK_MULTIOUT(); _TSLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## fmtstr), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, val, p1, p2, p3, p4); _MARK_EXIT(); } while(0); return val;} while(0)
+    #define TSLOG5_RET(val, fmtstr, p1, p2, p3, p4, p5) do { do { _DOINCHK(); _CHK_MULTIOUT(); _TSLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## fmtstr), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, val, p1, p2, p3, p4, p5); _MARK_EXIT(); } while(0); return val;} while(0)
+
+    /** 
+     * General log lines 
+     * 
+     * @param level     This can be used as internal information 
+     *                  field, such as info, error, warning etc.
+     * @param string    Custom string
+     * @param p1 - p5   For multiple variables in same string.
+     */
+    #define TSLOG0(level, string) do { _DOINCHK(); _TSLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]%s " L ## string), _dc.iVis, level, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn); } while(0)
+    #define TSLOG1(level, string, p1) do { _DOINCHK(); _TSLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]%s " L ## string), _dc.iVis, level, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1); } while(0)
+    #define TSLOG2(level, string, p1, p2) do { _DOINCHK(); _TSLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]%s " L ## string), _dc.iVis, level, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2); } while(0)
+    #define TSLOG3(level, string, p1, p2, p3) do { _DOINCHK(); _TSLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]%s " L ## string), _dc.iVis, level, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2, p3); } while(0)
+    #define TSLOG4(level, string, p1, p2, p3, p4) do { _DOINCHK(); _TSLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]%s " L ## string), _dc.iVis, level, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2, p3, p4); } while(0)
+    #define TSLOG5(level, string, p1, p2, p3, p4, p5) do { _DOINCHK(); _TSLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]%s " L ## string), _dc.iVis, level, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2, p3, p4, p5); } while(0)
+
+    /** Error logging */
+    #define __TSLOG_ASSERT_DBG( _assertion ) do { if( _assertion ) { break; } TFileName file; file.Copy( _L8( __FILE__ ) );   _TSLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s Assert:%S:%d:" L ## #_assertion) , _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, &file, __LINE__ ); User::Invariant(); } while( 0 )
+    #define __TSLOG_TRACE_ASSERT_DBG(_assertion, _textToPrint, _panicCode)  do { if (_assertion) { break; } _TSLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s ASSERTION FAILED!!! %s file: %s, line: %s"), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, _textToPrint, __FILE__, __LINE__); User::Panic(_L("AssertionFailed"), _panicCode} while(0)
+    #define TSLOG_TRAPHANDLER() _TTsLogTrapHandler _traceTrapHandler; _traceTrapHandler.oldHandler = User::SetTrapHandler(&_traceTrapHandler)
+
+/*****************************************************************************
+ LOGGING MACROS - NO LOGGING
+*****************************************************************************/ 
+#else // _DEBUG
+
+    #define TSLOG_CONTEXT(_fn, _vis )
+    #define TSLOG_STATIC_CONTEXT(_fn, _vis, _thdId)
+
+    #define TSLOG_IN()
+    #define TSLOG0_IN(string)
+    #define TSLOG1_IN(string, p1)
+    #define TSLOG2_IN(string, p1, p2)
+    #define TSLOG3_IN(string, p1, p2, p3)
+    #define TSLOG4_IN(string, p1, p2, p3, p4)
+    #define TSLOG5_IN(string, p1, p2, p3, p4, p5)
+
+    #define TSLOG_OUT()
+    #define TSLOG0_OUT(string)
+    #define TSLOG1_OUT(string, p1)
+    #define TSLOG2_OUT(string, p1, p2)
+    #define TSLOG3_OUT(string, p1, p2, p3)
+    #define TSLOG4_OUT(string, p1, p2, p3, p4)
+    #define TSLOG5_OUT(string, p1, p2, p3, p4, p5)
+
+    #define TSLOG0_RET(val, fmtstr) return val
+    #define TSLOG1_RET(val, fmtstr, p1) return val
+    #define TSLOG2_RET(val, fmtstr, p1, p2) return val
+    #define TSLOG3_RET(val, fmtstr, p1, p2, p3) return val
+    #define TSLOG4_RET(val, fmtstr, p1, p2, p3, p4) return val
+    #define TSLOG5_RET(val, fmtstr, p1, p2, p3, p4, p5) return val
+
+    #define TSLOG0(level, string)
+    #define TSLOG1(level, string, p1)
+    #define TSLOG2(level, string, p1, p2)
+    #define TSLOG3(level, string, p1, p2, p3)
+    #define TSLOG4(level, string, p1, p2, p3, p4)
+    #define TSLOG5(level, string, p1, p2, p3, p4, p5)
+    
+    #define BIND_TRACE_TRAPHANDLER()
+    #define TRACE_DECL() TInt _iTraceThreadId
+    #define TRACE_FAST_CREATE(_thdId) _thdId++;
+    #define TRACE_CREATE()
+
+    #define __TSLOG_ASSERT_DBG(_assertion)
+    #define __TRACE_ASSERT_DBG(_assertion, _message, _panicCode )
+
+#endif // _DEBUG
+
+#endif      // TSLOGLOGUTILS_H
+            
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/trace/tslogutils.h	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,211 @@
+/*
+* 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:  Logging behavior
+*
+*/
+
+
+#ifndef TSLOGUTILS_H
+#define TSLOGUTILS_H
+
+/**
+ * NOTE: This file contains the logic related to logging. Change only if you
+ * know what you're doing.
+ */
+
+
+
+
+
+
+
+
+
+
+#ifdef _DEBUG
+
+#include <e32debug.h>
+#include <e32std.h>
+
+static const TUint TSLOGERR   = 2;  /**< Used to create an error message */
+
+// These macros are real macros, that should be used. For temporary purposes, these
+// are left out and the logging is done by simple entry logging
+#define _TSLOG_UNCONTROLLED_INPUT_MSG  L"%s%d[%x:%x:%x]>%s UNCONTROLLED ENTRY!"
+#define _TSLOG_MULTIPLE_ENTRY_MSG      L"%s%d[%x:%x:%x]%s  ADDITIONAL ENTRY!"
+#define _TSLOG_UNCONTROLLER_EXIT_MSG   L"%s%d[%x:%x:%x]<%s UNCONTROLLED EXIT!"
+#define _TSLOG_MULTIPLE_EXIT_MSG       L"%s%d[%x:%x:%x]%s  ADDITIONAL EXIT!"
+#define _TSLOG_TRAP_HARNESS_ENTRY      L"_D%d[%x:%x:%x]TraceFramework: Entering trap harness"
+#define _TSLOG_TRAP_HARNESS_EXIT       L"_D%d[%x:%x:%x]TraceFramework: Exiting trap harness"
+#define _TSLOG_TRAP_HARNESS_LEAVE      L"_D%d[%x:%x:%x]TraceFramework: ---------- LEAVE OCCURRED !!! ---------- "
+#define _TSLOG_API_PREFIX              L"_A"
+#define _TSLOG_LOCAL_PREFIX            L"_L"
+
+/**
+* @file 
+* trace_utils.h contains definitions needed for advanced tracing features.
+* Tracing can be customized using the following compile time flags:
+* - <b>_DEBUG</b>
+*   - With this flag undefined, all traces are disabled
+* - <b>__KERNEL_MODE__</b>
+*   - if kernel mode flag is defined, kernel macro variants are used (no unicode or shared heap related stuff, faster)
+* - <b>DISABLE_SYNTAX_CHECK</b>
+*   - If this flag is defined, runtime syntax checking features are disabled from traces
+*/
+#ifndef DISABLE_SYNTAX_CHECK
+    #define _MARK_ENTRY() _dc.inOk=ETrue
+    #define _DOINCHK() _dc.DoInChk()
+    #define _CHK_MULTIIN() _dc.ChkMultiIn()
+    #define _CHK_MULTIOUT() _dc.ChkMultiOut()
+    #define _MARK_EXIT() _dc.outOk=ETrue
+#else
+    #define _MARK_ENTRY()
+    #define _DOINCHK()
+    #define _CHK_MULTIIN()
+    #define _CHK_MULTIOUT()
+    #define _MARK_EXIT()
+#endif // DISABLE_SYNTAX_CHECK
+    
+/** For tracing */
+#ifdef _TSLOG_RDEBUG
+    #define _IT(a) (TPtrC((const TText *)(a)))
+    #define _TSLOGPRINTER RDebug::Print        
+        
+/** For filedebug */
+#else   // _TSLOG_RDEBUG
+
+    /** Includes */
+    #include <e32base.h>
+    #include <e32std.h>
+    #include <e32def.h>
+    #include <e32svr.h>
+
+// both of headers defines KLogBufferSize
+#ifndef __COMMSDEBUGUTILITY_H__
+    #include <flogger.h>
+#endif
+
+    #define _IT(a) KTsLogPath, KTsLogFile, EFileLoggingModeAppend, (TPtrC((const TText *)(a)))    
+    #define _TSLOGPRINTER RFileLogger::WriteFormat    
+#endif // _TSLOG_RDEBUG    
+
+class _TTsLogContext
+    {
+    public:
+        _TTsLogContext(
+            const TText* _fn, 
+            const TUint _id, 
+            const TUint _vis, 
+            const TUint _addr, 
+            const TUint _thdId, 
+            const TUint _category=0 )
+            : 
+            iFn(_fn), 
+            iId(_id), 
+            iApi((TBool)_vis), 
+            iAddr(_addr), 
+            iThdId(_thdId), 
+            iVis((_vis == 0 ? (TText*)_TSLOG_API_PREFIX : (TText*)_TSLOG_LOCAL_PREFIX)),
+            iCategory(_category)            
+        #ifndef DISABLE_SYNTAX_CHECK
+            ,outOk(EFalse), inOk(EFalse)
+        #endif
+            {
+            }
+        ~_TTsLogContext() 
+            {
+            #ifndef DISABLE_SYNTAX_CHECK
+                do
+                    {                   
+                    DoInChk();
+                    if (!outOk)
+                        {
+                        _TSLOGPRINTER(_IT(_TSLOG_UNCONTROLLER_EXIT_MSG), iVis, iCategory, iId, iThdId, iAddr, iFn);
+                        }
+                    } while (0);
+            #endif // DISABLE_SYNTAX_CHECK
+            }
+
+        const TText* iFn;
+        const TUint iId;
+        const TText* iVis;
+        const TUint iAddr;
+        const TInt iThdId;
+        const TBool iApi;
+        const TUint iCategory;
+        
+        #ifndef DISABLE_SYNTAX_CHECK
+            inline void DoInChk()
+                {
+                if (!inOk)
+                    {
+                    _TSLOGPRINTER(_IT(_TSLOG_UNCONTROLLED_INPUT_MSG), iVis, iCategory, iId, iThdId, iAddr, iFn);
+                    inOk = ETrue;
+                    }
+                }
+                        
+            inline void ChkMultiIn()
+                {
+                if (inOk)
+                    {
+                    _TSLOGPRINTER(_IT(_TSLOG_MULTIPLE_ENTRY_MSG), iVis, iCategory, iId, iThdId, iAddr, iFn);                
+                    }
+                }
+    
+            inline void ChkMultiOut()
+                {
+                if (outOk)
+                    {           
+                    _TSLOGPRINTER(_IT(_TSLOG_MULTIPLE_EXIT_MSG), iVis, iCategory, iId, iThdId, iAddr, iFn);                                        
+                    }
+                }
+
+            TBool inOk;
+            TBool outOk;
+        #endif // DISABLE_SYNTAX_CHECK
+    };
+    
+class _TTsLogTrapHandler: public TTrapHandler
+    {
+    public:
+
+        _TTsLogTrapHandler(_TTsLogContext& _context) : _dc( _context ) 
+            {
+            RThread me;
+            iThdId = (TInt)me.Id();
+            }
+    	void Trap() 
+    	    {
+    	    _TSLOGPRINTER(_IT(_TSLOG_TRAP_HARNESS_ENTRY), 0, TSLOGERR, iThdId, this);
+    	    oldHandler->Trap();
+    	    } 
+    	void UnTrap()
+    	    {
+    	    _TSLOGPRINTER(_IT(_TSLOG_TRAP_HARNESS_EXIT), 0, TSLOGERR, iThdId, this);
+    	    oldHandler->UnTrap();
+    	    }	
+    	void Leave(TInt aValue)
+    	    {
+    	    _TSLOGPRINTER(_IT(_TSLOG_TRAP_HARNESS_LEAVE), 0, TSLOGERR, iThdId, this);
+    	    oldHandler->Leave(aValue);
+    	    }	
+    	TTrapHandler* oldHandler;
+    private:
+        _TTsLogContext& _dc;
+        TInt iThdId;
+    };
+    
+#endif // _DEBUG    
+
+#endif // TSLOGUTILS_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsctxutils/bwins/tscontextservicesutilsu.def	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,8 @@
+EXPORTS
+	?NewLC@CTsCenrepListener@@SAPAV1@ABVTUid@@KAAVMTsCenrepChangeObserver@@@Z @ 1 NONAME ; class CTsCenrepListener * CTsCenrepListener::NewLC(class TUid const &, unsigned long, class MTsCenrepChangeObserver &)
+	??0CTsPropertyListener@@QAE@VTUid@@IAAVMTsPropertyChangeObserver@@@Z @ 2 NONAME ; CTsPropertyListener::CTsPropertyListener(class TUid, unsigned int, class MTsPropertyChangeObserver &)
+	??1CTsCenrepListener@@UAE@XZ @ 3 NONAME ; CTsCenrepListener::~CTsCenrepListener(void)
+	?Value@CTsCenrepListener@@QAEHXZ @ 4 NONAME ; int CTsCenrepListener::Value(void)
+	?NewL@CTsCenrepListener@@SAPAV1@ABVTUid@@KAAVMTsCenrepChangeObserver@@@Z @ 5 NONAME ; class CTsCenrepListener * CTsCenrepListener::NewL(class TUid const &, unsigned long, class MTsCenrepChangeObserver &)
+	??1CTsPropertyListener@@UAE@XZ @ 6 NONAME ; CTsPropertyListener::~CTsPropertyListener(void)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsctxutils/eabi/tscontextservicesutilsu.def	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,13 @@
+EXPORTS
+	_ZN17CTsCenrepListener4NewLERK4TUidmR23MTsCenrepChangeObserver @ 1 NONAME
+	_ZN17CTsCenrepListener5NewLCERK4TUidmR23MTsCenrepChangeObserver @ 2 NONAME
+	_ZN17CTsCenrepListener5ValueEv @ 3 NONAME
+	_ZN17CTsCenrepListenerD0Ev @ 4 NONAME
+	_ZN17CTsCenrepListenerD1Ev @ 5 NONAME
+	_ZN17CTsCenrepListenerD2Ev @ 6 NONAME
+	_ZN19CTsPropertyListenerC1E4TUidjR25MTsPropertyChangeObserver @ 7 NONAME
+	_ZN19CTsPropertyListenerC2E4TUidjR25MTsPropertyChangeObserver @ 8 NONAME
+	_ZN19CTsPropertyListenerD0Ev @ 9 NONAME
+	_ZN19CTsPropertyListenerD1Ev @ 10 NONAME
+	_ZN19CTsPropertyListenerD2Ev @ 11 NONAME
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsctxutils/group/bld.inf	Tue Jan 26 11:48:23 2010 +0200
@@ -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: 
+*
+*/
+
+#include <platform_paths.hrh>
+
+PRJ_EXPORTS
+../inc/tsproplistener.h         |../../inc/tsproplistener.h
+../inc/tscenreplistener.h       |../../inc/tscenreplistener.h
+
+PRJ_MMPFILES
+tscontextservicesutils.mmp
+
+PRJ_TESTMMPFILES
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsctxutils/group/tscontextservicesutils.mmp	Tue Jan 26 11:48:23 2010 +0200
@@ -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: 
+*
+*/
+
+#include <platform_paths.hrh>
+#include <data_caging_paths.hrh>
+
+TARGET          tscontextservicesutils.dll
+TARGETTYPE      dll
+UID             0x1000008d
+
+CAPABILITY       CAP_GENERAL_DLL  
+VENDORID         VID_DEFAULT
+
+USERINCLUDE     ../inc
+USERINCLUDE     ../../trace
+
+SOURCEPATH      ../src
+SOURCE          tsproplistener.cpp
+SOURCE          tscenreplistener.cpp
+
+APP_LAYER_SYSTEMINCLUDE
+
+LIBRARY         euser.lib  
+LIBRARY         centralrepository.lib
+
+DEBUGLIBRARY    flogger.lib
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsctxutils/inc/tscenreplistener.h	Tue Jan 26 11:48:23 2010 +0200
@@ -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: 
+*
+*/
+
+#ifndef CTSCENREPLISTENER_H
+#define CTSCENREPLISTENER_H
+
+#include <e32base.h>
+
+class CRepository;
+
+/**
+ * Observer interface for getting notifications about a cenrep key change.
+ */
+class MTsCenrepChangeObserver
+    {
+public:
+    virtual void CenrepChanged( TUint32 aKey, TInt aNewValue ) = 0;
+    };
+
+/**
+ * Class to get notifications about changes to a cenrep key.
+ */
+NONSHARABLE_CLASS( CTsCenrepListener ) : public CActive
+    {
+public:
+    /**
+     * Fist step constructor
+     */
+    IMPORT_C static CTsCenrepListener* NewL(const TUid& aRep, TUint32 aKey,
+                                            MTsCenrepChangeObserver& aObserver);
+    
+    /**
+     * Fist step constructor
+     */
+    IMPORT_C static CTsCenrepListener* NewLC(const TUid& aRep, TUint32 aKey,
+                                             MTsCenrepChangeObserver& aObserver);
+    
+    /**
+     * Destructor.
+     */
+    IMPORT_C ~CTsCenrepListener();
+    
+    /**
+     * Returns the current value of the watched key.
+     */
+    IMPORT_C TInt Value();
+    
+private:
+    /**
+     * Constructor.
+     * Starts listening for the key.
+     */
+    CTsCenrepListener(TUint32 aKey,
+        MTsCenrepChangeObserver& aObserver );
+    
+    /**
+     * Second step constructor 
+     */
+    void ConstructL(const TUid& aRep);
+    
+    void DoCancel();
+    void RunL(); 
+    TInt RunError( TInt aError );
+    
+    MTsCenrepChangeObserver& iObserver;
+    CRepository* iRep;
+    TUint32 iKey;
+    };
+    
+#endif /*CTSCENREPLISTENER_H*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsctxutils/inc/tsproplistener.h	Tue Jan 26 11:48:23 2010 +0200
@@ -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 CTSPROPERTYLISTENER_H
+#define CTSPROPERTYLISTENER_H
+
+#include <e32base.h>
+#include <e32property.h>
+
+/**
+ * Observer interface for getting notifications about a P&S property change.
+ */
+class MTsPropertyChangeObserver
+    {
+public:
+    virtual void PropertyChanged( TUid aCategory, TUint aKey ) = 0;
+    };
+
+/**
+ * Class to get notifications about changes to a P&S property.
+ */
+NONSHARABLE_CLASS( CTsPropertyListener ) : public CActive
+    {
+public:
+    /**
+     * Constructor.
+     * Starts listening for the property with the given category/key.
+     */
+    IMPORT_C CTsPropertyListener( TUid aCategory,
+        TUint aKey, MTsPropertyChangeObserver& aObserver );
+        
+    /**
+     * Destructor.
+    */
+    IMPORT_C ~CTsPropertyListener();
+    
+private:
+    void DoCancel();
+    void RunL(); 
+    TInt RunError( TInt aError );
+
+    MTsPropertyChangeObserver& iObserver;
+    RProperty iProperty;
+    TUid iCategory;
+    TUint iKey;
+    };
+
+#endif /*CTSPROPERTYLISTENER_H*/
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsctxutils/src/tscenreplistener.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,113 @@
+/*
+* 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 <e32cmn.h>
+#include <centralrepository.h>
+
+#include "tscenreplistener.h"
+// -----------------------------------------------------------------------------
+// CTsCenrepListener::NewL
+// -----------------------------------------------------------------------------
+EXPORT_C CTsCenrepListener* CTsCenrepListener::NewL(const TUid& aRep, TUint32 aKey,
+                                   MTsCenrepChangeObserver& aObserver)
+    {
+    CTsCenrepListener* self = CTsCenrepListener::NewLC(aRep, aKey, aObserver);
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CTsCenrepListener::NewLC
+// -----------------------------------------------------------------------------
+EXPORT_C CTsCenrepListener* CTsCenrepListener::NewLC(const TUid& aRep, TUint32 aKey,
+                                       MTsCenrepChangeObserver& aObserver)
+    {
+    CTsCenrepListener *self = new(ELeave) CTsCenrepListener(aKey, aObserver);
+    CleanupStack::PushL(self);
+    self->ConstructL(aRep);
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CTsCenrepListener::CTsCenrepListener
+// -----------------------------------------------------------------------------
+CTsCenrepListener::CTsCenrepListener(TUint32 aKey, 
+                                     MTsCenrepChangeObserver& aObserver)
+: CActive( CActive::EPriorityStandard ), iObserver( aObserver ), iKey( aKey )
+    {
+    CActiveScheduler::Add(this);
+    }
+
+// -----------------------------------------------------------------------------
+// CTsCenrepListener::ConstructL
+// -----------------------------------------------------------------------------
+void CTsCenrepListener::ConstructL(const TUid& aRep)
+    {
+    iRep = CRepository::NewL( aRep );
+    iRep->NotifyRequest( iKey, iStatus );
+    SetActive();
+    }
+
+// -----------------------------------------------------------------------------
+// CTsCenrepListener::~CTsCenrepListener
+// -----------------------------------------------------------------------------
+EXPORT_C CTsCenrepListener::~CTsCenrepListener()
+    {
+    Cancel();
+    delete iRep;
+    }
+
+// -----------------------------------------------------------------------------
+// CTsCenrepListener::DoCancel
+// -----------------------------------------------------------------------------
+void CTsCenrepListener::DoCancel()
+    {
+    iRep->NotifyCancelAll();
+    }
+
+// -----------------------------------------------------------------------------
+// CTsCenrepListener::RunL
+// -----------------------------------------------------------------------------
+void CTsCenrepListener::RunL()
+    {
+    if ( iStatus.Int() != KErrCancel )
+        {
+        iObserver.CenrepChanged( iKey, Value() );
+        iRep->NotifyRequest( iKey, iStatus );
+        SetActive();
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CTsCenrepListener::RunError
+// -----------------------------------------------------------------------------
+TInt CTsCenrepListener::RunError( TInt /*aError*/ )
+    {
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CTsCenrepListener::Value
+// -----------------------------------------------------------------------------
+EXPORT_C TInt CTsCenrepListener::Value()
+    {
+    TInt val = 0;
+    iRep->Get( iKey, val );
+    return val;
+    }
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsctxutils/src/tsproplistener.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -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: 
+*
+*/
+
+#include <e32cmn.h>
+#include "tsproplistener.h"
+
+// --------------------------------------------------------------------------
+// CTsPropertyListener::CTsPropertyListener
+// --------------------------------------------------------------------------
+//
+EXPORT_C CTsPropertyListener::CTsPropertyListener(
+        TUid aCategory, TUint aKey, MTsPropertyChangeObserver& aObserver )
+    : CActive( CActive::EPriorityStandard),
+        iObserver( aObserver ), iCategory( aCategory ), iKey( aKey )
+    {
+    CActiveScheduler::Add( this );
+    TInt err = iProperty.Attach( iCategory, iKey );
+    if ( err == KErrNone )
+        {
+        iProperty.Subscribe( iStatus );
+        SetActive();
+        }
+    }
+
+// --------------------------------------------------------------------------
+// CTsPropertyListener::~CTsPropertyListener
+// --------------------------------------------------------------------------
+//
+EXPORT_C CTsPropertyListener::~CTsPropertyListener()
+    {
+    Cancel();
+    iProperty.Close();
+    }
+
+// --------------------------------------------------------------------------
+// CTsPropertyListener::DoCancel
+// --------------------------------------------------------------------------
+//
+void CTsPropertyListener::DoCancel()
+    {
+    iProperty.Cancel();
+    }
+    
+// --------------------------------------------------------------------------
+// CTsPropertyListener::RunL
+// --------------------------------------------------------------------------
+//
+void CTsPropertyListener::RunL()
+    {
+    if ( iStatus.Int() != KErrCancel ) // when cancelling the subscribe it completes with KErrCancel
+        {
+        iObserver.PropertyChanged( iCategory, iKey );
+        iProperty.Subscribe( iStatus );
+        SetActive();
+        }
+    }    
+
+// --------------------------------------------------------------------------
+// CTsPropertyListener::RunError
+// --------------------------------------------------------------------------
+//
+TInt CTsPropertyListener::RunError( TInt /*aError*/ )
+    {
+    iProperty.Subscribe( iStatus );
+    SetActive();
+    return KErrNone;
+    }
+    
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswpreviewprovider/bwins/tspreviewprovideru.def	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,10 @@
+EXPORTS
+	??1CTsFastSwapPreviewProvider@@UAE@XZ @ 1 NONAME ; CTsFastSwapPreviewProvider::~CTsFastSwapPreviewProvider(void)
+	?TakePreview@CTsFastSwapPreviewProvider@@QAEHXZ @ 2 NONAME ; int CTsFastSwapPreviewProvider::TakePreview(void)
+	?AckPreview@CTsFastSwapPreviewProvider@@QAEXH@Z @ 3 NONAME ; void CTsFastSwapPreviewProvider::AckPreview(int)
+	?ChangeScreen@CTsFastSwapPreviewProvider@@QAEHH@Z @ 4 NONAME ; int CTsFastSwapPreviewProvider::ChangeScreen(int)
+	?NewL@CTsFastSwapPreviewProvider@@SAPAV1@AAVMTsFastSwapPreviewObserver@@@Z @ 5 NONAME ; class CTsFastSwapPreviewProvider * CTsFastSwapPreviewProvider::NewL(class MTsFastSwapPreviewObserver &)
+	?Register@CTsFastSwapPreviewProvider@@QAEHH@Z @ 6 NONAME ; int CTsFastSwapPreviewProvider::Register(int)
+	?SetPreviewParam@CTsFastSwapPreviewProvider@@QAEHABVTSize@@W4TDisplayMode@@@Z @ 7 NONAME ; int CTsFastSwapPreviewProvider::SetPreviewParam(class TSize const &, enum TDisplayMode)
+	?Unregister@CTsFastSwapPreviewProvider@@QAEHH@Z @ 8 NONAME ; int CTsFastSwapPreviewProvider::Unregister(int)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswpreviewprovider/eabi/tspreviewprovideru.def	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,12 @@
+EXPORTS
+	_ZN26CTsFastSwapPreviewProvider10AckPreviewEi @ 1 NONAME
+	_ZN26CTsFastSwapPreviewProvider10UnregisterEi @ 2 NONAME
+	_ZN26CTsFastSwapPreviewProvider11TakePreviewEv @ 3 NONAME
+	_ZN26CTsFastSwapPreviewProvider12ChangeScreenEi @ 4 NONAME
+	_ZN26CTsFastSwapPreviewProvider15SetPreviewParamERK5TSize12TDisplayMode @ 5 NONAME
+	_ZN26CTsFastSwapPreviewProvider4NewLER26MTsFastSwapPreviewObserver @ 6 NONAME
+	_ZN26CTsFastSwapPreviewProvider8RegisterEi @ 7 NONAME
+	_ZN26CTsFastSwapPreviewProviderD0Ev @ 8 NONAME
+	_ZN26CTsFastSwapPreviewProviderD1Ev @ 9 NONAME
+	_ZN26CTsFastSwapPreviewProviderD2Ev @ 10 NONAME
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswpreviewprovider/group/bld.inf	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,31 @@
+/*
+* 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:  bld.inf
+*
+*/
+
+#include <platform_paths.hrh>
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_EXPORTS
+../rom/tsfastswappreviewprovider.iby    CORE_MW_LAYER_IBY_EXPORT_PATH(tsfastswappreviewprovider.iby)
+../inc/tspreviewprovider.h |../../inc/tspreviewprovider.h
+../inc/tspreviewobserver.h |../../inc/tspreviewobserver.h
+
+PRJ_MMPFILES
+previewprovider.mmp
+
+#include "../wsplugin/group/bld.inf"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswpreviewprovider/group/previewprovider.mmp	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,41 @@
+/*
+* 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:  MMP file for tspreviewprovider dll
+*
+*/
+
+
+#include <platform_paths.hrh>
+#include <defaultcaps.hrh>
+
+TARGET         tspreviewprovider.dll
+TARGETTYPE     DLL 
+UID            0x1000008D 0x20016BEB
+CAPABILITY     CAP_CLIENT_DLL
+VENDORID       VID_DEFAULT
+
+USERINCLUDE    ../inc
+USERINCLUDE    ../../trace
+
+MW_LAYER_SYSTEMINCLUDE
+
+SOURCEPATH     ../src
+SOURCE         tspreviewprovider.cpp
+SOURCE         tspreviewproviderclient.cpp
+SOURCE         tspropertylistener.cpp
+
+LIBRARY        euser.lib
+LIBRARY        ws32.lib
+LIBRARY        estor.lib 
+DEBUGLIBRARY   flogger.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswpreviewprovider/inc/previewmsg.h	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,45 @@
+/*
+* 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:  Message types for preview plugin
+*
+*/
+
+
+#ifndef PREVIEWMSG_H
+#define PREVIEWMSG_H
+
+namespace NPreviewMsg
+    {
+    /**
+     * Messages that are sent between PreviewProviderClient and PreviewProvider
+     * ECOM plugin via window server. 
+     */
+    enum 
+        {
+        // From PreviewProviderClient to PreviewProvider ECOM plugin. 
+        ENone,
+        ERegister,
+        EUnregister,
+        EChangeScreen,
+        ESetPreviewParam,
+        ETakePreview,
+        
+        // From PreviewProvider ECOM plugin to PreviewProviderClient. 
+        EPreviewReady,
+        EAckPreviewReady,
+        EUnregisterReady
+        };
+    }
+
+#endif // PREVIEWMSG_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswpreviewprovider/inc/previewproviderlogging.h	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,32 @@
+/*
+* 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:  Header file used for logging
+*
+*/
+
+
+#ifndef PREVIEWPROVIDERLOGGING_H
+#define PREVIEWPROVIDERLOGGING_H
+
+_LIT( KTsLogFile, "tspreviewprovider.txt" );
+_LIT( KTsLogPath, "tspreviewprovider" );
+#define _TSLOG_LOG_COMPONENT_ID 6715359
+//#define _TSLOG_RDEBUG
+
+#include <e32debug.h>
+#include "tslogging.h"
+
+#endif // PREVIEWPROVIDERLOGGING_H
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswpreviewprovider/inc/tsfastswappreviewproviderlogging.h	Tue Jan 26 11:48:23 2010 +0200
@@ -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:  Defines logs for tsfastswappreviewprovider
+*
+*/
+
+
+#ifdef _DEBUG // codescanner::ifpreprocessor
+_LIT( KTsLogFile, "tsfastswappreviewprovider.txt" );
+_LIT( KTsLogPath, "taskswitcher" );
+#define _TSLOG_LOG_COMPONENT_ID 0x20016BEC
+
+#endif
+#include "tslogging.h"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswpreviewprovider/inc/tspreviewobserver.h	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,59 @@
+/*
+* 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:  Preview provider API
+*
+*/
+
+
+#ifndef TSPREVIEWOBSERVER_H
+#define TSPREVIEWOBSERVER_H
+
+// INCLUDES
+#include <e32base.h>
+
+/**
+ * Observer for preview screenshot changes. Client must implement this and 
+ * register itself when calling CTsFastSwapPreviewProvider::NewL. Callback
+ * methods are called whenever there is a new preview screenshot taken from
+ * the applications or when an application is exited.
+ *
+ * @see CTsFastSwapPreviewProvider
+ */
+class MTsFastSwapPreviewObserver
+    {
+public:
+
+    /**
+     * Called when application has changed and screenshot has been taken. 
+     * New sceenshots will be taken and provided to the client via this 
+     * callback every time the application goes to background.
+     *
+     * @param aWgId Window group id of the application.
+     * @param aFbsHandle Handle to screenshot CFbsBitmap.
+     */         
+    virtual void HandleFswPpApplicationChange( TInt aWgId, TInt aFbsHandle ) = 0;
+    
+    /**
+     * Called when application has been exited. Client can free the resources
+     * related to aWgId (for example a copied bitmap) since the application is
+     * no more running.
+     *
+     * @param aWgId Window group id of the application.
+     */         
+    virtual void HandleFswPpApplicationUnregistered( TInt aWgId ) = 0;    
+    };
+
+#endif // TSPREVIEWOBSERVER_H
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswpreviewprovider/inc/tspreviewprovider.h	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,129 @@
+/*
+* 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:  Preview provider API
+*
+*/
+
+
+#ifndef TSFASTSWAPPREVIEWPROVIDER_H
+#define TSFASTSWAPPREVIEWPROVIDER_H
+
+// INCLUDES
+#include <e32base.h>
+#include <gdi.h>
+
+// FORWARD DECLARATIONS
+class CTsFastSwapPreviewProviderClient;
+class MTsFastSwapPreviewObserver;
+
+/**
+ * Preview provider API class. Applications (window groups) must be
+ * registered before screenshots can be received. Also, closed apps
+ * should be unregistered to save resources.
+ * TakePreview() can be called to take a screenshot right away.
+ * A client needing notifications has to create an instance
+ * so that screenshots can be delivered to it via MTsFastSwapPreviewObserver.
+ *
+ * @see MTsFastSwapPreviewObserver
+ * @lib tspreviewprovider.lib
+ */
+NONSHARABLE_CLASS( CTsFastSwapPreviewProvider ) : public CBase
+    {
+public:
+
+    /**
+     * Two phased constructor.
+     * @see MTsFastSwapPreviewObserver
+     *
+     * @param aObs Observer.     
+     */   
+    IMPORT_C static CTsFastSwapPreviewProvider* NewL(
+        MTsFastSwapPreviewObserver& aObs );
+    
+    /**
+     * Destructor.
+     */   
+    IMPORT_C ~CTsFastSwapPreviewProvider();
+    
+    /**
+     * Registers window group for screenshots.
+     *
+     * @param aWgId Window group id.
+     * @return Error code.     
+     */       
+    IMPORT_C TInt Register( TInt aWgId );
+    
+    /**
+     * Unregisters window group.
+     *
+     * @param aWgId Window group id.
+     * @return Error code.     
+     */       
+    IMPORT_C TInt Unregister( TInt aWgId );
+    
+    /**
+     * Change screen.
+     *
+     * @param aScreenId Screen id.
+     * @return Error code.     
+     */       
+    IMPORT_C TInt ChangeScreen( TInt aScreenId );
+    
+    /**
+     * Defines the dimensions and format of the screenshots.
+     * @see TDisplayMode.
+     *
+     * @param aSize Size to be used for the preview screenshots.
+     * @param aMode Color depth to be used for the preview screenshots.
+     * @return Error code.
+     */       
+    IMPORT_C TInt SetPreviewParam( const TSize& aSize, TDisplayMode aMode );
+    
+    /**
+     * Takes a screenshot.
+     * 
+     * @return Error code.     
+     */       
+    IMPORT_C TInt TakePreview();
+    
+    /**
+     * Ack preview ready message
+     */
+    IMPORT_C void AckPreview( TInt aPreviewId );
+    
+private:
+
+    /**
+     * C++ constructor.
+     */   
+    CTsFastSwapPreviewProvider();
+    
+    /**
+     * 2nd phase constructor.
+     *
+     * @param aObs Observer.
+     */       
+    void ConstructL( MTsFastSwapPreviewObserver& aObs );
+       
+private:    
+
+    /**
+     * Implementation class.
+     */   
+    CTsFastSwapPreviewProviderClient* iClient;
+    };
+
+#endif // TSFASTSWAPPREVIEWPROVIDER_H
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswpreviewprovider/inc/tspreviewproviderclient.h	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,47 @@
+/*
+* 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".
+*/
+
+#ifndef TSFASTSWAPPREVIEWPROVIDERCLIENT_H
+#define TSFASTSWAPPREVIEWPROVIDERCLIENT_H
+
+#include <e32base.h>
+#include <w32std.h>
+#include "tspreviewobserver.h"
+
+class CTsPropertyListener;
+
+/**
+ * CTsFastSwapPreviewProviderClient
+ */
+NONSHARABLE_CLASS( CTsFastSwapPreviewProviderClient ) : public CWsGraphic
+    {
+public:
+    CTsFastSwapPreviewProviderClient( MTsFastSwapPreviewObserver& aObs );
+    void ConstructL();
+    void Register( TInt aWgId );
+    void Unregister( TInt aWgId );
+    void ChangeScreen( TInt aScreenNo );
+    void SetPreviewParam( const TSize& aSize, TDisplayMode aMode );
+    void TakePreview();
+    void AckPreview( TInt aPreviewId );
+    virtual ~CTsFastSwapPreviewProviderClient();
+private:
+    void HandleMessage( const TDesC8& aData );
+    void OnReplace();
+private:
+    void DoHandleMessageL( const TDesC8& aData );
+    void SetProperties( TInt aHandle, TInt aWgId, TInt aOp );
+private:
+    MTsFastSwapPreviewObserver& iObs;
+    CTsPropertyListener* iListener;
+    };
+
+#endif // TSPREVIEWPROVIDERCLIENT_H
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswpreviewprovider/inc/tspropertylistener.h	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,70 @@
+/*
+* 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".
+*/
+
+
+#ifndef TSPROPERTYLISTENER_H
+#define TSPROPERTYLISTENER_H
+
+#include <e32base.h>
+#include <e32property.h>
+
+#include "tspreviewobserver.h"
+
+// Publish & subscribe UID (akncapserver.exe SID so that it can define the keys)
+const TUid KPSUidPreviewProvider = { 0x10207218 };
+
+// P&S keys
+const TUint32 KPSKeyWgId = 0x20016BE1;
+const TUint32 KPSKeyFbsBitmapId = 0x20016BE2;
+const TUint32 KPSKeyOperation = 0x20016BE3;
+/**
+ * Operation which will be done after P&S keys have changed.
+ */
+enum TPreviewOperation
+    {
+    EOperationNone,
+    EOperationUnregister,
+    EOperationBitmapUpdated
+    };
+
+/**
+ * CPropertyListener
+ */
+NONSHARABLE_CLASS( CTsPropertyListener ) : public CActive
+    {
+public:
+    static CTsPropertyListener* NewL( MTsFastSwapPreviewObserver& aObs );
+    virtual ~CTsPropertyListener();
+    
+protected:
+    CTsPropertyListener( MTsFastSwapPreviewObserver& aObs );
+    void ConstructL();  
+
+private: // From CActive
+    void RunL();
+    void DoCancel();
+    
+private:    
+    void ReadPropertiesL();
+    void DefinePropertyL( TInt aPSKey ); 
+    void Subscribe();
+
+private:
+    MTsFastSwapPreviewObserver& iObs;
+    RProperty iProperty;
+   
+    TInt iWgId;
+    TInt iFbsBitmapId;
+    
+    TPreviewOperation iOperation;
+    };
+
+#endif // TSPROPERTYLISTENER_H
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswpreviewprovider/rom/tsfastswappreviewprovider.iby	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,28 @@
+/*
+* 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:  IBY file
+*
+*/
+
+
+#ifndef TSFASTSWAPPREVIEWPROVIDER_IBY
+#define TSFASTSWAPPREVIEWPROVIDER_IBY
+
+#include <data_caging_paths_for_iby.hrh>
+
+// fsw preview
+ECOM_PLUGIN( 20016BEC.DLL, 20016BEC.rsc )
+file=ABI_DIR/BUILD_DIR/tspreviewprovider.dll    SHARED_LIB_DIR/tspreviewprovider.dll
+
+#endif // TSFASTSWAPPREVIEWPROVIDER_IBY
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswpreviewprovider/src/tspreviewprovider.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,151 @@
+/*
+* 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:  Preview provider API
+*
+*/
+
+
+#include "tspreviewprovider.h"
+#include "previewproviderlogging.h"
+#include "tspreviewproviderclient.h"
+
+// --------------------------------------------------------------------------
+// CTsFastSwapPreviewProvider::NewL
+// --------------------------------------------------------------------------
+//
+EXPORT_C CTsFastSwapPreviewProvider* CTsFastSwapPreviewProvider::NewL(
+        MTsFastSwapPreviewObserver& aObs)
+    {
+    CTsFastSwapPreviewProvider* p = new (ELeave) CTsFastSwapPreviewProvider();
+    CleanupStack::PushL( p );
+    p->ConstructL( aObs );
+    CleanupStack::Pop( p );
+    return p;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFastSwapPreviewProvider::~CTsFastSwapPreviewProvider
+// --------------------------------------------------------------------------
+//    
+EXPORT_C CTsFastSwapPreviewProvider::~CTsFastSwapPreviewProvider()
+    {
+    if ( iClient )
+        {
+        iClient->Destroy();
+        }
+    delete iClient;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFastSwapPreviewProvider::Register
+// --------------------------------------------------------------------------
+//    
+EXPORT_C TInt CTsFastSwapPreviewProvider::Register( TInt aWgId )
+    {
+    iClient->Register( aWgId );
+    return KErrNone;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFastSwapPreviewProvider::Unregister
+// --------------------------------------------------------------------------
+//    
+EXPORT_C TInt CTsFastSwapPreviewProvider::Unregister( TInt aWgId )    
+    {
+    iClient->Unregister( aWgId );
+    return KErrNone;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFastSwapPreviewProvider::ChangeScreen
+// --------------------------------------------------------------------------
+//    
+EXPORT_C TInt CTsFastSwapPreviewProvider::ChangeScreen( TInt aScreenId )
+    {
+    iClient->ChangeScreen( aScreenId );
+    return KErrNone;
+    }    
+
+// --------------------------------------------------------------------------
+// CTsFastSwapPreviewProvider::SetPreviewParam
+// --------------------------------------------------------------------------
+//
+EXPORT_C TInt CTsFastSwapPreviewProvider::SetPreviewParam(const TSize& aSize,
+        TDisplayMode aMode)
+    {
+    TSLOG_CONTEXT( SetPreviewParam, TSLOG_LOCAL );
+    TSLOG_IN();
+    
+    TInt error( KErrNone );
+    
+    if ( aMode == ENone || aMode == EColor64K )
+        {
+        iClient->SetPreviewParam( aSize, aMode );        
+        }
+    else
+        {
+        error = KErrNotSupported;
+        }
+   
+    TSLOG_OUT();
+    return error;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFastSwapPreviewProvider::TakePreview
+// --------------------------------------------------------------------------
+//    
+EXPORT_C TInt CTsFastSwapPreviewProvider::TakePreview()
+    {
+    // Reset timer for screensaver (dismiss screensaver)
+    User::ResetInactivityTime(); 
+           
+    iClient->TakePreview();
+    return KErrNone;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFastSwapPreviewProvider::AckPreview
+// --------------------------------------------------------------------------
+//
+EXPORT_C void CTsFastSwapPreviewProvider::AckPreview( TInt aPreviewId )
+    {
+    iClient->AckPreview( aPreviewId );
+    }
+
+// --------------------------------------------------------------------------
+// CTsFastSwapPreviewProvider::CTsFastSwapPreviewProvider
+// --------------------------------------------------------------------------
+//    
+CTsFastSwapPreviewProvider::CTsFastSwapPreviewProvider()
+    {
+    }
+
+// --------------------------------------------------------------------------
+// CTsFastSwapPreviewProvider::ConstructL
+// --------------------------------------------------------------------------
+//    
+void CTsFastSwapPreviewProvider::ConstructL( MTsFastSwapPreviewObserver& aObs )
+    {
+    TSLOG_CONTEXT( ConstructL, TSLOG_LOCAL );
+    TSLOG_IN();
+    
+    iClient = new ( ELeave ) CTsFastSwapPreviewProviderClient( aObs );
+    iClient->ConstructL();
+    
+    TSLOG_OUT();
+    }
+
+// End of file
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswpreviewprovider/src/tspreviewproviderclient.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,236 @@
+/*
+* 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".
+*
+*/
+
+#include "tspreviewproviderclient.h"
+#include "previewproviderlogging.h"
+#include "tspropertylistener.h"
+#include "previewmsg.h"
+
+#include <s32mem.h>
+
+#define SZ( x ) ( sizeof( x ) / sizeof( TInt ) )
+
+
+// --------------------------------------------------------------------------
+// CTsFastSwapPreviewProviderClient::CTsFastSwapPreviewProviderClient
+// --------------------------------------------------------------------------
+//
+CTsFastSwapPreviewProviderClient::CTsFastSwapPreviewProviderClient(
+        MTsFastSwapPreviewObserver& aObs ) : iObs( aObs )
+    {
+    }
+
+// --------------------------------------------------------------------------
+// CTsFastSwapPreviewProviderClient::~CTsFastSwapPreviewProviderClient
+// --------------------------------------------------------------------------
+//
+CTsFastSwapPreviewProviderClient::~CTsFastSwapPreviewProviderClient()
+    {
+    delete iListener;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFastSwapPreviewProviderClient::ConstructL
+// --------------------------------------------------------------------------
+//
+void CTsFastSwapPreviewProviderClient::ConstructL()
+    {
+    TSLOG_CONTEXT( ConstructL, TSLOG_LOCAL );
+    TSLOG_IN();
+
+    const TUid id = { 0x20016BEC };
+    BaseConstructL( id, KNullDesC8 );
+    iListener = CTsPropertyListener::NewL( iObs );
+    
+    TSLOG_OUT();        
+    }    
+
+// --------------------------------------------------------------------------
+// CTsFastSwapPreviewProviderClient::Register
+// --------------------------------------------------------------------------
+//    
+void CTsFastSwapPreviewProviderClient::Register( TInt aWgId )
+    {
+    TSLOG_CONTEXT( Register, TSLOG_LOCAL );
+    TSLOG_IN();
+    
+    const TInt msg[] = {
+        NPreviewMsg::ERegister,
+        aWgId
+        };
+    TPckgC<TInt[SZ(msg)]> buf(msg);
+    SendMessage(buf);
+    Flush();
+
+    TSLOG_OUT();
+    }
+
+// --------------------------------------------------------------------------
+// CTsFastSwapPreviewProviderClient::Unregister
+// --------------------------------------------------------------------------
+//    
+void CTsFastSwapPreviewProviderClient::Unregister( TInt aWgId )
+    {
+    TSLOG_CONTEXT( Unregister, TSLOG_LOCAL );
+    TSLOG_IN();
+
+    const TInt msg[] = {
+        NPreviewMsg::EUnregister,
+        aWgId
+        };
+    TPckgC<TInt[SZ(msg)]> buf(msg);
+    SendMessage(buf);
+    Flush();
+    
+    TSLOG_OUT();
+    }
+
+// --------------------------------------------------------------------------
+// CTsFastSwapPreviewProviderClient::ChangeScreen
+// --------------------------------------------------------------------------
+//    
+void CTsFastSwapPreviewProviderClient::ChangeScreen( TInt aScreenNo )
+    {
+    TSLOG_CONTEXT( ChangeScreen, TSLOG_LOCAL );
+    TSLOG_IN();
+    
+    const TInt msg[] = {
+        NPreviewMsg::EChangeScreen,
+        aScreenNo
+        };
+    TPckgC<TInt[SZ(msg)]> buf(msg);
+    SendMessage(buf);
+    Flush();
+    
+    TSLOG_OUT();     
+    }
+
+// --------------------------------------------------------------------------
+// CTsFastSwapPreviewProviderClient::SetPreviewParam
+// --------------------------------------------------------------------------
+//    
+void CTsFastSwapPreviewProviderClient::SetPreviewParam(const TSize& aSize,
+        TDisplayMode aMode)
+    {
+    TSLOG_CONTEXT( SetPreviewParam, TSLOG_LOCAL );
+    TSLOG_IN();
+    
+    const TInt msg[] = {
+        NPreviewMsg::ESetPreviewParam,
+        aSize.iWidth,
+        aSize.iHeight,
+        static_cast<TInt>(aMode)
+        };
+    TPckgC<TInt[SZ(msg)]> buf(msg);
+    SendMessage(buf);
+    Flush();
+
+    TSLOG_OUT();
+    }
+
+// --------------------------------------------------------------------------
+// CTsFastSwapPreviewProviderClient::TakePreview 
+// --------------------------------------------------------------------------
+//    
+void CTsFastSwapPreviewProviderClient::TakePreview()
+    {
+    TSLOG_CONTEXT( TakePreview, TSLOG_LOCAL );
+    TSLOG_IN();
+    
+    TPckgC<TInt> buf(NPreviewMsg::ETakePreview);
+    SendMessage(buf);
+    Flush();
+    
+    TSLOG_OUT();      
+    }
+
+// --------------------------------------------------------------------------
+// CTsFastSwapPreviewProviderClient::AckPreview 
+// --------------------------------------------------------------------------
+//
+void CTsFastSwapPreviewProviderClient::AckPreview( TInt aPreviwId )
+    {
+    TSLOG_CONTEXT( TakePreview, TSLOG_LOCAL );
+    TSLOG_IN();
+    
+    const TInt msg[] = { NPreviewMsg::EAckPreviewReady,
+                         aPreviwId };
+    TPckgC<TInt[SZ(msg)]> buf(msg);
+    SendMessage(buf);
+    Flush();
+    
+    TSLOG_OUT();
+    }
+
+// --------------------------------------------------------------------------
+// CTsFastSwapPreviewProviderClient::HandleMessage
+// --------------------------------------------------------------------------
+//    
+void CTsFastSwapPreviewProviderClient::HandleMessage( const TDesC8& aData )
+    {
+    TRAP_IGNORE(DoHandleMessageL(aData));
+    }
+
+// --------------------------------------------------------------------------
+// CTsFastSwapPreviewProviderClient::DoHandleMessageL
+// --------------------------------------------------------------------------
+//
+void CTsFastSwapPreviewProviderClient::DoHandleMessageL( const TDesC8& aData )
+    {
+    TSLOG_CONTEXT( DoHandleMessageL, TSLOG_LOCAL );
+    TSLOG_IN();
+    
+    RDesReadStream in( aData );
+    TInt message = in.ReadInt32L();
+    switch ( message )
+        {
+        case NPreviewMsg::EPreviewReady:
+            {
+            const TInt id = in.ReadInt32L();
+            const TInt handle = in.ReadInt32L();    
+            SetProperties( handle, id, EOperationBitmapUpdated );
+            }
+            break;
+        case NPreviewMsg::EUnregisterReady:
+            {
+            const TInt id = in.ReadInt32L();
+            const TInt handle = in.ReadInt32L();
+            SetProperties( handle, id, EOperationUnregister );
+            }
+            break;
+        }
+
+    TSLOG_OUT();
+    }
+
+// --------------------------------------------------------------------------
+// CTsFastSwapPreviewProviderClient::SetProperties
+// --------------------------------------------------------------------------
+//
+void CTsFastSwapPreviewProviderClient::SetProperties(TInt aHandle, TInt aWgId,
+        TInt aOp)
+    {
+    // Notify CPropertyListener via P&S
+    RProperty::Set( KPSUidPreviewProvider, KPSKeyFbsBitmapId, aHandle );
+    RProperty::Set( KPSUidPreviewProvider, KPSKeyOperation, aOp );
+    // KPSKeyWgId should be notified first since that is being listened 
+    // by CPropertyListener 
+    RProperty::Set( KPSUidPreviewProvider, KPSKeyWgId, aWgId );    
+    }
+
+// --------------------------------------------------------------------------
+// CTsFastSwapPreviewProviderClient::OnReplace
+// --------------------------------------------------------------------------
+//
+void CTsFastSwapPreviewProviderClient::OnReplace()
+    {
+    }
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswpreviewprovider/src/tspropertylistener.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,147 @@
+/*
+* 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".
+*/
+
+#include "tspropertylistener.h"
+#include "previewproviderlogging.h"
+
+
+
+// --------------------------------------------------------------------------
+// CTsPropertyListener::~CTsPropertyListener
+// --------------------------------------------------------------------------
+//
+CTsPropertyListener::~CTsPropertyListener()
+    {
+    Cancel();
+    iProperty.Close();
+    }
+
+// --------------------------------------------------------------------------
+// CTsPropertyListener::CTsPropertyListener
+// --------------------------------------------------------------------------
+//
+CTsPropertyListener::CTsPropertyListener( MTsFastSwapPreviewObserver& aObs ) : 
+    CActive( CActive::EPriorityHigh ), iObs( aObs )
+    {
+    }
+
+// --------------------------------------------------------------------------
+// CTsPropertyListener::NewL
+// --------------------------------------------------------------------------
+//
+CTsPropertyListener* CTsPropertyListener::NewL( MTsFastSwapPreviewObserver& aObs )
+    {
+    CTsPropertyListener* self = new ( ELeave ) CTsPropertyListener( aObs );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    return self;    
+    }
+
+// --------------------------------------------------------------------------
+// CTsPropertyListener::RunL
+// --------------------------------------------------------------------------
+//
+void CTsPropertyListener::RunL()
+    {
+    // Resubscribe before processing new value to prevent missing updates
+    Subscribe();
+    
+    // Read all properties to member variables
+    ReadPropertiesL();
+    
+    // Do the callback
+    switch( iOperation )
+        {
+        case EOperationUnregister:
+            {
+            iObs.HandleFswPpApplicationUnregistered( iWgId );
+            break;            
+            }        
+        case EOperationBitmapUpdated:
+            {
+            iObs.HandleFswPpApplicationChange( iWgId, iFbsBitmapId );
+            break;
+            }
+        default:
+            break;
+        }
+    }
+
+// --------------------------------------------------------------------------
+// CTsPropertyListener::DoCancel
+// --------------------------------------------------------------------------
+//
+void CTsPropertyListener::DoCancel()
+    {
+    iProperty.Cancel();
+    }
+
+// --------------------------------------------------------------------------
+// CTsPropertyListener::ReadProperties
+// --------------------------------------------------------------------------
+//
+void CTsPropertyListener::ReadPropertiesL()
+    {
+    // Read all properties
+    User::LeaveIfError( iProperty.Get( KPSUidPreviewProvider, KPSKeyWgId, iWgId ) );
+    User::LeaveIfError( iProperty.Get( KPSUidPreviewProvider, KPSKeyFbsBitmapId, iFbsBitmapId ) );
+    TInt operation( 0 );
+    User::LeaveIfError( iProperty.Get( KPSUidPreviewProvider, KPSKeyOperation, operation ) );
+    iOperation = static_cast<TPreviewOperation>( operation );    
+    }
+
+// --------------------------------------------------------------------------
+// CTsPropertyListener::DefinePropertyL
+// --------------------------------------------------------------------------
+//
+void CTsPropertyListener::DefinePropertyL( TInt aPSKey )
+    {
+    TInt err = RProperty::Define( KPSUidPreviewProvider, aPSKey, RProperty::EInt );
+    // Don't mind the already exists error
+    if ( err != KErrAlreadyExists && err != KErrPermissionDenied )
+        {
+        User::LeaveIfError( err );
+        }    
+    }
+
+// --------------------------------------------------------------------------
+// CTsPropertyListener::Subscribe
+// --------------------------------------------------------------------------
+//
+void CTsPropertyListener::Subscribe()
+    {
+    iProperty.Subscribe( iStatus );
+    SetActive();  
+    }
+
+// --------------------------------------------------------------------------
+// CTsPropertyListener::ConstructL
+// --------------------------------------------------------------------------
+//
+void CTsPropertyListener::ConstructL()
+    {
+    TSLOG_CONTEXT( ConstructL, TSLOG_LOCAL );
+    TSLOG_IN();
+    
+    DefinePropertyL( KPSKeyWgId );
+    DefinePropertyL( KPSKeyFbsBitmapId );
+    DefinePropertyL( KPSKeyOperation );
+    
+    User::LeaveIfError( iProperty.Attach( KPSUidPreviewProvider, KPSKeyWgId ) );
+    CActiveScheduler::Add( this );
+    
+    // initial subscription
+    Subscribe();
+    
+    TSLOG_OUT();
+    }
+
+// End of file
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswpreviewprovider/wsplugin/group/bld.inf	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,25 @@
+/*
+* 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:  bld.inf
+*
+*/
+
+
+#include <platform_paths.hrh>
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_MMPFILES
+previewprovidercrp.mmp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswpreviewprovider/wsplugin/group/previewprovidercrp.mmp	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,46 @@
+/*
+* 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:  MMP file for preview provider ECOM plugin
+*
+*/
+
+#include <platform_paths.hrh>
+#include <defaultcaps.hrh>
+
+TARGET          20016BEC.DLL
+TARGETTYPE      PLUGIN 
+UID             0x10009D8D 0x20016BEC
+CAPABILITY      CAP_ECOM_PLUGIN
+VENDORID        VID_DEFAULT
+
+OPTION_REPLACE  ARMCC --arm -O3 --cpu 6
+
+USERINCLUDE     ../inc
+USERINCLUDE     ../../inc
+USERINCLUDE     ../../../trace
+
+MW_LAYER_SYSTEMINCLUDE
+
+SOURCEPATH      ../src
+SOURCE          previewprovidercrp.cpp
+
+RESOURCE        20016BEC.rss
+
+LIBRARY         ecom.lib
+LIBRARY         euser.lib
+LIBRARY         wsgraphicdrawer.lib
+LIBRARY         fbscli.lib
+LIBRARY         estor.lib 
+LIBRARY         gdi.lib 
+DEBUGLIBRARY    flogger.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswpreviewprovider/wsplugin/inc/previewprovidercrp.h	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,178 @@
+/*
+* 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:  Preview provider ECOM plugin
+*
+*/
+
+
+#ifndef PREVIEWPROVIDERCRP_H
+#define PREVIEWPROVIDERCRP_H
+
+// INCLUDES
+#include <w32std.h>
+#include <graphics/wsgraphicdrawerinterface.h>
+#include <graphics/wsgraphicdrawer.h>
+
+// Number of screenshots used at the same time,
+// each window group change will cause a screenshot
+// to one of these, the index for the current one is
+// switched after each screenshot capture. (this is needed
+// to prevent overwriting screenshots before the client could
+// make a copy of them)
+const TInt KMaxShots = 4;
+
+/**
+ * Preview provider window server ECOM plugin class.
+ */
+NONSHARABLE_CLASS( CPreviewProviderCRP ) : public CWsGraphicDrawer, 
+                                           public MWsEventHandler 
+    {
+public:
+
+    /**
+     * Creates a new instance of the plguin.
+     *
+     * @return Created instance.
+     */ 
+    static CWsGraphicDrawer* CreateL();
+    
+    /**
+     * Destructor
+     */ 
+    ~CPreviewProviderCRP();
+    
+private:
+
+    /**
+     * From CWsGraphicDrawer.
+     *
+     * @param aGc
+     * @param aRect
+     * @param aData
+     */ 
+    void DoDraw( MWsGc& aGc, const TRect& aRect, const TDesC8& aData ) const;
+    
+    /**
+     * Handles message from PreviewProviderClient.
+     *
+     * @param aData Message data.
+     */ 
+    void HandleMessage( const TDesC8& aData );
+
+    /**
+     * 2nd phase constructor.
+     *
+     * @param aEnv
+     * @param aId
+     * @param aOwner
+     * @param aData
+     */     
+    void ConstructL( MWsGraphicDrawerEnvironment& aEnv, 
+                     const TGraphicDrawerId& aId, 
+                     MWsClient& aOwner, 
+                     const TDesC8& aData );
+    
+    /**
+     * From MWsEventHandler.
+     * 
+     * Observer for TWservCrEvent::EWindowGroupChanged to take the screenshot
+     * when application changes.
+     *
+     * @param aEvent
+     */     
+    void DoHandleEvent( const TWservCrEvent& aEvent );
+    
+private:
+
+    /**
+     * 2nd phase constructor.
+     */ 
+    void ConstructL();
+    
+    /**
+     * Handles application registration.
+     *
+     * @param aWgId Window group id.
+     */ 
+    void Register( TInt aWgId );
+    
+    /**
+     * Handler application unregistration.
+     *
+     * @param aWgId Window group id.
+     */     
+    void Unregister( TInt aWgId );
+    
+    /*
+     * Allocate resources and take screenshot
+     */
+    void ScreenshotL();
+    
+    /**
+     * Takes the screenshot.
+     */     
+    void ScreenshotL( CFbsBitmap& aBitmap );
+    
+    /**
+     * Remove bitmap reference fom list
+     */
+    void RemoveScreenshot( TInt aBitmapHandle );
+    
+    /**
+     * Remove all bitmaps overflow
+     */
+    void CheckOverflow();
+    
+    /**
+     * Handles message from PreviewProviderClient.
+     *
+     * @param aData Message data.
+     */     
+    void DoHandleMessageL( const TDesC8& aData );
+    
+    /**
+     * Notifies the PreviewProviderClient when screenshot is ready for copying.
+     */     
+    void ScaleCompleteL(const CFbsBitmap& aBitmap);
+    
+    /**
+     * Notifies the PreviewProviderClient when an application has been exited.
+     */
+    void UnregisterComplete( TInt aWgId );
+    
+    /**
+     * Uses window server front buffer to create a screenshot.
+     * @param aFront preallocated destination bitmap
+     * @param aFront Front buffer. 
+     * @param aSrcSize Size of the source front buffer in pixels.
+     * @param aSrcStride Source stride.
+     */
+    void FrontBufferScreenShot(
+        CFbsBitmap& aBitmap,
+        MWsFrontBuffer& aFront, const TSize& aSrcSize, TInt aSrcStride );  
+    
+private:
+    TInt iScreen;
+    TInt iPrevId;
+    TInt iPrevReg; // to work around the problem with wgid not set when app brought 
+                   // to foreground first time
+    RPointerArray<CFbsBitmap> iScreenshots;
+    TSize iScreenshotSize;
+    TDisplayMode iScreenshotMode;
+    RArray<TInt> iWgIds;
+    };
+
+#endif // PREVIEWPROVIDERCRP_H
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswpreviewprovider/wsplugin/inc/previewprovidercrplogging.h	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,32 @@
+/*
+* 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:  Header file used for logging
+*
+*/
+
+
+#ifndef PREVIEWPROVIDERCRPLOGGING_H
+#define PREVIEWPROVIDERCRPLOGGING_H
+
+_LIT( KTsLogFile, "tspreviewprovidercrp.txt" );
+_LIT( KTsLogPath, "tspreviewprovider" );
+#define _TSLOG_LOG_COMPONENT_ID 6715358
+//#define _TSLOG_RDEBUG
+
+#include <e32debug.h>
+#include "tslogging.h"
+
+#endif // PREVIEWPROVIDERCRPLOGGING_H
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswpreviewprovider/wsplugin/src/20016BEC.rss	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,42 @@
+/*
+* 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:  ECOM registration file
+*
+*/
+
+
+#include <ecom/registryinfo.rh>
+
+RESOURCE REGISTRY_INFO theInfo
+	{
+	dll_uid = 0x20016BEC;
+	interfaces =
+		{
+		INTERFACE_INFO
+			{
+			interface_uid = 0x10281924;
+			implementations =
+				{
+				IMPLEMENTATION_INFO
+					{
+					implementation_uid = 0x20016BEC;
+					version_no = 1;
+					display_name = "previewprovider";
+					default_data = "";
+					opaque_data = "";
+					}
+				};
+			}
+		};
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswpreviewprovider/wsplugin/src/previewprovidercrp.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,436 @@
+/*
+* 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:  Preview provider ECOM plugin
+*
+*/
+
+
+#include <bldvariant.hrh>
+#ifdef SYMBIAN_BUILD_GCE
+#define NGA
+#endif
+
+#include "previewprovidercrp.h"
+#include "previewmsg.h"
+#include "previewprovidercrplogging.h"
+#include <ecom/implementationproxy.h>
+#include <s32mem.h> //RDesReadStream
+
+#ifdef NGA
+#include <graphics/wsscreendevice.h>
+#endif
+
+// CONSTANTS
+const TInt KImpId( 0x20016BEC );
+
+// --------------------------------------------------------------------------
+// CPreviewProviderCRP::CreateL
+// --------------------------------------------------------------------------
+//
+CWsGraphicDrawer* CPreviewProviderCRP::CreateL()
+    {
+    CPreviewProviderCRP* crp = new (ELeave) CPreviewProviderCRP();
+    CleanupStack::PushL( crp );
+    crp->ConstructL();
+    CleanupStack::Pop( crp );
+    return crp;
+    }
+
+// --------------------------------------------------------------------------
+// CPreviewProviderCRP::ConstructL
+// --------------------------------------------------------------------------
+//    
+void CPreviewProviderCRP::ConstructL()
+    { 
+    }
+
+// --------------------------------------------------------------------------
+// CPreviewProviderCRP::~CPreviewProviderCRP
+// --------------------------------------------------------------------------
+//    
+CPreviewProviderCRP::~CPreviewProviderCRP()    
+    {
+    Env().UnregisterEventHandler( this );
+    iScreenshots.ResetAndDestroy();
+    iWgIds.Close();
+    }
+
+// --------------------------------------------------------------------------
+// CPreviewProviderCRP::DoDraw
+// --------------------------------------------------------------------------
+//
+void CPreviewProviderCRP::DoDraw( MWsGc& /*aGc*/, const TRect& /*aRect*/, 
+    const TDesC8& /*aData*/) const
+    {
+    //draws nothing
+    }
+
+// --------------------------------------------------------------------------
+// CPreviewProviderCRP::HandleMessage
+// --------------------------------------------------------------------------
+//    
+void CPreviewProviderCRP::HandleMessage( const TDesC8& aData )
+    {
+    TRAP_IGNORE( DoHandleMessageL( aData ) );
+    }
+    
+// --------------------------------------------------------------------------
+// CPreviewProviderCRP::DoHandleMessageL
+// --------------------------------------------------------------------------
+//    
+void CPreviewProviderCRP::DoHandleMessageL( const TDesC8& aData )
+    {  
+    TSLOG_CONTEXT( DoHandleMessageL, TSLOG_LOCAL );
+    TSLOG_IN();
+    
+    RDesReadStream in( aData );
+    switch( in.ReadInt32L() )
+        {
+        case NPreviewMsg::ERegister:
+            {
+            const TInt id = in.ReadInt32L();
+            Register( id );
+            }
+            break;
+        case NPreviewMsg::EUnregister:
+            {
+            const TInt id = in.ReadInt32L();
+            Unregister( id );
+            }
+            break;
+        case NPreviewMsg::EChangeScreen:
+            {
+            const TInt screen = in.ReadInt32L();
+            if ( Env().ScreenCount() )
+                {
+                iScreen = screen;
+                }
+            }
+            break;
+        case NPreviewMsg::ESetPreviewParam:
+            iScreenshotSize.iWidth = in.ReadInt32L();
+            iScreenshotSize.iHeight = in.ReadInt32L();
+            iScreenshotMode = static_cast<TDisplayMode>( in.ReadInt32L() );
+            break;
+        case NPreviewMsg::ETakePreview:
+            ScreenshotL();
+            break;
+        case NPreviewMsg::EAckPreviewReady:
+            RemoveScreenshot( in.ReadInt32L() );
+            break;
+        }
+    
+    TSLOG_OUT();
+    }
+
+// --------------------------------------------------------------------------
+// CPreviewProviderCRP::ConstructL
+// --------------------------------------------------------------------------
+//    
+void CPreviewProviderCRP::ConstructL( MWsGraphicDrawerEnvironment& aEnv,
+    const TGraphicDrawerId& aId, MWsClient& aOwner, const TDesC8& /*aData*/ )
+    {
+    TSLOG_CONTEXT( ConstructL, TSLOG_LOCAL );
+    TSLOG_IN();
+    
+    BaseConstructL( aEnv, aId, aOwner );
+    aEnv.RegisterEventHandler( this, this, TWservCrEvent::EWindowGroupChanged );
+    
+    TSLOG_OUT();
+    }
+    
+// --------------------------------------------------------------------------
+// CPreviewProviderCRP::DoHandleEvent
+// --------------------------------------------------------------------------
+//    
+void CPreviewProviderCRP::DoHandleEvent( const TWservCrEvent& aEvent )
+    {
+    TSLOG_CONTEXT( DoHandleEvent, TSLOG_LOCAL );
+    TSLOG_IN();
+    
+    if ( aEvent.Type() == TWservCrEvent::EWindowGroupChanged )
+        {
+        const TInt wgId = aEvent.WindowGroupIdentifier();
+        if ( iWgIds.FindInOrder( iPrevId ) >= 0 ||
+            ( iPrevId == 0 &&  iPrevReg != 0 ) )
+            {
+            TRAP_IGNORE( ScreenshotL() );
+            iPrevReg = 0;
+            }
+        iPrevId = wgId;
+        }
+    
+    TSLOG_OUT();
+    }
+    
+// --------------------------------------------------------------------------
+// CPreviewProviderCRP::ScaleComplete
+// --------------------------------------------------------------------------
+//    
+void CPreviewProviderCRP::ScaleCompleteL( const CFbsBitmap& aBitmap )
+    {
+    TSLOG_CONTEXT( ScaleComplete, TSLOG_LOCAL );
+    TSLOG_IN();
+    
+    const TInt msg[] = {
+            NPreviewMsg::EPreviewReady,
+            iPrevId?iPrevId:iPrevReg,
+            aBitmap.Handle()
+            };
+    TPckgC<TInt[sizeof(msg) / sizeof(TInt)]> buf(msg);
+    User::LeaveIfError( SendMessage( buf ) );
+    TSLOG3( TSLOG_INFO, "size = %dx%d handle = %d",
+        aBitmap.SizeInPixels().iWidth,
+        aBitmap.SizeInPixels().iHeight,
+        aBitmap.Handle() );
+    TSLOG_OUT();
+    }
+
+// --------------------------------------------------------------------------
+// CPreviewProviderCRP::UnregisterComplete
+// --------------------------------------------------------------------------
+//    
+void CPreviewProviderCRP::UnregisterComplete( TInt aWgId )
+    {
+    TSLOG_CONTEXT( UnregisterComplete, TSLOG_LOCAL );
+    TSLOG_IN();
+    
+    const TInt msg[] = {
+            NPreviewMsg::EUnregisterReady,
+            aWgId,
+            0
+            };
+    TPckgC<TInt[sizeof(msg) / sizeof(TInt)]> buf(msg);
+    SendMessage(buf);
+    
+    TSLOG_OUT();
+    }
+
+// --------------------------------------------------------------------------
+// CPreviewProviderCRP::Register
+// --------------------------------------------------------------------------
+//    
+void CPreviewProviderCRP::Register( TInt aWgId )
+    {
+    TSLOG_CONTEXT( Register, TSLOG_LOCAL );
+    TSLOG_IN();
+    
+    iPrevReg = aWgId;
+    iWgIds.InsertInOrder( aWgId );
+    
+    TSLOG_OUT();
+    }
+
+// --------------------------------------------------------------------------
+// CPreviewProviderCRP::Unregister
+// --------------------------------------------------------------------------
+//
+void CPreviewProviderCRP::Unregister( TInt aWgId )
+    {
+    TSLOG_CONTEXT( Unregister, TSLOG_LOCAL );
+    TSLOG_IN();
+    
+    const TInt index = iWgIds.FindInOrder( aWgId );
+    if ( index >= 0 )
+        {
+        iWgIds.Remove( index );
+        }
+    
+    UnregisterComplete( aWgId );
+    
+    TSLOG_OUT();
+    }
+
+// --------------------------------------------------------------------------
+// CPreviewProviderCRP::ScreenShotL
+// --------------------------------------------------------------------------
+//
+void CPreviewProviderCRP::ScreenshotL()
+    {
+    CFbsBitmap* screenshot = new (ELeave)CFbsBitmap();
+    CleanupStack::PushL( screenshot );
+    ScreenshotL( *screenshot );
+    ScaleCompleteL( *screenshot );
+    iScreenshots.InsertL( screenshot, iScreenshots.Count() );
+    CleanupStack::Pop( screenshot );
+    CheckOverflow();
+    }
+
+// --------------------------------------------------------------------------
+// CPreviewProviderCRP::ScreenShotL
+// --------------------------------------------------------------------------
+//
+void CPreviewProviderCRP::ScreenshotL(CFbsBitmap& aBitmap)
+    {
+    TSLOG_CONTEXT( ScreenShot, TSLOG_LOCAL );
+    TSLOG_IN();
+
+    if( 0 > iScreen || Env().ScreenCount() <= iScreen )
+        {
+        //screen offset out of range. skip request
+        User::Leave(KErrArgument);
+        }
+    // Find the screen resolution
+    MWsScreenConfig* screenConfig = 
+        Env().Screen( iScreen )->ObjectInterface<MWsScreenConfig>();    
+    
+    const TSize sz = screenConfig->ScreenModeSizeInPixels();
+
+    // Get the screen buffer (containing screenshot data)
+    MWsFrontBuffer* screenFront = 
+        Env().Screen( iScreen )->ObjectInterface<MWsFrontBuffer>();
+    
+    // With NGA we do not support downscaling of the screenshots.
+    // So use the size of the screen if no screenshot size has been explicitly
+    // set or if the old method for taking screenshots is not available.
+    if ( iScreenshotSize.iWidth == 0 || 
+         iScreenshotSize.iHeight == 0 || 
+         !screenFront )
+        {
+        iScreenshotSize = sz;
+        }
+    // Use the the same DisplayMode as for the source image
+    // so override the display mode, ignoring any requests.
+    iScreenshotMode = screenConfig->DisplayMode();
+    
+    TSLOG3( TSLOG_INFO, "iShotSize: %dx%d mode: %d",
+        iScreenshotSize.iWidth, iScreenshotSize.iHeight, iScreenshotMode );
+    
+    aBitmap.Reset();
+    User::LeaveIfError( aBitmap.Create( iScreenshotSize, iScreenshotMode ) );
+  
+    // Check if front buffer is available.
+    // Will always be NULL with NGA.
+    if ( screenFront )
+        {
+        TSLOG0( TSLOG_INFO, "non-NGA, using front buffer" );
+        FrontBufferScreenShot( aBitmap, *screenFront, sz, screenConfig->Stride() );
+        }
+#ifdef NGA
+    else
+        {
+        TSLOG0( TSLOG_INFO, "NGA, using CopyScreenToBitmapL" );
+        MWsScreenDevice* screenDevice = static_cast<MWsScreenDevice*>(
+            Env().Screen( iScreen )->ResolveObjectInterface(
+                MWsScreenDevice::EWsObjectInterfaceId ) );
+        User::LeaveIfNull( screenDevice );
+        screenDevice->CopyScreenToBitmapL( &aBitmap, iScreenshotSize );
+        }
+#endif
+    TSLOG_OUT();
+    }
+
+// --------------------------------------------------------------------------
+// CPreviewProviderCRP::RemoveScreenshot
+// --------------------------------------------------------------------------
+//
+void CPreviewProviderCRP::RemoveScreenshot( TInt aBitmapHandle )
+    {
+    for( int iter(0); iter < iScreenshots.Count(); ++iter )
+        {
+        if( iScreenshots[iter]->Handle() == aBitmapHandle )
+            {
+            delete iScreenshots[iter];
+            iScreenshots.Remove(iter);
+            break;
+            }
+        }
+    }
+
+// --------------------------------------------------------------------------
+// CPreviewProviderCRP::CheckOverflow
+// --------------------------------------------------------------------------
+//
+void CPreviewProviderCRP::CheckOverflow()
+    {
+    TInt overflow( iScreenshots.Count() - KMaxShots);
+    while( 0 < overflow-- )
+        {
+        delete iScreenshots[0];
+        iScreenshots.Remove(0);
+        }
+    }
+
+// --------------------------------------------------------------------------
+// CPreviewProviderCRP::FrontBufferScreenShot
+// --------------------------------------------------------------------------
+//    
+void CPreviewProviderCRP::FrontBufferScreenShot( CFbsBitmap& aBitmap, 
+                                                 MWsFrontBuffer& aFront, 
+                                                 const TSize& aSrcSize, 
+                                                 TInt aSrcStride )
+    {
+    TSLOG_CONTEXT( CPreviewProviderCRP::FrontBufferScreenShot, TSLOG_LOCAL );
+    TSLOG_IN();
+    
+    const TUint8* src = static_cast<const TUint8*> ( aFront.GetBits() );
+    TSLOG1( TSLOG_INFO, "src address = [%d]", src );
+        
+    TInt srcstride( aSrcStride );
+    TInt srcwidth( aSrcSize.iWidth );
+    TInt srcheight( aSrcSize.iHeight ); 
+    TInt dststride( aBitmap.DataStride() );
+    TInt dstheight( iScreenshotSize.iHeight );
+    TInt dstwidth( iScreenshotSize.iWidth );
+    TInt stepdst( dststride / dstwidth );
+    TInt stepsrc( srcstride / srcwidth );
+    // scale must be TInt type
+    TInt scaleX( aSrcSize.iWidth / iScreenshotSize.iWidth );
+    TInt scaleY( aSrcSize.iHeight / iScreenshotSize.iHeight );
+    
+    aBitmap.LockHeap();
+    
+    TUint8* dst = ( TUint8* ) aBitmap.DataAddress();
+    
+    TInt minWidth = Min( srcwidth, dstwidth );
+    TInt minHeight = Min( srcheight, dstheight );
+    TInt minStep = Min( stepsrc, stepdst );
+    
+    for ( TInt y = minHeight; y > 0; y-- )
+         {
+         for ( TInt x = minWidth; x > 0; x-- )
+             {
+             Mem::Copy( dst, src, minStep );
+             dst += stepdst;
+             src += scaleX*stepdst;
+             }
+         src += srcstride - scaleX * stepdst * minWidth;
+         src += ( scaleY - 1 ) * srcstride;
+         }
+         
+    aBitmap.UnlockHeap();
+    TSLOG_OUT();
+    }
+    
+// --------------------------------------------------------------------------
+// KImplementationTable
+// --------------------------------------------------------------------------
+//    
+LOCAL_C const TImplementationProxy KImplementationTable[] = 
+    {
+    IMPLEMENTATION_PROXY_ENTRY(KImpId, CPreviewProviderCRP::CreateL)
+    };
+
+// --------------------------------------------------------------------------
+// ImplementationGroupProxy
+// --------------------------------------------------------------------------
+//    
+EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount)
+    {
+    aTableCount = (sizeof(KImplementationTable) / sizeof(TImplementationProxy));
+    return KImplementationTable;
+    }
+
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswserver/client/bwins/tsfswclientu.def	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,10 @@
+EXPORTS
+	?SwitchToApp@CTsFswClient@@QAEXH@Z @ 1 NONAME ; void CTsFswClient::SwitchToApp(int)
+	?GetContentL@CTsFswClient@@QAEXAAV?$RPointerArray@VCTsFswEntry@@@@@Z @ 2 NONAME ; void CTsFswClient::GetContentL(class RPointerArray<class CTsFswEntry> &)
+	?ForegroundAppUid@CTsFswClient@@QAE?AVTUid@@W4TTsFswFgAppType@1@@Z @ 3 NONAME ; class TUid CTsFswClient::ForegroundAppUid(enum CTsFswClient::TTsFswFgAppType)
+	?Subscribe@CTsFswClient@@QAEXAAVMTsFswObserver@@@Z @ 4 NONAME ; void CTsFswClient::Subscribe(class MTsFswObserver &)
+	?NewLC@CTsFswClient@@SAPAV1@XZ @ 5 NONAME ; class CTsFswClient * CTsFswClient::NewLC(void)
+	?CloseApp@CTsFswClient@@QAEXH@Z @ 6 NONAME ; void CTsFswClient::CloseApp(int)
+	?NewL@CTsFswClient@@SAPAV1@XZ @ 7 NONAME ; class CTsFswClient * CTsFswClient::NewL(void)
+	?CancelSubscribe@CTsFswClient@@QAEXXZ @ 8 NONAME ; void CTsFswClient::CancelSubscribe(void)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswserver/client/eabi/tsfswclientu.def	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,10 @@
+EXPORTS
+	_ZN12CTsFswClient11GetContentLER13RPointerArrayI11CTsFswEntryE @ 1 NONAME
+	_ZN12CTsFswClient11SwitchToAppEi @ 2 NONAME
+	_ZN12CTsFswClient15CancelSubscribeEv @ 3 NONAME
+	_ZN12CTsFswClient16ForegroundAppUidENS_15TTsFswFgAppTypeE @ 4 NONAME
+	_ZN12CTsFswClient4NewLEv @ 5 NONAME
+	_ZN12CTsFswClient5NewLCEv @ 6 NONAME
+	_ZN12CTsFswClient8CloseAppEi @ 7 NONAME
+	_ZN12CTsFswClient9SubscribeER14MTsFswObserver @ 8 NONAME
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswserver/client/group/bld.inf	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,24 @@
+/*
+* 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:  build info file for client dll
+ *
+*/
+
+
+PRJ_EXPORTS
+../inc/tsfswclient.h |../../../inc/tsfswclient.h
+../inc/tsfswclientobserver.h |../../../inc/tsfswclientobserver.h
+
+PRJ_MMPFILES
+tsfswclient.mmp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswserver/client/group/tsfswclient.mmp	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,41 @@
+/*
+* 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:  client dll
+ *
+*/
+
+
+#include <platform_paths.hrh>
+
+TARGET  tsfswclient.dll
+TARGETTYPE DLL
+CAPABILITY CAP_GENERAL_DLL
+
+SOURCEPATH ../src
+SOURCE          tsfswclient.cpp
+SOURCE          tsfswclientimpl.cpp
+
+MW_LAYER_SYSTEMINCLUDE
+
+USERINCLUDE     ../inc
+USERINCLUDE     ../../inc
+USERINCLUDE     ../../../inc
+USERINCLUDE     ../../../trace
+
+LIBRARY euser.lib
+LIBRARY estor.lib
+
+LIBRARY tsfswutils.lib
+
+DEBUGLIBRARY flogger.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswserver/client/inc/clientlogging.h	Tue Jan 26 11:48:23 2010 +0200
@@ -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:  Defines logs for client
+*
+*/
+
+
+#ifdef _DEBUG // codescanner::ifpreprocessor
+_LIT( KTsLogFile, "tsfswclient.txt" );
+_LIT( KTsLogPath, "taskswitcher" );
+#define _TSLOG_LOG_COMPONENT_ID 0x0000000
+#endif
+
+#include "tslogging.h"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswserver/client/inc/tsfswclient.h	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,131 @@
+/*
+* 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:  Client API
+ *
+*/
+
+
+#ifndef TSFSWCLIENT_H
+#define TSFSWCLIENT_H
+
+#include <e32std.h>
+#include "tsfswentry.h"
+
+class MTsFswObserver;
+class CTsFswClientImpl;
+
+/**
+ * Client API for the Huriganes Fast Swap Server.
+ */    
+NONSHARABLE_CLASS( CTsFswClient ) : public CBase
+    {
+public:
+    /**
+     * Possible values for aType argument of ForegroundAppUid().
+     */
+    enum TTsFswFgAppType
+        {
+        /**
+         * Means that even when the foreground app has another app embedded
+         * into it the uid of the container application will be returned.
+         */
+        EUseStandaloneUid,
+        /**
+         * Means that if the foreground app has another app embedded
+         * into it then the returned uid will be the uid of the embedded
+         * app.
+         */
+        EUseEmbeddedUid
+        };
+
+    /**
+     * Creates a new instance.
+     * @capability LocalServices
+     */
+    IMPORT_C static CTsFswClient* NewL();
+    
+    /**
+     * Creates a new instance.
+     * @capability LocalServices
+     */
+    IMPORT_C static CTsFswClient* NewLC();
+    
+    /**
+     * Destructor.
+     */
+    ~CTsFswClient();
+    
+    /**
+     * Queries the fast swap content from the server and
+     * copies it into the given array.
+     * Previous content of the array is removed (by using ResetAndDestroy).
+     * @param   aDst    array to which data is stored
+     * @capability LocalServices
+     */
+    IMPORT_C void GetContentL( RTsFswArray& aDst );
+    
+    /**
+     * Subscribes for continuous notifications about changes in the
+     * fast swap content.
+     * The notifications are generated until CancelSubscribe is called
+     * or the instance is destroyed.
+     * @capability LocalServices
+     */
+    IMPORT_C void Subscribe( MTsFswObserver& aObserver );
+    
+    /**
+     * Cancels the subscription for change notifications.
+     * @capability LocalServices
+     */
+    IMPORT_C void CancelSubscribe();
+    
+    /**
+     * Tries to close the application with the given id.
+     * @capability LocalServices
+     */
+    IMPORT_C void CloseApp( TInt aWgId );
+    
+    /**
+     * Brings the application with the given id into foreground.
+     * @capability LocalServices
+     */
+    IMPORT_C void SwitchToApp( TInt aWgId );
+
+    /**
+     * Returns the uid of the foreground app or KNullUid if something goes wrong.
+     *
+     * Will never return hidden apps, only those which can also be seen in the
+     * array returned by GetContentL.
+     *
+     * However the handling of embedded applications might be different:
+     * (as opposed to GetContentL)
+     * If aType == EUseEmbeddedUid:
+     *   This function will always return the embedded application's uid, unlike
+     *   GetContentL which will always refer to the container app (except for the
+     *   screenshot of course). This means that the returned uid is simply the
+     *   uid belonging to the first (non-hidden, etc.) window group from the window group list.
+     * If aType == EUseStandaloneUid:
+     *   Embedded applications are ignored and the returned uid is the app uid belonging
+     *   to the first parentless window group.
+     */
+    IMPORT_C TUid ForegroundAppUid( TTsFswFgAppType aType );
+
+private:
+    CTsFswClient();
+    void ConstructL();
+
+    CTsFswClientImpl* iImpl;
+    };
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswserver/client/inc/tsfswclientimpl.h	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,68 @@
+/*
+* 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:  Client API, private implementation
+ *
+*/
+
+
+#ifndef TSFSWCLIENTIMPL_H
+#define TSFSWCLIENTIMPL_H
+
+#include <e32std.h>
+#include "tsfswentry.h"
+
+class MTsFswObserver;
+    
+NONSHARABLE_CLASS( CTsFswClientImpl ) : public CActive
+    {
+public:
+    static CTsFswClientImpl* NewL();
+    static CTsFswClientImpl* NewLC();
+    ~CTsFswClientImpl();
+    
+    void GetContentL( RTsFswArray& aDst );
+    
+    void Subscribe( MTsFswObserver& aObserver );
+    void CancelSubscribe();
+    
+    void CloseApp( TInt aWgId );
+    void SwitchToApp( TInt aWgId );
+
+    TUid ForegroundAppUid( TInt aType );
+
+private:
+    void RunL();
+    void DoCancel();
+
+private:
+    CTsFswClientImpl();
+    void ConstructL();
+
+    NONSHARABLE_CLASS( RTsFswClient ) : public RSessionBase
+        {
+    public:
+        TInt Connect();
+        void Subscribe( TRequestStatus& aStatus );
+        void CancelSubscribe();
+        void GetContentL( RTsFswArray& aDst );
+        void CloseApp( TInt aWgId );
+        void SwitchToApp( TInt aWgId );
+        TUid ForegroundAppUid( TInt aType );
+        };
+    RTsFswClient iClient;
+    
+    MTsFswObserver* iObserver; // not own
+    };
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswserver/client/inc/tsfswclientobserver.h	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,37 @@
+/*
+* 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:  Client API
+ *
+*/
+
+
+#ifndef TSFSWCLIENTOBSERVER_H
+#define TSFSWCLIENTOBSERVER_H
+
+#include <e32base.h>
+
+/**
+ * Observer interface for getting notifications about fast swap content changes.
+ */
+class MTsFswObserver
+    {
+public:
+    /**
+     * Called when there is a change in the fast swap content.
+     * The data can be queried via CTsFswClient::GetContentL
+     */
+    virtual void HandleFswContentChanged() = 0;
+    };
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswserver/client/src/tsfswclient.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,126 @@
+/*
+* 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:  Client API
+ *
+*/
+
+
+#include "tsfswclient.h"
+#include "tsfswclientimpl.h"
+
+// --------------------------------------------------------------------------
+// CTsFswClient::NewL
+// --------------------------------------------------------------------------
+//    
+EXPORT_C CTsFswClient* CTsFswClient::NewL()
+    {
+    CTsFswClient* self = NewLC();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswClient::NewLC
+// --------------------------------------------------------------------------
+//    
+EXPORT_C CTsFswClient* CTsFswClient::NewLC()
+    {
+    CTsFswClient* self = new ( ELeave ) CTsFswClient;
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    return self;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswClient::CTsFswClient
+// --------------------------------------------------------------------------
+//    
+CTsFswClient::CTsFswClient()
+    {
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswClient::~CTsFswClient
+// --------------------------------------------------------------------------
+//    
+CTsFswClient::~CTsFswClient()
+    {
+    delete iImpl;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswClient::ConstructL
+// --------------------------------------------------------------------------
+//    
+void CTsFswClient::ConstructL()
+    {
+    iImpl = CTsFswClientImpl::NewL();
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswClient::GetContentL
+// --------------------------------------------------------------------------
+//    
+EXPORT_C void CTsFswClient::GetContentL( RTsFswArray& aDst )
+    {
+    iImpl->GetContentL( aDst );
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswClient::Subscribe
+// --------------------------------------------------------------------------
+//    
+EXPORT_C void CTsFswClient::Subscribe( MTsFswObserver& aObserver )
+    {
+    iImpl->Subscribe( aObserver );
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswClient::CancelSubscribe
+// --------------------------------------------------------------------------
+//    
+EXPORT_C void CTsFswClient::CancelSubscribe()
+    {
+    iImpl->CancelSubscribe();
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswClient::CloseApp
+// --------------------------------------------------------------------------
+//    
+EXPORT_C void CTsFswClient::CloseApp( TInt aWgId )
+    {
+    iImpl->CloseApp( aWgId );
+    }
+    
+// --------------------------------------------------------------------------
+// CTsFswClient::SwitchToApp
+// --------------------------------------------------------------------------
+//    
+EXPORT_C void CTsFswClient::SwitchToApp( TInt aWgId )
+    {
+    iImpl->SwitchToApp( aWgId );
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswClient::ForegroundAppUid
+// --------------------------------------------------------------------------
+//    
+EXPORT_C TUid CTsFswClient::ForegroundAppUid( TTsFswFgAppType aType )
+    {
+    return iImpl->ForegroundAppUid( aType );
+    }
+
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswserver/client/src/tsfswclientimpl.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,315 @@
+/*
+* 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:  Client API, private implementation
+ *
+*/
+
+
+#include "tsfswclientimpl.h"
+#include "tsfswclientobserver.h"
+#include "tsfswcommon.h"
+#include <s32mem.h>
+
+#include "clientlogging.h"
+
+// --------------------------------------------------------------------------
+// StartServer
+// --------------------------------------------------------------------------
+//   
+static TInt StartServer()
+    {
+    RProcess server;
+    const TUidType uid( KNullUid, KNullUid, KTsFswServerUid );
+    TInt err = server.Create( KTsFswServerImg, KNullDesC, uid );
+    if ( err != KErrNone )
+        {
+        return err;
+        }
+    TRequestStatus stat;
+    server.Rendezvous( stat );
+    if ( stat != KRequestPending )
+        {
+        server.Kill( 0 );
+        }
+    else
+        {
+        server.Resume();
+        }
+    User::WaitForRequest( stat );
+    err = server.ExitType() == EExitPanic ? KErrGeneral : stat.Int();
+    server.Close();
+    return err;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswClientImpl::RTsFswClient::Connect
+// --------------------------------------------------------------------------
+//
+TInt CTsFswClientImpl::RTsFswClient::Connect()
+    {
+    const TInt KAsyncMessageSlots = 4;
+    const TInt KMaxRetry = 4;
+    
+    TInt retry = KMaxRetry;
+    for ( ; ; )
+        {
+        TInt err = CreateSession( KTsFswServerName, TVersion( 0, 0, 0 ), KAsyncMessageSlots );
+        if ( err != KErrNotFound && err != KErrServerTerminated )
+            {
+            return err;
+            }
+        if ( !--retry )
+            {
+            return err;
+            }
+        err = StartServer();
+        if ( err != KErrNone && err != KErrAlreadyExists )
+            {
+            return err;
+            }
+        }
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswClientImpl::RTsFswClient::Subscribe
+// --------------------------------------------------------------------------
+//   
+void CTsFswClientImpl::RTsFswClient::Subscribe( TRequestStatus& aStatus )
+    {
+    SendReceive( ETsFswSubscribe, aStatus );
+    }
+    
+// --------------------------------------------------------------------------
+// CTsFswClientImpl::RTsFswClient::CancelSubscribe
+// --------------------------------------------------------------------------
+//   
+void CTsFswClientImpl::RTsFswClient::CancelSubscribe()
+    {
+    SendReceive( ETsFswCancel );
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswClientImpl::RTsFswClient::GetContentL
+// --------------------------------------------------------------------------
+//   
+void CTsFswClientImpl::RTsFswClient::GetContentL( RTsFswArray& aDst )
+    {
+    TSLOG_CONTEXT( GetContentL, TSLOG_LOCAL );
+    TSLOG_IN();
+
+    for ( ; ; )
+        {
+        TPckgBuf<TInt> bufSize;
+        User::LeaveIfError( SendReceive( ETsFswGetBufferSize,
+            TIpcArgs( &bufSize ) ) );
+        HBufC8* buf = HBufC8::NewLC( bufSize() );
+        TPtr8 p( buf->Des() );
+        TInt err = SendReceive( ETsFswGetBuffer,
+            TIpcArgs( &p, bufSize() ) );
+        if ( err == KErrNone )
+            {
+            RDesReadStream strm( p );
+            CleanupClosePushL( strm );
+            CTsFswEntry::InternalizeArrayL( strm, aDst );
+            CleanupStack::PopAndDestroy( &strm );
+            }
+        else if ( err != KErrArgument )
+            {
+            User::Leave( err );
+            }
+        CleanupStack::PopAndDestroy( buf );
+        if ( err == KErrNone )
+            {
+            break;
+            }
+        // If result was KErrArgument then the size received from GetBufferSize is
+        // not valid anymore so restart the whole procedure.
+        }
+
+    TSLOG_OUT();
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswClientImpl::RTsFswClient::CloseApp
+// --------------------------------------------------------------------------
+//   
+void CTsFswClientImpl::RTsFswClient::CloseApp( TInt aWgId )
+    {
+    SendReceive( ETsFswCloseApp, TIpcArgs( aWgId ) );
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswClientImpl::RTsFswClient::SwitchToApp
+// --------------------------------------------------------------------------
+//   
+void CTsFswClientImpl::RTsFswClient::SwitchToApp( TInt aWgId )
+    {
+    SendReceive( ETsFswSwitchToApp, TIpcArgs( aWgId ) );
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswClientImpl::RTsFswClient::ForegroundAppUid
+// --------------------------------------------------------------------------
+//   
+TUid CTsFswClientImpl::RTsFswClient::ForegroundAppUid( TInt aType )
+    {
+    TUid result = KNullUid;
+    TPckgBuf<TInt> uidBuf;
+    if ( SendReceive( ETsFswForegroundAppUid,
+            TIpcArgs( &uidBuf, &aType ) ) == KErrNone )
+        {
+        result = TUid::Uid( uidBuf() );
+        }
+    return result;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswClientImpl::NewL
+// --------------------------------------------------------------------------
+//   
+CTsFswClientImpl* CTsFswClientImpl::NewL()
+    {
+    CTsFswClientImpl* self = NewLC();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswClientImpl::NewLC()
+// --------------------------------------------------------------------------
+//   
+CTsFswClientImpl* CTsFswClientImpl::NewLC()
+    {
+    CTsFswClientImpl* self = new ( ELeave ) CTsFswClientImpl;
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    return self;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswClientImpl::CTsFswClientImpl()
+// --------------------------------------------------------------------------
+//   
+CTsFswClientImpl::CTsFswClientImpl()
+        : CActive( CActive::EPriorityStandard )
+    {
+    CActiveScheduler::Add( this );
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswClientImpl::~CTsFswClientImpl()
+// --------------------------------------------------------------------------
+//   
+CTsFswClientImpl::~CTsFswClientImpl()
+    {
+    Cancel();
+    iClient.Close();
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswClientImpl::ConstructL()
+// --------------------------------------------------------------------------
+//   
+void CTsFswClientImpl::ConstructL()
+    {
+    User::LeaveIfError( iClient.Connect() );
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswClientImpl::GetContentL
+// --------------------------------------------------------------------------
+//   
+void CTsFswClientImpl::GetContentL( RTsFswArray& aDst )
+    {
+    iClient.GetContentL( aDst );
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswClientImpl::Subscribe
+// --------------------------------------------------------------------------
+//   
+void CTsFswClientImpl::Subscribe( MTsFswObserver& aObserver )
+    {
+    Cancel();
+    iObserver = &aObserver;
+    iClient.Subscribe( iStatus );
+    SetActive();
+    }
+    
+// --------------------------------------------------------------------------
+// CTsFswClientImpl::CancelSubscribe
+// --------------------------------------------------------------------------
+//   
+void CTsFswClientImpl::CancelSubscribe()
+    {
+    Cancel();
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswClientImpl::CloseApp
+// --------------------------------------------------------------------------
+//   
+void CTsFswClientImpl::CloseApp( TInt aWgId )
+    {
+    iClient.CloseApp( aWgId );
+    }
+    
+// --------------------------------------------------------------------------
+// CTsFswClientImpl::SwitchToApp
+// --------------------------------------------------------------------------
+//   
+void CTsFswClientImpl::SwitchToApp( TInt aWgId )
+    {
+    iClient.SwitchToApp( aWgId );
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswClientImpl::ForegroundAppUid
+// --------------------------------------------------------------------------
+//   
+TUid CTsFswClientImpl::ForegroundAppUid( TInt aType )
+    {
+    return iClient.ForegroundAppUid( aType );
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswClientImpl::RunL
+// --------------------------------------------------------------------------
+//   
+void CTsFswClientImpl::RunL()
+    {
+    TSLOG_CONTEXT( RunL, TSLOG_LOCAL );
+    TSLOG1_IN( "%d", iStatus.Int() );
+
+    if ( iStatus == KErrNone && iObserver )
+        {
+        iClient.Subscribe( iStatus );
+        SetActive();
+        iObserver->HandleFswContentChanged();
+        }
+
+    TSLOG_OUT();
+    }
+    
+// --------------------------------------------------------------------------
+// CTsFswClientImpl::DoCancel
+// --------------------------------------------------------------------------
+//   
+void CTsFswClientImpl::DoCancel()
+    {
+    iClient.CancelSubscribe();
+    }
+
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswserver/engine/bwins/tsfswengineu.def	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,8 @@
+EXPORTS
+	?NewLC@CTsFswEngine@@SAPAV1@AAVMTsFswEngineObserver@@@Z @ 1 NONAME ; class CTsFswEngine * CTsFswEngine::NewLC(class MTsFswEngineObserver &)
+	?FswDataL@CTsFswEngine@@QAEABV?$RPointerArray@VCTsFswEntry@@@@XZ @ 2 NONAME ; class RPointerArray<class CTsFswEntry> const & CTsFswEngine::FswDataL(void)
+	?CloseAppL@CTsFswEngine@@QAEXH@Z @ 3 NONAME ; void CTsFswEngine::CloseAppL(int)
+	?NewL@CTsFswEngine@@SAPAV1@AAVMTsFswEngineObserver@@@Z @ 4 NONAME ; class CTsFswEngine * CTsFswEngine::NewL(class MTsFswEngineObserver &)
+	?ForegroundAppUidL@CTsFswEngine@@QAE?AVTUid@@H@Z @ 5 NONAME ; class TUid CTsFswEngine::ForegroundAppUidL(int)
+	?SwitchToAppL@CTsFswEngine@@QAEXH@Z @ 6 NONAME ; void CTsFswEngine::SwitchToAppL(int)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswserver/engine/eabi/tsfswengineu.def	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,8 @@
+EXPORTS
+	_ZN12CTsFswEngine12SwitchToAppLEi @ 1 NONAME
+	_ZN12CTsFswEngine17ForegroundAppUidLEi @ 2 NONAME
+	_ZN12CTsFswEngine4NewLER20MTsFswEngineObserver @ 3 NONAME
+	_ZN12CTsFswEngine5NewLCER20MTsFswEngineObserver @ 4 NONAME
+	_ZN12CTsFswEngine8FswDataLEv @ 5 NONAME
+	_ZN12CTsFswEngine9CloseAppLEi @ 6 NONAME
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswserver/engine/group/bld.inf	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,24 @@
+/*
+* 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:  build info file for engine component
+ *
+*/
+
+
+PRJ_EXPORTS
+../inc/tsfswengine.h        |../../../inc/tsfswengine.h
+../inc/tsfswobservers.h     |../../../inc/tsfswobservers.h
+
+PRJ_MMPFILES
+tsfswengine.mmp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswserver/engine/group/tsfswengine.mmp	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,58 @@
+/*
+* 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:  engine component
+ *
+*/
+
+
+#include <platform_paths.hrh>
+
+TARGET  tsfswengine.dll
+TARGETTYPE DLL
+CAPABILITY CAP_GENERAL_DLL
+
+SOURCEPATH ../src
+SOURCE          tsfswengine.cpp
+SOURCE          tsfshiddenapplist.cpp
+SOURCE          tsfsalwaysshownapplist.cpp
+SOURCE          tsfswidgetlist.cpp
+SOURCE          tsfswiconcache.cpp
+
+MW_LAYER_SYSTEMINCLUDE
+
+USERINCLUDE     ../inc
+USERINCLUDE     ../../inc
+USERINCLUDE     ../../../inc
+USERINCLUDE     ../../../trace
+
+LIBRARY euser.lib
+LIBRARY estor.lib
+LIBRARY eikcore.lib
+LIBRARY cone.lib
+LIBRARY apparc.lib
+LIBRARY ws32.lib
+LIBRARY apgrfx.lib
+LIBRARY fbscli.lib
+LIBRARY bitgdi.lib
+LIBRARY aknicon.lib
+LIBRARY aknskins.lib
+LIBRARY egul.lib
+LIBRARY widgetregistryclient.lib
+LIBRARY featmgr.lib
+
+LIBRARY tspreviewprovider.lib
+LIBRARY tsfswutils.lib
+
+DEBUGLIBRARY    flogger.lib
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswserver/engine/inc/enginelogging.h	Tue Jan 26 11:48:23 2010 +0200
@@ -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:  Defines logs for engine
+*
+*/
+
+
+#ifdef _DEBUG // codescanner::ifpreprocessor
+_LIT( KTsLogFile, "tsfswengine.txt" );
+_LIT( KTsLogPath, "taskswitcher" );
+#define _TSLOG_LOG_COMPONENT_ID 0x0000000
+#endif
+
+#include "tslogging.h"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswserver/engine/inc/tsfsalwaysshownapplist.h	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,75 @@
+/*
+* 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:  Non-closeable app list class
+ *
+*/
+
+
+#ifndef TSFSALWAYSSHOWNAPPLIST_H
+#define TSFSALWAYSSHOWNAPPLIST_H
+
+#include <e32base.h>
+#include <apgcli.h>
+
+/**
+ * List of always shown applications.
+ */
+NONSHARABLE_CLASS( CTsFsAlwaysShownAppList ) : public CBase
+    {
+public:
+    /**
+     * Two-phased constructor.
+     *
+     * @param aParent
+     */
+    static CTsFsAlwaysShownAppList* NewL();
+
+    /*
+     * Default C++ constructor
+     */
+    CTsFsAlwaysShownAppList();
+
+    /*
+     * Destructor
+     */
+    ~CTsFsAlwaysShownAppList();
+
+    /**
+     * Initializes the list that stores applications that are always
+     * shown in the fast swap provided they have been installed
+     * in the phone rom
+     * @return   -
+     */
+    void InitializeAlwaysShownListL();
+
+    /**
+     * If application uid exists in the always shown application list
+     * @return   ETrue  application uid exists in the list
+     *           EFalse application uid doesn't exist in the list
+     * @param    TUid aAppUid the application uid
+     */
+    TBool IsAlwaysShownApp( TUid aAppUid );
+
+    /**
+     * Returning reference to iAppList
+     */
+    RArray<TUid>& AppList() { return iAppList; }
+
+private:    
+    void ConstructL();
+    RArray<TUid> iAppList;
+    RApaLsSession iAppArcSession;
+    };
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswserver/engine/inc/tsfshiddenapplist.h	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,107 @@
+/*
+* 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:  Class that checks if chosen applications should be hidden
+*                from the task swap.
+*
+*/
+
+
+#ifndef TSFSHIDDENAPPLIST_H_
+#define TSFSHIDDENAPPLIST_H_
+
+#include <e32base.h>    // For CActive, link against: euser.lib
+#include <e32std.h>     // For RTimer, link against: euser.lib
+#include <e32property.h>// For RProperty
+#include "tsfswobservers.h"
+
+//FORWARD DECLARATIONS
+class RWsSession;
+
+/**
+ * This class is handling the application which are hidden
+ * from fast swap feature.
+ */
+NONSHARABLE_CLASS( CTsFsHiddenAppList ) : public CActive
+    {
+public:
+
+    /**
+     * Symbian based two phased constructor.
+     */
+    static CTsFsHiddenAppList* NewL( MTsFsHiddenAppListObserver& aObserver );
+
+    /**
+     * Symbian based two phased constructor.
+     */
+    static CTsFsHiddenAppList* NewLC( MTsFsHiddenAppListObserver& aObserver );
+
+    /**
+     * Destructor
+     */
+    ~CTsFsHiddenAppList();
+
+    /**
+     * Whether application is hidden from FSW.
+     */
+    TBool IsHiddenL( TUid aAppUid, const RWsSession& aWsSession, TInt aWgId );
+
+    /**
+     * Updating application list
+     */
+    void UpdateListL();
+
+protected:
+    /**
+     * Default constructor.
+     */
+    CTsFsHiddenAppList( MTsFsHiddenAppListObserver& aObserver );
+
+    /**
+     * Second phase construction
+     */
+    void ConstructL();
+
+    /**
+     * Reset application array list.
+     */
+    void ResetArray();
+
+    /**
+     * Derived from CActive
+     */
+    virtual void DoCancel();
+
+    /**
+     * Derived from CActive
+     */
+    virtual void RunL();
+
+private:
+    /**
+     * Property reader for reading Hiden app list from FSW
+     */
+    RProperty iProperty;
+
+    /**
+     * Hidden App list
+     */
+    CArrayFixFlat<TInt>* iHiddenAppList;
+
+    /**
+     * hidden apps list observer
+     */
+    MTsFsHiddenAppListObserver& iObserver;
+    };
+
+#endif /*TSFSHIDDENAPPLIST_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswserver/engine/inc/tsfswengine.h	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,326 @@
+/*
+* 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:  Task monitor engine
+ *
+*/
+
+
+#ifndef TSFSWENGINE_H
+#define TSFSWENGINE_H
+
+#include <e32base.h>
+#include <e32cmn.h>
+#include <s32strm.h>
+#include <fbs.h>
+#include <eikenv.h>
+#include <w32std.h>
+#include <e32hashtab.h>
+#include <apgcli.h>
+#include <e32property.h>
+#include "tspreviewobserver.h"
+#include "tsfswentry.h"
+#include "tsfswobservers.h"
+
+class CTsFsAlwaysShownAppList;
+class CTsFsHiddenAppList;
+class CTsFsWidgetList;
+class MTsFswEngineObserver;
+class CTsFswIconCache;
+class CTsFastSwapPreviewProvider;
+class CApaWindowGroupName;
+
+// descriptor big enough to store hex repr of 32-bit integer plus 0x prefix
+typedef TBuf<10> TAppUidHexString;
+
+/**
+ * Engine for fast swap server.
+ * Performs task monitoring, notifications about wg changes are
+ * received from the appui.
+ */
+NONSHARABLE_CLASS( CTsFswEngine ) : public CActive,
+        public MTsFswTaskListObserver,
+        public MTsFswResourceObserver,
+        public MTsFsHiddenAppListObserver,
+        public MTsFastSwapPreviewObserver
+    {
+public:
+    /**
+     * Creates a new instance.
+     * @param   aObserver   ref to observer
+     */
+    IMPORT_C static CTsFswEngine* NewL( MTsFswEngineObserver& aObserver );
+    
+    /**
+     * @copydoc NewL
+     */
+    IMPORT_C static CTsFswEngine* NewLC( MTsFswEngineObserver& aObserver );
+    
+    /**
+     * Destructor.
+     */
+    ~CTsFswEngine();
+
+    /**
+     * Returns a reference to the current content.
+     * Also performs sanity checks, e.g. associates application icons
+     * when no screenshot has been received.
+     * @return  ref to content array
+     */
+    IMPORT_C const RTsFswArray& FswDataL();
+    
+    /**
+     * Tries to close the given app.
+     * @param   aWgId   value given by WgId() for an entry in iData
+     */
+    IMPORT_C void CloseAppL( TInt aWgId );
+    
+    /**
+     * Brings the given app to foreground.
+     * @param   aWgId   value given by WgId() for an entry in iData
+     */
+    IMPORT_C void SwitchToAppL( TInt aWgId );
+
+    /**
+     * Returns the uid of the foreground app or KNullUid.
+     * Will never return hidden apps, only those which can
+     * also be seen in the array returned by FswDataL.
+     *
+     * In case of embedded apps the behaviour is controlled
+     * by aType: it will return either the uid of the embedded
+     * application or the container app.
+     *
+     * @param   aType   @see CTsFswClient::TTsFswFgAppType
+     */
+    IMPORT_C TUid ForegroundAppUidL( TInt aType );
+
+private:
+    // from CActive
+    void RunL();
+    TInt RunError( TInt aError );
+    void DoCancel();
+
+    // from MTsFswTaskListObserver
+    void UpdateTaskList();
+    
+    // from MTsFswResourceObserver
+    void HandleResourceChange( TInt aType );
+
+    // from MTsFsHiddenAppListObserver
+    void HiddenAppListUpdated();
+
+    // from MTsFastSwapPreviewObserver
+    void HandleFswPpApplicationChange( TInt aWgId, TInt aFbsHandle );
+    void HandleFswPpApplicationUnregistered( TInt aWgId );
+
+private:
+    /**
+     * Constructor.
+     */
+    CTsFswEngine( MTsFswEngineObserver& aObserver );
+    
+    /**
+     * Performs 2nd phase construction.
+     */
+    void ConstructL();
+    
+    /**
+     * Gets the window group list and reconstructs the fsw content.
+     * @return   TBool   ETrue if the list has been modified
+     */
+    TBool CollectTasksL();
+    
+    /**
+     * Called from CollectTasksL for each entry in the task list.
+     * @param   aWgId       window group id
+     * @param   aAppUid     application uid
+     * @param   aWgName     window group name or NULL
+     * @param   aNewList    list to add to
+     * @param   aIsWidget   true if the entry corresponds to a web widget
+     * @return  TBool   ETrue if it was really a new entry in the list
+     */
+    TBool AddEntryL( TInt aWgId, const TUid& aAppUid,
+        CApaWindowGroupName* aWgName, RTsFswArray& aNewList,
+        TBool aIsWidget );
+
+    /**
+     * Checks if there is an entry for same app in the content list.
+     * If yes then it takes some of the data for the entry that
+     * will correspond to the same app in the refreshed content list.
+     * @param   aEntry      new entry in content list
+     * @param   aAppUid     application uid
+     * @param   aChanged    ref to change-flag, set to ETrue if it is sure
+     * that the new content list will be different from the previous one
+     * @param   aNewList    ref to new content list
+     * @return  ETrue if app was found
+     */
+    TBool CheckIfExistsL( CTsFswEntry& aEntry,
+        const TUid& aAppUid,
+        TBool& aChanged,
+        RTsFswArray& aNewList );
+
+    /**
+     * Adds running widgets to the list.
+     * @param   aNewList    array to add to
+     */
+    void CheckWidgetsL( RTsFswArray& aNewList );
+
+    /**
+     * Finds out the app uid for the given window group id.
+     * @param   aWgId   a valid window group id
+     * @return  application uid
+     */
+    TUid AppUidForWgIdL( TInt aWgId );
+    
+    /**
+     * Returns the parent's wg id or KErrNotFound.
+     * @param   aWgId   a valid window group id
+     * @return parent wg id or KErrNotFound if there is no parent
+     */
+    TInt FindParentWgId( TInt aWgId );
+    
+    /**
+     * Finds out the application name.
+     * @param   aWindowName window group name or NULL
+     * @param   aAppUId     application uid
+     * @param   aWgId       window group id
+     * @return  application name, ownership transferred to caller
+     */
+    HBufC* FindAppNameLC( CApaWindowGroupName* aWindowName,
+        const TUid& aAppUid, TInt aWgId );
+
+    /**
+     * Makes a copy of the bitmap with the given handle.
+     * @param   aFbsHandle          bitmap handle
+     * @param   aKeepAspectRatio    if true then aspect ratio is kept
+     * @return  CFbsBitmap*     the copy, ownership transferred to caller
+     */
+    CFbsBitmap* CopyBitmapL( TInt aFbsHandle, TBool aKeepAspectRatio );
+    
+    /**
+     * Checks if the app to which the screenshot belongs is in the task list
+     * and updates the entry when found. Also triggers change notification
+     * to observer when data is modified.
+     * @param   aWgIdForScreenshot  wgid for the screenshot 
+     * @param   aBitmapHandle       handle for screenshot bitmap
+     */
+    void AssignScreenshotHandle( TInt aWgIdForScreenshot, TInt aBitmapHandle );
+    
+    /**
+     * Returns the bitmap handle for the screenshot belonging to the given app
+     * or 0 if not (yet) found.
+     * @param   aWgIdForApp     a window group id (from the window group list)
+     * @return  bitmap handle or 0
+     */
+    TInt LookupScreenshotHandle( TInt aWgIdForApp );
+    
+    /**
+     * Callback for the iUpdateStarter timer.
+     * Calls CollectTasksL and notifies the observer if the task list
+     * has really been modified.
+     */
+    static TInt UpdateStarterCallback( TAny* aParam );
+
+    /**
+     * Brings the given web widget to foreground.
+     * @param   aWidgetIndex    index in the list of running widgets
+     */
+    void SwitchToWidgetL( TInt aWidgetIndex );
+
+    /**
+     * Configues the preview provider with current screen size.
+     */
+    void SetPreviewParams();
+
+    /**
+     * Registers and unregisters window groups to iPreviewProvider
+     * if the window group list has been changed.
+     */
+    void UpdatePreviewContent();
+
+    /**
+     * Gets and publishes the foreground app uid to CFW.
+     */
+    void PublishFgAppUidL();
+
+    /**
+     * Helper function to publish something to CFW.
+     * @param   aType   context type
+     * @param   aValue  value to publish
+     */
+    //void PublishContextL( const TDesC& aType, const TDesC& aValue );
+
+private: // data    
+    MTsFswEngineObserver& iObserver;
+    RTsFswArray iData; // current fsw content, i.e. the task list
+    CEikonEnv* iEnv; // not own
+
+    // always shown app list, own    
+    CTsFsAlwaysShownAppList* iAlwaysShownAppList;
+    
+    // hidden app list, own
+    CTsFsHiddenAppList* iHiddenAppList;
+    
+    // web widget list, own
+    CTsFsWidgetList* iWidgetList;
+
+    // window server session
+    RWsSession iWsSession;
+    
+    // apparc session
+    RApaLsSession iAppArcSession;
+
+    /**
+     * Hash table storing the screenshots.
+     * Key: window group id for the screenshot
+     * (the one received in ApplicationChange)
+     * Value: CFbsBitmap*, pointers owned
+     */    
+    RHashMap<TInt, CFbsBitmap*> iScreenshots;
+    
+    // preview provider instance, own
+    CTsFastSwapPreviewProvider* iPreviewProvider;
+    
+    // timer to defer content refresh
+    CPeriodic* iUpdateStarter;
+    
+    // app icon provider/container instance, own
+    CTsFswIconCache* iAppIcons;
+    
+    // true if web widgets are supported by the system
+    TBool iWidgetsSupported;
+    // wgid of widget appui is saved here
+    TInt iWidgetAppUiWgId;
+
+    // PS property to listen for swi status changes
+    RProperty iSwiProp;
+    // when true CollectTasksL will call GetAllApps etc.
+    // which is slow and need not be done normally, except
+    // during startup and perhaps when new applications are installed
+    TBool iAppDataRefreshNeeded;
+
+    // window group ids returned by last WindowGroupList call
+    RArray<TInt> iWgIds;
+    
+    // Dirty flag, indicates that iData is not up-to-date because
+    // there were no subscribed clients during a previous possible
+    // change of the task list.
+    TBool iTaskListDirty;
+
+    // For publishing the foreground app uid to Context Framework    
+    TAppUidHexString iFgAppUidStr;
+    TUid iFgAppUid;
+
+    };
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswserver/engine/inc/tsfswiconcache.h	Tue Jan 26 11:48:23 2010 +0200
@@ -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:  Icon cache
+*
+*/
+
+
+#ifndef TSFSWICONCACHE_H_
+#define TSFSWICONCACHE_H_
+
+#include <e32base.h>
+#include <e32hashtab.h>
+
+class CFbsBitmap;
+class CGulIcon;
+
+/**
+ * App icon cache.
+ */
+NONSHARABLE_CLASS( CTsFswIconCache ) : public CBase
+    {
+public:
+
+    /**
+     * Two phased constructor.
+     */
+    static CTsFswIconCache* NewL();
+
+    /**
+     * Two phased constructor.
+     */
+    static CTsFswIconCache* NewLC();
+
+    /**
+     * Destructor
+     */
+    ~CTsFswIconCache();
+
+    /**
+     * Gets the bitmaps associated with the given app from the cache.
+     * If not found then creates the app icon, stores it to the cache,
+     * and returns that.
+     * @param   aAppUid application uid
+     * @param   aBitmap bitmap ptr, ownership NOT transferred to caller, or NULL
+     * @param   aMask   mask ptr, ownership NOT transferred to caller, or NULL
+     */
+    void GetIconL( const TUid& aAppUid,
+        CFbsBitmap*& aBitmap, CFbsBitmap*& aMask );
+
+    /**
+     * Sets the ptrs to the default icon.
+     * Ownership not transferred to caller.
+     */
+    void DefaultIcon( CFbsBitmap*& aBitmap, CFbsBitmap*& aMask );
+
+private:
+    /**
+     * Default constructor.
+     */
+    CTsFswIconCache();
+
+    /**
+     * Second phase construction
+     */
+    void ConstructL();
+
+    /**
+     * Retrieves the bitmap/mask for the icon of the given app.
+     * @param   aAppUid application uid
+     * @param   aBitmap bitmap ptr, ownership transferred to caller, or NULL
+     * @param   aMask   mask ptr, ownership transferred to caller, or NULL
+     */
+    void GetAppIconL( const TUid& aAppUid,
+        CFbsBitmap*& aBitmap, CFbsBitmap*& aMask );
+
+private:
+    struct STsBitmapPair
+        {
+        STsBitmapPair( CFbsBitmap* aBitmap, CFbsBitmap* aMask )
+            : iBitmap( aBitmap ), iMask( aMask ) { }
+        CFbsBitmap* iBitmap;
+        CFbsBitmap* iMask;
+        };
+    RHashMap<TInt, STsBitmapPair> iAppIcons;
+    
+    CGulIcon* iDefaultIcon;
+    };
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswserver/engine/inc/tsfswidgetlist.h	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,62 @@
+/*
+* 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:  web widget list
+ *
+*/
+
+
+#ifndef TSFSWIDGETLIST_H_
+#define TSFSWIDGETLIST_H_
+
+#include <e32base.h>
+#include <widgetregistryclient.h>
+
+const TUint32 KWidgetAppUidValue = 0x10282822;
+
+/**
+ * class handling the list of running wrt widgets
+ */
+NONSHARABLE_CLASS(CTsFsWidgetList) : public CBase
+    {
+public:
+    static CTsFsWidgetList* NewL();
+
+    /** Destructor */
+    ~CTsFsWidgetList();
+
+    /**
+     * Initializes the list that stores widgets.
+     * @return   -
+     */        
+    void InitializeWidgetListL();
+
+    /**
+     * Returns a ref to the list of running widgets.
+     */
+    const RWidgetInfoArray& RunningWidgets() const { return iRunningWidgets; }
+
+private:
+    /** Constructor */
+    CTsFsWidgetList();
+    void ResetArrayOfWidgetInfo( RWidgetInfoArray& aWidgetInfoArr );
+    
+    static void CleanupConnect( TAny* aThis );
+
+private:
+    /** Contains list of widgets that are currently running */
+    RWidgetInfoArray iRunningWidgets;
+    RWidgetRegistryClientSession iWidgetRegistryClientSession;
+    };
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswserver/engine/inc/tsfswobservers.h	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,80 @@
+/*
+* 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:  Observer interfaces to get notifications from appui and from engine
+ *
+*/
+
+
+#ifndef TSFSWOBSERVERS_H
+#define TSFSWOBSERVERS_H
+
+/**
+ * Interface to get notifications from appui when window groups
+ * have changed.
+ */
+class MTsFswTaskListObserver
+    {
+public:
+    /**
+     * Function called by AppUi to notify about possible
+     * changes in task list
+     */
+    virtual void UpdateTaskList() = 0;
+    };
+
+/**
+ * Interface to get notifications from appui's HandleResourceChangeL.
+ */
+class MTsFswResourceObserver
+    {
+public:
+    /**
+     * Function called by AppUi to notify about resource changes.
+     */
+    virtual void HandleResourceChange( TInt aType ) = 0;
+    };
+
+/**
+ * Observer interface to get notifications from engine
+ * when fsw content has changed.
+ */
+class MTsFswEngineObserver
+    {
+public:
+    /**
+     * Called when there is a change in the task list.
+     */
+    virtual void FswDataChanged() = 0;
+
+    /**
+     * Called to find out how many clients are subscribed
+     * for fsw content change notifications.
+     */
+    virtual TInt FswDataListenerCount() = 0;
+    };
+
+/**
+ * This class is interface for CTsFsHiddenAppList
+ * to notify about list change
+ */
+class MTsFsHiddenAppListObserver
+    {
+public:
+    /**
+     * This function is called by CTsFsHiddenAppList when list is changed.
+     */
+    virtual void HiddenAppListUpdated() = 0;
+    };
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswserver/engine/src/tsfsalwaysshownapplist.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,119 @@
+/*
+* 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:  File containing application list classes
+ *
+*/
+
+
+//INCLUDES:
+#include <apaid.h>
+#include "tsfsalwaysshownapplist.h"
+
+//CONSTANTS:
+/* Array for all application uid that need to be always displayed (if they are running).
+   Also, there will be no Close option for such apps. */
+const TUint32 KTsFsUidArray[] =
+    {
+    0x102750F0 // Idle App Uid
+    ,0x0EFC346A //Search App Uid
+/* never show menu app */    //,0x101F4CD2 // Menu App Uid
+    };
+
+// ================= MEMBER FUNCTIONS =======================
+
+// --------------------------------------------------------------------------
+// CTsFsAlwaysShownAppList::NewL
+// --------------------------------------------------------------------------
+//
+CTsFsAlwaysShownAppList* CTsFsAlwaysShownAppList::NewL()
+    {
+    CTsFsAlwaysShownAppList* self =
+        new (ELeave) CTsFsAlwaysShownAppList;
+    CleanupStack::PushL (self );
+    self->ConstructL ( );
+    CleanupStack::Pop ( self );
+    return self;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFsAlwaysShownAppList::CTsFsAlwaysShownAppList
+// --------------------------------------------------------------------------
+//
+CTsFsAlwaysShownAppList::CTsFsAlwaysShownAppList()
+    {
+    }
+
+// --------------------------------------------------------------------------
+// CTsFsAlwaysShownAppList::~CTsFsAlwaysShownAppList
+// --------------------------------------------------------------------------
+//
+CTsFsAlwaysShownAppList::~CTsFsAlwaysShownAppList( )
+    {
+    iAppList.Close();
+    iAppArcSession.Close();
+    }
+
+// --------------------------------------------------------------------------
+// CTsFsAlwaysShownAppList::ConstructL
+// --------------------------------------------------------------------------
+//
+void CTsFsAlwaysShownAppList::ConstructL( )
+    {
+    User::LeaveIfError( iAppArcSession.Connect() );
+    }
+
+// --------------------------------------------------------------------------
+// CTsFsAlwaysShownAppList::InitializeAlwaysShownListL
+// Applications that are always shown in fast swap are stored
+// in different their own list whether they exist
+// in the phone rom or not
+// --------------------------------------------------------------------------
+//
+void CTsFsAlwaysShownAppList::InitializeAlwaysShownListL( )
+    {
+    iAppList.Reset();
+    // order of always shown applications
+    TApaAppInfo applicationInfo;
+    for (TInt index = 0,
+            sizeOfArray = ( sizeof(KTsFsUidArray) / sizeof( TUint32 ) );
+            index < sizeOfArray; index++ )
+        {
+        // if exists in phone rom
+        if ( iAppArcSession.GetAppInfo( applicationInfo,
+                TUid::Uid( KTsFsUidArray[index] ) )!= KErrNotFound )
+            {
+            iAppList.AppendL( TUid::Uid( KTsFsUidArray[index] ) );
+            }
+        }
+    }
+
+// --------------------------------------------------------------------------
+// CTsFsAlwaysShownAppList::IsAlwaysShownApp
+// If application uid exists in the always shown application list
+// --------------------------------------------------------------------------
+//
+TBool CTsFsAlwaysShownAppList::IsAlwaysShownApp( TUid aAppUid )
+    {
+    for ( TInt index = 0, count = iAppList.Count ( ); index < count; index++ )
+        {
+        if ( iAppList[index] == aAppUid )
+            {
+            return ETrue;
+            }
+        }
+    return EFalse;
+    }
+
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswserver/engine/src/tsfshiddenapplist.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,226 @@
+/*
+* 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:  Class that checks if chosen applications should be hidden
+*                from the task swap.
+*
+*/
+
+
+// INCLUDES
+#include "tsfshiddenapplist.h"
+#include <apgwgnam.h>
+
+#include <eikenv.h>
+
+// the maximum size of array (25 32-bit UIDs equal 100 bytes)
+const TInt KMaxHiddenApps = 25;
+
+/**
+ * Category id for the hidden application list.
+ */
+const TUid KPSUidUikon = { 0x101F8773 };
+const TUint32 KUikAppHiddenList  = 0x00000010;
+
+/**
+ * Apps that are always hidden, no matter what settings the system reports.
+ */
+const TUint32 KTsFsAlwaysHiddenUidArray[] =
+    {
+    0x100056CF // screensaver
+    };
+
+// -----------------------------------------------------------------------------
+// CTsFsHiddenAppList::NewL
+// -----------------------------------------------------------------------------
+//
+CTsFsHiddenAppList* CTsFsHiddenAppList::NewL(
+        MTsFsHiddenAppListObserver& aObserver )
+    {
+    CTsFsHiddenAppList* self =
+        new ( ELeave ) CTsFsHiddenAppList( aObserver );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CTsFsHiddenAppList::NewLC
+// -----------------------------------------------------------------------------
+//
+CTsFsHiddenAppList* CTsFsHiddenAppList::NewLC(
+        MTsFsHiddenAppListObserver& aObserver )
+    {
+    CTsFsHiddenAppList* self = CTsFsHiddenAppList::NewL( aObserver );
+    CleanupStack::PushL( self );
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CTsFsHiddenAppList::~CTsFsHiddenAppList
+// -----------------------------------------------------------------------------
+//
+CTsFsHiddenAppList::~CTsFsHiddenAppList()
+    {
+    Cancel();
+
+    ResetArray();
+    delete iHiddenAppList;
+
+    iProperty.Close();
+    }
+
+// -----------------------------------------------------------------------------
+// CTsFsHiddenAppList::IsHiddenL
+// -----------------------------------------------------------------------------
+//
+TBool CTsFsHiddenAppList::IsHiddenL( TUid aAppUid,
+                                     const RWsSession& aWsSession,
+                                     TInt aWgId )
+    {
+    TBool ret = EFalse;
+
+    CApaWindowGroupName* windowName =
+                        CApaWindowGroupName::NewLC( aWsSession, aWgId );
+
+    if ( windowName->Hidden() )
+        {
+        ret = ETrue;
+        }
+    else
+        {
+        for ( TInt i = 0, ie = iHiddenAppList->Count(); i != ie; ++i )
+            {
+            if ( aAppUid.iUid == iHiddenAppList->At( i ) )
+                {
+                ret = ETrue;
+                break;
+                }
+            }
+        if ( !ret )
+            {
+            for ( TInt i = 0,
+                    arrCnt = sizeof( KTsFsAlwaysHiddenUidArray ) / sizeof( TUint32 );
+                    i != arrCnt; ++i )
+                {
+                if ( KTsFsAlwaysHiddenUidArray[i] == aAppUid.iUid )
+                    {
+                    ret = ETrue;
+                    break;
+                    }
+                }
+            }
+        }
+
+    CleanupStack::PopAndDestroy( windowName );
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// CTsFsHiddenAppList::CTsFsHiddenAppList
+// -----------------------------------------------------------------------------
+//
+CTsFsHiddenAppList::CTsFsHiddenAppList(
+        MTsFsHiddenAppListObserver& aObserver )
+            :CActive( CActive::EPriorityHigh ), iObserver( aObserver )
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CTsFsHiddenAppList::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CTsFsHiddenAppList::ConstructL()
+    {
+    const TInt KMaxGranularity = 4;
+    CActiveScheduler::Add( this );
+
+    iHiddenAppList = new (ELeave) CArrayFixFlat<TInt>( KMaxGranularity );
+    User::LeaveIfError( iProperty.Attach( KPSUidUikon, KUikAppHiddenList, EOwnerThread ) );
+
+    // must not call RunL directly from here as things are not fully initialized yet
+    TRequestStatus* status = &iStatus;
+    User::RequestComplete( status, KErrNone );
+    SetActive();
+    }
+
+// -----------------------------------------------------------------------------
+// CTsFsHiddenAppList::ResetArray
+// -----------------------------------------------------------------------------
+//
+void CTsFsHiddenAppList::ResetArray()
+    {
+    if ( iHiddenAppList )
+        {
+        iHiddenAppList->Reset();
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CTsFsHiddenAppList::UpdateListL
+// -----------------------------------------------------------------------------
+//
+void CTsFsHiddenAppList::UpdateListL()
+    {
+    ResetArray();
+
+    // hidden list array
+    TBuf16 <2*KMaxHiddenApps> hiddenList;
+    iProperty.Get( hiddenList );
+
+    for ( TInt i = 0; i < hiddenList.Length(); i = i + 2 )
+        {
+        TUint32 uid = 0x00000000;
+        uid = hiddenList[i];
+        uid = uid << 16; // codescanner::magicnumbers
+        uid |= hiddenList[i+1];
+
+        if ( uid != 0 )
+            {
+            iHiddenAppList->AppendL( uid );
+            }
+        else
+            {
+            break;
+            }
+        }
+
+    iObserver.HiddenAppListUpdated();
+    }
+
+// -----------------------------------------------------------------------------
+// CTsFsHiddenAppList::DoCancel
+// -----------------------------------------------------------------------------
+//
+void CTsFsHiddenAppList::DoCancel()
+    {
+    iProperty.Cancel();
+    }
+
+// -----------------------------------------------------------------------------
+// CTsFsHiddenAppList::RunL
+// -----------------------------------------------------------------------------
+//
+void CTsFsHiddenAppList::RunL()
+    {
+    if ( !IsActive() )
+        {
+        iProperty.Subscribe( iStatus );
+        SetActive();
+        }
+    UpdateListL();
+    }
+
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswserver/engine/src/tsfswengine.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,1043 @@
+/*
+* 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:  Task monitor engine
+ *
+*/
+
+
+#include "tsfswengine.h"
+#include "tsfsalwaysshownapplist.h"
+#include "tsfshiddenapplist.h"
+#include "tsfswidgetlist.h"
+#include "tsfswiconcache.h"
+#include "tspreviewprovider.h"
+#include "tsfswclient.h"
+#include <apgtask.h>
+#include <AknDef.h>
+#include <apgwgnam.h>
+#include <mmf/common/mmfcontrollerpluginresolver.h> // for CleanupResetAndDestroyPushL
+#include <featmgr.h>
+#include <swi/swispubsubdefs.h>
+
+#include "enginelogging.h"
+
+// time to wait before refreshing content
+const TInt KContentRefreshDelay = 500000; // 0.5 sec
+
+// for screenshots, they are scaled down to (screensize/this_factor).
+const TInt KScreenSizeFactor = 2;
+
+// format to get a lowercase hex string prefixed with 0x
+_LIT( KHexFmt, "0x%x" );
+
+// --------------------------------------------------------------------------
+// CTsFswEngine::NewL
+// --------------------------------------------------------------------------
+//
+EXPORT_C CTsFswEngine* CTsFswEngine::NewL( MTsFswEngineObserver& aObserver )
+    {
+    CTsFswEngine* self = NewLC( aObserver );
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswEngine::NewLC
+// --------------------------------------------------------------------------
+//
+EXPORT_C CTsFswEngine* CTsFswEngine::NewLC( MTsFswEngineObserver& aObserver )
+    {
+    CTsFswEngine* self = new ( ELeave ) CTsFswEngine( aObserver );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    return self;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswEngine::CTsFswEngine
+// --------------------------------------------------------------------------
+//
+CTsFswEngine::CTsFswEngine( MTsFswEngineObserver& aObserver )
+        : CActive( EPriorityStandard ), iObserver( aObserver )
+    {
+    CActiveScheduler::Add( this );
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswEngine::ConstructL
+// --------------------------------------------------------------------------
+//
+void CTsFswEngine::ConstructL()
+    {
+    iEnv = CEikonEnv::Static();
+
+    User::LeaveIfError( iWsSession.Connect() );
+    User::LeaveIfError( iAppArcSession.Connect() );
+
+    iHiddenAppList = CTsFsHiddenAppList::NewL( *this );
+    iAlwaysShownAppList = CTsFsAlwaysShownAppList::NewL();
+
+    iWidgetsSupported = FeatureManager::FeatureSupported( KFeatureIdWebWidgets );
+    if ( iWidgetsSupported )
+        {
+        iWidgetList = CTsFsWidgetList::NewL();
+        }
+
+    // create app icon retriever instance
+    iAppIcons = CTsFswIconCache::NewL();
+
+    // get an initial list of tasks
+    iAppDataRefreshNeeded = ETrue;
+    CollectTasksL();
+
+    // listen for app screenshots
+    iPreviewProvider = CTsFastSwapPreviewProvider::NewL( *this );
+    SetPreviewParams();
+    UpdatePreviewContent();
+
+    iUpdateStarter = CPeriodic::NewL( CActive::EPriorityStandard );
+    
+    // start listening for swi ps property
+    if ( iSwiProp.Attach( KUidSystemCategory,
+            Swi::KUidSoftwareInstallKey ) == KErrNone )
+        {
+        iSwiProp.Subscribe( iStatus );
+        SetActive();
+        }
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswEngine::~CTsFswEngine
+// --------------------------------------------------------------------------
+//
+CTsFswEngine::~CTsFswEngine()
+    {
+    Cancel();
+    iSwiProp.Close();
+
+    delete iUpdateStarter;
+    delete iPreviewProvider;
+
+    // delete the bitmaps as the hash map cannot do that
+    THashMapIter<TInt, CFbsBitmap*> iter( iScreenshots );
+    while ( const TInt* key = iter.NextKey() )
+        {
+        CFbsBitmap** value = iter.CurrentValue();
+        delete *value;
+        }
+    iScreenshots.Close();
+    delete iAppIcons;
+
+    iData.ResetAndDestroy();
+    iWgIds.Close();
+
+    delete iHiddenAppList;
+    delete iAlwaysShownAppList;
+    delete iWidgetList;
+    iAppArcSession.Close();
+    iWsSession.Close();
+
+//    delete iContextUtility;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswEngine::FswDataL
+// --------------------------------------------------------------------------
+//
+EXPORT_C const RTsFswArray& CTsFswEngine::FswDataL()
+    {
+    TSLOG_CONTEXT( FswDataL, TSLOG_LOCAL );
+    TSLOG1_IN( "dirty flag = %d", iTaskListDirty );
+
+    // check the dirty flag and refresh if needed
+    if ( iTaskListDirty )
+        {
+        CollectTasksL();
+        // dirty flag is cleared in the above call
+        }
+
+    // Get app icon for entries without screenshot,
+    // do this only here as the app icon is not needed in case a screenshot
+    // is already available.
+    for ( TInt i = 0, ie = iData.Count(); i != ie; ++i )
+        {
+        if ( !iData[i]->ScreenshotHandle() )
+            {
+            CFbsBitmap* bmp;
+            CFbsBitmap* mask;
+            TUid appUid = iData[i]->AppUid();
+            // this will leave with -46 in case of widgets if we do not have AllFiles cap
+            TRAPD( err, iAppIcons->GetIconL( appUid, bmp, mask ) );
+            if ( err == KErrNone && bmp )
+                {
+                iData[i]->SetAppIconHandles( bmp->Handle(),
+                    mask ? mask->Handle() : 0 );
+                }
+            else
+                {
+                iAppIcons->DefaultIcon( bmp, mask );
+                iData[i]->SetAppIconHandles( bmp->Handle(),
+                    mask ? mask->Handle() : 0 );
+                }
+            }
+        }
+
+    TSLOG_OUT();
+    return iData;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswEngine::CloseAppL
+// --------------------------------------------------------------------------
+//
+EXPORT_C void CTsFswEngine::CloseAppL( TInt aWgId )
+    {
+    TSLOG_CONTEXT( CloseAppL, TSLOG_LOCAL );
+    TSLOG1_IN( "aWgId = %d", aWgId );
+
+    if ( iWidgetsSupported && aWgId < 0 && iWidgetAppUiWgId )
+        {
+        // for widgets clients see a wgid that is -1*(index+1)
+        const RWidgetInfoArray& arr( iWidgetList->RunningWidgets() );
+        // convert aWgId to an index in the list of running widgets
+        TInt idx = -aWgId - 1;
+        // if index is valid then handle the widget specially
+        if ( idx >= 0 && idx < arr.Count() )
+            {
+            TWsEvent event;
+            event.SetType( EEventUser );
+            TUint8* eventData = event.EventData();
+            // Fill bits 0-31 with widget application uid.
+            reinterpret_cast<TUint32&>( *eventData ) = KWidgetAppUidValue;
+            eventData += sizeof( TUint32 );
+            // Fill bits 32-63 with uid of the widget that should be closed.
+            reinterpret_cast<TUint32&>( *eventData ) = arr[idx]->iUid.iUid;
+            // Send the event to Widget AppUi.
+            iEnv->WsSession().SendEventToWindowGroup(
+                iWidgetAppUiWgId, event );
+            // closing a widget may not cause a window group change so trigger
+            // the update manually
+            UpdateTaskList();
+            TSLOG0_OUT( "widget processing finished" );
+            return;
+            }
+        }
+
+    TUid appUid = AppUidForWgIdL( aWgId );
+    if ( !iAlwaysShownAppList->IsAlwaysShownApp( appUid ) )
+        {
+        // send window group event to kill the app
+        TWsEvent event;
+        event.SetTimeNow();
+        event.SetType( KAknShutOrHideApp );
+        iEnv->WsSession().SendEventToWindowGroup( aWgId, event );
+        TSLOG0( TSLOG_INFO, "event sent to wg" );
+        }
+
+    TSLOG_OUT();
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswEngine::SwitchToAppL
+// --------------------------------------------------------------------------
+//
+EXPORT_C void CTsFswEngine::SwitchToAppL( TInt aWgId )
+    {
+    TSLOG_CONTEXT( SwitchToAppL, TSLOG_LOCAL );
+    TSLOG1_IN( "aWgId = %d", aWgId );
+
+    if ( iWidgetsSupported && aWgId < 0 )
+        {
+        // for widgets clients see a wgid that is -1*(index+1)
+        const RWidgetInfoArray& arr( iWidgetList->RunningWidgets() );
+        // convert aWgId to an index in the list of running widgets
+        TInt idx = -aWgId - 1;
+        // if index is valid then handle the widget specially
+        if ( idx >= 0 && idx < arr.Count() )
+            {
+            SwitchToWidgetL( idx );
+            TSLOG1_OUT( "switched to widget %d", idx );
+            return;
+            }
+        }
+
+    TApaTask task( iEnv->WsSession() );
+    task.SetWgId( aWgId );
+    task.BringToForeground();
+
+    TSLOG_OUT();
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswEngine::SwitchToWidgetL
+// --------------------------------------------------------------------------
+//
+void CTsFswEngine::SwitchToWidgetL( TInt aWidgetIndex )
+    {
+    const RWidgetInfoArray& arr( iWidgetList->RunningWidgets() );
+    RApaLsSession ls;
+    User::LeaveIfError( ls.Connect() );
+    CleanupClosePushL( ls );
+    CApaCommandLine* cmdLine = CApaCommandLine::NewLC();
+    cmdLine->SetCommandL( EApaCommandRun );
+    TApaAppInfo info;
+    iAppArcSession.GetAppInfo( info, arr[aWidgetIndex]->iUid ); // codescanner::accessArrayElementWithoutCheck2 (aWidgetIndex checked in SwitchToAppL())
+    cmdLine->SetExecutableNameL( info.iFullName );
+    ls.StartApp( *cmdLine );
+    CleanupStack::PopAndDestroy( 2, &ls );
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswEngine::UpdateTaskList
+// Callback from appui
+// --------------------------------------------------------------------------
+//
+void CTsFswEngine::UpdateTaskList()
+    {
+    TSLOG_CONTEXT( UpdateTaskList, TSLOG_LOCAL );
+    TSLOG_IN();
+
+    // If no clients are subscribed for fsw content change notifications
+    // then there is no need to waste time with rebuilding the task list,
+    // just set the dirty flag.
+    TInt listenerCount = iObserver.FswDataListenerCount();
+    TSLOG1( TSLOG_INFO, "listener count = %d", listenerCount );
+    if ( listenerCount > 0 )
+        {
+        // There can be many calls in a row, use a timer to prevent degrading
+        // device performance.
+        if ( !iUpdateStarter->IsActive() )
+            {
+            iUpdateStarter->Start( KContentRefreshDelay, 0,
+                TCallBack( UpdateStarterCallback, this ) );
+            }
+        }
+    else
+        {
+        iTaskListDirty = ETrue;
+        }
+
+    // screenshot taking support - call Register and Unregister when needed
+    UpdatePreviewContent();
+
+    // get the foreground app uid and publish it to CFW if different than before
+    TRAP_IGNORE( PublishFgAppUidL() );
+    
+    TSLOG_OUT();
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswEngine::ForegroundAppUidL
+// --------------------------------------------------------------------------
+//
+EXPORT_C TUid CTsFswEngine::ForegroundAppUidL( TInt aType )
+    {
+    // Do not use GetFocusWindowGroup or others.
+    // We want to see only "real" application uids in FgApp,
+    // i.e. stuff that would also be shown in the task swapper
+    // area of Taskswitcher.
+
+    TUid result = KNullUid;
+    RArray<RWsSession::TWindowGroupChainInfo> allWgIds;
+    CleanupClosePushL( allWgIds );
+    User::LeaveIfError( iWsSession.WindowGroupList( 0, &allWgIds ) );
+    TInt count = allWgIds.Count();
+    for ( TInt i = 0; i < count; ++i )
+        {
+        // Depending on aType we may not need to bother with iParentId here.
+        // If aType == EUseEmbeddedUid => embedded apps are treated as others.
+        // If aType == EUseStandaloneUid => embedded apps must be ignored.
+        if ( allWgIds[i].iParentId > 0
+                && aType == CTsFswClient::EUseStandaloneUid )
+            {
+            continue;
+            }
+
+        CApaWindowGroupName* wgn = CApaWindowGroupName::NewLC(
+            iWsSession, allWgIds[i].iId );
+        TUid newUid = wgn->AppUid();
+        TBool hidden = wgn->Hidden() || iHiddenAppList->IsHiddenL(
+            newUid, iWsSession, allWgIds[i].iId );
+        CleanupStack::PopAndDestroy( wgn );
+
+        if ( !hidden && newUid.iUid )
+            {
+            result = newUid;
+            break;
+            }
+        }
+    CleanupStack::PopAndDestroy( &allWgIds );
+    
+    return result;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswEngine::PublishFgAppUidL
+// --------------------------------------------------------------------------
+//
+void CTsFswEngine::PublishFgAppUidL()
+    {
+    TSLOG_CONTEXT( PublishFgAppUidL, TSLOG_LOCAL );
+    TSLOG_IN();
+
+    TUid newUid = ForegroundAppUidL( CTsFswClient::EUseEmbeddedUid );
+    TSLOG2( TSLOG_INFO, "ws says: %x we have: %x", newUid.iUid, iFgAppUid.iUid );
+    if ( iFgAppUid != newUid && newUid.iUid )
+        {
+        iFgAppUid = newUid;
+        iFgAppUidStr.Format( KHexFmt, iFgAppUid.iUid );
+        }
+
+    TSLOG_OUT();
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswEngine::UpdateStarterCallback
+// Callback for the timer
+// --------------------------------------------------------------------------
+//
+TInt CTsFswEngine::UpdateStarterCallback( TAny* aParam )
+    {
+    CTsFswEngine* self = static_cast<CTsFswEngine*>( aParam );
+    self->iUpdateStarter->Cancel();
+    // get list of tasks and notify observer if there is a change in the list
+    TBool changed = EFalse;
+    TRAPD( err, changed = self->CollectTasksL() );
+    if ( err == KErrNone && changed )
+        {
+        self->iObserver.FswDataChanged();
+        }
+    return 0;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswEngine::CollectTasksL
+// --------------------------------------------------------------------------
+//
+TBool CTsFswEngine::CollectTasksL()
+    {
+    TSLOG_CONTEXT( CollectTasksL, TSLOG_LOCAL );
+    TSLOG_IN();
+
+    // clear dirty flag
+    iTaskListDirty = EFalse;
+
+    TBool changed = EFalse;
+    RTsFswArray newList;
+    CleanupResetAndDestroyPushL( newList );
+
+    // update app data if needed
+    // (usually on startup and when new apps might have been installed)
+    if ( iAppDataRefreshNeeded )
+        {
+        TSLOG0( TSLOG_INFO, "refreshing app data" );
+        iAppArcSession.GetAllApps();
+        iAlwaysShownAppList->InitializeAlwaysShownListL();
+        iAppDataRefreshNeeded = EFalse;
+        }
+
+    // get all window groups
+    RArray<RWsSession::TWindowGroupChainInfo> allWgIds;
+    CleanupClosePushL( allWgIds );
+    User::LeaveIfError( iWsSession.WindowGroupList( 0, &allWgIds ) );
+    TInt count = allWgIds.Count();
+
+    for ( TInt i = 0; i < count; ++i )
+        {
+        // ignore uninteresting entries (e.g. embedded apps)
+        if ( allWgIds[i].iParentId > 0 )
+            {
+            continue;
+            }
+
+        // get window group name
+        TInt wgId = allWgIds[i].iId;
+        CApaWindowGroupName* windowName =
+            CApaWindowGroupName::NewLC( iWsSession, wgId );
+        TUid appUid = windowName->AppUid();
+
+        // ignore entries with null uid
+        if ( !appUid.iUid )
+            {
+            CleanupStack::PopAndDestroy( windowName );
+            continue;
+            }
+
+        // will append the task to our own list only if it is not hidden
+        TBool onHiddenList = iHiddenAppList->IsHiddenL(
+            appUid, iWsSession, wgId );
+
+        // if this is the widget app then save wgid for later use
+        // and ignore it, but include running widgets instead
+        if ( iWidgetsSupported && appUid.iUid == KWidgetAppUidValue )
+            {
+            iWidgetAppUiWgId = wgId;
+            onHiddenList = ETrue;
+            CheckWidgetsL( newList );
+            }
+
+        // get screen number (-1=console, 0=main screen, 1=cover ui)
+        TInt appScreen = 0;
+        TInt scrNumErr = iAppArcSession.GetDefaultScreenNumber( appScreen, appUid );
+
+        // check if it is on always-shown list
+        TBool mustShow = iAlwaysShownAppList->IsAlwaysShownApp( appUid );
+
+#ifdef _DEBUG
+        const TDesC& captionDbg( windowName->Caption() );
+        TSLOG4( TSLOG_INFO, "[%d] wgid=%d appuid=%x (%S)", i, wgId,
+            appUid.iUid, &captionDbg );
+        TSLOG4( TSLOG_INFO, "hidden=%d onhiddenlist=%d mustshow=%d scrno=%d",
+            windowName->Hidden(), onHiddenList, mustShow, appScreen );
+#endif
+
+        // add item to task list if it is always-shown OR it is not hidden
+        // and it is not on cover ui
+        if ( mustShow
+                || ( !onHiddenList
+                    && !windowName->Hidden()
+                    && ( appScreen == 0 || appScreen == -1 )
+                    && scrNumErr == KErrNone ) )
+            {
+            if ( AddEntryL( wgId, appUid, windowName, newList, EFalse ) )
+                {
+                changed = ETrue;
+                }
+            }
+        CleanupStack::PopAndDestroy( windowName );
+        }
+    CleanupStack::PopAndDestroy( &allWgIds );    
+
+    // if counts for old and new lists do not match then there is a change for sure,
+    // probably an app has been closed
+    if ( iData.Count() != newList.Count() )
+        {
+        changed = ETrue;
+        }
+
+    // move pointers from the temporary list into the real one
+    iData.ResetAndDestroy();
+    TInt newListCount = newList.Count();
+    TSLOG1( TSLOG_INFO, "new list count = %d", newListCount );
+    for ( TInt i = 0; i < newListCount; ++i )
+        {
+        TSLOG3( TSLOG_INFO, "[%d] %S wgid=%d",
+            i, &newList[i]->AppName(), newList[i]->WgId() );
+        iData.AppendL( newList[i] );
+        newList[i] = 0;
+        }
+    CleanupStack::PopAndDestroy( &newList );
+    
+    TSLOG1_OUT( "change flag = %d", changed );
+    return changed;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswEngine::AddEntryL
+// --------------------------------------------------------------------------
+//
+TBool CTsFswEngine::AddEntryL( TInt aWgId, const TUid& aAppUid,
+        CApaWindowGroupName* aWgName, RTsFswArray& aNewList,
+        TBool aIsWidget )
+    {
+    TBool changed = EFalse;
+    CTsFswEntry* entry = CTsFswEntry::NewLC();
+    entry->SetWgId( aWgId );
+    entry->SetAppUid( aAppUid );
+    entry->SetWidget( aIsWidget );
+
+    // check if present in old list and if yes then take some of the old data
+    TBool found = CheckIfExistsL( *entry, aAppUid, changed, aNewList );
+
+    // if not present previously then find out app name
+    // and check if screenshot is already available
+    if ( !found )
+        {
+        // when adding a new entry to the list it is changed for sure
+        changed = ETrue;
+        HBufC* name = FindAppNameLC( aWgName, aAppUid, aWgId );
+        if ( name )
+            {
+            entry->SetAppNameL( *name );
+            }
+        CleanupStack::PopAndDestroy( name );
+        TInt h = LookupScreenshotHandle( aWgId );
+        if ( h )
+            {
+            entry->SetScreenshotHandle( h );
+            }
+        entry->SetAlwaysShown( iAlwaysShownAppList->IsAlwaysShownApp( aAppUid ) );
+        if ( aWgName )
+            {
+            entry->SetSystemApp( aWgName->IsSystem() );
+            }
+        }
+
+    // add to new list, ownership is transferred
+    aNewList.AppendL( entry );
+    CleanupStack::Pop( entry );
+    return changed;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswEngine::CheckIfExistsL
+// --------------------------------------------------------------------------
+//
+TBool CTsFswEngine::CheckIfExistsL( CTsFswEntry& aEntry,
+        const TUid& aAppUid,
+        TBool& aChanged,
+        RTsFswArray& aNewList )
+    {
+    for ( TInt entryIdx = 0, oldCount = iData.Count();
+            entryIdx < oldCount; ++entryIdx )
+        {
+        // Enough to check appuid, no need to bother with wgid as the
+        // screenshot handle is up-to-date or will be updated later anyway.
+        if ( iData[entryIdx]->AppUid() == aAppUid )
+            {
+            // if positions do not match then the list is different than before
+            if ( entryIdx != aNewList.Count() )
+                {
+                aChanged = ETrue;
+                }
+            CTsFswEntry* oldEntry = iData[entryIdx];
+            aEntry.SetAppNameL( oldEntry->AppName() );
+            aEntry.SetScreenshotHandle( oldEntry->ScreenshotHandle() );
+            aEntry.SetAlwaysShown( oldEntry->AlwaysShown() );
+            aEntry.SetSystemApp( oldEntry->SystemApp() );
+            return ETrue;
+            }
+        }
+    return EFalse;
+    }
+    
+// --------------------------------------------------------------------------
+// CTsFswEngine::CheckWidgetsL
+// --------------------------------------------------------------------------
+//
+void CTsFswEngine::CheckWidgetsL( RTsFswArray& aNewList )
+    {
+    if ( iWidgetsSupported )
+        {
+        iWidgetList->InitializeWidgetListL();
+        const RWidgetInfoArray& arr( iWidgetList->RunningWidgets() );
+        for ( TInt i = 0, ie = arr.Count(); i != ie; ++i )
+            {
+            // wgid will be a special negative value
+            // windowgroupname is not needed here so pass NULL
+            AddEntryL( -(i+1), arr[i]->iUid, 0, aNewList, ETrue );
+            }
+        }
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswEngine::HiddenAppListUpdated
+// Callback from the hidden app list watcher
+// --------------------------------------------------------------------------
+//
+void CTsFswEngine::HiddenAppListUpdated()
+    {
+    UpdateTaskList();
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswEngine::AppUidForWgIdL
+// --------------------------------------------------------------------------
+//
+TUid CTsFswEngine::AppUidForWgIdL( TInt aWgId )
+    {
+    CApaWindowGroupName* windowName =
+        CApaWindowGroupName::NewLC( iWsSession, aWgId );
+    TUid appUid = windowName->AppUid();
+    CleanupStack::PopAndDestroy( windowName );
+    return appUid;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswEngine::FindParentWgId
+// --------------------------------------------------------------------------
+//
+TInt CTsFswEngine::FindParentWgId( TInt aWgId )
+    {
+    TInt parent( KErrNotFound );
+    RArray<RWsSession::TWindowGroupChainInfo> allWgIds;
+    // Ask for window group list from RWsSession
+    TInt error = iWsSession.WindowGroupList( 0, &allWgIds );
+    if ( !error )
+        {
+        TInt count( allWgIds.Count() );
+        for ( TInt i( 0 ); i < count; i++ )
+            {
+            RWsSession::TWindowGroupChainInfo info = allWgIds[i];
+            if ( info.iId == aWgId )
+                {
+                parent = info.iParentId;
+                break;
+                }
+            }
+        }
+    allWgIds.Close();
+    return parent;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswEngine::FindAppNameLC
+// --------------------------------------------------------------------------
+//
+HBufC* CTsFswEngine::FindAppNameLC( CApaWindowGroupName* aWindowName,
+                                  const TUid& aAppUid,
+                                  TInt aWgId )
+    {
+    //Retrieve the app name
+    TApaAppInfo info;
+    iAppArcSession.GetAppInfo( info, aAppUid );
+    TPtrC caption = info.iShortCaption;
+
+    HBufC* tempName = 0;
+    if ( !caption.Length() && aWindowName ) // if not set - use thread name instead
+        {
+        if ( aWindowName->Caption().Length() )
+            {
+            tempName = aWindowName->Caption().AllocL();
+            //put on cleanupstack after the if
+            }
+        else
+            {
+            TThreadId threadId;
+            TInt err = iWsSession.GetWindowGroupClientThreadId(
+                    aWgId, threadId );
+            if ( err == KErrNone )
+                {
+                RThread thread;
+                CleanupClosePushL( thread );
+                err = thread.Open ( threadId );
+                if ( err==KErrNone )
+                    {
+                    tempName = thread.Name().AllocL(); // codescanner::forgottoputptroncleanupstack
+                    // tempName put on cleanupstack after the if
+                    }
+                CleanupStack::PopAndDestroy( &thread );
+                }
+            }
+        }
+    else
+        {
+        tempName = caption.AllocL();
+        //put on cleanupstack after the if
+        }
+    CleanupStack::PushL( tempName );
+    return tempName;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswEngine::CopyBitmapL
+// --------------------------------------------------------------------------
+//
+CFbsBitmap* CTsFswEngine::CopyBitmapL( TInt aFbsHandle, TBool aKeepAspectRatio )
+    {
+    CFbsBitmap* ret = new (ELeave) CFbsBitmap;
+    CleanupStack::PushL( ret );
+    CFbsBitmap* bmp = new (ELeave) CFbsBitmap;
+    CleanupStack::PushL( bmp );
+    User::LeaveIfError( bmp->Duplicate( aFbsHandle ) );
+
+    //Make bitmap width and height equal so that it will look better in FSW control.
+    TSize size  = bmp->SizeInPixels();
+
+    if ( !aKeepAspectRatio )
+        {
+        if ( size.iHeight > size.iWidth )
+            {
+            size.iHeight = size.iWidth;
+            }
+        else
+            {
+            size.iWidth = size.iHeight;
+            }
+        }
+
+    // preserve size and mode
+    User::LeaveIfError( ret->Create( size, EColor64K ) );
+
+    CFbsBitmapDevice* doubleBufferDev = CFbsBitmapDevice::NewL( ret );
+    CleanupStack::PushL( doubleBufferDev );
+
+    CFbsBitGc* doubleBufferGc = 0;
+    User::LeaveIfError( doubleBufferDev->CreateContext( doubleBufferGc ) );
+    CleanupStack::PushL( doubleBufferGc );
+
+    // preserve size
+    doubleBufferGc->BitBlt( TPoint( 0, 0 ), bmp, TRect(size) );
+
+    CleanupStack::PopAndDestroy( doubleBufferGc );
+    CleanupStack::PopAndDestroy( doubleBufferDev );
+    CleanupStack::PopAndDestroy( bmp );
+    CleanupStack::Pop( ret );
+
+    return ret;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswEngine::UpdatePreviewContent
+// --------------------------------------------------------------------------
+//
+void CTsFswEngine::UpdatePreviewContent()
+    {
+    TSLOG_CONTEXT( UpdatePreviewContent, TSLOG_LOCAL );
+    TSLOG_IN();
+
+    RArray<RWsSession::TWindowGroupChainInfo> allWgIds;
+    if ( iWsSession.WindowGroupList( 0, &allWgIds ) == KErrNone )
+        {
+        // check window groups that do not exist anymore
+        for ( TInt i = 0, ie = iWgIds.Count(); i != ie; ++i )
+            {
+            TInt wgid = iWgIds[i];
+            TBool present = EFalse;
+            for ( TInt j = 0, je = allWgIds.Count(); j != je; ++j )
+                {
+                if ( allWgIds[j].iId == wgid )
+                    {
+                    present = ETrue;
+                    break;
+                    }
+                }
+            if ( !present )
+                {
+                TSLOG1( TSLOG_INFO, "unregister: %d", wgid );
+                iPreviewProvider->Unregister( wgid );
+                }
+            }
+        // check topmost window group
+        if ( allWgIds.Count() )
+            {
+            if ( !iWgIds.Count() || allWgIds[0].iId != iWgIds[0] )
+                {
+                TInt wgid = allWgIds[0].iId;
+                TSLOG1( TSLOG_INFO, "registering %d", wgid );
+                iPreviewProvider->Register( wgid );
+                }
+            }
+        // store the new list
+        iWgIds.Reset();
+        for ( TInt i = 0, ie = allWgIds.Count(); i != ie; ++i )
+            {
+            iWgIds.Append( allWgIds[i].iId );
+            }
+        }
+    allWgIds.Close();
+
+    TSLOG_OUT();
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswEngine::HandleFswPpApplicationChange
+// Callback from CTsFastSwapPreviewProvider
+// Note: aWgId is for the window group for which the screenshot is taken,
+// it may not be the same as the application's wgid (in case of embedded apps)
+// --------------------------------------------------------------------------
+//
+void CTsFswEngine::HandleFswPpApplicationChange( TInt aWgId, TInt aFbsHandle )
+    {
+    TSLOG_CONTEXT( HandleFswPpApplicationChange, TSLOG_LOCAL );
+    TSLOG2_IN( "aWgId = %d aFbsHandle = %d", aWgId, aFbsHandle );
+
+    CFbsBitmap* bmp = 0;
+    TRAPD( err, bmp = CopyBitmapL( aFbsHandle, EFalse ) );
+    iPreviewProvider->AckPreview(aFbsHandle);
+    if ( err == KErrNone )
+        {
+        CFbsBitmap** oldbmp = iScreenshots.Find( aWgId );
+        if ( oldbmp )
+            {
+            delete *oldbmp;
+            }
+        if ( iScreenshots.Insert( aWgId, bmp ) != KErrNone )
+            {
+            delete bmp;
+            iScreenshots.Remove( aWgId );
+            }
+        else
+            {
+            AssignScreenshotHandle( aWgId, bmp->Handle() );
+            }
+        }
+
+    TSLOG_OUT();
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswEngine::HandleFswPpApplicationUnregistered
+// Callback from CTsFastSwapPreviewProvider
+// --------------------------------------------------------------------------
+//
+void CTsFswEngine::HandleFswPpApplicationUnregistered( TInt aWgId )
+    {
+    TSLOG_CONTEXT( HandleFswPpApplicationUnregistered, TSLOG_LOCAL );
+    TSLOG1_IN( "aWgId = %d", aWgId );
+
+    CFbsBitmap** bmp = iScreenshots.Find( aWgId );
+    if ( bmp )
+        {
+        delete *bmp;
+        iScreenshots.Remove( aWgId );
+        AssignScreenshotHandle( aWgId, 0 );
+        }
+
+    TSLOG_OUT();
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswEngine::AssignScreenshotHandle
+// Called when a screenshot arrives to check if there is a corresponding
+// application in the task list.
+// --------------------------------------------------------------------------
+//
+void CTsFswEngine::AssignScreenshotHandle( TInt aWgIdForScreenshot,
+        TInt aBitmapHandle )
+    {
+    TBool changed = EFalse;
+    TInt parentWgId = FindParentWgId( aWgIdForScreenshot );
+    // now parentWgId is a valid wgid or KErrNotFound (-1)
+    for ( TInt i = 0, ie = iData.Count(); i != ie; ++i )
+        {
+        if ( iData[i]->Widget() )
+            {
+            // Do not do anything for now => no screenshot for widgets.
+            continue;
+            }
+        TInt appWgId = iData[i]->WgId();
+        if ( appWgId == aWgIdForScreenshot || appWgId == parentWgId )
+            {
+            iData[i]->SetScreenshotHandle( aBitmapHandle );
+            changed = ETrue;
+            break;
+            }
+        }
+    if ( changed )
+        {
+        iObserver.FswDataChanged();
+        }
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswEngine::LookupScreenshotHandle
+// Called to check if there is a screenshot already stored for the given
+// app. (or a screenshot with a wgid for which aWgIdForApp is the parent)
+// --------------------------------------------------------------------------
+//
+TInt CTsFswEngine::LookupScreenshotHandle( TInt aWgIdForApp )
+    {
+    CFbsBitmap** bmp = iScreenshots.Find( aWgIdForApp );
+    if ( bmp )
+        {
+        // there is a screenshot stored for this wgid
+        return (*bmp)->Handle();
+        }
+    else if ( aWgIdForApp > 0 )
+        {
+        // must check if there is a screenshot for which aWgIdForApp is the parent
+        THashMapIter<TInt, CFbsBitmap*> iter( iScreenshots );
+        while ( const TInt* wgid = iter.NextKey() )
+            {
+            if ( FindParentWgId( *wgid ) == aWgIdForApp )
+                {
+                CFbsBitmap** bmp = iter.CurrentValue();
+                return (*bmp)->Handle();
+                }
+            }
+        }
+    else if ( aWgIdForApp < 0 )
+        {
+        // Must be a widget, wgid is useless in this case.
+        // Do not do anything for now => no screenshot for widgets.
+        }
+    return 0;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswEngine::RunL
+// --------------------------------------------------------------------------
+//
+void CTsFswEngine::RunL()
+    {
+    if ( iStatus != KErrCancel ) // when cancelling the subscribe it completes with KErrCancel
+        {
+        TInt value = 0;
+        if ( iSwiProp.Get( value ) == KErrNone )
+            {
+            TInt operationStatus( value & Swi::KSwisOperationStatusMask );
+            // When an (un)installation has finished change the flag to
+            // refresh the app list during the next task list update.
+            if ( operationStatus == Swi::ESwisStatusSuccess )
+                {
+                iAppDataRefreshNeeded = ETrue;
+                }
+            }
+        iSwiProp.Subscribe( iStatus );
+        SetActive();
+        }
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswEngine::DoCancel
+// --------------------------------------------------------------------------
+//
+void CTsFswEngine::DoCancel()
+    {
+    iSwiProp.Cancel();
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswEngine::RunError
+// --------------------------------------------------------------------------
+//
+TInt CTsFswEngine::RunError( TInt /*aError*/ )
+    {
+    return KErrNone;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswEngine::HandleResourceChange
+// callback from appui's HandleResourceChangeL
+// --------------------------------------------------------------------------
+//
+void CTsFswEngine::HandleResourceChange( TInt aType )
+    {
+    TSLOG_CONTEXT( HandleResourceChange, TSLOG_LOCAL );
+    TSLOG_IN();
+
+    if ( iPreviewProvider && aType == KEikDynamicLayoutVariantSwitch )
+        {
+        SetPreviewParams();
+        }
+
+    TSLOG_OUT();
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswEngine::SetPreviewParams
+// --------------------------------------------------------------------------
+//
+void CTsFswEngine::SetPreviewParams()
+    {
+    TSize screenSize = iEnv->ScreenDevice()->SizeInPixels();
+    iPreviewProvider->SetPreviewParam(
+        TSize( screenSize.iWidth / KScreenSizeFactor,
+            screenSize.iHeight / KScreenSizeFactor ),
+        EColor64K ); // displaymode is ignored
+    }
+
+    
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswserver/engine/src/tsfswiconcache.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,141 @@
+/*
+* 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:  Icon cache
+ *
+*/
+
+
+#include "tsfswiconcache.h"
+#include <fbs.h>
+#include <AknsUtils.h>
+#include <gulicon.h>
+#include <avkon.mbg>
+
+// size for the created app icons
+const TInt KAppIconWidth = 96;
+const TInt KAppIconHeight = 96;
+
+// --------------------------------------------------------------------------
+// CTsFswIconCache::NewL
+// --------------------------------------------------------------------------
+//
+CTsFswIconCache* CTsFswIconCache::NewL()
+    {
+    CTsFswIconCache* self = new (ELeave) CTsFswIconCache;
+    CleanupStack::PushL (self );
+    self->ConstructL ( );
+    CleanupStack::Pop ( self );
+    return self;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswIconCache::CTsFswIconCache
+// --------------------------------------------------------------------------
+//
+CTsFswIconCache::CTsFswIconCache()
+    {
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswIconCache::~CTsFswIconCache
+// --------------------------------------------------------------------------
+//
+CTsFswIconCache::~CTsFswIconCache( )
+    {
+    THashMapIter<TInt, STsBitmapPair> iter( iAppIcons );
+    while ( const TInt* key = iter.NextKey() )
+        {
+        STsBitmapPair* value = iter.CurrentValue();
+        delete value->iBitmap;
+        delete value->iMask;
+        }
+    iAppIcons.Close();
+    delete iDefaultIcon;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswIconCache::ConstructL
+// --------------------------------------------------------------------------
+//
+void CTsFswIconCache::ConstructL()
+    {
+    iDefaultIcon = AknsUtils::CreateGulIconL( 
+        AknsUtils::SkinInstance(),
+        KAknsIIDQgnMenuUnknownCxt,
+        AknIconUtils::AvkonIconFileName(),
+        EMbmAvkonQgn_menu_unknown_cxt,
+        EMbmAvkonQgn_menu_unknown_cxt_mask );
+    TSize sz( KAppIconWidth, KAppIconHeight );
+    AknIconUtils::SetSize( iDefaultIcon->Bitmap(), sz );
+    AknIconUtils::SetSize( iDefaultIcon->Mask(), sz );
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswIconCache::GetAppIconL
+// --------------------------------------------------------------------------
+//
+void CTsFswIconCache::GetAppIconL( const TUid& aAppUid,
+        CFbsBitmap*& aBitmap, CFbsBitmap*& aMask )
+    {
+    aBitmap = aMask = 0;
+    MAknsSkinInstance* skinInstance = AknsUtils::SkinInstance();
+    if ( skinInstance )
+        {
+        AknsUtils::CreateAppIconLC( skinInstance, aAppUid, EAknsAppIconTypeList,
+            aBitmap, aMask );
+        // The CreateAppIconLC method leaves both the bitmaps in the cleanup stack.
+        // The order in which they are pushed into the stack and types of 
+        // the items in the stack are both undefined.
+        CleanupStack::Pop( 2 ); // codescanner::cleanup
+        TSize sz( KAppIconWidth, KAppIconHeight );
+        AknIconUtils::SetSize( aBitmap, sz );
+        AknIconUtils::SetSize( aMask, sz );
+        }
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswIconCache::GetIconL
+// --------------------------------------------------------------------------
+//
+void CTsFswIconCache::GetIconL( const TUid& aAppUid,
+        CFbsBitmap*& aBitmap, CFbsBitmap*& aMask )
+    {
+    aBitmap = aMask = 0;
+    STsBitmapPair* bp = iAppIcons.Find( aAppUid.iUid );
+    if ( bp )
+        {
+        // ownership stays with the hash table
+        aBitmap = bp->iBitmap;
+        aMask = bp->iMask;
+        }
+    else
+        {
+        GetAppIconL( aAppUid, aBitmap, aMask ); // ownership of the bitmap is ours
+        // insert to hash table and pass ownership
+        iAppIcons.InsertL( aAppUid.iUid, STsBitmapPair( aBitmap, aMask ) );
+        }
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswIconCache::DefaultIcon
+// --------------------------------------------------------------------------
+//
+void CTsFswIconCache::DefaultIcon( CFbsBitmap*& aBitmap, CFbsBitmap*& aMask )
+    {
+    aBitmap = iDefaultIcon->Bitmap();
+    aMask = iDefaultIcon->Mask();
+    }
+
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswserver/engine/src/tsfswidgetlist.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,89 @@
+/*
+* 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:  web widget list
+ *
+*/
+
+
+#include "tsfswidgetlist.h"
+#include <widgetregistrydata.h>
+
+// --------------------------------------------------------------------------
+// CTsFsWidgetList::NewL
+// --------------------------------------------------------------------------
+//
+CTsFsWidgetList* CTsFsWidgetList::NewL()
+    {
+    return new (ELeave) CTsFsWidgetList;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFsWidgetList::CTsFsWidgetList
+// --------------------------------------------------------------------------
+//   
+CTsFsWidgetList::CTsFsWidgetList()
+    {
+    }
+
+// --------------------------------------------------------------------------
+// CTsFsWidgetList::~CTsFsWidgetList
+// --------------------------------------------------------------------------
+//
+CTsFsWidgetList::~CTsFsWidgetList()
+    {
+    ResetArrayOfWidgetInfo( iRunningWidgets );        
+    iRunningWidgets.Reset();
+    }
+
+// --------------------------------------------------------------------------
+// CTsFsWidgetList::CleanupConnect
+// --------------------------------------------------------------------------
+//
+void CTsFsWidgetList::CleanupConnect( TAny* aThis )
+    {
+    CTsFsWidgetList* self = static_cast<CTsFsWidgetList*>( aThis );
+    self->iWidgetRegistryClientSession.Disconnect();
+    }
+
+// --------------------------------------------------------------------------
+// CTsFsWidgetList::InitializeWidgetListL
+// --------------------------------------------------------------------------
+//
+void CTsFsWidgetList::InitializeWidgetListL()
+    {
+    ResetArrayOfWidgetInfo( iRunningWidgets );
+    iRunningWidgets.Reset();
+    User::LeaveIfError( iWidgetRegistryClientSession.Connect() );
+    CleanupStack::PushL( TCleanupItem( CleanupConnect, this) );
+    iWidgetRegistryClientSession.RunningWidgetsL(iRunningWidgets);
+    CleanupStack::Pop(); // clean WidgetRegistryClientSession item
+    iWidgetRegistryClientSession.Disconnect();
+    }
+
+// --------------------------------------------------------------------------
+// CTsFsWidgetList::ResetArrayOfWidgetInfo
+// --------------------------------------------------------------------------
+//
+void CTsFsWidgetList::ResetArrayOfWidgetInfo( 
+        RWidgetInfoArray& aWidgetInfoArr )
+    {
+    for ( TInt i = 0; i < aWidgetInfoArr.Count(); i++ )
+        {
+        CWidgetInfo *item = aWidgetInfoArr[i];
+        delete item;
+        }
+    }
+
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswserver/group/bld.inf	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,28 @@
+/*
+* 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:  main build info file
+ *
+*/
+
+
+#include <platform_paths.hrh>
+
+PRJ_EXPORTS
+../rom/tsfswserver.iby CORE_MW_LAYER_IBY_EXPORT_PATH(tsfswserver.iby)
+
+#include "../utils/group/bld.inf"
+#include "../engine/group/bld.inf"
+#include "../server/group/bld.inf"
+#include "../client/group/bld.inf"
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswserver/inc/tsfswclient.h	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,131 @@
+/*
+* 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:  Client API
+ *
+*/
+
+
+#ifndef TSFSWCLIENT_H
+#define TSFSWCLIENT_H
+
+#include <e32std.h>
+#include "tsfswentry.h"
+
+class MTsFswObserver;
+class CTsFswClientImpl;
+
+/**
+ * Client API for the Huriganes Fast Swap Server.
+ */    
+NONSHARABLE_CLASS( CTsFswClient ) : public CBase
+    {
+public:
+    /**
+     * Possible values for aType argument of ForegroundAppUid().
+     */
+    enum TTsFswFgAppType
+        {
+        /**
+         * Means that even when the foreground app has another app embedded
+         * into it the uid of the container application will be returned.
+         */
+        EUseStandaloneUid,
+        /**
+         * Means that if the foreground app has another app embedded
+         * into it then the returned uid will be the uid of the embedded
+         * app.
+         */
+        EUseEmbeddedUid
+        };
+
+    /**
+     * Creates a new instance.
+     * @capability LocalServices
+     */
+    IMPORT_C static CTsFswClient* NewL();
+    
+    /**
+     * Creates a new instance.
+     * @capability LocalServices
+     */
+    IMPORT_C static CTsFswClient* NewLC();
+    
+    /**
+     * Destructor.
+     */
+    ~CTsFswClient();
+    
+    /**
+     * Queries the fast swap content from the server and
+     * copies it into the given array.
+     * Previous content of the array is removed (by using ResetAndDestroy).
+     * @param   aDst    array to which data is stored
+     * @capability LocalServices
+     */
+    IMPORT_C void GetContentL( RTsFswArray& aDst );
+    
+    /**
+     * Subscribes for continuous notifications about changes in the
+     * fast swap content.
+     * The notifications are generated until CancelSubscribe is called
+     * or the instance is destroyed.
+     * @capability LocalServices
+     */
+    IMPORT_C void Subscribe( MTsFswObserver& aObserver );
+    
+    /**
+     * Cancels the subscription for change notifications.
+     * @capability LocalServices
+     */
+    IMPORT_C void CancelSubscribe();
+    
+    /**
+     * Tries to close the application with the given id.
+     * @capability LocalServices
+     */
+    IMPORT_C void CloseApp( TInt aWgId );
+    
+    /**
+     * Brings the application with the given id into foreground.
+     * @capability LocalServices
+     */
+    IMPORT_C void SwitchToApp( TInt aWgId );
+
+    /**
+     * Returns the uid of the foreground app or KNullUid if something goes wrong.
+     *
+     * Will never return hidden apps, only those which can also be seen in the
+     * array returned by GetContentL.
+     *
+     * However the handling of embedded applications might be different:
+     * (as opposed to GetContentL)
+     * If aType == EUseEmbeddedUid:
+     *   This function will always return the embedded application's uid, unlike
+     *   GetContentL which will always refer to the container app (except for the
+     *   screenshot of course). This means that the returned uid is simply the
+     *   uid belonging to the first (non-hidden, etc.) window group from the window group list.
+     * If aType == EUseStandaloneUid:
+     *   Embedded applications are ignored and the returned uid is the app uid belonging
+     *   to the first parentless window group.
+     */
+    IMPORT_C TUid ForegroundAppUid( TTsFswFgAppType aType );
+
+private:
+    CTsFswClient();
+    void ConstructL();
+
+    CTsFswClientImpl* iImpl;
+    };
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswserver/inc/tsfswclientobserver.h	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,37 @@
+/*
+* 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:  Client API
+ *
+*/
+
+
+#ifndef TSFSWCLIENTOBSERVER_H
+#define TSFSWCLIENTOBSERVER_H
+
+#include <e32base.h>
+
+/**
+ * Observer interface for getting notifications about fast swap content changes.
+ */
+class MTsFswObserver
+    {
+public:
+    /**
+     * Called when there is a change in the fast swap content.
+     * The data can be queried via CTsFswClient::GetContentL
+     */
+    virtual void HandleFswContentChanged() = 0;
+    };
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswserver/inc/tsfswcommon.h	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,40 @@
+/*
+* 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:  common constants
+ *
+*/
+
+
+#ifndef TSFSWCOMMON_H
+#define TSFSWCOMMON_H
+
+#include <e32std.h>
+
+_LIT( KTsFswServerName, "tsfswserver" );
+_LIT( KTsFswServerImg, "tsfswserver" );
+
+const TUid KTsFswServerUid = { 0x2001CBE1 };
+
+enum TTsFswServerMessages
+    {
+    ETsFswSubscribe,
+    ETsFswCancel,
+    ETsFswGetBufferSize,
+    ETsFswGetBuffer, // there must be a GetBufferSize request before GetBuffer
+    ETsFswCloseApp,
+    ETsFswSwitchToApp,
+    ETsFswForegroundAppUid
+    };
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswserver/rom/tsfswserver.iby	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,27 @@
+/*
+* 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:  Iby file for fast swap server
+*
+*/
+
+
+#ifndef TSFSWSERVER_IBY
+#define TSFSWSERVER_IBY
+
+file=ABI_DIR/BUILD_DIR/tsfswclient.dll                                     SHARED_LIB_DIR/tsfswclient.dll
+file=ABI_DIR/BUILD_DIR/tsfswutils.dll                                      SHARED_LIB_DIR/tsfswutils.dll
+file=ABI_DIR/BUILD_DIR/tsfswengine.dll                                     SHARED_LIB_DIR/tsfswengine.dll
+file=ABI_DIR/BUILD_DIR/tsfswserver.exe                                     SHARED_LIB_DIR/tsfswserver.exe
+
+#endif 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswserver/server/group/bld.inf	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,20 @@
+/*
+* 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:  server component build info file
+ *
+*/
+
+
+PRJ_MMPFILES
+tsfswserver.mmp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswserver/server/group/tsfswserver.mmp	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,48 @@
+/*
+* 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:  server component
+ *
+*/
+
+
+#include <platform_paths.hrh>
+
+TARGET tsfswserver.exe
+TARGETTYPE EXE
+UID 0x0 0x2001CBE1
+// AllFiles cap needed to get icon for wrt widgets
+CAPABILITY CAP_SERVER AllFiles
+
+SOURCEPATH ../src
+SOURCE          tsfswserver.cpp
+SOURCE          tsfswsession.cpp
+SOURCE          tsfswappui.cpp
+
+MW_LAYER_SYSTEMINCLUDE
+
+USERINCLUDE     ../inc
+USERINCLUDE     ../../inc
+USERINCLUDe     ../../../inc
+
+LIBRARY euser.lib
+LIBRARY estor.lib
+LIBRARY eikcore.lib
+LIBRARY cone.lib
+LIBRARY ws32.lib
+LIBRARY apgrfx.lib
+LIBRARY fbscli.lib
+LIBRARY avkon.lib
+
+LIBRARY tsfswengine.lib
+LIBRARY tsfswutils.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswserver/server/inc/serverlogging.h	Tue Jan 26 11:48:23 2010 +0200
@@ -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:  Defines logs for server
+*
+*/
+
+
+#ifdef _DEBUG // codescanner::ifpreprocessor
+_LIT( KTsLogFile, "tsfswserver.txt" );
+_LIT( KTsLogPath, "taskswitcher" );
+#define _TSLOG_LOG_COMPONENT_ID 0x2001CBE1
+
+#endif
+#include "tslogging.h"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswserver/server/inc/tsfswappui.h	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,63 @@
+/*
+* 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:  appui for server
+ *
+*/
+
+
+#ifndef TSFSWAPPUI_H
+#define TSFSWAPPUI_H
+
+#include <aknappui.h>
+
+class MTsFswTaskListObserver;
+class MTsFswResourceObserver;
+
+/**
+ * Appui for the fsw server.
+ * Reimplements HandleWsEventL from base class to get notifications about
+ * window group changes.
+ */
+class CTsFswAppUi : public CAknAppUi
+    {
+public:
+    ~CTsFswAppUi();
+    void ConstructL();
+
+    /**
+     * Setter function.
+     *
+     * @param aTaskListObserver Observer to be notified if task list
+     *                     has changed
+     */
+    void SetTaskListObserver( MTsFswTaskListObserver& aTaskListObserver );
+
+    /**
+     * Setter function.
+     *
+     * @param aResourceObserver Observer to be notified when resources are changed.
+     */
+    void SetResourceObserver( MTsFswResourceObserver& aResourceObserver );
+
+private:
+    // from CEikAppUi
+    void HandleWsEventL( const TWsEvent& aEvent, CCoeControl* aDestination );
+    void HandleResourceChangeL( TInt aType );
+            
+private:
+    MTsFswTaskListObserver* iTaskListObserver; // not own
+    MTsFswResourceObserver* iResourceObserver; // not own
+    };
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswserver/server/inc/tsfswserver.h	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,78 @@
+/*
+* 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:  server class
+ *
+*/
+
+
+#ifndef TSFSWSERVER_H
+#define TSFSWSERVER_H
+
+#include <e32base.h>
+#include "tsfswcommon.h"
+#include "tsfswobservers.h"
+
+/**
+ * Possible panic reasons.
+ */
+enum TTsFswPanic
+    {
+    EPanicBadDescriptor,
+    EPanicIllegalFunction,
+    EPanicAccessDenied
+    };
+
+/**
+ * Panic name.
+ */
+_LIT( KTsFswPanicName, "tsfsw" );
+
+class CTsFswEngine;
+class CTsFswAppUi;
+
+/**
+ * Ts FastSwap Server.
+ */
+class CTsFswServer : public CServer2, public MTsFswEngineObserver
+    {
+public:
+    static CTsFswServer* NewLC( CTsFswAppUi& aAppUi );
+    ~CTsFswServer();
+    void AddSession();
+    void DropSession();
+
+    void SerializeAndGetBufferSizeL( const RMessage2& aMessage );
+    void GetBufferL( const RMessage2& aMessage );
+    void CloseAppL( TInt aWgId );
+    void SwitchToAppL( TInt aWgId );
+    void ForegroundAppUidL( const RMessage2& aMessage );
+
+private:
+    CTsFswServer( TInt aPriority, CTsFswAppUi& aAppUi );
+    void ConstructL();
+    CSession2* NewSessionL( const TVersion& aVersion,
+        const RMessage2& aMessage ) const;
+        
+    // from MTsFswEngineObserver
+    void FswDataChanged();
+    TInt FswDataListenerCount();
+
+private:
+    TInt iSessionCount;
+    CTsFswEngine* iEngine;
+    CBufFlat* iBuffer;
+    CTsFswAppUi& iAppUi;
+    };
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswserver/server/inc/tsfswsession.h	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,54 @@
+/*
+* 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:  session class for server
+ *
+*/
+
+
+#ifndef TSFSWSESSION_H
+#define TSFSWSESSION_H
+
+#include "tsfswserver.h"
+#include "tsfswentry.h"
+
+/**
+ * Session class.
+ */
+class CTsFswSession : public CSession2
+    {
+public:
+    CTsFswSession();
+    void CreateL();
+    
+    /**
+     * Called from the server when fsw content has changed.
+     */
+    void FswDataChanged();
+    
+    /**
+     * Returns true if there is a pending subscribe request to this session.
+     */
+    TBool IsListening();
+
+private:
+    ~CTsFswSession();
+    CTsFswServer& Server();
+    void ServiceL( const RMessage2& aMessage );
+    void ServiceError( const RMessage2& aMessage, TInt aError );
+    void CompleteSubscribe( TInt aError );
+
+    RArray<RMessage2> iSubscribeRequests; // non-completed ETsFswSubscribe messages
+    };
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswserver/server/src/tsfswappui.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,94 @@
+/*
+* 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:  appui implementation
+ *
+*/
+
+
+#include "tsfswappui.h"
+#include "tsfswobservers.h"
+
+// --------------------------------------------------------------------------
+// CTsFswAppUi::~CTsFswAppUi
+// --------------------------------------------------------------------------
+//
+CTsFswAppUi::~CTsFswAppUi()
+    {
+    // empty
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswAppUi::ConstructL
+// --------------------------------------------------------------------------
+//
+void CTsFswAppUi::ConstructL()
+    {
+    CAknAppUi::BaseConstructL( ENoAppResourceFile | EAknEnableSkin );
+    RWindowGroup& windowGroup = CCoeEnv::Static()->RootWin();
+    windowGroup.EnableFocusChangeEvents();
+    windowGroup.EnableGroupListChangeEvents();
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswAppUi::SetTaskListObserver
+// --------------------------------------------------------------------------
+//
+void CTsFswAppUi::SetTaskListObserver( MTsFswTaskListObserver& aTaskListObserver )
+    {
+    iTaskListObserver = &aTaskListObserver;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswAppUi::SetResourceObserver
+// --------------------------------------------------------------------------
+//
+void CTsFswAppUi::SetResourceObserver( MTsFswResourceObserver& aResourceObserver )
+    {
+    iResourceObserver = &aResourceObserver;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswAppUi::HandleWsEventL
+// --------------------------------------------------------------------------
+//
+void CTsFswAppUi::HandleWsEventL( const TWsEvent& aEvent, CCoeControl* aDestination )
+    {
+    TInt eventType = aEvent.Type();
+
+    if ( eventType == EEventFocusGroupChanged
+            || eventType == EEventWindowGroupListChanged )
+        {
+        if ( iTaskListObserver )
+            {
+            iTaskListObserver->UpdateTaskList();
+            }
+        }
+
+    CAknAppUi::HandleWsEventL( aEvent, aDestination );
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswAppUi::HandleResourceChangeL
+// --------------------------------------------------------------------------
+//
+void CTsFswAppUi::HandleResourceChangeL( TInt aType ) // codescanner::LFunctionCantLeave (virtual)
+    {
+    if ( iResourceObserver )
+        {
+        iResourceObserver->HandleResourceChange( aType );
+        }
+    }
+
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswserver/server/src/tsfswserver.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,282 @@
+/*
+* 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:  server implementation
+ *
+*/
+
+
+#include "tsfswserver.h"
+#include "tsfswsession.h"
+#include "tsfswappui.h"
+#include "tsfswengine.h"
+
+#include <s32mem.h>
+#include <eikenv.h>
+#include <apgwgnam.h>
+
+// --------------------------------------------------------------------------
+// CTsFswServer::CTsFswServer
+// --------------------------------------------------------------------------
+//
+CTsFswServer::CTsFswServer( TInt aPriority, CTsFswAppUi& aAppUi )
+        : CServer2( aPriority ), iAppUi( aAppUi )
+    {
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswServer::NewLC
+// --------------------------------------------------------------------------
+//
+CTsFswServer* CTsFswServer::NewLC( CTsFswAppUi& aAppUi )
+    {
+    CTsFswServer* self = new ( ELeave ) CTsFswServer(
+        EPriorityNormal, aAppUi );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    return self;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswServer::ConstructL
+// --------------------------------------------------------------------------
+//
+void CTsFswServer::ConstructL()
+    {
+    StartL( KTsFswServerName );
+    iEngine = CTsFswEngine::NewL( *this );
+    iAppUi.SetTaskListObserver( *iEngine );
+    iAppUi.SetResourceObserver( *iEngine );
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswServer::~CTsFswServer
+// --------------------------------------------------------------------------
+//
+CTsFswServer::~CTsFswServer()
+    {
+    delete iBuffer;
+    delete iEngine;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswServer::NewSessionL
+// --------------------------------------------------------------------------
+//
+CSession2* CTsFswServer::NewSessionL( const TVersion&,
+        const RMessage2& ) const
+    {
+    return new ( ELeave ) CTsFswSession;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswServer::AddSession
+// --------------------------------------------------------------------------
+//
+void CTsFswServer::AddSession()
+    {
+    ++iSessionCount;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswServer::DropSession
+// --------------------------------------------------------------------------
+//
+void CTsFswServer::DropSession()
+    {
+    --iSessionCount;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswServer::SerializeAndGetBufferSizeL
+// --------------------------------------------------------------------------
+//
+void CTsFswServer::SerializeAndGetBufferSizeL( const RMessage2& aMessage )
+    {
+    const TInt KBufferExpandSize = 128;
+    const RTsFswArray& array( iEngine->FswDataL() );
+    delete iBuffer; iBuffer = NULL;
+    iBuffer = CBufFlat::NewL( KBufferExpandSize );
+    RBufWriteStream ws;
+    CleanupClosePushL( ws );
+    ws.Open( *iBuffer );
+    CTsFswEntry::ExternalizeArrayL( ws, array );
+    CleanupStack::PopAndDestroy( &ws );
+    TPtr8 p( iBuffer->Ptr( 0 ) );
+    TPckg<TInt> size( p.Length() );
+    aMessage.WriteL( 0, size );
+    aMessage.Complete( KErrNone );
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswServer::GetBufferL
+// --------------------------------------------------------------------------
+//
+void CTsFswServer::GetBufferL( const RMessage2& aMessage )
+    {
+    if ( !iBuffer )
+        {
+        User::Leave( KErrGeneral );
+        }
+    TPtr8 p( iBuffer->Ptr( 0 ) );
+    // If the size expected by the client does not match indicate it with a leave
+    // so the client can recognize it by checking the return value of SendReceive
+    // and can request the buffer size again.
+    if ( p.Length() != aMessage.Int1() )
+        {
+        User::Leave( KErrArgument );
+        }
+    aMessage.WriteL( 0, p );
+    aMessage.Complete( KErrNone );
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswServer::CloseAppL
+// --------------------------------------------------------------------------
+//
+void CTsFswServer::CloseAppL( TInt aWgId )
+    {
+    iEngine->CloseAppL( aWgId );
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswServer::SwitchToAppL
+// --------------------------------------------------------------------------
+//
+void CTsFswServer::SwitchToAppL( TInt aWgId )
+    {
+    iEngine->SwitchToAppL( aWgId );
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswServer::ForegroundAppUidL
+// --------------------------------------------------------------------------
+//
+void CTsFswServer::ForegroundAppUidL( const RMessage2& aMessage )
+    {
+    TUid uid = iEngine->ForegroundAppUidL( aMessage.Int1() );
+    TPckg<TInt> uidPckg( uid.iUid );
+    aMessage.WriteL( 0, uidPckg );
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswServer::FswDataChanged
+// callback from engine
+// --------------------------------------------------------------------------
+//
+void CTsFswServer::FswDataChanged()
+    {
+    // notify all sessions about the change
+    iSessionIter.SetToFirst();
+    while ( CTsFswSession* session = static_cast<CTsFswSession*>( iSessionIter++ ) )
+        {
+        if ( session->IsListening() )
+            {
+            session->FswDataChanged();
+            }
+        }
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswServer::FswDataListenersCount
+// callback from engine
+// --------------------------------------------------------------------------
+//
+TInt CTsFswServer::FswDataListenerCount()
+    {
+    TInt n = 0;
+    iSessionIter.SetToFirst();
+    while ( CTsFswSession* session = static_cast<CTsFswSession*>( iSessionIter++ ) )
+        {
+        if ( session->IsListening() )
+            {
+            ++n;
+            }
+        }
+    return n;
+    }
+
+// --------------------------------------------------------------------------
+// RunServerL
+// --------------------------------------------------------------------------
+//
+static void RunServerL( CTsFswAppUi& aAppUi, CEikonEnv& aEnv )
+    {
+    // change thread name
+    User::LeaveIfError( RThread::RenameMe( KTsFswServerName ) );
+
+    // set app as hidden
+    CApaWindowGroupName* wgName =
+        CApaWindowGroupName::NewL( aEnv.WsSession(),
+            aEnv.RootWin().Identifier() );
+    wgName->SetHidden( ETrue );
+    wgName->SetWindowGroupName( aEnv.RootWin() );
+    delete wgName;
+
+    // start server
+    CTsFswServer* server = CTsFswServer::NewLC( aAppUi );
+    RProcess::Rendezvous( KErrNone );
+    CActiveScheduler::Start();
+    CleanupStack::PopAndDestroy( server );
+    }
+
+// --------------------------------------------------------------------------
+// E32Main
+// --------------------------------------------------------------------------
+//
+TInt E32Main()
+    {
+    __UHEAP_MARK;
+    CTrapCleanup* cleanup = CTrapCleanup::New();
+    TInt err = KErrNoMemory;
+    if ( cleanup )
+        {
+        CEikonEnv* env = new CEikonEnv;
+        if ( env )
+            {
+            TRAP( err, env->ConstructL() );
+            if ( err == KErrNone )
+                {
+                env->DisableExitChecks( ETrue );
+                CTsFswAppUi* ui = new CTsFswAppUi;
+                if ( ui )
+                    {
+                    TRAP( err, ui->ConstructL() );
+                    if ( err == KErrNone )
+                        {
+                        // hide from tasklist and prevent from coming foreground
+                        env->RootWin().SetOrdinalPosition( 0,
+                            ECoeWinPriorityNeverAtFront );
+                        // set as system app so will not be closed when memory is low
+                        env->SetSystem( ETrue );
+                        
+                        RFbsSession::Connect();
+                        
+                        TRAP( err, RunServerL( *ui, *env ) );
+                        
+                        RFbsSession::Disconnect();
+                        
+                        ui->PrepareToExit();
+                        }
+                    }
+                }
+            env->DestroyEnvironment();
+            }
+        delete cleanup;
+        }
+    __UHEAP_MARKEND;
+    return err;
+    }
+
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswserver/server/src/tsfswsession.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,158 @@
+/*
+* 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:  session implementation
+ *
+*/
+
+
+#include "tsfswsession.h"
+
+// --------------------------------------------------------------------------
+// CTsFswSession::CTsFswSession
+// --------------------------------------------------------------------------
+//
+CTsFswSession::CTsFswSession()
+    {
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswSession::Server
+// --------------------------------------------------------------------------
+//
+CTsFswServer& CTsFswSession::Server()
+    {
+    return *static_cast<CTsFswServer*>(
+        const_cast<CServer2*>( CSession2::Server() ) );
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswSession::CreateL
+// --------------------------------------------------------------------------
+//
+void CTsFswSession::CreateL() // codescanner::LFunctionCantLeave (virtual)
+    {
+    Server().AddSession();
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswSession::~CTsFswSession
+// --------------------------------------------------------------------------
+//
+CTsFswSession::~CTsFswSession()
+    {
+    CompleteSubscribe( KErrCancel );
+    iSubscribeRequests.Close();
+    Server().DropSession();
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswSession::CompleteSubscribe
+// --------------------------------------------------------------------------
+//
+void CTsFswSession::CompleteSubscribe( TInt aError )
+    {
+    for ( TInt i = 0, ie = iSubscribeRequests.Count(); i != ie; ++i )
+        {
+        iSubscribeRequests[i].Complete( aError );
+        }
+    iSubscribeRequests.Reset();
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswSession::ServiceL
+// --------------------------------------------------------------------------
+//
+void CTsFswSession::ServiceL( const RMessage2& aMessage )
+    {
+    if ( !aMessage.HasCapability( ECapabilityLocalServices ) )
+        {
+        aMessage.Panic( KTsFswPanicName, EPanicAccessDenied );
+        return;
+        }
+
+    switch ( aMessage.Function() )
+        {
+    case ETsFswSubscribe:
+        iSubscribeRequests.AppendL( aMessage );
+        break;
+
+    case ETsFswCancel:
+        CompleteSubscribe( KErrCancel );
+        aMessage.Complete( KErrNone );
+        break;
+
+    case ETsFswGetBufferSize:
+        Server().SerializeAndGetBufferSizeL( aMessage );
+        break;
+
+    case ETsFswGetBuffer:
+        Server().GetBufferL( aMessage );
+        break;
+
+    case ETsFswCloseApp:
+        Server().CloseAppL( aMessage.Int0() );
+        aMessage.Complete( KErrNone );
+        break;
+
+    case ETsFswSwitchToApp:
+        Server().SwitchToAppL( aMessage.Int0() );
+        aMessage.Complete( KErrNone );
+        break;
+        
+    case ETsFswForegroundAppUid:
+        Server().ForegroundAppUidL( aMessage );
+        aMessage.Complete( KErrNone );
+        break;
+
+    default:
+        aMessage.Panic( KTsFswPanicName, EPanicIllegalFunction );
+        break;
+        }
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswSession::ServiceError
+// --------------------------------------------------------------------------
+//
+void CTsFswSession::ServiceError( const RMessage2& aMessage,
+        TInt aError )
+    {
+    if ( aError == KErrBadDescriptor )
+        {
+        aMessage.Panic( KTsFswPanicName, EPanicBadDescriptor );
+        }
+    CSession2::ServiceError( aMessage, aError );
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswSession::FswDataChanged
+// called by server when notification is received from engine
+// --------------------------------------------------------------------------
+//
+void CTsFswSession::FswDataChanged()
+    {
+    CompleteSubscribe( KErrNone );
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswSession::IsListening
+// --------------------------------------------------------------------------
+//
+TBool CTsFswSession::IsListening()
+    {
+    return iSubscribeRequests.Count() > 0;
+    }
+
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswserver/utils/bwins/tsfswutilsu.def	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,25 @@
+EXPORTS
+	?ScreenshotHandle@CTsFswEntry@@QBEHXZ @ 1 NONAME ; int CTsFswEntry::ScreenshotHandle(void) const
+	?AlwaysShown@CTsFswEntry@@QBEHXZ @ 2 NONAME ; int CTsFswEntry::AlwaysShown(void) const
+	?SystemApp@CTsFswEntry@@QBEHXZ @ 3 NONAME ; int CTsFswEntry::SystemApp(void) const
+	?SetAppNameL@CTsFswEntry@@QAEXABVTDesC16@@@Z @ 4 NONAME ; void CTsFswEntry::SetAppNameL(class TDesC16 const &)
+	?ExternalizeL@CTsFswEntry@@QAEXAAVRWriteStream@@@Z @ 5 NONAME ; void CTsFswEntry::ExternalizeL(class RWriteStream &)
+	?ExternalizeArrayL@CTsFswEntry@@SAXAAVRWriteStream@@ABV?$RPointerArray@VCTsFswEntry@@@@@Z @ 6 NONAME ; void CTsFswEntry::ExternalizeArrayL(class RWriteStream &, class RPointerArray<class CTsFswEntry> const &)
+	?AppName@CTsFswEntry@@QBEABVTDesC16@@XZ @ 7 NONAME ; class TDesC16 const & CTsFswEntry::AppName(void) const
+	?AppUid@CTsFswEntry@@QBE?AVTUid@@XZ @ 8 NONAME ; class TUid CTsFswEntry::AppUid(void) const
+	?AppIconMaskHandle@CTsFswEntry@@QBEHXZ @ 9 NONAME ; int CTsFswEntry::AppIconMaskHandle(void) const
+	?SetAppIconHandles@CTsFswEntry@@QAEXHH@Z @ 10 NONAME ; void CTsFswEntry::SetAppIconHandles(int, int)
+	?SetAlwaysShown@CTsFswEntry@@QAEXH@Z @ 11 NONAME ; void CTsFswEntry::SetAlwaysShown(int)
+	?NewLC@CTsFswEntry@@SAPAV1@XZ @ 12 NONAME ; class CTsFswEntry * CTsFswEntry::NewLC(void)
+	?NewL@CTsFswEntry@@SAPAV1@XZ @ 13 NONAME ; class CTsFswEntry * CTsFswEntry::NewL(void)
+	?WgId@CTsFswEntry@@QBEHXZ @ 14 NONAME ; int CTsFswEntry::WgId(void) const
+	?SetWidget@CTsFswEntry@@QAEXH@Z @ 15 NONAME ; void CTsFswEntry::SetWidget(int)
+	?SetAppUid@CTsFswEntry@@QAEXABVTUid@@@Z @ 16 NONAME ; void CTsFswEntry::SetAppUid(class TUid const &)
+	?SetWgId@CTsFswEntry@@QAEXH@Z @ 17 NONAME ; void CTsFswEntry::SetWgId(int)
+	?SetScreenshotHandle@CTsFswEntry@@QAEXH@Z @ 18 NONAME ; void CTsFswEntry::SetScreenshotHandle(int)
+	?InternalizeL@CTsFswEntry@@QAEXAAVRReadStream@@@Z @ 19 NONAME ; void CTsFswEntry::InternalizeL(class RReadStream &)
+	?AppIconBitmapHandle@CTsFswEntry@@QBEHXZ @ 20 NONAME ; int CTsFswEntry::AppIconBitmapHandle(void) const
+	?SetSystemApp@CTsFswEntry@@QAEXH@Z @ 21 NONAME ; void CTsFswEntry::SetSystemApp(int)
+	?Widget@CTsFswEntry@@QBEHXZ @ 22 NONAME ; int CTsFswEntry::Widget(void) const
+	?InternalizeArrayL@CTsFswEntry@@SAXAAVRReadStream@@AAV?$RPointerArray@VCTsFswEntry@@@@@Z @ 23 NONAME ; void CTsFswEntry::InternalizeArrayL(class RReadStream &, class RPointerArray<class CTsFswEntry> &)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswserver/utils/eabi/tsfswutilsu.def	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,25 @@
+EXPORTS
+	_ZN11CTsFswEntry11SetAppNameLERK7TDesC16 @ 1 NONAME
+	_ZN11CTsFswEntry12ExternalizeLER12RWriteStream @ 2 NONAME
+	_ZN11CTsFswEntry12InternalizeLER11RReadStream @ 3 NONAME
+	_ZN11CTsFswEntry12SetSystemAppEi @ 4 NONAME
+	_ZN11CTsFswEntry14SetAlwaysShownEi @ 5 NONAME
+	_ZN11CTsFswEntry17ExternalizeArrayLER12RWriteStreamRK13RPointerArrayIS_E @ 6 NONAME
+	_ZN11CTsFswEntry17InternalizeArrayLER11RReadStreamR13RPointerArrayIS_E @ 7 NONAME
+	_ZN11CTsFswEntry17SetAppIconHandlesEii @ 8 NONAME
+	_ZN11CTsFswEntry19SetScreenshotHandleEi @ 9 NONAME
+	_ZN11CTsFswEntry4NewLEv @ 10 NONAME
+	_ZN11CTsFswEntry5NewLCEv @ 11 NONAME
+	_ZN11CTsFswEntry7SetWgIdEi @ 12 NONAME
+	_ZN11CTsFswEntry9SetAppUidERK4TUid @ 13 NONAME
+	_ZN11CTsFswEntry9SetWidgetEi @ 14 NONAME
+	_ZNK11CTsFswEntry11AlwaysShownEv @ 15 NONAME
+	_ZNK11CTsFswEntry16ScreenshotHandleEv @ 16 NONAME
+	_ZNK11CTsFswEntry17AppIconMaskHandleEv @ 17 NONAME
+	_ZNK11CTsFswEntry19AppIconBitmapHandleEv @ 18 NONAME
+	_ZNK11CTsFswEntry4WgIdEv @ 19 NONAME
+	_ZNK11CTsFswEntry6AppUidEv @ 20 NONAME
+	_ZNK11CTsFswEntry6WidgetEv @ 21 NONAME
+	_ZNK11CTsFswEntry7AppNameEv @ 22 NONAME
+	_ZNK11CTsFswEntry9SystemAppEv @ 23 NONAME
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswserver/utils/group/bld.inf	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,23 @@
+/*
+* 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:  build info file for utility component
+ *
+*/
+
+
+PRJ_EXPORTS
+../inc/tsfswentry.h     |../../../inc/tsfswentry.h
+
+PRJ_MMPFILES
+tsfswutils.mmp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswserver/utils/group/tsfswutils.mmp	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,32 @@
+/*
+* 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:  utility component
+ *
+*/
+
+
+#include <platform_paths.hrh>
+
+TARGET  tsfswutils.dll
+TARGETTYPE DLL
+CAPABILITY CAP_GENERAL_DLL
+
+SOURCEPATH      ../src
+SOURCE          tsfswentry.cpp
+
+MW_LAYER_SYSTEMINCLUDE
+USERINCLUDE     ../inc
+
+LIBRARY euser.lib
+LIBRARY estor.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswserver/utils/inc/tsfswentry.h	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,129 @@
+/*
+* 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:  Task list entry
+ *
+*/
+
+
+#ifndef TSFSWENTRY_H
+#define TSFSWENTRY_H
+
+#include <e32base.h>
+#include <e32cmn.h>
+
+class CTsFswEntry;
+class RReadStream;
+class RWriteStream;
+
+typedef RPointerArray<CTsFswEntry> RTsFswArray;
+
+/**
+ * An entry in the task list.
+ */
+NONSHARABLE_CLASS( CTsFswEntry ) : public CBase
+    {
+public:
+    IMPORT_C static CTsFswEntry* NewL();
+    IMPORT_C static CTsFswEntry* NewLC();
+    ~CTsFswEntry();
+
+    /**
+     * Window group id.
+     * In case of wrt widgets this is negative and is not a valid window group id.
+     * Use this when calling CloseApp or SwitchToApp. (these work with widgets too)
+     */
+    IMPORT_C TInt WgId() const;
+    
+    /**
+     * Application uid.
+     */
+    IMPORT_C TUid AppUid() const;
+    
+    /**
+     * Application name.
+     */
+    IMPORT_C const TDesC& AppName() const;
+    
+    /**
+     * Bitmap handle to the screenshot or 0 if not available.
+     */
+    IMPORT_C TInt ScreenshotHandle() const;
+    
+    /**
+     * ETrue if the application is always shown in the fast swapper.
+     * (no use to call CloseApp for such an application)
+     */
+    IMPORT_C TBool AlwaysShown() const;
+
+    /**
+     * ETrue if the application is a system application.
+     * (no use to call CloseApp for such an application)
+     */
+    IMPORT_C TBool SystemApp() const;
+
+    /**
+     * ETrue if this is a wrt widget.
+     */
+    IMPORT_C TBool Widget() const;
+    
+    /**
+     * Application icon bitmap handle or 0.
+     * If may not be set if the screenshot is available, i.e. it is
+     * only guaranteed to be non-zero when ScreenshotHandle() returns 0.
+     */
+    IMPORT_C TInt AppIconBitmapHandle() const;
+    
+    /**
+     * Application icon mask handle.
+     * @see AppIconBitmapHandle
+     * The mask handle may be 0 even when the bitmap handle is non-zero.
+     */
+    IMPORT_C TInt AppIconMaskHandle() const;
+
+
+    IMPORT_C void SetWgId( TInt aWgId );
+    IMPORT_C void SetAppUid( const TUid& aUid );
+    IMPORT_C void SetAppNameL( const TDesC& aAppName );
+    IMPORT_C void SetScreenshotHandle( TInt aHandle );
+    IMPORT_C void SetAlwaysShown( TBool aValue );
+    IMPORT_C void SetSystemApp( TBool aValue );
+    IMPORT_C void SetWidget( TBool aValue );
+    IMPORT_C void SetAppIconHandles( TInt aBitmapHandle, TInt aMaskHandle );
+
+    IMPORT_C void ExternalizeL( RWriteStream& aStream );
+    IMPORT_C void InternalizeL( RReadStream& aStream );
+
+    IMPORT_C static void ExternalizeArrayL( RWriteStream& aStream,
+        const RTsFswArray& aArray );
+    IMPORT_C static void InternalizeArrayL( RReadStream& aStream,
+        RTsFswArray& aArray );
+
+private:
+    TInt iWgId;
+    TUid iAppUid;
+    HBufC* iAppName;
+    TInt iScreenshotHandle;
+    TBool iAlwaysShown;
+    TBool iSystemApp;
+    TBool iWidget;
+    TInt iAppIconBitmapHandle;
+    TInt iAppIconMaskHandle;
+    
+    TInt iReserved0;
+    TInt iReserved1;
+    TInt iReserved2;
+    TInt iReserved3;
+    };
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswserver/utils/inc/utilslogging.h	Tue Jan 26 11:48:23 2010 +0200
@@ -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:  Defines logs for utils
+*
+*/
+
+
+#ifdef _DEBUG // codescanner::ifpreprocessor
+_LIT( KTsLogFile, "tsfswutils.txt" );
+_LIT( KTsLogPath, "taskswitcher" );
+#define _TSLOG_LOG_COMPONENT_ID 0x0000000
+
+#endif
+#include "tslogging.h"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/contextengine/tsfswserver/utils/src/tsfswentry.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,277 @@
+/*
+* 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:  Task list entry
+ *
+*/
+
+
+#include "tsfswentry.h"
+#include <s32strm.h>
+
+// --------------------------------------------------------------------------
+// CTsFswEntry::NewL
+// --------------------------------------------------------------------------
+//
+EXPORT_C CTsFswEntry* CTsFswEntry::NewL()
+    {
+    CTsFswEntry* self = NewLC();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswEntry::NewLC
+// --------------------------------------------------------------------------
+//
+EXPORT_C CTsFswEntry* CTsFswEntry::NewLC()
+    {
+    CTsFswEntry* self = new ( ELeave ) CTsFswEntry;
+    CleanupStack::PushL( self );
+    return self;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswEntry::~CTsFswEntry
+// --------------------------------------------------------------------------
+//
+CTsFswEntry::~CTsFswEntry()
+    {
+    delete iAppName;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswEntry::SetWgId
+// --------------------------------------------------------------------------
+//
+EXPORT_C void CTsFswEntry::SetWgId( TInt aWgId )
+    {
+    iWgId = aWgId;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswEntry::SetAppUid
+// --------------------------------------------------------------------------
+//
+EXPORT_C void CTsFswEntry::SetAppUid( const TUid& aUid )
+    {
+    iAppUid = aUid;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswEntry::SetAppNameL
+// --------------------------------------------------------------------------
+//
+EXPORT_C void CTsFswEntry::SetAppNameL( const TDesC& aAppName )
+    {
+    delete iAppName; iAppName = 0;
+    iAppName = aAppName.AllocL();
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswEntry::SetScreenshotHandle
+// --------------------------------------------------------------------------
+//
+EXPORT_C void CTsFswEntry::SetScreenshotHandle( TInt aHandle )
+    {
+    iScreenshotHandle = aHandle;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswEntry::SetAlwaysShown
+// --------------------------------------------------------------------------
+//
+EXPORT_C void CTsFswEntry::SetAlwaysShown( TBool aValue )
+    {
+    iAlwaysShown = aValue;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswEntry::SetSystemApp
+// --------------------------------------------------------------------------
+//
+EXPORT_C void CTsFswEntry::SetSystemApp( TBool aValue )
+    {
+    iSystemApp = aValue;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswEntry::SetWidget
+// --------------------------------------------------------------------------
+//
+EXPORT_C void CTsFswEntry::SetWidget( TBool aValue )
+    {
+    iWidget = aValue;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswEntry::SetAppIconHandles
+// --------------------------------------------------------------------------
+//
+EXPORT_C void CTsFswEntry::SetAppIconHandles( TInt aBitmapHandle, TInt aMaskHandle )
+    {
+    iAppIconBitmapHandle = aBitmapHandle;
+    iAppIconMaskHandle = aMaskHandle;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswEntry::WgId
+// --------------------------------------------------------------------------
+//
+EXPORT_C TInt CTsFswEntry::WgId() const
+    {
+    return iWgId;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswEntry::AppUid
+// --------------------------------------------------------------------------
+//
+EXPORT_C TUid CTsFswEntry::AppUid() const
+    {
+    return iAppUid;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswEntry::AppName
+// --------------------------------------------------------------------------
+//
+EXPORT_C const TDesC& CTsFswEntry::AppName() const
+    {
+    return iAppName ? *iAppName : KNullDesC();
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswEntry::ScreenshotHandle
+// --------------------------------------------------------------------------
+//
+EXPORT_C TInt CTsFswEntry::ScreenshotHandle() const
+    {
+    return iScreenshotHandle;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswEntry::AlwaysShown
+// --------------------------------------------------------------------------
+//
+EXPORT_C TBool CTsFswEntry::AlwaysShown() const
+    {
+    return iAlwaysShown;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswEntry::SystemApp
+// --------------------------------------------------------------------------
+//
+EXPORT_C TBool CTsFswEntry::SystemApp() const
+    {
+    return iSystemApp;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswEntry::Widget
+// --------------------------------------------------------------------------
+//
+EXPORT_C TBool CTsFswEntry::Widget() const
+    {
+    return iWidget;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswEntry::AppIconBitmapHandle
+// --------------------------------------------------------------------------
+//
+EXPORT_C TInt CTsFswEntry::AppIconBitmapHandle() const
+    {
+    return iAppIconBitmapHandle;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswEntry::AppIconMaskHandle
+// --------------------------------------------------------------------------
+//
+EXPORT_C TInt CTsFswEntry::AppIconMaskHandle() const
+    {
+    return iAppIconMaskHandle;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswEntry::ExternalizeL
+// --------------------------------------------------------------------------
+//
+EXPORT_C void CTsFswEntry::ExternalizeL( RWriteStream& aStream )
+    {
+    aStream.WriteInt32L( iWgId );
+    aStream.WriteInt32L( iAppUid.iUid );
+    aStream << AppName();
+    aStream.WriteInt32L( iScreenshotHandle );
+    aStream.WriteInt32L( iAlwaysShown );
+    aStream.WriteInt32L( iSystemApp );
+    aStream.WriteInt32L( iWidget );
+    aStream.WriteInt32L( iAppIconBitmapHandle );
+    aStream.WriteInt32L( iAppIconMaskHandle );
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswEntry::InternalizeL
+// --------------------------------------------------------------------------
+//
+EXPORT_C void CTsFswEntry::InternalizeL( RReadStream& aStream )
+    {
+    iWgId = aStream.ReadInt32L();
+    iAppUid = TUid::Uid( aStream.ReadInt32L() );
+    delete iAppName; iAppName = 0;
+    iAppName = HBufC::NewL( aStream, KMaxTInt );
+    iScreenshotHandle = aStream.ReadInt32L();
+    iAlwaysShown = aStream.ReadInt32L();
+    iSystemApp = aStream.ReadInt32L();
+    iWidget = aStream.ReadInt32L();
+    iAppIconBitmapHandle = aStream.ReadInt32L();
+    iAppIconMaskHandle = aStream.ReadInt32L();
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswEntry::ExternalizeArrayL
+// --------------------------------------------------------------------------
+//
+EXPORT_C void CTsFswEntry::ExternalizeArrayL( RWriteStream& aStream,
+        const RTsFswArray& aArray )
+    {
+    TInt count = aArray.Count();
+    aStream.WriteInt32L( count );
+    for ( TInt i = 0; i < count; ++i )
+        {
+        aArray[i]->ExternalizeL( aStream );
+        }
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswEntry::InternalizeArrayL
+// --------------------------------------------------------------------------
+//
+EXPORT_C void CTsFswEntry::InternalizeArrayL( RReadStream& aStream,
+        RTsFswArray& aArray )
+    {
+    aArray.ResetAndDestroy();
+    TInt count = aStream.ReadInt32L();
+    for ( TInt i = 0; i < count; ++i )
+        {
+        CTsFswEntry* entry = CTsFswEntry::NewLC();
+        entry->InternalizeL( aStream );
+        aArray.AppendL( entry );
+        CleanupStack::Pop( entry );
+        }
+    }
+
+
+// end of file
--- a/taskswitcher/group/bld.inf	Fri Jan 22 09:35:14 2010 +0200
+++ b/taskswitcher/group/bld.inf	Tue Jan 26 11:48:23 2010 +0200
@@ -1,21 +1,21 @@
 /*
-* ============================================================================
-*  Name        : bld.inf
-*  Part of     : Huriganes / Teleport
-*  Description : Build info file for Teleport
-*  Version     : %version: sa1spcx1#33 %
+* 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".
 *
-*  Copyright © 2008 Nokia.  All rights reserved.
-*  This material, including documentation and any related computer
-*  programs, is protected by copyright controlled by Nokia.  All
-*  rights are reserved.  Copying, including reproducing, storing,
-*  adapting or translating, any or all of this material requires the
-*  prior written consent of Nokia.  This material also contains
-*  confidential information which may not be disclosed to others
-*  without the prior written consent of Nokia.
-* ============================================================================
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Build info file for Taskswitcher
+*
 */
 
+
 #include "../contextengine/group/bld.inf"
-#include "../teleportui/group/bld.inf"
+#include "../taskswitcherui/group/bld.inf"
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/taskswitcherui/group/bld.inf	Tue Jan 26 11:48:23 2010 +0200
@@ -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 <platform_paths.hrh>
+
+PRJ_EXPORTS
+// iby file
+../rom/taskswitcher.iby             CORE_MW_LAYER_IBY_EXPORT_PATH(taskswitcher.iby)
+../rom/taskswitcherresources.iby    LANGUAGE_MW_LAYER_IBY_EXPORT_PATH(taskswitcherresources.iby)
+
+// stub sis
+../sis/stubs/taskswitcher_stub.sis                  /epoc32/data/z/system/install/taskswitcher_stub.sis
+../sis/stubs/taskswitcher_stub.sis                  /epoc32/release/winscw/udeb/z/system/install/taskswitcher_stub.sis
+
+#include "../taskswitcherappecom/group/bld.inf"
+#include "../taskswitcherapp/group/bld.inf"
+
+PRJ_MMPFILES
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/taskswitcherui/inc/tsappuid.hrh	Tue Jan 26 11:48:23 2010 +0200
@@ -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 TSAPPUID_HRH
+#define TSAPPUID_HRH
+
+#define KTsAppUidValue      0x20016BF0
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/taskswitcherui/inc/tsgraphicids.h	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,30 @@
+/*
+* 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 TSGRAPHICIDS_H
+#define TSGRAPHICIDS_H
+
+#include <e32base.h>
+
+/**
+ * Logical IDs for all icons used in Taskswitcher.
+ */
+enum TTsGraphicId
+    {
+    ETsGraphicIdLAST
+    };
+
+#endif // TSGRAPHICIDS_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/taskswitcherui/inc/tsgraphictab.h	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,48 @@
+/*
+* 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 TSGRAPHICTAB_H
+#define TSGRAPHICTAB_H
+
+#include <e32base.h>
+
+#include <AknUtils.h>
+#include <AknsUtils.h>          // skinned icons
+#include <AknsConstants.h>      // skinned icon ids
+
+
+/**
+ * Name of image file in case icon is not available from the skin.
+ * Path should not be included.
+ * Use _S( "" ) if skin id should be used instead.
+ * Order and count must match TTsGraphicId. (except the last-marker)
+ */
+static const TText* const KTsGraphicFiles[] =
+    {
+    _S( "" )
+    };
+
+/**
+ * Skin related IDs. Not in use yet.
+ * Use all zeros if image file should be used instead.
+ * Order and count must match TTsGraphicId. (except the last-marker)
+ */
+static const TAknsItemID KTsGraphicSkinIds[] =
+    {
+    KAknsIIDNone
+    };
+
+#endif // TSGRAPHICTAB_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/taskswitcherui/inc/tsuid.hrh	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,24 @@
+/*
+* 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:  Taskswitcher application's UID3
+ *
+*/
+
+
+#ifndef TSAPPUID_HRH
+#define TSAPPUID_HRH
+
+#define KTsAppUidValue      0x20016BF0
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/taskswitcherui/rom/taskswitcher.iby	Tue Jan 26 11:48:23 2010 +0200
@@ -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: 
+*
+*/
+#ifndef TASKSWITCHER_IBY
+#define TASKSWITCHER_IBY
+
+// AknCapServer alternate fast swap plugin
+ECOM_PLUGIN( tsappecom.dll, tsappecom.rsc )
+
+data=DATAZ_/private/10003a3f/apps/tstaskswitcher_reg.rsc                          private/10003a3f/import/apps/tstaskswitcher_reg.rsc
+file=ABI_DIR/BUILD_DIR/taskswitcher.exe                                           PROGRAMS_DIR/hgteleport.exe
+
+// backup registration
+data=DATAZ_/private/20016BF0/backup_registration.xml                            private/20016BF0/backup_registration.xml
+
+// stub sis
+data=ZSYSTEM/install/taskswitcher_stub.sis                  system/install/taskswitcher_stub.sis
+
+#endif 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/taskswitcherui/rom/taskswitcherresources.iby	Tue Jan 26 11:48:23 2010 +0200
@@ -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 TASKSWITCHERRES_IBY
+#define TASKSWITCHERRES_IBY
+
+// resources for taskswitcher app
+data=DATAZ_/APP_RESOURCE_DIR/tstaskswitcher.rsc    APP_RESOURCE_DIR/hgteleport.rsc
+
+#endif 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/taskswitcherui/sis/stubs/createstubs.bat	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,17 @@
+@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
+
+for %%f in (*.pkg) do makesis -s %%f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/taskswitcherui/sis/stubs/taskswitcher_stub.pkg	Tue Jan 26 11:48:23 2010 +0200
@@ -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: 
+;
+; ------------------------------------------------------------------------------
+; Taskswitcher stub SIS package file.
+; Used to enable Taskswitcher to be updated from ROM with a SIS package.
+; When you add new files into this stub, please remember to update
+; SIS stub with "makesis -s" command.
+; ------------------------------------------------------------------------------
+;
+;Language - standard language definitions
+&EN
+
+; standard SIS file header
+#{"taskswitcher"},(0x20016BF0),1,0,0,TYPE=SA
+
+;Localized Vendor Name
+%{"Nokia"}
+
+;Unique Vendor name
+:"Nokia"
+
+""-"Z:\sys\bin\hgteleport.exe"
+""-"Z:\resource\apps\hgteleport.r??"
+""-"Z:\private\10003a3f\import\apps\tstaskswitcher_reg.rsc"
+
+""-"Z:\sys\bin\tsappecom.dll"
+""-"Z:\resource\plugins\tsappecom.rsc"
Binary file taskswitcher/taskswitcherui/sis/stubs/taskswitcher_stub.sis has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/taskswitcherui/sis/taskswitcher.pkg	Tue Jan 26 11:48:23 2010 +0200
@@ -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: 
+;
+;Language - standard language definitions
+&EN
+
+; standard SIS file header
+#{"taskswitcher"},(0x20016BF0),1,0,0,TYPE=SA, RU
+
+;Localized Vendor Name
+%{"Nokia"}
+
+;Unique Vendor name
+:"Nokia"
+
+"/epoc32/release/armv5/urel/taskswitcher.exe" - "!:\sys\bin\hgteleport.exe"
+"/epoc32/data/z/resource/apps/tstaskswitcher.rsc" - "!:\resource\apps\hgteleport.rsc"
+"/epoc32/data/z/private/10003a3f/apps/tstaskswitcher_reg.rsc" - "!:\private\10003a3f\import\apps\tstaskswitcher_reg.rsc"
+
+"/epoc32/release/armv5/urel/tsappecom.dll" - "!:\sys\bin\tsappecom.dll"
+"/epoc32/data/z/resource/plugins/tsappecom.rsc" - "!:\resource\plugins\tsappecom.rsc"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/data/tstaskswitcher.rss	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,282 @@
+/*
+* 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:  Resource files for task switcher app
+*
+*/
+
+
+NAME HGTL
+
+#include <eikon.rh>
+#include <eikon.rsg>
+#include <avkon.rh>
+#include <avkon.rsg>
+#include <appinfo.rh>
+
+#include <avkon.loc>
+#include <taskswitcher.loc>
+
+#include "tscommands.hrh"
+
+// ---------------------------------------------------------
+//   
+//    Define the resource file signature 
+//    This resource should be empty.
+//
+// ---------------------------------------------------------
+//
+RESOURCE RSS_SIGNATURE { }
+
+// ---------------------------------------------------------
+//   
+//    Default Document Name
+//
+// ---------------------------------------------------------
+//
+RESOURCE TBUF r_default_document_name { buf=""; }
+
+// ---------------------------------------------------------
+//   
+//    Define default menu and CBA key.
+//
+// ---------------------------------------------------------
+//
+RESOURCE EIK_APP_INFO
+    {
+    menubar = r_ts_menubar;
+    cba = r_ts_cba_nontouch;
+    }
+
+// ---------------------------------------------------------
+//   
+//    CBA for non-touch.
+//
+// ---------------------------------------------------------
+//
+RESOURCE CBA r_ts_cba_nontouch
+	{
+	flags = 0;
+	buttons = 
+    	{
+    	CBA_BUTTON {id=EAknSoftkeySelect; txt=text_softkey_select;}, // left softkey
+    	CBA_BUTTON {id=EAknSoftkeyBack; txt=text_softkey_back;}, // right softkey
+    	CBA_BUTTON {id=EAknSoftkeySelect; txt=text_softkey_select;} // middle softkey, same as lsk, label is not shown in touch
+    	};
+	}
+
+// ---------------------------------------------------------
+//   
+//    CBA for touch.
+//
+// ---------------------------------------------------------
+//
+RESOURCE CBA r_ts_cba_touch
+	{
+	flags = 0;
+	buttons = 
+    	{
+    	CBA_BUTTON {id=EAknSoftkeySelect; txt=text_softkey_empty;}, // left softkey, no label
+    	CBA_BUTTON {id=EAknSoftkeyBack; txt=text_softkey_back;}, // right softkey
+    	CBA_BUTTON {id=EAknSoftkeySelect; txt=text_softkey_select;} // middle softkey, same as lsk, label is not shown in touch
+    	};
+	}
+
+
+// ---------------------------------------------------------
+//   
+//   r_ts_menubar
+//   Menubar for ts
+//
+// ---------------------------------------------------------
+//
+RESOURCE MENU_BAR r_ts_menubar
+    {
+    titles =
+        {
+        MENU_TITLE {menu_pane = r_ts_menu;}
+        };
+    }
+
+
+// ---------------------------------------------------------
+//   
+//   r_ts_menu
+//   Menu for "Options"
+//
+// ---------------------------------------------------------
+//
+RESOURCE MENU_PANE r_ts_menu
+    {
+    items = 
+        {
+        MENU_ITEM { command = ETsCmdHelp; 	 txt = qtn_options_help; },
+        MENU_ITEM { command = EAknSoftkeyExit;   	txt = text_softkey_exit; }
+        };
+    }
+
+// ---------------------------------------------------------
+//   
+//   r_ts_panel__name
+//   task switcher panel name
+//
+// ---------------------------------------------------------
+//
+RESOURCE TBUF r_ts_panel_name
+    {
+    buf="Task Switcher";
+    }
+
+// ---------------------------------------------------------
+//   
+//   r_ts_message_dialog_okcancel
+//   message dialog with ok and cancel softkeys labels
+//
+// ---------------------------------------------------------
+//
+RESOURCE DIALOG r_ts_message_dialog_okcancel
+    {
+	flags = EGeneralQueryFlags;
+	buttons = R_AVKON_SOFTKEYS_OK_CANCEL;
+	items =
+	    {
+		DLG_LINE
+		    {
+			type = EAknCtPopupHeadingPane;
+			id = EAknMessageQueryHeaderId;
+			control = AVKON_HEADING
+			    {
+			    headinglayout = 0;			
+			    };
+		    },
+		DLG_LINE
+	    	{
+			type = EAknCtMessageQuery;
+			id = EAknMessageQueryContentId;
+			control = AVKON_MESSAGE_QUERY { };
+		    }
+	    };
+    }
+
+// ---------------------------------------------------------
+//   
+//   r_ts_message_dialog_yesno
+//   message dialog with yes and no softkeys labels
+//
+// ---------------------------------------------------------
+//
+RESOURCE DIALOG r_ts_message_dialog_yesno
+    {
+	flags = EGeneralQueryFlags;
+	buttons = R_AVKON_SOFTKEYS_YES_NO;
+	items =
+	    {
+		DLG_LINE
+		    {
+			type = EAknCtPopupHeadingPane;
+			id = EAknMessageQueryHeaderId;
+			control = AVKON_HEADING
+			    {
+			    headinglayout = 0;			
+			    };
+		    },
+		DLG_LINE
+	    	{
+			type = EAknCtMessageQuery;
+			id = EAknMessageQueryContentId;
+			control = AVKON_MESSAGE_QUERY { };
+		    }
+	    };
+    }
+
+// ---------------------------------------------------------
+//   
+//   r_ts_message_dialog_ok
+//   message dialog with ok softkey label
+//
+// ---------------------------------------------------------
+//
+RESOURCE DIALOG r_ts_message_dialog_ok
+    {
+	flags = EGeneralQueryFlags;
+	buttons = R_AVKON_SOFTKEYS_OK_EMPTY;
+	items =
+	    {
+		DLG_LINE
+		    {
+			type = EAknCtPopupHeadingPane;
+			id = EAknMessageQueryHeaderId;
+			control = AVKON_HEADING
+			    {
+			    headinglayout = 0;			
+			    };
+		    },
+		DLG_LINE
+	    	{
+			type = EAknCtMessageQuery;
+			id = EAknMessageQueryContentId;
+			control = AVKON_MESSAGE_QUERY { };
+		    }
+	    };
+    }
+
+// ---------------------------------------------------------
+//   
+//   r_ts_fsw_confirm_close_query
+//   shown when Clear key is pressed in FSW
+//
+// ---------------------------------------------------------
+//
+RESOURCE DIALOG r_ts_fsw_confirm_close_query
+    {
+    flags = EGeneralQueryFlags;
+    buttons = R_AVKON_SOFTKEYS_YES_NO;
+    items =
+        {
+        DLG_LINE
+            {
+            type = EAknCtQuery;
+            id = EGeneralQuery;
+            control = AVKON_CONFIRMATION_QUERY
+                {
+                layout = EConfirmationQueryLayout;
+                };
+            }
+        };
+    }
+
+
+
+RESOURCE LOCALISABLE_APP_INFO r_localisable_app_info
+	{
+	short_caption = "Task Switcher";
+	caption_and_icon =
+		{
+		CAPTION_AND_ICON_INFO 
+			{
+			caption="Task Switcher";
+			}
+		};
+	}
+
+
+RESOURCE TBUF r_ts_title { buf = "Task Switcher"; }
+
+RESOURCE TBUF r_ts_fsw_activate { buf = qtn_task_switcher_popup_open_app; }
+RESOURCE TBUF r_ts_fsw_close { buf = qtn_task_switcher_popup_close_app; }
+RESOURCE TBUF r_ts_fsw_close_all { buf = qtn_task_switcher_popup_close_all; }
+RESOURCE TBUF r_ts_fsw_confirm_close { buf = qtn_memlo_confirm_close; }
+
+RESOURCE TBUF r_task_switcher_heading_applications { buf = qtn_task_switcher_heading_applications; }
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/data/tstaskswitcher_reg.rss	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,30 @@
+/*
+* Copyright (c) 2008-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:  task switcher application's registration resource file 
+*
+*/
+
+
+#include <appinfo.rh>
+#include <tstaskswitcher.rsg>
+
+UID2 KUidAppRegistrationResourceFile
+UID3 0x20016BF0
+
+RESOURCE APP_REGISTRATION_INFO 
+	{
+	app_file="hgteleport";
+	localisable_resource_file="\\resource\\apps\\hgteleport";
+	localisable_resource_id = R_LOCALISABLE_APP_INFO;
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/group/backup_registration.xml	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,20 @@
+<?xml version="1.0" standalone="yes"?>
+<backup_registration version="1.0">
+
+  <passive_backup>
+    <!-- backup all private data -->
+    <include_directory name = "\" />
+  </passive_backup>
+  
+  <!-- backup executables and resources from SIS files -->
+  <system_backup />
+
+  <!-- backup cenrep data -->  
+  <proxy_data_manager sid = "0x10202BE9" />
+
+  <!-- backup sqlite data -->
+  <proxy_data_manager sid = "0x10281E17" />
+  
+  <restore requires_reboot = "no"/>
+
+</backup_registration>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/group/bld.inf	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,30 @@
+/*
+* 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:  Build information file for task switcher
+*
+*/
+
+
+#include <platform_paths.hrh>
+
+PRJ_EXPORTS
+../loc/taskswitcher.loc       MW_LAYER_LOC_EXPORT_PATH(taskswitcher.loc)
+backup_registration.xml     /epoc32/data/z/private/20016BF0/backup_registration.xml
+backup_registration.xml     /epoc32/release/winscw/udeb/z/private/20016BF0/backup_registration.xml
+../inc/tsuid.hrh    |../../inc/tsuid.hrh
+
+PRJ_MMPFILES
+tsapp.mmp
+
+PRJ_TESTMMPFILES
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/group/tsapp.mmp	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,101 @@
+/*
+* 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:  mmp file for taskswitcher application
+*
+*/
+
+
+#include <data_caging_paths.hrh>
+#include <platform_paths.hrh>
+#include "../inc/tsuid.hrh"
+
+EPOCHEAPSIZE    0x100000 0xa00000  // 1 Mb - 10 Mb
+EPOCSTACKSIZE   0x5000 // 20KB
+
+TARGET          taskswitcher.exe
+TARGETTYPE      exe
+UID             0x100039CE KTsAppUidValue
+CAPABILITY      CAP_APPLICATION NetworkControl PowerMgmt
+VENDORID        VID_DEFAULT
+
+SOURCEPATH      ../src
+SOURCE          tsappui.cpp
+SOURCE          tsapplication.cpp
+SOURCE          tsdocument.cpp
+SOURCE          tstaskswitcher.cpp 
+SOURCE          tsappview.cpp
+SOURCE          tsfastswaparea.cpp
+SOURCE          tsfastswapgrid.cpp
+SOURCE          tsdevicestate.cpp
+SOURCE          tseventcontroler.cpp
+SOURCE          tsphysicsengine.cpp
+SOURCE          tsphysics.cpp
+
+USERINCLUDE     ../inc
+USERINCLUDE     ../../inc
+USERINCLUDE     ../../trace
+USERINCLUDE     ../../../contextengine/inc
+
+APP_LAYER_SYSTEMINCLUDE
+
+LIBRARY         euser.lib
+LIBRARY         apparc.lib
+LIBRARY         cone.lib
+LIBRARY         eikcore.lib
+LIBRARY         avkon.lib
+LIBRARY         apgrfx.lib
+LIBRARY         ws32.lib
+LIBRARY         aknskins.lib
+LIBRARY         egul.lib
+LIBRARY         eikcoctl.lib
+LIBRARY         fbscli.lib
+LIBRARY         aknskinsrv.lib
+LIBRARY		    commonengine.lib
+LIBRARY		    efsrv.lib
+LIBRARY		    estor.lib
+LIBRARY         aknnotify.lib
+LIBRARY         hlplch.lib
+LIBRARY         aknicon.lib
+LIBRARY         bitgdi.lib
+LIBRARY         gdi.lib
+LIBRARY         cdlengine.lib
+LIBRARY         aknlayout2.lib
+LIBRARY         aknlayout2scalable.lib
+LIBRARY         oommonitor.lib
+LIBRARY         hal.lib
+LIBRARY         gfxtrans.lib
+LIBRARY         akntransitionutils.lib
+LIBRARY         bafl.lib
+LIBRARY         akntouchgesturefw.lib
+LIBRARY         aknphysics.lib
+LIBRARY         touchfeedback.lib
+
+DEBUGLIBRARY    flogger.lib
+
+LIBRARY         tscontextservicesutils.lib
+LIBRARY         tsfswclient.lib
+LIBRARY         tsfswutils.lib
+
+SOURCEPATH      ../data
+START RESOURCE  tstaskswitcher.rss
+HEADER
+TARGETPATH      APP_RESOURCE_DIR
+LANGUAGE_IDS
+END
+
+SOURCEPATH      ../data
+START RESOURCE  tstaskswitcher_reg.rss
+DEPENDS tstaskswitcher.rsg
+TARGETPATH      /private/10003a3f/apps
+END
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/inc/tsapplication.h	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,48 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Application class
+ *
+*/
+
+
+#ifndef TSAPPLICATION_H
+#define TSAPPLICATION_H
+
+#include <e32base.h> 
+#include <aknapp.h>
+
+class CTsApplication : public CAknApplication
+    {
+public:
+    // from CAknApplication
+    /**
+     * Returns the application DLL UID value
+     *
+     * @since S60 v5.0
+     * @return the UID of this Application/Dll
+     */
+    TUid AppDllUid( ) const;
+
+protected:
+    // from CAknApplication
+    /**
+     * Create a CApaDocument object and return a pointer to it
+     *
+     * @since S60 v5.0
+     * a pointer to the created document
+     */
+    CApaDocument* CreateDocumentL( );
+    };
+
+#endif // TSAPPLICATION_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/inc/tsapplogging.h	Tue Jan 26 11:48:23 2010 +0200
@@ -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:  Defines logs for tsapp
+*
+*/
+
+
+#ifdef _DEBUG
+#include "../inc/tsuid.hrh"
+_LIT( KTsLogFile, "tsapp.txt" );
+_LIT( KTsLogPath, "taskswitcher" );
+#define _TSLOG_LOG_COMPONENT_ID KTsAppUidValue
+
+#endif
+#include "tslogging.h"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/inc/tsappui.h	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,164 @@
+/*
+* 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:  appui
+ *
+*/
+
+
+#ifndef TSAPPUI_H
+#define TSAPPUI_H
+
+#include <e32base.h> 
+#include <aknappui.h>
+
+#include <gfxtranseffect/gfxtranseffect.h>
+#include <akntransitionutils.h>
+
+#include "tsproplistener.h"
+#include "tscenreplistener.h"
+
+// FORWARD DECLARATIONS
+class CTsAppView;
+class CTsActionUtility;
+class CTsDeviceState;
+
+/**
+ * CTsAppUi
+ * Appui for tsak swicher app
+ */
+class CTsAppUi : public CAknAppUi, 
+                         public MTsPropertyChangeObserver,
+                         public MTsCenrepChangeObserver,
+                         public MGfxTransEffectObserver
+    {
+
+public:
+    /**
+     * Perform the second phase construction of a CTsAppUi object
+     * this needs to be public due to the way the framework constructs the AppUi
+     */
+    void ConstructL();
+
+    /**
+     * Perform the first phase of two phase construction.
+     * This needs to be public due to the way the framework constructs the AppUi
+     */
+    CTsAppUi();
+
+    /**
+     * Destroy the object and release all memory objects
+     */
+    ~CTsAppUi();
+
+public: //effects
+    /**
+     * @return value of theme effects enabled flag
+     */
+    TBool EffectsEnabled() const;
+    
+    /**
+     * Function start transition  
+     */
+    void StartTransion( TUint aTransitionType );
+    
+    /**
+     * from MGfxTransEffectObserver
+     */
+    void TransitionFinished(const CCoeControl* aControl, TUint aAction);
+    
+    void MoveAppToForeground( TUint aTransitionType );
+    void MoveAppToBackground( TUint aTransitionType );
+    
+public:
+    /**
+     * From MTsCenrepChangeObserver
+     */
+    void CenrepChanged( TUint32 aKey, TInt aNewValue );
+    
+
+private:
+
+    // From MTsPropertyChangeObserver
+    void PropertyChanged( TUid aCategory, TUint aKey );
+
+    // From CEikAppUi
+    void HandleResourceChangeL( TInt aType );
+    void HandleForegroundEventL( TBool aForeground );
+    void HandleCommandL( TInt aCommand );
+    
+    void StartTransition( TUint aTranstionId,
+                          TBool aVisibility,
+                          TBool aLayers, 
+                          TUint aSubCom );
+
+private: // New functions
+    
+    /**
+     * Called from HandleForegroundEventL if the app came to foreground.
+     */
+    void HandleSwitchToForegroundEvent();
+    
+    /**
+     * Called from HandleForegroundEventL if the app went to background.
+     */
+    void HandleSwitchToBackgroundEvent();
+
+    /**
+     * Sets P&S property which is used to monitor and set Taskswitcher to 
+     * background/foreground and short/long app key press.
+     * 
+     * @param aValue Property value. 
+     */
+    void SetTaskswitcherStateProperty( TInt aValue );
+    
+    /**
+     * Sends request for close some 
+     * other apps to free memory for 
+     * task switcher app
+     */
+    void FreeMemoryRequest();
+
+    static TInt GoToBackgroundTimerCallback( TAny* aParam );
+
+private:
+
+    // Taskswitcher application view, owned
+    CTsAppView* iAppView;
+    
+    // Listener for app key long press P&S, owned
+    CTsPropertyListener* iPropListener;
+    
+    // Tells if Taskswitcher is in foreground or in background
+    TBool iForeground;
+    
+    // Application arch task which refers to our own app
+    TApaTask iApplicationTask;
+
+    // Device state
+    CTsDeviceState* iDeviceState;
+
+    // Buffer to keeping some memory allocation while being in background.    
+    TUint8* iMemAllocBuf;
+
+    CPeriodic* iGoToBackgroundTimer;
+    
+    TBool iEffectsEnabled;
+    
+    /**
+     * Cenrep listener for the tfxserver enabled/disabled key.
+     */    
+    CTsCenrepListener* iThemeEffectsEnabledWatcher;
+    };
+
+#endif // TSAPPUI_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/inc/tsappview.h	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,242 @@
+/*
+* 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:  appui
+ *
+*/
+
+
+#ifndef TSAPPVIEW_H
+#define TSAPPVIEW_H
+
+#include <e32base.h> 
+#include <coecntrl.h>
+#include <AknPopupFader.h>
+#include "tsdevicestate.h"
+#include "tsdatachangeobserver.h"
+#include "tseventcontrolerobserver.h"
+
+// FORWARD DECLARATIONS
+class CAknsFrameBackgroundControlContext;
+class CTsFastSwapArea;
+class CAknPopupHeadingPane;
+class CTsEventControler;
+
+/**
+ * Taskswitcher applicatio view class.
+ */
+class CTsAppView : public CCoeControl, public MCoeControlObserver,
+        public MTsDeviceStateObserver,
+        public MAknFadedComponent,
+        public MTsDataChangeObserver,
+        public MTsEventControlerObserver
+    {
+public:
+
+    /**
+     * Two-phase constructor.
+     * 
+     * @param aRect Area where view should draw itself.
+     */
+    static CTsAppView* NewL(const TRect& aRect,
+            CTsDeviceState& aDeviceState);
+
+    /**
+     * @copydoc NewL
+     */
+    static CTsAppView* NewLC(const TRect& aRect,
+            CTsDeviceState& aDeviceState);
+
+    /**
+     * Destructor.
+     */
+    ~CTsAppView();
+
+    /**
+     * Called from appui if the app came to foreground.
+     */
+    void HandleSwitchToForegroundEvent();
+    
+    /**
+     * Called from appui if the app went to background.
+     */
+    void HandleSwitchToBackgroundEvent();
+
+    /**
+     * From CCoeControl      Method handling the pointer events while the fsw is used.
+     *
+     * @param aPointerEvent  Information about the event.
+     */
+    void HandlePointerEventL( const TPointerEvent &aPointerEvent );
+
+public:
+    // from CCoeControl
+    void Draw( const TRect& aRect ) const;
+    TTypeUid::Ptr MopSupplyObject( TTypeUid aId );
+    TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType );
+    TInt CountComponentControls() const;
+    CCoeControl* ComponentControl(TInt aIndex) const;
+    void SizeChanged();
+    
+    //Own
+    /*
+     * Forward app key handling to fasswaparea control.
+     */
+    void HandleAppKey(TInt aType);
+
+protected:
+    // from MCoeControlObserver
+    void HandleControlEventL( CCoeControl* aControl, TCoeEvent aEventType );
+
+    // from MTsDeviceStateObserver
+    void HandleDeviceStateChanged( TChangeType aChangeType );
+
+protected: // from MAknFadedComponent
+    TInt CountFadedComponents();
+    CCoeControl* FadedComponent( TInt aIndex );
+
+protected: // from MTsCenrepChangeObserver
+    void CenrepChanged( TUint32 aKey, TInt aNewValue );
+
+protected: // from MTsDataChangeObserver
+    void DataChanged( CCoeControl* aWhere, TInt aNewCount );
+
+private:
+
+    /**
+     * @copydoc NewL
+     */
+    void ConstructL( const TRect& aRect );
+
+    /**
+     * C++ constructor.
+     */
+    CTsAppView( CTsDeviceState& aDeviceState );
+
+    /**
+     * Updates the internal state for currently focused control.
+     * @param   aNewFocusedControl  ptr to new focused control, ownership not taken
+     */    
+    void ChangeFocus( CCoeControl* aNewFocusedControl );
+    
+    /**
+     * Creates components.
+     */
+    void CreateControlsL();
+    
+    /**
+     * Appends component rects to the given array.
+     * @param   aRects  array
+     */
+    void GetRects( RArray<TRect>& aRects );
+    
+    /**
+     * Handles key event according to the portrait-style (vertical) layout.
+     */
+    TKeyResponse OfferKeyEventPortraitStyleL( const TKeyEvent& aKeyEvent, TEventCode aType);
+
+    /**
+     * Calculates and returns the following:
+     *   - the rectangle for main_tport_pane
+     *   - the outer rectangle for the frame
+     *   - the inner rectangle for the frame
+     */
+    void UpdatePopupRects(  );
+
+    /**
+     * Updates the text in the applications and suggestions heading panes.
+     */
+    void UpdateHeadingsL();
+    
+    /**
+     * Disables transition animations for taskswitcher app.
+     * (the automatic effects that are applied when coming/leaving foreground)
+     */
+    void DisableAppSwitchEffects();
+    
+    
+public://From MTsEventControlerObserver
+    /**
+     * Declare drag gesture handling.
+     * @param aOffset - drag distance
+     */
+    virtual void MoveOffset(const TPoint& aOffset);
+    
+    /**
+     * Declare tap gesture handling.
+     * @param aPoint - tap position
+     */
+    virtual void TapL(const TPoint& aPoint);
+    
+    /**
+     * Declare long tap gesture handling.
+     * @param aPoint - tap position
+     */
+    virtual void LongTapL(const TPoint& aPoint);
+    
+    /**
+     * 
+     */
+    virtual void Drag(
+        const AknTouchGestureFw::MAknTouchGestureFwDragEvent& aEvent);
+    
+    /**
+     * Declare animation stop handling
+     */
+    virtual void Stop();
+    
+    /**
+     * Declare getter for view position
+     */
+    virtual TPoint ViewPos() const;
+        
+private: // Data
+
+    // Ref to container for commonly used instances
+    CTsDeviceState& iDeviceState;
+
+    // Background context, owned
+    CAknsFrameBackgroundControlContext* iBgContext;
+    
+    // Fast Swap area, owned
+    CTsFastSwapArea* iFastSwapArea;
+
+    /**
+     * Heading pane, own
+     */
+    CAknPopupHeadingPane* iAppsHeading;
+
+    /**
+     * Currently focused control, not own
+     */
+    CCoeControl* iFocused;
+    
+    /**
+     * Rectangle of the control.
+     */
+    TRect iViewRect;
+    
+    /**
+     * Popup fader instance.
+     */
+    TAknPopupFader iPopupFader;
+    
+    /**
+     * Pointer for background image, owned
+     */
+    TRect iBgContextOuterRect;
+    TRect iBgContextInnerRect;
+    CTsEventControler* iEvtHandler; //own
+    };
+
+#endif // TSAPPVIEW_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/inc/tscommands.hrh	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,28 @@
+/*
+* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  command ids
+*
+*/
+
+
+#ifndef __TSCOMMANDS_HRH__
+#define __TSCOMMANDS_HRH__
+
+enum
+	{
+	ETsCmdBase = 20000,
+	ETsCmdHelp
+	};
+
+#endif //__TSCOMMANDS_HRH__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/inc/tsdatachangeobserver.h	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,35 @@
+/*
+* 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 TSDATACHANGEINTERFACE_H
+#define TSDATACHANGEINTERFACE_H
+
+#include <e32base.h>
+
+class CCoeControl;
+
+/**
+ * Callback mixin class to move the whole app to background or foreground.
+ */
+class MTsDataChangeObserver
+    {
+public:
+    virtual void DataChanged( CCoeControl* aWhere, TInt aNewCount ) = 0;
+    };
+
+#endif // TSDATACHANGEINTERFACE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/inc/tsdevicestate.h	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,227 @@
+/*
+* 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:  Device state (touch mode, screen orientation) handler
+ *
+*/
+
+
+#ifndef TSDEVICESTATE_H_
+#define TSDEVICESTATE_H_
+
+#include <e32base.h>
+#include "tsappui.h"
+#include "tsproplistener.h"
+
+/**
+ * Interface for getting notifications about screen orientation
+ * and/or touch state etc. changes.
+ */
+class MTsDeviceStateObserver
+    {
+public:
+    /**
+     * Type of change.
+     */
+    enum TChangeType
+        {
+        // screen orientation (portrait <=> landscape) has changed
+        EOrientation = 0x01,
+        // touch enabled/disabled status has changed
+        ETouchState = 0x02,
+        // skin has changed
+        ESkin = 0x04,
+        // input device mode change
+        EDeviceType = 0x08,
+        // all of the above
+        EAny = 0xFF
+        };
+
+    /**
+     * Called when a change, to which the observer is registered,
+     * has happened.
+     */
+    virtual void HandleDeviceStateChanged( TChangeType aChangeType ) = 0;
+    };
+
+/**
+ * Class for keeping track of screen orientation and touch enabled/disabled changes.
+ */
+class CTsDeviceState :
+    public CBase,
+    public MTsPropertyChangeObserver
+    {
+public:
+    /**
+     * Enumeration for TouchState().
+     */
+    enum TTouchState
+        {
+        ETouchEnabled,
+        ETouchDisabled
+        };
+
+    /**
+     * Enumeration for Orientation().
+     */
+    enum TOrientation
+        {
+        EPortrait,
+        ELandscape
+        };
+
+    /**
+     * Enumeration for DeviceType().
+     */
+    enum TDeviceType
+        {
+        EHybrid = 0,
+        EFullTouch  = 1
+        };
+
+    /**
+     * Creates a new instance.
+     */
+    static CTsDeviceState* NewL();
+
+    /**
+     * Destructor.
+     */
+    ~CTsDeviceState();
+
+    /**
+     * Returns the current state of touch awareness.
+     */
+    TTouchState TouchState() const;
+
+    /**
+     * Returns the current screen orientation.
+     */
+    TOrientation Orientation() const;
+
+    /**
+     * Returns the current device input type.
+     */
+    TDeviceType DeviceType() const;
+
+    /**
+     * Registers an observer.
+     * @param   aObserver   ref to observer
+     * (same observer can be added several times with different mask if needed)
+     * @param   aMask       bitmask composed from TChangeType values
+     * (when to notify the observer)
+     */
+    void AddObserverL( MTsDeviceStateObserver& aObserver, TInt aMask );
+
+    /**
+     * Deregisters the given observer.
+     * @param   aObserver   ref to observer
+     */
+    void RemoveObserver( MTsDeviceStateObserver& aObserver );
+
+    /**
+     * Called from appui.
+     */
+    void HandleResourceChange( TInt aType );
+    
+    //From MTsPropertyChangeObserver
+public:
+    /**
+     * Observer interface for getting notifications about a P&S property change.
+     */
+	virtual void PropertyChanged( TUid aCategory, TUint aKey );
+private:
+    /**
+     * Constructor.
+     */
+    CTsDeviceState();
+    
+    /**
+     * Performs 2nd phase construction.
+     */
+    void ConstructL();
+
+    /**
+     * Checks if touch is enabled or not and performs
+     * appropriate actions.
+     */
+    void CheckTouchState();
+
+    /**
+     * Checks the screen orientation and performs
+     * appropriate actions.
+     */
+    void CheckOrientation();
+    
+    /**
+     * Checks the device input type.
+     */
+    void CheckDeviceType();
+    
+    /**
+     * Notifies all observers that are registered for the given type.
+     */
+    void NotifyObservers( MTsDeviceStateObserver::TChangeType aType );
+
+    class SObserver;
+
+    /**
+     * Identity function to perform comparison between observer array items.
+     */
+    static TBool ObserverIdentity( const SObserver& aA, const SObserver& aB );
+
+private:
+    /**
+     * Current touch enabled/disabled state.
+     */
+    TTouchState iTouchState;
+    
+    /**
+     * Current screen orientation.
+     */
+    TOrientation iOrientation;
+    
+    /**
+     * Current the device input type.
+     */
+    TDeviceType iDeviceType;
+    
+    /**
+     * Observer array entry struct.
+     */
+    struct SObserver
+        {
+        TInt iMask;
+        MTsDeviceStateObserver* iObserver; // not owned
+        SObserver( TInt aMask, MTsDeviceStateObserver* aObserver )
+            : iMask( aMask ), iObserver( aObserver ) { }
+        };
+        
+    /**
+     * Observer array.
+     */
+    RArray<SObserver> iObservers;
+
+    /**
+     * Counter to indicate that we have not yet returned
+     * from a previous HandleResourceChange.
+     */
+    TInt iResChangeActiveCount;
+    
+    /**
+     * Flip status change observer.
+     */
+    CTsPropertyListener* iFlipStatusObserver;
+    };
+
+#endif // TSDEVICESTATE_H_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/inc/tsdocument.h	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,90 @@
+/*
+* 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:  Document class
+ *
+*/
+
+
+#ifndef TSDOCUMENT_H
+#define TSDOCUMENT_H
+
+#include <e32base.h> 
+#include <AknDoc.h>
+
+class CTsDocument : public CAknDocument
+    {
+public:
+    /**
+     * Construct a CTsDocument for the AVKON application aApp
+     * using two phase construction, and return a pointer to the created object
+     * aApp application creating this document
+     *
+     * @since S60 v5.0
+     * @return a pointer to the created instance of CTsDocument
+     */
+    static CTsDocument* NewL( CEikApplication& aApp );
+
+    /**
+     * Construct a CTsDocument for the AVKON application aApp
+     * using two phase construction, and return a pointer to the created object
+     *
+     * @since S60 v5.0
+     * @param aApp application creating this document
+     * @return a pointer to the created instance of CTsDocument
+     */
+    static CTsDocument* NewLC( CEikApplication& aApp );
+
+    /**
+     * Destroy the object and release all memory objects
+     *
+     * @since S60 v5.0
+     */
+    ~CTsDocument( );
+
+    /**
+     * Makes Startup-application hidden in menu shell and fastswap window
+     *
+     * @since S60 v5.0
+     * @param aWgName application windows group name
+     */
+    void UpdateTaskNameL( CApaWindowGroupName* aWgName );
+
+public:
+    // from CAknDocument
+    /**
+     * Create a CTsAppUi object and return a pointer to it
+     *
+     * @since S60 v5.0
+     * @return a pointer to the created instance of the AppUi created
+     */
+    CEikAppUi* CreateAppUiL( );
+
+private:
+    /**
+     * Perform the second phase construction of a CTsDocument object
+     *
+     * @since S60 v5.0
+     */
+    void ConstructL( );
+
+    /**
+     * Perform the first phase of two phase construction
+     *
+     * @since S60 v5.0
+     * @param aApp application creating this document
+     */
+    CTsDocument( CEikApplication& aApp );
+    };
+
+#endif // TSDOCUMENT_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/inc/tseventcontroler.h	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,176 @@
+/*
+* 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:  Gesture and physics helper declaration
+ *
+*/
+
+
+#ifndef TSEVENTCONTROLER_H
+#define TSEVENTCONTROLER_H
+
+#include "tseventcontrolerobserver.h"
+#include <akntouchgesturefw.h>
+#include <aknphysicsobserveriface.h>
+
+class CTsPhysicsEngine;
+using namespace AknTouchGestureFw;
+/**
+ * CTsEventControler
+ * Input events handler. Class analyse pointer events and translate it to gesture. Procerss animations physics
+ */
+NONSHARABLE_CLASS(CTsEventControler): 
+    public CBase,
+    public MAknTouchGestureFwObserver,
+    public MAknPhysicsObserver
+    {
+public:
+    /**
+     * Two phase constructor. Instance is pushed on cleanup stack.
+     * @param aObs - reference to controler observer
+     * @param aEventSrc - reference to control which provide pointer events
+     * @return address of controler instance
+     */
+    static CTsEventControler* NewLC(MTsEventControlerObserver& aObs, 
+                                            CCoeControl& aEventSrc);
+    
+    /**
+     * Two phase constructor.
+     * @param aObs - reference to control observer
+     * @param aEventSrc - reference to control which provide pointer events
+     * @return address of controler instance
+     */
+    static CTsEventControler* NewL(MTsEventControlerObserver& aObs, 
+                                           CCoeControl& aEventSrc);
+    
+    /**
+     * Destructor
+     */
+    ~CTsEventControler();
+
+private:
+    /**
+     * First phase construction
+     */
+    CTsEventControler(MTsEventControlerObserver& aObserver);
+    
+    /**
+     * Second phase construction
+     * @param aEventSrc - control that provides pointer ivents to handler
+     */
+    void ConstructL(CCoeControl& aEventSrc);
+    
+    /**
+     * Implements gesture handling
+     * @param aEvent - gesture event
+     * @see MAknTouchGestureFwObserver
+     */
+    void HandleTouchGestureL(MAknTouchGestureFwEvent& aEvent);
+    
+    /**
+     * Implements tap gesture handling ( short tap, double tap, long tap )
+     * @param aEvent - tap event
+     */
+    void HandleTapEventL(MAknTouchGestureFwTapEvent& aEvent);
+    
+    /**
+     * Implements drag gesture handling
+     * @param aEvent - drag event
+     */
+    void HandleDragEventL(MAknTouchGestureFwDragEvent& aEvent);
+    
+    /**
+     * Implements flick gesture handling
+     * @param aEvent - drag event
+     */
+    void HandleFlickEventL(MAknTouchGestureFwFlickEvent& aEvent);
+    
+    //From MAknPhysicsObserver
+public:
+    /**
+     * Physics emulation has moved the view.
+     * 
+     * When this method is called client should update its visual and logical
+     * states to reflect the changes caused by view move. Note that if the
+     * parameter @c aDrawNow is @c EFalse client is not allowed to redraw the
+     * display but should only update its logical state.
+     * Physics engine will ensure that the last frame is always drawn.
+     *
+     * @since S60 v5.0
+     *
+     * @param  aNewPosition  The new position of the view.
+     * @param  aDrawNow      @c ETrue if client should redraw the screen,
+     *                       otherwise @c EFalse.
+     * @param  aFlags        Additional flags, not used currently.
+     */
+    virtual void ViewPositionChanged( const TPoint& aNewPosition,
+                              TBool aDrawNow,
+                              TUint aFlags );
+        
+    /**
+     * Physics emulation has stopped moving the view
+     *
+     * @since S60 v5.0
+     */
+    virtual void PhysicEmulationEnded();
+
+    /**
+     * Returns the observer's view position.
+     *
+     * @since S60 v5.0
+     *
+     * @return Physics observer's view position.
+     */
+    virtual TPoint ViewPosition() const;
+    
+public:
+    
+    /**
+     * Initialize animation between current position and destination point
+     * @param aPoint - destination point 
+     */
+    void Animate(const TPoint& aPoint);
+
+    /**
+     * 
+     * @param aWorldSize Physics world size.
+     * @param aViewSize Physics (visible) view size.
+     * @param aLandscape ETrue if physics should work in landscape.     
+     **/
+    void ReInitPhysicsL(const TSize& aWorldSize, 
+                        const TSize& aViewSize,
+                        TBool aLandscape);
+    
+    /**
+     * Stops currently ongoing animation
+     */
+    void StopAnimation();
+    
+private:
+    /**
+     * Controler observer. Not own
+     */
+    MTsEventControlerObserver& iObserver;
+    
+    /**
+     * Gesture recognition helper. Own
+     */
+    CAknTouchGestureFw* iGestureHelper;
+    
+    /**
+     * Physics helper. Own
+     */
+    CTsPhysicsEngine* iPhysicsHelper;
+    };
+
+#endif // TSEVENTCONTROLER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/inc/tseventcontrolerobserver.h	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,67 @@
+/*
+* 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:  Define gesture observer interface
+ *
+*/
+
+
+#ifndef TSGESTUREOBSERVER_H
+#define TSGESTUREOBSERVER_H
+
+#include <e32base.h>
+#include <akntouchgesturefw.h>
+
+/**
+ * MTsGestureObserver
+ * Define gesture observer interface
+ */
+NONSHARABLE_CLASS(MTsEventControlerObserver)
+    {
+public:
+    /**
+     * Declare drag gesture handling.
+     * @param aOffset - drag distance
+     */
+    virtual void MoveOffset(const TPoint& aOffset)=0;
+    
+    /**
+     * Declare tap gesture handling.
+     * @param aPoint - tap position
+     */
+    virtual void TapL(const TPoint& aPoint)=0;
+    
+    /**
+     * Declare long tap gesture handling.
+     * @param aPoint - tap position
+     */
+    virtual void LongTapL(const TPoint& aPoint)=0;
+    
+    /**
+     * Declare drag gesture handling.
+     * @param aEvent - drag event
+     */
+    virtual void Drag(const AknTouchGestureFw::MAknTouchGestureFwDragEvent& aEvent) =0;
+    
+    /**
+     * Declare animation stop handling
+     */
+    virtual void Stop()=0;
+    
+    /**
+     * Declare getter for view position
+     */
+    virtual TPoint ViewPos() const =0;
+    };
+
+#endif // TSGESTUREOBSERVER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/inc/tsfastswaparea.h	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,442 @@
+/*
+* 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:  Taskswitcher Fast Swap area UI
+ *
+*/
+
+#ifndef TSFASTSWAPAREA_H
+#define TSFASTSWAPAREA_H
+
+#include <e32base.h>
+#include <eikmobs.h>
+#include "tsdevicestate.h"
+#include "tsfswclientobserver.h"
+#include "tsfastswapgrid.h"
+#include "tseventcontrolerobserver.h"
+
+
+// FORWARD DECLARATIONS
+class CTsFswClient;
+class CTsFswEntry;
+class CAknStylusPopUpMenu;
+class CAknQueryDialog;
+class CTsEventControler;
+class MTsDataChangeObserver;
+
+/**
+ * Taskswitcher Fast Swap area UI.
+ */
+class CTsFastSwapArea: public CCoeControl,
+                               public MEikMenuObserver,
+                               public MTsFswObserver,
+                               public MEikListBoxObserver,
+                               public MTsFastSwapGridObserver,
+                               private MTsEventControlerObserver,
+                               public MTsDeviceStateObserver,
+                               public MTsFastSwapTimerObserver
+    {
+public:
+    /**
+     * Two-phase constructor.
+     * 
+     * @param aRect Area where fast swap info & list should draw itself.
+     * @param aParent Parent CoeControl. 
+     */
+    static CTsFastSwapArea* NewL( const TRect& aRect,
+            CCoeControl& aParent, CTsDeviceState& aDeviceState,
+            CTsEventControler& aEventHandler);
+
+    /**
+     * @copydoc NewL
+     */
+    static CTsFastSwapArea* NewLC( const TRect& aRect,
+            CCoeControl& aParent, CTsDeviceState& aDeviceState,
+            CTsEventControler& aEventHandler);
+
+    /**
+     * Destructor.
+     */
+    ~CTsFastSwapArea();
+
+    /**
+     * Called from appview when coming to foreground.
+     */
+    void HandleSwitchToForegroundEvent();
+    
+    /**
+     * Called from appview when going to background.
+     */
+    void HandleSwitchToBackgroundEvent();
+
+    /**
+     * Called after construction to set up additional properties,
+     * like the control observer.
+     */
+    void Setup( MCoeControlObserver& aControlObserver );
+
+    /**
+     * Saves the index of the currently selected (highlighted) item.
+     */
+    void SaveSelectedIndex();
+    
+    /**
+     * Restores the selection (highlight) position.
+     */
+    void RestoreSelectedIndex();
+
+    // Functions to perform activate, close, close others operations.
+    // They are public so same functionality can be implemented in the
+    // Options menu (appui) for example.
+    
+    /**
+     * Index of highlighted item or KErrNotFound.
+     */
+    TInt SelectedIndex() const;
+    
+    /**
+     * Brings the app corresponding to the item at given index into foreground.
+     */
+    void SwitchToApp( TInt aIndex );
+    
+    /**
+     * Sends close msg to given app.
+     * @param   aIndex      index
+     * @param   aSuppressRendering  content is not refreshed if ETrue
+     */
+    void TryCloseAppL( TInt aIndex, TBool aSuppressRendering = EFalse );
+    
+    /**
+     * Sends close msg to given app if user confirms the query.
+     */
+    void TryCloseAppWithQueryL( TInt aIndex );
+    
+    /**
+     * Tries to Close all applications that cn be closed
+     */
+    void TryCloseAllL();
+    
+    /**
+     * True if it is allowed to ask the given app to close.
+     * @param   aIndex  index
+     */
+    TBool CanClose( TInt aIndex ) const;
+    
+    /**
+     * @param  aSelectedItem  item for which pop up is shown
+     * 
+     * @return ETrue, when number of closable apps is >= 2 or there is at least
+     *                one closable item and non closable item is selected.
+     * @return EFalse, when number of closable apps is < 2.
+     */
+    TBool CanCloseAll( TInt aSelectedItem ) const;
+
+    /**
+     * Returns the number of items in the list.
+     */
+    TInt Count() const;
+
+    /**
+     * Returns the underlying Ganes control pointer.
+     */
+    CCoeControl* GetChildControl() { return iGrid; }
+
+    /**
+     * Sets the data-changed observer.
+     */
+    void SetDataChangeObserver( MTsDataChangeObserver* aDcObserver );
+
+    /*
+     * Handling short/long app key.
+     */
+    void HandleAppKey(TInt aType);
+
+private:
+
+    /**
+     * @copydoc NewL
+     */
+    void ConstructL( const TRect& aRect );
+
+    /**
+     * C++ constructor.
+     */
+    CTsFastSwapArea(CCoeControl& aParent,
+            CTsDeviceState& aDeviceState,
+            CTsEventControler& aEventHandler);
+    
+    // From MEikListBoxObserver
+    void HandleListBoxEventL(CEikListBox* aListBox, TListBoxEvent aEventType);
+    
+public:
+    /**
+     * Implements drag gesture handling
+     * @see MTsEventControlerObserver
+     */
+    void MoveOffset(const TPoint&);
+
+    /**
+     * Implements tap gesture handling
+     * @see MTsEventControlerObserver
+     */
+    void TapL(const TPoint&);
+
+    /**
+     * Implements long tap gesture handling
+     * @see MTsEventControlerObserver
+     */
+    void LongTapL(const TPoint&);
+
+    /**
+     * Implements drag gesture handling
+     * @see MTsEventControlerObserver
+     */
+    void Drag(const AknTouchGestureFw::MAknTouchGestureFwDragEvent& aEvent);
+    
+    /**
+     * Implements animation stop handling
+     * @see MTsEventControlerObserver
+     */
+    void Stop();
+    
+    /**
+     * Implements view position getter. Returns point in the middle of the
+     * grid view window.
+     * 
+     * @see MTsEventControlerObserver
+     */
+    TPoint ViewPos()const;
+    
+public:    
+    // from CCoeControl    
+    TInt CountComponentControls() const;
+    CCoeControl* ComponentControl(TInt aIndex) const;
+    void FocusChanged( TDrawNow aDrawNow );
+    void SizeChanged();
+    void Draw( const TRect& aRect ) const;
+    TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType );
+    void HandlePointerEventL( const TPointerEvent& aPointerEvent );
+    
+private:
+    // From MTsFswObserver     
+    void HandleFswContentChanged();
+    
+    // From MEikMenuObserver
+    void ProcessCommandL( TInt aCommandId );
+	void SetEmphasis( CCoeControl*, TBool ) { }
+	
+	// From MTsFastSwapGridObserver
+	void HandleCloseEventL(TInt aItemIdx);
+	
+	// From MTsDeviceStateObserver
+	void HandleDeviceStateChanged( TChangeType aChangeType );
+
+    // From MTsFastSwapTimerObserver
+    void TimerCompletedL( CTsFastSwapTimer* aSource );
+	
+// new functions    
+
+    /**
+     * Makes a copy of the given bitmap.
+     * Also scaled to the given size, but maintains aspect ratio,
+     * so the size of the returned bitmap may be less then aSize.
+     */
+    CFbsBitmap* CopyBitmapL( TInt aFbsHandle, TSize aSize );
+
+    /**
+     * Called from HandleFswContentChanged.
+     */    
+    void HandleFswContentChangedL();
+    
+    /**
+     * Shows the content from iArray on the screen.
+     */
+    void RenderContentL();
+    
+    /**
+     * Creates the ganes grid control.
+     */
+    void ReCreateGridL();
+    
+    /**
+     * Returns rectangles for fast swap area controls
+     */
+    void GetFastSwapAreaRects( RArray<TAknLayoutRect>& aRects );
+
+    /**
+     * Creates a stylus popup instance (iPopup) if not yet done.
+     */
+    void PreCreatePopupL();
+
+    /**
+     * Shows the stylus popup menu if not yet visible.
+     * @param   aIndex  index of item in the grid
+     * @param   aPoint  position for the popup
+     */
+    TBool ShowPopupL( TInt aIndex, const TPoint& aPoint );
+    
+    /**
+     * Shows the app close confirmation query.
+     * @param   aIndex  index of item in the grid
+     * @return ETrue if accepted EFalse if canceled
+     */
+    TBool ConfirmCloseL( TInt aIndex );
+
+    /**
+     * Sends the data-changed notification.
+     */   
+    void NotifyChange();
+
+    /**
+     * Chage application order.
+     * move Homescreen to first left position.
+     */   
+    void SwapApplicationOrder( RPointerArray<CTsFswEntry>& aArray );
+    
+    /**
+     * Retrieves and returns size for image graphics.
+     */
+    TSize PreferredImageSize();
+    
+    /**
+     * Retrieves number of items in grid
+     */
+    TInt GridItemCount();
+    
+    /**
+     * Calculates the correct size if aspect ratio needs to be preserved.
+     */
+    TSize CalculateSizePreserveRatio(const TSize& aTargetAreaSize,
+            const TSize& aSourceSize);
+    
+    /**
+     * Selects next item in grid
+     */
+    void SelectNextItem();
+    
+    /**
+     * Highlight current grid'd item and redraw
+     */
+    void ShowHighlight();
+    
+    /**
+     * Centralise most centered item so it was most exposed on the view.
+     * Centered element is being selected by grid.
+     * Animation to the centered element is made after aRedrawDelay time.
+     * 
+     * @param aRedrawDelay - animation delay.
+     */
+    void CenterItem( TInt aRedrawDelay);
+    
+    /**
+     * Returns full grid view size.
+     */
+    TSize GridWorldSize();
+    
+    /**
+     * Updates grid, called for manual grid scroll update
+     * 
+     * @param  aForceRedraw    if set to ETrue - redraw will be forced
+     * @param  aAnimate        set to ETrue to enable animation
+     */
+    void UpdateGrid( TBool aForceRedraw = EFalse,
+                     TBool aAnimate = ETrue );
+    
+    /**
+     * Returns grid view size
+     */
+    TSize ViewSize();
+    
+    /**
+     * Returns the position of the given item inside grid world rect.
+     * Returns point in the middle of the view rectangle.
+     * 
+     * @param  aItemIdx  index of the item for which calculation will be done
+     */
+    TPoint ItemViewPosition( TInt aItemIdx );
+    
+    /**
+     * Returns index of the shown item, based on the logical
+     * position of the grids view. Item that is closest to the
+     * middle of screen is returned.
+     * 
+     * @param  aViewPos  grids view position. This must be point in
+     *                   the middle of the view rectangle
+     * @return  index of the item
+     */
+    TInt ViewToVisibleItem( const TPoint aViewPos );
+    
+    /**
+     * Launches increasing pop-up feedback.
+     */
+    void LaunchPopupFeedback();
+
+private: // Data
+    
+    // parent control
+    CCoeControl& iParent;
+    
+    // device state
+    // not own 
+    CTsDeviceState& iDeviceState;
+
+    // grid, own
+    CTsFastSwapGrid* iGrid;
+        
+    // fsw client, own
+    CTsFswClient* iFSClient;
+    // fsw content, ptrs owned
+    RPointerArray<CTsFswEntry> iArray;
+    
+    // index of selected (highlighted) item in the grid
+    // when the fsw was last focused
+    TInt iSavedSelectedIndex;
+    
+    // fsw popup (activate, close, etc.), own
+    CAknStylusPopUpMenu* iPopup;
+    // the aIndex argument of ShowPopupL is stored here
+    TInt iAppIndexForPopup;
+
+    // query shown when pressing Clear key in fsw, own
+    CAknQueryDialog* iConfirmCloseQuery;
+
+    // Timestamp of the last application close operation
+    TTime iTimeOfLastClose;
+    
+    // Observer ptr, may be NULL, not owned
+    MTsDataChangeObserver* iDcObserver;
+    
+    //Input events handler
+    CTsEventControler& iEvtHandler;
+    
+    TInt iMaxItemsOnScreen;
+    TInt iPreviousNoOfItems;
+    
+    // Tap event
+    TPointerEvent iTapEvent;
+    CTsFastSwapTimer* iHighlightTimer;
+    
+    // Grid scrolling
+    TInt iGridItemWidth;
+    TInt iGridItemGap;
+    
+    CTsFastSwapTimer* iRedrawTimer; // owned
+    
+    CTsFastSwapTimer* iUpdateGridTimer;//owned
+    
+    // Key event handling
+    TBool iConsumeEvent;
+    TBool iKeyEvent;
+    };
+
+#endif // TSFASTSWAPAREA_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/inc/tsfastswapgrid.h	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,362 @@
+/*
+* 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:  Taskswitcher Fast Swap area UI
+ *
+*/
+
+
+#ifndef TSFASTSWAPGRID_H_
+#define TSFASTSWAPGRID_H_
+
+#include <AknGrid.h>
+#include <aknconsts.h>
+#include "tsdevicestate.h"
+
+class CAknsFrameBackgroundControlContext;
+class CTsFastSwapTimer;
+
+/**
+ * Observer for handling fast swap grid events
+ */
+class MTsFastSwapGridObserver
+    {
+public:
+    /**
+     * Called when close icon is tapped on the grid item.
+     * 
+     * @param  aItemIdx  index of the the item for which close icon
+     *                   has been tapped
+     */
+    virtual void HandleCloseEventL( TInt aItemIdx ) = 0;
+    };
+
+
+class MTsFastSwapTimerObserver
+    {
+public:
+    /**
+     * Called when timer is completed
+     */
+    virtual void TimerCompletedL( CTsFastSwapTimer* aSource ) = 0;
+    };
+
+
+/**
+ * Avkon grid implementing custom item drawer
+ */
+class CTsFastSwapGrid: 
+    public CAknGrid,
+    public MTsDeviceStateObserver
+    {
+public: // enums
+    enum TFastSwapGridBehaviour
+        {
+        // Highlight always visible
+        EHybrid,
+        
+        // Touch only highlight handling
+        ETouchOnly
+        };
+    
+public: // Constructor and destructor
+    CTsFastSwapGrid();
+    ~CTsFastSwapGrid();
+    void ConstructL( const CCoeControl* aParent );
+    
+public: // From CCoeControl
+    void HandlePointerEventL( const TPointerEvent &aPointerEvent );
+    TTypeUid::Ptr MopSupplyObject( TTypeUid aId );
+    void HandleResourceChange( TInt aType );
+    void SizeChanged();
+    
+public: //From MTsDeviceStateObserver
+    /**
+     * Called when a change, to which the observer is registered,
+     * has happened.
+     */
+    virtual void HandleDeviceStateChanged( TChangeType aChangeType );
+    
+public: // New functions
+
+    /**
+     * Sets fast swap grid observer
+     */
+    void SetFastSwapGridObserver( MTsFastSwapGridObserver* aObserver  );
+
+    /**
+     * Set indexes of items which can be closed.
+     * Copies item index array.
+     */
+    void SetCloseItemsL( RArray<TInt>& aItemIndex );
+
+    /**
+     * Checks if the item of given index is closable
+     */
+    TBool CanCloseItem( TInt aItemIndex );
+
+    /**
+     * Checks if the given item's close icon has been tapped.
+     */
+    TBool IsItemCloseHit( TInt aItemIndex );
+
+    /**
+     * Resets index of the item that has been close icon hit
+     */
+    void ResetCloseHit();
+    
+    /**
+     * Sets grid behaviour
+     * 
+     * @param  aBehaviour  behaviour to be set
+     */
+    void SetGridBehaviour( TFastSwapGridBehaviour aBehaviour );
+    
+    /**
+     * Getter for grid behaviour
+     * 
+     * @return  girds behaviour
+     */
+    TFastSwapGridBehaviour GridBehaviour();
+    
+    /**
+     * Shows highlight. In touch only behaviour highlight
+     * will be shown only for ammount of time.
+     */
+    void ShowHighlight();
+    
+    /**
+     * Hides highlight.
+     */
+    void HideHighlight();
+    
+    /**
+     * Checks if the highlight is currently visible.
+     * 
+     * @return  ETrue  if highlight is visible
+     *          EFalse if highlight is not visible
+     */
+    TBool IsHighlightVisible();
+    
+    /**
+     * Sets visible view, items outside of view will not be drawn
+     */
+    void SetVisibleViewRect( const TRect aRect );
+    
+    /**
+     * Returns visible view. Items outside of visible rectangle are not drawn.
+     */
+    TRect VisibleViewRect();
+    
+    /**
+     * Launch tactile ETouchFeedbackSensitive feedback.
+     */
+    void LaunchTactileFeedback();
+    
+    /**
+     * Set tactile feedback support.
+     * 
+     * @param aSupport new support value 
+     */
+    void SetTactileFeedbackSupport(TBool aSupport);
+    
+    /**
+     * Remove item from iFullyVisibleItems and iPartialVisibleItems arrays 
+     * 
+     * @param   aItem  idem index 
+     * @return  ETrue  if item was removed
+     *          EFalse if item was not found
+     */
+    TBool RemoveFromVisibleItems(TInt aItem) const;
+
+    /**
+     * Add item to iFullyVisibleItems array 
+     * 
+     * @param   aItem  idem index 
+     * @return  ETrue  if item was added
+     *          EFalse if item was not added because it was there before
+     */
+    TBool AddToFullyVisibleItems(TInt aItem) const;
+
+    /**
+     * Remove item from iPartialVisibleItems array 
+     * 
+     * @param   aItem  idem index 
+     * @return  ETrue  if item was removed
+     *          EFalse if item was not removed because it was not found
+     */
+    TBool MoveToPartialVisibleItems(TInt aItem) const;
+
+private: // From CAknGrid
+    virtual void CreateItemDrawerL();
+
+private: // New functions
+    
+    /**
+     * Loads close icon bitmap and mask
+     */
+    void LoadCloseIcon();
+    
+    /**
+     * Redraws grid and parent controls
+     */
+    void Redraw();
+    
+private: // Data
+    
+    // Grid's parent
+    const CCoeControl* iParent;
+    
+    // Background context for grid
+    CAknsFrameBackgroundControlContext* iBgContext;
+    
+    // Close icon handling
+    RArray<TInt> iCloseItems;
+    TInt iCloseIconHitIdx;
+    MTsFastSwapGridObserver* iFastSwapGridObserver;
+
+    // Highlight handling
+    TFastSwapGridBehaviour iBehaviour;
+    TBool iHighlightVisible;
+    
+    // Visible view rectangle (horizontal scrolling support)
+    TRect iVisibleViewRect;
+    
+    TBool iTactileFeedbackSupport;
+    
+    mutable RArray<TInt> iFullyVisibleItems;
+    mutable RArray<TInt> iPartialVisibleItems;
+    };
+
+
+
+/**
+ * Custom item drawer for drawing grid items
+ */
+class CTsGridItemDrawer: public CFormattedCellListBoxItemDrawer
+    {
+
+public: // Constructor and destructor
+    CTsGridItemDrawer( CTsFastSwapGrid* aGrid,
+                               CFormattedCellListBoxData* aData );
+    ~CTsGridItemDrawer();
+
+public: // New functions
+
+    /**
+     * Sets close icon drawn for items that can be closed.
+     * Ownership transferred.
+     */
+    void SetCloseIcon( CFbsBitmap* aBmp, CFbsBitmap* aMask );
+
+    /**
+     * Initializes close icon rectangles.
+     * 
+     * @param  aButtonRect  rectangle for the button, coordinates must be relative to the grid item
+     * @param  aIconRect    rectangle for the icon, coordinates must be relative to the grid item
+     */
+    void SetCloseIconRect( const TRect& aButtonRect, const TRect& aIconRect );
+    
+    /**
+     * Returns current close icon coordinates for the given item rectangle
+     * 
+     * @param  aItemRect  rectangle of the item for which close button coordinates
+     *                    are to be returned
+     */
+    TRect GetCloseButtonRect( const TRect& aItemRect ) const;
+    
+    /**
+     * Sets screen offset for the item drawer to not draw items on the
+     * grid edges
+     */
+    void SetEdgeOffset( TInt aLeftOffset, TInt aRightOffset );
+    
+    /**
+     * Enables/Disables item drawer background redrawing
+     * 
+     * @param  aEnable  if set to ETrue, background will be redrawn by item drawer
+     *                  if set to EFalse, background will not be redrawn
+     */
+    void SetRedrawBackground( TBool aEnable );
+
+private: // From CFormattedCellListBoxItemDrawer
+    void DrawActualItem( TInt aItemIndex, const TRect& aActualItemRect,
+                         TBool aItemIsCurrent, TBool aViewIsEmphasized,
+                         TBool aViewIsDimmed, TBool aItemIsSelected ) const;
+private: // New functions
+    /**
+     * Checks if the item rectangle is visible in the view.
+     * 
+     * @param   aItemRect  rectangle of the item to be checked 
+     * @return  ETrue      if rectangle is fully or partially visible
+     *          EFalse     if rectangle is not visible
+     */
+    TBool IsItemRectVisible( const TRect& aItemRect ) const;
+    
+    /**
+     * Checks if the aRectContained rectancle is contained by aRectContainig 
+     * 
+     * @param   aRectContained  rectangle that is suppose to be contained 
+     * @param   aRectContainig  rectangle that is suppose to be containing 
+     * @return  ETrue      if rectangle is fully contained 
+     *          EFalse     if rectangle is not fully contained
+     */
+    TBool IsRectContained(const TRect& aRectContained,
+            const TRect& aRectContainig) const;
+
+    /**
+     * Calculates current inner button rectangle for close icon
+     */
+    TRect CalculateInnerButtonRect( const TRect& aOuterRect ) const; 
+    
+private: // Data
+    // Not owned
+    CTsFastSwapGrid* iGrid;
+    // Owned
+    CFbsBitmap* iCloseIcon;
+    CFbsBitmap* iCloseIconMask;
+    
+    TRect iScreenRect;
+    TInt iLeftOffset;
+    TInt iRightOffset;
+    
+    // Layout data
+    TRect iCloseIconRect;
+    TRect iCloseButtonRect;
+	
+    TBool iRedrawBackground;
+    };
+
+
+
+/**
+ * Timer class for handling highlight bevaiour
+ */
+class CTsFastSwapTimer : public CTimer
+    {
+public:
+    // Constructor
+    CTsFastSwapTimer( MTsFastSwapTimerObserver& aObserver );
+    // Destructor
+    ~CTsFastSwapTimer();
+    // 2nd phase constructor
+    void ConstructL();
+    
+private: // From CTimer
+    void RunL();
+    
+private: // Data
+    MTsFastSwapTimerObserver* iObserver; // not own
+    };
+
+#endif /* TSFASTSWAPGRID_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/inc/tsphysics.h	Tue Jan 26 11:48:23 2010 +0200
@@ -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:  Application class
+ *
+*/
+
+
+#ifndef TSPHYSICS_H
+#define TSPHYSICS_H
+
+#include <e32base.h>
+#include <e32std.h>
+
+class MAknPhysicsObserver;
+
+/**
+ * Simple physics for grid animation
+ */
+class CTsPhysics : public CActive
+    {
+public:
+    /*
+     * Destructor
+     */
+    ~CTsPhysics();
+
+    /**
+     * Two-phased constructor.
+     */
+    static CTsPhysics* NewL( MAknPhysicsObserver& aObserver );
+
+    /**
+     * Two-phased constructor.
+     */
+    static CTsPhysics* NewLC( MAknPhysicsObserver& aObserver );
+
+public: // New functions
+    
+    /**
+     * Starts animation
+     * 
+     * @param  aDrag       next drag point
+     * @param  aStartTime  when animation should be started
+     */
+    void StartPhysics( const TPoint& aTarget );
+
+    /**
+     * Stops animation
+     */
+    void StopPhysics();
+    
+private:
+    
+    /**
+     * C++ constructor
+     */
+    CTsPhysics( MAknPhysicsObserver& aObserver );
+
+    /**
+     * Second-phase constructor
+     */
+    void ConstructL();
+
+private: // From CActive
+    
+    /**
+     * Handles completion
+     */
+    void RunL();
+
+    /**
+     * Called when cancelled
+     */
+    void DoCancel();
+
+    /**
+     * Hanldes error
+     */
+    TInt RunError( TInt aError );
+    
+private: // New functions
+    
+    /**
+     * Calculates animation steps
+     */
+    TInt CalculateAnimationSteps( const TPoint& aTarget );
+
+private:
+
+    enum TPhysicsStatus
+        {
+        EStopped,
+        ERunning,
+        EFinished
+        };
+    
+    /**
+     * Observer
+     */
+    MAknPhysicsObserver& iObserver;
+    
+    /**
+     * Animation timer
+     */
+    RTimer iTimer;
+    
+    /**
+     * Animation state
+     */
+    TPhysicsStatus iPhysicsState;
+    
+    /**
+     * Controls animation refresh rate
+     */
+    TTimeIntervalMicroSeconds32 iAnimationTickTime;
+    
+    /**
+     * Animation ticks counter
+     */
+    TInt iAnimationTicks;
+    
+    /**
+     * Offset of how much view should be moved
+     */
+    RArray<TPoint> iAnimationSteps;
+
+    };
+
+#endif // TSPHYSICS_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/inc/tsphysicsengine.h	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,116 @@
+/*
+* 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:  Taskswitcher physic engine
+ *
+*/
+
+
+#ifndef TSPHYSICSENGINE_H_
+#define TSPHYSICSENGINE_H_
+
+#include <e32base.h>
+#include <akntouchgesturefw.h>
+// CLASS DECLARATION
+class CAknPhysics;
+class CTsPhysics;
+/**
+ * Taskswitcher physic engine implementation
+ */
+class CTsPhysicsEngine: public CBase
+    {
+public:
+    // Constructors and destructor
+
+    /**
+     * Destructor.
+     */
+    ~CTsPhysicsEngine();
+
+    /**
+     * Two-phased constructor.
+     */
+    static CTsPhysicsEngine* NewL(MAknPhysicsObserver& aPhysicObserver,
+            CCoeControl& aViewControl);
+
+    /**
+     * Two-phased constructor.
+     */
+    static CTsPhysicsEngine* NewLC(MAknPhysicsObserver& aPhysicObserver,
+            CCoeControl& aViewControl);
+
+private:
+
+    /**
+     * Constructor for performing 1st stage construction
+     */
+    CTsPhysicsEngine();
+
+    /**
+     * EPOC default constructor for performing 2nd stage construction
+     */
+    void ConstructL(MAknPhysicsObserver& aPhysicObserver,
+            CCoeControl& aViewControl);
+    
+    
+public:
+    /**
+     * Implements drag gesture handling
+     * @param aEvent - drag event
+     */
+    void HandleDragEvent(AknTouchGestureFw::MAknTouchGestureFwDragEvent& aEvent);
+    
+    /**
+     */
+    TBool IsRunning() const;
+    
+    /**
+     */
+    void Stop();
+    
+    /**
+     * Initialize animation between current position and destination point
+     * @param aPoint - destination point 
+     */
+    void AnimateToTarget(const TPoint& aPoint);
+    
+    /**
+     * 
+     * @param aWorldSize Physics world size.
+     * @param aViewSize Physics (visible) view size.
+     * @param aLandscape ETrue if physics should work in landscape.     
+     **/
+    void ReInitPhysicsL(const TSize& aWorldSize, 
+                        const TSize& aViewSize,
+                        TBool aLandscape);
+    
+private:
+    /**
+     * Physics. 
+     * Own.
+     */
+    CAknPhysics* iPhysics;
+
+    /**
+     * Drag start time
+     */
+    TTime iStartTime;
+    
+    /**
+     * Taskswitcher physics for item switch animation
+     */
+    CTsPhysics* iTaskswitcherPhysics;
+
+    };
+
+#endif /* TSPHYSICSENGINE_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/inc/tsuid.hrh	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,24 @@
+/*
+* 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:  Taskswitcher application's UID3
+ *
+*/
+
+
+#ifndef TSAPPUID_HRH
+#define TSAPPUID_HRH
+
+#define KTsAppUidValue      0x20016BF0
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/loc/taskswitcher.loc	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,50 @@
+/*
+* 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:  Task Switcher application's localization texts
+*
+*/
+
+
+//d:Popup menu item text
+//d:Activate selected application
+//l:list_single_touch_menu_pane_t1
+//r:5.0
+//
+#define qtn_task_switcher_popup_open_app "Activate"
+
+//d:Popup menu item text
+//d:Close selected application
+//l:list_single_touch_menu_pane_t1
+//r:5.0
+//
+#define qtn_task_switcher_popup_close_app "Close"
+
+//d:Popup menu item text
+//d:Close all application
+//l:list_single_touch_menu_pane_t1
+//r:5.0
+//
+#define qtn_task_switcher_popup_close_all "Close all"
+
+//d:Text for heading pane above the task swapper
+//l:heading_pane_t1
+//r:5.0
+//
+#define qtn_task_switcher_heading_applications "Open applications"
+
+//d:Text for appliactions that has no name
+//l:none
+//r:5.0
+//
+#define qtn_task_switcher_default_task_name "No name"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/src/tsapplication.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,50 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Application class
+ *
+*/
+
+
+#include "tsdocument.h"
+#include "tsapplication.h"
+#include "tsuid.hrh"
+
+// UID for the application, this should correspond
+// to the uid defined in the mmp file
+static const TUid KUidTsApp = { KTsAppUidValue };
+
+// -----------------------------------------------------------------------------
+// CTsApplication::CreateDocumentL( )
+// Create a CApaDocument object and return a pointer to it
+// -----------------------------------------------------------------------------
+//
+CApaDocument* CTsApplication::CreateDocumentL( )
+    {
+    CApaDocument* document = CTsDocument::NewL( *this );
+    return document;
+    }
+
+// -----------------------------------------------------------------------------
+// CTsApplication::AppDllUid( )
+// Returns the application DLL UID value
+// -----------------------------------------------------------------------------
+//
+TUid CTsApplication::AppDllUid( ) const
+    {
+    // Return the UID for the task switcher application
+    return KUidTsApp;
+    }
+
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/src/tsappui.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,581 @@
+/*
+* 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:  AppUi class
+ *
+*/
+
+
+#include "tsappui.h"
+#include "tsappview.h"
+#include "tsapplogging.h"
+#include "tsdevicestate.h"
+#include "tsuid.hrh"
+#include "tscommands.hrh"
+#include <akntitle.h>
+#include <hlplch.h>
+#include <avkon.rsg>
+#include <bautils.h>
+#include <AknUtils.h>
+#include <tstaskswitcher.rsg>
+#include <pslninternalcrkeys.h>
+#include <oommonitorsession.h>
+#include <hal.h>
+#include <hal_data.h>
+#include <akntranseffect.h>
+
+
+// AknCapServer UID, used for P&S category
+const TUid KTaskswitcherStateCategory = { 0x10207218 };
+
+// Taskswitcher UI, used as P&S key
+const TInt KTaskswitcherStateKey = KTsAppUidValue;
+
+// Values for Taskswitcher launching P&S
+const TInt KTaskswitcherBackgroundValue = 1;
+const TInt KTaskswitcherForegroundValue = KTaskswitcherBackgroundValue << 1;
+const TInt KTaskswitcherShortAppKeyPressed = KTaskswitcherForegroundValue << 1;
+const TInt KTaskswitcherLongAppKeyPressed = KTaskswitcherShortAppKeyPressed << 1;
+
+//short/long App key values 
+const TInt KAppKeyTypeShort = 1;
+const TInt KAppKeyTypeLong = 2;
+
+//values for checking the OOM
+const TInt KMemoryRequestAmountInBytes = 524288;
+const TInt KMinMemoryAmountInBytes = 524288;
+const TInt KMemoryToBeReservedInBytes = 524288; // 512 KB
+
+// time to wait before sending the task to background
+// (must give time to animation)
+const TInt KWaitBeforeGoingToBackground = 100000;
+
+// -----------------------------------------------------------------------------
+// CTsAppUi::ConstructL()
+// ConstructL is called by the application framework
+// -----------------------------------------------------------------------------
+//
+void CTsAppUi::ConstructL()
+    {
+    TSLOG_CONTEXT( CTsAppUi::ConstructL, TSLOG_LOCAL );
+    TSLOG_IN();
+
+#ifdef _DEBUG
+    // create log folder
+	_LIT( KLogPath, "c:\\logs\\taskswitcher\\" );
+	RFs fs;
+	if ( fs.Connect() == KErrNone )
+		{
+		fs.MkDirAll( KLogPath );
+		fs.Close();
+		}
+#endif
+
+    // Initialise app UI with standard value.
+    BaseConstructL( CAknAppUi::EAknEnableSkin | CAknAppUi::EAknEnableMSK );
+
+#ifndef _DEBUG
+    // set as system application (in release build) so we never get closed
+    iEikonEnv->SetSystem( ETrue );
+#endif
+
+    //Initialize effects change observation
+    iThemeEffectsEnabledWatcher =
+        CTsCenrepListener::NewL( KCRUidThemes, KThemesTransitionEffects, *this );
+    CenrepChanged( KThemesTransitionEffects, iThemeEffectsEnabledWatcher->Value() );
+    
+    // Hide status pane
+    StatusPane()->MakeVisible( EFalse );
+
+    // Change CBA if needed, default is non-touch in rss
+    if ( AknLayoutUtils::PenEnabled() )
+        {
+        Cba()->SetCommandSetL( R_TS_CBA_TOUCH );
+        }
+    Cba()->MakeVisible(EFalse);
+
+    // Create timer
+    iGoToBackgroundTimer = CPeriodic::NewL( CActive::EPriorityStandard );
+
+    // Create commonly used instances (device state only?)
+    iDeviceState = CTsDeviceState::NewL();
+
+    // Create UI
+    iAppView = CTsAppView::NewL( ApplicationRect(), *iDeviceState );
+    AddToStackL( iAppView );
+    
+    //Enable effects
+    GfxTransEffect::Enable();
+    GfxTransEffect::Register(iAppView,TUid::Uid(KTsAppUidValue));
+    GfxTransEffect::SetTransitionObserver(this);
+
+    // Listen for change in the value of the ts state property.
+    iPropListener = new ( ELeave ) CTsPropertyListener(
+            KTaskswitcherStateCategory, KTaskswitcherStateKey, *this );
+
+    // Initialise the application task object with the window group id of
+    // our application ( so that it represent our app )
+    iApplicationTask.SetWgId( iCoeEnv->RootWin().Identifier() );
+
+    // And finally, go to background.
+    MoveAppToBackground( AknTransEffect::ENone );
+
+    TSLOG_OUT();
+    }
+
+// -----------------------------------------------------------------------------
+// CTsAppUi::CTsAppUi()
+// Perform the first phase of two phase construction
+// -----------------------------------------------------------------------------
+//
+CTsAppUi::CTsAppUi(): iForeground( ETrue ),
+                                      iApplicationTask( iCoeEnv->WsSession() )
+    {
+    // no implementation required
+    }
+
+// -----------------------------------------------------------------------------
+// CTsAppUi::~CTsAppUi()
+// Destructor
+// -----------------------------------------------------------------------------
+//
+CTsAppUi::~CTsAppUi()
+    {
+    if( GfxTransEffect::IsRegistered( iAppView ) )
+        {
+        GfxTransEffect::Deregister(iAppView);
+        
+        }
+    GfxTransEffect::SetTransitionObserver(0);
+    
+    delete iGoToBackgroundTimer;
+    delete iPropListener;
+
+    // destroy UI first
+    if ( iAppView )
+        {
+        RemoveFromStack( iAppView );
+        delete iAppView;
+        }
+
+    delete iDeviceState;
+    delete iMemAllocBuf;
+    delete iThemeEffectsEnabledWatcher;
+    }
+
+// -----------------------------------------------------------------------------
+// CTsAppView::EffectsEnabled
+// -----------------------------------------------------------------------------
+//
+TBool CTsAppUi::EffectsEnabled() const
+    {
+    return iEffectsEnabled;
+    }
+
+// -----------------------------------------------------------------------------
+// CTsAppUi::StartTransion
+// -----------------------------------------------------------------------------
+//
+void CTsAppUi::StartTransion( TUint aTransitionType )
+    {
+    if( !EffectsEnabled() )
+        {
+        return;
+        }
+    switch(aTransitionType)
+        {
+    case AknTransEffect::EApplicationStart:
+        StartTransition( aTransitionType, 
+                         ETrue, 
+                         EFalse, 
+                         CAknTransitionUtils::EForceVisible);
+        break;
+    case AknTransEffect::EApplicationExit:
+        StartTransition( aTransitionType, 
+                         EFalse, 
+                         EFalse, 
+                         CAknTransitionUtils::EForceInvisible );
+        break;
+    case AknTransEffect::EApplicationStartRect:
+        StartTransition( aTransitionType, 
+                         EFalse, 
+                         ETrue, 
+                         CAknTransitionUtils::EForceInvisible );
+        break;
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CTsAppUi::StartTransition
+// -----------------------------------------------------------------------------
+//
+void CTsAppUi::StartTransition( TUint aTranstionId,
+                                TBool aVisibility,
+                                TBool /*aLayers*/, 
+                                TUint aSubCom )
+    {
+    const TDesC8* ptr = reinterpret_cast<const TDesC8*>(iAppView);
+    GfxTransEffect::Abort(iAppView);
+    GfxTransEffect::Begin( iAppView, aTranstionId );
+    GfxTransEffect::SetDemarcation( iAppView, iAppView->Rect() );
+    GfxTransEffect::NotifyExternalState( ECaptureComponentsBegin, ptr );
+    iAppView->MakeVisible( aVisibility );
+    CAknTransitionUtils::MakeVisibleSubComponents( 
+        iAppView,
+        static_cast<CAknTransitionUtils::TMakeVisibleSubComponentsInfo>(aSubCom) );
+    GfxTransEffect::NotifyExternalState( ECaptureComponentsEnd, ptr );
+    GfxTransEffect::End( iAppView );
+    }
+
+// -----------------------------------------------------------------------------
+// CTsAppUi::TransitionFinished
+// -----------------------------------------------------------------------------
+//
+void CTsAppUi::TransitionFinished(const CCoeControl* /*aControl*/, 
+                                  TUint /*aAction*/)
+    {
+    /*if( aControl == iAppView )
+        {
+		@TODO IMPLEMENT
+        }*/
+    }
+
+// -----------------------------------------------------------------------------
+// CTsAppUi::HandleCommandL()
+// Takes care of command handling.
+// -----------------------------------------------------------------------------
+//
+void CTsAppUi::HandleCommandL( TInt aCommand )
+    {
+    switch ( aCommand )
+        {
+        case EAknCmdExit:
+        case EEikCmdExit:
+            Exit();
+            break;
+
+        case EAknSoftkeyExit:
+        case EAknSoftkeyBack:
+            // RSK => just hide
+            MoveAppToBackground( AknTransEffect::EApplicationExit );
+            break;
+
+        case ETsCmdHelp:
+            {
+            MoveAppToBackground( AknTransEffect::EApplicationExit );
+            CArrayFix<TCoeHelpContext>* buf = CCoeAppUi::AppHelpContextL();
+            HlpLauncher::LaunchHelpApplicationL( iCoeEnv->WsSession(), buf );
+            }
+            break;
+
+        case EAknSoftkeySelect:
+            {
+            // select is generated by lsk and msk (see the resource file)
+            // Simulate a middle key press to the controls.
+            // Note that SimulateKeyEventL must not be used here or else it
+            // will end up in an infinite loop.
+            TKeyEvent keyEvent;
+            keyEvent.iCode = EKeyOK;
+            keyEvent.iScanCode = EStdKeyDevice3;
+            keyEvent.iModifiers = keyEvent.iRepeats = 0;
+            iAppView->OfferKeyEventL( keyEvent, EEventKeyDown );
+            iAppView->OfferKeyEventL( keyEvent, EEventKey );
+            iAppView->OfferKeyEventL( keyEvent, EEventKeyUp );
+            }
+            break;
+
+        default:
+            break;
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CTsAppUi::HandleForegroundEventL
+// Called by the system when the app is moved to foreground or background.
+// -----------------------------------------------------------------------------
+//
+void CTsAppUi::HandleForegroundEventL( TBool aForeground )
+    {
+    TSLOG_CONTEXT( HandleForegroundEventL, TSLOG_LOCAL );
+    TSLOG1_IN( "aForeground = %d", aForeground );
+
+    // These calls may be redundant but the functions will do nothing if the
+    // state has already been changed.
+    // Both this function and the 'manual' MoveAppTo functions must fire the events
+    // because in some cases only one of them will run (e.g. when bringing to foreground
+    // not with the hw key but by other means etc.)
+    if ( aForeground )
+        {
+        HandleSwitchToForegroundEvent();
+        }
+    else
+        {
+        HandleSwitchToBackgroundEvent();
+        }
+
+    // Call Base class method
+    CAknAppUi::HandleForegroundEventL( aForeground );
+
+    TSLOG_OUT();
+    }
+
+// -----------------------------------------------------------------------------
+// CTsAppUi::PropertyChanged
+// -----------------------------------------------------------------------------
+//
+void CTsAppUi::PropertyChanged( TUid aCategory, TUint aKey )
+    {
+    TSLOG_CONTEXT( PropertyChanged, TSLOG_LOCAL );
+    TSLOG_IN();
+
+    TInt value( 0 );
+
+    if ( RProperty::Get( aCategory, aKey, value ) == KErrNone )
+        {
+        if ( iForeground && (value & KTaskswitcherBackgroundValue) )
+            {
+            MoveAppToBackground( AknTransEffect::EApplicationExit );
+            }
+        else if ( !iForeground && (value & KTaskswitcherForegroundValue) )
+            {
+            MoveAppToForeground( AknTransEffect::EApplicationStart );
+            }
+        else if( value & KTaskswitcherLongAppKeyPressed )
+            {
+            if(!iForeground)
+                {
+                MoveAppToBackground( AknTransEffect::EApplicationExit );
+                }
+            else
+                {
+                iAppView->HandleAppKey(KAppKeyTypeLong);
+                }
+            }
+        else if(  value & KTaskswitcherShortAppKeyPressed )
+            {
+            iAppView->HandleAppKey(KAppKeyTypeShort);
+            }
+        }
+
+    TSLOG_OUT();
+    }
+
+// -----------------------------------------------------------------------------
+// CTsAppUi::HandleResourceChangeL
+// -----------------------------------------------------------------------------
+//
+void CTsAppUi::HandleResourceChangeL( TInt aType )
+    {
+    // Must call base class implementation first,
+    // sizes from LayoutMetricsRect etc. will only be correct after this.
+    CAknAppUi::HandleResourceChangeL( aType );
+    if( aType == KEikDynamicLayoutVariantSwitch && iAppView )
+        {
+        iAppView->SetRect( ApplicationRect() );
+        }
+    // forward event
+    iDeviceState->HandleResourceChange( aType );
+    iAppView->HandleResourceChange( aType );
+    }
+
+// -----------------------------------------------------------------------------
+// CTsAppUi::MoveAppToBackground()
+// -----------------------------------------------------------------------------
+//
+void CTsAppUi::MoveAppToBackground( TUint aTransitionType )
+    {
+    TSLOG_CONTEXT( MoveAppToBackground, TSLOG_LOCAL );
+    TSLOG_IN();
+
+    if ( AknTransEffect::ENone == aTransitionType || !EffectsEnabled() )
+        {
+        GoToBackgroundTimerCallback( this );
+        }
+    else
+        {
+        StartTransion(AknTransEffect::EApplicationExit);
+        iGoToBackgroundTimer->Cancel();
+        iGoToBackgroundTimer->Start( 
+                KWaitBeforeGoingToBackground, 
+                0,
+                TCallBack( GoToBackgroundTimerCallback, this ) );
+        }
+    TSLOG_OUT();
+    }
+
+// -----------------------------------------------------------------------------
+// CTsAppUi::CenrepChanged
+// -----------------------------------------------------------------------------
+//
+void CTsAppUi::CenrepChanged( TUint32 /*aKey*/, TInt aNewValue )
+    {
+    iEffectsEnabled = !(aNewValue & AknTransEffect::EFullScreenTransitionsOff);
+    }
+
+// -----------------------------------------------------------------------------
+// CTsAppUi::GoToBackgroundTimerCallback
+// -----------------------------------------------------------------------------
+//
+TInt CTsAppUi::GoToBackgroundTimerCallback( TAny* aParam )
+    {
+    CTsAppUi* self = static_cast<CTsAppUi*>( aParam );
+    if ( self->iGoToBackgroundTimer )
+        {
+        self->iGoToBackgroundTimer->Cancel();
+        }
+
+    // Request window server to bring our application
+    // to background
+    self->iApplicationTask.SendToBackground();
+
+    // Notify
+    self->HandleSwitchToBackgroundEvent();
+
+    return 0;
+    }
+
+// -----------------------------------------------------------------------------
+// CTsAppUi::MoveAppToForeground()
+// -----------------------------------------------------------------------------
+//
+void CTsAppUi::MoveAppToForeground( TUint  /*aTransitionType*/ )
+    {
+    TSLOG_CONTEXT( MoveAppToForeground, TSLOG_LOCAL );
+    TSLOG_IN();
+
+    // Request window server to bring our application
+    // to foreground
+    iApplicationTask.BringToForeground();
+
+    // Notify
+    HandleSwitchToForegroundEvent();
+
+    TSLOG_OUT();
+    }
+
+// -----------------------------------------------------------------------------
+// CTsAppUi::HandleSwitchToBackgroundEvent
+// -----------------------------------------------------------------------------
+//
+void CTsAppUi::HandleSwitchToBackgroundEvent()
+    {
+    TSLOG_CONTEXT( HandleSwitchToBackgroundEvent, TSLOG_LOCAL );
+    TSLOG_IN();
+
+    // must not do anything if iForeground is already up-to-date
+    // exclude cases with dialogs like power menu, memory card
+    if( iForeground && !IsFaded() )  
+        {
+        iForeground = EFalse;
+        SetTaskswitcherStateProperty( KTaskswitcherBackgroundValue );
+
+        //allocating extra memory space
+        if ( !iMemAllocBuf )
+            {
+            iMemAllocBuf =
+                (TUint8*) User::Alloc( KMemoryToBeReservedInBytes );
+            }
+
+        // notify view
+        iAppView->HandleSwitchToBackgroundEvent();
+        }
+
+    TSLOG_OUT();
+    }
+
+// -----------------------------------------------------------------------------
+// CTsAppUi::HandleSwitchToForegroundEvent
+// -----------------------------------------------------------------------------
+//
+void CTsAppUi::HandleSwitchToForegroundEvent()
+    {
+    TSLOG_CONTEXT( HandleSwitchToForegroundEvent, TSLOG_LOCAL );
+    TSLOG_IN();
+
+    // must not do anything if iForeground is already up-to-date
+    if ( !iForeground )
+        {
+        //freeing extra memory space
+        delete iMemAllocBuf;
+        iMemAllocBuf = NULL;
+
+        TInt freeRamMemory;
+        HAL::Get( HALData::EMemoryRAMFree, freeRamMemory );
+        if ( freeRamMemory <= KMinMemoryAmountInBytes )
+            {
+            FreeMemoryRequest();
+            }
+
+        iForeground = ETrue;
+        SetTaskswitcherStateProperty( KTaskswitcherForegroundValue );
+
+        // notify view
+        iAppView->HandleSwitchToForegroundEvent();
+        }
+
+    TSLOG_OUT();
+    }
+
+// -----------------------------------------------------------------------------
+// CTsAppUi::SetTaskswitcherShowProperty
+// -----------------------------------------------------------------------------
+//
+void CTsAppUi::SetTaskswitcherStateProperty( TInt aValue )
+    {
+    TSLOG_CONTEXT( CTsAppUi::SetTaskswitcherShowProperty, TSLOG_LOCAL );
+    TSLOG_IN();
+
+    if ( RProperty::Set(
+            KTaskswitcherStateCategory, KTaskswitcherStateKey, aValue ) != KErrNone )
+        {
+        TInt error = RProperty::Define(
+                KTaskswitcherStateCategory, KTaskswitcherStateKey, RProperty::EInt );
+        if ( error != KErrNone )
+            {
+            TSLOG1( TSLOG_INFO, "RProperty::Define Error: %d", error );
+            }
+
+        error = RProperty::Set( KTaskswitcherStateCategory, KTaskswitcherStateKey, aValue );
+        if ( error != KErrNone )
+            {
+            TSLOG1( TSLOG_INFO, "RProperty::Set Error: %d", error );
+            }
+        }
+
+    TSLOG_OUT();
+    }
+
+// -----------------------------------------------------------------------------
+// CTsAppUi::FreeMemoryRequest
+// -----------------------------------------------------------------------------
+//
+void CTsAppUi::FreeMemoryRequest()
+    {
+    TSLOG_CONTEXT( CTsAppUi::FreeMemoryRequest, TSLOG_LOCAL );
+    TSLOG_IN();
+    ROomMonitorSession oomMs;
+    TInt error = oomMs.Connect();
+    if ( error != KErrNone)
+        {
+        TSLOG1( TSLOG_INFO, "Could not connect to ROomMonitorSession, %d", error );
+        }
+    else
+        {
+        oomMs.RequestFreeMemory( KMemoryRequestAmountInBytes );
+        oomMs.Close();
+        }
+    TSLOG_OUT();
+    }
+
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/src/tsappview.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,731 @@
+/*
+* 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:  Taskswitcher view class
+ *
+*/
+
+
+#include <AknUtils.h>
+#include <AknsUtils.h>
+#include <aknlayoutscalable_apps.cdl.h>
+#include <aknlayoutscalable_avkon.cdl.h>
+#include <layoutmetadata.cdl.h>
+#include <AknsFrameBackgroundControlContext.h>
+#include <AknsDrawUtils.h>
+#include <eikmenub.h>
+#include <gfxtranseffect/gfxtranseffect.h>
+#include <akntransitionutils.h>
+#include <akntranseffect.h>
+#include <aknPopupHeadingPane.h>
+#include <StringLoader.h>
+#include <tstaskswitcher.rsg>
+#include <touchfeedback.h>
+
+#include "tsappview.h"
+#include "tsappui.h"
+#include "tsapplogging.h"
+#include "tsfastswaparea.h"
+#include "tseventcontroler.h"
+#include "tsuid.hrh"
+
+// -----------------------------------------------------------------------------
+// CTsAppView::NewL
+// -----------------------------------------------------------------------------
+//
+CTsAppView* CTsAppView::NewL( const TRect& aRect,
+        CTsDeviceState& aDeviceState )
+    {
+    CTsAppView* self = CTsAppView::NewLC( aRect, aDeviceState );
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CTsAppView::NewLC
+// -----------------------------------------------------------------------------
+//
+CTsAppView* CTsAppView::NewLC( const TRect& aRect,
+        CTsDeviceState& aDeviceState )
+    {
+    CTsAppView* self = new (ELeave) CTsAppView( aDeviceState );
+    CleanupStack::PushL( self );
+    self->ConstructL( aRect );
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CTsAppView::CTsAppView
+// -----------------------------------------------------------------------------
+//
+CTsAppView::CTsAppView(CTsDeviceState& aDeviceState)
+        : iDeviceState( aDeviceState )
+    {
+    // no implementation required
+    }
+
+// -----------------------------------------------------------------------------
+// InvalidateWindows
+// -----------------------------------------------------------------------------
+//
+static void InvalidateWindows( CCoeControl* aControl )
+    {
+    if ( aControl )
+        {
+        if ( aControl->OwnsWindow() )
+            {
+            static_cast<RWindow*>( aControl->DrawableWindow() )->ClearRedrawStore();
+            }
+
+        for ( TInt i = aControl->CountComponentControls() - 1; i >= 0; --i )
+            {
+            InvalidateWindows( aControl->ComponentControl( i ) );
+            }
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CTsAppView::~CTsAppView
+// -----------------------------------------------------------------------------
+//
+CTsAppView::~CTsAppView()
+    {
+    GfxTransEffect::SetTransitionObserver( 0 );
+    if ( GfxTransEffect::IsRegistered( this ) )
+        {
+        MakeVisible( EFalse ); 
+        CAknTransitionUtils::MakeVisibleSubComponents( this,
+            CAknTransitionUtils::EForceInvisible );
+        GfxTransEffect::Deregister( this );
+        }
+    delete iBgContext;
+    delete iFastSwapArea;
+    delete iAppsHeading;
+    
+    delete iEvtHandler;
+    }
+
+// -----------------------------------------------------------------------------
+// CTsAppView::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CTsAppView::ConstructL( const TRect& aRect )
+    {
+    TSLOG_CONTEXT( CTsAppView::ConstructL, TSLOG_LOCAL );
+    TSLOG_IN();
+
+    // Create a window for this application view
+    CreateWindowL();
+
+    // Store rect
+    TInt variety = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0;
+    TAknLayoutRect mainView;
+    mainView.LayoutRect( aRect,
+            AknLayoutScalable_Apps::main_tport_pane( variety ) );
+    iViewRect = mainView.Rect();
+
+    // Background control context is for a frame
+    UpdatePopupRects();
+    iBgContext = CAknsFrameBackgroundControlContext::NewL(
+               KAknsIIDQsnFrPopup,
+               iBgContextOuterRect,
+               iBgContextInnerRect,
+               ETrue );
+    iBgContext->SetFrameRects(iBgContextOuterRect, iBgContextInnerRect);
+    iBgContext->SetCenter( KAknsIIDQsnFrPopupCenter );
+
+    TSLOG4( TSLOG_INFO, "view rect = %d %d %d %d",
+        iViewRect.iTl.iX, iViewRect.iTl.iY,
+        iViewRect.iBr.iX, iViewRect.iBr.iY );
+
+    // Create components
+    CreateControlsL();
+
+    // Hide 'active applications' item in Options menu
+    CEikMenuBar* menub = iEikonEnv->AppUiFactory()->MenuBar();
+    if ( menub )
+        {
+        menub->SetMenuType( CEikMenuBar::EMenuOptionsNoTaskSwapper );
+        }
+
+    // Register for notifications about orientation etc. changes
+    iDeviceState.AddObserverL( *this, MTsDeviceStateObserver::EAny );
+    SetRect( iViewRect );
+    //SetExtentToWholeScreen();
+    iViewRect = Rect();
+    // try to enable window transparency
+    if( CAknEnv::Static()->TransparencyEnabled() )
+        {
+        Window().SetRequiredDisplayMode( EColor16MA );
+        if ( Window().SetTransparencyAlphaChannel() == KErrNone )
+            {
+            Window().SetBackgroundColor( ~0 );
+            }
+        }
+    
+    DrawableWindow()->EnableBackup(EWindowBackupFullScreen);
+    Window().SetOrdinalPosition( 0, ECoeWinPriorityNormal );
+    SetComponentsToInheritVisibility(ETrue);
+    MakeVisible(ETrue);
+    // Ready to be drawn
+    ActivateL();
+    
+    TSLOG_OUT();
+    }
+
+// -----------------------------------------------------------------------------
+// CTsAppView::DisableAppSwitchEffects
+// -----------------------------------------------------------------------------
+//
+void CTsAppView::DisableAppSwitchEffects()
+    {
+    TInt flags = AknTransEffect::TParameter::ENoEffects;
+    GfxTransEffect::BeginFullScreen(
+        AknTransEffect::ENone,
+        TRect(0,0,0,0),
+        AknTransEffect::EParameterType,
+        AknTransEffect::GfxTransParam( TUid::Uid(KTsAppUidValue), flags ) );
+    }
+        
+// -----------------------------------------------------------------------------
+// CTsAppView::GetPopupRects
+// -----------------------------------------------------------------------------
+//
+void CTsAppView::UpdatePopupRects(  )
+    {
+    TSLOG_CONTEXT( UpdatePopupRects, TSLOG_LOCAL );
+    TSLOG_IN();
+
+    TInt variety = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0;
+    
+    TAknLayoutRect bgTport;
+    bgTport.LayoutRect( iViewRect,
+        AknLayoutScalable_Apps::bg_popup_window_pane_cp01( variety ) );
+    iBgContextOuterRect = bgTport.Rect();
+    bgTport.LayoutRect( iBgContextOuterRect,
+        AknLayoutScalable_Avkon::aid_inside_area_window_primary( variety ) );
+    iBgContextInnerRect = bgTport.Rect();
+    TSLOG4( TSLOG_INFO, "outer rect for popup = %d %d %d %d",
+            iBgContextOuterRect.iTl.iX, iBgContextOuterRect.iTl.iY,
+            iBgContextOuterRect.iBr.iX, iBgContextOuterRect.iBr.iY );
+    TSLOG4( TSLOG_INFO, "inner rect for popup = %d %d %d %d",
+            iBgContextInnerRect.iTl.iX, iBgContextInnerRect.iTl.iY,
+            iBgContextInnerRect.iBr.iX, iBgContextInnerRect.iBr.iY );
+   
+#ifdef TASKSWITCHER_USE_CUSTOM_LAYOUT
+    if ( iFastSwapArea )
+        {
+        iBgContextOuterRect = iFastSwapArea->Rect();
+        iBgContextInnerRect = iFastSwapArea->Rect();
+        }
+#endif
+    
+    TSLOG_OUT();
+    }
+    
+// -----------------------------------------------------------------------------
+// CTsAppView::CreateControlsL
+// -----------------------------------------------------------------------------
+//
+void CTsAppView::CreateControlsL()
+    {
+    RArray<TRect> rects;
+    CleanupClosePushL( rects );
+    rects.ReserveL( 2 ); // so appending in GetRects cannot fail
+    GetRects( rects );
+
+    iEvtHandler = CTsEventControler::NewL(*this, *this);
+    iFastSwapArea = CTsFastSwapArea::NewL(rects[1], *this,
+            iDeviceState, *iEvtHandler);
+    iAppsHeading = new ( ELeave ) CAknPopupHeadingPane;
+
+    iFastSwapArea->SetMopParent( this );
+    iFastSwapArea->SetFocusing( ETrue );
+    iFastSwapArea->Setup( *this );
+    iFastSwapArea->SetDataChangeObserver( this );
+    
+    iAppsHeading->SetContainerWindowL( *this );
+    iAppsHeading->ConstructL( KNullDesC() );
+    iAppsHeading->SetLayout( CAknPopupHeadingPane::EListHeadingPane ); 
+
+    //TODO: check why we need to set rect (set already in contructL)
+    iFastSwapArea->SetRect( rects[1] ); // cannot be before iAppsHeading constructL
+    iAppsHeading->SetRect( rects[0] );
+    
+    CleanupStack::PopAndDestroy( &rects );
+    
+    UpdateHeadingsL();
+    }
+
+// -----------------------------------------------------------------------------
+// CTsAppView::GetRects
+// -----------------------------------------------------------------------------
+//
+void CTsAppView::GetRects( RArray<TRect>& aRects )
+    {
+    TSLOG_CONTEXT( CTsAppView::GetRects, TSLOG_LOCAL );
+    TSLOG_IN();
+    
+#ifndef TASKSWITCHER_USE_CUSTOM_LAYOUT
+    TInt variety = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0;
+    
+    TAknLayoutRect appsLabel;
+    TAknLayoutRect fastSwapAreaPane;
+
+    appsLabel.LayoutRect( iViewRect,
+            AknLayoutScalable_Apps::heading_pane_cp07( variety ) );
+    TSLOG4( TSLOG_INFO, "apps heading rect = %d %d %d %d",
+            appsLabel.Rect().iTl.iX, appsLabel.Rect().iTl.iY,
+            appsLabel.Rect().iBr.iX, appsLabel.Rect().iBr.iY );
+
+    
+    fastSwapAreaPane.LayoutRect( iViewRect,
+            AknLayoutScalable_Apps::tport_appsw_pane( variety ) );
+    TSLOG4( TSLOG_INFO, "fsw rect = %d %d %d %d",
+            fastSwapAreaPane.Rect().iTl.iX, fastSwapAreaPane.Rect().iTl.iY,
+            fastSwapAreaPane.Rect().iBr.iX, fastSwapAreaPane.Rect().iBr.iY );
+
+    aRects.Append( appsLabel.Rect() );
+    aRects.Append( fastSwapAreaPane.Rect() );
+#else
+    TRect tempRect;
+    AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EScreen, tempRect);
+    tempRect.iTl = TPoint(0,0);
+    TRect fastSwapRect, headingRect;
+    fastSwapRect.iTl = TPoint(KFswBorderSize, (tempRect.Height() - KFswItemHeight - KFswHeadingHeight) / 2 + KFswHeadingHeight);
+    fastSwapRect.iBr = TPoint(tempRect.iBr.iX - KFswBorderSize, fastSwapRect.iTl.iY + KFswItemHeight);
+    headingRect.iTl = TPoint(KFswBorderSize, fastSwapRect.iTl.iY - KFswHeadingHeight);
+    headingRect.iBr = TPoint(fastSwapRect.iBr.iX, fastSwapRect.iTl.iY);
+    aRects.Append( headingRect );
+    aRects.Append( fastSwapRect );
+#endif
+
+    TSLOG_OUT();
+    }
+
+// -----------------------------------------------------------------------------
+// CTsAppView::SizeChanged
+// -----------------------------------------------------------------------------
+//
+void CTsAppView::SizeChanged()
+    {
+    TSLOG_CONTEXT( CTsAppView::SizeChanged, TSLOG_LOCAL );
+    TSLOG_IN();
+    UpdatePopupRects();
+    iBgContext->SetFrameRects(iBgContextOuterRect, iBgContextInnerRect);
+    if ( iFastSwapArea && iAppsHeading  )
+        {
+        RArray<TRect> rects;
+        // make sure that appending in GetRect cannot fail
+        if ( rects.Reserve( 2 ) == KErrNone )
+            {
+            GetRects( rects );
+            iAppsHeading->SetRect( rects[0] );
+            iFastSwapArea->SetRect( rects[1] );
+            
+            DrawDeferred();
+            }
+        rects.Close();
+
+        // Focus jumps back to fsw
+        ChangeFocus( iFastSwapArea );
+        }
+
+    TSLOG_OUT();
+    }
+
+// -----------------------------------------------------------------------------
+// CTsAppView::Draw
+// -----------------------------------------------------------------------------
+//
+void CTsAppView::Draw( const TRect& /*aRect*/ ) const
+    {
+    CWindowGc& gc = SystemGc();
+    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+    AknsDrawUtils::DrawFrame( skin,
+           gc,
+           iBgContextOuterRect,
+           iBgContextInnerRect,
+           KAknsIIDQsnFrPopup,
+           KAknsIIDQsnFrPopupCenter );
+    }
+
+// -----------------------------------------------------------------------------
+// CTsAppView::MopSupplyObject
+// -----------------------------------------------------------------------------
+//
+TTypeUid::Ptr CTsAppView::MopSupplyObject( TTypeUid aId )
+    {
+    if ( aId.iUid == MAknsControlContext::ETypeId )
+        {
+        return MAknsControlContext::SupplyMopObject( aId, iBgContext );
+        }
+    return CCoeControl::MopSupplyObject( aId );
+    }
+
+// -----------------------------------------------------------------------------
+// CTsAppView::OfferKeyEventL
+// -----------------------------------------------------------------------------
+//
+TKeyResponse CTsAppView::OfferKeyEventL(
+        const TKeyEvent& aKeyEvent,
+        TEventCode aType )
+    {
+    TSLOG_CONTEXT( OfferKeyEventL, TSLOG_LOCAL );
+    TSLOG2_IN( "iCode = %d type = %d", aKeyEvent.iCode, aType );
+
+    TKeyResponse result = EKeyWasNotConsumed;
+
+    // Always use the portrait version, the layout in landscape is now
+    // similar to portrait.
+    result = OfferKeyEventPortraitStyleL( aKeyEvent, aType );
+
+    // handle some other keys
+    if ( result == EKeyWasNotConsumed && aType == EEventKey )
+        {
+        switch ( aKeyEvent.iCode )
+            {
+            case EKeyYes: // send (green) key
+                result = EKeyWasConsumed;
+                break;
+            }
+        }
+
+    // forward to focused control if not yet handled
+    if ( result == EKeyWasNotConsumed && iFocused )
+        {
+        result = iFocused->OfferKeyEventL( aKeyEvent, aType );
+        }
+
+    TSLOG1_OUT( "response = %d", result );
+    return result;
+    }
+
+// -----------------------------------------------------------------------------
+// CTsAppView::OfferKeyEventPortraitStyleL
+// -----------------------------------------------------------------------------
+//
+TKeyResponse CTsAppView::OfferKeyEventPortraitStyleL(
+        const TKeyEvent& /*aKeyEvent*/, TEventCode /*aType*/)
+    {
+    TKeyResponse result = EKeyWasNotConsumed;
+    return result;
+    }
+
+
+// -----------------------------------------------------------------------------
+// CTsAppView::CountComponentControls
+// -----------------------------------------------------------------------------
+//
+TInt CTsAppView::CountComponentControls() const
+    {
+    return 2;
+    }
+
+// -----------------------------------------------------------------------------
+// CTsAppView::ComponentControl
+// -----------------------------------------------------------------------------
+//
+CCoeControl* CTsAppView::ComponentControl( TInt aIndex ) const
+    {
+    switch ( aIndex )
+        {
+        case 0:
+            return iFastSwapArea;
+        case 1:
+            return iAppsHeading;
+        default:
+            return NULL;
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CTsAppView::HandleSwitchToBackgroundEvent
+// -----------------------------------------------------------------------------
+//
+void CTsAppView::HandleSwitchToBackgroundEvent()
+    {
+    // Stop animation and unfade
+    GfxTransEffect::Abort();
+    iPopupFader.FadeBehindPopup( this, NULL, EFalse );
+    
+    GfxTransEffect::Begin( this, 5);
+    // Forward event to interested controls
+    iFastSwapArea->HandleSwitchToBackgroundEvent();
+
+    // Hide
+    MakeVisible( EFalse );
+    //GfxTransEffect::NotifyExternalState( ENotifyGlobalAbort );
+    CAknTransitionUtils::MakeVisibleSubComponents( this,
+        CAknTransitionUtils::EForceInvisible );
+    }
+
+// -----------------------------------------------------------------------------
+// CTsAppView::HandleSwitchToForegroundEvent
+// -----------------------------------------------------------------------------
+//
+void CTsAppView::HandleSwitchToForegroundEvent()
+    {
+    Window().Invalidate(Rect());
+    
+    // Fade behind the pop-up
+    iPopupFader.FadeBehindPopup( this, NULL, ETrue );
+
+    DrawDeferred(); // otherwise some parts may not be drawn properly
+
+    // Focus jumps back to fsw
+    ChangeFocus( iFastSwapArea );
+
+    // Forward event to interested controls
+    iFastSwapArea->HandleSwitchToForegroundEvent();
+
+    // Start animation
+    CTsAppUi* appui =
+        static_cast<CTsAppUi*>( iEikonEnv->AppUi() );
+    if ( appui->EffectsEnabled() )
+        {
+        InvalidateWindows( this );
+        appui->StartTransion(AknTransEffect::EApplicationStart);
+        }
+    else
+        {
+        CAknTransitionUtils::MakeVisibleSubComponents( this,
+            CAknTransitionUtils::EForceVisible );
+        MakeVisible( ETrue );
+        }
+    
+    DrawDeferred();
+    }
+
+// -----------------------------------------------------------------------------
+// CTsAppView::ChangeFocus
+// -----------------------------------------------------------------------------
+//
+void CTsAppView::ChangeFocus( CCoeControl* aNewFocusedControl )
+    {
+    if ( iFocused != aNewFocusedControl )
+        {
+        if ( iFocused )
+            {
+            iFocused->SetFocus( EFalse, EDrawNow );
+            }
+        iFocused = aNewFocusedControl;
+        if ( iFocused )
+            {
+            iFocused->SetFocus( ETrue, EDrawNow );
+            }
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CTsAppView::HandleControlEventL
+// EEventRequestFocus must be handled to have proper focus change also with
+// pointer events.
+// Observed controls are the ganes list and grid.
+// -----------------------------------------------------------------------------
+//
+void CTsAppView::HandleControlEventL( CCoeControl* aControl,
+        TCoeEvent aEventType )
+    {
+    switch ( aEventType )
+        {
+        case EEventRequestFocus:
+            // must use the parent because aControl is the ganes control
+            ChangeFocus( aControl->Parent() );
+            break;
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CTsAppView::HandleDeviceStateChanged
+// Called when screen orientation, touch awareness, or the skin has been changed.
+// -----------------------------------------------------------------------------
+//
+void CTsAppView::HandleDeviceStateChanged( TChangeType /*aChangeType*/ )
+    {
+    TSLOG_CONTEXT( HandleDeviceStateChanged, TSLOG_LOCAL );
+    TSLOG_IN();
+
+    // Just set all the sizes, even when there is a skin change, because this will
+    // guarantee proper redraw also with the ganes controls.
+
+    iViewRect = Rect();
+    TSLOG4( TSLOG_INFO, "setting rect %d %d %d %d",
+        iViewRect.iTl.iX, iViewRect.iTl.iY,
+        iViewRect.iBr.iX, iViewRect.iBr.iY );
+    SetRect( iViewRect );
+
+    TSLOG_OUT();
+    }
+
+// -----------------------------------------------------------------------------
+// CTsAppView::CountFadedComponents
+// -----------------------------------------------------------------------------
+//
+TInt CTsAppView::CountFadedComponents()
+    {
+    return 3;
+    }
+
+// -----------------------------------------------------------------------------
+// CTsAppView::FadedComponent
+// -----------------------------------------------------------------------------
+//
+CCoeControl* CTsAppView::FadedComponent( TInt aIndex )
+    {
+    // well, these are in fact the components that will _not_ be faded...
+    // Must return the bottom-level controls here, e.g. the ganes controls, not the wrappers over them.
+    switch ( aIndex )
+        {
+        case 0:
+            return this;
+        case 1:
+            return iFastSwapArea->GetChildControl();
+        case 2:
+            return iAppsHeading;
+//        case 3:
+//            return iEikonEnv->AppUiFactory()->Cba();
+        default:
+            return NULL;
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CTsAppView::HandlePointerEventL
+// -----------------------------------------------------------------------------
+//
+void CTsAppView::HandlePointerEventL( const TPointerEvent &aPointerEvent )
+    {
+    MTouchFeedback* feedback = MTouchFeedback::Instance();
+    if(0 != feedback &&
+       (TPointerEvent::EButton1Down == aPointerEvent.iType || 
+       TPointerEvent::EButton1Up == aPointerEvent.iType))
+        {
+        feedback->InstantFeedback(this,
+                                  ETouchFeedbackBasic, 
+                                  ETouchFeedbackVibra, 
+                                  aPointerEvent);
+        } 
+    iFastSwapArea->HandlePointerEventL(aPointerEvent);
+    }
+
+// -----------------------------------------------------------------------------
+// CTsAppView::DataChanged
+// -----------------------------------------------------------------------------
+//
+void CTsAppView::DataChanged( CCoeControl* /*aWhere*/, TInt /*aNewCount*/ )
+    {
+    TRAP_IGNORE( UpdateHeadingsL() );
+    }
+
+// -----------------------------------------------------------------------------
+// CTsAppView::UpdateHeadingsL
+// -----------------------------------------------------------------------------
+//
+void CTsAppView::UpdateHeadingsL()
+    {
+#ifndef TASKSWITCHER_USE_CUSTOM_LAYOUT
+    HBufC* text = StringLoader::LoadLC(
+        R_TASK_SWITCHER_HEADING_APPLICATIONS );
+#else
+    _LIT( KTitle, "Task switcher" );
+    HBufC* text = KTitle().AllocLC();
+#endif
+    iAppsHeading->SetTextL( *text );
+    iAppsHeading->DrawDeferred();
+    CleanupStack::PopAndDestroy( text );
+
+    }
+
+
+// -----------------------------------------------------------------------------
+// CTsAppView::HandleAppKey
+// -----------------------------------------------------------------------------
+//
+void CTsAppView::HandleAppKey(TInt aType)
+    {
+    iFastSwapArea->HandleAppKey(aType);
+    }
+
+// -----------------------------------------------------------------------------
+// CTsAppView::MoveOffset
+// -----------------------------------------------------------------------------
+//
+void CTsAppView::MoveOffset(const TPoint& aOffset)
+    {
+    iFastSwapArea->MoveOffset(aOffset);
+    }
+
+// -----------------------------------------------------------------------------
+// CTsAppView::TapL
+// -----------------------------------------------------------------------------
+//
+void CTsAppView::TapL(const TPoint& aPoint)
+    {
+    if(iFastSwapArea->Rect().Contains(aPoint))
+        {
+        iFastSwapArea->TapL(aPoint);
+        DrawNow();
+        }
+    else if( !iAppsHeading->Rect().Contains(aPoint))
+        {
+        //move task switcher to background
+        iEikonEnv->EikAppUi()->HandleCommandL(EAknSoftkeyExit);
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CTsAppView::LongTapL
+// -----------------------------------------------------------------------------
+//
+void CTsAppView::LongTapL(const TPoint& aPoint)
+    {
+    if(iFastSwapArea->Rect().Contains(aPoint))
+        {
+        iFastSwapArea->LongTapL(aPoint);
+        }
+    else if( !iAppsHeading->Rect().Contains(aPoint))
+        {
+        //move task switcher to background
+        iEikonEnv->EikAppUi()->HandleCommandL(EAknSoftkeyExit);
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CTsAppView::Drag()
+// -----------------------------------------------------------------------------
+//
+void CTsAppView::Drag(const MAknTouchGestureFwDragEvent& aEvent)
+    {
+    iFastSwapArea->Drag(aEvent);
+    }
+
+// -----------------------------------------------------------------------------
+// CTsAppView::Stop
+// -----------------------------------------------------------------------------
+//
+void CTsAppView::Stop()
+    {
+    iFastSwapArea->Stop();
+    }
+
+// -----------------------------------------------------------------------------
+// CTsAppView::ViewPos
+// -----------------------------------------------------------------------------
+//
+TPoint CTsAppView::ViewPos() const
+    {
+    return iFastSwapArea->ViewPos();
+    }
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/src/tsdevicestate.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,272 @@
+/*
+* 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:  Device state (touch mode, screen orientation) handler
+ *
+*/
+
+
+#include "tsdevicestate.h"
+#include "tsapplogging.h"
+
+#include <AknUtils.h>
+#include <hwrmdomainpskeys.h>
+
+// -----------------------------------------------------------------------------
+// CTsDeviceState::NewL
+// -----------------------------------------------------------------------------
+//
+CTsDeviceState* CTsDeviceState::NewL()
+    {
+    CTsDeviceState* self = new ( ELeave ) CTsDeviceState;
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CTsDeviceState::CTsDeviceState
+// -----------------------------------------------------------------------------
+//
+CTsDeviceState::CTsDeviceState()
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CTsDeviceState::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CTsDeviceState::ConstructL()
+    {
+    iFlipStatusObserver = new ( ELeave ) CTsPropertyListener(KPSUidHWRM,	
+		KHWRMFlipStatus, *this);
+    // check if touch is enabled or not
+    CheckTouchState();
+    // are we in portrait or landscape
+    CheckOrientation();
+    // checks the qwerty input mode.
+    CheckDeviceType();
+    }
+
+// -----------------------------------------------------------------------------
+// CTsDeviceState::~CTsDeviceState
+// -----------------------------------------------------------------------------
+//
+CTsDeviceState::~CTsDeviceState()
+    {
+    iObservers.Close();
+    delete iFlipStatusObserver;
+    }
+
+// --------------------------------------------------------------------------
+// CTsDeviceState::HandleResourceChange
+// --------------------------------------------------------------------------
+//
+void CTsDeviceState::HandleResourceChange( TInt aType )
+    {
+    TSLOG_CONTEXT( HandleResourceChange, TSLOG_LOCAL );
+    TSLOG2_IN( "aType = %d (active count = %d)", aType, iResChangeActiveCount );
+
+    // increase function entrance count
+    ++iResChangeActiveCount;
+    // if we are still in a previous call then do nothing else
+    if ( iResChangeActiveCount == 1 )
+        {
+        // the active count may increase during execution of the body of the loop
+        // (if some observers have active scheduler waits, for example)
+        while ( iResChangeActiveCount > 0 )
+            {
+            if ( aType == KEikDynamicLayoutVariantSwitch )
+                {
+                TSLOG0( TSLOG_INFO, "dyn layout var switch" );
+                // This might be a screen orientation or touch-nontouch switch,
+                // so let's check the situation and notify observers if needed.
+                CheckTouchState();
+                CheckOrientation();
+                }
+            else if ( aType == KAknsMessageSkinChange )
+                {
+                TSLOG0( TSLOG_INFO, "skin change" );
+                NotifyObservers( MTsDeviceStateObserver::ESkin );
+                }
+            --iResChangeActiveCount;
+            }
+        }
+        
+    TSLOG_OUT();
+    }
+
+// --------------------------------------------------------------------------
+// CTsDeviceState::PropertyChanged
+// --------------------------------------------------------------------------
+//
+void CTsDeviceState::PropertyChanged(TUid aCategory, TUint aKey)
+    {
+    TSLOG_CONTEXT( PropertyChanged, TSLOG_LOCAL );
+    TSLOG2_IN( "aKey = %d aNewValue = %d", aCategory, aKey );
+    CheckDeviceType();
+    TSLOG_OUT();
+    }
+
+// --------------------------------------------------------------------------
+// CTsDeviceState::CheckTouchState
+// --------------------------------------------------------------------------
+//
+void CTsDeviceState::CheckTouchState()
+    {
+    TSLOG_CONTEXT( CheckTouchState, TSLOG_LOCAL );
+    TSLOG_IN();
+
+    TTouchState oldValue = iTouchState;
+    iTouchState = AknLayoutUtils::PenEnabled() ? ETouchEnabled : ETouchDisabled;
+    if ( iTouchState != oldValue )
+        {
+        NotifyObservers( MTsDeviceStateObserver::ETouchState );
+        }
+
+    TSLOG1_OUT( "new value for iTouchState: %d", iTouchState );
+    }
+
+// --------------------------------------------------------------------------
+// CTsDeviceState::CheckOrientation
+// --------------------------------------------------------------------------
+//
+void CTsDeviceState::CheckOrientation()
+    {
+    TSLOG_CONTEXT( CheckOrientation, TSLOG_LOCAL );
+    TSLOG_IN();
+
+    TRect rect;
+    AknLayoutUtils::LayoutMetricsRect ( AknLayoutUtils::EScreen, rect );
+    TOrientation oldValue = iOrientation;
+    iOrientation = rect.Width() > rect.Height() ? ELandscape : EPortrait;
+    if ( iOrientation != oldValue )
+        {
+        NotifyObservers( MTsDeviceStateObserver::EOrientation );
+        }
+
+    TSLOG1_OUT( "new value for iOrientation: %d", iOrientation );
+    }
+
+// --------------------------------------------------------------------------
+// CTsDeviceState::DeviceType
+// --------------------------------------------------------------------------
+//
+void CTsDeviceState::CheckDeviceType()
+    {
+    TSLOG_CONTEXT( CheckQwerty, TSLOG_LOCAL );
+    TSLOG_IN();
+
+    TInt oldDeviceType = iDeviceType;
+    TInt value( 0 );
+    if( RProperty::Get( KPSUidHWRM, KHWRMFlipStatus, value ) == KErrNone )
+    	{
+    	iDeviceType = (value == EPSHWRMFlipOpen ? EHybrid : EFullTouch);
+    	}
+    
+    if( iDeviceType != oldDeviceType )
+        {
+        NotifyObservers( MTsDeviceStateObserver::EDeviceType);
+        }
+
+    TSLOG1_OUT( "new value for iDeviceType: %d", iDeviceType );
+    }
+
+// --------------------------------------------------------------------------
+// CTsDeviceState::TouchState
+// --------------------------------------------------------------------------
+//
+CTsDeviceState::TTouchState CTsDeviceState::TouchState() const
+    {
+    return iTouchState;
+    }
+
+// --------------------------------------------------------------------------
+// CTsDeviceState::Orientation
+// --------------------------------------------------------------------------
+//
+CTsDeviceState::TOrientation CTsDeviceState::Orientation() const
+    {
+    return iOrientation;
+    }
+
+// --------------------------------------------------------------------------
+// CTsDeviceState::Qwerty
+// --------------------------------------------------------------------------
+//
+CTsDeviceState::TDeviceType CTsDeviceState::DeviceType() const
+    {
+    return iDeviceType;
+    }
+
+// --------------------------------------------------------------------------
+// CTsDeviceState::ObserverIdentity
+// --------------------------------------------------------------------------
+//
+TBool CTsDeviceState::ObserverIdentity( const SObserver& aA,
+        const SObserver& aB )
+    {
+    return aA.iObserver == aB.iObserver;
+    }
+
+// --------------------------------------------------------------------------
+// CTsDeviceState::AddDeviceStateObserverL
+// --------------------------------------------------------------------------
+//
+void CTsDeviceState::AddObserverL( MTsDeviceStateObserver& aObserver,
+        TInt aMask )
+    {
+    iObservers.AppendL( SObserver( aMask, &aObserver ) );
+    }
+
+// --------------------------------------------------------------------------
+// CTsDeviceState::RemoveObserver
+// --------------------------------------------------------------------------
+//
+void CTsDeviceState::RemoveObserver( MTsDeviceStateObserver& aObserver )
+    {
+    for ( ; ; )
+        {
+        TInt pos = iObservers.Find( SObserver( MTsDeviceStateObserver::EAny,
+            &aObserver ), ObserverIdentity );
+        if ( pos >= 0 )
+            {
+            iObservers.Remove( pos );
+            }
+        else
+            {
+            break;
+            }
+        }
+    }
+
+// --------------------------------------------------------------------------
+// CTsDeviceState::NotifyObservers
+// --------------------------------------------------------------------------
+//
+void CTsDeviceState::NotifyObservers(
+        MTsDeviceStateObserver::TChangeType aType )
+    {
+    for ( TInt i = 0, ie = iObservers.Count(); i != ie; ++i )
+        {
+        const SObserver& obs( iObservers[i] );
+        if ( obs.iMask & aType )
+            {
+            obs.iObserver->HandleDeviceStateChanged( aType );
+            }
+        }
+    }
+
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/src/tsdocument.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,105 @@
+/*
+* 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:  Document class
+ *
+*/
+
+
+#include <apgwgnam.h>
+
+#include "tsappui.h"
+#include "tsdocument.h"
+
+// -----------------------------------------------------------------------------
+// CTsDocument::NewLC( )
+// Create a CTsDocument object and return a pointer to it
+// -----------------------------------------------------------------------------
+//
+CTsDocument* CTsDocument::NewL( CEikApplication& aApp )
+    {
+    CTsDocument* self = NewLC ( aApp );
+    CleanupStack::Pop ( self );
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CTsDocument::NewLC( )
+// Create a CTsDocument object and return a pointer to it
+// -----------------------------------------------------------------------------
+//
+CTsDocument* CTsDocument::NewLC( CEikApplication& aApp )
+    {
+    CTsDocument* self = new ( ELeave ) CTsDocument( aApp );
+    CleanupStack::PushL ( self );
+    self->ConstructL ( );
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CTsDocument::ConstructL( )
+// Second phase constructor
+// -----------------------------------------------------------------------------
+//
+void CTsDocument::ConstructL( )
+    {
+    // no implementation required
+    }
+
+// -----------------------------------------------------------------------------
+// CTsDocument::~CTsDocument( )
+// First phase constructor
+// -----------------------------------------------------------------------------
+//
+CTsDocument::CTsDocument( CEikApplication& aApp ) :
+    CAknDocument( aApp )
+    {
+    // no implementation required
+    }
+
+// -----------------------------------------------------------------------------
+// CTsDocument::~CTsDocument( )
+// Destructor
+// -----------------------------------------------------------------------------
+//
+CTsDocument::~CTsDocument( )
+    {
+    // no implementation required
+    }
+
+// -----------------------------------------------------------------------------
+// CTsDocument::CreateAppUiL( )
+// Create a CTsAppUi object and return a pointer to it
+// -----------------------------------------------------------------------------
+//
+CEikAppUi* CTsDocument::CreateAppUiL( )
+    {
+    // Create the application user interface, and return a pointer to it,
+    // the framework takes ownership of this object
+    CEikAppUi* appUi = new ( ELeave ) CTsAppUi;
+    return appUi;
+    }
+
+// -----------------------------------------------------------------------------
+// CTsDocument::UpdateTaskNameL( )
+// Makes app hidden in fastswap window
+// -----------------------------------------------------------------------------
+//
+void CTsDocument::UpdateTaskNameL( CApaWindowGroupName* aWgName )
+    {
+    CEikDocument::UpdateTaskNameL ( aWgName );
+    aWgName->SetHidden ( ETrue );
+    }
+
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/src/tseventcontroler.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,194 @@
+/*
+* 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:  Gesture and physics helper declaration
+ *
+*/
+
+#include "tseventcontroler.h"
+#include "tsphysicsengine.h"
+
+// -----------------------------------------------------------------------------
+// NewLC
+// -----------------------------------------------------------------------------
+//
+CTsEventControler* CTsEventControler::NewLC(
+    MTsEventControlerObserver& aObserver,
+    CCoeControl& aEventSrc)
+    {
+    CTsEventControler* self = 
+        new(ELeave)CTsEventControler(aObserver);
+    CleanupStack::PushL(self);
+    self->ConstructL(aEventSrc);
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// NewL
+// -----------------------------------------------------------------------------
+//
+CTsEventControler* CTsEventControler::NewL(
+    MTsEventControlerObserver& aObserver,
+    CCoeControl& aEventSrc)
+    {
+    CTsEventControler* self = 
+        CTsEventControler::NewLC(aObserver, aEventSrc);
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// ~CTsPointerHandler
+// -----------------------------------------------------------------------------
+//
+CTsEventControler::~CTsEventControler()
+    {
+    delete iGestureHelper;
+    delete iPhysicsHelper;
+    }
+
+// -----------------------------------------------------------------------------
+// CTsPointerHandler
+// -----------------------------------------------------------------------------
+//
+CTsEventControler::CTsEventControler(
+    MTsEventControlerObserver& aObserver)
+    :
+    CBase(),
+    iObserver(aObserver)
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// ConstructL
+// -----------------------------------------------------------------------------
+//
+void CTsEventControler::ConstructL(CCoeControl& aEventSrc)
+    {
+    iGestureHelper = 
+        AknTouchGestureFw::CAknTouchGestureFw::NewL(*this, aEventSrc);
+    iGestureHelper->SetGestureInterestL(EAknTouchGestureFwAll);
+    iPhysicsHelper = CTsPhysicsEngine::NewL(*this, aEventSrc);
+    }
+
+// -----------------------------------------------------------------------------
+// HandleTouchGestureL
+// -----------------------------------------------------------------------------
+//
+void CTsEventControler::HandleTouchGestureL(
+    AknTouchGestureFw::MAknTouchGestureFwEvent& aEvent)
+    {
+    if (AknTouchGestureFwEventDrag(aEvent))
+        {
+        HandleDragEventL(*AknTouchGestureFwEventDrag(aEvent));
+        }
+    else if (AknTouchGestureFwEventTap(aEvent))
+        {
+        HandleTapEventL(*AknTouchGestureFwEventTap(aEvent));
+        }
+    //ignore flick and pinch events
+    }
+
+// -----------------------------------------------------------------------------
+// HandleTapEventL
+// -----------------------------------------------------------------------------
+//
+void CTsEventControler::HandleTapEventL(
+    MAknTouchGestureFwTapEvent& aEvent)
+    {
+    if(EAknTouchGestureFwLongTap == aEvent.Type())
+        {
+        iObserver.LongTapL(aEvent.Position());
+        }
+    else if(EAknTouchGestureFwTap == aEvent.Type())
+        {
+        if( iPhysicsHelper->IsRunning())
+            {
+            iPhysicsHelper->Stop();
+            }
+        else
+            {
+            iObserver.TapL(aEvent.Position());
+            }
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// HandleDragEventL
+// -----------------------------------------------------------------------------
+//
+void CTsEventControler::HandleDragEventL(
+    MAknTouchGestureFwDragEvent& aEvent)
+    {
+    iObserver.Drag(aEvent);
+    iPhysicsHelper->HandleDragEvent(aEvent);
+    }
+
+// -----------------------------------------------------------------------------
+// PhysicEmulationEnded
+// -----------------------------------------------------------------------------
+//
+void CTsEventControler::ViewPositionChanged(const TPoint& aNewPosition,
+    TBool /*aDrawNow*/,
+    TUint /*aFlags*/)
+    {
+    iObserver.MoveOffset(aNewPosition);
+    }
+
+// -----------------------------------------------------------------------------
+// PhysicEmulationEnded
+// -----------------------------------------------------------------------------
+//
+void CTsEventControler::PhysicEmulationEnded()
+    {
+    iObserver.Stop();
+    }
+
+// -----------------------------------------------------------------------------
+// ViewPosition
+// -----------------------------------------------------------------------------
+//
+TPoint CTsEventControler::ViewPosition() const
+    {
+    return iObserver.ViewPos();
+    }
+
+// -----------------------------------------------------------------------------
+// Animate
+// -----------------------------------------------------------------------------
+//
+void CTsEventControler::Animate(const TPoint& aPoint)
+    {
+    iPhysicsHelper->AnimateToTarget(aPoint);
+    }
+
+// -----------------------------------------------------------------------------
+// ReInitPhysicL
+// -----------------------------------------------------------------------------
+//
+void CTsEventControler::ReInitPhysicsL(const TSize& aWorldSize,
+        const TSize& aViewSize, TBool aLandscape)
+    {
+    iPhysicsHelper->ReInitPhysicsL( aWorldSize, aViewSize, aLandscape);
+    }
+
+// -----------------------------------------------------------------------------
+// StopAnimation
+// -----------------------------------------------------------------------------
+//
+void CTsEventControler::StopAnimation()
+    {
+    iPhysicsHelper->Stop();
+    }
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/src/tsfastswaparea.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,1605 @@
+/*
+* 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:  Taskswitcher Fast Swap area UI
+ *
+*/
+
+
+#include <gulicon.h>
+#include <eikenv.h>
+#include <AknUtils.h>
+#include <AknIconUtils.h>
+#include <AknIconArray.h>
+#include <aknstyluspopupmenu.h>
+#include <AknQueryDialog.h>
+#include <StringLoader.h>
+#include <tstaskswitcher.rsg>
+#include <aknlayoutscalable_apps.cdl.h>
+#include <layoutmetadata.cdl.h>
+#include <aknlists.h>
+#include <touchfeedback.h>
+#include <akntransitionutils.h>
+#include <akntranseffect.h>
+
+#include "tsfastswaparea.h"
+#include "tsapplogging.h"
+#include "tsfswclient.h"
+#include "tsappui.h"
+#include "tsdatachangeobserver.h"
+#include "tseventcontroler.h"
+
+/** command ids for the fsw popup */
+enum TPopupCommands
+    {
+    EFswCmdClose = 10000,
+    EFswCmdCloseAll
+    };
+
+/** Number of closable applications, to show "close all" option. */
+const TInt KTsMaxClosableApps = 2;
+
+/** Interval until which no change in the fsw content is rendered
+    after starting the closing of an application. */
+const TInt KRefreshDelayAfterClose = 2; // seconds
+
+/** Uid of Active Idle application. 
+    Used when movind Ai to specified position.*/
+const TUid KAiUid = TUid::Uid( 0x102750F0 );
+    
+/** Position of Ai in fsw grid.*/
+const TInt KAiPosition = 0;
+
+/** Default grid item to highlight.*/
+const TInt KItemToHighlight = 3;
+
+const TInt KAppKeyTypeShort = 1;
+const TInt KAppKeyTypeLong = 2;
+
+const TInt KLayoutItemCount = 4;
+
+const TInt KRedrawTime = 250000; // 0.25 sec
+const TInt KHighlighActivationTime = 100000; // 100 ms
+const TInt KUpdateGridTime = 1000000; // 1 s
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapArea::NewL
+// -----------------------------------------------------------------------------
+//
+CTsFastSwapArea* CTsFastSwapArea::NewL( const TRect& aRect,
+    CCoeControl& aParent, CTsDeviceState& aDeviceState, 
+    CTsEventControler& aEventHandler )
+    {
+    CTsFastSwapArea* self = CTsFastSwapArea::NewLC(aRect,
+            aParent, aDeviceState, aEventHandler);
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapArea::NewLC
+// -----------------------------------------------------------------------------
+//
+CTsFastSwapArea* CTsFastSwapArea::NewLC( const TRect& aRect,
+    CCoeControl& aParent, CTsDeviceState& aDeviceState,
+    CTsEventControler& aEventHandler)
+    {
+    CTsFastSwapArea* self = new (ELeave) CTsFastSwapArea(
+            aParent, aDeviceState, aEventHandler);
+    CleanupStack::PushL( self );
+    self->ConstructL( aRect );
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapArea::CTsFastSwapArea
+// -----------------------------------------------------------------------------
+//
+CTsFastSwapArea::CTsFastSwapArea(CCoeControl& aParent,
+    CTsDeviceState& aDeviceState,
+    CTsEventControler& aEventHandler) :
+    iParent(aParent), iDeviceState(aDeviceState), iEvtHandler(aEventHandler),
+    iPreviousNoOfItems(0)
+    {
+    // no implementation required
+    }
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapArea::~CTsFastSwapArea
+// -----------------------------------------------------------------------------
+//
+CTsFastSwapArea::~CTsFastSwapArea()
+    {
+    iArray.ResetAndDestroy();
+    delete iGrid;
+    delete iFSClient;
+    delete iPopup;
+    delete iConfirmCloseQuery;
+    delete iHighlightTimer;
+    delete iRedrawTimer;
+    delete iUpdateGridTimer;
+    }
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapArea::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CTsFastSwapArea::ConstructL( const TRect& aRect )
+    {
+    SetContainerWindowL( iParent );
+
+    SetRect( aRect );
+
+    // setup ganes grid
+    ReCreateGridL();
+
+    // create stylus popup instance
+    PreCreatePopupL();
+
+    // connect to fsw server
+    iFSClient = CTsFswClient::NewL();
+    
+    iEvtHandler.ReInitPhysicsL(GridWorldSize(), ViewSize(), ETrue);
+    
+    // add self to device state observer
+    iDeviceState.AddObserverL( *this, EDeviceType );
+    
+    iHighlightTimer = new (ELeave) CTsFastSwapTimer( *this );
+    iHighlightTimer->ConstructL();
+    
+    iRedrawTimer = new (ELeave) CTsFastSwapTimer( *this );
+    iRedrawTimer->ConstructL();
+
+    iUpdateGridTimer = new (ELeave) CTsFastSwapTimer( *this );
+    iUpdateGridTimer->ConstructL();
+    
+    ActivateL();
+    }
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapArea::ReCreateGridL
+// -----------------------------------------------------------------------------
+//
+void CTsFastSwapArea::ReCreateGridL()
+    {
+    MCoeControlObserver* obs = NULL;
+    TBool wasHighlight = iDeviceState.DeviceType() == 
+                             CTsDeviceState::EHybrid ? ETrue : EFalse;
+    if ( iGrid )
+        {
+        obs = iGrid->Observer();
+        iDeviceState.RemoveObserver(*iGrid);
+        wasHighlight = iGrid->IsHighlightVisible();
+        delete iGrid;
+        iGrid = NULL;
+        }
+    
+    iGrid = new( ELeave ) CTsFastSwapGrid;
+    iGrid->ConstructL( this );
+    iDeviceState.AddObserverL(*iGrid, MTsDeviceStateObserver::ESkin);
+    
+    AknListBoxLayouts::SetupStandardGrid( *iGrid );
+    
+    RArray<TAknLayoutRect> rects;
+    CleanupClosePushL(rects);
+    rects.ReserveL(KLayoutItemCount);
+    GetFastSwapAreaRects(rects);
+    TAknLayoutRect gridAppPane = rects[0];
+    TAknLayoutRect gridItem = rects[1];
+    TAknLayoutRect gridImage = rects[2];
+    TAknLayoutRect gridNextItem = rects[3];
+    CleanupStack::PopAndDestroy(&rects);
+    
+    TInt variety = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0;
+    iGrid->SetRect(gridAppPane.Rect());
+    iGrid->SetVisibleViewRect(gridAppPane.Rect());
+    TAknLayoutScalableParameterLimits gridParams = 
+        AknLayoutScalable_Apps::cell_tport_appsw_pane_ParamLimits( variety );
+    TPoint empty( ELayoutEmpty, ELayoutEmpty );
+    
+    AknListBoxLayouts::SetupFormGfxCell( *iGrid, iGrid->ItemDrawer(), 0,
+            AknLayoutScalable_Apps::cell_tport_appsw_pane_g1( variety ).LayoutLine(),
+            empty, empty );
+
+    // Setup text layout
+    TRgb textColor;
+    AknsUtils::GetCachedColor( AknsUtils::SkinInstance(), textColor,
+            KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG9 );
+    
+    TAknLayoutText textLayout;
+    textLayout.LayoutText(
+            Rect(),
+            AknLayoutScalable_Apps::cell_tport_appsw_pane_t1( variety ).LayoutLine() );
+    
+    // Because textLayout.BaselineOffset() does not work (missing lib entry),
+    // we need to calculate offset ourselves
+    TInt baselineOffset = textLayout.TextRect().iBr.iY - textLayout.TextRect().iTl.iY;
+    AknListBoxLayouts::SetupFormTextCell( *iGrid, iGrid->ItemDrawer(), 1 /*Column index*/,
+                                          textLayout.Font() /*Font type*/,
+                                          textColor.Color16() /*color*/,
+                                          textLayout.TextRect().iTl.iX /*Left margin*/, 0 /*unused*/,
+                                          baselineOffset /*Baseline*/, 0 /*Text width*/,
+                                          textLayout.Align() /*Text alignment*/,
+                                          TPoint(0,0) /*Start pos*/,
+                                          TPoint(0,0) /*End pos*/);
+    
+    // Setup grid observers
+    if ( obs )
+        {
+        iGrid->SetObserver( obs );
+        }
+    iGrid->SetListBoxObserver(this);
+    iGrid->SetFastSwapGridObserver(this);
+    iGrid->SetContainerWindowL(*this);
+    
+    if ( AknLayoutUtils::LayoutMirrored() )
+        {
+        iGridItemGap = gridItem.Rect().iTl.iX - gridNextItem.Rect().iBr.iX;
+        }
+    else
+        {
+        iGridItemGap = gridNextItem.Rect().iTl.iX - gridItem.Rect().iBr.iX;
+        }
+    iMaxItemsOnScreen = Rect().Width() / gridItem.Rect().Width();
+    if ( iMaxItemsOnScreen > 1 )
+        {
+        TInt widthWithGaps =
+            (iMaxItemsOnScreen - 1) * iGridItemGap + iMaxItemsOnScreen * gridItem.Rect().Width();
+        if ( widthWithGaps > Rect().Width() )
+            {
+            iMaxItemsOnScreen--;
+            }
+        }
+    iGridItemWidth = gridItem.Rect().Width();
+    
+    iGrid->ItemDrawer()->ColumnData()->SetDrawBackground(EFalse);
+    
+    // Update state
+    HandleDeviceStateChanged( EDeviceType );
+    if( wasHighlight )
+        {
+        iGrid->ShowHighlight();
+        }
+    else
+        {
+        iGrid->HideHighlight();
+        }
+    
+    // Make sure that there is an ActivateL call even when we are not
+    // called from ConstructL. (in order to have the grid's parent ptr set properly)
+    ActivateL();
+    }
+
+
+// --------------------------------------------------------------------------
+// CTsFastSwapArea::GetFastSwapAreaRects
+// --------------------------------------------------------------------------
+//
+void CTsFastSwapArea::GetFastSwapAreaRects( RArray<TAknLayoutRect>& aRects )
+    {
+    TAknLayoutRect gridAppPane;
+    TAknLayoutRect gridItem;
+    TAknLayoutRect gridImage;
+    TAknLayoutRect gridNextItem;
+    
+    TInt variety = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0;
+    
+    gridAppPane.LayoutRect( Rect(), 
+            AknLayoutScalable_Apps::tport_appsw_pane( variety ) );
+    aRects.Append(gridAppPane);
+    
+    gridItem.LayoutRect( gridAppPane.Rect(),
+            AknLayoutScalable_Apps::cell_tport_appsw_pane( variety, 0, 0 ) );
+    aRects.Append(gridItem);
+    
+    gridImage.LayoutRect( gridItem.Rect(),
+            AknLayoutScalable_Apps::cell_tport_appsw_pane_g1( variety ) ); 
+    aRects.Append(gridImage);
+    gridNextItem.LayoutRect( gridAppPane.Rect(),
+            AknLayoutScalable_Apps::cell_tport_appsw_pane_cp03( variety ) );
+    aRects.Append(gridNextItem);
+    }
+
+
+// --------------------------------------------------------------------------
+// CTsFastSwapArea::Setup
+// --------------------------------------------------------------------------
+//
+void CTsFastSwapArea::Setup( MCoeControlObserver& aControlObserver )
+    {
+    iGrid->SetObserver( &aControlObserver );
+    }
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapArea::SizeChanged
+// -----------------------------------------------------------------------------
+//
+void CTsFastSwapArea::SizeChanged()
+    {
+    TSLOG_CONTEXT( CTsFastSwapArea::SizeChanged, TSLOG_LOCAL );
+    TSLOG_IN();
+    
+    if ( iGrid )
+        {
+        // Grid needs to be recreated to proper reinitilize
+        // data with new layout values
+        TInt selIdx = SelectedIndex();
+        TRAPD(err, 
+              ReCreateGridL();
+              iEvtHandler.ReInitPhysicsL(GridWorldSize(), ViewSize(), ETrue););
+        if ( err != KErrNone )
+            {
+            TSLOG1( TSLOG_INFO, "ReCreateGridL leaves with %d", err );
+            }
+        HandleFswContentChanged();
+        iGrid->SetCurrentDataIndex(selIdx);
+        UpdateGrid(ETrue, EFalse);
+        DrawDeferred();
+        }
+    TSLOG_OUT();
+    }
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapArea::Draw
+// -----------------------------------------------------------------------------
+//
+void CTsFastSwapArea::Draw( const TRect& /*aRect*/ ) const
+    {
+    CWindowGc& gc = SystemGc();
+    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+    MAknsControlContext* cc = AknsDrawUtils::ControlContext( this );
+    AknsDrawUtils::Background( skin,
+           cc,
+           this,
+           gc,
+           Rect() );
+    }
+
+// --------------------------------------------------------------------------
+// CTsFastSwapArea::SwitchToApp
+// --------------------------------------------------------------------------
+//
+void CTsFastSwapArea::SwitchToApp( TInt aIndex )
+    {
+    if ( aIndex >= 0 && aIndex < iArray.Count() )
+        {
+        TInt wgId = iArray[aIndex]->WgId();
+        // Move other app to foreground and then move ourselves to background.
+        // Order is important and cannot be reversed.
+        iFSClient->SwitchToApp( wgId );
+        // We do not want to come back to ts if the activated app is closed.
+        // Therefore ts must be moved to background.
+        CTsAppUi* appui =
+            static_cast<CTsAppUi*>( iEikonEnv->AppUi() );
+        appui->MoveAppToBackground( AknTransEffect::EApplicationStartRect );
+        }
+    }
+
+// --------------------------------------------------------------------------
+// CTsFastSwapArea::TryCloseAppL
+// --------------------------------------------------------------------------
+//
+void CTsFastSwapArea::TryCloseAppL( TInt aIndex,
+        TBool aSuppressRendering )
+    {
+    TSLOG_CONTEXT( TryCloseAppL, TSLOG_LOCAL );
+    TSLOG2_IN( "%d %d", aIndex, aSuppressRendering );
+
+    if ( aIndex >= 0 && aIndex < iArray.Count() && CanClose( aIndex ) )
+        {
+        TInt wgId = iArray[aIndex]->WgId();
+        iFSClient->CloseApp( wgId );
+        // The fsw content will change sooner or later
+        // but the updated content (without the closed app) will not
+        // come very fast. It looks better to the user if the item
+        // in the grid is removed right here, right now.
+        // If the app does not close for some reason then this is
+        // not fully correct but the app will then reappear on the next
+        // content-changed notification anyway.
+        delete iArray[aIndex];
+        iArray.Remove( aIndex );
+        NotifyChange();
+        if ( !aSuppressRendering )
+            {
+            RenderContentL();
+            }
+        // Update item selection on the screen if last item was deleted
+        TInt newItemCount = GridItemCount();
+        if ( aIndex == newItemCount )
+            {
+            newItemCount--;
+            iGrid->SetCurrentDataIndex(newItemCount);
+            }
+        iTimeOfLastClose.HomeTime();
+        }
+
+    TSLOG_OUT();
+    }
+
+// --------------------------------------------------------------------------
+// CTsFastSwapArea::TryCloseAppWithQueryL
+// --------------------------------------------------------------------------
+//
+void CTsFastSwapArea::TryCloseAppWithQueryL( TInt aIndex )
+    {
+    if ( aIndex >= 0 && aIndex < iArray.Count()
+            && CanClose( aIndex )
+            && ConfirmCloseL( aIndex ) )
+        {
+        TryCloseAppL( aIndex );
+        }
+    }
+
+// --------------------------------------------------------------------------
+// CTsFastSwapArea::TryCloseAllL
+// --------------------------------------------------------------------------
+//
+void CTsFastSwapArea::TryCloseAllL()
+    {
+    // note the direction of the loop, this is needed because
+    // TryCloseAppL may modify the array
+    TBool changed = EFalse;
+    for ( TInt i = iArray.Count() - 1; i >= 0; --i )
+        {
+        if ( CanClose( i ) )
+            {
+            TryCloseAppL( i, ETrue );
+            changed = ETrue;
+            }
+        }
+    if ( changed )
+        {
+        RenderContentL();
+        RestoreSelectedIndex();
+        iGrid->DrawNow();
+        }
+    }
+
+// --------------------------------------------------------------------------
+// CTsFastSwapArea::CanClose
+// --------------------------------------------------------------------------
+//
+TBool CTsFastSwapArea::CanClose( TInt aIndex ) const
+    {
+    CTsFswEntry* e = iArray[aIndex];
+    return !e->AlwaysShown() && !e->SystemApp();
+    }
+
+// --------------------------------------------------------------------------
+// CTsFastSwapArea::CanCloseOthers
+// --------------------------------------------------------------------------
+//
+TBool CTsFastSwapArea::CanCloseAll( TInt aSelectedItem ) const
+    {
+    TInt count( 0 );
+
+    // Count number of closable applications and if number exceeds 2 finish
+    // counting, because it is already enough to show the option.
+    for ( TInt i = iArray.Count(); --i >= 0 && count < KTsMaxClosableApps; )
+        {
+        if ( CanClose( i ) )
+            {
+            count++;
+            }
+        }
+    return ( count >= KTsMaxClosableApps ) ||
+           ( count && !CanClose( aSelectedItem ) );
+    }
+
+// --------------------------------------------------------------------------
+// CTsFastSwapArea::HandleFswContentChanged
+// From MTsFswObserver
+// --------------------------------------------------------------------------
+//
+void CTsFastSwapArea::HandleFswContentChanged()
+    {
+    TSLOG_CONTEXT( HandleFswContentChanged, TSLOG_LOCAL );
+    TSLOG_IN();
+
+    TRAPD( err, HandleFswContentChangedL() );
+    if ( err != KErrNone )
+        {
+        TSLOG1( TSLOG_INFO, "leave occured: %d", err );
+        }
+
+    TSLOG_OUT();
+    }
+
+// --------------------------------------------------------------------------
+// CTsFastSwapArea::HandleFswContentChangedL
+// --------------------------------------------------------------------------
+//
+void CTsFastSwapArea::HandleFswContentChangedL()
+    {
+    TSLOG_CONTEXT( HandleFswContentChangedL, TSLOG_LOCAL );
+    TSLOG_IN();
+
+    // If there was an app close operation started during the last
+    // few seconds then stop, to prevent flickering.
+    TTime now;
+    now.HomeTime();
+    TTimeIntervalSeconds iv;
+    if ( now.SecondsFrom( iTimeOfLastClose, iv ) == KErrNone
+            && iv.Int() <= KRefreshDelayAfterClose )
+        {
+        TSLOG1_OUT( "difference since last close is only %d sec, stop", iv.Int() );
+        return;
+        }
+
+    // get current content from fastswap server
+    iFSClient->GetContentL( iArray );
+    SwapApplicationOrder( iArray );
+
+#ifdef _DEBUG
+    for ( TInt i = 0, ie = iArray.Count(); i != ie; ++i )
+        {
+        CTsFswEntry* e = iArray[i];
+        const TDesC& name( e->AppName() );
+        TSLOG4( TSLOG_INFO, "[%d]: %d %d %S", i, e->WgId(), e->AppUid(), &name );
+        }
+#endif
+
+    // draw
+    RenderContentL();
+
+    // notify observer, if present
+    NotifyChange();
+
+    TSLOG_OUT();
+    }
+
+// --------------------------------------------------------------------------
+// CTsFastSwapArea::RenderContentL
+// --------------------------------------------------------------------------
+//
+void CTsFastSwapArea::RenderContentL()
+    {
+    TSLOG_CONTEXT( RenderContentL, TSLOG_LOCAL );
+    TSLOG_IN();
+
+    _LIT(KSeparator, "\t");
+    
+    CArrayPtr<CGulIcon>* iconArray = new ( ELeave ) CAknIconArray( iArray.Count() );
+    CleanupStack::PushL( iconArray );
+    CDesCArrayFlat* textArray = new ( ELeave ) CDesCArrayFlat( iArray.Count() );
+    CleanupStack::PushL( textArray );
+    RArray<TInt> closeItemArray;
+    CleanupClosePushL(closeItemArray);
+    
+    TInt variety = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0;
+    RArray<TAknLayoutRect> rects;
+    CleanupClosePushL(rects);
+    rects.ReserveL(KLayoutItemCount);
+    GetFastSwapAreaRects(rects);
+    TAknLayoutRect gridItem = rects[1];
+    CleanupStack::PopAndDestroy(&rects);
+    if ( AknLayoutUtils::LayoutMirrored() )
+        {
+        iGrid->SetLayoutL( EFalse, EFalse, ETrue, iArray.Count(), 1, gridItem.Rect().Size(), iGridItemGap );
+        }
+    else
+        {
+        iGrid->SetLayoutL( EFalse, ETrue, ETrue, iArray.Count(), 1, gridItem.Rect().Size(), iGridItemGap );
+        }
+    
+    for ( TInt i = 0, ie = iArray.Count(); i != ie; ++i )
+        {
+        const TDesC& appName( iArray[i]->AppName() );
+        const TInt formatLen = 3 + 2;
+        RBuf formAppName;
+        CleanupClosePushL(formAppName);
+        formAppName.CreateL(appName.Length() + formatLen);
+        formAppName.AppendNum(i);
+        formAppName.Append(KSeparator);
+        formAppName.Append(appName);
+        textArray->AppendL(formAppName);
+        CleanupStack::PopAndDestroy(&formAppName);
+        TSize sz = PreferredImageSize();
+
+        // take the screenshot or appicon+mask and make a copy and scale
+        CFbsBitmap* bitmap = 0;
+        TInt h = iArray[i]->ScreenshotHandle();
+        TSLOG2( TSLOG_INFO, "'%S' screenshot handle %d", &appName, h );
+        TInt maskh = 0;
+        CFbsBitmap* mask = 0;
+        if ( !h )
+            {
+            h = iArray[i]->AppIconBitmapHandle();
+            maskh = iArray[i]->AppIconMaskHandle();
+            TSLOG1( TSLOG_INFO, "using appicon, handle = %d", h );
+            }
+        __ASSERT_DEBUG( h, User::Invariant() );
+        bitmap = CopyBitmapL( h, sz );
+        CleanupStack::PushL( bitmap );
+        if ( maskh )
+            {
+            mask = CopyBitmapL( maskh, sz );
+            }
+        CleanupStack::PushL( mask );
+
+        CGulIcon* icon = CGulIcon::NewL( bitmap, mask );
+        CleanupStack::PushL(icon);
+        iconArray->AppendL(icon);
+        CleanupStack::Pop( 3, bitmap ); // mask, bitmap, icon
+        
+        // Check if item can be closed
+        if ( CanClose(i) && AknLayoutUtils::PenEnabled() )
+            {
+            closeItemArray.AppendL(i);
+            }
+        }
+    // Setup grid
+    iGrid->Model()->SetItemTextArray(textArray);
+    CArrayPtr<CGulIcon>* oldIconArray =
+        iGrid->ItemDrawer()->FormattedCellData()->IconArray();
+    if(oldIconArray)
+        {
+        delete oldIconArray;
+        oldIconArray = NULL;
+        }
+    iGrid->ItemDrawer()->FormattedCellData()->SetIconArrayL(iconArray);
+    iGrid->SetCloseItemsL(closeItemArray);
+    
+    // Cleanup
+    CleanupStack::PopAndDestroy(&closeItemArray);
+    CleanupStack::Pop(textArray);
+    CleanupStack::Pop(iconArray);
+    
+    iGrid->ScrollBarFrame()->SetScrollBarVisibilityL(
+                CEikScrollBarFrame::EOff, CEikScrollBarFrame::EOff);
+    
+    // refresh the items in the grid
+    if(iPreviousNoOfItems < iArray.Count())
+        {
+        iGrid->HandleItemAdditionL();
+        }
+    else if(iPreviousNoOfItems > iArray.Count())
+        {
+        iGrid->HandleItemRemovalL();
+        }
+    iPreviousNoOfItems = iArray.Count();
+    iEvtHandler.ReInitPhysicsL( GridWorldSize(), ViewSize(), ETrue );
+    UpdateGrid( ETrue );
+    
+    TSLOG_OUT();
+    }
+
+// --------------------------------------------------------------------------
+// CTsFastSwapArea::CopyBitmapL
+// Copy and scale.
+// --------------------------------------------------------------------------
+//
+CFbsBitmap* CTsFastSwapArea::CopyBitmapL( TInt aFbsHandle, TSize aSize )
+    {
+    CFbsBitmap* ret = new (ELeave) CFbsBitmap();
+    CleanupStack::PushL( ret );
+
+    CFbsBitmap* bmp = new (ELeave) CFbsBitmap();
+    CleanupStack::PushL( bmp );
+    User::LeaveIfError( bmp->Duplicate( aFbsHandle ) );
+
+    // do not always use aSize, preserving the aspect ratio is quite
+    // important when showing app icons instead of screenshots
+    TSize sz = CalculateSizePreserveRatio( aSize, bmp->SizeInPixels() );
+
+    User::LeaveIfError( ret->Create( sz, bmp->DisplayMode() ) );
+
+    AknIconUtils::ScaleBitmapL( sz, ret, bmp );
+
+    CleanupStack::PopAndDestroy( bmp );
+    CleanupStack::Pop( ret );
+
+    return ret;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFastSwapArea::CountComponentControls
+// --------------------------------------------------------------------------
+//
+TInt CTsFastSwapArea::CountComponentControls() const
+    {
+    return 1;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFastSwapArea::ComponentControl
+// --------------------------------------------------------------------------
+//
+CCoeControl* CTsFastSwapArea::ComponentControl( TInt aIndex ) const
+    {
+    if ( aIndex == 0 )
+        {
+        return iGrid;
+        }
+    return NULL;
+    }
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapArea::HandleSwitchToBackgroundEvent
+// -----------------------------------------------------------------------------
+//
+void CTsFastSwapArea::HandleSwitchToBackgroundEvent()
+    {
+    // stop listening for changes in fsw content
+    iFSClient->CancelSubscribe();
+    // get rid of the close confirmation query if shown
+    delete iConfirmCloseQuery; // this will cause ExecuteLD to return with 0
+    iConfirmCloseQuery = 0;
+    }
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapArea::HandleSwitchToForegroundEvent
+// -----------------------------------------------------------------------------
+//
+void CTsFastSwapArea::HandleSwitchToForegroundEvent()
+    {
+    TSLOG_CONTEXT( CTsFastSwapArea::HandleSwitchToForegroundEvent, TSLOG_LOCAL );
+    TSLOG_IN();
+    
+    // get the current task list
+    HandleFswContentChanged();
+    // and then start listening for changes
+    iFSClient->Subscribe( *this );
+    
+    if ( iDeviceState.DeviceType() == CTsDeviceState::EFullTouch )
+        {
+        iGrid->HideHighlight();
+        }
+    else
+        {
+        iGrid->ShowHighlight();
+        }
+    
+    RestoreSelectedIndex();
+    UpdateGrid(ETrue, EFalse);
+    
+    iRedrawTimer->Cancel();
+    iRedrawTimer->After(KRedrawTime);
+    
+    // give feedback
+    LaunchPopupFeedback();
+
+    TSLOG_OUT();
+    }
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapArea::FocusChanged
+// -----------------------------------------------------------------------------
+//
+void CTsFastSwapArea::FocusChanged( TDrawNow /*aDrawNow*/ )
+    {
+    if ( IsFocused() )
+        {
+        // if in non-touch mode then select (highlight) some item
+        if ( !AknLayoutUtils::PenEnabled()
+            && SelectedIndex() == KErrNotFound
+            && GridItemCount() )
+            {
+            RestoreSelectedIndex();
+            }
+        }
+    else
+        {
+        // store the currently selected index if there is one
+        SaveSelectedIndex();
+        }
+    iGrid->DrawDeferred();
+    }
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapArea::OfferKeyEventL
+// -----------------------------------------------------------------------------
+//
+TKeyResponse CTsFastSwapArea::OfferKeyEventL(
+        const TKeyEvent& aKeyEvent,
+        TEventCode aType )
+    {
+    iKeyEvent = ETrue;
+    iGrid->SetTactileFeedbackSupport(EFalse);
+    // handle the 'clear' key
+    if ( aType == EEventKey && aKeyEvent.iCode == EKeyBackspace )
+        {
+        TInt idx = SelectedIndex();
+        if ( idx >= 0 )
+            {
+            TryCloseAppWithQueryL( idx );
+            }
+        return EKeyWasConsumed;
+        }
+    
+    //do not forward the event until item is higlighted
+    if( aKeyEvent.iScanCode == EStdKeyLeftArrow ||
+        aKeyEvent.iScanCode == EStdKeyRightArrow )
+        {
+        if ( !iGrid->IsHighlightVisible() )
+            {
+            if ( aType == EEventKey )
+                {
+                ShowHighlight();
+                iConsumeEvent = ETrue;
+                }
+            return EKeyWasConsumed;
+            }
+        else if(iConsumeEvent)
+            {
+            if (aType == EEventKeyUp)
+                {
+                return EKeyWasConsumed;
+                }
+            iConsumeEvent = EFalse;
+            }
+        }
+    
+    // pass the event to grid
+    // do not pass down and up arrow key events
+    if ( aKeyEvent.iScanCode != EStdKeyUpArrow &&
+         aKeyEvent.iScanCode != EStdKeyDownArrow )
+        {
+        TBool animate(ETrue);
+        TBool redraw(EFalse);
+        TInt prevItem = SelectedIndex();
+        TKeyResponse response = iGrid->OfferKeyEventL( aKeyEvent, aType );
+        if ( prevItem != SelectedIndex() && // item changed
+             ( ( prevItem == 0 &&
+                 SelectedIndex() == GridItemCount() - 1 &&
+                 GridItemCount() > iMaxItemsOnScreen + 1 ) || // loop from first to last item
+               ( prevItem == GridItemCount() - 1 &&
+                 SelectedIndex() == 0 &&
+                 GridItemCount() > iMaxItemsOnScreen + 1) // loop from last to first item
+              ) // loop
+            )
+            {
+            // Loop occured
+            animate = EFalse;
+            }
+        if ( prevItem != SelectedIndex() )
+            {
+            redraw = ETrue;
+            iGrid->ShowHighlight();
+            }
+        UpdateGrid( redraw, animate );
+        return response;
+        }
+    
+    return EKeyWasNotConsumed;
+    }
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapArea::HandlePointerEventL
+// -----------------------------------------------------------------------------
+//
+void CTsFastSwapArea::HandlePointerEventL( const TPointerEvent& aPointerEvent )
+    {
+    iKeyEvent = EFalse;
+    iGrid->SetTactileFeedbackSupport(ETrue);
+    if(aPointerEvent.iType == TPointerEvent::EButton1Down)
+        {
+        iTapEvent = aPointerEvent;
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapArea::ConfirmCloseL
+// -----------------------------------------------------------------------------
+//
+TBool CTsFastSwapArea::ConfirmCloseL( TInt aIndex )
+    {
+    HBufC* msg = StringLoader::LoadLC( R_TS_FSW_CONFIRM_CLOSE,
+        iArray[aIndex]->AppName() );
+    iConfirmCloseQuery = CAknQueryDialog::NewL(
+        CAknQueryDialog::EConfirmationTone );
+    iConfirmCloseQuery->SetPromptL( *msg );
+    CleanupStack::PopAndDestroy( msg );
+    TBool ok = iConfirmCloseQuery->ExecuteLD(
+        R_TS_FSW_CONFIRM_CLOSE_QUERY );
+    iConfirmCloseQuery = 0;
+    return ok;
+    }
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapArea::SelectedIndex
+// -----------------------------------------------------------------------------
+//
+TInt CTsFastSwapArea::SelectedIndex() const
+    {
+    return iGrid->CurrentDataIndex();
+    }
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapArea::SaveSelectedIndex
+// -----------------------------------------------------------------------------
+//
+void CTsFastSwapArea::SaveSelectedIndex()
+    {
+    iSavedSelectedIndex = SelectedIndex();
+    }
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapArea::RestoreSelectedIndex
+// -----------------------------------------------------------------------------
+//
+void CTsFastSwapArea::RestoreSelectedIndex()
+    {
+    iSavedSelectedIndex = KErrNotFound;
+    if ( GridItemCount() )
+        {
+        // highlight second recent item (that has index 2) if possible
+        TInt highlightItem = 0;
+        TInt count = GridItemCount();
+        while( highlightItem < count 
+            && highlightItem < KItemToHighlight )
+            {
+            ++highlightItem;
+            }
+        iSavedSelectedIndex = highlightItem - 1;//count from 0
+        iGrid->SetCurrentDataIndex( iSavedSelectedIndex );
+        TBool forceRedraw(ETrue);
+        UpdateGrid(forceRedraw);
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapArea::ProcessCommandL
+// Handle fsw popup commands
+// -----------------------------------------------------------------------------
+//
+void CTsFastSwapArea::ProcessCommandL( TInt aCommandId )
+    {
+    switch ( aCommandId )
+        {
+        case EFswCmdClose:
+            TryCloseAppL( iAppIndexForPopup );
+            break;
+
+        case EFswCmdCloseAll:
+            TryCloseAllL();
+            break;
+
+        case KErrCancel:
+            // popup dismisses automatically when tapping outside or when switching to other app
+            break;
+        }
+    }
+
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapArea::HandleCloseEventL
+// -----------------------------------------------------------------------------
+//
+void CTsFastSwapArea::HandleCloseEventL(TInt aItemIdx)
+    {
+    TryCloseAppWithQueryL( aItemIdx );
+    }
+
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapArea::HandleDeviceStateChanged
+// -----------------------------------------------------------------------------
+//
+void CTsFastSwapArea::HandleDeviceStateChanged( TChangeType aChangeType )
+    {
+    if ( aChangeType == EDeviceType )
+        {
+        CTsDeviceState::TDeviceType state = iDeviceState.DeviceType();
+        switch ( state )
+            {
+            case CTsDeviceState::EHybrid:
+                {
+                iGrid->SetGridBehaviour( CTsFastSwapGrid::EHybrid );
+                }
+                break;
+            case CTsDeviceState::EFullTouch:
+                {
+                iGrid->SetGridBehaviour( CTsFastSwapGrid::ETouchOnly );
+                }
+                break;
+            default:
+                break;
+            }
+        }
+    }
+
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapArea::TimerCompletedL
+// -----------------------------------------------------------------------------
+//
+void CTsFastSwapArea::TimerCompletedL( CTsFastSwapTimer* aSource )
+    {
+    if(aSource == iHighlightTimer)
+        {
+        iTapEvent.iType = TPointerEvent::EButton1Up;
+        iGrid->HandlePointerEventL(iTapEvent);
+        }
+    else if(aSource == iRedrawTimer)
+        {
+        DrawNow();
+        }
+    else if( aSource == iUpdateGridTimer )
+        {
+        UpdateGrid(ETrue, ETrue);
+        }
+    }
+
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapArea::PreCreatePopupL
+// -----------------------------------------------------------------------------
+//
+void CTsFastSwapArea::PreCreatePopupL()
+    {
+    if ( !iPopup )
+        {
+        iPopup = CAknStylusPopUpMenu::NewL( this, Rect().iTl );
+        HBufC* text = StringLoader::LoadLC( R_TS_FSW_CLOSE );
+        iPopup->AddMenuItemL( *text, EFswCmdClose );
+        CleanupStack::PopAndDestroy( text );
+        text = StringLoader::LoadLC( R_TS_FSW_CLOSE_ALL );
+        iPopup->AddMenuItemL( *text, EFswCmdCloseAll );
+        CleanupStack::PopAndDestroy( text );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapArea::ShowPopupL
+// -----------------------------------------------------------------------------
+//
+TBool CTsFastSwapArea::ShowPopupL( TInt aIndex, const TPoint& aPoint )
+    {
+    TBool showPopUp(EFalse);
+    TBool showPopupItem;
+    // hide 'close' if app cannot be closed
+    showPopupItem = CanClose( aIndex );
+    iPopup->SetItemDimmed( EFswCmdClose, !showPopupItem );
+    showPopUp = showPopUp || showPopupItem;
+    // hide 'close all' if there are no applications to close.
+    showPopupItem = CanCloseAll( aIndex );
+    iPopup->SetItemDimmed( EFswCmdCloseAll, !showPopupItem );
+    showPopUp = showPopUp || showPopupItem;
+
+    if(showPopUp)
+        {
+        // give feedback
+        LaunchPopupFeedback();
+        // save index for later use & show popup
+        iAppIndexForPopup = aIndex;
+        iPopup->SetPosition( aPoint, CAknStylusPopUpMenu::EPositionTypeLeftBottom );
+        iPopup->ShowMenu();
+        }
+    return showPopUp;
+    }
+
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapArea::Count
+// -----------------------------------------------------------------------------
+//
+TInt CTsFastSwapArea::Count() const
+    {
+    return iArray.Count();
+    }
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapArea::SetDataChangeObserver
+// -----------------------------------------------------------------------------
+//
+void CTsFastSwapArea::SetDataChangeObserver(
+        MTsDataChangeObserver* aDcObserver )
+    {
+    iDcObserver = aDcObserver;
+    }
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapArea::NotifyChange
+// -----------------------------------------------------------------------------
+//
+void CTsFastSwapArea::NotifyChange()
+    {
+    if ( iDcObserver )
+        {
+        iDcObserver->DataChanged( this, Count() );
+        }
+    }
+    
+// -----------------------------------------------------------------------------
+// CTsFastSwapArea::SwapApplicationOrder
+// -----------------------------------------------------------------------------
+//
+void CTsFastSwapArea::SwapApplicationOrder( 
+    RPointerArray<CTsFswEntry>& aArray )
+    {
+    for ( TInt i = 0; i < aArray.Count(); ++i )
+        {
+        if( aArray[i]->AppUid() == KAiUid )
+            {
+            CTsFswEntry* homescreenEntry(0);
+            homescreenEntry = aArray[i];
+            aArray.Remove(i);
+            aArray.Insert(homescreenEntry, KAiPosition);
+            break;
+            }
+        }
+    }
+    
+// -----------------------------------------------------------------------------
+// CTsFastSwapArea::PreferredImageSize
+// -----------------------------------------------------------------------------
+//
+TSize CTsFastSwapArea::PreferredImageSize()
+    {
+    TAknLayoutRect gridImage;
+    TRAP_IGNORE(
+        RArray<TAknLayoutRect> rects;
+        CleanupClosePushL(rects);
+        rects.ReserveL(KLayoutItemCount);
+        GetFastSwapAreaRects(rects);
+        gridImage = rects[2];
+        CleanupStack::PopAndDestroy(&rects);
+        );
+    return gridImage.Rect().Size();
+    }
+    
+// -----------------------------------------------------------------------------
+// CTsFastSwapArea::GridItemCount
+// -----------------------------------------------------------------------------
+//
+TInt CTsFastSwapArea::GridItemCount()
+    {
+    return iGrid->Model()->ItemTextArray()->MdcaCount();
+    }
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapArea::HandleListBoxEventL
+// -----------------------------------------------------------------------------
+//
+void CTsFastSwapArea::HandleListBoxEventL(CEikListBox* aListBox, TListBoxEvent aEventType)
+    {
+    if ( aListBox == iGrid )
+        {
+        switch ( aEventType )
+            {
+            case EEventEnterKeyPressed:
+            case EEventItemClicked:
+                {
+                SwitchToApp(SelectedIndex());
+                }
+                break;
+            case EEventPenDownOnItem:
+                {
+                iGrid->ShowHighlight();
+                }
+                break;
+            default:
+                break;
+            }
+        }
+    }
+
+// --------------------------------------------------------------------------
+// CTsFastSwapArea::CalculateSizePreserveRatio
+// --------------------------------------------------------------------------
+//
+TSize CTsFastSwapArea::CalculateSizePreserveRatio(
+        const TSize& aTargetAreaSize,
+        const TSize& aSourceSize )
+    {
+    TSize sz;
+    if ( aSourceSize.iWidth > aSourceSize.iHeight )
+        {
+        sz.iWidth = aTargetAreaSize.iWidth;
+        TReal ratio = aSourceSize.iWidth / (TReal) aSourceSize.iHeight;
+        sz.iHeight = sz.iWidth / ratio;
+        }
+    else
+        {
+        sz.iHeight = aTargetAreaSize.iHeight;
+        TReal ratio = aSourceSize.iHeight / (TReal) aSourceSize.iWidth;
+        sz.iWidth = sz.iHeight / ratio;
+        }
+    return sz;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFastSwapArea::SelectNextItem
+// --------------------------------------------------------------------------
+//
+void CTsFastSwapArea::SelectNextItem()
+    {
+    iKeyEvent = ETrue;
+    iGrid->SetTactileFeedbackSupport(EFalse);
+    TBool forceRedraw(ETrue);
+    TBool animate(ETrue);
+    TInt selectedItem = SelectedIndex();
+    selectedItem++;
+    if ( selectedItem == GridItemCount() )
+        {
+        // Last item is selected, move to first one
+        selectedItem = 0;
+        animate = EFalse;
+        }
+    iGrid->SetCurrentDataIndex(selectedItem);
+    UpdateGrid(forceRedraw, animate);
+    }
+
+// --------------------------------------------------------------------------
+// CTsFastSwapArea::ShowHiglight
+// --------------------------------------------------------------------------
+//
+void CTsFastSwapArea::ShowHighlight()
+    {
+    iGrid->ShowHighlight();
+    UpdateGrid(ETrue, EFalse);
+    }
+
+// --------------------------------------------------------------------------
+// CTsFastSwapArea::CenterItem
+// --------------------------------------------------------------------------
+//
+void CTsFastSwapArea::CenterItem(TInt aRedrawDelay)
+    {
+    if( iMaxItemsOnScreen < GridItemCount() )
+        {
+        TInt visibleItem = ViewToVisibleItem( ViewPos() );
+        if(iKeyEvent)
+            {
+            visibleItem = SelectedIndex();
+            }
+        if(visibleItem != SelectedIndex())
+            {
+            iGrid->SetCurrentDataIndex( visibleItem );
+            DrawNow();
+            }
+        }
+
+    iUpdateGridTimer->Cancel();
+    iUpdateGridTimer->After(aRedrawDelay);
+    }
+
+// --------------------------------------------------------------------------
+// CTsFastSwapArea::GridWorldSize
+// --------------------------------------------------------------------------
+//
+TSize CTsFastSwapArea::GridWorldSize()
+    {
+    return TSize( GridItemCount() * iGridItemWidth + (GridItemCount() - 1) * iGridItemGap, Rect().Height() );
+    }
+
+// --------------------------------------------------------------------------
+// CTsFastSwapArea::UpdateGrid
+// --------------------------------------------------------------------------
+//
+void CTsFastSwapArea::UpdateGrid( TBool aForceRedraw, TBool aAnimate )
+    {
+    TPoint targetPoint = ItemViewPosition( SelectedIndex() );
+    if ( aForceRedraw || targetPoint.iX != ViewPos().iX )
+        {
+        if ( aAnimate )
+            {
+            iEvtHandler.Animate( targetPoint );
+            }
+        else
+            {
+            MoveOffset(targetPoint);
+            iEvtHandler.StopAnimation();
+            }
+        if ( aForceRedraw )
+            {
+            iGrid->DrawNow();
+            }
+        }
+    }
+
+// --------------------------------------------------------------------------
+// CTsFastSwapArea::HandleAppKey
+// --------------------------------------------------------------------------
+//
+void CTsFastSwapArea::HandleAppKey(TInt aType)
+    {
+    if( aType == KAppKeyTypeShort )
+        {
+        if(iGrid->IsHighlightVisible())
+            {
+            SelectNextItem();
+            }
+        else
+            {
+            ShowHighlight();
+            }
+        }
+    else if( aType == KAppKeyTypeLong )
+        {
+        SwitchToApp( SelectedIndex() );
+        }
+    }
+
+// --------------------------------------------------------------------------
+// CTsFastSwapArea::MoveOffset
+// --------------------------------------------------------------------------
+//
+void CTsFastSwapArea::MoveOffset(const TPoint& aPoint)
+    {
+    TSLOG_CONTEXT( CTsFastSwapArea::MoveOffset, TSLOG_LOCAL );
+    TSLOG2_IN("Old position x: %d, y:%d", ViewPos().iX, ViewPos().iY);
+    TSLOG2_IN("New position x: %d, y:%d", aPoint.iX, aPoint.iY);
+    TSLOG_OUT();
+    
+    TInt currentXPos = aPoint.iX;
+    currentXPos -= Rect().Width() / 2;
+    TRect gridViewRect = Rect();
+    gridViewRect.iTl.iX = -currentXPos;
+    // Take edge offset into account
+    gridViewRect.iTl.iX += Rect().iTl.iX;
+    if(GridItemCount() <= iMaxItemsOnScreen)
+        {
+        // Center view
+        gridViewRect.iTl.iX += ( Rect().Width() - GridItemCount() * iGridItemWidth ) / 2;
+        }
+    iGrid->SetRect( gridViewRect );
+    DrawNow();
+    }
+
+// --------------------------------------------------------------------------
+// CTsFastSwapArea::Tap
+// --------------------------------------------------------------------------
+//
+void CTsFastSwapArea::TapL(const TPoint& aPoint)
+    {
+    if(iGrid->Rect().Contains(aPoint))
+        {
+        //provide tap pointer event to grid
+        iGrid->HandlePointerEventL(iTapEvent);
+        iHighlightTimer->Cancel();
+        iHighlightTimer->After(KHighlighActivationTime);
+        }
+    else
+        {
+        //move task switcher to background
+        iEikonEnv->EikAppUi()->HandleCommandL(EAknSoftkeyExit);
+        }
+    }
+
+// --------------------------------------------------------------------------
+// CTsFastSwapArea::LongTap
+// --------------------------------------------------------------------------
+//
+void CTsFastSwapArea::LongTapL(const TPoint& aPoint)
+    {
+    TInt index(KErrNotFound);
+    if( iGrid->GridView()->XYPosToItemIndex(aPoint,index) )
+        {
+        iGrid->SetCurrentItemIndex(index);
+        SaveSelectedIndex();
+        if ( !ShowPopupL(iSavedSelectedIndex, aPoint) )
+            {
+            TapL(aPoint);
+            }
+        else
+            {
+            iGrid->ShowHighlight();
+            DrawNow();
+            }
+        }
+    else
+        {
+        TapL(aPoint);
+        }
+    }
+
+// --------------------------------------------------------------------------
+// CTsFastSwapArea::Drag
+// --------------------------------------------------------------------------
+//
+void CTsFastSwapArea::Drag(
+    const MAknTouchGestureFwDragEvent& /*aEvent*/)
+    {
+    iGrid->SetTactileFeedbackSupport(ETrue);
+    iGrid->HideHighlight();
+    CenterItem( KUpdateGridTime );
+    DrawNow();
+    }
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapArea::ViewSize
+// -----------------------------------------------------------------------------
+//
+TSize CTsFastSwapArea::ViewSize()
+    {
+    return TSize(Rect().Width(), Rect().Height());  
+    }
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapArea::Stop
+// -----------------------------------------------------------------------------
+//
+void CTsFastSwapArea::Stop()
+    {    
+    CenterItem( KUpdateGridTime );
+    DrawNow();
+    }
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapArea::ViewSize
+// -----------------------------------------------------------------------------
+//
+TPoint CTsFastSwapArea::ViewPos() const
+    {
+    TPoint retVal;
+    retVal.iY = iGrid->Rect().iTl.iY + Rect().Height() / 2;
+    retVal.iX = - (iGrid->Rect().iTl.iX - Rect().iTl.iX) + Rect().Width() / 2 ;
+    TInt gridItemCount = iGrid->Model()->ItemTextArray()->MdcaCount();
+    if( gridItemCount <= iMaxItemsOnScreen)
+        {
+        // View centered
+        retVal.iX += ( Rect().Width() - gridItemCount * iGridItemWidth ) / 2;
+        }
+    return retVal;
+    }
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapArea::ItemPosition
+// -----------------------------------------------------------------------------
+//
+TPoint CTsFastSwapArea::ItemViewPosition( TInt aItemIdx )
+    {
+    TPoint retVal = Rect().iTl;
+    if ( aItemIdx == 0 )
+        {
+        // First item
+        if( AknLayoutUtils::LayoutMirrored() )
+            {
+            if ( GridItemCount() > iMaxItemsOnScreen )
+                {
+                retVal.iX = GridWorldSize().iWidth - Rect().Width();
+                }
+            else
+                {
+                retVal.iX = 0;
+                }
+            }
+        else // normal layout
+            {
+            retVal.iX = 0;
+            }
+        }
+    else if ( aItemIdx == GridItemCount() - 1 )
+        {
+        // Last item selected
+        if( AknLayoutUtils::LayoutMirrored() )
+            {
+            retVal.iX = 0;
+            }
+        else // normal layout
+            {
+            if ( GridItemCount() > iMaxItemsOnScreen )
+                {
+                retVal.iX = GridWorldSize().iWidth - Rect().Width();
+                }
+            else
+                {
+                retVal.iX = 0;
+                }
+            }
+        }
+    else
+        {
+        // Middle item
+        TInt screenMiddleItemOffset = ( Rect().Width() - iGridItemWidth ) / 2;
+        if( AknLayoutUtils::LayoutMirrored() )
+            {
+            retVal.iX = iGridItemWidth * ( GridItemCount() - 1 - aItemIdx ) - screenMiddleItemOffset;
+            retVal.iX += ( GridItemCount() - 1 - aItemIdx ) * iGridItemGap;
+            }
+        else // normal layout
+            {
+            retVal.iX = iGridItemWidth * aItemIdx - screenMiddleItemOffset;
+            retVal.iX += iGridItemGap * aItemIdx;
+            }
+        if ( retVal.iX < 0 )
+            {
+            retVal.iX = 0;
+            }
+        else if ( retVal.iX + Rect().Width() > GridWorldSize().iWidth )
+            {
+            retVal.iX = GridWorldSize().iWidth - Rect().Width();
+            }
+        }
+    
+    // Return middle of the view rectangle
+    retVal.iX += Rect().Width() / 2;
+    
+    return retVal;
+    }
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapArea::ViewToVisibleItem
+// -----------------------------------------------------------------------------
+//
+TInt CTsFastSwapArea::ViewToVisibleItem( const TPoint aViewPos )
+    {
+    TInt retVal(0);
+    TPoint absViewPos = aViewPos;
+    absViewPos.iX -= Rect().Width() / 2;
+    if ( absViewPos.iX < 0 )
+        {
+        if ( AknLayoutUtils::LayoutMirrored() )
+            {
+            // View crossed left border of grid world rect, last item selected
+            retVal = GridItemCount() - 1;
+            }
+        else // normal layout
+            {
+            // View crossed left border of grid world rect, first item selected
+            retVal = 0;
+            }
+        }
+    else if ( absViewPos.iX + Rect().Width() > GridWorldSize().iWidth )
+        {
+        if ( AknLayoutUtils::LayoutMirrored() )
+            {
+            // View crossed right border of grid world rect, first item selected
+            retVal = 0;
+            }
+        else // normal layout
+            {
+            // View crossed right border of grid world rect, last item selected
+            retVal = GridItemCount() - 1;
+            }
+        }
+    else
+        {
+        TInt offsetCheck = GridWorldSize().iWidth;
+        // View inside of grid world rect
+        for ( TInt i = 0 ; i < GridItemCount(); i++ )
+            {
+            TInt offset = aViewPos.iX - ItemViewPosition( i ).iX;
+            if ( Abs( offset ) <= offsetCheck )
+                {
+                offsetCheck = Abs( offset );
+                retVal = i;
+                }
+            else
+                {
+                break;
+                }
+            }
+        }
+    return retVal;
+    }
+
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapArea::LaunchPopupFeedback
+// -----------------------------------------------------------------------------
+//
+void CTsFastSwapArea::LaunchPopupFeedback()
+    {
+    if ( AknLayoutUtils::PenEnabled() )
+        {
+        MTouchFeedback* feedback = MTouchFeedback::Instance();
+        if ( feedback )
+            {
+            TTouchLogicalFeedback fbLogicalType = ETouchFeedbackPopUp;
+            if ( CAknTransitionUtils::TransitionsEnabled(
+                 AknTransEffect::EComponentTransitionsOff ) )
+                {
+                fbLogicalType = ETouchFeedbackIncreasingPopUp;
+                }
+            feedback->InstantFeedback( this,
+                                       fbLogicalType,
+                                       ETouchFeedbackVibra,
+                                       TPointerEvent() );
+            }
+        }
+    }
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/src/tsfastswapgrid.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,843 @@
+/*
+* 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:  Taskswitcher Fast Swap area UI
+ *
+*/
+
+
+#include <avkon.mbg>
+#include <aknlayoutscalable_apps.cdl.h>
+#include <layoutmetadata.cdl.h>
+#include <AknsFrameBackgroundControlContext.h>
+#include <touchfeedback.h>
+
+#include "tsfastswapgrid.h"
+
+ /* ================================================================================
+  * CTsFastSwapGrid
+  * ================================================================================
+  */
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapGrid::CTsFastSwapGrid
+// -----------------------------------------------------------------------------
+//
+CTsFastSwapGrid::CTsFastSwapGrid()
+: CAknGrid(),
+  iCloseIconHitIdx( KErrNotFound ),
+  iBehaviour( ETouchOnly ),
+  iHighlightVisible( EFalse )
+    {
+    }
+
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapGrid::~CTsFastSwapGrid
+// -----------------------------------------------------------------------------
+//
+CTsFastSwapGrid::~CTsFastSwapGrid()
+    {
+    iCloseItems.Close();
+    delete iBgContext;
+    iFullyVisibleItems.Close();
+    iPartialVisibleItems.Close();
+    }
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapGrid::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CTsFastSwapGrid::ConstructL( const CCoeControl* aParent )
+    {
+    iParent = aParent;
+    CAknGrid::ConstructL( aParent, EAknListBoxSelectionGrid );
+    SetPrimaryScrollingType(CAknGridView::EScrollFollowsItemsAndLoops);
+    SetSecondaryScrollingType(CAknGridView::EScrollFollowsItemsAndLoops);
+    iBgContext = CAknsFrameBackgroundControlContext::NewL(
+               KAknsIIDQsnFrPopup,
+               TRect(),
+               TRect(),
+               ETrue );
+    iBgContext->SetCenter( KAknsIIDQsnFrPopupCenter );
+    iVisibleViewRect = TRect( 0, 0, 0, 0 );
+    }
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapGrid::HandlePointerEventL
+// -----------------------------------------------------------------------------
+//
+void CTsFastSwapGrid::HandlePointerEventL( const TPointerEvent &aPointerEvent )
+    {
+    TBool eventHandled( EFalse );
+    if ( aPointerEvent.iType == TPointerEvent::EButton1Up ||
+         aPointerEvent.iType == TPointerEvent::EButton1Down )
+        {
+        // Check if close icon has been hit
+        // Find hit item
+        TInt hitItem( KErrNotFound );
+        for ( TInt i = 0; i < Model()->NumberOfItems(); i++ )
+            {
+            if ( GridView()->XYPosToItemIndex( aPointerEvent.iParentPosition, i ) )
+                {
+                hitItem = i;
+                break;
+                }
+            }
+        if ( hitItem != KErrNotFound )
+            {
+            // Item found, check if close icon has been hit
+            TPoint itemPos = GridView()->ItemPos( hitItem );
+            TSize itemSize = GridView()->ItemSize( hitItem );
+            TRect itemRect( itemPos, itemSize );
+            CTsGridItemDrawer* itemDrawer =
+                static_cast<CTsGridItemDrawer*>( ItemDrawer() );
+            TRect closeIconRect = itemDrawer->GetCloseButtonRect( itemRect );
+            if ( closeIconRect.Contains( aPointerEvent.iParentPosition ) )
+                {
+                // Close icon hit
+                if ( aPointerEvent.iType == TPointerEvent::EButton1Down )
+                    {
+                    // pointer down - finish processing but do not forward to grid
+                    eventHandled = ETrue;
+                    }
+                else
+                    {
+                    // Pointer up
+                    TInt hitDataIdx(hitItem);
+                    if ( AknLayoutUtils::LayoutMirrored() )
+                        {
+                        // Calculate logical item index
+                        hitDataIdx = Model()->ItemTextArray()->MdcaCount() - 1 - hitItem;
+                        }
+                    iCloseIconHitIdx = hitDataIdx;
+                    eventHandled = ETrue;
+                    // Hide highlight to mark close icon
+                    HideHighlight();
+                    // Update current item and redraw grid
+                    SetCurrentItemIndex( hitItem );
+                    DrawNow();
+                    if ( iFastSwapGridObserver )
+                        {
+                        MTouchFeedback* feedback = MTouchFeedback::Instance();
+                        feedback->InstantFeedback(this,
+                                                  ETouchFeedbackBasicButton, 
+                                                  ETouchFeedbackVibra, 
+                                                  aPointerEvent);
+                        iFastSwapGridObserver->HandleCloseEventL( hitDataIdx );
+                        }
+                    ResetCloseHit();
+                    if ( GridBehaviour() == EHybrid )
+                        {
+                        ShowHighlight();
+                        }
+                    else
+                        {
+                        Redraw();
+                        }
+                    }
+                }
+            }
+        }
+    
+    if ( !eventHandled )
+        {
+        CTsGridItemDrawer* itemDrawer =
+            static_cast<CTsGridItemDrawer*>( ItemDrawer() );
+        if( aPointerEvent.iType == TPointerEvent::EButton1Down )
+            {
+            itemDrawer->SetRedrawBackground( ETrue );
+            }
+        else if ( aPointerEvent.iType == TPointerEvent::EButton1Up )
+            {
+            itemDrawer->SetRedrawBackground( EFalse );
+            }
+        CAknGrid::HandlePointerEventL( aPointerEvent );
+        Redraw();
+        }
+    }
+
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapGrid::HandleDeviceStateChanged
+// -----------------------------------------------------------------------------
+//
+void CTsFastSwapGrid::HandleDeviceStateChanged( TChangeType aChangeType )
+    {
+    if ( aChangeType == ESkin )
+        {
+        LoadCloseIcon();
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapGrid::MopSupplyObject
+// -----------------------------------------------------------------------------
+//
+TTypeUid::Ptr CTsFastSwapGrid::MopSupplyObject( TTypeUid aId )
+    {
+    if ( aId.iUid == MAknsControlContext::ETypeId )
+        {
+        return MAknsControlContext::SupplyMopObject( aId, iBgContext );
+        }
+    return CCoeControl::MopSupplyObject( aId );
+    }
+
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapGrid::HandleResourceChange
+// -----------------------------------------------------------------------------
+//
+void CTsFastSwapGrid::HandleResourceChange( TInt aType )
+    {
+    if ( aType != KEikDynamicLayoutVariantSwitch )
+        {
+        CAknGrid::HandleResourceChange( aType );
+        }
+    }
+
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapGrid::SizeChanged
+// -----------------------------------------------------------------------------
+//
+void CTsFastSwapGrid::SizeChanged()
+    {
+    }
+
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapGrid::SetFastSwapGridObserver
+// -----------------------------------------------------------------------------
+//
+void CTsFastSwapGrid::SetFastSwapGridObserver( MTsFastSwapGridObserver* aObserver )
+    {
+    iFastSwapGridObserver = aObserver;
+    }
+
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapGrid::CreateItemDrawerL
+// -----------------------------------------------------------------------------
+//
+void CTsFastSwapGrid::CreateItemDrawerL()
+    {
+    TRect availableRect;
+    AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EScreen, availableRect);
+    TAknLayoutRect fastSwapAreaPane;
+    TInt variety = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0;
+    fastSwapAreaPane.LayoutRect( availableRect,
+            AknLayoutScalable_Apps::tport_appsw_pane( variety ) );
+    const TInt leftOffset = fastSwapAreaPane.Rect().iTl.iX;
+    const TInt rightOffset = availableRect.Width() - fastSwapAreaPane.Rect().iBr.iX;
+    
+    CFormattedCellGridData* data = CFormattedCellGridData::NewL();
+    CleanupStack::PushL( data );
+    CTsGridItemDrawer* itemDrawer =
+        new ( ELeave ) CTsGridItemDrawer( this, data );
+    CleanupStack::PushL( itemDrawer );
+    itemDrawer->SetEdgeOffset( leftOffset, rightOffset );
+    iItemDrawer = itemDrawer;
+    CleanupStack::Pop( itemDrawer );
+    CleanupStack::Pop( data );
+    LoadCloseIcon();
+    }
+
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapGrid::SetCloseItemsL
+// -----------------------------------------------------------------------------
+//
+void CTsFastSwapGrid::SetCloseItemsL( RArray<TInt>& aItemIndex )
+    {
+    iCloseItems.Close();
+    for ( TInt i = 0; i < aItemIndex.Count(); i++ )
+        {
+        iCloseItems.AppendL( aItemIndex[i] );
+        }
+    }
+
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapGrid::CanCloseItem
+// -----------------------------------------------------------------------------
+//
+TBool CTsFastSwapGrid::CanCloseItem( TInt aItemIndex )
+    {
+    return iCloseItems.Find(aItemIndex) != KErrNotFound;
+    }
+
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapGrid::ItemCloseHit
+// -----------------------------------------------------------------------------
+//
+TBool CTsFastSwapGrid::IsItemCloseHit( TInt aItemIndex )
+    {
+    return iCloseIconHitIdx == aItemIndex;
+    }
+
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapGrid::ResetCloseHit
+// -----------------------------------------------------------------------------
+//
+void CTsFastSwapGrid::ResetCloseHit()
+    {
+    iCloseIconHitIdx = KErrNotFound;
+    }
+
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapGrid::SetBehaviour
+// -----------------------------------------------------------------------------
+//
+void CTsFastSwapGrid::SetGridBehaviour( TFastSwapGridBehaviour aBehaviour )
+    {
+    iBehaviour = aBehaviour;
+    switch ( iBehaviour )
+        {
+        case ETouchOnly:
+            {
+            HideHighlight();
+            }
+            break;
+        default:
+            {
+            ShowHighlight();
+            }
+            break;
+        }
+    }
+
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapGrid::GridBehaviour
+// -----------------------------------------------------------------------------
+//
+CTsFastSwapGrid::TFastSwapGridBehaviour CTsFastSwapGrid::GridBehaviour()
+    {
+    return iBehaviour;
+    }
+
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapGrid::ShowHighlight
+// -----------------------------------------------------------------------------
+//
+void CTsFastSwapGrid::ShowHighlight()
+    {
+    if ( !iHighlightVisible )
+        {
+        // Draw highlight
+        iHighlightVisible = ETrue;
+        Redraw();
+        }
+    }
+
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapGrid::HideHighlight
+// -----------------------------------------------------------------------------
+//
+void CTsFastSwapGrid::HideHighlight()
+    {
+    if ( iHighlightVisible )
+        {
+        iHighlightVisible = EFalse;
+        Redraw();
+        }
+    }
+
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapGrid::IsHighlightVisible
+// -----------------------------------------------------------------------------
+//
+TBool CTsFastSwapGrid::IsHighlightVisible()
+    {
+    return iHighlightVisible;
+    }
+
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapGrid::SetVisibleViewRect
+// -----------------------------------------------------------------------------
+//
+void CTsFastSwapGrid::SetVisibleViewRect( const TRect aRect )
+    {
+    iVisibleViewRect = aRect;
+    }
+
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapGrid::VisibleViewRect
+// -----------------------------------------------------------------------------
+//
+TRect CTsFastSwapGrid::VisibleViewRect()
+    {
+    TRect retVal;
+    TRect emptyRect = TRect( 0, 0, 0, 0 );
+    if ( iVisibleViewRect == emptyRect )
+        {
+        retVal = Rect();
+        }
+    else
+        {
+        retVal = iVisibleViewRect;
+        }
+    return retVal;
+    }
+
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapGrid::LoadCloseIconL
+// -----------------------------------------------------------------------------
+//
+void CTsFastSwapGrid::LoadCloseIcon()
+    {
+    // Load and set close icon
+    CFbsBitmap* icon = NULL;
+    CFbsBitmap* mask = NULL;
+
+    TRAP_IGNORE(AknsUtils::CreateIconLC( AknsUtils::SkinInstance(),
+                KAknsIIDQgnIndiItutListCollapse,
+                icon,
+                mask,
+                KAvkonBitmapFile,
+                EMbmAvkonQgn_indi_button_preview_close,
+                EMbmAvkonQgn_indi_button_preview_close_mask
+                );
+                CleanupStack::Pop( 2 ); // codescanner::cleanup
+                );
+
+    TAknLayoutRect gridAppPane;
+    TAknLayoutRect gridItem;
+    TAknLayoutRect gridCloseButton;
+    TAknLayoutRect gridCloseIcon;
+    TInt variety = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0;
+    TRect source = iParent ? iParent->Rect() : Rect();
+    gridAppPane.LayoutRect( source,
+            AknLayoutScalable_Apps::tport_appsw_pane( variety ) );
+    gridItem.LayoutRect( gridAppPane.Rect(),
+            AknLayoutScalable_Apps::cell_tport_appsw_pane( variety, 0, 0 ) );
+    gridCloseButton.LayoutRect( gridItem.Rect(),
+            AknLayoutScalable_Apps::bg_button_pane_cp16( variety, 0, 0 ));
+    gridCloseIcon.LayoutRect( gridItem.Rect(),
+            AknLayoutScalable_Apps::cell_tport_appsw_pane_g3( variety, 0, 0 ));
+    AknIconUtils::SetSize( icon, gridCloseIcon.Rect().Size(), EAspectRatioPreserved );
+    AknIconUtils::SetSize( mask, gridCloseIcon.Rect().Size(), EAspectRatioPreserved );
+    CTsGridItemDrawer* itemDrawer =
+        static_cast<CTsGridItemDrawer*>(iItemDrawer);
+    itemDrawer->SetCloseIcon( icon, mask );
+    TRect relGridCloseButton = TRect( TPoint( gridCloseButton.Rect().iTl.iX - gridItem.Rect().iTl.iX,
+                                              gridCloseButton.Rect().iTl.iY - gridItem.Rect().iTl.iY),
+                                      gridCloseButton.Rect().Size() );
+    TRect relGridCloseIconRect = TRect( TPoint( gridCloseIcon.Rect().iTl.iX - gridItem.Rect().iTl.iX,
+                                                gridCloseIcon.Rect().iTl.iY - gridItem.Rect().iTl.iY),
+                                        gridCloseIcon.Rect().Size() );
+    itemDrawer->SetCloseIconRect( relGridCloseButton, relGridCloseIconRect );
+    }
+
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapGrid::Redraw
+// -----------------------------------------------------------------------------
+//
+void CTsFastSwapGrid::Redraw()
+    {
+    DrawDeferred();
+    CCoeControl* ctrlToRedraw = Parent();
+    if ( ctrlToRedraw )
+        {
+        ctrlToRedraw->DrawDeferred();
+        ctrlToRedraw = ctrlToRedraw->Parent();
+        if ( ctrlToRedraw )
+            {
+            ctrlToRedraw->DrawNow();
+            }
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapGrid::LaunchTactileFeedback
+// -----------------------------------------------------------------------------
+//
+void CTsFastSwapGrid::LaunchTactileFeedback()
+    {
+    if( !iTactileFeedbackSupport )
+        {
+        return;
+        }
+    
+    MTouchFeedback* feedback = MTouchFeedback::Instance();
+    if (feedback)
+        {
+        feedback->InstantFeedback(ETouchFeedbackSensitive);
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapGrid::SetTactileFeedbackSupport
+// -----------------------------------------------------------------------------
+//
+void CTsFastSwapGrid::SetTactileFeedbackSupport(TBool aSupport)
+    {
+    iTactileFeedbackSupport = aSupport;
+    }
+
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapGrid::RemoveFromVisibleItems
+// -----------------------------------------------------------------------------
+//
+TBool CTsFastSwapGrid::RemoveFromVisibleItems(TInt aItem) const
+    {
+    TBool retVal(EFalse);
+    TInt idx(0);
+    idx = iFullyVisibleItems.Find(aItem); 
+    if(  idx >= 0)
+        {
+        iFullyVisibleItems.Remove(idx);
+        retVal = ETrue;
+        }
+    idx = iPartialVisibleItems.Find( aItem );
+    if( idx >= 0)
+        {
+        iPartialVisibleItems.Remove(idx);
+        retVal = ETrue;
+        }
+    return retVal;    
+    }
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapGrid::AddToFullyVisibleItems
+// -----------------------------------------------------------------------------
+//
+TBool CTsFastSwapGrid::AddToFullyVisibleItems( TInt aItem ) const
+    {
+    TBool retVal(EFalse);
+    TInt idx(0);
+
+    idx = iPartialVisibleItems.Find(aItem); 
+    if(  idx >= 0)
+        {
+        iPartialVisibleItems.Remove(idx);
+        }
+    idx = iFullyVisibleItems.Find( aItem );
+    if( idx == KErrNotFound )
+        {
+        iFullyVisibleItems.Append(aItem);
+        retVal = ETrue; 
+        }
+    return retVal;
+    }
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapGrid::MoveToPartialVisibleItems
+// -----------------------------------------------------------------------------
+//
+TBool CTsFastSwapGrid::MoveToPartialVisibleItems( TInt aItem ) const
+    {
+    TInt idx(0);
+    idx = iFullyVisibleItems.Find(aItem); 
+    if(  idx >= 0)
+        {
+        iFullyVisibleItems.Remove(idx);
+        }
+    idx = iPartialVisibleItems.Find( aItem );
+    if( idx == KErrNotFound )
+        {
+        iPartialVisibleItems.Append(aItem);
+        }
+    return EFalse;
+    }
+
+/* ================================================================================
+ * CTsGridItemDrawer
+ * ================================================================================
+ */
+
+// -----------------------------------------------------------------------------
+// CTsGridItemDrawer::CTsGridItemDrawer
+// -----------------------------------------------------------------------------
+//
+CTsGridItemDrawer::CTsGridItemDrawer(
+        CTsFastSwapGrid* aGrid,
+        CFormattedCellListBoxData* aData )
+: CFormattedCellListBoxItemDrawer( aGrid->Model(),
+        NULL,
+        aData ),
+  iGrid( aGrid )
+    {
+    AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EScreen, iScreenRect);
+    }
+
+
+// -----------------------------------------------------------------------------
+// CTsGridItemDrawer::~CTsGridItemDrawer
+// -----------------------------------------------------------------------------
+//
+CTsGridItemDrawer::~CTsGridItemDrawer()
+    {
+    delete iCloseIcon;
+    delete iCloseIconMask;
+    }
+
+
+// -----------------------------------------------------------------------------
+// CTsGridItemDrawer::SetCloseIcon
+// -----------------------------------------------------------------------------
+//
+void CTsGridItemDrawer::SetCloseIcon( CFbsBitmap* aBmp, CFbsBitmap* aMask )
+    {
+    delete iCloseIcon;
+    iCloseIcon = aBmp;
+    delete iCloseIconMask;
+    iCloseIconMask = aMask;
+    }
+
+
+// -----------------------------------------------------------------------------
+// CTsGridItemDrawer::SetCloseIconRect
+// -----------------------------------------------------------------------------
+//
+void CTsGridItemDrawer::SetCloseIconRect( const TRect& aButtonRect, const TRect& aIconRect )
+    {
+    iCloseButtonRect = aButtonRect;
+    iCloseIconRect = aIconRect;
+    }
+
+
+// -----------------------------------------------------------------------------
+// CTsGridItemDrawer::GetCloseButtonRect
+// -----------------------------------------------------------------------------
+//
+TRect CTsGridItemDrawer::GetCloseButtonRect( const TRect& aItemRect ) const
+    {
+    TRect retVal;
+    retVal = TRect( TPoint(aItemRect.iTl.iX + iCloseButtonRect.iTl.iX,
+                           aItemRect.iTl.iY + iCloseButtonRect.iTl.iY),
+                    iCloseButtonRect.Size() );
+    return retVal;
+    }
+
+
+// -----------------------------------------------------------------------------
+// CTsGridItemDrawer::SetEdgeOffset
+// -----------------------------------------------------------------------------
+//
+void CTsGridItemDrawer::SetEdgeOffset( TInt aLeftOffset, TInt aRightOffset )
+    {
+    iLeftOffset = aLeftOffset;
+    iRightOffset = aRightOffset;
+    }
+
+
+// -----------------------------------------------------------------------------
+// CTsTeleportGridItemDrawer::SetRedrawBackground
+// -----------------------------------------------------------------------------
+//
+void CTsGridItemDrawer::SetRedrawBackground( TBool aEnable )
+    {
+    iRedrawBackground = aEnable;
+    }
+
+
+// -----------------------------------------------------------------------------
+// CTsGridItemDrawer::DrawActualItem
+// -----------------------------------------------------------------------------
+//
+ void CTsGridItemDrawer::DrawActualItem( TInt aItemIndex, const TRect& aActualItemRect,
+                                                 TBool aItemIsCurrent, TBool aViewIsEmphasized,
+                                                 TBool aViewIsDimmed, TBool aItemIsSelected ) const
+    {
+    TBool feedbackNeed(EFalse);//feedback when item disappear or fully appear
+    
+    if (IsItemRectVisible(aActualItemRect))
+        {
+        // Calculate offset of the visible rectangle
+        TRect drawRect = aActualItemRect;
+        if ( drawRect.iTl.iX < iLeftOffset )
+            {
+            drawRect.iTl.iX = iLeftOffset;
+            }
+        if ( iScreenRect.Width() - drawRect.iBr.iX < iRightOffset )
+            {
+            drawRect.iBr.iX = iScreenRect.Width() - iRightOffset;
+            }
+        iGc->SetClippingRect(drawRect);
+                
+		if(IsRectContained( aActualItemRect, drawRect ))
+            {
+            feedbackNeed = iGrid->AddToFullyVisibleItems( aItemIndex );
+            }
+        else
+            {
+            feedbackNeed = iGrid->MoveToPartialVisibleItems( aItemIndex );
+            }
+			
+        // Check for item highlight
+        TBool itemIsCurrent = !iGrid->IsHighlightVisible() ? EFalse : aItemIsCurrent;
+        
+        // Draw background if necessary
+        if ( iRedrawBackground )
+            {
+            CCoeControl* targetCtrlCtx = iGrid->Parent();
+            if(targetCtrlCtx)
+                {
+                MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+                MAknsControlContext* cc = AknsDrawUtils::ControlContext( targetCtrlCtx );
+                AknsDrawUtils::Background( skin,
+                       cc,
+                       targetCtrlCtx,
+                       *iGc,
+                       drawRect );
+                }
+            }
+        
+        // Draw item
+        CFormattedCellListBoxItemDrawer::DrawActualItem(aItemIndex, aActualItemRect,
+                itemIsCurrent, aViewIsEmphasized, aViewIsDimmed, aItemIsSelected );
+        
+        if ( iGrid->CanCloseItem( aItemIndex ) && iCloseIcon && iCloseIconMask )
+            {
+            TRect closeIconRect = GetCloseButtonRect( aActualItemRect );
+            // Draw frame
+            TRect outerRect = closeIconRect;
+            TRect innerRect = CalculateInnerButtonRect( outerRect );
+            MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+            if ( iGrid->IsItemCloseHit( aItemIndex ) )
+                {
+                AknsDrawUtils::DrawFrame(skin, *iGc, outerRect, innerRect,
+                        KAknsIIDQgnFrSctrlButtonPressed, KAknsIIDQgnFrSctrlButtonCenterPressed);
+                }
+            else
+                {
+                AknsDrawUtils::DrawFrame(skin, *iGc, outerRect, innerRect,
+                        KAknsIIDQgnFrSctrlButton, KAknsIIDQgnFrSctrlButtonCenter);
+                }
+            // Draw close icon
+            TRect sourceRect( TPoint(0,0), iCloseIcon->SizeInPixels() );
+            iGc->DrawBitmapMasked( innerRect, iCloseIcon, sourceRect, iCloseIconMask, ETrue );
+            }
+        }
+    else
+        {
+        feedbackNeed = iGrid->RemoveFromVisibleItems(aItemIndex);
+        }
+    if(feedbackNeed)
+        {
+        iGrid->LaunchTactileFeedback();
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CTsGridItemDrawer::DrawActualItem
+// -----------------------------------------------------------------------------
+//
+TBool CTsGridItemDrawer::IsItemRectVisible( const TRect& aItemRect ) const
+    {
+    TBool retVal( EFalse );
+    TRect viewRect = iGrid->VisibleViewRect();
+    if ( // left edge of item rectangle on screen
+         ( aItemRect.iTl.iX >= viewRect.iTl.iX && aItemRect.iTl.iX <= viewRect.iBr.iX ) ||
+         // right edge of item rectangle on screen
+         ( aItemRect.iBr.iX >= viewRect.iTl.iX && aItemRect.iBr.iX <= viewRect.iBr.iX )
+        )
+        {
+        retVal = ETrue;
+        }
+    return retVal;
+    }
+
+// -----------------------------------------------------------------------------
+// CTsGridItemDrawer::IsRectContained
+// -----------------------------------------------------------------------------
+//
+TBool CTsGridItemDrawer::IsRectContained(
+        const TRect& aRectContained, const TRect& aRectContainig) const
+    {
+    TBool retVal(EFalse);
+    TRect intersectionRect(aRectContainig);
+    intersectionRect.Intersection( aRectContained );
+    if( intersectionRect == aRectContained)
+        {
+        retVal = ETrue;
+        }
+    return retVal;
+    }
+
+// -----------------------------------------------------------------------------
+// CTsGridItemDrawer::CalculateInnerButtonRect
+// -----------------------------------------------------------------------------
+//
+TRect CTsGridItemDrawer::CalculateInnerButtonRect( const TRect& aOuterRect ) const
+    {
+    TRect retVal(aOuterRect);
+    retVal.iTl.iX += iCloseIconRect.iTl.iX - iCloseButtonRect.iTl.iX;
+    retVal.iTl.iY += iCloseIconRect.iTl.iY - iCloseButtonRect.iTl.iY;
+    retVal.iBr.iX -= iCloseButtonRect.iBr.iX - iCloseIconRect.iBr.iX;
+    retVal.iBr.iY -= iCloseButtonRect.iBr.iY - iCloseIconRect.iBr.iY;
+    return retVal;
+    }
+ 
+ 
+ 
+ /* ================================================================================
+  * CTsGridHighlightTimer
+  * ================================================================================
+  */
+
+// -----------------------------------------------------------------------------
+// CTsGridHighlightTimer::CTsGridHighlightTimer
+// -----------------------------------------------------------------------------
+//
+CTsFastSwapTimer::CTsFastSwapTimer( MTsFastSwapTimerObserver& aObserver )
+: CTimer( EPriorityStandard ),
+  iObserver( &aObserver )
+    {
+    }
+
+
+// -----------------------------------------------------------------------------
+// CTsGridHighlightTimer::CTsGridHighlightTimer
+// -----------------------------------------------------------------------------
+//
+CTsFastSwapTimer::~CTsFastSwapTimer()
+    {
+    Cancel();
+    }
+
+
+// -----------------------------------------------------------------------------
+// CTsGridHighlightTimer::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CTsFastSwapTimer::ConstructL()
+    {
+    CTimer::ConstructL();
+    CActiveScheduler::Add( this );
+    }
+
+
+// -----------------------------------------------------------------------------
+// CTsGridHighlightTimer::CTsGridHighlightTimer
+// -----------------------------------------------------------------------------
+//
+void CTsFastSwapTimer::RunL()
+    {
+    iObserver->TimerCompletedL(this);
+    }
+ 
+ // End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/src/tsphysics.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -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:  Application class
+ *
+*/
+
+
+#include <aknphysicsobserveriface.h>
+
+#include "tsphysics.h"
+
+const TInt KSingleItemChangeAnimTime = 1000000; // 1 second
+const TInt KAnimationFrameCount = 15; // 15 frames per second
+
+// -----------------------------------------------------------------------------
+// CTsPhysics::CTsPhysics
+// -----------------------------------------------------------------------------
+//
+CTsPhysics::CTsPhysics( MAknPhysicsObserver& aObserver ) :
+    CActive( EPriorityStandard ), iObserver( aObserver )
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CTsPhysics::NewLC
+// -----------------------------------------------------------------------------
+//
+CTsPhysics* CTsPhysics::NewLC( MAknPhysicsObserver& aObserver )
+    {
+    CTsPhysics* self = new ( ELeave ) CTsPhysics( aObserver );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CTsPhysics::NewL
+// -----------------------------------------------------------------------------
+//
+CTsPhysics* CTsPhysics::NewL( MAknPhysicsObserver& aObserver )
+    {
+    CTsPhysics* self = CTsPhysics::NewLC( aObserver );
+    CleanupStack::Pop();
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CTsPhysics::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CTsPhysics::ConstructL()
+    {
+    User::LeaveIfError( iTimer.CreateLocal() );
+    CActiveScheduler::Add( this );
+    // Animation parameters
+    const TInt KInitValue = 0;
+    iAnimationTickTime = KSingleItemChangeAnimTime / KSingleItemChangeAnimTime;
+    iPhysicsState = EStopped;
+    iAnimationTicks = KInitValue;
+    }
+
+// -----------------------------------------------------------------------------
+// CTsPhysics::~CTsPhysics
+// -----------------------------------------------------------------------------
+//
+CTsPhysics::~CTsPhysics()
+    {
+    Cancel();
+    iTimer.Close();
+    iAnimationSteps.Close();
+    }
+
+// -----------------------------------------------------------------------------
+// CTsPhysics::DoCancel
+// -----------------------------------------------------------------------------
+//
+void CTsPhysics::DoCancel()
+    {
+    iTimer.Cancel();
+    }
+
+// -----------------------------------------------------------------------------
+// CTsPhysics::StartPhysics
+// -----------------------------------------------------------------------------
+//
+void CTsPhysics::StartPhysics( const TPoint& aTarget )
+    {
+    Cancel();
+    // Setup animation
+    TPoint currentPoint = iObserver.ViewPosition();
+    if ( currentPoint.iX != aTarget.iX )
+        {
+        iAnimationTicks = 0;
+        if ( CalculateAnimationSteps( aTarget ) == KErrNone )
+            {
+            // Request
+            iTimer.After( iStatus, 0 );
+            SetActive();
+            }
+        else
+            {
+            // If calculation failes (no memory) or there is
+            // only a small step, set view to target
+            iObserver.ViewPositionChanged( aTarget, ETrue, 0);
+            iObserver.PhysicEmulationEnded();
+            }
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CTsPhysics::StopPhysics
+// -----------------------------------------------------------------------------
+//
+void CTsPhysics::StopPhysics()
+    {
+    Cancel();
+    if ( iPhysicsState == ERunning || iPhysicsState == EFinished )
+        {
+        iObserver.PhysicEmulationEnded();
+        }
+    iPhysicsState = EStopped;
+    iAnimationTicks = 0;
+    }
+
+// -----------------------------------------------------------------------------
+// CTsPhysics::RunL
+// -----------------------------------------------------------------------------
+//
+void CTsPhysics::RunL()
+    {
+    if ( iPhysicsState == EStopped )
+        {
+        // Start animation
+        iPhysicsState = ERunning;
+        iTimer.After( iStatus, iAnimationTickTime );
+        SetActive();
+        }
+    else if ( iPhysicsState == ERunning )
+        {
+        // Ongoing animation
+        if ( iAnimationTicks >= 0 && iAnimationTicks < KAnimationFrameCount )
+            {
+            iObserver.ViewPositionChanged( iObserver.ViewPosition()+iAnimationSteps[iAnimationTicks], ETrue, 0 );
+            }
+        iAnimationTicks++;
+        if ( iAnimationTicks >= KAnimationFrameCount )
+            {
+            iPhysicsState = EFinished;
+            }
+        iTimer.After( iStatus, iAnimationTickTime );
+        SetActive();
+        }
+    else if ( iPhysicsState == EFinished )
+        {
+        iAnimationTicks = 0;
+        iPhysicsState = EStopped;
+        iObserver.PhysicEmulationEnded();
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CTsPhysics::RunError
+// -----------------------------------------------------------------------------
+//
+TInt CTsPhysics::RunError( TInt /*aError*/ )
+    {
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CTsPhysics::CalculateAnimationSteps
+// -----------------------------------------------------------------------------
+//
+TInt CTsPhysics::CalculateAnimationSteps( const TPoint& aTarget )
+    {
+    TInt retVal( KErrNone );
+    iAnimationSteps.Reset();
+    retVal = iAnimationSteps.Reserve( KAnimationFrameCount );
+    if ( retVal == KErrNone )
+        {
+        TInt yValue = aTarget.iY;
+        TPoint currentPos = iObserver.ViewPosition();
+        TInt moveLen = aTarget.iX - currentPos.iX;
+        if ( moveLen > KAnimationFrameCount || moveLen < -KAnimationFrameCount )
+            {
+            TInt singleStep = moveLen / KAnimationFrameCount;
+            for ( TInt i = 0; i < KAnimationFrameCount - 1; i++ )
+                {
+                iAnimationSteps.Append( TPoint( singleStep, yValue ) );
+                }
+            TInt lastStep = moveLen - ( ( KAnimationFrameCount - 1 ) * singleStep );
+            iAnimationSteps.Append( TPoint( lastStep, yValue ) );
+            }
+        else
+            {
+            retVal = KErrArgument;
+            }
+        }
+    return retVal;
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/src/tsphysicsengine.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,142 @@
+/*
+* 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:  Taskswitcher physics
+ *
+*/
+
+#include <aknphysics.h>
+
+#include "tsphysicsengine.h"
+#include "tsphysics.h"
+
+// -----------------------------------------------------------------------------
+// CTsPhysicsHandler::CTsPhysicsHandler
+// -----------------------------------------------------------------------------
+//
+CTsPhysicsEngine::CTsPhysicsEngine()
+    {
+    // No implementation required
+    }
+
+// -----------------------------------------------------------------------------
+// CTsPhysicsEngine::~CTsPhysicsEngine
+// -----------------------------------------------------------------------------
+//
+CTsPhysicsEngine::~CTsPhysicsEngine()
+    {
+    delete iTaskswitcherPhysics;
+    delete iPhysics;
+    }
+
+// -----------------------------------------------------------------------------
+// CTsPhysicsEngine::NewLC
+// -----------------------------------------------------------------------------
+//
+CTsPhysicsEngine* CTsPhysicsEngine::NewLC(
+        MAknPhysicsObserver& aPhysicObserver, CCoeControl& aViewControl)
+    {
+    CTsPhysicsEngine* self = new (ELeave) CTsPhysicsEngine();
+    CleanupStack::PushL(self);
+    self->ConstructL(aPhysicObserver, aViewControl);
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CTsPhysicsEngine::NewL
+// -----------------------------------------------------------------------------
+//
+CTsPhysicsEngine* CTsPhysicsEngine::NewL(
+        MAknPhysicsObserver& aPhysicObserver, CCoeControl& aViewControl)
+    {
+    CTsPhysicsEngine* self = CTsPhysicsEngine::NewLC(
+            aPhysicObserver, aViewControl);
+    CleanupStack::Pop(); // self;
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CTsPhysicsEngine::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CTsPhysicsEngine::ConstructL(MAknPhysicsObserver& aPhysicObserver,
+        CCoeControl& aViewControl)
+    {
+    iPhysics = CAknPhysics::NewL(aPhysicObserver, &aViewControl);//TODO:
+    iTaskswitcherPhysics = CTsPhysics::NewL(aPhysicObserver);
+    }
+
+
+// -----------------------------------------------------------------------------
+// CTsPhysicsEngine::IsRunning
+// -----------------------------------------------------------------------------
+//
+TBool CTsPhysicsEngine::IsRunning() const
+    {
+    return iPhysics->OngoingPhysicsAction() != CAknPhysics::EAknPhysicsActionNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CTsPhysicsEngine::HandleDragEvent
+// -----------------------------------------------------------------------------
+//
+void CTsPhysicsEngine::HandleDragEvent(
+        AknTouchGestureFw::MAknTouchGestureFwDragEvent& aEvent)
+    {
+    if (AknTouchGestureFw::EAknTouchGestureFwStart == aEvent.State())
+        {
+        iPhysics->StopPhysics();
+        iStartTime.HomeTime();
+        }
+    else if (AknTouchGestureFw::EAknTouchGestureFwOn == aEvent.State())
+        {
+        TPoint deltaPoint(aEvent.PreviousPosition() - aEvent.CurrentPosition());
+        iPhysics->RegisterPanningPosition(deltaPoint);
+        }
+    else //AknTouchGestureFw::EAknTouchGestureFwStop
+        {
+        TPoint drag(aEvent.PreviousPosition() - aEvent.CurrentPosition());
+        iPhysics->StartPhysics(drag, iStartTime);
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CTsPhysicsEngine::Stop
+// -----------------------------------------------------------------------------
+//
+void CTsPhysicsEngine::Stop()
+    {
+    iPhysics->StopPhysics();
+    iTaskswitcherPhysics->StopPhysics();
+    }
+
+// -----------------------------------------------------------------------------
+// CTsPhysicsEngine::AnimateToTargetL
+// -----------------------------------------------------------------------------
+//
+void CTsPhysicsEngine::AnimateToTarget(const TPoint& aPoint)
+    {
+    iTaskswitcherPhysics->StartPhysics(aPoint);
+    }
+
+// -----------------------------------------------------------------------------
+// CTsPhysicsEngine::ReInitPhysicsL
+// -----------------------------------------------------------------------------
+//
+void CTsPhysicsEngine::ReInitPhysicsL(const TSize& aWorldSize,
+        const TSize& aViewSize, TBool aLandscape)
+    {
+    iPhysics->InitPhysicsL(aWorldSize, aViewSize, aLandscape);
+    }
+
+//End file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/src/tstaskswitcher.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,44 @@
+/*
+* 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:  Main cpp of application. Definition of start function
+ *
+*/
+
+
+#include <eikstart.h>
+
+#include "tsapplication.h"
+
+// -----------------------------------------------------------------------------
+// NewApplication
+// Create main class of application
+// -----------------------------------------------------------------------------
+//
+CApaApplication* NewApplication( )
+    {
+    return new CTsApplication;
+    }
+
+// -----------------------------------------------------------------------------
+// E32Main
+// Application enty point.
+// -----------------------------------------------------------------------------
+//
+TInt E32Main( )
+    {
+    return EikStart::RunApplication( NewApplication );
+    }
+
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/taskswitcherui/taskswitcherappecom/data/tsappecom.rss	Tue Jan 26 11:48:23 2010 +0200
@@ -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:  Ecom registration file for alternate fast swap plugin
+*
+*/
+
+
+#include <ecom/registryinfo.rh>
+#include "tsappecomconst.hrh"
+#include "akncapserveralternatefspluginconst.hrh"
+
+RESOURCE REGISTRY_INFO theInfo
+    {
+    // UID for the DLL
+    dll_uid = KTsAppPluginDllUid;
+    // Declare array of interface info
+    interfaces = 
+        {
+        INTERFACE_INFO
+            {
+            // UID of interface that is implemented
+            interface_uid = KAknCapServerAlternateFsPluginInterfaceUid;
+            implementations = 
+                {
+                IMPLEMENTATION_INFO
+                    {
+                    implementation_uid = KTsAppPluginImplementationUid;
+                    version_no         = 1;
+                    display_name       = "";
+                    default_data       = "";
+                    opaque_data        = "";
+                    }
+                };
+            }
+        };
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/taskswitcherui/taskswitcherappecom/group/bld.inf	Tue Jan 26 11:48:23 2010 +0200
@@ -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:  Taskswitcher application ecom plugin
+*
+*/
+
+
+#include <platform_paths.hrh>
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_EXPORTS
+
+PRJ_MMPFILES
+tsappecom.mmp
+
+PRJ_TESTMMPFILES
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/taskswitcherui/taskswitcherappecom/group/tsappecom.mmp	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,49 @@
+/*
+* 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:  Taskswitcher application ecom plugin
+*
+*/
+
+
+#include <platform_paths.hrh>
+#include <data_caging_paths.hrh>
+#include "../inc/tsappecomconst.hrh"
+
+TARGET          tsappecom.dll
+TARGETTYPE      PLUGIN
+UID             0x10009D8D KTsAppPluginDllUid
+CAPABILITY      CAP_ECOM_PLUGIN
+
+SOURCEPATH      ../src
+SOURCE          proxy.cpp
+SOURCE          tsappecom.cpp
+
+USERINCLUDE     ../inc
+USERINCLUDE     ../../trace
+
+APP_LAYER_SYSTEMINCLUDE
+
+SOURCEPATH      ../data
+START RESOURCE tsappecom.rss
+	TARGET tsappecom.rsc
+	TARGETPATH /resource/plugins
+END
+
+LIBRARY         euser.lib 
+LIBRARY         ecom.lib
+LIBRARY         apgrfx.lib
+LIBRARY         cone.lib
+
+DEBUGLIBRARY    flogger.lib
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/taskswitcherui/taskswitcherappecom/inc/tsappecom.h	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,108 @@
+/*
+* 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:  Taskswitcher application ecom plugin
+*
+*/
+
+
+#ifndef TSAPPECOM_H
+#define TSAPPECOM_H
+
+#include <e32base.h>
+#include <akncapserveralternatefsplugin.h>
+
+/**
+ * Taskswitcher ecom plugin which is loaded by AknCapServer as an alternate Fast 
+ * Swap. Uses P&S to show/dismiss the Taskswitcher application. 
+ */
+class CTsEcomPlugin : public CAknCapAppServerAlternateFs
+    {
+public:
+    
+    /**
+     * Symbian two phased constructors.
+     *
+     * @return CTsEcomPlugin pointer.
+     */
+    static CTsEcomPlugin* NewL();
+    
+    /**
+     * Destructor.
+     */
+    ~CTsEcomPlugin();
+    
+public: 
+    
+    // From CAknCapAppServerAlternateFs
+    /**
+     * Shows the alternate fast swap.
+     */
+    virtual void Show();
+
+    /**
+     * Dismisses the alternate fast swap.
+     */
+    virtual void Dismiss();
+
+    /**
+     * Checks if alternate fast swap is currently visible.
+     * 
+     * @return ETrue If alternate FS is visible.
+     */    
+    virtual TBool IsVisible();
+
+    /**
+     * Checks if alternate fast swap is ready to be shown.
+     * 
+     * @return ETrue If alternate FS is ready.
+     */    
+    virtual TBool IsReady();
+
+    /**
+     * Forward long app key to the alternate fast swap.
+     */
+    virtual void HandleLongAppKeyPress();
+
+    /**
+     * Forward short app key to the alternate fast swap.
+     */
+    virtual void HandleShortAppKeyPress();
+
+private:
+
+    /**
+     * Default constructor, implicitly called by NewL().
+     */
+    CTsEcomPlugin();
+    
+    /**
+     * 2nd phase construction, called by NewL().
+     */
+    void ConstructL();
+    
+    /**
+     * Sets the P&S property to given value.
+     * 
+     * @param aValue Value
+     */
+    void SetTaskswitcherStateProperty( TInt aValue );
+    
+    /**
+     * Defines the P&S property.
+     */
+    void DefineTaskswitcherStateProperty();
+
+    };
+    
+#endif // TSAPPECOM_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/taskswitcherui/taskswitcherappecom/inc/tsappecomconst.hrh	Tue Jan 26 11:48:23 2010 +0200
@@ -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:  Taskswitcher application ecom plugin UIDs
+*
+*/
+
+
+#ifndef TSAPPECOMCONST_HRH
+#define TSAPPECOMCONST_HRH
+                          
+#define KTsAppPluginDllUid 0x2001FD72
+#define KTsAppPluginImplementationUid 0x2001FD72
+
+#endif // TSAPPECOMCONST_HRH
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/taskswitcherui/taskswitcherappecom/inc/tsappecomlogging.h	Tue Jan 26 11:48:23 2010 +0200
@@ -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:  Defines logs for tsappecom
+*
+*/
+
+
+#ifdef _DEBUG
+_LIT( KTsLogFile, "tsappecom.txt" );
+_LIT( KTsLogPath, "taskswitcher" );
+#define _TSLOG_LOG_COMPONENT_ID KTsAppPluginDllUid
+
+#endif
+#include "tslogging.h"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/taskswitcherui/taskswitcherappecom/src/proxy.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,44 @@
+/*
+* 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:  Taskswitcher application ecom plugin
+*
+*/
+
+
+// INCLUDE FILES
+#include <e32std.h>
+#include <ecom/implementationproxy.h>
+
+#include "tsappecom.h"
+#include "tsappecomconst.hrh"
+
+// Provides a key value pair table, this is used to identify
+// the correct construction function for the requested interface.
+const TImplementationProxy ImplementationTable[] = 
+    {
+    IMPLEMENTATION_PROXY_ENTRY( 
+        KTsAppPluginImplementationUid,
+        CTsEcomPlugin::NewL )
+    };
+
+// Function used to return an instance of the proxy table.
+EXPORT_C const TImplementationProxy* ImplementationGroupProxy( 
+    TInt& aTableCount )
+    {
+    aTableCount 
+        = sizeof ( ImplementationTable ) / sizeof( TImplementationProxy );
+    return ImplementationTable;
+    }
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/taskswitcherui/taskswitcherappecom/src/tsappecom.cpp	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,252 @@
+/*
+* 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:  Taskswitcher application ecom plugin
+ *
+*/
+
+ 
+#include <e32property.h>
+#include <apgtask.h>
+#include <eikenv.h>
+
+#include "tsappecomconst.hrh"
+#include "tsappecom.h"
+
+#include "tsappecomlogging.h"
+
+// AknCapServer UID, used for P&S category
+const TUid KTaskswitcherStateCategory = { 0x10207218 };
+
+// Taskswitcher UI, used as P&S key
+const TInt KTaskswitcherStateKey = 0x20016BF0;
+
+// Values for Taskswitcher launching P&S
+const TInt KTaskswitcherBackgroundValue = 1;
+const TInt KTaskswitcherForegroundValue = KTaskswitcherBackgroundValue << 1;
+const TInt KTaskswitcherShortAppKeyPressed = KTaskswitcherForegroundValue << 1;
+const TInt KTaskswitcherLongAppKeyPressed = KTaskswitcherShortAppKeyPressed << 1;
+
+// Taskswitcher application UID, for checking if taskswitcher is running
+const TUid KTaskswitcherAppUidValue = { 0x20016BF0 };
+
+// ---------------------------------------------------------------------------
+// CTsEcomPlugin::CTsEcomPlugin()
+// Default constructor for first phase construction.
+// ---------------------------------------------------------------------------
+//
+CTsEcomPlugin::CTsEcomPlugin()
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// CTsEcomPlugin::NewL()
+// Standard NewL.
+// ---------------------------------------------------------------------------
+//
+CTsEcomPlugin* CTsEcomPlugin::NewL()
+    {
+    CTsEcomPlugin* self = new ( ELeave ) CTsEcomPlugin;
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CTsEcomPlugin::ConstructL()
+// 2nd phase construction.
+// ---------------------------------------------------------------------------
+//
+void CTsEcomPlugin::ConstructL()
+    {
+    TSLOG_CONTEXT( CTsEcomPlugin::ConstructL, TSLOG_LOCAL );
+    TSLOG_IN();
+    
+    DefineTaskswitcherStateProperty();
+    
+    TSLOG_OUT();
+    }
+
+// ---------------------------------------------------------------------------
+// CTsEcomPlugin::~CTsEcomPlugin()
+// Destructor.
+// ---------------------------------------------------------------------------
+//
+CTsEcomPlugin::~CTsEcomPlugin()
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// CTsEcomPlugin::Show
+// ---------------------------------------------------------------------------
+//
+void CTsEcomPlugin::Show()
+    {
+    TSLOG_CONTEXT( CTsEcomPlugin::Show, TSLOG_LOCAL );
+    TSLOG_IN();
+    
+    TInt value( 0 );
+    RProperty::Get( KTaskswitcherStateCategory, KTaskswitcherStateKey, value );
+    value &= ~KTaskswitcherBackgroundValue;
+    value |= KTaskswitcherForegroundValue;
+    SetTaskswitcherStateProperty( value );  
+    
+    TSLOG_OUT();    
+    }
+
+// ---------------------------------------------------------------------------
+// CTsEcomPlugin::Dismiss
+// ---------------------------------------------------------------------------
+//
+void CTsEcomPlugin::Dismiss()
+    {
+    TSLOG_CONTEXT( CTsEcomPlugin::Dismiss, TSLOG_LOCAL );
+    TSLOG_IN();
+    
+    TInt value( 0 );
+    RProperty::Get( KTaskswitcherStateCategory, KTaskswitcherStateKey, value );
+    value &= ~KTaskswitcherForegroundValue;
+    value |= KTaskswitcherBackgroundValue;
+    SetTaskswitcherStateProperty( value );  
+    
+    TSLOG_OUT();     
+    }
+
+// ---------------------------------------------------------------------------
+// CTsEcomPlugin::HandleLongAppKeyPress
+// ---------------------------------------------------------------------------
+//
+void CTsEcomPlugin::HandleLongAppKeyPress()
+    {
+    TSLOG_CONTEXT( CTsEcomPlugin::Show, TSLOG_LOCAL );
+    TSLOG_IN();
+    
+    TInt value( 0 );
+    RProperty::Get( KTaskswitcherStateCategory, KTaskswitcherStateKey, value );
+    value &= ~KTaskswitcherShortAppKeyPressed;
+    value |= KTaskswitcherLongAppKeyPressed;
+    SetTaskswitcherStateProperty( value );    
+    
+    TSLOG_OUT();    
+    }
+
+// ---------------------------------------------------------------------------
+// CTsEcomPlugin::HandleShortAppKeyPress
+// ---------------------------------------------------------------------------
+//
+void CTsEcomPlugin::HandleShortAppKeyPress()
+    {
+    TSLOG_CONTEXT( CTsEcomPlugin::Dismiss, TSLOG_LOCAL );
+    TSLOG_IN();
+    
+    TInt value( 0 );
+    RProperty::Get( KTaskswitcherStateCategory, KTaskswitcherStateKey, value );
+    value &= ~KTaskswitcherLongAppKeyPressed;
+    value |= KTaskswitcherShortAppKeyPressed;
+    SetTaskswitcherStateProperty( value ); 
+    
+    TSLOG_OUT();     
+    }
+
+// ---------------------------------------------------------------------------
+// CTsEcomPlugin::IsVisible
+// ---------------------------------------------------------------------------
+//
+TBool CTsEcomPlugin::IsVisible()
+    {
+    TSLOG_CONTEXT( CTsEcomPlugin::IsVisible, TSLOG_LOCAL );
+    TSLOG_IN();
+    
+    TInt value( 0 );
+    RProperty::Get( KTaskswitcherStateCategory, KTaskswitcherStateKey, value );
+    if ( value & KTaskswitcherForegroundValue )
+        {
+        TSLOG_OUT();
+        return ETrue;
+        }
+    TSLOG_OUT();
+    return EFalse;
+    }
+
+// ---------------------------------------------------------------------------
+// CTsEcomPlugin::IsReady
+// ---------------------------------------------------------------------------
+//
+TBool CTsEcomPlugin::IsReady()
+    {
+    TSLOG_CONTEXT( CTsEcomPlugin::IsReady, TSLOG_LOCAL );
+    TSLOG_IN();
+
+    TBool ret = EFalse;    
+    CEikonEnv* eikonEnv = CEikonEnv::Static();
+    
+    if ( eikonEnv )
+        {
+        TApaTaskList taskList( eikonEnv->WsSession() );
+        TApaTask task = taskList.FindApp( KTaskswitcherAppUidValue ); 
+    
+        if ( task.Exists() )
+            {
+            ret = ETrue;
+            }
+        }
+    
+    TSLOG1_OUT( "IsReady returns: %d", ret );
+    return ret;
+    }
+    
+// -----------------------------------------------------------------------------
+// CTsEcomPlugin::SetTaskswitcherStateProperty
+// -----------------------------------------------------------------------------
+//
+void CTsEcomPlugin::SetTaskswitcherStateProperty( TInt aValue )
+    {
+    TSLOG_CONTEXT( CTsEcomPlugin::SetTaskswitcherShowProperty, TSLOG_LOCAL );
+    TSLOG_IN();
+    
+    if ( RProperty::Set( 
+            KTaskswitcherStateCategory, KTaskswitcherStateKey, aValue ) != KErrNone )
+        {
+        DefineTaskswitcherStateProperty();
+        TInt error = 
+            RProperty::Set( KTaskswitcherStateCategory, KTaskswitcherStateKey, aValue );
+        if ( error != KErrNone )
+            {
+            TSLOG1( TSLOG_INFO, "RProperty::Set Error: %d", error ); 
+            }        
+        }
+    
+    TSLOG_OUT();    
+    }
+
+// -----------------------------------------------------------------------------
+// CTsEcomPlugin::DefineTaskswitcherStateProperty
+// -----------------------------------------------------------------------------
+//
+void CTsEcomPlugin::DefineTaskswitcherStateProperty()
+    {
+    TSLOG_CONTEXT( CTsEcomPlugin::DefineTaskswitcherShowProperty, TSLOG_LOCAL );
+    TSLOG_IN();
+    
+    TInt error = RProperty::Define( 
+            KTaskswitcherStateCategory, KTaskswitcherStateKey, RProperty::EInt );
+    if ( error != KErrNone )
+        {
+        TSLOG1( TSLOG_INFO, "RProperty::Define Error: %d", error );
+        }              
+    
+    TSLOG_OUT();
+    }
+
+// End of file 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/taskswitcherui/trace/tslogging.h	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,218 @@
+/*
+* 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:  Defines all available logging macros.
+*
+*/
+
+
+#ifndef TSLOGLOGUTILS_H
+#define TSLOGLOGUTILS_H
+
+/**
+ * @file
+ * 
+ * TAKING LOGGING INTO USE:
+ * 
+ * This step is needed to do once per component.
+ * 
+ * For each component that uses these common logging macros should specify
+ * their own logging configuration file, which includes this file. In that
+ * configuration file, following constants and macros must be defined.
+ *  For example:
+ * @code
+ * 
+ * _LIT( KTsLogFile, "text_file_for_logging.txt" );
+ * _LIT( KTsLogPath, "folder_for_text_file" );
+ * #define _TSLOG_LOG_COMPONENT_ID <some unique number here>
+ * 
+ * #include "tslogging.h"
+ * 
+ * @/code
+ * 
+ * KTsLogFile   : This is the name of the file, where all the logs for
+ *                this components are being written.
+ * 
+ * KTsLogPath   : This is the folder name under c:\logs, where the file
+ *                is to be stored. For example, if KTsLogPath is "test",
+ *                log file is created into folder c:\logs\test.
+ * 
+ * _TSLOG_LOG_COMPONENT_ID  : Unique number id of the component. This is 
+ *                            for filtering purposes.
+ * 
+ * _TSLOG_RDEBUG    : When defined tracing instead of file logging. 
+ *                    Default is for file logging.
+ * 
+ * --------------------------------------------------------------------------
+ * 
+ * USING LOGGING:
+ * 
+ * Basically the use is simple, register function use with TSLOG_CONTEXT, 
+ * then log function enter by any TSLOG_IN -macro, then possibly use TSLOG
+ * -macros for function logging and finally TSLOG_OUT -macros for returning
+ * from the function.
+ * 
+ * @code
+ * TInt CGood::Example( TInt aSomething )
+ *     {
+ *     // Create log context class, which is maintained for lifetime of the 
+ *     // method. 
+ *     TSLOG_CONTEXT( Example, TSLOG_LOCAL );
+ * 
+ *     // Indicate we are entering the function. 
+ *     TSLOG_IN1( "aSomething contains value %d", aSomething );
+ * 
+ *     // Your buggy code...
+ * 
+ *     // Before leaving, indicate function execution has ended.
+ *     TSLOG_OUT();
+ * 
+ *     return 0;
+ *     }
+ * @/code
+ */
+
+#include <e32def.h>
+#include <e32std.h>
+
+#include "tslogutils.h"
+
+#define TSLOG_API 0
+#define TSLOG_LOCAL 1
+
+#define TSLOG_INFO 0
+#define TSLOG_WARNING 1
+#define TSLOG_ERROR 2
+
+#define TSLOG_ASSERT(_assertion)  __TSLOG_ASSERT_DBG(_assertion) 
+#define TSLOG_TRACE_ASSERT(_assertion) __ASSERT_DEBUG((_assertion), User::Invariant() )
+
+#ifdef _DEBUG
+            
+/*****************************************************************************
+ LOGGING MACROS - LOGGING ON
+*****************************************************************************/             
+
+    /** 
+     * Context initialization 
+     * NOTE: TSLOG_STATIC_CONTEXT is meant for static methods.
+     * 
+     * @param _fn   Name of the function.
+     * @param _vis  Visibility for the client, use values TSLOG_API or TSLOG_LOCAL
+     * @param _thdId For static functions, thread id can be given here.
+     */
+    #define TSLOG_CONTEXT(_fn, _vis ) _TTsLogContext _dc((TText*)L ## #_fn, _TSLOG_LOG_COMPONENT_ID, _vis, (TUint)this, RProcess().SecureId().iId )
+    #define TSLOG_STATIC_CONTEXT(_fn, _vis, _thdId) _TTsLogContext _dc((TText*)L ## #_fn, _TSLOG_LOG_COMPONENT_ID, _vis, _thdId, RProcess().SecureId().iId )
+
+    /** 
+     * Entering function 
+     * 
+     * @param string    Custom text. Example: TSLOG_IN0( "Yeah!!!" );
+     * @param p1 - p5   For multiple variables in same string.
+     */
+    #define TSLOG_IN() do { _CHK_MULTIIN(); _TSLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]>%s "), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn); _MARK_ENTRY(); } while(0)
+    #define TSLOG0_IN(string) do { _CHK_MULTIIN(); _TSLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]>%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn); _MARK_ENTRY(); } while(0)
+    #define TSLOG1_IN(string, p1) do { _CHK_MULTIIN(); _TSLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]>%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1); _MARK_ENTRY(); } while(0)
+    #define TSLOG2_IN(string, p1, p2) do { _CHK_MULTIIN(); _TSLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]>%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2); _MARK_ENTRY(); } while(0)
+    #define TSLOG3_IN(string, p1, p2, p3) do { _CHK_MULTIIN(); _TSLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]>%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2, p3); _MARK_ENTRY(); } while(0)
+    #define TSLOG4_IN(string, p1, p2, p3, p4) do { _CHK_MULTIIN(); _TSLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]>%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2, p3, p4); _MARK_ENTRY(); } while(0)
+    #define TSLOG5_IN(string, p1, p2, p3, p4, p5) do { _CHK_MULTIIN(); _TSLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]>%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2, p3, p4, p5); _MARK_ENTRY(); } while(0)
+
+    /** Leaving function */
+    #define TSLOG_OUT() do { _DOINCHK(); _CHK_MULTIOUT(); _TSLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s "), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn); _MARK_EXIT(); } while(0)
+    #define TSLOG0_OUT(string) do { _DOINCHK(); _CHK_MULTIOUT(); _TSLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn); _MARK_EXIT(); } while(0)
+    #define TSLOG1_OUT(string, p1) do { _DOINCHK(); _CHK_MULTIOUT(); _TSLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1); _MARK_EXIT(); } while(0)
+    #define TSLOG2_OUT(string, p1, p2) do { _DOINCHK(); _CHK_MULTIOUT(); _TSLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2); _MARK_EXIT(); } while(0)
+    #define TSLOG3_OUT(string, p1, p2, p3) do { _DOINCHK(); _CHK_MULTIOUT(); _TSLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2, p3); _MARK_EXIT(); } while(0)
+    #define TSLOG4_OUT(string, p1, p2, p3, p4) do { _DOINCHK(); _CHK_MULTIOUT(); _TSLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2, p3, p4); _MARK_EXIT(); } while(0)
+    #define TSLOG5_OUT(string, p1, p2, p3, p4, p5) do { _DOINCHK(); _CHK_MULTIOUT(); _TSLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2, p3, p4, p5); _MARK_EXIT(); } while(0)
+
+    /** Leaving function with return value */
+    #define TSLOG0_RET(val, fmtstr) do { do { _DOINCHK(); _CHK_MULTIOUT(); _TSLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## fmtstr), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, val); _MARK_EXIT(); } while(0); return val;} while(0)
+    #define TSLOG1_RET(val, fmtstr, p1) do { do { _DOINCHK(); _CHK_MULTIOUT(); _TSLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## fmtstr), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, val, p1); _MARK_EXIT(); } while(0); return val;} while(0)
+    #define TSLOG2_RET(val, fmtstr, p1, p2) do { do { _DOINCHK(); _CHK_MULTIOUT(); _TSLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## fmtstr), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, val, p1, p2); _MARK_EXIT(); } while(0); return val;} while(0)
+    #define TSLOG3_RET(val, fmtstr, p1, p2, p3) do { do { _DOINCHK(); _CHK_MULTIOUT(); _TSLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## fmtstr), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, val, p1, p2, p3); _MARK_EXIT(); } while(0); return val;} while(0)
+    #define TSLOG4_RET(val, fmtstr, p1, p2, p3, p4) do { do { _DOINCHK(); _CHK_MULTIOUT(); _TSLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## fmtstr), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, val, p1, p2, p3, p4); _MARK_EXIT(); } while(0); return val;} while(0)
+    #define TSLOG5_RET(val, fmtstr, p1, p2, p3, p4, p5) do { do { _DOINCHK(); _CHK_MULTIOUT(); _TSLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## fmtstr), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, val, p1, p2, p3, p4, p5); _MARK_EXIT(); } while(0); return val;} while(0)
+
+    /** 
+     * General log lines 
+     * 
+     * @param level     This can be used as internal information 
+     *                  field, such as info, error, warning etc.
+     * @param string    Custom string
+     * @param p1 - p5   For multiple variables in same string.
+     */
+    #define TSLOG0(level, string) do { _DOINCHK(); _TSLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]%s " L ## string), _dc.iVis, level, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn); } while(0)
+    #define TSLOG1(level, string, p1) do { _DOINCHK(); _TSLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]%s " L ## string), _dc.iVis, level, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1); } while(0)
+    #define TSLOG2(level, string, p1, p2) do { _DOINCHK(); _TSLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]%s " L ## string), _dc.iVis, level, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2); } while(0)
+    #define TSLOG3(level, string, p1, p2, p3) do { _DOINCHK(); _TSLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]%s " L ## string), _dc.iVis, level, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2, p3); } while(0)
+    #define TSLOG4(level, string, p1, p2, p3, p4) do { _DOINCHK(); _TSLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]%s " L ## string), _dc.iVis, level, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2, p3, p4); } while(0)
+    #define TSLOG5(level, string, p1, p2, p3, p4, p5) do { _DOINCHK(); _TSLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]%s " L ## string), _dc.iVis, level, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2, p3, p4, p5); } while(0)
+
+    /** Error logging */
+    #define __TSLOG_ASSERT_DBG( _assertion ) do { if( _assertion ) { break; } TFileName file; file.Copy( _L8( __FILE__ ) );   _TSLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s Assert:%S:%d:" L ## #_assertion) , _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, &file, __LINE__ ); User::Invariant(); } while( 0 )
+    #define __TSLOG_TRACE_ASSERT_DBG(_assertion, _textToPrint, _panicCode)  do { if (_assertion) { break; } _TSLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s ASSERTION FAILED!!! %s file: %s, line: %s"), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, _textToPrint, __FILE__, __LINE__); User::Panic(_L("AssertionFailed"), _panicCode} while(0)
+    #define TSLOG_TRAPHANDLER() _TTsLogTrapHandler _traceTrapHandler; _traceTrapHandler.oldHandler = User::SetTrapHandler(&_traceTrapHandler)
+
+/*****************************************************************************
+ LOGGING MACROS - NO LOGGING
+*****************************************************************************/ 
+#else // _DEBUG
+
+    #define TSLOG_CONTEXT(_fn, _vis )
+    #define TSLOG_STATIC_CONTEXT(_fn, _vis, _thdId)
+
+    #define TSLOG_IN()
+    #define TSLOG0_IN(string)
+    #define TSLOG1_IN(string, p1)
+    #define TSLOG2_IN(string, p1, p2)
+    #define TSLOG3_IN(string, p1, p2, p3)
+    #define TSLOG4_IN(string, p1, p2, p3, p4)
+    #define TSLOG5_IN(string, p1, p2, p3, p4, p5)
+
+    #define TSLOG_OUT()
+    #define TSLOG0_OUT(string)
+    #define TSLOG1_OUT(string, p1)
+    #define TSLOG2_OUT(string, p1, p2)
+    #define TSLOG3_OUT(string, p1, p2, p3)
+    #define TSLOG4_OUT(string, p1, p2, p3, p4)
+    #define TSLOG5_OUT(string, p1, p2, p3, p4, p5)
+
+    #define TSLOG0_RET(val, fmtstr) return val
+    #define TSLOG1_RET(val, fmtstr, p1) return val
+    #define TSLOG2_RET(val, fmtstr, p1, p2) return val
+    #define TSLOG3_RET(val, fmtstr, p1, p2, p3) return val
+    #define TSLOG4_RET(val, fmtstr, p1, p2, p3, p4) return val
+    #define TSLOG5_RET(val, fmtstr, p1, p2, p3, p4, p5) return val
+
+    #define TSLOG0(level, string)
+    #define TSLOG1(level, string, p1)
+    #define TSLOG2(level, string, p1, p2)
+    #define TSLOG3(level, string, p1, p2, p3)
+    #define TSLOG4(level, string, p1, p2, p3, p4)
+    #define TSLOG5(level, string, p1, p2, p3, p4, p5)
+    
+    #define BIND_TRACE_TRAPHANDLER()
+    #define TRACE_DECL() TInt _iTraceThreadId
+    #define TRACE_FAST_CREATE(_thdId) _thdId++;
+    #define TRACE_CREATE()
+
+    #define __TSLOG_ASSERT_DBG(_assertion)
+    #define __TRACE_ASSERT_DBG(_assertion, _message, _panicCode )
+
+#endif // _DEBUG
+
+#endif      // TSLOGLOGUTILS_H
+            
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/taskswitcherui/trace/tslogutils.h	Tue Jan 26 11:48:23 2010 +0200
@@ -0,0 +1,211 @@
+/*
+* 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:  Logging behavior
+*
+*/
+
+
+#ifndef TSLOGUTILS_H
+#define TSLOGUTILS_H
+
+/**
+ * NOTE: This file contains the logic related to logging. Change only if you
+ * know what you're doing.
+ */
+
+
+
+
+
+
+
+
+
+
+#ifdef _DEBUG
+
+#include <e32debug.h>
+#include <e32std.h>
+
+static const TUint TSLOGERR   = 2;  /**< Used to create an error message */
+
+// These macros are real macros, that should be used. For temporary purposes, these
+// are left out and the logging is done by simple entry logging
+#define _TSLOG_UNCONTROLLED_INPUT_MSG  L"%s%d[%x:%x:%x]>%s UNCONTROLLED ENTRY!"
+#define _TSLOG_MULTIPLE_ENTRY_MSG      L"%s%d[%x:%x:%x]%s  ADDITIONAL ENTRY!"
+#define _TSLOG_UNCONTROLLER_EXIT_MSG   L"%s%d[%x:%x:%x]<%s UNCONTROLLED EXIT!"
+#define _TSLOG_MULTIPLE_EXIT_MSG       L"%s%d[%x:%x:%x]%s  ADDITIONAL EXIT!"
+#define _TSLOG_TRAP_HARNESS_ENTRY      L"_D%d[%x:%x:%x]TraceFramework: Entering trap harness"
+#define _TSLOG_TRAP_HARNESS_EXIT       L"_D%d[%x:%x:%x]TraceFramework: Exiting trap harness"
+#define _TSLOG_TRAP_HARNESS_LEAVE      L"_D%d[%x:%x:%x]TraceFramework: ---------- LEAVE OCCURRED !!! ---------- "
+#define _TSLOG_API_PREFIX              L"_A"
+#define _TSLOG_LOCAL_PREFIX            L"_L"
+
+/**
+* @file 
+* trace_utils.h contains definitions needed for advanced tracing features.
+* Tracing can be customized using the following compile time flags:
+* - <b>_DEBUG</b>
+*   - With this flag undefined, all traces are disabled
+* - <b>__KERNEL_MODE__</b>
+*   - if kernel mode flag is defined, kernel macro variants are used (no unicode or shared heap related stuff, faster)
+* - <b>DISABLE_SYNTAX_CHECK</b>
+*   - If this flag is defined, runtime syntax checking features are disabled from traces
+*/
+#ifndef DISABLE_SYNTAX_CHECK
+    #define _MARK_ENTRY() _dc.inOk=ETrue
+    #define _DOINCHK() _dc.DoInChk()
+    #define _CHK_MULTIIN() _dc.ChkMultiIn()
+    #define _CHK_MULTIOUT() _dc.ChkMultiOut()
+    #define _MARK_EXIT() _dc.outOk=ETrue
+#else
+    #define _MARK_ENTRY()
+    #define _DOINCHK()
+    #define _CHK_MULTIIN()
+    #define _CHK_MULTIOUT()
+    #define _MARK_EXIT()
+#endif // DISABLE_SYNTAX_CHECK
+    
+/** For tracing */
+#ifdef _TSLOG_RDEBUG
+    #define _IT(a) (TPtrC((const TText *)(a)))
+    #define _TSLOGPRINTER RDebug::Print        
+        
+/** For filedebug */
+#else   // _TSLOG_RDEBUG
+
+    /** Includes */
+    #include <e32base.h>
+    #include <e32std.h>
+    #include <e32def.h>
+    #include <e32svr.h>
+
+// both of headers defines KLogBufferSize
+#ifndef __COMMSDEBUGUTILITY_H__
+    #include <flogger.h>
+#endif
+
+    #define _IT(a) KTsLogPath, KTsLogFile, EFileLoggingModeAppend, (TPtrC((const TText *)(a)))    
+    #define _TSLOGPRINTER RFileLogger::WriteFormat    
+#endif // _TSLOG_RDEBUG    
+
+class _TTsLogContext
+    {
+    public:
+        _TTsLogContext(
+            const TText* _fn, 
+            const TUint _id, 
+            const TUint _vis, 
+            const TUint _addr, 
+            const TUint _thdId, 
+            const TUint _category=0 )
+            : 
+            iFn(_fn), 
+            iId(_id), 
+            iApi((TBool)_vis), 
+            iAddr(_addr), 
+            iThdId(_thdId), 
+            iVis((_vis == 0 ? (TText*)_TSLOG_API_PREFIX : (TText*)_TSLOG_LOCAL_PREFIX)),
+            iCategory(_category)            
+        #ifndef DISABLE_SYNTAX_CHECK
+            ,outOk(EFalse), inOk(EFalse)
+        #endif
+            {
+            }
+        ~_TTsLogContext() 
+            {
+            #ifndef DISABLE_SYNTAX_CHECK
+                do
+                    {                   
+                    DoInChk();
+                    if (!outOk)
+                        {
+                        _TSLOGPRINTER(_IT(_TSLOG_UNCONTROLLER_EXIT_MSG), iVis, iCategory, iId, iThdId, iAddr, iFn);
+                        }
+                    } while (0);
+            #endif // DISABLE_SYNTAX_CHECK
+            }
+
+        const TText* iFn;
+        const TUint iId;
+        const TText* iVis;
+        const TUint iAddr;
+        const TInt iThdId;
+        const TBool iApi;
+        const TUint iCategory;
+        
+        #ifndef DISABLE_SYNTAX_CHECK
+            inline void DoInChk()
+                {
+                if (!inOk)
+                    {
+                    _TSLOGPRINTER(_IT(_TSLOG_UNCONTROLLED_INPUT_MSG), iVis, iCategory, iId, iThdId, iAddr, iFn);
+                    inOk = ETrue;
+                    }
+                }
+                        
+            inline void ChkMultiIn()
+                {
+                if (inOk)
+                    {
+                    _TSLOGPRINTER(_IT(_TSLOG_MULTIPLE_ENTRY_MSG), iVis, iCategory, iId, iThdId, iAddr, iFn);                
+                    }
+                }
+    
+            inline void ChkMultiOut()
+                {
+                if (outOk)
+                    {           
+                    _TSLOGPRINTER(_IT(_TSLOG_MULTIPLE_EXIT_MSG), iVis, iCategory, iId, iThdId, iAddr, iFn);                                        
+                    }
+                }
+
+            TBool inOk;
+            TBool outOk;
+        #endif // DISABLE_SYNTAX_CHECK
+    };
+    
+class _TTsLogTrapHandler: public TTrapHandler
+    {
+    public:
+
+        _TTsLogTrapHandler(_TTsLogContext& _context) : _dc( _context ) 
+            {
+            RThread me;
+            iThdId = (TInt)me.Id();
+            }
+    	void Trap() 
+    	    {
+    	    _TSLOGPRINTER(_IT(_TSLOG_TRAP_HARNESS_ENTRY), 0, TSLOGERR, iThdId, this);
+    	    oldHandler->Trap();
+    	    } 
+    	void UnTrap()
+    	    {
+    	    _TSLOGPRINTER(_IT(_TSLOG_TRAP_HARNESS_EXIT), 0, TSLOGERR, iThdId, this);
+    	    oldHandler->UnTrap();
+    	    }	
+    	void Leave(TInt aValue)
+    	    {
+    	    _TSLOGPRINTER(_IT(_TSLOG_TRAP_HARNESS_LEAVE), 0, TSLOGERR, iThdId, this);
+    	    oldHandler->Leave(aValue);
+    	    }	
+    	TTrapHandler* oldHandler;
+    private:
+        _TTsLogContext& _dc;
+        TInt iThdId;
+    };
+    
+#endif // _DEBUG    
+
+#endif // TSLOGUTILS_H
--- a/taskswitcher/teleportui/group/bld.inf	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-/*
-* ============================================================================
-*  Name        : bld.inf
-*  Part of     : Huriganes / Teleport UI
-*  Description : Build info file
-*  Version     : %version: sa1spcx1#51 %
-*
-*  Copyright © 2008 Nokia.  All rights reserved.
-*  This material, including documentation and any related computer
-*  programs, is protected by copyright controlled by Nokia.  All
-*  rights are reserved.  Copying, including reproducing, storing,
-*  adapting or translating, any or all of this material requires the
-*  prior written consent of Nokia.  This material also contains
-*  confidential information which may not be disclosed to others
-*  without the prior written consent of Nokia.
-* ============================================================================
-*/
-
-#include <platform_paths.hrh>
-
-PRJ_EXPORTS
-// iby file
-../rom/hgteleport.iby             CORE_MW_LAYER_IBY_EXPORT_PATH(hgteleport.iby)
-../rom/hgteleportresources.iby    LANGUAGE_MW_LAYER_IBY_EXPORT_PATH(hgteleportresources.iby)
-
-// stub sis
-../sis/stubs/teleport_stub.sis                  /epoc32/data/z/system/install/teleport_stub.sis
-../sis/stubs/teleport_stub.sis                  /epoc32/release/winscw/udeb/z/system/install/teleport_stub.sis
-
-#include "../hgteleportappecom/group/bld.inf"
-#include "../hgteleportapp/group/bld.inf"
-
-PRJ_MMPFILES
--- a/taskswitcher/teleportui/hgteleportapp/data/hgteleport.rss	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,283 +0,0 @@
-/*
-* ============================================================================
-*  Name        : hgteleport.rss
-*  Part of     : Hg Teleport
-*  Description : Resource files for teleport app
-*  Version     : %version: sa1spcx1#27 %
-*
-*  Copyright © 2008 Nokia.  All rights reserved.
-*  This material, including documentation and any related computer
-*  programs, is protected by copyright controlled by Nokia.  All
-*  rights are reserved.  Copying, including reproducing, storing,
-*  adapting or translating, any or all of this material requires the
-*  prior written consent of Nokia.  This material also contains
-*  confidential information which may not be disclosed to others
-*  without the prior written consent of Nokia.
-* ============================================================================
-* 
-*/
-
-NAME HGTL
-
-#include <eikon.rh>
-#include <eikon.rsg>
-#include <avkon.rh>
-#include <avkon.rsg>
-#include <appinfo.rh>
-
-#include <avkon.loc>
-#include <taskswitcher.loc>
-
-#include "hgteleportcommands.hrh"
-
-// ---------------------------------------------------------
-//   
-//    Define the resource file signature 
-//    This resource should be empty.
-//
-// ---------------------------------------------------------
-//
-RESOURCE RSS_SIGNATURE { }
-
-// ---------------------------------------------------------
-//   
-//    Default Document Name
-//
-// ---------------------------------------------------------
-//
-RESOURCE TBUF r_default_document_name { buf=""; }
-
-// ---------------------------------------------------------
-//   
-//    Define default menu and CBA key.
-//
-// ---------------------------------------------------------
-//
-RESOURCE EIK_APP_INFO
-    {
-    menubar = r_hgteleport_menubar;
-    cba = r_hgteleport_cba_nontouch;
-    }
-
-// ---------------------------------------------------------
-//   
-//    CBA for non-touch.
-//
-// ---------------------------------------------------------
-//
-RESOURCE CBA r_hgteleport_cba_nontouch
-	{
-	flags = 0;
-	buttons = 
-    	{
-    	CBA_BUTTON {id=EAknSoftkeySelect; txt=text_softkey_select;}, // left softkey
-    	CBA_BUTTON {id=EAknSoftkeyBack; txt=text_softkey_back;}, // right softkey
-    	CBA_BUTTON {id=EAknSoftkeySelect; txt=text_softkey_select;} // middle softkey, same as lsk, label is not shown in touch
-    	};
-	}
-
-// ---------------------------------------------------------
-//   
-//    CBA for touch.
-//
-// ---------------------------------------------------------
-//
-RESOURCE CBA r_hgteleport_cba_touch
-	{
-	flags = 0;
-	buttons = 
-    	{
-    	CBA_BUTTON {id=EAknSoftkeySelect; txt=text_softkey_empty;}, // left softkey, no label
-    	CBA_BUTTON {id=EAknSoftkeyBack; txt=text_softkey_back;}, // right softkey
-    	CBA_BUTTON {id=EAknSoftkeySelect; txt=text_softkey_select;} // middle softkey, same as lsk, label is not shown in touch
-    	};
-	}
-
-
-// ---------------------------------------------------------
-//   
-//   r_hgteleport_menubar
-//   Menubar for hgteleport
-//
-// ---------------------------------------------------------
-//
-RESOURCE MENU_BAR r_hgteleport_menubar
-    {
-    titles =
-        {
-        MENU_TITLE {menu_pane = r_hgteleport_menu;}
-        };
-    }
-
-
-// ---------------------------------------------------------
-//   
-//   r_hgteleport_menu
-//   Menu for "Options"
-//
-// ---------------------------------------------------------
-//
-RESOURCE MENU_PANE r_hgteleport_menu
-    {
-    items = 
-        {
-        MENU_ITEM { command = EHgTeleportCmdHelp; 	 txt = qtn_options_help; },
-        MENU_ITEM { command = EAknSoftkeyExit;   	txt = text_softkey_exit; }
-        };
-    }
-
-// ---------------------------------------------------------
-//   
-//   r_hg_panel_teleport_name
-//   teleport panel name
-//
-// ---------------------------------------------------------
-//
-RESOURCE TBUF r_hg_panel_teleport_name
-    {
-    buf="Task Switcher";
-    }
-
-// ---------------------------------------------------------
-//   
-//   r_hg_teleport_message_dialog_okcancel
-//   message dialog with ok and cancel softkeys labels
-//
-// ---------------------------------------------------------
-//
-RESOURCE DIALOG r_hg_teleport_message_dialog_okcancel
-    {
-	flags = EGeneralQueryFlags;
-	buttons = R_AVKON_SOFTKEYS_OK_CANCEL;
-	items =
-	    {
-		DLG_LINE
-		    {
-			type = EAknCtPopupHeadingPane;
-			id = EAknMessageQueryHeaderId;
-			control = AVKON_HEADING
-			    {
-			    headinglayout = 0;			
-			    };
-		    },
-		DLG_LINE
-	    	{
-			type = EAknCtMessageQuery;
-			id = EAknMessageQueryContentId;
-			control = AVKON_MESSAGE_QUERY { };
-		    }
-	    };
-    }
-
-// ---------------------------------------------------------
-//   
-//   r_hg_teleport_message_dialog_yesno
-//   message dialog with yes and no softkeys labels
-//
-// ---------------------------------------------------------
-//
-RESOURCE DIALOG r_hg_teleport_message_dialog_yesno
-    {
-	flags = EGeneralQueryFlags;
-	buttons = R_AVKON_SOFTKEYS_YES_NO;
-	items =
-	    {
-		DLG_LINE
-		    {
-			type = EAknCtPopupHeadingPane;
-			id = EAknMessageQueryHeaderId;
-			control = AVKON_HEADING
-			    {
-			    headinglayout = 0;			
-			    };
-		    },
-		DLG_LINE
-	    	{
-			type = EAknCtMessageQuery;
-			id = EAknMessageQueryContentId;
-			control = AVKON_MESSAGE_QUERY { };
-		    }
-	    };
-    }
-
-// ---------------------------------------------------------
-//   
-//   r_hg_teleport_message_dialog_ok
-//   message dialog with ok softkey label
-//
-// ---------------------------------------------------------
-//
-RESOURCE DIALOG r_hg_teleport_message_dialog_ok
-    {
-	flags = EGeneralQueryFlags;
-	buttons = R_AVKON_SOFTKEYS_OK_EMPTY;
-	items =
-	    {
-		DLG_LINE
-		    {
-			type = EAknCtPopupHeadingPane;
-			id = EAknMessageQueryHeaderId;
-			control = AVKON_HEADING
-			    {
-			    headinglayout = 0;			
-			    };
-		    },
-		DLG_LINE
-	    	{
-			type = EAknCtMessageQuery;
-			id = EAknMessageQueryContentId;
-			control = AVKON_MESSAGE_QUERY { };
-		    }
-	    };
-    }
-
-// ---------------------------------------------------------
-//   
-//   r_hg_teleport_fsw_confirm_close_query
-//   shown when Clear key is pressed in FSW
-//
-// ---------------------------------------------------------
-//
-RESOURCE DIALOG r_hg_teleport_fsw_confirm_close_query
-    {
-    flags = EGeneralQueryFlags;
-    buttons = R_AVKON_SOFTKEYS_YES_NO;
-    items =
-        {
-        DLG_LINE
-            {
-            type = EAknCtQuery;
-            id = EGeneralQuery;
-            control = AVKON_CONFIRMATION_QUERY
-                {
-                layout = EConfirmationQueryLayout;
-                };
-            }
-        };
-    }
-
-
-
-RESOURCE LOCALISABLE_APP_INFO r_localisable_app_info
-	{
-	short_caption = "Task Switcher";
-	caption_and_icon =
-		{
-		CAPTION_AND_ICON_INFO 
-			{
-			caption="Task Switcher";
-			}
-		};
-	}
-
-
-RESOURCE TBUF r_teleport_title { buf = "Task Switcher"; }
-
-RESOURCE TBUF r_teleport_fsw_activate { buf = qtn_task_switcher_popup_open_app; }
-RESOURCE TBUF r_teleport_fsw_close { buf = qtn_task_switcher_popup_close_app; }
-RESOURCE TBUF r_teleport_fsw_close_all { buf = qtn_task_switcher_popup_close_all; }
-RESOURCE TBUF r_teleport_fsw_confirm_close { buf = qtn_memlo_confirm_close; }
-
-RESOURCE TBUF r_task_switcher_heading_applications { buf = qtn_task_switcher_heading_applications; }
-
-// end of file
--- a/taskswitcher/teleportui/hgteleportapp/data/hgteleport_reg.rss	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-/*
-* ============================================================================
-*  Name        : hgteleport_reg.rss
-*  Part of     : Hg Teleport
-*  Description : hgteleport application's registration resource file 
-*  Version     : %version: 3 %
-*
-*  Copyright © 2008-2008 Nokia.  All rights reserved.
-*  This material, including documentation and any related computer
-*  programs, is protected by copyright controlled by Nokia.  All
-*  rights are reserved.  Copying, including reproducing, storing,
-*  adapting or translating, any or all of this material requires the
-*  prior written consent of Nokia.  This material also contains
-*  confidential information which may not be disclosed to others
-*  without the prior written consent of Nokia.
-* ============================================================================
-* Template version: 4.1.1
-*/
-
-#include <appinfo.rh>
-#include <hgteleport.rsg>
-
-UID2 KUidAppRegistrationResourceFile
-UID3 0x20016BF0
-
-RESOURCE APP_REGISTRATION_INFO 
-	{
-	app_file="hgteleport";
-	localisable_resource_file="\\resource\\apps\\hgteleport";
-	localisable_resource_id = R_LOCALISABLE_APP_INFO;
-	}
--- a/taskswitcher/teleportui/hgteleportapp/group/backup_registration.xml	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-<?xml version="1.0" standalone="yes"?>
-<backup_registration version="1.0">
-
-  <passive_backup>
-    <!-- backup all private data -->
-    <include_directory name = "\" />
-  </passive_backup>
-  
-  <!-- backup executables and resources from SIS files -->
-  <system_backup />
-
-  <!-- backup cenrep data -->  
-  <proxy_data_manager sid = "0x10202BE9" />
-
-  <!-- backup sqlite data -->
-  <proxy_data_manager sid = "0x10281E17" />
-  
-  <restore requires_reboot = "no"/>
-
-</backup_registration>
--- a/taskswitcher/teleportui/hgteleportapp/group/bld.inf	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-/*
-* ============================================================================
-*  Name        : bld.inf
-*  Part of     : Hg Teleport
-*  Description : Build information file for hgteleport
-*  Version     : %version: sa1spcx1#32 %
-*
-*  Copyright © 2008 Nokia.  All rights reserved.
-*  This material, including documentation and any related computer
-*  programs, is protected by copyright controlled by Nokia.  All
-*  rights are reserved.  Copying, including reproducing, storing,
-*  adapting or translating, any or all of this material requires the
-*  prior written consent of Nokia.  This material also contains
-*  confidential information which may not be disclosed to others
-*  without the prior written consent of Nokia.
-* ============================================================================
-*
-*/
-
-#include <platform_paths.hrh>
-
-PRJ_EXPORTS
-../loc/taskswitcher.loc       MW_LAYER_LOC_EXPORT_PATH(taskswitcher.loc)
-backup_registration.xml     /epoc32/data/z/private/20016BF0/backup_registration.xml
-backup_registration.xml     /epoc32/release/winscw/udeb/z/private/20016BF0/backup_registration.xml
-../inc/hgteleportuid.hrh    |../../inc/hgteleportuid.hrh
-
-PRJ_MMPFILES
-hgteleportapp.mmp
-
-PRJ_TESTMMPFILES
--- a/taskswitcher/teleportui/hgteleportapp/group/hgteleportapp.mmp	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,106 +0,0 @@
-/*
-* ============================================================================
-*  Name        : hgteleportapp.mmp
-*  Part of     : Hg Teleport
-*  Description : mmp file for teleport application
-*  Version     : %version: sa1spcx1#24 %
-*
-*  Copyright © 2008 Nokia.  All rights reserved.
-*  This material, including documentation and any related computer
-*  programs, is protected by copyright controlled by Nokia.  All
-*  rights are reserved.  Copying, including reproducing, storing,
-*  adapting or translating, any or all of this material requires the
-*  prior written consent of Nokia.  This material also contains
-*  confidential information which may not be disclosed to others
-*  without the prior written consent of Nokia.
-* ============================================================================
-*
-*/
-
-#include <data_caging_paths.hrh>
-#include <platform_paths.hrh>
-#include "../inc/hgteleportuid.hrh"
-
-EPOCHEAPSIZE    0x100000 0xa00000  // 1 Mb - 10 Mb
-EPOCSTACKSIZE   0x5000 // 20KB
-
-TARGET          hgteleport.exe
-TARGETTYPE      exe
-UID             0x100039CE KHgTeleportAppUidValue
-CAPABILITY      CAP_APPLICATION NetworkControl PowerMgmt
-VENDORID        VID_DEFAULT
-
-SOURCEPATH      ../src
-SOURCE          hgteleportappui.cpp
-SOURCE          hgteleportapplication.cpp
-SOURCE          hgteleportdocument.cpp
-SOURCE          hgteleport.cpp
-SOURCE          hgteleportappview.cpp
-SOURCE          hgteleportfastswaparea.cpp
-SOURCE          hgteleportfastswapgrid.cpp
-SOURCE          hgteleportdevicestate.cpp
-SOURCE          hgteleporteventcontroler.cpp
-SOURCE          hgteleportphysicsengine.cpp
-SOURCE          hgteleportphysics.cpp
-
-USERINCLUDE     ../inc
-USERINCLUDE     ../../inc
-USERINCLUDE     ../../trace
-USERINCLUDE     ../../../contextengine/inc
-
-APP_LAYER_SYSTEMINCLUDE
-
-
-
-LIBRARY         euser.lib
-LIBRARY         apparc.lib
-LIBRARY         cone.lib
-LIBRARY         eikcore.lib
-LIBRARY         avkon.lib
-LIBRARY         apgrfx.lib
-LIBRARY         ws32.lib
-LIBRARY         aknskins.lib
-LIBRARY         egul.lib
-LIBRARY         eikcoctl.lib
-LIBRARY         fbscli.lib
-LIBRARY         aknskinsrv.lib
-LIBRARY		    commonengine.lib
-LIBRARY		    efsrv.lib
-LIBRARY		    estor.lib
-LIBRARY         aknnotify.lib
-LIBRARY         hlplch.lib
-LIBRARY         aknicon.lib
-LIBRARY         bitgdi.lib
-LIBRARY         gdi.lib
-LIBRARY         cdlengine.lib
-LIBRARY         aknlayout2.lib
-LIBRARY         aknlayout2scalable.lib
-LIBRARY         oommonitor.lib
-LIBRARY         hal.lib
-LIBRARY         gfxtrans.lib
-LIBRARY         akntransitionutils.lib
-LIBRARY         bafl.lib
-LIBRARY         akntouchgesturefw.lib
-LIBRARY         aknphysics.lib
-LIBRARY         touchfeedback.lib
-
-
-DEBUGLIBRARY    flogger.lib
-
-
-LIBRARY         hgcontextservicesutils.lib
-LIBRARY         hgfswclient.lib
-LIBRARY         hgfswutils.lib
-
-SOURCEPATH      ../data
-START RESOURCE  hgteleport.rss
-HEADER
-TARGETPATH      APP_RESOURCE_DIR
-LANGUAGE_IDS
-END
-
-SOURCEPATH      ../data
-START RESOURCE  hgteleport_reg.rss
-DEPENDS hgteleport.rsg
-TARGETPATH      /private/10003a3f/apps
-END
--- a/taskswitcher/teleportui/hgteleportapp/inc/hgteleportapplication.h	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-/*
- * ============================================================================
- *  Name        : hgteleportapplication.h
- *  Part of     : Hg Teleport
- *  Description : Application class
- *  Version     : %version: 4 %
- *
- *  Copyright © 2008 Nokia.  All rights reserved.
- *  This material, including documentation and any related computer
- *  programs, is protected by copyright controlled by Nokia.  All
- *  rights are reserved.  Copying, including reproducing, storing,
- *  adapting or translating, any or all of this material requires the
- *  prior written consent of Nokia.  This material also contains
- *  confidential information which may not be disclosed to others
- *  without the prior written consent of Nokia.
- * ============================================================================
- * Template version: 4.2
- */
-
-#ifndef HGTELEPORTAPPLICATION_H
-#define HGTELEPORTAPPLICATION_H
-
-#include <e32base.h> 
-#include <aknapp.h>
-
-class CHgTeleportApplication : public CAknApplication
-    {
-public:
-    // from CAknApplication
-    /**
-     * Returns the application DLL UID value
-     *
-     * @since S60 v5.0
-     * @return the UID of this Application/Dll
-     */
-    TUid AppDllUid( ) const;
-
-protected:
-    // from CAknApplication
-    /**
-     * Create a CApaDocument object and return a pointer to it
-     *
-     * @since S60 v5.0
-     * a pointer to the created document
-     */
-    CApaDocument* CreateDocumentL( );
-    };
-
-#endif // HGTELEPORTAPPLICATION_H
--- a/taskswitcher/teleportui/hgteleportapp/inc/hgteleportapplogging.h	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-/*
-* ============================================================================
-*  Name        : hgteleportapplogging.h
-*  Part of     : Classic UI / Teleport
-*  Description : Defines logs for hgteleportapp
-*  Version     : %version:  1 % 
-*
-*  Copyright (c) 2009 Nokia.  All rights reserved.
-*  This material, including documentation and any related computer
-*  programs, is protected by copyright controlled by Nokia.  All
-*  rights are reserved.  Copying, including reproducing, storing,
-*  adapting or translating, any or all of this material requires the
-*  prior written consent of Nokia.  This material also contains
-*  confidential information which may not be disclosed to others
-*  without the prior written consent of Nokia.
-* ============================================================================
-* Template version: 4.1.1
-*/
-
-#ifdef _DEBUG
-#include "../inc/hgteleportuid.hrh"
-_LIT( KHgLogFile, "hgteleportapp.txt" );
-_LIT( KHgLogPath, "teleport" );
-#define _HGLOG_LOG_COMPONENT_ID KHgTeleportAppUidValue
-
-#endif
-#include "hglogging.h"
--- a/taskswitcher/teleportui/hgteleportapp/inc/hgteleportappui.h	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,165 +0,0 @@
-/*
- * ============================================================================
- *  Name        : hgteleportappui.h
- *  Part of     : Hg Teleport
- *  Description : appui
- *  Version     : %version: sa1spcx1#26 %
- *
- *  Copyright © 2008 Nokia.  All rights reserved.
- *  This material, including documentation and any related computer
- *  programs, is protected by copyright controlled by Nokia.  All
- *  rights are reserved.  Copying, including reproducing, storing,
- *  adapting or translating, any or all of this material requires the
- *  prior written consent of Nokia.  This material also contains
- *  confidential information which may not be disclosed to others
- *  without the prior written consent of Nokia.
- * ============================================================================
- *
- */
-
-#ifndef HGTELEPORTAPPUI_H
-#define HGTELEPORTAPPUI_H
-
-#include <e32base.h> 
-#include <aknappui.h>
-
-#include <gfxtranseffect/gfxtranseffect.h>
-#include <akntransitionutils.h>
-
-#include "hgproplistener.h"
-#include "hgcenreplistener.h"
-
-// FORWARD DECLARATIONS
-class CHgTeleportAppView;
-class CHgActionUtility;
-class CHgTeleportDeviceState;
-
-/**
- * CHgTeleportAppUi
- * Appui for hg teleport app
- */
-class CHgTeleportAppUi : public CAknAppUi, 
-                         public MHgPropertyChangeObserver,
-                         public MHgCenrepChangeObserver,
-                         public MGfxTransEffectObserver
-    {
-
-public:
-    /**
-     * Perform the second phase construction of a CHgTeleportAppUi object
-     * this needs to be public due to the way the framework constructs the AppUi
-     */
-    void ConstructL();
-
-    /**
-     * Perform the first phase of two phase construction.
-     * This needs to be public due to the way the framework constructs the AppUi
-     */
-    CHgTeleportAppUi();
-
-    /**
-     * Destroy the object and release all memory objects
-     */
-    ~CHgTeleportAppUi();
-
-public: //effects
-    /**
-     * @return value of theme effects enabled flag
-     */
-    TBool EffectsEnabled() const;
-    
-    /**
-     * Function start transition  
-     */
-    void StartTransion( TUint aTransitionType );
-    
-    /**
-     * from MGfxTransEffectObserver
-     */
-    void TransitionFinished(const CCoeControl* aControl, TUint aAction);
-    
-    void MoveAppToForeground( TUint aTransitionType );
-    void MoveAppToBackground( TUint aTransitionType );
-    
-public:
-    /**
-     * From MHgCenrepChangeObserver
-     */
-    void CenrepChanged( TUint32 aKey, TInt aNewValue );
-    
-
-private:
-
-    // From MHgPropertyChangeObserver
-    void PropertyChanged( TUid aCategory, TUint aKey );
-
-    // From CEikAppUi
-    void HandleResourceChangeL( TInt aType );
-    void HandleForegroundEventL( TBool aForeground );
-    void HandleCommandL( TInt aCommand );
-    
-    void StartTransition( TUint aTranstionId,
-                          TBool aVisibility,
-                          TBool aLayers, 
-                          TUint aSubCom );
-
-private: // New functions
-    
-    /**
-     * Called from HandleForegroundEventL if the app came to foreground.
-     */
-    void HandleSwitchToForegroundEvent();
-    
-    /**
-     * Called from HandleForegroundEventL if the app went to background.
-     */
-    void HandleSwitchToBackgroundEvent();
-
-    /**
-     * Sets P&S property which is used to monitor and set Teleport to 
-     * background/foreground and short/long app key press.
-     * 
-     * @param aValue Property value. 
-     */
-    void SetTeleportStateProperty( TInt aValue );
-    
-    /**
-     * Sends request for close some 
-     * other apps to free memory for 
-     * teleport app
-     */
-    void FreeMemoryRequest();
-
-    static TInt GoToBackgroundTimerCallback( TAny* aParam );
-
-private:
-
-    // Teleport application view, owned
-    CHgTeleportAppView* iAppView;
-    
-    // Listener for app key long press P&S, owned
-    CHgPropertyListener* iPropListener;
-    
-    // Tells if Teleport is in foreground or in background
-    TBool iForeground;
-    
-    // Application arch task which refers to our own app
-    TApaTask iApplicationTask;
-
-    // Device state
-    CHgTeleportDeviceState* iDeviceState;
-
-    // Buffer to keeping some memory allocation while being in background.    
-    TUint8* iMemAllocBuf;
-
-    CPeriodic* iGoToBackgroundTimer;
-    
-    TBool iEffectsEnabled;
-    
-    /**
-     * Cenrep listener for the tfxserver enabled/disabled key.
-     */    
-    CHgCenrepListener* iThemeEffectsEnabledWatcher;
-    };
-
-#endif // HGTELEPORTAPPUI_H
--- a/taskswitcher/teleportui/hgteleportapp/inc/hgteleportappview.h	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,250 +0,0 @@
-/*
- * ============================================================================
- *  Name        : hgteleportappview.h
- *  Part of     : Hg Teleport
- *  Description : appui
- *  Version     : %version: sa1spcx1#32 %
- *
- *  Copyright © 2008 Nokia.  All rights reserved.
- *  This material, including documentation and any related computer
- *  programs, is protected by copyright controlled by Nokia.  All
- *  rights are reserved.  Copying, including reproducing, storing,
- *  adapting or translating, any or all of this material requires the
- *  prior written consent of Nokia.  This material also contains
- *  confidential information which may not be disclosed to others
- *  without the prior written consent of Nokia.
- * ============================================================================
- *
- */
-
-#ifndef HGTELEPORTAPPVIEW_H
-#define HGTELEPORTAPPVIEW_H
-
-#include <e32base.h> 
-#include <coecntrl.h>
-#include <AknPopupFader.h>
-#include "hgteleportdevicestate.h"
-#include "hgteleportdatachangeobserver.h"
-#include "hgteleporteventcontrolerobserver.h"
-
-// FORWARD DECLARATIONS
-class CAknsFrameBackgroundControlContext;
-class CHgTeleportFastSwapArea;
-class CHgTeleportDialog;
-class CAknPopupHeadingPane;
-class CHgTeleportEventControler;
-
-/**
- * Teleport applicatio view class.
- */
-class CHgTeleportAppView : public CCoeControl, public MCoeControlObserver,
-        public MHgDeviceStateObserver,
-        public MAknFadedComponent,
-        public MHgTeleportDataChangeObserver,
-        public MHgTeleportEventControlerObserver
-    {
-public:
-
-    /**
-     * Two-phase constructor.
-     * 
-     * @param aRect Area where view should draw itself.
-     */
-    static CHgTeleportAppView* NewL(const TRect& aRect,
-            CHgTeleportDeviceState& aDeviceState);
-
-    /**
-     * @copydoc NewL
-     */
-    static CHgTeleportAppView* NewLC(const TRect& aRect,
-            CHgTeleportDeviceState& aDeviceState);
-
-    /**
-     * Destructor.
-     */
-    ~CHgTeleportAppView();
-
-    /**
-     * Called from appui if the app came to foreground.
-     */
-    void HandleSwitchToForegroundEvent();
-    
-    /**
-     * Called from appui if the app went to background.
-     */
-    void HandleSwitchToBackgroundEvent();
-
-    /**
-     * From CCoeControl      Method handling the pointer events while the fsw is used.
-     *
-     * @param aPointerEvent  Information about the event.
-     */
-    void HandlePointerEventL( const TPointerEvent &aPointerEvent );
-
-public:
-    // from CCoeControl
-    void Draw( const TRect& aRect ) const;
-    TTypeUid::Ptr MopSupplyObject( TTypeUid aId );
-    TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType );
-    TInt CountComponentControls() const;
-    CCoeControl* ComponentControl(TInt aIndex) const;
-    void SizeChanged();
-    
-    //Own
-    /*
-     * Forward app key handling to fasswaparea control.
-     */
-    void HandleAppKey(TInt aType);
-
-protected:
-    // from MCoeControlObserver
-    void HandleControlEventL( CCoeControl* aControl, TCoeEvent aEventType );
-
-    // from MHgDeviceStateObserver
-    void HandleDeviceStateChanged( TChangeType aChangeType );
-
-protected: // from MAknFadedComponent
-    TInt CountFadedComponents();
-    CCoeControl* FadedComponent( TInt aIndex );
-
-protected: // from MHgCenrepChangeObserver
-    void CenrepChanged( TUint32 aKey, TInt aNewValue );
-
-protected: // from MHgTeleportDataChangeObserver
-    void DataChanged( CCoeControl* aWhere, TInt aNewCount );
-
-private:
-
-    /**
-     * @copydoc NewL
-     */
-    void ConstructL( const TRect& aRect );
-
-    /**
-     * C++ constructor.
-     */
-    CHgTeleportAppView( CHgTeleportDeviceState& aDeviceState );
-
-    /**
-     * Updates the internal state for currently focused control.
-     * @param   aNewFocusedControl  ptr to new focused control, ownership not taken
-     */    
-    void ChangeFocus( CCoeControl* aNewFocusedControl );
-    
-    /**
-     * Creates components.
-     */
-    void CreateControlsL();
-    
-    /**
-     * Appends component rects to the given array.
-     * @param   aRects  array
-     */
-    void GetRects( RArray<TRect>& aRects );
-    
-    /**
-     * Adds the ptr to the list of dialog pointers.
-     * @param   aDlg    dialog ptr, ownership not taken
-     */
-    void AddDlgSelfPtrL( CHgTeleportDialog* aDlg );
-    
-    /**
-     * Handles key event according to the portrait-style (vertical) layout.
-     */
-    TKeyResponse OfferKeyEventPortraitStyleL( const TKeyEvent& aKeyEvent, TEventCode aType);
-
-    /**
-     * Calculates and returns the following:
-     *   - the rectangle for main_tport_pane
-     *   - the outer rectangle for the frame
-     *   - the inner rectangle for the frame
-     */
-    void UpdatePopupRects(  );
-
-    /**
-     * Updates the text in the applications and suggestions heading panes.
-     */
-    void UpdateHeadingsL();
-    
-    /**
-     * Disables transition animations for teleport app.
-     * (the automatic effects that are applied when coming/leaving foreground)
-     */
-    void DisableAppSwitchEffects();
-    
-    
-public://From MHgTeleportEventControlerObserver
-    /**
-     * Declare drag gesture handling.
-     * @param aOffset - drag distance
-     */
-    virtual void MoveOffset(const TPoint& aOffset);
-    
-    /**
-     * Declare tap gesture handling.
-     * @param aPoint - tap position
-     */
-    virtual void TapL(const TPoint& aPoint);
-    
-    /**
-     * Declare long tap gesture handling.
-     * @param aPoint - tap position
-     */
-    virtual void LongTapL(const TPoint& aPoint);
-    
-    /**
-     * 
-     */
-    virtual void Drag(
-        const AknTouchGestureFw::MAknTouchGestureFwDragEvent& aEvent);
-    
-    /**
-     * Declare animation stop handling
-     */
-    virtual void Stop();
-    
-    /**
-     * Declare getter for view position
-     */
-    virtual TPoint ViewPos() const;
-        
-private: // Data
-
-    // Ref to container for commonly used instances
-    CHgTeleportDeviceState& iDeviceState;
-
-    // Background context, owned
-    CAknsFrameBackgroundControlContext* iBgContext;
-    
-    // Fast Swap area, owned
-    CHgTeleportFastSwapArea* iFastSwapArea;
-
-    /**
-     * Heading pane, own
-     */
-    CAknPopupHeadingPane* iAppsHeading;
-
-    /**
-     * Currently focused control, not own
-     */
-    CCoeControl* iFocused;
-    
-    /**
-     * Rectangle of the control.
-     */
-    TRect iViewRect;
-    
-    /**
-     * Popup fader instance.
-     */
-    TAknPopupFader iPopupFader;
-    
-    /**
-     * Pointer for background image, owned
-     */
-    TRect iBgContextOuterRect;
-    TRect iBgContextInnerRect;
-    CHgTeleportEventControler* iEvtHandler; //own
-    };
-
-#endif // HGTELEPORTAPPVIEW_H
--- a/taskswitcher/teleportui/hgteleportapp/inc/hgteleportcommands.hrh	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-/*
-* ==============================================================================
-*  Name        : hgteleportcommands.hrh
-*  Part of     : Teleport
-*  Description : command ids
-*  Version     : %version: 1 %
-*
-*  Copyright (c) 2007 Nokia Corporation.
-*  This material, including documentation and any related
-*  computer programs, is protected by copyright controlled by
-*  Nokia Corporation. All rights are reserved. Copying,
-*  including reproducing, storing, adapting or translating, any
-*  or all of this material requires the prior written consent of
-*  Nokia Corporation. This material also contains confidential
-*  information which may not be disclosed to others without the
-*  prior written consent of Nokia Corporation.
-* ==============================================================================
-*/
-
-#ifndef __TELEPORTCOMMANDS_HRH__
-#define __TELEPORTCOMMANDS_HRH__
-
-enum
-	{
-	EHgTeleportCmdBase = 20000,
-	EHgTeleportCmdHelp
-	};
-
-#endif
--- a/taskswitcher/teleportui/hgteleportapp/inc/hgteleportdatachangeobserver.h	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-/*
- * ============================================================================
- *  Name        : hgteleportdatachangeinterface.h
- *  Part of     : Hg Teleport engine
- *  Description :
- *  Version     : %version: 1 %
- *
- *  Copyright © 2008 Nokia.  All rights reserved.
- *  This material, including documentation and any related computer
- *  programs, is protected by copyright controlled by Nokia.  All
- *  rights are reserved.  Copying, including reproducing, storing,
- *  adapting or translating, any or all of this material requires the
- *  prior written consent of Nokia.  This material also contains
- *  confidential information which may not be disclosed to others
- *  without the prior written consent of Nokia.
- * ============================================================================
- *
- */
- 
-#ifndef HGTELEPORTDATACHANGEINTERFACE_H
-#define HGTELEPORTDATACHANGEINTERFACE_H
-
-#include <e32base.h>
-
-class CCoeControl;
-
-/**
- * Callback mixin class to move the whole app to background or foreground.
- */
-class MHgTeleportDataChangeObserver
-    {
-public:
-    virtual void DataChanged( CCoeControl* aWhere, TInt aNewCount ) = 0;
-    };
-
-#endif // HGTELEPORTDATACHANGEINTERFACE_H
--- a/taskswitcher/teleportui/hgteleportapp/inc/hgteleportdevicestate.h	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,228 +0,0 @@
-/*
- * ============================================================================
- *  Name        : hgteleportdevicestate.h
- *  Part of     : Hg Teleport
- *  Description : Device state (touch mode, screen orientation) handler
- *  Version     : %version: sa1spcx1#11 %
- *
- *  Copyright © 2008 Nokia.  All rights reserved.
- *  This material, including documentation and any related computer
- *  programs, is protected by copyright controlled by Nokia.  All
- *  rights are reserved.  Copying, including reproducing, storing,
- *  adapting or translating, any or all of this material requires the
- *  prior written consent of Nokia.  This material also contains
- *  confidential information which may not be disclosed to others
- *  without the prior written consent of Nokia.
- * ============================================================================
- * Template version: 4.2
- */
-
-#ifndef HGTELEPORTDEVICESTATE_H_
-#define HGTELEPORTDEVICESTATE_H_
-
-#include <e32base.h>
-#include "hgteleportappui.h"
-#include "hgproplistener.h"
-
-/**
- * Interface for getting notifications about screen orientation
- * and/or touch state etc. changes.
- */
-class MHgDeviceStateObserver
-    {
-public:
-    /**
-     * Type of change.
-     */
-    enum TChangeType
-        {
-        // screen orientation (portrait <=> landscape) has changed
-        EOrientation = 0x01,
-        // touch enabled/disabled status has changed
-        ETouchState = 0x02,
-        // skin has changed
-        ESkin = 0x04,
-        // input device mode change
-        EDeviceType = 0x08,
-        // all of the above
-        EAny = 0xFF
-        };
-
-    /**
-     * Called when a change, to which the observer is registered,
-     * has happened.
-     */
-    virtual void HandleDeviceStateChanged( TChangeType aChangeType ) = 0;
-    };
-
-/**
- * Class for keeping track of screen orientation and touch enabled/disabled changes.
- */
-class CHgTeleportDeviceState :
-    public CBase,
-    public MHgPropertyChangeObserver
-    {
-public:
-    /**
-     * Enumeration for TouchState().
-     */
-    enum TTouchState
-        {
-        ETouchEnabled,
-        ETouchDisabled
-        };
-
-    /**
-     * Enumeration for Orientation().
-     */
-    enum TOrientation
-        {
-        EPortrait,
-        ELandscape
-        };
-
-    /**
-     * Enumeration for DeviceType().
-     */
-    enum TDeviceType
-        {
-        EHybrid = 0,
-        EFullTouch  = 1
-        };
-
-    /**
-     * Creates a new instance.
-     */
-    static CHgTeleportDeviceState* NewL();
-
-    /**
-     * Destructor.
-     */
-    ~CHgTeleportDeviceState();
-
-    /**
-     * Returns the current state of touch awareness.
-     */
-    TTouchState TouchState() const;
-
-    /**
-     * Returns the current screen orientation.
-     */
-    TOrientation Orientation() const;
-
-    /**
-     * Returns the current device input type.
-     */
-    TDeviceType DeviceType() const;
-
-    /**
-     * Registers an observer.
-     * @param   aObserver   ref to observer
-     * (same observer can be added several times with different mask if needed)
-     * @param   aMask       bitmask composed from TChangeType values
-     * (when to notify the observer)
-     */
-    void AddObserverL( MHgDeviceStateObserver& aObserver, TInt aMask );
-
-    /**
-     * Deregisters the given observer.
-     * @param   aObserver   ref to observer
-     */
-    void RemoveObserver( MHgDeviceStateObserver& aObserver );
-
-    /**
-     * Called from appui.
-     */
-    void HandleResourceChange( TInt aType );
-    
-    //From MHgPropertyChangeObserver
-public:
-    /**
-     * Observer interface for getting notifications about a P&S property change.
-     */
-	virtual void PropertyChanged( TUid aCategory, TUint aKey );
-private:
-    /**
-     * Constructor.
-     */
-    CHgTeleportDeviceState();
-    
-    /**
-     * Performs 2nd phase construction.
-     */
-    void ConstructL();
-
-    /**
-     * Checks if touch is enabled or not and performs
-     * appropriate actions.
-     */
-    void CheckTouchState();
-
-    /**
-     * Checks the screen orientation and performs
-     * appropriate actions.
-     */
-    void CheckOrientation();
-    
-    /**
-     * Checks the device input type.
-     */
-    void CheckDeviceType();
-    
-    /**
-     * Notifies all observers that are registered for the given type.
-     */
-    void NotifyObservers( MHgDeviceStateObserver::TChangeType aType );
-
-    class SObserver;
-
-    /**
-     * Identity function to perform comparison between observer array items.
-     */
-    static TBool ObserverIdentity( const SObserver& aA, const SObserver& aB );
-
-private:
-    /**
-     * Current touch enabled/disabled state.
-     */
-    TTouchState iTouchState;
-    
-    /**
-     * Current screen orientation.
-     */
-    TOrientation iOrientation;
-    
-    /**
-     * Current the device input type.
-     */
-    TDeviceType iDeviceType;
-    
-    /**
-     * Observer array entry struct.
-     */
-    struct SObserver
-        {
-        TInt iMask;
-        MHgDeviceStateObserver* iObserver; // not owned
-        SObserver( TInt aMask, MHgDeviceStateObserver* aObserver )
-            : iMask( aMask ), iObserver( aObserver ) { }
-        };
-        
-    /**
-     * Observer array.
-     */
-    RArray<SObserver> iObservers;
-
-    /**
-     * Counter to indicate that we have not yet returned
-     * from a previous HandleResourceChange.
-     */
-    TInt iResChangeActiveCount;
-    
-    /**
-     * Flip status change observer.
-     */
-    CHgPropertyListener* iFlipStatusObserver;
-    };
-
-#endif // HGTELEPORTDEVICESTATE_H_
--- a/taskswitcher/teleportui/hgteleportapp/inc/hgteleportdocument.h	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,91 +0,0 @@
-/*
- * ============================================================================
- *  Name        : hgteleportdocument.h
- *  Part of     : Hg Teleport
- *  Description : Document class
- *  Version     : %version: sa1spcx1#6 %
- *
- *  Copyright © 2008 Nokia.  All rights reserved.
- *  This material, including documentation and any related computer
- *  programs, is protected by copyright controlled by Nokia.  All
- *  rights are reserved.  Copying, including reproducing, storing,
- *  adapting or translating, any or all of this material requires the
- *  prior written consent of Nokia.  This material also contains
- *  confidential information which may not be disclosed to others
- *  without the prior written consent of Nokia.
- * ============================================================================
- * 
- */
-
-#ifndef HGTELEPORTDOCUMENT_H
-#define HGTELEPORTDOCUMENT_H
-
-#include <e32base.h> 
-#include <AknDoc.h>
-
-class CHgTeleportDocument : public CAknDocument
-    {
-public:
-    /**
-     * Construct a CHgTeleportDocument for the AVKON application aApp
-     * using two phase construction, and return a pointer to the created object
-     * aApp application creating this document
-     *
-     * @since S60 v5.0
-     * @return a pointer to the created instance of CHgTeleportDocument
-     */
-    static CHgTeleportDocument* NewL( CEikApplication& aApp );
-
-    /**
-     * Construct a CHgTeleportDocument for the AVKON application aApp
-     * using two phase construction, and return a pointer to the created object
-     *
-     * @since S60 v5.0
-     * @param aApp application creating this document
-     * @return a pointer to the created instance of CHgTeleportDocument
-     */
-    static CHgTeleportDocument* NewLC( CEikApplication& aApp );
-
-    /**
-     * Destroy the object and release all memory objects
-     *
-     * @since S60 v5.0
-     */
-    ~CHgTeleportDocument( );
-
-    /**
-     * Makes Startup-application hidden in menu shell and fastswap window
-     *
-     * @since S60 v5.0
-     * @param aWgName application windows group name
-     */
-    void UpdateTaskNameL( CApaWindowGroupName* aWgName );
-
-public:
-    // from CAknDocument
-    /**
-     * Create a ChgteleportAppUi object and return a pointer to it
-     *
-     * @since S60 v5.0
-     * @return a pointer to the created instance of the AppUi created
-     */
-    CEikAppUi* CreateAppUiL( );
-
-private:
-    /**
-     * Perform the second phase construction of a CHgTeleportDocument object
-     *
-     * @since S60 v5.0
-     */
-    void ConstructL( );
-
-    /**
-     * Perform the first phase of two phase construction
-     *
-     * @since S60 v5.0
-     * @param aApp application creating this document
-     */
-    CHgTeleportDocument( CEikApplication& aApp );
-    };
-
-#endif // HGTELEPORTDOCUMENT_H
--- a/taskswitcher/teleportui/hgteleportapp/inc/hgteleporteventcontroler.h	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,177 +0,0 @@
-/*
- * ============================================================================
- *  Name        : hgteleporteventcontroler.h
- *  Part of     : Hg Teleport
- *  Description : Gesture and physics helper declaration
- *  Version     : %version:  3 %
- *
- *  Copyright © 2008 Nokia.  All rights reserved.
- *  This material, including documentation and any related computer
- *  programs, is protected by copyright controlled by Nokia.  All
- *  rights are reserved.  Copying, including reproducing, storing,
- *  adapting or translating, any or all of this material requires the
- *  prior written consent of Nokia.  This material also contains
- *  confidential information which may not be disclosed to others
- *  without the prior written consent of Nokia.
- * ============================================================================
- *
- */
-
-#ifndef HGTELEPORTEVENTCONTROLER_H
-#define HGTELEPORTEVENTCONTROLER_H
-
-#include "hgteleporteventcontrolerobserver.h"
-#include <akntouchgesturefw.h>
-#include <aknphysicsobserveriface.h>
-
-class CHgTeleportPhysicsEngine;
-using namespace AknTouchGestureFw;
-/**
- * CHgTeleportEventControler
- * Input events handler. Class analyse pointer events and translate it to gesture. Procerss animations physics
- */
-NONSHARABLE_CLASS(CHgTeleportEventControler): 
-    public CBase,
-    public MAknTouchGestureFwObserver,
-    public MAknPhysicsObserver
-    {
-public:
-    /**
-     * Two phase constructor. Instance is pushed on cleanup stack.
-     * @param aObs - reference to controler observer
-     * @param aEventSrc - reference to control which provide pointer events
-     * @return address of controler instance
-     */
-    static CHgTeleportEventControler* NewLC(MHgTeleportEventControlerObserver& aObs, 
-                                            CCoeControl& aEventSrc);
-    
-    /**
-     * Two phase constructor.
-     * @param aObs - reference to control observer
-     * @param aEventSrc - reference to control which provide pointer events
-     * @return address of controler instance
-     */
-    static CHgTeleportEventControler* NewL(MHgTeleportEventControlerObserver& aObs, 
-                                           CCoeControl& aEventSrc);
-    
-    /**
-     * Destructor
-     */
-    ~CHgTeleportEventControler();
-
-private:
-    /**
-     * First phase construction
-     */
-    CHgTeleportEventControler(MHgTeleportEventControlerObserver& aObserver);
-    
-    /**
-     * Second phase construction
-     * @param aEventSrc - control that provides pointer ivents to handler
-     */
-    void ConstructL(CCoeControl& aEventSrc);
-    
-    /**
-     * Implements gesture handling
-     * @param aEvent - gesture event
-     * @see MAknTouchGestureFwObserver
-     */
-    void HandleTouchGestureL(MAknTouchGestureFwEvent& aEvent);
-    
-    /**
-     * Implements tap gesture handling ( short tap, double tap, long tap )
-     * @param aEvent - tap event
-     */
-    void HandleTapEventL(MAknTouchGestureFwTapEvent& aEvent);
-    
-    /**
-     * Implements drag gesture handling
-     * @param aEvent - drag event
-     */
-    void HandleDragEventL(MAknTouchGestureFwDragEvent& aEvent);
-    
-    /**
-     * Implements flick gesture handling
-     * @param aEvent - drag event
-     */
-    void HandleFlickEventL(MAknTouchGestureFwFlickEvent& aEvent);
-    
-    //From MAknPhysicsObserver
-public:
-    /**
-     * Physics emulation has moved the view.
-     * 
-     * When this method is called client should update its visual and logical
-     * states to reflect the changes caused by view move. Note that if the
-     * parameter @c aDrawNow is @c EFalse client is not allowed to redraw the
-     * display but should only update its logical state.
-     * Physics engine will ensure that the last frame is always drawn.
-     *
-     * @since S60 v5.0
-     *
-     * @param  aNewPosition  The new position of the view.
-     * @param  aDrawNow      @c ETrue if client should redraw the screen,
-     *                       otherwise @c EFalse.
-     * @param  aFlags        Additional flags, not used currently.
-     */
-    virtual void ViewPositionChanged( const TPoint& aNewPosition,
-                              TBool aDrawNow,
-                              TUint aFlags );
-        
-    /**
-     * Physics emulation has stopped moving the view
-     *
-     * @since S60 v5.0
-     */
-    virtual void PhysicEmulationEnded();
-
-    /**
-     * Returns the observer's view position.
-     *
-     * @since S60 v5.0
-     *
-     * @return Physics observer's view position.
-     */
-    virtual TPoint ViewPosition() const;
-    
-public:
-    
-    /**
-     * Initialize animation between current position and destination point
-     * @param aPoint - destination point 
-     */
-    void Animate(const TPoint& aPoint);
-
-    /**
-     * 
-     * @param aWorldSize Physics world size.
-     * @param aViewSize Physics (visible) view size.
-     * @param aLandscape ETrue if physics should work in landscape.     
-     **/
-    void ReInitPhysicsL(const TSize& aWorldSize, 
-                        const TSize& aViewSize,
-                        TBool aLandscape);
-    
-    /**
-     * Stops currently ongoing animation
-     */
-    void StopAnimation();
-    
-private:
-    /**
-     * Controler observer. Not own
-     */
-    MHgTeleportEventControlerObserver& iObserver;
-    
-    /**
-     * Gesture recognition helper. Own
-     */
-    CAknTouchGestureFw* iGestureHelper;
-    
-    /**
-     * Physics helper. Own
-     */
-    CHgTeleportPhysicsEngine* iPhysicsHelper;
-    };
-
-#endif // HGTELEPORTEVENTCONTROLER_H
--- a/taskswitcher/teleportui/hgteleportapp/inc/hgteleporteventcontrolerobserver.h	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +0,0 @@
-/*
- * ============================================================================
- *  Name        : hgteleportgestureobserver.h
- *  Part of     : Hg Teleport
- *  Description : Define gesture observer interface
- *  Version     : %version: 3 %
- *
- *  Copyright © 2008 Nokia.  All rights reserved.
- *  This material, including documentation and any related computer
- *  programs, is protected by copyright controlled by Nokia.  All
- *  rights are reserved.  Copying, including reproducing, storing,
- *  adapting or translating, any or all of this material requires the
- *  prior written consent of Nokia.  This material also contains
- *  confidential information which may not be disclosed to others
- *  without the prior written consent of Nokia.
- * ============================================================================
- *
- */
-
-#ifndef HGTELEPORTGESTUREOBSERVER_H
-#define HGTELEPORTGESTUREOBSERVER_H
-
-#include <e32base.h>
-#include <akntouchgesturefw.h>
-
-/**
- * MHgTeleportGestureObserver
- * Define gesture observer interface
- */
-NONSHARABLE_CLASS(MHgTeleportEventControlerObserver)
-    {
-public:
-    /**
-     * Declare drag gesture handling.
-     * @param aOffset - drag distance
-     */
-    virtual void MoveOffset(const TPoint& aOffset)=0;
-    
-    /**
-     * Declare tap gesture handling.
-     * @param aPoint - tap position
-     */
-    virtual void TapL(const TPoint& aPoint)=0;
-    
-    /**
-     * Declare long tap gesture handling.
-     * @param aPoint - tap position
-     */
-    virtual void LongTapL(const TPoint& aPoint)=0;
-    
-    /**
-     * Declare drag gesture handling.
-     * @param aEvent - drag event
-     */
-    virtual void Drag(const AknTouchGestureFw::MAknTouchGestureFwDragEvent& aEvent) =0;
-    
-    /**
-     * Declare animation stop handling
-     */
-    virtual void Stop()=0;
-    
-    /**
-     * Declare getter for view position
-     */
-    virtual TPoint ViewPos() const =0;
-    };
-
-#endif // HGTELEPORTGESTUREOBSERVER_H
--- a/taskswitcher/teleportui/hgteleportapp/inc/hgteleportfastswaparea.h	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,459 +0,0 @@
-/*
- * ============================================================================
- *  Name        : hgteleportfastswaparea.h
- *  Part of     : Hg Teleport
- *  Description : Teleport Fast Swap area UI
- *  Version     : %version: sa1spcx1#45 %
- *
- *  Copyright © 2008 Nokia.  All rights reserved.
- *  This material, including documentation and any related computer
- *  programs, is protected by copyright controlled by Nokia.  All
- *  rights are reserved.  Copying, including reproducing, storing,
- *  adapting or translating, any or all of this material requires the
- *  prior written consent of Nokia.  This material also contains
- *  confidential information which may not be disclosed to others
- *  without the prior written consent of Nokia.
- * ============================================================================
- *
- */
-
-//macro TASKSWITCHER_USE_CUSTOM_LAYOUT
-#if !defined ( TASKSWITCHER_USE_CUSTOM_LAYOUT )
-    //#define TASKSWITCHER_USE_CUSTOM_LAYOUT 1
-#endif
-
-
-#ifndef HGTELEPORTFASTSWAPAREA_H
-#define HGTELEPORTFASTSWAPAREA_H
-
-#include <e32base.h>
-#include <eikmobs.h>
-#include "hgteleportdevicestate.h"
-#include "hgfswclientobserver.h"
-#include "hgteleportfastswapgrid.h"
-#include "hgteleporteventcontrolerobserver.h"
-
-
-// FORWARD DECLARATIONS
-class CHgFswClient;
-class CHgFswEntry;
-class CAknStylusPopUpMenu;
-class CAknQueryDialog;
-class CHgTeleportEventControler;
-class MHgTeleportDataChangeObserver;
-
-#ifdef TASKSWITCHER_USE_CUSTOM_LAYOUT
-const TInt KFswItemHeight = 250;
-const TInt KFswItemWidth = 240;
-const TInt KFswImageSize = 200;
-const TInt KFswTextHeight = 20;
-const TInt KFswBorderSize = 10;
-const TInt KFswHeadingHeight = 50;
-#endif
-
-/**
- * Teleport Fast Swap area UI.
- */
-class CHgTeleportFastSwapArea: public CCoeControl,
-                               public MEikMenuObserver,
-                               public MHgFswObserver,
-                               public MEikListBoxObserver,
-                               public MHgTeleportFastSwapGridObserver,
-                               private MHgTeleportEventControlerObserver,
-                               public MHgDeviceStateObserver,
-                               public MHgTeleportFastSwapTimerObserver
-    {
-public:
-    /**
-     * Two-phase constructor.
-     * 
-     * @param aRect Area where fast swap info & list should draw itself.
-     * @param aParent Parent CoeControl. 
-     */
-    static CHgTeleportFastSwapArea* NewL( const TRect& aRect,
-            CCoeControl& aParent, CHgTeleportDeviceState& aDeviceState,
-            CHgTeleportEventControler& aEventHandler);
-
-    /**
-     * @copydoc NewL
-     */
-    static CHgTeleportFastSwapArea* NewLC( const TRect& aRect,
-            CCoeControl& aParent, CHgTeleportDeviceState& aDeviceState,
-            CHgTeleportEventControler& aEventHandler);
-
-    /**
-     * Destructor.
-     */
-    ~CHgTeleportFastSwapArea();
-
-    /**
-     * Called from appview when coming to foreground.
-     */
-    void HandleSwitchToForegroundEvent();
-    
-    /**
-     * Called from appview when going to background.
-     */
-    void HandleSwitchToBackgroundEvent();
-
-    /**
-     * Called after construction to set up additional properties,
-     * like the control observer.
-     */
-    void Setup( MCoeControlObserver& aControlObserver );
-
-    /**
-     * Saves the index of the currently selected (highlighted) item.
-     */
-    void SaveSelectedIndex();
-    
-    /**
-     * Restores the selection (highlight) position.
-     */
-    void RestoreSelectedIndex();
-
-    // Functions to perform activate, close, close others operations.
-    // They are public so same functionality can be implemented in the
-    // Options menu (appui) for example.
-    
-    /**
-     * Index of highlighted item or KErrNotFound.
-     */
-    TInt SelectedIndex() const;
-    
-    /**
-     * Brings the app corresponding to the item at given index into foreground.
-     */
-    void SwitchToApp( TInt aIndex );
-    
-    /**
-     * Sends close msg to given app.
-     * @param   aIndex      index
-     * @param   aSuppressRendering  content is not refreshed if ETrue
-     */
-    void TryCloseAppL( TInt aIndex, TBool aSuppressRendering = EFalse );
-    
-    /**
-     * Sends close msg to given app if user confirms the query.
-     */
-    void TryCloseAppWithQueryL( TInt aIndex );
-    
-    /**
-     * Tries to Close all applications that cn be closed
-     */
-    void TryCloseAllL();
-    
-    /**
-     * True if it is allowed to ask the given app to close.
-     * @param   aIndex  index
-     */
-    TBool CanClose( TInt aIndex ) const;
-    
-    /**
-     * @param  aSelectedItem  item for which pop up is shown
-     * 
-     * @return ETrue, when number of closable apps is >= 2 or there is at least
-     *                one closable item and non closable item is selected.
-     * @return EFalse, when number of closable apps is < 2.
-     */
-    TBool CanCloseAll( TInt aSelectedItem ) const;
-
-    /**
-     * Returns the number of items in the list.
-     */
-    TInt Count() const;
-
-    /**
-     * Returns the underlying Ganes control pointer.
-     */
-    CCoeControl* GetChildControl() { return iGrid; }
-
-    /**
-     * Sets the data-changed observer.
-     */
-    void SetDataChangeObserver( MHgTeleportDataChangeObserver* aDcObserver );
-
-    /*
-     * Handling short/long app key.
-     */
-    void HandleAppKey(TInt aType);
-
-private:
-
-    /**
-     * @copydoc NewL
-     */
-    void ConstructL( const TRect& aRect );
-
-    /**
-     * C++ constructor.
-     */
-    CHgTeleportFastSwapArea(CCoeControl& aParent,
-            CHgTeleportDeviceState& aDeviceState,
-            CHgTeleportEventControler& aEventHandler);
-    
-    // From MEikListBoxObserver
-    void HandleListBoxEventL(CEikListBox* aListBox, TListBoxEvent aEventType);
-    
-public:
-    /**
-     * Implements drag gesture handling
-     * @see MHgTeleportEventControlerObserver
-     */
-    void MoveOffset(const TPoint&);
-
-    /**
-     * Implements tap gesture handling
-     * @see MHgTeleportEventControlerObserver
-     */
-    void TapL(const TPoint&);
-
-    /**
-     * Implements long tap gesture handling
-     * @see MHgTeleportEventControlerObserver
-     */
-    void LongTapL(const TPoint&);
-
-    /**
-     * Implements drag gesture handling
-     * @see MHgTeleportEventControlerObserver
-     */
-    void Drag(const AknTouchGestureFw::MAknTouchGestureFwDragEvent& aEvent);
-    
-    /**
-     * Implements animation stop handling
-     * @see MHgTeleportEventControlerObserver
-     */
-    void Stop();
-    
-    /**
-     * Implements view position getter. Returns point in the middle of the
-     * grid view window.
-     * 
-     * @see MHgTeleportEventControlerObserver
-     */
-    TPoint ViewPos()const;
-    
-public:    
-    // from CCoeControl    
-    TInt CountComponentControls() const;
-    CCoeControl* ComponentControl(TInt aIndex) const;
-    void FocusChanged( TDrawNow aDrawNow );
-    void SizeChanged();
-    void Draw( const TRect& aRect ) const;
-    TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType );
-    void HandlePointerEventL( const TPointerEvent& aPointerEvent );
-    
-private:
-    // From MHgFswObserver     
-    void HandleFswContentChanged();
-    
-    // From MEikMenuObserver
-    void ProcessCommandL( TInt aCommandId );
-	void SetEmphasis( CCoeControl*, TBool ) { }
-	
-	// From MHgTeleportFastSwapGridObserver
-	void HandleCloseEventL(TInt aItemIdx);
-	
-	// From MHgDeviceStateObserver
-	void HandleDeviceStateChanged( TChangeType aChangeType );
-
-    // From MHgTeleportFastSwapTimerObserver
-    void TimerCompletedL( CHgTeleportFastSwapTimer* aSource );
-	
-// new functions    
-
-    /**
-     * Makes a copy of the given bitmap.
-     * Also scaled to the given size, but maintains aspect ratio,
-     * so the size of the returned bitmap may be less then aSize.
-     */
-    CFbsBitmap* CopyBitmapL( TInt aFbsHandle, TSize aSize );
-
-    /**
-     * Called from HandleFswContentChanged.
-     */    
-    void HandleFswContentChangedL();
-    
-    /**
-     * Shows the content from iArray on the screen.
-     */
-    void RenderContentL();
-    
-    /**
-     * Creates the ganes grid control.
-     */
-    void ReCreateGridL();
-    
-    /**
-     * Returns rectangles for fast swap area controls
-     */
-    void GetFastSwapAreaRects( RArray<TAknLayoutRect>& aRects );
-
-    /**
-     * Creates a stylus popup instance (iPopup) if not yet done.
-     */
-    void PreCreatePopupL();
-
-    /**
-     * Shows the stylus popup menu if not yet visible.
-     * @param   aIndex  index of item in the grid
-     * @param   aPoint  position for the popup
-     */
-    TBool ShowPopupL( TInt aIndex, const TPoint& aPoint );
-    
-    /**
-     * Shows the app close confirmation query.
-     * @param   aIndex  index of item in the grid
-     * @return ETrue if accepted EFalse if canceled
-     */
-    TBool ConfirmCloseL( TInt aIndex );
-
-    /**
-     * Sends the data-changed notification.
-     */   
-    void NotifyChange();
-
-    /**
-     * Chage application order.
-     * move Homescreen to first left position.
-     */   
-    void SwapApplicationOrder( RPointerArray<CHgFswEntry>& aArray );
-    
-    /**
-     * Retrieves and returns size for image graphics.
-     */
-    TSize PreferredImageSize();
-    
-    /**
-     * Retrieves number of items in grid
-     */
-    TInt GridItemCount();
-    
-    /**
-     * Calculates the correct size if aspect ratio needs to be preserved.
-     */
-    TSize CalculateSizePreserveRatio(const TSize& aTargetAreaSize,
-            const TSize& aSourceSize);
-    
-    /**
-     * Selects next item in grid
-     */
-    void SelectNextItem();
-    
-    /**
-     * Highlight current grid'd item and redraw
-     */
-    void ShowHighlight();
-    
-    /**
-     * Centralise most centered item so it was most exposed on the view.
-     * Centered element is being selected by grid.
-     * Animation to the centered element is made after aRedrawDelay time.
-     * 
-     * @param aRedrawDelay - animation delay.
-     */
-    void CenterItem( TInt aRedrawDelay);
-    
-    /**
-     * Returns full grid view size.
-     */
-    TSize GridWorldSize();
-    
-    /**
-     * Updates grid, called for manual grid scroll update
-     * 
-     * @param  aForceRedraw    if set to ETrue - redraw will be forced
-     * @param  aAnimate        set to ETrue to enable animation
-     */
-    void UpdateGrid( TBool aForceRedraw = EFalse,
-                     TBool aAnimate = ETrue );
-    
-    /**
-     * Returns grid view size
-     */
-    TSize ViewSize();
-    
-    /**
-     * Returns the position of the given item inside grid world rect.
-     * Returns point in the middle of the view rectangle.
-     * 
-     * @param  aItemIdx  index of the item for which calculation will be done
-     */
-    TPoint ItemViewPosition( TInt aItemIdx );
-    
-    /**
-     * Returns index of the shown item, based on the logical
-     * position of the grids view. Item that is closest to the
-     * middle of screen is returned.
-     * 
-     * @param  aViewPos  grids view position. This must be point in
-     *                   the middle of the view rectangle
-     * @return  index of the item
-     */
-    TInt ViewToVisibleItem( const TPoint aViewPos );
-    
-    /**
-     * Launches increasing pop-up feedback.
-     */
-    void LaunchPopupFeedback();
-
-private: // Data
-    
-    // parent control
-    CCoeControl& iParent;
-    
-    // device state
-    // not own 
-    CHgTeleportDeviceState& iDeviceState;
-
-    // grid, own
-    CHgTeleportFastSwapGrid* iGrid;
-        
-    // fsw client, own
-    CHgFswClient* iFSClient;
-    // fsw content, ptrs owned
-    RPointerArray<CHgFswEntry> iArray;
-    
-    // index of selected (highlighted) item in the grid
-    // when the fsw was last focused
-    TInt iSavedSelectedIndex;
-    
-    // fsw popup (activate, close, etc.), own
-    CAknStylusPopUpMenu* iPopup;
-    // the aIndex argument of ShowPopupL is stored here
-    TInt iAppIndexForPopup;
-
-    // query shown when pressing Clear key in fsw, own
-    CAknQueryDialog* iConfirmCloseQuery;
-
-    // Timestamp of the last application close operation
-    TTime iTimeOfLastClose;
-    
-    // Observer ptr, may be NULL, not owned
-    MHgTeleportDataChangeObserver* iDcObserver;
-    
-    //Input events handler
-    CHgTeleportEventControler& iEvtHandler;
-    
-    TInt iMaxItemsOnScreen;
-    TInt iPreviousNoOfItems;
-    
-    // Tap event
-    TPointerEvent iTapEvent;
-    CHgTeleportFastSwapTimer* iHighlightTimer;
-    TBool iLongTap;
-    
-    // Grid scrolling
-    TInt iGridItemWidth;
-    
-    CHgTeleportFastSwapTimer* iRedrawTimer; // owned
-    
-    CHgTeleportFastSwapTimer* iUpdateGridTimer;//owned
-    
-    // Key event handling
-    TBool iConsumeEvent;
-    TBool iKeyEvent;
-    };
-
-#endif // HGTELEPORTFASTSWAPAREA_H
--- a/taskswitcher/teleportui/hgteleportapp/inc/hgteleportfastswapgrid.h	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,274 +0,0 @@
-/*
- * ============================================================================
- *  Name        : hgteleportfastswapgrid.h
- *  Part of     : Hg Teleport
- *  Description : Teleport Fast Swap area UI
- *  Version     : %version:  12 %
- *
- *  Copyright © 2009 Nokia.  All rights reserved.
- *  This material, including documentation and any related computer
- *  programs, is protected by copyright controlled by Nokia.  All
- *  rights are reserved.  Copying, including reproducing, storing,
- *  adapting or translating, any or all of this material requires the
- *  prior written consent of Nokia.  This material also contains
- *  confidential information which may not be disclosed to others
- *  without the prior written consent of Nokia.
- * ============================================================================
- *
- */
-
-#ifndef HGTELEPORTFASTSWAPGRID_H_
-#define HGTELEPORTFASTSWAPGRID_H_
-
-#include <AknGrid.h>
-#include <aknconsts.h>
-#include "hgteleportdevicestate.h"
-
-class CAknsFrameBackgroundControlContext;
-class CHgTeleportFastSwapTimer;
-
-/**
- * Observer for handling fast swap grid events
- */
-class MHgTeleportFastSwapGridObserver
-    {
-public:
-    /**
-     * Called when close icon is tapped on the grid item.
-     * 
-     * @param  aItemIdx  index of the the item for which close icon
-     *                   has been tapped
-     */
-    virtual void HandleCloseEventL( TInt aItemIdx ) = 0;
-    };
-
-
-class MHgTeleportFastSwapTimerObserver
-    {
-public:
-    /**
-     * Called when timer is completed
-     */
-    virtual void TimerCompletedL( CHgTeleportFastSwapTimer* aSource ) = 0;
-    };
-
-
-/**
- * Avkon grid implementing custom item drawer
- */
-class CHgTeleportFastSwapGrid: 
-    public CAknGrid,
-    public MHgDeviceStateObserver
-    {
-public: // enums
-    enum TFastSwapGridBehaviour
-        {
-        // Highlight always visible
-        EHybrid,
-        
-        // Touch only highlight handling
-        ETouchOnly
-        };
-    
-public: // Constructor and destructor
-    CHgTeleportFastSwapGrid();
-    ~CHgTeleportFastSwapGrid();
-    void ConstructL( const CCoeControl* aParent );
-    
-public: // From CCoeControl
-    void HandlePointerEventL( const TPointerEvent &aPointerEvent );
-    TTypeUid::Ptr MopSupplyObject( TTypeUid aId );
-    void HandleResourceChange( TInt aType );
-    void SizeChanged();
-    
-public: //From MHgDeviceStateObserver
-    /**
-     * Called when a change, to which the observer is registered,
-     * has happened.
-     */
-    virtual void HandleDeviceStateChanged( TChangeType aChangeType );
-    
-public: // New functions
-
-    /**
-     * Sets fast swap grid observer
-     */
-    void SetFastSwapGridObserver( MHgTeleportFastSwapGridObserver* aObserver  );
-
-    /**
-     * Set indexes of items which can be closed.
-     * Copies item index array.
-     */
-    void SetCloseItemsL( RArray<TInt>& aItemIndex );
-
-    /**
-     * Checks if the item of given index is closable
-     */
-    TBool CanCloseItem( TInt aItemIndex );
-
-    /**
-     * Checks if the given item's close icon has been tapped.
-     */
-    TBool IsItemCloseHit( TInt aItemIndex );
-
-    /**
-     * Resets index of the item that has been close icon hit
-     */
-    void ResetCloseHit();
-    
-    /**
-     * Sets grid behaviour
-     * 
-     * @param  aBehaviour  behaviour to be set
-     */
-    void SetGridBehaviour( TFastSwapGridBehaviour aBehaviour );
-    
-    /**
-     * Getter for grid behaviour
-     * 
-     * @return  girds behaviour
-     */
-    TFastSwapGridBehaviour GridBehaviour();
-    
-    /**
-     * Shows highlight. In touch only behaviour highlight
-     * will be shown only for ammount of time.
-     */
-    void ShowHighlight();
-    
-    /**
-     * Hides highlight.
-     */
-    void HideHighlight();
-    
-    /**
-     * Checks if the highlight is currently visible.
-     * 
-     * @return  ETrue  if highlight is visible
-     *          EFalse if highlight is not visible
-     */
-    TBool IsHighlightVisible();
-    
-    /**
-     * Sets visible view, items outside of view will not be drawn
-     */
-    void SetVisibleViewRect( const TRect aRect );
-    
-    /**
-     * Returns visible view. Items outside of visible rectangle are not drawn.
-     */
-    TRect VisibleViewRect();
-
-private: // From CAknGrid
-    virtual void CreateItemDrawerL();
-
-private: // New functions
-    
-    /**
-     * Loads close icon bitmap and mask
-     */
-    void LoadCloseIcon();
-    
-    /**
-     * Redraws grid and parent controls
-     */
-    void Redraw();
-    
-private: // Data
-    // Background context for grid
-    CAknsFrameBackgroundControlContext* iBgContext;
-    
-    // Close icon handling
-    RArray<TInt> iCloseItems;
-    TInt iCloseIconHitIdx;
-    MHgTeleportFastSwapGridObserver* iFastSwapGridObserver;
-
-    // Highlight handling
-    TFastSwapGridBehaviour iBehaviour;
-    TBool iHighlightVisible;
-    
-    // Visible view rectangle (horizontal scrolling support)
-    TRect iVisibleViewRect;
-    };
-
-
-
-/**
- * Custom item drawer for drawing grid items
- */
-class CHgTeleportGridItemDrawer: public CFormattedCellListBoxItemDrawer
-    {
-
-public: // Constructor and destructor
-    CHgTeleportGridItemDrawer( CHgTeleportFastSwapGrid* aGrid,
-                               CFormattedCellListBoxData* aData );
-    ~CHgTeleportGridItemDrawer();
-
-public: // New functions
-
-    /**
-     * Sets close icon drawn for items that can be closed.
-     * Ownership transferred.
-     */
-    void SetCloseIcon( CFbsBitmap* aBmp, CFbsBitmap* aMask );
-
-    /**
-     * Returns close icon coordinates for the given item rectangle
-     */
-    TRect GetCloseIconRect( const TRect& aItemRect ) const;
-    
-    /**
-     * Sets screen offset for the item drawer to not draw items on the
-     * grid edges
-     */
-    void SetEdgeOffset( TInt aLeftOffset, TInt aRightOffset );
-
-private: // From CFormattedCellListBoxItemDrawer
-    void DrawActualItem( TInt aItemIndex, const TRect& aActualItemRect,
-                         TBool aItemIsCurrent, TBool aViewIsEmphasized,
-                         TBool aViewIsDimmed, TBool aItemIsSelected ) const;
-private: // New functions
-    /**
-     * Checks if the item rectangle is visible in the view.
-     * 
-     * @param   aItemRect  rectangle of the item to be checked 
-     * @return  ETrue      if rectangle is fully or partially visible
-     *          EFalse     if rectangle is not visible
-     */
-    TBool IsItemRectVisible( const TRect& aItemRect ) const;
-    
-private: // Data
-    // Not owned
-    CHgTeleportFastSwapGrid* iGrid;
-    // Owned
-    CFbsBitmap* iCloseIcon;
-    CFbsBitmap* iCloseIconMask;
-    
-    TRect iScreenRect;
-    TInt iLeftOffset;
-    TInt iRightOffset;
-    };
-
-
-
-/**
- * Timer class for handling highlight bevaiour
- */
-class CHgTeleportFastSwapTimer : public CTimer
-    {
-public:
-    // Constructor
-    CHgTeleportFastSwapTimer( MHgTeleportFastSwapTimerObserver& aObserver );
-    // Destructor
-    ~CHgTeleportFastSwapTimer();
-    // 2nd phase constructor
-    void ConstructL();
-    
-private: // From CTimer
-    void RunL();
-    
-private: // Data
-    MHgTeleportFastSwapTimerObserver* iObserver; // not own
-    };
-
-#endif /* HGTELEPORTFASTSWAPGRID_H_ */
--- a/taskswitcher/teleportui/hgteleportapp/inc/hgteleportphysics.h	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,141 +0,0 @@
-/*
- * ============================================================================
- *  Name        : hgteleportphysics.h
- *  Part of     : Hg Teleport
- *  Description : Application class
- *  Version     : %version:  %
- *
- *  Copyright © 2009 Nokia.  All rights reserved.
- *  This material, including documentation and any related computer
- *  programs, is protected by copyright controlled by Nokia.  All
- *  rights are reserved.  Copying, including reproducing, storing,
- *  adapting or translating, any or all of this material requires the
- *  prior written consent of Nokia.  This material also contains
- *  confidential information which may not be disclosed to others
- *  without the prior written consent of Nokia.
- * ============================================================================
- * 
- */
-
-#ifndef HGTELEPORTPHYSICS_H
-#define HGTELEPORTPHYSICS_H
-
-#include <e32base.h>
-#include <e32std.h>
-
-class MAknPhysicsObserver;
-
-/**
- * Simple physics for grid animation
- */
-class CHgTeleportPhysics : public CActive
-    {
-public:
-    /*
-     * Destructor
-     */
-    ~CHgTeleportPhysics();
-
-    /**
-     * Two-phased constructor.
-     */
-    static CHgTeleportPhysics* NewL( MAknPhysicsObserver& aObserver );
-
-    /**
-     * Two-phased constructor.
-     */
-    static CHgTeleportPhysics* NewLC( MAknPhysicsObserver& aObserver );
-
-public: // New functions
-    
-    /**
-     * Starts animation
-     * 
-     * @param  aDrag       next drag point
-     * @param  aStartTime  when animation should be started
-     */
-    void StartPhysics( const TPoint& aTarget );
-
-    /**
-     * Stops animation
-     */
-    void StopPhysics();
-    
-private:
-    
-    /**
-     * C++ constructor
-     */
-    CHgTeleportPhysics( MAknPhysicsObserver& aObserver );
-
-    /**
-     * Second-phase constructor
-     */
-    void ConstructL();
-
-private: // From CActive
-    
-    /**
-     * Handles completion
-     */
-    void RunL();
-
-    /**
-     * Called when cancelled
-     */
-    void DoCancel();
-
-    /**
-     * Hanldes error
-     */
-    TInt RunError( TInt aError );
-    
-private: // New functions
-    
-    /**
-     * Calculates animation steps
-     */
-    TInt CalculateAnimationSteps( const TPoint& aTarget );
-
-private:
-
-    enum TPhysicsStatus
-        {
-        EStopped,
-        ERunning,
-        EFinished
-        };
-    
-    /**
-     * Observer
-     */
-    MAknPhysicsObserver& iObserver;
-    
-    /**
-     * Animation timer
-     */
-    RTimer iTimer;
-    
-    /**
-     * Animation state
-     */
-    TPhysicsStatus iPhysicsState;
-    
-    /**
-     * Controls animation refresh rate
-     */
-    TTimeIntervalMicroSeconds32 iAnimationTickTime;
-    
-    /**
-     * Animation ticks counter
-     */
-    TInt iAnimationTicks;
-    
-    /**
-     * Offset of how much view should be moved
-     */
-    RArray<TPoint> iAnimationSteps;
-
-    };
-
-#endif // HGTELEPORTPHYSICS_H
--- a/taskswitcher/teleportui/hgteleportapp/inc/hgteleportphysicsengine.h	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,117 +0,0 @@
-/*
- * ============================================================================
- *  Name        : hgteleportphysicsengine.h
- *  Part of     : Hg Teleport
- *  Description : Teleport physic engine
- *  Version     : %version:  3 %
- *
- *  Copyright © 2009 Nokia.  All rights reserved.
- *  This material, including documentation and any related computer
- *  programs, is protected by copyright controlled by Nokia.  All
- *  rights are reserved.  Copying, including reproducing, storing,
- *  adapting or translating, any or all of this material requires the
- *  prior written consent of Nokia.  This material also contains
- *  confidential information which may not be disclosed to others
- *  without the prior written consent of Nokia.
- * ============================================================================
- *
- */
-
-#ifndef HGTELEPORTPHYSICSENGINE_H_
-#define HGTELEPORTPHYSICSENGINE_H_
-
-#include <e32base.h>
-#include <akntouchgesturefw.h>
-// CLASS DECLARATION
-class CAknPhysics;
-class CHgTeleportPhysics;
-/**
- * Teleport physic engine implementation
- */
-class CHgTeleportPhysicsEngine: public CBase
-    {
-public:
-    // Constructors and destructor
-
-    /**
-     * Destructor.
-     */
-    ~CHgTeleportPhysicsEngine();
-
-    /**
-     * Two-phased constructor.
-     */
-    static CHgTeleportPhysicsEngine* NewL(MAknPhysicsObserver& aPhysicObserver,
-            CCoeControl& aViewControl);
-
-    /**
-     * Two-phased constructor.
-     */
-    static CHgTeleportPhysicsEngine* NewLC(MAknPhysicsObserver& aPhysicObserver,
-            CCoeControl& aViewControl);
-
-private:
-
-    /**
-     * Constructor for performing 1st stage construction
-     */
-    CHgTeleportPhysicsEngine();
-
-    /**
-     * EPOC default constructor for performing 2nd stage construction
-     */
-    void ConstructL(MAknPhysicsObserver& aPhysicObserver,
-            CCoeControl& aViewControl);
-    
-    
-public:
-    /**
-     * Implements drag gesture handling
-     * @param aEvent - drag event
-     */
-    void HandleDragEvent(AknTouchGestureFw::MAknTouchGestureFwDragEvent& aEvent);
-    
-    /**
-     */
-    TBool IsRunning() const;
-    
-    /**
-     */
-    void Stop();
-    
-    /**
-     * Initialize animation between current position and destination point
-     * @param aPoint - destination point 
-     */
-    void AnimateToTarget(const TPoint& aPoint);
-    
-    /**
-     * 
-     * @param aWorldSize Physics world size.
-     * @param aViewSize Physics (visible) view size.
-     * @param aLandscape ETrue if physics should work in landscape.     
-     **/
-    void ReInitPhysicsL(const TSize& aWorldSize, 
-                        const TSize& aViewSize,
-                        TBool aLandscape);
-    
-private:
-    /**
-     * Physics. 
-     * Own.
-     */
-    CAknPhysics* iPhysics;
-
-    /**
-     * Drag start time
-     */
-    TTime iStartTime;
-    
-    /**
-     * Teleport physics for item switch animation
-     */
-    CHgTeleportPhysics* iTeleportPhysics;
-
-    };
-
-#endif /* HGTELEPORTPHYSICSENGINE_H_*/
--- a/taskswitcher/teleportui/hgteleportapp/inc/hgteleportuid.hrh	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-/*
- * ============================================================================
- *  Name        : hgteleportappuid.hrh
- *  Part of     : Hg Teleport
- *  Description : Teleport application's UID3
- *  Version     : %version: 5 %
- *
- *  Copyright © 2008 Nokia.  All rights reserved.
- *  This material, including documentation and any related computer
- *  programs, is protected by copyright controlled by Nokia.  All
- *  rights are reserved.  Copying, including reproducing, storing,
- *  adapting or translating, any or all of this material requires the
- *  prior written consent of Nokia.  This material also contains
- *  confidential information which may not be disclosed to others
- *  without the prior written consent of Nokia.
- * ============================================================================
- *
- */
-
-#ifndef HGTELEPORTAPPUID_HRH
-#define HGTELEPORTAPPUID_HRH
-
-#define KHgTeleportAppUidValue      0x20016BF0
-
-#endif
--- a/taskswitcher/teleportui/hgteleportapp/loc/taskswitcher.loc	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-/*
-* ============================================================================
-*  Name        : taskswitcher.loc
-*  Part of     : Task Switcher
-*  Description : Task Switcher application's localization texts
-*  Version     : %version: 2 %
-*
-*  Copyright © 2008 Nokia.  All rights reserved.
-*  This material, including documentation and any related computer
-*  programs, is protected by copyright controlled by Nokia.  All
-*  rights are reserved.  Copying, including reproducing, storing,
-*  adapting or translating, any or all of this material requires the
-*  prior written consent of Nokia.  This material also contains
-*  confidential information which may not be disclosed to others
-*  without the prior written consent of Nokia.
-* ============================================================================
-* 
-*/
-
-//d:Popup menu item text
-//d:Activate selected application
-//l:list_single_touch_menu_pane_t1
-//r:5.0
-//
-#define qtn_task_switcher_popup_open_app "Activate"
-
-//d:Popup menu item text
-//d:Close selected application
-//l:list_single_touch_menu_pane_t1
-//r:5.0
-//
-#define qtn_task_switcher_popup_close_app "Close"
-
-//d:Popup menu item text
-//d:Close all application
-//l:list_single_touch_menu_pane_t1
-//r:5.0
-//
-#define qtn_task_switcher_popup_close_all "Close all"
-
-//d:Text for heading pane above the task swapper
-//l:heading_pane_t1
-//r:5.0
-//
-#define qtn_task_switcher_heading_applications "Open applications"
-
-//d:Text for appliactions that has no name
-//l:none
-//r:5.0
-//
-#define qtn_task_switcher_default_task_name "No name"
\ No newline at end of file
--- a/taskswitcher/teleportui/hgteleportapp/src/hgteleport.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-/*
- * ============================================================================
- *  Name        : hgteleport.cpp
- *  Part of     : Hg Teleport
- *  Description : Main cpp of application. Definition of start function
- *  Version     : %version: 5 %
- *
- *  Copyright © 2008 Nokia.  All rights reserved.
- *  This material, including documentation and any related computer
- *  programs, is protected by copyright controlled by Nokia.  All
- *  rights are reserved.  Copying, including reproducing, storing,
- *  adapting or translating, any or all of this material requires the
- *  prior written consent of Nokia.  This material also contains
- *  confidential information which may not be disclosed to others
- *  without the prior written consent of Nokia.
- * ============================================================================
- *
- */
-
-#include <eikstart.h>
-
-#include "hgteleportapplication.h"
-
-// -----------------------------------------------------------------------------
-// NewApplication
-// Create main class of application
-// -----------------------------------------------------------------------------
-//
-CApaApplication* NewApplication( )
-    {
-    return new CHgTeleportApplication;
-    }
-
-// -----------------------------------------------------------------------------
-// E32Main
-// Application enty point.
-// -----------------------------------------------------------------------------
-//
-TInt E32Main( )
-    {
-    return EikStart::RunApplication( NewApplication );
-    }
-
-
-// end of file
--- a/taskswitcher/teleportui/hgteleportapp/src/hgteleportapplication.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-/*
- * ============================================================================
- *  Name        : hgteleportapplication.cpp
- *  Part of     : Hg Teleport
- *  Description : Application class
- *  Version     : %version: 5 %
- *
- *  Copyright © 2008 Nokia.  All rights reserved.
- *  This material, including documentation and any related computer
- *  programs, is protected by copyright controlled by Nokia.  All
- *  rights are reserved.  Copying, including reproducing, storing,
- *  adapting or translating, any or all of this material requires the
- *  prior written consent of Nokia.  This material also contains
- *  confidential information which may not be disclosed to others
- *  without the prior written consent of Nokia.
- * ============================================================================
- * 
- */
-
-#include "hgteleportdocument.h"
-#include "hgteleportapplication.h"
-#include "hgteleportuid.hrh"
-
-// UID for the application, this should correspond
-// to the uid defined in the mmp file
-static const TUid KUidHgTeleportApp = { KHgTeleportAppUidValue };
-
-// -----------------------------------------------------------------------------
-// CHgTeleportApplication::CreateDocumentL( )
-// Create a CApaDocument object and return a pointer to it
-// -----------------------------------------------------------------------------
-//
-CApaDocument* CHgTeleportApplication::CreateDocumentL( )
-    {
-    CApaDocument* document = CHgTeleportDocument::NewL( *this );
-    return document;
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportApplication::AppDllUid( )
-// Returns the application DLL UID value
-// -----------------------------------------------------------------------------
-//
-TUid CHgTeleportApplication::AppDllUid( ) const
-    {
-    // Return the UID for the hgteleport application
-    return KUidHgTeleportApp;
-    }
-
-
-// end of file
--- a/taskswitcher/teleportui/hgteleportapp/src/hgteleportappui.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,582 +0,0 @@
-/*
- * ============================================================================
- *  Name        : hgteleportappui.cpp
- *  Part of     : Hg Teleport
- *  Description : AppUi class
- *  Version     : %version: sa1spcx1#55 %
- *
- *  Copyright © 2008 Nokia.  All rights reserved.
- *  This material, including documentation and any related computer
- *  programs, is protected by copyright controlled by Nokia.  All
- *  rights are reserved.  Copying, including reproducing, storing,
- *  adapting or translating, any or all of this material requires the
- *  prior written consent of Nokia.  This material also contains
- *  confidential information which may not be disclosed to others
- *  without the prior written consent of Nokia.
- * ============================================================================
- *
- */
-
-#include "hgteleportappui.h"
-#include "hgteleportappview.h"
-#include "hgteleportapplogging.h"
-#include "hgteleportdevicestate.h"
-#include "hgteleportuid.hrh"
-#include "hgteleportcommands.hrh"
-#include <akntitle.h>
-#include <hlplch.h>
-#include <avkon.rsg>
-#include <bautils.h>
-#include <AknUtils.h>
-#include <hgteleport.rsg>
-#include <pslninternalcrkeys.h>
-#include <oommonitorsession.h>
-#include <hal.h>
-#include <hal_data.h>
-#include <akntranseffect.h>
-
-
-// AknCapServer UID, used for P&S category
-const TUid KTeleportStateCategory = { 0x10207218 };
-
-// Teleport UI, used as P&S key
-const TInt KTeleportStateKey = KHgTeleportAppUidValue;
-
-// Values for Teleport launching P&S
-const TInt KTeleportBackgroundValue = 1;
-const TInt KTeleportForegroundValue = KTeleportBackgroundValue << 1;
-const TInt KTeleportShortAppKeyPressed = KTeleportForegroundValue << 1;
-const TInt KTeleportLongAppKeyPressed = KTeleportShortAppKeyPressed << 1;
-
-//short/long App key values 
-const TInt KAppKeyTypeShort = 1;
-const TInt KAppKeyTypeLong = 2;
-
-//values for checking the OOM
-const TInt KMemoryRequestAmountInBytes = 524288;
-const TInt KMinMemoryAmountInBytes = 524288;
-const TInt KMemoryToBeReservedInBytes = 524288; // 512 KB
-
-// time to wait before sending the task to background
-// (must give time to animation)
-const TInt KWaitBeforeGoingToBackground = 100000;
-
-// -----------------------------------------------------------------------------
-// CHgTeleportAppUi::ConstructL()
-// ConstructL is called by the application framework
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportAppUi::ConstructL()
-    {
-    HGLOG_CONTEXT( CHgTeleportAppUi::ConstructL, HGLOG_LOCAL );
-    HGLOG_IN();
-
-#ifdef _DEBUG
-    // create log folder
-	_LIT( KLogPath, "c:\\logs\\teleport\\" );
-	RFs fs;
-	if ( fs.Connect() == KErrNone )
-		{
-		fs.MkDirAll( KLogPath );
-		fs.Close();
-		}
-#endif
-
-    // Initialise app UI with standard value.
-    BaseConstructL( CAknAppUi::EAknEnableSkin | CAknAppUi::EAknEnableMSK );
-
-#ifndef _DEBUG
-    // set as system application (in release build) so we never get closed
-    iEikonEnv->SetSystem( ETrue );
-#endif
-
-    //Initialize effects change observation
-    iThemeEffectsEnabledWatcher =
-        CHgCenrepListener::NewL( KCRUidThemes, KThemesTransitionEffects, *this );
-    CenrepChanged( KThemesTransitionEffects, iThemeEffectsEnabledWatcher->Value() );
-    
-    // Hide status pane
-    StatusPane()->MakeVisible( EFalse );
-
-    // Change CBA if needed, default is non-touch in rss
-    if ( AknLayoutUtils::PenEnabled() )
-        {
-        Cba()->SetCommandSetL( R_HGTELEPORT_CBA_TOUCH );
-        }
-    Cba()->MakeVisible(EFalse);
-
-    // Create timer
-    iGoToBackgroundTimer = CPeriodic::NewL( CActive::EPriorityStandard );
-
-    // Create commonly used instances (device state only?)
-    iDeviceState = CHgTeleportDeviceState::NewL();
-
-    // Create UI
-    iAppView = CHgTeleportAppView::NewL( ApplicationRect(), *iDeviceState );
-    AddToStackL( iAppView );
-    
-    //Enable effects
-    GfxTransEffect::Enable();
-    GfxTransEffect::Register(iAppView,TUid::Uid(KHgTeleportAppUidValue));
-    GfxTransEffect::SetTransitionObserver(this);
-
-    // Listen for change in the value of the teleport state property.
-    iPropListener = new ( ELeave ) CHgPropertyListener(
-            KTeleportStateCategory, KTeleportStateKey, *this );
-
-    // Initialise the application task object with the window group id of
-    // our application ( so that it represent our app )
-    iApplicationTask.SetWgId( iCoeEnv->RootWin().Identifier() );
-
-    // And finally, go to background.
-    MoveAppToBackground( AknTransEffect::ENone );
-
-    HGLOG_OUT();
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportAppUi::CHgTeleportAppUi()
-// Perform the first phase of two phase construction
-// -----------------------------------------------------------------------------
-//
-CHgTeleportAppUi::CHgTeleportAppUi(): iForeground( ETrue ),
-                                      iApplicationTask( iCoeEnv->WsSession() )
-    {
-    // no implementation required
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportAppUi::~CHgTeleportAppUi()
-// Destructor
-// -----------------------------------------------------------------------------
-//
-CHgTeleportAppUi::~CHgTeleportAppUi()
-    {
-    if( GfxTransEffect::IsRegistered( iAppView ) )
-        {
-        GfxTransEffect::Deregister(iAppView);
-        
-        }
-    GfxTransEffect::SetTransitionObserver(0);
-    
-    delete iGoToBackgroundTimer;
-    delete iPropListener;
-
-    // destroy UI first
-    if ( iAppView )
-        {
-        RemoveFromStack( iAppView );
-        delete iAppView;
-        }
-
-    delete iDeviceState;
-    delete iMemAllocBuf;
-    delete iThemeEffectsEnabledWatcher;
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportAppView::EffectsEnabled
-// -----------------------------------------------------------------------------
-//
-TBool CHgTeleportAppUi::EffectsEnabled() const
-    {
-    return iEffectsEnabled;
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportAppUi::StartTransion
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportAppUi::StartTransion( TUint aTransitionType )
-    {
-    if( !EffectsEnabled() )
-        {
-        return;
-        }
-    switch(aTransitionType)
-        {
-    case AknTransEffect::EApplicationStart:
-        StartTransition( aTransitionType, 
-                         ETrue, 
-                         EFalse, 
-                         CAknTransitionUtils::EForceVisible);
-        break;
-    case AknTransEffect::EApplicationExit:
-        StartTransition( aTransitionType, 
-                         EFalse, 
-                         EFalse, 
-                         CAknTransitionUtils::EForceInvisible );
-        break;
-    case AknTransEffect::EApplicationStartRect:
-        StartTransition( aTransitionType, 
-                         EFalse, 
-                         ETrue, 
-                         CAknTransitionUtils::EForceInvisible );
-        break;
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportAppUi::StartTransition
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportAppUi::StartTransition( TUint aTranstionId,
-                                        TBool aVisibility,
-                                        TBool aLayers, 
-                                        TUint aSubCom )
-    {
-    const TDesC8* ptr = reinterpret_cast<const TDesC8*>(iAppView);
-    GfxTransEffect::Abort(iAppView);
-    GfxTransEffect::Begin( iAppView, aTranstionId );
-    GfxTransEffect::SetDemarcation( iAppView, iAppView->Rect() );
-    GfxTransEffect::NotifyExternalState( ECaptureComponentsBegin, ptr );
-    iAppView->MakeVisible( aVisibility );
-    CAknTransitionUtils::MakeVisibleSubComponents( 
-        iAppView,
-        static_cast<CAknTransitionUtils::TMakeVisibleSubComponentsInfo>(aSubCom) );
-    GfxTransEffect::NotifyExternalState( ECaptureComponentsEnd, ptr );
-    GfxTransEffect::End( iAppView );
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportAppUi::TransitionFinished
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportAppUi::TransitionFinished(const CCoeControl* aControl, 
-                                          TUint aAction)
-    {
-    /*if( aControl == iAppView )
-        {
-		@TODO IMPLEMENT
-        }*/
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportAppUi::HandleCommandL()
-// Takes care of command handling.
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportAppUi::HandleCommandL( TInt aCommand )
-    {
-    switch ( aCommand )
-        {
-        case EAknCmdExit:
-        case EEikCmdExit:
-            Exit();
-            break;
-
-        case EAknSoftkeyExit:
-        case EAknSoftkeyBack:
-            // RSK => just hide
-            MoveAppToBackground( AknTransEffect::EApplicationExit );
-            break;
-
-        case EHgTeleportCmdHelp:
-            {
-            MoveAppToBackground( AknTransEffect::EApplicationExit );
-            CArrayFix<TCoeHelpContext>* buf = CCoeAppUi::AppHelpContextL();
-            HlpLauncher::LaunchHelpApplicationL( iCoeEnv->WsSession(), buf );
-            }
-            break;
-
-        case EAknSoftkeySelect:
-            {
-            // select is generated by lsk and msk (see the resource file)
-            // Simulate a middle key press to the controls.
-            // Note that SimulateKeyEventL must not be used here or else it
-            // will end up in an infinite loop.
-            TKeyEvent keyEvent;
-            keyEvent.iCode = EKeyOK;
-            keyEvent.iScanCode = EStdKeyDevice3;
-            keyEvent.iModifiers = keyEvent.iRepeats = 0;
-            iAppView->OfferKeyEventL( keyEvent, EEventKeyDown );
-            iAppView->OfferKeyEventL( keyEvent, EEventKey );
-            iAppView->OfferKeyEventL( keyEvent, EEventKeyUp );
-            }
-            break;
-
-        default:
-            break;
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportAppUi::HandleForegroundEventL
-// Called by the system when the app is moved to foreground or background.
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportAppUi::HandleForegroundEventL( TBool aForeground )
-    {
-    HGLOG_CONTEXT( HandleForegroundEventL, HGLOG_LOCAL );
-    HGLOG1_IN( "aForeground = %d", aForeground );
-
-    // These calls may be redundant but the functions will do nothing if the
-    // state has already been changed.
-    // Both this function and the 'manual' MoveAppTo functions must fire the events
-    // because in some cases only one of them will run (e.g. when bringing to foreground
-    // not with the hw key but by other means etc.)
-    if ( aForeground )
-        {
-        HandleSwitchToForegroundEvent();
-        }
-    else
-        {
-        HandleSwitchToBackgroundEvent();
-        }
-
-    // Call Base class method
-    CAknAppUi::HandleForegroundEventL( aForeground );
-
-    HGLOG_OUT();
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportAppUi::PropertyChanged
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportAppUi::PropertyChanged( TUid aCategory, TUint aKey )
-    {
-    HGLOG_CONTEXT( PropertyChanged, HGLOG_LOCAL );
-    HGLOG_IN();
-
-    TInt value( 0 );
-
-    if ( RProperty::Get( aCategory, aKey, value ) == KErrNone )
-        {
-        if ( iForeground && (value & KTeleportBackgroundValue) )
-            {
-            MoveAppToBackground( AknTransEffect::EApplicationExit );
-            }
-        else if ( !iForeground && (value & KTeleportForegroundValue) )
-            {
-            MoveAppToForeground( AknTransEffect::EApplicationStart );
-            }
-        else if( value & KTeleportLongAppKeyPressed )
-            {
-            if(!iForeground)
-                {
-                MoveAppToBackground( AknTransEffect::EApplicationExit );
-                }
-            else
-                {
-                iAppView->HandleAppKey(KAppKeyTypeLong);
-                }
-            }
-        else if(  value & KTeleportShortAppKeyPressed )
-            {
-            iAppView->HandleAppKey(KAppKeyTypeShort);
-            }
-        }
-
-    HGLOG_OUT();
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportAppUi::HandleResourceChangeL
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportAppUi::HandleResourceChangeL( TInt aType )
-    {
-    // Must call base class implementation first,
-    // sizes from LayoutMetricsRect etc. will only be correct after this.
-    CAknAppUi::HandleResourceChangeL( aType );
-    if( aType == KEikDynamicLayoutVariantSwitch && iAppView )
-        {
-        iAppView->SetRect( ApplicationRect() );
-        }
-    // forward event
-    iDeviceState->HandleResourceChange( aType );
-    iAppView->HandleResourceChange( aType );
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportAppUi::MoveAppToBackground()
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportAppUi::MoveAppToBackground( TUint aTransitionType )
-    {
-    HGLOG_CONTEXT( MoveAppToBackground, HGLOG_LOCAL );
-    HGLOG_IN();
-
-    if ( AknTransEffect::ENone == aTransitionType || !EffectsEnabled() )
-        {
-        GoToBackgroundTimerCallback( this );
-        }
-    else
-        {
-        StartTransion(AknTransEffect::EApplicationExit);
-        iGoToBackgroundTimer->Cancel();
-        iGoToBackgroundTimer->Start( 
-                KWaitBeforeGoingToBackground, 
-                0,
-                TCallBack( GoToBackgroundTimerCallback, this ) );
-        }
-    HGLOG_OUT();
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportAppUi::CenrepChanged
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportAppUi::CenrepChanged( TUint32 aKey, TInt aNewValue )
-    {
-    iEffectsEnabled = !(aNewValue & AknTransEffect::EFullScreenTransitionsOff);
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportAppUi::GoToBackgroundTimerCallback
-// -----------------------------------------------------------------------------
-//
-TInt CHgTeleportAppUi::GoToBackgroundTimerCallback( TAny* aParam )
-    {
-    CHgTeleportAppUi* self = static_cast<CHgTeleportAppUi*>( aParam );
-    if ( self->iGoToBackgroundTimer )
-        {
-        self->iGoToBackgroundTimer->Cancel();
-        }
-
-    // Request window server to bring our application
-    // to background
-    self->iApplicationTask.SendToBackground();
-
-    // Notify
-    self->HandleSwitchToBackgroundEvent();
-
-    return 0;
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportAppUi::MoveAppToForeground()
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportAppUi::MoveAppToForeground( TUint  /*aTransitionType*/ )
-    {
-    HGLOG_CONTEXT( MoveAppToForeground, HGLOG_LOCAL );
-    HGLOG_IN();
-
-    // Request window server to bring our application
-    // to foreground
-    iApplicationTask.BringToForeground();
-
-    // Notify
-    HandleSwitchToForegroundEvent();
-
-    HGLOG_OUT();
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportAppUi::HandleSwitchToBackgroundEvent
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportAppUi::HandleSwitchToBackgroundEvent()
-    {
-    HGLOG_CONTEXT( HandleSwitchToBackgroundEvent, HGLOG_LOCAL );
-    HGLOG_IN();
-
-    // must not do anything if iForeground is already up-to-date
-    // exclude cases with dialogs like power menu, memory card
-    if( iForeground && !IsFaded() )  
-        {
-        iForeground = EFalse;
-        SetTeleportStateProperty( KTeleportBackgroundValue );
-
-        //allocating extra memory space
-        if ( !iMemAllocBuf )
-            {
-            iMemAllocBuf =
-                (TUint8*) User::Alloc( KMemoryToBeReservedInBytes );
-            }
-
-        // notify view
-        iAppView->HandleSwitchToBackgroundEvent();
-        }
-
-    HGLOG_OUT();
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportAppUi::HandleSwitchToForegroundEvent
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportAppUi::HandleSwitchToForegroundEvent()
-    {
-    HGLOG_CONTEXT( HandleSwitchToForegroundEvent, HGLOG_LOCAL );
-    HGLOG_IN();
-
-    // must not do anything if iForeground is already up-to-date
-    if ( !iForeground )
-        {
-        //freeing extra memory space
-        delete iMemAllocBuf;
-        iMemAllocBuf = NULL;
-
-        TInt freeRamMemory;
-        HAL::Get( HALData::EMemoryRAMFree, freeRamMemory );
-        if ( freeRamMemory <= KMinMemoryAmountInBytes )
-            {
-            FreeMemoryRequest();
-            }
-
-        iForeground = ETrue;
-        SetTeleportStateProperty( KTeleportForegroundValue );
-
-        // notify view
-        iAppView->HandleSwitchToForegroundEvent();
-        }
-
-    HGLOG_OUT();
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportAppUi::SetTeleportShowProperty
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportAppUi::SetTeleportStateProperty( TInt aValue )
-    {
-    HGLOG_CONTEXT( CHgTeleportAppUi::SetTeleportShowProperty, HGLOG_LOCAL );
-    HGLOG_IN();
-
-    if ( RProperty::Set(
-            KTeleportStateCategory, KTeleportStateKey, aValue ) != KErrNone )
-        {
-        TInt error = RProperty::Define(
-                KTeleportStateCategory, KTeleportStateKey, RProperty::EInt );
-        if ( error != KErrNone )
-            {
-            HGLOG1( HGLOG_INFO, "RProperty::Define Error: %d", error );
-            }
-
-        error = RProperty::Set( KTeleportStateCategory, KTeleportStateKey, aValue );
-        if ( error != KErrNone )
-            {
-            HGLOG1( HGLOG_INFO, "RProperty::Set Error: %d", error );
-            }
-        }
-
-    HGLOG_OUT();
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportAppUi::FreeMemoryRequest
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportAppUi::FreeMemoryRequest()
-    {
-    HGLOG_CONTEXT( CHgTeleportAppUi::FreeMemoryRequest, HGLOG_LOCAL );
-    HGLOG_IN();
-    ROomMonitorSession oomMs;
-    TInt error = oomMs.Connect();
-    if ( error != KErrNone)
-        {
-        HGLOG1( HGLOG_INFO, "Could not connect to ROomMonitorSession, %d", error );
-        }
-    else
-        {
-        oomMs.RequestFreeMemory( KMemoryRequestAmountInBytes );
-        oomMs.Close();
-        }
-    HGLOG_OUT();
-    }
-
-
-// End of file
--- a/taskswitcher/teleportui/hgteleportapp/src/hgteleportappview.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,734 +0,0 @@
- /*
- * ============================================================================
- *  Name        : hgteleportappview.cpp
- *  Part of     : Hg Teleport
- *  Description : Teleport view class
- *  Version     : %version: sa1spcx1#54 %
- *
- *  Copyright © 2008 Nokia.  All rights reserved.
- *  This material, including documentation and any related computer
- *  programs, is protected by copyright controlled by Nokia.  All
- *  rights are reserved.  Copying, including reproducing, storing,
- *  adapting or translating, any or all of this material requires the
- *  prior written consent of Nokia.  This material also contains
- *  confidential information which may not be disclosed to others
- *  without the prior written consent of Nokia.
- * ============================================================================
- *
- */
-
-#include <AknUtils.h>
-#include <AknsUtils.h>
-#include <aknlayoutscalable_apps.cdl.h>
-#include <aknlayoutscalable_avkon.cdl.h>
-#include <layoutmetadata.cdl.h>
-#include <AknsFrameBackgroundControlContext.h>
-#include <AknsDrawUtils.h>
-#include <eikmenub.h>
-#include <gfxtranseffect/gfxtranseffect.h>
-#include <akntransitionutils.h>
-#include <akntranseffect.h>
-#include <aknPopupHeadingPane.h>
-#include <StringLoader.h>
-#include <hgteleport.rsg>
-#include <touchfeedback.h>
-
-#include "hgteleportappview.h"
-#include "hgteleportappui.h"
-#include "hgteleportapplogging.h"
-#include "hgteleportfastswaparea.h"
-#include "hgteleporteventcontroler.h"
-#include "hgteleportuid.hrh"
-
-// -----------------------------------------------------------------------------
-// CHgTeleportAppView::NewL
-// -----------------------------------------------------------------------------
-//
-CHgTeleportAppView* CHgTeleportAppView::NewL( const TRect& aRect,
-        CHgTeleportDeviceState& aDeviceState )
-    {
-    CHgTeleportAppView* self = CHgTeleportAppView::NewLC( aRect, aDeviceState );
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportAppView::NewLC
-// -----------------------------------------------------------------------------
-//
-CHgTeleportAppView* CHgTeleportAppView::NewLC( const TRect& aRect,
-        CHgTeleportDeviceState& aDeviceState )
-    {
-    CHgTeleportAppView* self = new (ELeave) CHgTeleportAppView( aDeviceState );
-    CleanupStack::PushL( self );
-    self->ConstructL( aRect );
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportAppView::CHgTeleportAppView
-// -----------------------------------------------------------------------------
-//
-CHgTeleportAppView::CHgTeleportAppView(CHgTeleportDeviceState& aDeviceState)
-        : iDeviceState( aDeviceState )
-    {
-    // no implementation required
-    }
-
-// -----------------------------------------------------------------------------
-// InvalidateWindows
-// -----------------------------------------------------------------------------
-//
-static void InvalidateWindows( CCoeControl* aControl )
-    {
-    if ( aControl )
-        {
-        if ( aControl->OwnsWindow() )
-            {
-            static_cast<RWindow*>( aControl->DrawableWindow() )->ClearRedrawStore();
-            }
-
-        for ( TInt i = aControl->CountComponentControls() - 1; i >= 0; --i )
-            {
-            InvalidateWindows( aControl->ComponentControl( i ) );
-            }
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportAppView::~CHgTeleportAppView
-// -----------------------------------------------------------------------------
-//
-CHgTeleportAppView::~CHgTeleportAppView()
-    {
-    GfxTransEffect::SetTransitionObserver( 0 );
-    if ( GfxTransEffect::IsRegistered( this ) )
-        {
-        MakeVisible( EFalse ); 
-        CAknTransitionUtils::MakeVisibleSubComponents( this,
-            CAknTransitionUtils::EForceInvisible );
-        GfxTransEffect::Deregister( this );
-        }
-    delete iBgContext;
-    delete iFastSwapArea;
-    delete iAppsHeading;
-    
-    delete iEvtHandler;
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportAppView::ConstructL
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportAppView::ConstructL( const TRect& aRect )
-    {
-    HGLOG_CONTEXT( CHgTeleportAppView::ConstructL, HGLOG_LOCAL );
-    HGLOG_IN();
-
-    // Create a window for this application view
-    CreateWindowL();
-
-    // Store rect
-    TInt variety = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0;
-    TAknLayoutRect mainView;
-    mainView.LayoutRect( aRect,
-            AknLayoutScalable_Apps::main_tport_pane( variety ) );
-    iViewRect = mainView.Rect();
-
-    // Background control context is for a frame
-    UpdatePopupRects();
-    iBgContext = CAknsFrameBackgroundControlContext::NewL(
-               KAknsIIDQsnFrPopup,
-               iBgContextOuterRect,
-               iBgContextInnerRect,
-               ETrue );
-    iBgContext->SetFrameRects(iBgContextOuterRect, iBgContextInnerRect);
-    iBgContext->SetCenter( KAknsIIDQsnFrPopupCenter );
-
-    HGLOG4( HGLOG_INFO, "view rect = %d %d %d %d",
-        iViewRect.iTl.iX, iViewRect.iTl.iY,
-        iViewRect.iBr.iX, iViewRect.iBr.iY );
-
-    // Create components
-    CreateControlsL();
-
-    // Hide 'active applications' item in Options menu
-    CEikMenuBar* menub = iEikonEnv->AppUiFactory()->MenuBar();
-    if ( menub )
-        {
-        menub->SetMenuType( CEikMenuBar::EMenuOptionsNoTaskSwapper );
-        }
-
-    // Register for notifications about orientation etc. changes
-    iDeviceState.AddObserverL( *this, MHgDeviceStateObserver::EAny );
-    SetRect( iViewRect );
-    //SetExtentToWholeScreen();
-    iViewRect = Rect();
-    // try to enable window transparency
-    if( CAknEnv::Static()->TransparencyEnabled() )
-        {
-        Window().SetRequiredDisplayMode( EColor16MA );
-        if ( Window().SetTransparencyAlphaChannel() == KErrNone )
-            {
-            Window().SetBackgroundColor( ~0 );
-            }
-        }
-    
-    DrawableWindow()->EnableBackup(EWindowBackupFullScreen);
-    Window().SetOrdinalPosition( 0, ECoeWinPriorityNormal );
-    SetComponentsToInheritVisibility(ETrue);
-    MakeVisible(ETrue);
-    // Ready to be drawn
-    ActivateL();
-    
-    HGLOG_OUT();
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportAppView::DisableAppSwitchEffects
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportAppView::DisableAppSwitchEffects()
-    {
-    TInt flags = AknTransEffect::TParameter::ENoEffects;
-    GfxTransEffect::BeginFullScreen(
-        AknTransEffect::ENone,
-        TRect(0,0,0,0),
-        AknTransEffect::EParameterType,
-        AknTransEffect::GfxTransParam( TUid::Uid(KHgTeleportAppUidValue), flags ) );
-    }
-        
-// -----------------------------------------------------------------------------
-// CHgTeleportAppView::GetPopupRects
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportAppView::UpdatePopupRects(  )
-    {
-    HGLOG_CONTEXT( UpdatePopupRects, HGLOG_LOCAL );
-    HGLOG_IN();
-
-    TInt variety = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0;
-    
-    TAknLayoutRect bgTport;
-    bgTport.LayoutRect( iViewRect,
-        AknLayoutScalable_Apps::bg_popup_window_pane_cp01( variety ) );
-    iBgContextOuterRect = bgTport.Rect();
-    bgTport.LayoutRect( iBgContextOuterRect,
-        AknLayoutScalable_Avkon::aid_inside_area_window_primary( variety ) );
-    iBgContextInnerRect = bgTport.Rect();
-    HGLOG4( HGLOG_INFO, "outer rect for popup = %d %d %d %d",
-            iBgContextOuterRect.iTl.iX, iBgContextOuterRect.iTl.iY,
-            iBgContextOuterRect.iBr.iX, iBgContextOuterRect.iBr.iY );
-    HGLOG4( HGLOG_INFO, "inner rect for popup = %d %d %d %d",
-            iBgContextInnerRect.iTl.iX, iBgContextInnerRect.iTl.iY,
-            iBgContextInnerRect.iBr.iX, iBgContextInnerRect.iBr.iY );
-   
-#ifdef TASKSWITCHER_USE_CUSTOM_LAYOUT
-    if ( iFastSwapArea )
-        {
-        iBgContextOuterRect = iFastSwapArea->Rect();
-        iBgContextInnerRect = iFastSwapArea->Rect();
-        }
-#endif
-    
-    HGLOG_OUT();
-    }
-    
-// -----------------------------------------------------------------------------
-// CHgTeleportAppView::CreateControlsL
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportAppView::CreateControlsL()
-    {
-    RArray<TRect> rects;
-    CleanupClosePushL( rects );
-    rects.ReserveL( 2 ); // so appending in GetRects cannot fail
-    GetRects( rects );
-
-    iEvtHandler = CHgTeleportEventControler::NewL(*this, *this);
-    iFastSwapArea = CHgTeleportFastSwapArea::NewL(rects[1], *this,
-            iDeviceState, *iEvtHandler);
-    iAppsHeading = new ( ELeave ) CAknPopupHeadingPane;
-
-    iFastSwapArea->SetMopParent( this );
-    iFastSwapArea->SetFocusing( ETrue );
-    iFastSwapArea->Setup( *this );
-    iFastSwapArea->SetDataChangeObserver( this );
-    
-    iAppsHeading->SetContainerWindowL( *this );
-    iAppsHeading->ConstructL( KNullDesC() );
-    iAppsHeading->SetLayout( CAknPopupHeadingPane::EListHeadingPane ); 
-
-    //TODO: check why we need to set rect (set already in contructL)
-    iFastSwapArea->SetRect( rects[1] ); // cannot be before iAppsHeading constructL
-    iAppsHeading->SetRect( rects[0] );
-    
-    CleanupStack::PopAndDestroy( &rects );
-    
-    UpdateHeadingsL();
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportAppView::GetRects
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportAppView::GetRects( RArray<TRect>& aRects )
-    {
-    HGLOG_CONTEXT( CHgTeleportAppView::GetRects, HGLOG_LOCAL );
-    HGLOG_IN();
-    
-#ifndef TASKSWITCHER_USE_CUSTOM_LAYOUT
-    TInt variety = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0;
-    
-    TAknLayoutRect appsLabel;
-    TAknLayoutRect fastSwapAreaPane;
-
-    appsLabel.LayoutRect( iViewRect,
-            AknLayoutScalable_Apps::heading_pane_cp07( variety ) );
-    HGLOG4( HGLOG_INFO, "apps heading rect = %d %d %d %d",
-            appsLabel.Rect().iTl.iX, appsLabel.Rect().iTl.iY,
-            appsLabel.Rect().iBr.iX, appsLabel.Rect().iBr.iY );
-
-    
-    fastSwapAreaPane.LayoutRect( iViewRect,
-            AknLayoutScalable_Apps::tport_appsw_pane( variety ) );
-    HGLOG4( HGLOG_INFO, "fsw rect = %d %d %d %d",
-            fastSwapAreaPane.Rect().iTl.iX, fastSwapAreaPane.Rect().iTl.iY,
-            fastSwapAreaPane.Rect().iBr.iX, fastSwapAreaPane.Rect().iBr.iY );
-
-    aRects.Append( appsLabel.Rect() );
-    aRects.Append( fastSwapAreaPane.Rect() );
-#else
-    TRect tempRect;
-    AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EScreen, tempRect);
-    tempRect.iTl = TPoint(0,0);
-    TRect fastSwapRect, headingRect;
-    fastSwapRect.iTl = TPoint(KFswBorderSize, (tempRect.Height() - KFswItemHeight - KFswHeadingHeight) / 2 + KFswHeadingHeight);
-    fastSwapRect.iBr = TPoint(tempRect.iBr.iX - KFswBorderSize, fastSwapRect.iTl.iY + KFswItemHeight);
-    headingRect.iTl = TPoint(KFswBorderSize, fastSwapRect.iTl.iY - KFswHeadingHeight);
-    headingRect.iBr = TPoint(fastSwapRect.iBr.iX, fastSwapRect.iTl.iY);
-    aRects.Append( headingRect );
-    aRects.Append( fastSwapRect );
-#endif
-
-    HGLOG_OUT();
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportAppView::SizeChanged
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportAppView::SizeChanged()
-    {
-    HGLOG_CONTEXT( CHgTeleportAppView::SizeChanged, HGLOG_LOCAL );
-    HGLOG_IN();
-    UpdatePopupRects();
-    iBgContext->SetFrameRects(iBgContextOuterRect, iBgContextInnerRect);
-    if ( iFastSwapArea && iAppsHeading  )
-        {
-        RArray<TRect> rects;
-        // make sure that appending in GetRect cannot fail
-        if ( rects.Reserve( 2 ) == KErrNone )
-            {
-            GetRects( rects );
-            iAppsHeading->SetRect( rects[0] );
-            iFastSwapArea->SetRect( rects[1] );
-            
-            DrawDeferred();
-            }
-        rects.Close();
-
-        // Focus jumps back to fsw
-        ChangeFocus( iFastSwapArea );
-        }
-
-    HGLOG_OUT();
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportAppView::Draw
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportAppView::Draw( const TRect& aRect ) const
-    {
-    if ( aRect == Rect() )
-        {
-        CWindowGc& gc = SystemGc();
-        MAknsSkinInstance* skin = AknsUtils::SkinInstance();
-        AknsDrawUtils::DrawFrame( skin,
-               gc,
-               iBgContextOuterRect,
-               iBgContextInnerRect,
-               KAknsIIDQsnFrPopup,
-               KAknsIIDQsnFrPopupCenter );
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportAppView::MopSupplyObject
-// -----------------------------------------------------------------------------
-//
-TTypeUid::Ptr CHgTeleportAppView::MopSupplyObject( TTypeUid aId )
-    {
-    if ( aId.iUid == MAknsControlContext::ETypeId )
-        {
-        return MAknsControlContext::SupplyMopObject( aId, iBgContext );
-        }
-    return CCoeControl::MopSupplyObject( aId );
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportAppView::OfferKeyEventL
-// -----------------------------------------------------------------------------
-//
-TKeyResponse CHgTeleportAppView::OfferKeyEventL(
-        const TKeyEvent& aKeyEvent,
-        TEventCode aType )
-    {
-    HGLOG_CONTEXT( OfferKeyEventL, HGLOG_LOCAL );
-    HGLOG2_IN( "iCode = %d type = %d", aKeyEvent.iCode, aType );
-
-    TKeyResponse result = EKeyWasNotConsumed;
-
-    // Always use the portrait version, the layout in landscape is now
-    // similar to portrait.
-    result = OfferKeyEventPortraitStyleL( aKeyEvent, aType );
-
-    // handle some other keys
-    if ( result == EKeyWasNotConsumed && aType == EEventKey )
-        {
-        switch ( aKeyEvent.iCode )
-            {
-            case EKeyYes: // send (green) key
-                result = EKeyWasConsumed;
-                break;
-            }
-        }
-
-    // forward to focused control if not yet handled
-    if ( result == EKeyWasNotConsumed && iFocused )
-        {
-        result = iFocused->OfferKeyEventL( aKeyEvent, aType );
-        }
-
-    HGLOG1_OUT( "response = %d", result );
-    return result;
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportAppView::OfferKeyEventPortraitStyleL
-// -----------------------------------------------------------------------------
-//
-TKeyResponse CHgTeleportAppView::OfferKeyEventPortraitStyleL(
-        const TKeyEvent& /*aKeyEvent*/, TEventCode /*aType*/)
-    {
-    TKeyResponse result = EKeyWasNotConsumed;
-    return result;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CHgTeleportAppView::CountComponentControls
-// -----------------------------------------------------------------------------
-//
-TInt CHgTeleportAppView::CountComponentControls() const
-    {
-    return 2;
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportAppView::ComponentControl
-// -----------------------------------------------------------------------------
-//
-CCoeControl* CHgTeleportAppView::ComponentControl( TInt aIndex ) const
-    {
-    switch ( aIndex )
-        {
-        case 0:
-            return iFastSwapArea;
-        case 1:
-            return iAppsHeading;
-        default:
-            return NULL;
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportAppView::HandleSwitchToBackgroundEvent
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportAppView::HandleSwitchToBackgroundEvent()
-    {
-    // Stop animation and unfade
-    GfxTransEffect::Abort();
-    iPopupFader.FadeBehindPopup( this, NULL, EFalse );
-    
-    GfxTransEffect::Begin( this, 5);
-    // Forward event to interested controls
-    iFastSwapArea->HandleSwitchToBackgroundEvent();
-
-    // Hide
-    MakeVisible( EFalse );
-    //GfxTransEffect::NotifyExternalState( ENotifyGlobalAbort );
-    CAknTransitionUtils::MakeVisibleSubComponents( this,
-        CAknTransitionUtils::EForceInvisible );
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportAppView::HandleSwitchToForegroundEvent
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportAppView::HandleSwitchToForegroundEvent()
-    {
-    Window().Invalidate(Rect());
-    
-    // Fade behind the pop-up
-    iPopupFader.FadeBehindPopup( this, NULL, ETrue );
-
-    DrawDeferred(); // otherwise some parts may not be drawn properly
-
-    // Focus jumps back to fsw
-    ChangeFocus( iFastSwapArea );
-
-    // Forward event to interested controls
-    iFastSwapArea->HandleSwitchToForegroundEvent();
-
-    // Start animation
-    CHgTeleportAppUi* appui =
-        static_cast<CHgTeleportAppUi*>( iEikonEnv->AppUi() );
-    if ( appui->EffectsEnabled() )
-        {
-        InvalidateWindows( this );
-        appui->StartTransion(AknTransEffect::EApplicationStart);
-        }
-    else
-        {
-        CAknTransitionUtils::MakeVisibleSubComponents( this,
-            CAknTransitionUtils::EForceVisible );
-        MakeVisible( ETrue );
-        }
-    
-    DrawDeferred();
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportAppView::ChangeFocus
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportAppView::ChangeFocus( CCoeControl* aNewFocusedControl )
-    {
-    if ( iFocused != aNewFocusedControl )
-        {
-        if ( iFocused )
-            {
-            iFocused->SetFocus( EFalse, EDrawNow );
-            }
-        iFocused = aNewFocusedControl;
-        if ( iFocused )
-            {
-            iFocused->SetFocus( ETrue, EDrawNow );
-            }
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportAppView::HandleControlEventL
-// EEventRequestFocus must be handled to have proper focus change also with
-// pointer events.
-// Observed controls are the ganes list and grid.
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportAppView::HandleControlEventL( CCoeControl* aControl,
-        TCoeEvent aEventType )
-    {
-    switch ( aEventType )
-        {
-        case EEventRequestFocus:
-            // must use the parent because aControl is the ganes control
-            ChangeFocus( aControl->Parent() );
-            break;
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportAppView::HandleDeviceStateChanged
-// Called when screen orientation, touch awareness, or the skin has been changed.
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportAppView::HandleDeviceStateChanged( TChangeType /*aChangeType*/ )
-    {
-    HGLOG_CONTEXT( HandleDeviceStateChanged, HGLOG_LOCAL );
-    HGLOG_IN();
-
-    // Just set all the sizes, even when there is a skin change, because this will
-    // guarantee proper redraw also with the ganes controls.
-
-    iViewRect = Rect();
-    HGLOG4( HGLOG_INFO, "setting rect %d %d %d %d",
-        iViewRect.iTl.iX, iViewRect.iTl.iY,
-        iViewRect.iBr.iX, iViewRect.iBr.iY );
-    SetRect( iViewRect );
-
-    HGLOG_OUT();
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportAppView::CountFadedComponents
-// -----------------------------------------------------------------------------
-//
-TInt CHgTeleportAppView::CountFadedComponents()
-    {
-    return 3;
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportAppView::FadedComponent
-// -----------------------------------------------------------------------------
-//
-CCoeControl* CHgTeleportAppView::FadedComponent( TInt aIndex )
-    {
-    // well, these are in fact the components that will _not_ be faded...
-    // Must return the bottom-level controls here, e.g. the ganes controls, not the wrappers over them.
-    switch ( aIndex )
-        {
-        case 0:
-            return this;
-        case 1:
-            return iFastSwapArea->GetChildControl();
-        case 2:
-            return iAppsHeading;
-//        case 3:
-//            return iEikonEnv->AppUiFactory()->Cba();
-        default:
-            return NULL;
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportAppView::HandlePointerEventL
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportAppView::HandlePointerEventL( const TPointerEvent &aPointerEvent )
-    {
-    MTouchFeedback* feedback = MTouchFeedback::Instance();
-    if(0 != feedback &&
-       (TPointerEvent::EButton1Down == aPointerEvent.iType || 
-       TPointerEvent::EButton1Up == aPointerEvent.iType))
-        {
-        feedback->InstantFeedback(this,
-                                  ETouchFeedbackBasic, 
-                                  ETouchFeedbackVibra, 
-                                  aPointerEvent);
-        } 
-    iFastSwapArea->HandlePointerEventL(aPointerEvent);
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportAppView::DataChanged
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportAppView::DataChanged( CCoeControl* /*aWhere*/, TInt /*aNewCount*/ )
-    {
-    TRAP_IGNORE( UpdateHeadingsL() );
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportAppView::UpdateHeadingsL
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportAppView::UpdateHeadingsL()
-    {
-#ifndef TASKSWITCHER_USE_CUSTOM_LAYOUT
-    HBufC* text = StringLoader::LoadLC(
-        R_TASK_SWITCHER_HEADING_APPLICATIONS );
-#else
-    _LIT( KTitle, "Task switcher" );
-    HBufC* text = KTitle().AllocLC();
-#endif
-    iAppsHeading->SetTextL( *text );
-    iAppsHeading->DrawDeferred();
-    CleanupStack::PopAndDestroy( text );
-
-    }
-
-
-// -----------------------------------------------------------------------------
-// CHgTeleportAppView::HandleAppKey
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportAppView::HandleAppKey(TInt aType)
-    {
-    iFastSwapArea->HandleAppKey(aType);
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportAppView::MoveOffset
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportAppView::MoveOffset(const TPoint& aOffset)
-    {
-    iFastSwapArea->MoveOffset(aOffset);
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportAppView::TapL
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportAppView::TapL(const TPoint& aPoint)
-    {
-    if(iFastSwapArea->Rect().Contains(aPoint))
-        {
-        iFastSwapArea->TapL(aPoint);
-        }
-    else if( !iAppsHeading->Rect().Contains(aPoint))
-        {
-        //move task switcher to background
-        iEikonEnv->EikAppUi()->HandleCommandL(EAknSoftkeyExit);
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportAppView::LongTapL
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportAppView::LongTapL(const TPoint& aPoint)
-    {
-    if(iFastSwapArea->Rect().Contains(aPoint))
-        {
-        iFastSwapArea->LongTapL(aPoint);
-        }
-    else if( !iAppsHeading->Rect().Contains(aPoint))
-        {
-        //move task switcher to background
-        iEikonEnv->EikAppUi()->HandleCommandL(EAknSoftkeyExit);
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportAppView::Drag()
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportAppView::Drag(const MAknTouchGestureFwDragEvent& aEvent)
-    {
-    iFastSwapArea->Drag(aEvent);
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportAppView::Stop
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportAppView::Stop()
-    {
-    iFastSwapArea->Stop();
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportAppView::ViewPos
-// -----------------------------------------------------------------------------
-//
-TPoint CHgTeleportAppView::ViewPos() const
-    {
-    return iFastSwapArea->ViewPos();
-    }
-
-// End of file
--- a/taskswitcher/teleportui/hgteleportapp/src/hgteleportdevicestate.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,274 +0,0 @@
-/*
- * ============================================================================
- *  Name        : hgteleportdevicestate.cpp
- *  Part of     : Hg Teleport
- *  Description : Device state (touch mode, screen orientation) handler
- *  Version     : %version: sa1spcx1#14 %
- *
- *  Copyright © 2008 Nokia.  All rights reserved.
- *  This material, including documentation and any related computer
- *  programs, is protected by copyright controlled by Nokia.  All
- *  rights are reserved.  Copying, including reproducing, storing,
- *  adapting or translating, any or all of this material requires the
- *  prior written consent of Nokia.  This material also contains
- *  confidential information which may not be disclosed to others
- *  without the prior written consent of Nokia.
- * ============================================================================
- * Template version: 4.2
- */
-
-#include "hgteleportdevicestate.h"
-#include <AknUtils.h>
-#include <hwrmdomainpskeys.h>
-
-#include "hgteleportapplogging.h"
-
-
-// -----------------------------------------------------------------------------
-// CHgTeleportDeviceState::NewL
-// -----------------------------------------------------------------------------
-//
-CHgTeleportDeviceState* CHgTeleportDeviceState::NewL()
-    {
-    CHgTeleportDeviceState* self = new ( ELeave ) CHgTeleportDeviceState;
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportDeviceState::CHgTeleportDeviceState
-// -----------------------------------------------------------------------------
-//
-CHgTeleportDeviceState::CHgTeleportDeviceState()
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportDeviceState::ConstructL
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportDeviceState::ConstructL()
-    {
-    iFlipStatusObserver = new ( ELeave ) CHgPropertyListener(KPSUidHWRM,	
-		KHWRMFlipStatus, *this);
-    // check if touch is enabled or not
-    CheckTouchState();
-    // are we in portrait or landscape
-    CheckOrientation();
-    // checks the qwerty input mode.
-    CheckDeviceType();
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportDeviceState::~CHgTeleportDeviceState
-// -----------------------------------------------------------------------------
-//
-CHgTeleportDeviceState::~CHgTeleportDeviceState()
-    {
-    iObservers.Close();
-    delete iFlipStatusObserver;
-    }
-
-// --------------------------------------------------------------------------
-// CHgTeleportDeviceState::HandleResourceChange
-// --------------------------------------------------------------------------
-//
-void CHgTeleportDeviceState::HandleResourceChange( TInt aType )
-    {
-    HGLOG_CONTEXT( HandleResourceChange, HGLOG_LOCAL );
-    HGLOG2_IN( "aType = %d (active count = %d)", aType, iResChangeActiveCount );
-
-    // increase function entrance count
-    ++iResChangeActiveCount;
-    // if we are still in a previous call then do nothing else
-    if ( iResChangeActiveCount == 1 )
-        {
-        // the active count may increase during execution of the body of the loop
-        // (if some observers have active scheduler waits, for example)
-        while ( iResChangeActiveCount > 0 )
-            {
-            if ( aType == KEikDynamicLayoutVariantSwitch )
-                {
-                HGLOG0( HGLOG_INFO, "dyn layout var switch" );
-                // This might be a screen orientation or touch-nontouch switch,
-                // so let's check the situation and notify observers if needed.
-                CheckTouchState();
-                CheckOrientation();
-                }
-            else if ( aType == KAknsMessageSkinChange )
-                {
-                HGLOG0( HGLOG_INFO, "skin change" );
-                NotifyObservers( MHgDeviceStateObserver::ESkin );
-                }
-            --iResChangeActiveCount;
-            }
-        }
-        
-    HGLOG_OUT();
-    }
-
-// --------------------------------------------------------------------------
-// CHgTeleportDeviceState::PropertyChanged
-// --------------------------------------------------------------------------
-//
-void CHgTeleportDeviceState::PropertyChanged(TUid aCategory, TUint aKey)
-    {
-    HGLOG_CONTEXT( PropertyChanged, HGLOG_LOCAL );
-    HGLOG2_IN( "aKey = %d aNewValue = %d", aCategory, aKey );
-    CheckDeviceType();
-    HGLOG_OUT();
-    }
-
-// --------------------------------------------------------------------------
-// CHgTeleportDeviceState::CheckTouchState
-// --------------------------------------------------------------------------
-//
-void CHgTeleportDeviceState::CheckTouchState()
-    {
-    HGLOG_CONTEXT( CheckTouchState, HGLOG_LOCAL );
-    HGLOG_IN();
-
-    TTouchState oldValue = iTouchState;
-    iTouchState = AknLayoutUtils::PenEnabled() ? ETouchEnabled : ETouchDisabled;
-    if ( iTouchState != oldValue )
-        {
-        NotifyObservers( MHgDeviceStateObserver::ETouchState );
-        }
-
-    HGLOG1_OUT( "new value for iTouchState: %d", iTouchState );
-    }
-
-// --------------------------------------------------------------------------
-// CHgTeleportDeviceState::CheckOrientation
-// --------------------------------------------------------------------------
-//
-void CHgTeleportDeviceState::CheckOrientation()
-    {
-    HGLOG_CONTEXT( CheckOrientation, HGLOG_LOCAL );
-    HGLOG_IN();
-
-    TRect rect;
-    AknLayoutUtils::LayoutMetricsRect ( AknLayoutUtils::EScreen, rect );
-    TOrientation oldValue = iOrientation;
-    iOrientation = rect.Width() > rect.Height() ? ELandscape : EPortrait;
-    if ( iOrientation != oldValue )
-        {
-        NotifyObservers( MHgDeviceStateObserver::EOrientation );
-        }
-
-    HGLOG1_OUT( "new value for iOrientation: %d", iOrientation );
-    }
-
-// --------------------------------------------------------------------------
-// CHgTeleportDeviceState::DeviceType
-// --------------------------------------------------------------------------
-//
-void CHgTeleportDeviceState::CheckDeviceType()
-    {
-    HGLOG_CONTEXT( CheckQwerty, HGLOG_LOCAL );
-    HGLOG_IN();
-
-    TInt oldDeviceType = iDeviceType;
-    TInt value( 0 );
-    if( RProperty::Get( KPSUidHWRM, KHWRMFlipStatus, value ) == KErrNone )
-    	{
-    	iDeviceType = (value == EPSHWRMFlipOpen ? EHybrid : EFullTouch);
-    	}
-    
-    if( iDeviceType != oldDeviceType )
-        {
-        NotifyObservers( MHgDeviceStateObserver::EDeviceType);
-        }
-
-    HGLOG1_OUT( "new value for iDeviceType: %d", iDeviceType );
-    }
-
-// --------------------------------------------------------------------------
-// CHgTeleportDeviceState::TouchState
-// --------------------------------------------------------------------------
-//
-CHgTeleportDeviceState::TTouchState CHgTeleportDeviceState::TouchState() const
-    {
-    return iTouchState;
-    }
-
-// --------------------------------------------------------------------------
-// CHgTeleportDeviceState::Orientation
-// --------------------------------------------------------------------------
-//
-CHgTeleportDeviceState::TOrientation CHgTeleportDeviceState::Orientation() const
-    {
-    return iOrientation;
-    }
-
-// --------------------------------------------------------------------------
-// CHgTeleportDeviceState::Qwerty
-// --------------------------------------------------------------------------
-//
-CHgTeleportDeviceState::TDeviceType CHgTeleportDeviceState::DeviceType() const
-    {
-    return iDeviceType;
-    }
-
-// --------------------------------------------------------------------------
-// CHgTeleportDeviceState::ObserverIdentity
-// --------------------------------------------------------------------------
-//
-TBool CHgTeleportDeviceState::ObserverIdentity( const SObserver& aA,
-        const SObserver& aB )
-    {
-    return aA.iObserver == aB.iObserver;
-    }
-
-// --------------------------------------------------------------------------
-// CHgTeleportDeviceState::AddDeviceStateObserverL
-// --------------------------------------------------------------------------
-//
-void CHgTeleportDeviceState::AddObserverL( MHgDeviceStateObserver& aObserver,
-        TInt aMask )
-    {
-    iObservers.AppendL( SObserver( aMask, &aObserver ) );
-    }
-
-// --------------------------------------------------------------------------
-// CHgTeleportDeviceState::RemoveObserver
-// --------------------------------------------------------------------------
-//
-void CHgTeleportDeviceState::RemoveObserver( MHgDeviceStateObserver& aObserver )
-    {
-    for ( ; ; )
-        {
-        TInt pos = iObservers.Find( SObserver( MHgDeviceStateObserver::EAny,
-            &aObserver ), ObserverIdentity );
-        if ( pos >= 0 )
-            {
-            iObservers.Remove( pos );
-            }
-        else
-            {
-            break;
-            }
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CHgTeleportDeviceState::NotifyObservers
-// --------------------------------------------------------------------------
-//
-void CHgTeleportDeviceState::NotifyObservers(
-        MHgDeviceStateObserver::TChangeType aType )
-    {
-    for ( TInt i = 0, ie = iObservers.Count(); i != ie; ++i )
-        {
-        const SObserver& obs( iObservers[i] );
-        if ( obs.iMask & aType )
-            {
-            obs.iObserver->HandleDeviceStateChanged( aType );
-            }
-        }
-    }
-
-
-// end of file
--- a/taskswitcher/teleportui/hgteleportapp/src/hgteleportdocument.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,106 +0,0 @@
-/*
- * ============================================================================
- *  Name        : hgteleportdocument.cpp
- *  Part of     : Hg Teleport
- *  Description : Document class
- *  Version     : %version: 4 %
- *
- *  Copyright © 2008 Nokia.  All rights reserved.
- *  This material, including documentation and any related computer
- *  programs, is protected by copyright controlled by Nokia.  All
- *  rights are reserved.  Copying, including reproducing, storing,
- *  adapting or translating, any or all of this material requires the
- *  prior written consent of Nokia.  This material also contains
- *  confidential information which may not be disclosed to others
- *  without the prior written consent of Nokia.
- * ============================================================================
- * 
- */
-
-#include <apgwgnam.h>
-
-#include "hgteleportappui.h"
-#include "hgteleportdocument.h"
-
-// -----------------------------------------------------------------------------
-// CHgTeleportDocument::NewLC( )
-// Create a CHgTeleportDocument object and return a pointer to it
-// -----------------------------------------------------------------------------
-//
-CHgTeleportDocument* CHgTeleportDocument::NewL( CEikApplication& aApp )
-    {
-    CHgTeleportDocument* self = NewLC ( aApp );
-    CleanupStack::Pop ( self );
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportDocument::NewLC( )
-// Create a CHgTeleportDocument object and return a pointer to it
-// -----------------------------------------------------------------------------
-//
-CHgTeleportDocument* CHgTeleportDocument::NewLC( CEikApplication& aApp )
-    {
-    CHgTeleportDocument* self = new ( ELeave ) CHgTeleportDocument( aApp );
-    CleanupStack::PushL ( self );
-    self->ConstructL ( );
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportDocument::ConstructL( )
-// Second phase constructor
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportDocument::ConstructL( )
-    {
-    // no implementation required
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportDocument::~CHgTeleportDocument( )
-// First phase constructor
-// -----------------------------------------------------------------------------
-//
-CHgTeleportDocument::CHgTeleportDocument( CEikApplication& aApp ) :
-    CAknDocument( aApp )
-    {
-    // no implementation required
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportDocument::~CHgTeleportDocument( )
-// Destructor
-// -----------------------------------------------------------------------------
-//
-CHgTeleportDocument::~CHgTeleportDocument( )
-    {
-    // no implementation required
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportDocument::CreateAppUiL( )
-// Create a CHgTeleportAppUi object and return a pointer to it
-// -----------------------------------------------------------------------------
-//
-CEikAppUi* CHgTeleportDocument::CreateAppUiL( )
-    {
-    // Create the application user interface, and return a pointer to it,
-    // the framework takes ownership of this object
-    CEikAppUi* appUi = new ( ELeave ) CHgTeleportAppUi;
-    return appUi;
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportDocument::UpdateTaskNameL( )
-// Makes app hidden in fastswap window
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportDocument::UpdateTaskNameL( CApaWindowGroupName* aWgName )
-    {
-    CEikDocument::UpdateTaskNameL ( aWgName );
-    aWgName->SetHidden ( ETrue );
-    }
-
-
-// End of file
--- a/taskswitcher/teleportui/hgteleportapp/src/hgteleporteventcontroler.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,195 +0,0 @@
-/*
- * ============================================================================
- *  Name        : hgteleporteventcontroler.cpp
- *  Part of     : Hg Teleport
- *  Description : Gesture and physics helper declaration
- *  Version     : %version: 5 %
- *
- *  Copyright © 2008 Nokia.  All rights reserved.
- *  This material, including documentation and any related computer
- *  programs, is protected by copyright controlled by Nokia.  All
- *  rights are reserved.  Copying, including reproducing, storing,
- *  adapting or translating, any or all of this material requires the
- *  prior written consent of Nokia.  This material also contains
- *  confidential information which may not be disclosed to others
- *  without the prior written consent of Nokia.
- * ============================================================================
- *
- */
-#include "hgteleporteventcontroler.h"
-#include "hgteleportphysicsengine.h"
-
-// -----------------------------------------------------------------------------
-// NewLC
-// -----------------------------------------------------------------------------
-//
-CHgTeleportEventControler* CHgTeleportEventControler::NewLC(
-    MHgTeleportEventControlerObserver& aObserver,
-    CCoeControl& aEventSrc)
-    {
-    CHgTeleportEventControler* self = 
-        new(ELeave)CHgTeleportEventControler(aObserver);
-    CleanupStack::PushL(self);
-    self->ConstructL(aEventSrc);
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// NewL
-// -----------------------------------------------------------------------------
-//
-CHgTeleportEventControler* CHgTeleportEventControler::NewL(
-    MHgTeleportEventControlerObserver& aObserver,
-    CCoeControl& aEventSrc)
-    {
-    CHgTeleportEventControler* self = 
-        CHgTeleportEventControler::NewLC(aObserver, aEventSrc);
-    CleanupStack::Pop(self);
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// ~CHgTeleportPointerHandler
-// -----------------------------------------------------------------------------
-//
-CHgTeleportEventControler::~CHgTeleportEventControler()
-    {
-    delete iGestureHelper;
-    delete iPhysicsHelper;
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportPointerHandler
-// -----------------------------------------------------------------------------
-//
-CHgTeleportEventControler::CHgTeleportEventControler(
-    MHgTeleportEventControlerObserver& aObserver)
-    :
-    CBase(),
-    iObserver(aObserver)
-    {
-    }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportEventControler::ConstructL(CCoeControl& aEventSrc)
-    {
-    iGestureHelper = 
-        AknTouchGestureFw::CAknTouchGestureFw::NewL(*this, aEventSrc);
-    iGestureHelper->SetGestureInterestL(EAknTouchGestureFwAll);
-    iPhysicsHelper = CHgTeleportPhysicsEngine::NewL(*this, aEventSrc);
-    }
-
-// -----------------------------------------------------------------------------
-// HandleTouchGestureL
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportEventControler::HandleTouchGestureL(
-    AknTouchGestureFw::MAknTouchGestureFwEvent& aEvent)
-    {
-    if (AknTouchGestureFwEventDrag(aEvent))
-        {
-        HandleDragEventL(*AknTouchGestureFwEventDrag(aEvent));
-        }
-    else if (AknTouchGestureFwEventTap(aEvent))
-        {
-        HandleTapEventL(*AknTouchGestureFwEventTap(aEvent));
-        }
-    //ignore flick and pinch events
-    }
-
-// -----------------------------------------------------------------------------
-// HandleTapEventL
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportEventControler::HandleTapEventL(
-    MAknTouchGestureFwTapEvent& aEvent)
-    {
-    if(EAknTouchGestureFwLongTap == aEvent.Type())
-        {
-        iObserver.LongTapL(aEvent.Position());
-        }
-    else if(EAknTouchGestureFwTap == aEvent.Type())
-        {
-        if( iPhysicsHelper->IsRunning())
-            {
-            iPhysicsHelper->Stop();
-            }
-        else
-            {
-            iObserver.TapL(aEvent.Position());
-            }
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// HandleDragEventL
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportEventControler::HandleDragEventL(
-    MAknTouchGestureFwDragEvent& aEvent)
-    {
-    iObserver.Drag(aEvent);
-    iPhysicsHelper->HandleDragEvent(aEvent);
-    }
-
-// -----------------------------------------------------------------------------
-// PhysicEmulationEnded
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportEventControler::ViewPositionChanged(const TPoint& aNewPosition,
-    TBool /*aDrawNow*/,
-    TUint /*aFlags*/)
-    {
-    iObserver.MoveOffset(aNewPosition);
-    }
-
-// -----------------------------------------------------------------------------
-// PhysicEmulationEnded
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportEventControler::PhysicEmulationEnded()
-    {
-    iObserver.Stop();
-    }
-
-// -----------------------------------------------------------------------------
-// ViewPosition
-// -----------------------------------------------------------------------------
-//
-TPoint CHgTeleportEventControler::ViewPosition() const
-    {
-    return iObserver.ViewPos();
-    }
-
-// -----------------------------------------------------------------------------
-// Animate
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportEventControler::Animate(const TPoint& aPoint)
-    {
-    iPhysicsHelper->AnimateToTarget(aPoint);
-    }
-
-// -----------------------------------------------------------------------------
-// ReInitPhysicL
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportEventControler::ReInitPhysicsL(const TSize& aWorldSize,
-        const TSize& aViewSize, TBool aLandscape)
-    {
-    iPhysicsHelper->ReInitPhysicsL( aWorldSize, aViewSize, aLandscape);
-    }
-
-// -----------------------------------------------------------------------------
-// StopAnimation
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportEventControler::StopAnimation()
-    {
-    iPhysicsHelper->Stop();
-    }
-
-// end of file
--- a/taskswitcher/teleportui/hgteleportapp/src/hgteleportfastswaparea.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1642 +0,0 @@
-/*
- * ============================================================================
- *  Name        : hgteleportfastswaparea.cpp
- *  Part of     : Hg Teleport
- *  Description : Teleport Fast Swap area UI
- *  Version     : %version: sa1spcx1#74 %
- *
- *  Copyright © 2008 Nokia.  All rights reserved.
- *  This material, including documentation and any related computer
- *  programs, is protected by copyright controlled by Nokia.  All
- *  rights are reserved.  Copying, including reproducing, storing,
- *  adapting or translating, any or all of this material requires the
- *  prior written consent of Nokia.  This material also contains
- *  confidential information which may not be disclosed to others
- *  without the prior written consent of Nokia.
- * ============================================================================
- *
- */
-
-#include <gulicon.h>
-#include <eikenv.h>
-#include <AknUtils.h>
-#include <AknIconUtils.h>
-#include <AknIconArray.h>
-#include <aknstyluspopupmenu.h>
-#include <AknQueryDialog.h>
-#include <StringLoader.h>
-#include <hgteleport.rsg>
-#include <aknlayoutscalable_apps.cdl.h>
-#include <layoutmetadata.cdl.h>
-#include <aknlists.h>
-#include <touchfeedback.h>
-#include <akntransitionutils.h>
-#include <akntranseffect.h>
-
-#include "hgteleportfastswaparea.h"
-#include "hgteleportapplogging.h"
-#include "hgfswclient.h"
-#include "hgteleportappui.h"
-#include "hgteleportdatachangeobserver.h"
-#include "hgteleporteventcontroler.h"
-
-/** command ids for the fsw popup */
-enum TPopupCommands
-    {
-    EFswCmdClose = 10000,
-    EFswCmdCloseAll
-    };
-
-/** Number of closable applications, to show "close all" option. */
-const TInt KHgMaxClosableApps = 2;
-
-/** Interval until which no change in the fsw content is rendered
-    after starting the closing of an application. */
-const TInt KRefreshDelayAfterClose = 2; // seconds
-
-/** Uid of Active Idle application. 
-    Used when movind Ai to specified position.*/
-const TUid KAiUid = TUid::Uid( 0x102750F0 );
-    
-/** Position of Ai in fsw grid.*/
-const TInt KAiPosition = 0;
-
-/** Default grid item to highlight.*/
-const TInt KItemToHighlight = 3;
-
-const TInt KAppKeyTypeShort = 1;
-const TInt KAppKeyTypeLong = 2;
-
-const TInt KLayoutItemCount = 3;
-
-const TInt KRedrawTime = 250000; // 0.25 sec
-const TInt KHighlighActivationTime = 100000; // 100 ms
-const TInt KUpdateGridTime = 1000000; // 1 s
-
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::NewL
-// -----------------------------------------------------------------------------
-//
-CHgTeleportFastSwapArea* CHgTeleportFastSwapArea::NewL( const TRect& aRect,
-    CCoeControl& aParent, CHgTeleportDeviceState& aDeviceState, 
-    CHgTeleportEventControler& aEventHandler )
-    {
-    CHgTeleportFastSwapArea* self = CHgTeleportFastSwapArea::NewLC(aRect,
-            aParent, aDeviceState, aEventHandler);
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::NewLC
-// -----------------------------------------------------------------------------
-//
-CHgTeleportFastSwapArea* CHgTeleportFastSwapArea::NewLC( const TRect& aRect,
-    CCoeControl& aParent, CHgTeleportDeviceState& aDeviceState,
-    CHgTeleportEventControler& aEventHandler)
-    {
-    CHgTeleportFastSwapArea* self = new (ELeave) CHgTeleportFastSwapArea(
-            aParent, aDeviceState, aEventHandler);
-    CleanupStack::PushL( self );
-    self->ConstructL( aRect );
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::CHgTeleportFastSwapArea
-// -----------------------------------------------------------------------------
-//
-CHgTeleportFastSwapArea::CHgTeleportFastSwapArea(CCoeControl& aParent,
-    CHgTeleportDeviceState& aDeviceState,
-    CHgTeleportEventControler& aEventHandler) :
-    iParent(aParent), iDeviceState(aDeviceState), iEvtHandler(aEventHandler),
-    iPreviousNoOfItems(0)
-    {
-    // no implementation required
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::~CHgTeleportFastSwapArea
-// -----------------------------------------------------------------------------
-//
-CHgTeleportFastSwapArea::~CHgTeleportFastSwapArea()
-    {
-    iArray.ResetAndDestroy();
-    delete iGrid;
-    delete iFSClient;
-    delete iPopup;
-    delete iConfirmCloseQuery;
-    delete iHighlightTimer;
-    delete iRedrawTimer;
-    delete iUpdateGridTimer;
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::ConstructL
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportFastSwapArea::ConstructL( const TRect& aRect )
-    {
-    SetContainerWindowL( iParent );
-
-    SetRect( aRect );
-
-    // setup ganes grid
-    ReCreateGridL();
-
-    // create stylus popup instance
-    PreCreatePopupL();
-
-    // connect to fsw server
-    iFSClient = CHgFswClient::NewL();
-    
-    iEvtHandler.ReInitPhysicsL(GridWorldSize(), ViewSize(), ETrue);
-    
-    // add self to device state observer
-    iDeviceState.AddObserverL( *this, EDeviceType );
-    
-    iHighlightTimer = new (ELeave) CHgTeleportFastSwapTimer( *this );
-    iHighlightTimer->ConstructL();
-    
-    iRedrawTimer = new (ELeave) CHgTeleportFastSwapTimer( *this );
-    iRedrawTimer->ConstructL();
-
-    iUpdateGridTimer = new (ELeave) CHgTeleportFastSwapTimer( *this );
-    iUpdateGridTimer->ConstructL();
-    
-    ActivateL();
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::ReCreateGridL
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportFastSwapArea::ReCreateGridL()
-    {
-    MCoeControlObserver* obs = NULL;
-    TBool wasHighlight = iDeviceState.DeviceType() == 
-                             CHgTeleportDeviceState::EHybrid ? ETrue : EFalse;
-    if ( iGrid )
-        {
-        obs = iGrid->Observer();
-        iDeviceState.RemoveObserver(*iGrid);
-        wasHighlight = iGrid->IsHighlightVisible();
-        delete iGrid;
-        iGrid = NULL;
-        }
-    
-    iGrid = new( ELeave ) CHgTeleportFastSwapGrid;
-    iGrid->ConstructL( this );
-    iDeviceState.AddObserverL(*iGrid, MHgDeviceStateObserver::ESkin);
-    
-    AknListBoxLayouts::SetupStandardGrid( *iGrid );
-    
-    RArray<TAknLayoutRect> rects;
-    CleanupClosePushL(rects);
-    rects.ReserveL(KLayoutItemCount);
-    GetFastSwapAreaRects(rects);
-    TAknLayoutRect gridAppPane = rects[0];
-    TAknLayoutRect gridItem = rects[1];
-    TAknLayoutRect gridImage = rects[2];
-    CleanupStack::PopAndDestroy(&rects);
-    
-    TInt variety = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0;
-    iGrid->SetRect(gridAppPane.Rect());
-    iGrid->SetVisibleViewRect(gridAppPane.Rect());
-    TAknLayoutScalableParameterLimits gridParams = 
-        AknLayoutScalable_Apps::cell_tport_appsw_pane_ParamLimits( variety );
-    TPoint empty( ELayoutEmpty, ELayoutEmpty );
-    
-#ifndef TASKSWITCHER_USE_CUSTOM_LAYOUT
-    AknListBoxLayouts::SetupFormGfxCell( *iGrid, iGrid->ItemDrawer(), 0,
-            AknLayoutScalable_Apps::cell_tport_appsw_pane_g1( variety ).LayoutLine(),
-            empty, empty );
-#else
-    TRect imageRect;
-    TRect textRect;
-    TInt leftMargin = ( KFswItemWidth - KFswImageSize ) / 2;
-    TInt topMargin = ( KFswItemHeight - KFswImageSize - KFswTextHeight ) / 3;
-    textRect.iTl = TPoint( leftMargin, topMargin );
-    textRect.iBr = TPoint( leftMargin + KFswImageSize, topMargin + KFswTextHeight );
-    imageRect.iTl = TPoint( leftMargin, topMargin * 2 + KFswTextHeight );
-    imageRect.iBr = TPoint( leftMargin + KFswImageSize, topMargin * 2 + KFswTextHeight + KFswImageSize );
-    
-    AknListBoxLayouts::SetupFormGfxCell( *iGrid, iGrid->ItemDrawer(), 0 /*Column index*/,
-                                         imageRect.iTl.iX  /*Left pos*/, imageRect.iTl.iY /*Top pos*/,
-                                         0 /*unused*/, 0 /*unused*/,
-                                         imageRect.Width() /*Icon width*/,
-                                         imageRect.Height() /*Icon height*/,
-                                         imageRect.iTl /*Start pos*/,
-                                         imageRect.iBr /*End pos*/ );
-#endif
-
-    // Setup text layout
-    TRgb textColor;
-    AknsUtils::GetCachedColor( AknsUtils::SkinInstance(), textColor,
-            KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG9 );
-    
-    TAknLayoutText textLayout;
-    textLayout.LayoutText(
-            Rect(),
-            AknLayoutScalable_Apps::cell_tport_appsw_pane_t1( variety ).LayoutLine() );
-    
-    // Because textLayout.BaselineOffset() does not work (missing lib entry),
-    // we need to calculate offset ourselves
-#ifndef TASKSWITCHER_USE_CUSTOM_LAYOUT
-    TInt baselineOffset = textLayout.TextRect().iBr.iY - textLayout.TextRect().iTl.iY;
-    AknListBoxLayouts::SetupFormTextCell( *iGrid, iGrid->ItemDrawer(), 1 /*Column index*/,
-                                          textLayout.Font() /*Font type*/,
-                                          textColor.Color16() /*color*/,
-                                          textLayout.TextRect().iTl.iX /*Left margin*/, 0 /*unused*/,
-                                          baselineOffset /*Baseline*/, 0 /*Text width*/,
-                                          textLayout.Align() /*Text alignment*/,
-                                          TPoint(0,0) /*Start pos*/,
-                                          TPoint(0,0) /*End pos*/);
-#else    
-    TInt baselineOffset = textRect.iBr.iY - textRect.iTl.iY;
-    AknListBoxLayouts::SetupFormTextCell( *iGrid, iGrid->ItemDrawer(), 1 /*Column index*/,
-                                          textLayout.Font() /*Font type*/,
-                                          textColor.Color16() /*color*/,
-                                          textRect.iTl.iX /*Left margin*/, 0 /*unused*/,
-                                          baselineOffset /*Baseline*/, 0 /*Text width*/,
-                                          CGraphicsContext::ECenter /*Text alignment*/,
-                                          TPoint(0,0) /*Start pos*/,
-                                          TPoint(0,0) /*End pos*/);
-#endif
-    
-    // Setup grid observers
-    if ( obs )
-        {
-        iGrid->SetObserver( obs );
-        }
-    iGrid->SetListBoxObserver(this);
-    iGrid->SetFastSwapGridObserver(this);
-    iGrid->SetContainerWindowL(*this);
-    
-#ifndef TASKSWITCHER_USE_CUSTOM_LAYOUT
-    iMaxItemsOnScreen = Rect().Width() / gridItem.Rect().Width();
-    iGridItemWidth = gridItem.Rect().Width();
-#else
-    iMaxItemsOnScreen = Rect().Width() / KFswItemWidth;
-    iGridItemWidth = KFswItemWidth;
-#endif
-    
-    iGrid->ItemDrawer()->ColumnData()->SetDrawBackground(EFalse);
-    
-    // Update state
-    HandleDeviceStateChanged( EDeviceType );
-    if( wasHighlight )
-        {
-        iGrid->ShowHighlight();
-        }
-    else
-        {
-        iGrid->HideHighlight();
-        }
-    
-    // Make sure that there is an ActivateL call even when we are not
-    // called from ConstructL. (in order to have the grid's parent ptr set properly)
-    ActivateL();
-    }
-
-
-// --------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::GetFastSwapAreaRects
-// --------------------------------------------------------------------------
-//
-void CHgTeleportFastSwapArea::GetFastSwapAreaRects( RArray<TAknLayoutRect>& aRects )
-    {
-    TAknLayoutRect gridAppPane;
-    TAknLayoutRect gridItem;
-    TAknLayoutRect gridImage;
-    
-    TInt variety = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0;
-    
-    gridAppPane.LayoutRect( Rect(), 
-            AknLayoutScalable_Apps::tport_appsw_pane( variety ) );
-    aRects.Append(gridAppPane);
-    
-    gridItem.LayoutRect( gridAppPane.Rect(),
-            AknLayoutScalable_Apps::cell_tport_appsw_pane( variety, 0, 0 ) );
-    aRects.Append(gridItem);
-    
-    gridImage.LayoutRect( gridItem.Rect(),
-            AknLayoutScalable_Apps::cell_tport_appsw_pane_g1( variety ) ); 
-    aRects.Append(gridImage);
-    }
-
-
-// --------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::Setup
-// --------------------------------------------------------------------------
-//
-void CHgTeleportFastSwapArea::Setup( MCoeControlObserver& aControlObserver )
-    {
-    iGrid->SetObserver( &aControlObserver );
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::SizeChanged
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportFastSwapArea::SizeChanged()
-    {
-    HGLOG_CONTEXT( CHgTeleportFastSwapArea::SizeChanged, HGLOG_LOCAL );
-    HGLOG_IN();
-    
-    if ( iGrid )
-        {
-        // Grid needs to be recreated to proper reinitilize
-        // data with new layout values
-        TInt selIdx = SelectedIndex();
-        TRAPD(err, 
-              ReCreateGridL();
-              iEvtHandler.ReInitPhysicsL(GridWorldSize(), ViewSize(), ETrue););
-        if ( err != KErrNone )
-            {
-            HGLOG1( HGLOG_INFO, "ReCreateGridL leaves with %d", err );
-            }
-        HandleFswContentChanged();
-        iGrid->SetCurrentDataIndex(selIdx);
-        UpdateGrid(ETrue, EFalse);
-        DrawDeferred();
-        }
-    HGLOG_OUT();
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::Draw
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportFastSwapArea::Draw( const TRect& /*aRect*/ ) const
-    {
-    CWindowGc& gc = SystemGc();
-    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
-    MAknsControlContext* cc = AknsDrawUtils::ControlContext( this );
-    AknsDrawUtils::Background( skin,
-           cc,
-           this,
-           gc,
-           Rect() );
-    }
-
-// --------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::SwitchToApp
-// --------------------------------------------------------------------------
-//
-void CHgTeleportFastSwapArea::SwitchToApp( TInt aIndex )
-    {
-    if ( aIndex >= 0 && aIndex < iArray.Count() )
-        {
-        TInt wgId = iArray[aIndex]->WgId();
-        // Move other app to foreground and then move ourselves to background.
-        // Order is important and cannot be reversed.
-        iFSClient->SwitchToApp( wgId );
-        // We do not want to come back to teleport if the activated app is closed.
-        // Therefore teleport must be moved to background.
-        CHgTeleportAppUi* appui =
-            static_cast<CHgTeleportAppUi*>( iEikonEnv->AppUi() );
-        appui->MoveAppToBackground( AknTransEffect::EApplicationStartRect );
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::TryCloseAppL
-// --------------------------------------------------------------------------
-//
-void CHgTeleportFastSwapArea::TryCloseAppL( TInt aIndex,
-        TBool aSuppressRendering )
-    {
-    HGLOG_CONTEXT( TryCloseAppL, HGLOG_LOCAL );
-    HGLOG2_IN( "%d %d", aIndex, aSuppressRendering );
-
-    if ( aIndex >= 0 && aIndex < iArray.Count() && CanClose( aIndex ) )
-        {
-        TInt wgId = iArray[aIndex]->WgId();
-        iFSClient->CloseApp( wgId );
-        // The fsw content will change sooner or later
-        // but the updated content (without the closed app) will not
-        // come very fast. It looks better to the user if the item
-        // in the grid is removed right here, right now.
-        // If the app does not close for some reason then this is
-        // not fully correct but the app will then reappear on the next
-        // content-changed notification anyway.
-        delete iArray[aIndex];
-        iArray.Remove( aIndex );
-        NotifyChange();
-        if ( !aSuppressRendering )
-            {
-            RenderContentL();
-            }
-        // Update item selection on the screen if last item was deleted
-        TInt newItemCount = GridItemCount();
-        if ( aIndex == newItemCount )
-            {
-            newItemCount--;
-            iGrid->SetCurrentDataIndex(newItemCount);
-            }
-        iTimeOfLastClose.HomeTime();
-        }
-
-    HGLOG_OUT();
-    }
-
-// --------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::TryCloseAppWithQueryL
-// --------------------------------------------------------------------------
-//
-void CHgTeleportFastSwapArea::TryCloseAppWithQueryL( TInt aIndex )
-    {
-    if ( aIndex >= 0 && aIndex < iArray.Count()
-            && CanClose( aIndex )
-            && ConfirmCloseL( aIndex ) )
-        {
-        TryCloseAppL( aIndex );
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::TryCloseAllL
-// --------------------------------------------------------------------------
-//
-void CHgTeleportFastSwapArea::TryCloseAllL()
-    {
-    // note the direction of the loop, this is needed because
-    // TryCloseAppL may modify the array
-    TBool changed = EFalse;
-    for ( TInt i = iArray.Count() - 1; i >= 0; --i )
-        {
-        if ( CanClose( i ) )
-            {
-            TryCloseAppL( i, ETrue );
-            changed = ETrue;
-            }
-        }
-    if ( changed )
-        {
-        RenderContentL();
-        RestoreSelectedIndex();
-        iGrid->DrawNow();
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::CanClose
-// --------------------------------------------------------------------------
-//
-TBool CHgTeleportFastSwapArea::CanClose( TInt aIndex ) const
-    {
-    CHgFswEntry* e = iArray[aIndex];
-    return !e->AlwaysShown() && !e->SystemApp();
-    }
-
-// --------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::CanCloseOthers
-// --------------------------------------------------------------------------
-//
-TBool CHgTeleportFastSwapArea::CanCloseAll( TInt aSelectedItem ) const
-    {
-    TInt count( 0 );
-
-    // Count number of closable applications and if number exceeds 2 finish
-    // counting, because it is already enough to show the option.
-    for ( TInt i = iArray.Count(); --i >= 0 && count < KHgMaxClosableApps; )
-        {
-        if ( CanClose( i ) )
-            {
-            count++;
-            }
-        }
-    return ( count >= KHgMaxClosableApps ) ||
-           ( count && !CanClose( aSelectedItem ) );
-    }
-
-// --------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::HandleFswContentChanged
-// From MHgFswObserver
-// --------------------------------------------------------------------------
-//
-void CHgTeleportFastSwapArea::HandleFswContentChanged()
-    {
-    HGLOG_CONTEXT( HandleFswContentChanged, HGLOG_LOCAL );
-    HGLOG_IN();
-
-    TRAPD( err, HandleFswContentChangedL() );
-    if ( err != KErrNone )
-        {
-        HGLOG1( HGLOG_INFO, "leave occured: %d", err );
-        }
-
-    HGLOG_OUT();
-    }
-
-// --------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::HandleFswContentChangedL
-// --------------------------------------------------------------------------
-//
-void CHgTeleportFastSwapArea::HandleFswContentChangedL()
-    {
-    HGLOG_CONTEXT( HandleFswContentChangedL, HGLOG_LOCAL );
-    HGLOG_IN();
-
-    // If there was an app close operation started during the last
-    // few seconds then stop, to prevent flickering.
-    TTime now;
-    now.HomeTime();
-    TTimeIntervalSeconds iv;
-    if ( now.SecondsFrom( iTimeOfLastClose, iv ) == KErrNone
-            && iv.Int() <= KRefreshDelayAfterClose )
-        {
-        HGLOG1_OUT( "difference since last close is only %d sec, stop", iv.Int() );
-        return;
-        }
-
-    // get current content from fastswap server
-    iFSClient->GetContentL( iArray );
-    SwapApplicationOrder( iArray );
-
-#ifdef _DEBUG
-    for ( TInt i = 0, ie = iArray.Count(); i != ie; ++i )
-        {
-        CHgFswEntry* e = iArray[i];
-        const TDesC& name( e->AppName() );
-        HGLOG4( HGLOG_INFO, "[%d]: %d %d %S", i, e->WgId(), e->AppUid(), &name );
-        }
-#endif
-
-    // draw
-    RenderContentL();
-
-    // notify observer, if present
-    NotifyChange();
-
-    HGLOG_OUT();
-    }
-
-// --------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::RenderContentL
-// --------------------------------------------------------------------------
-//
-void CHgTeleportFastSwapArea::RenderContentL()
-    {
-    HGLOG_CONTEXT( RenderContentL, HGLOG_LOCAL );
-    HGLOG_IN();
-
-    _LIT(KSeparator, "\t");
-    
-    CArrayPtr<CGulIcon>* iconArray = new ( ELeave ) CAknIconArray( iArray.Count() );
-    CleanupStack::PushL( iconArray );
-    CDesCArrayFlat* textArray = new ( ELeave ) CDesCArrayFlat( iArray.Count() );
-    CleanupStack::PushL( textArray );
-    RArray<TInt> closeItemArray;
-    CleanupClosePushL(closeItemArray);
-    
-    TInt variety = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0;
-    RArray<TAknLayoutRect> rects;
-    CleanupClosePushL(rects);
-    rects.ReserveL(KLayoutItemCount);
-    GetFastSwapAreaRects(rects);
-    TAknLayoutRect gridItem = rects[1];
-    CleanupStack::PopAndDestroy(&rects);
-    if ( AknLayoutUtils::LayoutMirrored() )
-        {
-#ifndef TASKSWITCHER_USE_CUSTOM_LAYOUT
-        iGrid->SetLayoutL( EFalse, EFalse, ETrue, iArray.Count(), 1, gridItem.Rect().Size() );
-#else
-        TSize itemSize( KFswItemWidth, KFswItemHeight );
-        iGrid->SetLayoutL( EFalse, EFalse, ETrue, iArray.Count(), 1, itemSize );
-#endif
-        }
-    else
-        {
-#ifndef TASKSWITCHER_USE_CUSTOM_LAYOUT
-        iGrid->SetLayoutL( EFalse, ETrue, ETrue, iArray.Count(), 1, gridItem.Rect().Size() );
-#else
-        TSize itemSize( KFswItemWidth, KFswItemHeight );
-        iGrid->SetLayoutL( EFalse, ETrue, ETrue, iArray.Count(), 1, itemSize );
-#endif
-        }
-    
-    for ( TInt i = 0, ie = iArray.Count(); i != ie; ++i )
-        {
-        const TDesC& appName( iArray[i]->AppName() );
-        const TInt formatLen = 3 + 2;
-        RBuf formAppName;
-        CleanupClosePushL(formAppName);
-        formAppName.CreateL(appName.Length() + formatLen);
-        formAppName.AppendNum(i);
-        formAppName.Append(KSeparator);
-        formAppName.Append(appName);
-        textArray->AppendL(formAppName);
-        CleanupStack::PopAndDestroy(&formAppName);
-        TSize sz = PreferredImageSize();
-
-        // take the screenshot or appicon+mask and make a copy and scale
-        CFbsBitmap* bitmap = 0;
-        TInt h = iArray[i]->ScreenshotHandle();
-        HGLOG2( HGLOG_INFO, "'%S' screenshot handle %d", &appName, h );
-        TInt maskh = 0;
-        CFbsBitmap* mask = 0;
-        if ( !h )
-            {
-            h = iArray[i]->AppIconBitmapHandle();
-            maskh = iArray[i]->AppIconMaskHandle();
-            HGLOG1( HGLOG_INFO, "using appicon, handle = %d", h );
-            }
-        __ASSERT_DEBUG( h, User::Invariant() );
-        bitmap = CopyBitmapL( h, sz );
-        CleanupStack::PushL( bitmap );
-        if ( maskh )
-            {
-            mask = CopyBitmapL( maskh, sz );
-            }
-        CleanupStack::PushL( mask );
-
-        CGulIcon* icon = CGulIcon::NewL( bitmap, mask );
-        CleanupStack::PushL(icon);
-        iconArray->AppendL(icon);
-        CleanupStack::Pop( 3, bitmap ); // mask, bitmap, icon
-        
-        // Check if item can be closed
-        if ( CanClose(i) && AknLayoutUtils::PenEnabled() )
-            {
-            closeItemArray.AppendL(i);
-            }
-        }
-    // Setup grid
-    iGrid->Model()->SetItemTextArray(textArray);
-    CArrayPtr<CGulIcon>* oldIconArray =
-        iGrid->ItemDrawer()->FormattedCellData()->IconArray();
-    if(oldIconArray)
-        {
-        delete oldIconArray;
-        oldIconArray = NULL;
-        }
-    iGrid->ItemDrawer()->FormattedCellData()->SetIconArrayL(iconArray);
-    iGrid->SetCloseItemsL(closeItemArray);
-    
-    // Cleanup
-    CleanupStack::PopAndDestroy(&closeItemArray);
-    CleanupStack::Pop(textArray);
-    CleanupStack::Pop(iconArray);
-    
-    iGrid->ScrollBarFrame()->SetScrollBarVisibilityL(
-                CEikScrollBarFrame::EOff, CEikScrollBarFrame::EOff);
-    
-    // refresh the items in the grid
-    if(iPreviousNoOfItems < iArray.Count())
-        {
-        iGrid->HandleItemAdditionL();
-        }
-    else if(iPreviousNoOfItems > iArray.Count())
-        {
-        iGrid->HandleItemRemovalL();
-        }
-    iPreviousNoOfItems = iArray.Count();
-    iEvtHandler.ReInitPhysicsL( GridWorldSize(), ViewSize(), ETrue );
-    UpdateGrid( ETrue );
-    
-    HGLOG_OUT();
-    }
-
-// --------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::CopyBitmapL
-// Copy and scale.
-// --------------------------------------------------------------------------
-//
-CFbsBitmap* CHgTeleportFastSwapArea::CopyBitmapL( TInt aFbsHandle, TSize aSize )
-    {
-    CFbsBitmap* ret = new (ELeave) CFbsBitmap();
-    CleanupStack::PushL( ret );
-
-    CFbsBitmap* bmp = new (ELeave) CFbsBitmap();
-    CleanupStack::PushL( bmp );
-    User::LeaveIfError( bmp->Duplicate( aFbsHandle ) );
-
-    // do not always use aSize, preserving the aspect ratio is quite
-    // important when showing app icons instead of screenshots
-    TSize sz = CalculateSizePreserveRatio( aSize, bmp->SizeInPixels() );
-
-    User::LeaveIfError( ret->Create( sz, bmp->DisplayMode() ) );
-
-    AknIconUtils::ScaleBitmapL( sz, ret, bmp );
-
-    CleanupStack::PopAndDestroy( bmp );
-    CleanupStack::Pop( ret );
-
-    return ret;
-    }
-
-// --------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::CountComponentControls
-// --------------------------------------------------------------------------
-//
-TInt CHgTeleportFastSwapArea::CountComponentControls() const
-    {
-    return 1;
-    }
-
-// --------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::ComponentControl
-// --------------------------------------------------------------------------
-//
-CCoeControl* CHgTeleportFastSwapArea::ComponentControl( TInt aIndex ) const
-    {
-    if ( aIndex == 0 )
-        {
-        return iGrid;
-        }
-    return NULL;
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::HandleSwitchToBackgroundEvent
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportFastSwapArea::HandleSwitchToBackgroundEvent()
-    {
-    // stop listening for changes in fsw content
-    iFSClient->CancelSubscribe();
-    // get rid of the close confirmation query if shown
-    delete iConfirmCloseQuery; // this will cause ExecuteLD to return with 0
-    iConfirmCloseQuery = 0;
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::HandleSwitchToForegroundEvent
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportFastSwapArea::HandleSwitchToForegroundEvent()
-    {
-    HGLOG_CONTEXT( CHgTeleportFastSwapArea::HandleSwitchToForegroundEvent, HGLOG_LOCAL );
-    HGLOG_IN();
-    
-    // get the current task list
-    HandleFswContentChanged();
-    // and then start listening for changes
-    iFSClient->Subscribe( *this );
-    
-    if ( iDeviceState.DeviceType() == CHgTeleportDeviceState::EFullTouch )
-        {
-        iGrid->HideHighlight();
-        }
-    else
-        {
-        iGrid->ShowHighlight();
-        }
-    
-    RestoreSelectedIndex();
-    UpdateGrid(ETrue, EFalse);
-    
-    iRedrawTimer->Cancel();
-    iRedrawTimer->After(KRedrawTime);
-    
-    // give feedback
-    LaunchPopupFeedback();
-
-    HGLOG_OUT();
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::FocusChanged
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportFastSwapArea::FocusChanged( TDrawNow /*aDrawNow*/ )
-    {
-    if ( IsFocused() )
-        {
-        // if in non-touch mode then select (highlight) some item
-        if ( !AknLayoutUtils::PenEnabled()
-            && SelectedIndex() == KErrNotFound
-            && GridItemCount() )
-            {
-            RestoreSelectedIndex();
-            }
-        }
-    else
-        {
-        // store the currently selected index if there is one
-        SaveSelectedIndex();
-        }
-    iGrid->DrawDeferred();
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::OfferKeyEventL
-// -----------------------------------------------------------------------------
-//
-TKeyResponse CHgTeleportFastSwapArea::OfferKeyEventL(
-        const TKeyEvent& aKeyEvent,
-        TEventCode aType )
-    {
-    iKeyEvent = ETrue;
-    // handle the 'clear' key
-    if ( aType == EEventKey && aKeyEvent.iCode == EKeyBackspace )
-        {
-        TInt idx = SelectedIndex();
-        if ( idx >= 0 )
-            {
-            TryCloseAppWithQueryL( idx );
-            }
-        return EKeyWasConsumed;
-        }
-    
-    //do not forward the event until item is higlighted
-    if( aKeyEvent.iScanCode == EStdKeyLeftArrow ||
-        aKeyEvent.iScanCode == EStdKeyRightArrow )
-        {
-        if ( !iGrid->IsHighlightVisible() )
-            {
-            if ( aType == EEventKey )
-                {
-                ShowHighlight();
-                iConsumeEvent = ETrue;
-                }
-            return EKeyWasConsumed;
-            }
-        else if(iConsumeEvent)
-            {
-            if (aType == EEventKeyUp)
-                {
-                return EKeyWasConsumed;
-                }
-            iConsumeEvent = EFalse;
-            }
-        }
-    
-    // pass the event to grid
-    // do not pass down and up arrow key events
-    if ( aKeyEvent.iScanCode != EStdKeyUpArrow &&
-         aKeyEvent.iScanCode != EStdKeyDownArrow )
-        {
-        TBool animate(ETrue);
-        TBool redraw(EFalse);
-        TInt prevItem = SelectedIndex();
-        TKeyResponse response = iGrid->OfferKeyEventL( aKeyEvent, aType );
-        if ( prevItem != SelectedIndex() && // item changed
-             ( ( prevItem == 0 &&
-                 SelectedIndex() == GridItemCount() - 1 &&
-                 GridItemCount() > iMaxItemsOnScreen + 1 ) || // loop from first to last item
-               ( prevItem == GridItemCount() - 1 &&
-                 SelectedIndex() == 0 &&
-                 GridItemCount() > iMaxItemsOnScreen + 1) // loop from last to first item
-              ) // loop
-            )
-            {
-            // Loop occured
-            animate = EFalse;
-            }
-        if ( prevItem != SelectedIndex() )
-            {
-            redraw = ETrue;
-            iGrid->ShowHighlight();
-            }
-        UpdateGrid( redraw, animate );
-        return response;
-        }
-    
-    return EKeyWasNotConsumed;
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::HandlePointerEventL
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportFastSwapArea::HandlePointerEventL( const TPointerEvent& aPointerEvent )
-    {
-    iKeyEvent = EFalse;
-    if(aPointerEvent.iType == TPointerEvent::EButton1Down)
-        {
-        iTapEvent = aPointerEvent;
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::ConfirmCloseL
-// -----------------------------------------------------------------------------
-//
-TBool CHgTeleportFastSwapArea::ConfirmCloseL( TInt aIndex )
-    {
-    HBufC* msg = StringLoader::LoadLC( R_TELEPORT_FSW_CONFIRM_CLOSE,
-        iArray[aIndex]->AppName() );
-    iConfirmCloseQuery = CAknQueryDialog::NewL(
-        CAknQueryDialog::EConfirmationTone );
-    iConfirmCloseQuery->SetPromptL( *msg );
-    CleanupStack::PopAndDestroy( msg );
-    TBool ok = iConfirmCloseQuery->ExecuteLD(
-        R_HG_TELEPORT_FSW_CONFIRM_CLOSE_QUERY );
-    iConfirmCloseQuery = 0;
-    return ok;
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::SelectedIndex
-// -----------------------------------------------------------------------------
-//
-TInt CHgTeleportFastSwapArea::SelectedIndex() const
-    {
-    return iGrid->CurrentDataIndex();
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::SaveSelectedIndex
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportFastSwapArea::SaveSelectedIndex()
-    {
-    iSavedSelectedIndex = SelectedIndex();
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::RestoreSelectedIndex
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportFastSwapArea::RestoreSelectedIndex()
-    {
-    iSavedSelectedIndex = KErrNotFound;
-    if ( GridItemCount() )
-        {
-        // highlight second recent item (that has index 2) if possible
-        TInt highlightItem = 0;
-        TInt count = GridItemCount();
-        while( highlightItem < count 
-            && highlightItem < KItemToHighlight )
-            {
-            ++highlightItem;
-            }
-        iSavedSelectedIndex = highlightItem - 1;//count from 0
-        iGrid->SetCurrentItemIndex( iSavedSelectedIndex );
-        TBool forceRedraw(ETrue);
-        UpdateGrid(forceRedraw);
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::ProcessCommandL
-// Handle fsw popup commands
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportFastSwapArea::ProcessCommandL( TInt aCommandId )
-    {
-    switch ( aCommandId )
-        {
-        case EFswCmdClose:
-            TryCloseAppL( iAppIndexForPopup );
-            break;
-
-        case EFswCmdCloseAll:
-            TryCloseAllL();
-            break;
-
-        case KErrCancel:
-            // popup dismisses automatically when tapping outside or when switching to other app
-            break;
-        }
-    iTapEvent.iType = TPointerEvent::EButton1Up;
-    iGrid->HandlePointerEventL(iTapEvent);
-    }
-
-
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::HandleCloseEventL
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportFastSwapArea::HandleCloseEventL(TInt aItemIdx)
-    {
-    if ( !iLongTap )
-        {
-        TryCloseAppWithQueryL( aItemIdx );
-        }
-    // Simulate long tap to prevent item activation
-    iLongTap = ETrue;
-    iTapEvent.iType = TPointerEvent::EButton1Up;
-    iGrid->HandlePointerEventL(iTapEvent);
-    }
-
-
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::HandleDeviceStateChanged
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportFastSwapArea::HandleDeviceStateChanged( TChangeType aChangeType )
-    {
-    if ( aChangeType == EDeviceType )
-        {
-        CHgTeleportDeviceState::TDeviceType state = iDeviceState.DeviceType();
-        switch ( state )
-            {
-            case CHgTeleportDeviceState::EHybrid:
-                {
-                iGrid->SetGridBehaviour( CHgTeleportFastSwapGrid::EHybrid );
-                }
-                break;
-            case CHgTeleportDeviceState::EFullTouch:
-                {
-                iGrid->SetGridBehaviour( CHgTeleportFastSwapGrid::ETouchOnly );
-                }
-                break;
-            default:
-                break;
-            }
-        }
-    }
-
-
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::TimerCompletedL
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportFastSwapArea::TimerCompletedL( CHgTeleportFastSwapTimer* aSource )
-    {
-    if(aSource == iHighlightTimer)
-        {
-        iTapEvent.iType = TPointerEvent::EButton1Up;
-        iGrid->HandlePointerEventL(iTapEvent);
-        }
-    else if(aSource == iRedrawTimer)
-        {
-        DrawNow();
-        }
-    else if( aSource == iUpdateGridTimer )
-        {
-        UpdateGrid(ETrue, ETrue);
-        }
-    }
-
-
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::PreCreatePopupL
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportFastSwapArea::PreCreatePopupL()
-    {
-    if ( !iPopup )
-        {
-        iPopup = CAknStylusPopUpMenu::NewL( this, Rect().iTl );
-        HBufC* text = StringLoader::LoadLC( R_TELEPORT_FSW_CLOSE );
-        iPopup->AddMenuItemL( *text, EFswCmdClose );
-        CleanupStack::PopAndDestroy( text );
-        text = StringLoader::LoadLC( R_TELEPORT_FSW_CLOSE_ALL );
-        iPopup->AddMenuItemL( *text, EFswCmdCloseAll );
-        CleanupStack::PopAndDestroy( text );
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::ShowPopupL
-// -----------------------------------------------------------------------------
-//
-TBool CHgTeleportFastSwapArea::ShowPopupL( TInt aIndex, const TPoint& aPoint )
-    {
-    TBool showPopUp(EFalse);
-    TBool showPopupItem;
-    // hide 'close' if app cannot be closed
-    showPopupItem = CanClose( aIndex );
-    iPopup->SetItemDimmed( EFswCmdClose, !showPopupItem );
-    showPopUp = showPopUp || showPopupItem;
-    // hide 'close all' if there are no applications to close.
-    showPopupItem = CanCloseAll( aIndex );
-    iPopup->SetItemDimmed( EFswCmdCloseAll, !showPopupItem );
-    showPopUp = showPopUp || showPopupItem;
-
-    if(showPopUp)
-        {
-        // give feedback
-        LaunchPopupFeedback();
-        // save index for later use & show popup
-        iAppIndexForPopup = aIndex;
-        iPopup->SetPosition( aPoint, CAknStylusPopUpMenu::EPositionTypeLeftBottom );
-        iPopup->ShowMenu();
-        }
-    return showPopUp;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::Count
-// -----------------------------------------------------------------------------
-//
-TInt CHgTeleportFastSwapArea::Count() const
-    {
-    return iArray.Count();
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::SetDataChangeObserver
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportFastSwapArea::SetDataChangeObserver(
-        MHgTeleportDataChangeObserver* aDcObserver )
-    {
-    iDcObserver = aDcObserver;
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::NotifyChange
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportFastSwapArea::NotifyChange()
-    {
-    if ( iDcObserver )
-        {
-        iDcObserver->DataChanged( this, Count() );
-        }
-    }
-    
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::SwapApplicationOrder
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportFastSwapArea::SwapApplicationOrder( 
-    RPointerArray<CHgFswEntry>& aArray )
-    {
-    for ( TInt i = 0; i < aArray.Count(); ++i )
-        {
-        if( aArray[i]->AppUid() == KAiUid )
-            {
-            CHgFswEntry* homescreenEntry(0);
-            homescreenEntry = aArray[i];
-            aArray.Remove(i);
-            aArray.Insert(homescreenEntry, KAiPosition);
-            break;
-            }
-        }
-    }
-    
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::PreferredImageSize
-// -----------------------------------------------------------------------------
-//
-TSize CHgTeleportFastSwapArea::PreferredImageSize()
-    {
-#ifndef TASKSWITCHER_USE_CUSTOM_LAYOUT
-    TAknLayoutRect gridImage;
-    TRAP_IGNORE(
-        RArray<TAknLayoutRect> rects;
-        CleanupClosePushL(rects);
-        rects.ReserveL(KLayoutItemCount);
-        GetFastSwapAreaRects(rects);
-        gridImage = rects[2];
-        CleanupStack::PopAndDestroy(&rects);
-        );
-    return gridImage.Rect().Size();
-#else
-    return TSize( KFswImageSize, KFswImageSize );
-#endif
-    }
-    
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::GridItemCount
-// -----------------------------------------------------------------------------
-//
-TInt CHgTeleportFastSwapArea::GridItemCount()
-    {
-    return iGrid->Model()->ItemTextArray()->MdcaCount();
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::HandleListBoxEventL
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportFastSwapArea::HandleListBoxEventL(CEikListBox* aListBox, TListBoxEvent aEventType)
-    {
-    if ( aListBox == iGrid )
-        {
-        switch ( aEventType )
-            {
-            case EEventEnterKeyPressed:
-            case EEventItemClicked:
-                {
-                if (!iLongTap)
-                    {
-                    SwitchToApp(SelectedIndex());
-                    }
-                }
-                break;
-            case EEventPenDownOnItem:
-                {
-                iGrid->HideHighlight();
-                iGrid->ShowHighlight();
-                if (!iLongTap )
-                    {
-                    iHighlightTimer->Cancel();
-                    iHighlightTimer->After(KHighlighActivationTime);
-                    }
-                }
-                break;
-            default:
-                break;
-            }
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::CalculateSizePreserveRatio
-// --------------------------------------------------------------------------
-//
-TSize CHgTeleportFastSwapArea::CalculateSizePreserveRatio(
-        const TSize& aTargetAreaSize,
-        const TSize& aSourceSize )
-    {
-    TSize sz;
-    if ( aSourceSize.iWidth > aSourceSize.iHeight )
-        {
-        sz.iWidth = aTargetAreaSize.iWidth;
-        TReal ratio = aSourceSize.iWidth / (TReal) aSourceSize.iHeight;
-        sz.iHeight = sz.iWidth / ratio;
-        }
-    else
-        {
-        sz.iHeight = aTargetAreaSize.iHeight;
-        TReal ratio = aSourceSize.iHeight / (TReal) aSourceSize.iWidth;
-        sz.iWidth = sz.iHeight / ratio;
-        }
-    return sz;
-    }
-
-// --------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::SelectNextItem
-// --------------------------------------------------------------------------
-//
-void CHgTeleportFastSwapArea::SelectNextItem()
-    {
-    iKeyEvent = ETrue;
-    TBool forceRedraw(ETrue);
-    TBool animate(ETrue);
-    TInt selectedItem = SelectedIndex();
-    selectedItem++;
-    if ( selectedItem == GridItemCount() )
-        {
-        // Last item is selected, move to first one
-        selectedItem = 0;
-        animate = EFalse;
-        }
-    iGrid->SetCurrentItemIndex(selectedItem);
-    UpdateGrid(forceRedraw, animate);
-    }
-
-// --------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::ShowHiglight
-// --------------------------------------------------------------------------
-//
-void CHgTeleportFastSwapArea::ShowHighlight()
-    {
-    iGrid->ShowHighlight();
-    UpdateGrid(ETrue, EFalse);
-    }
-
-// --------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::CenterItem
-// --------------------------------------------------------------------------
-//
-void CHgTeleportFastSwapArea::CenterItem(TInt aRedrawDelay)
-    {
-    if( iMaxItemsOnScreen < GridItemCount() )
-        {
-        TInt visibleItem = ViewToVisibleItem( ViewPos() );
-        if(iKeyEvent)
-            {
-            visibleItem = SelectedIndex();
-            }
-        iGrid->SetCurrentDataIndex( visibleItem );
-        }
-
-    iUpdateGridTimer->Cancel();
-    iUpdateGridTimer->After(aRedrawDelay);
-    }
-
-// --------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::GridWorldSize
-// --------------------------------------------------------------------------
-//
-TSize CHgTeleportFastSwapArea::GridWorldSize()
-    {
-    return TSize( GridItemCount() * iGridItemWidth, Rect().Height() );
-    }
-
-// --------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::UpdateGrid
-// --------------------------------------------------------------------------
-//
-void CHgTeleportFastSwapArea::UpdateGrid( TBool aForceRedraw, TBool aAnimate )
-    {
-    TPoint targetPoint = ItemViewPosition( SelectedIndex() );
-    if ( aForceRedraw || targetPoint.iX != ViewPos().iX )
-        {
-        if ( aAnimate )
-            {
-            iEvtHandler.Animate( targetPoint );
-            }
-        else
-            {
-            MoveOffset(targetPoint);
-            iEvtHandler.StopAnimation();
-            }
-        if ( aForceRedraw )
-            {
-            iGrid->DrawNow();
-            }
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::HandleAppKey
-// --------------------------------------------------------------------------
-//
-void CHgTeleportFastSwapArea::HandleAppKey(TInt aType)
-    {
-    if( aType == KAppKeyTypeShort )
-        {
-        if(iGrid->IsHighlightVisible())
-            {
-            SelectNextItem();
-            }
-        else
-            {
-            ShowHighlight();
-            }
-        }
-    else if( aType == KAppKeyTypeLong )
-        {
-        SwitchToApp( SelectedIndex() );
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::MoveOffset
-// --------------------------------------------------------------------------
-//
-void CHgTeleportFastSwapArea::MoveOffset(const TPoint& aPoint)
-    {
-    HGLOG_CONTEXT( CHgTeleportFastSwapArea::MoveOffset, HGLOG_LOCAL );
-    HGLOG2_IN("Old position x: %d, y:%d", ViewPos().iX, ViewPos().iY);
-    HGLOG2_IN("New position x: %d, y:%d", aPoint.iX, aPoint.iY);
-    HGLOG_OUT();
-    
-    TInt currentXPos = aPoint.iX;
-    currentXPos -= Rect().Width() / 2;
-    TRect gridViewRect = Rect();
-    gridViewRect.iTl.iX = -currentXPos;
-    // Take edge offset into account
-    gridViewRect.iTl.iX += Rect().iTl.iX;
-    if(GridItemCount() <= iMaxItemsOnScreen)
-        {
-        // Center view
-        gridViewRect.iTl.iX += ( Rect().Width() - GridItemCount() * iGridItemWidth ) / 2;
-        }
-    iGrid->SetRect( gridViewRect );
-    DrawNow();
-    }
-
-// --------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::Tap
-// --------------------------------------------------------------------------
-//
-void CHgTeleportFastSwapArea::TapL(const TPoint& aPoint)
-    {
-    iLongTap = EFalse;
-    if(iGrid->Rect().Contains(aPoint))
-        {
-        //provide tap pointer event to grid
-        iGrid->HandlePointerEventL(iTapEvent);
-        }
-    else
-        {
-        //move task switcher to background
-        iEikonEnv->EikAppUi()->HandleCommandL(EAknSoftkeyExit);
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::LongTap
-// --------------------------------------------------------------------------
-//
-void CHgTeleportFastSwapArea::LongTapL(const TPoint& aPoint)
-    {
-    iLongTap = ETrue;
-    TInt index(KErrNotFound);
-    if( iGrid->GridView()->XYPosToItemIndex(aPoint,index) )
-        {
-        if ( AknLayoutUtils::LayoutMirrored() )
-            {
-            // Calculate logical item index
-            index = GridItemCount() - 1 - index;
-            }
-        SaveSelectedIndex();
-        iGrid->HandlePointerEventL(iTapEvent);
-        if ( !ShowPopupL(index, aPoint) )
-            {
-            TapL(aPoint);
-            }
-        }
-    else
-        {
-        TapL(aPoint);
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::Drag
-// --------------------------------------------------------------------------
-//
-void CHgTeleportFastSwapArea::Drag(
-    const MAknTouchGestureFwDragEvent& /*aEvent*/)
-    {
-    iGrid->HideHighlight();
-    CenterItem( KUpdateGridTime );
-    DrawNow();
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::ViewSize
-// -----------------------------------------------------------------------------
-//
-TSize CHgTeleportFastSwapArea::ViewSize()
-    {
-    return TSize(Rect().Width(), Rect().Height());  
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::Stop
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportFastSwapArea::Stop()
-    {    
-    CenterItem( KUpdateGridTime );
-    DrawNow();
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::ViewSize
-// -----------------------------------------------------------------------------
-//
-TPoint CHgTeleportFastSwapArea::ViewPos() const
-    {
-    TPoint retVal;
-    retVal.iY = iGrid->Rect().iTl.iY + Rect().Height() / 2;
-    retVal.iX = - (iGrid->Rect().iTl.iX - Rect().iTl.iX) + Rect().Width() / 2 ;
-    TInt gridItemCount = iGrid->Model()->ItemTextArray()->MdcaCount();
-    if( gridItemCount <= iMaxItemsOnScreen)
-        {
-        // View centered
-        retVal.iX += ( Rect().Width() - gridItemCount * iGridItemWidth ) / 2;
-        }
-    return retVal;
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::ItemPosition
-// -----------------------------------------------------------------------------
-//
-TPoint CHgTeleportFastSwapArea::ItemViewPosition( TInt aItemIdx )
-    {
-    TPoint retVal = Rect().iTl;
-    if ( aItemIdx == 0 )
-        {
-        // First item
-        if( AknLayoutUtils::LayoutMirrored() )
-            {
-            if ( GridItemCount() > iMaxItemsOnScreen )
-                {
-                retVal.iX = GridWorldSize().iWidth - Rect().Width();
-                }
-            else
-                {
-                retVal.iX = 0;
-                }
-            }
-        else // normal layout
-            {
-            retVal.iX = 0;
-            }
-        }
-    else if ( aItemIdx == GridItemCount() - 1 )
-        {
-        // Last item selected
-        if( AknLayoutUtils::LayoutMirrored() )
-            {
-            retVal.iX = 0;
-            }
-        else // normal layout
-            {
-            if ( GridItemCount() > iMaxItemsOnScreen )
-                {
-                retVal.iX = GridWorldSize().iWidth - Rect().Width();
-                }
-            else
-                {
-                retVal.iX = 0;
-                }
-            }
-        }
-    else
-        {
-        // Middle item
-        TInt screenMiddleItemOffset = ( Rect().Width() - iGridItemWidth ) / 2;
-        if( AknLayoutUtils::LayoutMirrored() )
-            {
-            retVal.iX = iGridItemWidth * ( GridItemCount() - 1 - aItemIdx ) - screenMiddleItemOffset;
-            }
-        else // normal layout
-            {
-            retVal.iX = iGridItemWidth * aItemIdx - screenMiddleItemOffset;
-            }
-        if ( retVal.iX < 0 )
-            {
-            retVal.iX = 0;
-            }
-        else if ( retVal.iX + Rect().Width() > GridWorldSize().iWidth )
-            {
-            retVal.iX = GridWorldSize().iWidth - Rect().Width();
-            }
-        }
-    
-    // Return middle of the view rectangle
-    retVal.iX += Rect().Width() / 2;
-    
-    return retVal;
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::ViewToVisibleItem
-// -----------------------------------------------------------------------------
-//
-TInt CHgTeleportFastSwapArea::ViewToVisibleItem( const TPoint aViewPos )
-    {
-    TInt retVal(0);
-    TPoint absViewPos = aViewPos;
-    absViewPos.iX -= Rect().Width() / 2;
-    if ( absViewPos.iX < 0 )
-        {
-        if ( AknLayoutUtils::LayoutMirrored() )
-            {
-            // View crossed left border of grid world rect, last item selected
-            retVal = GridItemCount() - 1;
-            }
-        else // normal layout
-            {
-            // View crossed left border of grid world rect, first item selected
-            retVal = 0;
-            }
-        }
-    else if ( absViewPos.iX + Rect().Width() > GridWorldSize().iWidth )
-        {
-        if ( AknLayoutUtils::LayoutMirrored() )
-            {
-            // View crossed right border of grid world rect, first item selected
-            retVal = 0;
-            }
-        else // normal layout
-            {
-            // View crossed right border of grid world rect, last item selected
-            retVal = GridItemCount() - 1;
-            }
-        }
-    else
-        {
-        TInt offsetCheck = GridWorldSize().iWidth;
-        // View inside of grid world rect
-        for ( TInt i = 0 ; i < GridItemCount(); i++ )
-            {
-            TInt offset = aViewPos.iX - ItemViewPosition( i ).iX;
-            if ( Abs( offset ) <= offsetCheck )
-                {
-                offsetCheck = Abs( offset );
-                retVal = i;
-                }
-            else
-                {
-                break;
-                }
-            }
-        }
-    return retVal;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapArea::LaunchPopupFeedback
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportFastSwapArea::LaunchPopupFeedback()
-    {
-    if ( AknLayoutUtils::PenEnabled() )
-        {
-        MTouchFeedback* feedback = MTouchFeedback::Instance();
-        if ( feedback )
-            {
-            TTouchLogicalFeedback fbLogicalType = ETouchFeedbackPopUp;
-            if ( CAknTransitionUtils::TransitionsEnabled(
-                 AknTransEffect::EComponentTransitionsOff ) )
-                {
-                fbLogicalType = ETouchFeedbackIncreasingPopUp;
-                }
-            feedback->InstantFeedback( this,
-                                       fbLogicalType,
-                                       ETouchFeedbackVibra,
-                                       TPointerEvent() );
-            }
-        }
-    }
-
-// End of file
--- a/taskswitcher/teleportui/hgteleportapp/src/hgteleportfastswapgrid.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,625 +0,0 @@
-/*
- * ============================================================================
- *  Name        : hgteleportfastswapgrid.cpp
- *  Part of     : Hg Teleport
- *  Description : Teleport Fast Swap area UI
- *  Version     : %version:  19 %
- *
- *  Copyright © 2009 Nokia.  All rights reserved.
- *  This material, including documentation and any related computer
- *  programs, is protected by copyright controlled by Nokia.  All
- *  rights are reserved.  Copying, including reproducing, storing,
- *  adapting or translating, any or all of this material requires the
- *  prior written consent of Nokia.  This material also contains
- *  confidential information which may not be disclosed to others
- *  without the prior written consent of Nokia.
- * ============================================================================
- *
- */
-
-#include <avkon.mbg>
-#include <aknlayoutscalable_apps.cdl.h>
-#include <layoutmetadata.cdl.h>
-#include <AknsFrameBackgroundControlContext.h>
-#include <touchfeedback.h>
-
-#include "hgteleportfastswapgrid.h"
-
-// TODO: Layout update
-const TInt KCloseIconSize = 30;
-
-
- /* ================================================================================
-  * CHgTeleportFastSwapGrid
-  * ================================================================================
-  */
-
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapGrid::CHgTeleportFastSwapGrid
-// -----------------------------------------------------------------------------
-//
-CHgTeleportFastSwapGrid::CHgTeleportFastSwapGrid()
-: CAknGrid(),
-  iCloseIconHitIdx( KErrNotFound ),
-  iBehaviour( ETouchOnly ),
-  iHighlightVisible( EFalse )
-    {
-    }
-
-
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapGrid::~CHgTeleportFastSwapGrid
-// -----------------------------------------------------------------------------
-//
-CHgTeleportFastSwapGrid::~CHgTeleportFastSwapGrid()
-    {
-    iCloseItems.Close();
-    delete iBgContext;
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapGrid::ConstructL
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportFastSwapGrid::ConstructL( const CCoeControl* aParent )
-    {
-    CAknGrid::ConstructL( aParent, EAknListBoxSelectionGrid );
-    SetPrimaryScrollingType(CAknGridView::EScrollFollowsItemsAndLoops);
-    SetSecondaryScrollingType(CAknGridView::EScrollFollowsItemsAndLoops);
-    iBgContext = CAknsFrameBackgroundControlContext::NewL(
-               KAknsIIDQsnFrPopup,
-               TRect(),
-               TRect(),
-               ETrue );
-    iBgContext->SetCenter( KAknsIIDQsnFrPopupCenter );
-    iVisibleViewRect = TRect( 0, 0, 0, 0 );
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapGrid::HandlePointerEventL
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportFastSwapGrid::HandlePointerEventL( const TPointerEvent &aPointerEvent )
-    {
-    TBool eventHandled( EFalse );
-    if ( aPointerEvent.iType == TPointerEvent::EButton1Up &&
-         iCloseIconHitIdx == KErrNotFound )
-        {
-        // Check if close icon has been hit
-        // Find hit item
-        TInt hitItem( KErrNotFound );
-        for ( TInt i = 0; i < Model()->NumberOfItems(); i++ )
-            {
-            if ( GridView()->XYPosToItemIndex( aPointerEvent.iParentPosition, i ) )
-                {
-                hitItem = i;
-                break;
-                }
-            }
-        if ( hitItem != KErrNotFound )
-            {
-            // Item found, check if close icon has been hit
-            TPoint itemPos = GridView()->ItemPos( hitItem );
-            TSize itemSize = GridView()->ItemSize( hitItem );
-            TRect itemRect( itemPos, itemSize );
-            CHgTeleportGridItemDrawer* itemDrawer =
-                static_cast<CHgTeleportGridItemDrawer*>( ItemDrawer() );
-            TRect closeIconRect = itemDrawer->GetCloseIconRect( itemRect );
-            if ( closeIconRect.Contains( aPointerEvent.iParentPosition ) )
-                {
-                // Close icon hit
-                iCloseIconHitIdx = hitItem;
-                eventHandled = ETrue;
-                // Hide highlight to mark close icon
-                HideHighlight();
-                // Update current item and redraw grid
-                SetCurrentItemIndex( hitItem );
-                DrawNow();
-                if ( iFastSwapGridObserver )
-                    {
-                    MTouchFeedback* feedback = MTouchFeedback::Instance();
-                    feedback->InstantFeedback(this,
-                                              ETouchFeedbackBasicButton, 
-                                              ETouchFeedbackVibra, 
-                                              aPointerEvent);
-                    iFastSwapGridObserver->HandleCloseEventL( hitItem );
-                    }
-                ResetCloseHit();
-                if ( GridBehaviour() == EHybrid )
-                    {
-                    ShowHighlight();
-                    }
-                else
-                    {
-                    Redraw();
-                    }
-                }
-            }
-        }
-    
-    if ( !eventHandled )
-        {
-        CAknGrid::HandlePointerEventL( aPointerEvent );
-        Redraw();
-        }
-    }
-
-
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapGrid::HandleDeviceStateChanged
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportFastSwapGrid::HandleDeviceStateChanged( TChangeType aChangeType )
-    {
-    if ( aChangeType == ESkin )
-        {
-        LoadCloseIcon();
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapGrid::MopSupplyObject
-// -----------------------------------------------------------------------------
-//
-TTypeUid::Ptr CHgTeleportFastSwapGrid::MopSupplyObject( TTypeUid aId )
-    {
-    if ( aId.iUid == MAknsControlContext::ETypeId )
-        {
-        return MAknsControlContext::SupplyMopObject( aId, iBgContext );
-        }
-    return CCoeControl::MopSupplyObject( aId );
-    }
-
-
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapGrid::HandleResourceChange
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportFastSwapGrid::HandleResourceChange( TInt aType )
-    {
-    if ( aType != KEikDynamicLayoutVariantSwitch )
-        {
-        CAknGrid::HandleResourceChange( aType );
-        }
-    }
-
-
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapGrid::SizeChanged
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportFastSwapGrid::SizeChanged()
-    {
-    }
-
-
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapGrid::SetFastSwapGridObserver
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportFastSwapGrid::SetFastSwapGridObserver( MHgTeleportFastSwapGridObserver* aObserver )
-    {
-    iFastSwapGridObserver = aObserver;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapGrid::CreateItemDrawerL
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportFastSwapGrid::CreateItemDrawerL()
-    {
-    TRect availableRect;
-    AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EScreen, availableRect);
-    TAknLayoutRect fastSwapAreaPane;
-    TInt variety = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0;
-    fastSwapAreaPane.LayoutRect( availableRect,
-            AknLayoutScalable_Apps::tport_appsw_pane( variety ) );
-    const TInt leftOffset = fastSwapAreaPane.Rect().iTl.iX;
-    const TInt rightOffset = availableRect.Width() - fastSwapAreaPane.Rect().iBr.iX;
-    
-    CFormattedCellGridData* data = CFormattedCellGridData::NewL();
-    CleanupStack::PushL( data );
-    CHgTeleportGridItemDrawer* itemDrawer =
-        new ( ELeave ) CHgTeleportGridItemDrawer( this, data );
-    CleanupStack::PushL( itemDrawer );
-    itemDrawer->SetEdgeOffset( leftOffset, rightOffset );
-    iItemDrawer = itemDrawer;
-    CleanupStack::Pop( itemDrawer );
-    CleanupStack::Pop( data );
-    LoadCloseIcon();
-    }
-
-
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapGrid::SetCloseItemsL
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportFastSwapGrid::SetCloseItemsL( RArray<TInt>& aItemIndex )
-    {
-    iCloseItems.Close();
-    for ( TInt i = 0; i < aItemIndex.Count(); i++ )
-        {
-        iCloseItems.AppendL( aItemIndex[i] );
-        }
-    }
-
-
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapGrid::CanCloseItem
-// -----------------------------------------------------------------------------
-//
-TBool CHgTeleportFastSwapGrid::CanCloseItem( TInt aItemIndex )
-    {
-    return iCloseItems.Find(aItemIndex) != KErrNotFound;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapGrid::ItemCloseHit
-// -----------------------------------------------------------------------------
-//
-TBool CHgTeleportFastSwapGrid::IsItemCloseHit( TInt aItemIndex )
-    {
-    return iCloseIconHitIdx == aItemIndex;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapGrid::ResetCloseHit
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportFastSwapGrid::ResetCloseHit()
-    {
-    iCloseIconHitIdx = KErrNotFound;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapGrid::SetBehaviour
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportFastSwapGrid::SetGridBehaviour( TFastSwapGridBehaviour aBehaviour )
-    {
-    iBehaviour = aBehaviour;
-    switch ( iBehaviour )
-        {
-        case ETouchOnly:
-            {
-            HideHighlight();
-            }
-            break;
-        default:
-            {
-            ShowHighlight();
-            }
-            break;
-        }
-    }
-
-
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapGrid::GridBehaviour
-// -----------------------------------------------------------------------------
-//
-CHgTeleportFastSwapGrid::TFastSwapGridBehaviour CHgTeleportFastSwapGrid::GridBehaviour()
-    {
-    return iBehaviour;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapGrid::ShowHighlight
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportFastSwapGrid::ShowHighlight()
-    {
-    if ( !iHighlightVisible )
-        {
-        // Draw highlight
-        iHighlightVisible = ETrue;
-        Redraw();
-        }
-    }
-
-
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapGrid::HideHighlight
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportFastSwapGrid::HideHighlight()
-    {
-    if ( iHighlightVisible )
-        {
-        iHighlightVisible = EFalse;
-        Redraw();
-        }
-    }
-
-
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapGrid::IsHighlightVisible
-// -----------------------------------------------------------------------------
-//
-TBool CHgTeleportFastSwapGrid::IsHighlightVisible()
-    {
-    return iHighlightVisible;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapGrid::SetVisibleViewRect
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportFastSwapGrid::SetVisibleViewRect( const TRect aRect )
-    {
-    iVisibleViewRect = aRect;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapGrid::VisibleViewRect
-// -----------------------------------------------------------------------------
-//
-TRect CHgTeleportFastSwapGrid::VisibleViewRect()
-    {
-    TRect retVal;
-    TRect emptyRect = TRect( 0, 0, 0, 0 );
-    if ( iVisibleViewRect == emptyRect )
-        {
-        retVal = Rect();
-        }
-    else
-        {
-        retVal = iVisibleViewRect;
-        }
-    return retVal;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapGrid::LoadCloseIconL
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportFastSwapGrid::LoadCloseIcon()
-    {
-    // Load and set close icon
-    CFbsBitmap* icon = NULL;
-    CFbsBitmap* mask = NULL;
-
-    TRAP_IGNORE(AknsUtils::CreateIconLC( AknsUtils::SkinInstance(),
-                KAknsIIDQgnIndiItutListCollapse,
-                icon,
-                mask,
-                KAvkonBitmapFile,
-                EMbmAvkonQgn_indi_button_preview_close,
-                EMbmAvkonQgn_indi_button_preview_close_mask
-                );
-                CleanupStack::Pop( 2 ); // codescanner::cleanup
-                );
-
-    // TODO: Layout update
-    AknIconUtils::SetSize( icon, TSize( KCloseIconSize, KCloseIconSize ), EAspectRatioPreserved );
-    AknIconUtils::SetSize( mask, TSize( KCloseIconSize, KCloseIconSize ), EAspectRatioPreserved );
-
-    static_cast<CHgTeleportGridItemDrawer*>(iItemDrawer)->SetCloseIcon( icon, mask );
-    }
-
-
-// -----------------------------------------------------------------------------
-// CHgTeleportFastSwapGrid::Redraw
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportFastSwapGrid::Redraw()
-    {
-    DrawDeferred();
-    CCoeControl* ctrlToRedraw = Parent();
-    if ( ctrlToRedraw )
-        {
-        ctrlToRedraw->DrawDeferred();
-        ctrlToRedraw = ctrlToRedraw->Parent();
-        if ( ctrlToRedraw )
-            {
-            ctrlToRedraw->DrawNow();
-            }
-        }
-    }
-
-
-/* ================================================================================
- * CHgTeleportGridItemDrawer
- * ================================================================================
- */
-
-// -----------------------------------------------------------------------------
-// CHgTeleportGridItemDrawer::CHgTeleportGridItemDrawer
-// -----------------------------------------------------------------------------
-//
-CHgTeleportGridItemDrawer::CHgTeleportGridItemDrawer(
-        CHgTeleportFastSwapGrid* aGrid,
-        CFormattedCellListBoxData* aData )
-: CFormattedCellListBoxItemDrawer( aGrid->Model(),
-        NULL,
-        aData ),
-  iGrid( aGrid )
-    {
-    AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EScreen, iScreenRect);
-    }
-
-
-// -----------------------------------------------------------------------------
-// CHgTeleportGridItemDrawer::~CHgTeleportGridItemDrawer
-// -----------------------------------------------------------------------------
-//
-CHgTeleportGridItemDrawer::~CHgTeleportGridItemDrawer()
-    {
-    delete iCloseIcon;
-    delete iCloseIconMask;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CHgTeleportGridItemDrawer::SetCloseIcon
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportGridItemDrawer::SetCloseIcon( CFbsBitmap* aBmp, CFbsBitmap* aMask )
-    {
-    delete iCloseIcon;
-    iCloseIcon = aBmp;
-    delete iCloseIconMask;
-    iCloseIconMask = aMask;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CHgTeleportGridItemDrawer::GetCloseIconRect
-// -----------------------------------------------------------------------------
-//
-TRect CHgTeleportGridItemDrawer::GetCloseIconRect( const TRect& aItemRect ) const
-    {
-    // TODO: layout update
-    const TInt KRightMargin = 7;
-    const TInt KTopMargin = 34;
-    TRect retVal( TPoint(aItemRect.iBr.iX - KCloseIconSize - KRightMargin,
-                         aItemRect.iTl.iY + KTopMargin),
-                         TSize( KCloseIconSize, KCloseIconSize ) );
-    return retVal;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CHgTeleportGridItemDrawer::SetEdgeOffset
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportGridItemDrawer::SetEdgeOffset( TInt aLeftOffset, TInt aRightOffset )
-    {
-    iLeftOffset = aLeftOffset;
-    iRightOffset = aRightOffset;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CHgTeleportGridItemDrawer::DrawActualItem
-// -----------------------------------------------------------------------------
-//
- void CHgTeleportGridItemDrawer::DrawActualItem( TInt aItemIndex, const TRect& aActualItemRect,
-                                                 TBool aItemIsCurrent, TBool aViewIsEmphasized,
-                                                 TBool aViewIsDimmed, TBool aItemIsSelected ) const
-    {
-    if ( IsItemRectVisible( aActualItemRect ) )
-        {
-        // Calculate offset of the visible rectangle
-        TRect drawRect = aActualItemRect;
-        if ( drawRect.iTl.iX < iLeftOffset )
-            {
-            drawRect.iTl.iX = iLeftOffset;
-            }
-        if ( iScreenRect.Width() - drawRect.iBr.iX < iRightOffset )
-            {
-            drawRect.iBr.iX = iScreenRect.Width() - iRightOffset;
-            }
-        iGc->SetClippingRect(drawRect);
-        
-        // Check for item highlight
-        TBool itemIsCurrent = !iGrid->IsHighlightVisible() ? EFalse : aItemIsCurrent;
-        
-        // Draw item
-        CFormattedCellListBoxItemDrawer::DrawActualItem(aItemIndex, aActualItemRect,
-                itemIsCurrent, aViewIsEmphasized, aViewIsDimmed, aItemIsSelected );
-        
-        if ( iGrid->CanCloseItem( aItemIndex ) && iCloseIcon && iCloseIconMask )
-            {
-            TRect closeIconRect = GetCloseIconRect( aActualItemRect );
-            // Draw frame
-            // TODO: layout update
-            const TInt KFrameGrow = 5;
-            TRect innerRect = closeIconRect;
-            TRect outerRect = innerRect;
-            outerRect.Grow(KFrameGrow, KFrameGrow);
-            MAknsSkinInstance* skin = AknsUtils::SkinInstance();
-            if ( iGrid->IsItemCloseHit( aItemIndex ) )
-                {
-                AknsDrawUtils::DrawFrame(skin, *iGc, outerRect, innerRect,
-                        KAknsIIDQgnFrSctrlButtonPressed, KAknsIIDQgnFrSctrlButtonCenterPressed);
-                }
-            else
-                {
-                AknsDrawUtils::DrawFrame(skin, *iGc, outerRect, innerRect,
-                        KAknsIIDQgnFrSctrlButton, KAknsIIDQgnFrSctrlButtonCenter);
-                }
-            // Draw close icon
-            TRect sourceRect( TPoint(0,0), iCloseIcon->SizeInPixels() );
-            iGc->DrawBitmapMasked( closeIconRect, iCloseIcon, sourceRect, iCloseIconMask, ETrue );
-            }
-        }
-    }
-
-
-// -----------------------------------------------------------------------------
-// CHgTeleportGridItemDrawer::DrawActualItem
-// -----------------------------------------------------------------------------
-//
-TBool CHgTeleportGridItemDrawer::IsItemRectVisible( const TRect& aItemRect ) const
-    {
-    TBool retVal( EFalse );
-    TRect viewRect = iGrid->VisibleViewRect();
-    if ( // left edge of item rectangle on screen
-         ( aItemRect.iTl.iX >= viewRect.iTl.iX && aItemRect.iTl.iX <= viewRect.iBr.iX ) ||
-         // right edge of item rectangle on screen
-         ( aItemRect.iBr.iX >= viewRect.iTl.iX && aItemRect.iBr.iX <= viewRect.iBr.iX )
-        )
-        {
-        retVal = ETrue;
-        }
-    return retVal;
-    }
- 
- 
- 
- /* ================================================================================
-  * CHgTeleportGridHighlightTimer
-  * ================================================================================
-  */
-
-// -----------------------------------------------------------------------------
-// CHgTeleportGridHighlightTimer::CHgTeleportGridHighlightTimer
-// -----------------------------------------------------------------------------
-//
-CHgTeleportFastSwapTimer::CHgTeleportFastSwapTimer( MHgTeleportFastSwapTimerObserver& aObserver )
-: CTimer( EPriorityStandard ),
-  iObserver( &aObserver )
-    {
-    }
-
-
-// -----------------------------------------------------------------------------
-// CHgTeleportGridHighlightTimer::CHgTeleportGridHighlightTimer
-// -----------------------------------------------------------------------------
-//
-CHgTeleportFastSwapTimer::~CHgTeleportFastSwapTimer()
-    {
-    Cancel();
-    }
-
-
-// -----------------------------------------------------------------------------
-// CHgTeleportGridHighlightTimer::ConstructL
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportFastSwapTimer::ConstructL()
-    {
-    CTimer::ConstructL();
-    CActiveScheduler::Add( this );
-    }
-
-
-// -----------------------------------------------------------------------------
-// CHgTeleportGridHighlightTimer::CHgTeleportGridHighlightTimer
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportFastSwapTimer::RunL()
-    {
-    iObserver->TimerCompletedL(this);
-    }
- 
- // End of file
--- a/taskswitcher/teleportui/hgteleportapp/src/hgteleportphysics.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,212 +0,0 @@
-/*
- * ============================================================================
- *  Name        : hgteleportphysics.cpp
- *  Part of     : Hg Teleport
- *  Description : Application class
- *  Version     : %version:  4 %
- *
- *  Copyright © 2009 Nokia.  All rights reserved.
- *  This material, including documentation and any related computer
- *  programs, is protected by copyright controlled by Nokia.  All
- *  rights are reserved.  Copying, including reproducing, storing,
- *  adapting or translating, any or all of this material requires the
- *  prior written consent of Nokia.  This material also contains
- *  confidential information which may not be disclosed to others
- *  without the prior written consent of Nokia.
- * ============================================================================
- * 
- */
-
-#include <aknphysicsobserveriface.h>
-
-#include "hgteleportphysics.h"
-
-const TInt KSingleItemChangeAnimTime = 1000000; // 1 second
-const TInt KAnimationFrameCount = 15; // 15 frames per second
-
-// -----------------------------------------------------------------------------
-// CHgTeleportPhysics::CHgTeleportPhysics
-// -----------------------------------------------------------------------------
-//
-CHgTeleportPhysics::CHgTeleportPhysics( MAknPhysicsObserver& aObserver ) :
-    CActive( EPriorityStandard ), iObserver( aObserver )
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportPhysics::NewLC
-// -----------------------------------------------------------------------------
-//
-CHgTeleportPhysics* CHgTeleportPhysics::NewLC( MAknPhysicsObserver& aObserver )
-    {
-    CHgTeleportPhysics* self = new ( ELeave ) CHgTeleportPhysics( aObserver );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportPhysics::NewL
-// -----------------------------------------------------------------------------
-//
-CHgTeleportPhysics* CHgTeleportPhysics::NewL( MAknPhysicsObserver& aObserver )
-    {
-    CHgTeleportPhysics* self = CHgTeleportPhysics::NewLC( aObserver );
-    CleanupStack::Pop();
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportPhysics::ConstructL
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportPhysics::ConstructL()
-    {
-    User::LeaveIfError( iTimer.CreateLocal() );
-    CActiveScheduler::Add( this );
-    // Animation parameters
-    const TInt KInitValue = 0;
-    iAnimationTickTime = KSingleItemChangeAnimTime / KSingleItemChangeAnimTime;
-    iPhysicsState = EStopped;
-    iAnimationTicks = KInitValue;
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportPhysics::~CHgTeleportPhysics
-// -----------------------------------------------------------------------------
-//
-CHgTeleportPhysics::~CHgTeleportPhysics()
-    {
-    Cancel();
-    iTimer.Close();
-    iAnimationSteps.Close();
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportPhysics::DoCancel
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportPhysics::DoCancel()
-    {
-    iTimer.Cancel();
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportPhysics::StartPhysics
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportPhysics::StartPhysics( const TPoint& aTarget )
-    {
-    Cancel();
-    // Setup animation
-    TPoint currentPoint = iObserver.ViewPosition();
-    if ( currentPoint.iX != aTarget.iX )
-        {
-        iAnimationTicks = 0;
-        if ( CalculateAnimationSteps( aTarget ) == KErrNone )
-            {
-            // Request
-            iTimer.After( iStatus, 0 );
-            SetActive();
-            }
-        else
-            {
-            // If calculation failes (no memory) or there is
-            // only a small step, set view to target
-            iObserver.ViewPositionChanged( aTarget, ETrue, 0);
-            iObserver.PhysicEmulationEnded();
-            }
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportPhysics::StopPhysics
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportPhysics::StopPhysics()
-    {
-    Cancel();
-    if ( iPhysicsState == ERunning || iPhysicsState == EFinished )
-        {
-        iObserver.PhysicEmulationEnded();
-        }
-    iPhysicsState = EStopped;
-    iAnimationTicks = 0;
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportPhysics::RunL
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportPhysics::RunL()
-    {
-    if ( iPhysicsState == EStopped )
-        {
-        // Start animation
-        iPhysicsState = ERunning;
-        iTimer.After( iStatus, iAnimationTickTime );
-        SetActive();
-        }
-    else if ( iPhysicsState == ERunning )
-        {
-        // Ongoing animation
-        if ( iAnimationTicks >= 0 && iAnimationTicks < KAnimationFrameCount )
-            {
-            iObserver.ViewPositionChanged( iObserver.ViewPosition()+iAnimationSteps[iAnimationTicks], ETrue, 0 );
-            }
-        iAnimationTicks++;
-        if ( iAnimationTicks >= KAnimationFrameCount )
-            {
-            iPhysicsState = EFinished;
-            }
-        iTimer.After( iStatus, iAnimationTickTime );
-        SetActive();
-        }
-    else if ( iPhysicsState == EFinished )
-        {
-        iAnimationTicks = 0;
-        iPhysicsState = EStopped;
-        iObserver.PhysicEmulationEnded();
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportPhysics::RunError
-// -----------------------------------------------------------------------------
-//
-TInt CHgTeleportPhysics::RunError( TInt /*aError*/ )
-    {
-    return KErrNone;
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportPhysics::CalculateAnimationSteps
-// -----------------------------------------------------------------------------
-//
-TInt CHgTeleportPhysics::CalculateAnimationSteps( const TPoint& aTarget )
-    {
-    TInt retVal( KErrNone );
-    iAnimationSteps.Reset();
-    retVal = iAnimationSteps.Reserve( KAnimationFrameCount );
-    if ( retVal == KErrNone )
-        {
-        TInt yValue = aTarget.iY;
-        TPoint currentPos = iObserver.ViewPosition();
-        TInt moveLen = aTarget.iX - currentPos.iX;
-        if ( moveLen > KAnimationFrameCount || moveLen < -KAnimationFrameCount )
-            {
-            TInt singleStep = moveLen / KAnimationFrameCount;
-            for ( TInt i = 0; i < KAnimationFrameCount - 1; i++ )
-                {
-                iAnimationSteps.Append( TPoint( singleStep, yValue ) );
-                }
-            TInt lastStep = moveLen - ( ( KAnimationFrameCount - 1 ) * singleStep );
-            iAnimationSteps.Append( TPoint( lastStep, yValue ) );
-            }
-        else
-            {
-            retVal = KErrArgument;
-            }
-        }
-    return retVal;
-    }
--- a/taskswitcher/teleportui/hgteleportapp/src/hgteleportphysicsengine.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,143 +0,0 @@
-/*
- * ============================================================================
- *  Name        : hgteleportphysicsengine.cpp
- *  Part of     : Hg Teleport
- *  Description : Teleport physics
- *  Version     : %version:  5 %
- *
- *  Copyright © 2009 Nokia.  All rights reserved.
- *  This material, including documentation and any related computer
- *  programs, is protected by copyright controlled by Nokia.  All
- *  rights are reserved.  Copying, including reproducing, storing,
- *  adapting or translating, any or all of this material requires the
- *  prior written consent of Nokia.  This material also contains
- *  confidential information which may not be disclosed to others
- *  without the prior written consent of Nokia.
- * ============================================================================
- *
- */
-#include <aknphysics.h>
-
-#include "hgteleportphysicsengine.h"
-#include "hgteleportphysics.h"
-
-// -----------------------------------------------------------------------------
-// CHgTeleportPhysicsHandler::CHgTeleportPhysicsHandler
-// -----------------------------------------------------------------------------
-//
-CHgTeleportPhysicsEngine::CHgTeleportPhysicsEngine()
-    {
-    // No implementation required
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportPhysicsEngine::~CHgTeleportPhysicsEngine
-// -----------------------------------------------------------------------------
-//
-CHgTeleportPhysicsEngine::~CHgTeleportPhysicsEngine()
-    {
-    delete iTeleportPhysics;
-    delete iPhysics;
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportPhysicsEngine::NewLC
-// -----------------------------------------------------------------------------
-//
-CHgTeleportPhysicsEngine* CHgTeleportPhysicsEngine::NewLC(
-        MAknPhysicsObserver& aPhysicObserver, CCoeControl& aViewControl)
-    {
-    CHgTeleportPhysicsEngine* self = new (ELeave) CHgTeleportPhysicsEngine();
-    CleanupStack::PushL(self);
-    self->ConstructL(aPhysicObserver, aViewControl);
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportPhysicsEngine::NewL
-// -----------------------------------------------------------------------------
-//
-CHgTeleportPhysicsEngine* CHgTeleportPhysicsEngine::NewL(
-        MAknPhysicsObserver& aPhysicObserver, CCoeControl& aViewControl)
-    {
-    CHgTeleportPhysicsEngine* self = CHgTeleportPhysicsEngine::NewLC(
-            aPhysicObserver, aViewControl);
-    CleanupStack::Pop(); // self;
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportPhysicsEngine::ConstructL
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportPhysicsEngine::ConstructL(MAknPhysicsObserver& aPhysicObserver,
-        CCoeControl& aViewControl)
-    {
-    iPhysics = CAknPhysics::NewL(aPhysicObserver, &aViewControl);//TODO:
-    iTeleportPhysics = CHgTeleportPhysics::NewL(aPhysicObserver);
-    }
-
-
-// -----------------------------------------------------------------------------
-// CHgTeleportPhysicsEngine::IsRunning
-// -----------------------------------------------------------------------------
-//
-TBool CHgTeleportPhysicsEngine::IsRunning() const
-    {
-    return iPhysics->OngoingPhysicsAction() != CAknPhysics::EAknPhysicsActionNone;
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportPhysicsEngine::HandleDragEvent
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportPhysicsEngine::HandleDragEvent(
-        AknTouchGestureFw::MAknTouchGestureFwDragEvent& aEvent)
-    {
-    if (AknTouchGestureFw::EAknTouchGestureFwStart == aEvent.State())
-        {
-        iPhysics->StopPhysics();
-        iStartTime.HomeTime();
-        }
-    else if (AknTouchGestureFw::EAknTouchGestureFwOn == aEvent.State())
-        {
-        TPoint deltaPoint(aEvent.PreviousPosition() - aEvent.CurrentPosition());
-        iPhysics->RegisterPanningPosition(deltaPoint);
-        }
-    else //AknTouchGestureFw::EAknTouchGestureFwStop
-        {
-        TPoint drag(aEvent.PreviousPosition() - aEvent.CurrentPosition());
-        iPhysics->StartPhysics(drag, iStartTime);
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportPhysicsEngine::Stop
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportPhysicsEngine::Stop()
-    {
-    iPhysics->StopPhysics();
-    iTeleportPhysics->StopPhysics();
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportPhysicsEngine::AnimateToTargetL
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportPhysicsEngine::AnimateToTarget(const TPoint& aPoint)
-    {
-    iTeleportPhysics->StartPhysics(aPoint);
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportPhysicsEngine::ReInitPhysicsL
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportPhysicsEngine::ReInitPhysicsL(const TSize& aWorldSize,
-        const TSize& aViewSize, TBool aLandscape)
-    {
-    iPhysics->InitPhysicsL(aWorldSize, aViewSize, aLandscape);
-    }
-
-//End file
--- a/taskswitcher/teleportui/hgteleportappecom/data/hgteleportappecom.rss	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-/*
-* ============================================================================
-*  Name        : hgteleportappecom.rss
-*  Part of     : Teleport
-*  Description : Ecom registration file for alternate fast swap plugin
-*  Version     : %version: sa1spcx1#2.1.2 %
-*
-*  Copyright (C) 2009 Nokia Corporation.
-*  This material, including documentation and any related 
-*  computer programs, is protected by copyright controlled by 
-*  Nokia Corporation. All rights are reserved. Copying, 
-*  including reproducing, storing,  adapting or translating, any 
-*  or all of this material requires the prior written consent of 
-*  Nokia Corporation. This material also contains confidential 
-*  information which may not be disclosed to others without the 
-*  prior written consent of Nokia Corporation.
-*
-* ============================================================================
-*/
-
-#include <ecom/registryinfo.rh>
-#include "hgteleportappecomconst.hrh"
-#include "akncapserveralternatefspluginconst.hrh"
-
-RESOURCE REGISTRY_INFO theInfo
-    {
-    // UID for the DLL
-    dll_uid = KHgTeleportAppPluginDllUid;
-    // Declare array of interface info
-    interfaces = 
-        {
-        INTERFACE_INFO
-            {
-            // UID of interface that is implemented
-            interface_uid = KAknCapServerAlternateFsPluginInterfaceUid;
-            implementations = 
-                {
-                IMPLEMENTATION_INFO
-                    {
-                    implementation_uid = KHgTeleportAppPluginImplementationUid;
-                    version_no         = 1;
-                    display_name       = "";
-                    default_data       = "";
-                    opaque_data        = "";
-                    }
-                };
-            }
-        };
-    }
--- a/taskswitcher/teleportui/hgteleportappecom/group/bld.inf	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-/*
-* ============================================================================
-*  Name        : bld.inf
-*  Part of     : Teleport
-*  Description : Teleport application ecom plugin
-*  Version     : %version: 3 %
-*
-*  Copyright © 2009 Nokia.  All rights reserved.
-*  This material, including documentation and any related computer
-*  programs, is protected by copyright controlled by Nokia.  All
-*  rights are reserved.  Copying, including reproducing, storing,
-*  adapting or translating, any or all of this material requires the
-*  prior written consent of Nokia.  This material also contains
-*  confidential information which may not be disclosed to others
-*  without the prior written consent of Nokia.
-* ============================================================================
-*/
-
-#include <platform_paths.hrh>
-
-PRJ_PLATFORMS
-DEFAULT
-
-PRJ_EXPORTS
-
-PRJ_MMPFILES
-hgteleportappecom.mmp
-
-PRJ_TESTMMPFILES
--- a/taskswitcher/teleportui/hgteleportappecom/group/hgteleportappecom.mmp	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-/*
-* ============================================================================
-*  Name        : hgteleportappecom.cpp
-*  Part of     : Teleport
-*  Description : Teleport application ecom plugin
-*  Version     : %version: 5 %
-*
-*  Copyright © 2009 Nokia.  All rights reserved.
-*  This material, including documentation and any related computer
-*  programs, is protected by copyright controlled by Nokia.  All
-*  rights are reserved.  Copying, including reproducing, storing,
-*  adapting or translating, any or all of this material requires the
-*  prior written consent of Nokia.  This material also contains
-*  confidential information which may not be disclosed to others
-*  without the prior written consent of Nokia.
-* ============================================================================
-*/
-
-#include <platform_paths.hrh>
-#include <data_caging_paths.hrh>
-#include "../inc/hgteleportappecomconst.hrh"
-
-TARGET          hgteleportappecom.dll
-TARGETTYPE      PLUGIN
-UID             0x10009D8D KHgTeleportAppPluginDllUid
-CAPABILITY      CAP_ECOM_PLUGIN
-
-SOURCEPATH      ../src
-SOURCE          proxy.cpp
-SOURCE          hgteleportappecom.cpp
-
-USERINCLUDE     ../inc
-USERINCLUDE     ../../trace
-
-APP_LAYER_SYSTEMINCLUDE
-
-SOURCEPATH      ../data
-START RESOURCE  hgteleportappecom.rss
-TARGET          hgteleportappecom.rsc
-TARGETPATH      /resource/plugins
-END
-
-LIBRARY         euser.lib 
-LIBRARY         ecom.lib
-LIBRARY         apgrfx.lib
-LIBRARY         cone.lib
-
-DEBUGLIBRARY    flogger.lib
-
--- a/taskswitcher/teleportui/hgteleportappecom/inc/hgteleportappecom.h	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,108 +0,0 @@
-/*
-* ============================================================================
-*  Name        : hgteleportappecom.h
-*  Part of     : Teleport
-*  Description : Teleport application ecom plugin
-*  Version     : %version: sa1spcx1#4.1.3 %
-*
-*  Copyright © 2009 Nokia.  All rights reserved.
-*  This material, including documentation and any related computer
-*  programs, is protected by copyright controlled by Nokia.  All
-*  rights are reserved.  Copying, including reproducing, storing,
-*  adapting or translating, any or all of this material requires the
-*  prior written consent of Nokia.  This material also contains
-*  confidential information which may not be disclosed to others
-*  without the prior written consent of Nokia.
-* ============================================================================
-*/
-
-#ifndef HGTELEPORTAPPECOM_H
-#define HGTELEPORTAPPECOM_H
-
-#include <e32base.h>
-#include <akncapserveralternatefsplugin.h>
-
-/**
- * Teleport ecom plugin which is loaded by AknCapServer as an alternate Fast 
- * Swap. Uses P&S to show/dismiss the Teleport application. 
- */
-class CHgTeleportEcomPlugin : public CAknCapAppServerAlternateFs
-    {
-public:
-    
-    /**
-     * Symbian two phased constructors.
-     *
-     * @return CHgTeleportEcomPlugin pointer.
-     */
-    static CHgTeleportEcomPlugin* NewL();
-    
-    /**
-     * Destructor.
-     */
-    ~CHgTeleportEcomPlugin();
-    
-public: 
-    
-    // From CAknCapAppServerAlternateFs
-    /**
-     * Shows the alternate fast swap.
-     */
-    virtual void Show();
-
-    /**
-     * Dismisses the alternate fast swap.
-     */
-    virtual void Dismiss();
-
-    /**
-     * Checks if alternate fast swap is currently visible.
-     * 
-     * @return ETrue If alternate FS is visible.
-     */    
-    virtual TBool IsVisible();
-
-    /**
-     * Checks if alternate fast swap is ready to be shown.
-     * 
-     * @return ETrue If alternate FS is ready.
-     */    
-    virtual TBool IsReady();
-
-    /**
-     * Forward long app key to the alternate fast swap.
-     */
-    virtual void HandleLongAppKeyPress();
-
-    /**
-     * Forward short app key to the alternate fast swap.
-     */
-    virtual void HandleShortAppKeyPress();
-
-private:
-
-    /**
-     * Default constructor, implicitly called by NewL().
-     */
-    CHgTeleportEcomPlugin();
-    
-    /**
-     * 2nd phase construction, called by NewL().
-     */
-    void ConstructL();
-    
-    /**
-     * Sets the P&S property to given value.
-     * 
-     * @param aValue Value
-     */
-    void SetTeleportStateProperty( TInt aValue );
-    
-    /**
-     * Defines the P&S property.
-     */
-    void DefineTeleportStateProperty();
-
-    };
-    
-#endif // HGTELEPORTAPPECOM_H
--- a/taskswitcher/teleportui/hgteleportappecom/inc/hgteleportappecomconst.hrh	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-/*
-* ============================================================================
-*  Name        : hgteleportappecomconst.hrh
-*  Part of     : Teleport
-*  Description : Teleport application ecom plugin UIDs
-*  Version     : %version: 3 %
-*
-*  Copyright © 2009 Nokia.  All rights reserved.
-*  This material, including documentation and any related computer
-*  programs, is protected by copyright controlled by Nokia.  All
-*  rights are reserved.  Copying, including reproducing, storing,
-*  adapting or translating, any or all of this material requires the
-*  prior written consent of Nokia.  This material also contains
-*  confidential information which may not be disclosed to others
-*  without the prior written consent of Nokia.
-* ============================================================================
-*/
-
-#ifndef HGTELEPORTAPPECOMCONST_HRH
-#define HGTELEPORTAPPECOMCONST_HRH
-                          
-#define KHgTeleportAppPluginDllUid 0x2001FD72
-#define KHgTeleportAppPluginImplementationUid 0x2001FD72
-
-#endif // HGTELEPORTAPPECOMCONST_HRH
--- a/taskswitcher/teleportui/hgteleportappecom/inc/hgteleportappecomlogging.h	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-/*
-* ============================================================================
-*  Name        : hgteleportappecomlogging.h
-*  Part of     : Classic UI / Teleport
-*  Description : Defines logs for hgteleportappecom
-*  Version     : %version:  1 % 
-*
-*  Copyright (c) 2009 Nokia.  All rights reserved.
-*  This material, including documentation and any related computer
-*  programs, is protected by copyright controlled by Nokia.  All
-*  rights are reserved.  Copying, including reproducing, storing,
-*  adapting or translating, any or all of this material requires the
-*  prior written consent of Nokia.  This material also contains
-*  confidential information which may not be disclosed to others
-*  without the prior written consent of Nokia.
-* ============================================================================
-* Template version: 4.1.1
-*/
-
-#ifdef _DEBUG
-_LIT( KHgLogFile, "hgteleportappecom.txt" );
-_LIT( KHgLogPath, "teleport" );
-#define _HGLOG_LOG_COMPONENT_ID KHgTeleportAppPluginDllUid
-
-#endif
-#include "hglogging.h"
--- a/taskswitcher/teleportui/hgteleportappecom/src/hgteleportappecom.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,253 +0,0 @@
-/*
- * ===========================================================================
- *  Name        : hgteleportappecom.cpp
- *  Part of     : Teleport
- *  Description : Teleport application ecom plugin
- *  Version     : %version:  sa1spcx1#8.1.2 %
- *
- *  Copyright © 2009 Nokia Corporation.
- *  This material, including documentation and any related 
- *  computer programs, is protected by copyright controlled by 
- *  Nokia Corporation. All rights are reserved. Copying, 
- *  including reproducing, storing, adapting or translating, any 
- *  or all of this material requires the prior written consent of 
- *  Nokia Corporation. This material also contains confidential 
- *  information which may not be disclosed to others without the 
- *  prior written consent of Nokia Corporation.
- * ===========================================================================
- */
- 
-#include <e32property.h>
-#include <apgtask.h>
-#include <eikenv.h>
-
-#include "hgteleportappecomconst.hrh"
-#include "hgteleportappecom.h"
-
-#include "hgteleportappecomlogging.h"
-
-// AknCapServer UID, used for P&S category
-const TUid KTeleportStateCategory = { 0x10207218 };
-
-// Teleport UI, used as P&S key
-const TInt KTeleportStateKey = 0x20016BF0;
-
-// Values for Teleport launching P&S
-const TInt KTeleportBackgroundValue = 1;
-const TInt KTeleportForegroundValue = KTeleportBackgroundValue << 1;
-const TInt KTeleportShortAppKeyPressed = KTeleportForegroundValue << 1;
-const TInt KTeleportLongAppKeyPressed = KTeleportShortAppKeyPressed << 1;
-
-// Teleport application UID, for checking if teleport is running
-const TUid KTeleportAppUidValue = { 0x20016BF0 };
-
-// ---------------------------------------------------------------------------
-// CHgTeleportEcomPlugin::CHgTeleportEcomPlugin()
-// Default constructor for first phase construction.
-// ---------------------------------------------------------------------------
-//
-CHgTeleportEcomPlugin::CHgTeleportEcomPlugin()
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// CHgTeleportEcomPlugin::NewL()
-// Standard NewL.
-// ---------------------------------------------------------------------------
-//
-CHgTeleportEcomPlugin* CHgTeleportEcomPlugin::NewL()
-    {
-    CHgTeleportEcomPlugin* self = new ( ELeave ) CHgTeleportEcomPlugin;
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// CHgTeleportEcomPlugin::ConstructL()
-// 2nd phase construction.
-// ---------------------------------------------------------------------------
-//
-void CHgTeleportEcomPlugin::ConstructL()
-    {
-    HGLOG_CONTEXT( CHgTeleportEcomPlugin::ConstructL, HGLOG_LOCAL );
-    HGLOG_IN();
-    
-    DefineTeleportStateProperty();
-    
-    HGLOG_OUT();
-    }
-
-// ---------------------------------------------------------------------------
-// CHgTeleportEcomPlugin::~CHgTeleportEcomPlugin()
-// Destructor.
-// ---------------------------------------------------------------------------
-//
-CHgTeleportEcomPlugin::~CHgTeleportEcomPlugin()
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// CHgTeleportEcomPlugin::Show
-// ---------------------------------------------------------------------------
-//
-void CHgTeleportEcomPlugin::Show()
-    {
-    HGLOG_CONTEXT( CHgTeleportEcomPlugin::Show, HGLOG_LOCAL );
-    HGLOG_IN();
-    
-    TInt value( 0 );
-    RProperty::Get( KTeleportStateCategory, KTeleportStateKey, value );
-    value &= ~KTeleportBackgroundValue;
-    value |= KTeleportForegroundValue;
-    SetTeleportStateProperty( value );  
-    
-    HGLOG_OUT();    
-    }
-
-// ---------------------------------------------------------------------------
-// CHgTeleportEcomPlugin::Dismiss
-// ---------------------------------------------------------------------------
-//
-void CHgTeleportEcomPlugin::Dismiss()
-    {
-    HGLOG_CONTEXT( CHgTeleportEcomPlugin::Dismiss, HGLOG_LOCAL );
-    HGLOG_IN();
-    
-    TInt value( 0 );
-    RProperty::Get( KTeleportStateCategory, KTeleportStateKey, value );
-    value &= ~KTeleportForegroundValue;
-    value |= KTeleportBackgroundValue;
-    SetTeleportStateProperty( value );  
-    
-    HGLOG_OUT();     
-    }
-
-// ---------------------------------------------------------------------------
-// CHgTeleportEcomPlugin::HandleLongAppKeyPress
-// ---------------------------------------------------------------------------
-//
-void CHgTeleportEcomPlugin::HandleLongAppKeyPress()
-    {
-    HGLOG_CONTEXT( CHgTeleportEcomPlugin::Show, HGLOG_LOCAL );
-    HGLOG_IN();
-    
-    TInt value( 0 );
-    RProperty::Get( KTeleportStateCategory, KTeleportStateKey, value );
-    value &= ~KTeleportShortAppKeyPressed;
-    value |= KTeleportLongAppKeyPressed;
-    SetTeleportStateProperty( value );    
-    
-    HGLOG_OUT();    
-    }
-
-// ---------------------------------------------------------------------------
-// CHgTeleportEcomPlugin::HandleShortAppKeyPress
-// ---------------------------------------------------------------------------
-//
-void CHgTeleportEcomPlugin::HandleShortAppKeyPress()
-    {
-    HGLOG_CONTEXT( CHgTeleportEcomPlugin::Dismiss, HGLOG_LOCAL );
-    HGLOG_IN();
-    
-    TInt value( 0 );
-    RProperty::Get( KTeleportStateCategory, KTeleportStateKey, value );
-    value &= ~KTeleportLongAppKeyPressed;
-    value |= KTeleportShortAppKeyPressed;
-    SetTeleportStateProperty( value ); 
-    
-    HGLOG_OUT();     
-    }
-
-// ---------------------------------------------------------------------------
-// CHgTeleportEcomPlugin::IsVisible
-// ---------------------------------------------------------------------------
-//
-TBool CHgTeleportEcomPlugin::IsVisible()
-    {
-    HGLOG_CONTEXT( CHgTeleportEcomPlugin::IsVisible, HGLOG_LOCAL );
-    HGLOG_IN();
-    
-    TInt value( 0 );
-    RProperty::Get( KTeleportStateCategory, KTeleportStateKey, value );
-    if ( value & KTeleportForegroundValue )
-        {
-        HGLOG_OUT();
-        return ETrue;
-        }
-    HGLOG_OUT();
-    return EFalse;
-    }
-
-// ---------------------------------------------------------------------------
-// CHgTeleportEcomPlugin::IsReady
-// ---------------------------------------------------------------------------
-//
-TBool CHgTeleportEcomPlugin::IsReady()
-    {
-    HGLOG_CONTEXT( CHgTeleportEcomPlugin::IsReady, HGLOG_LOCAL );
-    HGLOG_IN();
-
-    TBool ret = EFalse;    
-    CEikonEnv* eikonEnv = CEikonEnv::Static();
-    
-    if ( eikonEnv )
-        {
-        TApaTaskList taskList( eikonEnv->WsSession() );
-        TApaTask task = taskList.FindApp( KTeleportAppUidValue ); 
-    
-        if ( task.Exists() )
-            {
-            ret = ETrue;
-            }
-        }
-    
-    HGLOG1_OUT( "IsReady returns: %d", ret );
-    return ret;
-    }
-    
-// -----------------------------------------------------------------------------
-// CHgTeleportEcomPlugin::SetTeleportStateProperty
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportEcomPlugin::SetTeleportStateProperty( TInt aValue )
-    {
-    HGLOG_CONTEXT( CHgTeleportEcomPlugin::SetTeleportShowProperty, HGLOG_LOCAL );
-    HGLOG_IN();
-    
-    if ( RProperty::Set( 
-            KTeleportStateCategory, KTeleportStateKey, aValue ) != KErrNone )
-        {
-        DefineTeleportStateProperty();
-        TInt error = 
-            RProperty::Set( KTeleportStateCategory, KTeleportStateKey, aValue );
-        if ( error != KErrNone )
-            {
-            HGLOG1( HGLOG_INFO, "RProperty::Set Error: %d", error ); 
-            }        
-        }
-    
-    HGLOG_OUT();    
-    }
-
-// -----------------------------------------------------------------------------
-// CHgTeleportEcomPlugin::DefineTeleportStateProperty
-// -----------------------------------------------------------------------------
-//
-void CHgTeleportEcomPlugin::DefineTeleportStateProperty()
-    {
-    HGLOG_CONTEXT( CHgTeleportEcomPlugin::DefineTeleportShowProperty, HGLOG_LOCAL );
-    HGLOG_IN();
-    
-    TInt error = RProperty::Define( 
-            KTeleportStateCategory, KTeleportStateKey, RProperty::EInt );
-    if ( error != KErrNone )
-        {
-        HGLOG1( HGLOG_INFO, "RProperty::Define Error: %d", error );
-        }              
-    
-    HGLOG_OUT();
-    }
-
-// End of file 
--- a/taskswitcher/teleportui/hgteleportappecom/src/proxy.cpp	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-/*
-* ==============================================================================
-*  Name        : proxy.cpp
-*  Part of     : Teleport
-*  Description : Teleport application ecom plugin
-*  Version     : %version: 2 %
-*
-*  Copyright (c) 2008 Nokia Corporation.
-*  This material, including documentation and any related 
-*  computer programs, is protected by copyright controlled by 
-*  Nokia Corporation. All rights are reserved. Copying, 
-*  including reproducing, storing, adapting or stranslating, any 
-*  or all of this material requires the prior written consent of 
-*  Nokia Corporation. This material also contains confidential 
-*  information which may not be disclosed to others without the 
-*  prior written consent of Nokia Corporation.
-* ==============================================================================
-*/
-
-// INCLUDE FILES
-#include <e32std.h>
-#include <ecom/implementationproxy.h>
-
-#include "hgteleportappecom.h"
-#include "hgteleportappecomconst.hrh"
-
-// Provides a key value pair table, this is used to identify
-// the correct construction function for the requested interface.
-const TImplementationProxy ImplementationTable[] = 
-    {
-    IMPLEMENTATION_PROXY_ENTRY( 
-        KHgTeleportAppPluginImplementationUid,
-        CHgTeleportEcomPlugin::NewL )
-    };
-
-// Function used to return an instance of the proxy table.
-EXPORT_C const TImplementationProxy* ImplementationGroupProxy( 
-    TInt& aTableCount )
-    {
-    aTableCount 
-        = sizeof ( ImplementationTable ) / sizeof( TImplementationProxy );
-    return ImplementationTable;
-    }
-
-// End of file
--- a/taskswitcher/teleportui/inc/hggraphicids.h	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-/*
-* ==============================================================================
-*  Name        : hggraphicids.h
-*  Part of     : Hg Graphics Loader
-*  Description : Header file containing ID list
-*  Version     : %version: 1 %
-*
-*  Copyright (c) 2007 Nokia Corporation.
-*  This material, including documentation and any related
-*  computer programs, is protected by copyright controlled by
-*  Nokia Corporation. All rights are reserved. Copying,
-*  including reproducing, storing, adapting or translating, any
-*  or all of this material requires the prior written consent of
-*  Nokia Corporation. This material also contains confidential
-*  information which may not be disclosed to others without the
-*  prior written consent of Nokia Corporation.
-* ==============================================================================
-*/
-
-#ifndef __HGGRAPHICIDS_H__
-#define __HGGRAPHICIDS_H__
-
-#include <e32base.h>
-
-/**
- * Logical IDs for all icons used in Teleport.
- */
-enum THgGraphicId
-    {
-    EHgGraphicIdLAST
-    };
-
-#endif // __HGGRAPHICIDS_H__
--- a/taskswitcher/teleportui/inc/hggraphictab.h	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-/*
-* ==============================================================================
-*  Name        : hggraphictab.h
-*  Part of     : Hg Graphics Loader
-*  Description : Header file with filename and skin id tables
-*  Version     : %version: 1 %
-*
-*  Copyright (c) 2007 Nokia Corporation.
-*  This material, including documentation and any related
-*  computer programs, is protected by copyright controlled by
-*  Nokia Corporation. All rights are reserved. Copying,
-*  including reproducing, storing, adapting or translating, any
-*  or all of this material requires the prior written consent of
-*  Nokia Corporation. This material also contains confidential
-*  information which may not be disclosed to others without the
-*  prior written consent of Nokia Corporation.
-* ==============================================================================
-*/
-
-#ifndef __HGGRAPHICTAB_H__
-#define __HGGRAPHICTAB_H__
-
-#include <e32base.h>
-
-#include <AknUtils.h>
-#include <AknsUtils.h>          // skinned icons
-#include <AknsConstants.h>      // skinned icon ids
-
-
-/**
- * Name of image file in case icon is not available from the skin.
- * Path should not be included.
- * Use _S( "" ) if skin id should be used instead.
- * Order and count must match THgGraphicId. (except the last-marker)
- */
-static const TText* const KHgGraphicFiles[] =
-    {
-    _S( "" )
-    };
-
-/**
- * Skin related IDs. Not in use yet.
- * Use all zeros if image file should be used instead.
- * Order and count must match THgGraphicId. (except the last-marker)
- */
-static const TAknsItemID KHgGraphicSkinIds[] =
-    {
-    KAknsIIDNone
-    };
-
-#endif // __HGGRAPHICTAB_H__
--- a/taskswitcher/teleportui/rom/hgteleport.iby	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-/*
-* ============================================================================
-*  Name        : hgteleport.iby
-*  Part of     : Huriganes
-*  Description : Iby file for teleport
-*  Version     : %version: sa1spcx1#41.1.6 %
-*
-*  Copyright © 2008 Nokia.  All rights reserved.
-*  This material, including documentation and any related computer
-*  programs, is protected by copyright controlled by Nokia.  All
-*  rights are reserved.  Copying, including reproducing, storing,
-*  adapting or translating, any or all of this material requires the
-*  prior written consent of Nokia.  This material also contains
-*  confidential information which may not be disclosed to others
-*  without the prior written consent of Nokia.
-* ============================================================================
-*/
-#ifndef __HURIGANESTELEPORT_IBY__
-#define __HURIGANESTELEPORT_IBY__
-
-// AknCapServer alternate fast swap plugin
-ECOM_PLUGIN( hgteleportappecom.dll, hgteleportappecom.rsc )
-
-data=DATAZ_/private/10003a3f/apps/hgteleport_reg.rsc                            private/10003a3f/import/apps/hgteleport_reg.rsc
-file=ABI_DIR/BUILD_DIR/hgteleport.exe                                           PROGRAMS_DIR/hgteleport.exe
-
-// backup registration
-data=DATAZ_/private/20016BF0/backup_registration.xml                            private/20016BF0/backup_registration.xml
-
-// stub sis
-data=ZSYSTEM/install/teleport_stub.sis                  system/install/teleport_stub.sis
-
-#endif 
--- a/taskswitcher/teleportui/rom/hgteleportresources.iby	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,24 +0,0 @@
-/*
-* ============================================================================
-*  Name        : hgteleportresources.iby
-*  Part of     : Huriganes
-*  Description : Iby file for teleport resources
-*  Version     : %version: sa1spcx1#14.1.2.1.6 %
-*
-*  Copyright © 2008 Nokia.  All rights reserved.
-*  This material, including documentation and any related computer
-*  programs, is protected by copyright controlled by Nokia.  All
-*  rights are reserved.  Copying, including reproducing, storing,
-*  adapting or translating, any or all of this material requires the
-*  prior written consent of Nokia.  This material also contains
-*  confidential information which may not be disclosed to others
-*  without the prior written consent of Nokia.
-* ============================================================================
-*/
-#ifndef __HURIGANESTELEPORTRES_IBY__
-#define __HURIGANESTELEPORTRES_IBY__
-
-// resources for teleport app
-data=DATAZ_/APP_RESOURCE_DIR/hgteleport.rsc    APP_RESOURCE_DIR/hgteleport.rsc
-
-#endif 
--- a/taskswitcher/teleportui/sis/stubs/createstubs.bat	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-for %%f in (*.pkg) do makesis -s %%f
--- a/taskswitcher/teleportui/sis/stubs/teleport_stub.pkg	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-; ------------------------------------------------------------------------------
-; HG Teleport stub SIS package file.
-; Used to enable HG Teleport to be updated from ROM with a SIS package.
-; When you add new files into this stub, please remember to update
-; SIS stub with "makesis -s" command.
-; ------------------------------------------------------------------------------
-;
-;Language - standard language definitions
-&EN
-
-; standard SIS file header
-#{"teleport"},(0x20016BF0),1,0,0,TYPE=SA
-
-;Localized Vendor Name
-%{"Nokia"}
-
-;Unique Vendor name
-:"Nokia"
-
-""-"Z:\sys\bin\hgteleport.exe"
-""-"Z:\resource\apps\hgteleport.r??"
-""-"Z:\private\10003a3f\import\apps\hgteleport_reg.rsc"
-
-""-"Z:\sys\bin\hgteleportappecom.dll"
-""-"Z:\resource\plugins\hgteleportappecom.rsc"
Binary file taskswitcher/teleportui/sis/stubs/teleport_stub.sis has changed
--- a/taskswitcher/teleportui/sis/teleport.pkg	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-; ------------------------------------------------------------------------------
-; HG Teleport stub SIS package file.
-; Used to enable HG Teleport to be updated from ROM with a SIS package.
-; When you add new files into this stub, please remember to update
-; SIS stub with "makesis -s" command.
-; ------------------------------------------------------------------------------
-;
-;Language - standard language definitions
-&EN
-
-; standard SIS file header
-#{"teleport"},(0x20016BF0),1,0,0,TYPE=SA, RU
-
-;Localized Vendor Name
-%{"Nokia"}
-
-;Unique Vendor name
-:"Nokia"
-
-"/epoc32/release/armv5/urel/hgteleport.exe" - "!:\sys\bin\hgteleport.exe"
-"/epoc32/data/z/resource/apps/hgteleport.rsc" - "!:\resource\apps\hgteleport.rsc"
-"/epoc32/data/z/private/10003a3f/apps/hgteleport_reg.rsc" - "!:\private\10003a3f\import\apps\hgteleport_reg.rsc"
-
-"/epoc32/release/armv5/urel/hgteleportappecom.dll" - "!:\sys\bin\hgteleportappecom.dll"
-"/epoc32/data/z/resource/plugins/hgteleportappecom.rsc" - "!:\resource\plugins\hgteleportappecom.rsc"
--- a/taskswitcher/teleportui/trace/hglogging.h	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,219 +0,0 @@
-/*
-* ==============================================================================
-*  Name        : hglogging.h
-*  Part of     : Teleport / Teleport UI
-*  Description : Defines all available logging macros.
-*  Version     : %version: 2 %
-*
-*  Copyright © 2008 Nokia. All rights reserved.
-*  This material, including documentation and any related 
-*  computer programs, is protected by copyright controlled by 
-*  Nokia. All rights are reserved. Copying, including 
-*  reproducing, storing, adapting or translating, any 
-*  or all of this material requires the prior written consent of 
-*  Nokia. This material also contains confidential 
-*  information which may not be disclosed to others without the 
-*  prior written consent of Nokia.
-* ==============================================================================
-*/
-
-#ifndef HGLOGLOGUTILS_H
-#define HGLOGLOGUTILS_H
-
-/**
- * @file
- * 
- * TAKING LOGGING INTO USE:
- * 
- * This step is needed to do once per component.
- * 
- * For each component that uses these common logging macros should specify
- * their own logging configuration file, which includes this file. In that
- * configuration file, following constants and macros must be defined.
- *  For example:
- * @code
- * 
- * _LIT( KHgLogFile, "text_file_for_logging.txt" );
- * _LIT( KHgLogPath, "folder_for_text_file" );
- * #define _HGLOG_LOG_COMPONENT_ID <some unique number here>
- * 
- * #include "hglogging.h"
- * 
- * @/code
- * 
- * KHgLogFile   : This is the name of the file, where all the logs for
- *                this components are being written.
- * 
- * KHgLogPath   : This is the folder name under c:\logs, where the file
- *                is to be stored. For example, if KHgLogPath is "test",
- *                log file is created into folder c:\logs\test.
- * 
- * _HGLOG_LOG_COMPONENT_ID  : Unique number id of the component. This is 
- *                            for filtering purposes.
- * 
- * _HGLOG_RDEBUG    : When defined tracing instead of file logging. 
- *                    Default is for file logging.
- * 
- * --------------------------------------------------------------------------
- * 
- * USING LOGGING:
- * 
- * Basically the use is simple, register function use with HGLOG_CONTEXT, 
- * then log function enter by any HGLOG_IN -macro, then possibly use HGLOG
- * -macros for function logging and finally HGLOG_OUT -macros for returning
- * from the function.
- * 
- * @code
- * TInt CGood::Example( TInt aSomething )
- *     {
- *     // Create log context class, which is maintained for lifetime of the 
- *     // method. 
- *     HGLOG_CONTEXT( Example, HGLOG_LOCAL );
- * 
- *     // Indicate we are entering the function. 
- *     HGLOG_IN1( "aSomething contains value %d", aSomething );
- * 
- *     // Your buggy code...
- * 
- *     // Before leaving, indicate function execution has ended.
- *     HGLOG_OUT();
- * 
- *     return 0;
- *     }
- * @/code
- */
-
-#include <e32def.h>
-#include <e32std.h>
-
-#include "hglogutils.h"
-
-#define HGLOG_API 0
-#define HGLOG_LOCAL 1
-
-#define HGLOG_INFO 0
-#define HGLOG_WARNING 1
-#define HGLOG_ERROR 2
-
-#define HGLOG_ASSERT(_assertion)  __HGLOG_ASSERT_DBG(_assertion) 
-#define HGLOG_TRACE_ASSERT(_assertion) __ASSERT_DEBUG((_assertion), User::Invariant() )
-
-#ifdef _DEBUG
-            
-/*****************************************************************************
- LOGGING MACROS - LOGGING ON
-*****************************************************************************/             
-
-    /** 
-     * Context initialization 
-     * NOTE: HGLOG_STATIC_CONTEXT is meant for static methods.
-     * 
-     * @param _fn   Name of the function.
-     * @param _vis  Visibility for the client, use values HGLOG_API or HGLOG_LOCAL
-     * @param _thdId For static functions, thread id can be given here.
-     */
-    #define HGLOG_CONTEXT(_fn, _vis ) _THgLogContext _dc((TText*)L ## #_fn, _HGLOG_LOG_COMPONENT_ID, _vis, (TUint)this, RProcess().SecureId().iId )
-    #define HGLOG_STATIC_CONTEXT(_fn, _vis, _thdId) _THgLogContext _dc((TText*)L ## #_fn, _HGLOG_LOG_COMPONENT_ID, _vis, _thdId, RProcess().SecureId().iId )
-
-    /** 
-     * Entering function 
-     * 
-     * @param string    Custom text. Example: HGLOG_IN0( "Yeah!!!" );
-     * @param p1 - p5   For multiple variables in same string.
-     */
-    #define HGLOG_IN() do { _CHK_MULTIIN(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]>%s "), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn); _MARK_ENTRY(); } while(0)
-    #define HGLOG0_IN(string) do { _CHK_MULTIIN(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]>%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn); _MARK_ENTRY(); } while(0)
-    #define HGLOG1_IN(string, p1) do { _CHK_MULTIIN(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]>%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1); _MARK_ENTRY(); } while(0)
-    #define HGLOG2_IN(string, p1, p2) do { _CHK_MULTIIN(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]>%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2); _MARK_ENTRY(); } while(0)
-    #define HGLOG3_IN(string, p1, p2, p3) do { _CHK_MULTIIN(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]>%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2, p3); _MARK_ENTRY(); } while(0)
-    #define HGLOG4_IN(string, p1, p2, p3, p4) do { _CHK_MULTIIN(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]>%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2, p3, p4); _MARK_ENTRY(); } while(0)
-    #define HGLOG5_IN(string, p1, p2, p3, p4, p5) do { _CHK_MULTIIN(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]>%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2, p3, p4, p5); _MARK_ENTRY(); } while(0)
-
-    /** Leaving function */
-    #define HGLOG_OUT() do { _DOINCHK(); _CHK_MULTIOUT(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s "), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn); _MARK_EXIT(); } while(0)
-    #define HGLOG0_OUT(string) do { _DOINCHK(); _CHK_MULTIOUT(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn); _MARK_EXIT(); } while(0)
-    #define HGLOG1_OUT(string, p1) do { _DOINCHK(); _CHK_MULTIOUT(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1); _MARK_EXIT(); } while(0)
-    #define HGLOG2_OUT(string, p1, p2) do { _DOINCHK(); _CHK_MULTIOUT(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2); _MARK_EXIT(); } while(0)
-    #define HGLOG3_OUT(string, p1, p2, p3) do { _DOINCHK(); _CHK_MULTIOUT(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2, p3); _MARK_EXIT(); } while(0)
-    #define HGLOG4_OUT(string, p1, p2, p3, p4) do { _DOINCHK(); _CHK_MULTIOUT(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2, p3, p4); _MARK_EXIT(); } while(0)
-    #define HGLOG5_OUT(string, p1, p2, p3, p4, p5) do { _DOINCHK(); _CHK_MULTIOUT(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2, p3, p4, p5); _MARK_EXIT(); } while(0)
-
-    /** Leaving function with return value */
-    #define HGLOG0_RET(val, fmtstr) do { do { _DOINCHK(); _CHK_MULTIOUT(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## fmtstr), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, val); _MARK_EXIT(); } while(0); return val;} while(0)
-    #define HGLOG1_RET(val, fmtstr, p1) do { do { _DOINCHK(); _CHK_MULTIOUT(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## fmtstr), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, val, p1); _MARK_EXIT(); } while(0); return val;} while(0)
-    #define HGLOG2_RET(val, fmtstr, p1, p2) do { do { _DOINCHK(); _CHK_MULTIOUT(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## fmtstr), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, val, p1, p2); _MARK_EXIT(); } while(0); return val;} while(0)
-    #define HGLOG3_RET(val, fmtstr, p1, p2, p3) do { do { _DOINCHK(); _CHK_MULTIOUT(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## fmtstr), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, val, p1, p2, p3); _MARK_EXIT(); } while(0); return val;} while(0)
-    #define HGLOG4_RET(val, fmtstr, p1, p2, p3, p4) do { do { _DOINCHK(); _CHK_MULTIOUT(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## fmtstr), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, val, p1, p2, p3, p4); _MARK_EXIT(); } while(0); return val;} while(0)
-    #define HGLOG5_RET(val, fmtstr, p1, p2, p3, p4, p5) do { do { _DOINCHK(); _CHK_MULTIOUT(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## fmtstr), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, val, p1, p2, p3, p4, p5); _MARK_EXIT(); } while(0); return val;} while(0)
-
-    /** 
-     * General log lines 
-     * 
-     * @param level     This can be used as internal information 
-     *                  field, such as info, error, warning etc.
-     * @param string    Custom string
-     * @param p1 - p5   For multiple variables in same string.
-     */
-    #define HGLOG0(level, string) do { _DOINCHK(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]%s " L ## string), _dc.iVis, level, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn); } while(0)
-    #define HGLOG1(level, string, p1) do { _DOINCHK(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]%s " L ## string), _dc.iVis, level, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1); } while(0)
-    #define HGLOG2(level, string, p1, p2) do { _DOINCHK(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]%s " L ## string), _dc.iVis, level, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2); } while(0)
-    #define HGLOG3(level, string, p1, p2, p3) do { _DOINCHK(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]%s " L ## string), _dc.iVis, level, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2, p3); } while(0)
-    #define HGLOG4(level, string, p1, p2, p3, p4) do { _DOINCHK(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]%s " L ## string), _dc.iVis, level, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2, p3, p4); } while(0)
-    #define HGLOG5(level, string, p1, p2, p3, p4, p5) do { _DOINCHK(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]%s " L ## string), _dc.iVis, level, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2, p3, p4, p5); } while(0)
-
-    /** Error logging */
-    #define __HGLOG_ASSERT_DBG( _assertion ) do { if( _assertion ) { break; } TFileName file; file.Copy( _L8( __FILE__ ) );   _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s Assert:%S:%d:" L ## #_assertion) , _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, &file, __LINE__ ); User::Invariant(); } while( 0 )
-    #define __HGLOG_TRACE_ASSERT_DBG(_assertion, _textToPrint, _panicCode)  do { if (_assertion) { break; } _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s ASSERTION FAILED!!! %s file: %s, line: %s"), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, _textToPrint, __FILE__, __LINE__); User::Panic(_L("AssertionFailed"), _panicCode} while(0)
-    #define HGLOG_TRAPHANDLER() _THgLogTrapHandler _traceTrapHandler; _traceTrapHandler.oldHandler = User::SetTrapHandler(&_traceTrapHandler)
-
-/*****************************************************************************
- LOGGING MACROS - NO LOGGING
-*****************************************************************************/ 
-#else // _DEBUG
-
-    #define HGLOG_CONTEXT(_fn, _vis )
-    #define HGLOG_STATIC_CONTEXT(_fn, _vis, _thdId)
-
-    #define HGLOG_IN()
-    #define HGLOG0_IN(string)
-    #define HGLOG1_IN(string, p1)
-    #define HGLOG2_IN(string, p1, p2)
-    #define HGLOG3_IN(string, p1, p2, p3)
-    #define HGLOG4_IN(string, p1, p2, p3, p4)
-    #define HGLOG5_IN(string, p1, p2, p3, p4, p5)
-
-    #define HGLOG_OUT()
-    #define HGLOG0_OUT(string)
-    #define HGLOG1_OUT(string, p1)
-    #define HGLOG2_OUT(string, p1, p2)
-    #define HGLOG3_OUT(string, p1, p2, p3)
-    #define HGLOG4_OUT(string, p1, p2, p3, p4)
-    #define HGLOG5_OUT(string, p1, p2, p3, p4, p5)
-
-    #define HGLOG0_RET(val, fmtstr) return val
-    #define HGLOG1_RET(val, fmtstr, p1) return val
-    #define HGLOG2_RET(val, fmtstr, p1, p2) return val
-    #define HGLOG3_RET(val, fmtstr, p1, p2, p3) return val
-    #define HGLOG4_RET(val, fmtstr, p1, p2, p3, p4) return val
-    #define HGLOG5_RET(val, fmtstr, p1, p2, p3, p4, p5) return val
-
-    #define HGLOG0(level, string)
-    #define HGLOG1(level, string, p1)
-    #define HGLOG2(level, string, p1, p2)
-    #define HGLOG3(level, string, p1, p2, p3)
-    #define HGLOG4(level, string, p1, p2, p3, p4)
-    #define HGLOG5(level, string, p1, p2, p3, p4, p5)
-    
-    #define BIND_TRACE_TRAPHANDLER()
-    #define TRACE_DECL() TInt _iTraceThreadId
-    #define TRACE_FAST_CREATE(_thdId) _thdId++;
-    #define TRACE_CREATE()
-
-    #define __HGLOG_ASSERT_DBG(_assertion)
-    #define __TRACE_ASSERT_DBG(_assertion, _message, _panicCode )
-
-#endif // _DEBUG
-
-#endif      // HGLOGLOGUTILS_H
-            
-// End of File
--- a/taskswitcher/teleportui/trace/hglogutils.h	Fri Jan 22 09:35:14 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,208 +0,0 @@
-/*
-* ==============================================================================
-*  Name        : hglogutils.h
-*  Part of     : Teleport / Teleport UI
-*  Description : Logging behavior
-*  Version     : %version: 3 %
-*
-*  Copyright © 2008 Nokia. All rights reserved.
-*  This material, including documentation and any related 
-*  computer programs, is protected by copyright controlled by 
-*  Nokia. All rights are reserved. Copying, including 
-*  reproducing, storing, adapting or translating, any 
-*  or all of this material requires the prior written consent of 
-*  Nokia. This material also contains confidential 
-*  information which may not be disclosed to others without the 
-*  prior written consent of Nokia.
-* ==============================================================================
-*/
-
-#ifndef HGLOGUTILS_H
-#define HGLOGUTILS_H
-
-/**
- * NOTE: This file contains the logic related to logging. Change only if you
- * know what you're doing.
- */
-
-
-
-
-
-
-
-
-
-
-#ifdef _DEBUG
-
-#include <e32std.h>
-#include <e32debug.h>
-
-static const TUint HGLOGERR   = 2;  /**< Used to create an error message */
-
-// These macros are real macros, that should be used. For temporary purposes, these
-// are left out and the logging is done by simple entry logging
-#define _HGLOG_UNCONTROLLED_INPUT_MSG  L"%s%d[%x:%x:%x]>%s UNCONTROLLED ENTRY!"
-#define _HGLOG_MULTIPLE_ENTRY_MSG      L"%s%d[%x:%x:%x]%s  ADDITIONAL ENTRY!"
-#define _HGLOG_UNCONTROLLER_EXIT_MSG   L"%s%d[%x:%x:%x]<%s UNCONTROLLED EXIT!"
-#define _HGLOG_MULTIPLE_EXIT_MSG       L"%s%d[%x:%x:%x]%s  ADDITIONAL EXIT!"
-#define _HGLOG_TRAP_HARNESS_ENTRY      L"_D%d[%x:%x:%x]TraceFramework: Entering trap harness"
-#define _HGLOG_TRAP_HARNESS_EXIT       L"_D%d[%x:%x:%x]TraceFramework: Exiting trap harness"
-#define _HGLOG_TRAP_HARNESS_LEAVE      L"_D%d[%x:%x:%x]TraceFramework: ---------- LEAVE OCCURRED !!! ---------- "
-#define _HGLOG_API_PREFIX              L"_A"
-#define _HGLOG_LOCAL_PREFIX            L"_L"
-
-/**
-* @file 
-* trace_utils.h contains definitions needed for advanced tracing features.
-* Tracing can be customized using the following compile time flags:
-* - <b>_DEBUG</b>
-*   - With this flag undefined, all traces are disabled
-* - <b>__KERNEL_MODE__</b>
-*   - if kernel mode flag is defined, kernel macro variants are used (no unicode or shared heap related stuff, faster)
-* - <b>DISABLE_SYNTAX_CHECK</b>
-*   - If this flag is defined, runtime syntax checking features are disabled from traces
-*/
-#ifndef DISABLE_SYNTAX_CHECK
-    #define _MARK_ENTRY() _dc.inOk=ETrue
-    #define _DOINCHK() _dc.DoInChk()
-    #define _CHK_MULTIIN() _dc.ChkMultiIn()
-    #define _CHK_MULTIOUT() _dc.ChkMultiOut()
-    #define _MARK_EXIT() _dc.outOk=ETrue
-#else
-    #define _MARK_ENTRY()
-    #define _DOINCHK()
-    #define _CHK_MULTIIN()
-    #define _CHK_MULTIOUT()
-    #define _MARK_EXIT()
-#endif // DISABLE_SYNTAX_CHECK
-    
-/** For tracing */
-#ifdef _HGLOG_RDEBUG
-    #define _IT(a) (TPtrC((const TText *)(a)))
-    #define _HGLOGPRINTER RDebug::Print        
-        
-/** For filedebug */
-#else   // _HGLOG_RDEBUG
-
-    /** Includes */
-    #include <e32base.h>
-    #include <e32std.h>
-    #include <e32def.h>
-    #include <e32svr.h>
-    #include <flogger.h>
-    
-    #define _IT(a) KHgLogPath, KHgLogFile, EFileLoggingModeAppend, (TPtrC((const TText *)(a)))    
-    #define _HGLOGPRINTER RFileLogger::WriteFormat    
-#endif // _HGLOG_RDEBUG    
-
-class _THgLogContext
-    {
-    public:
-        _THgLogContext(
-            const TText* _fn, 
-            const TUint _id, 
-            const TUint _vis, 
-            const TUint _addr, 
-            const TUint _thdId, 
-            const TUint _category=0 )
-            : 
-            iFn(_fn), 
-            iId(_id), 
-            iApi((TBool)_vis), 
-            iAddr(_addr), 
-            iThdId(_thdId), 
-            iVis((_vis == 0 ? (TText*)_HGLOG_API_PREFIX : (TText*)_HGLOG_LOCAL_PREFIX)),
-            iCategory(_category)            
-        #ifndef DISABLE_SYNTAX_CHECK
-            ,outOk(EFalse), inOk(EFalse)
-        #endif
-            {
-            }
-        ~_THgLogContext() 
-            {
-            #ifndef DISABLE_SYNTAX_CHECK
-                do
-                    {                   
-                    DoInChk();
-                    if (!outOk)
-                        {
-                        _HGLOGPRINTER(_IT(_HGLOG_UNCONTROLLER_EXIT_MSG), iVis, iCategory, iId, iThdId, iAddr, iFn);
-                        }
-                    } while (0);
-            #endif // DISABLE_SYNTAX_CHECK
-            }
-
-        const TText* iFn;
-        const TUint iId;
-        const TText* iVis;
-        const TUint iAddr;
-        const TInt iThdId;
-        const TBool iApi;
-        const TUint iCategory;
-        
-        #ifndef DISABLE_SYNTAX_CHECK
-            inline void DoInChk()
-                {
-                if (!inOk)
-                    {
-                    _HGLOGPRINTER(_IT(_HGLOG_UNCONTROLLED_INPUT_MSG), iVis, iCategory, iId, iThdId, iAddr, iFn);
-                    inOk = ETrue;
-                    }
-                }
-                        
-            inline void ChkMultiIn()
-                {
-                if (inOk)
-                    {
-                    _HGLOGPRINTER(_IT(_HGLOG_MULTIPLE_ENTRY_MSG), iVis, iCategory, iId, iThdId, iAddr, iFn);                
-                    }
-                }
-    
-            inline void ChkMultiOut()
-                {
-                if (outOk)
-                    {           
-                    _HGLOGPRINTER(_IT(_HGLOG_MULTIPLE_EXIT_MSG), iVis, iCategory, iId, iThdId, iAddr, iFn);                                        
-                    }
-                }
-
-            TBool inOk;
-            TBool outOk;
-        #endif // DISABLE_SYNTAX_CHECK
-    };
-    
-class _THgLogTrapHandler: public TTrapHandler
-    {
-    public:
-
-        _THgLogTrapHandler(_THgLogContext& _context) : _dc( _context ) 
-            {
-            RThread me;
-            iThdId = (TInt)me.Id();
-            }
-    	void Trap() 
-    	    {
-    	    _HGLOGPRINTER(_IT(_HGLOG_TRAP_HARNESS_ENTRY), 0, HGLOGERR, iThdId, this);
-    	    oldHandler->Trap();
-    	    } 
-    	void UnTrap()
-    	    {
-    	    _HGLOGPRINTER(_IT(_HGLOG_TRAP_HARNESS_EXIT), 0, HGLOGERR, iThdId, this);
-    	    oldHandler->UnTrap();
-    	    }	
-    	void Leave(TInt aValue)
-    	    {
-    	    _HGLOGPRINTER(_IT(_HGLOG_TRAP_HARNESS_LEAVE), 0, HGLOGERR, iThdId, this);
-    	    oldHandler->Leave(aValue);
-    	    }	
-    	TTrapHandler* oldHandler;
-    private:
-        _THgLogContext& _dc;
-        TInt iThdId;
-    };
-    
-#endif // _DEBUG    
-
-#endif // HGLOGUTILS_H
\ No newline at end of file