Revision: 200951
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Thu, 07 Jan 2010 12:39:41 +0200
changeset 1 5315654608de
parent 0 f72a12da539e
child 2 08c6ee43b396
Revision: 200951 Kit: 201001
group/bld.inf
idlehomescreen/data/qhd_tch/desktop_20026f4f/hsps/00/manifest.dat
idlehomescreen/data/qhd_tch/desktop_20026f4f/hsps/00/widgetconfiguration.xml
idlehomescreen/data/qhd_tch/profile_2001cb7c/hsps/00/manifest.dat
idlehomescreen/data/qhd_tch/templateview_20026f50/loc/templateview.loc
idlehomescreen/data/qhd_tch/templateview_20026f50/xuikon/00/templateview.xml
idlehomescreen/data/qhd_tch/templateview_20026f50/xuikon/00/view.dtd
idlehomescreen/data/qhd_tch/view_2001f48b/loc/View.loc
idlehomescreen/data/qhd_tch/view_2001f48b/xuikon/00/View.dtd
idlehomescreen/data/qhd_tch/view_2001f48b/xuikon/00/View.xml
idlehomescreen/data/vga_tch/view1_2001fdb9/loc/view.loc
idlehomescreen/data/vga_tch/view1_2001fdb9/xuikon/00/view.dtd
idlehomescreen/group/bld.inf
idlehomescreen/hscontentcontrol/group/hscontentcontrol.mmp
idlehomescreen/hscontentcontrol/inc/hscontentcontrolecomlistener.h
idlehomescreen/hscontentcontrol/inc/hscontentcontrolecomobserver.h
idlehomescreen/hscontentcontrol/inc/hscontentcontrolfactory.h
idlehomescreen/hscontentcontrol/src/hscontentcontrolecomlistener.cpp
idlehomescreen/hscontentcontrol/src/hscontentcontrolfactory.cpp
idlehomescreen/inc/xnmenu.h
idlehomescreen/inc/xnmenuadapter.h
idlehomescreen/inc/xnviewmanager.h
idlehomescreen/nativeuicontroller/src/aistatuspanel.cpp
idlehomescreen/nativeuicontroller/src/aititlepanerenderer.cpp
idlehomescreen/sapiwrapper/cpswrapper/inc/cpswrapper.h
idlehomescreen/sapiwrapper/cpswrapper/src/cpsobserver.cpp
idlehomescreen/sapiwrapper/cpswrapper/src/cpswrapper.cpp
idlehomescreen/sapiwrapper/hspswrapper/inc/hspswrapper.h
idlehomescreen/sapiwrapper/hspswrapper/src/hspswrapper.cpp
idlehomescreen/widgetmanager/conf/widgetmanager.confml
idlehomescreen/widgetmanager/conf/widgetmanager_20026F53.crml
idlehomescreen/widgetmanager/data/20026F53.rss
idlehomescreen/widgetmanager/data/widgetmanagerview.loc
idlehomescreen/widgetmanager/data/widgetmanagerview.rss
idlehomescreen/widgetmanager/gfx/add_widget_button.svg
idlehomescreen/widgetmanager/gfx/qgn_menu_hswidget.svg
idlehomescreen/widgetmanager/gfx/qgn_menu_ovistore.svg
idlehomescreen/widgetmanager/group/bld.inf
idlehomescreen/widgetmanager/group/widgetmanager.mmp
idlehomescreen/widgetmanager/group/wmicons.txt
idlehomescreen/widgetmanager/inc/widgetmanager.hrh
idlehomescreen/widgetmanager/inc/wmcommon.h
idlehomescreen/widgetmanager/inc/wmcrkeys.h
idlehomescreen/widgetmanager/inc/wmdetailsdlg.h
idlehomescreen/widgetmanager/inc/wmeffectmanager.h
idlehomescreen/widgetmanager/inc/wmimageconverter.h
idlehomescreen/widgetmanager/inc/wmlistbox.h
idlehomescreen/widgetmanager/inc/wmlistbox.inl
idlehomescreen/widgetmanager/inc/wmmaincontainer.h
idlehomescreen/widgetmanager/inc/wmmaincontainerview.h
idlehomescreen/widgetmanager/inc/wmpersistentwidgetorder.h
idlehomescreen/widgetmanager/inc/wmplugin.h
idlehomescreen/widgetmanager/inc/wmportalbutton.h
idlehomescreen/widgetmanager/inc/wmresourceloader.h
idlehomescreen/widgetmanager/inc/wmwidgetdata.h
idlehomescreen/widgetmanager/inc/wmwidgetdata.inl
idlehomescreen/widgetmanager/inc/wmwidgetdataobserver.h
idlehomescreen/widgetmanager/inc/wmwidgetloaderao.h
idlehomescreen/widgetmanager/rom/widgetmanager.iby
idlehomescreen/widgetmanager/rom/widgetmanager_resources.iby
idlehomescreen/widgetmanager/sis/Create_update_sisx.bat
idlehomescreen/widgetmanager/sis/Nokia_RnDCert_02.der
idlehomescreen/widgetmanager/sis/Nokia_RnDCert_02.key
idlehomescreen/widgetmanager/sis/backup_registration.xml
idlehomescreen/widgetmanager/sis/widgetmanager_stub.pkg
idlehomescreen/widgetmanager/sis/widgetmanager_stub.sis
idlehomescreen/widgetmanager/sis/widgetmanager_udeb.pkg
idlehomescreen/widgetmanager/sis/widgetmanager_urel.pkg
idlehomescreen/widgetmanager/src/wmdetailsdlg.cpp
idlehomescreen/widgetmanager/src/wmeffectmanager.cpp
idlehomescreen/widgetmanager/src/wmimageconverter.cpp
idlehomescreen/widgetmanager/src/wmlistbox.cpp
idlehomescreen/widgetmanager/src/wmmaincontainer.cpp
idlehomescreen/widgetmanager/src/wmmaincontainerview.cpp
idlehomescreen/widgetmanager/src/wmpersistentwidgetorder.cpp
idlehomescreen/widgetmanager/src/wmplugin.cpp
idlehomescreen/widgetmanager/src/wmpluginproxy.cpp
idlehomescreen/widgetmanager/src/wmportalbutton.cpp
idlehomescreen/widgetmanager/src/wmresourceloader.cpp
idlehomescreen/widgetmanager/src/wmwidgetdata.cpp
idlehomescreen/widgetmanager/src/wmwidgetloaderao.cpp
idlehomescreen/widgetmanager/tsrc/wmunittest/bwins/wmunittestu.def
idlehomescreen/widgetmanager/tsrc/wmunittest/conf/ui_wmunittest.cfg
idlehomescreen/widgetmanager/tsrc/wmunittest/conf/wmunittest.bat
idlehomescreen/widgetmanager/tsrc/wmunittest/conf/wmunittest.ini
idlehomescreen/widgetmanager/tsrc/wmunittest/data/wmlogo/logo.jpg
idlehomescreen/widgetmanager/tsrc/wmunittest/data/wmlogo/logo.mif
idlehomescreen/widgetmanager/tsrc/wmunittest/data/wmlogo/logo.png
idlehomescreen/widgetmanager/tsrc/wmunittest/data/wmlogo/logo.svg
idlehomescreen/widgetmanager/tsrc/wmunittest/data/wmlogo/logocorrupt.jpg
idlehomescreen/widgetmanager/tsrc/wmunittest/data/wmlogo/logocorrupt.png
idlehomescreen/widgetmanager/tsrc/wmunittest/data/wmlogo/logocorrupt.svg
idlehomescreen/widgetmanager/tsrc/wmunittest/data/wmlogo/test.wgz
idlehomescreen/widgetmanager/tsrc/wmunittest/eabi/wmunittestu.def
idlehomescreen/widgetmanager/tsrc/wmunittest/group/Create_sisx.bat
idlehomescreen/widgetmanager/tsrc/wmunittest/group/Nokia_RnDCert_02.der
idlehomescreen/widgetmanager/tsrc/wmunittest/group/Nokia_RnDCert_02.key
idlehomescreen/widgetmanager/tsrc/wmunittest/group/bld.inf
idlehomescreen/widgetmanager/tsrc/wmunittest/group/wmunittest.mmp
idlehomescreen/widgetmanager/tsrc/wmunittest/group/wmunittest.pkg
idlehomescreen/widgetmanager/tsrc/wmunittest/inc/wmunittest.h
idlehomescreen/widgetmanager/tsrc/wmunittest/src/wmunittest.cpp
idlehomescreen/widgetmanager/tsrc/wmunittest/src/wmunittest_all.cpp
idlehomescreen/widgetmanager/tsrc/wmunittest/src/wmunittest_converter.cpp
idlehomescreen/widgetmanager/tsrc/wmunittest/src/wmunittest_plugin.cpp
idlehomescreen/widgetmanager/tsrc/wmunittest/src/wmunittest_sortorder.cpp
idlehomescreen/xmluicontroller/inc/contentpublisher.h
idlehomescreen/xmluicontroller/src/aieventhandler.cpp
idlehomescreen/xmluicontroller/src/contentpublisher.cpp
idlehomescreen/xmluicontroller/src/onlineofflinehelper.cpp
idlehomescreen/xmluirendering/renderingplugins/extrenderingplugin/src/xnextrenderingpluginadapter.cpp
idlehomescreen/xmluirendering/renderingplugins/xnmenufactory/src/xnmenu.cpp
idlehomescreen/xmluirendering/renderingplugins/xnmenufactory/src/xnmenuadapter.cpp
idlehomescreen/xmluirendering/renderingplugins/xnnewstickerfactory/src/xnnewstickercontrol.cpp
idlehomescreen/xmluirendering/renderingplugins/xnnppluginfactory/inc/xnnpplugincontroladapter.h
idlehomescreen/xmluirendering/renderingplugins/xnnppluginfactory/src/xnnppluginhandler.cpp
idlehomescreen/xmluirendering/renderingplugins/xntexteditorfactory/src/xntexteditorpublisher.cpp
idlehomescreen/xmluirendering/renderingplugins/xnvolumecontrolfactory/src/xnvolumecontroladapter.cpp
idlehomescreen/xmluirendering/uiengine/inc/xneditor.h
idlehomescreen/xmluirendering/uiengine/inc/xneffectmanager.h
idlehomescreen/xmluirendering/uiengine/inc/xnplugindefs.h
idlehomescreen/xmluirendering/uiengine/inc/xnscrollablecontroladapter.h
idlehomescreen/xmluirendering/uiengine/inc/xnwidgetextensionadapter.h
idlehomescreen/xmluirendering/uiengine/src/xncontroladapterimpl.cpp
idlehomescreen/xmluirendering/uiengine/src/xneditor.cpp
idlehomescreen/xmluirendering/uiengine/src/xneffectmanager.cpp
idlehomescreen/xmluirendering/uiengine/src/xnkeyeventdispatcher.cpp
idlehomescreen/xmluirendering/uiengine/src/xnnodeimpl.cpp
idlehomescreen/xmluirendering/uiengine/src/xnscrollablecontroladapter.cpp
idlehomescreen/xmluirendering/uiengine/src/xnuiengineimpl.cpp
idlehomescreen/xmluirendering/uiengine/src/xnviewmanager.cpp
layers.sysdef.xml
menufw/hierarchynavigator/hnengine/inc/hncontrollerinterface.h
menufw/hierarchynavigator/hnengine/src/hnengine.cpp
menufw/hierarchynavigator/hnmetadatamodel/inc/hnglobals.h
menufw/hierarchynavigator/hnmetadatamodel/inc/hnmdmodel.h
menufw/hierarchynavigator/hnmetadatamodel/inc/hnrepositoryobserver.h
menufw/hierarchynavigator/hnmetadatamodel/src/hnmdmodel.cpp
menufw/hierarchynavigator/hnmetadatamodel/src/hnrepositoryobserver.cpp
menufw/hierarchynavigator/hnutilities/group/bld.inf
menufw/menufwui/matrixmenu/group/bld.inf
menufw/menufwui/matrixmenu/group/matrixmenu.mmp
menufw/menufwui/matrixmenu/help/data/xhtml.zip
menufw/menufwui/matrixmenu/inc/mmappui.h
menufw/menufwui/matrixmenu/inc/mmpropertysubscriber.h
menufw/menufwui/matrixmenu/src/mmappui.cpp
menufw/menufwui/matrixmenu/src/mmpropertysubscriber.cpp
menufw/menufwui/mmwidgets/bwins/mmwidgetsu.def
menufw/menufwui/mmwidgets/data/grid/lct/akn_logical_template_3.xml
menufw/menufwui/mmwidgets/eabi/mmwidgetsu.def
menufw/menufwui/mmwidgets/group/bld.inf
menufw/menufwui/mmwidgets/inc/mmgrid.h
menufw/menufwui/mmwidgets/inc/mmgridcontainer.h
menufw/menufwui/mmwidgets/inc/mmtemplatelibrary.h
menufw/menufwui/mmwidgets/inc/mmwidgetcontainer.h
menufw/menufwui/mmwidgets/inc/mmwidgetsconstants.h
menufw/menufwui/mmwidgets/src/mmdraweranimator.cpp
menufw/menufwui/mmwidgets/src/mmgrid.cpp
menufw/menufwui/mmwidgets/src/mmgridcontainer.cpp
menufw/menufwui/mmwidgets/src/mmlctutils.cpp
menufw/menufwui/mmwidgets/src/mmtemplatelibrary.cpp
menufw/menufwui/mmwidgets/src/mmwidgetcontainer.cpp
menufw/menusuites/foldersuite/data/matrixmenudata.xml
menufw/menusuites/foldersuite/group/bld.inf
menufw/menusuites/group/bld.inf
systemDefinition.xml
systemDefinitionLayer.xml
widgetmanager/data/20026F53.rss
widgetmanager/data/widgetmanagerview.loc
widgetmanager/data/widgetmanagerview.rss
widgetmanager/gfx/add_widget_button.svg
widgetmanager/gfx/qgn_menu_hswidget.svg
widgetmanager/group/bld.inf
widgetmanager/group/widgetmanager.mmp
widgetmanager/group/wmicons.txt
widgetmanager/inc/widgetmanager.hrh
widgetmanager/inc/widgetmanager.pan
widgetmanager/inc/wmcommon.h
widgetmanager/inc/wmdetailsdlg.h
widgetmanager/inc/wmeffectmanager.h
widgetmanager/inc/wmiconfileprovider.h
widgetmanager/inc/wmiconfileprovider.inl
widgetmanager/inc/wmimageconverter.h
widgetmanager/inc/wmimageconverter.inl
widgetmanager/inc/wmlistbox.h
widgetmanager/inc/wmlistbox.inl
widgetmanager/inc/wmmaincontainer.h
widgetmanager/inc/wmmaincontainerview.h
widgetmanager/inc/wmpersistentwidgetorder.h
widgetmanager/inc/wmplugin.h
widgetmanager/inc/wmplugin.inl
widgetmanager/inc/wmresourceloader.h
widgetmanager/inc/wmwidgetdata.h
widgetmanager/inc/wmwidgetdata.inl
widgetmanager/inc/wmwidgetdataobserver.h
widgetmanager/inc/wmwidgetloaderao.h
widgetmanager/rom/widgetmanager.iby
widgetmanager/rom/widgetmanager_resources.iby
widgetmanager/sis/Create_update_sisx.bat
widgetmanager/sis/Nokia_RnDCert_02.der
widgetmanager/sis/Nokia_RnDCert_02.key
widgetmanager/sis/backup_registration.xml
widgetmanager/sis/widgetmanager_stub.pkg
widgetmanager/sis/widgetmanager_stub.sis
widgetmanager/sis/widgetmanager_udeb.pkg
widgetmanager/sis/widgetmanager_urel.pkg
widgetmanager/src/wmdetailsdlg.cpp
widgetmanager/src/wmeffectmanager.cpp
widgetmanager/src/wmiconfileprovider.cpp
widgetmanager/src/wmimageconverter.cpp
widgetmanager/src/wmlistbox.cpp
widgetmanager/src/wmmaincontainer.cpp
widgetmanager/src/wmmaincontainerview.cpp
widgetmanager/src/wmpersistentwidgetorder.cpp
widgetmanager/src/wmplugin.cpp
widgetmanager/src/wmpluginproxy.cpp
widgetmanager/src/wmresourceloader.cpp
widgetmanager/src/wmwidgetdata.cpp
widgetmanager/src/wmwidgetloaderao.cpp
widgetmanager/tsrc/wmunittest/bwins/wmunittestu.def
widgetmanager/tsrc/wmunittest/conf/ui_wmunittest.cfg
widgetmanager/tsrc/wmunittest/conf/wmunittest.bat
widgetmanager/tsrc/wmunittest/conf/wmunittest.ini
widgetmanager/tsrc/wmunittest/data/wmlogo/logo.jpg
widgetmanager/tsrc/wmunittest/data/wmlogo/logo.mif
widgetmanager/tsrc/wmunittest/data/wmlogo/logo.png
widgetmanager/tsrc/wmunittest/data/wmlogo/logo.svg
widgetmanager/tsrc/wmunittest/data/wmlogo/logocorrupt.jpg
widgetmanager/tsrc/wmunittest/data/wmlogo/logocorrupt.png
widgetmanager/tsrc/wmunittest/data/wmlogo/logocorrupt.svg
widgetmanager/tsrc/wmunittest/data/wmlogo/test.wgz
widgetmanager/tsrc/wmunittest/eabi/wmunittestu.def
widgetmanager/tsrc/wmunittest/group/Create_sisx.bat
widgetmanager/tsrc/wmunittest/group/Nokia_RnDCert_02.der
widgetmanager/tsrc/wmunittest/group/Nokia_RnDCert_02.key
widgetmanager/tsrc/wmunittest/group/bld.inf
widgetmanager/tsrc/wmunittest/group/wmunittest.mmp
widgetmanager/tsrc/wmunittest/group/wmunittest.pkg
widgetmanager/tsrc/wmunittest/inc/wmunittest.h
widgetmanager/tsrc/wmunittest/src/wmunittest.cpp
widgetmanager/tsrc/wmunittest/src/wmunittest_all.cpp
widgetmanager/tsrc/wmunittest/src/wmunittest_converter.cpp
widgetmanager/tsrc/wmunittest/src/wmunittest_plugin.cpp
widgetmanager/tsrc/wmunittest/src/wmunittest_sortorder.cpp
--- a/group/bld.inf	Thu Dec 17 08:40:49 2009 +0200
+++ b/group/bld.inf	Thu Jan 07 12:39:41 2010 +0200
@@ -20,7 +20,6 @@
 #include "../homescreen_plat/group/bld.inf"
 #include "../idlehomescreen/group/bld.inf"
 #include "../menufw/group/bld.inf"
-#include "../widgetmanager/group/bld.inf"
 
 PRJ_PLATFORMS
 
--- a/idlehomescreen/data/qhd_tch/desktop_20026f4f/hsps/00/manifest.dat	Thu Dec 17 08:40:49 2009 +0200
+++ b/idlehomescreen/data/qhd_tch/desktop_20026f4f/hsps/00/manifest.dat	Thu Jan 07 12:39:41 2010 +0200
@@ -28,7 +28,7 @@
     <multiinstance>2</multiinstance>
 
     <description>RnD description desktop plugin</description>
-    <filelogo>mif(icon.mif 16384 16385)</filelogo>
+    <filelogo>skin(270501603 9361):mif(icon.mif 16384 16385)</filelogo>
     
     <!-- Locale independent/common resources -->
 
--- a/idlehomescreen/data/qhd_tch/desktop_20026f4f/hsps/00/widgetconfiguration.xml	Thu Dec 17 08:40:49 2009 +0200
+++ b/idlehomescreen/data/qhd_tch/desktop_20026f4f/hsps/00/widgetconfiguration.xml	Thu Jan 07 12:39:41 2010 +0200
@@ -24,10 +24,10 @@
       </item>
       <!-- Shortcut #4, Photos -->
       <item id="fourth" name="Shortcut4" >
-        <property  name="type" value="suite"/>
-        <property  name="uid" value=""/>
+        <property  name="type" value="application"/>
+        <property  name="uid" value="0x200104E4"/>
         <property  name="view" value=""/>
-        <property  name="param" value="photossuite"/>
+        <property  name="param" value=""/>
       </item>
     </settings>
   </control>
--- a/idlehomescreen/data/qhd_tch/profile_2001cb7c/hsps/00/manifest.dat	Thu Dec 17 08:40:49 2009 +0200
+++ b/idlehomescreen/data/qhd_tch/profile_2001cb7c/hsps/00/manifest.dat	Thu Jan 07 12:39:41 2010 +0200
@@ -23,7 +23,8 @@
     <filexml>widgetconfiguration.xml</filexml>
 
     <description>RnD description profile plugin</description>
-    <filelogo>skin(270501603 8433):mif(icon.mif 16384 16385)</filelogo>
+    
+    <filelogo>skin(270501603 9360):mif(icon.mif 16384 16385)</filelogo>
     <!-- Locale specific resources -->
     <localization>
     <fileresource tag="xuikon">profile.o0000</fileresource>
--- a/idlehomescreen/data/qhd_tch/templateview_20026f50/loc/templateview.loc	Thu Dec 17 08:40:49 2009 +0200
+++ b/idlehomescreen/data/qhd_tch/templateview_20026f50/loc/templateview.loc	Thu Jan 07 12:39:41 2010 +0200
@@ -249,8 +249,14 @@
 // r: TB9.2
 #define qtn_hs_title_editing_view "Editing view"
 
-// d: right softkey caption in inactive call state
-// l: text_softkey call
+// d: Call
+// l: control_pane_t1/opt7
 // w:
 // r: TB9.2
 #define text_softkey_call "Call"
+
+// d: Added new option menu item to Edit mode for opening the widget catalog,
+// l: list_single_pane_t1_cp2
+// w:
+// r: TB9.2
+#define qtn_hs_edit_widget_catalog "Widget Catalog"
--- a/idlehomescreen/data/qhd_tch/templateview_20026f50/xuikon/00/templateview.xml	Thu Dec 17 08:40:49 2009 +0200
+++ b/idlehomescreen/data/qhd_tch/templateview_20026f50/xuikon/00/templateview.xml	Thu Jan 07 12:39:41 2010 +0200
@@ -146,15 +146,6 @@
                     </action>
                 </actions>
             </dynmenuitem>
-            <!-- Change wallpaper is always present -->
-            <menuitem id="hs_popup_change_wallpaper" label="&qtn_hs_change_longtap_wallpaper;">
-                <actions>
-                    <action>
-                        <trigger name="activate"/>
-                        <event name="system/setwallpaper"/>
-                    </action>
-                </actions>
-            </menuitem>
         </styluspopup>
         <menubar id="hs_menubar">
             <!-- menu item grouping table is traversed through in run-time always when options menu is launched. -->
@@ -170,11 +161,12 @@
                 </menuitemgroup>
                 <!-- These items are shown in edit mode, if not otherwise changed in the declaration -->
                 <menuitemgroup id="Menu/EditMode">
-                    <property name="hs_add_widget"/>
+                    <property name="hs_widget_catalog"/>
                     <property name="hs_remove_widget"/>
                     <property name="hs_widget_settings"/>
                     <property name="hs_widget_general_1"/>
                     <property name="hs_widget_general_2"/>
+                    <property name="hs_add_view"/>
                     <property name="hs_remove_view"/>
                     <property name="hs_change_wallpaper"/>
                 </menuitemgroup>
--- a/idlehomescreen/data/qhd_tch/templateview_20026f50/xuikon/00/view.dtd	Thu Dec 17 08:40:49 2009 +0200
+++ b/idlehomescreen/data/qhd_tch/templateview_20026f50/xuikon/00/view.dtd	Thu Jan 07 12:39:41 2010 +0200
@@ -401,9 +401,19 @@
 
 <!--
 text_softkey_call.attributes
-text_softkey_call.layout "title_pane_t2"
+text_softkey_call.layout "control_pane_t1/opt7"
 text_softkey_call.release "TB9.2"
 text_softkey_call.description "RSK caption call inactive"
 text_softkey_call.parents ""
 -->
 <!ENTITY text_softkey_call "Call">
+
+<!--
+qtn_hs_add_widget.attributes
+qtn_hs_add_widget.layout "list_single_pane_t1_cp2"
+qtn_hs_add_widget.release "TB9.2"
+qtn_hs_add_widget.description "Added new option menu item to Edit mode for opening the widget catalog"
+qtn_hs_add_widget.grammar "Widget Catalog"
+qtn_hs_add_widget.parents "list_single_pane_cp2"
+-->
+<!ENTITY qtn_hs_edit_widget_catalog "Widget Catalog">
--- a/idlehomescreen/data/qhd_tch/view_2001f48b/loc/View.loc	Thu Dec 17 08:40:49 2009 +0200
+++ b/idlehomescreen/data/qhd_tch/view_2001f48b/loc/View.loc	Thu Jan 07 12:39:41 2010 +0200
@@ -249,8 +249,14 @@
 // r: TB9.2
 #define qtn_hs_title_editing_view "Editing view"
 
-// d: right softkey caption in inactive call state
-// l: text_softkey call
+// d: Call
+// l: control_pane_t1/opt7
 // w:
 // r: TB9.2
 #define text_softkey_call "Call"
+
+// d: Added new option menu item to Edit mode for opening the widget catalog,
+// l: list_single_pane_t1_cp2
+// w:
+// r: TB9.2
+#define qtn_hs_edit_widget_catalog "Widget Catalog"
--- a/idlehomescreen/data/qhd_tch/view_2001f48b/xuikon/00/View.dtd	Thu Dec 17 08:40:49 2009 +0200
+++ b/idlehomescreen/data/qhd_tch/view_2001f48b/xuikon/00/View.dtd	Thu Jan 07 12:39:41 2010 +0200
@@ -401,9 +401,19 @@
 
 <!--
 text_softkey_call.attributes
-text_softkey_call.layout "title_pane_t2"
+text_softkey_call.layout "control_pane_t1/opt7"
 text_softkey_call.release "TB9.2"
 text_softkey_call.description "RSK caption call inactive"
 text_softkey_call.parents ""
 -->
 <!ENTITY text_softkey_call "Call">
+
+<!--
+qtn_hs_widget_catalog.attributes
+qtn_hs_widget_catalog.layout "list_single_pane_t1_cp2"
+qtn_hs_widget_catalog.release "TB9.2"
+qtn_hs_widget_catalog.description "Added new option menu item to Edit mode for opening the widget catalog"
+qtn_hs_widget_catalog.grammar "Widget catalog"
+qtn_hs_widget_catalog.parents "list_single_pane_cp2"
+-->
+<!ENTITY qtn_hs_edit_widget_catalog "Widget Catalog">
--- a/idlehomescreen/data/qhd_tch/view_2001f48b/xuikon/00/View.xml	Thu Dec 17 08:40:49 2009 +0200
+++ b/idlehomescreen/data/qhd_tch/view_2001f48b/xuikon/00/View.xml	Thu Jan 07 12:39:41 2010 +0200
@@ -146,15 +146,6 @@
                     </action>
                 </actions>
             </dynmenuitem>
-            <!-- Change wallpaper is always present -->
-            <menuitem id="hs_popup_change_wallpaper" label="&qtn_hs_change_longtap_wallpaper;">
-                <actions>
-                    <action>
-                        <trigger name="activate"/>
-                        <event name="system/setwallpaper"/>
-                    </action>
-                </actions>
-            </menuitem>
         </styluspopup>
         <menubar id="hs_menubar">
             <!-- menu item grouping table is traversed through in run-time always when options menu is launched. -->
@@ -170,11 +161,12 @@
                 </menuitemgroup>
                 <!-- These items are shown in edit mode, if not otherwise changed in the declaration -->
                 <menuitemgroup id="Menu/EditMode">
-                    <property name="hs_add_widget"/>
+                    <property name="hs_widget_catalog"/>
                     <property name="hs_remove_widget"/>
                     <property name="hs_widget_settings"/>
                     <property name="hs_widget_general_1"/>
                     <property name="hs_widget_general_2"/>
+                    <property name="hs_add_view"/>
                     <property name="hs_remove_view"/>
                     <property name="hs_change_wallpaper"/>
                 </menuitemgroup>
--- a/idlehomescreen/data/vga_tch/view1_2001fdb9/loc/view.loc	Thu Dec 17 08:40:49 2009 +0200
+++ b/idlehomescreen/data/vga_tch/view1_2001fdb9/loc/view.loc	Thu Jan 07 12:39:41 2010 +0200
@@ -69,6 +69,12 @@
 // r: TB9.2
 #define qtn_hs_add_widget "Add content"
 
+// d: Access the widget catalog
+// l: list_single_pane_t1_cp2
+// w: 
+// r: TB9.2
+#define qtn_hs_widget_catalog "Widget catalog"
+
 // d: Search
 // l: control_pane_t1/opt7
 // w:
@@ -247,4 +253,10 @@
 // l: control_pane_t1/opt7
 // w:
 // r: TB9.2
-#define qtn_hs_sk2_call "Call"
+#define text_softkey_call "Call"
+
+// d: Added new option menu item to Edit mode for opening the widget catalog,
+// l: list_single_pane_t1_cp2
+// w:
+// r: TB9.2
+#define qtn_hs_edit_widget_catalog "Widget Catalog"
--- a/idlehomescreen/data/vga_tch/view1_2001fdb9/xuikon/00/view.dtd	Thu Dec 17 08:40:49 2009 +0200
+++ b/idlehomescreen/data/vga_tch/view1_2001fdb9/xuikon/00/view.dtd	Thu Jan 07 12:39:41 2010 +0200
@@ -8,7 +8,7 @@
 <FileVersion    : >
 
 <Copyright:
-"Copyright © 2005 Nokia Corporation.
+"Copyright (c) 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,
@@ -109,6 +109,16 @@
 <!ENTITY qtn_hs_add_widget "Add content">
 
 <!--
+qtn_hs_widget_catalog.attributes
+qtn_hs_widget_catalog.layout "list_single_pane_t1_cp2"
+qtn_hs_widget_catalog.release "TB9.2"
+qtn_hs_widget_catalog.description "Widget catalog"
+qtn_hs_widget_catalog.grammar "Widget catalog"
+qtn_hs_widget_catalog.parents "list_single_pane_cp2"
+-->
+<!ENTITY qtn_hs_widget_catalog "Widget catalog">
+
+<!--
 text_softkey_search.attributes
 text_softkey_search.layout "control_pane_t1/opt7"
 text_softkey_search.release "TB9.2"
@@ -389,3 +399,21 @@
 -->
 <!ENTITY qtn_hs_title_editing_view "Editing view">
 
+<!--
+text_softkey_call.attributes
+text_softkey_call.layout "control_pane_t1/opt7"
+text_softkey_call.release "TB9.2"
+text_softkey_call.description "RSK caption call inactive"
+text_softkey_call.parents ""
+-->
+<!ENTITY text_softkey_call "Call">
+
+<!--
+qtn_hs_add_widget.attributes
+qtn_hs_add_widget.layout "list_single_pane_t1_cp2"
+qtn_hs_add_widget.release "TB9.2"
+qtn_hs_add_widget.description "Added new option menu item to Edit mode for opening the widget catalog"
+qtn_hs_add_widget.grammar "Widget Catalog"
+qtn_hs_add_widget.parents "list_single_pane_cp2"
+-->
+<!ENTITY qtn_hs_edit_widget_catalog "Widget Catalog">
--- a/idlehomescreen/group/bld.inf	Thu Dec 17 08:40:49 2009 +0200
+++ b/idlehomescreen/group/bld.inf	Thu Jan 07 12:39:41 2010 +0200
@@ -24,6 +24,7 @@
 #include "../sapiwrapper/hspswrapper/group/bld.inf"
 #include "../xmluirendering/group/bld.inf"
 #include "../xmluicontroller/group/bld.inf"
+#include "../widgetmanager/group/bld.inf"
 
 #ifdef FF_HOMESCREEN_COMMON_IDLEFW
 #include "../data/group/bld.inf"
--- a/idlehomescreen/hscontentcontrol/group/hscontentcontrol.mmp	Thu Dec 17 08:40:49 2009 +0200
+++ b/idlehomescreen/hscontentcontrol/group/hscontentcontrol.mmp	Thu Jan 07 12:39:41 2010 +0200
@@ -31,6 +31,7 @@
 
 SOURCE            hscontentcontrolfactory.cpp 
 SOURCE            hscontentcontrolui.cpp 
+SOURCE            hscontentcontrolecomlistener.cpp
 
 //By default, the build tools look for the WINSCW def file in a BWINS directory
 //(at the same level as the directory containing the mmp file), 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/hscontentcontrol/inc/hscontentcontrolecomlistener.h	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,96 @@
+/*
+* 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: Listens for change in ecom registry of content controller
+* interface.  
+*
+*/
+
+#ifndef HSCONTENTCONTROLECOMLISTENER_H 
+#define HSCONTENTCONTROLECOMLISTENER_H 
+
+// System includes
+#include <e32base.h>
+
+// User includes
+
+// Forward declarations
+class MHsContentControlEComObserver;
+class REComSession;
+
+// Class declaration
+/** 
+* @class CHsContentControlEComListener
+* 
+* @brief An instance of class CHsContentControlEComListener which listens for 
+*  changes in the ECOM registry.
+*  
+* @lib hscontentcontrol.lib
+*/
+NONSHARABLE_CLASS( CHsContentControlEComListener ) : public CActive
+    {
+public: // Constructor and destructor
+
+    /**
+     * Two-phased constructor.
+     */ 
+    static CHsContentControlEComListener* NewL( 
+            MHsContentControlEComObserver& aContentControlEComObserver );                                         
+    
+    /**
+     * Destructor.
+     */
+    ~CHsContentControlEComListener();
+
+protected: // Functions from base classes
+   /**
+    * From CActive
+    */
+   void RunL();
+
+   /**
+    * From CActive
+    */
+   void DoCancel();
+
+   /**
+    * From CActive
+    */
+   TInt RunError( TInt aError );
+
+private: // Constructors
+    
+   /**
+    * Default C++ constructor.
+    */ 
+    CHsContentControlEComListener( 
+            MHsContentControlEComObserver& aHsContentControlEComObserver );
+
+    /**
+     * Second phase constructor.
+     */ 
+    void ConstructL();
+
+private: // Data
+
+    // Reference of MHsContentControlEComObserver
+    MHsContentControlEComObserver& iHsContentControlEComObserver;
+    
+    // An object of type REComSession.
+    REComSession* iEComSession;
+    };
+
+#endif  // HSCONTENTCONTROLECOMLISTENER_H
+
+// End of file
+ 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/hscontentcontrol/inc/hscontentcontrolecomobserver.h	Thu Jan 07 12:39:41 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: Observes for change in ecom registry of content controller
+*  interface.  
+*
+*/
+
+#ifndef HSCONTENTCONTROLECOMOBSERVER_H
+#define HSCONTENTCONTROLECOMOBSERVER_H
+
+// Class declaration
+/**
+* MHsContentControlEComObserver
+* 
+* @brief The observer of ecom registry changes. The derived class needs to implement
+*  the functions below and will be notified by CHsContentControlEComListener.
+*  
+* @see CHsContentControlEComListener
+*/
+class MHsContentControlEComObserver
+	{
+public:
+    /**
+     * Notification of Ecom registry change.
+     */
+    virtual void HandleEComChangeEvent() = 0;
+	};
+
+#endif // HSCONTENTCONTROLECOMOBSERVER_H
+
+// End of file
--- a/idlehomescreen/hscontentcontrol/inc/hscontentcontrolfactory.h	Thu Dec 17 08:40:49 2009 +0200
+++ b/idlehomescreen/hscontentcontrol/inc/hscontentcontrolfactory.h	Thu Jan 07 12:39:41 2010 +0200
@@ -20,9 +20,14 @@
 
 // System includes
 #include <e32base.h>
+#include <hscontentcontrolui.h>
+
+// User includes
+#include "hscontentcontrolecomobserver.h"
 
 // Forward declarations
-#include <hscontentcontrolui.h>
+class CHsContentControlEComListener;
+
 /**
  *  Content control UI base class
  *
@@ -34,7 +39,8 @@
  *  @lib hscontentcontrol.lib
  *  @since S60 v5.0
  */
-NONSHARABLE_CLASS( CHsContentControlFactory ) : public CBase
+NONSHARABLE_CLASS( CHsContentControlFactory ) : public CBase,
+                                                public MHsContentControlEComObserver
     {
 public: // Constructor and destructor
     /**
@@ -47,6 +53,13 @@
      */
     IMPORT_C ~CHsContentControlFactory();
 
+public: // from MHsContentControlEComObserver
+    
+    /**
+     * Notification of Ecom registry change.
+     */
+     void HandleEComChangeEvent();
+    
 private: // Constructors
     /**
      * Constructor
@@ -65,20 +78,49 @@
         const TDesC8& aControllerType );
 
 private:
-    /**
-     * 
+    /** 
+     * Finds and returns loaded ContentControlUi object from array.
      */
     MHsContentControlUi* FindHsContentController(
         const TDesC8& aControllerType );
     
+    /** 
+     * Checks if a plugin is removed/upgraded/downgraded.
+     */
+    void CheckPluginChangesL();
     
+    /**
+     * Finds plugin implementation info in the ECOM registry.
+     * @param aUid The plugin UID which is to be checked.
+     * @param aPluginArray The array of plugins which have been implemented.
+     * @return ImplementationInfo of plugin. 
+     */
+    CImplementationInformation* FindPluginImplInfo( 
+            const TUid& aUid, const RImplInfoPtrArray& aPlugInArray );
+
+    /**
+     * Checks if an upgrade or downgrade of the existing plugins happened.
+     * @param aPluginImplInfo ImplInfo of plugin to be checked for upgrade/downgrade.
+     * @return ETrue if upgrade/downgrade, EFalse otherwise. 
+     */
+    TBool PluginUpgradeDowngrade( const CImplementationInformation& aPluginImplInfo );
+
 private: // Data
 
     /**
-     *
+     * An array of type CHsContentControlUi ( Owned ).
      */
     RPointerArray< CHsContentControlUi > iHsContentControlUis;
+    
+    /**
+    * An array of type CImplementationInformation ( Owned ).
+    */
+    RImplInfoPtrArray               iImplArray;
 
+    /**
+     * An object of type CHsContentControlEComListener ( Owned ).
+     */
+    CHsContentControlEComListener*  iHsContentControlEComListener; 
     };
 
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/hscontentcontrol/src/hscontentcontrolecomlistener.cpp	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,128 @@
+/*
+ * 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: The source file of the CHsContentControlEComListener class. 
+ *
+ */
+
+// System includes
+#include <ecom/ecom.h>
+
+// User includes
+#include "hscontentcontrolecomlistener.h"
+#include "hscontentcontrolecomobserver.h"
+
+// ---------------------------------------------------------
+// CHsContentControlEComListener::NewL
+// ---------------------------------------------------------
+//
+CHsContentControlEComListener* CHsContentControlEComListener::NewL( 
+        MHsContentControlEComObserver& aContentControlEComObserver )
+    {
+    CHsContentControlEComListener* self = 
+            new ( ELeave ) CHsContentControlEComListener(
+                    aContentControlEComObserver );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop();
+    return self;
+    }
+    
+// ---------------------------------------------------------
+// CHsContentControlEComListener::~CHsContentControlEComListener
+// ---------------------------------------------------------
+//
+CHsContentControlEComListener::~CHsContentControlEComListener()
+    {
+    Cancel(); // Cancel any request, if outstanding
+    if( iEComSession )
+        {
+        // Close session to ECom server
+        iEComSession->Close();
+        }
+
+    // Free up resources held by the EComSession.
+    REComSession::FinalClose();
+    }
+ 
+// ---------------------------------------------------------
+// CHsContentControlEComListener::CHsContentControlEComListener
+// ---------------------------------------------------------
+//
+CHsContentControlEComListener::CHsContentControlEComListener( 
+        MHsContentControlEComObserver& aContentControlEComObserver ) 
+    : CActive( CActive::EPriorityStandard ),
+    iHsContentControlEComObserver( aContentControlEComObserver )
+    {
+    }
+
+// ---------------------------------------------------------
+// CHsContentControlEComListener::ConstructL
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+void CHsContentControlEComListener::ConstructL()
+    {
+    // Connect to the ECOM session server.
+    iEComSession = &REComSession::OpenL();
+   
+    // Queue the active object in the scheduler
+    CActiveScheduler::Add( this );
+        
+    // Start the active object and listen for changes in the ECOM registry.
+    iEComSession->NotifyOnChange( iStatus );
+    SetActive();
+    }
+
+// ---------------------------------------------------------
+// CHsContentControlEComListener::RunL
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+void CHsContentControlEComListener::RunL()
+    {
+    if ( &iHsContentControlEComObserver &&
+        KErrNone == iStatus.Int() )
+        {
+        // Notify observer
+        iHsContentControlEComObserver.HandleEComChangeEvent();
+        }
+
+    // Keep listening changes
+    iEComSession->NotifyOnChange( iStatus );
+
+    // Restart the active Object
+    SetActive();
+    }
+
+// ---------------------------------------------------------
+// CHsContentControlEComListener::DoCancel
+// ---------------------------------------------------------
+//
+void CHsContentControlEComListener::DoCancel()
+    {
+    // Cancel any outstanding requests.
+    iEComSession->CancelNotifyOnChange( iStatus );
+    }
+
+
+// ---------------------------------------------------------
+// CHsContentControlEComListener::RunError
+// ---------------------------------------------------------
+//
+TInt CHsContentControlEComListener::RunError( TInt /*aError*/ )
+    {
+    return KErrNone;
+    }
+
+// End of file
--- a/idlehomescreen/hscontentcontrol/src/hscontentcontrolfactory.cpp	Thu Dec 17 08:40:49 2009 +0200
+++ b/idlehomescreen/hscontentcontrol/src/hscontentcontrolfactory.cpp	Thu Jan 07 12:39:41 2010 +0200
@@ -21,10 +21,11 @@
 
 // User include files
 #include "hscontentcontrolfactory.h"
+#include "hscontentcontrolecomlistener.h"
 
 // Local constants
 
-// TODO: Content controller ECom interface UID
+// Content controller ECom interface UID
 const TUid KInterfaceUidContentController = { 0x20026F51 };
 
 // ======== LOCAL FUNCTIONS ========
@@ -73,6 +74,10 @@
 //
 void CHsContentControlFactory::ConstructL()
     {
+    iHsContentControlEComListener = 
+            CHsContentControlEComListener::NewL( *this );
+    REComSession::ListImplementationsL( 
+            KInterfaceUidContentController, iImplArray );
     }
 
 // ----------------------------------------------------------------------------
@@ -89,7 +94,10 @@
 //
 EXPORT_C CHsContentControlFactory::~CHsContentControlFactory()
     {
+    iImplArray.ResetAndDestroy();
+    iImplArray.Close();
     iHsContentControlUis.ResetAndDestroy();
+	delete iHsContentControlEComListener;
     }
 
 // ---------------------------------------------------------------------------------
@@ -115,17 +123,17 @@
                 {
                 CImplementationInformation* information( plugins[i] );
                 
-                if ( information->OpaqueData().Compare( aControlType ) == 0 )
+                if ( information->OpaqueData().CompareF( aControlType ) == 0 )
                     {
                     CHsContentControlUi* ccUi = CHsContentControlUi::NewL( 
                         information->ImplementationUid() );
+                    CleanupStack::PushL( ccUi );
                     
                     ccUi->SetContentControlTypeL( information->OpaqueData() );
-                    
                     iHsContentControlUis.AppendL( ccUi );
                     
+                    CleanupStack::Pop(); //ccUi
                     retval = ccUi;
-                    
                     // All done
                     break;
                     }
@@ -149,7 +157,7 @@
         {
         CHsContentControlUi* cc( iHsContentControlUis[ i ] );
         
-        if ( cc->ContentControlType().Compare( aControlType ) == 0 )                
+        if ( cc->ContentControlType().CompareF( aControlType ) == 0 )                
             {
             return cc;
             } 
@@ -158,4 +166,131 @@
     return NULL;
     }
 
+// ----------------------------------------------------------------------------
+// CHsContentControlFactory::HandleEComChangeEvent()
+// ----------------------------------------------------------------------------
+//
+void CHsContentControlFactory::HandleEComChangeEvent()
+    {
+    // ignore event if no plugin loaded.
+    if ( iHsContentControlUis.Count() > 0 )
+        {
+        TRAP_IGNORE( CheckPluginChangesL(); );
+        }
+    }
+
+// ----------------------------------------------------------------------------
+// CHsContentControlFactory::CheckPluginChangesL
+// ----------------------------------------------------------------------------
+//
+void CHsContentControlFactory::CheckPluginChangesL()
+    {
+    // Array to return all implementations in an interface
+    RImplInfoPtrArray plugInArray;
+    CleanupResetAndDestroyPushL( plugInArray );
+
+    // Get the list of all implementations.
+    REComSession::ListImplementationsL( 
+            KInterfaceUidContentController, plugInArray );
+        
+    TUid uid( KNullUid );
+    TBool done( EFalse );
+    
+    // If an implementation is not present in present in the plugInArray then its removed. 
+    for( TInt index( iImplArray.Count() - 1 ); index >= 0 && !done; --index )
+        {
+        uid = plugInArray[ index ]->ImplementationUid();
+        CImplementationInformation* implInfo = 
+                FindPluginImplInfo( uid, plugInArray );
+        if ( implInfo && PluginUpgradeDowngrade( *implInfo ) )
+            {
+            done = ETrue;
+            }
+        else
+            {
+            // check if ContenControlUi is loaded, unload it
+            for( TInt innerIndex( iHsContentControlUis.Count() - 1 );
+                    innerIndex >= 0 && !done; --innerIndex )
+                {
+                CHsContentControlUi* cc( iHsContentControlUis[ innerIndex ] );
+                if ( cc && cc->ImplUid() == uid )
+                    {
+                    iHsContentControlUis.Remove( innerIndex );
+                    delete cc;
+                    cc = NULL;
+                    done = ETrue;
+                    }
+                }
+            done = ETrue;
+            }
+        }
+
+    // Cleanup.
+    CleanupStack::PopAndDestroy(); // plugInArray
+    
+    // Reset the array and refresh the plugin list.
+    iImplArray.ResetAndDestroy();
+    iImplArray.Close();    
+    REComSession::ListImplementationsL( 
+            KInterfaceUidContentController, iImplArray );
+    }
+
+// ----------------------------------------------------------------------------
+// CHsContentControlFactory::FindPluginImplInfo
+// ----------------------------------------------------------------------------
+//
+CImplementationInformation* CHsContentControlFactory::FindPluginImplInfo( 
+        const TUid& aUid, const RImplInfoPtrArray& aPlugInArray )
+    {
+    CImplementationInformation* implInfo( NULL );
+    for( TInt index( aPlugInArray.Count() - 1 ); index >= 0; --index )
+        {
+        implInfo = aPlugInArray[ index ];
+        if( aUid == implInfo->ImplementationUid() )
+            {
+            break;
+            }
+        }
+    return implInfo;
+    }
+
+// ----------------------------------------------------------------------------
+// CHsContentControlFactory::PluginUpgradeDowngrade
+// ----------------------------------------------------------------------------
+//
+TBool CHsContentControlFactory::PluginUpgradeDowngrade( 
+        const CImplementationInformation& aPluginImplInfo )
+    {
+    // Check for each plugin in the array if the version matches with the plugin we have
+    TUid uid = aPluginImplInfo.ImplementationUid();
+    for( TInt outterIndex( iImplArray.Count() - 1 ); outterIndex >= 0; --outterIndex )
+        {
+        if( uid == iImplArray[ outterIndex ]->ImplementationUid() )
+            {
+            if( aPluginImplInfo.Version() != iImplArray[ outterIndex ]->Version() ||
+               aPluginImplInfo.Drive() != iImplArray[ outterIndex ]->Drive() ||
+               aPluginImplInfo.DisplayName() != iImplArray[ outterIndex ]->DisplayName() ||
+               aPluginImplInfo.OpaqueData() != iImplArray[ outterIndex ]->OpaqueData() )
+                {
+                // If control reaches here, it means we either have an upgrade or downgrade.
+                // check if we have loaded this plugin, reload it if found in array.
+                for( TInt innerIndex( iHsContentControlUis.Count() - 1 ); 
+                        innerIndex >= 0; --innerIndex )
+                    {
+                    CHsContentControlUi* cc( iHsContentControlUis[ innerIndex ] );
+                    if ( cc && cc->ImplUid() == uid )
+                        {
+                        iHsContentControlUis.Remove( innerIndex );
+                        delete cc;
+                        cc = NULL;
+                        innerIndex = KErrNotFound;
+                        }
+                    }                    
+                return ETrue;
+                }
+            }
+        }
+    return EFalse;
+    }
+
 // End of file
--- a/idlehomescreen/inc/xnmenu.h	Thu Dec 17 08:40:49 2009 +0200
+++ b/idlehomescreen/inc/xnmenu.h	Thu Jan 07 12:39:41 2010 +0200
@@ -24,9 +24,7 @@
 #include "xncomponent.h"
 #include "mxncomponentinterface.h"
 
-#if 0 // MSK icon change
 class TAknsItemID;
-#endif // MSK icon change
 
 namespace XnMenuInterface
 {
@@ -99,7 +97,6 @@
         TBool aPreserveAspectRatio = EFalse, TBool aInvertMask = EFalse,
         TBool aTransferOwnership = ETrue ) = 0;   
 
-#if 0 // MSK icon change
     /**
     * Sets soft key image.
     * @param aId icon bitmap IID 
@@ -116,8 +113,6 @@
                                    XnMenuInterface::MXnMenuInterface::TSoftKeyPosition aPos, 
                                    TBool aEnable ) = 0;
 
-#endif // MSK icon change
-
     /**
     * Sets softkey text. 
     * @since Series 60 3.2
@@ -198,7 +193,6 @@
         TBool aPreserveAspectRatio, TBool aInvertMask,
         TBool aTransferOwnership = ETrue );
 
-#if 0 // MSK icon change
        /**
         * @see MXnMenuInterface::SetSoftKeyImage
         */
@@ -208,7 +202,6 @@
                               const TInt32 aBmpM,
                               XnMenuInterface::MXnMenuInterface::TSoftKeyPosition aPos, 
                               TBool aEnable );
-#endif // MSK icon change
 
        /**
         * @see MXnMenuInterface::SetSoftkeyTextL
--- a/idlehomescreen/inc/xnmenuadapter.h	Thu Dec 17 08:40:49 2009 +0200
+++ b/idlehomescreen/inc/xnmenuadapter.h	Thu Jan 07 12:39:41 2010 +0200
@@ -107,7 +107,6 @@
             CXnNodeAppIf* aNode,
             TBool aPreserveAspectRatio, TBool aInvertMask,TBool aTransferOwnership);
 
-#if 0 // MSK icon change
         /**
         * Sets soft key image.
         * @param aId icon bitmap IID 
@@ -123,7 +122,6 @@
                                const TInt32 aBmpM,
                                XnMenuInterface::MXnMenuInterface::TSoftKeyPosition aPos, 
                                TBool aEnable );
-#endif // MSK icon change
 
         /**
         * Sets softkey text. 
--- a/idlehomescreen/inc/xnviewmanager.h	Thu Dec 17 08:40:49 2009 +0200
+++ b/idlehomescreen/inc/xnviewmanager.h	Thu Jan 07 12:39:41 2010 +0200
@@ -87,7 +87,8 @@
 NONSHARABLE_CLASS( CXnViewManager ) : public CBase
     {
     // Friend classes
-    friend class CXnViewAdapter;    
+    friend class CXnViewAdapter;
+    
 public:
     /**
      * Two-phased constructor.
@@ -234,10 +235,8 @@
 public:
     void UpdatePageManagementInformationL();
 
-#if 0 // MSK icon change
 private:
     TInt ResolveIconIndex( TInt aPageCount, TInt aPageNum ) const;
-#endif // MSK icon change
         
 private:
     // data
--- a/idlehomescreen/nativeuicontroller/src/aistatuspanel.cpp	Thu Dec 17 08:40:49 2009 +0200
+++ b/idlehomescreen/nativeuicontroller/src/aistatuspanel.cpp	Thu Jan 07 12:39:41 2010 +0200
@@ -385,7 +385,7 @@
 
 void CAiStatusPanel::StopTitlePaneScrollingL()
     {
-    //stop scrolling
+    // stop scrolling
     if( iTitlePane->Text() )
         {
         iTitlePane->SetTextL( *iTitlePane->Text(), EFalse );
@@ -394,7 +394,7 @@
 
 void CAiStatusPanel::ScrollTitlePaneTextL()
     {
-// start scrolling
+    // start scrolling
     if( iTitlePane->Text() )
         {
         iTitlePane->SetTextL( *iTitlePane->Text(), ETrue );
--- a/idlehomescreen/nativeuicontroller/src/aititlepanerenderer.cpp	Thu Dec 17 08:40:49 2009 +0200
+++ b/idlehomescreen/nativeuicontroller/src/aititlepanerenderer.cpp	Thu Jan 07 12:39:41 2010 +0200
@@ -210,10 +210,7 @@
 
 void CAiTitlePaneRenderer::FocusObtainedL()
     {
-    // This scrolls the title pane text only if it has been changed
     iStatusPanel.RenderTitlePaneL();
-    // Force the scroll just to be safe
-    iStatusPanel.ScrollTitlePaneTextL();
     }
 
 void CAiTitlePaneRenderer::FocusLostL()
--- a/idlehomescreen/sapiwrapper/cpswrapper/inc/cpswrapper.h	Thu Dec 17 08:40:49 2009 +0200
+++ b/idlehomescreen/sapiwrapper/cpswrapper/inc/cpswrapper.h	Thu Jan 07 12:39:41 2010 +0200
@@ -20,7 +20,7 @@
 
 // System includes
 #include <e32base.h>
-#include <LiwCommon.h>      // for MLiwNotifyCallback
+#include <liwcommon.h>      // for MLiwNotifyCallback
 
 // Forward declarations
 class CLiwServiceHandler;
--- a/idlehomescreen/sapiwrapper/cpswrapper/src/cpsobserver.cpp	Thu Dec 17 08:40:49 2009 +0200
+++ b/idlehomescreen/sapiwrapper/cpswrapper/src/cpsobserver.cpp	Thu Jan 07 12:39:41 2010 +0200
@@ -17,10 +17,10 @@
 
 
 // INCLUDE FILES
-#include <LiwCommon.h>
-#include <LiwServiceHandler.h>
-#include <LiwVariant.h>
-#include <LiwGenericParam.h>
+#include <liwcommon.h>
+#include <liwservicehandler.h>
+#include <liwvariant.h>
+#include <liwgenericparam.h>
 
 #include "cpsobserver.h"
 #include "cpswrapper.h"
@@ -71,7 +71,7 @@
 	//
 	CCpsObserver::~CCpsObserver()
 		{
-		ReleaseL();
+	    TRAP_IGNORE( ReleaseL() );	    
 		ReleaseLiw();
 		}
 	
--- a/idlehomescreen/sapiwrapper/cpswrapper/src/cpswrapper.cpp	Thu Dec 17 08:40:49 2009 +0200
+++ b/idlehomescreen/sapiwrapper/cpswrapper/src/cpswrapper.cpp	Thu Jan 07 12:39:41 2010 +0200
@@ -16,9 +16,9 @@
  */
 
 // System include files
-#include <LiwServiceHandler.h>
-#include <LiwVariant.h>
-#include <LiwGenericParam.h>
+#include <liwservicehandler.h>
+#include <liwvariant.h>
+#include <liwgenericparam.h>
 #include <bamdesca.h>
 
 // User include files
--- a/idlehomescreen/sapiwrapper/hspswrapper/inc/hspswrapper.h	Thu Dec 17 08:40:49 2009 +0200
+++ b/idlehomescreen/sapiwrapper/hspswrapper/inc/hspswrapper.h	Thu Jan 07 12:39:41 2010 +0200
@@ -21,7 +21,7 @@
 #define C_CHSPSWRAPPER_H
 
 #include <e32base.h>
-#include <LiwCommon.h>      // for MLiwNotifyCallback
+#include <liwcommon.h>      // for MLiwNotifyCallback
 
 class CLiwServiceHandler;
 class MLiwInterface;
--- a/idlehomescreen/sapiwrapper/hspswrapper/src/hspswrapper.cpp	Thu Dec 17 08:40:49 2009 +0200
+++ b/idlehomescreen/sapiwrapper/hspswrapper/src/hspswrapper.cpp	Thu Jan 07 12:39:41 2010 +0200
@@ -16,8 +16,8 @@
 */
 
 
-#include <LiwServiceHandler.h>
-#include <LiwVariant.h>
+#include <liwservicehandler.h>
+#include <liwvariant.h>
 #include <bamdesca.h>
 
 #include "hspswrapper.h"
Binary file idlehomescreen/widgetmanager/conf/widgetmanager.confml has changed
Binary file idlehomescreen/widgetmanager/conf/widgetmanager_20026F53.crml has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/data/20026F53.rss	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,44 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  widget manager plugin registry resource
+*
+*/
+
+#include "registryinfov2.rh"
+
+// Declares info for two implementations
+RESOURCE REGISTRY_INFO theInfo
+    {
+    resource_format_version = RESOURCE_FORMAT_VERSION_2;
+    dll_uid = 0x20026F53;    
+    interfaces = 
+        {
+        INTERFACE_INFO
+            {
+            // UID of interface that is implemented
+            interface_uid = 0x20026F51;
+            implementations = 
+                {
+                IMPLEMENTATION_INFO
+                    {
+                    implementation_uid = 0x20026F53;
+                    version_no = 1;
+                    display_name = "Widget Manager";
+                    default_data = "WmContentControlUI";
+                    opaque_data = "0x20026F53";
+                    }
+                };
+            }
+        };
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/data/widgetmanagerview.loc	Thu Jan 07 12:39:41 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 "This widget uses web content. Only one instance of this widget can be in the Home screen at a time."
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/data/widgetmanagerview.rss	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,246 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies)..
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* 
+*
+*/
+
+//  INCLUDES
+#include <eikon.rh>
+#include <avkon.rsg>
+#include <avkon.rh>
+#include <avkon.loc>
+#include <appinfo.rh>
+#include <avkon.mbg>
+#include <activeidle3.loc>
+
+#include "widgetmanager.hrh"
+#include "widgetmanagerview.loc"
+
+//  RESOURCE IDENTIFIER
+NAME    WIGZ // 4 letter ID
+
+RESOURCE RSS_SIGNATURE
+	{
+	}
+
+// ----------------------------------------------------
+// MAIN VIEW AND ITS PARTS
+// ----------------------------------------------------
+
+RESOURCE AVKON_VIEW r_wm_main_container_view
+    {
+    cba = R_AVKON_SOFTKEYS_OPTIONS_BACK__SELECT;
+    menubar = r_wm_main_container_options_menu;
+    toolbar = 0;
+    }
+
+RESOURCE TITLE_PANE r_wm_main_container_title_resource
+    {
+    txt = qtn_wm_title_text;
+    }
+
+// ----------------------------------------------------
+// MENU
+// ----------------------------------------------------
+
+RESOURCE MENU_BAR r_wm_main_container_options_menu
+    {
+    titles =
+        {
+        MENU_TITLE
+            {
+            menu_pane = r_wm_main_container_menu_pane;
+            }
+        };
+    }
+
+RESOURCE MENU_PANE r_wm_main_container_menu_pane
+    {
+    items =
+        {
+        MENU_ITEM
+            {
+            command = EWmMainContainerViewOpenPortalMenuItemCommand;
+            txt = qtn_options_wm_open;
+            flags = EEikMenuItemAction;
+            },
+        MENU_ITEM
+            {
+            command = EWmMainContainerViewAddMenuItemCommand;
+            txt = qtn_options_wm_add;
+            flags = EEikMenuItemAction;
+            },
+        MENU_ITEM
+            {
+            command = EWmMainContainerViewWiddetDetailsMenuItemCommand;
+            txt = qtn_options_wm_show_details;
+            flags = EEikMenuItemSpecific;
+            },    
+        MENU_ITEM
+            {
+            command = EWmMainContainerViewLaunchMenuItemCommand;
+            txt = qtn_options_wm_launch_widget;
+            flags = EEikMenuItemSpecific;
+            },
+        MENU_ITEM
+            {
+            command = EWmMainContainerViewSearchMenuItemCommand;
+            txt = qtn_options_wm_search;
+            },
+        MENU_ITEM
+            {
+            command = EWmMainContainerViewSortAlphaMenuItemCommand;
+            txt = qtn_options_wm_sort_alpha;
+            },
+        MENU_ITEM
+            {
+            command = EWmMainContainerViewUninstallMenuItemCommand;
+            txt = qtn_options_wm_uninstall;
+            flags = EEikMenuItemSpecific;
+            },
+        MENU_ITEM
+            {
+            command = EWmMainContainerViewHelpMenuItemCommand;
+            txt = qtn_options_help;
+            },
+        MENU_ITEM
+            {
+            command = EWmMainContainerViewBackMenuItemCommand;
+            txt = qtn_options_exit;
+            }
+        };
+    }
+
+// ----------------------------------------------------
+// OVI STORE BUTTON
+// ----------------------------------------------------
+
+RESOURCE AVKON_BUTTON r_wm_portal_button
+    {
+    flags = 0;
+    states =
+        {
+        AVKON_BUTTON_STATE
+            {
+            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;
+            }
+        };
+    }
+
+RESOURCE TBUF r_qtn_wm_go_to_ovi_store
+    {
+    buf = qtn_wm_ovi_store_title;
+    }
+
+// ----------------------------------------------------
+// MISCELLANEOUS INFO MESSAGES
+// ----------------------------------------------------
+
+RESOURCE TBUF r_qtn_hs_add_widget_no_space_note
+    {
+    buf = qtn_hs_add_widget_no_space_note;
+    }
+
+RESOURCE TBUF r_qtn_hs_add_widget_max_count_note
+    {
+    buf = qtn_hs_add_widget_max_count_note;
+    }
+
+RESOURCE TBUF r_qtn_hs_hs_memory_full
+    {
+    buf = qtn_hs_hs_memory_full;
+    }
+
+RESOURCE TBUF r_qtn_wm_details_no_description
+    {
+    buf = qtn_wm_details_no_description;
+    }
+
+RESOURCE TBUF r_qtn_wm_widget_details_wrt
+    {
+    buf = qtn_wm_widget_details_wrt;
+    }
+
+RESOURCE TBUF r_qtn_wm_uninst_not_allowed
+    {
+    buf = qtn_wm_uninst_not_allowed;
+    }
+
+// ----------------------------------------------------
+// Wm Details dialog
+// ----------------------------------------------------
+
+STRUCT WMDLGCONTROL
+    {
+    STRUCT control;
+    }
+	
+RESOURCE DIALOG r_wm_details_add_dialog
+    {
+    flags = EEikDialogFlagNoDrag |
+            EEikDialogFlagCbaButtons |
+            EEikDialogFlagWait |
+            EEikDialogFlagNoTitleBar;
+    buttons = r_wm_details_add_close_cba;
+    }
+
+RESOURCE CBA r_wm_details_add_close_cba
+    {
+    buttons =
+        {
+        CBA_BUTTON // add
+            {
+            id = ECbaAddToHs; 
+            txt = qtn_wm_details_add_to_hs; 
+            },
+        CBA_BUTTON // close
+            {
+            id = EAknSoftkeyClose; 
+            txt = text_softkey_close;
+            }
+        };
+    }
+
+RESOURCE DIALOG r_wm_details_only_dialog
+    {
+    flags = EEikDialogFlagNoDrag |
+            EEikDialogFlagCbaButtons |
+            EEikDialogFlagWait |
+            EEikDialogFlagNoTitleBar;
+    buttons = r_wm_details_empty_close_cba;
+    }
+
+RESOURCE CBA r_wm_details_empty_close_cba
+    {
+    buttons =
+        {
+        CBA_BUTTON // empty
+            {
+            id = 0; 
+            txt = text_softkey_empty; 
+            },
+        CBA_BUTTON // close
+            {
+            id = EAknSoftkeyClose; 
+            txt = text_softkey_close;
+            }
+        };
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/gfx/add_widget_button.svg	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="50px"
+	 height="36px" viewBox="0 0 50 36" enable-background="new 0 0 50 36" xml:space="preserve">
+<g id="Layer_2">
+</g>
+<g id="Layer_1">
+	<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="24.9995" y1="0" x2="24.9995" y2="36.0005">
+		<stop  offset="0" style="stop-color:#79CD19"/>
+		<stop  offset="1" style="stop-color:#4A9826"/>
+	</linearGradient>
+	<path fill="url(#SVGID_1_)" d="M50,31c0,2.762-2.239,5-5,5H5c-2.762,0-5-2.238-5-5V5c0-2.761,2.238-5,5-5h40c2.761,0,5,2.239,5,5
+		V31z"/>
+	<polygon fill="#E6E6E6" points="16.515,21.084 22.015,21.084 22.015,26.585 22.015,27.586 23.015,27.586 27.015,27.586 
+		28.016,27.586 28.016,26.585 28.016,21.084 33.515,21.084 34.516,21.084 34.516,20.083 34.516,16.083 34.516,15.082 33.515,15.082 
+		28.016,15.082 28.016,9.583 28.016,8.582 27.015,8.582 23.015,8.582 22.015,8.582 22.015,9.583 22.015,15.082 16.515,15.082 
+		15.515,15.082 15.515,16.083 15.515,20.082 15.515,21.084 	"/>
+	<path opacity="0.5" fill="#FFFFFF" d="M2.033,33.656C1.398,32.947,1.001,32.023,1.001,31V5c0-2.205,1.795-4,4-4h40
+		c1.15,0,2.182,0.496,2.912,1.276l0.708-0.708C47.711,0.606,46.43,0,45.001,0h-40c-2.762,0-5,2.238-5,5v26
+		c0,1.301,0.509,2.475,1.323,3.365L2.033,33.656z"/>
+	<path opacity="0.2" d="M50.001,31V5c0-1.333-0.529-2.536-1.379-3.433l-0.709,0.708c0.67,0.716,1.088,1.669,1.088,2.724v26
+		c0,2.205-1.795,4-4,4h-40c-1.182,0-2.235-0.525-2.968-1.344l-0.709,0.709C2.238,35.363,3.541,36,5.001,36h40
+		C47.763,36,50.001,33.762,50.001,31z"/>
+	<polygon opacity="0.3" points="22.034,27.578 22.056,27.578 23.058,26.576 23.034,26.576 23.034,20.093 22.034,21.094 
+		22.034,26.577 	"/>
+	<polygon fill="#FFFFFF" points="15.507,21.08 15.507,21.084 16.507,21.084 22.005,21.085 22.005,21.103 23.007,20.102 
+		23.007,20.085 16.507,20.084 16.507,20.08 	"/>
+	<polygon opacity="0.3" points="16.495,20.08 16.495,16.086 22.995,16.086 22.995,9.586 26.994,9.586 26.994,9.613 27.995,8.612 
+		27.995,8.584 26.993,8.584 22.995,8.584 21.993,8.584 21.993,9.585 21.993,15.084 16.495,15.084 15.495,15.084 15.495,16.085 
+		15.495,20.084 15.495,21.08 	"/>
+	<polygon fill="#FFFFFF" points="28.016,8.596 27.015,9.597 27.015,16.069 27.028,16.069 28.029,15.068 28.016,15.068 28.016,9.568 
+			"/>
+	<polygon fill="#FFFFFF" points="23.034,27.584 27.033,27.584 28.035,27.584 28.035,26.583 28.035,21.082 33.533,21.082 
+		34.535,21.082 34.535,20.081 34.535,16.082 34.535,15.088 33.534,16.088 33.534,20.082 27.034,20.082 27.034,26.582 23.058,26.582 
+		22.056,27.584 	"/>
+	<polygon opacity="0.3" points="33.524,16.091 34.525,15.09 34.525,15.084 33.523,15.084 28.039,15.084 27.038,16.085 
+		33.524,16.085 	"/>
+</g>
+</svg>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/gfx/qgn_menu_hswidget.svg	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="88" height="88" viewBox="0 0 88 88">
+<rect fill="none" height="88" width="88"/>
+<linearGradient id="SVGID_1" gradientUnits="userSpaceOnUse" x1="22.43" y1="2.92" x2="66.99" y2="90.66">
+<stop stop-color="#A2C2DD" offset="0.1"/>
+<stop stop-color="#6C83BB" offset="0.71"/>
+<stop stop-color="#003D6D" offset="0.99"/>
+</linearGradient>
+<path d="M63.987,81.355c-0.18,0-0.364-0.024-0.543-0.076l-19.092-5.262c-1.259-0.341-2.284-1.793-2.328-3.306 l-0.002-0.068l-3.806,1.339c-0.217,0.066-0.435,0.104-0.656,0.104c-0.18,0-0.362-0.024-0.541-0.072l-19.458-5.141 c-1.282-0.332-2.325-1.772-2.374-3.276L14.623,47.38c-0.034-1.117,0.516-2.05,1.403-2.376L24.09,42l0.016-0.006l0.078-0.027 c0.071-0.023,0.145-0.042,0.221-0.056l0.186-0.027l0.186-0.008c0.056,0,0.11,0.002,0.167,0.008l0.083,0.006l0.023,0.002l0.075,0.012 l0.026,0.004l0.133,0.026l18.117,4.305l7.348-2.809l0.018-0.01l0.08-0.027c0.071-0.021,0.144-0.041,0.22-0.058l0.178-0.027 l0.021-0.002l0.054-0.002l0.114-0.004c0.053,0,0.107,0.002,0.163,0.006l0.095,0.01l0.132,0.019l0.025,0.006l0.088,0.019 l19.093,4.656l0.174,0.049c0.016,0.002,0.064,0.021,0.114,0.041c0.007,0.003,0.051,0.019,0.091,0.037l0.012,0.007l0.069,0.031 l0.01,0.004l0.066,0.033l0.011,0.008l0.109,0.06l0.013,0.009l0.105,0.065l0.143,0.102c0.029,0.021,0.077,0.06,0.121,0.097 c0.016,0.011,0.059,0.05,0.103,0.089l0.067,0.064l0.008,0.008l0.063,0.064c0.035,0.032,0.069,0.069,0.102,0.106 c0.043,0.048,0.087,0.102,0.134,0.157c0.067,0.087,0.128,0.174,0.188,0.264c0.149,0.228,0.276,0.473,0.378,0.733 c0.036,0.093,0.068,0.186,0.098,0.28c0.022,0.064,0.043,0.141,0.062,0.223l0.037,0.157l0.028,0.161l0.023,0.165l0.001,0.019 l0.018,0.188v0.004l0.004,0.109l0.721,24.573v0.01v0.081v0.104l-0.009,0.167l-0.008,0.097l-0.003,0.026l-0.023,0.17l-0.001,0.01 l-0.015,0.072l-0.023,0.104c-0.002,0.021-0.016,0.074-0.032,0.128c-0.003,0.019-0.019,0.068-0.037,0.122l-0.041,0.113l-0.052,0.126 l-0.075,0.15c-0.038,0.072-0.069,0.124-0.101,0.173c-0.049,0.072-0.096,0.135-0.144,0.194c-0.229,0.274-0.504,0.471-0.82,0.586 l-8.078,2.896C64.424,81.318,64.207,81.355,63.987,81.355L63.987,81.355z M58.611,43.634c-0.601,0-1.218-0.075-1.832-0.217 c-5.321-1.234-9.814-7.423-10.013-13.797c-0.141-4.509,1.896-8.199,5.223-9.546l-0.002-0.002l2.504-1.065l3.104-1.345l0.01,0.022 l2.047-0.873c0.127-0.054,0.246-0.097,0.369-0.141c0.265-0.095,0.553-0.175,0.854-0.241c0.219-0.047,0.438-0.083,0.665-0.114 c0.206-0.022,0.403-0.039,0.604-0.047c0.098-0.004,0.201-0.006,0.308-0.006l0.239,0.004c0.174,0.002,0.352,0.012,0.53,0.033 c0.157,0.014,0.32,0.035,0.485,0.064l0.334,0.054l0.012,0.004l0.07,0.017l0.102,0.022c0.118,0.025,0.264,0.06,0.414,0.097 c0.188,0.056,0.323,0.097,0.461,0.14c0.15,0.048,0.3,0.104,0.454,0.163c0.139,0.054,0.286,0.114,0.434,0.18 c0.141,0.062,0.288,0.128,0.435,0.204c0.136,0.066,0.283,0.145,0.431,0.229c0.137,0.075,0.282,0.161,0.424,0.248 c0.156,0.097,0.306,0.194,0.452,0.297c0.155,0.107,0.314,0.219,0.466,0.338c0.149,0.111,0.311,0.242,0.467,0.372 c0.171,0.145,0.339,0.295,0.504,0.45c0.189,0.173,0.369,0.357,0.551,0.545c0.219,0.227,0.429,0.462,0.634,0.706 c0.295,0.357,0.571,0.72,0.822,1.083c0.672,0.966,1.243,2.026,1.701,3.151c0.167,0.409,0.317,0.821,0.446,1.228 c0.097,0.301,0.186,0.606,0.264,0.918c0.068,0.258,0.13,0.52,0.184,0.784c0.05,0.239,0.093,0.47,0.13,0.708 c0.034,0.212,0.065,0.429,0.089,0.642c0.026,0.198,0.048,0.407,0.064,0.617c0.015,0.196,0.026,0.392,0.036,0.588l0.003,0.093 l0.004,0.099c0.004,0.122,0.005,0.25,0.005,0.377c0.003,0.182-0.001,0.363-0.005,0.542c-0.008,0.188-0.017,0.365-0.028,0.539 c-0.013,0.171-0.027,0.349-0.047,0.52c-0.018,0.167-0.039,0.339-0.063,0.506c-0.026,0.173-0.055,0.34-0.086,0.505 c-0.031,0.167-0.066,0.336-0.105,0.503c-0.041,0.18-0.085,0.349-0.134,0.516c-0.047,0.169-0.098,0.336-0.153,0.501 c-0.063,0.186-0.127,0.365-0.195,0.539c-0.074,0.188-0.151,0.372-0.233,0.549c-0.094,0.202-0.19,0.394-0.293,0.58 c-0.12,0.221-0.246,0.429-0.382,0.633c-0.169,0.262-0.359,0.52-0.56,0.757c-0.825,0.995-1.824,1.725-2.967,2.169l-7.654,3.1 C60.378,43.473,59.507,43.634,58.611,43.634L58.611,43.634z M34.343,41.839l-0.335-0.295l-6.913-6.135l-6.556,2.821l-1.133,0.487 l0.135-1.226l1.031-9.319l-5.811-8.063l-0.534-0.743l0.843-0.343l8.076-3.258l0.141-0.06l0.153,0.006l0.738,0.025l1.7-4.282 l0.11-0.281l0.276-0.122l8.075-3.37l0.681-0.285l0.265,0.689l3.722,9.641l7.714,3.151l0.97,0.396l-0.719,0.762l-5.304,5.608 l1.602,10.104l0.091,0.569l-0.539,0.21l-8.031,3.135c-0.025,0.01-0.052,0.022-0.08,0.031L34.343,41.839L34.343,41.839z" fill="url(#SVGID_1)"/>
+<linearGradient id="SVGID_2" gradientUnits="userSpaceOnUse" x1="30.21" y1="45.14" x2="40.63" y2="66.61">
+<stop stop-color="#43910A" offset="0"/>
+<stop stop-color="#17594C" offset="1"/>
+</linearGradient>
+<path d="M46.985,68.733l-0.567-18.834c-0.001-0.011-0.001-0.023-0.001-0.035 c-0.002-0.037-0.005-0.072-0.008-0.109c-0.002-0.037-0.007-0.076-0.011-0.114c-0.005-0.039-0.011-0.08-0.017-0.119 c-0.008-0.043-0.016-0.087-0.024-0.132c-0.01-0.048-0.022-0.098-0.035-0.145c-0.013-0.06-0.03-0.116-0.048-0.174 c-0.025-0.078-0.053-0.154-0.083-0.229c-0.086-0.213-0.191-0.415-0.315-0.599c-0.049-0.072-0.1-0.141-0.151-0.204 c-0.039-0.048-0.077-0.093-0.117-0.137c-0.033-0.035-0.066-0.07-0.102-0.104c-0.031-0.029-0.063-0.059-0.093-0.085 c-0.029-0.024-0.059-0.052-0.087-0.074c-0.027-0.022-0.056-0.044-0.085-0.064c-0.025-0.021-0.054-0.039-0.08-0.058 c-0.026-0.017-0.052-0.033-0.08-0.05c-0.025-0.017-0.053-0.03-0.078-0.043c-0.026-0.017-0.053-0.029-0.078-0.041 c-0.026-0.013-0.052-0.025-0.08-0.037c-0.026-0.011-0.052-0.021-0.079-0.031c-0.026-0.011-0.054-0.019-0.081-0.026 c-0.028-0.009-0.055-0.017-0.083-0.025c-0.008-0.002-0.016-0.004-0.024-0.006l-19.464-4.625c-0.021-0.004-0.042-0.008-0.063-0.012 c-0.029-0.006-0.059-0.011-0.087-0.015c-0.031-0.004-0.063-0.006-0.093-0.01c-0.033,0-0.065-0.002-0.098-0.002 c-0.035,0-0.07,0.002-0.103,0.004c-0.041,0.004-0.08,0.008-0.119,0.017c-0.051,0.008-0.101,0.021-0.15,0.037 c-0.021,0.006-0.042,0.012-0.063,0.021l-8.076,2.997c0.021-0.007,21.914,27.567,21.714,27.637l8.076-2.843 c0.2-0.072,0.375-0.196,0.52-0.365c0.035-0.042,0.068-0.085,0.1-0.133c0.024-0.035,0.047-0.072,0.067-0.109 c0.019-0.035,0.036-0.065,0.053-0.103c0.016-0.031,0.029-0.064,0.043-0.098c0.012-0.03,0.024-0.063,0.034-0.097 c0.011-0.031,0.021-0.06,0.029-0.091c0.008-0.029,0.017-0.062,0.023-0.093c0.008-0.029,0.014-0.06,0.02-0.091 c0.007-0.031,0.011-0.062,0.016-0.093c0.006-0.031,0.009-0.063,0.012-0.093c0.004-0.031,0.007-0.064,0.009-0.098 c0.001-0.03,0.004-0.062,0.006-0.097c0-0.033,0.001-0.065,0.001-0.101C46.986,68.78,46.985,68.758,46.985,68.733z" fill="url(#SVGID_2)"/>
+<linearGradient id="SVGID_3" gradientUnits="userSpaceOnUse" x1="12.64" y1="42.63" x2="43.4" y2="77.87">
+<stop stop-color="#DCE8E4" offset="0"/>
+<stop stop-color="#43910A" offset="1"/>
+</linearGradient>
+<path d="M36.509,50.295c0.978,0.239,1.801,1.416,1.838,2.625l0.566,18.676 c0.037,1.215-0.726,1.989-1.704,1.725L17.746,68.18c-0.979-0.253-1.801-1.421-1.839-2.605L15.34,47.356 c-0.037-1.18,0.725-1.952,1.704-1.723L36.509,50.295z" fill="url(#SVGID_3)"/>
+<linearGradient id="SVGID_4" gradientUnits="userSpaceOnUse" x1="56.73" y1="46.62" x2="69.4" y2="74.83">
+<stop stop-color="#BBE0FF" offset="0"/>
+<stop stop-color="#A2C2DD" offset="0.35"/>
+<stop stop-color="#6C83BB" offset="0.7"/>
+<stop stop-color="#003D6D" offset="1"/>
+</linearGradient>
+<path d="M73.378,75.945L72.66,51.374c-0.001-0.012-0.002-0.024-0.002-0.034 c-0.003-0.037-0.005-0.075-0.007-0.112c-0.004-0.037-0.006-0.076-0.012-0.115c-0.005-0.039-0.01-0.08-0.016-0.119 c-0.008-0.044-0.016-0.089-0.024-0.133c-0.01-0.049-0.021-0.099-0.032-0.146c-0.015-0.06-0.031-0.117-0.049-0.175 c-0.023-0.076-0.052-0.155-0.081-0.231c-0.083-0.215-0.188-0.415-0.31-0.601c-0.048-0.072-0.098-0.143-0.149-0.208 c-0.037-0.048-0.074-0.091-0.113-0.135c-0.033-0.037-0.065-0.072-0.101-0.107c-0.029-0.028-0.061-0.058-0.09-0.086 c-0.028-0.025-0.057-0.05-0.086-0.072c-0.026-0.022-0.054-0.046-0.081-0.064c-0.027-0.021-0.053-0.041-0.081-0.06 c-0.025-0.017-0.052-0.033-0.077-0.05c-0.026-0.015-0.052-0.03-0.077-0.045c-0.026-0.015-0.051-0.027-0.078-0.042 c-0.024-0.01-0.05-0.024-0.076-0.034c-0.025-0.013-0.052-0.023-0.078-0.033c-0.025-0.011-0.052-0.019-0.078-0.027 c-0.027-0.008-0.055-0.017-0.082-0.024c-0.007,0-0.016-0.004-0.023-0.004l-19.092-4.654c-0.021-0.006-0.042-0.01-0.063-0.014 c-0.028-0.006-0.058-0.01-0.085-0.015c-0.03-0.004-0.062-0.006-0.091-0.008c-0.032-0.002-0.064-0.004-0.097-0.004 c-0.033,0-0.067,0.002-0.102,0.004c-0.038,0.004-0.078,0.01-0.115,0.017c-0.05,0.01-0.099,0.023-0.146,0.037 c-0.022,0.006-0.042,0.015-0.062,0.023l-8.076,3.089c0.02-0.01,21.658,33.316,21.463,33.387l8.075-2.894 c0.196-0.072,0.368-0.196,0.51-0.365c0.034-0.041,0.067-0.087,0.098-0.132c0.023-0.037,0.046-0.074,0.066-0.111 c0.019-0.035,0.035-0.068,0.052-0.104c0.015-0.033,0.027-0.063,0.041-0.099c0.013-0.031,0.023-0.063,0.035-0.095 c0.01-0.031,0.019-0.063,0.027-0.094c0.008-0.03,0.016-0.062,0.024-0.093c0.006-0.03,0.013-0.062,0.019-0.093 c0.005-0.028,0.01-0.06,0.015-0.093c0.005-0.03,0.008-0.062,0.012-0.095c0.005-0.031,0.007-0.062,0.009-0.095 s0.004-0.064,0.004-0.097c0.002-0.035,0.002-0.068,0.002-0.104C73.38,75.99,73.38,75.968,73.378,75.945z" fill="url(#SVGID_4)"/>
+<linearGradient id="SVGID_5" gradientUnits="userSpaceOnUse" x1="40.88" y1="44.88" x2="68.29" y2="84.97">
+<stop stop-color="#FFFFFF" offset="0.15"/>
+<stop stop-color="#A2C2DD" offset="1"/>
+</linearGradient>
+<path d="M62.786,51.841c0.959,0.241,1.766,1.426,1.802,2.646l0.721,24.368 c0.036,1.227-0.712,2.002-1.672,1.733l-19.093-5.26c-0.959-0.262-1.766-1.442-1.802-2.639l-0.72-23.798 c-0.036-1.19,0.711-1.973,1.671-1.739L62.786,51.841z" fill="url(#SVGID_5)"/>
+<linearGradient id="SVGID_6" gradientUnits="userSpaceOnUse" x1="15.34" y1="18.21" x2="25.43" y2="18.21">
+<stop stop-color="#E6EEF4" offset="0"/>
+<stop stop-color="#2F8E9A" offset="0.44"/>
+<stop stop-color="#003D6D" offset="0.94"/>
+</linearGradient>
+<polygon fill="url(#SVGID_6)" points="25.43,16.5 23.414,16.43 15.339,19.69 23.255,19.994 24.069,19.664 "/>
+<linearGradient id="SVGID_7" gradientUnits="userSpaceOnUse" x1="29.92" y1="9.81" x2="35.32" y2="20.62">
+<stop stop-color="#E6EEF4" offset="0"/>
+<stop stop-color="#2F8E9A" offset="0.44"/>
+<stop stop-color="#003D6D" offset="0.94"/>
+</linearGradient>
+<path d="M38.449,18.279l-3.833-9.932l-8.075,3.368l3.833,9.862C33.074,20.479,35.749,19.387,38.449,18.279z" fill="url(#SVGID_7)"/>
+<linearGradient id="SVGID_8" gradientUnits="userSpaceOnUse" x1="42.72" y1="24.82" x2="34.38" y2="18.51">
+<stop stop-color="#E6EEF4" offset="0"/>
+<stop stop-color="#2F8E9A" offset="0.44"/>
+<stop stop-color="#003D6D" offset="0.94"/>
+</linearGradient>
+<path d="M46.449,21.543l-8-3.264l-8.075,3.297l8,3.269C38.396,24.823,44.091,22.563,46.449,21.543z" fill="url(#SVGID_8)"/>
+<linearGradient id="SVGID_9" gradientUnits="userSpaceOnUse" x1="42.18" y1="23.58" x2="28.57" y2="37.19">
+<stop stop-color="#E6EEF4" offset="0"/>
+<stop stop-color="#2F8E9A" offset="0.44"/>
+<stop stop-color="#003D6D" offset="0.94"/>
+</linearGradient>
+<polygon fill="url(#SVGID_9)" points="40.904,27.41 46.449,21.543 38.375,24.845 32.829,30.642 "/>
+<linearGradient id="SVGID_10" gradientUnits="userSpaceOnUse" x1="39.13" y1="39.57" x2="35.59" y2="26.33">
+<stop stop-color="#E6EEF4" offset="0"/>
+<stop stop-color="#2F8E9A" offset="0.44"/>
+<stop stop-color="#003D6D" offset="0.94"/>
+</linearGradient>
+<path d="M32.829,30.642l1.658,10.369l8.075-3.149L40.904,27.41C40.904,27.41,32.862,30.627,32.829,30.642z" fill="url(#SVGID_10)"/>
+<linearGradient id="SVGID_11" gradientUnits="userSpaceOnUse" x1="18.97" y1="15.63" x2="37.23" y2="43.12">
+<stop stop-color="#D6E6EC" offset="0"/>
+<stop stop-color="#298595" offset="1"/>
+</linearGradient>
+<polygon fill="url(#SVGID_11)" points="26.546,11.715 30.379,21.577 38.379,24.845 32.833,30.642 34.491,41.011 27.23,34.569 20.255,37.571 21.316,27.978 15.343,19.69 23.259,19.994 "/>
+<linearGradient id="SVGID_12" gradientUnits="userSpaceOnUse" x1="52.27" y1="29.75" x2="73.38" y2="29.75">
+<stop stop-color="#E6EEF4" offset="0"/>
+<stop stop-color="#9646AC" offset="0.44"/>
+<stop stop-color="#3D013F" offset="0.94"/>
+</linearGradient>
+<path d="M73.374,30.359c-0.002-0.06-0.004-0.122-0.007-0.182c-0.008-0.188-0.021-0.375-0.034-0.562 c-0.017-0.198-0.036-0.394-0.061-0.59c-0.024-0.205-0.054-0.409-0.085-0.613c-0.036-0.225-0.079-0.45-0.124-0.672 c-0.053-0.254-0.11-0.504-0.176-0.751c-0.075-0.297-0.16-0.592-0.254-0.883c-0.127-0.396-0.269-0.789-0.426-1.172l0,0 c-0.438-1.077-0.986-2.092-1.627-3.015c-0.249-0.357-0.511-0.702-0.783-1.028c-0.194-0.231-0.395-0.456-0.6-0.671 c-0.17-0.177-0.344-0.351-0.523-0.518c-0.156-0.145-0.317-0.289-0.478-0.425c-0.146-0.122-0.296-0.241-0.444-0.353 c-0.141-0.109-0.287-0.214-0.433-0.313c-0.137-0.095-0.275-0.188-0.42-0.274c-0.132-0.083-0.269-0.165-0.404-0.239 c-0.133-0.077-0.269-0.146-0.404-0.215c-0.134-0.068-0.267-0.13-0.402-0.188c-0.134-0.06-0.269-0.116-0.402-0.167 c-0.137-0.054-0.272-0.101-0.408-0.146c-0.139-0.043-0.275-0.084-0.415-0.126c-0.143-0.037-0.283-0.07-0.426-0.101 c-0.04-0.01-0.081-0.016-0.122-0.029c-0.105-0.019-0.215-0.035-0.32-0.054c-0.149-0.022-0.299-0.043-0.449-0.058 c-0.16-0.017-0.317-0.027-0.477-0.029c-0.167-0.006-0.334-0.006-0.501,0.002c-0.18,0.006-0.361,0.021-0.534,0.042 c-0.208,0.027-0.409,0.062-0.606,0.101c-0.261,0.058-0.521,0.13-0.769,0.219l-0.006,0.002c-0.108,0.037-0.216,0.078-0.322,0.122 l-7.664,3.263c0.107-0.045,0.217-0.087,0.326-0.122l5.287-2.292l-5.287,2.292c0.253-0.084,0.508-0.157,0.77-0.214 c0.201-0.042,0.401-0.074,0.605-0.099c0.178-0.019,7.981,21.822,6.952,22.212l7.663-3.104c1.03-0.398,1.936-1.067,2.678-1.958 c0.181-0.217,0.352-0.45,0.513-0.696c0.123-0.186,0.239-0.379,0.349-0.582c0.096-0.171,0.185-0.351,0.271-0.533 c0.076-0.167,0.149-0.338,0.218-0.512c0.065-0.163,0.125-0.33,0.183-0.501c0.052-0.155,0.099-0.312,0.145-0.472 c0.044-0.159,0.086-0.32,0.124-0.481c0.036-0.155,0.069-0.314,0.1-0.475c0.03-0.157,0.056-0.316,0.08-0.479 c0.024-0.157,0.044-0.32,0.062-0.48c0.018-0.163,0.032-0.326,0.043-0.493c0.013-0.165,0.021-0.334,0.025-0.501 c0.006-0.173,0.008-0.349,0.008-0.526C73.379,30.601,73.378,30.481,73.374,30.359z" fill="url(#SVGID_12)"/>
+<linearGradient id="SVGID_13" gradientUnits="userSpaceOnUse" x1="47.62" y1="18.01" x2="65.31" y2="44.62">
+<stop stop-color="#DEDEED" offset="0"/>
+<stop stop-color="#9646AC" offset="1"/>
+</linearGradient>
+<path d="M56.257,20.407c5.032,1.021,9.268,6.917,9.457,13.153c0.188,6.243-3.738,10.339-8.771,9.16 c-5.035-1.168-9.27-7.037-9.46-13.122C47.294,23.521,51.222,19.399,56.257,20.407z" fill="url(#SVGID_13)"/>
+</svg>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/gfx/qgn_menu_ovistore.svg	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="88" height="88" viewBox="0 0 88 88">
+<rect fill="none" height="88" width="88"/>
+<path d="M72.788,26.819c-0.062-0.962-0.861-1.714-1.828-1.714h-9.374l-3.919-7.69 c-0.059-0.172-0.094-0.207-0.19-0.452c-0.791-1.796-4.45-7.967-13.053-8.264c-0.083-0.013-0.182-0.022-0.299-0.024 c-0.05,0-0.091,0.001-0.125,0.005c-0.034-0.003-0.075-0.005-0.123-0.005c-0.124,0.001-0.227,0.013-0.313,0.026 c-4.807,0.133-8.208,2.236-10.261,4.326c-1.041,1.052-1.768,2.094-2.241,2.909c-0.238,0.407-0.417,0.755-0.536,1.027 c-0.099,0.24-0.134,0.28-0.191,0.448l-3.925,7.694h-9.372c-0.965,0-1.76,0.748-1.825,1.714l-3.253,50.56 c-0.034,0.496,0.147,1.002,0.49,1.369c0.344,0.366,0.834,0.577,1.336,0.577h60.432c0.507,0,0.984-0.209,1.332-0.577 c0.351-0.371,0.525-0.864,0.493-1.369L72.788,26.819z M34.615,25.105l2.443-4.796l0.067-0.155c0.042-0.09-0.003,0.007,0.061-0.129 c0.463-0.789,1.906-3.92,6.833-4.011c4.887,0.09,6.328,3.222,6.819,4.065c0.016,0.037,0.016,0.033,0.016,0.033 c0-0.004,0-0.008,0.02,0.041l0.068,0.155l2.439,4.796H34.615z" fill-opacity="0.2" />
+<path d="M70.959,26.939H60.468l-4.505-8.836c-0.036-0.209-2.893-7.362-11.749-7.577 c-0.031-0.001-0.058-0.018-0.09-0.018c-0.043,0-0.082,0.007-0.125,0.007c-0.042,0-0.082-0.007-0.125-0.007 c-0.032,0-0.057,0.016-0.089,0.018c-8.856,0.214-11.71,7.367-11.75,7.577l-4.503,8.836H17.04l-3.254,50.558h60.429L70.959,26.939z M35.426,19.479c0.036-0.087,0.043-0.105,0.104-0.236c0.49-0.956,2.593-4.998,8.469-5.059c5.878,0.062,7.979,4.103,8.469,5.059 c0.063,0.131,0.071,0.149,0.104,0.236l3.799,7.459H31.63L35.426,19.479z" fill-opacity="0.5" />
+<linearGradient id="SVGID_1" gradientUnits="userSpaceOnUse" x1="44" y1="22.03" x2="44" y2="75.13">
+<stop stop-color="#36A1DB" offset="0"/>
+<stop stop-color="#329CD8" offset="0.25"/>
+<stop stop-color="#258FCE" offset="0.53"/>
+<stop stop-color="#1179BE" offset="0.81"/>
+<stop stop-color="#0067B0" offset="1"/>
+</linearGradient>
+<polygon fill="url(#SVGID_1)" points="17.04,25.108 13.786,75.665 74.214,75.665 70.959,25.108 "/>
+<polygon fill="#FFFFFF" fill-opacity="0.15" points="71.803,34.501 71.2,25.108 17.278,25.108 14.987,60.72 " />
+<polygon fill="#FFFFFF" fill-opacity="0.3" points="15.745,73.831 18.763,26.937 69.246,26.937 69.25,26.953 70.881,25.108 17.046,25.108 13.792,75.665 13.825,75.665 " />
+<circle cx="25.24" cy="33.628" fill="#333333" r="2.67"/>
+<path d="M65.45,33.628c0,1.476-1.194,2.67-2.668,2.67c-1.478,0-2.672-1.194-2.672-2.67 c0-1.475,1.194-2.669,2.672-2.669C64.255,30.959,65.45,32.154,65.45,33.628z" fill="#333333"/>
+<path d="M32.783,63.008c-5.651,0-7.593-3.881-7.593-8.81c0-4.871,2.636-8.291,7.65-8.291 c5.19,0,7.565,3.449,7.565,8.406C40.405,59.503,37.998,63.008,32.783,63.008z M32.783,48.577c-2.579,0-2.782,3.128-2.782,5.537 c0,2.46,0.118,6.229,2.782,6.229s2.812-3.363,2.812-6.229C35.595,51.877,35.248,48.577,32.783,48.577z M39.396,46.139h4.843 l2.958,12.441l3.129-12.441h4.089l-4.374,14.377c-0.486,1.48-1.206,2.492-3.24,2.492c-2.035,0-2.79-1.012-3.24-2.492L39.396,46.139z M58.641,44.398c-1.479,0-2.55-0.754-2.55-2.146c0-1.392,1.041-2.146,2.55-2.146c1.421,0,2.547,0.783,2.547,2.146 C61.188,43.644,60.119,44.398,58.641,44.398z M56.295,60.883c0,0.419,0,1.198,0.654,1.663c0.343,0.24,0.884,0.462,1.648,0.462 c0.795,0,1.313-0.218,1.66-0.462c0.654-0.465,0.654-1.244,0.654-1.663V46.139h-4.57c0,0-0.161,0.006-0.312,0.006 c-0.446,0-0.813,0.01-1.069,0.357c-0.121,0.162-0.286,0.455-0.286,0.974c0,0.547,0.165,0.814,0.286,0.977 c0.257,0.347,0.623,0.35,1.069,0.35c0.15,0,0.265,0,0.265,0V60.883z" fill="#FFFFFF"/>
+<linearGradient id="SVGID_2" gradientUnits="userSpaceOnUse" x1="44" y1="14.09" x2="44" y2="62.39">
+<stop stop-color="#FFFFFF" offset="0"/>
+<stop stop-color="#B2B2C9" offset="1"/>
+</linearGradient>
+<path d="M64.475,32.969l-8.512-16.698c-0.036-0.209-2.893-7.362-11.749-7.577 c-0.031-0.001-0.058-0.018-0.09-0.018c-0.043,0-0.082,0.008-0.125,0.008c-0.042,0-0.082-0.008-0.125-0.008 c-0.032,0-0.057,0.017-0.089,0.018c-8.856,0.215-11.71,7.368-11.75,7.577l-8.51,16.698c-0.406,0.924,0.016,2.004,0.946,2.411 c0.239,0.104,0.488,0.153,0.733,0.153c0.705,0,1.377-0.409,1.677-1.096l8.544-16.788c0.036-0.088,0.043-0.106,0.104-0.236 c0.49-0.957,2.593-4.999,8.469-5.059c5.878,0.061,7.979,4.103,8.469,5.059c0.063,0.13,0.071,0.148,0.104,0.236l8.545,16.788 c0.302,0.688,0.973,1.096,1.676,1.096c0.247,0,0.496-0.05,0.735-0.153C64.459,34.974,64.878,33.894,64.475,32.969z" fill="url(#SVGID_2)"/>
+</svg>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/group/bld.inf	Thu Jan 07 12:39:41 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:
+* Widget manager build information
+*
+*/
+
+PRJ_PLATFORMS
+DEFAULT
+
+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)
+
+../sis/widgetmanager_stub.sis          /epoc32/data/z/system/install/widgetmanager_stub.sis
+
+// cenrep  
+../conf/widgetmanager.confml          APP_LAYER_CONFML(widgetmanager.confml)
+../conf/widgetmanager_20026F53.crml   APP_LAYER_CRML(widgetmanager_20026F53.crml)
+
+PRJ_EXTENSIONS
+START EXTENSION s60/mifconv
+OPTION TARGETFILE widgetmanager.mif
+OPTION HEADERFILE widgetmanager.mbg
+OPTION SOURCEDIR ../gfx
+OPTION SOURCEFILE wmicons.txt
+END
+
+PRJ_MMPFILES
+
+widgetmanager.mmp
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/group/widgetmanager.mmp	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,115 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies)..
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* Widget manager project definition file
+*
+*/
+
+#include <data_caging_paths.hrh>
+#include <platform_paths.hrh>
+
+TARGET widgetmanager.dll
+TARGETTYPE PLUGIN
+
+// ECom Dll recognition UID followed by the unique UID for this dll
+UID 0x10009D8D 0x20026F53
+
+VENDORID    VID_DEFAULT
+SECUREID    0x20026F53
+
+// SIS installation + IAD support
+VERSION 1.0
+paged
+
+CAPABILITY CAP_ECOM_PLUGIN
+
+SOURCEPATH      ../src
+SOURCE  wmpluginproxy.cpp
+SOURCE  wmplugin.cpp
+SOURCE  wmresourceloader.cpp
+SOURCE  wmmaincontainer.cpp
+SOURCE  wmmaincontainerview.cpp
+SOURCE  wmwidgetdata.cpp
+SOURCE  wmlistbox.cpp
+SOURCE  wmimageconverter.cpp
+SOURCE  wmpersistentwidgetorder.cpp
+SOURCE  wmeffectmanager.cpp
+SOURCE  wmdetailsdlg.cpp
+SOURCE	wmportalbutton.cpp
+SOURCE  wmwidgetloaderao.cpp
+
+SOURCEPATH		../data
+START RESOURCE  20026F53.rss
+TARGETPATH		ECOM_RESOURCE_DIR
+TARGET          widgetmanager.rsc
+END //RESOURCE
+
+SOURCEPATH		../data
+START RESOURCE	widgetmanagerview.rss
+HEADER
+TARGETPATH      RESOURCE_FILES_DIR
+LANGUAGE_IDS
+END //RESOURCE
+
+USERINCLUDE .
+USERINCLUDE ../inc
+USERINCLUDE ../data
+
+APP_LAYER_SYSTEMINCLUDE
+SYSTEMINCLUDE   /epoc32/include/ecom
+
+
+LIBRARY	    euser.lib
+LIBRARY     cone.lib
+LIBRARY     avkon.lib
+LIBRARY     eikcore.lib
+LIBRARY     estor.lib
+LIBRARY     eikcoctl.lib
+LIBRARY     eikctl.lib
+LIBRARY     eikdlg.lib
+
+LIBRARY     efsrv.lib // RFs
+LIBRARY     bafl.lib // BaflUtils
+LIBRARY     apgrfx.lib // RApaLsSession
+LIBRARY     commonengine.lib // StringLoader
+
+LIBRARY     aknicon.lib // AknIconUtility
+LIBRARY     imageconversion.lib // CImageDecoder
+LIBRARY     bitmaptransforms.lib // CBitmapScaler
+LIBRARY     fbscli.lib // CFbsBitmap
+LIBRARY     bitgdi.lib // CFbsBitmapDevice
+LIBRARY     gdi.lib // CFont
+LIBRARY     egul.lib // TextUtils
+LIBRARY     ecom.lib // ECom fw
+LIBRARY     aknskins.lib // AknsDrawUtils
+LIBRARY     aknskinsrv.lib // AknsDrawUtils
+LIBRARY     aknswallpaperutils.lib // AknsDrawUtils
+LIBRARY     hscontentcontrol.lib // CHsContentControlUi
+LIBRARY     apparc.lib // CApaCommandLine
+LIBRARY     aknlayout.lib // avkon layout
+LIBRARY     aknlayout2scalable.lib // scalable avkon layout
+LIBRARY     swinstcli.lib // widget uninstall
+LIBRARY     hscontentinfo.lib // CHsContentInfo
+LIBRARY     platformenv.lib  // DriveInfo::GetDefaultDrive
+LIBRARY	    svgengine.lib // CSvgEngineInterfaceImpl
+LIBRARY     gfxtrans.lib // effect manager
+LIBRARY     ws32.lib //WindowSession
+LIBRARY     widgetregistryclient.lib // WidgetRegistryClient
+LIBRARY     hlplch.lib // HlpLauncher
+LIBRARY     sysutil.lib //  diskspace
+LIBRARY     featmgr.lib // FeatureManager
+LIBRARY     etext.lib 
+LIBRARY     centralrepository.lib
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/group/wmicons.txt	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,3 @@
+-c32,8 qgn_menu_hswidget
+-c32,8 add_widget_button
+-c32,8 qgn_menu_ovistore.svg
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/inc/widgetmanager.hrh	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,44 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies)..
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* Declares resource ids for widgetmanager application.
+*
+*/
+
+
+/** WidgetManger viev uid */
+enum TWidgetManagerViewUids
+	{
+	EWmMainContainerViewId = 0x20026F53
+	};
+
+/** MainContainer View Commands */
+enum TWmMainContainerViewCommands
+    {
+    EWmMainContainerViewAddMenuItemCommand = 0x6000,
+    EWmMainContainerViewLaunchMenuItemCommand,
+    EWmMainContainerViewSearchMenuItemCommand,
+    EWmMainContainerViewSortAlphaMenuItemCommand,
+    EWmMainContainerViewUninstallMenuItemCommand,
+    EWmMainContainerViewHelpMenuItemCommand,
+    EWmMainContainerViewOpenPortalMenuItemCommand,
+    EWmMainContainerViewBackMenuItemCommand,
+    EWmMainContainerViewWiddetDetailsMenuItemCommand
+    };
+
+enum TWmMenuCmdIDs
+    {
+    ECbaAddToHs = 1
+    };
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/inc/wmcommon.h	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,45 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies)..
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+
+#ifndef WMCOMMON_H
+#define WMCOMMON_H
+
+//includes
+#include <e32base.h>
+
+// widgetmanager UID
+const TUid KUidWidgetManager = { 0x200255FF };
+
+// HsContentInfo types
+_LIT8( KContentWidget, "widget" );
+_LIT8( KContentTemplate, "template" );
+
+// UI related const
+const TInt KWidgetHeight = 90;
+
+// UI component ID's
+enum TWmUiControlIds
+    {
+    EOviPortal = 0x1,
+    ELastPortal,
+    EWidgetsList,
+    EFindBox,
+    EMaximumWidgets = 0xC8
+    };
+
+#endif //WMCOMMON_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/inc/wmcrkeys.h	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,67 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies)..
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies 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 __WMCRKEYS_H__
+#define __WMCRKEYS_H__
+
+// 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 KOviStoreBrowserUrlOffset = 1;
+const TUint32 OperatorUrlOffset = 2;
+const TUint32 KperatorButtonTextOffset = 3;
+
+/**
+ * Key to first language id  
+ */
+const TUint32 KLangId0 = 0x1;
+
+/**
+ * Key to last language id  
+ */
+const TUint32 KLangId9 = 0x25;
+
+/**
+ * Key to Ovi Store Client param  
+ */
+const TUint32 KOviStoreClientParam = 0x29;
+
+/**
+ * Key to Operator button icon
+ */
+const TUint32 KOperatorButtonIcon = 0x2A;
+
+/**
+ * Key to Ovi Store client BunbleId
+ */
+const TUint32 KOviStoreBunbleId = 0x2B;
+
+#endif // __WMCRKEYS_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/inc/wmdetailsdlg.h	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,147 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies)..
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* Declares widget details dialog for WidgetManager
+*
+*/
+
+#ifndef ___WMDETAILSDLG_H__
+#define ___WMDETAILSDLG_H__
+
+// INCLUDES
+#include <e32base.h>
+#include <AknDialog.h>
+
+// FORWARD DECLARATIONS
+class CEikRichTextEditor;
+class CAknsBasicBackgroundControlContext;
+
+// CLASS DECLARATIONS
+/**
+ * CWmDetailsDlg
+ */
+NONSHARABLE_CLASS( CWmDetailsDlg ): public CAknDialog
+	{
+public:
+    
+    /**
+     * Two-phased constructor.
+     */
+	static CWmDetailsDlg* NewL(
+	        const TDesC& aName,
+	        const TDesC& aDescription,
+	        TBool  aCanBeAdded,
+            const CFbsBitmap* aLogoBmp,
+            const CFbsBitmap* aLogoMask,
+            CAknsBasicBackgroundControlContext* aBgContext );
+
+    /** Destructor. */
+    ~CWmDetailsDlg();
+
+public: // New functions
+    /** From CAknDialog Initializes the dialog and calls
+        CAknDialog's ExecuteLD() */
+    TInt ExecuteLD();
+
+private: // Functions from base classes
+
+	
+	/** From CEikDialog Initializes dialog before layout*/
+	void PreLayoutDynInitL();
+	
+	/** From CEikDialog Handles button events and looks 
+		if the dialog can be closed */
+	TBool OkToExitL(TInt aButtonId);
+	
+	/** From CCoeControl Handles key events */
+	TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent,TEventCode aType );
+
+	/** From CEikDialog Called by framework when dialog is activated */
+	void ActivateL();
+
+	/** From CAknDialog called to provide access to the contorols */	
+	TTypeUid::Ptr MopSupplyObject( TTypeUid aId );
+	
+	/** From CAknDialog */
+    void SetSizeAndPosition( const TSize& aSize );
+
+	/** From CCoeControl */
+	void SizeChanged();
+    
+    /** From CCoeControl */
+    TInt CountComponentControls() const;
+    CCoeControl* ComponentControl(TInt aIndex) const;
+    void Draw( const TRect& aRect ) const;
+    
+    /** Desired rect for dialog */
+    TRect WmDetailsDialogRect();
+
+    /** Insert and format content */
+    void InsertAndFormatContentL();
+    
+private:
+
+  	 /** Constructor for performing 1st stage construction */
+    CWmDetailsDlg( TBool  aCanBeAdded );
+
+    /** 2nd phase constructor */
+    void ConstructL(
+	        const TDesC& aName,
+	        const TDesC& aDescription,
+            const CFbsBitmap* aLogoBmp,
+            const CFbsBitmap* aLogoMask,
+            CAknsBasicBackgroundControlContext* aBgContext );
+
+private:
+	
+	/**
+     * Background context (not owned)
+     */
+	CAknsBasicBackgroundControlContext* iBgContext;
+	
+	/**
+     * Richtext editor
+     */
+	CEikRichTextEditor* iRtEditor;
+
+	/** 
+     * Name of widget 
+     */
+    HBufC*              iName;
+
+	/** 
+     * Description of widget 
+     */
+    HBufC*              iDescription;
+
+	/** 
+     * Logo image
+     */
+    CFbsBitmap*         iLogoBmp;
+
+	/** 
+     * Logo mask
+     */
+    CFbsBitmap*         iLogoMask;
+
+    /** 
+     * ETrue if widget can be added to HS 
+     */
+    TBool               iCanBeAdded;
+    
+	};
+
+#endif ___WMDETAILSDLG_H__
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/inc/wmeffectmanager.h	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,111 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies)..
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* CImageConverter declaration
+*
+*/
+
+#ifndef WMEFFECTMANAGER_H
+#define WMEFFECTMANAGER_H
+
+//  INCLUDES
+#include <e32base.h>
+
+class CCoeEnv;
+// CONSTANTS
+// Effects
+const TInt KAppStartCommonDefaultStyle = 3;
+const TInt KAppExitCommonDefaultStyle = 5;
+
+/**
+ *  Struct which holds needed info of effect.
+ */
+NONSHARABLE_STRUCT( TWmEffect )
+    {
+    TInt iState;
+    TInt iType;
+    TInt iId;
+    };
+
+/**
+ *  Effect manager.
+ *  Handles starting and ending effects.
+ *
+ *  @since S60 v5.0
+ */
+NONSHARABLE_CLASS( CWmEffectManager ) : public CBase
+    {
+public:
+    /**
+     * Two-phased constructor.
+     * @return new instance of CWmEffectManager.
+     */
+    static CWmEffectManager* NewL( CCoeEnv& aCoeEnv );
+
+    /**
+     * Destructor.
+     */
+    ~CWmEffectManager();
+    
+public:
+    /**
+     * Begin handling of fullscreen effect.
+     * @param aId effect id
+     */
+    void BeginFullscreenEffectL( TInt aId );
+    
+    /**
+     * When UiRendered is called effect is ended and will be drawn
+     */
+    void UiRendered();
+    
+private:    
+    /**
+     * C++ default constructor.
+     */
+    CWmEffectManager( CCoeEnv& aCoeEnv );
+
+    /**
+     * By default Symbian 2nd phase constructor is private.
+     */
+    void ConstructL();
+    
+private:
+    /**
+     * Starts fullscreen effect.
+     * @param aEffect effect data
+     */
+    void DoBeginFullscreenEffect( TWmEffect& aEffect );
+    
+    /**
+     * Removes and destroys effect from effect list.
+     * @param aEffect effect data
+     */
+    void RemoveEffect( TWmEffect* aEffect );
+    
+private: // data
+    /**
+     * List of started effects.
+     */
+    RPointerArray<TWmEffect> iEffects;
+    
+    /**
+     * COE env
+     */
+    CCoeEnv& iCoeEnv;
+    };
+
+#endif // WMEFFECTMANAGER_H
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/inc/wmimageconverter.h	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,243 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies)..
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* CWmImageConverter declaration
+*
+*/
+
+#ifndef WMIMAGECONVERTER_H
+#define WMIMAGECONVERTER_H
+
+//includes
+#include <e32std.h>
+#include <e32base.h>
+#include <f32file.h>
+#include <AknIconUtils.h> // MAknIconFileProvider
+
+// Forward declarations
+class CFbsBitmap;
+class CBitmapScaler;
+class CImageDecoder;
+class TAknsItemID;
+class CWmUnitTest;
+class MSvgError;
+
+// Class declaration
+/**
+ *  MConverterObserver
+ *  To notify when image is converted
+ */
+NONSHARABLE_CLASS( MConverterObserver )
+    {
+    public:
+        virtual void NotifyCompletion( TInt aError ) = 0;
+    };
+
+// Class declaration
+/**
+ * CWmImageConverter
+ * Image converter
+ */
+NONSHARABLE_CLASS ( CWmImageConverter ) : public CActive,
+        public MAknIconFileProvider
+    {
+    /** states for this converter */
+    enum TState 
+        {
+        EIdle = 0,
+        EDecoding,
+        EScalingBitmap,
+        EScalingMask
+        };
+
+public: //contructors/destructors
+    /**
+     * Two-phased constructor.
+     * @param aObserver observer
+     */
+    static CWmImageConverter* NewL( MConverterObserver* aObserver );    
+    
+    /** Destructor */
+    ~CWmImageConverter();
+        
+public: // interface methods
+    
+    /**
+     * Parses icon string and prepares logo image.
+     * 
+     * @param aWidth wanted widht
+     * @param aHeight wanted height
+     * @param aIconStr str containing logo icon
+     * Supported values:
+     * - skin(<major id> <minor id>):mif(<path> <bitmapid> <maskid>)
+     * - mif(<path> <bitmapid> <maskid>)
+     * - uid(<application uid>)
+     * - <file name>.<png/svg>
+     */
+    void HandleIconStringL( TInt aWidth, TInt aHeight, const TDesC& aIconStr );
+
+    /**
+     * Returns converted bitmap. Caller takes ownership
+     * 
+     * @return CFbsBitmap
+     */
+    CFbsBitmap* Bitmap();
+    
+    /**
+     * Returns converted mask. Caller takes ownership
+     * 
+     * @return CFbsBitmap
+     */
+    CFbsBitmap* Mask();
+
+    /**
+     * sets the size for decoding
+     * @param aSize the logo size
+     */
+    void SetLogoSize( const TSize& aSize );
+
+    /** supported image conversion methods */
+    enum TConversionMethod
+        {
+        EUnrecognized, // we could not recognise the icon string
+        EUidIcon, // App.UID-coded icon
+        ESvgIcon, // Icon from SVG-file
+        ESkinIcon, // Icon from SKIN id
+        EMifIcon, // Icon from MIF file, known graphic index
+        ESkinAndMifIcon, // Icon from SKIN and MIF combination 
+        EImageIcon, // Icon from image file (jpeg or png)
+        };
+
+    /**
+     * The type of currently converted image.
+     * This method can be used to check if correct conversion was used.
+     * @return conversion method used for current image
+     */
+    TConversionMethod ConversionMethod();
+
+protected: // implementation of CActive
+    /**
+     * Implements cancellation of an outstanding request.
+     * 
+     * @see CActive::DoCancel
+     */
+    void DoCancel();
+    
+    /**
+     * Handles an active object's request completion event.
+     * 
+     * @see CActive::RunL
+     */
+    void RunL();
+    
+    /**
+     * RunError
+     * 
+     * @see CActive::RunError
+     */
+    TInt RunError(TInt aError);
+        
+private:
+    CWmImageConverter(); 
+    void ConstructL( MConverterObserver* aObserver );
+    void CheckSvgErrorL( MSvgError* aError );
+    
+private:
+
+    void ScaleBitmap( TInt aWidth, TInt aHeight );
+    void ScaleMask( TInt aWidth, TInt aHeight );
+    void CreateIconFromUidL( const TUid& aUid );
+    void CreateIconFromSvgL( const TDesC& aFileName );
+    void CreateIconFromOtherL( const TDesC& aFileName );
+    void CreateSkinOrMifIconL( 
+                    const TAknsItemID& aItemId, TInt aBitmapId, 
+                    TInt aMaskId, const TDesC& aFileName );
+    // resolvers
+    TBool ResolveUid( const TDesC& aPath, TUid& aUid );
+    TBool ResolveSkinId( const TDesC& aPath, TAknsItemID& aItemId );
+    TBool ResolveMifId( const TDesC& aPath, TInt& aBitmapId, 
+                        TInt& aMaskId, TDes& aFileName );
+    TBool ResolveSkinIdAndMifId( const TDesC& aPath, TAknsItemID& aItemId,
+                        TInt& aBitmapId, TInt& aMaskId, TDes& aFileName );
+    TBool EndsWith( const TDesC& aString, const TDesC& aPattern );
+
+private: // from MAknIconFileProvider
+
+    /** Returns an open file handle to the icon file. */
+	void RetrieveIconFileHandleL( RFile& aFile, const TIconFileType aType );
+    
+    /** Stops using this MAknIconFileProvider instance */
+    void Finished();
+    
+private:
+    /**
+     * Converter observer (not owned)
+     */
+    MConverterObserver*     iObserver;
+
+    /**
+     * decoded image
+     */
+    CFbsBitmap*             iBitmap;
+    
+    /**
+     * decoded image mask
+     */
+    CFbsBitmap*             iMask;
+    
+    /**
+     * decoder from ICL API
+     */
+    CImageDecoder*          iImageDecoder;
+    
+    /**
+     * bitmap scaler
+     */
+    CBitmapScaler*          iScaler;
+    
+    /**
+     * internal state
+     */
+    TState                  iState;
+    
+    /**
+     * File name to convert
+     */
+    TFileName               iFilename;
+    
+    /**
+     * size to convert
+     */
+    TSize                   iSize;
+    
+    /**
+     * is scaling needed
+     */
+    TBool                   iScaleNeeded;
+    
+    /**
+     * File handle
+     */
+    RFs                     iFs;
+
+    /**
+     * Conversion method for current image
+     */
+    TConversionMethod       iConversionMethod;
+
+    };
+
+#endif // #ifndef WMIMAGECONVERTER_H
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/inc/wmlistbox.h	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,400 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies)..
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* Declares widget listbox for WidgetManager
+*
+*/
+
+#ifndef ___WMLISTBOX_H__
+#define ___WMLISTBOX_H__
+
+// INCLUDES
+#include <eiklbi.h>
+#include <eiktxlbx.h>
+#include <eiktxlbm.h>
+#include <eikfrlb.h>
+#include <eiktxlbm.h>
+#include <aknlists.h>
+
+#include <touchfeedback.h>
+#include <touchlogicalfeedback.h>
+#include <aknlongtapdetector.h> 
+#include "wmwidgetdataobserver.h"
+#include "wmwidgetdata.h"
+
+// FORWARD DECLARATIONS
+class CWmListBox;
+class CWmPlugin;
+class CListBoxView;
+class CFormattedCellListBoxData;
+class CAknLongTapDetector;
+class CWmListModel;
+class CWmWidgetData;
+class CAknStylusPopUpMenu;
+class MEikMenuObserver;
+
+// CLASS DECLARATIONS
+
+/**
+ * CWmListItemDrawer
+ */
+NONSHARABLE_CLASS( CWmListItemDrawer ): public CFormattedCellListBoxItemDrawer
+	{
+public:
+    /** Two-phased constructor. */
+	static CWmListItemDrawer* NewL(
+                CWmPlugin& aWmPlugin,
+                MTextListBoxModel* aTextListBoxModel,
+                const CFont* aFont,
+                CFormattedCellListBoxData* aFormattedCellData,
+                CWmListBox* aListBox  );
+
+    /** Destructor. */
+    ~CWmListItemDrawer();
+    
+    /** Default logo image. */
+    const CFbsBitmap* DefaultLogoImage();
+    /** Default logo mask. */
+    const CFbsBitmap* DefaultLogoMask();
+
+    /**
+     * re-size bitmaps to size provided by layout
+     */
+    void ResizeDefaultBitmaps();
+    
+    /**
+     * Responds to skin changed event.
+     */
+    void HandleSkinChanged();
+
+public:
+
+    /**
+     * from CFormattedCellListBoxItemDrawer:
+     * draws a single list box item
+     */
+    void DrawItem(
+                TInt aItemIndex, TPoint aItemRectPos, 
+                TBool aItemIsSelected, TBool aItemIsCurrent, 
+                TBool aViewIsEmphasized, TBool aViewIsDimmed ) const;
+    
+private:
+    /** Constructor for performing 1st stage construction */
+    CWmListItemDrawer( 
+                CWmPlugin& aWmPlugin,
+                MTextListBoxModel* aTextListBoxModel,  
+                const CFont* aFont,  
+                CFormattedCellListBoxData* aFormattedCellData,
+                CWmListBox* aListBox );
+
+    /** 2nd phase constructor */
+    void ConstructL();
+
+private: // data members
+
+    /** 
+     * the plugin root (not owned) 
+     */
+    CWmPlugin& iWmPlugin;
+
+    /** 
+     * pointer to the list box data (not owned) 
+     */
+    CFormattedCellListBoxData* iCellData;
+
+    /** 
+     * pointer to the listbox (not owned) 
+     */
+    CWmListBox* iListBox;
+
+    /** 
+     * current font used in drawing (not owned) 
+     */
+    const CFont*    iFont;
+
+    /**
+     * add-button colored bitmap (default color)
+     */
+    CFbsBitmap*         iAddWidgetBtnImage;
+    
+    /** 
+     * add-button mask 
+     */
+    CFbsBitmap*         iAddWidgetBtnMask;
+
+    /**
+     * add-button colored bitmap (highlighted color)
+     */
+    CFbsBitmap*         iAddWidgetBtnHighlightImage;
+    
+    /** 
+     * add-button mask 
+     */
+    CFbsBitmap*         iAddWidgetBtnHighlightMask;
+    
+    /** 
+     * default logo (when widget does not have one) bitmap 
+     */
+    CFbsBitmap*         iDefaultLogoImage;
+    
+    /** 
+     * default logo (when widget does not have one) mask 
+     */
+    CFbsBitmap*         iDefaultLogoImageMask;
+    
+	};
+
+
+
+// CLASS DECLARATIONS
+/**
+ * CWmListBox
+ */
+NONSHARABLE_CLASS( CWmListBox ): public CAknDouble2LargeStyleListBox,
+                      public MWmWidgetDataObserver
+	{
+public:
+    
+    /**
+     * Two-phased constructor.
+     */
+	static CWmListBox* NewL(
+	        CWmPlugin& aWmPlugin,
+            const TRect& aRect,
+            const CCoeControl* aParent,  
+            TInt aFlags = 0 );
+
+    /** Destructor. */
+    ~CWmListBox();
+
+public: // API for manipulating list content
+    
+    /** Default Logo. */
+    const CFbsBitmap* DefaultLogo();
+    /** Default Logo mask. */
+    const CFbsBitmap* DefaultMask();
+
+    /** 
+     * Findbox visibility
+     * 
+     * @param aVisibility sets find pane visibility
+     */
+    inline void SetFindPaneIsVisible( TBool aVisibility );
+    
+    /** 
+     * Currently selected item index 
+     * 
+     * @return return currently selected item 
+     */
+    TInt CurrentListBoxItemIndex();
+    
+    /** 
+     * real index for listbox item if findbox is active 
+     * 
+     * @return return index from original list for currently selected item
+     */
+    TInt RealIndex( TInt aIndex );
+    
+    /** 
+     * number of items in the widget data array (also items on the list) 
+     * 
+     * @return count of widget data array
+     */
+    inline TInt WidgetDataCount();
+    
+    /** 
+     * currently selected item
+     * @return the selected item, or NULL if nothing selected
+     */
+    CWmWidgetData* WidgetData();
+    
+    /** 
+     * gets an item by index 
+     * 
+     * @param aItemIndex index for item to return
+     */
+    CWmWidgetData& WidgetData( TInt aItemIndex );
+
+    /**
+     * gets the constant widget data array
+     */
+    inline const RWidgetDataValues& WidgetDataArray();
+
+    /** 
+     * inserts widget data to the model. Takes ownership of the object.
+     * The widget data will appear to correct location in natural order:
+     * - in previously saved position, if it has been viewed before
+     *   (widget data must have a pointer to persistent widget order)
+     * - in case this is a new widget, it will appear topmost
+     * - in case there is no persistent widgets order or it is empty,
+     *   the widget is added in alphabetical order
+     * 
+     * NOTE: caller must call HandleItemAdditionL() for the listbox after
+     * adding all widget datas to update the listbox correctly!
+     * 
+     * @param aWidget Data data to add
+     */
+    void AddWidgetDataL( CWmWidgetData* aWidgetData );
+    
+    /** 
+     * removes widget data from given index in the model
+     * The method reorganises the list model and size.
+     * Drawing is still needed to update the appearance.
+     * 
+     * @param aItemIndex index to remove
+     * */
+    void RemoveWidgetData( TInt aItemIndex/*, TBool aRedraw = ETrue*/ );
+    
+    /** 
+     * requests to redraw item in given index position 
+     * 
+     * @param aItemIndex index to redraw
+     */
+    void RedrawItem( TInt aItemIndex );
+
+    /** sort order of widgets in the list */
+    enum TSortOrder
+        {
+        /** sort list as it was on last run */
+        EStoredOrder,
+        /** sort alphabetically */
+        EAlphabetical,
+        /** show latest installed first */
+        ELatestFirst
+        };
+
+    /** 
+     * sets the list sort order 
+     * 
+     * @param aOrder sort order
+     */
+    void SetSortOrderL( TSortOrder aOrder );
+    
+    /**
+     * Responds to layout switched.
+     */
+    void HandleLayoutChanged();
+
+    /**
+     * Responds to skin changed.
+     */
+    void HandleSkinChanged();
+
+	/** 
+     * State of pointer down event 
+     * 
+     * @return ETrue if pointer is down
+     */
+    inline TBool PressedDown();
+
+    /**
+     * Returns size of logo 
+     * 
+     * @return Size of logo rect
+     */
+    TSize LogoSize();
+
+private: // from CEikTextListBox
+    /**
+     * Creates the item drawer.
+     * 
+     * @see CEikTextListBox::CreateItemDrawerL
+     */
+	void CreateItemDrawerL();
+	
+protected: // from base class CCoeControl
+    
+    /**
+     * Sets the control's extent, specifying a rectangle.
+     * 
+     * @see CCoeControl::SizeChanged
+     */
+    void SizeChanged();
+
+private: // from base class CCoeControl
+
+    /*
+     * Draws the control.
+     * 
+     * @see CCoeControl::Draw
+     */
+    void Draw( const TRect& aRect ) const;
+
+	/**
+	 * Handles pointer events.
+	 * 
+	 * @see CCoeControl::HandlePointerEventL
+	 */
+	void HandlePointerEventL( const TPointerEvent& aPointerEvent );
+	
+private:
+  	 /** Constructor for performing 1st stage construction */
+    CWmListBox( CWmPlugin& aWmPlugin );
+
+    /** 2nd phase constructor */
+    void ConstructL(
+            const TRect& aRect,
+            const CCoeControl* aParent,
+            TInt aFlags );
+    
+
+protected: // from MWmWidgetDataObserver
+
+    /** 
+     * widget needs redrawing 
+     * 
+     * @param aWidgetData item to redraw
+     */
+    void HandleWidgetDataChanged( CWmWidgetData* aWidgetData );
+
+private: // own methods
+
+    /** 
+     * linear order for sorting, depending on the sort type being used 
+     */
+    TLinearOrder<CWmWidgetData> SortOrder( TSortOrder aOrder );
+
+private:
+
+    /** 
+     * the plugin root (not owned) 
+     */
+    CWmPlugin&          iWmPlugin;
+
+    /** 
+     * array of widget data objects (the list model) 
+     */
+    RWidgetDataValues   iWidgetDatas;
+
+    /** 
+     * the currently active item ADD button's rectangle, for push recognition 
+     */
+    TRect               iButtonRect;
+
+    /** 
+     * state of list box find pane 
+     */
+    TBool               iFindPaneIsVisible;
+	
+	/** 
+     * state of pointer pressed down and hold 
+     */
+    TBool               iPressedDown;
+	
+	};
+#include "wmlistbox.inl"
+
+#endif ___WMLISTBOX_H__
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/inc/wmlistbox.inl	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,53 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies)..
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* Inline function definitions for CWmListBox
+*
+*/
+
+#ifndef WMLISTBOX_INL_
+#define WMLISTBOX_INL_
+
+/** 
+ * Findbox visibility
+ * 
+ * @param aVisibility sets find pane visibility
+ */
+ inline void CWmListBox::SetFindPaneIsVisible( TBool aVisibility )
+        { iFindPaneIsVisible = aVisibility; }
+ 
+ /** 
+  * number of items in the widget data array (also items on the list) 
+  * 
+  * @return count of widget data array
+  */
+ inline TInt CWmListBox::WidgetDataCount()
+     { return iWidgetDatas.Count(); }
+ 
+ /**
+  * gets the constant widget data array
+  */
+ inline const RWidgetDataValues& CWmListBox::WidgetDataArray()
+     { return iWidgetDatas; }
+
+/** 
+  * State of pointer down event 
+  * 
+  * @return ETrue if pointer is down
+  */
+ inline TBool CWmListBox::PressedDown()
+     { return iPressedDown; }
+ 
+	 
+#endif /* WMLISTBOX_INL_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/inc/wmmaincontainer.h	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,383 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies)..
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* Declares main container control for Widget Manager application.
+*
+*/
+
+#ifndef WMMAINCONTAINER_H
+#define WMMAINCONTAINER_H
+
+#include <e32base.h>
+#include <e32cmn.h>
+#include <f32file.h>
+#include <coecobs.h>
+#include <coecntrl.h>
+#include <AknsUtils.h>
+#include <gulicon.h>
+#include <eiklbo.h>  // MEikListBoxObserver
+
+// FORWARD DECLARATIONS
+class CWmPlugin;
+class CWmListBox;
+class CAknsBasicBackgroundControlContext;
+class CAknViewAppUi;
+class CAknSearchField;
+class CCoeControl;
+class CAknSearchField;
+class CWmPortalButton;
+class CWmWidgetLoaderAo;
+class CWmMainContainerView;
+
+/**
+ * Container class for WmMainContainer
+ * 
+ * @class	CWmMainContainer WmMainContainer.h
+ */
+NONSHARABLE_CLASS( CWmMainContainer ) : public CCoeControl,
+                                        public MEikListBoxObserver
+	{
+public: // constructors and destructor
+	
+    /*
+     * Two-phased constructor.
+     * 
+     * @param aRect container rect
+     * @param aWmPlugin wm plugin
+     */
+	static CWmMainContainer* NewL( 
+		const TRect& aRect,
+		CWmPlugin& aWmPlugin );
+
+    /*
+     * Two-phased constructor.
+     * 
+     * @param aRect container rect
+     * @param aWmPlugin wm plugin
+     */
+	static CWmMainContainer* NewLC( 
+		const TRect& aRect,
+		CWmPlugin& aWmPlugin );	
+
+	 /** Destructor */
+	virtual ~CWmMainContainer();
+	
+private:
+    /** constructor */
+	CWmMainContainer(
+	    CWmPlugin& aWmPlugin );
+    
+    /** 2nd phase constructor */
+    void ConstructL( 
+            const TRect& aRect );
+
+public: // new functions	
+
+    /** 
+     * @return reference to WmPlugin 
+     */
+    CWmPlugin& WmPlugin();
+    
+    /** 
+     * @return true, if portal button is currently selected 
+     */
+    TBool PortalSelected();
+    
+    /** 
+     * @return true, if a widget in list is currently selected 
+     */
+    TBool WidgetSelected();
+    
+    /** 
+     * @return true, ADD command is possible
+     */
+    TBool CanDoAdd(); 
+    
+    /** 
+     * @return true, if UNINSTALL command is possible
+     */
+    TBool CanDoUninstall();
+    
+    /** 
+     * @return true, if LAUNCH command is possible
+     */
+    TBool CanDoLaunch();
+
+    /**
+     * @return true, if FIND command is possible
+     */
+    TBool CanDoFind();
+    
+    /**
+     * @return true, if SORT command is possible
+     */
+    TBool CanDoSort();
+    
+    /**
+     * @return true, if DETAILS command is possible
+     */
+    TBool CanDoDetails();
+    
+    /**
+     * @return true, if HELP command is possible
+     */
+    TBool CanDoHelp();
+    
+    /** 
+     * executes widget details dialog launch 
+     */
+    void LaunchDetailsDialogL();
+
+    /** 
+	 * executes widget addition to home screen 
+	 */
+	void AddWidgetToHomeScreenL();
+	
+	/** 
+	 * executes widget launch 
+	 */
+	void LaunchWidgetL();
+	
+	/** 
+	 * executes findbox activation 
+	 */
+	void ActivateFindPaneL();
+
+    /** 
+	 * executes findbox deactivation 
+	 */
+    void DeactivateFindPaneL();
+	
+    /** 
+     * sorts the widget list in alphabetical order
+     */
+    void SortListAlphabeticallyL();
+
+	/** 
+	 * executes widget uninstall 
+	 */
+	void UninstallWidgetL();
+
+    /**
+     * opens OVI portal
+     */
+    void OpenOviPortalL();
+
+    /**
+     * Selection key (middle soft key)
+     */
+    void SelectL();
+    
+    /**
+     * Show widget manager help
+     */
+    void ShowHelpL();
+
+    /** 
+     * handles situation when widget list has changed.
+     * in practice reloads the widget list from the widgets API
+     * and redraws the screen.
+     */
+	void HandleWidgetListChanged();
+
+public:
+
+    /**
+     * Handles key events.
+     * 
+     * @see CCoeControl::OfferKeyEventL
+     */
+	TKeyResponse OfferKeyEventL( 
+			const TKeyEvent& aKeyEvent, 
+			TEventCode aType );
+	
+	/**
+	 * Handles a change to the control's resources
+	 * 
+	 * @see CCoeControl::HandleResourceChange
+	 */
+	void HandleResourceChange( TInt aType );
+	
+	/**
+	 * Handles pointer events.
+	 * 
+	 * @see CCoeControl::HandlePointerEventL
+	 */
+	void HandlePointerEventL( const TPointerEvent& aPointerEvent );
+	
+	/**
+	 * Moves focus to the OVI button
+	 */
+    void SetFocusToOviButton();
+
+    /**
+     * Moves focus to the widgets list, alternatively also setting the currently
+     * selected item.
+     * @param aIndex the item in widgets list to highlight during setting focus.
+     *        By default the previously selected item will be highlighted.
+     */
+    void SetFocusToWidgetList( TInt aIndex = KErrUnknown );
+
+    /*
+     * Tells if user inputs should be handeled or not. If ret is EFalse wm 
+     * can ignore user inputs. This is becouse closing view is async and user
+     * might give some inputs before view is closed. 
+     */
+    TBool ClosingDown();
+        
+    /*
+     * To set iClosingDown. See above.
+     */
+    void SetClosingDown( TBool aClosingDown );
+    
+protected: // from base class CCoeControl
+    
+    /**
+     * Sets the control's extent, specifying a rectangle.
+     * 
+     * @see CCoeControl::SizeChanged
+     */
+    void SizeChanged();
+
+private: // from base class CCoeControl
+
+    /*
+     * Draws the control.
+     * 
+     * @see CCoeControl::Draw
+     */
+    void Draw( const TRect& aRect ) const;
+    
+    /**
+    * Suppy Mop object for control context
+    * @param TTypeUid aId
+    */
+    TTypeUid::Ptr MopSupplyObject(TTypeUid aId);
+
+private: // from MEikListBoxObserver
+
+    /**
+     * List box observer interface.
+     * 
+     * @see MEikListBoxObserver::HandleListBoxEventL
+     */
+    void HandleListBoxEventL(
+                        CEikListBox* aListBox,
+                        TListBoxEvent aEventType);
+
+private: // New functions
+    
+    void AddControlL( CCoeControl* aControl, TInt aControlId );
+    void InitializeControlsL( const TRect& aRect );
+    void LayoutControls();
+    void StartLoadingWidgetsL();
+    void RemoveCtrlsFromStack();
+    TKeyResponse MoveFocusByKeys(
+            const TKeyEvent& aKeyEvent, 
+            TEventCode aType );
+    void UpdateFocusMode();
+    CCoeControl* FindChildControlByPoint( const TPoint& aPoint );
+    void HandleFindSizeChanged();
+    void FetchRepositoryDataL();
+
+private:
+
+    /**
+     * the plugin root
+     */
+    CWmPlugin&              iWmPlugin;
+
+    /**
+     * the widgets list
+     */
+    CWmListBox*             iWidgetsList;
+
+    /**
+	 * search filed
+	 */
+    CAknSearchField* 		iFindbox;
+    
+    /**
+	 * search filed visibility switch
+	 */
+    TBool            		iFindPaneIsVisible;
+    
+    /**
+     * background
+     */
+    CAknsBasicBackgroundControlContext* iBgContext;
+    
+    /**
+     * Ovi portal
+     */
+    CWmPortalButton*             iOviPortal;
+
+    /** GUI layout modes */
+    enum TWmLayout
+        {
+        EPortrait,
+        ELandscape,
+        ELandscapeMirrored
+        };
+
+    /**
+     * current widget manager container layout
+     */
+    TWmLayout               iLayout;
+
+    /** focus modes */
+    enum TWmFocusMode
+        {
+        ENowhere,
+        EOvi,
+        EList,
+        EFind
+        };
+
+    /**
+     * current widget manager focus mode
+     */
+    TWmFocusMode            iFocusMode;
+    
+    /**
+     * AO for loading widgets into the list UI
+     */
+    CWmWidgetLoaderAo*      iWidgetLoader;
+    
+    /**
+     * If this is set to ETrue it means wmview is closing and all user inputs
+     * should be ignored.
+     */
+    TBool                   iClosingDown;
+    
+    /**
+     * Localized Url to start browser
+     */
+    HBufC*                  iOviStoreUrl;
+    
+    /**
+     * OviStore bundleId
+     */
+    HBufC*                  iOviStoreClientBundleId;
+    
+    /**
+     * OviStore client param
+     */
+    HBufC*                  iOviStoreClientParam;
+    
+    };
+
+#endif // WMMAINCONTAINER_H
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/inc/wmmaincontainerview.h	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,141 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies)..
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* Declares main container view for Widget Manager application.
+*
+*/
+
+#ifndef WMMAINCONTAINERVIEW_H
+#define WMMAINCONTAINERVIEW_H
+
+#include <aknview.h>
+
+
+class CWmMainContainer;
+class CWmPlugin;
+
+/**
+ * Avkon view class for WmMainContainerView. It is register with the view server
+ * by the AppUi. It owns the container control.
+ * @class	CWmMainContainerView WmMainContainerView.h
+ */						
+NONSHARABLE_CLASS( CWmMainContainerView ) : public CAknView
+	{
+
+public: // constructors and destructor
+	/**
+	 * Two-phased constructor.
+	 * 
+	 * @param aWmPlugin wm plugin
+	 */
+	static CWmMainContainerView* NewL( CWmPlugin& aWmPlugin );
+	
+    /**
+     * Two-phased constructor.
+     * 
+     * @param aWmPlugin wm plugin
+     */
+	static CWmMainContainerView* NewLC( CWmPlugin& aWmPlugin );	
+	
+	/** Destructor */
+	virtual ~CWmMainContainerView();
+
+	
+public:	// from base class CAknView
+    /**
+     * Returns views id, intended for overriding by sub classes.
+     * 
+     * @see CAknView::Id
+     */
+	TUid Id() const;
+	
+	/**
+	 * Command handling function intended for overriding by sub classes.
+	 *
+	 * @see CAknView::HandleCommandL
+	 */
+	void HandleCommandL( TInt aCommand );
+
+public:	
+	/**
+	 * Creates CWmMainContainer
+	 */
+	CWmMainContainer* CreateContainerL();
+	
+private:
+    CWmMainContainerView( CWmPlugin& aWmPlugin );    
+    void ConstructL();    
+    
+protected: // from base class CAknView
+    /**
+     * Avkon view architecture system.
+     * 
+     * @see CAknView::DoActivateL
+     */
+	void DoActivateL(
+		const TVwsViewId& aPrevViewId,
+		TUid aCustomMessageId,
+		const TDesC8& aCustomMessage );
+	
+	/**
+	 * View deactivation function intended for overriding by sub classes.
+	 * 
+	 * @see CAknView::DoActivateL
+	 */
+	void DoDeactivate();
+	
+   /**
+     * Event handler for status pane size changes.
+     * 
+     * @see CAknView::HandleStatusPaneSizeChange
+     */
+	void HandleStatusPaneSizeChange();
+
+protected:	// From MEikMenuObserver
+    /*
+     * Menu observer interface.
+     * 
+     * @see MEikMenuObserver::DynInitMenuPaneL
+     */
+    void DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane);
+
+private:
+    
+    /** menu commands */
+    TBool HandleOpenMenuItemSelectedL();
+    TBool HandleAddMenuItemSelectedL();
+    TBool HandleLaunchMenuItemSelectedL();
+    TBool HandleSearchMenuItemSelectedL();
+    TBool HandleSortAlphaMenuItemSelectedL();
+    TBool HandleUninstallMenuItemSelectedL();
+    TBool HandleHelpMenuItemSelectedL();
+	TBool HandleDetailsMenuItemSelectedL();
+	TBool HandleDeactivateFindPaneL();
+	/** setup status pane */
+	void SetupStatusPaneL();
+
+private:
+    /** 
+     * the container 
+     */
+	CWmMainContainer* iWmMainContainer;
+
+	/** 
+	 * the plugin root (not owned) 
+	 */
+	CWmPlugin& iWmPlugin;
+
+	};
+
+#endif // WMMAINCONTAINERVIEW_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/inc/wmpersistentwidgetorder.h	Thu Jan 07 12:39:41 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:
+* Defines an ordered list of widget id's with persistence capability
+*
+*/
+
+#ifndef WMPERSISTENTWIDGETORDER_H
+#define WMPERSISTENTWIDGETORDER_H
+
+// INCLUDES
+#include <e32base.h>
+#include "wmwidgetdata.h"
+
+// FORWARD DECLARATIONS
+class RFs;
+
+// CLASS DECLARATION
+/**
+ *  CWmPersistentWidgetOrder
+ * This class is an ordered list of widget identifiers. The list can be
+ * serialised and extract from stream and persisted. The list can be used
+ * in sorting a pointer array of CWmWidgetData.
+ */
+NONSHARABLE_CLASS( CWmPersistentWidgetOrder ) : public CBase
+    {
+
+public: // Constructors and destructor
+    /** 
+     * static constructor.
+     */
+    static CWmPersistentWidgetOrder* NewL( RFs& aFs );
+
+    /** Destructor. */
+    ~CWmPersistentWidgetOrder();
+
+private: // private construction
+
+    /**
+     * constructor
+     */
+    CWmPersistentWidgetOrder( RFs& aFs );
+
+    /**
+     * 2nd phase constructor
+     */
+    void ConstructL();
+
+
+public: // API
+
+    /**
+     * Loads the persistent widget list from storage.
+     * This is typically done once after construction.
+     * The instance can now be used to sort widget data.
+     */
+    void LoadL();
+  
+    /**
+     * Stores a sorted array of WmWidgetData types. Note that
+     * the order will be directly stored and a copy will not
+     * be kept locally, so this instance can not be used to
+     * sort widget data until LoadL() is called.
+     * 
+     * @param aArray the array of widget daya types
+     */
+    void StoreL( const RWidgetDataValues& aArray );
+
+    /**
+     * Retrieves an index of given widget data object within the list.
+     * This index can be used to sort and organise. Note that LoadL()
+     * must be used prior to calling this method, and before that
+     * there must be something persisted.
+     * 
+     * @param aWidgetData data to seek index of in the sorted order
+     * @return the index found, or KErrNotFound if widget is new
+     */
+    TInt IndexOf( const CWmWidgetData& aWidgetData ) const;
+
+    /**
+     * checks if the persistent widget order is empty. In this case it does
+     * not make any sense to use the object to sort anything.
+     * Note that before loading the object is always empty.
+     */
+    TBool IsEmpty() const;
+
+protected:
+
+    /**
+     * Cleans up the array
+     */
+    void CleanupArray();
+
+    /**
+     * build the storage file path and name. The storage file will be located
+     * in host process private directory.
+     * @param aPathBuf a buffer to receive the complete file path
+     */
+    void GetStoreFileNameL( TDes& aPathBuf );
+
+    /**
+     * Unique tag of a widget
+     */
+    class Tag
+        {
+        public:
+            /** constructs a tag from parameters */
+            Tag( TInt32 aUid, HBufC16* aPublisherId );
+
+            /** compares a tag agains a widget data */
+            TBool Matches( const CWmWidgetData& aWidgetData ) const;
+
+            /** widget uid */
+            TInt32 iUid;
+
+            /** widget publisher id */
+            HBufC16* iPublisherId;
+        };
+
+private: // data members
+
+    /** the file session */
+    RFs& iFs;
+
+    /** array of widget tags for sorting */
+    RArray<Tag> iTagArray;
+
+    };
+
+
+#endif // WMPERSISTENTWIDGETORDER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/inc/wmplugin.h	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,195 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies)..
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* widget manager plugin declaration
+*
+*/
+
+#ifndef __WMPLUGIN_
+#define __WMPLUGIN_
+
+//  INCLUDES
+#include <e32base.h>
+#include <vwsdef.h>
+
+#include <hscontentcontrolui.h>
+#include <hscontentcontroller.h>
+#include <hscontentinfo.h>
+
+class CAknViewAppUi;
+class CWmResourceLoader;
+class CWmMainContainerView;
+class CWmMainContainer;
+class CWmEffectManager;
+
+/**
+ * CWmPlugin 
+ */
+NONSHARABLE_CLASS( CWmPlugin ) : public CHsContentControlUi
+    {
+public:
+
+    /**
+     * Two-phased constructor.
+     */
+    static CWmPlugin* NewL();
+    
+    /** Destructor */
+    ~CWmPlugin();
+
+public: // From MHsContentControlUi
+
+    /** 
+     * shows the widget manager UI 
+     * 
+     * @see MHsContentControlUi::Activate
+     */
+    void Activate();
+    
+    /** 
+     * Notifies widget list changes 
+     * 
+     * @see MHsContentControlUi::NotifyWidgetListChanged
+     */
+    void NotifyWidgetListChanged();
+        
+public: // plugin services
+
+    /** 
+     * whether widget manager UI is showing 
+     * 
+     * @return return ETrue if wm UI is showed 
+     */
+    TBool IsActive();
+
+    /** 
+     * hides widget manager UI 
+     */
+    void Deactivate();
+
+    /** 
+     * main view activated. Sets the previous view ID and main container 
+     *
+     * @param aPreviousViewId
+     * @param aWmMainContainer 
+     */
+    void MainViewActivated( 
+            const TVwsViewId& aPreviousViewId,
+            CWmMainContainer* aWmMainContainer );
+
+    /** 
+     * main view was deactivated 
+     */
+    void MainViewDeactivated();
+
+    /** Postponed command to execute when widgetmanager has deactivated */
+    enum TCommand
+        {
+        /** no command */
+        ENone,
+        /** add content to home screen */
+        EAddToHomescreen
+        };
+    
+    /**
+     * Sets a postponed command. The postponed command will be executed after
+     * widget manager has been deactivated.
+     * 
+     * @param aCommand the command to be executed
+     * @param aContent content parameter related to the command
+     */
+    void SetPostponedCommandL(
+            TCommand aCommand, CHsContentInfo& aContent );
+    
+    /** 
+     * the CAknViewAppUi reference
+     * 
+     * @return returns CAknViewAppUi 
+     */
+    CAknViewAppUi& ViewAppUi();
+
+    /** 
+     * the resource loader 
+     * 
+     * @return returns CWmResourceLoader
+     */
+    CWmResourceLoader& ResourceLoader();
+    
+    /** 
+     * the content controller ref
+     * 
+     * @return returns MHsContentController
+     */
+    MHsContentController& ContentController();
+
+    /**
+     * the shared file server reference
+     */
+    RFs& FileServer();
+
+private:
+    /** constructor */
+    CWmPlugin();
+    /** 2nd phase constructor */
+    void ConstructL();
+    /** actions that are done when widget manager is closed */
+    void ExecutePostponedCommandL();
+
+private: // data members
+
+    /**
+     * the host application view app UI (not owned)
+     */
+    CAknViewAppUi*  iViewAppUi;
+
+    /**
+     * main container (not owned)
+     */
+    CWmMainContainer*  iWmMainContainer;
+    
+    /**
+     * resource loader
+     */
+    CWmResourceLoader* iResourceLoader;
+
+    /**
+     * previous view ID (shown when main view closed)
+     */
+    TVwsViewId iPreviousViewUid;
+	
+    /**
+     * Takes care of fancy UI effects
+     */    
+    CWmEffectManager* iEffectManager;
+    
+    /**
+     * The file server session
+     */
+    RFs* iFs;
+
+    /**
+     * command to be executed when widgetmanager has
+     * been deactivated
+     */
+    TCommand iPostponedCommand;
+    
+    /**
+     * content info as parameter to iPostponedCommand
+     */
+    CHsContentInfo* iPostponedContent;
+    
+    };
+
+#endif // __WMPLUGIN_
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/inc/wmportalbutton.h	Thu Jan 07 12:39:41 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:
+* Declares portal button for WidgetManager
+*
+*/
+
+#ifndef ___WMPORTALBUTTON_H__
+#define ___WMPORTALBUTTON_H__
+
+#include <aknbutton.h>	// CAknButton
+#include "wmimageconverter.h"
+#include "wmcommon.h"
+
+// FORWARD DECLARATIONS
+class CWmMainContainer;
+
+/**
+ * Portal button ( ovi, operator ) class for Wm
+ * 
+ * @class   CWmPortalButton wmportalbutton.h
+ */
+NONSHARABLE_CLASS( CWmPortalButton ) : public CAknButton,
+                                       public MConverterObserver 
+    {
+public:
+    /*
+     * Two-phased constructor.
+     * 
+     * @param aParent button title text
+     * @param aText button title text
+     * @param aUrl Url to open in browser when clicked.  
+     * @param aButtonCtrlId type of button 
+     */
+    static CWmPortalButton* NewL(
+            const CCoeControl* aParent,
+            const TDesC& aText = KNullDesC,
+            const TDesC& aUrl = KNullDesC, 
+            TWmUiControlIds aButtonCtrlId = EOviPortal );
+    
+    /** Destructor */
+    virtual ~CWmPortalButton();
+                                      
+public: // Functions from base class
+    
+    /**
+     * Handles key events.
+     * 
+     * @see CCoeControl::OfferKeyEventL
+     */
+	TKeyResponse OfferKeyEventL( 
+	        const TKeyEvent& aKeyEvent, TEventCode aType );
+            
+    /**
+	 * Handles pointer events.
+	 * 
+	 * @see CCoeControl::HandlePointerEventL
+	 */
+    void HandlePointerEventL( const TPointerEvent& aPointerEvent );
+    
+    /*
+     * Draws the control.
+     * 
+     * @see CCoeControl::Draw
+     */
+    void Draw( const TRect& /*aRect*/ ) const;
+    
+    /**
+     * Sets the control's extent, specifying a rectangle.
+     * 
+     * @see CCoeControl::SizeChanged
+     */
+    void SizeChanged();
+    
+protected: // from MConverterObserver
+
+    /** image conversin completed */
+    void NotifyCompletion( TInt aError );
+   
+protected: // Constructors
+    
+    /** Constructor for performing 1st stage construction */
+    CWmPortalButton( const TInt aFlags,
+            TWmUiControlIds aButtonCtrlId = EOviPortal );
+    
+    /** 2nd phase constructor */
+    void ConstructL( 
+            const CCoeControl* aParent,
+            const TDesC& aText = KNullDesC,
+            const TDesC& aUrl = KNullDesC );
+    
+private:
+
+    /** 
+	 * Draws text over button
+	 */
+    void DrawText( CWindowGc& aGc,
+                   const TDesC& aText, 
+                   TAknTextComponentLayout& aLayout,
+                   TInt aMargin ) const;
+
+private: //data members
+    /**
+     * Button text
+     */ 
+    HBufC* iText;
+
+    /**
+     * Url assigned to button
+     */ 
+    HBufC* iUrl;
+
+    /**
+     * the image converter utility
+     */    
+    CWmImageConverter*  iImageConverter;
+
+    /**
+     * Parent control
+     */ 
+    CWmMainContainer* iWmMainContainer;
+
+    /** 
+     * Button ctrl id
+     */ 
+    TWmUiControlIds iButtonCtrlId;
+ 	};
+
+#endif //___WMPORTALBUTTON_H__
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/inc/wmresourceloader.h	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,133 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies)..
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* loads widget manager resources and icons
+*
+*/
+
+
+#ifndef WMRESOURCELOADER_H_
+#define WMRESOURCELOADER_H_
+
+// INCLUDE FILES
+#include <e32base.h>
+
+// FORWARD DECLARATIONS
+class CAknStylusPopUpMenu;
+class CEikonEnv;
+class CAknButton;
+class CAknInformationNote;
+
+/**
+ * CWmResourceLoader
+ */
+NONSHARABLE_CLASS( CWmResourceLoader ) : public CBase
+    {
+
+public: // construction/destruction
+	/** 
+	 * static constructor 
+	 * 
+	 * @param aCoeEnv Control environment.
+	 */
+	static CWmResourceLoader* NewL(
+	        CEikonEnv& aEnv );
+	
+	/** destructor */
+	~CWmResourceLoader();
+
+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
+     */
+    void InfoPopupL( TInt aResourceId, const TDesC& aString );
+
+    /**
+     * shows a standard error popup
+     * @param aErrorCode a system-wide standard error code 
+     */
+    void ErrorPopup( TInt aErrorCode );
+
+    /** icon file path */
+    const TDesC& IconFilePath();
+
+    /** default no description text */
+    const TDesC& NoDescriptionText();
+    
+private: // internal methods
+
+    /** constructor */
+    CWmResourceLoader(
+            CEikonEnv& aEnv );
+    
+    /** 2nd phase constructor */
+    void ConstructL();
+
+    /** load the resource */
+    void LoadResourcesL();
+
+    /** free resources */
+    void UnloadResources();
+
+    /** find icon file path */
+    void DetermineIconFilePath();
+
+private: // members
+    
+    /**
+     * the environment
+     */
+    CEikonEnv&    iEnv;
+
+    /**
+     * name of this DLL
+     */
+    TFileName   iDllName;
+
+    /**
+     * resource file offset
+     */
+    TInt        iResourceFileOffset;
+
+    /**
+     * ICON file
+     */
+    TFileName   iMifFile;
+    
+    /**
+     * info note dialog
+     */
+    CAknInformationNote *iNote;
+
+    /**
+     * Default description text
+     */    
+    HBufC*      iDescription;
+    };
+
+#endif // WMRESOURCELOADER_H_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/inc/wmwidgetdata.h	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,271 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies)..
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* CWmWidgetData declaration
+*
+*/
+
+
+#ifndef WMWIDGETDATA_H
+#define WMWIDGETDATA_H
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+#include <f32file.h>
+#include <bamdesca.h>
+#include <hscontentinfo.h>
+
+#include "wmimageconverter.h"
+
+// FORWARD DECLARATIONS
+class CDictionaryFileStore;
+class MWmWidgetDataObserver;
+class CFbsBitmap;
+class CHsContentInfo;
+class CWmPersistentWidgetOrder;
+class RWidgetRegistryClientSession;
+
+// CLASS DECLARATION
+/**
+ * CWmWidgetData is a representation of a widget in CWmListBox. it
+ * stores all data required for drawing the item in a list box, and
+ * handling the list item.
+ */
+NONSHARABLE_CLASS( CWmWidgetData )
+    : public CBase
+    , public MConverterObserver
+    {
+
+public: // types
+
+    /** widget type */
+    enum TWidgetType
+            {
+            EUnknown,
+            ENative,
+            ECps // wrt widgets included in this category
+            };
+
+public: // construction
+    /**
+     * static constructor
+     * @param aHsContentInfo (takes ownership)
+     * @param aRegistryClientSession (does not take ownership)
+     */
+    static CWmWidgetData* NewL( 
+            CHsContentInfo* aHsContentInfo,
+            RWidgetRegistryClientSession* aRegistryClientSession );
+
+    /**
+     * static constructor, leaves object in cleanup stack
+     * @param aHsContentInfo (takes ownership)
+     * @param aRegistryClientSession (does not take ownership)
+     */
+    static CWmWidgetData* NewLC( 
+            CHsContentInfo* aHsContentInfo,
+            RWidgetRegistryClientSession* aRegistryClientSession );
+        
+    /** Destructor. */
+    ~CWmWidgetData();
+
+private: // private construction
+    /** Constructor for performing 1st stage construction */
+    CWmWidgetData();
+
+    /** 2nd phase constructor */
+    void ConstructL(
+            CHsContentInfo* aHsContentInfo,
+            RWidgetRegistryClientSession* aRegistryClientSession );
+
+    /**
+     * Initialisation routine
+     * called from ConstructL and whenever the content type changes
+     */
+    void InitL(
+            CHsContentInfo* aHsContentInfo,
+            RWidgetRegistryClientSession* aRegistryClientSession );
+
+public: // external handles
+
+    /** 
+     * sets an observer for callbacks 
+     *
+     * @param aObserver notifications when changes occur in widget data
+     */
+    void SetObserver( MWmWidgetDataObserver* aObserver );
+
+    /**
+     * persistent widget order handle, which is used in comparing
+     */
+    void SetPersistentWidgetOrder(
+            const CWmPersistentWidgetOrder* aPersistentWidgetOrder );
+    
+    /**
+     * set logo rect size
+     */
+    void SetLogoSize( const TSize& aSize );
+
+    /**
+     * Init logo re-creation
+     */
+    void ReCreateLogo( const TSize& aSize );
+    
+    /**
+     * Replaces the content of this widget data. The method is called
+     * during widget update. If widget values change, a change event is
+     * fired for the observer.
+     * 
+     * @param aHsContentInfo new content (takes ownership)
+     * @return ETrue if content was changed
+     */
+    TBool ReplaceContentInfoL(
+            CHsContentInfo* aHsContentInfo );
+    
+public: // comparing / sorting
+    /** whether this object represents the same widget as aContentInfo */
+    TBool EqualsTo( CHsContentInfo& aContentInfo );
+    
+    /** comparator function for sort by name (compare two names)*/    
+    static TInt CompareByName(
+                        const CWmWidgetData& aDataOne,
+                        const CWmWidgetData& aDataTwo );
+
+    /**
+     * comparator function for sorting by stored order
+     **/
+    static TInt CompareByPersistentWidgetOrder(
+            const CWmWidgetData& aDataOne,
+            const CWmWidgetData& aDataTwo );
+
+public: // methods to read the content
+    
+    /** the HsContent info */
+    inline CHsContentInfo& HsContentInfo();
+
+    /** the HsContent info */
+    inline const CHsContentInfo& HsContentInfo() const;
+
+    /** widget name */
+    inline const TDesC& Name() const;
+
+    /** widget description */
+    inline const TDesC& Description() const;
+
+    /** widget uid */
+    inline TUid Uid() const;
+    
+    /** cps widget publisher id */
+    inline const TDesC& PublisherId() const;
+    
+    /** cps widget publisher uid */
+    TUid PublisherUid();
+    
+    /** widget type */
+    inline TWidgetType WidgetType() const;
+
+    /** running install animation index */
+    inline TInt InstallAnimationIndex() const;
+
+    /** the logo bitmap */
+    inline const CFbsBitmap* LogoImage();
+
+    /** the logo bitmap */
+    inline const CFbsBitmap* LogoImageMask();
+
+    /** whether the widget data is valid or not */
+    inline TBool IsValid();
+    
+    /** sets the widget data validity */
+    inline void SetValid( TBool aValid );
+    
+protected: // from MConverterObserver
+
+    /** image conversin completed */
+    void NotifyCompletion( TInt aError );
+
+private: // new functions
+
+    /** fetches publisher uid from widget registry*/
+    void FetchPublisherUidL( 
+            RWidgetRegistryClientSession* aRegistryClientSession );
+
+    /** Converts uid to TUid from TDesC8 */
+    TUid UidFromString( const TDesC8& aUidString ) const;
+    
+    /** Logo icon string handling */
+    static TInt HandleAsyncIconString( TAny* aPtr );
+    void HandleIconStringL( const TDesC& aIconStr );
+    void FireDataChanged();
+
+private: // data members
+    
+    /* instance of the CIdle class for async iconStr handling*/
+    CIdle*              iIdle;
+
+    /* the image converter utility */
+    CWmImageConverter*    iImageConverter;
+
+    /* observes this widget representation (NOT OWNED) */
+    MWmWidgetDataObserver* iObserver;
+
+    /* rotating animation index */
+    TInt                iInstallAnimationIndex;
+
+    /** the widget logo bitmap */
+    CFbsBitmap*         iLogoImage;
+
+    /** the widget logo mask */
+    CFbsBitmap*         iLogoImageMask;
+    
+    /** The CHsContentInfo that corresponds to this list row */
+    CHsContentInfo*     iHsContentInfo;
+
+    /** type oif the widget */
+    TWidgetType         iWidgetType;
+
+    /** persistent order of widgets (used in sorting) */
+    const CWmPersistentWidgetOrder* iPersistentWidgetOrder;
+
+    /** wrt widget publisher uid */
+    TUid                iPublisherUid;
+    
+    /** size of logo rect in list item */
+    TSize               iLogoSize;
+    
+    /** validity of the widget - used during list refresh */
+    TBool               iValid;
+    
+    };
+
+
+/**
+ * Pointer array of widget data objects.
+ * Also acts as an adapter to a descriptor array, providing the
+ * widget names as descriptor array elements.
+ */
+NONSHARABLE_CLASS( RWidgetDataValues ) : public RPointerArray<CWmWidgetData>,
+    public MDesCArray
+    {
+    protected: // from MDesCArray
+        /** returns number of items in the pointer array */
+        inline TInt MdcaCount() const;
+
+        /** returns the pointed widget name */
+        inline TPtrC16 MdcaPoint(TInt aIndex) const;
+
+    };
+
+#include "wmwidgetdata.inl"
+#endif // WMWIDGETDATA_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/inc/wmwidgetdata.inl	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,85 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies)..
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* CWmWidgetData , RWidgetDataValues inline function definitions
+*
+*/
+
+#ifndef WMWIDGETDATA_INL_
+#define WMWIDGETDATA_INL_
+
+    /** the HsContent info */
+    inline CHsContentInfo& CWmWidgetData::HsContentInfo()
+        { return *iHsContentInfo; }
+
+    /** the HsContent info */
+    inline const CHsContentInfo& CWmWidgetData::HsContentInfo() const
+        { return *iHsContentInfo; }
+
+    /** widget name */
+    inline const TDesC& CWmWidgetData::Name() const
+        { return iHsContentInfo->Name(); }
+
+    /** widget description */
+    inline const TDesC& CWmWidgetData::Description() const
+        { return iHsContentInfo->Description(); }
+
+    /** widget uid */
+    inline TUid CWmWidgetData::Uid() const
+        { return UidFromString( iHsContentInfo->Uid() ); };
+    
+    /** cps widget publisher id */
+    inline const TDesC& CWmWidgetData::PublisherId() const
+        { return iHsContentInfo->PublisherId(); }
+    
+    /** widget type */
+    inline CWmWidgetData::TWidgetType CWmWidgetData::WidgetType() const
+        { return iWidgetType; }
+
+    /** running install animation index */
+    inline TInt CWmWidgetData::InstallAnimationIndex() const
+        { return iInstallAnimationIndex; }
+
+    /** the logo bitmap */
+    inline const CFbsBitmap* CWmWidgetData::LogoImage()
+        { return iLogoImage; }
+
+    /** the logo bitmap */
+    inline const CFbsBitmap* CWmWidgetData::LogoImageMask()
+        { return iLogoImageMask; }
+  
+    /** whether the widget data is valid or not */
+    inline TBool CWmWidgetData::IsValid()
+        { return iValid; }
+    
+    /** sets the widget data validity */
+    inline void CWmWidgetData::SetValid( TBool aValid )
+        { iValid = aValid; }
+    
+    
+    //From  RWidgetDataValues
+    
+    /** returns number of items in the pointer array */
+    inline TInt RWidgetDataValues::MdcaCount() const
+        {
+        return Count();
+        }
+    /** returns the pointed widget name */
+    inline TPtrC16 RWidgetDataValues::MdcaPoint(TInt aIndex) const
+        {
+        const TPtrC16 ptr( (*this)[aIndex]->Name() );
+        return ptr;
+        }
+
+#endif /* WMWIDGETDATA_INL_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/inc/wmwidgetdataobserver.h	Thu Jan 07 12:39:41 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:
+* Observer for changes in the widget data
+*
+*/
+
+
+#ifndef WMWIDGETDATAOBSERVER_H
+#define WMWIDGETDATAOBSERVER_H
+
+// INCLUDES
+#include <e32std.h>
+
+// Forward declarations
+class CWmWidgetData;
+
+// CLASS DECLARATION
+
+/**
+ * Observer class for receiving notifications
+ * when changes occur in widget data
+ */
+NONSHARABLE_CLASS( MWmWidgetDataObserver )
+    {
+    public:
+        /**
+         * A single widget data has changed.
+         * @param aWidgetData pointer to the data where change
+         *        has occurred
+         */
+        virtual void HandleWidgetDataChanged(
+                            CWmWidgetData* aWidgetData ) = 0;
+
+    };
+
+#endif // WMWIDGETDATAOBSERVER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/inc/wmwidgetloaderao.h	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,126 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies)..
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* Active object to load widgets into list
+*
+*/
+
+#ifndef WMWIDGETLOADERAO_H_
+#define WMWIDGETLOADERAO_H_
+
+// INCLUDES
+#include <e32base.h>
+
+// FORWARD DECLARATIONS
+class CWmPlugin;
+class CWmListBox;
+class CHsContentInfo;
+class CWmWidgetData;
+class CWmPersistentWidgetOrder;
+class RWidgetRegistryClientSession;
+
+// CLASS DECLARATIONS
+
+/**
+ * Active object to load widgets into list
+ */
+NONSHARABLE_CLASS( CWmWidgetLoaderAo ) : public CAsyncOneShot
+    {
+    
+public:
+	/**
+     * Static constructor
+     */
+	static CWmWidgetLoaderAo* NewL(
+	        CWmPlugin& aWmPlugin,
+	        CWmListBox& aTargetList );
+	
+    /**
+     * Destructor.
+     */
+	~CWmWidgetLoaderAo();
+
+    /**
+     * Starts the load process by activating the AO
+     */
+    void StartLoading();
+    
+private:
+    
+    /**
+     * Constructor
+     */
+    CWmWidgetLoaderAo(
+            CWmPlugin& aWmPlugin,
+            CWmListBox& aTargetList );
+    
+    /**
+     * 2nd phase constructor
+     */
+    void ConstructL();
+
+protected: // from CActive
+    
+    /**
+     * AO body
+     */
+    void RunL();
+
+    /**
+     * AO error handler
+     */
+    TInt RunError( TInt aError );
+
+private:
+
+    /**
+     * loads widgets into the listbox
+     */
+    void DoLoadWidgetsL();
+
+    /**
+     * finds a widget data entry from iWidgetsList that matches
+     * given content info. returns a pointer to the data found,
+     * or NULL if not found
+     */
+    CWmWidgetData* FindWidgetData( CHsContentInfo& aContentInfo );
+    
+    /**
+     * adds a widget data entry to iWidgetsList
+     * takes ownership of aContentInfo
+     */
+    void AddWidgetDataL( CHsContentInfo* aContentInfo );
+    
+    /**
+     * cleanup resources allocated runing one single run
+     */
+    void Cleanup();
+    
+private: // data
+
+    /** reference to the widget manager root */
+    CWmPlugin& iWmPlugin;
+
+    /** target where widgets are to be loaded */
+    CWmListBox& iWidgetsList;
+    
+    /** widget registry */
+    RWidgetRegistryClientSession* iWidgetRegistry;
+    
+    /** persistent widget order */
+    CWmPersistentWidgetOrder* iWidgetOrder;
+    
+    };
+
+#endif // WMWIDGETLOADERAO_H_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/rom/widgetmanager.iby	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,34 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies)..
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* widgetmanager binaries
+*/
+
+#ifndef WIDGETMANAGER_IBY
+#define WIDGETMANAGER_IBY
+
+// widgetmanager plugin
+ECOM_PLUGIN( widgetmanager.dll, widgetmanager.rsc )
+
+// widgetmanager icons
+data=DATAZ_\resource\apps\widgetmanager.mif	\resource\apps\widgetmanager.mif
+
+// widgetmanager stub sis
+data=ZSYSTEM\install\widgetmanager_stub.sis system\install\widgetmanager_stub.sis
+
+// cenrep
+data=DATAZ_\private\10202be9\20026F53.txt           private\10202be9\20026F53.txt
+
+#endif // WIDGETMANAGER_IBY
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/rom/widgetmanager_resources.iby	Thu Jan 07 12:39:41 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:
+* widgetmanager resource binaries
+*/
+
+#ifndef WIDGETMANAGER_RESOURCES_IBY
+#define WIDGETMANAGER_RESOURCES_IBY
+
+// widgetmanager resources
+data=DATAZ_\resource\widgetmanagerview.rsc  \resource\widgetmanagerview.rsc
+
+#endif // WIDGETMANAGER_RESOURCES_IBY
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/sis/Create_update_sisx.bat	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,28 @@
+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
+
+rem Change dll versions for IAD update
+call elftran.exe -version 1.1 \epoc32\release\armv5\urel\widgetmanager.dll
+call elftran.exe -version 1.1 \epoc32\release\armv5\udeb\widgetmanager.dll
+
+rem Create wm sis&sisx files
+makesis widgetmanager_udeb.pkg
+signsis widgetmanager_udeb.SIS widgetmanager_udeb.SISX Nokia_RnDCert_02.der Nokia_RnDCert_02.key
+makesis widgetmanager_urel.pkg
+signsis widgetmanager_urel.SIS widgetmanager_urel.SISX Nokia_RnDCert_02.der Nokia_RnDCert_02.key
+
+rem Create wm stubsis file
+makesis -s widgetmanager_stub.pkg
\ No newline at end of file
Binary file idlehomescreen/widgetmanager/sis/Nokia_RnDCert_02.der has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/sis/Nokia_RnDCert_02.key	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICXQIBAAKBgQC/TDP7KKIaf5+uW4OD2iVZuUMC2a+SeQTjf6srlKcOm+CpPNXn
+uLNm/8fdEnyOIuRXPRKmqhs1n0JkxEGHynELWMTuKXbQx9SRAGUXzyneGn+IJNnO
+vOKHWgKCouX2hfI8rtkdqJpqmO460gGsMgw+lsbeyWyW9lnfLxq+ZC7sqQIDAQAB
+AoGBALmUWZE8GBaQ3P4u9WUCSd3DJkkrmXIFSULSZeH/chlwCwDjbbhArHothVzo
+REE3hEFFlERvHbplZ+mNouzy7boduvgUzbksGrbGMLJ2qO1GzWWVwV+GzOWKd3ss
+/98Gwoy5R8pjnkqUE2wP1iJFw0FjvUTKcYv/z6t3LLJ0CsoBAkEA+c7ixvsviQ3J
+s0INytCKU2bf8fqFQJi1VI82ukxNsujGTQ9upVSjuvqPvWyDvvTdrUBHqO+3qPut
+sEh01Q8aiQJBAMQKDJPVRu4ud3mwUfEavzL5EjqwG1k9VCNGYsT4FwtrHcxu1oP/
+pk6M3rIZukqomoEEnHWPMwhrK3fhBqi0OSECQQDr40VXege4FnH5OI2Hj4afHMyp
+VdQQXGMWFyopnzXblFz0lXb43cTCIiorR9XcMqNFHybLypkWE5o+lRzlt55pAkBQ
+P/zeF5Sts//cpL0mgdh7OVKpC6ZmZaCnwAx2rUhhuDu+kDDoYCLoTOps5fNI1LRK
+1GRoC3LMo3Jr5IYhUYWBAkBpCpN6k4JU/mszq98EojHerQNxk8sPqvQKUzTutohT
+1gLX9yepGayB/TtT2EEJDkWOlnTy/dvN6W3vzbJYz97x
+-----END RSA PRIVATE KEY-----
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/sis/backup_registration.xml	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,5 @@
+<?xml version="1.0" standalone="yes"?>
+<backup_registration>
+  <system_backup/>
+  <restore requires_reboot = "no"/>
+</backup_registration>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/sis/widgetmanager_stub.pkg	Thu Jan 07 12:39:41 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: widgetmanager_stub.pkg
+;
+
+;Language - standard language definitions
+&EN
+
+; standard SIS file header
+#{"Widget Manager"},(0x20026F53),1,0,0,TYPE=SA
+
+;Localized Vendor name
+%{"Nokia"}
+
+;Unique Vendor name
+:"Nokia"
+
Binary file idlehomescreen/widgetmanager/sis/widgetmanager_stub.sis has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/sis/widgetmanager_udeb.pkg	Thu Jan 07 12:39:41 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: widgetmanager.pkg
+;
+
+;Language - standard language definitions
+&EN
+
+; standard SIS file header
+#{"Widget Manager"},(0x20026F53),1,1,0,TYPE=SA,RU
+
+;Localised Vendor name
+%{"Nokia"}
+
+;Unique Vendor name
+:"Nokia"
+
+;Supports Series 60 v 5.0
+[0x1028315F], 0, 0, 0, {"S60ProductID"}
+
+;We need to force update to be installed to c-drive
+;becouse we are part of the homescreen. If update was installed to memcard
+;homescreen will be closed when memcard is removed.
+
+; widgetmanager plugin and plugin resource
+"\epoc32\release\armv5\udeb\widgetmanager.dll"          -"C:\sys\bin\widgetmanager.dll"
+"\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"
+
+; widgetmanager icons
+"\epoc32\data\z\resource\apps\widgetmanager.mif"        -"C:\resource\apps\widgetmanager.mif"
+
+; cenrep
+"\epoc32\data\z\private\10202be9\20026F53.txt"           -"C:\private\10202be9\20026F53.txt"
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/sis/widgetmanager_urel.pkg	Thu Jan 07 12:39:41 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: widgetmanager.pkg
+;
+
+;Language - standard language definitions
+&EN
+
+; standard SIS file header
+#{"Widget Manager"},(0x20026F53),1,1,0,TYPE=SA,RU
+
+;Localised Vendor name
+%{"Nokia"}
+
+;Unique Vendor name
+:"Nokia"
+
+;Supports Series 60 v 5.0
+[0x1028315F], 0, 0, 0, {"S60ProductID"}
+
+;We need to force update to be installed to c-drive
+;becouse we are part of the homescreen. If update was installed to memcard
+;homescreen will be closed when memcard is removed.
+
+; widgetmanager plugin and plugin resource
+"\epoc32\release\armv5\urel\widgetmanager.dll"          -"C:\sys\bin\widgetmanager.dll"
+"\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"
+
+; widgetmanager icons
+"\epoc32\data\z\resource\apps\widgetmanager.mif"        -"C:\resource\apps\widgetmanager.mif"
+
+; cenrep
+"\epoc32\data\z\private\10202be9\20026F53.txt"           -"C:\private\10202be9\20026F53.txt"
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/src/wmdetailsdlg.cpp	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,525 @@
+/*
+* 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:
+* Implementation of the widget details dlg for WidgetManager
+*
+*/
+
+// INCLUDE FILES
+#include <gdi.h>
+#include <eikrted.h> // for CRichTextEditor
+#include <txtrich.h> // for CRichText
+#include <AknUtils.h> // for AknUtils
+#include <AknsUtils.h> // MAknsSkinInstance
+#include <AknsDrawUtils.h> // AknsDrawUtils
+#include <applayout.cdl.h> //layout
+#include <layoutmetadata.cdl.h>
+#include <aknlayoutscalable_avkon.cdl.h>
+#include <aknlayoutscalable_apps.cdl.h>
+#include <AknsBasicBackgroundControlContext.h>
+
+#include <widgetmanagerview.rsg>
+#include "widgetmanager.hrh"
+#include "wmdetailsdlg.h"
+
+
+// CONSTANTS
+
+
+// MEMBER FUNCTIONS
+
+// ---------------------------------------------------------
+// FullScreenRect
+// rectangle representing the screen
+// ---------------------------------------------------------
+//
+TRect FullScreenRect()
+    {
+    TRect screen;
+    CCoeEnv* env = CCoeEnv::Static();
+    if ( env )
+        {
+        CWsScreenDevice* screenDevice = env->ScreenDevice();
+        if ( screenDevice )
+            screen.SetRect( TPoint(0,0), screenDevice->SizeInPixels() );
+        }
+    return screen;
+    }
+
+// ---------------------------------------------------------
+// CWmDetailsDlg::NewL
+// ---------------------------------------------------------
+//
+CWmDetailsDlg* CWmDetailsDlg::NewL(
+			const TDesC& aName,
+	        const TDesC& aDescription,
+	        TBool  aCanBeAdded,
+            const CFbsBitmap* aLogoBmp,
+            const CFbsBitmap* aLogoMask,
+            CAknsBasicBackgroundControlContext* aBgContext )
+    {
+    CWmDetailsDlg* self = new ( ELeave ) CWmDetailsDlg( aCanBeAdded );
+    CleanupStack::PushL( self );
+    self->ConstructL( aName, aDescription, aLogoBmp, aLogoMask, aBgContext );
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// ---------------------------------------------------------
+// CWmDetailsDlg::CWmDetailsDlg
+// ---------------------------------------------------------
+//
+CWmDetailsDlg::CWmDetailsDlg( TBool  aCanBeAdded )
+    : CAknDialog(),
+    iCanBeAdded( aCanBeAdded )
+    {
+    iBorder = TGulBorder::ERaisedControl;
+    }
+
+// ---------------------------------------------------------
+// CWmDetailsDlg::~CWmDetailsDlg
+// ---------------------------------------------------------
+//
+CWmDetailsDlg::~CWmDetailsDlg()
+    {
+    iEikonEnv->RemoveFromStack( iRtEditor );
+    iEikonEnv->RemoveFromStack( this );
+    delete iRtEditor;
+    delete iName;
+    delete iDescription;
+    delete iLogoBmp;
+    delete iLogoMask;	
+    }
+
+// -----------------------------------------------------------------------------
+// CWmDetailsDlg::ExecuteLD
+// -----------------------------------------------------------------------------
+//
+TInt CWmDetailsDlg::ExecuteLD()
+    {
+    if ( iCanBeAdded )
+        {
+        return CAknDialog::ExecuteLD( R_WM_DETAILS_ADD_DIALOG );
+        }
+    else
+        {
+        return CAknDialog::ExecuteLD( R_WM_DETAILS_ONLY_DIALOG );
+        }
+    }
+
+// ---------------------------------------------------------
+// CWmDetailsDlg::ConstructL
+// ---------------------------------------------------------
+//
+void CWmDetailsDlg::ConstructL(
+			const TDesC& aName,
+	        const TDesC& aDescription,
+            const CFbsBitmap* aLogoBmp,
+            const CFbsBitmap* aLogoMask,
+            CAknsBasicBackgroundControlContext* aBgContext )
+    {
+    if ( !aLogoBmp )
+        {
+        User::Leave( KErrArgument );
+        }
+ 
+	CAknDialog::ConstructL( R_AVKON_DIALOG_EMPTY_MENUBAR );
+    
+	iBgContext = aBgContext;
+	iName = aName.AllocL();
+	iDescription = aDescription.AllocL();
+	
+	// create bitmap and duplicate handle
+	iLogoBmp = new ( ELeave ) CFbsBitmap;
+    TSize newSize = TSize( aLogoBmp->SizeInPixels().iWidth ,
+                           aLogoBmp->SizeInPixels().iHeight );
+    User::LeaveIfError( iLogoBmp->Create( newSize, aLogoBmp->DisplayMode() ) );    
+    User::LeaveIfError( iLogoBmp->Duplicate( aLogoBmp->Handle() ) );
+	
+    if ( aLogoMask )
+        {
+        iLogoMask = new ( ELeave ) CFbsBitmap;
+        newSize = TSize( aLogoMask->SizeInPixels().iWidth ,
+                         aLogoMask->SizeInPixels().iHeight );
+        User::LeaveIfError( iLogoMask->Create( newSize, aLogoMask->DisplayMode() ) );    
+        User::LeaveIfError( iLogoMask->Duplicate( aLogoMask->Handle() ) );
+        }
+
+    iEikonEnv->AddWindowShadow( static_cast<CCoeControl*>(this) );
+    }
+
+// -----------------------------------------------------------------------------
+// CWmDetailsDlg::OkToExitL
+// -----------------------------------------------------------------------------
+//
+TBool CWmDetailsDlg::OkToExitL( TInt aButtonId )
+	{
+    if ( aButtonId == ECbaAddToHs ||
+		aButtonId == EAknSoftkeyClose )
+        {
+        // Close dlg
+        return ETrue;
+        }
+    return EFalse;
+	}
+
+// -----------------------------------------------------------------------------
+// CWmDetailsDlg::PreLayoutDynInitL
+// -----------------------------------------------------------------------------
+//
+void CWmDetailsDlg::PreLayoutDynInitL()
+    {
+    iRtEditor = new(ELeave) CEikRichTextEditor();
+    iRtEditor->ConstructL( this, 
+                        0, 
+                        0, 
+                        CEikEdwin::EReadOnly | 
+                        CEikEdwin::ENoAutoSelection | 
+                        CEikEdwin::EAvkonDisableCursor |
+                        CEikEdwin::EDisplayOnly );
+    iRtEditor->SetContainerWindowL(*this);
+    iRtEditor->SetAknEditorFlags( 
+                    EAknEditorFlagEnableScrollBars | 
+                    EEikEdwinAvkonDisableCursor |
+                    EEikEdwinDisplayOnly |
+                    EEikEdwinReadOnly );
+
+    iRtEditor->SetSkinBackgroundControlContextL( iBgContext );
+    
+    CEikScrollBarFrame* scrollBarFrame = iRtEditor->CreateScrollBarFrameL();
+    scrollBarFrame->SetScrollBarVisibilityL( CEikScrollBarFrame::EOff,
+                                             CEikScrollBarFrame::EOff );
+    
+    InsertAndFormatContentL();
+    iRtEditor->UpdateScrollBarsL();
+    }
+
+//------------------------------------------------------------------------------
+// CWmDetailsDlg::InsertAndFormatContentL
+//------------------------------------------------------------------------------
+//
+void CWmDetailsDlg::InsertAndFormatContentL()
+    {
+    CRichText* richText = iRtEditor->RichText();
+    const TInt KMinTxtLength = 100;
+    
+    richText->Reset();
+    if ( iDescription->Des().Length() <= KMinTxtLength )
+        {     
+        richText->InsertL( richText->DocumentLength(),
+                CEditableText::ELineBreak );
+        }
+    richText->InsertL( richText->DocumentLength(), *iDescription );
+
+    // change the color of the text according to the skin color
+    TRgb color = KRgbBlack;
+    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+    AknsUtils::GetCachedColor(skin, color, KAknsIIDQsnTextColors, 
+                                                    EAknsCIQsnTextColorsCG6 );
+
+    // Format text 
+    iRtEditor->SetSelectionL( 0, richText->DocumentLength() );
+
+    // Get a logical font to base my font on:
+    const CFont* logicalFont = AknLayoutUtils::FontFromId(EAknLogicalFontPrimarySmallFont);
+    // Extract font information
+    TFontSpec fontspec = logicalFont->FontSpecInTwips();
+    TCharFormat charFormat(fontspec.iTypeface.iName, fontspec.iHeight);
+    TCharFormatMask charFormatMask;
+    CParaFormat paraFormat;
+    TParaFormatMask paraFormatMask;
+    paraFormat.iHorizontalAlignment = CParaFormat::EJustifiedAlign;
+    charFormat.iFontPresentation.iTextColor = color;
+    paraFormatMask.SetAttrib(EAttAlignment);
+    charFormatMask.SetAttrib(EAttFontTypeface);
+    charFormatMask.SetAttrib(EAttFontHeight);
+    charFormatMask.SetAttrib(EAttColor);
+    iRtEditor->ApplyParaFormatL(&paraFormat, paraFormatMask);
+    iRtEditor->ApplyCharFormatL(charFormat, charFormatMask);
+    iRtEditor->ClearSelectionL();
+    }
+
+//------------------------------------------------------------------------------
+// CWmDetailsDlg::CountComponentControls
+//------------------------------------------------------------------------------
+//
+TInt CWmDetailsDlg::CountComponentControls() const
+    {
+    return iRtEditor ? 1 : 0;
+    }
+
+//------------------------------------------------------------------------------
+// CWmDetailsDlg::ComponentControl
+//------------------------------------------------------------------------------
+//
+CCoeControl* CWmDetailsDlg::ComponentControl(TInt aIndex) const
+    {
+    switch (aIndex)
+        {
+        case 0:
+            return iRtEditor;
+        default:
+            return NULL;
+        }
+    }
+
+//------------------------------------------------------------------------------
+// CWmDetailsDlg::ActivateL
+//------------------------------------------------------------------------------
+//
+void CWmDetailsDlg::ActivateL()
+	{
+    CAknDialog::ActivateL();
+	iEikonEnv->EikAppUi()->AddToStackL( this, ECoeStackPriorityDialog );
+    iEikonEnv->EikAppUi()->AddToStackL( iRtEditor );    
+    iRtEditor->SetFocus( ETrue );
+    }
+
+// -----------------------------------------------------------------------------
+// CWmDetailsDlg::WmDetailsDialogRect
+// -----------------------------------------------------------------------------
+//
+TRect CWmDetailsDlg::WmDetailsDialogRect()
+    {
+    TRect mainPane, dlgRect;    
+    TPoint topLeft;
+    TInt desiredW, desiredH;    
+    AknLayoutUtils::LayoutMetricsRect( 
+            AknLayoutUtils::EApplicationWindow, mainPane );
+
+    if ( Layout_Meta_Data::IsLandscapeOrientation() )
+        {
+        desiredW = ( mainPane.Width() - (mainPane.Width()/4) );
+        desiredH = ( mainPane.Height() - (mainPane.Height()/5) );        
+        topLeft.iX = ( ( mainPane.Width() - desiredW ) /2);
+        topLeft.iY = ( ( mainPane.Height() - desiredH ) /2);
+        dlgRect.SetRect( topLeft, TSize( desiredW, desiredH ) );
+        }
+    else
+        {
+        desiredH = ( mainPane.Height() - (mainPane.Height()/4) );
+        desiredW = ( mainPane.Width() - (mainPane.Width()/5) );
+        topLeft.iX = ( ( mainPane.Width() - desiredW ) /2);
+        topLeft.iY = ( ( mainPane.Height() - desiredH ) /2);
+        dlgRect.SetRect( topLeft, TSize( desiredW, desiredH ) );        
+        }
+    return dlgRect;
+    }
+
+// -----------------------------------------------------------------------------
+// CWmDetailsDlg::SetSizeAndPosition
+// -----------------------------------------------------------------------------
+//
+void CWmDetailsDlg::SetSizeAndPosition( const TSize& /*aSize*/ )
+    {    
+    SetRect( WmDetailsDialogRect() );
+    }
+
+// -----------------------------------------------------------------------------
+// CWmDetailsDlg::SizeChanged
+// -----------------------------------------------------------------------------
+//
+void CWmDetailsDlg::SizeChanged()
+    {
+    CAknDialog::SizeChanged();
+    TRect rect = Rect();
+    if ( iBgContext ) { iBgContext->SetRect( FullScreenRect() ); }
+    if ( iRtEditor ) 
+        {
+        const TInt offSet = 5;
+        TRect cbaRect;
+        AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EControlPane, cbaRect );
+        
+        TInt logoH = iLogoBmp->SizeInPixels().iHeight;
+        
+        TInt height, width;
+        if ( Layout_Meta_Data::IsLandscapeOrientation() )
+            {        
+            height = ( (rect.Height() - logoH) - (cbaRect.Height() * 2) - offSet );
+            }
+        else
+            {
+            height = ( (rect.Height() - logoH) - (cbaRect.Height() * 1.5) - offSet );
+            }
+ 
+        width = ( rect.Width() - (CEikScrollBar::DefaultScrollBarBreadth() * 4 ) - offSet );
+        TPoint point = TPoint( rect.iTl.iX + offSet, rect.iTl.iY + logoH + offSet );
+        TSize size = TSize( width, height );
+        iRtEditor->SetRect( TRect( point, size ) );
+        TRAP_IGNORE( 
+            iRtEditor->SetSkinBackgroundControlContextL( iBgContext );
+            InsertAndFormatContentL(); );
+        }
+    }
+
+// ----------------------------------------------------------------------------
+// CWmDetailsDlg::SupplyMopObject
+// ----------------------------------------------------------------------------
+//
+TTypeUid::Ptr CWmDetailsDlg::MopSupplyObject( TTypeUid aId )
+    {
+    if ( aId.iUid == MAknsControlContext::ETypeId )
+        {
+        return MAknsControlContext::SupplyMopObject( aId, iBgContext );
+        }
+    return CAknDialog::MopSupplyObject( aId );
+    }
+	
+// ----------------------------------------------------------------------------
+// CWmDetailsDlg::OfferKeyEventL
+// ----------------------------------------------------------------------------
+//
+TKeyResponse CWmDetailsDlg::OfferKeyEventL( const TKeyEvent& aKeyEvent,TEventCode aType )
+	{
+	if (aType == EEventKey)
+		{
+		switch (aKeyEvent.iCode)
+			{			
+			case EKeyEscape:
+				{
+				// framework calls this when dialog must shut down
+				return CAknDialog::OfferKeyEventL( aKeyEvent, aType );
+        		}
+			case EKeyDownArrow:
+                {
+                if ( iRtEditor )
+                    {
+                    iRtEditor->MoveCursorL(TCursorPosition::EFPageDown, EFalse);
+                    return EKeyWasConsumed;
+                    }
+                }
+            case EKeyUpArrow:
+                {
+                if ( iRtEditor )
+                    {
+                    iRtEditor->MoveCursorL(TCursorPosition::EFPageUp, EFalse);
+                    return EKeyWasConsumed;
+                    }
+                }				
+            default:
+				{
+				if ( iRtEditor )
+					{
+					return iRtEditor->OfferKeyEventL( aKeyEvent, aType );
+					}
+			    break;
+				}
+			}
+		}
+	return CAknDialog::OfferKeyEventL( aKeyEvent, aType);
+	}
+
+// -----------------------------------------------------------------------------
+// CWmDetailsDlg::Draw
+// -----------------------------------------------------------------------------
+//
+void CWmDetailsDlg::Draw( const TRect& /*aRect*/ ) const
+    {
+    CWindowGc& gc = SystemGc();
+    TRect rect = Rect();
+    TRect innerRect( rect );
+    TRgb color = KRgbBlack;
+    const TInt offSet = 5;
+
+    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+    MAknsControlContext* cc = AknsDrawUtils::ControlContext( this );
+
+    // draw background
+    if ( !AknsDrawUtils::Background( skin, cc, this, gc, innerRect ) )
+        {
+        gc.SetPenStyle( CGraphicsContext::ENullPen );
+        gc.SetBrushStyle( CGraphicsContext::ENullBrush );
+        gc.SetBrushColor( AKN_LAF_COLOR( 0 ) );
+        gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
+        gc.DrawRect( innerRect );
+        gc.SetBrushStyle( CGraphicsContext::ENullBrush );
+        }
+
+    // to fix scrollbar background issue in richtext editor
+    if ( iRtEditor ) 
+        {
+        MAknsControlContext* ccRte = AknsDrawUtils::ControlContext( iRtEditor );
+        AknsDrawUtils::Background( skin, ccRte, iRtEditor, gc, iRtEditor->Rect() );
+        }
+    
+    // draw logo
+    TRect bmpRect( TPoint(0,0), TSize( iLogoBmp->SizeInPixels() ) );
+    TPoint point = TPoint( innerRect.iTl.iX + offSet,
+                           innerRect.iTl.iY + offSet );
+
+    if ( iLogoBmp && iLogoMask )
+        {
+        gc.BitBltMasked( point, iLogoBmp, 
+                         bmpRect, iLogoMask, ETrue );
+        }
+    else
+        {
+        gc.BitBlt( point, iLogoBmp, bmpRect );
+        }
+
+    // draw name
+    point.iX += (bmpRect.Width() + offSet);
+    
+    AknsUtils::GetCachedColor( 
+                    skin, color, 
+                    KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG6 );
+
+    // DRAW TEXT
+    const CFont* font = AknLayoutUtils::FontFromId( EAknLogicalFontPrimaryFont );
+    gc.UseFont( font );
+    gc.SetPenColor( color );
+    gc.SetPenStyle( CGraphicsContext::ESolidPen );
+    point.iY += (bmpRect.Height() - (font->HeightInPixels() /2 ) );
+    CGraphicsContext::TDrawTextParam param;
+    
+    HBufC* buf = iName->Des().Alloc();
+    if ( buf )
+        {
+        TPtr bufPtr = buf->Des();
+        TextUtils::ClipToFit( bufPtr, *font, (innerRect.Width() - point.iX ) );
+        gc.DrawText( bufPtr ,point, param );
+        delete buf;
+        }
+    else
+        {
+        gc.DrawText( *iName ,point, param );
+        }
+    
+    gc.DiscardFont();
+    
+    // draw the rounded rectangle as border
+    const TInt KFrameRoundRadius = 3;
+    const TInt KBorderWidth = 2;
+    gc.SetPenSize( TSize( KBorderWidth, KBorderWidth ) );    
+    gc.DrawRoundRect( innerRect, TSize( KFrameRoundRadius, KFrameRoundRadius ) );
+    
+    // draw shadow
+    gc.SetBrushStyle(CGraphicsContext::ESolidBrush);
+    gc.SetPenStyle( CGraphicsContext::ESolidPen );
+    gc.SetBrushColor( color );
+    gc.SetPenColor( color );
+    TRect rightShadowArea = Rect();
+    rightShadowArea.iTl.iX = rightShadowArea.iBr.iX - offSet;
+    rightShadowArea.iTl.iY += offSet/2;
+    gc.DrawRect(rightShadowArea);
+    TRect bottomShadowArea = Rect();
+    bottomShadowArea.iTl.iX += offSet/2;
+    bottomShadowArea.iTl.iY += bottomShadowArea.iBr.iY - offSet;
+    gc.DrawRect( bottomShadowArea );
+    gc.SetBrushStyle( CGraphicsContext::ENullBrush );
+    gc.SetPenStyle( CGraphicsContext::ENullPen );
+    }
+
+// End of File
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/src/wmeffectmanager.cpp	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,157 @@
+/*
+* 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:  Effect manager.
+*
+*/
+
+
+// SYSTEM INCLUDE FILES
+#include <eikapp.h>
+#include <aknappui.h>
+#include <gfxtranseffect/gfxtranseffect.h>  // For transition effects
+#include <akntranseffect.h>                 // For transition effects
+
+// INCLUDE FILES
+#include "wmeffectmanager.h"
+
+// CONSTANTS
+const TInt KEffectTypeFullscreen = 1;
+
+const TInt KWaitForLayout = 1;
+const TInt KEffectStarted = 2;
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// C++ default constructor.
+// -----------------------------------------------------------------------------
+//
+CWmEffectManager::CWmEffectManager( CCoeEnv& aCoeEnv ): iCoeEnv (aCoeEnv)
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// Symbian 2nd phase constructor.
+// -----------------------------------------------------------------------------
+//
+void CWmEffectManager::ConstructL()
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CWmEffectManager* CWmEffectManager::NewL( CCoeEnv& aCoeEnv )
+    {
+    CWmEffectManager* self = new (ELeave) CWmEffectManager( aCoeEnv );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// Destructor.
+// -----------------------------------------------------------------------------
+//
+CWmEffectManager::~CWmEffectManager()
+    {
+    GfxTransEffect::AbortFullScreen();
+    iEffects.ResetAndDestroy();
+    }
+
+// -----------------------------------------------------------------------------
+// CWmEffectManager::BeginFullscreenEffectL
+// -----------------------------------------------------------------------------
+//
+void CWmEffectManager::BeginFullscreenEffectL( TInt aId )
+    {
+    TWmEffect* effect = new (ELeave) TWmEffect;
+    CleanupStack::PushL( effect );
+    effect->iId = aId;
+    effect->iType = KEffectTypeFullscreen;
+    effect->iState = KWaitForLayout;
+    iEffects.Append( effect );
+    
+    CleanupStack::Pop( effect );
+
+    DoBeginFullscreenEffect( *effect );
+    }
+
+// -----------------------------------------------------------------------------
+// CWmEffectManager::UiRendered
+// -----------------------------------------------------------------------------
+//
+void CWmEffectManager::UiRendered()
+    {
+    for ( TInt i = 0; i < iEffects.Count(); )
+        {
+        TWmEffect* effect = iEffects[i];
+        if ( effect && effect->iState == KEffectStarted )
+            {
+            GfxTransEffect::EndFullScreen();
+            RemoveEffect( effect );
+            }
+        else
+            {
+            // RemoveEffect() will remove from iEffects array and
+            // thats why we need to have conter in else
+            i++;
+            }
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CWmEffectManager::DoBeginFullscreenEffect
+// -----------------------------------------------------------------------------
+//
+void CWmEffectManager::DoBeginFullscreenEffect( TWmEffect& aEffect )
+    {
+    if ( iCoeEnv.WsSession().GetFocusWindowGroup() != 
+         iCoeEnv.RootWin().Identifier() )
+        {
+        // Window group is not focused
+        RemoveEffect( &aEffect );
+        return;
+        }
+
+    const TInt flags( AknTransEffect::TParameter::EActivateExplicitCancel );
+    const TUid targetAppUid( iAvkonAppUi->Application()->AppDllUid() );
+
+    // Set effect begin point
+    GfxTransEffect::BeginFullScreen( aEffect.iId , iAvkonAppUi->ClientRect(),
+        AknTransEffect::EParameterType, AknTransEffect::GfxTransParam(
+        targetAppUid, flags ) );
+    
+    aEffect.iState = KEffectStarted;
+    }
+
+// -----------------------------------------------------------------------------
+// CXnEffectManager::RemoveEffect
+// -----------------------------------------------------------------------------
+//
+void CWmEffectManager::RemoveEffect( TWmEffect* aEffect )
+    {
+    TInt index = iEffects.Find( aEffect );
+    if ( index != KErrNotFound )
+        {
+        TWmEffect* temp = iEffects[index];
+        iEffects.Remove( index );
+        delete temp;
+        }
+    }
+
+// End fo file
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/src/wmimageconverter.cpp	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,913 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies)..
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* CWmImageConverter implementation
+*
+*/
+
+#include <fbs.h>
+#include <eikdef.h>
+#include <eikenv.h>
+#include <bautils.h>
+#include <imageconversion.h>
+#include <bitmaptransforms.h>
+#include <AknIconUtils.h>
+#include <AknsSkinInstance.h>
+#include <AknsUtils.h>
+#include <avkon.mbg>
+#include <apgcli.h>
+#include <SVGEngineInterfaceImpl.h>
+#include <widgetregistryconstants.h> // KWidgetUidLowerBound, KWidgetUidUpperBound
+
+#include "wmimageconverter.h"
+
+_LIT( KSkin, 		  "skin" );
+_LIT( KMif, 		  "mif" );
+_LIT( KUid,           "uid" );
+_LIT( KColon,		  ":" );
+_LIT( KSvgExt,        ".svg" );
+_LIT( KHexPrefix,     "0x" );
+const TUint KLeftParenthesis = '(';
+
+// ---------------------------------------------------------
+// CWmImageConverter::NewL
+// ---------------------------------------------------------
+//
+CWmImageConverter* CWmImageConverter::NewL( MConverterObserver* aObserver )
+    {
+    CWmImageConverter* self = 
+        new(ELeave) CWmImageConverter();
+    CleanupStack::PushL( self );    
+    self->ConstructL( aObserver );
+    CleanupStack::Pop(self);
+    return self; 
+    }
+
+// ---------------------------------------------------------
+// CWmImageConverter::CWmImageConverter 
+// ---------------------------------------------------------
+//
+CWmImageConverter::CWmImageConverter() 
+    : CActive( EPriorityStandard )
+    {
+    iState = EIdle;
+    iBitmap = NULL;
+    iMask = NULL;
+    iObserver = NULL;
+    iConversionMethod = EUnrecognized;
+    CActiveScheduler::Add( this );
+    }
+
+// ---------------------------------------------------------
+// CWmImageConverter::ConstructL
+// ---------------------------------------------------------
+//
+void CWmImageConverter::ConstructL( MConverterObserver* aObserver )
+    {
+    User::LeaveIfError( iFs.Connect() );
+    iFs.ShareProtected();
+    iScaler = CBitmapScaler::NewL();
+    iObserver = aObserver;
+    }
+
+// ---------------------------------------------------------
+// CWmImageConverter::~CWmImageConverter
+// ---------------------------------------------------------
+//
+CWmImageConverter::~CWmImageConverter()
+    {
+    Cancel();
+    delete iImageDecoder;
+    iFs.Close(); 
+    if (iBitmap) 
+        {
+        delete iBitmap;
+        iBitmap = NULL;
+        }    
+    if (iMask) 
+        {
+        delete iMask; 
+        iMask = NULL;
+        }    
+    delete iScaler;
+    }
+
+// ---------------------------------------------------------
+// CWmImageConverter::HandleIconStringL
+// ---------------------------------------------------------
+//
+void CWmImageConverter::HandleIconStringL( 
+                            TInt aWidth, TInt aHeight, 
+                            const TDesC& aIconStr )
+    {
+    if ( aIconStr.Length() )
+        {
+        TAknsItemID skinItemId;
+        skinItemId.iMajor = 0;
+        skinItemId.iMinor = 0;
+        TInt bitmapId( KErrNotFound );
+        TInt maskId( KErrNotFound );
+        TUid appUid;
+        iFilename = KNullDesC;
+        iScaleNeeded = EFalse;    
+        iSize.SetSize( aWidth, aHeight );
+        
+        if ( ResolveSkinIdAndMifId( 
+                aIconStr, skinItemId, bitmapId, maskId, iFilename ) )
+            {
+            if ( bitmapId >= 0 && skinItemId.iMajor > 0 )
+                iConversionMethod = ESkinAndMifIcon;
+            else if ( bitmapId >= 0 )
+                iConversionMethod = EMifIcon;
+            else
+                iConversionMethod = ESkinIcon;
+            CreateSkinOrMifIconL( 
+                    skinItemId, bitmapId, maskId, iFilename );
+            }
+        else if ( ResolveUid( aIconStr, appUid ) )
+            {
+            iConversionMethod = EUidIcon;
+            CreateIconFromUidL( appUid );
+            }
+        else if ( EndsWith( aIconStr, KSvgExt ) )
+            {
+            // filename_with_full_path.svg
+            iConversionMethod = ESvgIcon;
+            CreateIconFromSvgL( aIconStr );
+            }
+        else if ( BaflUtils::FileExists( iFs, aIconStr ) )
+            {
+            // filename_with_full_path.png/jpg
+            iConversionMethod = EImageIcon;
+            CreateIconFromOtherL( aIconStr );
+            }
+        else
+            {
+            iConversionMethod = EUnrecognized;
+            User::Leave( KErrArgument );
+            }
+        }
+    }
+
+// ---------------------------------------------------------
+// CWmImageConverter::CreateIconFromUidL
+// ---------------------------------------------------------
+//
+void CWmImageConverter::CreateIconFromUidL( const TUid& aUid )
+    {
+    CFbsBitmap* bitmap = NULL;
+    CFbsBitmap* mask = NULL;
+    
+    if ( aUid.iUid >= KWidgetUidLowerBound &&
+       aUid.iUid < KWidgetUidUpperBound  )
+        {
+        // AknsUtils::CreateAppIconLC panics incase of WRT
+
+        RApaLsSession lsSession;
+        User::LeaveIfError( lsSession.Connect() );
+        CleanupClosePushL( lsSession );
+    
+        CArrayFixFlat<TSize>* sizeArray = new (ELeave) CArrayFixFlat<TSize>(3);
+        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++ )
+                {
+                size = (*sizeArray)[i];
+                if ( size == iSize )
+                    {
+                    break;
+                    }
+                }
+            }      
+        CApaMaskedBitmap* maskedBmp = CApaMaskedBitmap::NewLC();
+        User::LeaveIfError( lsSession.GetAppIcon( aUid, size, *maskedBmp ) );
+        iBitmap = static_cast<CFbsBitmap*>( maskedBmp );  // ownership transfered
+        
+        iMask = new ( ELeave ) CFbsBitmap;
+        User::LeaveIfError( iMask->Create( 
+                                    maskedBmp->Mask()->SizeInPixels(), 
+                                    maskedBmp->Mask()->DisplayMode() ) );
+        // duplicate mask, origional is owned by maskedBmp
+        iMask->Duplicate( maskedBmp->Mask()->Handle() );
+        CleanupStack::Pop( maskedBmp );
+        maskedBmp = NULL;
+        CleanupStack::PopAndDestroy(sizeArray); 
+        CleanupStack::PopAndDestroy( &lsSession );
+
+        // scale or notify
+        if ( size == iSize )
+            {
+            iObserver->NotifyCompletion( KErrNone );
+            }
+        else
+            {
+            iScaleNeeded = ETrue;
+            ScaleBitmap( iSize.iWidth, iSize.iHeight );
+            }
+        }
+    else if ( aUid.iUid != KNullUid.iUid )
+        {
+        MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+        TInt err( KErrNone );
+        TRAP( err,
+                {
+                AknsUtils::CreateAppIconLC( skin, aUid,
+                        EAknsAppIconTypeContext, bitmap, mask );
+                CleanupStack::Pop( 2 ); // for trap
+                }
+            );
+        
+        if( KErrNone != err )
+            {
+            // If icon is not created, try to create default application icon
+            AknsUtils::CreateIconLC( skin,
+                KAknsIIDQgnMenuUnknownLst, bitmap, mask,
+                AknIconUtils::AvkonIconFileName(),
+                EMbmAvkonQgn_menu_unknown_lst,
+                EMbmAvkonQgn_menu_unknown_lst_mask );
+            CleanupStack::Pop( 2 ); // for trap
+            }
+        
+        iBitmap = bitmap;
+        iMask = mask;
+                
+        err = AknIconUtils::SetSize( iBitmap , iSize, EAspectRatioNotPreserved );
+        if ( KErrNone == err )
+            {
+            err = AknIconUtils::SetSize( iMask , iSize, EAspectRatioNotPreserved );
+            }
+
+        // notify observer
+        iObserver->NotifyCompletion( err );
+        }
+    else
+        {
+        User::Leave( KErrArgument );
+        }
+    }
+
+// ---------------------------------------------------------
+// CWmImageConverter::CreateIconFromSvgL
+// ---------------------------------------------------------
+//
+void CWmImageConverter::CreateIconFromSvgL( const TDesC& aFileName )
+    {
+    if ( iBitmap )
+        {
+        delete iBitmap;
+        iBitmap = NULL;
+        }
+    if ( iMask )
+        {
+        delete iMask;
+        iMask = NULL;
+        }
+
+    TDisplayMode mode = CEikonEnv::Static()->ScreenDevice()->DisplayMode();
+    TFontSpec fontspec;
+    
+    CFbsBitmap* frameBuffer = new ( ELeave ) CFbsBitmap;
+    CleanupStack::PushL( frameBuffer );
+    frameBuffer->Create( iSize, mode );
+    
+    CSvgEngineInterfaceImpl* svgEngine = CSvgEngineInterfaceImpl::NewL( 
+            frameBuffer, NULL, fontspec );
+    svgEngine->SetDRMMode( EFalse );  
+
+    TInt domHandle;
+    CheckSvgErrorL( svgEngine->PrepareDom( aFileName, domHandle ) );
+    
+    CFbsBitmap* bitmap = new(ELeave) CFbsBitmap;    
+    User::LeaveIfError( bitmap->Create( iSize, mode) );
+    CleanupStack::PushL( bitmap );
+    
+    CFbsBitmap* mask = new(ELeave) CFbsBitmap;    
+    User::LeaveIfError( mask->Create( iSize, EGray256 ) );
+    CleanupStack::PushL( mask );
+    
+    CheckSvgErrorL( svgEngine->UseDom( domHandle, bitmap, mask ) );
+
+    MSvgError* err;
+    svgEngine->Start( err );
+    CheckSvgErrorL( err );
+    
+    CheckSvgErrorL( svgEngine->UseDom( domHandle, NULL, NULL ) );
+    CheckSvgErrorL( svgEngine->DeleteDom( domHandle ) );
+
+    CleanupStack::Pop( mask );
+    CleanupStack::Pop( bitmap );
+    CleanupStack::PopAndDestroy( frameBuffer );
+    
+    iBitmap = bitmap;
+    iMask = mask;
+    iObserver->NotifyCompletion( KErrNone );
+    }
+
+// ---------------------------------------------------------
+// CWmImageConverter::CheckSvgErrorL
+// ---------------------------------------------------------
+//
+void CWmImageConverter::CheckSvgErrorL( MSvgError* aError )
+    {
+    if ( aError )
+        {
+        User::LeaveIfError( aError->SystemErrorCode() );
+        }
+    }
+
+// ---------------------------------------------------------
+// CWmImageConverter::CreateIconFromOtherL
+// ---------------------------------------------------------
+//
+void CWmImageConverter::CreateIconFromOtherL( const TDesC& aFileName )
+    {
+    if ( IsActive() || iState != EIdle )
+        {
+        User::Leave( KErrNotReady );
+        }
+    
+    if ( iImageDecoder ) delete iImageDecoder; iImageDecoder = NULL;
+    if (iBitmap) {delete iBitmap; iBitmap = NULL;}
+    if (iMask) {delete iMask; iMask = NULL;}
+    
+    iFilename.Copy( aFileName );
+    
+    // create the decoder
+    iImageDecoder = CImageDecoder::FileNewL( iFs, iFilename );
+    
+    TSize size = iImageDecoder->FrameInfo().iOverallSizeInPixels;
+
+    // create the destination bitmap
+    iBitmap = new (ELeave) CFbsBitmap();
+    iBitmap->Create( size,
+                     iImageDecoder->FrameInfo().iFrameDisplayMode ); 
+    
+    iMask = new (ELeave) CFbsBitmap();
+    iMask->Create( size, EGray256 ); 
+    
+    if ( size != iSize )
+        {
+        iScaleNeeded = ETrue;
+        }
+    // start conversion to bitmap
+    iState = EDecoding;
+    iImageDecoder->Convert( &iStatus, *iBitmap, *iMask );
+    SetActive();
+    }
+
+// ---------------------------------------------------------
+// CWmImageConverter::DoCancel
+// ---------------------------------------------------------
+//
+void CWmImageConverter::DoCancel()
+    {
+    if( iState == EDecoding )
+        {
+        iImageDecoder->Cancel();        
+        if ( iObserver )
+            {
+            iObserver->NotifyCompletion( KErrCancel );
+            }
+        }    
+    else if( iState == EScalingBitmap ||
+        iState == EScalingMask )
+        {
+        iScaler->Cancel();
+        if ( iObserver )
+            {
+            iObserver->NotifyCompletion( KErrCancel );
+            }
+        }    
+    else
+        {
+        // State is EIdle, do nothing
+        }
+    iState = EIdle;
+    iScaleNeeded = EFalse;
+    }
+
+// ---------------------------------------------------------
+// CWmImageConverter::RunL
+// ---------------------------------------------------------
+//
+void CWmImageConverter::RunL()
+    {
+    switch( iState ) 
+        {
+        case EDecoding:
+            {
+            if( iStatus.Int() == KErrNone )
+                {
+                if ( iScaleNeeded )
+                    {
+                    ScaleBitmap( iSize.iWidth, iSize.iHeight );
+                    }
+                else
+                    {
+                    iState = EIdle;
+                    if ( iObserver )
+                        {
+                        iObserver->NotifyCompletion( KErrNone );
+                        }
+                    }
+                break;
+                }
+            else if( iStatus.Int() == KErrUnderflow ) 
+                {
+                iImageDecoder->ContinueConvert( &iStatus );
+                SetActive();
+                break;
+                }
+            else if ( iStatus.Int() == KErrCorrupt )
+                {
+                iState = EIdle;
+                iScaleNeeded = EFalse;
+                if ( iBitmap )
+                    {
+                    delete iBitmap;
+                    iBitmap = NULL;
+                    }
+                if ( iMask )
+                    {
+                    delete iMask;
+                    iMask = NULL;
+                    }
+                if ( iObserver )
+                    {
+                    iObserver->NotifyCompletion( KErrCorrupt );
+                    }
+                break;
+                }
+            else
+                {
+                // Unknown error
+                iState = EIdle;
+                iScaleNeeded = EFalse;
+                if ( iBitmap )
+                    {
+                    delete iBitmap;
+                    iBitmap = NULL;
+                    }
+                if ( iMask )
+                    {
+                    delete iMask;
+                    iMask = NULL;
+                    }
+                if ( iObserver )
+                    {
+                    iObserver->NotifyCompletion( iStatus.Int() );
+                    }
+                break;
+                }
+            }
+        case EScalingBitmap:
+            {
+            if( iStatus.Int() == KErrNone && iMask )
+                {
+                ScaleMask( iSize.iWidth, iSize.iHeight );
+                }
+            else
+                {
+                iState = EIdle;
+                iScaleNeeded = EFalse;
+                if ( iObserver )
+                    {
+                    iObserver->NotifyCompletion( iStatus.Int() );
+                    }                
+                }
+            break;
+            }
+        case EScalingMask:
+            {
+            iState = EIdle;
+            iScaleNeeded = EFalse;
+            if ( iObserver )
+                {
+                iObserver->NotifyCompletion( iStatus.Int() );
+                }
+            break;
+            }
+        default:
+            break;
+        }   
+    }
+
+// ---------------------------------------------------------
+// CWmImageConverter::RunError
+// ---------------------------------------------------------
+//
+TInt CWmImageConverter::RunError(TInt /*aError*/)
+    {
+    // Our RunL does not contain any method calls that would leave, so this method
+    // should never be called.
+    iScaleNeeded = EFalse;
+    return KErrNone;
+    }
+
+// ---------------------------------------------------------
+// CWmImageConverter::ScaleBitmap
+// ---------------------------------------------------------
+//
+void CWmImageConverter::ScaleBitmap( TInt aWidth, TInt aHeight )
+    {
+    if ( !IsActive() && 
+         iBitmap &&
+        ( iState == EDecoding || iState == EIdle ) )
+        {
+        // the maintain aspect ratio is by default set to true
+        iScaler->Scale( &iStatus, *iBitmap, TSize( aWidth,aHeight ), EFalse );
+        iState = EScalingBitmap;
+        SetActive();
+        }
+    }
+
+// ---------------------------------------------------------
+// CWmImageConverter::ScaleMask
+// ---------------------------------------------------------
+//
+void CWmImageConverter::ScaleMask( TInt aWidth, TInt aHeight )
+    {
+    if ( !IsActive() && 
+        iState == EScalingBitmap &&
+        iMask )
+        {
+        // the maintain aspect ratio is by default set to true
+        iScaler->Scale( &iStatus, *iMask, TSize(aWidth,aHeight), EFalse );
+        iState = EScalingMask;
+        SetActive();
+        }
+    }
+
+// ---------------------------------------------------------
+// CWmImageConverter::Bitmap
+// ---------------------------------------------------------
+//
+CFbsBitmap* CWmImageConverter::Bitmap()
+    {
+    CFbsBitmap* bitmap = NULL;
+    if (iState == EIdle &&
+        iBitmap )
+        {
+        bitmap = iBitmap;  // ownership taken
+        iBitmap = NULL;
+        }
+    return bitmap;
+    }
+
+// ---------------------------------------------------------
+// CWmImageConverter::Mask
+// ---------------------------------------------------------
+//
+CFbsBitmap* CWmImageConverter::Mask()
+    {
+    CFbsBitmap* mask = NULL;
+    if (iState == EIdle &&
+        iMask )
+        {
+        mask = iMask;  // ownership taken
+        iMask = NULL;
+        }
+    return mask;
+    }
+
+// ---------------------------------------------------------
+// CWmImageConverter::EndsWith
+// ---------------------------------------------------------
+//
+TBool CWmImageConverter::EndsWith( const TDesC& aString, 
+                                const TDesC& aPattern )
+    {
+    return ( aString.Right( aPattern.Length() ) == aPattern );
+    }
+
+// ---------------------------------------------------------------------------
+// CWmImageConverter::ResolveUid
+// ---------------------------------------------------------------------------
+//
+TBool CWmImageConverter::ResolveUid( 
+                const TDesC& aPath, TUid& aUid )
+    {
+    // Syntax: uid(0x12345678)
+    TInt error = KErrNotFound;
+    TInt pos = aPath.FindF( KUid );
+    if( pos == 0 )
+        {
+        // Skip skin token
+        pos += KUid().Length();
+
+        // Initialize lexer
+        TLex lex( aPath.Mid( pos ) );
+
+        // Check left parenthesis
+        if ( lex.Get() == KLeftParenthesis )
+            {
+            lex.SkipSpaceAndMark();
+            lex.SkipCharacters();
+            
+            TPtrC mtoken = lex.MarkedToken();
+            pos = mtoken.FindF( KHexPrefix );
+            if ( pos == 0 )
+                {
+                TLex lex( mtoken.Mid( KHexPrefix().Length() ) );
+                TUint id = 0;
+                error = lex.Val( id, EHex );
+                aUid = TUid::Uid( (TInt)id );
+                }
+            else
+                {
+                TInt id( 0 );
+                error = lex.Val( id );
+                aUid.iUid = id;
+                }
+            }
+        }
+    
+    return (error == KErrNone );
+    }
+
+// ---------------------------------------------------------------------------
+// CWmImageConverter::ResolveSkinId
+// ---------------------------------------------------------------------------
+//
+TBool CWmImageConverter::ResolveSkinId( 
+                const TDesC& aPath, TAknsItemID& aItemId )
+    {
+    // Syntax: skin(major minor)
+    TInt error = KErrNotFound;
+    TInt pos = aPath.FindF( KSkin );
+    if( pos == 0 )
+        {
+        // Skip skin token
+        pos += KSkin().Length();
+
+        // Initialize lexer
+        TLex lex( aPath.Mid( pos ) );
+        
+        lex.SkipSpaceAndMark();
+        // Check left parenthesis
+        if ( lex.Get() == KLeftParenthesis )
+           {
+           pos++;
+           TLex lex( aPath.Mid( pos ) );
+           lex.SkipSpaceAndMark();
+           
+           TPtrC mtoken = lex.MarkedToken();
+           pos = mtoken.FindF( KHexPrefix );
+           if ( pos == 0 )
+              {
+              TUint majorId( 0 );
+              TUint minorId( 0 );              
+              lex.Assign( mtoken.Mid( KHexPrefix().Length() ) );
+              error = lex.Val( majorId, EHex );
+              lex.SkipSpace();
+              lex.SkipAndMark( KHexPrefix().Length() );
+              error |= lex.Val( minorId, EHex );
+              aItemId.Set( majorId, minorId );
+              }
+          else
+              {
+              TInt majorId(0);
+              TInt minorId(0);
+              error = lex.Val( majorId );
+              lex.SkipSpace();
+              error |= lex.Val( minorId );                      
+              aItemId.Set( majorId, minorId );
+              }
+           }        
+        }
+
+    return (error == KErrNone );
+    }
+
+// ---------------------------------------------------------------------------
+// CWmImageConverter::ResolveMifId
+// ---------------------------------------------------------------------------
+//
+TBool CWmImageConverter::ResolveMifId( 
+                const TDesC& aPath, TInt& aBitmapId,
+                TInt& aMaskId, TDes& aFileName )
+    {
+    // Syntax: mif(filename bimapId maskId)
+   TInt error = KErrNotFound;
+   TInt pos = aPath.FindF( KMif );
+   if( pos == 0 )
+        {
+        // Skip mif token
+        pos += KMif().Length();
+        // Initialize lexer
+        TLex lex( aPath.Mid( pos ) );
+
+        // Check left parenthesis
+        if ( lex.Get() == KLeftParenthesis )
+           {
+           lex.SkipSpaceAndMark();
+           lex.SkipCharacters();
+           // Resolve MifFile name
+           aFileName.Copy(lex.MarkedToken());
+           if( aFileName.Length()!= 0)
+               {
+               // Resolve bitmap id  
+               lex.SkipSpace();
+               error = lex.Val( aBitmapId );
+               
+               // Resolve mask id
+               // dont return error if it is not found, that is ok
+               lex.SkipSpace();
+               lex.Val( aMaskId );
+               }
+           else
+               {
+               error = KErrNotFound;
+               }
+           }        
+        }    
+    return (error == KErrNone );
+    }
+
+// ---------------------------------------------------------------------------
+// CWmImageConverter::ResolveSkinIdAndMifId
+// ---------------------------------------------------------------------------
+//
+TBool CWmImageConverter::ResolveSkinIdAndMifId( 
+                const TDesC& aPath, TAknsItemID& aItemId,
+                TInt& aBitmapId, TInt& aMaskId, TDes& aFileName )
+   {
+   // Syntax: skin(major minor):mif(filename bimapId maskId) 
+   TBool result = ResolveSkinId( aPath, aItemId );
+   if ( result )
+	   {
+	   TInt pos = aPath.FindF( KColon );
+	   if ( pos != KErrNotFound )
+	       {
+	       TPtrC ptr = aPath.Mid( pos+1 );
+	       result = ResolveMifId( ptr, aBitmapId, aMaskId, aFileName );
+	       }
+	   }
+   else
+       {
+       result = ResolveMifId( aPath, aBitmapId, aMaskId, aFileName );
+       }
+   return result;
+   }
+
+// ---------------------------------------------------------------------------
+// CWmImageConverter::CreateSkinOrMifIconL
+// ---------------------------------------------------------------------------
+//
+void CWmImageConverter::CreateSkinOrMifIconL( 
+                const TAknsItemID& aItemId, TInt aBitmapId, 
+                TInt aMaskId, const TDesC& aFileName )
+    {
+    iFilename = aFileName;
+    CFbsBitmap* bitmap = NULL;
+    CFbsBitmap* mask = NULL;
+    
+    // Load from skin 
+    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+    if ( skin && aItemId.iMajor != 0 && aItemId.iMinor != 0 )
+        {
+        TInt err( KErrNone );
+        CAknsMaskedBitmapItemData* itemData = NULL;
+        TRAP( err, itemData = 
+                    static_cast<CAknsMaskedBitmapItemData*>(
+                    skin->CreateUncachedItemDataL( aItemId, EAknsITMaskedBitmap ) ); );
+        if( itemData && KErrNone == err )
+            {
+            CleanupStack::PushL( itemData );
+            // Detach bitmaps
+            bitmap = itemData->Bitmap();
+            itemData->SetBitmap( NULL );
+            mask = itemData->Mask();
+            itemData->SetMask( NULL );
+            CleanupStack::PopAndDestroy( itemData );
+            }
+        else 
+            {
+            // look in imagetable
+            CAknsImageTableItemData* iconData = NULL;
+            TRAP( err, iconData = static_cast<CAknsImageTableItemData*>(
+                            skin->CreateUncachedItemDataL( aItemId, EAknsITImageTable ) ); );
+            if( iconData && KErrNone == err )
+                {
+                CleanupStack::PushL( iconData );
+                if( iconData->NumberOfImages() )
+                    {                        
+                    TAknsItemID iconIId;
+                    iconIId.Set( iconData->ImageIID(0) );
+                    TRAP( err, AknsUtils::CreateIconL( 
+                            skin, iconIId, bitmap, mask, KNullDesC, -1, -1 ); );
+                    }
+                CleanupStack::PopAndDestroy( iconData );
+                }
+            }
+        
+        if ( KErrNone == err && bitmap )
+            {
+            TInt err = AknIconUtils::SetSize( bitmap , iSize, EAspectRatioNotPreserved );
+            if ( KErrNone == err  )
+                {
+                if ( mask )
+                    {
+                    err = AknIconUtils::SetSize( mask , iSize, EAspectRatioNotPreserved );
+                    }
+                iBitmap = bitmap;
+                iMask = mask;
+                // notify observer
+                iObserver->NotifyCompletion( KErrNone );
+                return;
+                }
+            else
+                {
+                if ( bitmap ) { delete bitmap; bitmap = NULL; }
+                if ( mask ){ delete mask; mask = NULL; }
+                }
+            }
+        }
+    
+    if( aBitmapId != KErrNotFound && !bitmap && 
+       aFileName.Length() && BaflUtils::FileExists( iFs, aFileName ) )
+        {
+        if ( aMaskId != KErrNotFound )
+          {
+          // Create icon from Mif filename , bitmap id and mask id          
+          AknIconUtils::CreateIconL(
+                  bitmap, mask, *this, aBitmapId, aMaskId );
+          }
+        else
+          {
+          bitmap = AknIconUtils::CreateIconL( *this, aBitmapId );
+          }
+        }
+    else
+        {
+        User::Leave( KErrArgument );
+        }
+    
+    iBitmap = bitmap;
+    iMask = mask;
+            
+    TInt err = AknIconUtils::SetSize( iBitmap , iSize, EAspectRatioNotPreserved );
+    if ( KErrNone == err )
+        {
+        err = AknIconUtils::SetSize( iMask , iSize, EAspectRatioNotPreserved );
+        }
+
+    // notify observer
+    iObserver->NotifyCompletion( err );
+    }
+
+// ---------------------------------------------------------------------------
+// CWmImageConverter::SetLogoSize()
+// ---------------------------------------------------------------------------
+//
+void CWmImageConverter::SetLogoSize( const TSize& aSize )
+    {
+    iSize = aSize;
+    }
+
+// ---------------------------------------------------------------------------
+// CWmImageConverter::ConversionMethod()
+// ---------------------------------------------------------------------------
+//
+CWmImageConverter::TConversionMethod CWmImageConverter::ConversionMethod()
+    {
+    return iConversionMethod;
+    }
+
+// ---------------------------------------------------------------------------
+// CWmImageConverter::RetrieveIconFileHandleL
+// ---------------------------------------------------------------------------
+//
+void CWmImageConverter::RetrieveIconFileHandleL( 
+    RFile& aFile, const TIconFileType /*aType*/ )
+    {
+	User::LeaveIfError( aFile.Open( iFs, iFilename, EFileShareAny ) );
+    }
+
+// ---------------------------------------------------------------------------
+// CWmImageConverter::Finished
+// ---------------------------------------------------------------------------
+//
+void CWmImageConverter::Finished()
+    {
+    // finishes using the icon file. No actions needed here.
+    }
+
+
+// End of file
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/src/wmlistbox.cpp	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,720 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies)..
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies 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 of the widget listbox for WidgetManager
+*
+*/
+
+// INCLUDE FILES
+#include <coemain.h>
+#include <StringLoader.h>
+#include <aknstyluspopupmenu.h> 
+#include <AknsDrawUtils.h>
+#include <AknsFrameBackgroundControlContext.h>
+#include <AknsListBoxBackgroundControlContext.h>
+#include <aknlayout.cdl.h>
+#include <layoutmetadata.cdl.h>
+#include <aknlayoutscalable_avkon.cdl.h>
+#include <aknlayoutscalable_apps.cdl.h>
+#include <AknLayout.lag>
+#include <widgetmanagerview.rsg>
+#include <widgetmanager.mbg>
+#include "wmcommon.h"
+#include "wmplugin.h"
+#include "wmresourceloader.h"
+#include "wmlistbox.h"
+#include "wmwidgetdata.h"
+
+// CONSTANTS
+
+// MEMBER FUNCTIONS
+
+// ---------------------------------------------------------
+// CWmListItemDrawer::NewL
+// ---------------------------------------------------------
+//
+CWmListItemDrawer* CWmListItemDrawer::NewL(
+        CWmPlugin& aWmPlugin,
+        MTextListBoxModel* aTextListBoxModel,  
+        const CFont* aFont,  
+        CFormattedCellListBoxData* aFormattedCellData,
+        CWmListBox* aListBox  )
+    {
+    CWmListItemDrawer* self = new ( ELeave ) CWmListItemDrawer(
+            aWmPlugin,
+            aTextListBoxModel,
+            aFont,
+            aFormattedCellData,
+            aListBox );
+    CleanupStack::PushL(self);   
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+// ---------------------------------------------------------
+// CWmListItemDrawer::CWmListItemDrawer
+// ---------------------------------------------------------
+//
+CWmListItemDrawer::CWmListItemDrawer(
+        CWmPlugin& aWmPlugin,
+        MTextListBoxModel* aTextListBoxModel,  
+        const CFont* aFont,  
+        CFormattedCellListBoxData* aFormattedCellData,
+        CWmListBox* aListBox )
+    : CFormattedCellListBoxItemDrawer( aTextListBoxModel,aFont,aFormattedCellData ),
+    iWmPlugin( aWmPlugin )
+	{    
+    iCellData = aFormattedCellData;
+    iListBox = aListBox;
+    iFont = aFont;
+	}
+
+// ---------------------------------------------------------
+// CWmListItemDrawer::ConstructL
+// ---------------------------------------------------------
+//
+void CWmListItemDrawer::ConstructL()
+    {
+    SetSkinEnabledL( ETrue );
+    
+    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+    AknsUtils::CreateIconL(
+            skin,
+            KAknsIIDQgnMenuHswidget,
+            iDefaultLogoImage,
+            iDefaultLogoImageMask,
+            iWmPlugin.ResourceLoader().IconFilePath(),
+            EMbmWidgetmanagerQgn_menu_hswidget,
+            EMbmWidgetmanagerQgn_menu_hswidget_mask
+            );
+	
+    AknsUtils::CreateColorIconL(
+            skin,
+            KAknsIIDQgnIndiWmAdd,
+            KAknsIIDQsnTextColors,
+            EAknsCIQsnTextColorsCG6,
+            iAddWidgetBtnImage,
+            iAddWidgetBtnMask,
+            iWmPlugin.ResourceLoader().IconFilePath(),
+            EMbmWidgetmanagerAdd_widget_button,
+            EMbmWidgetmanagerAdd_widget_button_mask,
+            KRgbBlack );
+
+    AknsUtils::CreateColorIconL(
+            skin,
+            KAknsIIDQgnIndiWmAdd,
+            KAknsIIDQsnTextColors,
+            EAknsCIQsnTextColorsCG10,
+            iAddWidgetBtnHighlightImage,
+            iAddWidgetBtnHighlightMask,
+            iWmPlugin.ResourceLoader().IconFilePath(),
+            EMbmWidgetmanagerAdd_widget_button,
+            EMbmWidgetmanagerAdd_widget_button_mask,
+            KRgbWhite );
+    }
+
+// ---------------------------------------------------------
+// CWmListItemDrawer::~CWmListItemDrawer
+// ---------------------------------------------------------
+//
+CWmListItemDrawer::~CWmListItemDrawer()
+	{
+    iCellData = NULL;
+    iListBox = NULL;
+
+    // dispose icons
+    delete iDefaultLogoImage;
+    delete iDefaultLogoImageMask;
+    delete iAddWidgetBtnImage;
+    delete iAddWidgetBtnMask;
+    delete iAddWidgetBtnHighlightImage;
+    delete iAddWidgetBtnHighlightMask;
+	}
+
+// ---------------------------------------------------------
+// CWmListItemDrawer::ResizeDefaultBitmaps
+// ---------------------------------------------------------
+//
+void CWmListItemDrawer::ResizeDefaultBitmaps()
+    {
+	TAknWindowLineLayout logoPane = 
+	          AknLayoutScalable_Apps::listrow_wgtman_pane_g1().LayoutLine();
+    TAknWindowLineLayout addPane = 
+              AknLayoutScalable_Apps::listrow_wgtman_pane_g2().LayoutLine();
+    TAknLayoutRect layoutRect;
+    TRect rect = TRect( ItemCellSize() );
+    layoutRect.LayoutRect( rect, logoPane );
+    
+    // RESIZE DEFAULT LOGO BITMAPS ACCORDING TO LAYOUT
+    TSize size = layoutRect.Rect().Size();
+    AknIconUtils::SetSize( 
+        iDefaultLogoImage, size, EAspectRatioPreserved );
+    AknIconUtils::SetSize( 
+        iDefaultLogoImageMask, size, EAspectRatioPreserved );
+    
+    // RESIZE ADD BTN BITMAPS ACCORDING TO LAYOUT
+    layoutRect.LayoutRect( rect, addPane );
+    size = layoutRect.Rect().Size();
+    AknIconUtils::SetSize( 
+        iAddWidgetBtnImage, size, EAspectRatioPreserved );
+    AknIconUtils::SetSize( 
+        iAddWidgetBtnMask, size, EAspectRatioPreserved );
+    AknIconUtils::SetSize( 
+        iAddWidgetBtnHighlightImage, size, EAspectRatioPreserved );
+    AknIconUtils::SetSize( 
+        iAddWidgetBtnHighlightMask, size, EAspectRatioPreserved );
+    }
+	
+// ---------------------------------------------------------
+// CWmListItemDrawer::DrawItem
+// ---------------------------------------------------------
+//
+void CWmListItemDrawer::DrawItem( TInt aItemIndex, TPoint aItemRectPos, 
+                            TBool aItemIsSelected, TBool aItemIsCurrent, 
+                            TBool aViewIsEmphasized, TBool aViewIsDimmed ) const
+    {
+    TSize cellSize = ItemCellSize();
+    
+    CWmWidgetData& wData = iListBox->WidgetData( aItemIndex );
+    // Get graphics context which is used for drawing.
+    CWindowGc& gc = *Gc();
+    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+    TInt selectedIndex = iListBox->CurrentItemIndex();
+    TBool isInFocus = ( selectedIndex == aItemIndex );
+    TBool listFocused = iListBox->IsFocused();
+    TRect itemRect = TRect( aItemRectPos, cellSize );
+
+    if ( isInFocus && listFocused )
+        {
+        // force baseclass to draw highlight and animation for this item
+        CFormattedCellListBoxItemDrawer::DrawItemText( 
+                aItemIndex, itemRect,
+                aItemIsCurrent, aViewIsEmphasized,
+                ( isInFocus || aItemIsSelected ) );
+		
+		if ( iListBox->PressedDown() )
+			{
+			TRect innerRect( itemRect );
+    	    const TInt highlightOffset = 3;
+	        innerRect.Shrink( highlightOffset, highlightOffset );
+			AknsDrawUtils::DrawFrame( skin,
+                                      gc,
+                                      itemRect,
+                                      innerRect,
+                                      KAknsIIDQsnFrListPressed,
+                                      KAknsIIDQsnFrListCenterPressed );
+			}
+        }
+    else
+        {
+        // to prevent item staying highlighted when list isn't focused.
+        CFormattedCellListBoxItemDrawer::DrawEmptyItem( 
+                                aItemIndex, aItemRectPos, aViewIsDimmed );
+        }
+
+    
+    // DRAW LOGO
+    CFbsBitmap* bitmap = const_cast<CFbsBitmap*>(wData.LogoImage());
+    CFbsBitmap* mask = const_cast<CFbsBitmap*>(wData.LogoImageMask());
+    TAknLayoutRect logoLayout;
+    logoLayout.LayoutRect( itemRect,
+             AknLayoutScalable_Apps::listrow_wgtman_pane_g1().LayoutLine() );
+
+    if ( !bitmap )
+        {
+        logoLayout.DrawImage( gc, iDefaultLogoImage, iDefaultLogoImageMask );
+        }
+    else
+        {
+        logoLayout.DrawImage( gc, bitmap, mask );
+        }
+
+    TRgb textColor;
+    TAknsQsnTextColorsIndex index = ( isInFocus && listFocused )? 
+                EAknsCIQsnTextColorsCG10 : EAknsCIQsnTextColorsCG6;
+
+    AknsUtils::GetCachedColor( 
+                    skin, textColor, KAknsIIDQsnTextColors, index );
+
+    // DRAW TEXT
+    gc.UseFont( iFont );
+    gc.SetPenColor( textColor );
+    gc.SetPenSize( TSize(2,2) );
+
+    TAknTextLineLayout titleTextLayout = 
+              AknLayoutScalable_Apps::listrow_wgtman_pane_t1().LayoutLine();
+    TAknTextLineLayout descTextLayout =
+            AknLayoutScalable_Apps::listrow_wgtman_pane_t2().LayoutLine();
+
+    TAknLayoutText textLayout;
+    textLayout.LayoutText( itemRect, titleTextLayout );
+    textLayout.DrawText( gc, wData.Name(), ETrue, textColor );
+    
+    if ( wData.HsContentInfo().CanBeAdded() )
+        {
+        // DRAW ADD BUTTON
+        TAknLayoutRect addButtonLayout;
+        addButtonLayout.LayoutRect( itemRect,
+                AknLayoutScalable_Apps::listrow_wgtman_pane_g2().LayoutLine() );
+        if ( isInFocus && listFocused )
+            {
+            addButtonLayout.DrawImage( gc,                    
+                    iAddWidgetBtnHighlightImage, iAddWidgetBtnHighlightMask );
+            }
+        else
+            {
+            addButtonLayout.DrawImage( gc, 
+                    iAddWidgetBtnImage, iAddWidgetBtnMask );
+            }        
+        }
+
+    gc.SetPenSize(TSize(1,1));
+
+    // DRAW DESCRIPTION TEXT
+    textLayout.LayoutText( itemRect, descTextLayout );
+    textLayout.DrawText( gc, wData.Description(), ETrue, textColor );
+    gc.DiscardFont();
+    }
+
+// ---------------------------------------------------------
+// CWmListItemDrawer::DefaultLogoImage()
+// ---------------------------------------------------------
+//
+const CFbsBitmap* CWmListItemDrawer::DefaultLogoImage()
+    {
+    return iDefaultLogoImage;
+    }
+
+// ---------------------------------------------------------
+// CWmListItemDrawer::DefaultLogoMask()
+// ---------------------------------------------------------
+//
+const CFbsBitmap* CWmListItemDrawer::DefaultLogoMask()
+    {
+    return iDefaultLogoImageMask;
+    }
+
+// ---------------------------------------------------------
+// CWmListItemDrawer::HandleSkinChanged
+// ---------------------------------------------------------
+//
+void CWmListItemDrawer::HandleSkinChanged()
+    {
+    CFbsBitmap* addWidgetBtnImage( NULL );
+    CFbsBitmap* addWidgetBtnMask( NULL );
+    CFbsBitmap* addWidgetBtnHighlightImage( NULL );
+    CFbsBitmap* addWidgetBtnHighlightMask( NULL );
+    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+    
+    TRAPD( err, 
+        AknsUtils::CreateColorIconLC(
+                skin,
+                KAknsIIDQgnIndiWmAdd,
+                KAknsIIDQsnTextColors,
+                EAknsCIQsnTextColorsCG6,
+                addWidgetBtnImage,
+                addWidgetBtnMask,
+                iWmPlugin.ResourceLoader().IconFilePath(),
+                EMbmWidgetmanagerAdd_widget_button,
+                EMbmWidgetmanagerAdd_widget_button_mask,
+                KRgbBlack );
+        
+        AknsUtils::CreateColorIconLC(
+                skin,
+                KAknsIIDQgnIndiWmAdd,
+                KAknsIIDQsnTextColors,
+                EAknsCIQsnTextColorsCG10,
+                addWidgetBtnHighlightImage,
+                addWidgetBtnHighlightMask,
+                iWmPlugin.ResourceLoader().IconFilePath(),
+                EMbmWidgetmanagerAdd_widget_button,
+                EMbmWidgetmanagerAdd_widget_button_mask,
+                KRgbWhite );
+        
+        CleanupStack::Pop( 4 ); // pop icons
+        );
+    
+    if ( KErrNone == err )
+        {
+        // delete old icons
+        delete iAddWidgetBtnImage;
+        iAddWidgetBtnImage = NULL;
+        delete iAddWidgetBtnMask;
+        iAddWidgetBtnMask = NULL;
+        delete iAddWidgetBtnHighlightImage;
+        iAddWidgetBtnHighlightImage = NULL;
+        delete iAddWidgetBtnHighlightMask;
+        iAddWidgetBtnHighlightMask = NULL;
+        
+        // transfer ownership
+        iAddWidgetBtnImage = addWidgetBtnImage;
+        addWidgetBtnImage = NULL;
+        iAddWidgetBtnMask = addWidgetBtnMask;
+        addWidgetBtnMask = NULL;
+        iAddWidgetBtnHighlightImage = addWidgetBtnHighlightImage;
+        addWidgetBtnHighlightImage = NULL;
+        iAddWidgetBtnHighlightMask = addWidgetBtnHighlightMask;
+        addWidgetBtnHighlightMask = NULL;
+        
+        // resize new created icons
+        ResizeDefaultBitmaps();
+        }
+    }
+
+// ---------------------------------------------------------
+// CWmListBox::NewL
+// ---------------------------------------------------------
+//
+CWmListBox* CWmListBox::NewL(
+        CWmPlugin& aWmPlugin,
+        const TRect& aRect,
+        const CCoeControl* aParent,
+        TInt aFlags )
+    {
+    CWmListBox* self = new ( ELeave ) CWmListBox( aWmPlugin);
+    CleanupStack::PushL( self );
+    self->ConstructL( aRect, aParent, aFlags );
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// ---------------------------------------------------------
+// CWmListBox::CWmListBox
+// ---------------------------------------------------------
+//
+CWmListBox::CWmListBox( CWmPlugin& aWmPlugin ):
+    CAknDouble2LargeStyleListBox(),
+    iWmPlugin( aWmPlugin )
+    {
+    iFindPaneIsVisible = EFalse;
+	iPressedDown = EFalse;
+    }
+
+// ---------------------------------------------------------
+// CWmListBox::~CWmListBox
+// ---------------------------------------------------------
+//
+CWmListBox::~CWmListBox()
+    {
+    iWidgetDatas.ResetAndDestroy();
+    }
+
+// ---------------------------------------------------------
+// CWmListBox::ConstructL
+// ---------------------------------------------------------
+//
+void CWmListBox::ConstructL(
+        const TRect& aRect,
+        const CCoeControl* aParent,
+        TInt aFlags )
+    {
+    CEikFormattedCellListBox::ConstructL( aParent, aFlags );
+    SetContainerWindowL( *aParent );    
+
+    // set model point to the widgets array
+    Model()->SetItemTextArray( &iWidgetDatas );
+    Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
+
+    // set empty-text to null
+    View()->SetListEmptyTextL( KNullDesC );
+
+    SetRect( aRect );
+    }
+
+// ---------------------------------------------------------
+// CWmListBox::WidgetData
+// ---------------------------------------------------------
+//
+CWmWidgetData* CWmListBox::WidgetData()
+    {
+    TInt index = CurrentListBoxItemIndex();
+    return (index>=0 ? iWidgetDatas[index] : NULL);
+    }
+
+// ---------------------------------------------------------
+// CWmListBox::WidgetData
+// ---------------------------------------------------------
+//
+CWmWidgetData& CWmListBox::WidgetData( TInt aItemIndex )
+    {
+    return *iWidgetDatas[ RealIndex( aItemIndex ) ];
+    }
+
+// ---------------------------------------------------------
+// CWmListBox::AddWidgetDataL
+// ---------------------------------------------------------
+//
+void CWmListBox::AddWidgetDataL( CWmWidgetData* aWidgetData )
+    {
+    aWidgetData->SetObserver( this );
+    aWidgetData->SetLogoSize( LogoSize() );
+    iWidgetDatas.InsertInOrderAllowRepeatsL( aWidgetData,
+            SortOrder(EStoredOrder) );
+    HandleItemAdditionL();
+    }
+
+// ---------------------------------------------------------
+// CWmListBox::RemoveWidgetData
+// ---------------------------------------------------------
+//
+void CWmListBox::RemoveWidgetData( TInt aItemIndex )
+    {
+    TInt realIndex = RealIndex( aItemIndex );
+    TBool current = ( aItemIndex == CurrentItemIndex() );
+    // remove widget data
+    CWmWidgetData* data = iWidgetDatas[realIndex];
+    iWidgetDatas.Remove( realIndex );
+    delete data;
+
+    // reorganise
+    TRAP_IGNORE(
+        AknListBoxUtils::HandleItemRemovalAndPositionHighlightL(
+            this, realIndex, current ) );
+    }
+
+// ---------------------------------------------------------
+// CWmListBox::RedrawItem
+// ---------------------------------------------------------
+//
+void CWmListBox::RedrawItem( TInt aItemIndex )
+    {
+    View()->DrawItem( aItemIndex );
+    }
+
+// ---------------------------------------------------------
+// CWmListBox::SetSortOrderL
+// ---------------------------------------------------------
+//
+void CWmListBox::SetSortOrderL( TSortOrder aOrder )
+    {
+    // now sort the existing data
+    iWidgetDatas.Sort( SortOrder( aOrder ) );
+    DrawNow();
+    }
+
+// ---------------------------------------------------------
+// CWmListBox::CreateItemDrawerL
+// ---------------------------------------------------------
+//
+void CWmListBox::CreateItemDrawerL()
+    {
+    CFormattedCellListBoxData* cellData = CFormattedCellListBoxData::NewL();
+    CleanupStack::PushL( cellData );
+    iItemDrawer = CWmListItemDrawer::NewL(
+            iWmPlugin,
+            Model(),
+            iEikonEnv->DenseFont(),
+            cellData,
+            this );
+    CleanupStack::Pop(); // cellData
+    }
+
+// ---------------------------------------------------------
+// CWmListBox::HandleLayoutChanged
+// ---------------------------------------------------------
+//
+void CWmListBox::HandleLayoutChanged()
+    {
+	TSize ls = LogoSize();
+    for ( TInt i=0; i<iWidgetDatas.Count(); i++)
+        {
+        iWidgetDatas[i]->ReCreateLogo( ls );
+        }
+    }
+
+// ---------------------------------------------------------
+// CWmListBox::HandleSkinChanged
+// ---------------------------------------------------------
+//
+void CWmListBox::HandleSkinChanged()
+    {
+    CWmListItemDrawer* itemDrawer = 
+                        static_cast <CWmListItemDrawer*>( iItemDrawer );
+    if ( itemDrawer )
+        {
+        itemDrawer->HandleSkinChanged();
+        }
+    }
+
+// ---------------------------------------------------------
+// CWmListBox::HandleWidgetDataChanged
+// ---------------------------------------------------------
+//
+void CWmListBox::HandleWidgetDataChanged( CWmWidgetData* aWidgetData )
+    {
+    if ( !iFindPaneIsVisible )
+        {
+        // spontaneous change in the model. Cause table to redraw
+        TInt index = iWidgetDatas.Find( aWidgetData );
+        if ( index >= 0 )
+            {
+            // redraw item.
+            RedrawItem( RealIndex( index ) );			
+            }
+        }
+    else
+        {
+        // redraw everything
+        Parent()->DrawDeferred();
+        }
+    }
+
+// ---------------------------------------------------------
+// CWmListBox::SortOrder
+// ---------------------------------------------------------
+//
+TLinearOrder<CWmWidgetData> CWmListBox::SortOrder( TSortOrder aOrder )
+    {
+    if ( aOrder == EStoredOrder )
+        {
+        return TLinearOrder<CWmWidgetData>(
+                CWmWidgetData::CompareByPersistentWidgetOrder );
+        }
+    else
+        {
+        return TLinearOrder<CWmWidgetData>(
+                CWmWidgetData::CompareByName );
+        }
+    }
+
+// ---------------------------------------------------------
+// CWmListBox::CurrentListBoxItemIndex
+// ---------------------------------------------------------
+//
+TInt CWmListBox::CurrentListBoxItemIndex()
+    {
+    TInt index( KErrNotFound );
+    if ( Model()->NumberOfItems() > 0 )
+        {
+        index = CurrentItemIndex();
+        }
+    return RealIndex( index );
+    }
+
+// ---------------------------------------------------------
+// CWmListBox::RealIndex
+// ---------------------------------------------------------
+//
+TInt CWmListBox::RealIndex( TInt aIndex )
+    {
+    TInt realIndex = aIndex;
+    if ( iFindPaneIsVisible && aIndex >= 0 )
+        {
+        realIndex = static_cast<CAknFilteredTextListBoxModel*>(Model())->Filter()
+                ->FilteredItemIndex( aIndex );
+        }
+    return realIndex;    
+    }
+
+// ---------------------------------------------------------
+// CWmListBox::SizeChanged
+// ---------------------------------------------------------
+//
+void CWmListBox::SizeChanged()
+    {
+    CAknDouble2LargeStyleListBox::SizeChanged();
+    
+    CWmListItemDrawer* itemDrawer = 
+                    static_cast <CWmListItemDrawer*>( iItemDrawer );
+    if ( itemDrawer )
+        {
+        return itemDrawer->ResizeDefaultBitmaps();
+        }
+    }
+
+// ---------------------------------------------------------
+// CWmListBox::Draw
+// ---------------------------------------------------------
+//
+void CWmListBox::Draw( const TRect& aRect ) const
+    {
+    CWindowGc& gc = SystemGc(); 
+    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+    MAknsControlContext* cc = AknsDrawUtils::ControlContext( this );
+    AknsDrawUtils::Background( skin, cc, this, gc, Rect() );
+    CAknDouble2LargeStyleListBox::Draw( aRect );
+    }
+
+// ---------------------------------------------------------
+// CWmListBox::HandlePointerEventL
+// ---------------------------------------------------------
+//
+void CWmListBox::HandlePointerEventL( const TPointerEvent& 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() );
+			}
+		}
+
+	CAknDouble2LargeStyleListBox::HandlePointerEventL( aPointerEvent );	
+    }
+
+// ---------------------------------------------------------
+// CWmListBox::LogoSize
+// ---------------------------------------------------------
+//
+TSize CWmListBox::LogoSize()
+    {
+    TAknLayoutRect rowLayoutRect;
+    rowLayoutRect.LayoutRect( Rect(),
+            AknLayoutScalable_Apps::listrow_wgtman_pane().LayoutLine() );
+    TAknLayoutRect logoLayoutRect;
+    logoLayoutRect.LayoutRect( rowLayoutRect.Rect(),
+            AknLayoutScalable_Apps::listrow_wgtman_pane_g1().LayoutLine() );
+    return logoLayoutRect.Rect().Size();
+    }
+
+// ---------------------------------------------------------
+// CWmListBox::DefaultLogo
+// ---------------------------------------------------------
+//
+const CFbsBitmap* CWmListBox::DefaultLogo()
+    {
+    CWmListItemDrawer* itemDrawer = 
+                    static_cast <CWmListItemDrawer*>( iItemDrawer );
+    if ( itemDrawer )
+        {
+        return itemDrawer->DefaultLogoImage();
+        }
+    return NULL;
+    }
+
+// ---------------------------------------------------------
+// CWmListBox::DefaultMask
+// ---------------------------------------------------------
+//
+const CFbsBitmap* CWmListBox::DefaultMask()
+    {
+    CWmListItemDrawer* itemDrawer = 
+                    static_cast <CWmListItemDrawer*>( iItemDrawer );
+    if ( itemDrawer )
+        {
+        return itemDrawer->DefaultLogoMask();
+        }
+    return NULL;
+    }
+
+// End of File
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/src/wmmaincontainer.cpp	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,1311 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies)..
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies 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 of the container control for WidgetManager application.
+*
+*/
+
+// INCLUDE FILES
+#include <aknViewAppUi.h>
+#include <eikappui.h>
+#include <widgetmanagerview.rsg>
+#include <coemain.h>
+#include <eikenv.h>
+#include <barsread.h>
+#include <AknUtils.h>
+#include <barsread.h>
+#include <StringLoader.h>
+#include <eikenv.h>
+#include <AknIconArray.h>
+#include <aknstyluspopupmenu.h> 
+#include <avkon.loc>
+#include <aknlayout.cdl.h>
+#include <layoutmetadata.cdl.h>
+#include <aknlayoutscalable_avkon.cdl.h>
+#include <aknlayoutscalable_apps.cdl.h>
+#include <AknLayout.lag>
+#include <AknsSkinInstance.h>
+#include <apgicnfl.h>
+#include <AknIconUtils.h>
+#include <AknsDrawUtils.h>
+#include <aknenv.h>
+#include <aknlists.h>
+#include <eikclbd.h>
+#include <aknsfld.h>
+#include <AknsBasicBackgroundControlContext.h>
+#include <apgcli.h>
+#include <widgetmanager.mbg>
+#include <avkon.rsg>
+#include <coecobs.h>
+#include <coecntrl.h>
+#include <SWInstApi.h> //installer
+#include <widgetregistryclient.h> // widgetreqistry
+#include <schemehandler.h> // for starting the OVI client
+#include <featmgr.h>     // FeatureManager
+#include <hlplch.h>      // HlpLauncher
+#include <csxhelp/hmsc.hlp.hrh>
+#include <aisystemuids.hrh>
+#include <centralrepository.h>
+
+#include "wmcrkeys.h"
+#include "wmcommon.h"
+#include "wmplugin.h"
+#include "wmmaincontainer.h"
+#include "wmmaincontainerview.h"
+#include "wmresourceloader.h"
+#include "widgetmanager.hrh"
+#include "wmlistbox.h"
+#include "wmpersistentwidgetorder.h"
+#include "wmdetailsdlg.h"
+#include "wmportalbutton.h"
+#include "wmwidgetloaderao.h"
+
+// CONSTANTS
+const TInt KTextLimit = 40; // Text-limit for find-field
+const TInt KMinWidgets = 1; // minimum number of widgets to show findpane
+_LIT8( KWrtMime, "application/x-nokia-widget");
+_LIT( KBrowserPrefix, "4 ");
+
+// ---------------------------------------------------------
+// CWmMainContainer::CWmMainContainer()
+// ---------------------------------------------------------
+//
+CWmMainContainer::CWmMainContainer( CWmPlugin& aWmPlugin ) :
+    iWmPlugin( aWmPlugin )
+	{
+    iWidgetsList = NULL;
+    iFindbox = NULL;
+    iFindPaneIsVisible = EFalse;
+    iBgContext = NULL;
+    iFocusMode = ENowhere;
+    iClosingDown = ETrue;
+	}
+
+// ---------------------------------------------------------
+// CWmMainContainer::~CWmMainContainer()
+// ---------------------------------------------------------
+//
+CWmMainContainer::~CWmMainContainer()
+	{
+    delete iOviStoreUrl;
+    delete iOviStoreClientBundleId;
+    delete iOviStoreClientParam;
+        
+    RemoveCtrlsFromStack();
+    Components().ResetAndDestroy();
+    delete iWidgetLoader;
+    iWidgetsList = NULL;
+    iOviPortal = NULL;
+    iFindbox = NULL;
+	delete iBgContext;
+	}
+
+// ---------------------------------------------------------
+// CWmMainContainer::NewL
+// ---------------------------------------------------------
+//
+CWmMainContainer* CWmMainContainer::NewL( 
+    const TRect& aRect,
+    CWmPlugin& aWmPlugin )
+	{
+	CWmMainContainer* self = CWmMainContainer::NewLC( 
+        aRect, 
+        aWmPlugin );
+	CleanupStack::Pop( self );
+	return self;
+	}
+
+// ---------------------------------------------------------
+// CWmMainContainer::NewLC
+// ---------------------------------------------------------
+//
+CWmMainContainer* CWmMainContainer::NewLC( 
+    const TRect& aRect,
+    CWmPlugin& aWmPlugin )
+	{
+	CWmMainContainer* self = new (ELeave) CWmMainContainer( aWmPlugin );
+	CleanupStack::PushL( self );
+	self->ConstructL( aRect );
+	return self;
+	}
+
+// ---------------------------------------------------------
+// ScreenRect
+// rectangle representing the screen
+// ---------------------------------------------------------
+//
+TRect ScreenRect()
+    {
+    TRect screen;
+    CCoeEnv* env = CCoeEnv::Static();
+    if ( env )
+        {
+        CWsScreenDevice* screenDevice = env->ScreenDevice();
+        if ( screenDevice )
+            screen.SetRect( TPoint(0,0), screenDevice->SizeInPixels() );
+        }
+    return screen;
+    }
+
+// ---------------------------------------------------------
+// CWmMainContainer::ConstructL
+// ---------------------------------------------------------
+//
+void CWmMainContainer::ConstructL( 
+		const TRect& aRect )
+	{  
+    // Initialize control array
+	InitComponentArrayL();
+	Components().SetControlsOwnedExternally( ETrue );
+
+    // create the UI
+    CreateWindowL();
+
+	// background context
+	iBgContext = CAknsBasicBackgroundControlContext::NewL( 
+	        KAknsIIDQsnBgScreen, ScreenRect() , ETrue);
+
+	// Read needed values from cenrep
+	TRAP_IGNORE( FetchRepositoryDataL(); );
+	
+	// set up controls
+	InitializeControlsL( aRect );
+
+	// set size and activate
+	SetRect( aRect );
+    ActivateL();
+	
+	}
+
+// ---------------------------------------------------------
+// CWmMainContainer::FetchRepositoryDataL
+// ---------------------------------------------------------
+//
+void CWmMainContainer::FetchRepositoryDataL()
+    {
+    iOviStoreUrl = NULL;
+    iOviStoreClientBundleId = NULL;
+    iOviStoreClientParam = NULL;
+    
+    CRepository *repository = CRepository::NewLC( 
+            TUid::Uid( KCrWidgetManagerm ) );
+    TInt err = KErrNone;
+    
+    //read localized data from cenrep
+    TLanguage sysLang = User::Language();
+    for( TUint32 i = KLangId0; i <= KLangId9; i+=4 )
+        {
+        TInt crLang = 0;
+        err = repository->Get( i, crLang );
+
+        if ( sysLang == crLang && err == KErrNone )
+            {
+            // system langauge matches langauge in cenrep
+            iOviStoreUrl = HBufC::NewL( 
+                    NCentralRepositoryConstants::KMaxUnicodeStringLength );
+            TPtr ptr( iOviStoreUrl->Des() );
+            
+            // get localized ovi store url
+            err = repository->Get( i + KOviStoreBrowserUrlOffset, ptr );
+            if ( err != KErrNone )
+                {
+                delete iOviStoreUrl;
+                iOviStoreUrl = NULL;
+                }
+            }
+        }
+    
+    //read other data from cenrep
+    iOviStoreClientBundleId = HBufC::NewL( 
+            NCentralRepositoryConstants::KMaxUnicodeStringLength );
+    TPtr ptr( iOviStoreClientBundleId->Des() );
+    err = repository->Get( KOviStoreBunbleId, ptr );
+    if ( err != KErrNone )
+        {
+        delete iOviStoreClientBundleId;
+        iOviStoreClientBundleId = NULL;
+        }
+    
+    iOviStoreClientParam = HBufC::NewL( 
+            NCentralRepositoryConstants::KMaxUnicodeStringLength );
+    ptr.Set( iOviStoreClientParam->Des() );
+    err = repository->Get( KOviStoreClientParam, ptr );
+    if ( err != KErrNone )
+        {
+        delete iOviStoreClientParam;
+        iOviStoreClientParam = NULL;
+        }
+        
+    CleanupStack::PopAndDestroy( repository );
+    }
+	
+// ---------------------------------------------------------
+// CWmMainContainer::SizeChanged
+// ---------------------------------------------------------
+//
+void CWmMainContainer::SizeChanged()
+	{
+	CCoeControl::SizeChanged();
+    iBgContext->SetRect( ScreenRect() );
+	LayoutControls();
+	}
+
+// ---------------------------------------------------------
+// CWmMainContainer::LayoutControls
+// ---------------------------------------------------------
+//
+void CWmMainContainer::LayoutControls()
+	{
+    TBool landscape = Layout_Meta_Data::IsLandscapeOrientation();
+
+    TAknWindowLineLayout listPane = 
+                AknLayoutScalable_Apps::listscroll_wgtman_pane(landscape ? 1 : 0).LayoutLine();
+
+    TAknWindowLineLayout btnPane = 
+                AknLayoutScalable_Apps::wgtman_btn_pane(landscape ? 1 : 0).LayoutLine();
+
+	TRect rect = Rect();	
+    
+	if ( landscape )
+	    {
+        if ( Layout_Meta_Data::IsMirrored() )
+            {
+            iLayout = ELandscapeMirrored;
+            }
+        else
+            {
+            iLayout = ELandscape;
+            }
+	    }
+	else
+	    {
+        iLayout = EPortrait;
+	    }
+	
+    // layout Ovi button
+    AknLayoutUtils::LayoutControl( iOviPortal, rect, btnPane );
+    
+    if( iFindbox && iFindPaneIsVisible )
+        {
+		TAknLayoutRect layoutRect;
+        layoutRect.LayoutRect( rect, listPane );
+		iWidgetsList->SetRect( layoutRect.Rect() );
+        HandleFindSizeChanged();
+        }
+    else
+        {
+        AknLayoutUtils::LayoutControl( iWidgetsList, rect, listPane );
+        }
+
+    DrawDeferred();
+	}
+
+// ---------------------------------------------------------
+// CWmMainContainer::OfferKeyEventL
+// ---------------------------------------------------------
+//
+TKeyResponse CWmMainContainer::OfferKeyEventL( 
+		const TKeyEvent& aKeyEvent, 
+		TEventCode aType )
+	{
+    TKeyResponse keyResponse( EKeyWasNotConsumed );
+    
+    if ( iFindbox )
+        {
+        // open search field with alpha digit numbers
+        if ( aType == EEventKeyDown && !iFindPaneIsVisible && 
+        aKeyEvent.iScanCode < EStdKeyF1 &&
+            TChar(aKeyEvent.iScanCode).IsAlphaDigit() )
+            {
+            ActivateFindPaneL();
+            
+            if ( iFindPaneIsVisible )
+                {
+                return EKeyWasConsumed;
+                }
+            }
+        
+        if ( iFindPaneIsVisible )
+            {
+            // deactive the FindPane when Back has been pressed
+            if ( aType == EEventKeyDown && 
+                aKeyEvent.iScanCode == EStdKeyBackspace )
+                {
+                TBuf<KTextLimit> searchText;
+                iFindbox->GetSearchText( searchText );
+                if ( searchText == KNullDesC )
+                    {
+                    DeactivateFindPaneL();
+                    return EKeyWasConsumed;
+                    }
+                }
+            
+            // Cancel-selected need to unfocus findbox 
+            // to receive event in ProcessCommand
+            if ( aType == EEventKeyDown 
+            && aKeyEvent.iScanCode == EStdKeyDevice1 )
+                {
+                iFindbox->SetFocus( EFalse );
+                UpdateFocusMode();
+                return EKeyWasConsumed;
+                }
+
+            if ( aKeyEvent.iScanCode == EStdKeyNo ||
+                aKeyEvent.iCode == EKeyNo )
+                {
+                DeactivateFindPaneL();
+                return EKeyWasConsumed;
+                }
+
+            // find items with all event codes (that's the reason why there is EEventKey instead of aType)
+            TBool needsRefresh( EFalse );
+            keyResponse = AknFind::HandleFindOfferKeyEventL( 
+                                                aKeyEvent, EEventKey, this, 
+                                iWidgetsList, iFindbox, ETrue, needsRefresh );            
+            if ( needsRefresh )
+                {
+                DrawNow();
+                }
+            }
+        }
+
+    // check special cases for movement between controls
+    if ( keyResponse == EKeyWasNotConsumed && !iFindPaneIsVisible )
+         {
+         keyResponse = MoveFocusByKeys( aKeyEvent, aType );
+         }
+
+    // pass key event except backpace or delete key event to widgets list if focused
+    if ( keyResponse == EKeyWasNotConsumed && iWidgetsList->IsFocused() )
+        {
+        if ( (aType == EEventKey) && (aKeyEvent.iCode == EKeyBackspace || aKeyEvent.iCode == EKeyDelete))
+            {
+            if( CanDoUninstall() )
+                {
+                UninstallWidgetL();
+                }
+            else
+                {
+                CWmWidgetData* data = iWidgetsList->WidgetData();
+                if( data != NULL )
+                    iWmPlugin.ResourceLoader().InfoPopupL(
+                         R_QTN_WM_UNINST_NOT_ALLOWED, data->Name() );
+                }
+            }
+        else 
+            {
+			//passing to listbox handler
+            keyResponse = iWidgetsList->OfferKeyEventL( 
+                    aKeyEvent, aType );
+            }
+        }
+
+    // pass key event to OVI portal if focused
+    if ( keyResponse == EKeyWasNotConsumed && iOviPortal->IsFocused() )
+        {
+        keyResponse = iOviPortal->OfferKeyEventL( 
+                            aKeyEvent, aType );
+        }
+
+    if ( keyResponse == EKeyWasConsumed )
+        DrawDeferred();
+
+	// Do not let UI framework forward the keys to child controls as
+	// we have already done that.
+    return EKeyWasConsumed;
+	}
+
+
+// ---------------------------------------------------------
+// CWmMainContainer::MoveFocusByKeys
+// ---------------------------------------------------------
+//
+TKeyResponse CWmMainContainer::MoveFocusByKeys(
+                        const TKeyEvent& aKeyEvent, 
+                        TEventCode aType )
+    {
+    TKeyResponse keyResponse( EKeyWasNotConsumed );
+
+    if ( iWidgetsList->IsFocused() )
+        {
+        // ------------------------------------
+        // focus is in the WIDGETS LIST
+        // ------------------------------------
+        if ( iLayout == EPortrait &&
+                aKeyEvent.iScanCode == EStdKeyUpArrow &&
+                iWidgetsList->CurrentItemIndex() == 0 )
+            {
+            // widget list top -> up -> ovi button (portrait)
+            if ( aType == EEventKey )
+                SetFocusToOviButton();
+            keyResponse = EKeyWasConsumed;
+            }
+        else if ( iLayout == EPortrait &&
+                aKeyEvent.iScanCode == EStdKeyDownArrow &&
+                iWidgetsList->CurrentItemIndex() ==
+                   iWidgetsList->Model()->NumberOfItems() - 1 )
+            {
+            // widget list bottom -> down -> ovi button (portrait)
+            if ( aType == EEventKey )
+                SetFocusToOviButton();
+            keyResponse = EKeyWasConsumed;
+            }
+        else if ( iLayout == ELandscape &&
+                aKeyEvent.iScanCode == EStdKeyRightArrow )
+            {
+            // widget list -> right -> ovi button (landscape)
+            if ( aType == EEventKey )
+                SetFocusToOviButton();
+            keyResponse = EKeyWasConsumed;
+            }
+        else if ( iLayout == ELandscapeMirrored &&
+                aKeyEvent.iScanCode == EStdKeyLeftArrow )
+            {
+            // widget list -> left -> ovi button (landscape mirrored)
+            if ( aType == EEventKey )
+                SetFocusToOviButton();
+            keyResponse = EKeyWasConsumed;
+            }
+        }
+    else if ( iOviPortal->IsFocused() )
+        {
+        // ------------------------------------
+        // focus is in the OVI PORTAL BUTTON
+        // ------------------------------------
+        if ( iLayout == EPortrait &&
+                aKeyEvent.iScanCode == EStdKeyDownArrow )
+            {
+            // ovi button -> down -> widget list top (portrait)
+            if ( aType == EEventKey )
+                SetFocusToWidgetList( 0 );
+            keyResponse = EKeyWasConsumed;
+            }
+        else if ( iLayout == EPortrait &&
+                aKeyEvent.iScanCode == EStdKeyUpArrow )
+            {
+            // obi button -> up -> widget list bottom (portrait)
+            if ( aType == EEventKey )
+                SetFocusToWidgetList( iWidgetsList->Model()->NumberOfItems()-1 );
+            keyResponse = EKeyWasConsumed;
+            }
+        else if ( iLayout == ELandscape &&
+                aKeyEvent.iScanCode == EStdKeyLeftArrow )
+            {
+            // ovi button -> left -> widget list (landscape)
+            if ( aType == EEventKey )
+                SetFocusToWidgetList();
+            keyResponse = EKeyWasConsumed;
+            }
+        else if ( iLayout == ELandscapeMirrored &&
+                aKeyEvent.iScanCode == EStdKeyRightArrow )
+            {
+            // ovi button -> right -> widget list (landscape mirrored)
+            if ( aType == EEventKey )
+                SetFocusToWidgetList();
+            keyResponse = EKeyWasConsumed;
+            }
+        }
+    else
+        {
+        // ------------------------------------
+        // focus is NOWHERE
+        // ------------------------------------
+        if ( aKeyEvent.iScanCode == EStdKeyUpArrow ||
+                aKeyEvent.iScanCode == EStdKeyDownArrow ||
+                aKeyEvent.iScanCode == EStdKeyLeftArrow ||
+                aKeyEvent.iScanCode == EStdKeyRightArrow )
+            {
+            // no focus -> key hit -> focus list
+            if ( aType == EEventKey )
+                SetFocusToWidgetList();
+            keyResponse = EKeyWasConsumed;
+            }
+        }
+
+    return keyResponse;
+    }
+
+// ---------------------------------------------------------
+// CWmMainContainer::SetFocusToOviButton
+// ---------------------------------------------------------
+//
+void CWmMainContainer::SetFocusToOviButton()
+    {
+    iWidgetsList->SetFocus(EFalse);
+    iOviPortal->SetFocus(ETrue);
+    DrawDeferred();
+    UpdateFocusMode();
+    }
+
+// ---------------------------------------------------------
+// CWmMainContainer::SetFocusToWidgetList
+// ---------------------------------------------------------
+//
+void CWmMainContainer::SetFocusToWidgetList( TInt aIndex )
+    {
+    iOviPortal->SetFocus(EFalse);
+    iWidgetsList->SetFocus(ETrue);
+    if ( aIndex >= 0 && aIndex < iWidgetsList->Model()->NumberOfItems() )
+        {
+        iWidgetsList->SetCurrentItemIndex( aIndex );
+        }
+    DrawDeferred();
+    UpdateFocusMode();
+    }
+
+// ---------------------------------------------------------
+// CWmMainContainer::UpdateFocusMode
+// ---------------------------------------------------------
+//
+void CWmMainContainer::UpdateFocusMode()
+    {
+    if ( iOviPortal->IsFocused() )
+        {
+        // OVI BUTTON is focused 
+        iFocusMode = EOvi;
+        }
+    else if( ( iFindPaneIsVisible ) && 
+        ( iFindbox->IsFocused() || iWidgetsList->IsFocused() ) )
+        {
+        // FIND MODE
+        iFocusMode = EFind;
+        }
+    else if ( iWidgetsList->IsFocused() )
+        {
+        // WIDGETS LIST is focused 
+        iFocusMode = EList;
+        }
+    else
+        {
+        // NO focus
+        iFocusMode = ENowhere;
+        }
+    }
+
+// ---------------------------------------------------------
+// CWmMainContainer::FindChildControlByPoint
+// ---------------------------------------------------------
+//
+CCoeControl* CWmMainContainer::FindChildControlByPoint(
+        const TPoint& aPoint )
+    {
+    CCoeControl* theControl = NULL;
+    CCoeControlArray::TCursor cursor = Components().Begin();
+    CCoeControl* c;
+    while((c=cursor.Control<CCoeControl>()) != NULL )
+        {
+        if(c->IsVisible())
+            {
+            if ( c->Rect().Contains( aPoint ) ) theControl = c;
+            }
+        cursor.Next();
+        }
+    return theControl;
+    }
+
+// ---------------------------------------------------------
+// CWmMainContainer::HandlePointerEventL
+// ---------------------------------------------------------
+//
+void CWmMainContainer::HandlePointerEventL( const TPointerEvent& aPointerEvent )
+    {
+    if ( !iClosingDown  )
+        {
+		
+		if (aPointerEvent.iType == TPointerEvent::EButton1Down)
+			{
+	        // Check if user clicked a child control
+	        CCoeControl* control = FindChildControlByPoint( aPointerEvent.iPosition );
+	        if ( control && !control->IsFocused() )
+	            {
+	            // set focus to selected list box item.           
+                if ( control == iWidgetsList )
+                    {
+                    TInt itemIndex = iWidgetsList->CurrentListBoxItemIndex();
+                    TBool itemPointed = iWidgetsList->View()->XYPosToItemIndex(
+                            aPointerEvent.iParentPosition,
+                            itemIndex );
+                    if ( itemIndex >= 1 && itemPointed )
+                        {
+                        iWidgetsList->SetCurrentItemIndex( itemIndex - 1 );
+                        }
+                    }
+
+	            // 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;
+	            while ((c=cursor.Control<CCoeControl>()) != NULL )
+	                {
+	                if ( c != control && c->IsFocused() ) c->SetFocus( EFalse );
+	                cursor.Next();
+	                }
+	            // update focus mode accordingly
+	            UpdateFocusMode();
+	            // repaint
+	            DrawDeferred();
+	            }
+			}
+        
+        CCoeControl::HandlePointerEventL( aPointerEvent );
+        }
+    }
+
+// ---------------------------------------------------------
+// CWmMainContainer::InitializeControlsL
+// ---------------------------------------------------------
+//
+void CWmMainContainer::InitializeControlsL( const TRect& /*aRect*/ )
+	{
+	// Create OVI STORE button
+    HBufC* oviText = StringLoader::LoadLC( R_QTN_WM_GO_TO_OVI_STORE );    
+    iOviPortal = CWmPortalButton::NewL( this, *oviText );
+    CleanupStack::PopAndDestroy( oviText );
+    
+    iOviPortal->SetMopParent( this );    
+    AddControlL( iOviPortal, EOviPortal );
+    
+    // Create widget list box
+    iWidgetsList = CWmListBox::NewL(
+            iWmPlugin,
+            TRect(),
+            this );
+    iWidgetsList->SetMopParent( this );
+    AddControlL( iWidgetsList, EWidgetsList );
+	iWidgetsList->ActivateL();
+    iWidgetsList->SetListBoxObserver( this );
+    
+    // Create scroll bar.
+    iWidgetsList->CreateScrollBarFrameL( ETrue );
+    iWidgetsList->ScrollBarFrame()->SetScrollBarVisibilityL(
+        CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto );
+    iWidgetsList->UpdateScrollBarsL(); 
+    
+    // search field
+    iFindbox = CAknSearchField::NewL( *this,
+                        CAknSearchField::EAdaptiveSearch,
+                        0, KTextLimit );
+    AddControlL( iFindbox, EFindBox );
+
+    UpdateFocusMode();
+    StartLoadingWidgetsL();
+    }
+
+// ---------------------------------------------------------
+// CWmMainContainer::HandleWidgetListChanged
+// ---------------------------------------------------------
+//
+void CWmMainContainer::HandleWidgetListChanged()
+    {
+    TRAP_IGNORE( StartLoadingWidgetsL(); );
+    }
+
+// ---------------------------------------------------------
+// CWmMainContainer::StartLoadingWidgetsL
+// ---------------------------------------------------------
+//
+void CWmMainContainer::StartLoadingWidgetsL()
+    {
+    if ( !iWidgetLoader )
+        {
+        // create the widget loader AO
+        iWidgetLoader = CWmWidgetLoaderAo::NewL( iWmPlugin, *iWidgetsList );
+        }
+    iWidgetLoader->StartLoading();
+    }
+
+// ---------------------------------------------------------
+// CWmMainContainer::HandleResourceChange
+// ---------------------------------------------------------
+//
+void CWmMainContainer::HandleResourceChange( TInt aType )
+	{
+    CCoeControl::HandleResourceChange( aType );
+	
+    if ( KEikDynamicLayoutVariantSwitch == aType )
+        {
+        TRect rect;
+        AknLayoutUtils::LayoutMetricsRect( 
+                            AknLayoutUtils::EMainPane, rect );
+        SetRect( rect );
+        
+        // notify widgetlist
+        iWidgetsList->HandleLayoutChanged();
+        }
+    else if ( KAknsMessageSkinChange == aType )
+        {
+        // notify widgetlist , colored add icon need to be updated 
+        iWidgetsList->HandleSkinChanged();
+        }
+	}
+
+
+// ---------------------------------------------------------
+// CWmMainContainer::MopSupplyObject
+// ---------------------------------------------------------
+//
+TTypeUid::Ptr CWmMainContainer::MopSupplyObject( TTypeUid aId )
+    {
+    if ( aId.iUid == MAknsControlContext::ETypeId )
+        {
+        return MAknsControlContext::SupplyMopObject( 
+                                            aId, iBgContext );
+        }
+    return CCoeControl::MopSupplyObject( aId );
+    }
+
+// ---------------------------------------------------------
+// CWmMainContainer::Draw
+// ---------------------------------------------------------
+//
+void CWmMainContainer::Draw( const TRect& /*aRect*/ ) const
+	{
+	CWindowGc& gc = SystemGc();	
+    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+    MAknsControlContext* cc = AknsDrawUtils::ControlContext( this );
+    AknsDrawUtils::Background( skin, cc, this, gc, Rect() );
+	}
+
+// ---------------------------------------------------------
+// CWmMainContainer::AddControlL
+// ---------------------------------------------------------
+//
+void CWmMainContainer::AddControlL( 
+                                CCoeControl* aControl, 
+                                TInt aControlId )
+    {
+    Components().AppendLC( aControl, aControlId ); // Ownership transfered 
+    CleanupStack::Pop(aControl);    
+    iWmPlugin.ViewAppUi().AddToStackL( aControl );
+    aControl->MakeVisible( ETrue );
+    }
+
+// ---------------------------------------------------------
+// CWmMainContainer::WmPlugin
+// ---------------------------------------------------------
+//
+CWmPlugin& CWmMainContainer::WmPlugin()
+    {    
+    return iWmPlugin;
+    }
+
+// ---------------------------------------------------------
+// CWmMainContainer::PortalSelected
+// ---------------------------------------------------------
+//
+TBool CWmMainContainer::PortalSelected()
+    {    
+    return ( iFocusMode == EOvi );
+    }
+
+// ---------------------------------------------------------
+// CWmMainContainer::WidgetSelected
+// ---------------------------------------------------------
+//
+TBool CWmMainContainer::WidgetSelected() 
+    {
+    return ( iFocusMode == EList ) || ( iFocusMode == EFind );
+    }
+
+// ---------------------------------------------------------
+// CWmMainContainer::CanDoAdd
+// ---------------------------------------------------------
+//
+TBool CWmMainContainer::CanDoAdd()
+    {
+    TBool retVal = EFalse;
+    CWmWidgetData* data = iWidgetsList->WidgetData();
+    if ( WidgetSelected() && data )
+        {
+        if ( data->HsContentInfo().CanBeAdded() )
+            retVal = ETrue;
+        }
+    return retVal;
+    }
+
+// ---------------------------------------------------------
+// CWmMainContainer::CanDoUninstall
+// ---------------------------------------------------------
+//
+TBool CWmMainContainer::CanDoUninstall() 
+    {
+    TBool retVal( EFalse );
+    CWmWidgetData* data = iWidgetsList->WidgetData();
+    if ( WidgetSelected() && data )
+        {
+        if ( data->WidgetType() == CWmWidgetData::ECps &&
+                data->PublisherUid() != KNullUid )
+            {
+            retVal = ETrue;
+            }
+        }
+    return retVal;
+    }
+
+// ---------------------------------------------------------
+// CWmMainContainer::CanDoLaunch
+// ---------------------------------------------------------
+//
+TBool CWmMainContainer::CanDoLaunch() 
+    {
+    TBool retVal(EFalse);
+    if ( WidgetSelected() )
+        {
+        CWmWidgetData* data = iWidgetsList->WidgetData();        
+        if ( data->WidgetType() == CWmWidgetData::ECps &&
+            data->PublisherUid() != KNullUid )
+            {
+            retVal = ETrue;
+            }
+        }
+    return retVal;
+    }
+
+// ---------------------------------------------------------
+// CWmMainContainer::CanDoFind
+// ---------------------------------------------------------
+//
+TBool CWmMainContainer::CanDoFind()
+    {
+    TBool canDo( !iFindPaneIsVisible );
+    if ( canDo )
+        {
+        canDo = ( iFocusMode == EList || iFocusMode == ENowhere );
+        }
+    return canDo;
+    }
+
+// ---------------------------------------------------------
+// CWmMainContainer::CanDoSort
+// ---------------------------------------------------------
+//
+TBool CWmMainContainer::CanDoSort()
+    {
+    return !iFindPaneIsVisible;
+    }
+
+// ---------------------------------------------------------
+// CWmMainContainer::CanDoDetails
+// ---------------------------------------------------------
+//
+TBool CWmMainContainer::CanDoDetails()
+    {
+    return WidgetSelected();
+    }
+
+// ---------------------------------------------------------
+// CWmMainContainer::CanDoHelp
+// ---------------------------------------------------------
+//
+TBool CWmMainContainer::CanDoHelp()
+    {
+    return FeatureManager::FeatureSupported( KFeatureIdHelp );
+    }
+
+// ---------------------------------------------------------------------------
+// CWmMainContainer::AddWidgetToHomeScreenL
+// ---------------------------------------------------------------------------
+//
+void CWmMainContainer::AddWidgetToHomeScreenL()
+    {
+    CWmWidgetData* data = iWidgetsList->WidgetData();
+    if ( !iClosingDown && data )
+        {
+        if ( iFindbox && iFindPaneIsVisible )
+            {
+            DeactivateFindPaneL();
+            }
+
+        // set add to homescreen to be executed later
+        iWmPlugin.SetPostponedCommandL(
+                CWmPlugin::EAddToHomescreen, data->HsContentInfo() );
+
+        iWmPlugin.Deactivate();
+        }
+    }
+	
+// ---------------------------------------------------------------------------
+// CWmMainContainer::LaunchWidgetL
+// ---------------------------------------------------------------------------
+//
+void CWmMainContainer::LaunchWidgetL()
+    {
+    if ( CanDoLaunch() )
+        {
+        CWmWidgetData* data = iWidgetsList->WidgetData();
+        
+        HBufC* param = KNullDesC().AllocLC(); // launch params
+        
+        RApaLsSession appArc;
+        User::LeaveIfError( appArc.Connect() ); // connect to AppArc server
+        CleanupClosePushL( appArc );
+        TThreadId id;
+        User::LeaveIfError( appArc.StartDocument(
+            *param, data->PublisherUid(), id ) );
+    
+        CleanupStack::PopAndDestroy( &appArc );      
+        CleanupStack::PopAndDestroy( param );
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CWmMainContainer::ActivateFindPaneL
+// ---------------------------------------------------------------------------
+//
+void CWmMainContainer::ActivateFindPaneL()
+    {
+    if ( iFindbox && !iFindPaneIsVisible &&
+            iWidgetsList->Model()->NumberOfItems() > KMinWidgets )
+        {
+		// enable filtering
+        CAknFilteredTextListBoxModel* m = 
+                static_cast <CAknFilteredTextListBoxModel*> ( iWidgetsList->Model() );
+        if ( m )
+            {
+            m->CreateFilterL( iWidgetsList, iFindbox );
+            if ( m->Filter() )
+                {
+                m->Filter()->SetParentControl( this );
+                }
+            }
+
+        iFindbox->ActivateL();
+        iFindbox->ResetL();
+        iFindbox->SetSearchTextL( KNullDesC );
+        iFindbox->SetSkinEnabledL( ETrue );
+
+        iFindPaneIsVisible = ETrue;
+        iFindbox->MakeVisible( ETrue );
+        
+        // layout listbox and findbox
+        LayoutControls();        
+        
+        iFindbox->SetFocus( ETrue );
+        iWidgetsList->SetFindPaneIsVisible( ETrue );
+
+        // set soft key set
+        CEikButtonGroupContainer* cbaGroup =
+            CEikButtonGroupContainer::Current();
+        cbaGroup->SetCommandSetL( R_AVKON_SOFTKEYS_OPTIONS_CANCEL__SELECT );
+        cbaGroup->DrawNow();
+
+        UpdateFocusMode();
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CWmMainContainer::DeactivateFindPaneL
+// ---------------------------------------------------------------------------
+//
+void CWmMainContainer::DeactivateFindPaneL()
+    {
+    if( iFindbox && iFindPaneIsVisible )
+	    {
+        // notify search field we're shutting down
+        TKeyEvent keyEvent = { EKeyNo, EStdKeyNo, 0, 0  };
+        iFindbox->OfferKeyEventL( keyEvent, EEventKey );
+        
+        // reset findbox
+        iFindbox->ResetL();
+
+        // reset filter
+        CAknFilteredTextListBoxModel* m = 
+                static_cast <CAknFilteredTextListBoxModel*> ( iWidgetsList->Model() );
+        if ( m && m->Filter() )
+            {
+            m->Filter()->ResetFilteringL();
+            m->RemoveFilter();
+            }
+
+        iFindbox->MakeVisible( EFalse );
+        iFindbox->SetFocus( EFalse );
+        iFindPaneIsVisible = EFalse;
+        iWidgetsList->SetFindPaneIsVisible( EFalse );
+        
+        LayoutControls();
+        iWidgetsList->SetFocus( ETrue );
+
+        // set soft key set
+        CEikButtonGroupContainer* cbaGroup =
+            CEikButtonGroupContainer::Current();
+        cbaGroup->SetCommandSetL( R_AVKON_SOFTKEYS_OPTIONS_BACK__SELECT );
+        cbaGroup->DrawNow();
+
+        UpdateFocusMode();
+        DrawNow();
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CWmMainContainer::SortListAlphabeticallyL
+// ---------------------------------------------------------------------------
+//
+void CWmMainContainer::SortListAlphabeticallyL()
+    {
+    if ( iWidgetsList )
+        {
+        iWidgetsList->SetSortOrderL( CWmListBox::EAlphabetical );
+       
+        //store changed list order
+        CWmPersistentWidgetOrder* widgetOrder =
+            CWmPersistentWidgetOrder::NewL( iWmPlugin.FileServer() );
+        CleanupStack::PushL( widgetOrder );
+        widgetOrder->StoreL( iWidgetsList->WidgetDataArray() );
+        CleanupStack::PopAndDestroy( widgetOrder );
+
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CWmMainContainer::UninstallWidgetL
+// ---------------------------------------------------------------------------
+//
+void CWmMainContainer::UninstallWidgetL()
+    {
+    if ( CanDoUninstall() )
+        {
+        CWmWidgetData* data = iWidgetsList->WidgetData();
+        
+        SwiUI::RSWInstLauncher installer;
+        User::LeaveIfError( installer.Connect() );
+        
+        installer.Uninstall( data->PublisherUid(), KWrtMime );
+        installer.Close();
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CWmMainContainer::OpenOviPortalL
+// ---------------------------------------------------------------------------
+//
+void CWmMainContainer::OpenOviPortalL()
+    {
+    if ( !iClosingDown )
+        {
+        RApaLsSession session;
+        User::LeaveIfError( session.Connect() );
+        CleanupClosePushL( session );
+        TApaAppInfo appInfo;
+        TUid launchUid;
+
+        // Get ovi store uid    
+        RWidgetRegistryClientSession widgetSession;
+        User::LeaveIfError( widgetSession.Connect() );    
+        CleanupClosePushL( widgetSession );
+        
+        launchUid.iUid = widgetSession.GetWidgetUidL( *iOviStoreClientBundleId );    
+        CleanupStack::PopAndDestroy( &widgetSession );
+
+        TInt err = session.GetAppInfo( appInfo, launchUid );
+        if ( err == KErrNone )
+            {
+            CApaCommandLine* commandLine = CApaCommandLine::NewLC();
+            commandLine->SetExecutableNameL(appInfo.iFullName); 
+            HBufC8* buf8 = HBufC8::NewLC( iOviStoreClientParam->Des().Length() );
+            buf8->Des().Copy( *iOviStoreClientParam );
+                    
+            //cmdLine->SetOpaqueDataL( *buf8 );
+            commandLine->SetTailEndL( *buf8 );
+            err = session.StartApp( *commandLine );
+            CleanupStack::PopAndDestroy( buf8 );
+            CleanupStack::PopAndDestroy( commandLine );
+            }
+        else
+            {
+            if( iOviStoreUrl )
+                {
+                // Ovi store not found start browser
+                const TUid KOSSBrowserUidValue = { 0x10008D39 };
+                HBufC* param = HBufC::NewLC( iOviStoreUrl->Length() + 
+                        KBrowserPrefix().Length() );
+                
+                param->Des().Copy( KBrowserPrefix );
+                param->Des().Append( *iOviStoreUrl );
+                
+                TUid id( KOSSBrowserUidValue );
+                
+                TApaTaskList taskList( CEikonEnv::Static()->WsSession() );
+                TApaTask task = taskList.FindApp(id);
+                if( task.Exists() )
+                    {
+                    task.BringToForeground();
+                    HBufC8* param8 = HBufC8::NewLC(param->Length());
+                    param8->Des().Append(*param);
+                    task.SendMessage(TUid::Uid(0), *param8); // UID not used
+                    CleanupStack::PopAndDestroy(param8);
+                    }
+                else
+                    {
+                    if( !session.Handle() )
+                        {
+                        User::LeaveIfError( session.Connect() );
+                        }
+                    TThreadId thread;
+                    User::LeaveIfError(session.StartDocument(*param, KOSSBrowserUidValue, thread));
+                      
+                    }
+                CleanupStack::PopAndDestroy( param );
+                }
+            }
+        CleanupStack::PopAndDestroy( &session );
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CWmMainContainer::SelectL
+// ---------------------------------------------------------------------------
+//
+void CWmMainContainer::SelectL()
+    {
+    if ( WidgetSelected() )
+        AddWidgetToHomeScreenL();
+    else if ( PortalSelected() )
+        OpenOviPortalL();
+    else
+        SetFocusToWidgetList();
+    }
+
+// ---------------------------------------------------------------------------
+// CWmMainContainer::ShowHelpL
+// ---------------------------------------------------------------------------
+//
+void CWmMainContainer::ShowHelpL()
+    {
+    TUid fwUid = TUid::Uid( AI_UID3_AIFW_COMMON );
+    // retrieve resolve host application help context
+    CArrayFix<TCoeHelpContext>* helpContext =
+        iEikonEnv->EikAppUi()->AppHelpContextL();
+
+    // add the widget manager entry into the help context
+    CleanupStack::PushL( helpContext );
+    helpContext->InsertL( 0, TCoeHelpContext(
+            fwUid, KWM_HLP_WIDGET_COLLECTION ) );
+    CleanupStack::Pop( helpContext );
+
+    // launch help
+    HlpLauncher::LaunchHelpApplicationL(
+          iEikonEnv->WsSession(),
+          helpContext );
+    helpContext = 0; // HlpLauncher takes ownership of helpContext
+    }
+
+// ---------------------------------------------------------------------------
+// CWmMainContainer::RemoveCtrlsFromStack
+// ---------------------------------------------------------------------------
+//
+void CWmMainContainer::RemoveCtrlsFromStack()
+    {    
+    for ( TInt i=0; i < CountComponentControls(); i++ ) 
+        {
+        CCoeControl* ctl = ComponentControl( i ) ;
+        if ( ctl )
+            {
+            iWmPlugin.ViewAppUi().RemoveFromStack( ctl );
+            }
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CWmMainContainer::HandleListBoxEventL
+// ---------------------------------------------------------------------------
+//
+void CWmMainContainer::HandleListBoxEventL(
+        CEikListBox* /*aListBox*/, TListBoxEvent aEventType )
+    {
+    if ( !iClosingDown && ( aEventType == EEventEnterKeyPressed ||
+            aEventType == EEventItemSingleClicked ) )
+        {
+        AddWidgetToHomeScreenL();
+        }
+    }
+
+// ----------------------------------------------------
+// CWmMainContainer::LaunchDetailsDialogL
+// ----------------------------------------------------
+//
+void CWmMainContainer::LaunchDetailsDialogL()
+    {
+    CWmWidgetData* data = iWidgetsList->WidgetData();
+    if ( data )
+        {
+        const CFbsBitmap* logo = ( data->LogoImage() ) ? 
+                    data->LogoImage() : iWidgetsList->DefaultLogo();
+        const CFbsBitmap* mask = ( data->LogoImageMask() ) ? 
+                    data->LogoImageMask() : iWidgetsList->DefaultMask();
+        
+        TPtrC description = ( data->Description().Length() > 0 ) ? 
+            data->Description() : iWmPlugin.ResourceLoader().NoDescriptionText();
+        CWmDetailsDlg* dlg = CWmDetailsDlg::NewL(
+                data->Name(), description, 
+                data->HsContentInfo().CanBeAdded(),
+                logo, mask, iBgContext );
+
+        if ( dlg && dlg->ExecuteLD() == ECbaAddToHs )
+            {
+            AddWidgetToHomeScreenL();
+            }
+        }
+    }
+
+// ----------------------------------------------------
+// CWmMainContainer::SetClosingDown
+// ----------------------------------------------------
+//
+void CWmMainContainer::SetClosingDown( TBool aClosingDown )
+    {
+    iClosingDown = aClosingDown;
+    }
+
+// ----------------------------------------------------
+// CWmMainContainer::ClosingDown
+// ----------------------------------------------------
+//
+TBool CWmMainContainer::ClosingDown()
+    {
+    return iClosingDown;
+    }
+
+// ----------------------------------------------------
+// CWmMainContainer::HandleFindSizeChanged
+// ----------------------------------------------------
+//
+void CWmMainContainer::HandleFindSizeChanged()
+    {    
+    TAknWindowLineLayout findPane = 
+            AknLayoutScalable_Avkon::find_pane().LayoutLine();
+
+    TAknWindowLineLayout listPane;
+
+    TRect listRect = iWidgetsList->Rect();
+    listPane.il = listRect.iTl.iX;
+    listPane.it = listRect.iTl.iY;
+    listPane.ib = 0;
+    listPane.iH = TUint16( listRect.Height() - ( findPane.iH - 1 ) );
+    listPane.iW = listRect.Width();
+    listPane.ir = ELayoutEmpty;
+    
+    // set findpane width equal to listwidth
+    findPane.iW = listPane.iW;
+
+    TRect rect = Rect();
+    AknLayoutUtils::LayoutControl( iFindbox, rect, findPane );
+    AknLayoutUtils::LayoutControl( iWidgetsList, rect, listPane );
+    
+    iWidgetsList->DrawNow();
+    }
+
+
+// End of File
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/src/wmmaincontainerview.cpp	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,415 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies)..
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies 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 of the main container view for WidgetManager application.
+*
+*/
+
+// INCLUDES
+#include <aknViewAppUi.h>
+#include <eikmenub.h>
+#include <avkon.hrh>
+#include <akncontext.h>
+#include <akntitle.h>
+#include <StringLoader.h>
+#include <barsread.h>
+#include <eikbtgpc.h>
+#include <widgetmanagerview.rsg>
+#include <hscontentcontroller.h>
+
+#include "wmplugin.h"
+#include "widgetmanager.hrh"
+#include "wmmaincontainerview.h"
+#include "wmresourceloader.h"
+#include "wmmaincontainer.h"
+#include <avkon.rsg>
+
+
+// ---------------------------------------------------------
+// CWmMainContainerView::CWmMainContainerView()
+// ---------------------------------------------------------
+//
+CWmMainContainerView::CWmMainContainerView(
+        CWmPlugin& aWmPlugin ):
+    iWmPlugin( aWmPlugin )
+	{
+	iWmMainContainer = NULL;
+	}
+
+// ---------------------------------------------------------
+// CWmMainContainerView::~CWmMainContainerView()
+// ---------------------------------------------------------
+//
+CWmMainContainerView::~CWmMainContainerView()
+	{
+    if ( iWmMainContainer != NULL )
+        {
+        AppUi()->RemoveFromViewStack( *this, iWmMainContainer );
+        delete iWmMainContainer;
+        iWmMainContainer = NULL;
+        }
+	}
+
+// ---------------------------------------------------------
+// CWmMainContainerView::NewL
+// ---------------------------------------------------------
+//
+CWmMainContainerView* CWmMainContainerView::NewL(
+        CWmPlugin& aWmPlugin )
+	{
+	CWmMainContainerView* self = CWmMainContainerView::NewLC(
+	        aWmPlugin );
+	CleanupStack::Pop( self );
+	return self;
+	}
+
+// ---------------------------------------------------------
+// CWmMainContainerView::NewLC
+// ---------------------------------------------------------
+//
+CWmMainContainerView* CWmMainContainerView::NewLC(
+        CWmPlugin& aWmPlugin )
+	{
+	CWmMainContainerView* self = 
+        new ( ELeave ) CWmMainContainerView( aWmPlugin );
+	CleanupStack::PushL( self );
+	self->ConstructL();
+	return self;
+	}
+
+// ---------------------------------------------------------
+// CWmMainContainerView::ConstructL
+// ---------------------------------------------------------
+//
+void CWmMainContainerView::ConstructL()
+	{
+	BaseConstructL( R_WM_MAIN_CONTAINER_VIEW );
+	}
+
+// ---------------------------------------------------------
+// CWmMainContainerView::Id
+// ---------------------------------------------------------
+//
+TUid CWmMainContainerView::Id() const
+	{
+	return TUid::Uid( EWmMainContainerViewId );
+	}
+
+// ---------------------------------------------------------
+// CWmMainContainerView::HandleCommandL
+// ---------------------------------------------------------
+//
+void CWmMainContainerView::HandleCommandL( TInt aCommand )
+	{
+    if ( !iWmMainContainer->ClosingDown() )
+        {
+        switch ( aCommand )
+            {
+            case EWmMainContainerViewOpenPortalMenuItemCommand:
+                HandleOpenMenuItemSelectedL();
+                break;
+            case EWmMainContainerViewAddMenuItemCommand:
+                HandleAddMenuItemSelectedL();
+                break;
+            case EWmMainContainerViewLaunchMenuItemCommand:
+                HandleLaunchMenuItemSelectedL();
+                break;
+            case EWmMainContainerViewSearchMenuItemCommand: // flow through
+            case EAknSoftkeySearch:
+                HandleSearchMenuItemSelectedL();
+                break;
+            case EWmMainContainerViewSortAlphaMenuItemCommand:
+                HandleSortAlphaMenuItemSelectedL();
+                break;
+            case EWmMainContainerViewUninstallMenuItemCommand:
+                HandleUninstallMenuItemSelectedL();
+                break;
+            case EWmMainContainerViewHelpMenuItemCommand:
+                HandleHelpMenuItemSelectedL();
+                break;
+            case EWmMainContainerViewBackMenuItemCommand: // flow through
+            case EAknSoftkeyBack:
+                iWmPlugin.Deactivate();
+                break;
+            case EWmMainContainerViewWiddetDetailsMenuItemCommand:
+                HandleDetailsMenuItemSelectedL();
+                break;
+            case EAknSoftkeySelect:
+		        if ( iWmMainContainer )
+		            iWmMainContainer->SelectL();
+		        break;
+            case EAknSoftkeyCancel: // flow through
+            case EEikCmdCanceled:
+                {
+                HandleDeactivateFindPaneL();
+                break;
+                }
+            default:
+                break;
+            }
+        }
+	}
+
+// ---------------------------------------------------------
+// CWmMainContainerView::DoActivateL
+// ---------------------------------------------------------
+//
+void CWmMainContainerView::DoActivateL( 
+		const TVwsViewId& aPrevViewId,
+		TUid /*aCustomMessageId*/,
+		const TDesC8& /*aCustomMessage*/ )
+	{
+	if ( iWmMainContainer == NULL )
+		{
+		iWmMainContainer = CreateContainerL();
+		iWmMainContainer->SetMopParent( this );
+		AppUi()->AddToStackL( *this, iWmMainContainer );
+		}
+	
+	SetupStatusPaneL();
+   
+    iWmPlugin.MainViewActivated( aPrevViewId, iWmMainContainer );
+    StatusPane()->SwitchLayoutL( 
+            R_AVKON_STATUS_PANE_LAYOUT_USUAL_FLAT );
+    StatusPane()->ApplyCurrentSettingsL();
+    StatusPane()->DrawNow();
+    CEikButtonGroupContainer* bgc( Cba() );
+        
+    CEikCba* cba = static_cast< CEikCba* >( bgc->ButtonGroup() );
+    if ( cba ) 
+        {
+        
+        bgc->SetBoundingRect( TRect() );
+        cba->DrawNow();
+        }
+	}
+
+// ---------------------------------------------------------
+// CWmMainContainerView::DoDeactivate
+// ---------------------------------------------------------
+//
+void CWmMainContainerView::DoDeactivate()
+	{
+	if ( iWmMainContainer != NULL )
+		{
+		AppUi()->RemoveFromViewStack( *this, iWmMainContainer );
+		delete iWmMainContainer;
+		iWmMainContainer = NULL;
+		}
+
+	iWmPlugin.MainViewDeactivated();
+	}
+
+// ---------------------------------------------------------
+// CWmMainContainerView::HandleStatusPaneSizeChange
+// ---------------------------------------------------------
+//
+void CWmMainContainerView::HandleStatusPaneSizeChange()
+	{
+	CAknView::HandleStatusPaneSizeChange();
+	
+	// this may fail, but we're not able to propagate exceptions here
+	TVwsViewId view;
+	AppUi()->GetActiveViewId( view );
+	if ( view.iViewUid == Id() )
+		{
+		if ( iWmMainContainer ) 
+		    {
+		    iWmMainContainer->SetRect( AppUi()->ClientRect() );
+		    }
+		}
+	
+	}
+
+// ---------------------------------------------------------
+// CWmMainContainerView::SetupStatusPaneL
+// ---------------------------------------------------------
+//
+void CWmMainContainerView::SetupStatusPaneL()
+	{	
+	// setup the title pane
+	TUid titlePaneUid = TUid::Uid( EEikStatusPaneUidTitle );
+	CEikStatusPaneBase::TPaneCapabilities subPaneTitle = 
+		StatusPane()->PaneCapabilities( titlePaneUid );
+	if ( subPaneTitle.IsPresent() && subPaneTitle.IsAppOwned() )
+		{
+		CAknTitlePane* title = static_cast< CAknTitlePane* >( 
+			StatusPane()->ControlL( titlePaneUid ) );
+		if ( title )
+		    {
+		    TResourceReader reader;
+            iEikonEnv->CreateResourceReaderLC( 
+                    reader, R_WM_MAIN_CONTAINER_TITLE_RESOURCE );
+            title->SetFromResourceL( reader );
+            title->DrawDeferred();
+            CleanupStack::PopAndDestroy(); // reader internal state
+		    }
+		}
+	}
+
+// ---------------------------------------------------------
+// CWmMainContainerView::CreateContainerL
+// ---------------------------------------------------------
+//
+CWmMainContainer* CWmMainContainerView::CreateContainerL()
+	{
+	return CWmMainContainer::NewL( ClientRect(), iWmPlugin );
+	}
+
+// ---------------------------------------------------------
+// CWmMainContainerView::DynInitMenuPaneL
+// ---------------------------------------------------------
+//
+void CWmMainContainerView::DynInitMenuPaneL( 
+        TInt aResourceId, CEikMenuPane* aMenuPane )
+    {
+    if ( aResourceId == R_WM_MAIN_CONTAINER_MENU_PANE &&
+         iWmMainContainer )
+        {
+        aMenuPane->SetItemDimmed( EWmMainContainerViewAddMenuItemCommand,
+                !iWmMainContainer->CanDoAdd() );
+        aMenuPane->SetItemDimmed( EWmMainContainerViewWiddetDetailsMenuItemCommand,
+                !iWmMainContainer->CanDoDetails() );
+        aMenuPane->SetItemDimmed( EWmMainContainerViewLaunchMenuItemCommand,
+                !iWmMainContainer->CanDoLaunch() );
+        aMenuPane->SetItemDimmed( EWmMainContainerViewSearchMenuItemCommand,
+                !iWmMainContainer->CanDoFind() );
+        aMenuPane->SetItemDimmed( EWmMainContainerViewSortAlphaMenuItemCommand,
+                !iWmMainContainer->CanDoSort() );
+        aMenuPane->SetItemDimmed( EWmMainContainerViewHelpMenuItemCommand,
+                !iWmMainContainer->CanDoHelp() );
+		aMenuPane->SetItemDimmed( EWmMainContainerViewUninstallMenuItemCommand,
+                !iWmMainContainer->CanDoUninstall() );
+        if ( !iWmMainContainer->PortalSelected() )
+            aMenuPane->DeleteMenuItem( EWmMainContainerViewOpenPortalMenuItemCommand );
+        if ( !iWmMainContainer->WidgetSelected() )
+            aMenuPane->DeleteMenuItem( EWmMainContainerViewAddMenuItemCommand );
+        }
+    }
+
+// ---------------------------------------------------------
+// CWmMainContainerView::HandleOpenMenuItemSelectedL
+// ---------------------------------------------------------
+//
+TBool CWmMainContainerView::HandleOpenMenuItemSelectedL()
+    {
+    if ( iWmMainContainer && iWmMainContainer->PortalSelected() )
+        {       
+        iWmMainContainer->OpenOviPortalL();
+        }
+    return ETrue;
+    }
+
+// ---------------------------------------------------------
+// CWmMainContainerView::HandleDetailsMenuItemSelectedL
+// ---------------------------------------------------------
+//
+TBool CWmMainContainerView::HandleDetailsMenuItemSelectedL()
+    {
+    if ( iWmMainContainer && iWmMainContainer->WidgetSelected() )
+        {       
+        iWmMainContainer->LaunchDetailsDialogL();
+        }
+    return ETrue;
+    }
+
+// ---------------------------------------------------------
+// CWmMainContainerView::HandleAddMenuItemSelectedL
+// ---------------------------------------------------------
+//
+TBool CWmMainContainerView::HandleAddMenuItemSelectedL()
+	{
+	if ( iWmMainContainer && iWmMainContainer->WidgetSelected() )
+	    {	    
+	    iWmMainContainer->AddWidgetToHomeScreenL();
+	    }
+	return ETrue;
+	}
+
+// ---------------------------------------------------------
+// CWmMainContainerView::HandleLaunchMenuItemSelectedL
+// ---------------------------------------------------------
+//
+TBool CWmMainContainerView::HandleLaunchMenuItemSelectedL()
+	{
+    if ( iWmMainContainer && iWmMainContainer->WidgetSelected() )
+        {
+        iWmMainContainer->LaunchWidgetL();
+        }
+	return ETrue;
+	}
+
+// ---------------------------------------------------------
+// CWmMainContainerView::HandleSearchMenuItemSelectedL
+// ---------------------------------------------------------
+//
+TBool CWmMainContainerView::HandleSearchMenuItemSelectedL()
+	{
+    if ( iWmMainContainer )
+        {
+        iWmMainContainer->ActivateFindPaneL();
+        }
+	return ETrue;
+	}
+
+// ---------------------------------------------------------
+// CWmMainContainerView::HandleSortAlphaMenuItemSelectedL
+// ---------------------------------------------------------
+//
+TBool CWmMainContainerView::HandleSortAlphaMenuItemSelectedL()
+    {
+    if ( iWmMainContainer )
+        {
+        iWmMainContainer->SortListAlphabeticallyL();
+        }
+    return ETrue;
+    }
+
+// ---------------------------------------------------------
+// CWmMainContainerView::HandleUninstallMenuItemSelectedL
+// ---------------------------------------------------------
+//
+TBool CWmMainContainerView::HandleUninstallMenuItemSelectedL()
+    {
+    if ( iWmMainContainer )
+        {
+        iWmMainContainer->UninstallWidgetL();
+        }
+    return ETrue;
+    }
+
+// ---------------------------------------------------------
+// CWmMainContainerView::HandleHelpMenuItemSelectedL
+// ---------------------------------------------------------
+//
+TBool CWmMainContainerView::HandleHelpMenuItemSelectedL()
+    {
+    iWmMainContainer->ShowHelpL();
+    return ETrue;
+    }
+
+// ---------------------------------------------------------
+// CWmMainContainerView::HandleDeactivateFindPaneL
+// ---------------------------------------------------------
+//
+TBool CWmMainContainerView::HandleDeactivateFindPaneL()
+    {
+    if ( iWmMainContainer )
+        {       
+        iWmMainContainer->DeactivateFindPaneL();
+        }
+    return ETrue;
+    }
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/src/wmpersistentwidgetorder.cpp	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,230 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies)..
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies 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 an ordered list of widget id's with persistence capability
+*
+*/
+
+// INCLUDES
+#include <s32file.h> // RFile
+#include <s32std.h> // streams
+#include <driveinfo.h>
+#include <sysutil.h> 
+
+#include "wmwidgetdata.h"
+#include "wmpersistentwidgetorder.h"
+
+// CONSTANTS
+_LIT( KStoreFileName, "wmlistorder.dat" );
+
+
+// ---------------------------------------------------------
+// CWmPersistentWidgetOrder::NewL
+// ---------------------------------------------------------
+//
+CWmPersistentWidgetOrder* CWmPersistentWidgetOrder::NewL( RFs& aFs )
+    {
+    CWmPersistentWidgetOrder* self =
+        new (ELeave) CWmPersistentWidgetOrder( aFs );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// ---------------------------------------------------------
+// CWmPersistentWidgetOrder::CWmPersistentWidgetOrder
+// ---------------------------------------------------------
+//
+CWmPersistentWidgetOrder::CWmPersistentWidgetOrder( RFs& aFs )
+    : iFs( aFs )
+    {
+    }
+
+// ---------------------------------------------------------
+// CWmPersistentWidgetOrder::ConstructL
+// ---------------------------------------------------------
+//
+void CWmPersistentWidgetOrder::ConstructL()
+    {
+    }
+
+// ---------------------------------------------------------
+// CWmPersistentWidgetOrder::~CWmPersistentWidgetOrder
+// ---------------------------------------------------------
+//
+CWmPersistentWidgetOrder::~CWmPersistentWidgetOrder()
+    {
+    CleanupArray();
+    }
+
+// ---------------------------------------------------------
+// CWmPersistentWidgetOrder::LoadL
+// ---------------------------------------------------------
+//
+void CWmPersistentWidgetOrder::LoadL()
+    {
+    // 1. empty the in-mempory storage
+    CleanupArray();
+    // 2. create stream for reading data from a file
+    TFileName storeFileName;
+    GetStoreFileNameL( storeFileName );
+    CPermanentFileStore* fileStore = NULL;
+    fileStore = CPermanentFileStore::OpenL(
+            iFs, storeFileName, EFileRead );
+    CleanupStack::PushL( fileStore );
+    RStoreReadStream reader;
+    reader.OpenLC( *fileStore, fileStore->Root() );
+    // 3. read all contents from the stream
+    TInt arrayCount = reader.ReadInt32L();
+    while( iTagArray.Count() < arrayCount )
+        {
+        TInt32 uid = reader.ReadInt32L();
+        TInt32 publisherIdLen = reader.ReadInt32L();
+        HBufC16* publisherId = HBufC16::NewLC(publisherIdLen);
+        TPtr16 publisherIdPtr = publisherId->Des();
+        reader.ReadL( publisherIdPtr, publisherIdLen );
+        iTagArray.AppendL( Tag( uid, publisherId ) );
+        CleanupStack::Pop( publisherId );
+        }
+    // 4. cleanup
+    CleanupStack::PopAndDestroy( &reader );
+    CleanupStack::PopAndDestroy( fileStore );
+    }
+
+// ---------------------------------------------------------
+// CWmPersistentWidgetOrder::StoreL
+// ---------------------------------------------------------
+//
+void CWmPersistentWidgetOrder::StoreL( const RWidgetDataValues& aArray )
+    {
+    // 1. create stream for storing the data to a file
+    TFileName storeFileName;
+    GetStoreFileNameL( storeFileName );
+    CPermanentFileStore* fileStore = CPermanentFileStore::ReplaceLC(
+            iFs, storeFileName, EFileWrite );
+    fileStore->SetTypeL( KPermanentFileStoreLayoutUid );
+    RStoreWriteStream writer;
+    TStreamId id = writer.CreateLC( *fileStore );
+    // 2. write all content to the stream
+    writer.WriteInt32L( aArray.Count() );
+    for( TInt i=0; i<aArray.Count(); ++i )
+        {
+        TInt32 uid = aArray[i]->Uid().iUid;
+        const TDesC16& publisherId = aArray[i]->HsContentInfo().PublisherId();
+        writer.WriteInt32L( uid );
+        writer.WriteInt32L( publisherId.Length() );
+        writer.WriteL( publisherId, publisherId.Length() );
+        }
+    // 3. check available space and commit the stream
+    TInt streamsize = writer.Sink()->SizeL();
+    TBool belowCriticalLevel = SysUtil::DiskSpaceBelowCriticalLevelL(
+            &iFs, streamsize, EDriveC );
+    if( !belowCriticalLevel )
+        {
+        writer.CommitL();
+        fileStore->SetRootL(id);
+        fileStore->CommitL();        
+        }
+    // 4. cleanup
+    CleanupStack::PopAndDestroy( &writer );
+    CleanupStack::PopAndDestroy( fileStore );
+    }
+
+// ---------------------------------------------------------
+// CWmPersistentWidgetOrder::CleanupArray
+// ---------------------------------------------------------
+//
+void CWmPersistentWidgetOrder::CleanupArray()
+    {
+    for( TInt i=0; i<iTagArray.Count(); ++i )
+        {
+        delete iTagArray[i].iPublisherId;
+        iTagArray[i].iPublisherId = 0;
+        }
+    iTagArray.Close();
+    }
+
+// ---------------------------------------------------------
+// CWmPersistentWidgetOrder::GetStoreFileNameL
+// ---------------------------------------------------------
+//
+void CWmPersistentWidgetOrder::GetStoreFileNameL(
+        TDes& aPathBuf )
+    {
+    // get default drive for phone memory
+    TInt driveNum = EDriveC;
+    User::LeaveIfError( DriveInfo::GetDefaultDrive(
+        DriveInfo::EDefaultPhoneMemory, driveNum ) );
+    // make sure the directory exists
+    iFs.CreatePrivatePath( driveNum ); // ignore errors
+    // build the store path
+    TChar driveLetter;
+    User::LeaveIfError( iFs.DriveToChar( driveNum, driveLetter ) );
+    aPathBuf.Append( driveLetter );
+    aPathBuf.Append( _L(":") );
+    TFileName privatePath;
+    User::LeaveIfError( iFs.PrivatePath( privatePath ) );
+    aPathBuf.Append( privatePath );
+    aPathBuf.Append( KStoreFileName );
+    }
+
+// ---------------------------------------------------------
+// CWmPersistentWidgetOrder::IndexOf
+// ---------------------------------------------------------
+//
+TInt CWmPersistentWidgetOrder::IndexOf( const CWmWidgetData& aWidgetData ) const
+    {
+    TInt found = KErrNotFound;
+    for( TInt i=0; i<iTagArray.Count() && found<0; ++i )
+        {
+        if ( iTagArray[i].Matches( aWidgetData ) )
+            found = i;
+        }
+    return found;
+    }
+
+// ---------------------------------------------------------
+// CWmPersistentWidgetOrder::IsEmpty
+// ---------------------------------------------------------
+//
+TBool CWmPersistentWidgetOrder::IsEmpty() const
+    {
+    return iTagArray.Count() == 0;
+    }
+
+// ---------------------------------------------------------
+// CWmPersistentWidgetOrder::Tag::Tag
+// ---------------------------------------------------------
+//
+CWmPersistentWidgetOrder::Tag::Tag(
+        TInt32 aUid, HBufC16* aPublisherId )
+    {
+    iUid = aUid;
+    iPublisherId = aPublisherId;
+    }
+
+// ---------------------------------------------------------
+// CWmPersistentWidgetOrder::Tag::Matches
+// ---------------------------------------------------------
+//
+TBool CWmPersistentWidgetOrder::Tag::Matches(
+        const CWmWidgetData& aWidgetData ) const
+    {
+    return ( aWidgetData.Uid().iUid == iUid &&
+            aWidgetData.HsContentInfo().PublisherId() == *iPublisherId );
+    }
+
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/src/wmplugin.cpp	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,266 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies)..
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* widget manager plugin implementation
+*
+*/
+
+// INCLUDE FILES
+#include <bautils.h>
+#include <coemain.h>
+#include <aknViewAppUi.h>
+
+#include "wmcommon.h"
+#include "widgetmanager.hrh"
+#include "wmmaincontainer.h"
+#include "wmmaincontainerview.h"
+#include "wmresourceloader.h"
+#include "wmplugin.h"
+#include "wmeffectmanager.h"
+#include <widgetmanagerview.rsg>
+
+// ---------------------------------------------------------
+// CWmPlugin::NewL
+// ---------------------------------------------------------
+//
+CWmPlugin* CWmPlugin::NewL()
+    {
+    CWmPlugin* self=new(ELeave) CWmPlugin();
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+// ---------------------------------------------------------
+// CWmPlugin::~CWmPlugin
+// ---------------------------------------------------------
+//
+CWmPlugin::~CWmPlugin()
+    {
+    if ( iViewAppUi )
+        {
+        Deactivate();
+        iViewAppUi->RemoveView( TUid::Uid( EWmMainContainerViewId ) );
+        }
+    iWmMainContainer = NULL;
+    delete iResourceLoader;
+    delete iEffectManager;
+    delete iPostponedContent;
+    }
+
+// ---------------------------------------------------------
+// CWmPlugin::CWmPlugin
+// ---------------------------------------------------------
+//
+CWmPlugin::CWmPlugin()
+    {
+    iPreviousViewUid.iViewUid = KNullUid;
+    }
+
+// ---------------------------------------------------------
+// CWmPlugin::ConstructL
+// ---------------------------------------------------------
+//
+void CWmPlugin::ConstructL()
+    {
+    iWmMainContainer = NULL;
+
+    // store static view app ui
+    CEikonEnv* eikonEnv = CEikonEnv::Static();
+    if ( !eikonEnv ) User::Leave( KErrUnknown );
+    iViewAppUi = (CAknViewAppUi*)eikonEnv->EikAppUi();
+    if ( !iViewAppUi ) User::Leave( KErrUnknown );
+
+    // create resource loader
+    iFs = &eikonEnv->FsSession();
+    iResourceLoader = CWmResourceLoader::NewL( *eikonEnv );
+    iEffectManager = CWmEffectManager::NewL( *eikonEnv );
+    
+    // main view
+    CWmMainContainerView* mainView =
+            CWmMainContainerView::NewL( *this );
+    CleanupStack::PushL( mainView );
+	iViewAppUi->AddViewL( mainView );	
+	CleanupStack::Pop( mainView );
+    }
+
+// ---------------------------------------------------------
+// CWmPlugin::Activate
+// ---------------------------------------------------------
+//
+void CWmPlugin::Activate()
+    {
+    if ( !IsActive() && iHsContentController )
+        {
+        TRAP_IGNORE( 
+            iEffectManager->BeginFullscreenEffectL( 
+                KAppStartCommonDefaultStyle );
+            iViewAppUi->ActivateLocalViewL( 
+                TUid::Uid( EWmMainContainerViewId ) ); 
+            );
+        }
+    }
+
+// ---------------------------------------------------------
+// CWmPlugin::IsActive
+// ---------------------------------------------------------
+//
+TBool CWmPlugin::IsActive()
+    {
+    return ( iPreviousViewUid.iViewUid != KNullUid );
+    }
+
+// ---------------------------------------------------------
+// CWmPlugin::Deactivate
+// ---------------------------------------------------------
+//
+void CWmPlugin::Deactivate()
+    {
+    if ( IsActive() )
+        {
+        iWmMainContainer->SetClosingDown( ETrue );
+        TRAP_IGNORE( 
+            iEffectManager->BeginFullscreenEffectL(
+                KAppExitCommonDefaultStyle );
+            iViewAppUi->ActivateLocalViewL(
+                iPreviousViewUid.iViewUid ); 
+            );
+        }
+    }
+
+// ---------------------------------------------------------
+// CWmPlugin::MainViewActivated
+// ---------------------------------------------------------
+//
+void CWmPlugin::MainViewActivated( 
+                    const TVwsViewId& aViewId,
+                    CWmMainContainer* aWmMainContainer )
+    {
+    iPreviousViewUid = aViewId;
+    iWmMainContainer = aWmMainContainer;
+    iEffectManager->UiRendered();
+    iWmMainContainer->SetClosingDown( EFalse );
+    }
+
+// ---------------------------------------------------------
+// CWmPlugin::MainViewDeactivated
+// ---------------------------------------------------------
+//
+void CWmPlugin::MainViewDeactivated()
+    {
+    iPreviousViewUid.iViewUid = KNullUid;
+    iWmMainContainer = NULL;
+    iEffectManager->UiRendered();
+
+    TRAP_IGNORE( ExecutePostponedCommandL(); );
+    }
+
+// ---------------------------------------------------------
+// CWmPlugin::SetPostponedCommandL
+// ---------------------------------------------------------
+//
+void CWmPlugin::SetPostponedCommandL(
+        TCommand aCommand, CHsContentInfo& aContentInfo )
+    {
+    iPostponedCommand = aCommand;
+    delete iPostponedContent;
+    iPostponedContent = NULL;
+    iPostponedContent = aContentInfo.CloneL();
+    }
+
+// ---------------------------------------------------------
+// CWmPlugin::ExecutePostponedCommandL
+// ---------------------------------------------------------
+//
+void CWmPlugin::ExecutePostponedCommandL()
+    {
+    if ( iPostponedCommand == EAddToHomescreen )
+        {
+        TInt err = ContentController().AddWidgetL( *iPostponedContent );
+        if ( err == KHsErrorViewFull ||
+                err == KHsErrorDoesNotFit )
+            {
+            ResourceLoader().InfoPopupL(
+                R_QTN_HS_ADD_WIDGET_NO_SPACE_NOTE, KNullDesC );
+            }
+        else if ( err == KHsErrorMaxInstanceCountExceeded )
+            {
+            ResourceLoader().InfoPopupL(
+                R_QTN_HS_ADD_WIDGET_MAX_COUNT_NOTE, KNullDesC );
+            }
+        else if ( err == KErrNoMemory )
+            {
+            ResourceLoader().InfoPopupL(
+                R_QTN_HS_HS_MEMORY_FULL, KNullDesC );
+            }
+        else if ( err != KErrNone )
+            {
+            ResourceLoader().ErrorPopup( err );
+            }
+        }
+    iPostponedCommand = ENone;
+    delete iPostponedContent;
+    iPostponedContent = NULL;
+    }
+
+// ---------------------------------------------------------
+// CWmPlugin::MainViewDeactivated
+// ---------------------------------------------------------
+//
+CAknViewAppUi& CWmPlugin::ViewAppUi()
+    {
+    return *iViewAppUi;
+    }
+
+// ---------------------------------------------------------
+// CWmPlugin::MainViewDeactivated
+// ---------------------------------------------------------
+//
+CWmResourceLoader& CWmPlugin::ResourceLoader()
+    {
+    return *iResourceLoader;
+    }
+
+// ---------------------------------------------------------
+// CWmPlugin::MainViewDeactivated
+// ---------------------------------------------------------
+//
+MHsContentController& CWmPlugin::ContentController()
+    {
+    return *iHsContentController;
+    }
+
+// ---------------------------------------------------------
+// CWmPlugin::MainViewDeactivated
+// ---------------------------------------------------------
+//
+RFs& CWmPlugin::FileServer()
+    {
+    return *iFs;
+    }
+
+// ---------------------------------------------------------
+// CWmPlugin::NotifyWidgetListChanged
+// ---------------------------------------------------------
+//
+void CWmPlugin::NotifyWidgetListChanged()
+    {
+    if ( iWmMainContainer )
+        {
+        iWmMainContainer->HandleWidgetListChanged();
+        }
+    }
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/src/wmpluginproxy.cpp	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,37 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies)..
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* widget manager plugin proxy
+*
+*/
+
+#include <e32std.h>
+#include <implementationproxy.h>
+
+#include "wmplugin.h"
+
+// Map the interface implementation UIDs to implementation factory functions
+const TImplementationProxy ImplementationTable[] =
+    {
+    IMPLEMENTATION_PROXY_ENTRY( 0x20026F53, CWmPlugin::NewL )
+    };
+
+
+// Exported proxy for instantiation method resolution.
+EXPORT_C const TImplementationProxy* ImplementationGroupProxy(
+    TInt& aTableCount)
+    {
+    aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy);
+    return ImplementationTable;
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/src/wmportalbutton.cpp	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,426 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies)..
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* Implementation of the portal button for WidgetManager
+*
+*/
+
+// INCLUDE FILES
+#include <aknlayoutscalable_apps.cdl.h>
+#include <aknlayoutscalable_avkon.cdl.h>
+#include <layoutmetadata.cdl.h>
+#include <aknbutton.h>
+#include <AknsDrawUtils.h>
+#include <AknBidiTextUtils.h>
+#include <AknsFrameBackgroundControlContext.h>
+#include <gulicon.h>
+#include <avkon.mbg>
+#include <widgetmanager.mbg>
+
+#include "wmportalbutton.h"
+#include "wmcommon.h"
+#include "wmplugin.h"
+#include "wmresourceloader.h"
+#include "wmmaincontainer.h"
+
+// MEMBER FUNCTIONS
+
+// ---------------------------------------------------------
+// CWmPortalButton::NewL
+// ---------------------------------------------------------
+//
+CWmPortalButton* CWmPortalButton::NewL( 
+        const CCoeControl* aParent,
+        const TDesC& aText,
+        const TDesC& aUrl,
+        TWmUiControlIds aButtonCtrlId )
+	{
+ 	CWmPortalButton* self = new (ELeave) CWmPortalButton( 
+                KAknButtonTextInsideFrame, aButtonCtrlId );
+    CleanupStack::PushL( self );
+    self->ConstructL( aParent,aText, aUrl );
+    CleanupStack::Pop( self );
+    return self;
+	}
+
+// ---------------------------------------------------------
+// CWmPortalButton::~CWmPortalButton
+// ---------------------------------------------------------
+//
+CWmPortalButton::~CWmPortalButton()
+    {
+    delete iText;
+    delete iUrl;
+    delete iImageConverter;
+    }
+
+// ---------------------------------------------------------
+// CWmPortalButton::CWmPortalButton
+// ---------------------------------------------------------
+//
+CWmPortalButton::CWmPortalButton( 
+                        const TInt aFlags,
+                        TWmUiControlIds aButtonCtrlId )
+    :CAknButton( aFlags ),
+    iButtonCtrlId( aButtonCtrlId )
+    {
+    }
+
+// ---------------------------------------------------------
+// CWmPortalButton::ConstructL
+// ---------------------------------------------------------
+//
+void CWmPortalButton::ConstructL( 
+        const CCoeControl* aParent,
+        const TDesC& aText, const TDesC& aUrl )
+    {
+    if (  !aParent )
+        {
+        User::Leave( KErrArgument );
+        }
+    else if ( iButtonCtrlId != EOviPortal )
+        {
+        // operator button not supported until layout available.
+        User::Leave( KErrNotSupported );
+        }
+
+    SetContainerWindowL( *aParent );
+    
+    // Obtain pointer to main container.
+    iWmMainContainer = 
+            static_cast <CWmMainContainer*>( 
+                const_cast <CCoeControl*>( aParent ) );
+    
+    CGulIcon* icon = AknsUtils::CreateGulIconL(
+            AknsUtils::SkinInstance(), KAknsIIDQgnMenuOviStore,
+            iWmMainContainer->WmPlugin().ResourceLoader().IconFilePath(),
+            EMbmWidgetmanagerQgn_menu_ovistore,
+            EMbmWidgetmanagerQgn_menu_ovistore_mask );
+    
+    CleanupStack::PushL( icon );
+    CAknButton::ConstructL( icon, NULL, NULL, NULL,
+                            aText, KNullDesC, 0 );
+    CleanupStack::Pop( icon ); // ownership taken
+    
+    TAknsItemID frameId = ((iButtonCtrlId == EOviPortal) ? 
+        KAknsIIDQgnHomeWmButton : KAknsIIDQsnFrButtonNormal);
+    TAknsItemID frameCenterId = ((iButtonCtrlId == EOviPortal) ? 
+        KAknsIIDQgnHomeWmButtonCenter : KAknsIIDQsnFrButtonCenterNormal );
+    TAknsItemID framePressedId = ((iButtonCtrlId == EOviPortal) ? 
+        KAknsIIDQgnHomeWmButtonPressed : KAknsIIDQsnFrButtonPressed );
+    TAknsItemID framePressedCenterId = ((iButtonCtrlId == EOviPortal) ? 
+        KAknsIIDQgnHomeWmButtonPressedCenter : KAknsIIDQsnFrButtonCenterPressed );
+
+    iText = aText.AllocL();
+    iUrl = aUrl.AllocL();
+
+    SetFocusing( ETrue );
+    SetBackgroundIds( frameId,
+                      framePressedId,
+                      KAknsIIDQsnFrButtonInactive,
+                      framePressedId,
+                      KAknsIIDQsnFrButtonInactive );
+    SetFrameAndCenterIds( 
+                        frameId,
+						frameCenterId,
+						KAknsIIDDefault,
+						KAknsIIDDefault,
+						KAknsIIDDefault,
+						KAknsIIDDefault,
+						framePressedId,
+						framePressedCenterId,
+						KAknsIIDDefault,
+						KAknsIIDDefault );
+    
+    // ready to be drawn
+    ActivateL();
+    }
+
+// ---------------------------------------------------------
+// CWmPortalButton::HandlePointerEventL
+// ---------------------------------------------------------
+//
+void CWmPortalButton::HandlePointerEventL( 
+        const TPointerEvent& aPointerEvent )
+	{
+	CAknButton::HandlePointerEventL( aPointerEvent);
+	
+	if ( AknLayoutUtils::PenEnabled() )
+		{
+        switch ( aPointerEvent.iType )
+            {
+            case TPointerEvent::EButton1Down:
+                {
+                break;	
+                }
+            case TPointerEvent::EButton1Up:
+                {
+                if ( iWmMainContainer && 
+                    iButtonCtrlId == EOviPortal )
+                    {
+                    iWmMainContainer->OpenOviPortalL();
+                    }
+                break;
+                }
+            default:
+                break;
+            }
+       }	
+	}
+	
+// ---------------------------------------------------------
+// CWmPortalButton::OfferKeyEventL
+// ---------------------------------------------------------
+//
+TKeyResponse CWmPortalButton::OfferKeyEventL( 
+		const TKeyEvent& aKeyEvent, 
+		TEventCode aType )
+    {
+    TKeyResponse keyResponse( EKeyWasNotConsumed );    
+    keyResponse = CAknButton::OfferKeyEventL( aKeyEvent, aType );
+    
+    if ( ( aType == EEventKey ) &&
+       ( aKeyEvent.iScanCode == EStdKeyDevice3 ||
+        aKeyEvent.iScanCode == EStdKeyEnter ) )
+        {
+        if ( iWmMainContainer && 
+            iButtonCtrlId == EOviPortal )
+            {
+            iWmMainContainer->OpenOviPortalL();
+            }
+
+        keyResponse = EKeyWasConsumed;
+        }
+
+    return keyResponse;
+    }
+
+// ---------------------------------------------------------
+// CWmPortalButton::SizeChanged
+// ---------------------------------------------------------
+//
+void CWmPortalButton::SizeChanged()
+    {    
+    CAknButton::SizeChanged();
+
+    TBool landscape = Layout_Meta_Data::IsLandscapeOrientation();
+    TRect rect = Rect();
+    TAknLayoutRect imageLayout;
+    if ( iButtonCtrlId == EOviPortal )
+        {
+        imageLayout.LayoutRect( rect,
+                AknLayoutScalable_Apps::wgtman_btn_pane_g1(
+                                    landscape ? 1 : 0).LayoutLine() );
+        }
+    SetTextVerticalAlignment( CAknButton::ECenter );
+    SetIconSize( imageLayout.Rect().Size() );
+    SetTextAndIconAlignment( 
+            landscape ? CAknButton::EIconOverText : CAknButton::EIconBeforeText );
+    }
+
+// ---------------------------------------------------------
+// CWmPortalButton::NotifyCompletion
+// ---------------------------------------------------------
+//
+void CWmPortalButton::NotifyCompletion( TInt aError )
+    {
+    if ( KErrNone != aError )
+        {
+        // no image available. Do nothing.
+        }
+    else
+        {        
+        CGulIcon* icon = NULL;
+        TRAPD( err, icon = CGulIcon::NewL( 
+                iImageConverter->Bitmap(), iImageConverter->Mask() ) );
+        if ( KErrNone == err && icon )
+            {
+            // Ownership transfered
+            State()->SetIcon( icon );
+            DrawDeferred();            
+            }
+        }
+    }
+
+// ---------------------------------------------------------
+// CWmPortalButton::Draw
+// ---------------------------------------------------------
+//
+void CWmPortalButton::Draw( const TRect& /*aRect*/ ) const
+    {
+    TRect rect = Rect();
+
+    TAknLayoutRect centerLayout;
+    centerLayout.LayoutRect( rect,
+        AknLayoutScalable_Avkon::toolbar_button_pane_g1().LayoutLine() );
+    TRect innerRect = centerLayout.Rect();
+
+    CWindowGc& gc = SystemGc();
+    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+
+ 	TAknsItemID frameId = ( ( iButtonCtrlId == EOviPortal) ? 
+ 	    KAknsIIDQgnHomeWmButton : KAknsIIDQsnFrButtonNormal );
+    TAknsItemID frameCenterId = ( ( iButtonCtrlId == EOviPortal) ? 
+        KAknsIIDQgnHomeWmButtonCenter : KAknsIIDQsnFrButtonCenterNormal );
+ 	
+    if ( iButtonPressed )
+    	{
+        frameId = ( ( iButtonCtrlId == EOviPortal) ? 
+            KAknsIIDQgnHomeWmButtonPressed : KAknsIIDQsnFrButtonPressed );
+        frameCenterId = ( ( iButtonCtrlId == EOviPortal) ? 
+            KAknsIIDQgnHomeWmButtonPressedCenter : KAknsIIDQsnFrButtonCenterPressed );
+    	}
+    else if ( IsDimmed() )
+        {
+    	frameId = KAknsIIDQsnFrButtonInactive;
+    	frameCenterId = KAknsIIDQsnFrButtonCenterInactive;
+        }
+    else if ( IsFocused() )
+        {
+        frameId = KAknsIIDQsnFrList;
+        frameCenterId = KAknsIIDQsnFrListCenter;
+        }
+    
+    iBgContext->SetFrame( frameId );
+    iBgContext->SetCenter( frameCenterId );
+    iBgContext->SetFrameRects( rect, innerRect );
+
+    if ( !AknsDrawUtils::Background( skin, iBgContext, NULL, 
+                    gc, rect, KAknsDrawParamNoClearUnderImage ) )
+        {
+        gc.SetBrushColor( KRgbRed );
+        gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
+        gc.DrawRect( rect );
+        }
+    gc.SetBrushStyle( CGraphicsContext::ENullBrush );
+	
+    CAknButtonState* state = State();
+    if ( state )
+        {
+        TBool landscape = Layout_Meta_Data::IsLandscapeOrientation();
+        
+        const CGulIcon* icon = state->Icon();
+        CFbsBitmap* bitmap = const_cast<CFbsBitmap*>(icon->Bitmap());
+        CFbsBitmap* mask = const_cast<CFbsBitmap*>(icon->Mask());
+        // draw image
+        if ( state->Icon() && bitmap && mask )
+            {
+            TAknLayoutRect imageLayout;
+            if ( iButtonCtrlId == EOviPortal )
+                {
+                imageLayout.LayoutRect( rect,
+                        AknLayoutScalable_Apps::wgtman_btn_pane_g1(
+                                landscape ? 1 : 0).LayoutLine() );
+                }
+            imageLayout.DrawImage( gc, bitmap, mask );
+            }
+        
+        // draw text if portrait        
+        if ( !landscape )
+            {
+            TAknTextComponentLayout leftLayout;
+            if ( iButtonCtrlId == EOviPortal )
+                {
+                leftLayout = AknLayoutScalable_Apps::wgtman_btn_pane_t1( 
+                                                    landscape ? 1 : 0  );
+                }
+            DrawText( gc, state->Text(), leftLayout, 1 );
+            }
+        }
+    }
+
+// ---------------------------------------------------------
+// CWmPortalButton::DrawText
+// ---------------------------------------------------------
+//
+void CWmPortalButton::DrawText( 
+                        CWindowGc& aGc,
+                        const TDesC& aText,
+                        TAknTextComponentLayout& aLayout,
+                        TInt aMargin ) const
+    {
+    TAknLayoutText layoutText;
+    layoutText.LayoutText(Rect(), aLayout.LayoutLine() );
+    
+    const CFont* font = layoutText.Font();
+    TRect textRect = layoutText.TextRect();
+    
+    aGc.UseFont( font );
+    
+    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+    
+    TRgb textColor( layoutText.Color() );
+
+    if ( IsDimmed() )
+        {
+        const TInt KAlpha = 77;
+        textColor = iEikonEnv->ControlColor( EColorButtonText, *this );        
+        // try over-writing color from theme, ignore error.
+        AknsUtils::GetCachedColor( 
+                skin, textColor, KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG6 );
+        textColor.SetAlpha( KAlpha );
+        }
+    else if ( IsFocused() || iButtonPressed )
+        {
+        textColor = iEikonEnv->ControlColor( EColorButtonTextPressed, *this );
+        // try over-writing color from theme, ignore error.
+        AknsUtils::GetCachedColor( 
+                skin, textColor, KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG10 );
+        }
+    else if ( textColor.Internal() <= 0 )
+        {
+        textColor = iEikonEnv->ControlColor( EColorButtonText, *this );
+        // try over-writing color from theme, ignore error.
+        AknsUtils::GetCachedColor( 
+                skin, textColor, KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG6 );        
+        }
+    aGc.SetPenColor( textColor);
+    
+    // Layout data not correct, add some space for text
+    textRect.iBr.iX += aMargin;
+    textRect.iTl.iX -= aMargin;
+    
+    // buffer for visually ordered text
+    TBuf<255 + KAknBidiExtraSpacePerLine> visualText; 
+    TInt clipWidth = textRect.Width();
+
+    // bidi processing - using AknBidiTextUtils.
+    AknBidiTextUtils::ConvertToVisualAndClip(
+        aText,
+        visualText,
+        *font,
+        clipWidth,
+        clipWidth );
+
+    TInt baselineOffset = 0;
+    switch ( iVerticalAlignment )
+        {
+        case ETop:
+            baselineOffset = font->AscentInPixels();
+            break;
+
+        case EBottom:
+            baselineOffset = textRect.Height();
+            break;
+
+        default:  // centered
+            baselineOffset = font->AscentInPixels() +
+                           ( textRect.Height() - font->AscentInPixels() ) / 2;
+        }
+        
+    aGc.DrawText( visualText, textRect, 
+            baselineOffset, layoutText.Align() );    
+    }
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/src/wmresourceloader.cpp	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,221 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies)..
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* loads widget manager resources and icons
+*
+*/
+
+// INCLUDE FILES
+#include <eikenv.h>
+#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>
+
+#include "wmresourceloader.h"
+
+// CONSTANTS
+_LIT( KZdrive, "Z:" );
+_LIT( KRelativeMifPath, "\\resource\\apps\\widgetmanager.mif" );
+_LIT( KRelativeResourcePathWithWildcard, "\\resource\\widgetmanagerview.r*" );
+_LIT( KRelativeResourcePath, "\\resource\\widgetmanagerview.rsc" );
+
+// ---------------------------------------------------------
+// CWmResourceLoader::NewL
+// ---------------------------------------------------------
+//
+CWmResourceLoader* CWmResourceLoader::NewL(
+        CEikonEnv& aEnv )
+    {
+    CWmResourceLoader* self = new (ELeave) CWmResourceLoader( aEnv );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// ---------------------------------------------------------
+// CWmResourceLoader::CWmResourceLoader
+// ---------------------------------------------------------
+//
+CWmResourceLoader::CWmResourceLoader( CEikonEnv& aEnv )
+    : iEnv( aEnv )
+    {
+    }
+
+// ---------------------------------------------------------
+// CWmResourceLoader::~CWmResourceLoader
+// ---------------------------------------------------------
+//
+CWmResourceLoader::~CWmResourceLoader()
+    {
+    UnloadResources();
+    delete iNote;
+    delete iDescription;
+    }
+
+// ---------------------------------------------------------
+// CWmResourceLoader::ConstructL
+// ---------------------------------------------------------
+//
+void CWmResourceLoader::ConstructL()
+    {
+    Dll::FileName( iDllName );
+
+    LoadResourcesL();
+    DetermineIconFilePath();
+    
+    iDescription = StringLoader::LoadL( 
+            R_QTN_WM_DETAILS_NO_DESCRIPTION, &iEnv  );
+    }
+
+// ---------------------------------------------------------
+// CWmResourceLoader::LoadResourcesL
+// ---------------------------------------------------------
+//
+void CWmResourceLoader::LoadResourcesL()
+    {    
+    TFileName resourceFile;
+    RFs& fs = iEnv.FsSession();
+    TPtrC dllDrive = iDllName.Left(2); 
+    resourceFile.Copy( dllDrive );
+    resourceFile.Append( KRelativeResourcePathWithWildcard );
+    BaflUtils::NearestLanguageFile( fs, resourceFile );
+    if ( !BaflUtils::FileExists( fs, resourceFile ) )
+        {
+        resourceFile.Copy( dllDrive );
+        resourceFile.Append( KRelativeResourcePath );
+        BaflUtils::NearestLanguageFile( fs, resourceFile );
+        if ( !BaflUtils::FileExists( fs, resourceFile ) &&
+            dllDrive != KZdrive() )
+            {
+            // try to load resource from ROM ( partial upgrade case )
+            resourceFile.Copy( KZdrive );
+            resourceFile.Append( KRelativeResourcePathWithWildcard );
+            BaflUtils::NearestLanguageFile( fs, resourceFile );
+            if ( !BaflUtils::FileExists( fs, resourceFile ) )
+                {
+                resourceFile.Copy( KZdrive );
+                resourceFile.Append( KRelativeResourcePath );
+                BaflUtils::NearestLanguageFile( fs, resourceFile );
+                }
+            }
+        }
+    iResourceFileOffset = iEnv.AddResourceFileL( resourceFile );
+    }
+
+// ---------------------------------------------------------
+// CWmResourceLoader::UnloadResources
+// ---------------------------------------------------------
+//
+void CWmResourceLoader::UnloadResources()
+    {
+    if ( iResourceFileOffset )
+        {
+        iEnv.DeleteResourceFile( iResourceFileOffset );        
+        }
+    }
+
+// ---------------------------------------------------------
+// CWmResourceLoader::DetermineIconFilePath
+// ---------------------------------------------------------
+//
+void CWmResourceLoader::DetermineIconFilePath()
+    {
+    RFs& fs = iEnv.FsSession();
+    iMifFile.Copy( iDllName.Left(2) );
+    iMifFile.Append( KRelativeMifPath );
+    if ( !BaflUtils::FileExists( fs, iMifFile ) )
+        {
+        // Load from ROM ( partial upgrade case )
+        iMifFile.Copy( KZdrive );
+        iMifFile.Append( KRelativeMifPath );        
+        }
+    }
+
+// ---------------------------------------------------------
+// CWmResourceLoader::IconFilePath
+// ---------------------------------------------------------
+//
+const TDesC& CWmResourceLoader::IconFilePath()
+    {
+    return iMifFile;
+    }
+
+// ---------------------------------------------------------
+// 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
+// StringLoader method to load.
+// ---------------------------------------------------------
+//
+HBufC* LoadStringLC( TInt aResourceId, const TDesC& aString, CEikonEnv* aEnv )
+    {
+    if ( aString.Length() > 0 )
+        return StringLoader::LoadLC( aResourceId, aString, aEnv );
+    else
+        return StringLoader::LoadLC( aResourceId, aEnv );
+    }
+
+// ---------------------------------------------------------
+// CWmResourceLoader::InfoPopupL
+// ---------------------------------------------------------
+//
+void CWmResourceLoader::InfoPopupL( TInt aResourceId, const TDesC& aString )
+    {
+    HBufC* infoMsg = LoadStringLC( aResourceId, aString, &iEnv );
+    iNote = new (ELeave) CAknInformationNote( &iNote );
+    iNote->SetTimeout( CAknNoteDialog::ELongTimeout );
+    iNote->ExecuteLD( *infoMsg );
+    CleanupStack::PopAndDestroy( infoMsg );
+    }
+
+// ---------------------------------------------------------
+// CWmResourceLoader::ErrorPopup
+// ---------------------------------------------------------
+//
+void CWmResourceLoader::ErrorPopup( TInt aErrorCode )
+    {
+    iEnv.HandleError( aErrorCode );
+    }
+
+// ---------------------------------------------------------
+// CWmResourceLoader::NoDescriptionText
+// ---------------------------------------------------------
+//
+const TDesC& CWmResourceLoader::NoDescriptionText()
+    {
+    return *iDescription;
+    }
+    
+// end of file
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/src/wmwidgetdata.cpp	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,416 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies)..
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* CWmWidgetData implementation.
+*
+*/
+
+
+// INCLUDE FILES
+#include <fbs.h>
+#include <bautils.h>
+#include <s32file.h>
+#include <hscontentinfo.h>
+#include <widgetregistryclient.h> // widgetreqistry
+#include <StringLoader.h>
+#include <eikenv.h>
+
+#include "wmwidgetdata.h"
+#include "wmwidgetdataobserver.h"
+#include "wmpersistentwidgetorder.h"
+#include "wmcommon.h"
+#include <widgetmanagerview.rsg>
+
+// ---------------------------------------------------------
+// CWmWidgetData::NewL
+// ---------------------------------------------------------
+//
+CWmWidgetData* CWmWidgetData::NewL( 
+        CHsContentInfo* aHsContentInfo,
+        RWidgetRegistryClientSession* aRegistryClientSession )
+    {
+    CWmWidgetData* self = CWmWidgetData::NewLC( 
+            aHsContentInfo, aRegistryClientSession );
+    CleanupStack::Pop(); // self;
+    return self;
+    }
+
+// ---------------------------------------------------------
+// CWmWidgetData::NewLC
+// ---------------------------------------------------------
+//
+CWmWidgetData* CWmWidgetData::NewLC( 
+        CHsContentInfo* aHsContentInfo,
+        RWidgetRegistryClientSession* aRegistryClientSession )
+    {
+    CWmWidgetData* self = new ( ELeave ) CWmWidgetData();
+    CleanupStack::PushL(self);
+    self->ConstructL( aHsContentInfo, aRegistryClientSession );
+    return self;
+    }
+
+// ---------------------------------------------------------
+// CWmWidgetData::CWmWidgetData
+// ---------------------------------------------------------
+//
+CWmWidgetData::CWmWidgetData()
+    {
+    iIdle = NULL;
+    iLogoImage = NULL;    
+    iLogoImageMask = NULL;
+    iHsContentInfo = NULL;
+    iWidgetType = CWmWidgetData::EUnknown;
+    iInstallAnimationIndex = KErrNotFound;
+    iPublisherUid = KNullUid;
+    iLogoSize = TSize( 0, 0 );
+    }
+
+// ---------------------------------------------------------
+// CWmWidgetData::ConstructL
+// ---------------------------------------------------------
+//
+void CWmWidgetData::ConstructL( 
+        CHsContentInfo* aHsContentInfo,
+        RWidgetRegistryClientSession* aRegistryClientSession )
+    {
+    InitL( aHsContentInfo, aRegistryClientSession );
+
+    // start decoding the icon
+    iImageConverter = CWmImageConverter::NewL( this );
+    iIdle = CIdle::NewL( CActive::EPriorityLow );
+    iIdle->Start( TCallBack( HandleAsyncIconString, this ) );
+    }
+
+// ---------------------------------------------------------
+// CWmWidgetData::InitL
+// ---------------------------------------------------------
+//
+void CWmWidgetData::InitL(
+        CHsContentInfo* aHsContentInfo,
+        RWidgetRegistryClientSession* aRegistryClientSession )
+    {
+    // analyse the widget type
+    if ( aHsContentInfo->Type() == KContentTemplate )
+        {
+        iWidgetType = CWmWidgetData::ECps; // wrt widgets included in this gategory
+        }
+    else if ( aHsContentInfo->Type() == KContentWidget )
+        {
+        iWidgetType = CWmWidgetData::ENative;
+        }
+
+    // take ownership of the content info
+    iHsContentInfo = aHsContentInfo;
+
+    // get publisher uid from widget registry
+    FetchPublisherUidL( aRegistryClientSession );
+
+    }
+
+// ---------------------------------------------------------
+// CWmWidgetData::~CWmWidgetData
+// ---------------------------------------------------------
+//
+CWmWidgetData::~CWmWidgetData()
+    {
+    if ( iIdle && iIdle->IsActive() )
+        {
+        iIdle->Cancel();
+        }
+    delete iIdle;
+    SetObserver( NULL );
+    delete iLogoImage;
+    delete iLogoImageMask;
+    delete iImageConverter;
+    delete iHsContentInfo;
+    }
+
+// ---------------------------------------------------------
+// CWmWidgetData::SetObserver
+// ---------------------------------------------------------
+//
+void CWmWidgetData::SetObserver( MWmWidgetDataObserver* aObserver )
+    {
+    iObserver = aObserver;
+    }
+
+// ---------------------------------------------------------
+// CWmWidgetData::SetObserver
+// ---------------------------------------------------------
+//
+void CWmWidgetData::SetPersistentWidgetOrder(
+        const CWmPersistentWidgetOrder* aPersistentWidgetOrder )
+    {
+    iPersistentWidgetOrder = aPersistentWidgetOrder;
+    }
+
+// ---------------------------------------------------------
+// CWmWidgetData::EqualsTo
+// ---------------------------------------------------------
+//
+TBool CWmWidgetData::EqualsTo( CHsContentInfo& aContentInfo )
+    {
+    return (
+        HsContentInfo().Uid() == aContentInfo.Uid() &&
+        HsContentInfo().PublisherId() == aContentInfo.PublisherId() );
+    }
+
+// ---------------------------------------------------------
+// CWmWidgetData::CompareByName
+// ---------------------------------------------------------
+//
+TInt CWmWidgetData::CompareByName( 
+        const CWmWidgetData& aDataOne, const CWmWidgetData& aDataTwo )
+    {
+    // negate the result for ascending alphabetical order
+    TInt result = aDataOne.Name().CompareC( aDataTwo.Name() );
+    return result;
+    }
+
+// ---------------------------------------------------------
+// CWmWidgetData::CompareByPersistentWidgetOrder
+// ---------------------------------------------------------
+//
+TInt CWmWidgetData::CompareByPersistentWidgetOrder( 
+        const CWmWidgetData& aDataOne, const CWmWidgetData& aDataTwo )
+    {
+    TInt result;
+    const CWmPersistentWidgetOrder* order = aDataOne.iPersistentWidgetOrder;
+    if ( order && !order->IsEmpty() )
+        {
+        result = order->IndexOf( aDataOne ) - order->IndexOf( aDataTwo );
+        }
+    else
+        {
+        // fallback: if persistent widget order is not available
+        // or it is empty (this is the case on first start, or if the persistent
+        // file is corrupted or deleted) -> order widgets by name.
+        result = CompareByName( aDataOne, aDataTwo );
+        }
+    return result;
+    }
+
+// ---------------------------------------------------------
+// CWmWidgetData::NotifyCompletion
+// ---------------------------------------------------------
+//
+void CWmWidgetData::NotifyCompletion( TInt aError )
+    {
+    delete iLogoImage;
+    iLogoImage = NULL;
+    delete iLogoImageMask;
+    iLogoImageMask = NULL;
+    if ( KErrNone != aError )
+        {
+        // no image available. Do nothing.
+        }
+    else
+        {
+        iLogoImage = iImageConverter->Bitmap();
+        iLogoImageMask = iImageConverter->Mask();
+        FireDataChanged();
+        }
+    }
+
+// ---------------------------------------------------------
+// CWmWidgetData::HandleIconStringL
+// ---------------------------------------------------------
+//
+void CWmWidgetData::HandleIconStringL( const TDesC& aIconStr )
+    {
+    HBufC* iconStr = NULL;
+    if ( aIconStr.Length() == 0 && 
+        iPublisherUid != KNullUid )
+        {
+        // workaround for wrt widgets icon
+        _LIT( KUidTag, "uid(0x%x)" );
+        const TInt KLength = 32;
+        iconStr = HBufC::NewLC( KLength );
+        iconStr->Des().Format( KUidTag, iPublisherUid.iUid );
+        }
+    else
+        {
+        iconStr = aIconStr.AllocLC();
+        }
+
+    TSize size( iLogoSize );
+    if ( iLogoImage ) { size = iLogoImage->SizeInPixels(); }
+    if ( size != iLogoSize &&
+        iLogoSize.iWidth > 0 && iLogoSize.iHeight > 0 )
+        {
+        size = iLogoSize;
+        }
+    iImageConverter->HandleIconStringL( 
+            size.iWidth, size.iHeight, *iconStr );
+    
+    CleanupStack::PopAndDestroy( iconStr );    
+    }
+
+// ---------------------------------------------------------
+// CWmWidgetData::FireDataChanged
+// ---------------------------------------------------------
+//
+void CWmWidgetData::FireDataChanged()
+    {
+    if ( iObserver )
+        {
+        iObserver->HandleWidgetDataChanged( this );
+        }
+    }
+
+// ----------------------------------------------------
+// CWmWidgetData::UidFromString
+// ----------------------------------------------------
+//
+TUid CWmWidgetData::UidFromString( const TDesC8& aUidString ) const
+    {
+    TUid uid( TUid::Null() );
+    const TInt KHexPrefixLength = 2;
+    if ( aUidString.Length() > KHexPrefixLength )
+        {
+        TUint id = 0;
+        TLex8 lex( aUidString.Mid( KHexPrefixLength ) );
+        if ( lex.Val( id, EHex ) == KErrNone )
+            {
+            uid.iUid = (TInt32)id;
+            }
+        }
+    return uid;
+    }
+
+// ----------------------------------------------------
+// CWmWidgetData::PublisherUid
+// ----------------------------------------------------
+//
+TUid CWmWidgetData::PublisherUid()
+    {    
+    return iPublisherUid;
+    }
+
+// ----------------------------------------------------
+// CWmWidgetData::FetchPublisherUidL
+// ----------------------------------------------------
+//
+void CWmWidgetData::FetchPublisherUidL( 
+            RWidgetRegistryClientSession* aRegistryClientSession )
+    {
+    if ( iPublisherUid == KNullUid && 
+        PublisherId() != KNullDesC &&
+        iWidgetType != CWmWidgetData::ENative &&
+        aRegistryClientSession )
+        {
+        TInt widgetUid = aRegistryClientSession->GetWidgetUidL( PublisherId() );
+        if ( widgetUid != 0 )
+            {
+            // WRT widget
+            iPublisherUid = TUid::Uid( widgetUid );
+            
+            HBufC* desc = StringLoader::LoadLC( R_QTN_WM_WIDGET_DETAILS_WRT, 
+                    CEikonEnv::Static() );
+            iHsContentInfo->SetDescriptionL( *desc );
+            CleanupStack::PopAndDestroy( desc );
+            }
+        else
+            {
+            iPublisherUid = KNullUid;
+            }
+        }
+    }
+// ----------------------------------------------------
+// CWmWidgetData::SetLogoSize
+// ----------------------------------------------------
+//
+void CWmWidgetData::SetLogoSize( const TSize& aSize )
+    {
+    iLogoSize = aSize;
+    if ( iImageConverter )
+        {
+        iImageConverter->SetLogoSize( aSize );
+        }
+    }
+
+// ---------------------------------------------------------
+// CWmWidgetData::HandleAsyncIconString
+// ---------------------------------------------------------
+//
+TInt CWmWidgetData::HandleAsyncIconString( TAny* aPtr )
+    {
+    CWmWidgetData* self = static_cast< CWmWidgetData* >( aPtr );    
+    if ( self->iIdle->IsActive() )
+      { 
+      self->iIdle->Cancel(); 
+      }
+    TRAP_IGNORE( self->HandleIconStringL( 
+            self->HsContentInfo().IconPath() ); );
+    return KErrNone;
+    }
+
+// ---------------------------------------------------------
+// CWmWidgetData::ReCreateLogo
+// ---------------------------------------------------------
+//
+void CWmWidgetData::ReCreateLogo( const TSize& aSize )
+    {
+    iLogoSize = aSize;
+    
+    delete iLogoImage;
+    iLogoImage = NULL;
+    delete iLogoImageMask;
+    iLogoImageMask = NULL;
+
+    if ( iIdle && !iIdle->IsActive() )
+        {
+        // start decoding the icon
+        iIdle->Start( TCallBack( HandleAsyncIconString, this ) );
+        }
+    }
+
+// ---------------------------------------------------------
+// CWmWidgetData::ReplaceContentInfoL
+// ---------------------------------------------------------
+//
+TBool CWmWidgetData::ReplaceContentInfoL(
+        CHsContentInfo* aHsContentInfo )
+    {
+    TBool sameAppearance = (
+            iHsContentInfo->Name() == aHsContentInfo->Name() &&
+            iHsContentInfo->Description() == aHsContentInfo->Description() &&
+            iHsContentInfo->CanBeAdded() == aHsContentInfo->CanBeAdded() );
+    TBool sameLogo = (
+            iHsContentInfo->IconPath() == aHsContentInfo->IconPath() );
+
+    // delete the old content info
+    delete iHsContentInfo;
+    iHsContentInfo = NULL;
+
+    // re-init the object
+    InitL( aHsContentInfo, NULL );
+
+    if ( !sameAppearance )
+        {
+        // fire change event -> widget redrawn
+        FireDataChanged();
+        }
+    
+    if ( !sameLogo )
+        {
+        // re-convert image
+        // change event will be fired later when bitmap is ready
+        ReCreateLogo( iLogoSize );
+        }
+
+    return !( sameAppearance && sameLogo );
+    }
+// End of file
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/src/wmwidgetloaderao.cpp	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,271 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies)..
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* Active object to load widgets into list
+*
+*/
+
+// INCLUDE FILES
+#include "wmcommon.h"
+#include "wmplugin.h"
+#include "wmresourceloader.h"
+#include "wmpersistentwidgetorder.h"
+#include "wmlistbox.h"
+#include "wmwidgetloaderao.h"
+
+#include <hscontentcontroller.h> // content control api
+#include <hscontentinfoarray.h> // content control api
+#include <widgetregistryclient.h> // widget reqistry
+#include <avkon.rsg> // avkon resources
+#include <barsread.h> // TResourceReader
+
+// ---------------------------------------------------------------------------
+// CWmWidgetLoaderAo::NewL
+// ---------------------------------------------------------------------------
+//
+CWmWidgetLoaderAo* CWmWidgetLoaderAo::NewL(
+        CWmPlugin& aWmPlugin,
+        CWmListBox& aTargetList )
+    {
+    CWmWidgetLoaderAo* self = new (ELeave) CWmWidgetLoaderAo(
+            aWmPlugin, aTargetList );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CWmWidgetLoaderAo::NewL
+// ---------------------------------------------------------------------------
+//
+CWmWidgetLoaderAo::CWmWidgetLoaderAo(
+        CWmPlugin& aWmPlugin,
+        CWmListBox& aTargetList )
+    : CAsyncOneShot( EPriorityStandard )
+    , iWmPlugin( aWmPlugin )
+    , iWidgetsList( aTargetList )
+    {
+    iWidgetRegistry = NULL;
+    iWidgetOrder = NULL;
+    }
+
+// ---------------------------------------------------------------------------
+// CWmWidgetLoaderAo::ConstructL
+// ---------------------------------------------------------------------------
+//
+void CWmWidgetLoaderAo::ConstructL()
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// CWmWidgetLoaderAo::~CWmWidgetLoaderAo
+// ---------------------------------------------------------------------------
+//
+CWmWidgetLoaderAo::~CWmWidgetLoaderAo()
+    {
+    // cancel ongoing operation
+    Cancel();
+
+    // cleanup run data
+    Cleanup();
+    
+    }
+
+// ---------------------------------------------------------------------------
+// CWmWidgetLoaderAo::StartLoading
+// ---------------------------------------------------------------------------
+//
+void CWmWidgetLoaderAo::StartLoading()
+    {
+    if ( IsActive() )
+        {
+        // cancel ongoing process
+        Cancel();
+        }
+    Call();
+    }
+
+// ---------------------------------------------------------------------------
+// CWmWidgetLoaderAo::RunL
+// ---------------------------------------------------------------------------
+//
+void CWmWidgetLoaderAo::RunL()
+    {
+    DoLoadWidgetsL();
+    Cleanup();
+    }
+
+// ---------------------------------------------------------------------------
+// CWmWidgetLoaderAo::RunError
+// ---------------------------------------------------------------------------
+//
+TInt CWmWidgetLoaderAo::RunError( TInt /*aError*/ )
+    {
+    Cleanup();
+    return KErrNone;
+    }
+
+// ---------------------------------------------------------
+// CWmWidgetLoaderAo::DoLoadWidgetsL
+// ---------------------------------------------------------
+//
+void CWmWidgetLoaderAo::DoLoadWidgetsL()
+    {
+    // 1. mark all the existing widgets initially non-valid
+    for( TInt i=0; i<iWidgetsList.WidgetDataCount(); ++i )
+        iWidgetsList.WidgetData(i).SetValid( EFalse );
+
+    // 2. load the widgets array
+    MHsContentController& controller = iWmPlugin.ContentController();    
+    CHsContentInfoArray* contentInfoArray = CHsContentInfoArray::NewL();
+    CleanupStack::PushL( contentInfoArray );
+    controller.WidgetListL( *contentInfoArray );
+    
+    // 3. load the widget order
+    iWidgetOrder = CWmPersistentWidgetOrder::NewL( iWmPlugin.FileServer() );
+    TRAPD( loadError, iWidgetOrder->LoadL() );
+
+    // 4. loop through the content array and compare it against the existing
+    // widget data.
+    TInt widgetsAdded = 0;
+    TInt widgetsChanged = 0;
+    while( contentInfoArray->Array().Count() > 0 )
+        {
+        CHsContentInfo* contentInfo = contentInfoArray->Array()[0];
+        contentInfoArray->Array().Remove( 0 );
+
+        // check if this widget exists.
+        // if it does, keep the existing one
+        // if it does not, add it
+        CWmWidgetData* existingData = FindWidgetData( *contentInfo );
+        if ( existingData )
+            {
+            // update existing widget data
+            existingData->SetValid( ETrue );
+            if ( existingData->ReplaceContentInfoL( contentInfo ) )
+                {
+                ++widgetsChanged;
+                }
+            }
+        else
+            {
+            // add a new widget data
+            AddWidgetDataL( contentInfo );
+            ++widgetsAdded;
+            }
+        }
+
+    // 5: finally, remove all UI widgets that during the loading process were
+    // NOT marked as VALID. those widgets do not exist anymore.
+    TInt widgetsRemoved = 0;
+    for( TInt i=0; i<iWidgetsList.WidgetDataCount(); i++ )
+        {
+        if( !iWidgetsList.WidgetData(i).IsValid() )
+            {
+            iWidgetsList.RemoveWidgetData( i );
+            ++widgetsRemoved;
+            }
+        }
+    if ( widgetsRemoved > 0 )
+        {
+        iWidgetsList.DrawDeferred();
+        }
+
+    // 6: cleanup
+    CleanupStack::PopAndDestroy( contentInfoArray );
+
+    // 7. check list empty condition
+    if ( iWidgetsList.WidgetDataCount() == 0 )
+        {
+        TResourceReader rr;
+        CEikonEnv::Static()->CreateResourceReaderLC(
+                rr, R_AVKON_LISTBOX_DEFAULT_EMPTY_TEXT );
+        TPtrC empty= rr.ReadTPtrC();
+        iWidgetsList.View()->SetListEmptyTextL( empty );
+        CleanupStack::PopAndDestroy();
+        iWidgetsList.DrawDeferred();
+        }
+    
+    // 8. store list order if necessary
+    if ( loadError != KErrNone || widgetsAdded > 0 || widgetsRemoved > 0 )
+        {
+        iWidgetOrder->StoreL( iWidgetsList.WidgetDataArray() );
+        }
+    
+    }
+
+// ---------------------------------------------------------
+// CWmWidgetLoaderAo::FindWidgetDataL
+// ---------------------------------------------------------
+//
+CWmWidgetData* CWmWidgetLoaderAo::FindWidgetData(
+        CHsContentInfo& aContentInfo )
+    {
+    CWmWidgetData* data = NULL;
+    for( TInt i=0; i<iWidgetsList.WidgetDataCount() && !data; ++i )
+        {
+        if ( iWidgetsList.WidgetData(i).EqualsTo( aContentInfo ) )
+            {
+            data = &iWidgetsList.WidgetData(i);
+            }
+        }
+    return data;
+    }
+
+// ---------------------------------------------------------
+// CWmWidgetLoaderAo::AddWidgetDataL
+// ---------------------------------------------------------
+//
+void CWmWidgetLoaderAo::AddWidgetDataL(
+        CHsContentInfo* aContentInfo )
+    {
+    CleanupStack::PushL( aContentInfo );
+    if ( !iWidgetRegistry )
+        {
+        iWidgetRegistry = new (ELeave) RWidgetRegistryClientSession();
+        User::LeaveIfError( iWidgetRegistry->Connect() );
+        }
+    CleanupStack::Pop( aContentInfo );
+    
+    CWmWidgetData* widgetData = CWmWidgetData::NewLC( 
+            aContentInfo, iWidgetRegistry );
+    widgetData->SetPersistentWidgetOrder( iWidgetOrder );
+    widgetData->SetValid( ETrue );
+    iWidgetsList.AddWidgetDataL( widgetData );
+    CleanupStack::Pop( widgetData );
+    }
+
+// ---------------------------------------------------------------------------
+// CWmWidgetLoaderAo::Cleanup
+// ---------------------------------------------------------------------------
+//
+void CWmWidgetLoaderAo::Cleanup()
+    {
+    // disconnect widget registry
+    if ( iWidgetRegistry )
+        {
+        iWidgetRegistry->Disconnect();
+        iWidgetRegistry->Close();
+        delete iWidgetRegistry;
+        iWidgetRegistry = NULL;
+        }
+    
+    // delete widget order
+    delete iWidgetOrder;
+    iWidgetOrder = NULL;
+    }
+
+// end of file
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/tsrc/wmunittest/bwins/wmunittestu.def	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,3 @@
+EXPORTS
+	?LibEntryL@@YAPAVCScriptBase@@AAVCTestModuleIf@@@Z @ 1 NONAME ; class CScriptBase * LibEntryL(class CTestModuleIf &)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/tsrc/wmunittest/conf/ui_wmunittest.cfg	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,909 @@
+//-------------------------------------------------------------------------------
+// constants
+//-------------------------------------------------------------------------------
+//
+[Define]
+
+TRUE 1
+FALSE 0
+
+OK 0
+FAIL -1
+
+MAX_WIDGET_AMOUNT 1000 // non-functional requirement
+
+NAME 100
+DESCRIPTION 101
+LOGO_PATH 102
+CAN_BE_ADDED 103
+CAN_BE_REMOVED 104
+
+EUnrecognized 0
+EUidIcon 1
+ESvgIcon 2
+ESkinIcon 3
+EMifIcon 4
+ESkinAndMifIcon 5 
+EImageIcon 6
+
+[Enddefine]
+
+//-------------------------------------------------------------------------------
+// Test cases for the plugin
+//-------------------------------------------------------------------------------
+//
+
+
+// Tests WmPlugin construction
+[Test]
+title WmPlugin create/delete
+create wmunittest test
+test HeapSet
+test PluginCreate
+pause 500
+test PluginDelete
+test HeapCheck
+delete test
+[Endtest] 
+
+// Heap usage logging
+[Test]
+title WmPlugin memcon test
+create wmunittest test
+test HeapSet
+test LogHeap "before wm"
+test PluginCreate
+test LogHeap "wm Active"
+//
+test SetMass 10
+test PluginActivate
+pause 500
+test LogHeap "10 widgets"
+//
+test SetMass 20
+test PluginWidgetsChanged
+pause 250
+test LogHeap "20 widgets"
+//
+test SetMass 30
+test PluginWidgetsChanged
+pause 250
+test LogHeap "30 widgets"
+//
+test SetMass 40
+test PluginWidgetsChanged
+pause 250
+test LogHeap "40 widgets"
+//
+test SetMass 50
+test PluginWidgetsChanged
+pause 250
+test LogHeap "50 widgets"
+//
+test SetMass 60
+test PluginWidgetsChanged
+pause 250
+test LogHeap "60 widgets"
+//
+test SetMass 70
+test PluginWidgetsChanged
+pause 250
+test LogHeap "70 widgets"
+//
+test SetMass 80
+test PluginWidgetsChanged
+pause 250
+test LogHeap "80 widgets"
+//
+test SetMass 90
+test PluginWidgetsChanged
+pause 250
+test LogHeap "90 widgets"
+//
+test SetMass 100
+test PluginWidgetsChanged
+pause 250
+test LogHeap "100 widgets"
+//
+test SetMass 200
+test PluginWidgetsChanged
+pause 250
+test LogHeap "200 widgets"
+//
+test SetMass 300
+test PluginWidgetsChanged
+pause 250
+test LogHeap "300 widgets"
+//
+test SetMass 400
+test PluginWidgetsChanged
+pause 250
+test LogHeap "400 widgets"
+//
+test SetMass 500
+test PluginWidgetsChanged
+pause 250
+test LogHeap "500 widgets"
+//
+test PluginDeactivate
+pause 250
+test LogHeap "wm deactive"
+//
+test PluginDeactivate
+pause 500
+test PluginDelete
+test HeapCheck
+test LogHeap "after wm"
+delete test
+[Endtest] 
+
+// Tests WmPlugin Activate method
+[Test]
+title WmPlugin activate/deactivate
+create wmunittest test
+test HeapSet
+test PluginCreate
+test SetMass 10
+test PluginActivate
+pause 500
+test PluginDeactivate
+pause 500
+test PluginDelete
+test HeapCheck
+delete test
+[Endtest]
+
+// Tests WmPlugin NotifyWidgetListChanged 10->10 wigets
+[Test]
+title WmPlugin notify 10->10
+create wmunittest test
+test HeapSet
+test PluginCreate
+test SetMass 10
+test PluginActivate
+pause 500
+test SetMass 10
+test PluginWidgetsChanged
+pause 500
+test PluginDeactivate
+pause 500
+test PluginDelete
+test HeapCheck
+delete test
+[Endtest]
+
+// Tests WmPlugin NotifyWidgetListChanged 10->11 widgets
+[Test]
+title WmPlugin notify 10->11
+create wmunittest test
+test HeapSet
+test PluginCreate
+test SetMass 10
+test PluginActivate
+pause 500
+test SetMass 11
+test PluginWidgetsChanged
+pause 500
+test PluginDeactivate
+pause 500
+test PluginDelete
+test HeapCheck
+delete test
+[Endtest]
+
+// Tests WmPlugin NotifyWidgetListChanged 10->9 widgets
+[Test]
+title WmPlugin notify 10->9
+create wmunittest test
+test HeapSet
+test PluginCreate
+test SetMass 10
+test PluginActivate
+pause 500
+test SetMass 9
+test PluginWidgetsChanged
+pause 500
+test PluginDeactivate
+pause 500
+test PluginDelete
+test HeapCheck
+delete test
+[Endtest]
+
+// Tests WmPlugin NotifyWidgetListChanged 0->10 widgets
+[Test]
+title WmPlugin notify 0->10
+create wmunittest test
+test HeapSet
+test PluginCreate
+test SetMass 0
+test PluginActivate
+pause 500
+test SetMass 10
+test PluginWidgetsChanged
+pause 500
+test PluginDeactivate
+pause 500
+test PluginDelete
+test HeapCheck
+delete test
+[Endtest]
+
+// Tests WmPlugin NotifyWidgetListChanged 10->0 widgets
+[Test]
+title WmPlugin notify 10->0
+create wmunittest test
+test HeapSet
+test PluginCreate
+test SetMass 10
+test PluginActivate
+pause 500
+test SetMass 0
+test PluginWidgetsChanged
+pause 500
+test PluginDeactivate
+pause 500
+test PluginDelete
+test HeapCheck
+delete test
+[Endtest]
+
+// Tests WmPlugin NotifyWidgetListChanged with ridiculous amount of widgets
+// testing the OOM error handling
+[Test]
+title WmPlugin notify OOM
+create wmunittest test
+test HeapSet
+test PluginCreate
+test SetMass 10
+test PluginActivate
+pause 500
+test SetMass 10000
+test PluginWidgetsChanged
+pause 500
+test PluginDeactivate
+pause 500
+test PluginDelete
+test HeapCheck
+delete test
+[Endtest]
+
+// Tests WmPlugin with large data amount
+[Test]
+title WmPlugin capacity
+create wmunittest test
+test HeapSet
+test PluginCreate
+test SetMass MAX_WIDGET_AMOUNT
+test PluginActivate
+pause 3000
+test PluginDelete
+test HeapCheck
+delete test
+[Endtest] 
+
+// Tests WmPlugin by notifying widget list changed hundreds of times
+// with different widget amounts and different timeouts. Target is to
+// interrupt the previous update process test that it is cancelled ok
+[Test]
+title WmPlugin robustness
+create wmunittest test
+test HeapSet
+test PluginCreate
+test SetMass 5
+test PluginActivate
+pause 500
+loop 100
+test SetMass 10
+test PluginWidgetsChanged
+pause 10
+test SetMass 15
+test PluginWidgetsChanged
+pause 90
+test SetMass 11
+test PluginWidgetsChanged
+pause 50
+test SetMass 16
+test PluginWidgetsChanged
+pause 120
+endloop
+test PluginDeactivate
+pause 500
+test PluginDelete
+test HeapCheck
+delete test
+[Endtest] 
+
+// Tests WmPlugin by notifying widget list changed hundreds of times
+// with no change in the widget list at all -> there should be no
+// unnecessary drawing in widget manager UI at all
+[Test]
+title WmPlugin robustness 2
+create wmunittest test
+test HeapSet
+test PluginCreate
+test SetMass 5
+test PluginActivate
+pause 500
+loop 100
+test SetMass 10
+test PluginWidgetsChanged
+endloop
+pause 500
+test PluginDeactivate
+pause 500
+test PluginDelete
+test HeapCheck
+delete test
+[Endtest] 
+
+
+//-------------------------------------------------------------------------------
+// Test cases for notifications where widget data changes
+//-------------------------------------------------------------------------------
+//
+
+// Tests WmPlugin Notify one widget name changes
+[Test]
+title WmPlugin change name
+create wmunittest test
+test HeapSet
+test PluginCreate
+test SetMass 5
+test PluginActivate
+pause 1000
+test ChangeContent 1 NAME "New widget name!"
+test PluginWidgetsChanged
+pause 1000
+test ChangeContent 1 NAME "Name changes again!"
+test PluginWidgetsChanged
+pause 1000
+test PluginDeactivate
+pause 500
+test PluginDelete
+test HeapCheck
+delete test
+[Endtest]
+
+// Tests WmPlugin Notify one widget descr. changes
+[Test]
+title WmPlugin change description
+create wmunittest test
+test HeapSet
+test PluginCreate
+test SetMass 5
+test PluginActivate
+pause 1000
+test ChangeContent 1 DESCRIPTION "New description!"
+test PluginWidgetsChanged
+pause 1000
+test ChangeContent 1 DESCRIPTION "Description changes again!"
+test PluginWidgetsChanged
+pause 1000
+test PluginDeactivate
+pause 500
+test PluginDelete
+test HeapCheck
+delete test
+[Endtest]
+
+// Tests WmPlugin Notify one widget logo changes
+[Test]
+title WmPlugin change logo
+create wmunittest test
+test HeapSet
+test PluginCreate
+test SetMass 5
+test PluginActivate
+pause 1000
+test ChangeContent 1 LOGO_PATH "uid(0x10005901)"
+test PluginWidgetsChanged
+pause 1000
+test ChangeContent 1 LOGO_PATH "c:\testframework\wmunittest\wmlogo\logo.svg"
+test PluginWidgetsChanged
+pause 1000
+test PluginDeactivate
+pause 500
+test PluginDelete
+test HeapCheck
+delete test
+[Endtest]
+
+// Tests WmPlugin Notify CanbeAdded values change
+[Test]
+title WmPlugin change plus-sign
+create wmunittest test
+test HeapSet
+test PluginCreate
+test SetMass 5
+test PluginActivate
+pause 1000
+test ChangeContent 1 CAN_BE_ADDED "0"
+test PluginWidgetsChanged
+pause 1000
+test ChangeContent 1 CAN_BE_ADDED "1"
+test PluginWidgetsChanged
+pause 1000
+test PluginDeactivate
+pause 500
+test PluginDelete
+test HeapCheck
+delete test
+[Endtest]
+
+
+
+//-------------------------------------------------------------------------------
+// Test cases for the persistent widget order
+//-------------------------------------------------------------------------------
+//
+
+// Tests persistent widget order NewL method
+[Test]
+title Widget order create
+create wmunittest test
+test HeapSet
+test WidgetOrderCreate
+test WidgetOrderCheckIsEmpty TRUE
+test WidgetOrderDelete
+test HeapCheck
+delete test
+[Endtest] 
+
+// Test persistent widget order STORE method
+[Test]
+title Widget order store
+create wmunittest test
+test HeapSet
+test WidgetOrderCreate
+test SetMass 5
+test WidgetOrderSave
+test WidgetOrderDelete
+test HeapCheck
+delete test
+[Endtest] 
+
+// Test persistent widget order STORE method when storing an empty array
+[Test]
+title Widget order store empty
+create wmunittest test
+test HeapSet
+test WidgetOrderCreate
+test SetMass 0
+test WidgetOrderSave
+test WidgetOrderDelete
+test HeapCheck
+delete test
+[Endtest] 
+
+
+// Tests persistent widget order LOAD method
+[Test]
+title Widget order load
+create wmunittest test
+test HeapSet
+test WidgetOrderCreate
+test SetMass 5
+test WidgetOrderSave
+test WidgetOrderDelete
+test WidgetOrderCreate
+test WidgetOrderLoad
+test WidgetOrderCheckIsEmpty FALSE
+test WidgetOrderDelete
+test HeapCheck
+delete test
+[Endtest] 
+
+// Tests persistent widget order LOAD method when count is ZERO
+[Test]
+title Widget order load empty
+create wmunittest test
+test HeapSet
+test WidgetOrderCreate
+test SetMass 0
+test WidgetOrderSave
+test WidgetOrderDelete
+test WidgetOrderCreate
+test WidgetOrderLoad
+test WidgetOrderCheckIsEmpty TRUE
+test WidgetOrderDelete
+test HeapCheck
+delete test
+[Endtest] 
+
+// Tests persistent widget order INDEXOF method
+[Test]
+title Widget order use
+create wmunittest test
+test HeapSet
+test WidgetOrderCreate
+test SetMass 8
+test WidgetOrderSave
+test WidgetOrderDelete
+test WidgetOrderCreate
+test WidgetOrderLoad
+test WidgetOrderCheckIsEmpty FALSE
+test SetMass 7
+test WidgetOrderUse
+test WidgetOrderDelete
+test HeapCheck
+delete test
+[Endtest] 
+
+// Tests persistent widget order INDEXOF method when class is empty
+[Test]
+title Widget order use empty
+create wmunittest test
+test HeapSet
+test WidgetOrderCreate
+test SetMass 0
+test WidgetOrderSave
+test WidgetOrderDelete
+test WidgetOrderCreate
+test WidgetOrderLoad
+test WidgetOrderCheckIsEmpty TRUE
+test SetMass 18
+test WidgetOrderUse
+test WidgetOrderDelete
+test HeapCheck
+delete test
+[Endtest] 
+
+// Tests persistent widget order with large data amount
+[Test]
+title Widget order capacity
+create wmunittest test
+test HeapSet
+test WidgetOrderCreate
+test SetMass MAX_WIDGET_AMOUNT
+test WidgetOrderSave
+test WidgetOrderDelete
+test WidgetOrderCreate
+test WidgetOrderLoad
+test SetMass MAX_WIDGET_AMOUNT
+test WidgetOrderUse
+test WidgetOrderDelete
+test HeapCheck
+delete test
+[Endtest] 
+
+// Tests persistent widget order save & load 100 times in sequence
+[Test]
+title Widget order robustness
+create wmunittest test
+test HeapSet
+test WidgetOrderCreate
+test SetMass 100
+loop 100
+test WidgetOrderSave
+endloop
+test WidgetOrderDelete
+test WidgetOrderCreate
+test SetMass 100
+loop 100
+test WidgetOrderLoad
+endloop
+test WidgetOrderUse
+test WidgetOrderDelete
+test HeapCheck
+delete test
+[Endtest] 
+
+
+//-------------------------------------------------------------------------------
+// Test cases for the image converter
+//-------------------------------------------------------------------------------
+//
+
+// Tests image converter NewL method
+[Test]
+title Image converter create delete
+create wmunittest test
+test HeapSet
+test ImageConverterCreate
+test ImageConverterConversionMethod EUnrecognized
+test ImageConverterDelete
+test HeapCheck
+delete test
+[Endtest] 
+
+// Tests malformed icon string
+[Test]
+title malformed image formats
+create wmunittest test
+test HeapSet
+test ImageConverterCreate
+test ImageConverterConvert "foo bar"
+test ImageConverterWaitResult FAIL
+test ImageConverterConvert "*************"
+test ImageConverterWaitResult FAIL
+test ImageConverterConvert "uid skin mif logo icon jpg jpeg icon"
+test ImageConverterWaitResult FAIL
+test ImageConverterConvert "girl.jpg"
+test ImageConverterWaitResult FAIL
+test ImageConverterConvert "dirty_hack.exe"
+test ImageConverterWaitResult FAIL
+test ImageConverterConvert "c:/testframework/wmunittest/wmlogo/logo.jpg"
+test ImageConverterWaitResult FAIL
+test ImageConverterConvert "skin (0x10005a26 0x1000 )"
+test ImageConverterWaitResult FAIL
+test ImageConverterConvert "mif ( c:\testframework\wmunittest\wmlogo\logo.mif 16384 16385)"
+test ImageConverterWaitResult FAIL
+test ImageConverterConvert "skin( 0x100056c6 0x86 ):mif ( c:\testframework\wmunittest\wmlogo\logo.mif 16384 16385 )"
+test ImageConverterWaitResult FAIL
+test ImageConverterConvert "skin ( 0x101f84b7 0x1000594D ) : mif ( c:\testframework\wmunittest\wmlogo\logo.mif 16384 16385 )"
+test ImageConverterWaitResult FAIL
+test ImageConverterConvert " uid(0x10005901 )"
+test ImageConverterWaitResult FAIL
+test ImageConverterConvert "uid (268458241  )"
+test ImageConverterWaitResult FAIL
+test ImageConverterConvert "uid (0x10005901)"
+test ImageConverterWaitResult FAIL
+test ImageConverterDelete
+test HeapCheck
+delete test
+[Endtest] 
+
+
+// Tests image converter with skin syntax
+// this test will never pass on STIF because STIF AppUI does
+// not have EAknEnableSkin flag defined in its BaseConstructL
+// therefore commented out.
+/*
+[Test]
+title Image converter skin
+create wmunittest test
+test HeapSet
+test ImageConverterCreate
+test ImageConverterConvert "skin(0x101F86E3 0x100d)"
+test ImageConverterWaitResult OK
+test ImageConverterConversionMethod ESkinIcon
+test ImageConverterDelete
+test HeapCheck
+delete test
+[Endtest]
+*/
+
+// Tests image converter skin method with null skin item ids
+[Test]
+title Image converter skin (null)
+create wmunittest test
+test HeapSet
+test ImageConverterCreate
+test ImageConverterConvert "skin(0 0)"
+test ImageConverterWaitResult FAIL
+test ImageConverterDelete
+test HeapCheck
+delete test
+[Endtest]
+
+// Tests image converter with skin/mif syntax
+[Test]
+title Image converter skin/mif
+create wmunittest test
+test HeapSet
+test ImageConverterCreate
+test ImageConverterConvert "skin(270501603 4145):mif(c:\testframework\wmunittest\wmlogo\logo.mif 16384 16385)"
+test ImageConverterWaitResult OK
+test ImageConverterConversionMethod ESkinAndMifIcon
+test ImageConverterDelete
+test HeapCheck
+delete test
+[Endtest] 
+
+// Tests image converter mif method
+[Test]
+title Image converter mif
+create wmunittest test
+test HeapSet
+test ImageConverterCreate
+test ImageConverterConvert "mif(c:\testframework\wmunittest\wmlogo\logo.mif 16384 16385)"
+test ImageConverterWaitResult OK
+test ImageConverterConversionMethod EMifIcon
+test ImageConverterDelete
+test HeapCheck
+delete test
+[Endtest]
+
+// Tests image converter mif method with invalid path
+[Test]
+title Image converter mif (invalid path)
+create wmunittest test
+test HeapSet
+test ImageConverterCreate
+test ImageConverterConvert "mif(c:\blabla.mif 16384 16385)"
+test ImageConverterWaitResult FAIL
+test ImageConverterDelete
+test HeapCheck
+delete test
+[Endtest]
+
+// Tests image converter mif method with invalid bitmap & mask ids
+[Test]
+title Image converter mif (invalid ids)
+create wmunittest test
+test HeapSet
+test ImageConverterCreate
+test ImageConverterConvert "mif(c:\testframework\wmunittest\wmlogo\logo.mif 1 2)"
+test ImageConverterWaitResult FAIL
+test ImageConverterDelete
+test HeapCheck
+delete test
+[Endtest]
+
+// Tests image converter uid method
+[Test]
+title Image converter uid
+create wmunittest test
+test HeapSet
+test ImageConverterCreate
+test ImageConverterConvert "uid(0x10005901)"
+test ImageConverterWaitResult OK
+test ImageConverterConversionMethod EUidIcon
+test ImageConverterDelete
+test HeapCheck
+delete test
+[Endtest]
+
+// Tests image converter uid method with null uid
+[Test]
+title Image converter uid (null)
+create wmunittest test
+test HeapSet
+test ImageConverterCreate
+test ImageConverterConvert "uid(0x0)"
+test ImageConverterWaitResult FAIL
+test ImageConverterDelete
+test HeapCheck
+delete test
+[Endtest]
+
+// Tests image converter uid method with wrt widget uid.
+[Test]
+title Image converter wrt widget
+create wmunittest test
+test HeapSet
+test InstallWrtWidget "c:\testframework\wmunittest\wmlogo\test.wgz"
+test ImageConverterCreate
+test ImageConverterConvert "uid(0x2000DAD2)"
+test ImageConverterWaitResult OK
+test ImageConverterConversionMethod EUidIcon
+test ImageConverterDelete
+test UninstallWrtWidget "0x2000DAD2"
+test HeapCheck
+delete test
+[Endtest]
+
+// Tests image converter svg method
+[Test]
+title Image converter svg
+create wmunittest test
+test HeapSet
+test ImageConverterCreate
+test ImageConverterConvert "c:\testframework\wmunittest\wmlogo\logo.svg"
+test ImageConverterWaitResult OK
+test ImageConverterConversionMethod ESvgIcon
+test ImageConverterDelete
+test HeapCheck
+delete test
+[Endtest]
+
+// Tests image converter svg method corrupt file.
+[Test]
+title Image converter svg (corrupted)
+create wmunittest test
+test HeapSet
+test ImageConverterCreate
+test ImageConverterConvert "c:\testframework\wmunittest\wmlogo\logocorrupt.svg"
+test ImageConverterWaitResult FAIL
+test ImageConverterConversionMethod ESvgIcon
+test ImageConverterDelete
+test HeapCheck
+delete test
+[Endtest]
+
+// Tests image converter png method
+[Test]
+title Image converter png
+create wmunittest test
+test HeapSet
+test ImageConverterCreate
+test ImageConverterConvert "c:\testframework\wmunittest\wmlogo\logo.png"
+test ImageConverterWaitResult OK
+test ImageConverterConversionMethod EImageIcon
+test ImageConverterDelete
+test HeapCheck
+delete test
+[Endtest]
+
+// Tests image converter png method corrupt file.
+[Test]
+title Image converter png (corrupted)
+create wmunittest test
+test HeapSet
+test ImageConverterCreate
+test ImageConverterConvert "c:\testframework\wmunittest\wmlogo\logocorrupt.png"
+test ImageConverterWaitResult FAIL
+test ImageConverterDelete
+test HeapCheck
+delete test
+[Endtest]
+
+// Tests image converter jpeg method
+[Test]
+title Image converter jpeg
+create wmunittest test
+test HeapSet
+test ImageConverterCreate
+test ImageConverterConvert "c:\testframework\wmunittest\wmlogo\logo.jpg"
+test ImageConverterWaitResult OK
+test ImageConverterConversionMethod EImageIcon
+test ImageConverterDelete
+test HeapCheck
+delete test
+[Endtest]
+
+// Tests image converter jpeg method
+[Test]
+title Image converter jpeg (corrupted)
+create wmunittest test
+test HeapSet
+test ImageConverterCreate
+test ImageConverterConvert "c:\testframework\wmunittest\wmlogo\logocorrupt.jpg"
+test ImageConverterWaitResult FAIL
+test ImageConverterDelete
+test HeapCheck
+delete test
+[Endtest]
+
+// Tests image converter cancel
+[Test]
+title Image converter cancel
+create wmunittest test
+test HeapSet
+test ImageConverterCreate
+test ImageConverterConvert "c:\testframework\wmunittest\wmlogo\logo.svg"
+test CancelConvert
+test ImageConverterWaitResult FAIL
+test ImageConverterDelete
+test HeapCheck
+delete test
+[Endtest]
+
+
+//-------------------------------------------------------------------------------
+// Misc Test cases
+//-------------------------------------------------------------------------------
+//
+
+// Tests error note
+[Test]
+title Other error note
+create wmunittest test
+test HeapSet
+test PluginCreate
+test PluginActivate
+test ErrorPopup
+pause 3000
+test PluginDelete
+test HeapCheck
+delete test
+[Endtest]
+
+/*
+// Test for heikki to play :)
+[Test]
+title WmPlugin 1h test
+create wmunittest test
+test HeapSet
+test PluginCreate
+test SetMass 500
+test PluginActivate
+pause 3600000
+test PluginDelete
+test HeapCheck
+delete test
+[Endtest]
+*/
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/tsrc/wmunittest/conf/wmunittest.bat	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,19 @@
+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 *
+rem */
+
+ATSInterface.exe -testmodule TestScripter -config c:\testframework\ui_wmunittest.cfg
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/tsrc/wmunittest/conf/wmunittest.ini	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,188 @@
+#
+# This is STIF initialization file
+# Comment lines start with '#'-character.
+# See STIF TestFramework users guide.doc for instructions
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Set following test engine settings:
+#	- Set Test Reporting mode. TestReportMode's possible values are:
+#		+ 'Summary': Summary of the tested test cases.
+#		+ 'Environment': Hardware and software info.
+#		+ 'TestCases': Test case report.
+#		+ 'FullReport': Set of all above ones.
+#		+ Example 'TestReportMode= Summary TestCases'
+#
+# 	- CreateTestReport setting controls report creation mode
+#		+ YES, Test report will created.
+#		+ NO, No Test report.
+#
+# 	- File path indicates the base path of the test report.
+# 	- File name indicates the name of the test report.
+#
+# 	- File format indicates the type of the test report.
+#		+ TXT, Test report file will be txt type, for example 'TestReport.txt'.
+#		+ HTML, Test report will be html type, for example 'TestReport.html'.
+#   + XML, Test report will be xml type, for example 'TestReport.xml'.
+#          Note, that xml format is available only when output is set to FILE.
+#
+# 	- File output indicates output source of the test report.
+#		+ FILE, Test report logging to file.
+#		+ RDEBUG, Test report logging to using rdebug.
+#
+# 	- File Creation Mode indicates test report overwriting if file exist.
+#		+ OVERWRITE, Overwrites if the Test report file exist.
+#		+ APPEND, Continue logging after the old Test report information if
+#                 report exist.
+# 	- Sets a device reset module's dll name(Reboot).
+#		+ If Nokia specific reset module is not available or it is not correct one
+#		  StifHWResetStub module may use as a template for user specific reset
+#		  module.
+# 	- Sets STIF test measurement disable options. e.g. pluging1 and pluging2 disablation
+#		DisableMeasurement= stifmeasurementplugin01 stifmeasurementplugin02
+#
+
+[Engine_Defaults]
+
+TestReportMode= FullReport    # Possible values are: 'Empty', 'Summary', 'Environment',
+                              #                      'TestCases' or 'FullReport'
+
+CreateTestReport= YES         # Possible values: YES or NO
+
+TestReportFilePath= C:\LOGS\TestFramework\
+TestReportFileName= WidgetManager
+
+TestReportFormat= TXT         # Possible values: TXT, HTML or XML
+TestReportOutput= FILE        # Possible values: FILE or RDEBUG
+TestReportFileCreationMode= OVERWRITE # Possible values: OVERWRITE or APPEND
+
+DeviceResetDllName= StifResetForNokia.dll # e.g. 'StifHWResetStub.dll' for user specific reseting
+
+DisableMeasurement= stifmeasurementdisablenone  # Possible values are:
+              # 'stifmeasurementdisablenone', 'stifmeasurementdisableall'
+              # 'stifmeasurementplugin01', 'stifmeasurementplugin02',
+              # 'stifmeasurementplugin03', 'stifmeasurementplugin04',
+              # 'stifmeasurementplugin05' or 'stifbappeaprofiler'
+
+Timeout= 0                    # Default timeout value for each test case. In milliseconds
+UITestingSupport= YES        # Possible values: YES or NO
+#SeparateProcesses= YES       # Possible values: YES or NO (default: NO)
+[End_Defaults]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+# Widget manager unit tests
+[New_Module]
+ModuleName= testscripter
+TestCaseFile= c:\testframework\ui_wmunittest.cfg
+[End_Module]
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+
+
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Set STIF logging overwrite parameters for Logger.
+# 	Hardware and emulator environment logging path and styles can
+# 	be configured from here to overwrite the Logger's implemented values.
+#	
+#	Settings description:
+#	- Indicates option for creation log directory/directories. If log directory/directories
+#         is/are not created by user they will make by software.
+#		+ YES, Create log directory/directories if not allready exist.
+#		+ NO, Log directory/directories not created. Only created one is used.
+#
+#	- Overwrite emulator path setting.
+#		+ Example: If 'EmulatorBasePath= C:\LOGS\TestFramework\' and in code is defined 
+#		           Logger's path 'D:\\LOGS\\Module\\' with those definition the path
+#		           will be 'C:\LOGS\TestFramework\LOGS\Module\'
+#
+#	- Overwrite emulator's logging format.
+#		+ TXT, Log file(s) will be txt type(s), for example 'Module.txt'.
+#		+ HTML, Log file(s) will be html type(s), for example 'Module.html'.
+#
+#	- Overwrited emulator logging output source.
+#		+ FILE, Logging to file(s).
+#		+ RDEBUG, Logging to using rdebug(s).
+#
+#	- Overwrite hardware path setting (Same description as above in emulator path).
+#	- Overwrite hardware's logging format(Same description as above in emulator format).
+#	- Overwrite hardware's logging output source(Same description as above in emulator output).
+#
+#	- File Creation Mode indicates file overwriting if file exist.
+#		+ OVERWRITE, Overwrites if file(s) exist.
+#		+ APPEND, Continue logging after the old logging information if file(s) exist.
+#
+#	- Will thread id include to the log filename.
+#		+ YES, Thread id to log file(s) name, Example filename 'Module_b9.txt'.
+#		+ NO, No thread id to log file(s), Example filename 'Module.txt'.
+#
+#	- Will time stamps include the to log file.
+#		+ YES, Time stamp added to each line in log file(s). Time stamp is 
+#                 for example'12.Nov.2003 115958    LOGGING INFO'
+#		+ NO, No time stamp(s).
+#
+#	- Will line breaks include to the log file.
+#		+ YES, Each logging event includes line break and next log event is in own line.
+#		+ NO, No line break(s).
+#
+#	- Will event ranking include to the log file.
+#		+ YES, Event ranking number added to each line in log file(s). Ranking number
+#                 depends on environment's tics, for example(includes time stamp also)
+#                 '012   12.Nov.2003 115958    LOGGING INFO'
+#		+ NO, No event ranking.
+#
+#	- Will write log file in unicode format.
+#		+ YES, Log file will be written in unicode format
+#		+ NO, Log will be written as normal, not unicode, file.
+#
+
+[Logger_Defaults]
+
+#NOTE: If you want to set Logger using next setting(s) remove comment(s)'#'
+#NOTE: TestEngine and TestServer logging settings cannot change here
+
+#CreateLogDirectories= YES    # Possible values: YES or NO
+
+#EmulatorBasePath= C:\LOGS\TestFramework\
+#EmulatorFormat= HTML         # Possible values: TXT or HTML
+#EmulatorOutput= FILE         # Possible values: FILE or RDEBUG
+
+#HardwareBasePath= D:\LOGS\TestFramework\
+#HardwareFormat= HTML         # Possible values: TXT or HTML
+#HardwareOutput= FILE         # Possible values: FILE or RDEBUG
+
+#FileCreationMode= OVERWRITE  # Possible values: OVERWRITE or APPEND
+
+#ThreadIdToLogFile= YES       # Possible values: YES or NO
+#WithTimeStamp= YES           # Possible values: YES or NO
+#WithLineBreak= YES           # Possible values: YES or NO
+#WithEventRanking= YES        # Possible values: YES or NO
+
+#FileUnicode= YES             # Possible values: YES or NO
+#AddTestCaseTitle= YES        # Possible values: YES or NO
+[End_Logger_Defaults]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Set filters to be used by ConsoleUI.
+# 	If you want to use filter with ConsoleUI, simply remove comments
+# 	from section below and provide valid filter entries.
+#   Each filter line has to start with "filter= " keyword.
+#   Filter can contain special wildcard characters:
+#     *  which stands for none or any literal;
+#     ?  which stands for single character.
+#   Filters are not case-sensitive.
+
+#[Filters]
+#filter= *math*
+#filter= *radio*
+#[End_Filters]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+# End of file
Binary file idlehomescreen/widgetmanager/tsrc/wmunittest/data/wmlogo/logo.jpg has changed
Binary file idlehomescreen/widgetmanager/tsrc/wmunittest/data/wmlogo/logo.mif has changed
Binary file idlehomescreen/widgetmanager/tsrc/wmunittest/data/wmlogo/logo.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/tsrc/wmunittest/data/wmlogo/logo.svg	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="32px"
+   height="32px"
+   id="svg2466"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   sodipodi:docname="drawing.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs2468">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 16 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="32 : 16 : 1"
+       inkscape:persp3d-origin="16 : 10.666667 : 1"
+       id="perspective2474" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="15.938205"
+     inkscape:cx="9.927765"
+     inkscape:cy="10.627086"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:grid-bbox="true"
+     inkscape:document-units="px"
+     inkscape:window-width="1680"
+     inkscape:window-height="1031"
+     inkscape:window-x="0"
+     inkscape:window-y="0" />
+  <metadata
+     id="metadata2471">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1"
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer">
+    <image
+       y="5.765738"
+       x="-0.030936712"
+       id="image2462"
+       height="18.19879"
+       width="31.139833"
+       sodipodi:absref="Y:\HS_Domain\homescreen\idlehomescreen\data\qhd_tch\shortcut2_2001f484\gfx\shortcut2logo.png"
+       xlink:href="Y:\HS_Domain\homescreen\idlehomescreen\data\qhd_tch\shortcut2_2001f484\gfx\shortcut2logo.png"
+       transform="matrix(1,0,2.5955691e-2,0.9996631,0,0)" />
+  </g>
+</svg>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/tsrc/wmunittest/data/wmlogo/logocorrupt.jpg	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,13 @@
+ÿØÿà JFIF  ` `  ÿá 6Exif  II*         &   ÓJûZP `NƒÜà:÷¬Çy¥êmC%´™0»¦Až™ÿ 
+Ö~í5;ܬz ê9áÕ¢s7‘(dUó	=‡ç]_„.ßû%P·Íå9è3Ÿçšãå̧˜ã_dPµÓh
+öúlŒ8,2>¼š¬
W9µÒÇ>MÉ®‡©£‡\te?~jµ£±Až»ùTÛz–;Ç桹ÿ YÜoåI,éfI]Q,Xà
+ÁºñŽ‹Œ³)\œ{óúSå¹­*5*|	³€ÿ Åi ÿ lÿ #^ÂÊ®¥YCØŒ×Û8o@Àä$_”×±î>ÕRèzYº|ÔÓþTr>)ð½­ï—-­ k¶$
¼vïíÏ~•o—@†G¸¸GšlnU^èO^ž‚¶`ŸÍlŒ1ùqÙsÇçÖ±5MrãOÕ
+©ÝS·@­eV´iCšnÈ󥋩
+Å¿u»9RA
øb0n{JʲÖí¯ áû¬­Z–(¬ ðW÷ü:þtá(N<ÑwF	¦®‹µ“oþ­¿ë£ÿ èF´÷j˶?ºoúèÿ úª%²8šëýõÿ ÐV­1ùOÒªZ®ºÿ |è+VIùOÒ“(äƒíàqÞž»$ª:Ÿ_j­ÆâÎJ 8Ïsì)q¿ | }Õ|&)V“}ÙïÒà­Ø[ûh¯@$luåYN>¹þµL®¬WÉ7Q„Æß0/ͯ¯¾*Ï›ÏZ<ßzÅN]KöHd[(hN'ù‡’ÙëŸPjÔW[ò¬6È¿y­AæûÔRøem²/Ýoè}©7}ÇÉm8ß2 Ïñ
+ë³\•Ï™rˆÃlŠÃrÿ Qí]Îkë2%l;õ<ŒrµEè?5ƒâÛ&¾ÐäŒÈŸ2qÎ? üko4Ž¡Õ‘€!†=ëÜ„œd¤·G£Ì¬Ï	³ÕRßP “r­»¡nÙ»ÖãËægy
žÇšgŽ|#-Ô—Ö±—·–uQÊœòÇó¬«	Ø ÜI; 9® ¥
+œ¸ªNÍèןsÉ)Sm=‡k+@’**¶ð¤¨ÆFøV3¸ee=ø5wZºO"8÷ìà…ï€5æZúnu%^Ñ·«ß±ÉR+›CHÔnàÛÜN¬e2 $‚;÷5»
+µÕÌVÊ7X)û¿ÅúgñÇ­q6LÍDg`ü*®IàôëþðûÛíÔvUÏ
+½qýIõÇ¥|þm”ÒXõ:i(Úí.çnœ§fö:ëxü‹xãã* ¯z—4Ê3[ž°®£!èÀƒ^ys—uqg7X‘ž2¬O?žGá^…\׊t‰.oí3Ä>eé¹{ƒú}³I««ÕÎBêi-ØÄrÍÉÿ ?L~5Òà  ÅÂRrwfÉ$¬‚Š(¤0 àäQE sß„b½”ÜÙ9·º#QÃ{Üœ×-%¶½¤Ëó[HÀËKvëÿ 8?νB‚<ŠVËŽ»¬·ÈÔ3ÿ \óÅ,vºþ­ Ûm"ç%Ãçð“ü«Ó|ˆ³þ­?ï‘O€)(¤+Ήá(ld[›Ç77XûÍÑ}€èùÉ®˜pµU(=h¢€
+ZJ(£#†í^gâ_ ^Ïpe°uhÙ‹laÈ$ó‚•é´P‹¥VtåÍfxí‡ÃmNæP·eb‹ø°	$~#ç¥vñøO†Þ(à’[wU
+Z'eÝùù⺺(m½Ê«^¥gy»œå·ƒ4øfY§i.d^33`ÿ À‰ý+¡$	…QÐ
+u-B¥iþ¤ÿ ×Gÿ Ð]5J×ýIÿ ®ÿ ¡ R¯³Å MßyJîúõã—7xÿ _ýú?üUP¥ÿ Ïx¿ïÑÿ â¨ÿ Kÿ žñߣÿ ÅQE éóÞ/ûôøª_ô¿ùïýú?üUP¥ÿ Ïx¿ïÑÿ â©Òóþ¾/ûôøª( ý/þ{Åÿ ~ÿ Gú_ü÷‹þýþ*Š( ÿ Kÿ žñߣÿ ÅRfëþ{Eÿ ~ÿ E fëþ{Eÿ ~ÿ Gú_ü÷‹þýþ*Š(Òÿ ç¼_÷èÿ ñT™ºÿ žÑߣÿ ÅQE /ú_ü÷‹þýþ*ô¿ùïýú?üUPþ—ÿ =âÿ ¿Gÿ Š£ý/þ{Åÿ ~ÿ E ¥ÿ Ïx¿ïÑÿ â¨Íßü÷‹þýþ*Š( ÿ Kÿ žñߣÿ ÅRfëþ{Eÿ ~ÿ E fëþ{Eÿ ~ÿ Kþ—ÿ =âÿ ¿Gÿ Š¢Š ?Òÿ ç¼_÷èÿ ñT™ºÿ žÑߣÿ ÅQE éóÞ/ûôøª?Òÿ ç¼_÷èÿ ñTQ@ú_ü÷‹þýþ*ŒÝÏh¿ïÑÿ ⨢€ý/þ{Åÿ ~ÿ Gú_ü÷‹þýþ*Š( ÿ Kÿ žñߣÿ ÅRfëþ{Eÿ ~ÿ E ¿éóÞ/ûôøªLÝÏh¿ïÑÿ ⨢€Ý"9ü>j|_ºR‰ÎI'©<ÑE ÿÙ
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/tsrc/wmunittest/data/wmlogo/logocorrupt.png	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,23 @@
+‰PNG
+
+   
IHDR  <   W   #n|   sRGB ®Îé   gAMA  ±üa    cHRM  z&  €„  ú   €è  u0  ê`  :˜  pœºQ<  ˜þIDATx^í½XÙº5œ{Ï=÷ž3÷ !4„@Ü=3™ÈÄ…@šœ¸»»1 ÁÝÝÝݦ•¦
—úWu‘’@&ÌÉÜïû¿çäYÙOu±»ºjïZû•ýîwÿ£–ÙÝÝý_ÿõ_~÷«¿ƒí³î·ú]â“øãûÛWéÕ âûü¸‘¿üý>/Ñ=°öÿVíÖßCôwýö{õÿc@ÍßS÷{ý¾ÏyȺ co ¹þsùH8ÿ÷¿ÿ½½¥õoûÛ z
£ª´eƒË®çÔ”×V•VrèlF-Dí#ÔÒë«Æ׃^þþÊTMz½O0ªB¿×¡Úá3ÔWÓúÁ€Ú‡N¯©ªiô¾À¨©ïý=×_Ýn½þ@ï³ßúmÏ~ê÷׿ë¬oq3’טCãÐËi´ÒZ’´u•4ðt-Ì)ÊHÎLKLÍËÌÍLÉ ‘šöR2Pa@ÈLÉtqTÎLêYÉYB×éiª5z!#9½´}>½r¿Øs>9=³/d¥dô‰~Ÿë¯n·^ ÷™‘˜Ñ'þ õ>ëÇöï·ºþ—¯“•šIÕð˜é	éµeµõ•õ 0­‚6¨¢¸’Ec—–ç•äg@[ndq™u»‘§áð9<1ÿw”>‹ß'lÁ7AO;P­ÑÚjÏñõíÓßú>/àð†oÔߤ1¿áEúë÷?ê—µöÿþÕÀ>¼f’ßÅG.[’[RœSý‚YÃT]Vá7dâ ¶¢®³¥‹è"Z…-Íü&á'hŠHšÿ¯(ÍÍ|Üjh´~ô´Õ½@¶@øúöùÂE¾ÙŸ¾M;|“Æü†é¿ßûï—oÖ¤áOù"‘ ©IØÜ,jÁÖÄ	¹"Aƒ°ª¸*7-b–$-D+­ª>9.…Çæâ|ð»?Ò~Nã/Ÿiâ„^_Ô(56}Ž&x èï%è´ýžÿl˜ûƒöá‰Ð1_þ~·¿+ôÿ\}vj4TþV×ÿV×ùú–ürͶó·ú]Š´=¼å7á²x·ÁJh™ÐRÒV–TÅFĵ‰ÚÛ›::š;;[:ˆön[¢¦OÐŒA`   ÐÅ›EŸ
+@I[Iö5âö</õÔÿ
+È~5š,&”Éч-€6ÒBØþŽ=í@Oz|öÙýgS&OÁfYؘçÎÕ;ÈüÒ>¹û9Í]<{k7aÌØÑÃG„…ææ”ddÑÒ¸‡/ú[Ú6ÕøL¦Ñé,ã3Ù&g3öƒPMÝ{¥lÿÍÚ­G²Õ7yŒšólÔ¼Ò+œÇ,v¾àý°ùï†Îw±È
oþ°E®?-tºÔkÈ!K‡,q²äýðÅ.£xŽ_à.3ï­Ü‚»;Líò›SsjÒ2óã±O`µ]õ'ÝŠ}“–VZºâ]0¨7¾o`µR7ÔÖÖVÕ2bÓÊ☳W]Q]üxÒü7RœÆ.rµäýˆ¥ï‡-w¶ÒgÌÏžã—½Üx$ê]á˜Ýæ\ÐàZX÷.»Ä9¯Ü5¿Ö5ážÃqÏiðÈáxä0<rk=skÝ2k}òÙïRÊ|‹9~åB—€¸èÕ0nÅÓÑKíG-ñ¹ÈkäbÏ‘KÝF-u”]v¤ÍH­à0Z$¤²°ï%ÞWÑŒ·–°Hç¬üþÞïOHÆbs—”¨¤Ô¨G[‡PïDê`É8H+lD
+Æ®&zs]Tmwð´£Å!h‰¦Öû¬ãm¢tmüõ¬C­Ï;›k	I!²«xnÁ^º¾»L#t,bõDèÖ?¸ïD€å9§ýGì-Ž¾?|¾Ø;¬..[TÁªÍ¯©-­/ÈE*H4YZëîí mrTlbD4ò±i¿ÀUÉŸÈF HËf‹yÛCÚô˜¬ÄÈ´úzF«,›xÖÉì·óÓ¹¤°ùùŒµO§ü|Wþ×{Škoªn»5w…ÅÔM–Ë5–¨)¨(ËMT…Jj´Ü˜QãGŽúÓMŒ-í½ßùx^n¡ «£½àž=cñ†uÛ Q×­Y¿`Þ|0vá‚y(-X¸pþ‚9³æÊL>d윙K|=ß=rxñÄÉÍ1ôÙC'ðöù#ççÉ“켜ü?!íGŒ{{‘”ÆGÊ¥ŒwÓã;±‰öÈöý0ìšuÿÆ}
+8ž¥>[Qb­	ÃÇÿn0ëôäÂÄäªØTžõi_«ñWsM¯”ì½Php>ßäR‘éõrÃ+µ¿ZdLÙà-µüýÄ•îòküdVúŒZäq2j±÷È%¾£—ù]8zEàÈeÖúŽXá;l¥×Е.CW:
_á:b¹ç˜¥ã—øN\쬰äÉNS縬æ¤ôêôÔ‚”˜ôØà–•>‹?%-½œFIZ–¢+ŸN½ñ} Í- ;{¤cÏä<ìx̘¾ü¶â|Û‰óœ¥úŒ_ê5j‰ÛPŒ+K/s#SU+CM;©Uv¦ªîJ™ªª¦“ª¦¤º3IuGªŠV²’vŒ¢N¤‚N´‚NŒÒ®$U­¸é»Ãfî|·ç¤›OBµWõ%B­‹‹ÆXüíI˯â±Jhq1ï_yððæ¥7n=u¹ü0ðÔè+/‹‘~sÐ[d—<¡y_zÛSß~¯þrð¬×Ãæ¾<ûÙ?5îþCãƳn_xïÇÙ7~šs}ðÜCçß™!ón™skø‚Û?̼òi—¾ŸqsÈÜGƒç=ûqö‹g½:ÛaÈ,D“¼:Ó~8‰·#f¼•šyã‰mBb\!Ôc	i›8ðEõëˆúiÑXX…‹IÊšÅJ¨Ð€°ÀÀHÖñ½GR<ç–e•"ÑfqzqQJaa2¶è(ÈO.$‘‚ÌE…©…%ÉÙÅ)™y)9é¹)…I™…iH7‘ž‡TH%)éåIée‰iÅIY¨™–Ÿžž__Ž¹Á’âj9U©úº›[:ɽöšÚ[š;êjhî>
		Œ	#cr4KZ‰MÛ¿êiéäk
Æ~ -/!86?)»89ÙieÕH©Œl±eåEåyùìꚚ⒲¼‚<¤Ëuyÿî ©ÙšÅËç(O›&£¨1QEa¬Ü„aãÇ‹	›_Wm9}üÚų÷,öŸ8vðêåsàC:wêö±C—ïݲ}x÷•…éá_V®_¶xb¡ *««iª©N›5}Þ®z'Ž^ ±o_amvñÉЇAÔã‡n=píÄᛧŽÞ>}ìÖùã×Þ<}Ò"¸â+I+±óTŸ™”ùöù[ÐyÛ>‚µvìÔÕÕÑÑÞ±[g§o`”wX–SPÙâ·çï|=[ËcÆ® ÚaÓw…jjƒÃÚ¡»Â5vEŠ=M+
+ÐÜ5]+Zsg„ÆŽpM­°Z¡¨?]+XsGðŒÑ3´Â§khìöž¦ë=m·ïtm\ÐoÆŽ÷Ku_œxû>(Í3$*<:&À/0"(ì_"­Ø&ü‚z^3­¥<½$ÜkõÖ­ÿeÑòUÓæÿ&§±mè¤mrs
Sµ4L{äŒ+æ=9Ý~ô,pzò?§=ûiæ«QÆ-}?jÑ+½?Í~0xÎýÁs‚™$æ<2çéÐ9O†Ïy0löý¡3
™õdäü7£‘æë÷¯Ï´#1ãõெN5t†íð/Çϸ
+I›œPŒyZŠ´ƒIoõ'lZÊ{AIZ‹*ñøñ«Ko^¾pyèÉm…O_¾|âÂís×o½vóìõg®Ý8sãƹ›7ÎÞ¾uîÆíSn†Ò…ŒÕWN\¼vüÒµ3¯_8åæ¹K÷Ï\xxú܃“çoŸ!÷&¾pñÚ¹‹7.]ºuúÔ…Ó§.]¾tãÚÕÛ±mé™K¨éâµóg/aƒ&lazþÔ9D½øøû!ÌYê1 H"¢ lqç}ÆO=5ÕE7·$$ÆëˆÀTš¡&¸ÄÀä¸Ï'ê9‰†¶	ï16†Åxéô%{[{p2ÔEĘ¿‡¿Ÿ‡¿§/²û‘,ú _0×ÛßÏD
ò÷
+ðÄ1	ï 	p²/ ro쀈WÆOÇbàc¨0œa8	@ ~žþØ¡øÝ«wØ÷ K
+꧿~y©
+
Œ|.©(b0èt$î#3Œ±¸%ù¥îNØvÙÔØÜÔÀÂP{¯ÞNc#]sc]Kƒ]Và¸úvÛ@IÈ?}86Ús2ÖÔø8´hHÑc8yKª&ùØs°ÛRŸ„¹¡¶É™£ga¤@7FãF¬¢¸©n¥ÀL¸$Hô×ýgT3‘µHŒˆ…vc÷ÌöÙݯžÚbGi¬‚RC®ã{jûüáã×onØ!¤>-±kuaØ7€*q†*ñW„ìQE‰ãä¸Tì-ôY™Šß¥WÁü!ÓJR¼Åýàö¾i©w†û¨f§¼8†A…+'5:5‚ã C瀀Çú®ŠR?„׉Ü*@¼8éÛKZrA#½‰^Â2ZùõÍ<Zx´f¬VëYnŽ±9 É­L>“Ž±8X/*¤‰¾¦Ä’12(B²«ØéòÊ@]~š[Ãk¨å"ñÆ‹FŒl2žSBÔæÜ{L)Õÿ³d.^¢ˆJØò¹NÕ¡¾"^I3 PßêM!É™ÞýG¹Ç1++‘«½ŸôORý‘C09
+“ËÍñ>‘ô (o-Jf
)©›¡Æ”/<,æ~%@5jÃ26³ë9(©ð±O@ÔSú0î‡â*Î|[Ò‚9Ô@LÚTœ¥nPNjU=ÆM*…Í€Ð	)¿öv¤Ìi£ÄOi©}¸`¹ážÈà„Oç9?‘'®hæÒ[ë{£
¹´fn}²«`\2;J®§'Áùú’Gg| &4r\„49èä›M¾“%94ˆ×ˆÜ|ý+¾"éÈ¿ââÿÊ5û#g¿×D÷IÐKýô:ÇQ!+¨©×ž9ž3±}Lùô¼vgHɸü¯4ø'ßíS-ê_Íù4¦@ò^ASó´\õ&­$8¡ßá\)‚ sÀe Í@#â~‘Wd,EZ’·
t¤~ÖÑYüz’_Sòõ\f=Y"êŠÎ€¿óLÔ¢gr
·¸$7)¢ðoÒþј5`Ò‚¨i?6?ºN¯å¬]?ÿ&­X¶CW§¶o{HS’Vâä蟴ö‡Ñp ¥Þ ®7Ø0ëÅ (ê~]	Š2°Ù ¸Ä1%õZ€Ÿâß"ËÞ U¬?zqÿ*ü¿#i?檤ézHûÉêscü…bVÌÛ“VLÚöòé3"êK¤åСC³9t›—ÅìA/‚a#L a3ÅfLO¸tö¥ØòAoýpG÷ÍŠCg±TQïÔ‚•“öËCÒÀ%mïþú}@ü?DÚ«Ç=&4µkôbR=Ƈ¯=@Td‡‚›à²ëYt
+bU–’6“à¨+Ö“…H8úu%¥cK@*Ûâ/
+9,¡Q%›ÙÌ—8†xÿ_¤øIÛçB‹/œüÃ+ÿ‹þi¡×`l«Hü™ë|
èß’–zµ(õò–T%¤Å‰ÑÜß¼IZhÅ bÛÈd’þa1øH”fKñ¶i{¸G1°?ôЕ¿ôGF2êĦli
+bÒâ@ðoÒ~cIû1WÿMÚqÐüVŽ¨²1ˆ´ÔÒ< ³˜ŒÁt9£SO¦G`ž“ô÷˜¯ 7¥$T}¥Óñi(±°îw)JÎjPsäʲß1Ðëÿ‹}ð>5"þÿ^Ò’¤%½	`#ð£EöT
+5Ÿø«¾ùÇKZ꽂L¥ÔcLñ¢.Qøü‡’–t¾ÓEðSs§˜V„$o‘œšÝ!ׂQovϼ\ÏK@½
+X’<à*u±ç™ÒÐXâ¥dbw±ØiOÿßç=þ…´éƤ÷þߤýSÚþ·’´ðSê1x:óȈóÀZ$0@8µ»t"E2ÄŠ3qRø(ÿ[ƵXùã²Çj¢l'Iù¡]$Ìï¹
ê¥éu*…ïŸÀ·’´ÿŠ×{v~ ×hýþû±ïÖû¼/¾U‹ý¹ëH¢\>	AùVí0ÐöùV¿û…ëPap¨€÷¥dáæi¡…&mZ,B¬ ±‰
+s¡¢öúÄ€ÂAþDåþ~÷Ïuùçßú·ÔçWþPOþä[’úýÿä‚ýÝç@÷¯¾Î·jϯ¹ÏÞu¾U;|Íï~Í»7Ðvèïš’hYT Ýà.†
+k®L…²c!Zñáéȇ *ƒÙ8	Aü—ƒEŸèöwþÎSS\ÿ:ú»Ïþ®Œîý§?¼íþ®ó­žë[]ç_oÉ/_¡÷}~Í»ñ­Úí;è“
+m‡þž…º,(	¢âšxm°®‹Zu„œ*THü 0C‰u$øôf¬H@~“þÖãS©þuÀŠîÍ0Ðúýýî@Ï÷÷»ý]G’¾à“
+½Î@ë´ÚuýOžWòâ}«vhû|«ßíï:ð6á–@@dÌ@‰ *c•x
+-ñQ‹ññ™Š¼ËÅk²¨ðÆÏ1Ð¥¿úø•>Ñßï~«ûèõ¿U}êa{_íË-9Ðçè}~A#è¥þ×ê÷¾çþè@ß·¾ç½Ÿ/Ô§ÞHZ€rS+%©µ¾Ð‚áæpDiÈÐ)èK3Їh#þÕ÷3Ðûèý|=]z'ÿo×—¼'Ÿ4à@Û¿¿÷íÿTëõwÿQ!A©Œ i‰ªü{pHK	XhÏ›ñêô­ÿ­l6ú@ïs ¶ß×Ôï]ç[µÃ@Ÿk ¿;Ðë«úÔËý¹;` ÷ÿ­êô:_ó>ô¾&8ˆ¯ô¦4*taœÇµïÿÛ ³^²g<b    IEND®B`‚
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/tsrc/wmunittest/data/wmlogo/logocorrupt.svg	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   id="svg2466"
+   inkscape:version="0.46"
+   sodipodi:docname="drawing.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1"
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer">
+       id="image2462"
+       height="18.19879"
+       width="31.139833"
+       sodipodi:absref="Y:\HS_Domain\homescreen\idlehomescreen\data\qhd_tch\shortcut2_2001f484\gfx\shortcut2logo.png"
+       xlink:href="Y:\HS_Domain\homescreen\idlehomescreen\data\qhd_tch\shortcut2_2001f484\gfx\shortcut2logo.png"
+       transform="matrix(1,0,2.5955691e-2,0.9996631,0,0)" />
+  </g>
+</svg>
Binary file idlehomescreen/widgetmanager/tsrc/wmunittest/data/wmlogo/test.wgz has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/tsrc/wmunittest/eabi/wmunittestu.def	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,3 @@
+EXPORTS
+	_Z9LibEntryLR13CTestModuleIf @ 1 NONAME
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/tsrc/wmunittest/group/Create_sisx.bat	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,19 @@
+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
+
+rem Create wm sis&sisx files
+makesis wmunittest.pkg
+signsis wmunittest.SIS wmunittest.SISX Nokia_RnDCert_02.der Nokia_RnDCert_02.key
Binary file idlehomescreen/widgetmanager/tsrc/wmunittest/group/Nokia_RnDCert_02.der has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/tsrc/wmunittest/group/Nokia_RnDCert_02.key	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICXQIBAAKBgQC/TDP7KKIaf5+uW4OD2iVZuUMC2a+SeQTjf6srlKcOm+CpPNXn
+uLNm/8fdEnyOIuRXPRKmqhs1n0JkxEGHynELWMTuKXbQx9SRAGUXzyneGn+IJNnO
+vOKHWgKCouX2hfI8rtkdqJpqmO460gGsMgw+lsbeyWyW9lnfLxq+ZC7sqQIDAQAB
+AoGBALmUWZE8GBaQ3P4u9WUCSd3DJkkrmXIFSULSZeH/chlwCwDjbbhArHothVzo
+REE3hEFFlERvHbplZ+mNouzy7boduvgUzbksGrbGMLJ2qO1GzWWVwV+GzOWKd3ss
+/98Gwoy5R8pjnkqUE2wP1iJFw0FjvUTKcYv/z6t3LLJ0CsoBAkEA+c7ixvsviQ3J
+s0INytCKU2bf8fqFQJi1VI82ukxNsujGTQ9upVSjuvqPvWyDvvTdrUBHqO+3qPut
+sEh01Q8aiQJBAMQKDJPVRu4ud3mwUfEavzL5EjqwG1k9VCNGYsT4FwtrHcxu1oP/
+pk6M3rIZukqomoEEnHWPMwhrK3fhBqi0OSECQQDr40VXege4FnH5OI2Hj4afHMyp
+VdQQXGMWFyopnzXblFz0lXb43cTCIiorR9XcMqNFHybLypkWE5o+lRzlt55pAkBQ
+P/zeF5Sts//cpL0mgdh7OVKpC6ZmZaCnwAx2rUhhuDu+kDDoYCLoTOps5fNI1LRK
+1GRoC3LMo3Jr5IYhUYWBAkBpCpN6k4JU/mszq98EojHerQNxk8sPqvQKUzTutohT
+1gLX9yepGayB/TtT2EEJDkWOlnTy/dvN6W3vzbJYz97x
+-----END RSA PRIVATE KEY-----
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/tsrc/wmunittest/group/bld.inf	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,39 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+* 
+* Description:
+* Widget manager unit tests
+*/
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_TESTEXPORTS
+// test case configuration
+../conf/wmunittest.bat              /epoc32/winscw/c/wmunittest.bat
+../conf/wmunittest.ini              /epoc32/winscw/c/testframework/testframework.ini
+../conf/ui_wmunittest.cfg           /epoc32/winscw/c/testframework/ui_wmunittest.cfg
+// test data
+../data/wmlogo/logo.jpg             /epoc32/winscw/c/testframework/wmunittest/wmlogo/logo.jpg
+../data/wmlogo/logo.mif             /epoc32/winscw/c/testframework/wmunittest/wmlogo/logo.mif
+../data/wmlogo/logo.png             /epoc32/winscw/c/testframework/wmunittest/wmlogo/logo.png
+../data/wmlogo/logo.svg             /epoc32/winscw/c/testframework/wmunittest/wmlogo/logo.svg
+../data/wmlogo/logocorrupt.jpg      /epoc32/winscw/c/testframework/wmunittest/wmlogo/logocorrupt.jpg
+../data/wmlogo/logocorrupt.png      /epoc32/winscw/c/testframework/wmunittest/wmlogo/logocorrupt.png
+../data/wmlogo/logocorrupt.svg      /epoc32/winscw/c/testframework/wmunittest/wmlogo/logocorrupt.svg
+../data/wmlogo/test.wgz             /epoc32/winscw/c/testframework/wmunittest/wmlogo/test.wgz
+
+PRJ_TESTMMPFILES
+wmunittest.mmp
+
+//  End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/tsrc/wmunittest/group/wmunittest.mmp	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,104 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+* 
+* Description: MMP file for STIF Test Framework's TestScripter 
+* testclass test module.
+*
+*/
+
+#include <data_caging_paths.hrh>
+#include <platform_paths.hrh>
+#include <bldvariant.hrh>
+
+TARGET          wmunittest.dll
+TARGETTYPE      dll
+UID             0x1000008D 0x101FB3E3
+
+CAPABILITY      ALL -TCB
+VENDORID        VID_DEFAULT
+SECUREID        0x101FB3E3
+
+DEFFILE         wmunittest.def
+
+USERINCLUDE     ../inc
+USERINCLUDE     ../../../inc
+
+APP_LAYER_SYSTEMINCLUDE
+SYSTEMINCLUDE   /epoc32/include/libc
+SYSTEMINCLUDE   /epoc32/include/ecom
+
+SOURCEPATH      ../../../src
+SOURCE 	        wmplugin.cpp
+SOURCE          wmresourceloader.cpp
+SOURCE          wmmaincontainer.cpp
+SOURCE          wmmaincontainerview.cpp
+SOURCE          wmwidgetdata.cpp
+SOURCE          wmlistbox.cpp
+SOURCE          wmimageconverter.cpp
+SOURCE          wmpersistentwidgetorder.cpp
+SOURCE          wmeffectmanager.cpp
+SOURCE          wmdetailsdlg.cpp
+SOURCE          wmportalbutton.cpp
+SOURCE          wmwidgetloaderao.cpp
+
+SOURCEPATH      ../src
+SOURCE          wmunittest.cpp
+SOURCE          wmunittest_all.cpp
+SOURCE          wmunittest_plugin.cpp
+SOURCE          wmunittest_sortorder.cpp
+SOURCE          wmunittest_converter.cpp
+
+// same as in widgetmanager.mmp
+LIBRARY	    euser.lib
+LIBRARY     cone.lib
+LIBRARY     avkon.lib
+LIBRARY     eikcore.lib
+LIBRARY     estor.lib
+LIBRARY     eikcoctl.lib
+LIBRARY     eikctl.lib
+LIBRARY	    eikdlg.lib
+LIBRARY     efsrv.lib // RFs
+LIBRARY     bafl.lib // BaflUtils
+LIBRARY     apgrfx.lib // RApaLsSession
+LIBRARY     commonengine.lib // StringLoader
+LIBRARY     aknicon.lib // AknIconUtility
+LIBRARY     imageconversion.lib // CImageDecoder
+LIBRARY     bitmaptransforms.lib // CBitmapScaler
+LIBRARY     fbscli.lib // CFbsBitmap
+LIBRARY     gdi.lib // CFont
+LIBRARY     egul.lib // TextUtils
+LIBRARY     ecom.lib // ECom fw
+LIBRARY     aknskins.lib // AknsDrawUtils
+LIBRARY     aknskinsrv.lib // AknsDrawUtils
+LIBRARY     aknswallpaperutils.lib // AknsDrawUtils
+LIBRARY     hscontentcontrol.lib // CHsContentControlUi
+LIBRARY     apparc.lib // CApaCommandLine
+LIBRARY     aknlayout.lib // avkon layout
+LIBRARY     aknlayout2scalable.lib // scalable avkon layout
+LIBRARY     swinstcli.lib // widget uninstall
+LIBRARY     hscontentinfo.lib // CHsContentInfo
+LIBRARY     platformenv.lib  // DriveInfo::GetDefaultDrive
+LIBRARY	    svgengine.lib // CSvgEngineInterfaceImpl
+LIBRARY     gfxtrans.lib // effect manager
+LIBRARY     ws32.lib //WindowSession
+LIBRARY     widgetregistryclient.lib // WidgetRegistryClient
+LIBRARY     hlplch.lib // HlpLauncher
+LIBRARY     sysutil.lib //  diskspace
+LIBRARY     featmgr.lib // FeatureManager
+LIBRARY     etext.lib 
+LIBRARY     centralrepository.lib
+
+// libraries needed by the test framework
+LIBRARY     stiftestinterface.lib
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/tsrc/wmunittest/group/wmunittest.pkg	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,51 @@
+;
+; Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
+; All rights reserved.
+; This component and the accompanying materials are made available
+; under the terms of "Eclipse Public License v1.0"
+; which accompanies this distribution, and is available
+; at the URL "http://www.eclipse.org/legal/epl-v10.html".
+;
+; Initial Contributors:
+; Nokia Corporation - initial contribution.
+;
+; Contributors:
+; 
+; Description:
+;
+; 	Installation file for STIF
+;
+
+; Languages
+&EN
+
+; Provide value for uid
+#{"STIF"},(0x101FB3E3),1,1,0,TYPE=SA
+
+; Series60 product id for S60 3.0
+[0x101F7961], 0, 0, 0, {"Series60ProductID"}
+
+; Localised Vendor name
+%{"Nokia"}
+
+; Unique Vendor name
+:"Nokia"
+
+
+; Install files
+
+"\epoc32\release\armv5\udeb\wmunittest.dll"   -   "!:\sys\bin\wmunittest.dll"
+
+"..\conf\wmunittest.bat"                      -   "!:\wmunittest.bat"
+"..\conf\wmunittest.ini"                      -   "!:\testframework\testframework2.ini"
+"..\conf\ui_wmunittest.cfg"                   -   "!:\testframework\ui_wmunittest.cfg"
+
+"..\data\wmlogo\logo.jpg"                     -   "!:\testframework\wmunittest\wmlogo\logo.jpg"
+"..\data\wmlogo\logo.mif"                     -   "!:\testframework\wmunittest\wmlogo\logo.mif"
+"..\data\wmlogo\logo.png"                     -   "!:\testframework\wmunittest\wmlogo\logo.png"
+"..\data\wmlogo\logo.svg"                     -   "!:\testframework\wmunittest\wmlogo\logo.svg"
+"..\data\wmlogo\logocorrupt.jpg"              -   "!:\testframework\wmunittest\wmlogo\logocorrupt.jpg"
+"..\data\wmlogo\logocorrupt.png"              -   "!:\testframework\wmunittest\wmlogo\logocorrupt.png"
+"..\data\wmlogo\logocorrupt.svg"              -   "!:\testframework\wmunittest\wmlogo\logocorrupt.svg"
+"..\data\wmlogo\test.wgz"                     -   "!:\testframework\wmunittest\wmlogo\test.wgz"
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/tsrc/wmunittest/inc/wmunittest.h	Thu Jan 07 12:39:41 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: STIF testclass declaration
+*
+*/
+
+#ifndef WMUNITTEST_H
+#define WMUNITTEST_H
+
+//  INCLUDES
+#include <stiflogger.h>
+#include <testscripterinternal.h>
+#include <stiftestmodule.h>
+#include <testclassassert.h>
+#include <s32file.h> // RFs
+
+#include "wmimageconverter.h" // MConverterObserver
+#include <hscontentcontroller.h>
+
+// MACROS
+#define TEST_CLASS_VERSION_MAJOR 0
+#define TEST_CLASS_VERSION_MINOR 0
+#define TEST_CLASS_VERSION_BUILD 0
+
+// MACROS FOR THE TEST CASES
+#define _LOG(a) iLog->Log(_L(a))
+#define _RETURN(a, b) iLog->Log(_L("\treturn: %d"),b); \
+                     iLog->Log(_L(a)); \
+                     return b; \
+
+#define _CLEANUPCHECK_BEGIN \
+    CBase* __check = new (ELeave) CBase(); \
+    CleanupStack::PushL( __check );
+
+#define _CLEANUPCHECK_END \
+    CleanupStack::PopAndDestroy( __check );
+
+
+// Logging path & file
+_LIT( KWmUnitTestLogPath, "\\logs\\testframework\\wmunittest\\" ); 
+_LIT( KWmUnitTestLogFile, "wmunittest.txt" ); 
+
+// FORWARD DECLARATIONS
+class CWmPlugin;
+class CWmPersistentWidgetOrder;
+class CWmImageConverter;
+class CHsContentInfo;
+class CHsContentInfoArray;
+class RWidgetDataValues;
+
+
+// CLASS DECLARATION
+/**
+*  test class for STIF Test Framework TestScripter.
+*/
+NONSHARABLE_CLASS(CWmUnitTest) : public CScriptBase,
+                                 public MConverterObserver,
+                                 public MHsContentController
+    {
+    public: // Constructors and destructor
+        /** static constructor */
+        static CWmUnitTest* NewL( CTestModuleIf& aTestModuleIf );
+        /** desctructor */
+        ~CWmUnitTest();
+
+    private: // private stuff
+        /** default constructor */
+        CWmUnitTest( CTestModuleIf& aTestModuleIf );
+        /** 2nd phase constructor */
+        void ConstructL();
+        /** version check */
+        void SendTestClassVersion();
+
+    public: // Test run API
+
+        /** From CScriptBase Runs a script line. */
+        virtual TInt RunMethodL( CStifItemParser& aItem );
+    
+    public: // from MConverterObserver
+
+        virtual void NotifyCompletion( TInt aError );
+
+    public: // from MHsContentController
+
+        TInt WidgetListL( CHsContentInfoArray& aArray );
+        TInt ViewListL( CHsContentInfoArray& aArray );
+        TInt AppListL( CHsContentInfoArray& aArray );
+        TInt AddWidgetL( CHsContentInfo& aInfo );
+        TInt RemoveWidgetL( CHsContentInfo& aInfo );
+        TInt AddViewL( CHsContentInfo& aInfo );
+        TInt RemoveViewL( CHsContentInfo& aInfo );
+        TInt ActivateViewL( CHsContentInfo& aInfo );
+        TInt ActivateAppL( CHsContentInfo& aInfo );
+        
+    private: // Test methods
+
+        // GENERAL
+        
+        // sets heap reference value
+        TInt HeapSetL( CStifItemParser& aItem );
+        // Log heap usage to file
+        TInt LogHeapL( CStifItemParser& aItem );
+        // compares heap against reference, logs warning if no match
+        TInt HeapCheckL( CStifItemParser& aItem );
+        // sets the mass of data for next test case
+        TInt SetMassL( CStifItemParser& aItem );
+		// install and uninstall wrt widget for tests
+		TInt InstallWrtWidgetL( CStifItemParser& aItem );
+		TInt UninstallWrtWidgetL( CStifItemParser& aItem );
+		// test error note
+		TInt ErrorPopupL( CStifItemParser& aItem );
+		
+        // TESTING THE PLUGIN
+        
+        // creates the WM plugin
+        TInt PluginCreateL( CStifItemParser& aItem );
+        // deletes WM plugin
+        TInt PluginDeleteL( CStifItemParser& aItem );        
+        // calls Activate method for WM plugin
+        TInt PluginActivateL( CStifItemParser& aItem );
+        // calls Deactivate method for WM plugin
+        TInt PluginDeactivateL( CStifItemParser& aItem );
+        // calls NotifyWidgetListChanged method for WM plugin
+        TInt PluginWidgetsChangedL( CStifItemParser& aItem );
+        // changes test content
+        TInt ChangeContentL( CStifItemParser& aItem );
+        
+        // TESTING THE WIDGET SORTING AND ORDER
+        
+        // creates WM persistent widget order object
+        TInt WidgetOrderCreateL( CStifItemParser& aItem );
+        // deletes WM persistent widget order object
+        TInt WidgetOrderDeleteL( CStifItemParser& aItem );
+        // tests WM persistent widget order's LOAD method
+        TInt WidgetOrderLoadL( CStifItemParser& aItem );
+        // tests WM persistent widget order's SAVE method
+        TInt WidgetOrderSaveL( CStifItemParser& aItem );
+        // tests WM persistent widget order's SAVE method
+        TInt WidgetOrderCheckIsEmptyL( CStifItemParser& aItem );
+        // calls WM persistent widget order's API methods
+        TInt WidgetOrderUseL( CStifItemParser& aItem );
+
+        // TESTING IMAGE CONVERSION ROUTINES
+       
+        // creates image converter object
+        TInt ImageConverterCreateL( CStifItemParser& aItem );
+        // deletes image converter object
+        TInt ImageConverterDeleteL( CStifItemParser& aItem );
+        // calls image converter's main conversion method
+        TInt ImageConverterConvertL( CStifItemParser& aItem );
+        // checks image converter callback and checks its result
+        TInt ImageConverterWaitResultL( CStifItemParser& aItem );
+        // gets and checks the conversion method from image converter
+        TInt ImageConverterConversionMethodL( CStifItemParser& aItem );
+        // cancel ongoing convert
+        TInt CancelConvertL( CStifItemParser& aItem );
+
+
+    private: // members used in testing
+
+        void CreateContentInfoArrayL( CHsContentInfoArray& aArray, TInt aCount );
+        void CreateWidgetDataArrayL( RWidgetDataValues& aArray, TInt aCount );
+
+        // file server
+        RFs iFs;
+
+        // the WM plugin instance
+        CWmPlugin* iWmPlugin;
+
+        // the WM persistent widget order instance
+        CWmPersistentWidgetOrder* iWmWidgetOrder;
+
+        // the Image converter instance
+        CWmImageConverter* iImageConverter;
+        
+        // amount of heap allocated in HeapSet
+        TInt iHeapSize;
+        
+        // image converter response ready
+        TBool iConversionReady;
+        
+        // image converter result
+        TInt iConversionError;
+        
+        // switch for active schedular wait
+        TBool iWaiting;
+
+        // multipurpose test data count
+        TInt iMass;
+
+        // requested changes to the content
+        TInt iChangeIndex;
+        TInt iChangeType;
+        HBufC16* iChangeValue;
+    };
+
+
+#endif      // WMUNITTEST_H
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/tsrc/wmunittest/src/wmunittest.cpp	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,112 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+* 
+* Description: This file contains testclass implementation.
+*
+*/
+
+// INCLUDE FILES
+#include <stiftestinterface.h>
+#include <settingserverclient.h>
+
+#include "wmunittest.h"
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CWmUnitTest::CWmUnitTest
+// -----------------------------------------------------------------------------
+//
+CWmUnitTest::CWmUnitTest( 
+    CTestModuleIf& aTestModuleIf ):
+        CScriptBase( aTestModuleIf )
+    {
+    iChangeValue = NULL;
+    }
+
+// -----------------------------------------------------------------------------
+// CWmUnitTest::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CWmUnitTest::ConstructL()
+    {
+    iLog = CStifLogger::NewL( KWmUnitTestLogPath, 
+            KWmUnitTestLogFile,
+            CStifLogger::ETxt,
+            CStifLogger::EFile,
+            EFalse );
+    
+    SendTestClassVersion();
+    
+    User::LeaveIfError( iFs.Connect() );
+    }
+
+// -----------------------------------------------------------------------------
+// CWmUnitTest::NewL
+// -----------------------------------------------------------------------------
+//
+CWmUnitTest* CWmUnitTest::NewL( 
+    CTestModuleIf& aTestModuleIf )
+    {
+    CWmUnitTest* self = new (ELeave) CWmUnitTest( aTestModuleIf );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CWmUnitTest::~CWmUnitTest
+// -----------------------------------------------------------------------------
+//
+CWmUnitTest::~CWmUnitTest()
+    { 
+    // Delete logger
+    delete iLog; 
+    // close file server
+    iFs.Close();
+    }
+
+//-----------------------------------------------------------------------------
+// CWmDeploymentClientTest::SendTestClassVersion
+//-----------------------------------------------------------------------------
+//
+void CWmUnitTest::SendTestClassVersion()
+	{
+	TVersion moduleVersion;
+	moduleVersion.iMajor = TEST_CLASS_VERSION_MAJOR;
+	moduleVersion.iMinor = TEST_CLASS_VERSION_MINOR;
+	moduleVersion.iBuild = TEST_CLASS_VERSION_BUILD;
+	
+	TFileName moduleName;
+	moduleName = _L("wmunittest.dll");
+
+	TBool newVersionOfMethod = ETrue;
+	TestModuleIf().SendTestModuleVersion(moduleVersion, moduleName, newVersionOfMethod);
+	}
+
+// ========================== OTHER EXPORTED FUNCTIONS =========================
+
+// -----------------------------------------------------------------------------
+// LibEntryL() - polymorphic Dll entry point.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CScriptBase* LibEntryL( 
+    CTestModuleIf& aTestModuleIf ) // Backpointer to STIF Test Framework
+    {
+    return ( CScriptBase* ) CWmUnitTest::NewL( aTestModuleIf );
+    }
+
+
+//  End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/tsrc/wmunittest/src/wmunittest_all.cpp	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,250 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+* 
+* Description: list of all test blocks
+*
+*/
+
+//INCLUDE FILES
+#include <e32svr.h>
+#include <stdlib.h>
+#include <stifparser.h>
+#include <stiftestinterface.h>
+#include <bautils.h>
+#include <aknsskininstance.h>
+#include <swinstapi.h>
+#include <swinstdefs.h>
+#include <coemain.h>
+#include <EIKENV.H> 
+#include "wmunittest.h"
+#include "wmresourceloader.h"
+
+// CONSTANTS
+_LIT( KHexPrefix,     "0x" );
+_LIT8( KWrtMime, "application/x-nokia-widget");
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CWmUnitTest::RunMethodL
+// -----------------------------------------------------------------------------
+//
+TInt CWmUnitTest::RunMethodL( 
+    CStifItemParser& aItem ) 
+    {
+    static TStifFunctionInfo const KFunctions[] =
+        {
+        // general test blocks
+        ENTRY( "HeapSet", CWmUnitTest::HeapSetL ),
+        ENTRY( "LogHeap", CWmUnitTest::LogHeapL ),
+        ENTRY( "HeapCheck", CWmUnitTest::HeapCheckL ),
+        ENTRY( "SetMass", CWmUnitTest::SetMassL ),
+        ENTRY( "ErrorPopup", CWmUnitTest::ErrorPopupL ),
+        
+		// install/uninstall wrt widget for test
+		ENTRY( "InstallWrtWidget", CWmUnitTest::InstallWrtWidgetL ),
+		ENTRY( "UninstallWrtWidget", CWmUnitTest::UninstallWrtWidgetL ),
+
+        // test blocks for the plugin
+        ENTRY( "PluginCreate", CWmUnitTest::PluginCreateL ),
+        ENTRY( "PluginDelete", CWmUnitTest::PluginDeleteL ),
+        ENTRY( "PluginActivate", CWmUnitTest::PluginActivateL ),
+        ENTRY( "PluginDeactivate", CWmUnitTest::PluginDeactivateL ),
+        ENTRY( "PluginWidgetsChanged", CWmUnitTest::PluginWidgetsChangedL ),
+        ENTRY( "ChangeContent", CWmUnitTest::ChangeContentL ),
+
+        // test blocks for the persistent widget order class
+        ENTRY( "WidgetOrderCreate", CWmUnitTest::WidgetOrderCreateL ),
+        ENTRY( "WidgetOrderDelete", CWmUnitTest::WidgetOrderDeleteL ),
+        ENTRY( "WidgetOrderLoad", CWmUnitTest::WidgetOrderLoadL ),
+        ENTRY( "WidgetOrderSave", CWmUnitTest::WidgetOrderSaveL ),
+        ENTRY( "WidgetOrderCheckIsEmpty", CWmUnitTest::WidgetOrderCheckIsEmptyL ),
+        ENTRY( "WidgetOrderUse", CWmUnitTest::WidgetOrderUseL ),
+        
+        // test blocks for the image converter
+        ENTRY( "ImageConverterCreate", CWmUnitTest::ImageConverterCreateL ),
+        ENTRY( "ImageConverterDelete", CWmUnitTest::ImageConverterDeleteL ),
+        ENTRY( "ImageConverterConvert", CWmUnitTest::ImageConverterConvertL ),
+        ENTRY( "ImageConverterWaitResult", CWmUnitTest::ImageConverterWaitResultL ),
+        ENTRY( "ImageConverterConversionMethod", CWmUnitTest::ImageConverterConversionMethodL ),
+        ENTRY( "CancelConvert", CWmUnitTest::CancelConvertL ),
+        
+        };
+
+    const TInt count = sizeof( KFunctions ) / 
+                        sizeof( TStifFunctionInfo );
+
+    return RunInternalL( KFunctions, count, aItem );
+    }
+
+// -----------------------------------------------------------------------------
+// CWmUnitTest::HeapSetL
+// -----------------------------------------------------------------------------
+//
+TInt CWmUnitTest::HeapSetL( CStifItemParser& /*aItem*/ )
+    {
+    User::Heap().AllocSize( iHeapSize );
+    _RETURN("HeapSetL End", KErrNone);
+    }
+
+// -----------------------------------------------------------------------------
+// CWmUnitTest::LogHeapL
+// -----------------------------------------------------------------------------
+//
+TInt CWmUnitTest::LogHeapL( CStifItemParser& aItem )
+    {
+    TPtrC inputStr;
+    aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing );
+    User::LeaveIfError( aItem.GetNextString( inputStr ) );
+
+    TInt size = 0;
+    User::Heap().AllocSize( size );
+    iLog->Log( _L("Heap usage, %S: %d"), &inputStr, size );
+    _RETURN("LogHeapL End", KErrNone);
+    }
+
+// -----------------------------------------------------------------------------
+// CWmUnitTest::HeapCheckL
+// -----------------------------------------------------------------------------
+//
+TInt CWmUnitTest::HeapCheckL( CStifItemParser& /*aItem*/ )
+    {
+    TInt ret = KErrNone;
+    TInt heapSizeAtCheckpoint;
+    User::Heap().AllocSize( heapSizeAtCheckpoint );
+    if ( iHeapSize != heapSizeAtCheckpoint )
+        {
+        //ret = KErrTooBig; <-- not reliable
+        _LOG("Warning: potential memory leak detected!!!");
+        }
+    _RETURN("HeapCheckL End", ret);
+    }
+
+// -----------------------------------------------------------------------------
+// CWmUnitTest::SetMassL
+// -----------------------------------------------------------------------------
+//
+TInt CWmUnitTest::SetMassL( CStifItemParser& aItem )
+    {
+    aItem.GetNextInt( iMass );
+    _RETURN("SetMassL End", KErrNone);
+    }
+
+// -----------------------------------------------------------------------------
+// CWmUnitTest::InstallWrtWidgetL
+// -----------------------------------------------------------------------------
+//
+TInt CWmUnitTest::InstallWrtWidgetL( CStifItemParser& aItem )
+    {
+	TInt ret = KErrNone;
+    TPtrC inputStr;
+    aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing );
+    User::LeaveIfError( aItem.GetNextString( inputStr ) );
+    if ( inputStr.Length() == 0 ) User::Leave( KErrArgument );
+	
+	// install widget
+    SwiUI::RSWInstSilentLauncher installer;
+    User::LeaveIfError( installer.Connect() );
+    CleanupClosePushL( installer );
+
+    SwiUI::TInstallReqPckg installReqPckg;
+    SwiUI::TInstallOptions options;
+    TRequestStatus status = KRequestPending;
+    
+    options.iUpgrade = SwiUI::EPolicyAllowed;
+    options.iOptionalItems = SwiUI::EPolicyAllowed;
+    options.iOCSP = SwiUI::EPolicyAllowed;
+    options.iIgnoreOCSPWarnings = SwiUI::EPolicyAllowed;
+    options.iUntrusted = SwiUI::EPolicyAllowed;
+    options.iPackageInfo = SwiUI::EPolicyAllowed;
+    options.iCapabilities = SwiUI::EPolicyAllowed;
+    options.iKillApp = SwiUI::EPolicyAllowed;
+    options.iOverwrite = SwiUI::EPolicyAllowed;
+    options.iDownload = SwiUI::EPolicyAllowed;
+    options.iDrive = 'C';
+    options.iLang = User::Language();
+    options.iUsePhoneLang = ETrue;
+    options.iUpgradeData = SwiUI::EPolicyAllowed;
+    
+    SwiUI::TInstallOptionsPckg optionsPkg( options );
+    installer.SilentInstall( status , inputStr, optionsPkg );
+    User::WaitForRequest( status );
+    ret = status.Int();
+	CleanupStack::PopAndDestroy( &installer );
+    _RETURN("InstallWrtWidgetL End", ret);
+    }
+
+// -----------------------------------------------------------------------------
+// CWmUnitTest::UninstallWrtWidgetL
+// -----------------------------------------------------------------------------
+//
+TInt CWmUnitTest::UninstallWrtWidgetL( CStifItemParser& aItem )
+    {
+    TInt ret = KErrNone;
+	TPtrC inputStr;
+    aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing );
+    User::LeaveIfError( aItem.GetNextString( inputStr ) );
+    if ( inputStr.Length() == 0 ) User::Leave( KErrArgument );
+
+	TUid uid;
+	TLex lex( inputStr );
+	lex.SkipSpaceAndMark();
+	TPtrC mtoken = lex.MarkedToken();
+	TInt pos = mtoken.FindF( KHexPrefix );
+	if ( pos == 0 )
+		{
+		TLex lex( mtoken.Mid( KHexPrefix().Length() ) );
+		TUint id = 0;
+		ret = lex.Val( id, EHex );
+		uid = TUid::Uid( (TInt)id );
+		}
+	else
+		{
+		TInt id( 0 );
+		ret = lex.Val( id );
+		uid.iUid = id;
+		}
+
+	if ( ret == KErrNone )
+		{
+		// Uninstall widget
+		SwiUI::RSWInstSilentLauncher installer;
+		User::LeaveIfError( installer.Connect() );
+		CleanupClosePushL( installer );
+		
+		TRequestStatus status = KRequestPending;
+		SwiUI::TUninstallOptions optionsUninstall;
+		optionsUninstall.iBreakDependency = SwiUI::EPolicyAllowed;
+		optionsUninstall.iKillApp = SwiUI::EPolicyAllowed;
+		SwiUI::TUninstallOptionsPckg uninstallOptionsPkg( optionsUninstall );
+		
+		installer.SilentUninstall( status, uid, uninstallOptionsPkg, KWrtMime );
+		User::WaitForRequest( status );				
+		CleanupStack::PopAndDestroy( &installer );
+		}
+	
+    _RETURN("UninstallWrtWidgetL End", ret);
+    }
+
+// -----------------------------------------------------------------------------
+// CWmUnitTest::ErrorPopup
+// -----------------------------------------------------------------------------
+//
+TInt CWmUnitTest::ErrorPopupL( CStifItemParser& /*aItem*/ )
+    {
+    CWmResourceLoader* res = CWmResourceLoader::NewL( *CEikonEnv::Static() );
+    res->ErrorPopup(KErrNone);
+    delete res;
+    _RETURN("ErrorPopupL End", KErrNone);
+    }
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/tsrc/wmunittest/src/wmunittest_converter.cpp	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,164 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+* 
+* Description: test blocks for CWmImageConverter
+*
+*/
+
+//INCLUDE FILES
+#include <e32svr.h>
+#include <stdlib.h>
+#include <stifparser.h>
+#include <stiftestinterface.h>
+#include <bautils.h>
+#include <aknsskininstance.h>
+#include "wmunittest.h"
+// components to test
+#include "wmimageconverter.h"
+
+
+// -----------------------------------------------------------------------------
+// CWmUnitTest::ImageConverterCreateL
+// -----------------------------------------------------------------------------
+//
+TInt CWmUnitTest::ImageConverterCreateL( CStifItemParser& /*aItem*/ )
+    {
+    if ( iImageConverter != 0 ) User::Leave( KErrArgument );
+    TInt ret = KErrNone;
+    _CLEANUPCHECK_BEGIN
+    iImageConverter = CWmImageConverter::NewL( this );
+    _CLEANUPCHECK_END
+    _RETURN("ImageConverterCreateL End", ret);
+    }
+
+// -----------------------------------------------------------------------------
+// CWmUnitTest::ImageConverterDeleteL
+// -----------------------------------------------------------------------------
+//
+TInt CWmUnitTest::ImageConverterDeleteL( CStifItemParser& /*aItem*/ )
+    {
+    if ( iImageConverter == 0 ) User::Leave( KErrArgument );
+    TInt ret = KErrNone;
+    delete iImageConverter;
+    iImageConverter = 0;
+    _RETURN("ImageConverterDeleteL End", ret);
+    }
+
+// -----------------------------------------------------------------------------
+// CWmUnitTest::ImageConverterConvertL
+// -----------------------------------------------------------------------------
+//
+TInt CWmUnitTest::ImageConverterConvertL( CStifItemParser& aItem )
+    {
+    if ( iImageConverter == 0 ) User::Leave( KErrArgument );
+    TInt ret = KErrNone;
+    iConversionReady = EFalse;
+    TPtrC inputStr;
+
+    aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing );
+    User::LeaveIfError( aItem.GetNextString( inputStr ) );
+    if ( inputStr.Length() == 0 ) User::Leave( KErrArgument );
+
+    TRAPD( err, iImageConverter->HandleIconStringL( 40, 40, inputStr ) );
+    if ( err != KErrNone )
+        {
+        _LOG("ImageConverterConvertL:HandleIconStringL returns with leave");
+        iConversionReady = ETrue;
+        iConversionError = err;
+        }
+
+    _RETURN("ImageConverterConvertL End", ret );
+    }
+
+// -----------------------------------------------------------------------------
+// CWmUnitTest::ImageConverterWaitResultL
+// -----------------------------------------------------------------------------
+//
+TInt CWmUnitTest::ImageConverterWaitResultL( CStifItemParser& aItem )
+    {
+    if ( iImageConverter == 0 ) User::Leave( KErrArgument );
+    TInt ret = KErrNone;
+    TInt expectedResult;
+
+    User::LeaveIfError( aItem.GetNextInt( expectedResult ) );    
+
+    iWaiting = EFalse;
+    if ( !iConversionReady )
+        {
+        iWaiting = ETrue;
+        CActiveScheduler::Start();
+        iWaiting = EFalse;
+        }
+
+    // check conversion error
+    if ( expectedResult == KErrNone && iConversionError != KErrNone )
+        {
+        _LOG("ImageConverterWaitResultL: expected ok, returns error");
+        ret = iConversionError;
+        }
+    else if ( expectedResult != KErrNone && iConversionError == KErrNone )
+        {
+        _LOG("ImageConverterWaitResultL: expected error, returns ok");
+        ret = KErrGeneral;
+        }
+
+    _RETURN("ImageConverterWaitResultL End", ret);
+    }
+
+// -----------------------------------------------------------------------------
+// CWmUnitTest::NotifyCompletion
+// -----------------------------------------------------------------------------
+//
+void CWmUnitTest::NotifyCompletion( TInt aError )
+    {
+    if ( !iConversionReady )
+        {
+        iConversionReady = ETrue;
+        iConversionError = aError;
+        if ( iWaiting )
+            {
+            CActiveScheduler::Stop();
+            }
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CWmUnitTest::ImageConverterConversionMethodL
+// -----------------------------------------------------------------------------
+//
+TInt CWmUnitTest::ImageConverterConversionMethodL( CStifItemParser& aItem )
+    {
+    if ( iImageConverter == 0 ) User::Leave( KErrArgument );
+    TInt ret = KErrNone;
+    TInt conversionMethod;
+
+    User::LeaveIfError( aItem.GetNextInt( conversionMethod ) );    
+
+    // check conversion method
+    if ( conversionMethod != iImageConverter->ConversionMethod() )
+        ret = KErrGeneral;
+
+    _RETURN("ImageConverterConversionMethodL End", ret);
+    }
+
+// -----------------------------------------------------------------------------
+// CWmUnitTest::CancelConvertL
+// -----------------------------------------------------------------------------
+//
+TInt CWmUnitTest::CancelConvertL( CStifItemParser& /*aItem*/ )
+    {
+    if ( iImageConverter == 0 ) User::Leave( KErrArgument );
+    iImageConverter->Cancel();
+    _RETURN("CancelConvertL End", KErrNone);
+    }
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/tsrc/wmunittest/src/wmunittest_plugin.cpp	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,232 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+* 
+* Description: test blocks for CWmPlugin
+*
+*/
+
+//INCLUDE FILES
+#include <e32svr.h>
+#include <stdlib.h>
+#include <stifparser.h>
+#include <stiftestinterface.h>
+#include <bautils.h>
+#include <aknsskininstance.h>
+#include "wmunittest.h"
+// components to test
+#include "wmplugin.h"
+#include <hscontentinfo.h>
+#include <hscontentinfoarray.h>
+
+// MACROS
+#define _LOG(a) iLog->Log(_L(a))
+#define _RETURN(a, b) iLog->Log(_L("\treturn: %d"),b); \
+                     iLog->Log(_L(a)); \
+                     return b; \
+
+#define _CLEANUPCHECK_BEGIN \
+    CBase* __check = new (ELeave) CBase(); \
+    CleanupStack::PushL( __check );
+
+#define _CLEANUPCHECK_END \
+    CleanupStack::PopAndDestroy( __check );
+
+// CONSTANTS
+const TInt KName = 100;
+const TInt KDescription = 101;
+const TInt KLogoPath = 102;
+const TInt KCanBeAdded = 103;
+const TInt KCanBeRemoved = 104;
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+
+// -----------------------------------------------------------------------------
+// CWmUnitTest::PluginCreateL
+// -----------------------------------------------------------------------------
+//
+TInt CWmUnitTest::PluginCreateL( CStifItemParser& /*aItem*/ )
+    {
+    if ( iWmPlugin != 0 ) User::Leave( KErrArgument );
+    TInt ret = KErrNone;
+    _CLEANUPCHECK_BEGIN
+    iWmPlugin = CWmPlugin::NewL();
+    iWmPlugin->SetContentController( this );
+    _CLEANUPCHECK_END
+    _RETURN("PluginCreateL End", ret);
+    }
+
+// -----------------------------------------------------------------------------
+// CWmUnitTest::PluginDeleteL
+// -----------------------------------------------------------------------------
+//
+TInt CWmUnitTest::PluginDeleteL( CStifItemParser& /*aItem*/ )
+    {
+    if ( iWmPlugin == 0 ) User::Leave( KErrArgument );
+    TInt ret = KErrNone;
+    delete iWmPlugin;
+    iWmPlugin = 0;
+    _RETURN("PluginDeleteL End", ret);
+    }
+
+// -----------------------------------------------------------------------------
+// CWmUnitTest::PluginActivateL
+// -----------------------------------------------------------------------------
+//
+TInt CWmUnitTest::PluginActivateL( CStifItemParser& /*aItem*/ )
+    {
+    if ( iWmPlugin == 0 ) User::Leave( KErrArgument );
+    iWmPlugin->Activate();
+    _RETURN("PluginActivateL End", KErrNone);
+    }
+
+// -----------------------------------------------------------------------------
+// CWmUnitTest::PluginDeactivateL
+// -----------------------------------------------------------------------------
+//
+TInt CWmUnitTest::PluginDeactivateL( CStifItemParser& /*aItem*/ )
+    {
+    if ( iWmPlugin == 0 ) User::Leave( KErrArgument );
+    iWmPlugin->Deactivate();
+    _RETURN("PluginActivateL End", KErrNone);
+    }
+
+// -----------------------------------------------------------------------------
+// CWmUnitTest::PluginWidgetsChangedL
+// -----------------------------------------------------------------------------
+//
+TInt CWmUnitTest::PluginWidgetsChangedL( CStifItemParser& /*aItem*/ )
+    {
+    if ( iWmPlugin == 0 ) User::Leave( KErrArgument );
+    iWmPlugin->NotifyWidgetListChanged();
+    _RETURN("PluginWidgetsChangedL End", KErrNone);
+    }
+
+// =============================================================================
+// Methods from MHsContentController
+// =============================================================================
+
+TInt CWmUnitTest::WidgetListL( CHsContentInfoArray& aArray )
+    {
+    CreateContentInfoArrayL( aArray, iMass );
+    return KErrNone;
+    }
+
+TInt CWmUnitTest::ViewListL( CHsContentInfoArray& /*aArray*/ )
+    {
+    return KErrNone;
+    }
+
+TInt CWmUnitTest::AppListL( CHsContentInfoArray& /*aArray*/ )
+    {
+    return KErrNone;
+    }
+
+TInt CWmUnitTest::AddWidgetL( CHsContentInfo& /*aInfo*/ )
+    {
+    return KErrNone;
+    }
+
+TInt CWmUnitTest::RemoveWidgetL( CHsContentInfo& /*aInfo*/ )
+    {
+    return KErrNone;
+    }
+
+TInt CWmUnitTest::AddViewL( CHsContentInfo& /*aInfo*/ )
+    {
+    return KErrNone;
+    }
+
+TInt CWmUnitTest::RemoveViewL( CHsContentInfo& /*aInfo*/ )
+    {
+    return KErrNone;
+    }
+
+TInt CWmUnitTest::ActivateViewL( CHsContentInfo& /*aInfo*/ )
+    {
+    return KErrNone;
+    }
+
+TInt CWmUnitTest::ActivateAppL( CHsContentInfo& /*aInfo*/ )
+    {
+    return KErrNone;
+    }
+
+
+
+// -----------------------------------------------------------------------------
+// CWmUnitTest::ChangeContentL
+// -----------------------------------------------------------------------------
+//
+TInt CWmUnitTest::ChangeContentL( CStifItemParser& aItem )
+    {
+    aItem.GetNextInt( iChangeIndex );    
+    aItem.GetNextInt( iChangeType );
+    TPtrC changeValue;
+    aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing );
+    aItem.GetNextString( changeValue );
+    delete iChangeValue;
+    iChangeValue = NULL;
+    iChangeValue = changeValue.AllocL();
+    _RETURN("ChangeContentL End", KErrNone);
+    }
+
+// string -> bool conversion function
+TBool s2b( const TDesC& str )
+    {
+    return ( str == _L("1") ? ETrue : EFalse );
+    }
+
+// -----------------------------------------------------------------------------
+// CWmUnitTest::CreateContentInfoArrayL
+// -----------------------------------------------------------------------------
+//
+void CWmUnitTest::CreateContentInfoArrayL( CHsContentInfoArray& aArray, TInt aCount )
+    {
+    for( TInt i=0; i<aCount; ++i )
+        {
+        CHsContentInfo* info = CHsContentInfo::NewLC();
+        TBuf<64> name;
+        name.Format( _L("Widget_%d"), i );
+        info->SetNameL( name );
+        TBuf8<20> id;
+        id.Num( i );
+        info->SetUidL( id );
+        info->SetTypeL( _L8("template") );
+        info->SetIconPathL( _L("uid(0x2000DAD2)") );
+        info->SetCanBeAdded( ETrue );
+        info->SetDescriptionL(_L("Default plaa plaa plaa plaa plaa plaa plaa"));
+        
+        aArray.Array().AppendL( info );
+        CleanupStack::Pop( info );
+        }
+    
+    // change content
+    if ( iChangeIndex >= 0 && iChangeIndex < aCount )
+        {
+        CHsContentInfo* info = aArray.Array()[iChangeIndex];
+        if ( iChangeType == KName )
+            { info->SetNameL( *iChangeValue ); }
+        else if ( iChangeType == KDescription )
+            { info->SetDescriptionL( *iChangeValue ); }
+        else if ( iChangeType == KLogoPath )
+            { info->SetIconPathL( *iChangeValue ); }
+        else if ( iChangeType == KCanBeAdded )
+            { info->SetCanBeAdded( s2b(*iChangeValue) ); }
+        else if ( iChangeType == KCanBeRemoved )
+            { info->SetCanBeRemoved( s2b(*iChangeValue) ); }
+        }
+    }
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/tsrc/wmunittest/src/wmunittest_sortorder.cpp	Thu Jan 07 12:39:41 2010 +0200
@@ -0,0 +1,175 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+* 
+* Description:  test blocks for CWmPersistentWidgetorder
+*
+*/
+
+//INCLUDE FILES
+#include <e32svr.h>
+#include <stdlib.h>
+#include <stifparser.h>
+#include <stiftestinterface.h>
+#include <bautils.h>
+#include <aknsskininstance.h>
+#include "wmunittest.h"
+// components to test
+#include "wmpersistentwidgetorder.h"
+#include "wmwidgetdata.h"
+#include <hscontentinfo.h>
+#include <hscontentinfoarray.h>
+#include <widgetregistryclient.h> // widgetreqistry
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+
+// -----------------------------------------------------------------------------
+// CWmUnitTest::WidgetOrderCreateL
+// -----------------------------------------------------------------------------
+//
+TInt CWmUnitTest::WidgetOrderCreateL( CStifItemParser& /*aItem*/ )
+    {
+    if ( iWmWidgetOrder != 0 ) User::Leave( KErrArgument );
+    TInt ret = KErrNone;
+    _CLEANUPCHECK_BEGIN
+    iWmWidgetOrder = CWmPersistentWidgetOrder::NewL( iFs );
+    _CLEANUPCHECK_END
+    _RETURN("WidgetOrderCreateL End", ret);
+    }
+
+// -----------------------------------------------------------------------------
+// CWmUnitTest::WidgetOrderDeleteL
+// -----------------------------------------------------------------------------
+//
+TInt CWmUnitTest::WidgetOrderDeleteL( CStifItemParser& /*aItem*/ )
+    {
+    if ( iWmWidgetOrder == 0 ) User::Leave( KErrArgument );
+    TInt ret = KErrNone;
+    delete iWmWidgetOrder;
+    iWmWidgetOrder = 0;
+    _RETURN("WidgetOrderDeleteL End", ret);
+    }
+
+// -----------------------------------------------------------------------------
+// CWmUnitTest::WidgetOrderLoadL
+// -----------------------------------------------------------------------------
+//
+TInt CWmUnitTest::WidgetOrderLoadL( CStifItemParser& /*aItem*/ )
+    {
+    if ( iWmWidgetOrder == 0 ) User::Leave( KErrArgument );
+    TInt ret = KErrNone;
+    _CLEANUPCHECK_BEGIN
+    iWmWidgetOrder->LoadL();
+    _CLEANUPCHECK_END
+    _RETURN("WidgetOrderLoadL End", ret);
+    }
+
+
+// -----------------------------------------------------------------------------
+// CWmUnitTest::WidgetOrderSaveL
+// -----------------------------------------------------------------------------
+//
+TInt CWmUnitTest::WidgetOrderSaveL( CStifItemParser& /*aItem*/ )
+    {
+    if ( iWmWidgetOrder == 0 ) User::Leave( KErrArgument );
+    TInt ret = KErrNone;
+
+    _CLEANUPCHECK_BEGIN
+    RWidgetDataValues array;
+    CleanupClosePushL( array );
+    CreateWidgetDataArrayL( array, iMass );
+    iWmWidgetOrder->StoreL( array );
+    array.ResetAndDestroy();
+    CleanupStack::Pop( &array );
+    _CLEANUPCHECK_END
+
+    _RETURN("WidgetOrderSaveL End", ret);
+    }
+
+// -----------------------------------------------------------------------------
+// CWmUnitTest::WidgetOrderCheckIsEmptyL
+// -----------------------------------------------------------------------------
+//
+TInt CWmUnitTest::WidgetOrderCheckIsEmptyL( CStifItemParser& aItem )
+    {
+    if ( iWmWidgetOrder == 0 ) User::Leave( KErrArgument );
+    TInt ret = KErrNone;
+    TInt expectedResult;
+    aItem.GetNextInt( expectedResult );
+
+    if ( iWmWidgetOrder->IsEmpty() && !expectedResult )
+        ret = KErrGeneral;
+    if ( !iWmWidgetOrder->IsEmpty() && expectedResult )
+        ret = KErrGeneral;
+
+    _RETURN("WidgetOrderCheckIsEmptyL End", ret);
+    }
+
+// -----------------------------------------------------------------------------
+// CWmUnitTest::WidgetOrderUseL
+// -----------------------------------------------------------------------------
+//
+TInt CWmUnitTest::WidgetOrderUseL( CStifItemParser& /*aItem*/ )
+    {
+    if ( iWmWidgetOrder == 0 ) User::Leave( KErrArgument );
+    TInt ret = KErrNone;
+
+    _CLEANUPCHECK_BEGIN
+    // test IndexOf
+    RWidgetDataValues array;
+    CreateWidgetDataArrayL( array, iMass );
+    for( TInt i=0; i<array.Count() && ret==KErrNone; ++i )
+        {
+        TInt index = iWmWidgetOrder->IndexOf( *array[i] );
+        if ( index < KErrNotFound || index >= array.Count() )
+            ret = KErrUnknown; // illegal index
+        }
+    array.ResetAndDestroy();
+    _CLEANUPCHECK_END
+
+    _RETURN("WidgetOrderUseL End", ret);
+    }
+
+
+// -----------------------------------------------------------------------------
+// CWmUnitTest::CreateWidgetDataArrayL
+// -----------------------------------------------------------------------------
+//
+void CWmUnitTest::CreateWidgetDataArrayL( RWidgetDataValues& aArray, TInt aCount )
+    {
+    // first create an array of content info classes
+    CHsContentInfoArray* contentArray = CHsContentInfoArray::NewL();
+    CleanupStack::PushL( contentArray );
+    CreateContentInfoArrayL( *contentArray, aCount );
+    // connect to widget registry
+    RWidgetRegistryClientSession registryClient;
+    User::LeaveIfError( registryClient.Connect() );
+    CleanupClosePushL( registryClient );
+
+    while( contentArray->Array().Count() > 0 )
+        {
+        CWmWidgetData* data = CWmWidgetData::NewL(
+                contentArray->Array()[0], &registryClient);
+        contentArray->Array().Remove( 0 );
+        CleanupStack::PushL( data );
+        aArray.AppendL( data );
+        CleanupStack::Pop( data );
+        }
+ 
+    registryClient.Disconnect();
+    CleanupStack::PopAndDestroy( &registryClient );
+    CleanupStack::PopAndDestroy( contentArray );
+    }
+
+
+// End of File
--- a/idlehomescreen/xmluicontroller/inc/contentpublisher.h	Thu Dec 17 08:40:49 2009 +0200
+++ b/idlehomescreen/xmluicontroller/inc/contentpublisher.h	Thu Jan 07 12:39:41 2010 +0200
@@ -28,7 +28,7 @@
 #define CONTENTPUBLISHER_H
 
 #include <e32base.h>
-#include <LiwCommon.h>
+#include <liwcommon.h>
 
 // FORWARD DECLARATIONS
 class CLiwGenericParamList;
--- a/idlehomescreen/xmluicontroller/src/aieventhandler.cpp	Thu Dec 17 08:40:49 2009 +0200
+++ b/idlehomescreen/xmluicontroller/src/aieventhandler.cpp	Thu Jan 07 12:39:41 2010 +0200
@@ -15,9 +15,9 @@
 *
 */
 
-#include <LiwServiceHandler.h>
-#include <LiwVariant.h>
-#include <LiwCommon.h>
+#include <liwservicehandler.h>
+#include <liwvariant.h>
+#include <liwcommon.h>
 #include <UikonInternalPSKeys.h>
 #include <e32property.h>
 
--- a/idlehomescreen/xmluicontroller/src/contentpublisher.cpp	Thu Dec 17 08:40:49 2009 +0200
+++ b/idlehomescreen/xmluicontroller/src/contentpublisher.cpp	Thu Jan 07 12:39:41 2010 +0200
@@ -18,9 +18,9 @@
 #include "contentpublisher.h"
 #include "globalqueryhandler.h"
 
-#include <LiwServiceHandler.h>
-#include <LiwVariant.h>
-#include <LiwGenericParam.h>
+#include <liwservicehandler.h>
+#include <liwvariant.h>
+#include <liwgenericparam.h>
 #include <AknQueryDialog.h>
 #include <ai3xmlui.rsg>
 #include "xmluicontroller.h"
--- a/idlehomescreen/xmluicontroller/src/onlineofflinehelper.cpp	Thu Dec 17 08:40:49 2009 +0200
+++ b/idlehomescreen/xmluicontroller/src/onlineofflinehelper.cpp	Thu Jan 07 12:39:41 2010 +0200
@@ -273,7 +273,7 @@
                         // Show roaming notification
 						CAknGlobalNote* note = CAknGlobalNote::NewLC();
 						HBufC* msg( StringLoader::LoadLC( R_QTN_HS_AUTOMATIC_OFFLINE ) );
-						 
+						note->SetSoftkeys(R_AVKON_SOFTKEYS_OK_EMPTY); 
 						note->ShowNoteL( EAknGlobalInformationNote, *msg );
 						CleanupStack::PopAndDestroy( 2, note ); // msg    
                         }
--- a/idlehomescreen/xmluirendering/renderingplugins/extrenderingplugin/src/xnextrenderingpluginadapter.cpp	Thu Dec 17 08:40:49 2009 +0200
+++ b/idlehomescreen/xmluirendering/renderingplugins/extrenderingplugin/src/xnextrenderingpluginadapter.cpp	Thu Jan 07 12:39:41 2010 +0200
@@ -22,9 +22,6 @@
 
 // Local constants
 
-// TODO: Content controller ECom interface UID
-const TUid KInterfaceUidContentController = { 0x20026F51 };
-
 // ======== MEMBER FUNCTIONS ========
 
 // ----------------------------------------------------------------------------
--- a/idlehomescreen/xmluirendering/renderingplugins/xnmenufactory/src/xnmenu.cpp	Thu Dec 17 08:40:49 2009 +0200
+++ b/idlehomescreen/xmluirendering/renderingplugins/xnmenufactory/src/xnmenu.cpp	Thu Jan 07 12:39:41 2010 +0200
@@ -96,7 +96,6 @@
     adapter->SetSoftKeyImageL( aBitmap, aMask, aPos, aNode, aPreserveAspectRatio, aInvertMask, aTransferOwnership );    
     }
 
-#if 0 // MSK icon
 // -----------------------------------------------------------------------------
 // CXnMenu::SetSoftKeyImageL
 // 
@@ -111,7 +110,6 @@
     CXnMenuAdapter* adapter = static_cast< CXnMenuAdapter* >( ControlAdapter() );
     adapter->SetSoftKeyImageL( aId, aBmpFile, aBmp, aBmpM, aPos, aEnable );    
     }
-#endif // MSK icon
 
 // -----------------------------------------------------------------------------
 // CXnMenu::SetSoftKeyTextL
--- a/idlehomescreen/xmluirendering/renderingplugins/xnmenufactory/src/xnmenuadapter.cpp	Thu Dec 17 08:40:49 2009 +0200
+++ b/idlehomescreen/xmluirendering/renderingplugins/xnmenufactory/src/xnmenuadapter.cpp	Thu Jan 07 12:39:41 2010 +0200
@@ -71,8 +71,6 @@
 const TInt KXnMenuArrayGranularity   = 6;
 const TInt KWideScreenWidth          = 640;
 
-_LIT( KMskIconDialer, "#dialer");
-
 using namespace XnPropertyNames;
 
 static CXnNodePluginIf* FindChildL(CXnNodePluginIf& aNode, 
@@ -93,14 +91,11 @@
       iPreserveAspectRatio( EFalse ),            
       iUpdateAppearance( ETrue ),
       iOwnBitmaps( ETrue ),
-      iDefault( EFalse )
-#if 0 // MSK icon change
-	  ,
+      iDefault( EFalse ),
       iId( KAknsIIDQsnIconColors ),
       iBmpFile( NULL ),
       iBmp( 0 ),
       iBmpM( 0 )
-#endif // MSK icon change
         {
         }  
                               
@@ -129,10 +124,8 @@
         iImageOn = EFalse;        
         iInvertMask = EFalse;
         iPreserveAspectRatio = EFalse;
-#if 0 // MSK icon change
         delete iBmpFile;
         iBmpFile = NULL;
-#endif // MSK icon change
         }        
         
     CXnNodePluginIf* iNode;
@@ -147,12 +140,10 @@
     TBool            iUpdateAppearance;
     TBool            iOwnBitmaps;
     TBool            iDefault;
-#if 0 // MSK icon change
     TAknsItemID      iId;
     HBufC*           iBmpFile;
     TInt32           iBmp;
     TInt32           iBmpM;
-#endif // MSK icon change
     };
 
 
@@ -1104,7 +1095,6 @@
 //
 void CXnMenuAdapter::SetSoftkeyAppearanceL( CXnSoftkeyItem& aItem )
     {
-#if 0 // MSK icon change
     if( IsNodeVisibleL( *aItem.iNode) )
         {
         if( aItem.iImageOn )
@@ -1129,54 +1119,6 @@
             }
         }
     }
-#else // MSK icon change
-    if( IsNodeVisibleL( *aItem.iNode) )
-        {
-        if( aItem.iPosition == CEikButtonGroupContainer::ELeftSoftkeyPosition 
-            || aItem.iPosition == CEikButtonGroupContainer::ERightSoftkeyPosition)
-            {
-            if(aItem.iImageOn)
-                {
-                ChangeSoftkeyImageL(aItem);
-                }
-            else if(aItem.iLabel)// change label
-                {
-                TBool left(EFalse);
-                if(aItem.iPosition == CEikButtonGroupContainer::ELeftSoftkeyPosition)
-                    {
-                    left = ETrue;
-                    }
-                EikSoftkeyImage::SetLabel( iContainer,left );
-                iContainer->SetCommandL( aItem.iPosition, aItem.iCommandId, *aItem.iLabel );
-                
-                }
-                                   
-            }
-        else if(aItem.iPosition == CEikButtonGroupContainer::EMiddleSoftkeyPosition)   
-            {
-            if( aItem.iLabel )
-                {
-                // Msk will have predefined image based on command id                                                            
-                if( *aItem.iLabel == menu::KMSKDotImage16 )
-                    {
-                    aItem.iCommandId = KCBACommandFirst;
-                    }                                           
-                else if(*aItem.iLabel == KMskIconDialer)
-                    {
-#ifndef _AVKON_CBA_LSC                    
-                    aItem.iCommandId = EAknSoftkeyDialler;
-#endif                    
-                    }
-                else
-                    {
-                    aItem.iCommandId = KCBACommandMiddle;
-                    }
-                iContainer->SetCommandL( aItem.iPosition, aItem.iCommandId, *aItem.iLabel );
-                }
-            }
-        }
-    }
-#endif // MSK icon change
 
 // -----------------------------------------------------------------------------
 // CXnMenuAdapter::InitSoftkeyItemsL
@@ -1220,13 +1162,11 @@
     // No layout calulations needed
     node->SetLayoutCapable( EFalse );                                                                 
 
-#if 0 // MSK icon change
     if ( aItem.iPosition == CEikButtonGroupContainer::EMiddleSoftkeyPosition )
         {
         aItem.iImageOn = ETrue;
         return;
         }
-#endif // MSK icon change
 
     CXnProperty* pathProp( node->PathL() );
     if( pathProp )
@@ -1778,6 +1718,9 @@
 //
 void CXnMenuAdapter::SetContainerL( CEikButtonGroupContainer& aContainer )
     {
+    
+    User::LeaveIfNull( &aContainer );
+    
     TBool updateNeeded( EFalse );
     
     TInt statusPaneId( iAvkonAppUi->StatusPane()->CurrentLayoutResId() );
@@ -1985,7 +1928,6 @@
         }
     }
 
-#if 0 // MSK icon change
 // -----------------------------------------------------------------------------
 // CXnMenuAdapter::SetSoftKeyImageL
 // 
@@ -2039,7 +1981,6 @@
         softkey->iNode->SetDirtyL();
         }
     }
-#endif // MSK icon change
 
 // -----------------------------------------------------------------------------
 // CXnMenuAdapter::SetSoftKeyTextL
@@ -2422,11 +2363,9 @@
 //
 void CXnMenuAdapter::ChangeSoftkeyImageL(const CXnSoftkeyItem& aSoftkey)
     {
-#if 0 // MSK icon change
     if ( aSoftkey.iPosition == CEikButtonGroupContainer::ELeftSoftkeyPosition || 
             aSoftkey.iPosition == CEikButtonGroupContainer::ERightSoftkeyPosition )
         {
-#endif // MSK icon change
         TSize size;
         if(AknLayoutUtils::PenEnabled())
             {
@@ -2444,8 +2383,7 @@
             {
             left = EFalse;
             }
-        EikSoftkeyImage::SetImage( iContainer, *image, left );                        
-#if 0 // MSK icon change
+        EikSoftkeyImage::SetImage( iContainer, *image, left );
         }
     else if ( aSoftkey.iBmpFile )
         {
@@ -2460,7 +2398,6 @@
                 ETrue );
         cba->DrawNow();
         }
-#endif // MSK icon change
     }
 
 // ---------------------------------------------------------------------------
@@ -2626,17 +2563,11 @@
         softkey->iImageOn = EFalse;
         softkey->iLabel = FindSoftkeyLabelL(aNode);        
         }
-#if 0 // MSK icon change
     else
        {
        InitSoftkeyItemImageL( *softkey );
        }
-#else // MSK icon change
-    else if(softkey->iPosition != CEikButtonGroupContainer::EMiddleSoftkeyPosition)
-       { // we can't set own image to middle softkey
-       InitSoftkeyItemImageL( *softkey );
-       }
-#endif // MSK icon change
+
     softkey->iUpdateAppearance = ETrue;
     iSoftkeyItems.AppendL(softkey);
     CleanupStack::Pop(softkey);
--- a/idlehomescreen/xmluirendering/renderingplugins/xnnewstickerfactory/src/xnnewstickercontrol.cpp	Thu Dec 17 08:40:49 2009 +0200
+++ b/idlehomescreen/xmluirendering/renderingplugins/xnnewstickerfactory/src/xnnewstickercontrol.cpp	Thu Jan 07 12:39:41 2010 +0200
@@ -422,7 +422,7 @@
 //
 const TDesC& CXnNewstickerControl::Title(TInt aIndex)
     {
-    if (aIndex < 0 || aIndex > iTitles.Count())
+    if (aIndex < 0 || aIndex >= iTitles.Count())
         {
         return KNullDesC;
         }
@@ -513,6 +513,11 @@
 //
 const TDesC8& CXnNewstickerControl::CurrentSvgTitle()
     {
+    if ( iFirstDrawingTitleIndex < 0 || iFirstDrawingTitleIndex >= iTitles.Count() )
+        {
+        return KNullDesC8;
+        }
+    
     CTitleData* title = iTitles[iFirstDrawingTitleIndex];
     //  Is it SVG title
     if (title->IsSvgTitle())
@@ -787,7 +792,7 @@
         return;
         }
     iFirstDrawingTitleIndex = GetNextTitleWithContent( iFirstDrawingTitleIndex );
-    if ( iFirstDrawingTitleIndex < 0 )
+    if ( iFirstDrawingTitleIndex < 0 || iFirstDrawingTitleIndex >= iTitles.Count() )
         {
         return;
         }
@@ -938,6 +943,10 @@
         {
         return;
         }
+    if ( iFirstDrawingTitleIndex < 0 || iFirstDrawingTitleIndex >= iTitles.Count() )
+        {
+        return;
+        }
     if (iTitles[iFirstDrawingTitleIndex]->IsSvgTitle())
         {
         //  Show SVG title
@@ -1086,7 +1095,8 @@
 void CXnNewstickerControl::DoScrollL()
     {
     //  If there are no titles, don't do anything.
-    if( !IsVisibleTitles() || iFirstDrawingTitleIndex < 0 )
+    if( !IsVisibleTitles() || iFirstDrawingTitleIndex < 0 || 
+            iFirstDrawingTitleIndex >= iTitles.Count() )
         {
         return;
         }
@@ -1317,7 +1327,7 @@
         const TInt count = iTitles.Count();
         TInt textWidth=0;
         const TInt rectWidth = iContentRect.Width();
-        if( iCurrentTitleIndex < count )
+        if( iCurrentTitleIndex >= 0 && iCurrentTitleIndex < count )
             {
             textWidth = iTitles[iCurrentTitleIndex]->TitleTextLengthInPixels();
             }
--- a/idlehomescreen/xmluirendering/renderingplugins/xnnppluginfactory/inc/xnnpplugincontroladapter.h	Thu Dec 17 08:40:49 2009 +0200
+++ b/idlehomescreen/xmluirendering/renderingplugins/xnnppluginfactory/inc/xnnpplugincontroladapter.h	Thu Jan 07 12:39:41 2010 +0200
@@ -21,7 +21,7 @@
 #define CPLUGINCONTROLADAPTER_H
 
 //  INCLUDES
-#include <PluginAdapterInterface.h>
+#include <pluginadapterinterface.h>
 
 // CLASS DECLARATION
 
--- a/idlehomescreen/xmluirendering/renderingplugins/xnnppluginfactory/src/xnnppluginhandler.cpp	Thu Dec 17 08:40:49 2009 +0200
+++ b/idlehomescreen/xmluirendering/renderingplugins/xnnppluginfactory/src/xnnppluginhandler.cpp	Thu Jan 07 12:39:41 2010 +0200
@@ -20,7 +20,7 @@
 // INCLUDE FILES
 #include    "xnnppluginhandler.h"
 #include    <ecom/implementationinformation.h>
-#include    <CEcomBrowserPluginInterface.h>
+#include    <cecombrowserplugininterface.h>
 
 // ============================= LOCAL FUNCTIONS ===============================
 
--- a/idlehomescreen/xmluirendering/renderingplugins/xntexteditorfactory/src/xntexteditorpublisher.cpp	Thu Dec 17 08:40:49 2009 +0200
+++ b/idlehomescreen/xmluirendering/renderingplugins/xntexteditorfactory/src/xntexteditorpublisher.cpp	Thu Jan 07 12:39:41 2010 +0200
@@ -18,9 +18,9 @@
 #include "xntexteditorpublisher.h"
 
 #include "xntexteditoradapter.h"
-#include <LiwServiceHandler.h>
-#include <LiwVariant.h>
-#include <LiwGenericParam.h>
+#include <liwservicehandler.h>
+#include <liwvariant.h>
+#include <liwgenericparam.h>
 #include <eikedwin.h>
 #include <eikedwin.h>
 #include <utf.h> 
--- a/idlehomescreen/xmluirendering/renderingplugins/xnvolumecontrolfactory/src/xnvolumecontroladapter.cpp	Thu Dec 17 08:40:49 2009 +0200
+++ b/idlehomescreen/xmluirendering/renderingplugins/xnvolumecontrolfactory/src/xnvolumecontroladapter.cpp	Thu Jan 07 12:39:41 2010 +0200
@@ -214,10 +214,24 @@
 void CXnVolumeControlAdapter::GetRangeL( TInt& aMinimumValue, TInt& aMaximumValue )
 	{
 	CXnProperty* minRange = iNode.GetPropertyL( XnPropertyNames::volumecontrol::KMinRange );
-	aMinimumValue = static_cast<TInt>( minRange->FloatValueL() );
+	if ( minRange )
+	    {
+	    aMinimumValue = static_cast<TInt>( minRange->FloatValueL() );
+	    }
+	else
+	    {
+	    aMinimumValue = 1;
+	    }
 	
 	CXnProperty* maxRange = iNode.GetPropertyL( XnPropertyNames::volumecontrol::KMaxRange );
-	aMaximumValue = static_cast<TInt>( maxRange->FloatValueL() );
+	if ( maxRange )
+	    {
+	    aMaximumValue = static_cast<TInt>( maxRange->FloatValueL() );
+	    }
+	else
+	    {
+	    aMaximumValue = aMinimumValue;
+	    }
 	}
 
 // -----------------------------------------------------------------------------
@@ -517,7 +531,12 @@
 TInt CXnVolumeControlAdapter::GetCurrentValueL()
 	{
 	CXnProperty* valueProperty = iNode.GetPropertyL( XnPropertyNames::action::KValue );
-    return static_cast<TInt>( valueProperty->FloatValueL() );    
+	TInt retVal( 1 );
+	if ( valueProperty )
+	    {
+	    retVal = static_cast<TInt>( valueProperty->FloatValueL() );
+	    }
+    return retVal;    
 	}
 	
 // ----------------------------------------------------------------------------
--- a/idlehomescreen/xmluirendering/uiengine/inc/xneditor.h	Thu Dec 17 08:40:49 2009 +0200
+++ b/idlehomescreen/xmluirendering/uiengine/inc/xneditor.h	Thu Jan 07 12:39:41 2010 +0200
@@ -37,6 +37,7 @@
 class CAknListQueryDialog;
 class CXnViewManager;
 class CXnViewData;
+class CRepository;
 
 namespace hspswrapper
     {
@@ -185,6 +186,14 @@
      */
     CHspsWrapper& HspsWrapper() const;
 
+    /**
+     * Retrives Id read from central repository.
+     * 
+     * @since S60 5.0
+	 * @return sucess or failure standard error code
+     */    
+    TInt IdFromCrep ( TDes8& aUid ) const;
+
 private:
     // from MHsContentController
     
@@ -296,6 +305,8 @@
     CXnNode* iTargetPlugin;
     /** Widgets visibility state */
     TBool iWidgetsVisibilityState;    
+    /** Central repository , to choose plugin, owned*/
+    CRepository* iRepository;
     };
 
 #endif // C_XNEDITOR_H
--- a/idlehomescreen/xmluirendering/uiengine/inc/xneffectmanager.h	Thu Dec 17 08:40:49 2009 +0200
+++ b/idlehomescreen/xmluirendering/uiengine/inc/xneffectmanager.h	Thu Jan 07 12:39:41 2010 +0200
@@ -94,14 +94,16 @@
     /**
      * Starts fullscreen effect.
      * @param aEffect effect data
+     * @return ETrue if effect started, otherwise EFalse
      */
-    void DoBeginFullscreenEffect( TXnEffect& aEffect );
+    TBool DoBeginFullscreenEffect( TXnEffect& aEffect );
 
     /**
      * Starts control effect.
      * @param aEffect effect data
+     * @return ETrue if effect started, otherwise EFalse
      */
-    void DoBeginControlEffect( TXnEffect& aEffect );
+    TBool DoBeginControlEffect( TXnEffect& aEffect );
     
     /**
      * Removes and destroys effect from effect list.
--- a/idlehomescreen/xmluirendering/uiengine/inc/xnplugindefs.h	Thu Dec 17 08:40:49 2009 +0200
+++ b/idlehomescreen/xmluirendering/uiengine/inc/xnplugindefs.h	Thu Jan 07 12:39:41 2010 +0200
@@ -67,7 +67,7 @@
 _LIT8( KDummy8, "empty" );
 
 // CPS constants
-_LIT( KTemplatedWidget, "ai3templatedwidget" );
+_LIT( KWRTTemplate, "ai3templatedwidget" );
 _LIT(  KPublisher16, "publisher" );
 _LIT8( KPublisher, "publisher" );
 _LIT8( KContentType, "content_type" );
@@ -93,6 +93,5 @@
 
 _LIT8( KWallpaper, "wallpaper" );
 _LIT8( KPath, "path" );
-_LIT8( KWRTTemplate, "ai3templatedwidget");
 
 #endif /* _XNPLUGINDEFS_H_ */
--- a/idlehomescreen/xmluirendering/uiengine/inc/xnscrollablecontroladapter.h	Thu Dec 17 08:40:49 2009 +0200
+++ b/idlehomescreen/xmluirendering/uiengine/inc/xnscrollablecontroladapter.h	Thu Jan 07 12:39:41 2010 +0200
@@ -18,24 +18,25 @@
 #ifndef __XNSCROLLABLECONTROLADAPTER_H__
 #define __XNSCROLLABLECONTROLADAPTER_H__
 
-//  INCLUDES
-#include "xncontroladapter.h"
+//  System includes
 #include <e32base.h>
+#include <coeccntx.h>
 #include <aknphysicsobserveriface.h>
-#include <coeccntx.h>
 
-// FORWARD DECLARATIONS
+// User includes
+#include "xncontroladapter.h"
+
+// Forward declarations
 class CXnNodePluginIf;
 class CXnUiEngine;
 class CXnNode;
 class CAknPhysics;
 
-
-// CLASS DECLARATION
+// Class declaration
 
 /**
 *  @ingroup group_xnlayoutengine
-*  Popup Control adapter interface class
+*  Scrollable Control adapter interface class
 *  @lib xnlayoutengine.lib
 *  @since Series 60 5.0
 */
@@ -224,6 +225,11 @@
          * True, if layout has been changed and engine needs to be reset.
          */          
         TBool               iLayoutChanged;
+
+        /**
+         * Direction
+         */                  
+        TInt                iDirection;
 	};
 
 #endif // __XNSCROLLABLECONTROLADAPTER_H__
--- a/idlehomescreen/xmluirendering/uiengine/inc/xnwidgetextensionadapter.h	Thu Dec 17 08:40:49 2009 +0200
+++ b/idlehomescreen/xmluirendering/uiengine/inc/xnwidgetextensionadapter.h	Thu Jan 07 12:39:41 2010 +0200
@@ -22,8 +22,6 @@
 #include "xncontroladapter.h"
 #include <e32base.h>
 
-#include "xncontroladapter.h"
-
 // Forward declarations
 class CXnAppUiAdapter;
 class CXnNode;
--- a/idlehomescreen/xmluirendering/uiengine/src/xncontroladapterimpl.cpp	Thu Dec 17 08:40:49 2009 +0200
+++ b/idlehomescreen/xmluirendering/uiengine/src/xncontroladapterimpl.cpp	Thu Jan 07 12:39:41 2010 +0200
@@ -3064,10 +3064,15 @@
     CFbsBitmap* returnValue = NULL;
     CFbsBitmap* bitmapMask = NULL;
 
+    if ( !pathProperty )
+        {
+        return NULL;
+        }
+    
     CXnDomList& propertyValueList = pathProperty->Property()->PropertyValueList();
     TInt count = propertyValueList.Length();
 
-    for ( TInt i = 0; i < propertyValueList.Length(); ++i )
+    for ( TInt i = 0; i < count; ++i )
         {
         CXnDomPropertyValue* value = static_cast< CXnDomPropertyValue* >(
             propertyValueList.Item( i ) );
@@ -3093,53 +3098,56 @@
             }
        else if ( value->PrimitiveValueType() == CXnDomPropertyValue::EPercentage )
             {
-            CXnDomPropertyValue* tmpValue = NULL;
-            tmpValue = value->CloneL();
-            CXnProperty* tmpProperty = NULL;
-            CleanupStack::PushL( tmpValue );
-            tmpProperty = CXnProperty::NewL(
-                KNullDesC8,
-                tmpValue,
-                aNode.UiEngine()->ODT()->DomDocument().StringPool() );
-            CleanupStack::Pop( tmpValue );
-            TSize imageSize = returnValue->SizeInPixels();
-            CleanupStack::PushL( tmpProperty );
-            TInt intValue = static_cast< TInt >( value->FloatValueL() );
-            TInt dividerValue = 0;
-
-            switch ( i )
+            if ( returnValue )
                 {
-                case 1:
+                CXnDomPropertyValue* tmpValue = NULL;
+                tmpValue = value->CloneL();
+                CXnProperty* tmpProperty = NULL;
+                CleanupStack::PushL( tmpValue );
+                tmpProperty = CXnProperty::NewL(
+                    KNullDesC8,
+                    tmpValue,
+                    aNode.UiEngine()->ODT()->DomDocument().StringPool() );
+                CleanupStack::Pop( tmpValue );
+                TSize imageSize = returnValue->SizeInPixels();
+                CleanupStack::PushL( tmpProperty );
+                TInt intValue = static_cast< TInt >( value->FloatValueL() );
+                TInt dividerValue = 0;
+    
+                switch ( i )
                     {
-                    dividerValue = aNode.UiEngine()->VerticalPixelValueL(
-                        tmpProperty, imageSize.iHeight );
-                    aBorderBitmapDividerTop = dividerValue;
-                    break;
+                    case 1:
+                        {
+                        dividerValue = aNode.UiEngine()->VerticalPixelValueL(
+                            tmpProperty, imageSize.iHeight );
+                        aBorderBitmapDividerTop = dividerValue;
+                        break;
+                        }
+                    case 2:
+                        {
+                        dividerValue = aNode.UiEngine()->HorizontalPixelValueL(
+                            tmpProperty, imageSize.iWidth );
+                        aBorderBitmapDividerRight = dividerValue;
+                        break;
+                        }
+                    case 3:
+                        {
+                        dividerValue = aNode.UiEngine()->VerticalPixelValueL(
+                            tmpProperty, imageSize.iHeight );
+                        aBorderBitmapDividerBottom = dividerValue;
+                        break;
+                        }
+                    case 4:
+                        {
+                        dividerValue = aNode.UiEngine()->HorizontalPixelValueL(
+                            tmpProperty, imageSize.iWidth );
+                        aBorderBitmapDividerLeft = dividerValue;
+                        break;
+                        }
                     }
-                case 2:
-                    {
-                    dividerValue = aNode.UiEngine()->HorizontalPixelValueL(
-                        tmpProperty, imageSize.iWidth );
-                    aBorderBitmapDividerRight = dividerValue;
-                    break;
-                    }
-                case 3:
-                    {
-                    dividerValue = aNode.UiEngine()->VerticalPixelValueL(
-                        tmpProperty, imageSize.iHeight );
-                    aBorderBitmapDividerBottom = dividerValue;
-                    break;
-                    }
-                case 4:
-                    {
-                    dividerValue = aNode.UiEngine()->HorizontalPixelValueL(
-                        tmpProperty, imageSize.iWidth );
-                    aBorderBitmapDividerLeft = dividerValue;
-                    break;
-                    }
+    
+                CleanupStack::PopAndDestroy( tmpProperty );
                 }
-
-            CleanupStack::PopAndDestroy( tmpProperty );
             }
        else if ( value->PrimitiveValueType() == CXnDomPropertyValue::EString ||
                  value->PrimitiveValueType() == CXnDomPropertyValue::EIdent )
--- a/idlehomescreen/xmluirendering/uiengine/src/xneditor.cpp	Thu Dec 17 08:40:49 2009 +0200
+++ b/idlehomescreen/xmluirendering/uiengine/src/xneditor.cpp	Thu Jan 07 12:39:41 2010 +0200
@@ -28,6 +28,7 @@
 #include <xnuiengine.rsg>
 #include <hscontentcontrolui.h>
 #include <hscontentcontrol.h>
+#include <activeidle2domaincrkeys.h>
 
 // User includes
 #include "xnuiengine.h"
@@ -80,12 +81,14 @@
 _LIT8( KSingle, "single" );
 _LIT8( KMulti, "multi" );
 
-_LIT8( KWMUi, "WmContentControlUI" );
 
 const TInt32 KMultiInstanceUnlimitedValue = -1;
-const TInt32 KMultiInstanceHiddenValue = 0;
 
 const TUid KDummyUid = { 0x0000000 };
+
+const TUint32 KAICCPluginUIDKey = 0x00003010;
+const TInt32 KOpaQDataLen = 10;
+
 enum
     {
     ECanBeAdded = 0x01,
@@ -307,6 +310,7 @@
     {
     iCpsWrapper = CCpsWrapper::NewL( *this );
     iHspsWrapper = CHspsWrapper::NewL( aUid, this );
+    iRepository= CRepository::NewL( TUid::Uid( KCRUidActiveIdleLV ) );
     }
 
 // ---------------------------------------------------------------------------
@@ -320,6 +324,7 @@
     delete iCpsWrapper;
     delete iHspsWrapper;
     delete iPublisherMap;
+    delete iRepository;
     }
 
 // -----------------------------------------------------------------------------
@@ -617,14 +622,26 @@
     }
 
 // ---------------------------------------------------------------------------
+// CXnEditor::IdFromCrep
+// ---------------------------------------------------------------------------
+//
+TInt CXnEditor::IdFromCrep (TDes8& aUid) const
+    {
+    return iRepository->Get( KAICCPluginUIDKey, aUid );
+    }
+
 // CXnEditor::AddWidgetL
 // ---------------------------------------------------------------------------
 //
 void CXnEditor::AddWidgetL()
     {
-    MHsContentControlUi* ui( 
-        iViewManager.AppUiAdapter().HsContentController( KWMUi ) ); 
-                                                
+    TBuf8<KOpaQDataLen> oPaqDataStr;
+           
+    MHsContentControlUi* ui( NULL );
+    if ( IdFromCrep ( oPaqDataStr ) == KErrNone )
+        {
+        ui = iViewManager.AppUiAdapter().HsContentController( oPaqDataStr ); 
+        }
     if( ui )
         {
         ui->SetContentController( this );
@@ -1517,9 +1534,13 @@
 //
 void CXnEditor::WidgetListChanged()
     {
-    MHsContentControlUi* ui( 
-        iViewManager.AppUiAdapter().HsContentController( KWMUi ) );
-            
+    TBuf8<KOpaQDataLen> oPaqDataStr;
+              
+   MHsContentControlUi* ui( NULL );
+   if ( IdFromCrep ( oPaqDataStr ) == KErrNone )
+       {
+       ui = iViewManager.AppUiAdapter().HsContentController( oPaqDataStr ); 
+       }
     if( ui )
         {
         ui->NotifyWidgetListChanged();
@@ -1537,9 +1558,13 @@
 //
 void CXnEditor::ViewListChanged()
     {
-    MHsContentControlUi* ui( 
-        iViewManager.AppUiAdapter().HsContentController( KWMUi ) );
-            
+    TBuf8<KOpaQDataLen> oPaqDataStr;
+              
+   MHsContentControlUi* ui( NULL );
+   if ( IdFromCrep ( oPaqDataStr ) == KErrNone )
+       {
+       ui = iViewManager.AppUiAdapter().HsContentController( oPaqDataStr ); 
+       }
     if( ui )
         {
         ui->NotifyViewListChanged();
--- a/idlehomescreen/xmluirendering/uiengine/src/xneffectmanager.cpp	Thu Dec 17 08:40:49 2009 +0200
+++ b/idlehomescreen/xmluirendering/uiengine/src/xneffectmanager.cpp	Thu Jan 07 12:39:41 2010 +0200
@@ -156,7 +156,6 @@
     {
     for ( TInt i = 0; i < iEffects.Count(); )
         {
-        TInt count = iEffects.Count(); // for debugging
         TXnEffect* effect = iEffects[i];
         if ( effect && effect->iState == KEffectStarted )
             {
@@ -183,9 +182,9 @@
 //
 void CXnEffectManager::UiLayouted()
     {
-    TInt count = iEffects.Count();
-    for ( TInt i = 0; i < count; i++ )
+    for ( TInt i = 0; i < iEffects.Count(); )
         {
+        TBool effectStarted = ETrue;
         TXnEffect* effect = iEffects[i];
         if ( effect && effect->iNode &&
              effect->iState == KWaitForLayout &&
@@ -193,13 +192,23 @@
             {
             if ( effect->iType == KEffectTypeFullscreen )
                 {
-                DoBeginFullscreenEffect( *effect );
+                effectStarted = DoBeginFullscreenEffect( *effect );
                 }
             else if ( effect->iType == KEffectTypeControl )
                 {
-                DoBeginControlEffect( *effect );
+                effectStarted = DoBeginControlEffect( *effect );
                 }
             }
+        
+        if ( effectStarted )
+            {
+            i++;
+            }
+        else
+            {
+            // effect cannot be started, remove it
+            RemoveEffect( effect );
+            }
         }
     }
 
@@ -207,7 +216,7 @@
 // CXnEffectManager::DoBeginFullscreenEffect
 // -----------------------------------------------------------------------------
 //
-void CXnEffectManager::DoBeginFullscreenEffect( TXnEffect& aEffect )
+TBool CXnEffectManager::DoBeginFullscreenEffect( TXnEffect& aEffect )
     {
     CCoeEnv* coe( CCoeEnv::Static() );
            
@@ -215,8 +224,7 @@
          coe->RootWin().Identifier() )
         {
         // Window group is not focused
-        RemoveEffect( &aEffect );
-        return;
+        return EFalse;
         }
 
     const TInt flags( AknTransEffect::TParameter::EActivateExplicitCancel );
@@ -228,22 +236,23 @@
         targetAppUid, flags ) );
     
     aEffect.iState = KEffectStarted;
+    return ETrue;
     }
 
 // -----------------------------------------------------------------------------
 // CXnEffectManager::DoBeginControlEffect
 // -----------------------------------------------------------------------------
 //
-void CXnEffectManager::DoBeginControlEffect( TXnEffect& aEffect )
+TBool CXnEffectManager::DoBeginControlEffect( TXnEffect& aEffect )
     {
+    TBool ret = EFalse;
     CCoeEnv* coe( CCoeEnv::Static() );
            
     if ( coe->WsSession().GetFocusWindowGroup() != 
          coe->RootWin().Identifier() )
         {
         // Window group is not focused
-        RemoveEffect( &aEffect );
-        return;
+        return ret;
         }
 
     // Set effect begin point
@@ -251,11 +260,10 @@
         {
         GfxTransEffect::Begin( aEffect.iNode->Control() , aEffect.iId );
         aEffect.iState = KEffectStarted;
+        ret = ETrue;
         }
-    else
-        {
-        RemoveEffect( &aEffect );
-        }
+    
+    return ret;
     }
 
 // -----------------------------------------------------------------------------
--- a/idlehomescreen/xmluirendering/uiengine/src/xnkeyeventdispatcher.cpp	Thu Dec 17 08:40:49 2009 +0200
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnkeyeventdispatcher.cpp	Thu Jan 07 12:39:41 2010 +0200
@@ -596,28 +596,8 @@
 // -----------------------------------------------------------------------------
 //
 void CXnKeyEventDispatcher::NotifyWidgetAdditionL(
-    const CXnPluginData& aPluginData )
+    const CXnPluginData& /*aPluginData*/ )
     {
-    if ( aPluginData.Active() )
-        {               
-        iUiEngine.AppUiAdapter().ShowFocus();
-        
-        RPointerArray< CXnNode > initial;
-        CleanupClosePushL( initial );
-        
-        if ( iUiEngine.IsEditMode() )
-            {
-            initial.AppendL( aPluginData.Owner()->LayoutNode() );
-            }
-        else
-            {
-            aPluginData.InitialFocusNodesL( initial );
-            }
-        
-        SetInitialFocusL( initial );
-        
-        CleanupStack::PopAndDestroy( &initial );
-        }
     }
 
 // -----------------------------------------------------------------------------
--- a/idlehomescreen/xmluirendering/uiengine/src/xnnodeimpl.cpp	Thu Dec 17 08:40:49 2009 +0200
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnnodeimpl.cpp	Thu Jan 07 12:39:41 2010 +0200
@@ -2331,6 +2331,10 @@
             attrs.FindByName( XnPropertyNames::action::KName ) );
         CXnDomAttribute* valueAttribute = static_cast< CXnDomAttribute* >(
             attrs.FindByName( XnPropertyNames::action::KValue ) );
+        if ( !nameAttribute || !valueAttribute )
+            {
+            continue;
+            }
         if ( nameAttribute->Value() ==
              XnPropertyNames::action::trigger::name::keyevent::KEventType )
             {
@@ -2522,6 +2526,10 @@
             attrs.FindByName( XnPropertyNames::action::KName ) );
         CXnDomAttribute* valueAttribute = static_cast< CXnDomAttribute* >(
             attrs.FindByName( XnPropertyNames::action::KValue ) );
+        if ( !nameAttribute || !valueAttribute )
+            {
+            continue;
+            }
         if ( nameAttribute->Value() ==
              XnPropertyNames::action::trigger::name::stylus::KStylusState )
             {
@@ -2677,6 +2685,11 @@
                 CXnDomAttribute* valueAttribute = static_cast< CXnDomAttribute* >(
                     attrs.FindByName( XnPropertyNames::action::KValue ) );
 
+                if ( !nameAttribute || !valueAttribute )
+                    {
+                    return EFalse;
+                    }
+                
                 const TDesC8& name = nameAttribute->Value();
 
                 // check that eventype name matches
@@ -7520,17 +7533,7 @@
 
                 if ( popup )
                     {
-                    if ( aSource == XnEventSource::EStylus )
-                        {
-                        const TTimeIntervalMicroSeconds32 delay( 0 );                       
-                        const TTimeIntervalMicroSeconds32 display( 1000 * 1000 * 6 );                                                
-                        
-                        popup->ShowPopupL( aRect, delay, display );
-                        }
-                    else
-                        {
-                        popup->ShowPopupL( aRect );
-                        }                    
+                    popup->ShowPopupL( aRect );
                     }
                 }
             }
--- a/idlehomescreen/xmluirendering/uiengine/src/xnscrollablecontroladapter.cpp	Thu Dec 17 08:40:49 2009 +0200
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnscrollablecontroladapter.cpp	Thu Jan 07 12:39:41 2010 +0200
@@ -36,6 +36,11 @@
 _LIT8(KViewportWidth, "viewport-width");
 _LIT8(KViewportTop, "viewport-top");
 _LIT8(KViewportLeft, "viewport-left");
+_LIT8(KScrollDirection, "scroll-direction");                         
+_LIT8(KHorizontal, "horizontal");
+
+const TInt EVertical( 0 );
+const TInt EHorizontal( 1 );
 
 // ============================ MEMBER FUNCTIONS ===============================
 
@@ -90,6 +95,16 @@
     iUiEngine = iNode.Node().UiEngine();
     
     iNode.Node().SetScrollableControl( this );
+    
+    // Default
+    iDirection = EVertical;
+    
+    CXnProperty* prop( iNode.GetPropertyL( KScrollDirection ) );
+    
+    if ( prop && prop->StringValue() == KHorizontal )
+        {
+        iDirection = EHorizontal;
+        }    
     }
 
 // -----------------------------------------------------------------------------
@@ -104,7 +119,9 @@
         {
         return;
         }
-    TPoint stylusPos = aPointerEvent.iPosition;   
+    
+    TPoint stylusPos( aPointerEvent.iPosition );
+    
     switch( aPointerEvent.iType )
         {
         case TPointerEvent::EButton1Down:
@@ -118,17 +135,20 @@
             }
             break;            
         case TPointerEvent::EButton1Up:
-            {
-            TInt distance = iStartPosition.iY - stylusPos.iY;
-            TPoint drag( 0, distance );
-            iPhysics->StartPhysics( drag, iStartTime );
+            {                                                        
+            TInt distanceY( iStartPosition.iY - stylusPos.iY );                                              
+            TInt distanceX( iStartPosition.iX - stylusPos.iX );
+            
+            TPoint drag( distanceX, distanceY );
+            iPhysics->StartPhysics( drag, iStartTime );                                
             }
             break; 
         case TPointerEvent::EDrag:        
             {
             TPoint distanceFromStart( iStartPosition - stylusPos );
 
-            if( Abs( distanceFromStart.iY ) > KOffset )                 
+            if( ( Abs( distanceFromStart.iY ) > KOffset && iDirection == EVertical ) || 
+                ( Abs( distanceFromStart.iX ) > KOffset && iDirection == EHorizontal ) )                 
                 {
                 CXnNode* focused( iUiEngine->FocusedNode() );
                 
@@ -142,8 +162,12 @@
                 }
             
             TInt deltaY( iStylusPosition.iY - stylusPos.iY );
+            TInt deltaX( iStylusPosition.iX - stylusPos.iX );
+            
             iStylusPosition = stylusPos;
-            TPoint deltaPoint( 0, deltaY );
+            
+            TPoint deltaPoint( deltaX, deltaY );
+            
             iPhysics->RegisterPanningPosition( deltaPoint );
             }
             break;
@@ -161,7 +185,7 @@
 //    
 void CXnScrollableControlAdapter::Draw( const TRect& aRect ) const
     {
-    CXnControlAdapter::Draw( aRect );    
+    CXnControlAdapter::Draw( aRect );           
     }
 
 // -----------------------------------------------------------------------------
@@ -248,20 +272,44 @@
 // -----------------------------------------------------------------------------
 void CXnScrollableControlAdapter::ShowItem( CXnNode& aNode )
     {
-    TRect rect = aNode.MarginRect();
+    TRect rect( aNode.MarginRect() );
+    
     if( !iViewPort.Contains( rect.iTl ) || !iViewPort.Contains( rect.iBr ) )
         {
-        TInt delta( 0 );
-        if( rect.iTl.iY < iViewPort.iTl.iY )
-            {
-            delta = rect.iTl.iY - iViewPort.iTl.iY;
+        if ( iDirection == EVertical )
+            {                            
+            TInt delta( 0 );
+
+            if( rect.iTl.iY < iViewPort.iTl.iY )
+                {
+                delta = rect.iTl.iY - iViewPort.iTl.iY;
+                }
+            else if( rect.iBr.iY > iViewPort.iBr.iY )
+                {
+                delta = rect.iBr.iY - iViewPort.iBr.iY;
+                }
+            
+            TPoint newPosition( iPreviousPosition + TPoint( 0, delta ) );
+            
+            ViewPositionChanged( newPosition, ETrue, 0 );
             }
-        else if( rect.iBr.iY > iViewPort.iBr.iY )
+        else
             {
-            delta = rect.iBr.iY - iViewPort.iBr.iY;
+            TInt delta( 0 );
+            
+            if( rect.iTl.iX < iViewPort.iTl.iX )
+                {
+                delta = rect.iTl.iX - iViewPort.iTl.iX;
+                }
+            else if( rect.iBr.iX > iViewPort.iBr.iX )
+                {
+                delta = rect.iBr.iX - iViewPort.iBr.iX;
+                }
+            
+            TPoint newPosition( iPreviousPosition + TPoint( delta, 0 ) );
+            
+            ViewPositionChanged( newPosition, ETrue, 0 );            
             }
-        TPoint newPosition = iPreviousPosition + TPoint( 0, delta );
-        ViewPositionChanged( newPosition, ETrue, 0 );
         }
     }
 
@@ -286,7 +334,17 @@
 void CXnScrollableControlAdapter::ViewPositionChanged( 
     const TPoint& aNewPosition, TBool aDrawNow, TUint /*aFlags*/ )
     {
-    TPoint diff = TPoint( 0, aNewPosition.iY - iPreviousPosition.iY );
+    TPoint diff;
+    
+    if ( iDirection == EVertical )
+        {
+        diff = TPoint( 0, aNewPosition.iY - iPreviousPosition.iY );
+        }
+    else
+        {
+        diff = TPoint( aNewPosition.iX - iPreviousPosition.iX, 0 );
+        }
+    
     iPreviousPosition = aNewPosition;
     iCurrentPosition += diff;
     TPoint tmpPos = iNode.Control()->Position();
@@ -341,9 +399,21 @@
         return;
         }
     TSize viewPortSize = iViewPort.Size();
-    TSize totalSize( iNode.MarginRect().Size() );
-    iPhysics->InitPhysicsL( totalSize, viewPortSize, EFalse );
-    iCurrentPosition = TPoint( 0, viewPortSize.iHeight / 2 );  
+    TSize totalSize( iNode.Rect().Size() );
+    
+    if ( iDirection == EVertical )
+        {
+        iPhysics->InitPhysicsL( totalSize, viewPortSize, EFalse );
+        }
+    else
+        {
+        iPhysics->InitPhysicsL( totalSize, viewPortSize, ETrue );
+        }
+    
+    
+    iCurrentPosition = 
+        TPoint( viewPortSize.iWidth / 2, viewPortSize.iHeight / 2 ); 
+                  
     iPreviousPosition = iStartViewPosition =  iCurrentPosition;
     }
 
@@ -358,16 +428,18 @@
     TInt top( 0 );
     TInt left( 0 );
 
+    CXnNode& node( iNode.Node() );
+    
     // Width
     CXnProperty* prop = iNode.GetPropertyL( KViewportWidth );
     if( prop )
         {
         width = iUiEngine->HorizontalPixelValueL(
-            prop, iNode.MarginRect().Width() );
+            prop, iNode.Rect().Width() );
         }
     if( width == 0 )
         {
-        width = iNode.MarginRect().Width();
+        width = node.Parent()->Rect().Width();
         }
 
     // Height
@@ -375,11 +447,11 @@
     if( prop )
         {
         height = iUiEngine->VerticalPixelValueL(
-            prop, iNode.MarginRect().Height() );
+            prop, iNode.Rect().Height() );
         }
     if( height == 0 )
         {
-        height = iNode.MarginRect().Height();
+        height = node.Parent()->Rect().Height();
         }
 
     // Top
@@ -387,7 +459,7 @@
     if( prop )
         {
         top = iUiEngine->VerticalPixelValueL(
-            prop, iNode.MarginRect().Height() );
+            prop, iNode.Rect().Height() );
         }
 
     // Left
@@ -395,10 +467,10 @@
     if( prop )
         {
         left = iUiEngine->HorizontalPixelValueL(
-            prop, iNode.MarginRect().Width() );
+            prop, iNode.Rect().Width() );
         }
 
-    iViewPort = TRect( iNode.MarginRect().iTl, TSize( width, height ) );
+    iViewPort = TRect( iNode.Rect().iTl, TSize( width, height ) );
     iViewPort.Move( left, top );
     }
 
--- a/idlehomescreen/xmluirendering/uiengine/src/xnuiengineimpl.cpp	Thu Dec 17 08:40:49 2009 +0200
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnuiengineimpl.cpp	Thu Jan 07 12:39:41 2010 +0200
@@ -9247,111 +9247,115 @@
 //
 void CXnUiEngineImpl::AddToDirtyListL( CXnNode* aNode )
     {
-    CXnNode* nodeToRedrawList( aNode );
-    CXnNode* nodeToDirtyList( aNode );
-
-    if ( aNode == RootNode() )
-        {
-        // Force relayout and redraw from current view
-        iDirtyList.Reset();
-        iDirtyList.AppendL( iCurrentView );
-        TXnDirtyRegion* dirtyRegion = FindDirtyRegionL( *iCurrentView );
-        if( dirtyRegion )
-            {
-            dirtyRegion->iRegion.Clear();        
-            }
-        iLayoutControl |= XnLayoutControl::EViewDirty;
-        nodeToDirtyList = nodeToRedrawList = iCurrentView;
-        nodeToDirtyList->ClearRenderedAndLaidOut();
-
-        // Add to draw list for redraw
-        AddToRedrawListL( nodeToRedrawList );
-        }
-    else
-        {
-        if ( !IsAbsoluteL( *aNode ) && !IsNodeTooltip( *aNode ) )
-            {
-            // Check adaptives in normal flow
-            CXnNode* oldest( NULL );
-            CXnNode* adaptive( aNode );
-
-            if ( !aNode->IsAdaptive( ETrue ) )
-                {
-                adaptive = aNode->Parent();
-                }
-
-            for ( ; adaptive && adaptive->IsAdaptive( ETrue );
-                adaptive = adaptive->Parent() )
-                {
-                oldest = adaptive;
-                }
-
-            // Now we have found the oldest adaptive node if present
-            if ( oldest )
-                {
-                nodeToRedrawList = nodeToDirtyList = adaptive;
-                }
-            }
-
-        RPointerArray< CXnNode > dirtyList;
-        CleanupClosePushL( dirtyList );
-        TInt count( iDirtyList.Count() );
-        TBool found;
-
-        // first, check that aNode's children are not in the dirty array
-        for ( TInt i = 0; i < count; ++i )
-            {
-            found = EFalse;
-            CXnNode* candidate( iDirtyList[i] );
-
-            for ( CXnNode* node = candidate->Parent(); node && !found;
-                node = node->Parent() )
-                {
-                if ( nodeToDirtyList == node )
-                    {
-                    found = ETrue;
-                    }
-                }
-
-            if ( !found )
-                {
-                // Put candidate back to list as child is not found
-                dirtyList.AppendL( candidate );
-                }
-            }
-
-        found = EFalse;
-
-        // second, check that aNode's parent is not in dirty array
-        for ( TInt i = 0; i < count && !found; ++i )
-            {
-            CXnNode* candidate( iDirtyList[i] );
-
-            for ( CXnNode* node = nodeToDirtyList; node && !found;
-                node = node->Parent() )
-                {
-                if ( node == candidate )
-                    {
-                    found = ETrue;
-                    }
-                }
-            }
-
-        if ( !found && iDirtyList.Find( nodeToDirtyList ) == KErrNotFound )
-            {
-            // Add node to dirty list as parent is neither found
-            dirtyList.AppendL( nodeToDirtyList );
+    
+    if ( aNode )
+        {
+        CXnNode* nodeToRedrawList( aNode );
+        CXnNode* nodeToDirtyList( aNode );
+    
+        if ( aNode == RootNode() )
+            {
+            // Force relayout and redraw from current view
+            iDirtyList.Reset();
+            iDirtyList.AppendL( iCurrentView );
+            TXnDirtyRegion* dirtyRegion = FindDirtyRegionL( *iCurrentView );
+            if( dirtyRegion )
+                {
+                dirtyRegion->iRegion.Clear();        
+                }
+            iLayoutControl |= XnLayoutControl::EViewDirty;
+            nodeToDirtyList = nodeToRedrawList = iCurrentView;
             nodeToDirtyList->ClearRenderedAndLaidOut();
-            
+    
             // Add to draw list for redraw
             AddToRedrawListL( nodeToRedrawList );
             }
-
-        // finally update the dirty list
-        iDirtyList.Reset();
-        iDirtyList = dirtyList;
-
-        CleanupStack::Pop( &dirtyList );
+        else
+            {
+            if ( !IsAbsoluteL( *aNode ) && !IsNodeTooltip( *aNode ) )
+                {
+                // Check adaptives in normal flow
+                CXnNode* oldest( NULL );
+                CXnNode* adaptive( aNode );
+    
+                if ( !aNode->IsAdaptive( ETrue ) )
+                    {
+                    adaptive = aNode->Parent();
+                    }
+    
+                for ( ; adaptive && adaptive->IsAdaptive( ETrue );
+                    adaptive = adaptive->Parent() )
+                    {
+                    oldest = adaptive;
+                    }
+    
+                // Now we have found the oldest adaptive node if present
+                if ( oldest )
+                    {
+                    nodeToRedrawList = nodeToDirtyList = adaptive;
+                    }
+                }
+    
+            RPointerArray< CXnNode > dirtyList;
+            CleanupClosePushL( dirtyList );
+            TInt count( iDirtyList.Count() );
+            TBool found;
+    
+            // first, check that aNode's children are not in the dirty array
+            for ( TInt i = 0; i < count; ++i )
+                {
+                found = EFalse;
+                CXnNode* candidate( iDirtyList[i] );
+    
+                for ( CXnNode* node = candidate->Parent(); node && !found;
+                    node = node->Parent() )
+                    {
+                    if ( nodeToDirtyList == node )
+                        {
+                        found = ETrue;
+                        }
+                    }
+    
+                if ( !found )
+                    {
+                    // Put candidate back to list as child is not found
+                    dirtyList.AppendL( candidate );
+                    }
+                }
+    
+            found = EFalse;
+    
+            // second, check that aNode's parent is not in dirty array
+            for ( TInt i = 0; i < count && !found; ++i )
+                {
+                CXnNode* candidate( iDirtyList[i] );
+    
+                for ( CXnNode* node = nodeToDirtyList; node && !found;
+                    node = node->Parent() )
+                    {
+                    if ( node == candidate )
+                        {
+                        found = ETrue;
+                        }
+                    }
+                }
+    
+            if ( !found && iDirtyList.Find( nodeToDirtyList ) == KErrNotFound )
+                {
+                // Add node to dirty list as parent is neither found
+                dirtyList.AppendL( nodeToDirtyList );
+                nodeToDirtyList->ClearRenderedAndLaidOut();
+                
+                // Add to draw list for redraw
+                AddToRedrawListL( nodeToRedrawList );
+                }
+    
+            // finally update the dirty list
+            iDirtyList.Reset();
+            iDirtyList = dirtyList;
+    
+            CleanupStack::Pop( &dirtyList );
+            }
         }
     }
 
--- a/idlehomescreen/xmluirendering/uiengine/src/xnviewmanager.cpp	Thu Dec 17 08:40:49 2009 +0200
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnviewmanager.cpp	Thu Jan 07 12:39:41 2010 +0200
@@ -23,10 +23,7 @@
 #include <xnuiengine.rsg>
 #include <aknnotewrappers.h>
 
-#if 0 // MSK icon change
 #include <AknsConstants.h>
-#include <avkon.mbg>
-#endif // MSK icon change
 
 // User includes
 #include "xnapplication.h"
@@ -56,9 +53,8 @@
 
 // Constants
 _LIT8( KEmptyWidgetUid, "0x2001f47f" );
-_LIT8( KViewSwitcherText, "switcher_text" );
 _LIT8( KStateError, "Error" );
-_LIT8( KMax, "max" );
+
 
 _LIT8( KTemplateViewUID, "0x20026f50" );
 
@@ -69,60 +65,9 @@
     EViewIsValid,       
     };
 
-const TInt KMinPages = 1;
 
-
-#if 0 // MSK icon change
-
-const TInt KIconIds[] = {
-        EMbmAvkonQgnQgn_home_page_11,
-        EMbmAvkonQgnQgn_home_page_21,
-        EMbmAvkonQgnQgn_home_page_22,
-        EMbmAvkonQgnQgn_home_page_31,
-        EMbmAvkonQgnQgn_home_page_32,
-        EMbmAvkonQgnQgn_home_page_33,
-        EMbmAvkonQgnQgn_home_page_41,
-        EMbmAvkonQgnQgn_home_page_42,
-        EMbmAvkonQgnQgn_home_page_43,
-        EMbmAvkonQgnQgn_home_page_44,
-        EMbmAvkonQgnQgn_home_page_51,
-        EMbmAvkonQgnQgn_home_page_52,
-        EMbmAvkonQgnQgn_home_page_53,
-        EMbmAvkonQgnQgn_home_page_54,
-        EMbmAvkonQgnQgn_home_page_55,
-        EMbmAvkonQgnQgn_home_page_61,
-        EMbmAvkonQgnQgn_home_page_62,
-        EMbmAvkonQgnQgn_home_page_63,
-        EMbmAvkonQgnQgn_home_page_64,
-        EMbmAvkonQgnQgn_home_page_65,
-        EMbmAvkonQgnQgn_home_page_66
-        };
-
-const TInt KMaskIds[] = {
-        EMbmAvkonQgnQgn_home_page_11_mask,
-        EMbmAvkonQgnQgn_home_page_21_mask,
-        EMbmAvkonQgnQgn_home_page_22_mask,
-        EMbmAvkonQgnQgn_home_page_31_mask,
-        EMbmAvkonQgnQgn_home_page_32_mask,
-        EMbmAvkonQgnQgn_home_page_33_mask,
-        EMbmAvkonQgnQgn_home_page_41_mask,
-        EMbmAvkonQgnQgn_home_page_42_mask,
-        EMbmAvkonQgnQgn_home_page_43_mask,
-        EMbmAvkonQgnQgn_home_page_44_mask,
-        EMbmAvkonQgnQgn_home_page_51_mask,
-        EMbmAvkonQgnQgn_home_page_52_mask,
-        EMbmAvkonQgnQgn_home_page_53_mask,
-        EMbmAvkonQgnQgn_home_page_54_mask,
-        EMbmAvkonQgnQgn_home_page_55_mask,
-        EMbmAvkonQgnQgn_home_page_61_mask,
-        EMbmAvkonQgnQgn_home_page_62_mask,
-        EMbmAvkonQgnQgn_home_page_63_mask,
-        EMbmAvkonQgnQgn_home_page_64_mask,
-        EMbmAvkonQgnQgn_home_page_65_mask,
-        EMbmAvkonQgnQgn_home_page_66_mask
-        };
-
-const TAknsItemID KSkinIds[] = {            
+/*
+const TAknsItemID KSkinIds[] = {
         KAknsIIDQgnHomePage11,
         KAknsIIDQgnHomePage21,
         KAknsIIDQgnHomePage22,
@@ -144,10 +89,8 @@
         KAknsIIDQgnHomePage64,
         KAknsIIDQgnHomePage65,
         KAknsIIDQgnHomePage66
-        };
-
-#endif // MSK icon change
-
+        }; 
+*/        
 
 // ============================ LOCAL FUNCTIONS ===============================
 
@@ -227,6 +170,129 @@
     CleanupStack::PopAndDestroy( 2, &nodes ); // &list                                                 
     }
 
+// -----------------------------------------------------------------------------
+// resolveIconId
+// -----------------------------------------------------------------------------
+//
+static TAknsItemID ResolveIconId( TInt aIndex )
+    {
+    TAknsItemID ret( KAknsIIDNone );
+    switch( aIndex )
+        {
+        case 0:
+            {
+            ret = KAknsIIDQgnHomePage11;
+            }
+            break;
+        case 1:
+            {
+            ret = KAknsIIDQgnHomePage21;
+            }
+            break;
+        case 2:
+            {
+            ret = KAknsIIDQgnHomePage22;
+            }
+            break;
+        case 3:
+            {
+            ret = KAknsIIDQgnHomePage31;
+            }
+            break;
+        case 4:
+            {
+            ret = KAknsIIDQgnHomePage32;
+            }     
+            break;
+        case 5:
+            {
+            ret = KAknsIIDQgnHomePage33;
+            }    
+            break;
+        case 6:
+            {
+            ret = KAknsIIDQgnHomePage41;
+            }
+            break;
+        case 7:
+            {
+            ret = KAknsIIDQgnHomePage42;
+            }   
+            break;
+        case 8:
+            {
+            ret = KAknsIIDQgnHomePage43;
+            }   
+            break;
+        case 9:
+            {
+            ret = KAknsIIDQgnHomePage44;
+            }     
+            break;
+        case 10:
+            {
+            ret = KAknsIIDQgnHomePage51;
+            }     
+            break;
+        case 11:
+            {
+            ret = KAknsIIDQgnHomePage52;
+            }     
+            break;
+        case 12:
+            {
+            ret = KAknsIIDQgnHomePage53;
+            } 
+            break;
+        case 13:
+            {
+            ret = KAknsIIDQgnHomePage54;
+            }     
+            break;
+        case 14:
+            {
+            ret = KAknsIIDQgnHomePage55;
+            }
+            break;
+        case 15:
+            {
+            ret = KAknsIIDQgnHomePage61;
+            }    
+            break;
+        case 16:
+            {
+            ret = KAknsIIDQgnHomePage62;
+            }   
+            break;
+        case 17:
+            {
+            ret = KAknsIIDQgnHomePage63;
+            }    
+            break;
+        case 18:
+            {
+            ret = KAknsIIDQgnHomePage64;
+            }
+            break;
+        case 19:
+            {
+            ret = KAknsIIDQgnHomePage65;
+            }
+            break;            
+        case 20:
+            {
+            ret = KAknsIIDQgnHomePage66;
+            }            
+            break;            
+        default:
+            {
+            }
+            break;
+        }
+    
+    return ret;
+    }
+
 // ============================ MEMBER FUNCTIONS ===============================
 
 // -----------------------------------------------------------------------------
@@ -1597,7 +1663,7 @@
 // -----------------------------------------------------------------------------
 //
 void CXnViewManager::UpdatePageManagementInformationL()
-    { 
+    {
     // Update MSK info
     // Obtain menu bar
     CXnNode* menuBar( iUiEngine->MenuBarNode() );
@@ -1610,50 +1676,28 @@
         
         if ( menuIf )
             {
-#if 0 // MSK icon change
             // Get count of views in array and index of actual view
             TInt count( ViewAmount() );
             TInt current( ViewIndex() + 1 );
 
             // Update MSK icon
+            /*
             TInt index = ResolveIconIndex( count, current );
             menuIf->SetSoftKeyImageL( KSkinIds[index],
-                                      AknIconUtils::AvkonIconFileName(), 
-                                      KIconIds[index],
-                                      KMaskIds[index],
+                                      KNullDesC, 
+                                      0,
+                                      0,
                                       XnMenuInterface::MXnMenuInterface::ECenter, 
                                       ETrue );
-
-#else // MSK icon change
-            // Get array of views
-            RPointerArray< CXnPluginData >& views( iRootData->PluginData() );
-            // Get count of views in array and index of actual view
-            TInt count( views.Count() );
-            TInt actual( views.Find( &ActiveViewData() ) + 1 );
-            
-            // Construct a text info
-            _LIT( KSeparator, "/" );
-            TBuf< 32 >info( KNullDesC );
-            
-            if ( AknLayoutUtils::LayoutMirrored() )
-                {
-                info.AppendNum( actual );
-                info.Append( KSeparator );
-                info.AppendNum( count );
-                }
-            else
-                {
-                info.AppendNum( actual );
-                info.Append( KSeparator );
-                info.AppendNum( count );
-                }
-      
-            AknTextUtils::LanguageSpecificNumberConversion( info );
-
-            // Update info
-            menuIf->SetSoftKeyTextL( info, 
-                XnMenuInterface::MXnMenuInterface::ECenter );
-#endif // MSK icon change
+            */
+            TInt index = ResolveIconIndex( count, current );
+            TAknsItemID iconId = ResolveIconId( index );
+            menuIf->SetSoftKeyImageL( iconId,
+                                      KNullDesC, 
+                                      0,
+                                      0,
+                                      XnMenuInterface::MXnMenuInterface::ECenter, 
+                                      ETrue );            
             }
         }
     }
@@ -1692,10 +1736,6 @@
     return iRootData->MaxPages();
     }
 
-
-#if 0 // MSK icon change
-
-
 // -----------------------------------------------------------------------------
 // CXnViewManager::ResolveIconIndex
 // 
@@ -1714,6 +1754,4 @@
 
     return index;
     }
-
-#endif // MSK icon change
 // End of file
--- a/layers.sysdef.xml	Thu Dec 17 08:40:49 2009 +0200
+++ b/layers.sysdef.xml	Thu Jan 07 12:39:41 2010 +0200
@@ -15,7 +15,7 @@
 
     <layer name="unit_test_layer">
       <module name="homescreen_unit_tests">
-         <unit unitID="hsdo.wmunit.test" mrp="" bldFile="&layer_real_source_path;/widgetmanager/tsrc/wmunittest/group" name="wmunit.test" />
+         <unit unitID="hsdo.wmunit.test" mrp="" bldFile="&layer_real_source_path;/idlehomescreen/widgetmanager/tsrc/wmunittest/group" name="wmunit.test" />
       </module>
     </layer>
 
--- a/menufw/hierarchynavigator/hnengine/inc/hncontrollerinterface.h	Thu Dec 17 08:40:49 2009 +0200
+++ b/menufw/hierarchynavigator/hnengine/inc/hncontrollerinterface.h	Thu Jan 07 12:39:41 2010 +0200
@@ -11,7 +11,7 @@
 *
 * Contributors:
 *
-* Description:  
+* Description:
 *
 */
 
@@ -21,11 +21,11 @@
 
 #include "hnsuiteobserver.h"
 
-class CLiwGenericParamList; 
+class CLiwGenericParamList;
 
 /**
  * @ingroup group_hnengine
- * User interface refresh type 
+ * User interface refresh type
  */
 enum THnUiRefreshType
     {
@@ -33,9 +33,6 @@
         ERefreshToolbar,
         EStartEditMode,
         EStopEditMode,
-        EZoomLarge,
-        EZoomSmall,
-        EZoomNormal,
         EForegroundGain,
         EBackgroundGain,
         ELightOn,
@@ -63,22 +60,22 @@
      * @param aRefreshType Defines reason for refresh.
      */
     virtual void NotifyUiRefreshL( const THnUiRefreshType aRefreshType ) = 0;
-    
+
     /**
      * Trigger appropriate action on suite model.
-     * 
+     *
      * @param aCustomSuiteEvent Event that is associated
      *                          with the lifecycle of a suite
      * @param aModel Suite model on that custom event should be performed.
      */
-    virtual void HandleSuiteEventL ( THnCustomSuiteEvent aCustomSuiteEvent, 
+    virtual void HandleSuiteEventL ( THnCustomSuiteEvent aCustomSuiteEvent,
             CHnSuiteModel *aModel ) = 0;
-    
+
     /**
      * Whenever an action for extension manager occurs it invokes
      * this method to execute one, passing the information needed
      * by extension manager about the action as a parameters.
-     * 
+     *
      * @param aUid UID of the ECom plugin's.
      * @param aCommand Command which has to be executed on the plugin.
      *                 Request to the Service.
--- a/menufw/hierarchynavigator/hnengine/src/hnengine.cpp	Thu Dec 17 08:40:49 2009 +0200
+++ b/menufw/hierarchynavigator/hnengine/src/hnengine.cpp	Thu Jan 07 12:39:41 2010 +0200
@@ -11,7 +11,7 @@
 *
 * Contributors:
 *
-* Description:  
+* Description:
 *
 */
 
@@ -19,7 +19,7 @@
 #include <uri8.h>
 #include <mmf/common/mmfcontrollerpluginresolver.h>
 #include <sacls.h>
-#include <apgtask.h> 
+#include <apgtask.h>
 #include <centralrepository.h>
 #include <AknUtils.h>
 
@@ -143,7 +143,7 @@
 //
 CHnSuiteModel* CHnEngine::GetLastSuiteModelL()
     {
-    return iSuiteContainer->GetLastSuiteModel(); 
+    return iSuiteContainer->GetLastSuiteModel();
     }
 
 // ---------------------------------------------------------------------------
@@ -152,14 +152,14 @@
 //
 CHnSuiteModel* CHnEngine::GetParentSuiteModelL()
     {
-    return iSuiteContainer->GetParentSuiteModel(); 
+    return iSuiteContainer->GetParentSuiteModel();
     }
 
 // ---------------------------------------------------------------------------
 //
 // ---------------------------------------------------------------------------
 //
-EXPORT_C TInt CHnEngine::TriggerHnEventL( const TInt aHnEventId, 
+EXPORT_C TInt CHnEngine::TriggerHnEventL( const TInt aHnEventId,
         const TInt aRecipientId, CLiwGenericParamList* aEventParameters )
     {
     TInt ret = iSuiteContainer->OfferHnEventL( aHnEventId, aRecipientId,
@@ -187,14 +187,14 @@
 //
 // ---------------------------------------------------------------------------
 //
-TInt CHnEngine::LoadSuiteFromUriL( const TDesC8& aSuiteName,  
+TInt CHnEngine::LoadSuiteFromUriL( const TDesC8& aSuiteName,
         const TDesC8& aUriQuery, const TDesC8& aUriFragment )
     {
     TInt error( KErrNone );
-    
+
     if( !( aSuiteName.Compare( KRoot8 ) ) )
         {
-        CLiwGenericParamList* uriParams = 
+        CLiwGenericParamList* uriParams =
 			UriQueryToLiwListLC( aUriQuery, aUriFragment, aSuiteName );
         CLiwGenericParamList* params = CLiwGenericParamList::NewLC();
         params->AppendL( iMetaDataModel->GetSuiteParameters( 0 ) );
@@ -211,15 +211,15 @@
 			UriQueryToLiwListLC( aUriQuery, aUriFragment, aSuiteName );
 
         HBufC* suiteName = HnConvUtils::Str8ToStrLC( aSuiteName );
-        params->AppendL( TLiwGenericParam( KNewSuiteParamNameEn, 
+        params->AppendL( TLiwGenericParam( KNewSuiteParamNameEn,
             TLiwVariant( *suiteName ) ) );
-        
+
         error = HandleNewSuiteLoadedEventL( *params );
-        
+
         CleanupStack::PopAndDestroy( suiteName );
         CleanupStack::PopAndDestroy( params );
         }
-    
+
     return error;
     }
 
@@ -255,7 +255,7 @@
         // set parameters
         iSuiteContainer->GetLastSuiteModel()->SetExitMode( EExitModeHide );
         }
-    
+
     CleanupStack::PopAndDestroy( params );
     CleanupStack::PopAndDestroy( &exitMode );
 
@@ -273,25 +273,25 @@
 	{
 	DEBUG(("_MM_:CHnEngine::LoadSuitesFromUriL IN"));
 	DEBUG8(("_MM_:\tURI: %S",&aUri));
-	
+
 	TBool consumed(EFalse);
-	
+
     if ( aUri.Find( KSetFocusWithPref ) != KErrNotFound )
 	    {
 	    LoadFromCrL( aUri );
 	    consumed = ETrue;
 	    }
-    
+
     if ( !consumed )
     	{
     	consumed = HandleActionL( aUri );
     	}
-    
+
     if ( !consumed )
     	{
     	LoadSuitesL( aUri );
     	}
-    
+
     DEBUG(("_MM_:CHnEngine::LoadSuitesFromUriL OUT"));
     }
 
@@ -303,10 +303,10 @@
                                 CLiwGenericParamList& aParams )
     {
     TInt ret(KErrNotFound);
-    
+
     if ( aEventName == KNewSuiteLoadedMdEvent )
         {
-        // This handles new suite creation, putting its visual model 
+        // This handles new suite creation, putting its visual model
         // onto the stack eventually.
         ret = HandleNewSuiteLoadedEventL( aParams );
         }
@@ -349,30 +349,12 @@
         // Stopping edit mode
         iControllerInterface.NotifyUiRefreshL( EStopEditMode );
         ret = KErrNone;
-        }    
+        }
     else if (aEventName == KSetFocusEvent )
         {
         // SetFocus
         ret = HandleSetFocusEventL( aParams );
         }
-    else if (aEventName == KZoomLarge )
-        {
-        // Stopping edit mode
-        iControllerInterface.NotifyUiRefreshL( EZoomLarge );
-        ret = KErrNone;
-        }
-    else if (aEventName == KZoomSmall)
-		{
-		// Stopping edit mode
-		iControllerInterface.NotifyUiRefreshL( EZoomSmall );
-		ret = KErrNone;
-		}
-    else if (aEventName == KZoomNormal )
-        {
-        // Stopping edit mode
-        iControllerInterface.NotifyUiRefreshL( EZoomNormal );
-        ret = KErrNone;
-        }   
     else if (aEventName == KAppGainForeground )
     	{
     	//force matrix gain foreground
@@ -387,7 +369,7 @@
         iControllerInterface.NotifyUiRefreshL( EBackgroundGain );
         ret = KErrNone;
     	}
-    
+
     return ret;
     }
 
@@ -395,10 +377,10 @@
 //
 // ---------------------------------------------------------------------------
 //
-TInt CHnEngine::HandleWidgetChangeL( 
+TInt CHnEngine::HandleWidgetChangeL(
         CLiwGenericParamList& aParams )
     {
-    THnSuiteWidgetType type = EChangeWidget;   
+    THnSuiteWidgetType type = EChangeWidget;
     TInt pos( 0 );
     const TLiwGenericParam* param = NULL;
     param = aParams.FindFirst( pos,  KWidgetTypeAttrName8 );
@@ -407,13 +389,13 @@
         TPtrC widgetType( KNullDesC );
         param->Value().Get( widgetType );
         if ( widgetType.Compare( KWidgetTypeList ) == 0 )
-            type = EListWidget; 
-        else if ( widgetType.Compare( KWidgetTypeGrid ) == 0 ) 
-            type = EGridWidget; 
+            type = EListWidget;
+        else if ( widgetType.Compare( KWidgetTypeGrid ) == 0 )
+            type = EGridWidget;
         else if ( widgetType.Compare( KWidgetTypeCoverFlow ) == 0 )
-            type = ECoverFlowWidget;  
+            type = ECoverFlowWidget;
         }
-  
+
     CHnSuiteModel* model  = iSuiteContainer->GetLastSuiteModel();
     return HandleWidgetChangeL( model->SuiteName(), type );
     }
@@ -424,16 +406,16 @@
 //
 TInt CHnEngine::HandleWidgetChangeL( const TDesC& aSuiteName,
         THnSuiteWidgetType aType )
-    {   
+    {
     DEBUG(("_MM_:CMatrixMenuAppUi::HandleWidgetChangeL IN"));
     TInt ret( KErrGeneral );
-    
+
     CHnRepositoryManager* rep = CHnRepositoryManager::NewLC();
     THnSuiteWidgetType type( EUnspecified );
     TInt err( rep->ReadSuiteWidgetTypeL( aSuiteName, type ) );
-    
+
     if( ( !err || err == KErrNotFound ) && type != EUnspecified )
-        {  
+        {
         ret = rep->StoreSuiteWidgetTypeL( aSuiteName, aType );
         }
     CleanupStack::PopAndDestroy( rep );
@@ -445,7 +427,7 @@
 //
 // ---------------------------------------------------------------------------
 //
-TInt CHnEngine::HandleReevaluateEventL( 
+TInt CHnEngine::HandleReevaluateEventL(
         CLiwGenericParamList& aParams )
     {
     TInt ret(KErrNone);
@@ -454,21 +436,21 @@
     _LIT8( KIdGlobalPath, "filter:id");
     _LIT8( KGenrePath, "filter:[%d]/genre");
     _LIT8( KItemPath, "filter:[%d]/item");
- 
+
     CHnFilter* filter = CHnFilter::NewLC();
-    
+
     TLiwGenericParam param;
     param.PushL();
     aParams.AtL(0, param);
     ASSERT( !param.Name().Compare( KFilterElementItem8 ) );
-    
+
     TLiwVariant suiteIdVariant;
     suiteIdVariant.PushL();
     TLiwVariant genreVariant;
     genreVariant.PushL();
-    TInt idFound = 
+    TInt idFound =
         HnLiwUtils::GetVariantL( aParams, KIdGlobalPath(), suiteIdVariant );
-    TInt found = 
+    TInt found =
         HnLiwUtils::GetVariantL(aParams, KGenreGlobalPath(), genreVariant );
     if (idFound != KErrNotFound)
         {
@@ -498,16 +480,16 @@
             TLiwVariant itemVariant;
             HnLiwUtils::GetVariantL(aParams, path, itemVariant );
             CleanupStack::PopAndDestroy( &path );
-            
+
             TPtrC suiteName;
             TPtrC itemId;
             genreVariant.Get(suiteName);
             itemVariant.Get(itemId);
-            
+
             CHnItemId* itemIdObject = CHnItemId::NewLC(suiteName, itemId);
             filter->AppendItemIdL( itemIdObject );
             CleanupStack::Pop( itemIdObject );
-           
+
             genreVariant.Reset();
             itemVariant.Reset();
             }
@@ -539,7 +521,7 @@
     {
     DEBUG(("_MM_:CHnEngine::HandleNewSuiteLoadedEventL IN"));
     TInt err( KErrNone );
-    const TLiwGenericParam* param = 
+    const TLiwGenericParam* param =
         aParams.FindFirst( err, KNewSuiteParamNameEn );
     if( err != KErrNotFound )
         {
@@ -562,9 +544,9 @@
                 {
                 iMetaDataModel->SetModeL( EMdModeNormal );
                 }
-            
-            TRAP( err, iMetaDataModel->EvaluateL( *filter ) );          
-            
+
+            TRAP( err, iMetaDataModel->EvaluateL( *filter ) );
+
             CleanupStack::PopAndDestroy( filter );
             if ( err )
                 {
@@ -590,7 +572,7 @@
                     break;
                 default :
                     {
-                    message = HBufC::NewL( KDebugNoteOtherError().Length() + 
+                    message = HBufC::NewL( KDebugNoteOtherError().Length() +
                                             KMaxLength );
                     message->Des().AppendFormat( KDebugNoteOtherError, err );
                     }
@@ -602,7 +584,7 @@
         }
     DEBUG(("_MM_:\tReturned error code: %d",err));
     DEBUG(("_MM_:CHnEngine::HandleNewSuiteLoadedEventL OUT"));
-    
+
     return err;
     }
 
@@ -612,10 +594,10 @@
 //
 TInt CHnEngine::HandleSetFocusEventL( const CLiwGenericParamList& aParams  )
     {
-    // Triggering event in hierarchy navigator, specifying 
+    // Triggering event in hierarchy navigator, specifying
     // that suite given by the name genre has been
     DEBUG(("_MM_:CHnEngine::HandleSetFocusEventL IN"));
-    
+
     TInt posSuite( 0 );
     TInt posItem( 0 );
 	TInt64 suiteCustomId( KErrNotFound );
@@ -624,25 +606,25 @@
 	// Get suite's and item's custom ids.
 	const TLiwGenericParam* paramSuiteId = aParams.FindFirst( posSuite,  KSuiteCustomId8 );
 	const TLiwGenericParam* paramItemId = aParams.FindFirst( posItem,  KItemCustomId8 );
-	
-    
+
+
 	if ( posSuite >= 0 && posItem >= 0 )
     	{
     	suiteCustomId = paramSuiteId->Value().AsTInt64();
     	itemCustomId = paramItemId->Value().AsTInt64();
-    	
+
     	// Get matching suite.
     	CHnSuiteModel* suiteModel = iSuiteContainer->GetMatchingSuiteModel( suiteCustomId );
-    	
+
     	if ( suiteModel )
     		{
     		// If suite is not null, then find matching item model.
     		TInt index( KErrNotFound );
     		CHnItemModel* itemModel = suiteModel->GetMatchingItemModelL( itemCustomId, index );
-    		
+
     		if ( itemModel )
     			{
-    			// If itemModel is not null then set highlight and set highligh 
+    			// If itemModel is not null then set highlight and set highligh
     			// on matching item.
     			suiteModel->SetSuiteHighlightL( index );
         		iControllerInterface.HandleSuiteEventL( ESuiteHighlightChanged, suiteModel );
@@ -653,7 +635,7 @@
     			}
     		}
     	}
-    
+
     DEBUG(("_MM_:CHnEngine::HandleSetFocusEventL OUT"));
     return KErrNone;
     }
@@ -665,13 +647,13 @@
 TInt CHnEngine::HandleMoveFocusBeforeDeleteEventL(
         const CLiwGenericParamList& /* aParams */  )
     {
-    // Triggering event in hierarchy navigator, specifying 
+    // Triggering event in hierarchy navigator, specifying
     // that suite given by the name genre has been
     DEBUG(("_MM_:CHnEngine::HandleMoveFocusBeforeDeleteEventL IN"));
-    
+
     TInt currentHighlight( GetLastSuiteModelL()->GetSuiteHighlight() );
     TInt itemsCount( GetLastSuiteModelL()->GetItemModelsCount() );
-    
+
     TInt shift( 0 );
     if( AknLayoutUtils::PenEnabled() && iEditMode )
         {
@@ -688,7 +670,7 @@
         }
     iControllerInterface.HandleSuiteEventL(
             ESuiteHighlightChanged, GetLastSuiteModelL() );
-    
+
     DEBUG(("_MM_:CHnEngine::HandleMoveFocusBeforeDeleteEventL OUT"));
     return KErrNone;
     }
@@ -752,12 +734,12 @@
 // ---------------------------------------------------------------------------
 //
 EXPORT_C TInt CHnEngine::InitializeL( CLiwGenericParamList& aParam )
-    {  
+    {
     DEBUG(("_MM_:CMatrixMenuAppUi::InitializeL IN"));
     User::LeaveIfError( HandleNewSuiteLoadedEventL( aParam ) );
     DEBUG(("_MM_:CMatrixMenuAppUi::InitializeL OUT"));
     // This is an interface method so some value has to be returned.
-    return KErrNone;    
+    return KErrNone;
     }
 
 // ---------------------------------------------------------------------------
@@ -835,7 +817,7 @@
 EXPORT_C void CHnEngine::ResetModelsL()
     {
     MMPERF(("CHnEngine::ResetModelsL - START"));
-    
+
     iControllerInterface.NotifyUiRefreshL( ERemoveLiwObjects );
 
     if( iSuiteContainer )
@@ -863,12 +845,12 @@
         const TDesC8& aUriQuery, const TDesC8& aUriFragment, const TDesC8& aSuiteName )
     {
     CLiwGenericParamList* list = CLiwGenericParamList::NewLC();
-    
+
     CLiwDefaultMap* map = CLiwDefaultMap::NewL();
     map->PushL();
-        
+
     RPointerArray< HBufC8 > params = SplitL( aUriQuery, KAnd8 );
-    
+
     for( TInt i = 0; i < params.Count(); i++ )
         {
         RPointerArray< HBufC8 > paramValue = SplitL( *params[ i ], KEquals8 );
@@ -877,15 +859,15 @@
         map->InsertL( *paramValue[ 0 ], TLiwVariant( *paramValue[ 1 ] ) );
         CleanupStack::PopAndDestroy( &paramValue );
         }
-    
+
     if ( aUriFragment.Length() > 0 && aSuiteName.Length() > 0 )
         {
         map->InsertL( KUriHighlight, TLiwVariant( aUriFragment ) );
         map->InsertL( KUriHighlightSuite, TLiwVariant( aSuiteName ) );
         }
-    
+
     list->AppendL( TLiwGenericParam(  KParams8, TLiwVariant( map )));
-    
+
     params.ResetAndDestroy();
     CleanupStack::PopAndDestroy( map );
 
@@ -901,17 +883,17 @@
     {
     RPointerArray< HBufC8 > tokens;
     CleanupResetAndDestroyPushL( tokens );
-    
+
     if ( aSource.Length() > 0 && aSeparator.Length() > 0 )
         {
         TPtrC8 tmpSource = aSource;
 
         TPtrC8 token( KNullDesC8 );
-    
+
         while( ETrue )
             {
             TInt length = tmpSource.Find( aSeparator );
-    
+
             if ( length >= 0 )
                 {
                 token.Set( tmpSource.Mid( 0, length ) );
@@ -947,8 +929,8 @@
         }
     //The suite on top of the stack is probably displayed.
     //Switching to edit mode has some dramatic ui impact,
-    //thus when parts of the suite will get displayed 
-    //it may look awkward thus the suite on top of the stack 
+    //thus when parts of the suite will get displayed
+    //it may look awkward thus the suite on top of the stack
     //is marked as uninitialized, therefore ui will be able to
     //react only to the ready suite model.
     if (AknLayoutUtils::PenEnabled() || (!AknLayoutUtils::PenEnabled() && iEditMode))
@@ -973,7 +955,7 @@
 // ---------------------------------------------------------------------------
 //
 
-EXPORT_C void CHnEngine::HandleRequestL( const CLiwGenericParamList& aParam, 
+EXPORT_C void CHnEngine::HandleRequestL( const CLiwGenericParamList& aParam,
                                 CLiwGenericParamList* /*aOutput*/ )
     {
     TInt pos( 0 );
@@ -1013,22 +995,22 @@
 	{
 	HBufC8* uriBuf = HBufC8::NewLC( aUri.Length() );
 	uriBuf->Des().Copy( aUri );
-	
+
 	TUriParser8 parser;
 	parser.Parse( *uriBuf );
 	User::LeaveIfError( parser.IsSchemeValid() ? KErrNone : KErrPathNotFound );
-	
+
 	const TDesC8& query = parser.Extract( EUriQuery );
     RPointerArray< HBufC8 > params = SplitL( query, HnLogicalRelations::KLogicalAnd8);
-    
+
     TBuf8<KApaMaxAppGroupName + KTimeStampBufferLength + KUidStringLength + 2> item;
-    
+
     for( TInt i = 0; i < params.Count(); i++ )
         {
         RPointerArray< HBufC8 > paramValue = SplitL( *params[ i ], HnLogicalRelations::KLogicalEqual8 );
         CleanupResetAndDestroyPushL( paramValue );
         ASSERT( paramValue.Count() == 2 );
-        
+
         if ( !paramValue[0]->Compare(KMcsAppGroupName8) )
         	{
         	TBuf8<KApaMaxAppGroupName> appgrname;
@@ -1054,19 +1036,19 @@
         	}
         CleanupStack::PopAndDestroy( &paramValue );
         }
-    
+
     TBuf<KApaMaxAppGroupName + KTimeStampBufferLength + KUidStringLength + 2> item1;
     item1.Copy(item);
 	CRepository *cenRep = CRepository::NewLC( KCRUidMenu );
 	cenRep->Set(KMenuShowFolder, item1);
 	CleanupStack::PopAndDestroy( cenRep );
-	
+
     params.ResetAndDestroy();
     CleanupStack::PopAndDestroy( uriBuf );
-	
+
 	}
 // ---------------------------------------------------------------------------
-// 
+//
 // ---------------------------------------------------------------------------
 //
 void CHnEngine::LightStatusChanged(TInt aTarget,
@@ -1094,23 +1076,23 @@
     }
 
 // ---------------------------------------------------------------------------
-// 
+//
 // ---------------------------------------------------------------------------
 //
 TBool CHnEngine::HandleActionL( const TDesC8& aUri )
 	{
 	TBool exitActionConsumed(EFalse);
-    
+
 	HBufC8* uriBuf = HBufC8::NewLC( aUri.Length() );
 	uriBuf->Des().Copy( aUri );
-	
+
 	TUriParser8 parser;
     parser.Parse( *uriBuf );
     User::LeaveIfError( parser.IsSchemeValid() ? KErrNone : KErrPathNotFound );
-	
+
     const TDesC8& host8 = parser.Extract( EUriHost );
     const TDesC8& query = parser.Extract( EUriQuery );
-    
+
 	RBuf action;
     CleanupClosePushL( action );
     CLiwGenericParamList* paramsUri = UriQueryToLiwListLC( query, KNullDesC8, KNullDesC8 );
@@ -1128,7 +1110,7 @@
     	    {
     	    exitHideHostNotFound = EFalse;
     	    }
-    	
+
 		if ( exitHideHostNotFound )
 			{
 			//send to foreground
@@ -1145,7 +1127,7 @@
 			HandleModelEventL( KAppGainBackground, *pl );
 			CleanupStack::PopAndDestroy( pl );
 			}
-    	
+
     	if ( exitHideHostNotFound && iSuiteContainer->GetLastSuiteModel() == suiteModel  )
     		{
             HandleBackEventL( host,  1 );
@@ -1156,14 +1138,14 @@
             CLiwGenericParamList* params = CLiwGenericParamList::NewLC();
             params->AppendL( iMetaDataModel->GetSuiteParameters( 0 ) );
         	ResetModelsL();
-            InitializeL( *params ); 
+            InitializeL( *params );
             CleanupStack::PopAndDestroy( params );
     		}
-    	
+
     	CleanupStack::PopAndDestroy( &host );
     	exitActionConsumed = ETrue;
     	}
-    
+
     CleanupStack::PopAndDestroy( paramsUri );
     CleanupStack::PopAndDestroy( &action );
     CleanupStack::PopAndDestroy( uriBuf );
@@ -1171,7 +1153,7 @@
 	}
 
 // ---------------------------------------------------------------------------
-// 
+//
 // ---------------------------------------------------------------------------
 //
 void CHnEngine::LoadSuitesL( const TDesC8& aUri )
@@ -1179,14 +1161,14 @@
 	TBool sendToForeground(EFalse);
 	HBufC8* uriBuf = HBufC8::NewLC( aUri.Length() );
 	uriBuf->Des().Copy( aUri );
-	
+
 	TUriParser8 parser;
 	parser.Parse( *uriBuf );
 	User::LeaveIfError( parser.IsSchemeValid() ? KErrNone : KErrPathNotFound );
-	
+
 	CDesC8ArrayFlat* suiteNameArray = new( ELeave ) CDesC8ArrayFlat( KDefaultGranularity ) ;
 	CleanupStack::PushL( suiteNameArray );
-	
+
 	const TDesC8& host = parser.Extract( EUriHost );
     RBuf8 host8;
     CleanupClosePushL( host8 );
@@ -1207,18 +1189,18 @@
 		ParseSuiteUriPathL( *path8, *suiteNameArray );
 		CleanupStack::PopAndDestroy( path8 );
 		}
-	
+
 	TBool suiteExists( EFalse );
 	iMetaDataModel->IgnoreEvaluations( ETrue );
 	iMetaDataModel->QueueForeground( CHnMdModel::EWhenAnySuiteIsEvaluated );
-	
+
     if( host8.Length() == 0 || ( host8.Length() > 0 &&
             !iMetaDataModel->SuiteModelExistsL( host8 ) ) )
         {
         suiteNameArray->Reset();
         suiteNameArray->AppendL( KRoot8 );
         }
-	
+
 	for( TInt i = 0; i < suiteNameArray->Count(); ++i )
 		{
 		suiteExists = iMetaDataModel->SuiteModelExistsL(
@@ -1226,13 +1208,13 @@
 		TBool nextExists = i < suiteNameArray->Count() - 1 &&
 			iMetaDataModel->SuiteModelExistsL( ( *suiteNameArray )[i + 1] );
 		TBool isLast = ( i == ( suiteNameArray->Count() - 1 ) );
-		
+
 		TBool turnOnEvaluation = ( suiteExists && ( !nextExists || isLast ) );
 		if( turnOnEvaluation || !suiteExists )
 			{
 			iMetaDataModel->IgnoreEvaluations( EFalse );
 			}
-		
+
 		TInt err( KErrNone );
 
 		// Ignore loading new suite if the last suite in model is the same
@@ -1246,7 +1228,7 @@
 				continue;
 				}
 			}
-		
+
 		if( suiteExists )
 			{
 			if (!nextExists)
@@ -1261,7 +1243,7 @@
 			    {
 			    // Tricky: if foreground is still queued it means that the suite is evaluated
 			    // asynchronously. Override the previos foreground queue setting with one
-			    // that will be effective only if the last loaded suite is evaluated. 
+			    // that will be effective only if the last loaded suite is evaluated.
 			    iMetaDataModel->QueueForeground( CHnMdModel::EWhenCurrentTopSuiteIsEvaluated );
 			    }
 			if ( err != KErrNone )
@@ -1269,19 +1251,19 @@
 				sendToForeground = ETrue;
 				}
 			}
-		
+
 		if( !suiteExists || err != KErrNone || !nextExists )
 			{
 			CHnFilter* filter = CHnFilter::NewLC();
 
 			filter->SetSuiteId(
 				iSuiteContainer->GetLastSuiteModel()->CustomId() );
-			
+
 			filter->SetEvaluateSuiteL( ETrue );
 			iMetaDataModel->IgnoreEvaluations( EFalse );
-			
+
 			TRAPD( err, iMetaDataModel->EvaluateL( *filter ) );
-			
+
 			CleanupStack::PopAndDestroy( filter );
 			if( err )
 				{
@@ -1293,17 +1275,17 @@
 			break;
 			}
 		}
-	
+
 	// set highlight only when path is valid!
 	if( suiteExists )
 		{
 		HighlightPlacementFromUriL( parser.Extract( EUriFragment ) );
 		}
-	
+
     CleanupStack::PopAndDestroy( &host8 );
 	CleanupStack::PopAndDestroy( suiteNameArray );
 	CleanupStack::PopAndDestroy( uriBuf );
-	
+
 //    send to foreground
 	if ( sendToForeground )
 		{
--- a/menufw/hierarchynavigator/hnmetadatamodel/inc/hnglobals.h	Thu Dec 17 08:40:49 2009 +0200
+++ b/menufw/hierarchynavigator/hnmetadatamodel/inc/hnglobals.h	Thu Jan 07 12:39:41 2010 +0200
@@ -11,7 +11,7 @@
 *
 * Contributors:
 *
-* Description:    
+* Description:
 *
 */
 
@@ -38,23 +38,23 @@
  */
 const TInt KMaxLength = 12;
 
-/** 
+/**
  * Single character length.
  */
 const TInt KSingleChar( 1 );
 
-/** 
+/**
  * Default datagranularity.
  */
 const TInt KDefaultGranularity( 8 );
 
-/** 
+/**
  * Max digit number.
  */
 const TInt KMaxDigitNumber( 10 );
 
-/** 
- * A number of cached suites. 
+/**
+ * A number of cached suites.
  */
 const TInt KXmlModelCacheMaxLength( 10 );
 
@@ -67,77 +67,77 @@
  * KErrNoMemory code from MenuService
  */
 const TInt KSErrNoMemory = 1007;
-/** 
+/**
  * Logical relations namespace
  */
 namespace HnLogicalRelations
-    { 
-    /** 
-     * Greater. 
+    {
+    /**
+     * Greater.
      */
     _LIT8( KLogicalGreater8,        ">"  );
-    
-    /** 
-     * Less. 
+
+    /**
+     * Less.
      */
     _LIT8( KLogicalLess8,           "<"  );
-    
-    /** 
-     * Equals. 
+
+    /**
+     * Equals.
      */
     _LIT8( KLogicalEqual8,          "="  );
-    
-    /** 
-     * Different. 
+
+    /**
+     * Different.
      */
     _LIT8( KLogicalDifferent8,      "!="  );
-    
-    /** 
-     * And. 
+
+    /**
+     * And.
      */
     _LIT8( KLogicalAnd8,            "&"  );
-    
-    /** 
-     * Or. 
+
+    /**
+     * Or.
      */
     _LIT8( KLogicalOr8,             "|"  );
-    
-    /** 
-     * Nas. 
+
+    /**
+     * Nas.
      */
     _LIT8( KLogicalHas8,            "HAS" );
-    
-    /** 
-     * Has not. 
+
+    /**
+     * Has not.
      */
 	_LIT8( KLogicalHasNot8,         "HASNOT" );
     }
 
-/** 
+/**
  * Event namespace
  */
 namespace HnEvent
     {
-    /** 
-     * Event data. 
+    /**
+     * Event data.
      */
     _LIT8( KEventArgNamespace8,     "event_data");
-    
-    /** 
-     * Dropped before custom id. 
+
+    /**
+     * Dropped before custom id.
      */
     _LIT8( KDroppedBefore8,         "dropped_before_custom_id" );
-    
-    /** 
-     * Dragged custom id. 
+
+    /**
+     * Dragged custom id.
      */
     _LIT8( KDragged8,               "dragged_custom_id" );
-    
-    /** 
-     * Highlight offset. 
+
+    /**
+     * Highlight offset.
      */
     _LIT8( KHighlightOffset8,       "highlight_offset" );
-    
+
     }
 
 
@@ -183,7 +183,7 @@
 _LIT8( 	KMenuConditionAttrName8,    "condition" );
 _LIT8(  KIndexAttrName8, 			"index" );
 _LIT8( 	KMenuDimmAttrName8,    	    "dimm" );
-_LIT8( 	KGenreAttrName8,            "genre" ); 
+_LIT8( 	KGenreAttrName8,            "genre" );
 _LIT8( 	KTitleAttrName8,            "title" );
 _LIT8(  KEmptyTextAttrName8,        "emptytext" );
 _LIT8( 	KNameAttrName8,             "name" );
@@ -315,7 +315,7 @@
 _LIT8(  KEvaluateMdModel,           "EvaluateMdModel" );
 _LIT8(  KDisableActionsForItem,     "DisableActionsForItem" );
 
-_LIT( 	KSuiteName,                 "suite_name" ); 
+_LIT( 	KSuiteName,                 "suite_name" );
 _LIT8(  KSuiteName8, 				"suite_name" );
 
 //
@@ -351,7 +351,7 @@
 _LIT8(	KTitleName8, 				"suite" );
 _LIT8(	KItemName8, 				"item" );
 _LIT8(	KGenreName8, 				"genre" );
-_LIT8(	KLocalizationName8, 		"localization" ); 
+_LIT8(	KLocalizationName8, 		"localization" );
 
 _LIT8(	KEventName8, 				"event" );
 _LIT8(	KMenuItemName8, 			"menuitem" );
@@ -359,13 +359,13 @@
 _LIT8(	KMenuItemSpecificName8, 			"menuitem_specific" );
 _LIT(	KMenuItemSpecificName,	 			"menuitem_specific" );
 
-_LIT( 	KRoot, 						"root" ); 
+_LIT( 	KRoot, 						"root" );
 _LIT8(   KRoot8,                    "root" );
 _LIT( 	KExtension, 				".r" ); // rsc, r01, r02, etc.
 _LIT( 	KExtensionRsc, 				".rsc" );
 
 
-_LIT8(	KHexStart8, 				"0x"); 
+_LIT8(	KHexStart8, 				"0x");
 _LIT( 	KDrive ,					"C:");
 _LIT( 	KEntriesSuffix, 			"suites\\");
 
@@ -394,9 +394,6 @@
 _LIT(   KSwitchWidgetMdEvent,       "switch_widget" );
 _LIT(   KStartEditModeMdEvent,      "start_edit_mode" );
 _LIT(   KStopEditModeMdEvent,       "stop_edit_mode" );
-_LIT(   KZoomLarge,       			"zoom_large" );
-_LIT(   KZoomNormal,       			"zoom_normal" );
-_LIT(   KZoomSmall,       			"zoom_small" );
 _LIT(   KAppGainForeground,         "gain_foreground" );
 _LIT(   KAppGainBackground,         "gain_background" );
 _LIT(   KSetFocusEvent,             "set_focus" );
@@ -423,11 +420,11 @@
 #endif// _DEBUG
 
 // info notes for notifying lack of configuration files
-_LIT( KDebugNoteDirNotFound, 
+_LIT( KDebugNoteDirNotFound,
 	"Directory containing suite configuration not found!" );
-_LIT( KDebugNoteFileNotFound, 
+_LIT( KDebugNoteFileNotFound,
 	"File containing suite configuration not found!" );
-_LIT( KDebugNoteOtherError, 
+_LIT( KDebugNoteOtherError,
 	"Loading suite configuration returned error: %d" );
 
 _LIT8( KStar8, "*" );
@@ -446,7 +443,7 @@
 _LIT( 	KOnFocusGain,               "item:focus" );
 _LIT(   KOnFocusLost,               "item:unfocus" );
 
-_LIT8(  KIndexWithBrackets8,        "[$index]");    
+_LIT8(  KIndexWithBrackets8,        "[$index]");
 _LIT8(  KIndex8,                    "$index" );
 _LIT(   KIndex,                     "$index" );
 _LIT8(  KCount,                     "/[$count]" );
@@ -507,9 +504,9 @@
 
 const TInt KTimeStampBufferLength = 25;
 
-const TInt KUidStringLength = 10; 
+const TInt KUidStringLength = 10;
 
-const TInt KTimeStampCutOff = 5; 
+const TInt KTimeStampCutOff = 5;
 
 /**
  * Order in which drives are searched for suites.
@@ -550,7 +547,7 @@
     {
     EImageSourceUndefined = 0,
     EImageSourceFile,
-    EImageSourceResource, 
+    EImageSourceResource,
     EImageSourceApplicationUid,
     EImageSourceLiw
     };
--- a/menufw/hierarchynavigator/hnmetadatamodel/inc/hnmdmodel.h	Thu Dec 17 08:40:49 2009 +0200
+++ b/menufw/hierarchynavigator/hnmetadatamodel/inc/hnmdmodel.h	Thu Jan 07 12:39:41 2010 +0200
@@ -11,7 +11,7 @@
 *
 * Contributors:
 *
-* Description:   
+* Description:
 *
 */
 
@@ -21,7 +21,7 @@
 #define C_HNMDMODEL_H
 
 #include <e32base.h>
-#include <xmlengelement.h> 
+#include <xmlengelement.h>
 #include <liwgenericparam.h>
 #include <eikenv.h>
 #include "hnglobals.h"
@@ -44,19 +44,19 @@
 
 /**
  * Type of the property.
- * 
+ *
  * @ingroup group_hnmetadatamodel
  */
 enum TPropertyType
     {
     EUndefined = 0,
     EGenre,
-    EVisualItemCount    
+    EVisualItemCount
     };
 
 /**
  * Mode type.
- * 
+ *
  * @ingroup group_hnmetadatamodel
  */
 enum TMdMode
@@ -69,72 +69,72 @@
  * Common pointers.
  *
  * @since S60 5.0
- * @ingroup group_hnmetadatamodel 
+ * @ingroup group_hnmetadatamodel
  */
 struct THnMdCommonPointers
-    {    
+    {
     /**
      * Not own - Localization.
      */
     CHnMdLocalization* iLocalization;
-      
+
     /**
      * Not own - Query generator.
      */
     THnIdGenerator* iIdGenerator;
-    
+
     /**
      * Not own - Suite model container.
      */
     CHnSuiteModelContainer* iContainer;
-    
+
     /**
      * Not own - Meta data model.
      */
     CHnMdModel* iModel;
-      
+
     /**
      * Not own - Xml model provider.
      */
     CHnXmlModelProvider* iXmlModelProvider;
-    
+
     /**
      * Not own - Cache for bitmap and mask ids.
      */
     CHnBitmapIdCache* iBitmapIdCache;
-    
+
     /**
      * Not own - Model event observer.
      */
     MHnMdModelEventObserver* iModelEventObserver;
-    
+
     /**
      * Not own - Edit mode interface.
      */
     MHnEditModeInterface* iEditModeInterface;
-    
+
     /**
      * Not own - Handler to file server session;
-     */    
+     */
     RFs& iFs;
-    
+
     /**
      * Gets static pointer from TLS.
      */
     static THnMdCommonPointers* Static() {return (THnMdCommonPointers*)Dll::Tls(); }
-    
+
     /**
      * Sets pointer to TLS.
-     * 
+     *
      * @param aCmnPtrs Pointer to set
      */
     static void SetStatic( THnMdCommonPointers* aCmnPtrs ) {  Dll::SetTls(aCmnPtrs); }
-    
-  private: 
+
+  private:
 
     // only model can create it
-    friend class CHnMdModel;  
-    
+    friend class CHnMdModel;
+
     /**
      * Standard C++ consturctor.
      */
@@ -151,26 +151,26 @@
 
     /**
      * Copy constructor declared as private to disallow copying.
-     * 
+     *
      * @param aCmnPtrs Pointer to set.
      */
     THnMdCommonPointers( const THnMdCommonPointers& aCmnPtrs ):iFs( aCmnPtrs.iFs ) { }
-    
+
     /**
      * Assignment operator
      */
     THnMdCommonPointers& operator=( const THnMdCommonPointers& ){return *this;}
     };
-    
+
 /**
  *  Id generator.
  *
  *  @lib ?library
  *  @since S60 5.0
- *  @ingroup group_hnmetadatamodel 
+ *  @ingroup group_hnmetadatamodel
  */
 struct THnIdGenerator
-    {        
+    {
     /**
      * Standatrd C++ constructor.
      */
@@ -188,7 +188,7 @@
         return iId++;
         }
     private:
-  
+
     /**
      * Copy constructor declared as private to disallow copying.
      * @param aGenerator Id generator;
@@ -199,23 +199,23 @@
      * Assignment operator.
      */
     THnIdGenerator& operator=(const THnIdGenerator&);
-    
+
     /**
      * Id
      */
-    TInt iId;            
+    TInt iId;
     };
 
 /**
  * Model event observer.
  *
- * @since S60 5.0 
+ * @since S60 5.0
  * @ingroup group_hnmetadatamodel
  */
 class MHnMdModelEventObserver
     {
     public:
-  
+
      /**
      * Handles modlde event.
      *
@@ -223,7 +223,7 @@
      * @param aEventName Event name.
      * @param aParams Parameters.
      */
-     virtual TInt HandleModelEventL( const TDesC& aEventName, 
+     virtual TInt HandleModelEventL( const TDesC& aEventName,
              CLiwGenericParamList& aParams ) = 0;
     };
 
@@ -231,10 +231,10 @@
  * Meta data model
  *
  * This is the main class of the Meta Data Model component.
- * 
+ *
  * This class is the entry point for building the meta data model
  * and for evaluation.
- * 
+ *
  * @since S60 5.0
  * @ingroup group_hnmetadatamodel
  */
@@ -277,7 +277,7 @@
      * @since S60 5.0
      */
     virtual ~CHnMdModel();
-    
+
     /**
      * Evaluates the model. Takes filter as a parameter.
      *
@@ -288,19 +288,19 @@
 
     /**
      * Manages evaluation lock.
-     * 
+     *
      * @param aLock Locks evaluation if set to ETrue.
      * @param aEvaluate Runs evaluation if aEvaluate == ETrue.
      */
     IMPORT_C void SetEvaluationLockL( TBool aLock, TBool aEvaluate = ETrue );
-          
+
     /**
      * Evaluates the model.
      *
      * @since S60 5.0
      */
     IMPORT_C void EvaluateL();
-    
+
     /**
      * Switches between edit mode and normal mode
      *
@@ -308,8 +308,8 @@
      * @param aMode Suite model container.
      */
     IMPORT_C void SetModeL( TMdMode aMode );
-    
-    
+
+
     /**
      * Gets suite's meta data model.
      *
@@ -317,7 +317,7 @@
      * @return Suite meta data model.
      */
     IMPORT_C CHnMdSuite* GetLastSuite();
-    
+
     /**
      * Gets suite's meta data model.
      *
@@ -326,7 +326,7 @@
      * @return Suite meta data model.
      */
     CHnMdSuite* GetSuite( TInt aPosition );
-    
+
     /**
      * Gets suite's parameters..
      *
@@ -336,39 +336,39 @@
      * @return Suite meta data model.
      */
     IMPORT_C CLiwGenericParamList& GetSuiteParameters( TInt aPosition );
-    
-           
+
+
     /**
      * Handles back event.
-     * 
+     *
      * @since S60 v3.2
      * @param aMulContainer Suite model container.
      * @param aGenre Name of the suite.
      * @param aIterations Number of iterations.
      * @return Error code.
-     */  
+     */
     IMPORT_C TInt HandleBackEventL( CHnSuiteModelContainer* aMulContainer,
             const TDesC& aGenre, TInt aIterations = KModelCountForRoot );
-    
+
     /**
      * Handles sis installation event.
-     * 
+     *
      * @since S60 v3.2
      * @param aMulContainer Suite model container.
-     */  
-    IMPORT_C void HandleSisInstallationEventL( 
+     */
+    IMPORT_C void HandleSisInstallationEventL(
             CHnSuiteModelContainer* aMulContainer );
-    
+
     /**
      * Loads a suite from xml data.
-     * 
+     *
      * @since S60 v5.0
      * @param aGenre Name of the suite.
      * @param aSuiteParams Suite parameters.
      * @return Error code.
-     */  
+     */
     IMPORT_C TInt LoadSuiteL( const TDesC& aGenre, CLiwGenericParamList* aSuiteParams = NULL );
-    
+
     /**
      * Check if suite model exists.
      *
@@ -377,7 +377,7 @@
      * @return ETrue if suite model exists, otherwise EFalse.
      */
     IMPORT_C TBool SuiteModelExistsL( const TDesC8& aSuiteModel );
-    
+
     /**
      * Gets suite's meta data model.
      *
@@ -393,22 +393,22 @@
      * @since S60 5.0
      */
     IMPORT_C void DeleteLastSuite();
-    
-    
+
+
     /**
      * Realeses localization files.
      *
      * @since S60 5.0
      */
     IMPORT_C void ReleaseLocalization();
-    
+
     /**
      * Reloads localization.
      *
      * @since S60 5.0
      */
     IMPORT_C void ReloadLocalizationL();
-    
+
     /**
      * Informs metadatamodel to ignore evaluations or
      * to performing evaluations, according to the
@@ -418,7 +418,7 @@
      * @param aIgnore Metadatamodel ignores evaluations when set to ETrue.
      */
     IMPORT_C void IgnoreEvaluations( TBool aIgnore );
-    
+
     /**
      * Request that menu goes to foreground when evaluation completes.
      *
@@ -435,7 +435,7 @@
      *              simply means not to bring menu to foreground.
      */
     IMPORT_C void QueueForeground( TForegroundGainTriggeringEvent aWhen );
-    
+
     /**
      * Is there a queue for foreground gain.
      *
@@ -443,7 +443,7 @@
      * @return should foreground be gained after evaluation.
      */
     IMPORT_C TBool IsForegroundQueued() const;
-    
+
     /**
      * Notifies this metadata model that suite evaluation has completed.
      *
@@ -451,7 +451,7 @@
      *                            has completed
      */
     void SuiteModelReadyToShowL( CHnSuiteModel* aJustEvaluatedSuite );
-    
+
     /**
      * Causes all of the loades suites except for the suite at the bottom
      * of the stack to be reloaded from their corresponding xml file
@@ -461,10 +461,10 @@
      * @param aIgnore aModelContainer Model container object.
      */
     void ReloadStackSuitesL( CHnSuiteModelContainer* aModelContainer );
-    
+
     /**
      * Counts number of loaded suites.
-     * 
+     *
      * @since S60 5.0
      * @return Number of loaded suites
      */
@@ -476,7 +476,7 @@
      * @since S60 5.0
      */
     void EvaluateTopSuiteL();
-    
+
 private:
 
     /**
@@ -497,83 +497,78 @@
             CHnSuiteModelContainer * aSuiteModelContainer );
 
 private: // data
-    
+
     /**
      * Id generator.
      */
-    THnIdGenerator iIdGenerator; 
-      
+    THnIdGenerator iIdGenerator;
+
     /**
      * Own - Localization.
      */
     CHnMdLocalization* iLocalization;
-    
+
     /**
      * Own - Xml model provider.
      */
     CHnXmlModelProvider* iXmlModelProvider;
-    
+
     /**
      * Own - bitmap and mask ids cache.
      */
     CHnBitmapIdCache* iBitmapIdCache;
-    
+
     /**
      * Not Own - Event observer.
      */
     MHnMdModelEventObserver* iModelEventObserver;
-     
+
     /**
      * Stores pointers to common objects in the system
      * This object is shared throut the whole system.
-     */ 
+     */
     THnMdCommonPointers iCmnPtrs;
-     
+
     /**
      * Stores information about mode.
      */
     TMdMode iMode;
-     
+
     /**
      * Loaded Suites stack.
      * Object and content owned.
      */
     RPointerArray<CHnMdSuite> iLoadedSuites;
-     
+
     /**
      * Repository widget type observer.
      */
     CHnRepositoryObserver* iRepositoryWidgetTypeObserver;
-     
+
     /**
      * Repository folder change observer.
      */
     CHnRepositoryObserver* iRepositoryShowFolderObserver;
-     
-    /**
-     * Repository folder change observer.
-     */
-    CHnRepositoryObserver* iRepositoryZoomObserver;
-     
+
     /**
      * When set, forces metadatamodel to skip evaluations.
      */
     TBool iIgnoreEvaluations;
-     
+
     /**
      * Queues foreground gain action.
      */
     TBool iForegroundQueued;
-     
+
     /**
      * Not own - pointer to the suite model that must be evaluated
      * before matrix menu can be brought to foreground.
-     * 
+     *
      * When NULL, then any suite evaluation brings menu to foreground.
      * It is only meaningful when iForegroundQueued is ETrue.
      */
     CHnSuiteModel* iForegroundTriggeringSuite;
-                   
+
     };
 
 #endif // C_HNMDMODEL_H
--- a/menufw/hierarchynavigator/hnmetadatamodel/inc/hnrepositoryobserver.h	Thu Dec 17 08:40:49 2009 +0200
+++ b/menufw/hierarchynavigator/hnmetadatamodel/inc/hnrepositoryobserver.h	Thu Jan 07 12:39:41 2010 +0200
@@ -29,9 +29,9 @@
 
 /**
  * Repository Observer base class.
- * 
+ *
  * It is used to be derived by repository observers.
- * 
+ *
  * @lib hnmetadatamodel
  * @since S60 5.0
  * @ingroup group_hnmetadatamodel
@@ -41,70 +41,70 @@
     public MCenRepNotifyHandlerCallback
 	{
 public:
-	
+
     /**
      * Default C++ Destructor.
-     * 
+     *
      * @since S60 v5.0
-     */ 
+     */
     virtual ~CHnRepositoryObserver();
-     
+
 
 protected:
 
     /**
      * Defautlt C++ Constructor.
-     * 
+     *
      * @param aCmnPtrs Common pointers.
      * @since S60 v5.0
-     */ 
+     */
     CHnRepositoryObserver( THnMdCommonPointers* aCmnPtrs );
-    
+
 
     /**
      * Defautlt C++ Constructor.
-     * 
+     *
      * @param aCmnPtrs Common pointers.
      * @since S60 v5.0
-     */ 
+     */
     CHnRepositoryObserver( THnMdCommonPointers* aCmnPtrs, TUint32 iId );
-    
+
     /**
      * Second stage constructor.
-     * 
+     *
      * @since S60 v5.0
      */
     void ConstructL( const TUid aRepositoryUid );
-    
+
 protected:
 
     /**
      * Own - Central Repository access class.
      */
     CRepository *iRepository;
-    
+
     /**
      * Id of the CR entry to be watched.
      */
     TUint32 iId;
-      
+
     /**
      * Common pointers.
-     */ 
+     */
     THnMdCommonPointers* iCmnPtrs;
-    
+
     /**
      * Own - Central repository notification handler.
      */
     CCenRepNotifyHandler* iNotifyHandler;
-    
+
 	};
 
 /**
  * Widget Type Repository Observer.
- * 
+ *
  * It is used to inform hierarchy navigator of changes in the suites repository.
- * 
+ *
  * @lib hnmetadatamodel
  * @since S60 5.0
  * @ingroup group_hnmetadatamodel
@@ -112,71 +112,71 @@
 NONSHARABLE_CLASS( CHnRepositoryWidgetTypeObserver ): public CHnRepositoryObserver
 	{
 public:
-	
+
     /**
      * Default C++ Destructor.
-     * 
+     *
      * @since S60 v5.0
-     */ 
+     */
     virtual ~CHnRepositoryWidgetTypeObserver();
-    
+
     /**
      * Factory function.
-     * 
+     *
      * @param aCmnPtrs Common pointers.
      * @return Repository Observer.
      * @since S60 v5.0
-     */ 
-    static CHnRepositoryWidgetTypeObserver* NewL( THnMdCommonPointers* aCmnPtrs, const TUid aRepositoryUid  ); 
+     */
+    static CHnRepositoryWidgetTypeObserver* NewL( THnMdCommonPointers* aCmnPtrs, const TUid aRepositoryUid  );
 
     /**
      * Factory function.
-     * 
+     *
      * @param aCmnPtrs Common pointers.
      * @return Repository Observer.
      * @since S60 v5.0
-     */     
+     */
     static CHnRepositoryWidgetTypeObserver* NewLC( THnMdCommonPointers* aCmnPtrs, const TUid aRepositoryUid  );
-    
+
     /**
-     * Change handler method. 
+     * Change handler method.
      * It is invoked whenever notifier detects a change in the CR.
-     * 
+     *
      * @param aId Id of the entry in CR.
      * @since S60 v5.0
      */
     void HandleNotifyGeneric(TUint32 aId);
-    
+
     /**
-     * Change handler method. 
+     * Change handler method.
      * It is invoked whenever notifier detects a change in the CR.
-     * 
+     *
      * @param aId Id of the entry in CR.
      * @since S60 v5.0
      */
     void HandleNotifyGenericL(TUint32 aId);
-    
+
 private:
 
     /**
      * Defautlt C++ Constructor.
-     * 
+     *
      * @param aCmnPtrs Common pointers.
      * @since S60 v5.0
-     */ 
+     */
 	CHnRepositoryWidgetTypeObserver( THnMdCommonPointers* aCmnPtrs );
-    
+
 private:
-    
+
     /**
      * Second stage constructor.
-     * 
+     *
      * @since S60 v5.0
      */
 	void ConstructL( const TUid aRepositoryUid );
-    
+
 private:
-		
+
 	/**
 	 * Array holding ids of widgets being switched.
 	 * It is used to eliminate double refresh for such suites.
@@ -187,22 +187,22 @@
 
 
 
-NONSHARABLE_CLASS( CHnRepositoryShowFolderObserver ): 	public CHnRepositoryObserver, 
+NONSHARABLE_CLASS( CHnRepositoryShowFolderObserver ): 	public CHnRepositoryObserver,
 														public MLiwNotifyCallback,
 														public MHnSuiteObserver
 	{
 public:
-	
+
     /**
      * Default C++ Destructor.
-     * 
+     *
      * @since S60 v5.0
-     */ 
+     */
     virtual ~CHnRepositoryShowFolderObserver();
-    
+
     /**
 	 * Factory function.
-	 * 
+	 *
 	 * @param aCmnPtrs Common pointers.
 	 * @return Repository Observer.
 	 * @since S60 v5.0
@@ -213,7 +213,7 @@
 
 	/**
 	 * Factory function.
-	 * 
+	 *
 	 * @param aCmnPtrs Common pointers.
 	 * @return Repository Observer.
 	 * @since S60 v5.0
@@ -221,26 +221,26 @@
 	static CHnRepositoryShowFolderObserver* NewLC(
 			THnMdCommonPointers* aCmnPtrs, const TUid aRepositoryUid,
 			const TUint32 aId);
-    
+
     /**
-     * Change handler method. 
+     * Change handler method.
      * It is invoked whenever notifier detects a change in the CR.
-     * 
+     *
      * @param aId Id of the entry in CR.
      * @since S60 v5.0
      */
     void HandleNotifyString(TUint32 aId, const TDesC16& aNewValue );
-    
+
     /**
-     * Change handler method. 
+     * Change handler method.
      * It is invoked whenever notifier detects a change in the CR.
-     * 
+     *
      * @param aId Id of the entry in CR.
      * @since S60 v5.0
      */
     void HandleNotifyStringL(TUint32 aId, const TDesC16& aNewValue );
-    
-    
+
+
     /**
      * From MLiwNotifyCallback
      */
@@ -249,49 +249,49 @@
         TInt aEventId,
         CLiwGenericParamList& aEventParamList,
         const CLiwGenericParamList& aInParamList);
-    
+
     /**
      * From MHnSuiteObserver
      */
-    virtual void HandleSuiteEventL ( THnCustomSuiteEvent aCustomSuiteEvent, 
+    virtual void HandleSuiteEventL ( THnCustomSuiteEvent aCustomSuiteEvent,
             CHnSuiteModel *aModel );
-    
+
 
 
 private:
 
     /**
      * Defautlt C++ Constructor.
-     * 
+     *
      * @param aCmnPtrs Common pointers.
      * @since S60 v5.0
-     */ 
+     */
 	CHnRepositoryShowFolderObserver( THnMdCommonPointers* aCmnPtrs, TUint32 iId  );
 
     /**
      * Extracts the folder name from the CR key.
-     * 
+     *
      * @param aNewValue The CR key.
      * @since S60 v5.0
-     */ 
+     */
 	void ExtractCRKeyShowFolderName( const TDesC& aNewValue );
-	
+
 	/**
 	 * Request get list for parent folder of an application.
-	 * 
+	 *
 	 * @param aFolderId A parent folder id
 	 * @since S60 v5.0
 	 */
     void GetShowFolderL( TUint32 aFolderId );
-    
+
     /**
      * Request get list for a folder with given application group name
      * contained in iCRKeyFolderName.
-     * 
+     *
      * @since S60 v5.0
      */
     void GetShowFolderGroupNameL();
-    
+
 private:
     /**
      * Type of a flag describing the type of notification.
@@ -300,119 +300,40 @@
      * SECOND_NOTIFY - handled notify caused by the second get list
      */
     enum TNotifyType { EAPP_ID=1, EAPP_UID=2, ESECOND_NOTIFY=4 };
-	
+
 private:
-    
+
     /**
      * Second stage constructor.
-     * 
+     *
      * @since S60 v5.0
      */
 	void ConstructL( const TUid aRepositoryUid );
 
 private:
-    
+
 	/**
      * Folder application group name.
      */
 	TBuf8<KApaMaxAppGroupName> iCRKeyFolderName;
-	
+
     /**
      * Mcs id for an application item in a folder with a given app group name.
      */
 	TBuf8<KUidStringLength> iCRKeyFolderItemUid;
-    
+
 	/**
      * Own.
      * Intance of the service handler.
      */
     CHnServiceHandler* iServiceHandler;
-    
+
     /**
        * Flag describing the type of notification.
      */
     TInt iNotifyType;
 	};
 
-
-NONSHARABLE_CLASS( CHnRepositoryZoomObserver ): public CHnRepositoryObserver 
-	{
-public:
-	
-    /**
-     * Default C++ Destructor.
-     * 
-     * @since S60 v5.0
-     */ 
-    virtual ~CHnRepositoryZoomObserver();
-    
-    /**
-	 * Factory function.
-	 * 
-	 * @param aCmnPtrs Common pointers.
-	 * @return Repository Observer.
-	 * @since S60 v5.0
-	 */
-	static CHnRepositoryZoomObserver* NewL(
-			THnMdCommonPointers* aCmnPtrs, const TUid aRepositoryUid,
-			const TUint32 aId);
-
-	/**
-	 * Factory function.
-	 * 
-	 * @param aCmnPtrs Common pointers.
-	 * @return Repository Observer.
-	 * @since S60 v5.0
-	 */
-	static CHnRepositoryZoomObserver* NewLC(
-			THnMdCommonPointers* aCmnPtrs, const TUid aRepositoryUid,
-			const TUint32 aId);
-    
-    /**
-     * Change handler method. 
-     * It is invoked whenever notifier detects a change in the CR.
-     * 	
-     * @param aId Id of the entry in CR.
-     * @since S60 v5.0
-     */
-    void HandleNotifyInt(TUint32 aId, TInt aNewValue );
-    
-    /**
-     * Change handler method. 
-     * It is invoked whenever notifier detects a change in the CR.
-     * 
-     * @param aId Id of the entry in CR.
-     * @since S60 v5.0
-     */
-    void HandleNotifyIntL(TUint32 aId, TInt aNewValue );
-
-private:
-
-    /**
-     * Defautlt C++ Constructor.
-     * 
-     * @param aCmnPtrs Common pointers.
-     * @since S60 v5.0
-     */ 
-	CHnRepositoryZoomObserver( THnMdCommonPointers* aCmnPtrs, TUint32 iId  );
-
-private:
-    
-    /**
-     * Second stage constructor.
-     * 
-     * @since S60 v5.0
-     */
-	void ConstructL( const TUid aRepositoryUid );
-    
-    /**
-     * Setup initial value of zoom at startup;
-     * 
-     * @since S60 v5.0
-     */
-	void InitializeL();
-	};
-
 #endif /*HNREPOSITORYOBSERVER_H_*/
 
 //End of file
--- a/menufw/hierarchynavigator/hnmetadatamodel/src/hnmdmodel.cpp	Thu Dec 17 08:40:49 2009 +0200
+++ b/menufw/hierarchynavigator/hnmetadatamodel/src/hnmdmodel.cpp	Thu Jan 07 12:39:41 2010 +0200
@@ -11,7 +11,7 @@
 *
 * Contributors:
 *
-* Description:   
+* Description:
 *
 */
 
@@ -52,7 +52,7 @@
     MMPERF(("CHnMetaDataModel::ConstructL - model privider ready"));
     iXmlModelProvider->ReloadModelL();
     MMPERF(("CHnMetaDataModel::ConstructL - model reloaded"));
-            
+
     iCmnPtrs.iLocalization = iLocalization;
     iCmnPtrs.iIdGenerator = &iIdGenerator;
     iCmnPtrs.iModel = this;
@@ -60,13 +60,12 @@
     iCmnPtrs.iContainer = aSuiteModelContainer;
     iCmnPtrs.iModelEventObserver = aModelObserver;
     iCmnPtrs.iBitmapIdCache = iBitmapIdCache;
-    
+
     THnMdCommonPointers::SetStatic(&iCmnPtrs);
-    
+
     iMode = EMdModeNormal;
     iRepositoryWidgetTypeObserver = CHnRepositoryWidgetTypeObserver::NewL( &iCmnPtrs, KMatrixRepositoryUid );
     iRepositoryShowFolderObserver = CHnRepositoryShowFolderObserver::NewL( &iCmnPtrs, KCRUidMenu, KMenuShowFolder );
-    iRepositoryZoomObserver = CHnRepositoryZoomObserver::NewL( &iCmnPtrs, KCRUidAvkon, KAknGlobalUiZoom );
     MMPERF(("CHnMetaDataModel::ConstructL - rep. observer ready"));
     }
 
@@ -74,7 +73,7 @@
 //
 // ---------------------------------------------------------------------------
 //
-EXPORT_C CHnMdModel* CHnMdModel::NewL( 
+EXPORT_C CHnMdModel* CHnMdModel::NewL(
         MHnMdModelEventObserver* aModelObserver,
         CHnSuiteModelContainer * aSuiteModelContainer  )
     {
@@ -88,7 +87,7 @@
 //
 // ---------------------------------------------------------------------------
 //
-EXPORT_C CHnMdModel* CHnMdModel::NewLC( 
+EXPORT_C CHnMdModel* CHnMdModel::NewLC(
         MHnMdModelEventObserver* aModelObserver,
         CHnSuiteModelContainer * aSuiteModelContainer )
     {
@@ -114,7 +113,6 @@
     {
     delete iRepositoryWidgetTypeObserver;
     delete iRepositoryShowFolderObserver;
-    delete iRepositoryZoomObserver;
     iLoadedSuites.ResetAndDestroy();
     delete iXmlModelProvider;
     delete iLocalization;
@@ -136,7 +134,7 @@
     CHnMdSuite* lastMdModel = GetLastSuite();
     ASSERT( !lastMdModel->SuiteName().Compare( aSuiteName ) );
 #endif
-    
+
     TInt countDown( aIterations );
     CHnSuiteModel* current = NULL;
     while( ( current = aMulContainer->GetParentSuiteModel() ) != NULL &&
@@ -145,12 +143,12 @@
         current = aMulContainer->GetLastSuiteModel();
         // pop the suite model
         aMulContainer->PopSuiteModelL( current->SuiteName() );
-        
+
         // remove the suite that we are leaving
         DeleteLastSuite();
         countDown--;
         }
-    
+
     current = aMulContainer->GetLastSuiteModel();
     current->GetItemsOrder()->MarkSuiteUninitialized();
     CHnFilter* filter = CHnFilter::NewLC();
@@ -191,7 +189,7 @@
             {
             break;
             }
-        
+
         CHnMdSuite* suite = GetLastSuite();
         if( iXmlModelProvider->SuiteExistsL( suite->SuiteName() ) )
             {
@@ -204,13 +202,13 @@
         aModelContainer->PopSuiteModelL( suite->SuiteName() );
         DeleteLastSuite();
         }
-    
+
     TInt err( KErrNone );
     CHnFilter* filter = CHnFilter::NewLC();
     filter->SetEvaluateSuiteL( ETrue );
 
     SetModeL( iMode );
-    
+
     for( TInt i( paramsArray.Count() - 1 ); i >= 0 && !err; i-- )
         {
         CLiwGenericParamList* suiteParams = CLiwGenericParamList::NewL();
@@ -231,7 +229,7 @@
                 *filter, *iCmnPtrs.iContainer->GetLastSuiteModel() );
         GetLastSuite()->EvaluateL( *iCmnPtrs.iContainer->GetLastSuiteModel() );
         }
-    
+
     CleanupStack::PopAndDestroy( filter );
     CleanupStack::PopAndDestroy( &paramsArray );
 	}
@@ -296,7 +294,7 @@
 //
 EXPORT_C CHnMdSuite* CHnMdModel::GetLastSuite()
     {
-    return (iLoadedSuites.Count()>0) 
+    return (iLoadedSuites.Count()>0)
             ? iLoadedSuites[ iLoadedSuites.Count()-1 ]
             : NULL;
     }
@@ -355,7 +353,7 @@
         {
         User::Leave( KErrArgument );
         }
-    
+
     if ( IsForegroundQueued() && ( !iForegroundTriggeringSuite ||
             iForegroundTriggeringSuite == aJustEvaluatedSuite ) )
     	{
@@ -373,7 +371,7 @@
 //
 CHnMdSuite* CHnMdModel::GetSuite( TInt aPosition )
     {
-    return ( (aPosition >= 0) && (aPosition < iLoadedSuites.Count()) ) 
+    return ( (aPosition >= 0) && (aPosition < iLoadedSuites.Count()) )
             ? iLoadedSuites[ aPosition ]
             : NULL;
     }
@@ -405,11 +403,11 @@
 //
 // ---------------------------------------------------------------------------
 //
-EXPORT_C TInt CHnMdModel::LoadSuiteL( const TDesC& aGenre, 
+EXPORT_C TInt CHnMdModel::LoadSuiteL( const TDesC& aGenre,
         CLiwGenericParamList* aSuiteParams )
     {
     TInt err( KErrNone );
-      
+
 	RXmlEngDocument xmlDoc;
 	// Xml model provider takes ownership of xmlDoc.
 	TRAP( err, iXmlModelProvider->GetModelL( aGenre, xmlDoc ) );
@@ -423,28 +421,28 @@
             err = KErrCorrupt;
             }
         }
-    
+
     if ( !err )
         {
         CHnMdSuite* newSuite = CHnMdSuite::NewLC( element, &iCmnPtrs );
-        
+
         if (aSuiteParams)
             {
             newSuite->SetSuiteParametersL( *aSuiteParams );
             }
-        
+
         TInt pos( 0 );
         newSuite->GetSuiteParameters().FindFirst( pos, KSuiteName8);
         if ( pos == KErrNotFound )
         	{
-        	newSuite->GetSuiteParameters().AppendL( 
+        	newSuite->GetSuiteParameters().AppendL(
         			TLiwGenericParam(KSuiteName8, TLiwVariant( aGenre ) ) );
         	}
 
         iCmnPtrs.iContainer->PushNewSuiteModelL( newSuite->SuiteName() );
         iCmnPtrs.iContainer->GetLastSuiteModel()->GetItemsOrder()->
             SetSuiteId( iCmnPtrs.iIdGenerator->GetNextId() );
-        
+
         CleanupStack::Pop( newSuite );
         iLoadedSuites.AppendL( newSuite );
         }
@@ -452,7 +450,7 @@
     	{
     	MMPERF(("CHnMdModel::LoadSuiteL - Error TRAPPED!"));
     	}
-    
+
     return err;
     }
 
@@ -477,7 +475,7 @@
 EXPORT_C void CHnMdModel::GetCurrentUriL( TDes& aUri )
     {
     iXmlModelProvider->ReloadModelL();
-    
+
     aUri.Append( KPrefMm );
     for( TInt i(0); i < iLoadedSuites.Count(); i++ )
         {
--- a/menufw/hierarchynavigator/hnmetadatamodel/src/hnrepositoryobserver.cpp	Thu Dec 17 08:40:49 2009 +0200
+++ b/menufw/hierarchynavigator/hnmetadatamodel/src/hnrepositoryobserver.cpp	Thu Jan 07 12:39:41 2010 +0200
@@ -35,7 +35,7 @@
 
 class CHnServiceHandler;
 // ---------------------------------------------------------------------------
-// 
+//
 // ---------------------------------------------------------------------------
 //
 void CHnRepositoryObserver::ConstructL( const TUid aRepositoryUid )
@@ -44,27 +44,27 @@
     }
 
 // ---------------------------------------------------------------------------
-// 
+//
 // ---------------------------------------------------------------------------
 //
-CHnRepositoryObserver::CHnRepositoryObserver( THnMdCommonPointers* aCmnPtrs ) 
+CHnRepositoryObserver::CHnRepositoryObserver( THnMdCommonPointers* aCmnPtrs )
     : iCmnPtrs(aCmnPtrs)
     {
-         
+
     }
 
 // ---------------------------------------------------------------------------
-// 
+//
 // ---------------------------------------------------------------------------
 //
-CHnRepositoryObserver::CHnRepositoryObserver( THnMdCommonPointers* aCmnPtrs, TUint32 aId  ) 
+CHnRepositoryObserver::CHnRepositoryObserver( THnMdCommonPointers* aCmnPtrs, TUint32 aId  )
 : iId( aId ), iCmnPtrs(aCmnPtrs)
     {
-         
+
     }
 
 // ---------------------------------------------------------------------------
-// 
+//
 // ---------------------------------------------------------------------------
 //
 CHnRepositoryObserver::~CHnRepositoryObserver()
@@ -78,10 +78,10 @@
 
 // class CHnRepositoryWidgetTypeObserver
 // ---------------------------------------------------------------------------
-// 
+//
 // ---------------------------------------------------------------------------
 //
-CHnRepositoryWidgetTypeObserver * CHnRepositoryWidgetTypeObserver::NewL( 
+CHnRepositoryWidgetTypeObserver * CHnRepositoryWidgetTypeObserver::NewL(
         THnMdCommonPointers* aCmnPtrs, const TUid aRepositoryUid )
     {
     CHnRepositoryWidgetTypeObserver * self = CHnRepositoryWidgetTypeObserver::NewLC( aCmnPtrs, aRepositoryUid );
@@ -90,10 +90,10 @@
     }
 
 // ---------------------------------------------------------------------------
-// 
+//
 // ---------------------------------------------------------------------------
 //
-CHnRepositoryWidgetTypeObserver * CHnRepositoryWidgetTypeObserver::NewLC( 
+CHnRepositoryWidgetTypeObserver * CHnRepositoryWidgetTypeObserver::NewLC(
         THnMdCommonPointers* aCmnPtrs, const TUid aRepositoryUid )
     {
     CHnRepositoryWidgetTypeObserver * self = new (ELeave) CHnRepositoryWidgetTypeObserver( aCmnPtrs );
@@ -103,7 +103,7 @@
     }
 
 // ---------------------------------------------------------------------------
-// 
+//
 // ---------------------------------------------------------------------------
 //
 void CHnRepositoryWidgetTypeObserver::ConstructL( const TUid aRepositoryUid )
@@ -115,26 +115,26 @@
 
 
 // ---------------------------------------------------------------------------
-// 
+//
 // ---------------------------------------------------------------------------
 //
-CHnRepositoryWidgetTypeObserver::CHnRepositoryWidgetTypeObserver( THnMdCommonPointers* aCmnPtrs ) 
+CHnRepositoryWidgetTypeObserver::CHnRepositoryWidgetTypeObserver( THnMdCommonPointers* aCmnPtrs )
     : CHnRepositoryObserver( aCmnPtrs )
     {
-         
+
     }
 
 // ---------------------------------------------------------------------------
-// 
+//
 // ---------------------------------------------------------------------------
 //
 CHnRepositoryWidgetTypeObserver::~CHnRepositoryWidgetTypeObserver()
     {
     iWidgetSwitches.Close();
     }
-   
+
 // ---------------------------------------------------------------------------
-// 
+//
 // ---------------------------------------------------------------------------
 //
 void CHnRepositoryWidgetTypeObserver::HandleNotifyGeneric(TUint32 aId)
@@ -143,7 +143,7 @@
     }
 
 // ---------------------------------------------------------------------------
-// 
+//
 // ---------------------------------------------------------------------------
 //
 void CHnRepositoryWidgetTypeObserver::HandleNotifyGenericL(TUint32 aId)
@@ -152,9 +152,9 @@
     DEBUG(("\tID: %d",aId));
     THnSuiteWidgetType suiteState( EUnspecified );
 
-    iRepository->Get( aId, (int &) suiteState);   
+    iRepository->Get( aId, (int &) suiteState);
     TInt id = iWidgetSwitches.Find(aId);
-    
+
     if ( suiteState == EChangeWidget )
         {
         iWidgetSwitches.AppendL(aId);
@@ -164,7 +164,7 @@
         iWidgetSwitches.Remove(id);
         return;
         }
-    
+
     CHnSuiteModel* lastSuiteModel = iCmnPtrs->iContainer->GetLastSuiteModel();
     TBuf <NCentralRepositoryConstants::KMaxUnicodeStringLength> suiteName;
     if ( iRepository->Get( aId - 1, suiteName ) == KErrNone && lastSuiteModel
@@ -172,21 +172,21 @@
         {
         DEBUG16(("\t\tSuite Name: %S",&suiteName));
         lastSuiteModel->GetItemsOrder()->MarkSuiteUninitialized();
-        
+
         TInt32 suiteId = lastSuiteModel->CustomId();
-        
+
         CLiwGenericParamList* inParam = CLiwGenericParamList::NewL();
         CleanupStack::PushL( inParam );
-               
+
         CLiwDefaultMap* map = CLiwDefaultMap::NewLC();
-        
+
         map->InsertL( KGenreName8, TLiwVariant(suiteName) );
         map->InsertL( KId8, TLiwVariant(suiteId) );
         inParam->AppendL(TLiwGenericParam( KFilterElementItem8, TLiwVariant(map) ));
         CleanupStack::PopAndDestroy( map );
-        
+
         iCmnPtrs->iModelEventObserver->HandleModelEventL( KReevaluateMdEvent, *inParam );
- 
+
         CleanupStack::PopAndDestroy( inParam );
         }
     DEBUG(("_MM_:CHnRepositoryObserver::HandleNotifyGeneric OUT"));
@@ -195,10 +195,10 @@
 
 // class CHnRepositoryShowFolderObserver
 // ---------------------------------------------------------------------------
-// 
+//
 // ---------------------------------------------------------------------------
 //
-CHnRepositoryShowFolderObserver * CHnRepositoryShowFolderObserver::NewL( 
+CHnRepositoryShowFolderObserver * CHnRepositoryShowFolderObserver::NewL(
         THnMdCommonPointers* aCmnPtrs, const TUid aRepositoryUid, const TUint32 aId )
     {
     CHnRepositoryShowFolderObserver * self = CHnRepositoryShowFolderObserver::NewLC( aCmnPtrs, aRepositoryUid, aId );
@@ -207,10 +207,10 @@
     }
 
 // ---------------------------------------------------------------------------
-// 
+//
 // ---------------------------------------------------------------------------
 //
-CHnRepositoryShowFolderObserver * CHnRepositoryShowFolderObserver::NewLC( 
+CHnRepositoryShowFolderObserver * CHnRepositoryShowFolderObserver::NewLC(
         THnMdCommonPointers* aCmnPtrs, const TUid aRepositoryUid, const TUint32 aId )
     {
     CHnRepositoryShowFolderObserver * self = new (ELeave) CHnRepositoryShowFolderObserver( aCmnPtrs, aId );
@@ -220,7 +220,7 @@
     }
 
 // ---------------------------------------------------------------------------
-// 
+//
 // ---------------------------------------------------------------------------
 //
 void CHnRepositoryShowFolderObserver::ConstructL( const TUid aRepositoryUid )
@@ -228,24 +228,24 @@
     CHnRepositoryObserver::ConstructL( aRepositoryUid );
     TInt ret = iRepository->Create( iId, KBlank );
     iNotifyHandler = CCenRepNotifyHandler::NewL(
-        *this, *iRepository, 
+        *this, *iRepository,
     	CCenRepNotifyHandler::EStringKey, iId );
     iNotifyHandler->StartListeningL();
     }
 
 
 // ---------------------------------------------------------------------------
-// 
+//
 // ---------------------------------------------------------------------------
 //
-CHnRepositoryShowFolderObserver::CHnRepositoryShowFolderObserver( THnMdCommonPointers* aCmnPtrs, TUint32 aId  ) 
+CHnRepositoryShowFolderObserver::CHnRepositoryShowFolderObserver( THnMdCommonPointers* aCmnPtrs, TUint32 aId  )
     : CHnRepositoryObserver( aCmnPtrs, aId )
     {
-    
+
     }
 
 // ---------------------------------------------------------------------------
-// 
+//
 // ---------------------------------------------------------------------------
 //
 CHnRepositoryShowFolderObserver::~CHnRepositoryShowFolderObserver()
@@ -254,7 +254,7 @@
     }
 
 // ---------------------------------------------------------------------------
-// 
+//
 // ---------------------------------------------------------------------------
 //
 void CHnRepositoryShowFolderObserver::HandleNotifyString(TUint32 aId, const TDesC16& aNewValue )
@@ -263,20 +263,20 @@
     }
 
 // ---------------------------------------------------------------------------
-// 
+//
 // ---------------------------------------------------------------------------
 //
 void CHnRepositoryShowFolderObserver::HandleNotifyStringL(TUint32 aId, const TDesC16& aNewValue)
     {
     DEBUG(("_MM_:CHnRepositoryShowFolderObserver::HandleNotifyStringL IN"));
     DEBUG(("\tID: %d : %S", aId, &aNewValue));
-       
+
     //++Show Folder
     if( aId == iId && aNewValue.Length())
 		{
         iNotifyType = 0;
 		ExtractCRKeyShowFolderName( aNewValue );
-		
+
 		// iCRKeyFolderItemUid can contain mcs id or uid
 		// in case of uid it will be replaced whith id in HandleNotifyL callback
 		if( iCRKeyFolderItemUid.Length()>0 )
@@ -294,7 +294,7 @@
         CHnMdBaseKey* inDataKey = HnMdKeyFactory::CreateL(
             KInData8, KKeyTypeMap, KDefaultParentId8 );
         CleanupStack::PushL( inDataKey );
-        
+
         CHnMdBaseKey* filter( NULL );
         HBufC8* id( NULL );
         if ( iCRKeyFolderName.Length()>0 && !( iNotifyType & EAPP_UID ) )
@@ -306,8 +306,8 @@
             inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KIdParam, KKeyTypeInteger, *id ) );
             inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KRecursiveSearch8, KKeyTypeBoolean, KStringTrue8 ) );
             inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KFlatResult8, KKeyTypeBoolean, KStringTrue8 ) );
-    
-            filter = HnMdKeyFactory::CreateL( 
+
+            filter = HnMdKeyFactory::CreateL(
                     KFilter8, KKeyTypeMap, KStringTrue8 );
             CleanupStack::PushL( filter );
             filter->AddSubKeyL( HnMdKeyFactory::CreateL( KMcsAppGroupName8, KKeyTypeString, iCRKeyFolderName ) );
@@ -331,7 +331,7 @@
             inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KRecursiveSearch8, KKeyTypeBoolean, KStringTrue8 ) );
             inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KFlatResult8, KKeyTypeBoolean, KStringTrue8 ) );
 
-            filter = HnMdKeyFactory::CreateL( 
+            filter = HnMdKeyFactory::CreateL(
                 KFilter8, KKeyTypeMap, KStringTrue8 );
             CleanupStack::PushL( filter );
             filter->AddSubKeyL( HnMdKeyFactory::CreateL( KUid8, KKeyTypeInteger, iCRKeyFolderItemUid ) );
@@ -346,7 +346,7 @@
             inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KIdParam, KKeyTypeInteger, *id ) );
             inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KParentOnly8, KKeyTypeBoolean, KStringTrue8 ) );
             }
-        
+
         RPointerArray< CHnMdBaseKey > data;
         CleanupClosePushL( data );
         data.AppendL( inDataKey );
@@ -393,32 +393,32 @@
             }
         CleanupStack::PopAndDestroy( inDataKey );
 		}
-    
+
     DEBUG(("_MM_:CHnRepositoryShowFolderObserver::HandleNotifyStringL OUT"));
-    
+
     }
 
 // ---------------------------------------------------------------------------
-// 
+//
 // ---------------------------------------------------------------------------
 //
 void CHnRepositoryShowFolderObserver::ExtractCRKeyShowFolderName( const TDesC& aNewValue )
 	{
-	DEBUG(( "_MM_:CHnRepositoryShowFolderObserver::ExtractCRKeyShowFolderName IN" ));    	
+	DEBUG(( "_MM_:CHnRepositoryShowFolderObserver::ExtractCRKeyShowFolderName IN" ));
 	iCRKeyFolderName.Copy( KBlank );
 	iCRKeyFolderItemUid.Copy( KBlank );
-	
+
 	int keyValueLength = aNewValue.Length();
 	if( keyValueLength )
 		{
 			TApaAppGroupName folder;
 	        TBuf<KTimeStampBufferLength + KUidStringLength + 1> tempBuf;
 	        TBuf<KTimeStampBufferLength> timeStamp;
-	        
+
 	        TInt ret = aNewValue.Find( KComma );
 	        if( (ret == KErrNotFound )|| ( ret == ( keyValueLength-1 ) ) )
 	            {
-	            DEBUG(( "_MM_:CHnRepositoryShowFolderObserver::ExtractCRKeyShowFolderName (bad CR key value input) OUT" ));    		        	            
+	            DEBUG(( "_MM_:CHnRepositoryShowFolderObserver::ExtractCRKeyShowFolderName (bad CR key value input) OUT" ));
 	        	return;	//bad CR key value input
 	            }
 	        if( ret>KApaMaxAppGroupName )
@@ -431,7 +431,7 @@
 	            return;
 	            }
 	        tempBuf.Copy(aNewValue.Mid( ret + 1 ) );
-	        
+
 	        TInt posUid = tempBuf.Find( KComma );
 	        if ( KErrNotFound != posUid )
 	        	{
@@ -454,31 +454,31 @@
                     }
 	        	timeStamp.Copy( tempBuf );
 	        	}
-	        	
+
 	        TTime currentTime;
 	        currentTime.HomeTime();
 	        TTimeIntervalSeconds interval;
-	        
+
 	        TTime timeStampTime;
 	        ret = timeStampTime.Set(timeStamp);
-	        
+
 	        if(ret == KErrGeneral )
 	            {
-	            DEBUG(( "_MM_:CHnRepositoryShowFolderObserver::ExtractCRKeyShowFolderName (bad timestamp) OUT" ));    		        	            
-	        	return; // bad time stamp value                
+	            DEBUG(( "_MM_:CHnRepositoryShowFolderObserver::ExtractCRKeyShowFolderName (bad timestamp) OUT" ));
+	        	return; // bad time stamp value
 	            }
-	        
+
 	        ret = currentTime.SecondsFrom( timeStampTime, interval );
-	        
+
 	        if( interval.Int() < 0 )
 	            {//negative timestamp is set ahead of current time...!
-	            DEBUG(( "_MM_:CHnRepositoryShowFolderObserver::ExtractCRKeyShowFolderName (negative interval) OUT" ));    		        	            	            
+	            DEBUG(( "_MM_:CHnRepositoryShowFolderObserver::ExtractCRKeyShowFolderName (negative interval) OUT" ));
 	        	return;
 	            }
-	        
+
 	        if(( interval.Int()) > KTimeStampCutOff )
 	            {//positive timestamp but more than 5 seconds
-	            DEBUG(( "_MM_:CHnRepositoryShowFolderObserver::ExtractCRKeyShowFolderName (more than 5 seconds) OUT" ));    		        
+	            DEBUG(( "_MM_:CHnRepositoryShowFolderObserver::ExtractCRKeyShowFolderName (more than 5 seconds) OUT" ));
 	        	return;
 	            }
 	        else
@@ -486,16 +486,16 @@
 	        	iCRKeyFolderName.Copy(folder);
         	    }
 		}
-	DEBUG(( "_MM_:CHnRepositoryShowFolderObserver::ExtractCRKeyShowFolderName OUT" ));    	
+	DEBUG(( "_MM_:CHnRepositoryShowFolderObserver::ExtractCRKeyShowFolderName OUT" ));
 	}
 
 // ---------------------------------------------------------------------------
-// 
+//
 // ---------------------------------------------------------------------------
 //
 void CHnRepositoryShowFolderObserver::GetShowFolderL( TUint32 aFolderId )
     {
-       
+
     CHnMdBaseKey* inDataKey = HnMdKeyFactory::CreateL(
         KInData8, KKeyTypeMap, KDefaultParentId8 );
     CleanupStack::PushL( inDataKey );
@@ -507,7 +507,7 @@
     RPointerArray< CHnMdBaseKey > data;
     CleanupClosePushL( data );
     data.Append( inDataKey );
-    
+
     CHnMdBaseKey* serviceData = HnMdKeyFactory::CreateL(
         KServiceContentName, KKeyTypeString, KMatrixMenuData );
     CleanupStack::PushL( serviceData );
@@ -542,12 +542,12 @@
     }
 
 // ---------------------------------------------------------------------------
-// 
+//
 // ---------------------------------------------------------------------------
 //
 void CHnRepositoryShowFolderObserver::GetShowFolderGroupNameL()
     {
-       
+
     CHnMdBaseKey* inDataKey = HnMdKeyFactory::CreateL(
         KInData8, KKeyTypeMap, KDefaultParentId8 );
     CleanupStack::PushL( inDataKey );
@@ -556,14 +556,14 @@
     inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KIdParam, KKeyTypeInteger, *id ) );
     inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KRecursiveSearch8, KKeyTypeBoolean, KStringTrue8 ) );
     inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KFlatResult8, KKeyTypeBoolean, KStringTrue8 ) );
-    
-    CHnMdBaseKey* filter = HnMdKeyFactory::CreateL( 
+
+    CHnMdBaseKey* filter = HnMdKeyFactory::CreateL(
             KFilter8, KKeyTypeMap, KStringTrue8 );
     CleanupStack::PushL( filter );
     filter->AddSubKeyL( HnMdKeyFactory::CreateL( KMcsAppGroupName8, KKeyTypeString, iCRKeyFolderName ) );
     filter->AddSubKeyL( HnMdKeyFactory::CreateL( KType8, KKeyTypeString, KMenuFolder8 ) );
     filter->AddSubKeyL( HnMdKeyFactory::CreateL( KHidden8, KKeyTypeBoolean, KStringFalse8 ) );
-    
+
     RPointerArray< CHnMdBaseKey > data;
     CleanupClosePushL( data );
     data.AppendL( inDataKey );
@@ -571,7 +571,7 @@
         {
         data.AppendL( filter );
         }
-    
+
     CHnMdBaseKey* serviceData = HnMdKeyFactory::CreateL(
         KServiceContentName, KKeyTypeString, KMatrixMenuData );
     CleanupStack::PushL( serviceData );
@@ -607,7 +607,7 @@
     }
 
 // ---------------------------------------------------------------------------
-// 
+//
 // ---------------------------------------------------------------------------
 //
 TInt CHnRepositoryShowFolderObserver::HandleNotifyL(
@@ -644,7 +644,7 @@
                 iNotifyType |= ESECOND_NOTIFY;
                 TLiwVariant varId; varId.PushL();
                 TLiwVariant varParentId; varParentId.PushL();
-                
+
                 HnLiwUtils::GetVariantL( aEventParamList, KIdPath8, 0, varId );
                 HnLiwUtils::GetVariantL( aEventParamList, KParentIdPath8, 0, varParentId );
 
@@ -656,7 +656,7 @@
 
                 CleanupStack::PopAndDestroy( &varParentId );
                 CleanupStack::PopAndDestroy( &varId );
-                
+
                 GetShowFolderL( parentId );
                 return KErrNone;
                 }
@@ -692,43 +692,43 @@
                 {
                 return KErrNotFound;
                 }
-    
+
             TLiwVariant varId; varId.PushL();
             TLiwVariant varAppGroupName; varAppGroupName.PushL();
             TLiwVariant varSuiteName; varSuiteName.PushL();
             TLiwVariant varChildrenCount; varChildrenCount.PushL();
-    
+
             HnLiwUtils::GetVariantL( aEventParamList, KIdPath8, 0, varId );
             HnLiwUtils::GetVariantL( aEventParamList, KAppGroupNamePath8, 0, varAppGroupName );
             HnLiwUtils::GetVariantL( aEventParamList, KTitleNamePath8, 0, varSuiteName );
             HnLiwUtils::GetVariantL( aEventParamList, KChildrenCountPath8, 0, varChildrenCount );
-            
+
             CLiwGenericParamList* paramList = CLiwGenericParamList::NewL();
             CleanupStack::PushL( paramList );
-                   
+
             CLiwDefaultMap* map = CLiwDefaultMap::NewLC();
-            
-            paramList->AppendL( TLiwGenericParam( KSuiteName8, 
-                    TLiwVariant( KFolderSuite ) ) );    
-            
-            map->InsertL( KSuiteName8, varSuiteName ); 
+
+            paramList->AppendL( TLiwGenericParam( KSuiteName8,
+                    TLiwVariant( KFolderSuite ) ) );
+
+            map->InsertL( KSuiteName8, varSuiteName );
             map->InsertL( KFolderId8, varId );
             map->InsertL( KRemoveLocked8, TLiwVariant( KStringFalse8 ) );
             map->InsertL( KParentFolderId8, varId );
             map->InsertL( KTmpParentFolderId8, varId );
             map->InsertL( KMcsAppGroupName8, varAppGroupName );
-                
+
             paramList->AppendL( TLiwGenericParam( KParams8, TLiwVariant( map ) ) );
-            
+
             CleanupStack::PopAndDestroy( map );
-            
+
             while ( iCmnPtrs->iModel->LoadedSuitesCount() > 1 )
                 {
                 CHnMdSuite* suite = iCmnPtrs->iModel->GetLastSuite();
                 iCmnPtrs->iContainer->PopSuiteModelL( suite->SuiteName() );
-                iCmnPtrs->iModel->DeleteLastSuite();  
+                iCmnPtrs->iModel->DeleteLastSuite();
                 }
-    
+
             if ( iCmnPtrs->iContainer->GetLastSuiteModel()->CustomId() != varId.AsTInt64() )
                 {
                 iCmnPtrs->iModelEventObserver->HandleModelEventL( KNewSuiteLoadedMdEvent, *paramList );
@@ -754,33 +754,33 @@
                 CleanupStack::PopAndDestroy( pl );
                 CleanupStack::PopAndDestroy( &varId );
                 CleanupStack::PopAndDestroy( &varItemCustomId );
-    
+
                 iCRKeyFolderItemUid.Copy( KBlank );
                 }
-    
+
             iNotifyType = 0;
             iCRKeyFolderName.Copy( KBlank );
             iRepository->Set( iId, KBlank );
-            
+
             CleanupStack::PopAndDestroy( paramList );
             CleanupStack::PopAndDestroy( &varChildrenCount );
             CleanupStack::PopAndDestroy( &varSuiteName );
             CleanupStack::PopAndDestroy( &varAppGroupName );
             CleanupStack::PopAndDestroy( &varId );
         }
-	
+
 	DEBUG(("_MM_:CHnRepositoryShowFolderObserver::HandleNotifyL OUT"));
 	return KErrNone;
 	}
 
 // ---------------------------------------------------------------------------
-// 
+//
 // ---------------------------------------------------------------------------
 //
-void CHnRepositoryShowFolderObserver::HandleSuiteEventL ( THnCustomSuiteEvent aCustomSuiteEvent, 
+void CHnRepositoryShowFolderObserver::HandleSuiteEventL ( THnCustomSuiteEvent aCustomSuiteEvent,
         CHnSuiteModel *aModel )
 	{
-	
+
 	if ( aCustomSuiteEvent == ESuiteModelInitialized && iCRKeyFolderItemUid.Length() > 0 )
 		{
 	      if (iCRKeyFolderItemUid.Length() > 0 )
@@ -802,112 +802,4 @@
 		}
 	}
 
-
-// class CHnRepositoryZoomObserver
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-CHnRepositoryZoomObserver * CHnRepositoryZoomObserver::NewL( 
-        THnMdCommonPointers* aCmnPtrs, const TUid aRepositoryUid, const TUint32 aId )
-    {
-    CHnRepositoryZoomObserver * self = CHnRepositoryZoomObserver::NewLC( aCmnPtrs, aRepositoryUid, aId );
-    CleanupStack::Pop(self);
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-CHnRepositoryZoomObserver * CHnRepositoryZoomObserver::NewLC( 
-        THnMdCommonPointers* aCmnPtrs, const TUid aRepositoryUid, const TUint32 aId )
-    {
-    CHnRepositoryZoomObserver * self = new (ELeave) CHnRepositoryZoomObserver( aCmnPtrs, aId );
-    CleanupStack::PushL(self);
-    self->ConstructL( aRepositoryUid );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-void CHnRepositoryZoomObserver::ConstructL( const TUid aRepositoryUid )
-    {
-    CHnRepositoryObserver::ConstructL( aRepositoryUid );
-    iNotifyHandler = CCenRepNotifyHandler::NewL(
-        *this, *iRepository, 
-    	CCenRepNotifyHandler::EIntKey, iId );
-    InitializeL();
-    iNotifyHandler->StartListeningL();
-    }
-
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-CHnRepositoryZoomObserver::CHnRepositoryZoomObserver( THnMdCommonPointers* aCmnPtrs, TUint32 aId  ) 
-    : CHnRepositoryObserver( aCmnPtrs, aId )
-    {
-    
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-CHnRepositoryZoomObserver::~CHnRepositoryZoomObserver()
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-void CHnRepositoryZoomObserver::HandleNotifyInt(TUint32 aId, TInt aNewValue )
-    {
-    TRAP_IGNORE( HandleNotifyIntL(aId, aNewValue) );
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-void CHnRepositoryZoomObserver::HandleNotifyIntL(TUint32 aId, TInt aNewValue )
-    {
-    DEBUG(("_MM_:CHnRepositoryZoomObserver::HandleNotifyStringL IN"));
-    DEBUG(("\tID: %d : %d", aId, aNewValue));
-    
-	CLiwGenericParamList* paramList = CLiwGenericParamList::NewL();
-	CleanupStack::PushL( paramList );
-    
-	if ( (TAknUiZoom)aNewValue == EAknUiZoomLarge )
-		{
-		iCmnPtrs->iModelEventObserver->HandleModelEventL( KZoomLarge, *paramList );
-		}
-	else if ( (TAknUiZoom)aNewValue == EAknUiZoomSmall )
-		{
-		iCmnPtrs->iModelEventObserver->HandleModelEventL( KZoomSmall, *paramList );
-		}
-	else
-		{
-		iCmnPtrs->iModelEventObserver->HandleModelEventL( KZoomNormal, *paramList );
-		}
-	 
-    CleanupStack::PopAndDestroy( paramList );
-    DEBUG(("_MM_:CHnRepositoryZoomObserver::HandleNotifyStringL OUT"));
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-void CHnRepositoryZoomObserver::InitializeL()
-	{
-	TInt value(0);
-	iRepository->Get( iId, value); 
-	HandleNotifyIntL( iId, value );
-	}  
 // End of File
--- a/menufw/hierarchynavigator/hnutilities/group/bld.inf	Thu Dec 17 08:40:49 2009 +0200
+++ b/menufw/hierarchynavigator/hnutilities/group/bld.inf	Thu Jan 07 12:39:41 2010 +0200
@@ -28,9 +28,7 @@
 ../inc/hnmdkeyfactory.h         |../../../inc/hnmdkeyfactory.h
 ../inc/hnservicehandler.h       |../../../inc/hnservicehandler.h
 
-../data/20012474_newMenuFw.txt  /epoc32/release/winscw/udeb/z/private/10202be9/20012474.txt
-../data/20012474_newMenuFw.txt  /epoc32/release/winscw/urel/z/private/10202be9/20012474.txt
-../data/20012474_newMenuFw.txt  /epoc32/data/z/private/10202be9/20012474.txt 
+../data/20012474_newMenuFw.txt z:/private/10202be9/20012474.txt
 
 PRJ_MMPFILES
 hnutilities.mmp
--- a/menufw/menufwui/matrixmenu/group/bld.inf	Thu Dec 17 08:40:49 2009 +0200
+++ b/menufw/menufwui/matrixmenu/group/bld.inf	Thu Jan 07 12:39:41 2010 +0200
@@ -33,9 +33,7 @@
 ../inc/mmguiuid.hrh             |../../../inc/mmguiuid.hrh
 
 // backup registration
-backup_registration.xml /epoc32/data/Z/private/101F4CD2/backup_registration.xml
-backup_registration.xml /epoc32/release/winscw/udeb/Z/private/101F4CD2/backup_registration.xml
-backup_registration.xml /epoc32/release/winscw/urel/Z/private/101F4CD2/backup_registration.xml
+backup_registration.xml Z:/private/101F4CD2/backup_registration.xml
 
 PRJ_MMPFILES
 matrixmenu.mmp
--- a/menufw/menufwui/matrixmenu/group/matrixmenu.mmp	Thu Dec 17 08:40:49 2009 +0200
+++ b/menufw/menufwui/matrixmenu/group/matrixmenu.mmp	Thu Jan 07 12:39:41 2010 +0200
@@ -35,7 +35,6 @@
 SOURCE          mmapplication.cpp
 SOURCE          mmappui.cpp
 SOURCE          mmdocument.cpp
-SOURCE          mmpropertysubscriber.cpp
 SOURCE          mmnomemory.cpp
 SOURCE          mmappkeyhandler.cpp
 
Binary file menufw/menufwui/matrixmenu/help/data/xhtml.zip has changed
--- a/menufw/menufwui/matrixmenu/inc/mmappui.h	Thu Dec 17 08:40:49 2009 +0200
+++ b/menufw/menufwui/matrixmenu/inc/mmappui.h	Thu Jan 07 12:39:41 2010 +0200
@@ -12,7 +12,7 @@
 * Contributors:
 *
 * Description:  Application UI class
-*  Version     : %version: MM_83.1.2.1.23.1.18 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: MM_83.1.2.1.23.1.19 % << Don't touch! Updated by Synergy at check-out.
 *
 */
 
@@ -28,14 +28,12 @@
 #include <aknappui.h>
 #include <akntoolbarobserver.h>
 #include <eiklbo.h>
-#include <hwrmdomainpskeys.h> //for flip change status
 #include <AknsSrvClient.h>
 
 #include "hncontrollerinterface.h"
 #include "mmwidgetobserver.h"
 #include "hnsuiteobserver.h"
 #include "mmactionrequest.h"
-#include "mmpropertysubscriber.h"
 #include "hnglobals.h"
 
 
@@ -76,7 +74,6 @@
 							public MAknToolbarObserver,
                             public MMmWidgetObserver,
                             public MMmActionRequest,
-                            public MMmPropertyChangeObserver,
                             public MAknsSkinChangeObserver
 	{
 
@@ -307,24 +304,11 @@
     TInt ExecuteExtensionActionL( const TUid aUid , const TDesC& aCommand,
                 CLiwGenericParamList* aEventParamList );
 
-// from MMmPropertyChangeObserver
-    /**
-     * Called when property changed
-     * @since S60 v3.0
-     */
-    void PropertyChangedL(TInt aValue);
-
-    /**
-     * Sets the zoom for the application.
-     */
-    void SetZoom( TAknUiZoom aZoom );
-
     /**
      * Reloads cascade menu map.
      */
     void ReloadCascadeMenuMapL();
 
-
     /**
      * Called by the skin server when skin content is changed and the
      * connected client wants to be informed.
@@ -784,14 +768,6 @@
      void ResetContainerMapToRootL();
 
      /**
-      * Called to retrive flip status.
-      *
-      * @since S60 v5.0
-      * @return Is flip open.
-      */
-     TBool FlipOpen();
-
-     /**
       * Resets view to root.
       *
       * @return ETrue if view was not displaying root suite already, EFalse otherwise
@@ -962,22 +938,6 @@
     CMMExtensionManager* iMmExtManager;
 
 	/**
-	 * Sliding keyboard (flip) status
-	 */
-    EPSHWRMFlipStatus iKeyboardFlipStatus;
-
-	/**
-	 * Slider event subscriber
-	 * own
-	 */
-    CMmPropertySubscriber* iSliderEventSubscriber;
-
-    /**
-     * Current zoom;
-     */
-    TAknUiZoom iZoom;
-
-    /**
      * Screen state.
      */
     TBool iScreenOn;
--- a/menufw/menufwui/matrixmenu/inc/mmpropertysubscriber.h	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,85 +0,0 @@
-/*
-* 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:  Subscribes properties from P&S
- *
-*/
-
-#ifndef MMPROPERTYSUBSCRIBER_H
-#define MMPROPERTYSUBSCRIBER_H
-
-#include <e32base.h>	// For CActive, link against: euser.lib
-#include <e32property.h>
-// Observer for property change. Currently integer value supported
-class MMmPropertyChangeObserver
-    {
-public:    
-    virtual void PropertyChangedL(TInt aValue)=0;
-    };
-
-/**
-*  Subcribes property from P&S and listen property changes
-* 
-*  @lib xn3layoutengine.lib
-*  @since Series 60 5.0
-*/
-NONSHARABLE_CLASS( CMmPropertySubscriber ) : public CActive
-    {
-public:
-    // Cancel and destroy
-    ~CMmPropertySubscriber();
-
-    /**
-    * Two-phased constructor.
-    * @param aUid P&S property category
-    * @param aKey P&S property key
-    * @param aObserver Given property change observer
-    */
-    static CMmPropertySubscriber* NewL(
-            const TUid aUid, 
-            const TUint32 aKey,
-            MMmPropertyChangeObserver& aObserver);
-
-    /**
-    * Two-phased constructor.
-    * @param aUid P&S property category
-    * @param aKey P&S property key
-    * @param aObserver Given property change observer
-    */
-    static CMmPropertySubscriber* NewLC(
-            const TUid aUid, 
-            const TUint32 aKey,
-            MMmPropertyChangeObserver& aObserver);
-
-private:
-    // C++ constructor
-    CMmPropertySubscriber(MMmPropertyChangeObserver& aObserver);
-
-    // Second-phase constructor
-    void ConstructL(const TUid aUid,const TUint32 aKey);
-
-private: // From CActive
-    // Handle completion
-    void RunL();
-
-    // How to cancel me
-    void DoCancel();
-    
-private:
-    //Observer for property changes
-    MMmPropertyChangeObserver& iPropertyChangeObserver;
-    // Property to listen
-    RProperty iProperty;
-    };
-
-#endif // MMPROPERTYSUBSCRIBER_H
--- a/menufw/menufwui/matrixmenu/src/mmappui.cpp	Thu Dec 17 08:40:49 2009 +0200
+++ b/menufw/menufwui/matrixmenu/src/mmappui.cpp	Thu Jan 07 12:39:41 2010 +0200
@@ -12,8 +12,8 @@
 * Contributors:
 *
 * Description:  Application UI class
-*  Version     : %version: MM_176.1.28.1.52 % << Don't touch! Updated by Synergy at check-out.
-*  Version     : %version: MM_176.1.28.1.52 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: MM_176.1.28.1.54 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: MM_176.1.28.1.54 % << Don't touch! Updated by Synergy at check-out.
 *
 */
 
@@ -42,7 +42,6 @@
 #include <matrixmenu.rsg>
 #include <akntabgrp.h>
 #include <apgcli.h>
-#include <hwrmdomainpskeys.h> //flip status enums
 #include <AknDef.hrh>
 #include <AknDlgShut.h>
 #include <mmenuinternalPSkeys.h>
@@ -66,7 +65,6 @@
 #include "mmwidgetcontainer.h"
 #include "mmtemplatelibrary.h"
 #include "mmextensionmanager.h"
-#include "mmpropertysubscriber.h"
 #include "hnitemsorder.h"
 
 #include "mmnomemory.h"
@@ -124,10 +122,6 @@
 
     iMmExtManager = CMMExtensionManager::NewL( *this );
 
-    iKeyboardFlipStatus = EPSHWRMFlipStatusUninitialized;
-    iSliderEventSubscriber = CMmPropertySubscriber::NewL(KPSUidHWRM,
-            KHWRMFlipStatus, *this);
-
     iScreenOn = ETrue;
     iSkinChangeNeeded = EFalse;
     iSkinChangeInProgress = EFalse;
@@ -190,7 +184,6 @@
     delete iHNInterface;
     FeatureManager::UnInitializeLib();
     delete iMmExtManager;
-    delete iSliderEventSubscriber;
     delete iTemplateLibrary;
     delete iDummyTemplateLib;
     delete iAppkeyHandler;
@@ -315,9 +308,9 @@
         CAknAppUi::ProcessCommandL( aCommand );
         }
 
-    if (iCurrentContainer && iCurrentContainer == TopFocusedControl() )
+    if ( iCurrentContainer )
     	{
-    	iCurrentContainer->HandleTopFocusL();
+    	iCurrentContainer->EndLongTapL();
     	}
     }
 
@@ -728,7 +721,8 @@
         TBool idByContainer = iCurrentContainer->IsHighlightVisible() &&
                 iCurrentContainer->GetSuiteModelL()->GetItemModelsCount() > 1;
         TInt current = idByContainer ?
-             iCurrentContainer->GetHighlight() : KErrNotFound;
+             iCurrentContainer->GetHighlight():
+             iCurrentContainer->GetSuiteModelL()->GetSuiteHighlight();
         ForwardEventToHNL( aEvent, current );
         }
 
@@ -763,15 +757,6 @@
         case EStopEditMode:
             SetEditModeL( EFalse );
             break;
-        case EZoomLarge:
-            SetZoom( EAknUiZoomLarge );
-            break;
-        case EZoomSmall:
-            SetZoom( EAknUiZoomSmall );
-            break;
-        case EZoomNormal:
-            SetZoom( EAknUiZoomNormal );
-            break;
         case EForegroundGain:
             {
             DEBUG(("_MM_:CMmAppUi::NotifyUiRefreshL Foreground"));
@@ -1333,10 +1318,9 @@
 		MMPERF(("CMmAppUi::DynInitMenuPaneL - STOP"));
 		}
 
-	if ( !popupMenuDisplayed && iCurrentContainer
-			&& iCurrentContainer == TopFocusedControl() )
+	if ( !popupMenuDisplayed && iCurrentContainer )
 		{
-		iCurrentContainer->HandleTopFocusL( EFalse );
+		iCurrentContainer->EndLongTapL( EFalse );
 		HandleHighlightItemSingleClickedL(
 				iCurrentContainer->Widget()->CurrentItemIndex() );
 		}
@@ -1356,10 +1340,6 @@
         {
         ForwardEventToHNL( KKeyIdSelect, aIndex );
         }
-    else if ( iCurrentSuiteModel->WidgetType() == EGridWidget && FlipOpen() )
-		{
-		ForwardEventToHNL( KKeyIdSelect, aIndex );
-		}
     else if ( iCurrentSuiteModel->WidgetType() == EGridWidget
             && IsEditMode() && iCurrentContainer->GetPreviousHighlight() == aIndex
             && !iCurrentContainer->IsDraggable())
@@ -1761,8 +1741,6 @@
     iCurrentContainer->Widget()->View()->SetDisableRedraw(ETrue);
     iDummyContainer->MakeVisible( ETrue );
     RefreshCbaL();
-    iCurrentContainer->SetZoom( iZoom );
-    iCurrentContainer->SetFlipOpenL( FlipOpen() );
     iCurrentContainer->SetEditModeL( IsEditMode() );
     iCurrentContainer->SetSuiteModelL( iCurrentSuiteModel );
     iCurrentContainer->HandleResourceChange( KAknsMessageSkinChange );
@@ -1796,8 +1774,6 @@
     if ( iCurrentSuiteModel )
         {
         iCurrentContainer->Widget()->View()->SetDisableRedraw(ETrue);
-        iCurrentContainer->SetZoom( iZoom );
-        iCurrentContainer->SetFlipOpenL( FlipOpen() );
         iCurrentContainer->SetEditModeL( IsEditMode() );
         iCurrentContainer->SetSuiteModelL( iCurrentSuiteModel );
         iCurrentContainer->SetEmptyTextL( iCurrentSuiteModel->EmptyText() );
@@ -2344,8 +2320,6 @@
     iHNInterface = NULL;
     delete iMmExtManager;
     iMmExtManager = NULL;
-    delete iSliderEventSubscriber;
-    iSliderEventSubscriber = NULL;
     delete iTemplateLibrary;
     iTemplateLibrary = NULL;
 
@@ -2367,8 +2341,6 @@
 
     iMmExtManager = CMMExtensionManager::NewL( *this );
 
-    iKeyboardFlipStatus = EPSHWRMFlipStatusUninitialized;
-
     iScreenOn = ETrue;
     iSkinChangeNeeded = EFalse;
     iSkinChangeInProgress = EFalse;
@@ -2433,7 +2405,6 @@
             if( created )
                 {
                 containerToLoad->Widget()->View()->SetDisableRedraw( ETrue );
-                containerToLoad->SetFlipOpenL( FlipOpen() );
                 containerToLoad->SetEditModeL( IsEditMode() );
                 containerToLoad->SetSuiteModelL( aModel );
                 containerToLoad->SetEmptyTextL( aModel->EmptyText() );
@@ -2776,57 +2747,6 @@
 //
 // ---------------------------------------------------------------------------
 //
-void CMmAppUi::PropertyChangedL(TInt aValue)
-    {
-    iKeyboardFlipStatus = (EPSHWRMFlipStatus)aValue;
-
-    if ( iCurrentContainer )
-        {
-        if( iKeyboardFlipStatus == EPSHWRMFlipOpen )
-            {
-            TBool wasHighlightVisible = iCurrentContainer->IsHighlightVisible();
-            iCurrentContainer->SetFlipOpenL( ETrue );
-            if ( IsForeground() && !IsEditMode() && !wasHighlightVisible )
-                {
-                iCurrentContainer->SetDefaultHighlightL( ETrue );
-                }
-            }
-        else if( iKeyboardFlipStatus == EPSHWRMFlipClosed )
-            {
-            iCurrentContainer->SetFlipOpenL( EFalse );
-            }
-        }
-    }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-TBool CMmAppUi::FlipOpen()
-    {
-    return iKeyboardFlipStatus == EPSHWRMFlipOpen;
-    }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CMmAppUi::SetZoom( TAknUiZoom aZoom )
-    {
-    if ( iZoom != aZoom)
-        {
-        if ( iCurrentContainer )
-            {
-            iCurrentContainer->HandleZoomChanged( aZoom );
-            }
-        }
-    iZoom = aZoom;
-    }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
 TBool CMmAppUi::ResetToRootL()
     {
     TBool resetConsumed( EFalse );
@@ -2842,7 +2762,6 @@
         if( iCurrentContainer )
             {
             iCurrentContainer->ResetWidgetPosition();
-            iCurrentContainer->SetZoom( iZoom );
             AddToStackL( iCurrentContainer );
             }
         RefreshUiPanesL( ETrue );
@@ -3029,8 +2948,7 @@
 		//should be reset to normal then.
 		if( AknLayoutUtils::PenEnabled() )
 			{
-			if( iCurrentContainer->WidgetType() == EGridWidget
-				&& !FlipOpen() && !IsEditMode() )
+			if( iCurrentContainer->WidgetType() == EGridWidget && !IsEditMode() )
 				{
 				iCurrentContainer->Widget()->View()->ItemDrawer()->
 					SetFlags( CListItemDrawer::EDisableHighlight );
--- a/menufw/menufwui/matrixmenu/src/mmpropertysubscriber.cpp	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,97 +0,0 @@
-/*
-* 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:  Subscribes properties from P&S
- *
-*/
-
-
-#include "mmpropertysubscriber.h"
-
-// -----------------------------------------------------------------------------
-// -----------------------------------------------------------------------------
-//
-CMmPropertySubscriber::CMmPropertySubscriber(MMmPropertyChangeObserver& aObserver) 
-    : CActive( EPriorityStandard ),
-    iPropertyChangeObserver(aObserver)
-     {
-     }
-
-// -----------------------------------------------------------------------------
-// -----------------------------------------------------------------------------
-//
-CMmPropertySubscriber* CMmPropertySubscriber::NewLC(
-    const TUid aUid, 
-    const TUint32 aKey,
-    MMmPropertyChangeObserver& aObserver)
-    {
-    CMmPropertySubscriber* self = new ( ELeave ) CMmPropertySubscriber(aObserver);
-    CleanupStack::PushL(self);
-    self->ConstructL(aUid,aKey);
-    return self;
-    }
-// -----------------------------------------------------------------------------
-// -----------------------------------------------------------------------------
-//
-CMmPropertySubscriber* CMmPropertySubscriber::NewL(
-    const TUid aUid, 
-    const TUint32 aKey,
-    MMmPropertyChangeObserver& aObserver)
-    {
-    CMmPropertySubscriber* self = CMmPropertySubscriber::NewLC(aUid,aKey,aObserver);
-    CleanupStack::Pop(); // self;
-    return self;
-    }
-// -----------------------------------------------------------------------------
-// -----------------------------------------------------------------------------
-//
-void CMmPropertySubscriber::ConstructL(
-    const TUid aUid, 
-    const TUint32 aKey)
-    {
-    User::LeaveIfError( iProperty.Attach( aUid, aKey ) );
-    CActiveScheduler::Add( this); // Add to scheduler
-    // initial subscription and process current property value
-    RunL();
-    }
-// -----------------------------------------------------------------------------
-// -----------------------------------------------------------------------------
-//
-CMmPropertySubscriber::~CMmPropertySubscriber()
-    {
-    Cancel(); // Cancel any request, if outstanding
-    iProperty.Close();
-    }
-// -----------------------------------------------------------------------------
-// -----------------------------------------------------------------------------
-//
-void CMmPropertySubscriber::DoCancel()
-    {
-    iProperty.Close();
-    }
-// -----------------------------------------------------------------------------
-// -----------------------------------------------------------------------------
-//
-void CMmPropertySubscriber::RunL()
-    {
-    // resubscribe before processing new value to prevent missing updates
-    iProperty.Subscribe( iStatus );
-    SetActive();
-     
-    TInt intValue;
-    if( iProperty.Get( intValue ) != KErrNotFound )
-        {
-        iPropertyChangeObserver.PropertyChangedL(intValue);
-        }
-    }
-
--- a/menufw/menufwui/mmwidgets/bwins/mmwidgetsu.def	Thu Dec 17 08:40:49 2009 +0200
+++ b/menufw/menufwui/mmwidgets/bwins/mmwidgetsu.def	Thu Jan 07 12:39:41 2010 +0200
@@ -1,45 +1,42 @@
 EXPORTS
 	?SetHighlightVisibilityL@CMmWidgetContainer@@UAEXH@Z @ 1 NONAME ; void CMmWidgetContainer::SetHighlightVisibilityL(int)
 	?SetDefaultHighlightL@CMmGridContainer@@UAEXH@Z @ 2 NONAME ; void CMmGridContainer::SetDefaultHighlightL(int)
-	?HandleZoomChanged@CMmWidgetContainer@@QAEXW4TAknUiZoom@@@Z @ 3 NONAME ; void CMmWidgetContainer::HandleZoomChanged(enum TAknUiZoom)
-	?PrepareForGarbage@CMmWidgetContainer@@QAEXXZ @ 4 NONAME ; void CMmWidgetContainer::PrepareForGarbage(void)
-	?GetPreviousHighlight@CMmWidgetContainer@@UAEHXZ @ 5 NONAME ; int CMmWidgetContainer::GetPreviousHighlight(void)
+	?PrepareForGarbage@CMmWidgetContainer@@QAEXXZ @ 3 NONAME ; void CMmWidgetContainer::PrepareForGarbage(void)
+	?GetPreviousHighlight@CMmWidgetContainer@@UAEHXZ @ 4 NONAME ; int CMmWidgetContainer::GetPreviousHighlight(void)
+	?SetHasFocusL@CMmWidgetContainer@@QAEXH@Z @ 5 NONAME ; void CMmWidgetContainer::SetHasFocusL(int)
 	?HandleItemAdditionL@CMmWidgetContainer@@UAEXXZ @ 6 NONAME ; void CMmWidgetContainer::HandleItemAdditionL(void)
 	?NewLC@CMmTemplateLibrary@@SAPAV1@XZ @ 7 NONAME ; class CMmTemplateLibrary * CMmTemplateLibrary::NewLC(void)
 	?IsDraggable@CMmWidgetContainer@@QAEHXZ @ 8 NONAME ; int CMmWidgetContainer::IsDraggable(void)
 	?HandleItemRemovalL@CMmWidgetContainer@@UAEXXZ @ 9 NONAME ; void CMmWidgetContainer::HandleItemRemovalL(void)
 	?NumberOfItemsChangedL@CMmWidgetContainer@@QAEXW4TItemsChangeType@@@Z @ 10 NONAME ; void CMmWidgetContainer::NumberOfItemsChangedL(enum TItemsChangeType)
 	?RestoreWidgetPosition@CMmWidgetContainer@@QAEXXZ @ 11 NONAME ; void CMmWidgetContainer::RestoreWidgetPosition(void)
-	?NewL@CMmTemplateLibrary@@SAPAV1@XZ @ 12 NONAME ; class CMmTemplateLibrary * CMmTemplateLibrary::NewL(void)
-	?NewL@CMmHighlightTimer@@SAPAV1@PAVCMmWidgetContainer@@@Z @ 13 NONAME ; class CMmHighlightTimer * CMmHighlightTimer::NewL(class CMmWidgetContainer *)
-	?GetSuiteModelL@CMmWidgetContainer@@QAEPAVCHnSuiteModel@@XZ @ 14 NONAME ; class CHnSuiteModel * CMmWidgetContainer::GetSuiteModelL(void)
-	?HandleForegroundGainedL@CMmWidgetContainer@@UAEXXZ @ 15 NONAME ; void CMmWidgetContainer::HandleForegroundGainedL(void)
+	?GetSuiteModelL@CMmWidgetContainer@@QAEPAVCHnSuiteModel@@XZ @ 12 NONAME ; class CHnSuiteModel * CMmWidgetContainer::GetSuiteModelL(void)
+	?HandleForegroundGainedL@CMmWidgetContainer@@UAEXXZ @ 13 NONAME ; void CMmWidgetContainer::HandleForegroundGainedL(void)
+	?NewL@CMmHighlightTimer@@SAPAV1@PAVCMmWidgetContainer@@@Z @ 14 NONAME ; class CMmHighlightTimer * CMmHighlightTimer::NewL(class CMmWidgetContainer *)
+	?NewL@CMmTemplateLibrary@@SAPAV1@XZ @ 15 NONAME ; class CMmTemplateLibrary * CMmTemplateLibrary::NewL(void)
 	?CancelDragL@CMmWidgetContainer@@QAEXH@Z @ 16 NONAME ; void CMmWidgetContainer::CancelDragL(int)
 	?SetManualHighlightL@CMmWidgetContainer@@UAEXHH@Z @ 17 NONAME ; void CMmWidgetContainer::SetManualHighlightL(int, int)
-	?SetFlipOpenL@CMmWidgetContainer@@QAEXH@Z @ 18 NONAME ; void CMmWidgetContainer::SetFlipOpenL(int)
+	?HandleOptionsMenuVisibilityChangeL@CMmWidgetContainer@@UAEXH@Z @ 18 NONAME ; void CMmWidgetContainer::HandleOptionsMenuVisibilityChangeL(int)
 	?ItemIsFullyVisible@CMmWidgetContainer@@QAEHH@Z @ 19 NONAME ; int CMmWidgetContainer::ItemIsFullyVisible(int)
-	?SetHasFocusL@CMmWidgetContainer@@QAEXH@Z @ 20 NONAME ; void CMmWidgetContainer::SetHasFocusL(int)
-	?HandleTopFocusL@CMmWidgetContainer@@UAEXH@Z @ 21 NONAME ; void CMmWidgetContainer::HandleTopFocusL(int)
-	?HandleOptionsMenuVisibilityChangeL@CMmWidgetContainer@@UAEXH@Z @ 22 NONAME ; void CMmWidgetContainer::HandleOptionsMenuVisibilityChangeL(int)
-	?NewGridContainerL@CMmWidgetContainer@@SAPAV1@ABVTRect@@PAVMObjectProvider@@PAVCMmTemplateLibrary@@@Z @ 23 NONAME ; class CMmWidgetContainer * CMmWidgetContainer::NewGridContainerL(class TRect const &, class MObjectProvider *, class CMmTemplateLibrary *)
-	?NumberOfItems@CMmWidgetContainer@@QAEHXZ @ 24 NONAME ; int CMmWidgetContainer::NumberOfItems(void)
-	?WidgetType@CMmWidgetContainer@@UAE?AW4THnSuiteWidgetType@@XZ @ 25 NONAME ; enum THnSuiteWidgetType CMmWidgetContainer::WidgetType(void)
-	?GetHighlight@CMmWidgetContainer@@UAEHXZ @ 26 NONAME ; int CMmWidgetContainer::GetHighlight(void)
-	?ItemIconZoomL@CMmWidgetContainer@@QAEXH@Z @ 27 NONAME ; void CMmWidgetContainer::ItemIconZoomL(int)
-	?ResetWidgetPosition@CMmWidgetContainer@@QAEXXZ @ 28 NONAME ; void CMmWidgetContainer::ResetWidgetPosition(void)
-	?HandleBackgroundGainedL@CMmWidgetContainer@@UAEXXZ @ 29 NONAME ; void CMmWidgetContainer::HandleBackgroundGainedL(void)
-	?CacheWidgetPosition@CMmWidgetContainer@@QAEXXZ @ 30 NONAME ; void CMmWidgetContainer::CacheWidgetPosition(void)
-	?NewLC@CMmHighlightTimer@@SAPAV1@PAVCMmWidgetContainer@@@Z @ 31 NONAME ; class CMmHighlightTimer * CMmHighlightTimer::NewLC(class CMmWidgetContainer *)
-	?SetEmptyTextL@CMmListBoxContainer@@UAEXABVTDesC16@@@Z @ 32 NONAME ; void CMmListBoxContainer::SetEmptyTextL(class TDesC16 const &)
-	?SetObserver@CMmWidgetContainer@@UAEXPAVMMmWidgetObserver@@@Z @ 33 NONAME ; void CMmWidgetContainer::SetObserver(class MMmWidgetObserver *)
-	?IsHighlightVisible@CMmWidgetContainer@@UAEHXZ @ 34 NONAME ; int CMmWidgetContainer::IsHighlightVisible(void)
-	?GetItemRectL@CMmWidgetContainer@@QAE?AVTRect@@H@Z @ 35 NONAME ; class TRect CMmWidgetContainer::GetItemRectL(int)
-	?SetZoom@CMmWidgetContainer@@QAEXW4TAknUiZoom@@@Z @ 36 NONAME ; void CMmWidgetContainer::SetZoom(enum TAknUiZoom)
-	?SetIsFaded@CMmWidgetContainer@@QAEXH@Z @ 37 NONAME ; void CMmWidgetContainer::SetIsFaded(int)
-	?NewListBoxContainerL@CMmWidgetContainer@@SAPAV1@ABVTRect@@PAVMObjectProvider@@PAVCMmTemplateLibrary@@@Z @ 38 NONAME ; class CMmWidgetContainer * CMmWidgetContainer::NewListBoxContainerL(class TRect const &, class MObjectProvider *, class CMmTemplateLibrary *)
-	?StopMovingL@CMmWidgetContainer@@QAEXXZ @ 39 NONAME ; void CMmWidgetContainer::StopMovingL(void)
-	?SetDefaultHighlightL@CMmListBoxContainer@@UAEXH@Z @ 40 NONAME ; void CMmListBoxContainer::SetDefaultHighlightL(int)
-	?SetEmptyTextL@CMmGridContainer@@UAEXABVTDesC16@@@Z @ 41 NONAME ; void CMmGridContainer::SetEmptyTextL(class TDesC16 const &)
-	?SetLongTapObserver@CMmWidgetContainer@@UAEXPAVMMmLongTapObserver@@@Z @ 42 NONAME ; void CMmWidgetContainer::SetLongTapObserver(class MMmLongTapObserver *)
-	?ScrollToItemL@CMmWidgetContainer@@QAEHH@Z @ 43 NONAME ; int CMmWidgetContainer::ScrollToItemL(int)
+	?NewGridContainerL@CMmWidgetContainer@@SAPAV1@ABVTRect@@PAVMObjectProvider@@PAVCMmTemplateLibrary@@@Z @ 20 NONAME ; class CMmWidgetContainer * CMmWidgetContainer::NewGridContainerL(class TRect const &, class MObjectProvider *, class CMmTemplateLibrary *)
+	?NumberOfItems@CMmWidgetContainer@@QAEHXZ @ 21 NONAME ; int CMmWidgetContainer::NumberOfItems(void)
+	?WidgetType@CMmWidgetContainer@@UAE?AW4THnSuiteWidgetType@@XZ @ 22 NONAME ; enum THnSuiteWidgetType CMmWidgetContainer::WidgetType(void)
+	?GetHighlight@CMmWidgetContainer@@UAEHXZ @ 23 NONAME ; int CMmWidgetContainer::GetHighlight(void)
+	?ItemIconZoomL@CMmWidgetContainer@@QAEXH@Z @ 24 NONAME ; void CMmWidgetContainer::ItemIconZoomL(int)
+	?ResetWidgetPosition@CMmWidgetContainer@@QAEXXZ @ 25 NONAME ; void CMmWidgetContainer::ResetWidgetPosition(void)
+	?HandleBackgroundGainedL@CMmWidgetContainer@@UAEXXZ @ 26 NONAME ; void CMmWidgetContainer::HandleBackgroundGainedL(void)
+	?CacheWidgetPosition@CMmWidgetContainer@@QAEXXZ @ 27 NONAME ; void CMmWidgetContainer::CacheWidgetPosition(void)
+	?NewLC@CMmHighlightTimer@@SAPAV1@PAVCMmWidgetContainer@@@Z @ 28 NONAME ; class CMmHighlightTimer * CMmHighlightTimer::NewLC(class CMmWidgetContainer *)
+	?SetEmptyTextL@CMmListBoxContainer@@UAEXABVTDesC16@@@Z @ 29 NONAME ; void CMmListBoxContainer::SetEmptyTextL(class TDesC16 const &)
+	?SetObserver@CMmWidgetContainer@@UAEXPAVMMmWidgetObserver@@@Z @ 30 NONAME ; void CMmWidgetContainer::SetObserver(class MMmWidgetObserver *)
+	?IsHighlightVisible@CMmWidgetContainer@@UAEHXZ @ 31 NONAME ; int CMmWidgetContainer::IsHighlightVisible(void)
+	?GetItemRectL@CMmWidgetContainer@@QAE?AVTRect@@H@Z @ 32 NONAME ; class TRect CMmWidgetContainer::GetItemRectL(int)
+	?EndLongTapL@CMmWidgetContainer@@UAEXH@Z @ 33 NONAME ; void CMmWidgetContainer::EndLongTapL(int)
+	?SetIsFaded@CMmWidgetContainer@@QAEXH@Z @ 34 NONAME ; void CMmWidgetContainer::SetIsFaded(int)
+	?NewListBoxContainerL@CMmWidgetContainer@@SAPAV1@ABVTRect@@PAVMObjectProvider@@PAVCMmTemplateLibrary@@@Z @ 35 NONAME ; class CMmWidgetContainer * CMmWidgetContainer::NewListBoxContainerL(class TRect const &, class MObjectProvider *, class CMmTemplateLibrary *)
+	?StopMovingL@CMmWidgetContainer@@QAEXXZ @ 36 NONAME ; void CMmWidgetContainer::StopMovingL(void)
+	?SetDefaultHighlightL@CMmListBoxContainer@@UAEXH@Z @ 37 NONAME ; void CMmListBoxContainer::SetDefaultHighlightL(int)
+	?SetEmptyTextL@CMmGridContainer@@UAEXABVTDesC16@@@Z @ 38 NONAME ; void CMmGridContainer::SetEmptyTextL(class TDesC16 const &)
+	?SetLongTapObserver@CMmWidgetContainer@@UAEXPAVMMmLongTapObserver@@@Z @ 39 NONAME ; void CMmWidgetContainer::SetLongTapObserver(class MMmLongTapObserver *)
+	?ScrollToItemL@CMmWidgetContainer@@QAEHH@Z @ 40 NONAME ; int CMmWidgetContainer::ScrollToItemL(int)
 
--- a/menufw/menufwui/mmwidgets/data/grid/lct/akn_logical_template_3.xml	Thu Dec 17 08:40:49 2009 +0200
+++ b/menufw/menufwui/mmwidgets/data/grid/lct/akn_logical_template_3.xml	Thu Jan 07 12:39:41 2010 +0200
@@ -4,17 +4,17 @@
 <orientation id ="portrait" lct="uiaccel_main_aa_listscroll_pane" variety="0">
   	
 	<element id="nohighlight">
-		<layout id="anchor" name="anchor" lct="cell_hc_apps_pane" variety="3" variety_zoom="1">
-			<textvisual id="mul_title" lct="cell_hc_apps_pane_t1" variety="0" variety_zoom="1">
+		<layout id="anchor" name="anchor" lct="cell_hc_apps_pane" variety="3" >
+			<textvisual id="mul_title" lct="cell_hc_apps_pane_t1" variety="0" >
 				<attributesetter name="text" targetvalue="mul_title" category="data" />
 			</textvisual>
-			<imagevisual id="mul_icon" lct="cell_hc_apps_pane_g1" variety="0" variety_zoom="1" halign="center" >
+			<imagevisual id="mul_icon" lct="cell_hc_apps_pane_g1" variety="0" halign="center" >
 				<attributesetter name="imagepath" targetvalue="mul_icon" category="data" />
 			</imagevisual>
-			<imagevisual id="mul_indicator_1" lct="cell_hc_apps_pane_g2" variety="0" variety_zoom="1">
+			<imagevisual id="mul_indicator_1" lct="cell_hc_apps_pane_g2" variety="0" >
 				<attributesetter name="imagepath" targetvalue="mul_indicator_1" category="data" />
 			</imagevisual>
-			<imagevisual id="mul_indicator_2" lct="cell_hc_apps_pane_g3" variety="0" variety_zoom="1">
+			<imagevisual id="mul_indicator_2" lct="cell_hc_apps_pane_g3" variety="0" >
 				<attributesetter name="imagepath" targetvalue="mul_indicator_2" category="data" />
 			</imagevisual>
 		</layout>	
@@ -27,14 +27,14 @@
 <orientation id ="landscape" lct="uiaccel_main_aa_listscroll_pane" variety="0" >
 
 	<element id="nohighlight">
-		<layout id="anchor" name="anchor" lct="cell_app_pane" variety="3" variety_zoom="3">
-			<textvisual id="mul_title" lct="cell_app_pane_t1"  variety="0" variety_zoom="0">
+		<layout id="anchor" name="anchor" lct="cell_app_pane" variety="3" >
+			<textvisual id="mul_title" lct="cell_app_pane_t1"  variety="0" >
 				<attributesetter name="text" targetvalue="mul_title" category="data" />
 			</textvisual>
-			<imagevisual id="mul_icon" lct="cell_app_pane_g1" variety="0" variety_zoom="0" halign="center" >
+			<imagevisual id="mul_icon" lct="cell_app_pane_g1" variety="0" halign="center" >
 				<attributesetter name="imagepath" targetvalue="mul_icon" category="data" />
 			</imagevisual>
-			<imagevisual id="mul_indicator_1" lct="cell_app_pane_g2" variety="0" variety_zoom="0">
+			<imagevisual id="mul_indicator_1" lct="cell_app_pane_g2" variety="0" >
 				<attributesetter name="imagepath" targetvalue="mul_indicator_1" category="data" />
 			</imagevisual>
 		</layout>
--- a/menufw/menufwui/mmwidgets/eabi/mmwidgetsu.def	Thu Dec 17 08:40:49 2009 +0200
+++ b/menufw/menufwui/mmwidgets/eabi/mmwidgetsu.def	Thu Jan 07 12:39:41 2010 +0200
@@ -8,39 +8,36 @@
 	_ZN18CMmWidgetContainer10SetIsFadedEi @ 7 NONAME
 	_ZN18CMmWidgetContainer10WidgetTypeEv @ 8 NONAME
 	_ZN18CMmWidgetContainer11CancelDragLEi @ 9 NONAME
-	_ZN18CMmWidgetContainer11IsDraggableEv @ 10 NONAME
-	_ZN18CMmWidgetContainer11SetObserverEP17MMmWidgetObserver @ 11 NONAME
-	_ZN18CMmWidgetContainer11StopMovingLEv @ 12 NONAME
-	_ZN18CMmWidgetContainer12GetHighlightEv @ 13 NONAME
-	_ZN18CMmWidgetContainer12GetItemRectLEi @ 14 NONAME
-	_ZN18CMmWidgetContainer12SetFlipOpenLEi @ 15 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
-	_ZN18CMmWidgetContainer15HandleTopFocusLEi @ 21 NONAME
-	_ZN18CMmWidgetContainer17HandleZoomChangedE10TAknUiZoom @ 22 NONAME
-	_ZN18CMmWidgetContainer17NewGridContainerLERK5TRectP15MObjectProviderP18CMmTemplateLibrary @ 23 NONAME
-	_ZN18CMmWidgetContainer17PrepareForGarbageEv @ 24 NONAME
-	_ZN18CMmWidgetContainer18HandleItemRemovalLEv @ 25 NONAME
-	_ZN18CMmWidgetContainer18IsHighlightVisibleEv @ 26 NONAME
-	_ZN18CMmWidgetContainer18ItemIsFullyVisibleEi @ 27 NONAME
-	_ZN18CMmWidgetContainer18SetLongTapObserverEP18MMmLongTapObserver @ 28 NONAME
-	_ZN18CMmWidgetContainer19CacheWidgetPositionEv @ 29 NONAME
-	_ZN18CMmWidgetContainer19HandleItemAdditionLEv @ 30 NONAME
-	_ZN18CMmWidgetContainer19ResetWidgetPositionEv @ 31 NONAME
-	_ZN18CMmWidgetContainer20GetPreviousHighlightEv @ 32 NONAME
-	_ZN18CMmWidgetContainer20NewListBoxContainerLERK5TRectP15MObjectProviderP18CMmTemplateLibrary @ 33 NONAME
-	_ZN18CMmWidgetContainer21NumberOfItemsChangedLE16TItemsChangeType @ 34 NONAME
-	_ZN18CMmWidgetContainer21RestoreWidgetPositionEv @ 35 NONAME
-	_ZN18CMmWidgetContainer23HandleBackgroundGainedLEv @ 36 NONAME
-	_ZN18CMmWidgetContainer23HandleForegroundGainedLEv @ 37 NONAME
-	_ZN18CMmWidgetContainer23SetHighlightVisibilityLEi @ 38 NONAME
-	_ZN18CMmWidgetContainer34HandleOptionsMenuVisibilityChangeLEi @ 39 NONAME
-	_ZN18CMmWidgetContainer7SetZoomE10TAknUiZoom @ 40 NONAME
-	_ZN19CMmListBoxContainer13SetEmptyTextLERK7TDesC16 @ 41 NONAME
-	_ZN19CMmListBoxContainer20SetDefaultHighlightLEi @ 42 NONAME
-	_ZThn52_N18CMmWidgetContainer23HandleBackgroundGainedLEv @ 43 NONAME
-	_ZThn52_N18CMmWidgetContainer23HandleForegroundGainedLEv @ 44 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
+	_ZN18CMmWidgetContainer23HandleBackgroundGainedLEv @ 34 NONAME
+	_ZN18CMmWidgetContainer23HandleForegroundGainedLEv @ 35 NONAME
+	_ZN18CMmWidgetContainer23SetHighlightVisibilityLEi @ 36 NONAME
+	_ZN18CMmWidgetContainer34HandleOptionsMenuVisibilityChangeLEi @ 37 NONAME
+	_ZN19CMmListBoxContainer13SetEmptyTextLERK7TDesC16 @ 38 NONAME
+	_ZN19CMmListBoxContainer20SetDefaultHighlightLEi @ 39 NONAME
+	_ZThn52_N18CMmWidgetContainer23HandleBackgroundGainedLEv @ 40 NONAME
+	_ZThn52_N18CMmWidgetContainer23HandleForegroundGainedLEv @ 41 NONAME
 
--- a/menufw/menufwui/mmwidgets/group/bld.inf	Thu Dec 17 08:40:49 2009 +0200
+++ b/menufw/menufwui/mmwidgets/group/bld.inf	Thu Jan 07 12:39:41 2010 +0200
@@ -12,7 +12,7 @@
 * Contributors:
 *
 * Description:  Build information file for project mmwidgets
-*  Version     : %version: 8.1.3.1.7 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: 8.1.3.1.8 % << Don't touch! Updated by Synergy at check-out.
 *
 */
 
@@ -26,131 +26,69 @@
 ../rom/mmwidgets.iby  CORE_APP_LAYER_IBY_EXPORT_PATH(mmwidgets.iby)
 
 // list exports
-../data/list/custom/akn_single_large_graphic_pane.xml /epoc32/release/winscw/udeb/Z/resource/list/custom/akn_single_large_graphic_pane.xml
-../data/list/custom/akn_single_large_graphic_pane.xml /epoc32/release/winscw/urel/Z/resource/list/custom/akn_single_large_graphic_pane.xml
-../data/list/custom/akn_single_large_graphic_pane.xml /epoc32/data/z/resource/list/custom/akn_single_large_graphic_pane.xml
+../data/list/custom/akn_single_large_graphic_pane.xml Z:/resource/list/custom/akn_single_large_graphic_pane.xml
 
-../data/list/custom/akn_logical_template_1.xml /epoc32/release/winscw/udeb/Z/resource/list/custom/akn_logical_template_1.xml
-../data/list/custom/akn_logical_template_1.xml /epoc32/release/winscw/urel/Z/resource/list/custom/akn_logical_template_1.xml
-../data/list/custom/akn_logical_template_1.xml /epoc32/data/z/resource/list/custom/akn_logical_template_1.xml
+../data/list/custom/akn_logical_template_1.xml Z:/resource/list/custom/akn_logical_template_1.xml
 
-../data/list/custom/akn_logical_template_2.xml /epoc32/release/winscw/udeb/Z/resource/list/custom/akn_logical_template_2.xml
-../data/list/custom/akn_logical_template_2.xml /epoc32/release/winscw/urel/Z/resource/list/custom/akn_logical_template_2.xml
-../data/list/custom/akn_logical_template_2.xml /epoc32/data/z/resource/list/custom/akn_logical_template_2.xml
+../data/list/custom/akn_logical_template_2.xml Z:/resource/list/custom/akn_logical_template_2.xml
 
-../data/list/custom/akn_logical_template_3.xml /epoc32/release/winscw/udeb/Z/resource/list/custom/akn_logical_template_3.xml
-../data/list/custom/akn_logical_template_3.xml /epoc32/release/winscw/urel/Z/resource/list/custom/akn_logical_template_3.xml
-../data/list/custom/akn_logical_template_3.xml /epoc32/data/z/resource/list/custom/akn_logical_template_3.xml
+../data/list/custom/akn_logical_template_3.xml Z:/resource/list/custom/akn_logical_template_3.xml
 
-../data/list/custom/akn_logical_template_4.xml /epoc32/release/winscw/udeb/Z/resource/list/custom/akn_logical_template_4.xml
-../data/list/custom/akn_logical_template_4.xml /epoc32/release/winscw/urel/Z/resource/list/custom/akn_logical_template_4.xml
-../data/list/custom/akn_logical_template_4.xml /epoc32/data/z/resource/list/custom/akn_logical_template_4.xml
+../data/list/custom/akn_logical_template_4.xml Z:/resource/list/custom/akn_logical_template_4.xml
 
-../data/list/custom/akn_logical_template_5.xml /epoc32/release/winscw/udeb/Z/resource/list/custom/akn_logical_template_5.xml
-../data/list/custom/akn_logical_template_5.xml /epoc32/release/winscw/urel/Z/resource/list/custom/akn_logical_template_5.xml
-../data/list/custom/akn_logical_template_5.xml /epoc32/data/z/resource/list/custom/akn_logical_template_5.xml
+../data/list/custom/akn_logical_template_5.xml Z:/resource/list/custom/akn_logical_template_5.xml
 
-../data/list/custom/akn_logical_template_6.xml /epoc32/release/winscw/udeb/Z/resource/list/custom/akn_logical_template_6.xml
-../data/list/custom/akn_logical_template_6.xml /epoc32/release/winscw/urel/Z/resource/list/custom/akn_logical_template_6.xml
-../data/list/custom/akn_logical_template_6.xml /epoc32/data/z/resource/list/custom/akn_logical_template_6.xml
+../data/list/custom/akn_logical_template_6.xml Z:/resource/list/custom/akn_logical_template_6.xml
 
-../data/list/custom/akn_logical_template_7.xml /epoc32/release/winscw/udeb/Z/resource/list/custom/akn_logical_template_7.xml
-../data/list/custom/akn_logical_template_7.xml /epoc32/release/winscw/urel/Z/resource/list/custom/akn_logical_template_7.xml
-../data/list/custom/akn_logical_template_7.xml /epoc32/data/z/resource/list/custom/akn_logical_template_7.xml
+../data/list/custom/akn_logical_template_7.xml Z:/resource/list/custom/akn_logical_template_7.xml
 
-../data/list/custom/akn_logical_template_8.xml /epoc32/release/winscw/udeb/Z/resource/list/custom/akn_logical_template_8.xml
-../data/list/custom/akn_logical_template_8.xml /epoc32/release/winscw/urel/Z/resource/list/custom/akn_logical_template_8.xml
-../data/list/custom/akn_logical_template_8.xml /epoc32/data/z/resource/list/custom/akn_logical_template_8.xml
+../data/list/custom/akn_logical_template_8.xml Z:/resource/list/custom/akn_logical_template_8.xml
 
-../data/list/custom/akn_logical_template_10.xml /epoc32/release/winscw/udeb/Z/resource/list/custom/akn_logical_template_10.xml
-../data/list/custom/akn_logical_template_10.xml /epoc32/release/winscw/urel/Z/resource/list/custom/akn_logical_template_10.xml
-../data/list/custom/akn_logical_template_10.xml /epoc32/data/z/resource/list/custom/akn_logical_template_10.xml
+../data/list/custom/akn_logical_template_10.xml Z:/resource/list/custom/akn_logical_template_10.xml
 
-../data/list/custom/akn_logical_template_11.xml /epoc32/release/winscw/udeb/Z/resource/list/custom/akn_logical_template_11.xml
-../data/list/custom/akn_logical_template_11.xml /epoc32/release/winscw/urel/Z/resource/list/custom/akn_logical_template_11.xml
-../data/list/custom/akn_logical_template_11.xml /epoc32/data/z/resource/list/custom/akn_logical_template_11.xml
+../data/list/custom/akn_logical_template_11.xml Z:/resource/list/custom/akn_logical_template_11.xml
 
-../data/list/custom/akn_logical_template_12.xml /epoc32/release/winscw/udeb/Z/resource/list/custom/akn_logical_template_12.xml
-../data/list/custom/akn_logical_template_12.xml /epoc32/release/winscw/urel/Z/resource/list/custom/akn_logical_template_12.xml
-../data/list/custom/akn_logical_template_12.xml /epoc32/data/z/resource/list/custom/akn_logical_template_12.xml
+../data/list/custom/akn_logical_template_12.xml Z:/resource/list/custom/akn_logical_template_12.xml
 
-../data/list/custom/akn_logical_template_13.xml /epoc32/release/winscw/udeb/Z/resource/list/custom/akn_logical_template_13.xml
-../data/list/custom/akn_logical_template_13.xml /epoc32/release/winscw/urel/Z/resource/list/custom/akn_logical_template_13.xml
-../data/list/custom/akn_logical_template_13.xml /epoc32/data/z/resource/list/custom/akn_logical_template_13.xml
+../data/list/custom/akn_logical_template_13.xml Z:/resource/list/custom/akn_logical_template_13.xml
 
 // grid exports
-../data/grid/custom/akn_single_large_graphic_pane.xml /epoc32/release/winscw/udeb/Z/resource/grid/custom/akn_single_large_graphic_pane.xml
-../data/grid/custom/akn_single_large_graphic_pane.xml /epoc32/release/winscw/urel/Z/resource/grid/custom/akn_single_large_graphic_pane.xml
-../data/grid/custom/akn_single_large_graphic_pane.xml /epoc32/data/z/resource/grid/custom/akn_single_large_graphic_pane.xml
+../data/grid/custom/akn_single_large_graphic_pane.xml Z:/resource/grid/custom/akn_single_large_graphic_pane.xml
  
-../data/grid/custom/akn_logical_template_1.xml /epoc32/release/winscw/udeb/Z/resource/grid/custom/akn_logical_template_1.xml
-../data/grid/custom/akn_logical_template_1.xml /epoc32/release/winscw/urel/Z/resource/grid/custom/akn_logical_template_1.xml
-../data/grid/custom/akn_logical_template_1.xml /epoc32/data/z/resource/grid/custom/akn_logical_template_1.xml
+../data/grid/custom/akn_logical_template_1.xml Z:/resource/grid/custom/akn_logical_template_1.xml
 
-../data/grid/custom/akn_logical_template_2.xml /epoc32/release/winscw/udeb/Z/resource/grid/custom/akn_logical_template_2.xml
-../data/grid/custom/akn_logical_template_2.xml /epoc32/release/winscw/urel/Z/resource/grid/custom/akn_logical_template_2.xml
-../data/grid/custom/akn_logical_template_2.xml /epoc32/data/z/resource/grid/custom/akn_logical_template_2.xml
+../data/grid/custom/akn_logical_template_2.xml Z:/resource/grid/custom/akn_logical_template_2.xml
 
-../data/grid/custom/akn_logical_template_3.xml /epoc32/release/winscw/udeb/Z/resource/grid/custom/akn_logical_template_3.xml
-../data/grid/custom/akn_logical_template_3.xml /epoc32/release/winscw/urel/Z/resource/grid/custom/akn_logical_template_3.xml
-../data/grid/custom/akn_logical_template_3.xml /epoc32/data/z/resource/grid/custom/akn_logical_template_3.xml
+../data/grid/custom/akn_logical_template_3.xml Z:/resource/grid/custom/akn_logical_template_3.xml
 
-../data/grid/custom/akn_logical_template_4.xml /epoc32/release/winscw/udeb/Z/resource/grid/custom/akn_logical_template_4.xml
-../data/grid/custom/akn_logical_template_4.xml /epoc32/release/winscw/urel/Z/resource/grid/custom/akn_logical_template_4.xml
-../data/grid/custom/akn_logical_template_4.xml /epoc32/data/z/resource/grid/custom/akn_logical_template_4.xml
+../data/grid/custom/akn_logical_template_4.xml Z:/resource/grid/custom/akn_logical_template_4.xml
 
 //lct exports
-../data/list/lct/akn_list_single_hc_apps_pane.xml /epoc32/release/winscw/udeb/Z/resource/list/lct/akn_list_single_hc_apps_pane.xml
-../data/list/lct/akn_list_single_hc_apps_pane.xml /epoc32/release/winscw/urel/Z/resource/list/lct/akn_list_single_hc_apps_pane.xml
-../data/list/lct/akn_list_single_hc_apps_pane.xml /epoc32/data/z/resource/list/lct/akn_list_single_hc_apps_pane.xml
+../data/list/lct/akn_list_single_hc_apps_pane.xml Z:/resource/list/lct/akn_list_single_hc_apps_pane.xml
 
-../data/list/lct/akn_single_large_graphic_pane.xml /epoc32/release/winscw/udeb/Z/resource/list/lct/akn_single_large_graphic_pane.xml
-../data/list/lct/akn_single_large_graphic_pane.xml /epoc32/release/winscw/urel/Z/resource/list/lct/akn_single_large_graphic_pane.xml
-../data/list/lct/akn_single_large_graphic_pane.xml /epoc32/data/z/resource/list/lct/akn_single_large_graphic_pane.xml
+../data/list/lct/akn_single_large_graphic_pane.xml Z:/resource/list/lct/akn_single_large_graphic_pane.xml
 
-../data/list/lct/akn_logical_template_1.xml /epoc32/release/winscw/udeb/Z/resource/list/lct/akn_logical_template_1.xml
-../data/list/lct/akn_logical_template_1.xml /epoc32/release/winscw/urel/Z/resource/list/lct/akn_logical_template_1.xml
-../data/list/lct/akn_logical_template_1.xml /epoc32/data/z/resource/list/lct/akn_logical_template_1.xml
+../data/list/lct/akn_logical_template_1.xml Z:/resource/list/lct/akn_logical_template_1.xml
 
-../data/list/lct/akn_logical_template_2.xml /epoc32/release/winscw/udeb/Z/resource/list/lct/akn_logical_template_2.xml
-../data/list/lct/akn_logical_template_2.xml /epoc32/release/winscw/urel/Z/resource/list/lct/akn_logical_template_2.xml
-../data/list/lct/akn_logical_template_2.xml /epoc32/data/z/resource/list/lct/akn_logical_template_2.xml
+../data/list/lct/akn_logical_template_2.xml Z:/resource/list/lct/akn_logical_template_2.xml
 
-../data/list/lct/akn_logical_template_3.xml /epoc32/release/winscw/udeb/Z/resource/list/lct/akn_logical_template_3.xml
-../data/list/lct/akn_logical_template_3.xml /epoc32/release/winscw/urel/Z/resource/list/lct/akn_logical_template_3.xml
-../data/list/lct/akn_logical_template_3.xml /epoc32/data/z/resource/list/lct/akn_logical_template_3.xml
+../data/list/lct/akn_logical_template_3.xml Z:/resource/list/lct/akn_logical_template_3.xml
 
-../data/list/lct/akn_logical_template_4.xml /epoc32/release/winscw/udeb/Z/resource/list/lct/akn_logical_template_4.xml
-../data/list/lct/akn_logical_template_4.xml /epoc32/release/winscw/urel/Z/resource/list/lct/akn_logical_template_4.xml
-../data/list/lct/akn_logical_template_4.xml /epoc32/data/z/resource/list/lct/akn_logical_template_4.xml
+../data/list/lct/akn_logical_template_4.xml Z:/resource/list/lct/akn_logical_template_4.xml
 
-../data/list/lct/akn_logical_template_5.xml /epoc32/release/winscw/udeb/Z/resource/list/lct/akn_logical_template_5.xml
-../data/list/lct/akn_logical_template_5.xml /epoc32/release/winscw/urel/Z/resource/list/lct/akn_logical_template_5.xml
-../data/list/lct/akn_logical_template_5.xml /epoc32/data/z/resource/list/lct/akn_logical_template_5.xml
+../data/list/lct/akn_logical_template_5.xml Z:/resource/list/lct/akn_logical_template_5.xml
 
-../data/list/lct/akn_logical_template_6.xml /epoc32/release/winscw/udeb/Z/resource/list/lct/akn_logical_template_6.xml
-../data/list/lct/akn_logical_template_6.xml /epoc32/release/winscw/urel/Z/resource/list/lct/akn_logical_template_6.xml
-../data/list/lct/akn_logical_template_6.xml /epoc32/data/z/resource/list/lct/akn_logical_template_6.xml
+../data/list/lct/akn_logical_template_6.xml Z:/resource/list/lct/akn_logical_template_6.xml
 
-../data/list/lct/akn_logical_template_6a.xml /epoc32/release/winscw/udeb/Z/resource/list/lct/akn_logical_template_6a.xml
-../data/list/lct/akn_logical_template_6a.xml /epoc32/release/winscw/urel/Z/resource/list/lct/akn_logical_template_6a.xml
-../data/list/lct/akn_logical_template_6a.xml /epoc32/data/z/resource/list/lct/akn_logical_template_6a.xml
+../data/list/lct/akn_logical_template_6a.xml Z:/resource/list/lct/akn_logical_template_6a.xml
 
-../data/list/lct/akn_logical_template_7.xml /epoc32/release/winscw/udeb/Z/resource/list/lct/akn_logical_template_7.xml
-../data/list/lct/akn_logical_template_7.xml /epoc32/release/winscw/urel/Z/resource/list/lct/akn_logical_template_7.xml
-../data/list/lct/akn_logical_template_7.xml /epoc32/data/z/resource/list/lct/akn_logical_template_7.xml
+../data/list/lct/akn_logical_template_7.xml Z:/resource/list/lct/akn_logical_template_7.xml
 
-../data/list/lct/akn_logical_template_8.xml /epoc32/release/winscw/udeb/Z/resource/list/lct/akn_logical_template_8.xml
-../data/list/lct/akn_logical_template_8.xml /epoc32/release/winscw/urel/Z/resource/list/lct/akn_logical_template_8.xml
-../data/list/lct/akn_logical_template_8.xml /epoc32/data/z/resource/list/lct/akn_logical_template_8.xml
+../data/list/lct/akn_logical_template_8.xml Z:/resource/list/lct/akn_logical_template_8.xml
 
-../data/list/lct/akn_logical_template_12.xml /epoc32/release/winscw/udeb/Z/resource/list/lct/akn_logical_template_12.xml
-../data/list/lct/akn_logical_template_12.xml /epoc32/release/winscw/urel/Z/resource/list/lct/akn_logical_template_12.xml
-../data/list/lct/akn_logical_template_12.xml /epoc32/data/z/resource/list/lct/akn_logical_template_12.xml
+../data/list/lct/akn_logical_template_12.xml Z:/resource/list/lct/akn_logical_template_12.xml
 
-../data/grid/lct/akn_logical_template_3.xml /epoc32/release/winscw/udeb/Z/resource/grid/lct/akn_logical_template_3.xml
-../data/grid/lct/akn_logical_template_3.xml /epoc32/release/winscw/urel/Z/resource/grid/lct/akn_logical_template_3.xml
-../data/grid/lct/akn_logical_template_3.xml /epoc32/data/z/resource/grid/lct/akn_logical_template_3.xml
+../data/grid/lct/akn_logical_template_3.xml Z:/resource/grid/lct/akn_logical_template_3.xml
 
 ../inc/mmdraganddropobserver.h         |../../../inc/mmdraganddropobserver.h 
 ../inc/mmlongtapobserver.h         |../../../inc/mmlongtapobserver.h 
--- a/menufw/menufwui/mmwidgets/inc/mmgrid.h	Thu Dec 17 08:40:49 2009 +0200
+++ b/menufw/menufwui/mmwidgets/inc/mmgrid.h	Thu Jan 07 12:39:41 2010 +0200
@@ -12,7 +12,7 @@
 * Contributors:
 *
 * Description:  CMmGrid declaration
-*  Version     : %version: MM_32.1.19 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: MM_32.1.20 % << Don't touch! Updated by Synergy at check-out.
 *
 */
 
@@ -359,6 +359,14 @@
     TInt ScrollIfNeeded( const TPointerEvent& aPointerEvent );
     
     /**
+     * Minimal scrolling (setting top item index and vertical offset) with 
+     * boundary checking and WITHOUT redrawing.
+     * 
+     * @param aDistanceInPixels Distance to scroll.
+     */
+    void ScrollWithoutRedraw( TInt aDistanceInPixels );
+    
+    /**
      * Updates the dispapearing highlight.
      *
      * @since S60 v3.0
--- a/menufw/menufwui/mmwidgets/inc/mmgridcontainer.h	Thu Dec 17 08:40:49 2009 +0200
+++ b/menufw/menufwui/mmwidgets/inc/mmgridcontainer.h	Thu Jan 07 12:39:41 2010 +0200
@@ -12,7 +12,7 @@
 * Contributors:
 *
 * Description:  CMmGridContainer declaration
-*  Version     : %version: MM_29.1.13 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: MM_29.1.14 % << Don't touch! Updated by Synergy at check-out.
 *
 */
 
@@ -37,7 +37,7 @@
 class CMmListBoxItemDrawer;
 
 /**
- *  Container for Multimedia Menu grid widget 
+ *  Container for Multimedia Menu grid widget
  *
  *  @code
  *  @endcode
@@ -50,29 +50,29 @@
 public:
     /**
      * Two-phased constructor.
-     * 
-     * @since S60 v5.0
-     * @param aRect Rectangle of widget control.
-     * @param aObjectProvider Object provider.
-     * @param aTemplateLibrary template library for Drawer   
-     */
-    static CMmGridContainer* NewL( const TRect& aRect, 
-        MObjectProvider* aObjectProvider, CMmTemplateLibrary* aTemplateLibrary );
-
-    /**
-     * Two-phased constructor.
-     * 
+     *
      * @since S60 v5.0
      * @param aRect Rectangle of widget control.
      * @param aObjectProvider Object provider.
      * @param aTemplateLibrary template library for Drawer
      */
-    static CMmGridContainer* NewLC( const TRect& aRect, 
+    static CMmGridContainer* NewL( const TRect& aRect,
         MObjectProvider* aObjectProvider, CMmTemplateLibrary* aTemplateLibrary );
-    
+
+    /**
+     * Two-phased constructor.
+     *
+     * @since S60 v5.0
+     * @param aRect Rectangle of widget control.
+     * @param aObjectProvider Object provider.
+     * @param aTemplateLibrary template library for Drawer
+     */
+    static CMmGridContainer* NewLC( const TRect& aRect,
+        MObjectProvider* aObjectProvider, CMmTemplateLibrary* aTemplateLibrary );
+
     /**
      * Destructor.
-     * 
+     *
      * @since S60 v5.0
      */
     virtual ~CMmGridContainer();
@@ -84,23 +84,23 @@
      * @return Pointer to grid.
      */
     CAknGrid* Grid();
-    
+
 public: // from base class CMmWidgetContainer
- 
+
     /**
      * Handle item addition.
-     * 
+     *
      * @since S60 v3.0
      */
     void HandleItemAdditionL();
-	
+
     /**
      * Handle item removal.
-     * 
+     *
      * @since S60 v3.0
      */
-    void HandleItemRemovalL(); 
-    
+    void HandleItemRemovalL();
+
     /**
      * Sets the default highlight in grid.
      *
@@ -108,7 +108,7 @@
      * @param aRedraw Is highlight to redraw.
      */
     IMPORT_C void SetDefaultHighlightL(  TBool aRedraw = ETrue  );
-    
+
     /**
      * Checks if widget is in edit mode state.
      *
@@ -116,14 +116,14 @@
      * @param aIsEditMode Is grid in edit mode state.
      */
     void SetEditModeL( TBool aIsEditMode );
-    
+
     /**
      * Derived from CCoeControl, called when container rectangle size is changed.
      *
      * @since S60 v5.0
      */
-    void SizeChanged();   
-    
+    void SizeChanged();
+
     /**
      * Gets grid model.
      *
@@ -131,7 +131,7 @@
      * @return Grid model.
      */
     CMmListBoxModel* GetMmModel();
-    
+
     /**
      * Sets empty text shown when grid is empty.
      *
@@ -139,7 +139,7 @@
      * @param aText Text to be shown when grid is empty.
      */
     IMPORT_C void SetEmptyTextL( const TDesC& aText );
-    
+
     /**
      * Sets item drawer and view background context.
      *
@@ -147,91 +147,84 @@
      * @param aBgContext Background context.
      */
     void SetItemDrawerAndViewBgContext(
-        CAknsBasicBackgroundControlContext * aBgContext );   
-    
+        CAknsBasicBackgroundControlContext * aBgContext );
+
     /**
      * Sets up the grid layout.
      *
      * @since S60 v5.0
      */
     void SetupWidgetLayoutL();
-    
+
     /**
      * Sets suite model.
-     * 
+     *
      * @since S60 v5.0
      * @param aModel Suite model.
      */
     void SetSuiteModelL( CHnSuiteModel* aModel );
-    
+
     /**
      * Set highlight visibility.
-     * 
+     *
      * @since S60 v5.0
-     * @param aVisible Visibility status. 
+     * @param aVisible Visibility status.
      */
     void SetHighlightVisibilityL( TBool aVisible );
-    
+
     /**
      * Retrieve type of widget.
-     * 
+     *
      * @since S60 v3.0
      * @return Type of widget.
-     */ 
+     */
     THnSuiteWidgetType WidgetType();
-    
-    /**
-     * Called when filp state changed.
-     * 
-     * @since S60 v3.0
-     */ 
-    void FlipStateChangedL();
-    
+
     /**
       * Draws the widget view.
       *
       * @since S60 v5.0
       */
     virtual void DrawView();
-    
+
     /**
      * Set the vertical item offset;
      * @param aOffset The offset to set to the widget.
-     * 
+     *
      * @since S60 v5.0
      */
     virtual void SetVerticalItemOffset( TInt aOffset );
 
     /**
      * Gets the current widget vertical item offset.
-     * 
+     *
      * @since S60 v5.0
      * @return The current widget vertical item offset.
      */
     virtual TInt VerticalItemOffset() const;
-    
+
     /**
      * Tells if item is visible (fully or partially).
      * Overridden from the base class CMmWidgetContainer in order to
      * provide a reliable implementation for grid.
-     * 
+     *
      * @param aItemIndex Item index.
      * @return ETrue if visible, EFalse otherwise.
      */
     TBool ItemIsVisible( TInt aItemIndex ) const;
-    
+
 private:
     /**
      * Default constructor.
-     * 
-     * @since S60 v5.0 
+     *
+     * @since S60 v5.0
      */
     CMmGridContainer();
-    
+
     /**
      * 2nd phase constructor.
-     * 
-     * @since S60 v5.0 
+     *
+     * @since S60 v5.0
      * @param aRect Rectangle of widget control.
      * @param aObjectProvider Object provider.
      * @param aTemplateLibrary template library for Drawer
@@ -247,56 +240,40 @@
      * @return Grid model.
      */
     CMmGrid* CreateGridL( CMmTemplateLibrary* aTemplateLibrary );
-    
+
     /**
 	 * Gets column count in current view.
 	 * @returns Column count in current view.
 	 */
     TInt ColumnsInCurrentView();
-    
+
     /**
      * Gets row count in current view.
      * @returns Row count in current view.
      */
     TInt RowsInCurrentView();
-    
+
     /**
 	 * Updates current view's scrollbar thumbs.
 	 */
     void UpdateViewScrollBarThumbs();
-    
-    /**
-     * Gets base default highlight in landscape mode.
-     * 
-     * @param aLayout current layout of the grid
-     * @returns default highlight
-     */
-    TInt LandscapeOrientationDefaultHighlight( TSize aLayout );
 
     /**
-     * Gets base default highlight in portrait mode.
-     * 
-     * @param aLayout current layout of the grid
-     * @returns default highlight
-     */
-    TInt PortraitOrientationDefaultHighlight( TSize aLayout );
-    
-    /**
      * Calculates offset for default highlight position based on
      * index of first visible item.
-     * 
+     *
      * @returns offset for default highlight
      */
     TInt DefaultHighlightOffset();
-    
+
 private: // Data
-	
+
     /**
      * Pointer to listbox control.
      * Own.
      */
     CMmGrid* iGrid;
-    
+
     };
 
 #endif // C_MMGRIDCONTAINER_H
--- a/menufw/menufwui/mmwidgets/inc/mmtemplatelibrary.h	Thu Dec 17 08:40:49 2009 +0200
+++ b/menufw/menufwui/mmwidgets/inc/mmtemplatelibrary.h	Thu Jan 07 12:39:41 2010 +0200
@@ -11,8 +11,8 @@
 *
 * Contributors:
 *
-* Description:  
-*  Version     : %version: MM_24.1.8 % << Don't touch! Updated by Synergy at check-out.
+* Description:
+*  Version     : %version: MM_24.1.9 % << Don't touch! Updated by Synergy at check-out.
 *
 */
 
@@ -43,57 +43,57 @@
 
 /**
  *  Struct used to store template child data
- * 
+ *
  * @since S60 v5.0
  * @ingroup group_mmwidgets
  */
 class TTemplateChild
     {
-    
+
 public:
-	
+
     /**
      * Rectangle of subcell according to position in item.
      */
     TRect iRectAccordingToParent;
-    
+
     /**
      * Data type represented by the subcell.
      */
     TBufC8<64> iData;
-    
+
     /**
      * The LCT template used to calculate the subcell position.
      */
     TBufC8<64> iLct;
-    
+
     /**
      * The variety for the lct template.
      */
     TInt iVariety;
-    
+
     /**
      * Depicts if the subcell is an image or text.
      */
     TBool iIsImage;
-    
+
     /**
      * The font id used for displaying text.
      */
     TAknLogicalFontId iFontId;
-    
+
     /**
      * The type of align for the text.
      */
     CGraphicsContext::TTextAlign  iTextAlign;
-    
+
     /**
      * The additional Id for a subcell element used to differentiate it
-     * from others. e.g the backdrop image has a different visual id 
+     * from others. e.g the backdrop image has a different visual id
      * since it is displayed only in edit mode.
      */
     TImageVisualId iImageVisualId;
-    
+
     /**
      * The type of horizontal align for the icon.
      */
@@ -105,7 +105,7 @@
 
 /**
  *  Used by Multimedia Menu to load template data.
- *  
+ *
  *  @code
  *  @endcode
  *  @lib mmwidgets
@@ -116,7 +116,7 @@
 	{
 public:
 	// Constructors and destructor
-    
+
     /**
      * Destructor.
      */
@@ -126,7 +126,7 @@
 	 * Two-phased constructor.
 	 */
 	IMPORT_C static CMmTemplateLibrary* NewL();
-	
+
 	/**
      * Two-phased constructor.
      */
@@ -148,210 +148,203 @@
 
 	/**
 	 * Gets the size of template item according to highlight and orientation.
-	 * 
+	 *
 	 * @since S60 v3.0
 	 * @param aWidgetType The widget type.
-	 * @param aTemplate The current template for the item. 
+	 * @param aTemplate The current template for the item.
 	 * @param aLandscapeOrientation Is view in landscape orientation.
 	 * @param aHighlighted Is item highlighted.
 	 * @param aParentRect The bounding rect in which the item is drawn.
-	 * 
+	 *
 	 * @return size of item
 	 */
-	TSize GetSize( TMmWidgetType aWidgetType, const TDesC8& aTemplate, 
-			TBool aLandscapeOrientation = 0, TBool aHighlighted = 0, 
+	TSize GetSize( TMmWidgetType aWidgetType, const TDesC8& aTemplate,
+			TBool aLandscapeOrientation = 0, TBool aHighlighted = 0,
 			TRect aParentRect = TRect() );
-    
+
     /**
      * Gets the size of template.
-     * 
+     *
      * @since S60 v3.0
      * @param aItemSize Item size to be set.
      * @param aWidgetType The widget type.
-	 * @param aTemplate The current template for the item. 
-	 * @param aLandscapeOrientation Is view in landscape orientation. 
+	 * @param aTemplate The current template for the item.
+	 * @param aLandscapeOrientation Is view in landscape orientation.
 	 * @param aHighlighted Is item highlighted.
 	 * @param aParentRect The bounding rect in which the item is drawn.
-	 * 
+	 *
      * @return error code
      */
-	TInt GetSize(  TSize& aItemSize, TMmWidgetType aWidgetType, 
-	        const TDesC8& aTemplate, TBool aLandscapeOrientation, 
+	TInt GetSize(  TSize& aItemSize, TMmWidgetType aWidgetType,
+	        const TDesC8& aTemplate, TBool aLandscapeOrientation,
 	        TBool aHighlighted , TRect aParentRect = TRect() );
-    
+
     /**
-     * Get array of templates for subcells ( item children ). 
-     * 
+     * Get array of templates for subcells ( item children ).
+     *
      * @since S60 v3.0
      * @param aWidgetType The widget type.
      * @param aArray The array of subcell children to be set.
      * @param aTemplate The current template for the item.
      * @param aLandscapeOrientation Is view in landscape orientation.
      * @param aHighlighted Is item highlighted.
-     * @param aIsEditMode Is in edit mode. 
-     * 
+     * @param aIsEditMode Is in edit mode.
+     *
      */
 	void GetChildrenL( TMmWidgetType aWidgetType,
-			RArray< TTemplateChild >& aArray, const TDesC8& aTemplate, 
+			RArray< TTemplateChild >& aArray, const TDesC8& aTemplate,
 			TBool aLandscapeOrientation = 0, TBool aHighlighted = 0, TBool aIsEditMode = 0 );
-    
+
     /**
      * Get the layout size ( Grid ) e.g. 3x4
-     * 
+     *
      * @since S60 v3.0
      * @param aWidgetType The widget type.
      * @param aTemplate The current template for the item.
      * @param aLandscapeOrientation Is view in landscape orientation.
-     * 
+     *
      * @return the size of the layout.
      */
-	TSize GetLayoutSizeL( TMmWidgetType aWidgetType, const TDesC8& aTemplate, 
+	TSize GetLayoutSizeL( TMmWidgetType aWidgetType, const TDesC8& aTemplate,
 			TBool aLandscapeOrientation );
-    
+
     /**
      * Get rect of move indicator according to item (as reference position).
-     * The rect is relevant to the item in point (0,0). 
+     * The rect is relevant to the item in point (0,0).
      * e.g for item size 20x360 the rect can be (-5,-5):(365,25).
-     * 
+     *
      * @since S60 v3.0
      * @param aWidgetType The widget type.
      * @param aTemplate The current template for the item.
-     * @param aLandscapeOrientation Is view in landscape orientation. 
+     * @param aLandscapeOrientation Is view in landscape orientation.
      * @param aHighlighted Is item highlighted.
-     * 
+     *
      * @return rect of move indicator area.
      */
-	TRect GetMoveIndicatorRect( TMmWidgetType aWidgetType, const TDesC8& aTemplate, 
+	TRect GetMoveIndicatorRect( TMmWidgetType aWidgetType, const TDesC8& aTemplate,
 			TBool aLandscapeOrientation, TBool aHighlighted );
-    
+
     /**
-     * Get children templates for move indicator. 
-     * 
+     * Get children templates for move indicator.
+     *
      * @since S60 v3.0
      * @param aWidgetType The widget type.
      * @param aArray Array of children templates.
      * @param aTemplate The current template for the item.
      * @param aLandscapeOrientation Is view in landscape orientation.
      * @param aHighlighted Is item highlighted.
-     * 
+     *
      */
 	void GetMoveIndicatorChildrenL( TMmWidgetType aWidgetType,
 			RArray< TTemplateChild >& aArray, const TDesC8& aTemplate, TBool aLandscapeOrientation, TBool aHighlighted );
-    
+
     /**
      * Get size of item for LCT template.
-     * 
+     *
      * @since S60 v3.0
      * @param aLCTTemplate The LCT template name.
      * @param aVariety The variety for aLCTTemplate.
      * @param aWindowLayout The window layout to be used to calculet the size.
      * @param aLandscapeOrientation ETrue if view in landscape orientation otherwise EFalse.
-     * 
+     *
      * @return item size
      */
 	TSize GetLCTSize( const TDesC8& aLCTTemplate, TInt aVariety, TAknWindowLineLayout& aWindowLayout, TBool aLandscapeOrientation );
-    
+
     /**
      * Clean the cache
-     * 
+     *
      * @since S60 v3.0
      */
 	void CleanAndClearCache( );
 
     /**
-     * The template content is loaded. LCT templates have highest priority. 
+     * The template content is loaded. LCT templates have highest priority.
      * If there is no LCT template, a custom template is loaded.
-     * 
+     *
      * @since S60 v3.0
      * @param aTemplate The current template for the item.
      * @param aWidgetType The widget type.
      * @param aMmTemplateType Type of template (LCT/custom).
-     * 
+     *
      * @return Template content.
      */
 	HBufC8* GetTemplateContentL( const TDesC8& aTemplate, TMmWidgetType aWidgetType, TMmTemplateType& aMmTemplateType );
-    
+
     /**
      * Sets scrollbar visibility so template library is aware.
-     * 
+     *
      * @since S60 v3.0
      * @param aIsScrollbarVisible Is scrollbar visible.
      */
     void SetScrollbarVisibilityL( TBool aIsScrollbarVisible );
-    
+
     /**
      * Gets scrollbar visibility.
-     * 
+     *
      * @since S60 v3.0
      * @return Is scrollbar visible.
      */
     TBool GetScrollbarVisibility();
-    
-    /**
-     * Sets the current zoom so template library can retrieve the appropriate templates.
-     * 
-     * @since S60 v3.0
-     * @param aZoom Is The current zoom to be set.
-     */
-	void SetZoom( TAknUiZoom aZoom =  EAknUiZoomAutomatic );
-	
+
 	/**
      * Sets the scrollbar width so template library can calculate the width of the item correctly.
-     * 
+     *
      * @since S60 v3.0
      * @param aScrollbarWidth The current width of the scrollbar.
      */
 	void SetScrollbarWidthL( TInt aScrollbarWidth );
-	
+
 	/**
 	 * Gets scrollbar width.
-	 * 
+	 *
 	 * @since S60 v3.0
 	 * @return scrollbar width
 	 */
 	TInt ScrollbarWidth();
-	
+
 	/**
      * Gets the parent rect for given orientation from which templates were calculated.
-     * 
+     *
      * @since S60 v3.0
      * @param aLandscapeOrientation The current landscape orientation.
      * @return Parent rect for given orientation.
      */
 	TRect GetParentRect( TBool aLandscapeOrientation );
-	
+
 private:
 	/**
 	 * Get the lookup text.
-	 * 
+	 *
 	 * @since S60 v3.0
 	 * @param aTemplate The current template for the item.
 	 * @param aWidgetType The widget type.
-	 * @param aLandscapeOrientation Is view in landscape orientation. 
+	 * @param aLandscapeOrientation Is view in landscape orientation.
 	 * @param aHighlighted Is item highlighted.
-	 * 
-	 * @return Lookup text. 
+	 *
+	 * @return Lookup text.
 	 */
 	HBufC8* LookupText( const TDesC8& aTemplate, TMmWidgetType aWidgetType,
-        TAknUiZoom aZoom, TBool aLandscapeOrientation = EFalse, 
-        TBool aHighlighted = EFalse );	
-    
+                        TBool aLandscapeOrientation = EFalse,
+                        TBool aHighlighted = EFalse );
+
     /**
      * Get the lookup text for layout size.
-     * 
+     *
      * @since S60 v3.0
      * @param aWidgetType The widget type.
      * @param aTemplate The current template for the item.
-     * @param aLandscapeOrientation Is view in landscape orientation. 
-     * 
+     * @param aLandscapeOrientation Is view in landscape orientation.
+     *
      * @return lookup layout text.
      */
-	HBufC8* LookupLayoutText( TMmWidgetType aWidgetType, TAknUiZoom aZoom, 
-        const TDesC8& aTemplate, TBool aLandscapeOrientation );
-    
+	HBufC8* LookupLayoutText( TMmWidgetType aWidgetType,
+                              const TDesC8& aTemplate,
+                              TBool aLandscapeOrientation );
+
 	/**
      * Get the lookup text for move indicator.
-     * 
+     *
      * @since S60 v3.0
      * @param aLookupText The lookup text to be used to create the lookup indicator text.
      * @return lookup Indicator text.
@@ -360,18 +353,18 @@
 
     /**
      * Load the template to cache.
-     * 
+     *
      * @since S60 v3.0
      * @param aWidgetType The widget type.
      * @param aTemplate The current template for the item.
 	 * @param aLandscapeOrientation The current orientation.
      */
-	void LoadTemplateL( TMmWidgetType aWidgetType, const TDesC8& aTemplate, 
+	void LoadTemplateL( TMmWidgetType aWidgetType, const TDesC8& aTemplate,
 			TBool aLandscapeOrientation );
-	
+
     /**
      * Get template file content.
-     * 
+     *
      * @since S60 v3.0
      * @param aContent Descriptor to which the file content should be set.
      * @param aTemplate The current template for the item.
@@ -382,156 +375,147 @@
 	void GetTemplateFileContentL (HBufC8*& aContent, const TDesC8& aTemplate,
 		TMmWidgetType aWidgetType, TMmTemplateType& aMmTemplateType,
 		TBool aLoadCustomTemplate = EFalse);
-		
+
     /**
      * Process xml element.
-     * 
+     *
      * @since S60 v3.0
      * @param aMmTemplateType Type of template (LCT/custom).
      * @param aElement Element ( xml ).
      * @param aTemplate The current template for the item.
-     * @param aLandscapeOrientation Is view in landscape orientation. 
+     * @param aLandscapeOrientation Is view in landscape orientation.
      * @param aHighlighted Is item highlighted.
-     * 
+     *
      */
 	void ProcessElementL (TMmTemplateType aMmTemplateType,
 		TXmlEngElement aElement, const TDesC8& aTemplate,
-		TBool aLandscapeOrientation, TBool aHighlighted);	
-    
+		TBool aLandscapeOrientation, TBool aHighlighted);
+
 	/**
      * Process the LCT template.
-     * 
+     *
      * @since S60 v3.0
      * @param aElement Element (xml).
      * @param aTemplate The current template for the item.
-     * @param aLandscapeOrientation Is view in landscape orientation. 
+     * @param aLandscapeOrientation Is view in landscape orientation.
      * @param aHighlighted Is item highlighted.
      */
-	void ProcessLCTTemplateElementL( TXmlEngElement aElement, 
-	                                         const TDesC8& aTemplate, 
+	void ProcessLCTTemplateElementL( TXmlEngElement aElement,
+	                                         const TDesC8& aTemplate,
 	                                         TBool aLandscapeOrientation,
 	                                         TBool aHighlighted );
 
     /**
      * Process the custom template.
-     * 
+     *
      * @since S60 v3.0
      * @param aElement Element (xml)
      * @param aTemplate The current template for the item.
-     * @param aLandscapeOrientation Is view in landscape orientation. 
+     * @param aLandscapeOrientation Is view in landscape orientation.
      * @param aHighlighted Is item highlighted.
      */
-	void ProcessCustomTemplateElementL( TXmlEngElement aElement, 
-	                                         const TDesC8& aTemplate, 
+	void ProcessCustomTemplateElementL( TXmlEngElement aElement,
+	                                         const TDesC8& aTemplate,
 	                                         TBool aLandscapeOrientation,
 	                                         TBool aHighlighted );
 
     /**
      * Setup LCT template data.
-     * 
+     *
      * @since S60 v3.0
-     * @param aChildTemplate Template where the data should be set up. 
+     * @param aChildTemplate Template where the data should be set up.
      * @param aChildElement Element (xml).
      * @param aItemSize Item size.
      */
 	void SetupLCTTemplateL(TTemplateChild& aChildTemplate, TXmlEngElement& aChildElement, TSize aItemSize );
-    
+
 	/**
-     * Setup custom template. 
-     * 
+     * Setup custom template.
+     *
      * @since S60 v3.0
-     * @param aChildTemplate Template where the data should be set up. 
+     * @param aChildTemplate Template where the data should be set up.
      * @param aChildElement Element (xml).
      */
 	void SetupCustomTemplateL(TTemplateChild& aChildTemplate, TXmlEngElement& aChildElement );
-    
+
 	/**
      * Set the template visual id.
-     * 
+     *
      * @since S60 v3.0
      * @param aChildTemplate Template data.
      */
 	void SetupTemplateVisualId(TTemplateChild& aChildTemplate );
-    
+
 	/**
      * Setup the item children template data for move indicator and cache the data.
-     * 
+     *
      * @since S60 v3.0
      * @param aLookupString Lookup string.
      * @param aItemSize Item size.
      */
 	void SetupMoveIndicatorTemplateChildrenL( const TDesC8& aLookupString, TSize aItemSize );
-    
+
 	/**
      * Adjusts the item size loaded to template cache according to layout size and orientation.
      * This method adjusts the item width so that items occupy the view correctly.
-     * 
+     *
      * @since S60 v3.0
-     * @param aSize The size of the item to be adjusted. 
-     * @param aLayoutSize The layout of the widget e.g 3x4 
+     * @param aSize The size of the item to be adjusted.
+     * @param aLayoutSize The layout of the widget e.g 3x4
      * @param aLandscapeOrientation The orientation of the template being processed.
      */
 	void AdjustItemWidth( TSize& aSize, TSize aLayoutSize, TBool aLandscapeOrientation );
 
 	/**
      * Updates the parent rect according to orientation.
-     * 
+     *
      * @since S60 v3.0
      * @param aParentRect The current parent rectangle.
      * @param aLandscapeOrientation The current orientation.
      */
 	void UpdateParentRect( TRect aParentRect, TBool aLandscapeOrientation );
-    
+
 	/**
      * Sets the parent rect for given orientation.
-     * 
+     *
      * @since S60 v3.0
      * @param aLandscapeOrientation Orientation for which parent rect shoul be set.
      * @param aParentRect The parent rect of current orientation.
      */
 	void SetParentRect( TBool aLandscapeOrientation, TRect aParentRect);
-    
+
 	/**
      * Appends the edit mode template (backdrop icon) to the array of template children passed to the item drawer for drawing.
-     * 
+     *
      * @since S60 v3.0
      * @param aTemplateArray The template array to which the edit mode template is appended.
      * @param aSize The size of the item for which the edit mode template should be calculated.
      */
 	void AppendEditModeTemplateL( RArray< TTemplateChild >& aTemplateArray, TSize aSize );
-    
+
 	/**
      * Adjusts the item size according to layout, LCT item size and orientation.
-     * 
+     *
      * @since S60 v3.0
      * @param aItemSize The LCT item size.
      * @param aLayoutSize The layout size to be used to calculate item size.
      * @param aLandscapeOrientation The orientation for which the template is loaded.
      */
 	void AdjustItemSize(TSize& aItemSize,  TSize aLayoutSize, TBool aLandscapeOrientation );
-    
-	/**
-     * Get the current zoom for displaying templates.
-     * 
-     * @since S60 v3.0
-     * @return The current zoom.
-     */
-	TAknUiZoom Zoom( );
-    
+
 	/**
      * Caches the layout size
-     * 
+     *
      * @since S60 v3.0
      * @param aLayoutSize The layout size to ba cached.
      * @param aTemplate The template for the cached layout size.
      * @param aLandscapeOrientation The orientation for which the template is loaded.
-     * @return The current zoom.
      */
 	void CacheLayoutSizeL( TSize aLayoutSize, const TDesC8& aTemplate, TBool aLandscapeOrientation );
-	
+
 	/**
      * Adjusts icon's align to layout (left, center, right).
-     * 
+     *
      * @since S60 v5.0
      * @param aParentSize The LCT parent item size.
      * @param aTemplateChild Template data.
@@ -545,51 +529,46 @@
 	 * Widget type of template being loaded.
 	 */
     TMmWidgetType iWidgetType;
-    
+
     /**
      * Template type which is being loaded (LCT/custom).
      */
     TMmTemplateType iMmTemplateType;
-    
+
     /**
      * Template sizes map.
      */
     RHashMap< HBufC8*, TSize> iTemplateSizesMap;
-    
+
     /**
      * Item children template map.
      */
     RHashMap< HBufC8*, RArray<TTemplateChild> > iTemplateChildrenMap;
-    
+
     /**
      * Move indicator rects map.
      */
     RHashMap< HBufC8*, TRect> iMoveIndicatorRectsMap;
-    
+
     /**
      * Parent bounding rect.
      */
     TRect iParentRectPortrait;
-	
+
     /**
      * Parent bounding rect.
      */
     TRect iParentRectLandscape;
-    
+
     /**
      * Scrollbar is visible.
      */
     TBool iIsScrollbarVisible;
-	
+
     /**
      * Scrollbar width.
      */
     TInt iScrollbarWidth;
-	
-    /**
-     * Zoom type.
-     */
-    TAknUiZoom iZoom;
 
 	};
 #endif // MMTEMPLATELIBRARY_H
--- a/menufw/menufwui/mmwidgets/inc/mmwidgetcontainer.h	Thu Dec 17 08:40:49 2009 +0200
+++ b/menufw/menufwui/mmwidgets/inc/mmwidgetcontainer.h	Thu Jan 07 12:39:41 2010 +0200
@@ -11,8 +11,8 @@
 *
 * Contributors:
 *
-* Description:  
-*  Version     : %version: MM_48.1.33 % << Don't touch! Updated by Synergy at check-out.
+* Description:
+*  Version     : %version: MM_48.1.35 % << Don't touch! Updated by Synergy at check-out.
 *
 */
 
@@ -29,7 +29,7 @@
 #include <AknsDrawUtils.h>
 #include <AknsLayeredBackgroundControlContext.h>
 #include <AknsListBoxBackgroundControlContext.h>
-#include <aknlongtapdetector.h> 
+#include <aknlongtapdetector.h>
 
 #include "hnsuiteobserver.h"
 #include "mmvisibilityobserver.h"
@@ -57,7 +57,7 @@
 
 /**
  * Structure used to store cache for widget position.
- * 
+ *
  * @since S60 v5.0
  * @ingroup group_mmwidgets
  */
@@ -69,32 +69,32 @@
      * Initializes member variables with sensible values.
      */
     TMmWidgetPosition();
-    
+
 public: // data
 	/**
 	 * The vertical item offset cache.
 	 */
 	TInt iVerticalItemOffset;
-	
+
 	/**
 	 * The top item index cache.
 	 */
 	TInt iTopItemIndex;
-	
+
 	/**
 	 * Tells if the cached values are valid.
 	 */
 	TBool iValid;
-	
+
 	/**
 	 * The mode (portrait/landscape) for which the cache is valid.
 	 */
 	TBool iLandscape;
-	
+
 	/**
 	 * Id from model (not index) of the currently highlighted item.
 	 * It should only be set if the currently highlighted item is
-	 * visible (fully or partially), otherwise it must remain 
+	 * visible (fully or partially), otherwise it must remain
 	 * initialized to KErrNotFound.
 	 */
 	TInt iHighlightedItemId;
@@ -102,7 +102,7 @@
 
 /**
  *  Interface for widget containers.
- *  
+ *
  *  @code
  *  @endcode
  *  @lib mmwidgets
@@ -110,13 +110,13 @@
  *  @ingroup group_mmwidgets
  */
 
-NONSHARABLE_CLASS( CMmWidgetContainer ): public CCoeControl, 
+NONSHARABLE_CLASS( CMmWidgetContainer ): public CCoeControl,
                                          public MMmVisibilityObserver,
                                          public MEikListBoxObserver,
-                                         public MAknLongTapDetectorCallBack                    
+                                         public MAknLongTapDetectorCallBack
 	{
 public:
-        
+
     /**
      * Creates a new grid container.
      *
@@ -125,23 +125,23 @@
      * @param aObjectProvider Object provider.
      * @return GridContainer.
      */
-     IMPORT_C static CMmWidgetContainer* NewGridContainerL( const TRect& aRect, 
+     IMPORT_C static CMmWidgetContainer* NewGridContainerL( const TRect& aRect,
             MObjectProvider* aObjectProvider, CMmTemplateLibrary* aTemplateLibrary );
-	
+
     /**
      * Creates a new listbox container.
      *
      * @since S60 v3.0
      * @param aRect Parent rectangle.
      * @param aObjectProvider Object provider.
-     * @param aTemplateLibrary Template library for drawer. 
+     * @param aTemplateLibrary Template library for drawer.
      * @return ListboxContainer.
      */
-     IMPORT_C static CMmWidgetContainer* NewListBoxContainerL( const TRect& aRect, 
+     IMPORT_C static CMmWidgetContainer* NewListBoxContainerL( const TRect& aRect,
             MObjectProvider* aObjectProvider, CMmTemplateLibrary* aTemplateLibrary );
-	
-public: // Highlight related methods    
-    
+
+public: // Highlight related methods
+
 	/**
 	 * Sets the default highlight.
 	 *
@@ -149,275 +149,276 @@
      * @param aRedraw Is highlight to redraw.
      */
 	virtual void SetDefaultHighlightL( TBool aRedraw = ETrue ) = 0;
-	    
+
     /**
      * Sets the highlight.
-     * 
+     *
      * @since S60 v3.0
      * @param aItemIndex Index to set the highlight at.
      * @param aRedraw Is highlight to redraw.
      */
 	IMPORT_C virtual void SetManualHighlightL(TInt aItemIndex,  TBool aRedraw = ETrue );
-    
+
     /**
      * Gets the highlight from the widget.
-     * 
+     *
      * @since S60 v3.0
      * @return Current Highlight in the widget.
      */
 	IMPORT_C virtual TInt GetHighlight();
-    
+
     /**
      * Gets the highlight from the widget.
-     * 
+     *
      * @since S60 v3.0
      * @return Previous Highlight in the widget.
      */
 	IMPORT_C virtual TInt GetPreviousHighlight();
-    
+
     /**
      * Set highlight visibility.
-     * 
+     *
      * @since S60 v3.0
-     * @param aVisible Visibility status. 
+     * @param aVisible Visibility status.
      */
 	IMPORT_C virtual void SetHighlightVisibilityL( TBool aVisible );
-    
+
     /**
      * Set highlight visibility.
-     * 
+     *
      * @since S60 v3.0
      * @return Visibility status.
      */
 	IMPORT_C virtual TBool IsHighlightVisible();
-	
+
     /**
      * Handle item addition.
-     * 
+     *
      * @since S60 v3.0
      */
 	IMPORT_C virtual void HandleItemAdditionL();
-    
-	
+
+
     /**
      * Handle item removal.
-     * 
+     *
      * @since S60 v3.0
      */
 	IMPORT_C virtual void HandleItemRemovalL();
-	
+
     /**
      * Handle item removal.
-     * 
+     *
      * @since S60 v3.0
      */
-	IMPORT_C CHnSuiteModel* GetSuiteModelL(); 	
-	
+	IMPORT_C CHnSuiteModel* GetSuiteModelL();
+
     /**
      * Retrieve type of widget.
-     * 
+     *
      * @since S60 v3.0
      * @return Type of widget.
      */
 	IMPORT_C virtual THnSuiteWidgetType WidgetType();
-	
+
 	/**
 	 * Removes all LIW objects owned by this object.
-     * 
+     *
      * LIW objects owned by non-LIW objects that are owned by
-     * this object are also removed.  
+     * this object are also removed.
 	 */
 	virtual void RemoveLiwObjects();
-	
+
 	/**
-	 * Checks if timer is active. 
+	 * 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. 
+     *
+     * @param aObserver Observer to receive long tap events.
 	 */
 	IMPORT_C virtual void SetLongTapObserver( MMmLongTapObserver* aObserver );
-	
+
 	/**
-	 * Handles top focus notification. This is called when we want to explicitly inform
-	 * the container that it is in top focus state (or not).
-	 * @param aIsTopFocus ETrue if container is in top focus.
+	 * Informs the container that long tap event is finished (e.g. because 
+	 * a command from the context menu has been issued).
+	 * 
+	 * @param aStopTimer ETrue when the highlight timer should be stopped.
 	 */
-	IMPORT_C virtual void HandleTopFocusL( TBool aIsTopFocus = ETrue );
-	
+	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( 
+	IMPORT_C virtual void HandleOptionsMenuVisibilityChangeL(
 			TBool aOptionsMenuVisible );
-public:    
+public:
 
 	/**
 	 * Sets suite model.
-	 * 
+	 *
 	 * @since S60 v3.0
 	 * @param aModel Suite model.
 	 */
 	virtual void SetSuiteModelL( CHnSuiteModel* aModel );
-	
+
     /**
      * Gets Multimedia Menu model.
-     * 
+     *
      * @since S60 v3.0
      * @return Model.
      */
 	virtual CMmListBoxModel* GetMmModel() = 0;
-    
+
     /**
      * Sets widget observer.
-     * 
+     *
      * @since S60 v3.0
      * @param aObserver Widget observer.
      */
 	IMPORT_C virtual void SetObserver( MMmWidgetObserver*  aObserver);
-    
+
     /**
      * Gets item rectangle according to item index.
-     * 
+     *
      * @since S60 v3.0
      * @param aItemIndex Item index.
      * @return Item rectangle.
      */
     IMPORT_C TRect GetItemRectL( TInt aItemIndex );
-    
+
     /**
      * Sets empty text visible when model has no items.
-     * 
+     *
      * @since S60 v3.0
      * @param aText Text to be shown when view is empty.
      */
 	virtual void SetEmptyTextL(const TDesC& aText) = 0 ;
-    
+
     /**
      * Sets flag.
-     * 
+     *
      * @since S60 v3.0
      * @param Flag Flag.
      */
 	virtual void SetFlag(TInt Flag);
-    
+
     /**
      * Gets widget.
-     * 
+     *
      * @since S60 v3.0
      * @return Widget.
      */
 	virtual CEikListBox* Widget();
-    
+
     /**
      * Sets background context for item drawer and view.
-     * 
+     *
      * @since S60 v3.0
      * @param aBgContext Background context.
      */
 	virtual void SetItemDrawerAndViewBgContext(
 			CAknsBasicBackgroundControlContext * aBgContext ) =0;
-    
+
     /**
      * Sets edit mode so UI is aware.
-     * 
+     *
      * @since S60 v3.0
      * @param aIsEditMode Is edit mode.
      */
 	virtual void SetEditModeL( TBool aIsEditMode );
-	
+
     /**
      * Tells if UI is aware of edit mode.
-     * 
+     *
      * @since S60 v5.0
      * @return Edit mode status.
      */
 	virtual TBool IsEditMode() const;
-    
+
     /**
      * Sets up widget layout (needed for grid).
-     * 
+     *
      * @since S60 v3.0
      */
 	virtual void SetupWidgetLayoutL() =0;
-    
+
     /**
      * Constructor.
      */
 	CMmWidgetContainer();
-    
+
     /**
      * Destructor.
      */
     ~CMmWidgetContainer();
-    
+
     /**
      * from CCoeControl.
-     * 
+     *
      * @since S60 v3.0
      */
     void SizeChanged();
-    
+
     /**
      * Draws the widget.
-     * 
+     *
      * @since S60 v3.0
      * @param aRect Rectangle within the widget shuld be drawn.
      */
     void Draw(const TRect& aRect) const;
-    
+
     /**
       * Draws the widget view.
       *
       * @since S60 v5.0
       */
     virtual void DrawView() = 0;
-    
+
     /**
      * Returns type UID pointer that can be used in MopSupplyObject.
-     * 
+     *
      * @since S60 v3.0
-     * @param aId Type UID, should be the same that was given as aId. 
+     * @param aId Type UID, should be the same that was given as aId.
      * parameter of MopSupplyObject.
      * @return Type UID pointer.
      */
     TTypeUid::Ptr MopSupplyObject(TTypeUid aId);
-       
+
     /**
      * From CCoeControl.
-     * 
+     *
      * @since S60 v3.0
      * @param aPointerEvent Pointer event.
      */
     void HandlePointerEventL(const TPointerEvent& aPointerEvent);
-    
+
     /**
      * From CCoeControl.
-     * 
+     *
      * @since S60 v5.0
      * @param aPointerEvent Pointer event.
      */
     void HandlePointerEventsInEditModeL(const TPointerEvent& aPointerEvent,
     		TBool aAbortAnimations );
-    
+
     /**
      * Set draggable.
-     * 
+     *
      * @since S60 v3.0
      * @param aDraggable Is draggable.
      */
     void SetDraggableL( TBool aDraggable );
-    
+
     /**
      * Gets draggable status.
      * Draggable status determines if the item has
@@ -426,167 +427,130 @@
      * is not draggable in the sense of this method
      * because the dragged item is not yet drawn.
      * It becomes draggable when it start to be drawn
-     * 
+     *
      * @since S60 v3.0
      * @return Is draggable.
      */
     IMPORT_C TBool IsDraggable();
-    
+
     /**
      * From CCoeControl.
-     * 
+     *
      * @since S60 v3.0
      * @return count component controls.
      */
     TInt CountComponentControls() const;
-    
+
     /**
      * From CCoeControl.
-     * 
+     *
      * @since S60 v3.0
      * @param aIndex index of control.
      * @return component control.
      */
     CCoeControl* ComponentControl(TInt aIndex) const;
-    
+
     /**
      * From CCoeControl.
-     * 
+     *
      * @since S60 v3.0
      * @param aKeyEvent key event.
      * @param aType event type.
      * @return response to key event.
      */
     TKeyResponse OfferKeyEventL(const TKeyEvent &aKeyEvent, TEventCode aType);
-    
+
     /**
      * Zooms item icon.
-     * 
+     *
      * @since S60 v3.0
      * @param aItemIndex Item index.
      */
     IMPORT_C void ItemIconZoomL( TInt aItemIndex );
-    
+
     /**
      * Handle button up event.
-     * 
+     *
      * @since S60 v3.0
      * @param aPointerEvent Pointer event.
      */
-    void HandleButtonDownL(const TPointerEvent& aPointerEvent ); 
-    
+    void HandleButtonDownL(const TPointerEvent& aPointerEvent );
+
     /**
      * Handle button down event.
-     * 
+     *
      * @since S60 v3.0
      * @param aPointerEvent Pointer event.
      */
     void HandleButtonUpL(const TPointerEvent& aPointerEvent );
-    
+
     /**
      * Overridden to invalidate item drawer cache on skin change and
      * dynamic variant switch.
-     * 
+     *
      * @param aType A message UID value.
      */
     void HandleResourceChange( TInt aType );
-    
+
     /**
      * Handle dragging of item.
-     * 
+     *
      * @since S60 v3.0
      * @param aPointerEvent Pointer event.
      * @param aAbortAnimation Should animation be aborted.
      */
     void HandleDragL(const TPointerEvent& aPointerEvent, TBool aAbortAnimation );
-    
+
     /**
      * Sets marquee adapter.
-     * 
+     *
      * @since S60 v3.0
      * @param aAdapter A marquee adapter.
-     */  
+     */
     void SetMarqueeAdapter( CMmMarqueeAdapter* aAdapter );
-    
+
     /**
      * Sets up item drawer.
-     * 
+     *
      * @since S60 v3.0
      */
     void SetupDrawer();
-    
+
     /**
      * Cancels gragging of item.
-     * 
+     *
      * @since S60 v3.0
      * @param aAnimate Should dragged item transition be animated.
      */
     IMPORT_C void CancelDragL( TBool aAnimate );
-        
+
     /**
      * Animates item shifting.
-     * 
+     *
      * @since S60 v3.0
      * @param aHighlight Highlighted item index.
      */
     void AnimateShiftL(TInt aHighlight);
-    
+
     /**
      * Gest number of items.
-     * 
+     *
      * @since S60 v3.0
      * @return Number of items.
-     */  
+     */
     IMPORT_C TInt NumberOfItems();
-    
-    /**
-     * Retrieve information if flip is open.
-     * 
-     * @since S60 v5.0
-     * @return ETrue if flip is open. Other cases returns EFalse.
-     */
-    TBool FlipOpen();  
-    
-    /**
-     * Sets the flip open state.
-     * 
-     * @since S60 v5.0
-     * @param aIsFlipOpen Is the flip open.
-     */
-    IMPORT_C void SetFlipOpenL( TBool aIsFlipOpen );
-    
-    /**
-     * This should be called when flip state was changed
-     * 
-     * @since S60 v5.0
-     */
-    virtual void FlipStateChangedL();
-    
+
     /**
      * This should be called at the end of edit mode in non-touch
-     * 
+     *
      * @since S60 v5.0
      */
     IMPORT_C void StopMovingL();
-    
-    /**
-     * Handle zooming change
-     * 
-     * @since S60 v5.0
-     */
-    IMPORT_C void HandleZoomChanged( TAknUiZoom aZoom );
-    
-    /**
-     * Set the zoom
-     * 
-     * @since S60 v5.0
-     */
-    IMPORT_C void SetZoom( TAknUiZoom aZoom );
-    
+
     /**
      * Set the vertical item offset;
      * @param aOffset The offset to set to the widget.
-     * 
+     *
      * @since S60 v5.0
      */
     virtual void SetVerticalItemOffset( TInt aOffset ) = 0;
@@ -594,7 +558,7 @@
     /**
      * Gets the current vertical item offset for the widget in the container.
      * @since S60 v5.0
-     * 
+     *
      * @return The current vertical item offset.
      */
     virtual TInt VerticalItemOffset() const = 0;
@@ -605,7 +569,7 @@
      * @since S60 v5.0
      */
     IMPORT_C void CacheWidgetPosition();
-    
+
     /**
      * Resets the widget position cache to top of view.
      * Both vartical item offset and top index are set to zero
@@ -613,108 +577,108 @@
      * @since S60 v5.0
      */
     IMPORT_C void ResetWidgetPosition();
-    
+
     /**
      * Restores the cached widget position values in the widget.
      * @since S60 v5.0
      */
     IMPORT_C void RestoreWidgetPosition();
-    
+
     /**
      * Scrolls to the specified item index so that the item is seen entirely on screen.
      * @since S60 v5.0
-     * 
+     *
      * @param aIndex The widget item index to scroll to.
      * @return True if any scrolling was done.
      */
     IMPORT_C TBool ScrollToItemL( TInt aIndex );
-    
+
     /**
      * Called when the number of items in widget model changed.
      * @since S60 v5.0
-     * 
+     *
      * @param aChange Type of change
      */
     IMPORT_C void NumberOfItemsChangedL( TItemsChangeType aChange );
-    
+
     /**
-     * Aligns the bottom of view to the last model item bottom edge so that no extra 
+     * Aligns the bottom of view to the last model item bottom edge so that no extra
      * unused pixels are visible at the bottom of screen.
      * @since S60 v5.0
-     * 
+     *
      * @return True if the view was scrolled.
      */
     TBool AlignBottomOfViewL( );
-    
+
     /**
      * Calculate numer of pixels required to scroll when aligning bottom of view.
-     * @since S60 v5.0 
+     * @since S60 v5.0
      */
     TInt CalcBottomPixelsToScroll();
-    
+
     /**
      * Sets visibility of a widget.
-     * 
+     *
      * @param aVisible ETrue if widget should be visible, EFalse - otherwise
      */
     void MakeVisible(TBool aVisible);
-    
+
     /**
      * Tells if item is visible (fully or partially).
      * @param aItemIndex Item index.
      * @return ETrue if visible, EFalse otherwise.
      */
     virtual TBool ItemIsVisible( TInt aItemIndex ) const;
-    
+
      /**
      * Tells if item is entirely visible.
      * @param aIndex The index of the item.
      */
     IMPORT_C TBool ItemIsFullyVisible(TInt aIndex);
-    
+
     /**
     * Prepares the container to be set to the garbage collector.
     */
     IMPORT_C void PrepareForGarbage();
-    
+
     /**
      * Checks, whether the currently dragged item is a draggable item. i.e. parent folder
      * is not a draggable item.
-     * @returns True, if dragged item is parent folder 
+     * @returns True, if dragged item is parent folder
      * or no item is dragged (iDraggedIndex = -1), false otherwise.
      */
     TBool IsNoItemDragged();
-    
+
     /**
      * Sets the iHasFocus member variable, which is used to determine
-     * if marquee animation can be enabled. 
+     * if marquee animation can be enabled.
      */
     IMPORT_C void SetHasFocusL( TBool aHasFocus );
-    
+
     /**
      * Sets the iIsFaded member variable, which is used to determine
-     * if marquee animation can be enabled. 
+     * if marquee animation can be enabled.
      */
     IMPORT_C void SetIsFaded( TBool aIsFaded );
-    
+
 public: // from MMmVisibilityObserver
-    
+
     /**
-     * 
+     *
      * @since S60 v3.0
      */
     IMPORT_C void HandleBackgroundGainedL();
 
     /**
-     * 
+     *
      * @since S60 v3.0
      */
-    IMPORT_C void HandleForegroundGainedL();  
+    IMPORT_C void HandleForegroundGainedL();
 public: // from MEikListBoxObserver
-    
+
     /**
      * Handles list box events.
-     * 
+     *
      * @since S60 v5.0
      */
     virtual void HandleListBoxEventL(CEikListBox* aListBox,
@@ -723,117 +687,117 @@
 public:
     /**
      * From MAknLongTapDetectorCallBack. Handles long tap events.
-     * 
+     *
      * @since S60 v5.0
      * @param aPenEventLocation Point coordinates relative to container.
      * @param aPenEventScreenLocation Point coordinates relative to screen.
      */
-    virtual void HandleLongTapEventL( const TPoint& aPenEventLocation, 
+    virtual void HandleLongTapEventL( const TPoint& aPenEventLocation,
                                       const TPoint& aPenEventScreenLocation );
 protected:
-	
+
     /**
      * Handles additional contruction tasks.
-     * 
+     *
      * @since S60 v3.0
      */
 	void ConstructL();
-	
+
     /**
      * Sets highlight locally.
      * Does not modify the avkon behaviur.
-     * 
+     *
      * @since S60 v3.0
      * @param aItemIndex Index of the item.
      */
 	void SetHighlightL(TInt aItemIndex);
-	
+
 	/**
      * Checks whether given point collides with specific item's re-order area.
-     * 
+     *
      * This function gets called during drag-and-drop operations to
      * help determine whether item re-ordering is needed.
-     * 
+     *
      * @param aItemIndex index of the item to check
      * @param aPoint point coordinates
      * @return ETrue if point is located within item re-order area,
-     *         EFalse otherwise 
+     *         EFalse otherwise
      */
     virtual TBool PointInItemReorderAreaL( TInt aItemIndex, TPoint aPoint );
-    
+
     /**
      * Hides the options menu if it is being displayed.
      * This has (probably) the same effect as clicking Cancel (RSK) -
      * the menu just disappears.
      */
     void HideOptionsMenuIfDisplayed();
-	
+
 protected:
-	
+
     /**
-     * Validates the widget current item index so that it is consistent with 
+     * Validates the widget current item index so that it is consistent with
      * the current model.
      */
     void ValidateWidgetCurrentItemIndex();
-    
+
     /**
      * Updates current view's scrollbar thumbs.
      */
     virtual void UpdateViewScrollBarThumbs();
-    
+
     /**
      * Starts or stops marquee animation based on the current state
      * of the container.
      */
     void StartOrStopMarquee();
-        
+
 private:
 
 	 /**
 	 * Called when the number of items in widget model changed.
 	 * @since S60 v5.0
-	 * 
+	 *
 	 * @param aChange Type of change
 	 */
 	void HandleNumberOfItemsChangedL( TItemsChangeType aChange );
-	
+
     /**
      * Manages zooming of folder.
-     * 
+     *
      * @since S60 v3.0
      * @param aDraggedItemOverIcons Is dragged over icons flag.
      */
 	void ManageFolderZoomingL( TBool aDraggedItemOverIcons );
-	
+
     /**
      * Cancels gragging of item if relevant( Edit Mode is activated )
-     * 
+     *
      * @since S60 v3.0
      */
     void CancelDragL();
-    
+
     /**
-     * Sets the widget highlight back to place if e.g. item was dragged over an item 
+     * Sets the widget highlight back to place if e.g. item was dragged over an item
      * where it could not be dropped into.
-     * 
+     *
      * @since S60 v3.0
      */
     void SetHighlightAfterDrag();
-    
+
     /**
      * Handles key event.
-     * 
+     *
      * @since S60 v3.0
      * @param aKeyEvent Key event.
      * @param aType Event code.
      */
     TKeyResponse HandleKeyEventL(const TKeyEvent &aKeyEvent, TEventCode aType);
-    
+
     /**
      * Handles rocker (select) press.
      */
     void HandleRockerPressL();
-    
+
     /**
      * Gets distance between current and previous position.
      * @param aPos Current position.
@@ -842,14 +806,14 @@
      */
     TInt DeltaSquare( const TPoint aTapPoint,
     		const TPoint aPos );
-    
+
     /**
      * Checks, whether given item is a folder or root folder.
      * @param aItemIndex Item index to check.
      * @returns True, if given item is a folder or root folder, false otherwise.
      */
     TBool IsFolderL( TInt aItemIndex );
-    
+
     /**
 	 * Checks, whether given item has IsDeleteLockedL flag set.
 	 * @param aItemIndex Item index to check.
@@ -862,7 +826,7 @@
 	 * @returns Column count in current view.
 	 */
 	virtual TInt ColumnsInCurrentView();
-	
+
     /**
      * Gets row count in current view.
      * @returns Row count in current view.
@@ -873,32 +837,32 @@
 	 * Scrolls the view move mode non-touch so that move indicators are visible.
 	 */
 	void ScrollViewIfNeededL();
-    
+
     /**
      * Scrolls the view in pixels.
      * @param aPixels THe number of pixels to scroll. If negative, the view is scrolled down.
      */
 	void ScrollInPixelsL( TInt aPixels );
-    
+
     /**
      * Sets up the scrolling effect movement type.
      * @param aDown True if scrolling is downwards.
      */
 	void SetupScrollingEffectsL( TBool aDown );
-	
+
 protected:
-    
+
 
 	/**
 	 * Own.
 	 */
 	CEikListBox* iWidget;
-    
+
     /**
      * Key event observer.
      */
 	MMmKeyEventObserver* iKeyEventObserver;
-    
+
     /**
      * Drag and drop observer.
      */
@@ -907,124 +871,119 @@
       * List box observer.
       */
      MEikListBoxObserver* iListBoxObserver;
-    
+
      /**
      * Notifies about time expiration.
      *
      * Owned by descendant.
      */
     CMmHighlightTimer* iTimer;
-    
+
     /**
      * Marquee adapter.
      * Own.
      */
     CMmMarqueeAdapter* iMarqueeAdapter;
-    
+
     /**
      * Item drawer.
      * Not own.
      */
     CMmListBoxItemDrawer* iDrawer;
-    
+
 protected:
-	
+
 	/**
 	 * Current Highlight.
 	 */
 	TInt iCurrentHighlight;
-	
+
     /**
      * Has drag occurred.
      */
-    TBool iDragOccured;  
-    
+    TBool iDragOccured;
+
 	/**
 	 * Processed display elelments for better performance.
 	 */
     CMmPostEvaluationProcessor* iPostProcessor;
-    
+
 	/**
 	 * Set when long tap is in progress (stylus popup displayed over container)
 	 */
     TBool iLongTapInProgress;
-    
+
 private:
 
 
     /**
      * Background context.
      * Own.
-     */    
+     */
 	CAknsBasicBackgroundControlContext* iBgContext;
 
     /**
      * Last drag point.
-     */	
+     */
 	TPoint iLastDragPoint;
-	
+
     /**
      * First tap point.
-     */	
+     */
 	TPoint iTapPoint;
-	
+
     /**
      * First tap point.
-     */	
+     */
 	TPoint iItemRelativeTapPoint;
-    
+
 	/**
      * Last drag highlight.
-     */	
+     */
 	TInt iLastDragHighlight;
-    
+
     /**
      * Dragged item index.
-     */	
+     */
 	TBool iDraggedIndex;
-	
+
     /**
      * Edit mode status.
-     */	
+     */
 	TBool iIsEditMode;
-    
+
 	/**
      * Destination of item index.
-     */	
+     */
 	TInt iItemIndexDestination;
-    
+
 	/**
      * Previous Highlight.
-     */	
+     */
 	TInt iPreviousHighlight;
-	    
-	/**
-	 * Is flip open
-	 */
-    TBool iFlipOpen;
-    
+
 	/**
 	 * The current rect of the widget control.
 	 */
     TRect iWidgetRect;
-    
+
     /**
      * Longpress allowed flag. We only accept long press (EEventKey+iRepeats)
      * when there was no highlight visible before EEventKeyDown, otherwise
-     * we react only to EEventKeyDown 
+     * we react only to EEventKeyDown
      */
     TBool iAllowLongPress;
-    
+
 	/**
 	 * Cache for widget position.
 	 */
     TMmWidgetPosition iWidgetPositionCache;
-    
+
     /**
      * ETrue if Matrix menu window is faded.
      */
     TBool iIsFaded;
-    
+
     /**
      * ETrue if Matrix menu has focus (i.e. it is not obscured by any popup
      * note).
@@ -1035,13 +994,13 @@
      * ETrue if in foreground.
      */
     TBool iInForeground;
-    
+
     /**
      * Own.
      * Detects long tap events.
      */
     CAknLongTapDetector* iLongTapDetector;
-    
+
     /**
      * Observer to notify about long tap events.
      */
--- a/menufw/menufwui/mmwidgets/inc/mmwidgetsconstants.h	Thu Dec 17 08:40:49 2009 +0200
+++ b/menufw/menufwui/mmwidgets/inc/mmwidgetsconstants.h	Thu Jan 07 12:39:41 2010 +0200
@@ -12,14 +12,14 @@
 * Contributors:
 *
 * Description:  Constants for the matrixmenu
-*  Version     : %version: 33.1.8 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: 33.1.9 % << Don't touch! Updated by Synergy at check-out.
 *
 */
 
 
 #ifndef MMWIDGETSCONSTANTS_H
 #define MMWIDGETSCONSTANTS_H
-	
+
 
 #include <e32keys.h>
 
@@ -32,106 +32,106 @@
 	 * X component of the 4x3 layout.
 	 */
 	const TInt K4By3LayoutX = 4;
-	
+
 	/**
 	 * Y component of the 4x3 layout.
 	 */
 	const TInt K4By3LayoutY = 3;
-	
+
 	/**
 	 * X component of the 3x4 layout.
 	 */
-	
+
 	const TInt K3By4LayoutX = 3;
-	
+
 	/**
 	 * Y component of the 3x4 layout.
 	 */
 	const TInt K3By4LayoutY = 4;
-	
+
 	/**
 	 * X component of the 4x5 layout.
 	 */
 	const TInt K4By5LayoutX = 4;
-	
+
 	/**
 	 * Y component of the 5x4 layout.
 	 */
 	const TInt K4By5LayoutY = 5;
-	
+
 	/**
 	 * X component of the 5x4 layout.
 	 */
 	const TInt K5By4LayoutX = 5;
-	
+
 	/**
 	 * Y component of the 5x4 layout.
 	 */
 	const TInt K5By4LayoutY = 4;
-	
+
 	/**
 	 * Below this value, default highlight in 3x4 grid
 	 * is set up on the first item. Otherwize, on the default
 	 * highlight.
 	 */
 	const TInt K3By4Threshold(5);
-	
+
 	/**
 	 * Below this value, default highlight in 4x3 grid
 	 * is set up on the first item. Otherwize, on the default
 	 * highlight.
 	 */
 	const TInt K4By3Threshold(6);
-	
+
 	/**
 	 * Below this value, default highlight in 5x4 grid
 	 * is set up on the first item. Otherwize, on the default
 	 * highlight.
 	 */
 	const TInt K5By4Threshold(8);
-	
+
 	/**
 	 * Below this value, default highlight in 4x5 grid
 	 * is set up on the first item. Otherwize, on the default
 	 * highlight.
 	 */
 	const TInt K4By5Threshold(10);
-	
+
 	/**
 	 * Default highlight in 3x4 grid.
 	 */
 	const TInt K3By4DefaultHighlight(4);
-	
+
 	/**
 	 * Default highlight in 4x3 grid.
 	 */
 	const TInt K4By3DefaultHighlight(5);
-	
+
 	/**
 	 * Default highlight in 5x4 grid.
 	 */
 	const TInt K5By4DefaultHighlight(7);
-	
+
 	/**
 	 * Default highlight in 4x5 grid.
 	 */
 	const TInt K4By5DefaultHighlight(8);
-	
+
 	/**
 	 * Number of rows in portrait/non-zoom mode;
 	 */
 	const TInt KRowsPortraitZoomNormal(4);
-	
+
 	/**
 	 * Number of columns in landscape/non-zoom mode;
 	 */
 	const TInt KColsPortraitZoomNormal(3);
-	
+
 	/**
 	 * Number of rows in portrait/non-zoom mode;
 	 */
 	const TInt KRowsLandscapeZoomNormal(3);
-	
+
 	/**
 	 * Number of columns in landscape/non-zoom mode;
 	 */
@@ -165,67 +165,67 @@
 	 * Threshold for items shift.
 	 */
 	const TReal KShiftRatio(0.25);
-	
+
 	/**
 	 * Drag and drop speed limit.
 	 */
 	const TInt KDragSpeedIgnoreThreshold(15 * 15);
-	
+
 	/**
 	 * Number of frames to animate.
 	 */
 	const TInt KMaximumAnimationFramesCount( 6 );
-	
+
 	/**
 	 * Number of frames to animate.
 	 */
 	const TInt KUsualAnimationFramesCount( 3 );
-	
+
 	/**
 	 * Number of frames to animate on non-touch devices.
 	 */
 	const TInt KUsualAnimationFramesCountNonTouch( 2 );
-	
+
 	/**
 	 * No animation frames count.
 	 */
 	const TInt KNoAnimationFramesCount( 1 );
-	
+
 	/**
 	 * Delay between redrawing frames.
 	 */
 	const TInt KAnimationFrameDelay( 40000 );
-	
+
 	/**
 	 * Text alpha during drag.
 	 */
 	const TInt KDragTextAlpha( 50 );
-	
+
 	/**
 	 * Focus based scrolling item threshold.
 	 */
 	const TReal KFocusScrollingThreshold( 0.55 );
-	
+
 	/**
 	 * Focus based scrolling item threshold for listbox landscape mode.
 	 */
 	const TReal KFocusScrollingThresholdListboxLanscape( 1.0 );
-	
+
 	/**
 	 * Value of drag ignore.
 	 */
 	const TInt KDragIgnoreRectValue(200);
-	
+
 	/**
 	 * Time between two butto repeat events.
 	 */
 	const TInt KDragRepeatRespawn(2);
-	
+
 	/**
 	 * Determines the speed of focus-based scrolling in edit mode.
 	 */
 	const TInt KEditModeScrollingDelayFactor = 4000;
-	}	
+	}
 
 /**
  * Templates' related constants.
@@ -237,15 +237,15 @@
 	 * its default scrollbar width.
 	 */
 	const TInt KCustomTemplateScrolbarWidth (25);
-	
+
 	const TInt KTemplateChildTextLength (64);
-	
+
 	const TInt KSubCellsCount (6);
-	
+
 	const TInt KItemSubCellsText (300);
-	
+
 	const TInt KMoveIndicatorStartingPos ( 32 );
-	
+
 	}
 
 /**
@@ -263,13 +263,13 @@
         EStdKeyNkpAsterisk,
 #endif
 	    '0', EStdKeyHash };
-	
+
 	/**
 	 * Number of available scancodes.
 	 */
 	const TInt KScanCodeCount = 12;
 	}
-           
+
 namespace MmMarqueeConstants
 	{
 	const TInt KTextTrimmingThreshold (80);
@@ -282,7 +282,7 @@
  * Matrix Template Library panic notice.
  */
 _LIT( KMtlPanic,  "MTL" );
- 
+
 _LIT8( KMmTitle8,       	"mul_title"         );
 _LIT8( KMmDetail8,      	"mul_detail"        );
 _LIT8( KMmIcon8,        	"mul_icon"          );
@@ -290,9 +290,6 @@
 _LIT8( KMmTemplate8,    	"mul_template"      );
 _LIT8( KGrid8,           	"grid"              );
 _LIT8( KListbox8,        	"listbox"           );
-_LIT8( KZoomLarge8,         "large_zoom"        );
-_LIT8( KZoomNormal8,        "normal_zoom"       );
-_LIT8( KZoomSmall8,        	"small_zoom"       	);
 
 _LIT8( KEmpty8,        			"empty"            );
 _LIT8( KOrientation8,        	"orientation"      );
@@ -310,7 +307,6 @@
 _LIT8( KImageVisual8,        	"imagevisual"           );
 _LIT8( KImagePath8,        		"imagepath"           );
 _LIT8( KGridLayout8,        	"gridlayout"           );
-_LIT8( KVarietyZoom8,        	"variety_zoom"           );
 _LIT8( KEnabled8,        	"enabled"           );
 _LIT8( KRow8,        			"row"           );
 _LIT8( KCol8,        			"col"           );
@@ -323,7 +319,7 @@
 _LIT8( KLct8, 					"lct");
 _LIT8( KHighlight8,      		"highlight"       );
 _LIT8( KNoHighlight8,   		"nohighlight"    );
-_LIT8( KLandscape8,        		"landscape"         );   
+_LIT8( KLandscape8,        		"landscape"         );
 
 _LIT8( KMmMoveIndicatorFrame8,    		"mul_move_indicator_frame"      	);
 _LIT8( KMmMoveIndicatorArrowTop8,  		"mul_move_indicator_arrow_top"   	);
@@ -410,7 +406,7 @@
     EImageVisualIdSwapMode = 0x00000001,
     EImageVisualIdEditMode = 0x00000002
     };
-    
+
 /**
  * Defines the type of a template.
  */
--- a/menufw/menufwui/mmwidgets/src/mmdraweranimator.cpp	Thu Dec 17 08:40:49 2009 +0200
+++ b/menufw/menufwui/mmwidgets/src/mmdraweranimator.cpp	Thu Jan 07 12:39:41 2010 +0200
@@ -12,7 +12,7 @@
 * Contributors:
 *
 * Description:  
-*  Version     : %version: MM_40 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: MM_41 % << Don't touch! Updated by Synergy at check-out.
 *
 */
 
@@ -161,7 +161,6 @@
             iLastNotedHighlight = highlightedItemIndex;
     	    }
 
-    	iDrawer.Widget()->View()->SetDisableRedraw(EFalse);
     	
     	TInt currentVerticalOffset = static_cast<CMmWidgetContainer*>(
     	        iDrawer.Widget()->Parent() )->VerticalItemOffset();
@@ -191,7 +190,6 @@
 				}
     		}
 
-    	iDrawer.Widget()->View()->SetDisableRedraw(ETrue);
     	
 		iLastRedrawTime.HomeTime();
     	
@@ -204,7 +202,6 @@
 		else
 			{
 			Cancel();
-			iDrawer.Widget()->View()->SetDisableRedraw( EFalse );
 			
 #ifdef RD_UI_TRANSITION_EFFECTS_LIST
 			if ( iTransTfx && iTransTfxInternal->EffectsDisabled() )
@@ -275,7 +272,6 @@
 			}
 #endif
     
-        iDrawer.Widget()->View()->SetDisableRedraw(ETrue);
         iTimer.After(iStatus, TTimeIntervalMicroSeconds32( 
         		MmEffects::KAnimationFrameDelay ) ); 
         SetActive();
--- a/menufw/menufwui/mmwidgets/src/mmgrid.cpp	Thu Dec 17 08:40:49 2009 +0200
+++ b/menufw/menufwui/mmwidgets/src/mmgrid.cpp	Thu Jan 07 12:39:41 2010 +0200
@@ -12,7 +12,7 @@
 * Contributors:
 *
 * Description:
-*  Version     : %version: MM_92 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: MM_94 % << Don't touch! Updated by Synergy at check-out.
 *
 */
 
@@ -185,7 +185,7 @@
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
-//   
+//
 void CMmGrid::CreateItemDrawerL()
     {
     iItemDrawer = iMmDrawer;
@@ -235,7 +235,7 @@
              DrawNow();
              }
 #endif
-         
+
          }
     }
 
@@ -284,7 +284,7 @@
 void CMmGrid::HandlePointerEventInNormalModeL( const TPointerEvent& aPointerEvent )
     {
     CMmWidgetContainer* parent = static_cast<CMmWidgetContainer*>( Parent() );
-    if ( aPointerEvent.iType == TPointerEvent::EButton1Down && !parent->FlipOpen() )
+    if ( aPointerEvent.iType == TPointerEvent::EButton1Down )
 		{
         const TInt KIgnoreRectSize = 40;
         TRect ignoreDragRect(aPointerEvent.iPosition,
@@ -317,7 +317,7 @@
     View()->ItemDrawer()->SetFlags( CListItemDrawer::EPressedDownState );
     CMmWidgetContainer* parent = static_cast<CMmWidgetContainer*>( Parent() );
     TBool highlightWasVisible = parent->IsHighlightVisible();
-    
+
     if( itemUnderPointerIndex == View()->CurrentItemIndex() )
         {
 #ifdef RD_UI_TRANSITION_EFFECTS_LIST
@@ -339,7 +339,7 @@
 #else
          View()->DrawItem( itemUnderPointerIndex );
 #endif
-        }  
+        }
      else
         {
         TInt previouslyHighlightedItemIndex = View()->CurrentItemIndex();
@@ -350,7 +350,7 @@
             }
         }
     }
-    
+
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
@@ -407,86 +407,87 @@
 //
 // -----------------------------------------------------------------------------
 //
+void CMmGrid::ScrollWithoutRedraw( TInt distanceInPixels )
+    {
+    CAknGridView* view = static_cast<CAknGridView*>( iView );
+    const TInt rowHeight = ItemHeight();
+    const TInt numOfCols = view->NumberOfColsInView();
+    const TInt itemCount = iModel->NumberOfItems();
+    TInt totalNumberOfRows = itemCount / numOfCols;
+    if ( itemCount % numOfCols )
+        {
+        ++totalNumberOfRows;
+        }
+    const TInt topItemRowIndex = TopItemIndex() / numOfCols;
+    
+    // desired view position relative to the first item in grid (always positive)
+    TInt desiredViewPosition = rowHeight * topItemRowIndex - VerticalItemOffset();
+    
+    desiredViewPosition += distanceInPixels;
+    
+    const TInt viewPositionMin = 0;
+    const TInt viewPositionMax = 
+		Max( 0, ( totalNumberOfRows * rowHeight ) - view->ViewRect().Height() );
+    
+    desiredViewPosition = Min( desiredViewPosition, viewPositionMax );
+    desiredViewPosition = Max( desiredViewPosition, viewPositionMin );
+   
+    ASSERT( desiredViewPosition >= 0 );
+    
+    TInt newTopItemIndex = ( desiredViewPosition / rowHeight ) * numOfCols;
+    TInt newVerticalOffset = -( desiredViewPosition % rowHeight ); 
+    SetTopItemIndex( newTopItemIndex );
+    SetVerticalItemOffset( newVerticalOffset );
+    }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
 TInt CMmGrid::ScrollIfNeeded( const TPointerEvent& aPointerEvent )
     {
     CAknGridView* view = static_cast<CAknGridView*>( View() );
     TInt nextScrollDelay = 0;
 
-    TBool readyForScrolling = iMmDrawer->GetAnimator()->IsReadyForNewAnimation() 
+    TBool readyForScrolling = iMmDrawer->GetAnimator()->IsReadyForNewAnimation()
 		&& iMmDrawer->GetFloatingItemCount() != 0;
-    
+
 	if ( IsPointerInTopScrollingThreshold( aPointerEvent ) )
 		{
 		// scroll up by one row
-		      TInt newCurrentItemIndex = CurrentItemIndex() - view->NumberOfColsInView();
+		TInt newCurrentItemIndex = CurrentItemIndex() - view->NumberOfColsInView();
         if ( newCurrentItemIndex < 0 )
             {
             newCurrentItemIndex = CurrentItemIndex();
             }
 
-        if ( !View()->ItemIsVisible( 0 ) )
-            {
-            nextScrollDelay = MmEffects::KEditModeScrollingDelayFactor *
-                Max( 1, aPointerEvent.iPosition.iY - Rect().iTl.iY );
-            
-            if ( readyForScrolling )
-                {
-                TRAP_IGNORE( HandlePhysicsScrollEventL( -iItemHeight ) );
-                View()->SetCurrentItemIndex( newCurrentItemIndex );
-                }
-            }
-        else
-            {
-            if ( readyForScrolling )
-            	{
-				TBool redrawDisabledBefore = View()->RedrawDisabled();
-				View()->SetDisableRedraw( EFalse );
-				CMmWidgetContainer* parent = static_cast<CMmWidgetContainer*>( Parent() );
-				parent->ResetWidgetPosition();
-				DrawNow();
-				View()->SetDisableRedraw( redrawDisabledBefore );
-            	}
-            }
+       nextScrollDelay = MmEffects::KEditModeScrollingDelayFactor *
+		   Max( 1, aPointerEvent.iPosition.iY - Rect().iTl.iY );
+
+		if ( readyForScrolling )
+			{
+			ScrollWithoutRedraw( -iItemHeight );
+			View()->SetCurrentItemIndex( newCurrentItemIndex );
+			}
 		}
 	else if ( IsPointerInBottomScrollingThreshold( aPointerEvent) )
 		{
-		// scroll down by one row
-		TInt lastItemIndex = iModel->NumberOfItems() - 1;
-
-		// maximum top item index that can be set (greater top item index value would
-		// cause an empty row at the bottom of the menu)
-		TInt maxTopItemIndex = View()->CalcNewTopItemIndexSoItemIsVisible( lastItemIndex );
-		TInt currentItemIndex = CurrentItemIndex();
-		TInt newCurrentItemIndex = currentItemIndex + view->NumberOfColsInView();
-		TInt distanceToScroll( iItemHeight );
-		if ( View()->ItemIsVisible( lastItemIndex ) )
+		TInt newCurrentItemIndex = CurrentItemIndex() + view->NumberOfColsInView();
+		if ( newCurrentItemIndex > iModel->NumberOfItems() - 1 )
 			{
-			TPoint lastItemPos( View()->ItemPos( lastItemIndex ) );
-			distanceToScroll = iItemHeight - ( Rect().iBr.iY - lastItemPos.iY )
-								+ Rect().Height() - iViewLayout.iHeight * iItemHeight;
+			newCurrentItemIndex = CurrentItemIndex();
 			}
-		
-		if ( newCurrentItemIndex <= lastItemIndex )
+	
+		nextScrollDelay = MmEffects::KEditModeScrollingDelayFactor *
+			Max( 1, Rect().iBr.iY - aPointerEvent.iPosition.iY );
+
+		if ( readyForScrolling )
 			{
-			nextScrollDelay = MmEffects::KEditModeScrollingDelayFactor *
-				Max( 1, Rect().iBr.iY - aPointerEvent.iPosition.iY );
-			
-		    if ( readyForScrolling )
-		    	{
-		    	TRAP_IGNORE( HandlePhysicsScrollEventL( distanceToScroll ) );
-		    	View()->SetCurrentItemIndex( newCurrentItemIndex );
-		    	}
-			}
-		else if ( TopItemIndex() < maxTopItemIndex )
-			{
-		    if ( readyForScrolling )
-		    	{
-		    	TRAP_IGNORE( HandlePhysicsScrollEventL( distanceToScroll ) );
-		    	View()->SetCurrentItemIndex( currentItemIndex );
-		    	}
+			ScrollWithoutRedraw( iItemHeight );
+			View()->SetCurrentItemIndex( newCurrentItemIndex );
 			}
 		}
-	
+
     return nextScrollDelay;
     }
 
@@ -687,7 +688,7 @@
         {
         CAknGrid::HandleViewRectSizeChangeL();
         }
-    else	
+    else
         {
         // for mirrored layout this function should do
         // exactly the same things as CAknGrid::HandleViewRectSizeChangeL
@@ -713,16 +714,16 @@
     const TInt numOfCols = view->NumberOfColsInView();
     const TInt numOfRows = view->NumberOfRowsInView();
     const TInt itemCount = iModel->NumberOfItems();
-    
+
     ASSERT( numOfCols > 0 );
-    
+
     TInt lastRow = 0;
     if ( itemCount > 0 )
         {
         lastRow = ( itemCount - 1 ) / numOfCols;
         }
     TInt maxPossibleTopRow = Max( 0, lastRow - numOfRows + 1 );
-    
+
     TInt topRow = TopItemIndex() / numOfCols;
 
     if ( !( TopItemIndex() % numOfCols == 0 &&
--- a/menufw/menufwui/mmwidgets/src/mmgridcontainer.cpp	Thu Dec 17 08:40:49 2009 +0200
+++ b/menufw/menufwui/mmwidgets/src/mmgridcontainer.cpp	Thu Jan 07 12:39:41 2010 +0200
@@ -11,9 +11,9 @@
 *
 * Contributors:
 *
-* Description:   
-*  Version     : %version: MM_72 % << Don't touch! Updated by Synergy at check-out.
-*  Version     : %version: MM_72 % << Don't touch! Updated by Synergy at check-out.
+* 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.
 *
 */
 
@@ -39,9 +39,9 @@
 // Two-phased constructor.
 // -----------------------------------------------------------------------------
 //
-CMmGridContainer* CMmGridContainer::NewLC( const TRect& aRect, 
+CMmGridContainer* CMmGridContainer::NewLC( const TRect& aRect,
         MObjectProvider* aObjectProvider, CMmTemplateLibrary* aLibrary )
-    {        
+    {
     CMmGridContainer* self = new( ELeave ) CMmGridContainer();
     CleanupStack::PushL( self );
     self->ConstructL( aRect, aObjectProvider, aLibrary );
@@ -53,9 +53,9 @@
 // Two-phased constructor.
 // -----------------------------------------------------------------------------
 //
-CMmGridContainer* CMmGridContainer::NewL( const TRect& aRect, 
+CMmGridContainer* CMmGridContainer::NewL( const TRect& aRect,
         MObjectProvider* aObjectProvider, CMmTemplateLibrary* aLibrary )
-    {        
+    {
     CMmGridContainer* self = NewLC( aRect, aObjectProvider, aLibrary);
     CleanupStack::Pop( self );
     return self;
@@ -71,11 +71,11 @@
     }
 
 // -----------------------------------------------------------------------------
-// 
+//
 // -----------------------------------------------------------------------------
 //
 CAknGrid* CMmGridContainer::Grid()
-    { 
+    {
     return iGrid;
     }
 // -----------------------------------------------------------------------------
@@ -84,14 +84,14 @@
 // -----------------------------------------------------------------------------
 //
 CMmGridContainer::~CMmGridContainer()
-    {  
+    {
     delete iGrid;
     }
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
-//    
+//
 THnSuiteWidgetType CMmGridContainer::WidgetType()
 	{
 	return EGridWidget;
@@ -100,27 +100,27 @@
 // CMmGridContainer::ConstructL()
 // 2nd phase constructor
 // -----------------------------------------------------------------------------
-//    
+//
 void CMmGridContainer::ConstructL( const TRect& aRect, MObjectProvider* aObjectProvider,
         CMmTemplateLibrary* aTemplateLibrary )
     {
     CMmWidgetContainer::ConstructL();
-    
+
     SetMopParent( aObjectProvider );
-    CreateWindowL(); // Creates window.     
+    CreateWindowL(); // Creates window.
     iWidget = CreateGridL(aTemplateLibrary);
     iWidget->SetListBoxObserver( this );
     SetRect( aRect ); // Sets rectangle of frame.
-    ActivateL(); // Activates window. ( Ready to draw )     
+    ActivateL(); // Activates window. ( Ready to draw )
     SetupDrawer();
-    SetHighlightVisibilityL( !AknLayoutUtils::PenEnabled() );	
+    SetHighlightVisibilityL( !AknLayoutUtils::PenEnabled() );
     iPostProcessor = CMmPostEvaluationProcessor::NewL( *iDrawer );
     }
 
 // -----------------------------------------------------------------------------
 // CMmGridContainer::CreateGridL()
 // Constructs listbox from resource, creates scroll bar and sets empty
-// list background text. 
+// list background text.
 // -----------------------------------------------------------------------------
 //
 CMmGrid* CMmGridContainer::CreateGridL( CMmTemplateLibrary* aTemplateLibrary )
@@ -133,7 +133,7 @@
     			CAknGridView::EScrollFollowsItemsAndLoops );
     iGrid->SetSecondaryScrollingType(
     			CAknGridView::EScrollFollowsGrid );
-    iGrid->ScrollBarFrame()->SetScrollBarVisibilityL( 
+    iGrid->ScrollBarFrame()->SetScrollBarVisibilityL(
     		CEikScrollBarFrame::EAuto, CEikScrollBarFrame::EAuto );
     iGrid->ScrollBarFrame()->DrawBackground( EFalse, EFalse );
     return iGrid;
@@ -142,7 +142,7 @@
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
-//     
+//
 void CMmGridContainer::SizeChanged()
     {
     CMmWidgetContainer::SizeChanged();
@@ -171,12 +171,12 @@
     	    			CAknGridView::EScrollFollowsItemsAndLoops );
     	iGrid->SetSecondaryScrollingType(
     	    			CAknGridView::EScrollFollowsGrid );
-    	    
+
     	}
-	
+
 	// In EditMode we allow Avkon to redraw scrollbar background
 	// to prevent scrollbar flicking.
-	// When edit mode is disabled, this redrawing causes performance problems 
+	// When edit mode is disabled, this redrawing causes performance problems
 	// (and disabling it does not produce erroneous side-effects).
 	if( aIsEditMode )
 		{
@@ -186,7 +186,7 @@
 		{
 	    iGrid->ScrollBarFrame()->DrawBackground( EFalse, EFalse );
 		}
-	
+
     CMmWidgetContainer::SetEditModeL( aIsEditMode );
     }
 
@@ -196,7 +196,7 @@
 //
 EXPORT_C void CMmGridContainer::SetEmptyTextL(const TDesC& aText)
     {
-    iGrid->SetEmptyGridTextL( aText );  
+    iGrid->SetEmptyGridTextL( aText );
     }
 
 // -----------------------------------------------------------------------------
@@ -204,26 +204,9 @@
 // -----------------------------------------------------------------------------
 //
 EXPORT_C void CMmGridContainer::SetDefaultHighlightL(  TBool aRedraw )
-    {  
-    CAknGridView* view = (CAknGridView*) iGrid->View();
-    
-    if ( view )
-        {
-        TInt defaultHighlight( 0 );
-        TSize layout = TSize( view->NumberOfColsInView(),
-        		view->NumberOfRowsInView() );
-        
-        if ( Layout_Meta_Data::IsLandscapeOrientation() || FlipOpen() )
-            {
-            defaultHighlight = LandscapeOrientationDefaultHighlight( layout );
-            }
-        else
-            {
-            defaultHighlight = PortraitOrientationDefaultHighlight( layout );
-            }
-        
-        SetManualHighlightL( defaultHighlight + DefaultHighlightOffset(), aRedraw );
-        }
+    {
+    TInt defaultHighlight( 0 );
+    SetManualHighlightL( defaultHighlight + DefaultHighlightOffset(), aRedraw );
     }
 
 // -----------------------------------------------------------------------------
@@ -231,79 +214,17 @@
 //
 // -----------------------------------------------------------------------------
 //
-TInt CMmGridContainer::LandscapeOrientationDefaultHighlight( TSize aLayout )
-	{
-	TInt defaultHighlight( 0 );
-	
-    if ( aLayout == TSize(MmGrid::K4By3LayoutX, MmGrid::K4By3LayoutY) 
-    		&& iGrid->Model()->NumberOfItems() >= MmGrid::K4By3Threshold )
-        {
-        defaultHighlight = MmGrid::K4By3DefaultHighlight;
-        }
-    else if ( aLayout == TSize(MmGrid::K5By4LayoutX, MmGrid::K5By4LayoutY) 
-    		&& iGrid->Model()->NumberOfItems() >= MmGrid::K5By4Threshold )
-        {
-        defaultHighlight = MmGrid::K5By4DefaultHighlight;
-        }
-    // When flip is opened, the phone layout is not changed immediately,
-    // so the phone might still be in portrait mode for a couple of secs.
-    // However, we have to set the correct default item immediately, and
-    // the correct item is the one for landscape mode, even if the phone
-    // is still in portrait mode. On variant switch 3x4 layout will be
-    // replaced by 4x3 layout, while 4x5 layout will change into 5x4.
-    else if ( aLayout == TSize( MmGrid::K3By4LayoutX, MmGrid::K3By4LayoutY )
-            && iGrid->Model()->NumberOfItems() >= MmGrid::K4By3Threshold )
-        {
-        defaultHighlight = MmGrid::K4By3DefaultHighlight;
-        }
-    else if ( aLayout == TSize( MmGrid::K4By5LayoutX, MmGrid::K4By5LayoutY )
-            && iGrid->Model()->NumberOfItems() >= MmGrid::K5By4Threshold )
-        {
-        defaultHighlight = MmGrid::K5By4DefaultHighlight;
-        }
-    
-    return defaultHighlight;
-	}
-
-// -----------------------------------------------------------------------------
-//
-//
-// -----------------------------------------------------------------------------
-//
-TInt CMmGridContainer::PortraitOrientationDefaultHighlight( TSize aLayout )
-	{
-	TInt defaultHighlight( 0 );
-	
-	if ( aLayout == TSize(MmGrid::K4By5LayoutX, MmGrid::K4By5LayoutY ) 
-			&& iGrid->Model()->NumberOfItems() >= MmGrid::K4By5Threshold )
-		{
-		defaultHighlight = MmGrid::K4By5DefaultHighlight;
-		}
-	else if ( aLayout == TSize(MmGrid::K3By4LayoutX, MmGrid::K3By4LayoutY) 
-			&& iGrid->Model()->NumberOfItems() >= MmGrid::K3By4Threshold )
-		{
-		defaultHighlight = MmGrid::K3By4DefaultHighlight;
-		}
-	
-    return defaultHighlight;
-	}
-
-// -----------------------------------------------------------------------------
-//
-//
-// -----------------------------------------------------------------------------
-//
 TInt CMmGridContainer::DefaultHighlightOffset()
 	{
 	TInt topVisibleItemIndex = iGrid->View()->TopItemIndex();
 	TInt hiddenPixels = -iGrid->View()->ItemOffsetInPixels();
-	
-	if ( iGrid->View()->ItemIsPartiallyVisible( topVisibleItemIndex ) 
+
+	if ( iGrid->View()->ItemIsPartiallyVisible( topVisibleItemIndex )
 		&& hiddenPixels > iGrid->View()->ItemSize().iHeight / 2 )
 		{
 		topVisibleItemIndex += ColumnsInCurrentView();
 		}
-		
+
 	return topVisibleItemIndex;
 	}
 
@@ -357,12 +278,12 @@
 // -----------------------------------------------------------------------------
 //
 void CMmGridContainer::SetHighlightVisibilityL( TBool aVisible )
-    {    
+    {
     CMmWidgetContainer::SetHighlightVisibilityL( aVisible );
     }
 
 // ---------------------------------------------------------------------------
-// 
+//
 // ---------------------------------------------------------------------------
 //
 void CMmGridContainer::HandleItemAdditionL()
@@ -372,12 +293,12 @@
 
 
 // ---------------------------------------------------------------------------
-// 
+//
 // ---------------------------------------------------------------------------
 //
 void CMmGridContainer::HandleItemRemovalL()
 	{
-	
+
 	GetMmModel()->HandleSuiteEventL( ESuiteItemsRemoved, GetMmModel()->GetSuiteModel() );
 	ValidateWidgetCurrentItemIndex();
 	iDrawer->RemoveFloatingItems();
@@ -385,12 +306,12 @@
 		{
 		iDrawer->GetAnimator()->SetNextRedrawToWholeScreen();
 		}
-	
+
 	CacheWidgetPosition();
 	iGrid->HandleItemRemovalL();
 	RestoreWidgetPosition();
 	CacheWidgetPosition();
-	
+
 	if ( iCurrentHighlight != iGrid->CurrentItemIndex() )
 		{
 		iCurrentHighlight = iGrid->CurrentItemIndex();
@@ -409,40 +330,7 @@
 	}
 
 // ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
 //
-void CMmGridContainer::FlipStateChangedL()
-	{
-//	if ( !IsEditMode() )
-//		{
-//		if ( FlipOpen() )
-//			{
-//			if ( iTimer )
-//				{
-//				delete iTimer;
-//				iTimer = NULL;
-//				}
-//			SetHighlightVisibilityL( ETrue );
-//			if ( iCurrentHighlight == KErrNotFound )
-//			    {
-//			    SetDefaultHighlightL( ETrue );
-//			    }
-//			}
-//		else
-//			{
-//			if ( AknLayoutUtils::PenEnabled() && !iTimer )
-//				{
-//				iTimer = CMmHighlightTimer::NewL( this );
-//				}
-//			SetHighlightVisibilityL( EFalse );
-//			DrawNow();
-//			}
-//		}
-	}
-
-// ---------------------------------------------------------------------------
-// 
 // ---------------------------------------------------------------------------
 //
 TInt CMmGridContainer::ColumnsInCurrentView()
@@ -451,7 +339,7 @@
 	return view->NumberOfColsInView();
 	}
 // ---------------------------------------------------------------------------
-// 
+//
 // ---------------------------------------------------------------------------
 //
 TInt CMmGridContainer::RowsInCurrentView()
@@ -461,7 +349,7 @@
     }
 
 // ---------------------------------------------------------------------------
-// 
+//
 // ---------------------------------------------------------------------------
 //
 void CMmGridContainer::DrawView()
@@ -502,7 +390,7 @@
 //
 TBool CMmGridContainer::ItemIsVisible( TInt aItemIndex ) const
     {
-    CListBoxView* v = iGrid->View(); 
+    CListBoxView* v = iGrid->View();
     TRect itemRect( v->ItemPos( aItemIndex ), v->ItemSize( aItemIndex ) );
     TRect viewRect = v->ViewRect();
     TBool isVisible = EFalse;
--- a/menufw/menufwui/mmwidgets/src/mmlctutils.cpp	Thu Dec 17 08:40:49 2009 +0200
+++ b/menufw/menufwui/mmwidgets/src/mmlctutils.cpp	Thu Jan 07 12:39:41 2010 +0200
@@ -26,11 +26,11 @@
 #include <AknLayoutFont.h>
 #include <AknDef.hrh>
 
-  
+
 // ---------------------------------------------------------------------------
 //
 // ---------------------------------------------------------------------------
-//  
+//
 TAknWindowComponentLayout MmLCTUtils::ItemLayout( const TDesC8& aLayout, TInt aVariety )
 	{
     if ( !aLayout.Compare(KListSingleLargeGraphicPane8))
@@ -79,7 +79,7 @@
 // ---------------------------------------------------------------------------
 //
 // ---------------------------------------------------------------------------
-//           
+//
 TAknTextComponentLayout MmLCTUtils::TextLayout( const TDesC8& aLayout, TInt aVariety )
     {
     if ( aLayout.Compare(KUiaccelAalistSinglePaneT18) == 0 )
@@ -105,7 +105,7 @@
     else if ( aLayout.Compare(KlistSingleLargeGraphicPaneT18) == 0 )
         {
         return AknLayoutScalable_Avkon::list_single_large_graphic_pane_t1(aVariety);
-        }       
+        }
     else if ( aLayout.Compare(KUiaccelAagridCellImagePaneT18) == 0 )
         {
         return AknLayoutScalable_UiAccel::aagrid_cell_image_pane_t1(aVariety);
@@ -154,7 +154,7 @@
     else if ( aLayout.Compare(KUiaccelAalistDoubleGraphicPaneG38) == 0 )
         {
         return AknLayoutScalable_UiAccel::aalist_double_graphic_pane_g3(aVariety);
-        }        
+        }
     else if ( aLayout.Compare(KUiaccelAalistDoublePaneG18) == 0 )
         {
         return AknLayoutScalable_UiAccel::aalist_double_pane_g1(aVariety);
@@ -162,7 +162,7 @@
     else if ( aLayout.Compare(KUiaccelAalistDoublePaneG28) == 0 )
         {
         return AknLayoutScalable_UiAccel::aalist_double_pane_g2(aVariety);
-        } 
+        }
     else if ( aLayout.Compare(KlistSingleLargeGraphicPane8) == 0 )
         {
         return AknLayoutScalable_Avkon::list_single_large_graphic_pane(aVariety, 0,0);
@@ -174,15 +174,15 @@
     else if ( aLayout.Compare(KlistSingleLargeGraphicPaneG2Cp28) == 0 )
         {
         return AknLayoutScalable_Avkon::list_single_large_graphic_pane_g2_cp2(aVariety);
-        } 
+        }
     else if ( aLayout.Compare(KlistSingleLargeGraphicPaneG4Cp28) == 0 )
         {
         return AknLayoutScalable_Avkon::list_single_large_graphic_pane_g4_cp2(aVariety);
-        } 
+        }
     else if ( aLayout.Compare(KUiaccelAagridCellImagePaneG18) == 0 )
         {
         return AknLayoutScalable_UiAccel::aagrid_cell_image_pane_g1(aVariety);
-        } 
+        }
     else if ( aLayout.Compare(KUiaccelAagridCellImagePaneG28) == 0 )
         {
         return AknLayoutScalable_UiAccel::aagrid_cell_image_pane_g2(aVariety);
@@ -251,8 +251,8 @@
         {
         User::Panic(KMLID, -1);
         }
-    return TAknWindowComponentLayout();        
-    }    
+    return TAknWindowComponentLayout();
+    }
 
 // ---------------------------------------------------------------------------
 //
@@ -278,10 +278,10 @@
 //
 // ---------------------------------------------------------------------------
 //
-void MmLCTUtils::SetupTextSubCellTemplate( TSize aItemSize, 
+void MmLCTUtils::SetupTextSubCellTemplate( TSize aItemSize,
                               TTemplateChild& aSubCellTemplate )
     {
-    TAknTextComponentLayout textLayout = TextLayout( aSubCellTemplate.iLct, aSubCellTemplate.iVariety);                
+    TAknTextComponentLayout textLayout = TextLayout( aSubCellTemplate.iLct, aSubCellTemplate.iVariety);
     TAknTextLineLayout textlineLayout = textLayout.LayoutLine();
     TAknLayoutText t;
     t.LayoutText( aItemSize, textlineLayout );
@@ -295,12 +295,12 @@
 //
 // ---------------------------------------------------------------------------
 //
-void MmLCTUtils::SetupGraphicSubCellTemplate( TSize aItemSize, 
+void MmLCTUtils::SetupGraphicSubCellTemplate( TSize aItemSize,
                               TTemplateChild& aSubCellTemplate )
     {
     TAknWindowComponentLayout graphicLayout = GraphicLayout (
 			aSubCellTemplate.iLct, aSubCellTemplate.iVariety);
-	TAknLayoutRect r;           
+	TAknLayoutRect r;
     r.LayoutRect( aItemSize, graphicLayout.LayoutLine() );
     aSubCellTemplate.iTextAlign = CGraphicsContext::ECenter ;
     aSubCellTemplate.iRectAccordingToParent = r.Rect();
@@ -331,11 +331,6 @@
     TInt rows(0);
     cols = MmLCTUtils::LCTParameterLimits( aLCTTemplate, aVariety ).LastColumn() + 1;
     rows = MmLCTUtils::LCTParameterLimits( aLCTTemplate, aVariety ).LastRow() + 1;
-    if ( aLCTTemplate.Compare(KCellAppPane8) == 0 && aVariety == 3 )
-    	{
-    	cols = 6;
-    	rows = 2;
-    	}
     return TSize( cols, rows);
 	}
 
--- a/menufw/menufwui/mmwidgets/src/mmtemplatelibrary.cpp	Thu Dec 17 08:40:49 2009 +0200
+++ b/menufw/menufwui/mmwidgets/src/mmtemplatelibrary.cpp	Thu Jan 07 12:39:41 2010 +0200
@@ -11,7 +11,7 @@
 *
 * Contributors:
 *
-* Description:   
+* Description:
 *
 */
 
@@ -31,7 +31,7 @@
 
 
 // ---------------------------------------------------------------------------
-// 
+//
 // ---------------------------------------------------------------------------
 //
 TUint32 HBuf16Hash( HBufC8* const &  aBuf )
@@ -51,9 +51,9 @@
 //
 // ---------------------------------------------------------------------------
 //:
-CMmTemplateLibrary::CMmTemplateLibrary() 
+CMmTemplateLibrary::CMmTemplateLibrary()
 	: iWidgetType(EWidgetTypeNone),
-	iTemplateSizesMap( &HBuf16Hash, &HBuf16Ident ), 
+	iTemplateSizesMap( &HBuf16Hash, &HBuf16Ident ),
 	iTemplateChildrenMap( &HBuf16Hash, &HBuf16Ident ),
 	iMoveIndicatorRectsMap( &HBuf16Hash, &HBuf16Ident )
 	{
@@ -76,26 +76,26 @@
 
 	THashMapIter<HBufC8*, TSize> iter( iTemplateSizesMap );
 	while ( HBufC8* const * ptr = iter.NextKey() )
-		{       
+		{
 		delete *ptr;
-		}    
+		}
 	iTemplateSizesMap.Close();
 
 	THashMapIter<HBufC8*, RArray<TTemplateChild> > iter2( iTemplateChildrenMap );
 	while ( HBufC8* const * ptr = iter2.NextKey() )
-		{       
+		{
 		iter2.CurrentValue()->Close();
 		delete *ptr;
-		}    
+		}
 	iTemplateChildrenMap.Close();
-    
+
 	THashMapIter<HBufC8*, TRect> iter4( iMoveIndicatorRectsMap );
 	while ( HBufC8* const * ptr = iter4.NextKey() )
-		{       
+		{
 		delete *ptr;
-		}    
+		}
 	iMoveIndicatorRectsMap.Close();
-    
+
     }
 
 // ---------------------------------------------------------------------------
@@ -120,7 +120,7 @@
     self->ConstructL();
     return self;
     }
-	
+
 // ---------------------------------------------------------------------------
 //
 // ---------------------------------------------------------------------------
@@ -134,21 +134,21 @@
 //
 // ---------------------------------------------------------------------------
 //
-TSize CMmTemplateLibrary::GetSize(  TMmWidgetType aWidgetType, const TDesC8& aTemplate, 
+TSize CMmTemplateLibrary::GetSize(  TMmWidgetType aWidgetType, const TDesC8& aTemplate,
 		TBool aLandscapeOrientation, TBool aHighlighted, TRect aParentRect )
 	{
 	TSize result;
-	GetSize(result, aWidgetType, aTemplate, aLandscapeOrientation, 
+	GetSize(result, aWidgetType, aTemplate, aLandscapeOrientation,
 			aHighlighted, aParentRect );
-	return result;	
+	return result;
 	}
 
 // ---------------------------------------------------------------------------
 //
 // ---------------------------------------------------------------------------
 //
-TInt CMmTemplateLibrary::GetSize(  TSize& aItemSize, 
-        TMmWidgetType aWidgetType, const TDesC8& aTemplate, 
+TInt CMmTemplateLibrary::GetSize(  TSize& aItemSize,
+        TMmWidgetType aWidgetType, const TDesC8& aTemplate,
         TBool aLandscapeOrientation, TBool aHighlighted, TRect aParentRect )
     {
     if ( KNullDesC8()== aTemplate || aParentRect == TRect(TPoint(0,0), TPoint(0,0))
@@ -159,9 +159,9 @@
     UpdateParentRect( aParentRect, aLandscapeOrientation );
 
     TInt err( KErrNone );
-    HBufC8* lookup_string = LookupText( aTemplate, aWidgetType, iZoom, 
-        aLandscapeOrientation, aHighlighted );    
-    	
+    HBufC8* lookup_string = LookupText( aTemplate, aWidgetType,
+        aLandscapeOrientation, aHighlighted );
+
     TSize* itemSize = iTemplateSizesMap.Find( lookup_string );
     if ( !itemSize )
         {
@@ -181,7 +181,7 @@
         iWidgetType = aWidgetType;
         TSize layoutSize;
         TInt err( KErrNone );
-        TRAP( err, layoutSize = GetLayoutSizeL( iWidgetType, aTemplate, 
+        TRAP( err, layoutSize = GetLayoutSizeL( iWidgetType, aTemplate,
                 aLandscapeOrientation ) );
         if( err == KErrNone )
             {
@@ -190,7 +190,7 @@
         aItemSize = *itemSize;
         }
 	delete lookup_string;
-    
+
     return err;
     }
 
@@ -198,7 +198,7 @@
 //
 // ---------------------------------------------------------------------------
 //
-TSize CMmTemplateLibrary::GetLayoutSizeL( TMmWidgetType aWidgetType, const TDesC8& aTemplate, 
+TSize CMmTemplateLibrary::GetLayoutSizeL( TMmWidgetType aWidgetType, const TDesC8& aTemplate,
 		TBool aLandscapeOrientation )
 	{
 	if ( KNullDesC8()== aTemplate )
@@ -210,7 +210,7 @@
 		{
 		case EGrid:
 			{
-		    HBufC8* lookup_string = LookupLayoutText( aWidgetType, iZoom, 
+		    HBufC8* lookup_string = LookupLayoutText( aWidgetType,
                 aTemplate, aLandscapeOrientation );
 			CleanupStack::PushL( lookup_string );
 		    layoutSize = iTemplateSizesMap.Find( lookup_string );
@@ -223,7 +223,7 @@
 		        }
 			CleanupStack::PopAndDestroy( lookup_string );
 			}
-		
+
 			break;
 		case EListbox:
 			return TSize( MmListBox::KCols,0 );
@@ -242,10 +242,10 @@
 		TBool aHighlighted)
 	{
 	ASSERT( KNullDesC8() != aTemplate && aTemplate.Compare( KEmpty8 ) );
-	
-	HBufC8* lookup_string = LookupText(aTemplate, aWidgetType, iZoom, 
+
+	HBufC8* lookup_string = LookupText(aTemplate, aWidgetType,
         aLandscapeOrientation, aHighlighted );
-	HBufC8* lookup_indicator_string = LookupIndicatorText( *lookup_string );    
+	HBufC8* lookup_indicator_string = LookupIndicatorText( *lookup_string );
 
 	TRect* itemRect = iMoveIndicatorRectsMap.Find( lookup_indicator_string );
     if (!itemRect)
@@ -263,7 +263,7 @@
                 }
     	    }
         }
-    
+
     delete lookup_indicator_string;
     delete lookup_string;
     return *itemRect;
@@ -279,7 +279,7 @@
 	{
 	ASSERT( KNullDesC8() != aTemplate && aTemplate.Compare( KEmpty8 ) );
 
-	HBufC8* lookup_string = LookupText( aTemplate, aWidgetType, iZoom,
+	HBufC8* lookup_string = LookupText( aTemplate, aWidgetType,
         aLandscapeOrientation, aHighlighted );
 	CleanupStack::PushL( lookup_string );
     RArray<TTemplateChild>* children = iTemplateChildrenMap.Find( lookup_string );
@@ -289,8 +289,8 @@
         children = iTemplateChildrenMap.Find( lookup_string );
         if (!children)
         	{
-            User::Panic( KMtlPanic, -1);    
-        	}    
+            User::Panic( KMtlPanic, -1);
+        	}
         }
     CleanupStack::PopAndDestroy( lookup_string );
     for (TInt i = 0; i < children->Count(); i++)
@@ -311,27 +311,27 @@
 		TBool aLandscapeOrientation, TBool aHighlighted)
 	{
 	ASSERT( KNullDesC8() != aTemplate && aTemplate.Compare( KEmpty8 ) );
-	
-	HBufC8* lookup_string = LookupText(aTemplate, aWidgetType, iZoom, 
+
+	HBufC8* lookup_string = LookupText(aTemplate, aWidgetType,
         aLandscapeOrientation, aHighlighted );
 	CleanupStack::PushL( lookup_string );
-	HBufC8* lookup_indicator_string = LookupIndicatorText( *lookup_string );    
+	HBufC8* lookup_indicator_string = LookupIndicatorText( *lookup_string );
 	CleanupStack::PushL( lookup_indicator_string );
-	
+
     RArray<TTemplateChild>* children = iTemplateChildrenMap.Find( lookup_indicator_string );
     if ( !children )
     	{
     	TSize itemSize;
-    	GetSize( itemSize, aWidgetType, aTemplate, aLandscapeOrientation, EFalse, GetParentRect( aLandscapeOrientation ) ); 
+    	GetSize( itemSize, aWidgetType, aTemplate, aLandscapeOrientation, EFalse, GetParentRect( aLandscapeOrientation ) );
         SetupMoveIndicatorTemplateChildrenL( *lookup_indicator_string, itemSize );
         children = iTemplateChildrenMap.Find( lookup_indicator_string );
         if (!children)
         	User::Panic( KMtlPanic, -1);
     	}
-    
+
     CleanupStack::PopAndDestroy( lookup_indicator_string );
 	CleanupStack::PopAndDestroy( lookup_string );
-	
+
     for (TInt i = 0; i < children->Count(); i++)
     	{
     	aArray.AppendL((*children)[i]);
@@ -342,9 +342,8 @@
 //
 // ---------------------------------------------------------------------------
 //
-HBufC8* CMmTemplateLibrary::LookupText( const TDesC8& aTemplate, 
-    TMmWidgetType aWidgetType, TAknUiZoom aZoom, TBool aLandscapeOrientation, 
-    TBool aHighlighted )
+HBufC8* CMmTemplateLibrary::LookupText( const TDesC8& aTemplate,
+    TMmWidgetType aWidgetType, TBool aLandscapeOrientation, TBool aHighlighted )
     {
     HBufC8* lookup_string = HBufC8::New( MmTemplateContants::KTemplateChildTextLength );
     if (lookup_string)
@@ -366,18 +365,6 @@
 		lookup_string_ptr.Append( KColon8 );
 		lookup_string_ptr.AppendNum( aHighlighted );
 		lookup_string_ptr.Append( KColon8 );
-		switch ( aZoom )
-            {
-            case EAknUiZoomLarge :
-                lookup_string_ptr.Append( KZoomLarge8 );
-                break;
-            case EAknUiZoomSmall :
-            	lookup_string_ptr.Append( KZoomSmall8 );
-            	break; 
-            default :
-                lookup_string_ptr.Append( KZoomNormal8 );
-                break;
-            }
     	}
     return lookup_string;
     }
@@ -385,9 +372,9 @@
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
-//     
+//
 HBufC8* CMmTemplateLibrary::LookupLayoutText( TMmWidgetType aWidgetType,
-    TAknUiZoom aZoom, const TDesC8& aTemplate, TBool aLandscapeOrientation )
+        const TDesC8& aTemplate, TBool aLandscapeOrientation )
 	{
     HBufC8* lookup_string = HBufC8::New( MmTemplateContants::KTemplateChildTextLength );
     if (lookup_string)
@@ -403,18 +390,6 @@
 				break;
 			}
 		lookup_string_ptr.Append( KColon8 );
-        switch ( aZoom )
-            {
-            case EAknUiZoomLarge:
-                lookup_string_ptr.Append( KZoomLarge8 );
-                break;
-            case EAknUiZoomSmall :
-            	lookup_string_ptr.Append( KZoomSmall8 );
-                break;
-            default:
-                lookup_string_ptr.Append( KZoomNormal8 );
-                break;
-            }
         lookup_string_ptr.Append( KColon8 );
 		lookup_string_ptr.Append( aTemplate );
 		lookup_string_ptr.Append( KColon8 );
@@ -426,7 +401,7 @@
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
-//     
+//
 HBufC8* CMmTemplateLibrary::LookupIndicatorText( const TDesC8& aLookupText )
 	{
 	HBufC8* lookup_string = HBufC8::New( MmTemplateContants::KTemplateChildTextLength );
@@ -437,25 +412,25 @@
 		lookup_string_ptr.Append( KColon8 );
 		lookup_string_ptr.Append( aLookupText );
 		}
-	
+
 	return lookup_string;
 	}
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
-//     
-void CMmTemplateLibrary::LoadTemplateL( TMmWidgetType aWidgetType, 
+//
+void CMmTemplateLibrary::LoadTemplateL( TMmWidgetType aWidgetType,
 		const TDesC8& aTemplate, TBool aLandscapeOrientation )
 	{
 	iWidgetType = aWidgetType;
-	DEBUG(("_Mm_:CMmTemplateLibrary::LoadTemplateL IN")); 
+	DEBUG(("_Mm_:CMmTemplateLibrary::LoadTemplateL IN"));
 	TMmTemplateType mmTemplateType;
 	HBufC8* content = GetTemplateContentL( aTemplate, aWidgetType, mmTemplateType );
 	CleanupStack::PushL( content );
     RXmlEngDOMImplementation domImpl;
     CleanupClosePushL( domImpl );
-    RXmlEngDOMParser domParser;   
+    RXmlEngDOMParser domParser;
     CleanupClosePushL( domParser );
     DEBUG(("_Mm_:CMmTemplateLibrary::LoadTemplateL Opening domImpl"));
     domImpl.OpenL();
@@ -463,7 +438,7 @@
     DEBUG(("_Mm_:CMmTemplateLibrary::LoadTemplateL parsing content..."));
     RXmlEngDocument xmlDoc = domParser.ParseL( *content );
     CleanupClosePushL( xmlDoc );
-    
+
     // first orientation
     RXmlEngNodeList<TXmlEngElement> orientElements;
     CleanupClosePushL( orientElements );
@@ -490,7 +465,7 @@
             TXmlEngElement element;
             while ( elements.HasNext() )
                 {
-                element = elements.Next(); 
+                element = elements.Next();
             	DEBUG(("_Mm_:iMmTemplateType != EMmTemplateMoveIndicator"));
             	if (element.AttributeValueL(KId8) == KHighlight8)
                     {
@@ -514,22 +489,22 @@
             CleanupStack::PopAndDestroy( &elements );
             }
         }
-    
+
     CleanupStack::PopAndDestroy( &orientElements );
     CleanupStack::PopAndDestroy( &xmlDoc );
     CleanupStack::PopAndDestroy( &domParser );
     CleanupStack::PopAndDestroy( &domImpl );
     CleanupStack::PopAndDestroy(content);
-    DEBUG(("_Mm_:CMmTemplateLibrary::LoadTemplateL OUT")); 
+    DEBUG(("_Mm_:CMmTemplateLibrary::LoadTemplateL OUT"));
     }
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
-//     
-void CMmTemplateLibrary::ProcessElementL(TMmTemplateType aMmTemplateType, 
-										 TXmlEngElement aElement, 
-                                         const TDesC8& aTemplate, 
+//
+void CMmTemplateLibrary::ProcessElementL(TMmTemplateType aMmTemplateType,
+										 TXmlEngElement aElement,
+                                         const TDesC8& aTemplate,
                                          TBool aLandscapeOrientation,
                                          TBool aHighlighted )
     {
@@ -548,8 +523,8 @@
 //
 // -----------------------------------------------------------------------------
 //
-void CMmTemplateLibrary::ProcessLCTTemplateElementL(TXmlEngElement aElement, 
-                                         const TDesC8& aTemplate, 
+void CMmTemplateLibrary::ProcessLCTTemplateElementL(TXmlEngElement aElement,
+                                         const TDesC8& aTemplate,
                                          TBool aLandscapeOrientation,
                                          TBool aHighlighted )
 	{
@@ -565,18 +540,11 @@
 		if ( !layoutElement.Name().Compare( KLayout8 ) )
 			{
 			TPtrC8 lctAtt = layoutElement.AttributeValueL(KLct8);
-			
+
 			// set layout for grid
 			TInt variety;
-			if ( Zoom() == EAknUiZoomLarge && iWidgetType == EGrid)
-				{
-				HnConvUtils::Str8ToInt(layoutElement.AttributeValueL(KVarietyZoom8), variety);
-				}
-			else 
-				{
-				HnConvUtils::Str8ToInt(layoutElement.AttributeValueL(KVariety8), variety);
-				}
-			
+			HnConvUtils::Str8ToInt(layoutElement.AttributeValueL(KVariety8), variety);
+
 			TSize layoutSize;
 			if ( iWidgetType == EGrid )
 				{
@@ -590,12 +558,12 @@
 
 			TAknWindowLineLayout layout;
 			TSize itemSize = GetLCTSize( lctAtt, variety, layout, aLandscapeOrientation );
-			
+
 			AdjustItemSize( itemSize, layoutSize, aLandscapeOrientation );
-			HBufC8* lookup_string = LookupText( aTemplate, iWidgetType, iZoom,
+			HBufC8* lookup_string = LookupText( aTemplate, iWidgetType,
                 aLandscapeOrientation, aHighlighted );
 			iTemplateSizesMap.InsertL( lookup_string, itemSize );
-			
+
 			// setup children
 			RArray< TTemplateChild > childrenDefinition;
 			CleanupClosePushL( childrenDefinition );
@@ -607,20 +575,13 @@
 				{
 				childElement = childrenElements.Next();
 				TPtrC8 name = childElement.Name();
-				if ( !name.Compare( KTextVisual8 ) || 
+				if ( !name.Compare( KTextVisual8 ) ||
 						!name.Compare( KImageVisual8 ) )
-					{   
+					{
 					TTemplateChild childTemplate;
 					childTemplate.iLct = childElement.AttributeValueL(KLct8);
 					TInt variety;
-					if ( Zoom() != EAknUiZoomNormal && iWidgetType == EGrid )
-						{
-						HnConvUtils::Str8ToInt(childElement.AttributeValueL(KVarietyZoom8), variety);
-						}
-					else 
-						{
-						HnConvUtils::Str8ToInt(childElement.AttributeValueL(KVariety8), variety);
-						}
+					HnConvUtils::Str8ToInt(childElement.AttributeValueL(KVariety8), variety);
 					childTemplate.iVariety = variety;
 
 					TPtrC8 ptr = childElement.AttributeValueL(KHAlign8);
@@ -640,17 +601,17 @@
                         {
                         childTemplate.iHAlign = EManualAlignRight;
                         }
-					
+
 					SetupLCTTemplateL( childTemplate, childElement, itemSize );
 					childrenDefinition.AppendL( childTemplate );
 					}
 				}
 			CleanupStack::PopAndDestroy( &childrenElements );
 			// save children defintion in map
-			lookup_string = LookupText(aTemplate, iWidgetType, iZoom,
+			lookup_string = LookupText(aTemplate, iWidgetType,
                 aLandscapeOrientation, aHighlighted );
 			iTemplateChildrenMap.InsertL(lookup_string, childrenDefinition);
-			CleanupStack::Pop( &childrenDefinition );			
+			CleanupStack::Pop( &childrenDefinition );
 			break;
 	        }
         }
@@ -661,13 +622,13 @@
 //
 // -----------------------------------------------------------------------------
 //
-void CMmTemplateLibrary::ProcessCustomTemplateElementL(TXmlEngElement aElement, 
-                                         const TDesC8& aTemplate, 
+void CMmTemplateLibrary::ProcessCustomTemplateElementL(TXmlEngElement aElement,
+                                         const TDesC8& aTemplate,
                                          TBool aLandscapeOrientation,
                                          TBool aHighlighted )
 	{
     RXmlEngNodeList<TXmlEngElement> layoutElements;
-    CleanupClosePushL( layoutElements ); 
+    CleanupClosePushL( layoutElements );
     aElement.GetChildElements( layoutElements );
     TXmlEngElement layoutElement;
     while ( layoutElements.HasNext() )
@@ -680,27 +641,27 @@
         	TInt height;
             TInt width;
             HBufC8* lookup_string;
-            
+
             HnConvUtils::Str8ToInt(layoutElement.AttributeValueL(KHeight8), height);
-            HnConvUtils::Str8ToInt(layoutElement.AttributeValueL(KWidth8), width); 
-        	lookup_string = LookupText( aTemplate, iWidgetType, iZoom,
+            HnConvUtils::Str8ToInt(layoutElement.AttributeValueL(KWidth8), width);
+        	lookup_string = LookupText( aTemplate, iWidgetType,
                 aLandscapeOrientation, aHighlighted );
-        	itemSize = TSize( width, height );      	
-            
-        	
-            TSize layoutSize = ( aLandscapeOrientation ) ? 
-            		TSize( MmGrid::KColsLandscapeZoomNormal, MmGrid::KRowsLandscapeZoomNormal ): 
+        	itemSize = TSize( width, height );
+
+
+            TSize layoutSize = ( aLandscapeOrientation ) ?
+            		TSize( MmGrid::KColsLandscapeZoomNormal, MmGrid::KRowsLandscapeZoomNormal ):
             		TSize( MmGrid::KColsPortraitZoomNormal, MmGrid::KRowsPortraitZoomNormal ) ;
             layoutSize = ( iWidgetType == EGrid ) ? layoutSize: TSize(MmListBox::KCols,0);
             CacheLayoutSizeL( layoutSize, aTemplate, aLandscapeOrientation );
-            
+
             AdjustItemWidth( itemSize, layoutSize, aLandscapeOrientation );
         	iTemplateSizesMap.InsertL(lookup_string, itemSize);
 
             // set children
             RArray< TTemplateChild > childrenDefinition;
-            CleanupClosePushL( childrenDefinition ); 
-            
+            CleanupClosePushL( childrenDefinition );
+
             RXmlEngNodeList<TXmlEngElement> childrenElements;
             CleanupClosePushL( childrenElements );
             layoutElement.GetChildElements( childrenElements );
@@ -709,9 +670,9 @@
                 {
                 childElement = childrenElements.Next();
                 TPtrC8 name = childElement.Name();
-                if ( !name.Compare( KTextVisual8 ) || 
+                if ( !name.Compare( KTextVisual8 ) ||
                         !name.Compare( KImageVisual8 ) )
-                    {   
+                    {
                     TTemplateChild childTemplate;
                     SetupCustomTemplateL( childTemplate, childElement );
                     childrenDefinition.AppendL( childTemplate );
@@ -719,7 +680,7 @@
                 }
             CleanupStack::PopAndDestroy( &childrenElements );
             // save children defintion in map
-        	lookup_string = LookupText(aTemplate, iWidgetType, iZoom, 
+        	lookup_string = LookupText(aTemplate, iWidgetType,
                 aLandscapeOrientation, aHighlighted );
         	iTemplateChildrenMap.InsertL(lookup_string, childrenDefinition);
         	CleanupStack::Pop( &childrenDefinition );
@@ -733,7 +694,7 @@
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
-//    
+//
 HBufC8* CMmTemplateLibrary::GetTemplateContentL(const TDesC8& aTemplate,
 		TMmWidgetType aWidgetType, TMmTemplateType& aMmTemplateType)
 	{
@@ -758,32 +719,32 @@
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
-//     
-void CMmTemplateLibrary::GetTemplateFileContentL( HBufC8*& aContent, 
-		const TDesC8& aTemplate, TMmWidgetType aWidgetType, 
+//
+void CMmTemplateLibrary::GetTemplateFileContentL( HBufC8*& aContent,
+		const TDesC8& aTemplate, TMmWidgetType aWidgetType,
 		TMmTemplateType& aMmTemplateType, TBool aLoadCustomTemplate )
 	{
-    DEBUG(("_Mm_:CMmTemplateLibrary::GetTemplateContentL IN")); 
+    DEBUG(("_Mm_:CMmTemplateLibrary::GetTemplateContentL IN"));
     TFileName filename;
 //  create filename  egz: akn_logical_template_3.xml
 	filename.Copy(aTemplate);
 	filename.Insert(0, KUnderline );
 	filename.Insert(0, KAkn );
 	filename.Append( KXmlExt );
-	
+
 //  append path egz: z:\\resource\\grid\\lct\\akn_logical_template_3.xml
-	
+
 	if ( !aLoadCustomTemplate )
 		{
 		filename.Insert(0, KBslash );
 		filename.Insert(0, KLct );
 		}
-	else 
+	else
 		{
 		filename.Insert(0, KBslash );
 		filename.Insert(0, KCustom );
 		}
-	
+
 	switch (aWidgetType)
 		{
 		case EGrid:
@@ -795,21 +756,21 @@
 			filename.Insert(0, KWidgetTypeList );
 			break;
 		}
-	
-	filename.Insert(0, KZResource );    
-	
+
+	filename.Insert(0, KZResource );
+
 	DEBUG(("\t_Mm_:tail: %S", &filename));
     DEBUG(("_Mm_:CMmTemplateLibrary::GetTemplateContentL OUT"));
-    
+
 //  load LCT Template or if it does not exist then load custom template
     aContent =  HnUtils::ReadFileLC(filename);
 	CleanupStack::Pop( aContent );
-	
+
 	if ( aLoadCustomTemplate )
 		{
 		aMmTemplateType = ETemplateTypeCustom;
 		}
-	else 
+	else
 		{
 		aMmTemplateType = ETemplateTypeLCT;
 		}
@@ -820,10 +781,10 @@
 //
 // -----------------------------------------------------------------------------
 //
-TSize CMmTemplateLibrary::GetLCTSize( const TDesC8& aLCTTemplate, TInt aVariety, 
+TSize CMmTemplateLibrary::GetLCTSize( const TDesC8& aLCTTemplate, TInt aVariety,
 		TAknWindowLineLayout& aWindowLayout, TBool aLandscapeOrientation )
 	{
-	TSize size = MmLCTUtils::GetLCTSize( aLCTTemplate, aVariety, 
+	TSize size = MmLCTUtils::GetLCTSize( aLCTTemplate, aVariety,
 			GetParentRect( aLandscapeOrientation ), aWindowLayout );
 	return size;
 	}
@@ -832,13 +793,13 @@
 //
 // -----------------------------------------------------------------------------
 //
-void CMmTemplateLibrary::SetupLCTTemplateL(TTemplateChild& aChildTemplate, 
+void CMmTemplateLibrary::SetupLCTTemplateL(TTemplateChild& aChildTemplate,
 		TXmlEngElement& aChildElement, TSize aItemSize )
 	{
     TPtrC8 name = aChildElement.Name();
     aChildTemplate.iData = aChildElement.AttributeValueL(KId8);
     SetupTemplateVisualId( aChildTemplate );
-    
+
     // read attribute name (mm_title, mm_icon)
     RXmlEngNodeList<TXmlEngElement> attributeElements;
     CleanupClosePushL( attributeElements );
@@ -846,7 +807,7 @@
     TXmlEngElement attElement;
     while ( attributeElements.HasNext() )
         {
-        attElement = attributeElements.Next();   
+        attElement = attributeElements.Next();
         TPtrC8 nameAtt = attElement.AttributeValueL(KName8);
         if ( !name.Compare( KTextVisual8 ) &&
                 !nameAtt.Compare( KText8 ) )
@@ -873,16 +834,16 @@
     TPtrC8 name = aChildElement.Name();
 	TInt positionx; TInt positiony;
     TInt height; TInt width;
-    
+
     HnConvUtils::Str8ToInt(aChildElement.AttributeValueL(KPositionX8), positionx);
-    HnConvUtils::Str8ToInt(aChildElement.AttributeValueL(KPositionY8), positiony); 
+    HnConvUtils::Str8ToInt(aChildElement.AttributeValueL(KPositionY8), positiony);
     HnConvUtils::Str8ToInt(aChildElement.AttributeValueL(KHeight8), height);
     HnConvUtils::Str8ToInt(aChildElement.AttributeValueL(KWidth8), width);
     aChildTemplate.iRectAccordingToParent = TRect( TPoint(positionx,positiony), TSize(width, height) );
-    
+
     aChildTemplate.iData = aChildElement.AttributeValueL(KId8);
     SetupTemplateVisualId( aChildTemplate );
-    
+
     // read attribute name (mm_title, mm_icon)
     RXmlEngNodeList<TXmlEngElement> attributeElements;
     CleanupClosePushL( attributeElements );
@@ -890,7 +851,7 @@
     TXmlEngElement attElement;
     while ( attributeElements.HasNext() )
         {
-        attElement = attributeElements.Next();   
+        attElement = attributeElements.Next();
         TPtrC8 nameAtt = attElement.AttributeValueL(KName8);
         if ( !name.Compare( KTextVisual8 ) &&
                 !nameAtt.Compare( KText8 ) )
@@ -912,7 +873,7 @@
                 {
                 aChildTemplate.iFontId = EAknLogicalFontPrimarySmallFont;
                 }
-            else 
+            else
                 {
                 aChildTemplate.iFontId = EAknLogicalFontSecondaryFont;
                 }
@@ -925,7 +886,7 @@
             aChildTemplate.iTextAlign = static_cast<CGraphicsContext::TTextAlign>(textAlign);
             }
         }
-    
+
     CleanupStack::PopAndDestroy( &attributeElements );
 	}
 
@@ -939,7 +900,7 @@
         {
         aChildTemplate.iImageVisualId = EImageVisualIdEditMode;
         }
-	else 
+	else
 		{
 		aChildTemplate.iImageVisualId = EImageVisualIdNormalMode;
 		}
@@ -957,7 +918,7 @@
     childTemplate.iIsImage = ETrue;
     childTemplate.iFontId = EAknLogicalFontSecondaryFont;
     childTemplate.iTextAlign = CGraphicsContext::ELeft;
-    childTemplate.iRectAccordingToParent = TRect( TPoint( 0,0 ), 
+    childTemplate.iRectAccordingToParent = TRect( TPoint( 0,0 ),
     		TPoint( aSize.iWidth, aSize.iHeight ) );
     childTemplate.iData = TBufC8< MmTemplateContants::KTemplateChildTextLength >( KMmBackdropIcon8 );
     SetupTemplateVisualId( childTemplate );
@@ -969,49 +930,49 @@
 //
 // -----------------------------------------------------------------------------
 //
-void CMmTemplateLibrary::SetupMoveIndicatorTemplateChildrenL( 
+void CMmTemplateLibrary::SetupMoveIndicatorTemplateChildrenL(
 		const TDesC8& aLookupString, TSize aItemSize )
 	{
 	RArray< TTemplateChild > childrenDefinition;
     TTemplateChild childTemplate;
     childTemplate.iIsImage = ETrue;
-    childTemplate.iImageVisualId = EImageVisualIdNormalMode;  
+    childTemplate.iImageVisualId = EImageVisualIdNormalMode;
     childTemplate.iFontId = EAknLogicalFontSecondaryFont;
     childTemplate.iTextAlign = CGraphicsContext::ELeft;
-	TPoint startingPosition = TPoint( 
-			MmTemplateContants::KMoveIndicatorStartingPos, 
+	TPoint startingPosition = TPoint(
+			MmTemplateContants::KMoveIndicatorStartingPos,
 			MmTemplateContants::KMoveIndicatorStartingPos);
-    
+
     //setup move_indicator_arrow_left
-    childTemplate.iRectAccordingToParent = TRect(TPoint(0,aItemSize.iHeight/2 + startingPosition.iY/2), 
-    		TPoint(startingPosition.iX, 
+    childTemplate.iRectAccordingToParent = TRect(TPoint(0,aItemSize.iHeight/2 + startingPosition.iY/2),
+    		TPoint(startingPosition.iX,
     				startingPosition.iY*3/2 + aItemSize.iHeight/2));
-    childTemplate.iData = TBufC8< MmTemplateContants::KTemplateChildTextLength>( 
+    childTemplate.iData = TBufC8< MmTemplateContants::KTemplateChildTextLength>(
     		KMmMoveIndicatorArrowLeft8 );
     childrenDefinition.AppendL( childTemplate );
-    
+
     //setup move_indicator_arrow_right
     childTemplate.iRectAccordingToParent = TRect(
-    		TPoint(startingPosition.iX + aItemSize.iWidth , aItemSize.iHeight/2 + startingPosition.iY/2), 
-    		TPoint(startingPosition.iX*2 + aItemSize.iWidth, 
+    		TPoint(startingPosition.iX + aItemSize.iWidth , aItemSize.iHeight/2 + startingPosition.iY/2),
+    		TPoint(startingPosition.iX*2 + aItemSize.iWidth,
     				startingPosition.iY*3/2 + aItemSize.iHeight/2));
     childTemplate.iData = TBufC8< MmTemplateContants::KTemplateChildTextLength>(
     		KMmMoveIndicatorArrowRight8 );
     childrenDefinition.AppendL( childTemplate );
-    
+
     //setup move_indicator_arrow_top
-    childTemplate.iRectAccordingToParent = TRect(TPoint( aItemSize.iWidth/2 + startingPosition.iX/2, 0 ), 
+    childTemplate.iRectAccordingToParent = TRect(TPoint( aItemSize.iWidth/2 + startingPosition.iX/2, 0 ),
     		TPoint(aItemSize.iWidth/2 + startingPosition.iX*3/2, startingPosition.iY));
     childTemplate.iData = TBufC8< MmTemplateContants::KTemplateChildTextLength >(
     		KMmMoveIndicatorArrowTop8 );
     childrenDefinition.AppendL( childTemplate );
-    
+
     //setup move_indicator_arrow_bottom
-    childTemplate.iRectAccordingToParent = TRect( TPoint( aItemSize.iWidth/2 + startingPosition.iX/2, 
-    		aItemSize.iHeight + startingPosition.iY + 2 ), 
-    		TPoint(aItemSize.iWidth/2 + startingPosition.iX*3/2, 
+    childTemplate.iRectAccordingToParent = TRect( TPoint( aItemSize.iWidth/2 + startingPosition.iX/2,
+    		aItemSize.iHeight + startingPosition.iY + 2 ),
+    		TPoint(aItemSize.iWidth/2 + startingPosition.iX*3/2,
     				aItemSize.iHeight + 2 *startingPosition.iY));
-    childTemplate.iData = TBufC8< MmTemplateContants::KTemplateChildTextLength>( 
+    childTemplate.iData = TBufC8< MmTemplateContants::KTemplateChildTextLength>(
     		KMmMoveIndicatorArrowBottom8 );
     childrenDefinition.AppendL( childTemplate );
 
@@ -1019,11 +980,11 @@
 	iTemplateChildrenMap.InsertL(lookup_string, childrenDefinition);
 	CleanupStack::Pop( lookup_string );
 	lookup_string = NULL;
-	
+
     lookup_string = aLookupString.AllocLC();
-	TRect rectAccordingToParent = TRect( 
-			TPoint( -startingPosition.iX, -startingPosition.iY), 
-			TPoint(2*startingPosition.iX + aItemSize.iWidth , 
+	TRect rectAccordingToParent = TRect(
+			TPoint( -startingPosition.iX, -startingPosition.iY),
+			TPoint(2*startingPosition.iX + aItemSize.iWidth ,
 					2*startingPosition.iY + aItemSize.iHeight) );
 
 	iMoveIndicatorRectsMap.InsertL( lookup_string, rectAccordingToParent );
@@ -1096,7 +1057,7 @@
 		{
 		aItemSize.iWidth = ( GetParentRect(aLandscapeOrientation).Width() - iScrollbarWidth ) / aLayoutSize.iWidth;
 		}
-	else 
+	else
 		{
 		aItemSize.iWidth = GetParentRect(aLandscapeOrientation).Width() / aLayoutSize.iWidth;
 		}
@@ -1161,36 +1122,10 @@
 //
 // -----------------------------------------------------------------------------
 //
-TAknUiZoom CMmTemplateLibrary::Zoom( )
-	{
-	return iZoom;
-	}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMmTemplateLibrary::SetZoom( TAknUiZoom aZoom )
-	{
-	if ( (EAknUiZoomLarge == aZoom)
-			|| (EAknUiZoomSmall == aZoom) )
-		{
-		iZoom = aZoom;
-		}
-	else
-		{
-		iZoom = EAknUiZoomNormal;
-		}
-	}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
 void CMmTemplateLibrary::CacheLayoutSizeL(TSize aLayoutSize,
 		const TDesC8& aTemplate, TBool aLandscapeOrientation)
 	{
-	HBufC8* lookup_layout_text = LookupLayoutText( iWidgetType, iZoom, 
+	HBufC8* lookup_layout_text = LookupLayoutText( iWidgetType,
         aTemplate, aLandscapeOrientation );
 
 	if ( iTemplateSizesMap.Find( lookup_layout_text ) )
--- a/menufw/menufwui/mmwidgets/src/mmwidgetcontainer.cpp	Thu Dec 17 08:40:49 2009 +0200
+++ b/menufw/menufwui/mmwidgets/src/mmwidgetcontainer.cpp	Thu Jan 07 12:39:41 2010 +0200
@@ -12,7 +12,7 @@
 * Contributors:
 *
 * Description:
-*  Version     : %version: MM_71.1.17.1.42 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: MM_71.1.17.1.44 % << Don't touch! Updated by Synergy at check-out.
 *
 */
 
@@ -21,7 +21,7 @@
 #include <e32math.h>
 #include <AknsDrawUtils.h>
 #include <layoutmetadata.cdl.h>
-#include <aknlongtapdetector.h> 
+#include <aknlongtapdetector.h>
 
 #ifdef RD_UI_TRANSITION_EFFECTS_LIST
 #include <aknlistloadertfx.h>
@@ -223,7 +223,7 @@
         {
         static_cast<CMmListBoxItemDrawer*>( iDrawer )->InvalidateCache();
         }
-    
+
     CCoeControl::HandleResourceChange( aType );
     }
 
@@ -344,9 +344,9 @@
         {
         iDrawer->AnimateDragItemTransitionL();
         }
-    
+
     SetHighlightAfterDrag();
-    
+
     iDraggedIndex = -1;
     iDrawer->SetDraggedIndexL( iDraggedIndex, TPoint(0,0) );
     SetDraggableL( EFalse );
@@ -587,12 +587,12 @@
     	{
     	iMarqueeAdapter->StopMarqueeDrawing();
     	}
-    
+
     TInt index = KErrNotFound;
     TBool itemExists = iWidget->View()->XYPosToItemIndex( aPointerEvent.iPosition, index );
 
     CCoeControl::HandlePointerEventL(aPointerEvent);
-    
+
     if ( aPointerEvent.iType == TPointerEvent::EButton1Down
             && itemExists  )
         {
@@ -621,7 +621,7 @@
     	}
 
 	TInt lastTopItemIndex = Widget()->TopItemIndex();
-	
+
     TBool abortAnimation = lastTopItemIndex != Widget()->TopItemIndex();
 
     if (abortAnimation)
@@ -633,7 +633,7 @@
     	{
 		HandlePointerEventsInEditModeL(aPointerEvent, abortAnimation);
     	}
-    
+
     if ( iLongTapDetector )
     	{
     	TPointerEvent longTapPointerEvent = aPointerEvent;
@@ -642,8 +642,8 @@
         	longTapPointerEvent.iType = TPointerEvent::EDrag;
         	}
         iLongTapDetector->PointerEventL( longTapPointerEvent );
-    	}	
-    
+    	}
+
     }
 
 // -----------------------------------------------------------------------------
@@ -664,7 +664,7 @@
 //
 void CMmWidgetContainer::SetDraggableL( TBool aDraggable )
     {
-    
+
     iDrawer = STATIC_CAST(CMmListBoxItemDrawer*, iWidget->View()->ItemDrawer());
     iDrawer->SetDraggableL( aDraggable );
     }
@@ -860,9 +860,9 @@
             {
             HideOptionsMenuIfDisplayed();
             }
-        
+
         CHnSuiteModel* suiteModel = GetMmModel()->GetSuiteModel();
-        
+
         if (suiteModel)
             {
             suiteModel->SetSuiteHighlightL( iCurrentHighlight );
@@ -959,7 +959,7 @@
 
     if (!AknLayoutUtils::PenEnabled() && iIsEditMode )
         {
-		if ((GetHighlight() + ColumnsInCurrentView() > NumberOfItems() - 1) 
+		if ((GetHighlight() + ColumnsInCurrentView() > NumberOfItems() - 1)
 						&& aKeyEvent.iScanCode == EStdKeyDownArrow)
 			// the second condition is needed to block moving item down when there is no item below the moved item.
 			{
@@ -974,7 +974,7 @@
             static_cast<CMmListBoxItemDrawer*>(iDrawer)->SetHighlightShown( ETrue );
             SetHighlightL( iWidget->CurrentItemIndex() );
             ScrollViewIfNeededL(); //only edit mode non-touch
-            
+
             if ( prevIndex != GetHighlight()
             		&& KErrNotFound != prevIndex  )
             	{
@@ -1104,7 +1104,7 @@
 //
 TInt CMmWidgetContainer::RowsInCurrentView()
     {
-    //should be overridden by deriving classes   
+    //should be overridden by deriving classes
     CListBoxView *view = ((CListBoxView*) Widget()->View());
     return view->NumberOfItemsThatFitInRect( Rect());//Widget()->View()->ViewRect());
     }
@@ -1200,14 +1200,14 @@
     	}
     else if ( iAllowLongPress && aType == EEventKey && aKeyEvent.iRepeats > 0 &&
     		( aKeyEvent.iScanCode == EStdKeyDevice3
-				|| aKeyEvent.iScanCode == EStdKeyEnter 
+				|| aKeyEvent.iScanCode == EStdKeyEnter
 				|| aKeyEvent.iScanCode == EStdKeyNkpEnter ) )
     	{
     	HandleRockerPressL();
     	resp = EKeyWasConsumed;
     	iAllowLongPress = EFalse;
     	}
-    
+
     return resp;
     }
 
@@ -1243,7 +1243,7 @@
         }
     iWidget->MakeVisible(ETrue);
 
-    Widget()->View()->ItemDrawer()->ClearFlags( 
+    Widget()->View()->ItemDrawer()->ClearFlags(
     		CListItemDrawer::EPressedDownState );
 	iPostProcessor->StartAt( iWidget->BottomItemIndex() + 1 );
     }
@@ -1376,37 +1376,6 @@
 //
 // ---------------------------------------------------------------------------
 //
-TBool CMmWidgetContainer::FlipOpen()
-	{
-	return iFlipOpen;
-	}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CMmWidgetContainer::SetFlipOpenL( TBool aIsFlipOpen )
-	{
-    if ( aIsFlipOpen != iFlipOpen )
-    	{
-    	iFlipOpen = aIsFlipOpen;
-    	FlipStateChangedL();
-		}
-	}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CMmWidgetContainer::FlipStateChangedL()
-	{
-//	default do nothing
-	}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
 EXPORT_C void CMmWidgetContainer::StopMovingL()
 	{
 	if ( !AknLayoutUtils::PenEnabled() && iDragAndDropObserver )
@@ -1426,26 +1395,26 @@
 		return;
 		}
 
-	TBool needToScrollUp = 
+	TBool needToScrollUp =
 		GetHighlight() - iWidget->TopItemIndex() < ColumnsInCurrentView()
 		&& iWidget->TopItemIndex() != 0;
-	
+
 	TBool needToScrollDown =
 		iWidget->BottomItemIndex() - GetHighlight() < ColumnsInCurrentView()
-		&& iWidget->BottomItemIndex() / ColumnsInCurrentView() 
+		&& iWidget->BottomItemIndex() / ColumnsInCurrentView()
 			!= ( NumberOfItems() - 1 )  / ColumnsInCurrentView();
-	
+
 	if ( WidgetType() == EGridWidget )
 		{
 		// TODO: temporary - invisible partial items in MCL grid :/
-		needToScrollDown = 
+		needToScrollDown =
 			iWidget->BottomItemIndex() - ColumnsInCurrentView() - GetHighlight() < ColumnsInCurrentView()
 		    && ( iWidget->BottomItemIndex() / ColumnsInCurrentView() ) - 1
 				!= ( NumberOfItems() - 1 ) / ColumnsInCurrentView()
 			&& iWidget->BottomItemIndex() - iWidget->TopItemIndex()
 				> ColumnsInCurrentView() * RowsInCurrentView();
 		}
-	
+
 	if ( needToScrollUp )
 		{
 #ifdef RD_UI_TRANSITION_EFFECTS_LIST
@@ -1468,7 +1437,7 @@
 		}
 	else if ( needToScrollDown )
 		{
-		
+
 #ifdef RD_UI_TRANSITION_EFFECTS_LIST
 			MAknListBoxTfxInternal *transApi = CAknListLoader::TfxApiInternal( iDrawer->Gc() );
 			if ( transApi )
@@ -1486,7 +1455,7 @@
 				transApi->Draw( Rect() );
 				}
 #endif
-		
+
 		UpdateViewScrollBarThumbs();
 		}
 	}
@@ -1497,7 +1466,7 @@
 //
 void CMmWidgetContainer::UpdateViewScrollBarThumbs()
 	{
-	
+
 	}
 
 //----------------------------------------------------------------------------
@@ -1510,7 +1479,7 @@
         {
         TBool marqueeShouldBeEnabled = iHasFocus && iInForeground
                 && !iIsFaded && !IsEditMode();
-        
+
          // logical Ex-OR
         if ( !!marqueeShouldBeEnabled != !!iMarqueeAdapter->IsMarqueeEnabled() )
             {
@@ -1524,38 +1493,6 @@
         }
     }
 
-//----------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CMmWidgetContainer::HandleZoomChanged( TAknUiZoom aZoom )
-	{
-	SetZoom( aZoom );
-	if( WidgetType() == EGridWidget )
-	    {
-	    CMmGrid* grid = static_cast<CMmGrid*>( iWidget );
-	    grid->SetupLayout();
-	    }
-	Widget()->DrawDeferred();
-	}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CMmWidgetContainer::SetZoom( TAknUiZoom aZoom )
-	{
-	CMmTemplateLibrary * templateLibrary =
-	static_cast<CMmListBoxItemDrawer*> (
-			Widget()->View()->ItemDrawer() )->TemplateLibrary();
-
-	if ( WidgetType() == EGridWidget && EAknUiZoomSmall == aZoom )
-		{
-		aZoom = EAknUiZoomNormal;
-		}
-	templateLibrary->SetZoom( aZoom );
-	}
-
 // ---------------------------------------------------------------------------
 //
 // ---------------------------------------------------------------------------
@@ -1563,13 +1500,13 @@
 void CMmWidgetContainer::SetHighlightAfterDrag()
 	{
     if ( AknLayoutUtils::PenEnabled() &&
-    		iDraggedIndex != KErrNotFound && 
+    		iDraggedIndex != KErrNotFound &&
 			iDraggedIndex != Widget()->CurrentItemIndex()
 			&& iDraggedIndex < NumberOfItems() )
     	{
     	TBool isFolder(EFalse);
     	CHnSuiteModel* model = GetMmModel()->GetSuiteModel();
-		CHnItemModel* onItemModel = model->GetItemModel( 
+		CHnItemModel* onItemModel = model->GetItemModel(
 				model->IdByIndex( Widget()->CurrentItemIndex() ));
 	    if (onItemModel)
 	    	{
@@ -1589,7 +1526,7 @@
 //
 void CMmWidgetContainer::ValidateWidgetCurrentItemIndex()
 	{
-	if (Widget()->CurrentItemIndex() >= GetMmModel()->NumberOfItems() 
+	if (Widget()->CurrentItemIndex() >= GetMmModel()->NumberOfItems()
 			|| Widget()->CurrentItemIndex() == KErrNotFound )
 		{
 		iCurrentHighlight = GetMmModel()->NumberOfItems();
@@ -1615,7 +1552,7 @@
 	iWidgetPositionCache.iLandscape
 			= Layout_Meta_Data::IsLandscapeOrientation();
 	iWidgetPositionCache.iHighlightedItemId = KErrNotFound;
-	
+
 	TInt highlightedItemIndex = Widget()->CurrentItemIndex();
 	CHnSuiteModel* suiteModel = GetMmModel()->GetSuiteModel();
 	if ( suiteModel && highlightedItemIndex != KErrNotFound
@@ -1625,7 +1562,7 @@
 	    iWidgetPositionCache.iHighlightedItemId =
             suiteModel->IdByIndex( highlightedItemIndex );
 	    }
-	
+
 	iWidgetPositionCache.iValid = ETrue;
 	}
 
@@ -1654,7 +1591,7 @@
 			Widget()->View()->SetTopItemIndex(iWidgetPositionCache.iTopItemIndex);
 			SetVerticalItemOffset(iWidgetPositionCache.iVerticalItemOffset);
 			TRAP_IGNORE( AlignBottomOfViewL() );
-			
+
 			// Important: If an item that was previously highlighted and visible is
 			// still highlighted and yet somehow is not visible after the position
 			// has been restored, fix the problem by scrolling the view until that
@@ -1677,7 +1614,7 @@
 			{
 			TRAP_IGNORE( ScrollToItemL(Widget()->CurrentItemIndex()) );
 			}
-		
+
 		iWidgetPositionCache.iValid = EFalse;
 		}
 	}
@@ -1728,9 +1665,9 @@
 		{
 		CacheWidgetPosition();
 		Widget()->View()->SetDisableRedraw( ETrue );
-		
+
 		HandleNumberOfItemsChangedL( aChange );
-		
+
 		Widget()->View()->SetDisableRedraw( EFalse );
 		RestoreWidgetPosition();
 		}
@@ -1769,7 +1706,7 @@
 	{
 	TInt scrollConsumed( EFalse );
 	TInt pixelsToScroll( 0 );
-	
+
 	if ( NumberOfItems() > 0 )
 		{
 		pixelsToScroll = CalcBottomPixelsToScroll();
@@ -1796,7 +1733,7 @@
     TInt lastItemBottomY = Widget()->View()->ItemPos(lastItemIndex).iY
                 + Widget()->ItemHeight();
     TInt pixelsToScroll( 0 );
-    
+
     if ( Widget()->ScrollBarFrame()->VerticalScrollBar()->IsVisible() )
         {
         pixelsToScroll = Min( 0, lastItemBottomY - viewHeight );
@@ -1805,7 +1742,7 @@
         {
         pixelsToScroll = Widget()->View()->ItemPos( firstItemIndex ).iY;
         }
-    
+
     return pixelsToScroll;
     }
 
@@ -1836,7 +1773,7 @@
 void CMmWidgetContainer::ScrollInPixelsL(TInt aPixels)
 	{
 	SetupScrollingEffectsL( aPixels > 0 );
-	
+
 	if ( AknLayoutUtils::PenEnabled() )
 		{
 		Widget()->HandlePhysicsScrollEventL(aPixels);
@@ -1846,8 +1783,8 @@
 		// non-touch avkon doesn't seem to support scrolling by given
 		// amount of pixels
 		TInt delta = aPixels / Widget()->View()->ItemHeight();
-		
-		Widget()->View()->VScrollTo( Widget()->TopItemIndex() + 
+
+		Widget()->View()->VScrollTo( Widget()->TopItemIndex() +
 				delta * ColumnsInCurrentView() );
 		}
 	}
@@ -1864,7 +1801,7 @@
 		scrollConsumed = AlignBottomOfViewL();
 		if ( !scrollConsumed && Widget()->View()->ItemIsPartiallyVisible(aIndex))
 			{
-//			the case when the item is partially visible at top or 
+//			the case when the item is partially visible at top or
 //			bottom of screen. Th e view is scrolled the offset to
 //			make the item entirely visible.
 			TInt offsetBottom = Widget()->View()->ItemPos(aIndex).iY
@@ -1878,7 +1815,7 @@
 				ScrollInPixelsL( offset );
 				scrollConsumed = ETrue;
 				}
-				
+
 			}
 		else if (!Widget()->View()->ItemIsVisible(aIndex))
 			{
@@ -1918,7 +1855,7 @@
 EXPORT_C void CMmWidgetContainer::PrepareForGarbage()
 	{
 //	This is called when the suite model is destoyed and the container is set to be destroyed
-//	by the garbage collector. There should be no redraws done to the widget in this period 
+//	by the garbage collector. There should be no redraws done to the widget in this period
 //	because this will cause the screen to be redrawn only containing the balnk background.
 //	Before garbage cleanup an asynchronous redraw event may intend to redraw the widget.
 //	SetDisableRedraw() prevents redrawing. Animator is also prepared for garbage so there is
@@ -1948,7 +1885,7 @@
 //
 // -----------------------------------------------------------------------------
 //
-void CMmWidgetContainer::HandleLongTapEventL( const TPoint& aPenEventLocation, 
+void CMmWidgetContainer::HandleLongTapEventL( const TPoint& aPenEventLocation,
                                       const TPoint& aPenEventScreenLocation )
 	{
 	TInt index( KErrNotFound );
@@ -1977,7 +1914,7 @@
 //
 // -----------------------------------------------------------------------------
 //
-EXPORT_C void CMmWidgetContainer::HandleTopFocusL( TBool aStopTimer )
+EXPORT_C void CMmWidgetContainer::EndLongTapL( TBool aStopTimer )
 	{
 	if ( iLongTapInProgress )
 		{
@@ -1991,7 +1928,7 @@
 	}
 
 // ---------------------------------------------------------------------------
-// 
+//
 // ---------------------------------------------------------------------------
 //
 void CMmWidgetContainer::HandleListBoxEventL( CEikListBox* aListBox,
@@ -2035,7 +1972,7 @@
 			break;
 			}
 		}
- 
+
 //    handle different behaviour in edit mode and normal mode
 	if ( !IsEditMode() )
 		{
@@ -2043,14 +1980,14 @@
 			{
 			case MEikListBoxObserver::EEventFlickStarted:
 				{
-				static_cast<CMmListBoxItemDrawer*>( 
+				static_cast<CMmListBoxItemDrawer*>(
 						Widget()->View()->ItemDrawer() )->
 						EnableCachedDataUse( ETrue );
 				break;
 				}
 			case MEikListBoxObserver::EEventFlickStopped:
 				{
-				static_cast<CMmListBoxItemDrawer*>( 
+				static_cast<CMmListBoxItemDrawer*>(
 						Widget()->View()->ItemDrawer() )->
 						EnableCachedDataUse( EFalse );
 				DrawView();
@@ -2058,32 +1995,32 @@
 				}
 			}
 		}
-	else 
+	else
 		{
 		switch ( aEventType )
 			{
 			case MEikListBoxObserver::EEventFlickStopped:
 				{
-				// this fixes some problems with messed edit mode 
+				// this fixes some problems with messed edit mode
 				// caused by kinetic scrolling
 				iDrawer->GetAnimator()->SetNextRedrawToWholeScreen();
 				break;
 				}
 			}
 		}
-	
+
     if ( iListBoxObserver && !iLongTapInProgress )
         {
         iListBoxObserver->HandleListBoxEventL( aListBox, aEventType );
         }
-    
+
     }
 
 // ---------------------------------------------------------------------------
-// 
+//
 // ---------------------------------------------------------------------------
 //
-EXPORT_C void CMmWidgetContainer::HandleOptionsMenuVisibilityChangeL( 
+EXPORT_C void CMmWidgetContainer::HandleOptionsMenuVisibilityChangeL(
 		TBool aOptionsMenuVisible )
 	{
 	if ( IsTimerActive() )
--- a/menufw/menusuites/foldersuite/data/matrixmenudata.xml	Thu Dec 17 08:40:49 2009 +0200
+++ b/menufw/menusuites/foldersuite/data/matrixmenudata.xml	Thu Jan 07 12:39:41 2010 +0200
@@ -228,6 +228,11 @@
                             icon_skin_minor_id=""
                             icon_skin_major_id=""
                             param="logs:dialed"/>
+          <!-- Photos Suite launcher -->      
+		  <menu:application uid="0x200104E4"/>
+          <!-- Video Suite launcher -->      
+		  <menu:application uid="0x200211FA"/>			
+			
         </menu:folder>
     </menu:folder>
 </menu:data>
--- a/menufw/menusuites/foldersuite/group/bld.inf	Thu Dec 17 08:40:49 2009 +0200
+++ b/menufw/menusuites/foldersuite/group/bld.inf	Thu Jan 07 12:39:41 2010 +0200
@@ -21,56 +21,34 @@
 DEFAULT
 
 PRJ_EXPORTS
-// exports for HW
-// touch
-../data/suite.xml /epoc32/data/z/private/101F4CD2/import/suites/foldersuite_touch/suite.xml
-../data/items_touch.xml /epoc32/data/z/private/101F4CD2/import/suites/foldersuite_touch/items.xml
-// non-touch
-../data/suite.xml /epoc32/data/z/private/101F4CD2/import/suites/foldersuite_nontouch/suite.xml
-../data/items_nontouch.xml /epoc32/data/z/private/101F4CD2/import/suites/foldersuite_nontouch/items.xml
-
-// exports for emulator
+// exports for HW & emulator
 // touch
-../data/suite.xml /epoc32/release/winscw/udeb/z/private/101F4CD2/import/suites/foldersuite_touch/suite.xml
-../data/suite.xml /epoc32/release/winscw/urel/z/private/101F4CD2/import/suites/foldersuite_touch/suite.xml
-../data/items_touch.xml /epoc32/release/winscw/udeb/z/private/101F4CD2/import/suites/foldersuite_touch/items.xml
-../data/items_touch.xml /epoc32/release/winscw/urel/z/private/101F4CD2/import/suites/foldersuite_touch/items.xml
+../data/suite.xml z:/private/101F4CD2/import/suites/foldersuite_touch/suite.xml
+../data/items_touch.xml z:/private/101F4CD2/import/suites/foldersuite_touch/items.xml
 // non-touch
-../data/suite.xml /epoc32/release/winscw/udeb/z/private/101F4CD2/import/suites/foldersuite_nontouch/suite.xml
-../data/suite.xml /epoc32/release/winscw/urel/z/private/101F4CD2/import/suites/foldersuite_nontouch/suite.xml
-../data/items_nontouch.xml /epoc32/release/winscw/udeb/z/private/101F4CD2/import/suites/foldersuite_nontouch/items.xml
-../data/items_nontouch.xml /epoc32/release/winscw/urel/z/private/101F4CD2/import/suites/foldersuite_nontouch/items.xml
+../data/suite.xml z:/private/101F4CD2/import/suites/foldersuite_nontouch/suite.xml
+../data/items_nontouch.xml z:/private/101F4CD2/import/suites/foldersuite_nontouch/items.xml
+
 // default
-../data/suite.xml /epoc32/release/winscw/udeb/z/private/101F4CD2/import/suites/foldersuite/suite.xml
-../data/suite.xml /epoc32/release/winscw/urel/z/private/101F4CD2/import/suites/foldersuite/suite.xml
+../data/suite.xml z:/private/101F4CD2/import/suites/foldersuite/suite.xml
 #ifdef __PEN_SUPPORT
-../data/items_touch.xml /epoc32/release/winscw/udeb/z/private/101F4CD2/import/suites/foldersuite/items.xml
-../data/items_touch.xml /epoc32/release/winscw/urel/z/private/101F4CD2/import/suites/foldersuite/items.xml
+../data/items_touch.xml z:/private/101F4CD2/import/suites/foldersuite/items.xml
 #else 
-../data/items_nontouch.xml /epoc32/release/winscw/udeb/z/private/101F4CD2/import/suites/foldersuite/items.xml
-../data/items_nontouch.xml /epoc32/release/winscw/urel/z/private/101F4CD2/import/suites/foldersuite/items.xml
+../data/items_nontouch.xml z:/private/101F4CD2/import/suites/foldersuite/items.xml
 #endif
 
 ../loc/matrixmenudata.loc          APP_LAYER_LOC_EXPORT_PATH(matrixmenudata.loc)
 // MCS root folder configuration
 #ifdef _MATRIX_MENU_INCLUDE_TEST_CONTENT
-../data/matrixmenudatatestcontent.xml /epoc32/RELEASE/winscw/udeb/Z/private/200113DD/content/matrixmenudata.xml
-../data/matrixmenudatatestcontent.xml /epoc32/RELEASE/winscw/urel/Z/private/200113DD/content/matrixmenudata.xml
-../data/matrixmenudatatestcontent.xml /epoc32/data/Z/private/200113DD/content/matrixmenudata.xml
+../data/matrixmenudatatestcontent.xml Z:/private/200113DD/content/matrixmenudata.xml
 #else
-../data/matrixmenudata.xml /epoc32/RELEASE/winscw/udeb/Z/private/200113DD/content/matrixmenudata.xml
-../data/matrixmenudata.xml /epoc32/RELEASE/winscw/urel/Z/private/200113DD/content/matrixmenudata.xml
-../data/matrixmenudata.xml /epoc32/data/Z/private/200113DD/content/matrixmenudata.xml
+../data/matrixmenudata.xml Z:/private/200113DD/content/matrixmenudata.xml
 #endif
-../data/matrixmenudata.dtd /epoc32/RELEASE/winscw/udeb/Z/private/200113DD/content/01/matrixmenudata.dtd
-../data/matrixmenudata.dtd /epoc32/RELEASE/winscw/urel/Z/private/200113DD/content/01/matrixmenudata.dtd
-../data/matrixmenudata.dtd /epoc32/data/Z/private/200113DD/content/01/matrixmenudata.dtd
+../data/matrixmenudata.dtd Z:/private/200113DD/content/01/matrixmenudata.dtd
 
-#ifdef SBSV2
 ./copyheaderfile.xml                 /epoc32/tools/makefile_templates/general/copyheaderfile.xml
 ./copyheaderfile.flm                 /epoc32/tools/makefile_templates/general/copyheaderfile.flm
 ./copyheaderfile.meta                /epoc32/tools/makefile_templates/general/copyheaderfile.meta
-#endif
 
 PRJ_MMPFILES
 foldersuite.mmp
--- a/menufw/menusuites/group/bld.inf	Thu Dec 17 08:40:49 2009 +0200
+++ b/menufw/menusuites/group/bld.inf	Thu Jan 07 12:39:41 2010 +0200
@@ -27,9 +27,7 @@
 ../rom/menusuites.iby           CORE_APP_LAYER_IBY_EXPORT_PATH(menusuites.iby)
 ../rom/menusuites_resources.iby LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(menusuites_resources.iby)
 
-../data/mmenuschema.xsd /epoc32/release/winscw/udeb/z/private/101F4CD2/import/suites/mmenuschema.xsd
-../data/mmenuschema.xsd /epoc32/release/winscw/urel/z/private/101F4CD2/import/suites/mmenuschema.xsd
-../data/mmenuschema.xsd /epoc32/data/z/private/101F4CD2/import/suites/mmenuschema.xsd
+../data/mmenuschema.xsd z:/private/101F4CD2/import/suites/mmenuschema.xsd
 
 PRJ_MMPFILES
 #ifndef SBSV2
--- a/systemDefinition.xml	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE SystemDefinition SYSTEM "systemDefinition.dtd"[
-
- 	<!ENTITY layer_real_source_path "\sf\app\homescreen">
- 	<!ENTITY layer_name "homescreen">
-
- 	<!ENTITY layer_file SYSTEM "systemDefinitionLayer.xml">
- 	<!ENTITY targetDefinition_file SYSTEM "/epoc32/tools/systemDefinition/targetDefinition.xml">
- 	<!ENTITY defaultbuild_file SYSTEM "/epoc32/tools/systemDefinition/default_build.xml">
- 	<!ENTITY defaultclean_file SYSTEM "/epoc32/tools/systemDefinition/default_clean.xml">
-]>
-
-<SystemDefinition name="SystemDefinition" schema="1.4.0">
-  <systemModel>
-&layer_file;
-  </systemModel>
-  <build>
-&targetDefinition_file;
-
-		<configuration name="build" description="build layer" filter="">
-    	<layerRef layerName="&layer_name;"/>
-
-&defaultbuild_file;
-    </configuration>
-
-		<configuration name="clean" description="clean layer" filter="">
-    	<layerRef layerName="&layer_name;"/>
-
-&defaultclean_file;
-    </configuration>
-
-  </build>
-</SystemDefinition>
--- a/systemDefinitionLayer.xml	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-<layer name="homescreen">
-  <module name="group_homescreen">
-    <component name="group_homescreen">
-      <unit unitID="homescreen" mrp="" bldFile="&layer_real_source_path;\group" name="homescreen" />
-    </component>
-  </module>
-</layer>
--- a/widgetmanager/data/20026F53.rss	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +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:  widget manager plugin registry resource
-*
-*/
-
-#include "registryinfov2.rh"
-
-// Declares info for two implementations
-RESOURCE REGISTRY_INFO theInfo
-    {
-    resource_format_version = RESOURCE_FORMAT_VERSION_2;
-    dll_uid = 0x20026F53;    
-    interfaces = 
-        {
-        INTERFACE_INFO
-            {
-            // UID of interface that is implemented
-            interface_uid = 0x20026F51;
-            implementations = 
-                {
-                IMPLEMENTATION_INFO
-                    {
-                    implementation_uid = 0x20026F53;
-                    version_no = 1;
-                    display_name = "Widget Manager";
-                    default_data = "WmContentControlUI";
-                    opaque_data = "WmContentControlUI";
-                    }
-                };
-            }
-        };
-    }
--- a/widgetmanager/data/widgetmanagerview.loc	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,154 +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 "
-
--- a/widgetmanager/data/widgetmanagerview.rss	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,235 +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:
-* 
-*
-*/
-
-//  INCLUDES
-#include <eikon.rh>
-#include <avkon.rsg>
-#include <avkon.rh>
-#include <avkon.loc>
-#include <appinfo.rh>
-#include <avkon.mbg>
-
-#include "widgetmanager.hrh"
-#include "widgetmanagerview.loc"
-
-//  RESOURCE IDENTIFIER
-NAME    WIGZ // 4 letter ID
-
-RESOURCE RSS_SIGNATURE
-	{
-	}
-
-// ----------------------------------------------------
-// MAIN VIEW AND ITS PARTS
-// ----------------------------------------------------
-
-RESOURCE AVKON_VIEW r_wm_main_container_view
-    {
-    cba = R_AVKON_SOFTKEYS_OPTIONS_BACK__SELECT;
-    menubar = r_wm_main_container_options_menu;
-    toolbar = 0;
-    }
-
-RESOURCE TITLE_PANE r_wm_main_container_title_resource
-    {
-    txt = qtn_wm_title_text;
-    }
-
-// ----------------------------------------------------
-// MENU
-// ----------------------------------------------------
-
-RESOURCE MENU_BAR r_wm_main_container_options_menu
-    {
-    titles =
-        {
-        MENU_TITLE
-            {
-            menu_pane = r_wm_main_container_menu_pane;
-            }
-        };
-    }
-
-RESOURCE MENU_PANE r_wm_main_container_menu_pane
-    {
-    items =
-        {
-        MENU_ITEM
-            {
-            command = EWmMainContainerViewOpenPortalMenuItemCommand;
-            txt = qtn_options_wm_open;
-            flags = EEikMenuItemAction;
-            },
-        MENU_ITEM
-            {
-            command = EWmMainContainerViewAddMenuItemCommand;
-            txt = qtn_options_wm_add;
-            flags = EEikMenuItemAction;
-            },
-        MENU_ITEM
-            {
-            command = EWmMainContainerViewWiddetDetailsMenuItemCommand;
-            txt = qtn_options_wm_show_details;
-            flags = EEikMenuItemSpecific;
-            },    
-        MENU_ITEM
-            {
-            command = EWmMainContainerViewLaunchMenuItemCommand;
-            txt = qtn_options_wm_launch_widget;
-            flags = EEikMenuItemSpecific;
-            },
-        MENU_ITEM
-            {
-            command = EWmMainContainerViewSearchMenuItemCommand;
-            txt = qtn_options_wm_search;
-            },
-        MENU_ITEM
-            {
-            command = EWmMainContainerViewSortAlphaMenuItemCommand;
-            txt = qtn_options_wm_sort_alpha;
-            },
-        MENU_ITEM
-            {
-            command = EWmMainContainerViewUninstallMenuItemCommand;
-            txt = qtn_options_wm_uninstall;
-            flags = EEikMenuItemSpecific;
-            },
-        MENU_ITEM
-            {
-            command = EWmMainContainerViewHelpMenuItemCommand;
-            txt = qtn_options_help;
-            },
-        MENU_ITEM
-            {
-            command = EWmMainContainerViewBackMenuItemCommand;
-            txt = qtn_options_exit;
-            }
-        };
-    }
-
-// ----------------------------------------------------
-// OVI STORE BUTTON
-// ----------------------------------------------------
-
-RESOURCE AVKON_BUTTON r_wm_portal_button
-    {
-    flags = 0;
-    states =
-        {
-        AVKON_BUTTON_STATE
-            {
-            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;
-            }
-        };
-    }
-
-RESOURCE TBUF r_qtn_wm_go_to_ovi_store
-    {
-    buf = qtn_wm_ovi_store_title;
-    }
-
-// ----------------------------------------------------
-// MISCELLANEOUS INFO MESSAGES
-// ----------------------------------------------------
-
-RESOURCE TBUF r_qtn_hs_add_widget_no_space_note
-    {
-    buf = qtn_hs_add_widget_no_space_note;
-    }
-
-RESOURCE TBUF r_qtn_hs_add_widget_max_count_note
-    {
-    buf = qtn_hs_add_widget_max_count_note;
-    }
-
-RESOURCE TBUF r_qtn_wm_details_no_description
-    {
-    buf = qtn_wm_details_no_description;
-    }
-
-RESOURCE TBUF r_qtn_wm_uninst_not_allowed
-    {
-    buf = qtn_wm_uninst_not_allowed;
-    }
-
-// ----------------------------------------------------
-// Wm Details dialog
-// ----------------------------------------------------
-
-STRUCT WMDLGCONTROL
-    {
-    STRUCT control;
-    }
-	
-RESOURCE DIALOG r_wm_details_add_dialog
-    {
-    flags = EEikDialogFlagNoDrag |
-            EEikDialogFlagCbaButtons |
-            EEikDialogFlagWait |
-            EEikDialogFlagNoTitleBar;
-    buttons = r_wm_details_add_close_cba;
-    }
-
-RESOURCE CBA r_wm_details_add_close_cba
-    {
-    buttons =
-        {
-        CBA_BUTTON // add
-            {
-            id = ECbaAddToHs; 
-            txt = qtn_wm_details_add_to_hs; 
-            },
-        CBA_BUTTON // close
-            {
-            id = EAknSoftkeyClose; 
-            txt = text_softkey_close;
-            }
-        };
-    }
-
-RESOURCE DIALOG r_wm_details_only_dialog
-    {
-    flags = EEikDialogFlagNoDrag |
-            EEikDialogFlagCbaButtons |
-            EEikDialogFlagWait |
-            EEikDialogFlagNoTitleBar;
-    buttons = r_wm_details_empty_close_cba;
-    }
-
-RESOURCE CBA r_wm_details_empty_close_cba
-    {
-    buttons =
-        {
-        CBA_BUTTON // empty
-            {
-            id = 0; 
-            txt = text_softkey_empty; 
-            },
-        CBA_BUTTON // close
-            {
-            id = EAknSoftkeyClose; 
-            txt = text_softkey_close;
-            }
-        };
-    }
--- a/widgetmanager/gfx/add_widget_button.svg	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="50px"
-	 height="36px" viewBox="0 0 50 36" enable-background="new 0 0 50 36" xml:space="preserve">
-<g id="Layer_2">
-</g>
-<g id="Layer_1">
-	<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="24.9995" y1="0" x2="24.9995" y2="36.0005">
-		<stop  offset="0" style="stop-color:#79CD19"/>
-		<stop  offset="1" style="stop-color:#4A9826"/>
-	</linearGradient>
-	<path fill="url(#SVGID_1_)" d="M50,31c0,2.762-2.239,5-5,5H5c-2.762,0-5-2.238-5-5V5c0-2.761,2.238-5,5-5h40c2.761,0,5,2.239,5,5
-		V31z"/>
-	<polygon fill="#E6E6E6" points="16.515,21.084 22.015,21.084 22.015,26.585 22.015,27.586 23.015,27.586 27.015,27.586 
-		28.016,27.586 28.016,26.585 28.016,21.084 33.515,21.084 34.516,21.084 34.516,20.083 34.516,16.083 34.516,15.082 33.515,15.082 
-		28.016,15.082 28.016,9.583 28.016,8.582 27.015,8.582 23.015,8.582 22.015,8.582 22.015,9.583 22.015,15.082 16.515,15.082 
-		15.515,15.082 15.515,16.083 15.515,20.082 15.515,21.084 	"/>
-	<path opacity="0.5" fill="#FFFFFF" d="M2.033,33.656C1.398,32.947,1.001,32.023,1.001,31V5c0-2.205,1.795-4,4-4h40
-		c1.15,0,2.182,0.496,2.912,1.276l0.708-0.708C47.711,0.606,46.43,0,45.001,0h-40c-2.762,0-5,2.238-5,5v26
-		c0,1.301,0.509,2.475,1.323,3.365L2.033,33.656z"/>
-	<path opacity="0.2" d="M50.001,31V5c0-1.333-0.529-2.536-1.379-3.433l-0.709,0.708c0.67,0.716,1.088,1.669,1.088,2.724v26
-		c0,2.205-1.795,4-4,4h-40c-1.182,0-2.235-0.525-2.968-1.344l-0.709,0.709C2.238,35.363,3.541,36,5.001,36h40
-		C47.763,36,50.001,33.762,50.001,31z"/>
-	<polygon opacity="0.3" points="22.034,27.578 22.056,27.578 23.058,26.576 23.034,26.576 23.034,20.093 22.034,21.094 
-		22.034,26.577 	"/>
-	<polygon fill="#FFFFFF" points="15.507,21.08 15.507,21.084 16.507,21.084 22.005,21.085 22.005,21.103 23.007,20.102 
-		23.007,20.085 16.507,20.084 16.507,20.08 	"/>
-	<polygon opacity="0.3" points="16.495,20.08 16.495,16.086 22.995,16.086 22.995,9.586 26.994,9.586 26.994,9.613 27.995,8.612 
-		27.995,8.584 26.993,8.584 22.995,8.584 21.993,8.584 21.993,9.585 21.993,15.084 16.495,15.084 15.495,15.084 15.495,16.085 
-		15.495,20.084 15.495,21.08 	"/>
-	<polygon fill="#FFFFFF" points="28.016,8.596 27.015,9.597 27.015,16.069 27.028,16.069 28.029,15.068 28.016,15.068 28.016,9.568 
-			"/>
-	<polygon fill="#FFFFFF" points="23.034,27.584 27.033,27.584 28.035,27.584 28.035,26.583 28.035,21.082 33.533,21.082 
-		34.535,21.082 34.535,20.081 34.535,16.082 34.535,15.088 33.534,16.088 33.534,20.082 27.034,20.082 27.034,26.582 23.058,26.582 
-		22.056,27.584 	"/>
-	<polygon opacity="0.3" points="33.524,16.091 34.525,15.09 34.525,15.084 33.523,15.084 28.039,15.084 27.038,16.085 
-		33.524,16.085 	"/>
-</g>
-</svg>
--- a/widgetmanager/gfx/qgn_menu_hswidget.svg	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,79 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="88" height="88" viewBox="0 0 88 88">
-<rect fill="none" height="88" width="88"/>
-<linearGradient id="SVGID_1" gradientUnits="userSpaceOnUse" x1="22.43" y1="2.92" x2="66.99" y2="90.66">
-<stop stop-color="#A2C2DD" offset="0.1"/>
-<stop stop-color="#6C83BB" offset="0.71"/>
-<stop stop-color="#003D6D" offset="0.99"/>
-</linearGradient>
-<path d="M63.987,81.355c-0.18,0-0.364-0.024-0.543-0.076l-19.092-5.262c-1.259-0.341-2.284-1.793-2.328-3.306 l-0.002-0.068l-3.806,1.339c-0.217,0.066-0.435,0.104-0.656,0.104c-0.18,0-0.362-0.024-0.541-0.072l-19.458-5.141 c-1.282-0.332-2.325-1.772-2.374-3.276L14.623,47.38c-0.034-1.117,0.516-2.05,1.403-2.376L24.09,42l0.016-0.006l0.078-0.027 c0.071-0.023,0.145-0.042,0.221-0.056l0.186-0.027l0.186-0.008c0.056,0,0.11,0.002,0.167,0.008l0.083,0.006l0.023,0.002l0.075,0.012 l0.026,0.004l0.133,0.026l18.117,4.305l7.348-2.809l0.018-0.01l0.08-0.027c0.071-0.021,0.144-0.041,0.22-0.058l0.178-0.027 l0.021-0.002l0.054-0.002l0.114-0.004c0.053,0,0.107,0.002,0.163,0.006l0.095,0.01l0.132,0.019l0.025,0.006l0.088,0.019 l19.093,4.656l0.174,0.049c0.016,0.002,0.064,0.021,0.114,0.041c0.007,0.003,0.051,0.019,0.091,0.037l0.012,0.007l0.069,0.031 l0.01,0.004l0.066,0.033l0.011,0.008l0.109,0.06l0.013,0.009l0.105,0.065l0.143,0.102c0.029,0.021,0.077,0.06,0.121,0.097 c0.016,0.011,0.059,0.05,0.103,0.089l0.067,0.064l0.008,0.008l0.063,0.064c0.035,0.032,0.069,0.069,0.102,0.106 c0.043,0.048,0.087,0.102,0.134,0.157c0.067,0.087,0.128,0.174,0.188,0.264c0.149,0.228,0.276,0.473,0.378,0.733 c0.036,0.093,0.068,0.186,0.098,0.28c0.022,0.064,0.043,0.141,0.062,0.223l0.037,0.157l0.028,0.161l0.023,0.165l0.001,0.019 l0.018,0.188v0.004l0.004,0.109l0.721,24.573v0.01v0.081v0.104l-0.009,0.167l-0.008,0.097l-0.003,0.026l-0.023,0.17l-0.001,0.01 l-0.015,0.072l-0.023,0.104c-0.002,0.021-0.016,0.074-0.032,0.128c-0.003,0.019-0.019,0.068-0.037,0.122l-0.041,0.113l-0.052,0.126 l-0.075,0.15c-0.038,0.072-0.069,0.124-0.101,0.173c-0.049,0.072-0.096,0.135-0.144,0.194c-0.229,0.274-0.504,0.471-0.82,0.586 l-8.078,2.896C64.424,81.318,64.207,81.355,63.987,81.355L63.987,81.355z M58.611,43.634c-0.601,0-1.218-0.075-1.832-0.217 c-5.321-1.234-9.814-7.423-10.013-13.797c-0.141-4.509,1.896-8.199,5.223-9.546l-0.002-0.002l2.504-1.065l3.104-1.345l0.01,0.022 l2.047-0.873c0.127-0.054,0.246-0.097,0.369-0.141c0.265-0.095,0.553-0.175,0.854-0.241c0.219-0.047,0.438-0.083,0.665-0.114 c0.206-0.022,0.403-0.039,0.604-0.047c0.098-0.004,0.201-0.006,0.308-0.006l0.239,0.004c0.174,0.002,0.352,0.012,0.53,0.033 c0.157,0.014,0.32,0.035,0.485,0.064l0.334,0.054l0.012,0.004l0.07,0.017l0.102,0.022c0.118,0.025,0.264,0.06,0.414,0.097 c0.188,0.056,0.323,0.097,0.461,0.14c0.15,0.048,0.3,0.104,0.454,0.163c0.139,0.054,0.286,0.114,0.434,0.18 c0.141,0.062,0.288,0.128,0.435,0.204c0.136,0.066,0.283,0.145,0.431,0.229c0.137,0.075,0.282,0.161,0.424,0.248 c0.156,0.097,0.306,0.194,0.452,0.297c0.155,0.107,0.314,0.219,0.466,0.338c0.149,0.111,0.311,0.242,0.467,0.372 c0.171,0.145,0.339,0.295,0.504,0.45c0.189,0.173,0.369,0.357,0.551,0.545c0.219,0.227,0.429,0.462,0.634,0.706 c0.295,0.357,0.571,0.72,0.822,1.083c0.672,0.966,1.243,2.026,1.701,3.151c0.167,0.409,0.317,0.821,0.446,1.228 c0.097,0.301,0.186,0.606,0.264,0.918c0.068,0.258,0.13,0.52,0.184,0.784c0.05,0.239,0.093,0.47,0.13,0.708 c0.034,0.212,0.065,0.429,0.089,0.642c0.026,0.198,0.048,0.407,0.064,0.617c0.015,0.196,0.026,0.392,0.036,0.588l0.003,0.093 l0.004,0.099c0.004,0.122,0.005,0.25,0.005,0.377c0.003,0.182-0.001,0.363-0.005,0.542c-0.008,0.188-0.017,0.365-0.028,0.539 c-0.013,0.171-0.027,0.349-0.047,0.52c-0.018,0.167-0.039,0.339-0.063,0.506c-0.026,0.173-0.055,0.34-0.086,0.505 c-0.031,0.167-0.066,0.336-0.105,0.503c-0.041,0.18-0.085,0.349-0.134,0.516c-0.047,0.169-0.098,0.336-0.153,0.501 c-0.063,0.186-0.127,0.365-0.195,0.539c-0.074,0.188-0.151,0.372-0.233,0.549c-0.094,0.202-0.19,0.394-0.293,0.58 c-0.12,0.221-0.246,0.429-0.382,0.633c-0.169,0.262-0.359,0.52-0.56,0.757c-0.825,0.995-1.824,1.725-2.967,2.169l-7.654,3.1 C60.378,43.473,59.507,43.634,58.611,43.634L58.611,43.634z M34.343,41.839l-0.335-0.295l-6.913-6.135l-6.556,2.821l-1.133,0.487 l0.135-1.226l1.031-9.319l-5.811-8.063l-0.534-0.743l0.843-0.343l8.076-3.258l0.141-0.06l0.153,0.006l0.738,0.025l1.7-4.282 l0.11-0.281l0.276-0.122l8.075-3.37l0.681-0.285l0.265,0.689l3.722,9.641l7.714,3.151l0.97,0.396l-0.719,0.762l-5.304,5.608 l1.602,10.104l0.091,0.569l-0.539,0.21l-8.031,3.135c-0.025,0.01-0.052,0.022-0.08,0.031L34.343,41.839L34.343,41.839z" fill="url(#SVGID_1)"/>
-<linearGradient id="SVGID_2" gradientUnits="userSpaceOnUse" x1="30.21" y1="45.14" x2="40.63" y2="66.61">
-<stop stop-color="#43910A" offset="0"/>
-<stop stop-color="#17594C" offset="1"/>
-</linearGradient>
-<path d="M46.985,68.733l-0.567-18.834c-0.001-0.011-0.001-0.023-0.001-0.035 c-0.002-0.037-0.005-0.072-0.008-0.109c-0.002-0.037-0.007-0.076-0.011-0.114c-0.005-0.039-0.011-0.08-0.017-0.119 c-0.008-0.043-0.016-0.087-0.024-0.132c-0.01-0.048-0.022-0.098-0.035-0.145c-0.013-0.06-0.03-0.116-0.048-0.174 c-0.025-0.078-0.053-0.154-0.083-0.229c-0.086-0.213-0.191-0.415-0.315-0.599c-0.049-0.072-0.1-0.141-0.151-0.204 c-0.039-0.048-0.077-0.093-0.117-0.137c-0.033-0.035-0.066-0.07-0.102-0.104c-0.031-0.029-0.063-0.059-0.093-0.085 c-0.029-0.024-0.059-0.052-0.087-0.074c-0.027-0.022-0.056-0.044-0.085-0.064c-0.025-0.021-0.054-0.039-0.08-0.058 c-0.026-0.017-0.052-0.033-0.08-0.05c-0.025-0.017-0.053-0.03-0.078-0.043c-0.026-0.017-0.053-0.029-0.078-0.041 c-0.026-0.013-0.052-0.025-0.08-0.037c-0.026-0.011-0.052-0.021-0.079-0.031c-0.026-0.011-0.054-0.019-0.081-0.026 c-0.028-0.009-0.055-0.017-0.083-0.025c-0.008-0.002-0.016-0.004-0.024-0.006l-19.464-4.625c-0.021-0.004-0.042-0.008-0.063-0.012 c-0.029-0.006-0.059-0.011-0.087-0.015c-0.031-0.004-0.063-0.006-0.093-0.01c-0.033,0-0.065-0.002-0.098-0.002 c-0.035,0-0.07,0.002-0.103,0.004c-0.041,0.004-0.08,0.008-0.119,0.017c-0.051,0.008-0.101,0.021-0.15,0.037 c-0.021,0.006-0.042,0.012-0.063,0.021l-8.076,2.997c0.021-0.007,21.914,27.567,21.714,27.637l8.076-2.843 c0.2-0.072,0.375-0.196,0.52-0.365c0.035-0.042,0.068-0.085,0.1-0.133c0.024-0.035,0.047-0.072,0.067-0.109 c0.019-0.035,0.036-0.065,0.053-0.103c0.016-0.031,0.029-0.064,0.043-0.098c0.012-0.03,0.024-0.063,0.034-0.097 c0.011-0.031,0.021-0.06,0.029-0.091c0.008-0.029,0.017-0.062,0.023-0.093c0.008-0.029,0.014-0.06,0.02-0.091 c0.007-0.031,0.011-0.062,0.016-0.093c0.006-0.031,0.009-0.063,0.012-0.093c0.004-0.031,0.007-0.064,0.009-0.098 c0.001-0.03,0.004-0.062,0.006-0.097c0-0.033,0.001-0.065,0.001-0.101C46.986,68.78,46.985,68.758,46.985,68.733z" fill="url(#SVGID_2)"/>
-<linearGradient id="SVGID_3" gradientUnits="userSpaceOnUse" x1="12.64" y1="42.63" x2="43.4" y2="77.87">
-<stop stop-color="#DCE8E4" offset="0"/>
-<stop stop-color="#43910A" offset="1"/>
-</linearGradient>
-<path d="M36.509,50.295c0.978,0.239,1.801,1.416,1.838,2.625l0.566,18.676 c0.037,1.215-0.726,1.989-1.704,1.725L17.746,68.18c-0.979-0.253-1.801-1.421-1.839-2.605L15.34,47.356 c-0.037-1.18,0.725-1.952,1.704-1.723L36.509,50.295z" fill="url(#SVGID_3)"/>
-<linearGradient id="SVGID_4" gradientUnits="userSpaceOnUse" x1="56.73" y1="46.62" x2="69.4" y2="74.83">
-<stop stop-color="#BBE0FF" offset="0"/>
-<stop stop-color="#A2C2DD" offset="0.35"/>
-<stop stop-color="#6C83BB" offset="0.7"/>
-<stop stop-color="#003D6D" offset="1"/>
-</linearGradient>
-<path d="M73.378,75.945L72.66,51.374c-0.001-0.012-0.002-0.024-0.002-0.034 c-0.003-0.037-0.005-0.075-0.007-0.112c-0.004-0.037-0.006-0.076-0.012-0.115c-0.005-0.039-0.01-0.08-0.016-0.119 c-0.008-0.044-0.016-0.089-0.024-0.133c-0.01-0.049-0.021-0.099-0.032-0.146c-0.015-0.06-0.031-0.117-0.049-0.175 c-0.023-0.076-0.052-0.155-0.081-0.231c-0.083-0.215-0.188-0.415-0.31-0.601c-0.048-0.072-0.098-0.143-0.149-0.208 c-0.037-0.048-0.074-0.091-0.113-0.135c-0.033-0.037-0.065-0.072-0.101-0.107c-0.029-0.028-0.061-0.058-0.09-0.086 c-0.028-0.025-0.057-0.05-0.086-0.072c-0.026-0.022-0.054-0.046-0.081-0.064c-0.027-0.021-0.053-0.041-0.081-0.06 c-0.025-0.017-0.052-0.033-0.077-0.05c-0.026-0.015-0.052-0.03-0.077-0.045c-0.026-0.015-0.051-0.027-0.078-0.042 c-0.024-0.01-0.05-0.024-0.076-0.034c-0.025-0.013-0.052-0.023-0.078-0.033c-0.025-0.011-0.052-0.019-0.078-0.027 c-0.027-0.008-0.055-0.017-0.082-0.024c-0.007,0-0.016-0.004-0.023-0.004l-19.092-4.654c-0.021-0.006-0.042-0.01-0.063-0.014 c-0.028-0.006-0.058-0.01-0.085-0.015c-0.03-0.004-0.062-0.006-0.091-0.008c-0.032-0.002-0.064-0.004-0.097-0.004 c-0.033,0-0.067,0.002-0.102,0.004c-0.038,0.004-0.078,0.01-0.115,0.017c-0.05,0.01-0.099,0.023-0.146,0.037 c-0.022,0.006-0.042,0.015-0.062,0.023l-8.076,3.089c0.02-0.01,21.658,33.316,21.463,33.387l8.075-2.894 c0.196-0.072,0.368-0.196,0.51-0.365c0.034-0.041,0.067-0.087,0.098-0.132c0.023-0.037,0.046-0.074,0.066-0.111 c0.019-0.035,0.035-0.068,0.052-0.104c0.015-0.033,0.027-0.063,0.041-0.099c0.013-0.031,0.023-0.063,0.035-0.095 c0.01-0.031,0.019-0.063,0.027-0.094c0.008-0.03,0.016-0.062,0.024-0.093c0.006-0.03,0.013-0.062,0.019-0.093 c0.005-0.028,0.01-0.06,0.015-0.093c0.005-0.03,0.008-0.062,0.012-0.095c0.005-0.031,0.007-0.062,0.009-0.095 s0.004-0.064,0.004-0.097c0.002-0.035,0.002-0.068,0.002-0.104C73.38,75.99,73.38,75.968,73.378,75.945z" fill="url(#SVGID_4)"/>
-<linearGradient id="SVGID_5" gradientUnits="userSpaceOnUse" x1="40.88" y1="44.88" x2="68.29" y2="84.97">
-<stop stop-color="#FFFFFF" offset="0.15"/>
-<stop stop-color="#A2C2DD" offset="1"/>
-</linearGradient>
-<path d="M62.786,51.841c0.959,0.241,1.766,1.426,1.802,2.646l0.721,24.368 c0.036,1.227-0.712,2.002-1.672,1.733l-19.093-5.26c-0.959-0.262-1.766-1.442-1.802-2.639l-0.72-23.798 c-0.036-1.19,0.711-1.973,1.671-1.739L62.786,51.841z" fill="url(#SVGID_5)"/>
-<linearGradient id="SVGID_6" gradientUnits="userSpaceOnUse" x1="15.34" y1="18.21" x2="25.43" y2="18.21">
-<stop stop-color="#E6EEF4" offset="0"/>
-<stop stop-color="#2F8E9A" offset="0.44"/>
-<stop stop-color="#003D6D" offset="0.94"/>
-</linearGradient>
-<polygon fill="url(#SVGID_6)" points="25.43,16.5 23.414,16.43 15.339,19.69 23.255,19.994 24.069,19.664 "/>
-<linearGradient id="SVGID_7" gradientUnits="userSpaceOnUse" x1="29.92" y1="9.81" x2="35.32" y2="20.62">
-<stop stop-color="#E6EEF4" offset="0"/>
-<stop stop-color="#2F8E9A" offset="0.44"/>
-<stop stop-color="#003D6D" offset="0.94"/>
-</linearGradient>
-<path d="M38.449,18.279l-3.833-9.932l-8.075,3.368l3.833,9.862C33.074,20.479,35.749,19.387,38.449,18.279z" fill="url(#SVGID_7)"/>
-<linearGradient id="SVGID_8" gradientUnits="userSpaceOnUse" x1="42.72" y1="24.82" x2="34.38" y2="18.51">
-<stop stop-color="#E6EEF4" offset="0"/>
-<stop stop-color="#2F8E9A" offset="0.44"/>
-<stop stop-color="#003D6D" offset="0.94"/>
-</linearGradient>
-<path d="M46.449,21.543l-8-3.264l-8.075,3.297l8,3.269C38.396,24.823,44.091,22.563,46.449,21.543z" fill="url(#SVGID_8)"/>
-<linearGradient id="SVGID_9" gradientUnits="userSpaceOnUse" x1="42.18" y1="23.58" x2="28.57" y2="37.19">
-<stop stop-color="#E6EEF4" offset="0"/>
-<stop stop-color="#2F8E9A" offset="0.44"/>
-<stop stop-color="#003D6D" offset="0.94"/>
-</linearGradient>
-<polygon fill="url(#SVGID_9)" points="40.904,27.41 46.449,21.543 38.375,24.845 32.829,30.642 "/>
-<linearGradient id="SVGID_10" gradientUnits="userSpaceOnUse" x1="39.13" y1="39.57" x2="35.59" y2="26.33">
-<stop stop-color="#E6EEF4" offset="0"/>
-<stop stop-color="#2F8E9A" offset="0.44"/>
-<stop stop-color="#003D6D" offset="0.94"/>
-</linearGradient>
-<path d="M32.829,30.642l1.658,10.369l8.075-3.149L40.904,27.41C40.904,27.41,32.862,30.627,32.829,30.642z" fill="url(#SVGID_10)"/>
-<linearGradient id="SVGID_11" gradientUnits="userSpaceOnUse" x1="18.97" y1="15.63" x2="37.23" y2="43.12">
-<stop stop-color="#D6E6EC" offset="0"/>
-<stop stop-color="#298595" offset="1"/>
-</linearGradient>
-<polygon fill="url(#SVGID_11)" points="26.546,11.715 30.379,21.577 38.379,24.845 32.833,30.642 34.491,41.011 27.23,34.569 20.255,37.571 21.316,27.978 15.343,19.69 23.259,19.994 "/>
-<linearGradient id="SVGID_12" gradientUnits="userSpaceOnUse" x1="52.27" y1="29.75" x2="73.38" y2="29.75">
-<stop stop-color="#E6EEF4" offset="0"/>
-<stop stop-color="#9646AC" offset="0.44"/>
-<stop stop-color="#3D013F" offset="0.94"/>
-</linearGradient>
-<path d="M73.374,30.359c-0.002-0.06-0.004-0.122-0.007-0.182c-0.008-0.188-0.021-0.375-0.034-0.562 c-0.017-0.198-0.036-0.394-0.061-0.59c-0.024-0.205-0.054-0.409-0.085-0.613c-0.036-0.225-0.079-0.45-0.124-0.672 c-0.053-0.254-0.11-0.504-0.176-0.751c-0.075-0.297-0.16-0.592-0.254-0.883c-0.127-0.396-0.269-0.789-0.426-1.172l0,0 c-0.438-1.077-0.986-2.092-1.627-3.015c-0.249-0.357-0.511-0.702-0.783-1.028c-0.194-0.231-0.395-0.456-0.6-0.671 c-0.17-0.177-0.344-0.351-0.523-0.518c-0.156-0.145-0.317-0.289-0.478-0.425c-0.146-0.122-0.296-0.241-0.444-0.353 c-0.141-0.109-0.287-0.214-0.433-0.313c-0.137-0.095-0.275-0.188-0.42-0.274c-0.132-0.083-0.269-0.165-0.404-0.239 c-0.133-0.077-0.269-0.146-0.404-0.215c-0.134-0.068-0.267-0.13-0.402-0.188c-0.134-0.06-0.269-0.116-0.402-0.167 c-0.137-0.054-0.272-0.101-0.408-0.146c-0.139-0.043-0.275-0.084-0.415-0.126c-0.143-0.037-0.283-0.07-0.426-0.101 c-0.04-0.01-0.081-0.016-0.122-0.029c-0.105-0.019-0.215-0.035-0.32-0.054c-0.149-0.022-0.299-0.043-0.449-0.058 c-0.16-0.017-0.317-0.027-0.477-0.029c-0.167-0.006-0.334-0.006-0.501,0.002c-0.18,0.006-0.361,0.021-0.534,0.042 c-0.208,0.027-0.409,0.062-0.606,0.101c-0.261,0.058-0.521,0.13-0.769,0.219l-0.006,0.002c-0.108,0.037-0.216,0.078-0.322,0.122 l-7.664,3.263c0.107-0.045,0.217-0.087,0.326-0.122l5.287-2.292l-5.287,2.292c0.253-0.084,0.508-0.157,0.77-0.214 c0.201-0.042,0.401-0.074,0.605-0.099c0.178-0.019,7.981,21.822,6.952,22.212l7.663-3.104c1.03-0.398,1.936-1.067,2.678-1.958 c0.181-0.217,0.352-0.45,0.513-0.696c0.123-0.186,0.239-0.379,0.349-0.582c0.096-0.171,0.185-0.351,0.271-0.533 c0.076-0.167,0.149-0.338,0.218-0.512c0.065-0.163,0.125-0.33,0.183-0.501c0.052-0.155,0.099-0.312,0.145-0.472 c0.044-0.159,0.086-0.32,0.124-0.481c0.036-0.155,0.069-0.314,0.1-0.475c0.03-0.157,0.056-0.316,0.08-0.479 c0.024-0.157,0.044-0.32,0.062-0.48c0.018-0.163,0.032-0.326,0.043-0.493c0.013-0.165,0.021-0.334,0.025-0.501 c0.006-0.173,0.008-0.349,0.008-0.526C73.379,30.601,73.378,30.481,73.374,30.359z" fill="url(#SVGID_12)"/>
-<linearGradient id="SVGID_13" gradientUnits="userSpaceOnUse" x1="47.62" y1="18.01" x2="65.31" y2="44.62">
-<stop stop-color="#DEDEED" offset="0"/>
-<stop stop-color="#9646AC" offset="1"/>
-</linearGradient>
-<path d="M56.257,20.407c5.032,1.021,9.268,6.917,9.457,13.153c0.188,6.243-3.738,10.339-8.771,9.16 c-5.035-1.168-9.27-7.037-9.46-13.122C47.294,23.521,51.222,19.399,56.257,20.407z" fill="url(#SVGID_13)"/>
-</svg>
\ No newline at end of file
--- a/widgetmanager/group/bld.inf	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +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:
-* Widget manager build information
-*
-*/
-
-PRJ_PLATFORMS
-DEFAULT
-
-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)
-
-../sis/widgetmanager_stub.sis          /epoc32/data/z/system/install/widgetmanager_stub.sis
-
-PRJ_EXTENSIONS
-START EXTENSION s60/mifconv
-OPTION TARGETFILE widgetmanager.mif
-OPTION HEADERFILE widgetmanager.mbg
-OPTION SOURCEDIR ../gfx
-OPTION SOURCEFILE wmicons.txt
-END
-
-PRJ_MMPFILES
-
-widgetmanager.mmp
-
--- a/widgetmanager/group/widgetmanager.mmp	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,115 +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:
-* Widget manager project definition file
-*
-*/
-
-#include <data_caging_paths.hrh>
-#include <platform_paths.hrh>
-
-TARGET widgetmanager.dll
-TARGETTYPE PLUGIN
-
-// ECom Dll recognition UID followed by the unique UID for this dll
-UID 0x10009D8D 0x20026F53
-
-VENDORID    VID_DEFAULT
-SECUREID    0x20026F53
-
-// SIS installation + IAD support
-VERSION 1.1
-paged
-
-CAPABILITY CAP_ECOM_PLUGIN
-
-SOURCEPATH      ../src
-SOURCE  wmpluginproxy.cpp
-SOURCE  wmplugin.cpp
-SOURCE  wmresourceloader.cpp
-SOURCE  wmmaincontainer.cpp
-SOURCE  wmmaincontainerview.cpp
-SOURCE  wmwidgetdata.cpp
-SOURCE  wmlistbox.cpp
-SOURCE  wmimageconverter.cpp
-SOURCE  wmpersistentwidgetorder.cpp
-SOURCE  wmeffectmanager.cpp
-SOURCE  wmiconfileprovider.cpp
-SOURCE  wmdetailsdlg.cpp
-SOURCE  wmwidgetloaderao.cpp
-
-SOURCEPATH		../data
-START RESOURCE  20026F53.rss
-TARGETPATH		ECOM_RESOURCE_DIR
-TARGET          widgetmanager.rsc
-END //RESOURCE
-
-SOURCEPATH		../data
-START RESOURCE	widgetmanagerview.rss
-HEADER
-TARGETPATH      RESOURCE_FILES_DIR
-LANGUAGE_IDS
-END //RESOURCE
-
-USERINCLUDE .
-USERINCLUDE ../inc
-USERINCLUDE ../data
-
-APP_LAYER_SYSTEMINCLUDE
-SYSTEMINCLUDE   /epoc32/include/ecom
-
-
-LIBRARY	    euser.lib
-LIBRARY     cone.lib
-LIBRARY     avkon.lib
-LIBRARY     eikcore.lib
-LIBRARY     estor.lib
-LIBRARY     eikcoctl.lib
-LIBRARY     eikctl.lib
-LIBRARY     eikdlg.lib
-
-LIBRARY     efsrv.lib // RFs
-LIBRARY     bafl.lib // BaflUtils
-LIBRARY     apgrfx.lib // RApaLsSession
-LIBRARY     commonengine.lib // StringLoader
-
-LIBRARY     aknicon.lib // AknIconUtility
-LIBRARY     imageconversion.lib // CImageDecoder
-LIBRARY     bitmaptransforms.lib // CBitmapScaler
-LIBRARY     fbscli.lib // CFbsBitmap
-LIBRARY     bitgdi.lib // CFbsBitmapDevice
-LIBRARY     gdi.lib // CFont
-LIBRARY     egul.lib // TextUtils
-LIBRARY     ecom.lib // ECom fw
-LIBRARY     aknskins.lib // AknsDrawUtils
-LIBRARY     aknskinsrv.lib // AknsDrawUtils
-LIBRARY     aknswallpaperutils.lib // AknsDrawUtils
-LIBRARY     hscontentcontrol.lib // CHsContentControlUi
-LIBRARY     apparc.lib // CApaCommandLine
-LIBRARY     aknlayout.lib // avkon layout
-LIBRARY     aknlayout2scalable.lib // scalable avkon layout
-LIBRARY     swinstcli.lib // widget uninstall
-LIBRARY     hscontentinfo.lib // CHsContentInfo
-LIBRARY     platformenv.lib  // DriveInfo::GetDefaultDrive
-LIBRARY	    svgengine.lib // CSvgEngineInterfaceImpl
-LIBRARY     gfxtrans.lib // effect manager
-LIBRARY     ws32.lib //WindowSession
-LIBRARY     widgetregistryclient.lib // WidgetRegistryClient
-LIBRARY     hlplch.lib // HlpLauncher
-LIBRARY     sysutil.lib //  diskspace
-LIBRARY     featmgr.lib // FeatureManager
-LIBRARY     etext.lib 
-
-
-// End of file
--- a/widgetmanager/group/wmicons.txt	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
--c32,8 qgn_menu_hswidget
--c32,8 add_widget_button
-
--- a/widgetmanager/inc/widgetmanager.hrh	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +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:
-* Declares resource ids for widgetmanager application.
-*
-*/
-
-
-/** WidgetManger viev uid */
-enum TWidgetManagerViewUids
-	{
-	EWmMainContainerViewId = 0x20026F53
-	};
-
-/** MainContainer View Commands */
-enum TWmMainContainerViewCommands
-    {
-    EWmMainContainerViewAddMenuItemCommand = 0x6000,
-    EWmMainContainerViewLaunchMenuItemCommand,
-    EWmMainContainerViewSearchMenuItemCommand,
-    EWmMainContainerViewSortAlphaMenuItemCommand,
-    EWmMainContainerViewUninstallMenuItemCommand,
-    EWmMainContainerViewHelpMenuItemCommand,
-    EWmMainContainerViewOpenPortalMenuItemCommand,
-    EWmMainContainerViewBackMenuItemCommand,
-    EWmMainContainerViewWiddetDetailsMenuItemCommand
-    };
-
-enum TWmMenuCmdIDs
-    {
-    ECbaAddToHs = 1
-    };
-	
\ No newline at end of file
--- a/widgetmanager/inc/widgetmanager.pan	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +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:
-* Declares panic codes for widgetmanager app.
-*
-*/
-
-#ifndef WIDGETMANAGER_PAN_H
-#define WIDGETMANAGER_PAN_H
-
-/** WidgetManager application panic codes */
-enum TWidgetManagerPanics
-	{
-	EWidgetManagerUi = 1
-	// add further panics here
-	};
-
-inline void Panic(TWidgetManagerPanics aReason)
-	{
-	_LIT(applicationName,"WidgetManager");
-	User::Panic(applicationName, aReason);
-	}
-
-#endif // WIDGETMANAGER_PAN_H
--- a/widgetmanager/inc/wmcommon.h	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies)..
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-
-#ifndef WMCOMMON_H
-#define WMCOMMON_H
-
-//includes
-#include <e32base.h>
-
-// widgetmanager UID
-const TUid KUidWidgetManager = { 0x200255FF };
-
-// HsContentInfo types
-_LIT8( KContentWidget, "widget" );
-_LIT8( KContentTemplate, "template" );
-
-// UI related const
-const TInt KWidgetHeight = 90;
-
-// UI component ID's
-enum TWmUiControlIds
-    {
-    EOviPortal = 0x1,
-    ELastPortal,
-    EWidgetsList,
-    EFindBox,
-    EMaximumWidgets = 0xC8
-    };
-
-#endif //WMCOMMON_H
--- a/widgetmanager/inc/wmdetailsdlg.h	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,147 +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:
-* Declares widget details dialog for WidgetManager
-*
-*/
-
-#ifndef ___WMDETAILSDLG_H__
-#define ___WMDETAILSDLG_H__
-
-// INCLUDES
-#include <e32base.h>
-#include <AknDialog.h>
-
-// FORWARD DECLARATIONS
-class CEikRichTextEditor;
-class CAknsBasicBackgroundControlContext;
-
-// CLASS DECLARATIONS
-/**
- * CWmDetailsDlg
- */
-NONSHARABLE_CLASS( CWmDetailsDlg ): public CAknDialog
-	{
-public:
-    
-    /**
-     * Two-phased constructor.
-     */
-	static CWmDetailsDlg* NewL(
-	        const TDesC& aName,
-	        const TDesC& aDescription,
-	        TBool  aCanBeAdded,
-            const CFbsBitmap* aLogoBmp,
-            const CFbsBitmap* aLogoMask,
-            CAknsBasicBackgroundControlContext* aBgContext );
-
-    /** Destructor. */
-    ~CWmDetailsDlg();
-
-public: // New functions
-    /** From CAknDialog Initializes the dialog and calls
-        CAknDialog's ExecuteLD() */
-    TInt ExecuteLD();
-
-private: // Functions from base classes
-
-	
-	/** From CEikDialog Initializes dialog before layout*/
-	void PreLayoutDynInitL();
-	
-	/** From CEikDialog Handles button events and looks 
-		if the dialog can be closed */
-	TBool OkToExitL(TInt aButtonId);
-	
-	/** From CCoeControl Handles key events */
-	TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent,TEventCode aType );
-
-	/** From CEikDialog Called by framework when dialog is activated */
-	void ActivateL();
-
-	/** From CAknDialog called to provide access to the contorols */	
-	TTypeUid::Ptr MopSupplyObject( TTypeUid aId );
-	
-	/** From CAknDialog */
-    void SetSizeAndPosition( const TSize& aSize );
-
-	/** From CCoeControl */
-	void SizeChanged();
-    
-    /** From CCoeControl */
-    TInt CountComponentControls() const;
-    CCoeControl* ComponentControl(TInt aIndex) const;
-    void Draw( const TRect& aRect ) const;
-    
-    /** Desired rect for dialog */
-    TRect WmDetailsDialogRect();
-
-    /** Insert and format content */
-    void InsertAndFormatContentL();
-    
-private:
-
-  	 /** Constructor for performing 1st stage construction */
-    CWmDetailsDlg( TBool  aCanBeAdded );
-
-    /** 2nd phase constructor */
-    void ConstructL(
-	        const TDesC& aName,
-	        const TDesC& aDescription,
-            const CFbsBitmap* aLogoBmp,
-            const CFbsBitmap* aLogoMask,
-            CAknsBasicBackgroundControlContext* aBgContext );
-
-private:
-	
-	/**
-     * Background context (not owned)
-     */
-	CAknsBasicBackgroundControlContext* iBgContext;
-	
-	/**
-     * Richtext editor
-     */
-	CEikRichTextEditor* iRtEditor;
-
-	/** 
-     * Name of widget 
-     */
-    HBufC*              iName;
-
-	/** 
-     * Description of widget 
-     */
-    HBufC*              iDescription;
-
-	/** 
-     * Logo image
-     */
-    CFbsBitmap*         iLogoBmp;
-
-	/** 
-     * Logo mask
-     */
-    CFbsBitmap*         iLogoMask;
-
-    /** 
-     * ETrue if widget can be added to HS 
-     */
-    TBool               iCanBeAdded;
-    
-	};
-
-#endif ___WMDETAILSDLG_H__
-
-// End of File
--- a/widgetmanager/inc/wmeffectmanager.h	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,111 +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:
-* CImageConverter declaration
-*
-*/
-
-#ifndef WMEFFECTMANAGER_H
-#define WMEFFECTMANAGER_H
-
-//  INCLUDES
-#include <e32base.h>
-
-class CCoeEnv;
-// CONSTANTS
-// Effects
-const TInt KAppStartCommonDefaultStyle = 3;
-const TInt KAppExitCommonDefaultStyle = 5;
-
-/**
- *  Struct which holds needed info of effect.
- */
-NONSHARABLE_STRUCT( TWmEffect )
-    {
-    TInt iState;
-    TInt iType;
-    TInt iId;
-    };
-
-/**
- *  Effect manager.
- *  Handles starting and ending effects.
- *
- *  @since S60 v5.0
- */
-NONSHARABLE_CLASS( CWmEffectManager ) : public CBase
-    {
-public:
-    /**
-     * Two-phased constructor.
-     * @return new instance of CWmEffectManager.
-     */
-    static CWmEffectManager* NewL( CCoeEnv& aCoeEnv );
-
-    /**
-     * Destructor.
-     */
-    ~CWmEffectManager();
-    
-public:
-    /**
-     * Begin handling of fullscreen effect.
-     * @param aId effect id
-     */
-    void BeginFullscreenEffectL( TInt aId );
-    
-    /**
-     * When UiRendered is called effect is ended and will be drawn
-     */
-    void UiRendered();
-    
-private:    
-    /**
-     * C++ default constructor.
-     */
-    CWmEffectManager( CCoeEnv& aCoeEnv );
-
-    /**
-     * By default Symbian 2nd phase constructor is private.
-     */
-    void ConstructL();
-    
-private:
-    /**
-     * Starts fullscreen effect.
-     * @param aEffect effect data
-     */
-    void DoBeginFullscreenEffect( TWmEffect& aEffect );
-    
-    /**
-     * Removes and destroys effect from effect list.
-     * @param aEffect effect data
-     */
-    void RemoveEffect( TWmEffect* aEffect );
-    
-private: // data
-    /**
-     * List of started effects.
-     */
-    RPointerArray<TWmEffect> iEffects;
-    
-    /**
-     * COE env
-     */
-    CCoeEnv& iCoeEnv;
-    };
-
-#endif // WMEFFECTMANAGER_H
-
-// End of file
--- a/widgetmanager/inc/wmiconfileprovider.h	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,117 +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:
-* CWmIconFileProvider declaration
-*
-*/
-
-#ifndef WMICONFILEPROVIDER_H_
-#define WMICONFILEPROVIDER_H_
-
-// INCLUDES
-#include <f32file.h>
-#include <AknIconUtils.h>
-
-// CLASS DECLARATIONS
-
-/**
-* CWmIconFileProvider
-*/
-NONSHARABLE_CLASS( CWmIconFileProvider ) : public CBase,
-                            public MAknIconFileProvider 
-    {	
-public:	
-	/**
-    * Two-phased constructor.
-    *
-    * @param aFs A handle to a file server session.
-    * @return New instance of CWmIconFileProvider.
-    */
-	static CWmIconFileProvider* NewL( RFs& aFs );	
-	
-    /**
-    * Destructor.
-    */
-	~CWmIconFileProvider();
-
-    /**
-    * @return icon file name.
-    */
-    inline const TDesC& IconFileName();
-
-    /**
-    * Setter for icon file name.
-    */
-    void SetIconFile( const TDesC& aFileName );
-        
-    
-private:
-	//from MAknIconFileProvider
-	
-    /**
-    * Returns an open file handle to the icon file.
-    * This method should leave if an icon file with specified type does
-    * not exist. That may be the case e.g. with MBM file,
-    * if there are no bitmap icons.
-    *
-    * Note! RFs::ShareProtected must be called to the RFs instance used
-    * for opening the file.
-    *
-    * @param aFile Icon file should be opened in this file handle, which
-    * is an empty file handle, when the AknIcon framework calls this method.
-    * The AknIcon framework takes care of closing the file handle after
-    * having used it.
-    * @param aType Icon file type.
-    */
-	void RetrieveIconFileHandleL( RFile& aFile, const TIconFileType aType );
-    
-    /**
-    * With this method, AknIcon framework informs that it does not use
-    * this MAknIconFileProvider instance any more. After this call,
-    * it is ok to delete the object. This can be implemented simply
-    * e.g. by deleting self in this callback.
-    * Normally, this callback is invoked when the icon in question
-    * is deleted.
-    * Note, however, that if the same MAknIconFileProvider instance is
-    * supplied in multiple CreateIcon calls, then it must be accessible
-    * by AknIcon framework until it has signalled a matching amount
-    * of these callbacks.
-    */
-    void Finished();
-    
-private:
-    /**
-    * Constructor
-    *
-    * @param aFs A handle to a file server session.
-    */
-    CWmIconFileProvider( RFs& aFs );
-    
-    /** 2nd phase constructor */
-    void ConstructL();
-    
-private: // data
-    
-    /** the file session */
-    RFs& iFs;
-    
-    /** A buffer that can contain the name of a file. */
-    TFileName iFileName;
-    
-    /** used for file session */
-    RFile iFile;
-    };
-
-#include "wmiconfileprovider.inl"
-#endif // WMICONFILEPROVIDER_H_
--- a/widgetmanager/inc/wmiconfileprovider.inl	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +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:
-* CWmIconFileProvider declaration
-*
-*/
-
-
-
-#ifndef WMICONFILEPROVIDER_INL_
-#define WMICONFILEPROVIDER_INL_
-
-
-    /**
-    * description
-    *
-    * @return description
-    */
-    inline const TDesC& CWmIconFileProvider::IconFileName()
-        { return iFileName; }
-    
-#endif /* WMICONFILEPROVIDER_INL_ */
--- a/widgetmanager/inc/wmimageconverter.h	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,239 +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:
-* CWmImageConverter declaration
-*
-*/
-
-#ifndef WMIMAGECONVERTER_H
-#define WMIMAGECONVERTER_H
-
-//includes
-#include <e32std.h>
-#include <e32base.h>
-#include <f32file.h>
-
-// Forward declarations
-class CFbsBitmap;
-class CBitmapScaler;
-class CImageDecoder;
-class TAknsItemID;
-class CWmUnitTest;
-class CWmIconFileProvider;
-
-// Class declaration
-/**
- *  MConverterObserver
- *  To notify when image is converted
- */
-NONSHARABLE_CLASS( MConverterObserver )
-    {
-    public:
-        virtual void NotifyCompletion( TInt aError ) = 0;
-    };
-
-// Class declaration
-/**
- * CWmImageConverter
- * Image converter
- */
-NONSHARABLE_CLASS ( CWmImageConverter ) : public CActive
-    {
-    /** states for this converter */
-    enum TState 
-        {
-        EIdle = 0,
-        EDecoding,
-        EScalingBitmap,
-        EScalingMask
-        };
-
-public: //contructors/destructors
-    /**
-     * Two-phased constructor.
-     * @param aObserver observer
-     */
-    static CWmImageConverter* NewL( MConverterObserver* aObserver );    
-    
-    /** Destructor */
-    ~CWmImageConverter();
-        
-public: // interface methods
-    
-    /**
-     * Parses icon string and prepares logo image.
-     * 
-     * @param aWidth wanted widht
-     * @param aHeight wanted height
-     * @param aIconStr str containing logo icon
-     * Supported values:
-     * - skin(<major id> <minor id>):mif(<path> <bitmapid> <maskid>)
-     * - mif(<path> <bitmapid> <maskid>)
-     * - uid(<application uid>)
-     * - <file name>.<png/svg>
-     */
-    void HandleIconStringL( TInt aWidth, TInt aHeight, const TDesC& aIconStr );
-
-    /**
-     * Returns converted bitmap. Caller takes ownership
-     * 
-     * @return CFbsBitmap
-     */
-    CFbsBitmap* Bitmap();
-    
-    /**
-     * Returns converted mask. Caller takes ownership
-     * 
-     * @return CFbsBitmap
-     */
-    CFbsBitmap* Mask();
-
-    /**
-     * sets the size for decoding
-     * @param aSize the logo size
-     */
-    inline void SetLogoSize( const TSize& aSize );
-
-    /** supported image conversion methods */
-    enum TConversionMethod
-        {
-        EUnrecognized, // we could not recognise the icon string
-        EUidIcon, // App.UID-coded icon
-        ESvgIcon, // Icon from SVG-file
-        ESkinIcon, // Icon from SKIN id
-        EMifIcon, // Icon from MIF file, known graphic index
-        ESkinAndMifIcon, // Icon from SKIN and MIF combination 
-        EImageIcon, // Icon from image file (jpeg or png)
-        };
-
-    /**
-     * The type of currently converted image.
-     * This method can be used to check if correct conversion was used.
-     * @return conversion method used for current image
-     */
-    TConversionMethod ConversionMethod();
-
-protected: // implementation of CActive
-    /**
-     * Implements cancellation of an outstanding request.
-     * 
-     * @see CActive::DoCancel
-     */
-    void DoCancel();
-    
-    /**
-     * Handles an active object's request completion event.
-     * 
-     * @see CActive::RunL
-     */
-    void RunL();
-    
-    /**
-     * RunError
-     * 
-     * @see CActive::RunError
-     */
-    TInt RunError(TInt aError);
-        
-private:
-    CWmImageConverter(); 
-    void ConstructL( MConverterObserver* aObserver );
-    
-private:
-
-    inline TState EngineState();
-    void ScaleBitmap( TInt aWidth, TInt aHeight );
-    void ScaleMask( TInt aWidth, TInt aHeight );
-    void CreateIconFromUidL( const TUid& aUid );
-    void CreateIconFromSvgL( const TDesC& aFileName );
-    void CreateIconFromOtherL( const TDesC& aFileName );
-    void CreateSkinOrMifIconL( 
-                    const TAknsItemID& aItemId, TInt aBitmapId, 
-                    TInt aMaskId, const TDesC& aFileName );
-    // resolvers
-    TBool ResolveUid( const TDesC& aPath, TUid& aUid );
-    TBool ResolveSkinId( const TDesC& aPath, TAknsItemID& aItemId );
-    TBool ResolveMifId( const TDesC& aPath, TInt& aBitmapId, 
-                        TInt& aMaskId, TDes& aFileName );
-    TBool ResolveSkinIdAndMifId( const TDesC& aPath, TAknsItemID& aItemId,
-                        TInt& aBitmapId, TInt& aMaskId, TDes& aFileName );
-    TBool EndsWith( const TDesC& aString, const TDesC& aPattern );
-
-private:
-    /**
-     * Converter observer (not owned)
-     */
-    MConverterObserver*     iObserver;
-
-    /**
-     * decoded image
-     */
-    CFbsBitmap*             iBitmap;
-    
-    /**
-     * decoded image mask
-     */
-    CFbsBitmap*             iMask;
-    
-    /**
-     * Icon file provider
-     */
-    CWmIconFileProvider*    iIconFileProvider;
-    
-    /**
-     * decoder from ICL API
-     */
-    CImageDecoder*          iImageDecoder;
-    
-    /**
-     * bitmap scaler
-     */
-    CBitmapScaler*          iScaler;
-    
-    /**
-     * internal state
-     */
-    TState                  iState;
-    
-    /**
-     * File name to convert
-     */
-    TFileName               iFilename;
-    
-    /**
-     * size to convert
-     */
-    TSize                   iSize;
-    
-    /**
-     * is scaling needed
-     */
-    TBool                   iScaleNeeded;
-    
-    /**
-     * File handle
-     */
-    RFs                     iFs;
-
-    /**
-     * Conversion method for current image
-     */
-    TConversionMethod       iConversionMethod;
-
-    };
-
-#include "wmimageconverter.inl"
-#endif // #ifndef WMIMAGECONVERTER_H
-
-// end of file
--- a/widgetmanager/inc/wmimageconverter.inl	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +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:
-* CWmImageConverter inline function definitions
-*
-*/
-#ifndef IMAGECONVERTER_INL_
-#define IMAGECONVERTER_INL_
-
-// ---------------------------------------------------------------------------
-// Sets logo size
-// ---------------------------------------------------------------------------
-//
-inline void CWmImageConverter::SetLogoSize( const TSize& aSize )
-    {
-    iSize = aSize;
-    };
-
-// ---------------------------------------------------------------------------
-// Returns engine state
-// ---------------------------------------------------------------------------
-//
-inline CWmImageConverter::TState CWmImageConverter::EngineState()
-    {
-    return iState;
-    };
-
-#endif /* IMAGECONVERTER_INL_ */
--- a/widgetmanager/inc/wmlistbox.h	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,422 +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:
-* Declares widget listbox for WidgetManager
-*
-*/
-
-#ifndef ___WMLISTBOX_H__
-#define ___WMLISTBOX_H__
-
-// INCLUDES
-#include <eiklbi.h>
-#include <eiktxlbx.h>
-#include <eiktxlbm.h>
-#include <eikfrlb.h>
-#include <eiktxlbm.h>
-#include <aknlists.h>
-
-#include <touchfeedback.h>
-#include <touchlogicalfeedback.h>
-#include <aknlongtapdetector.h> 
-#include "wmwidgetdataobserver.h"
-#include "wmwidgetdata.h"
-
-// FORWARD DECLARATIONS
-class CWmListBox;
-class CWmPlugin;
-class CListBoxView;
-class CFormattedCellListBoxData;
-class CAknLongTapDetector;
-class CWmListModel;
-class CWmWidgetData;
-class CAknStylusPopUpMenu;
-class MEikMenuObserver;
-
-// CLASS DECLARATIONS
-
-/**
- * CWmListItemDrawer
- */
-NONSHARABLE_CLASS( CWmListItemDrawer ): public CFormattedCellListBoxItemDrawer
-	{
-public:
-    /** Two-phased constructor. */
-	static CWmListItemDrawer* NewL(
-                CWmPlugin& aWmPlugin,
-                MTextListBoxModel* aTextListBoxModel,
-                const CFont* aFont,
-                CFormattedCellListBoxData* aFormattedCellData,
-                CWmListBox* aListBox  );
-
-    /** Destructor. */
-    ~CWmListItemDrawer();
-    
-    /** Default logo image. */
-    const CFbsBitmap* DefaultLogoImage();
-    /** Default logo mask. */
-    const CFbsBitmap* DefaultLogoMask();
-    
-public:
-
-    /**
-     * from CFormattedCellListBoxItemDrawer:
-     * draws a single list box item
-     */
-    void DrawItem(
-                TInt aItemIndex, TPoint aItemRectPos, 
-                TBool aItemIsSelected, TBool aItemIsCurrent, 
-                TBool aViewIsEmphasized, TBool aViewIsDimmed ) const;
-    
-private:
-    /** Constructor for performing 1st stage construction */
-    CWmListItemDrawer( 
-                CWmPlugin& aWmPlugin,
-                MTextListBoxModel* aTextListBoxModel,  
-                const CFont* aFont,  
-                CFormattedCellListBoxData* aFormattedCellData,
-                CWmListBox* aListBox );
-
-    /** 2nd phase constructor */
-    void ConstructL();
-
-    /**
-     * re-calculates all rects, sizes and resizes bitmaps, that are
-     * stored as members. Called from DrawItem if it is found that the
-     * draw area size has changed from previous, resulting all stored
-     * rectangles and bitmaps to invalidate.
-     * @param aSize requested size of the item being drawn.
-     */
-    void CalculateRectangles( const TSize& aSize);
-
-	/**
-	* Draws a frame rectangle for an item.
-	* @param aOutterRect outter rectangle.
-	* @param aInnerRect inner rectangle.
-	* @param aID Skin item id. 
-	*/
-	void DrawFrame(
-            const TRect& aOutterRect,
-            const TRect& aInnerRect,
-            const TAknsItemID& aID,
-			const TAknsItemID& aCenterID ) const;
-
-	/**
-	* Draws a rectangle for an item.
-	* @param aActualItemRect the rectangular area to be drawn.
-	*/
-	void DrawItemRect( const TRect& aActualItemRect ) const;
-
-private: // data members
-
-    /** 
-     * the plugin root (not owned) 
-     */
-    CWmPlugin& iWmPlugin;
-
-    /** 
-     * pointer to the list box data (not owned) 
-     */
-    CFormattedCellListBoxData* iCellData;
-
-    /** 
-     * pointer to the listbox (not owned) 
-     */
-    CWmListBox* iListBox;
-
-    /** 
-     * current font used in drawing (not owned) 
-     */
-    const CFont*    iFont;
-
-    /** 
-     * item size used in calculating all the rects and bitmaps 
-     */
-    TSize iCurrentSize;
-
-    /** 
-     * logo area (relative to item upper left corner) 
-     */
-    TRect iRelativeLogoRect;
-    
-    /** 
-     * add button area (relative to item upper left corner) 
-     */
-    TRect iRelativeAddButtonRect;
-    
-    /** 
-     * title area (relative to item upper left corner) 
-     */
-    TRect iRelativeTitleRect;
-
-    /** 
-     * add-button bitmap
-     */
-    CFbsBitmap*         iAddWidgetBtnImage;
-    
-    /** 
-     * add-button mask 
-     */
-    CFbsBitmap*         iAddWidgetBtnMask;
-    
-    /** 
-     * default logo (when widget does not have one) bitmap 
-     */
-    CFbsBitmap*         iDefaultLogoImage;
-    
-    /** 
-     * default logo (when widget does not have one) mask 
-     */
-    CFbsBitmap*         iDefaultLogoImageMask;
-    
-	};
-
-
-
-// CLASS DECLARATIONS
-/**
- * CWmListBox
- */
-NONSHARABLE_CLASS( CWmListBox ): public CAknDouble2LargeStyleListBox,
-                      public MWmWidgetDataObserver
-	{
-public:
-    
-    /**
-     * Two-phased constructor.
-     */
-	static CWmListBox* NewL(
-	        CWmPlugin& aWmPlugin,
-            const TRect& aRect,
-            const CCoeControl* aParent,  
-            TInt aFlags = 0 );
-
-    /** Destructor. */
-    ~CWmListBox();
-
-public: // API for manipulating list content
-    
-    /** Default Logo. */
-    const CFbsBitmap* DefaultLogo();
-    /** Default Logo mask. */
-    const CFbsBitmap* DefaultMask();
-
-    /** 
-     * Findbox visibility
-     * 
-     * @param aVisibility sets find pane visibility
-     */
-    inline void SetFindPaneIsVisible( TBool aVisibility );
-    
-    /** 
-     * Currently selected item index 
-     * 
-     * @return return currently selected item 
-     */
-    TInt CurrentListBoxItemIndex();
-    
-    /** 
-     * real index for listbox item if findbox is active 
-     * 
-     * @return return index from original list for currently selected item
-     */
-    TInt RealIndex( TInt aIndex );
-    
-    /** 
-     * number of items in the widget data array (also items on the list) 
-     * 
-     * @return count of widget data array
-     */
-    inline TInt WidgetDataCount();
-    
-    /** 
-     * currently selected item
-     * @return the selected item, or NULL if nothing selected
-     */
-    CWmWidgetData* WidgetData();
-    
-    /** 
-     * gets an item by index 
-     * 
-     * @param aItemIndex index for item to return
-     */
-    CWmWidgetData& WidgetData( TInt aItemIndex );
-
-    /**
-     * gets the constant widget data array
-     */
-    inline const RWidgetDataValues& WidgetDataArray();
-
-    /** 
-     * inserts widget data to the model. Takes ownership of the object.
-     * The widget data will appear to correct location in natural order:
-     * - in previously saved position, if it has been viewed before
-     *   (widget data must have a pointer to persistent widget order)
-     * - in case this is a new widget, it will appear topmost
-     * - in case there is no persistent widgets order or it is empty,
-     *   the widget is added in alphabetical order
-     * 
-     * NOTE: caller must call HandleItemAdditionL() for the listbox after
-     * adding all widget datas to update the listbox correctly!
-     * 
-     * @param aWidget Data data to add
-     */
-    void AddWidgetDataL( CWmWidgetData* aWidgetData );
-    
-    /** 
-     * removes widget data from given index in the model
-     * The method reorganises the list model and size.
-     * Drawing is still needed to update the appearance.
-     * 
-     * @param aItemIndex index to remove
-     * */
-    void RemoveWidgetData( TInt aItemIndex/*, TBool aRedraw = ETrue*/ );
-    
-    /** 
-     * requests to redraw item in given index position 
-     * 
-     * @param aItemIndex index to redraw
-     */
-    void RedrawItem( TInt aItemIndex );
-
-    /** sort order of widgets in the list */
-    enum TSortOrder
-        {
-        /** sort list as it was on last run */
-        EStoredOrder,
-        /** sort alphabetically */
-        EAlphabetical,
-        /** show latest installed first */
-        ELatestFirst
-        };
-
-    /** 
-     * sets the list sort order 
-     * 
-     * @param aOrder sort order
-     */
-    void SetSortOrderL( TSortOrder aOrder );
-    
-    /**
-     * Responds to layout switched.
-     */
-    void HandleLayoutChanged();
-	
-	/** 
-     * State of pointer down event 
-     * 
-     * @return ETrue if pointer is down
-     */
-    inline TBool PressedDown();
-
-    /**
-     * Returns size of logo 
-     * 
-     * @return Size of logo rect
-     */
-    TSize LogoSize();
-
-private: // from CEikTextListBox
-    /**
-     * Creates the item drawer.
-     * 
-     * @see CEikTextListBox::CreateItemDrawerL
-     */
-	void CreateItemDrawerL();
-	
-protected: // from base class CCoeControl
-    
-    /**
-     * Sets the control's extent, specifying a rectangle.
-     * 
-     * @see CCoeControl::SizeChanged
-     */
-    void SizeChanged();
-
-private: // from base class CCoeControl
-
-    /*
-     * Draws the control.
-     * 
-     * @see CCoeControl::Draw
-     */
-    void Draw( const TRect& aRect ) const;
-
-	/**
-	 * Handles pointer events.
-	 * 
-	 * @see CCoeControl::HandlePointerEventL
-	 */
-	void HandlePointerEventL( const TPointerEvent& aPointerEvent );
-	
-private:
-  	 /** Constructor for performing 1st stage construction */
-    CWmListBox( CWmPlugin& aWmPlugin );
-
-    /** 2nd phase constructor */
-    void ConstructL(
-            const TRect& aRect,
-            const CCoeControl* aParent,
-            TInt aFlags );
-    
-
-protected: // from MWmWidgetDataObserver
-
-    /** 
-     * widget needs redrawing 
-     * 
-     * @param aWidgetData item to redraw
-     */
-    void HandleWidgetDataChanged( CWmWidgetData* aWidgetData );
-
-private: // own methods
-
-    /** 
-     * linear order for sorting, depending on the sort type being used 
-     */
-    TLinearOrder<CWmWidgetData> SortOrder( TSortOrder aOrder );
-
-private:
-
-    /** 
-     * the plugin root (not owned) 
-     */
-    CWmPlugin&          iWmPlugin;
-
-    /** 
-     * array of widget data objects (the list model) 
-     */
-    RWidgetDataValues   iWidgetDatas;
-
-    /** 
-     * the currently active item ADD button's rectangle, for push recognition 
-     */
-    TRect               iButtonRect;
-
-    /** 
-     * state of list box find pane 
-     */
-    TBool               iFindPaneIsVisible;
-	
-	/** 
-     * state of pointer pressed down and hold 
-     */
-    TBool               iPressedDown;
-	
-	};
-#include "wmlistbox.inl"
-
-#endif ___WMLISTBOX_H__
-
-// End of File
--- a/widgetmanager/inc/wmlistbox.inl	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +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:
-* Inline function definitions for CWmListBox
-*
-*/
-
-#ifndef WMLISTBOX_INL_
-#define WMLISTBOX_INL_
-
-/** 
- * Findbox visibility
- * 
- * @param aVisibility sets find pane visibility
- */
- inline void CWmListBox::SetFindPaneIsVisible( TBool aVisibility )
-        { iFindPaneIsVisible = aVisibility; }
- 
- /** 
-  * number of items in the widget data array (also items on the list) 
-  * 
-  * @return count of widget data array
-  */
- inline TInt CWmListBox::WidgetDataCount()
-     { return iWidgetDatas.Count(); }
- 
- /**
-  * gets the constant widget data array
-  */
- inline const RWidgetDataValues& CWmListBox::WidgetDataArray()
-     { return iWidgetDatas; }
-
-/** 
-  * State of pointer down event 
-  * 
-  * @return ETrue if pointer is down
-  */
- inline TBool CWmListBox::PressedDown()
-     { return iPressedDown; }
- 
-	 
-#endif /* WMLISTBOX_INL_ */
--- a/widgetmanager/inc/wmmaincontainer.h	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,398 +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:
-* Declares main container control for Widget Manager application.
-*
-*/
-
-#ifndef WMMAINCONTAINER_H
-#define WMMAINCONTAINER_H
-
-#include <e32base.h>
-#include <e32cmn.h>
-#include <f32file.h>
-#include <coecobs.h>
-#include <coecntrl.h>
-#include <AknsUtils.h>
-#include <gulicon.h>
-#include <eiklbo.h>  // MEikListBoxObserver
-
-// FORWARD DECLARATIONS
-class CWmPlugin;
-class CWmListBox;
-class CAknsBasicBackgroundControlContext;
-class CAknViewAppUi;
-class CAknSearchField;
-class CAknButton;
-class CCoeControl;
-class CAknSearchField;
-class CWmWidgetLoaderAo;
-
-/**
- * Container class for WmMainContainer
- * 
- * @class	CWmMainContainer WmMainContainer.h
- */
-NONSHARABLE_CLASS( CWmMainContainer ) : public CCoeControl,
-                                        public MEikListBoxObserver,
-                                        public MCoeControlObserver
-	{
-public: // constructors and destructor
-	
-    /*
-     * Two-phased constructor.
-     * 
-     * @param aRect container rect
-     * @param aParent control base class 
-     * @param aCommandObserver observers respond to user commands
-     * @param aWmPlugin wm plugin
-     */
-	static CWmMainContainer* NewL( 
-		const TRect& aRect, 
-		const CCoeControl* aParent,
-		MEikCommandObserver* aCommandObserver,
-		CWmPlugin& aWmPlugin );
-
-    /*
-     * Two-phased constructor.
-     * 
-     * @param aRect container rect
-     * @param aParent control base class 
-     * @param aCommandObserver observers respond to user commands
-     * @param aWmPlugin wm plugin
-     */
-	static CWmMainContainer* NewLC( 
-		const TRect& aRect, 
-		const CCoeControl* aParent, 
-		MEikCommandObserver* aCommandObserver,
-		CWmPlugin& aWmPlugin );	
-
-	 /** Destructor */
-	virtual ~CWmMainContainer();
-	
-private:
-	CWmMainContainer( CWmPlugin& aWmPlugin );
-    
-    void ConstructL( 
-            const TRect& aRect, 
-            const CCoeControl* aParent, 
-            MEikCommandObserver* aCommandObserver );
-
-public: // new functions	
-
-    /** 
-     * @return true, if portal button is currently selected 
-     */
-    TBool PortalSelected();
-    
-    /** 
-     * @return true, if a widget in list is currently selected 
-     */
-    TBool WidgetSelected();
-    
-    /** 
-     * @return true, ADD command is possible
-     */
-    TBool CanDoAdd(); 
-    
-    /** 
-     * @return true, if UNINSTALL command is possible
-     */
-    TBool CanDoUninstall();
-    
-    /** 
-     * @return true, if LAUNCH command is possible
-     */
-    TBool CanDoLaunch();
-
-    /**
-     * @return true, if FIND command is possible
-     */
-    TBool CanDoFind();
-    
-    /**
-     * @return true, if SORT command is possible
-     */
-    TBool CanDoSort();
-    
-    /**
-     * @return true, if DETAILS command is possible
-     */
-    TBool CanDoDetails();
-    
-    /**
-     * @return true, if HELP command is possible
-     */
-    TBool CanDoHelp();
-    
-    /** 
-     * executes widget details dialog launch 
-     */
-    void LaunchDetailsDialogL();
-
-    /** 
-	 * executes widget addition to home screen 
-	 */
-	void AddWidgetToHomeScreenL();
-	
-	/** 
-	 * executes widget launch 
-	 */
-	void LaunchWidgetL();
-	
-	/** 
-	 * executes findbox activation 
-	 */
-	void ActivateFindPaneL();
-
-    /** 
-	 * executes findbox deactivation 
-	 */
-    void DeactivateFindPaneL();
-	
-    /** 
-     * sorts the widget list in alphabetical order
-     */
-    void SortListAlphabeticallyL();
-
-	/** 
-	 * executes widget uninstall 
-	 */
-	void UninstallWidgetL();
-
-    /**
-     * opens OVI portal
-     */
-    void OpenOviPortalL();
-
-    /**
-     * Selection key (middle soft key)
-     */
-    void SelectL();
-    
-    /**
-     * Show widget manager help
-     */
-    void ShowHelpL();
-
-    /** 
-     * handles situation when widget list has changed.
-     * in practice reloads the widget list from the widgets API
-     * and redraws the screen.
-     */
-	void HandleWidgetListChanged();
-
-public:
-
-    /**
-     * Handles key events.
-     * 
-     * @see CCoeControl::OfferKeyEventL
-     */
-	TKeyResponse OfferKeyEventL( 
-			const TKeyEvent& aKeyEvent, 
-			TEventCode aType );
-	
-	/**
-	 * Handles a change to the control's resources
-	 * 
-	 * @see CCoeControl::HandleResourceChange
-	 */
-	void HandleResourceChange( TInt aType );
-	
-	/**
-	 * Handles pointer events.
-	 * 
-	 * @see CCoeControl::HandlePointerEventL
-	 */
-	void HandlePointerEventL( const TPointerEvent& aPointerEvent );
-	
-	/**
-	 * returns whether adding of widget was sucessful or not 
-	 */
-	TInt ExitStatus();
-   
-	/**
-     * Sets the exit status to denote the failure or sucess of adding
-     * widget to homescreen
-     */
-	void SetExitStatus( TInt aExitStatus );
-
-	/**
-	 * Moves focus to the OVI button
-	 */
-    void SetFocusToOviButton();
-
-    /**
-     * Moves focus to the widgets list, alternatively also setting the currently
-     * selected item.
-     * @param aIndex the item in widgets list to highlight during setting focus.
-     *        By default the previously selected item will be highlighted.
-     */
-    void SetFocusToWidgetList( TInt aIndex = KErrUnknown );
-
-    /*
-     * Tells if user inputs should be handeled or not. If ret is EFalse wm 
-     * can ignore user inputs. This is becouse closing view is async and user
-     * might give some inputs before view is closed. 
-     */
-    TBool ClosingDown();
-        
-    /*
-     * To set iClosingDown. See above.
-     */
-    void SetClosingDown( TBool aClosingDown );
-    
-protected: // from base class CCoeControl
-    
-    /**
-     * Sets the control's extent, specifying a rectangle.
-     * 
-     * @see CCoeControl::SizeChanged
-     */
-    void SizeChanged();
-
-private: // from base class CCoeControl
-
-    /*
-     * Draws the control.
-     * 
-     * @see CCoeControl::Draw
-     */
-    void Draw( const TRect& aRect ) const;
-    
-    /**
-    * Suppy Mop object for control context
-    * @param TTypeUid aId
-    */
-    TTypeUid::Ptr MopSupplyObject(TTypeUid aId);
-
-private: // from MEikListBoxObserver
-
-    /**
-     * List box observer interface.
-     * 
-     * @see MEikListBoxObserver::HandleListBoxEventL
-     */
-    void HandleListBoxEventL(
-                        CEikListBox* aListBox,
-                        TListBoxEvent aEventType);
-
-private: // from MCoeControlObserver
-
-    /**
-     * Control observer interface
-     * 
-     * @see MCoeControlObserver::HandleControlEventL
-     */
-    void HandleControlEventL(CCoeControl* aControl,TCoeEvent aEventType);
-
-private: // New functions
-    
-    void AddControlL( CCoeControl* aControl, TInt aControlId );
-    void InitializeControlsL( const TRect& aRect );
-    void LayoutControlsL();
-    void StartLoadingWidgetsL();
-    void RemoveCtrlsFromStack();
-    TKeyResponse MoveFocusByKeys(
-            const TKeyEvent& aKeyEvent, 
-            TEventCode aType );
-    void UpdateFocusMode();
-    CCoeControl* FindChildControlByPoint( const TPoint& aPoint );
-    void HandleFindSizeChanged();
-
-private:
-
-    /**
-     * the plugin root
-     */
-    CWmPlugin&              iWmPlugin;
-
-    /**
-     * parent control
-     */
-    const CCoeControl*      iParent;    
-
-    /**
-     * the widgets list
-     */
-    CWmListBox*             iWidgetsList;
-
-    /**
-	 * search filed
-	 */
-    CAknSearchField* 		iFindbox;
-    
-    /**
-	 * search filed visibility switch
-	 */
-    TBool            		iFindPaneIsVisible;
-    
-    /**
-     * background
-     */
-    CAknsBasicBackgroundControlContext* iBgContext;
-    
-    /**
-     * Ovi portal
-     */
-    CAknButton*             iOviPortal;
-
-    /** GUI layout modes */
-    enum TWmLayout
-        {
-        EPortrait,
-        ELandscape,
-        ELandscapeMirrored
-        };
-
-    /**
-     * current widget manager container layout
-     */
-    TWmLayout               iLayout;
-
-    /** focus modes */
-    enum TWmFocusMode
-        {
-        ENowhere,
-        EOvi,
-        EList,
-        EFind
-        };
-
-    /**
-     * current widget manager focus mode
-     */
-    TWmFocusMode            iFocusMode;
-    
-	/**
-     * exit variable to denote sucess or failure of adding widget to hs
-     */
-    TInt                    iExitStatus;
-
-    /**
-     * AO for loading widgets into the list UI
-     */
-    CWmWidgetLoaderAo*      iWidgetLoader;
-    
-    /**
-     * If this is set to ETrue it means wmview is closing and all user inputs
-     * should be ignored.
-     */
-    TBool                   iClosingDown;
-    };
-
-#endif // WMMAINCONTAINER_H
-
-// End of File
--- a/widgetmanager/inc/wmmaincontainerview.h	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,141 +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:
-* Declares main container view for Widget Manager application.
-*
-*/
-
-#ifndef WMMAINCONTAINERVIEW_H
-#define WMMAINCONTAINERVIEW_H
-
-#include <aknview.h>
-
-
-class CWmMainContainer;
-class CWmPlugin;
-
-/**
- * Avkon view class for WmMainContainerView. It is register with the view server
- * by the AppUi. It owns the container control.
- * @class	CWmMainContainerView WmMainContainerView.h
- */						
-NONSHARABLE_CLASS( CWmMainContainerView ) : public CAknView
-	{
-
-public: // constructors and destructor
-	/**
-	 * Two-phased constructor.
-	 * 
-	 * @param aWmPlugin wm plugin
-	 */
-	static CWmMainContainerView* NewL( CWmPlugin& aWmPlugin );
-	
-    /**
-     * Two-phased constructor.
-     * 
-     * @param aWmPlugin wm plugin
-     */
-	static CWmMainContainerView* NewLC( CWmPlugin& aWmPlugin );	
-	
-	/** Destructor */
-	virtual ~CWmMainContainerView();
-
-	
-public:	// from base class CAknView
-    /**
-     * Returns views id, intended for overriding by sub classes.
-     * 
-     * @see CAknView::Id
-     */
-	TUid Id() const;
-	
-	/**
-	 * Command handling function intended for overriding by sub classes.
-	 *
-	 * @see CAknView::HandleCommandL
-	 */
-	void HandleCommandL( TInt aCommand );
-
-public:	
-	/**
-	 * Creates CWmMainContainer
-	 */
-	CWmMainContainer* CreateContainerL();
-
-private:
-    CWmMainContainerView( CWmPlugin& aWmPlugin );    
-    void ConstructL();    
-    
-protected: // from base class CAknView
-    /**
-     * Avkon view architecture system.
-     * 
-     * @see CAknView::DoActivateL
-     */
-	void DoActivateL(
-		const TVwsViewId& aPrevViewId,
-		TUid aCustomMessageId,
-		const TDesC8& aCustomMessage );
-	
-	/**
-	 * View deactivation function intended for overriding by sub classes.
-	 * 
-	 * @see CAknView::DoActivateL
-	 */
-	void DoDeactivate();
-	
-   /**
-     * Event handler for status pane size changes.
-     * 
-     * @see CAknView::HandleStatusPaneSizeChange
-     */
-	void HandleStatusPaneSizeChange();
-
-protected:	// From MEikMenuObserver
-    /*
-     * Menu observer interface.
-     * 
-     * @see MEikMenuObserver::DynInitMenuPaneL
-     */
-    void DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane);
-
-private:
-    
-    /** menu commands */
-    TBool HandleOpenMenuItemSelectedL();
-    TBool HandleAddMenuItemSelectedL();
-    TBool HandleLaunchMenuItemSelectedL();
-    TBool HandleSearchMenuItemSelectedL();
-    TBool HandleSortAlphaMenuItemSelectedL();
-    TBool HandleUninstallMenuItemSelectedL();
-    TBool HandleHelpMenuItemSelectedL();
-	TBool HandleDetailsMenuItemSelectedL();
-	TBool HandleDeactivateFindPaneL();
-	/** setup status pane */
-	void SetupStatusPaneL();
-
-private:
-    /** 
-     * the container 
-     */
-	CWmMainContainer* iWmMainContainer;
-
-	/** 
-	 * the plugin root (not owned) 
-	 */
-	CWmPlugin& iWmPlugin;
-
-	};
-
-#endif // WMMAINCONTAINERVIEW_H
--- a/widgetmanager/inc/wmpersistentwidgetorder.h	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,137 +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:
-* Defines an ordered list of widget id's with persistence capability
-*
-*/
-
-#ifndef WMPERSISTENTWIDGETORDER_H
-#define WMPERSISTENTWIDGETORDER_H
-
-// INCLUDES
-#include <e32base.h>
-#include "wmwidgetdata.h"
-
-// FORWARD DECLARATIONS
-class RFs;
-
-// CLASS DECLARATION
-/**
- *  CWmPersistentWidgetOrder
- * This class is an ordered list of widget identifiers. The list can be
- * serialised and extract from stream and persisted. The list can be used
- * in sorting a pointer array of CWmWidgetData.
- */
-NONSHARABLE_CLASS( CWmPersistentWidgetOrder ) : public CBase
-    {
-
-public: // Constructors and destructor
-    /** 
-     * static constructor.
-     */
-    static CWmPersistentWidgetOrder* NewL( RFs& aFs );
-
-    /** Destructor. */
-    ~CWmPersistentWidgetOrder();
-
-private: // private construction
-
-    /**
-     * constructor
-     */
-    CWmPersistentWidgetOrder( RFs& aFs );
-
-    /**
-     * 2nd phase constructor
-     */
-    void ConstructL();
-
-
-public: // API
-
-    /**
-     * Loads the persistent widget list from storage.
-     * This is typically done once after construction.
-     */
-    void LoadL();
-  
-    /**
-     * Stores a sorted array of WmWidgetData types as the persistent list.
-     * The instance can now be used to sort widget data.
-     * 
-     * @param aArray the array of widget daya types
-     */
-    void StoreL( const RWidgetDataValues& aArray );
-
-    /**
-     * Retrieves an index of given widget data object within the list.
-     * This index can be used to sort and organise.
-     * 
-     * @param aWidgetData data to seek index of in the sorted order
-     * @return the index found, or KErrNotFound if widget is new
-     */
-    TInt IndexOf( const CWmWidgetData& aWidgetData ) const;
-
-    /**
-     * checks if the persistent widget order is empty. In this case it does
-     * not make any sense to use the object to sort anything.
-     * Note that before loading the object is always empty.
-     */
-    TBool IsEmpty() const;
-
-protected:
-
-    /**
-     * Cleans up the array
-     */
-    void CleanupArray();
-
-    /**
-     * build the storage file path and name. The storage file will be located
-     * in host process private directory.
-     * @param aPathBuf a buffer to receive the complete file path
-     */
-    void GetStoreFileNameL( TDes& aPathBuf );
-
-    /**
-     * Unique tag of a widget
-     */
-    class Tag
-        {
-        public:
-            /** constructs a tag from parameters */
-            Tag( TInt32 aUid, HBufC16* aPublisherId );
-
-            /** compares a tag agains a widget data */
-            TBool Matches( const CWmWidgetData& aWidgetData ) const;
-
-            /** widget uid */
-            TInt32 iUid;
-
-            /** widget publisher id */
-            HBufC16* iPublisherId;
-        };
-
-private: // data members
-
-    /** the file session */
-    RFs& iFs;
-
-    /** array of widget tags for sorting */
-    RArray<Tag> iTagArray;
-
-    };
-
-
-#endif // WMPERSISTENTWIDGETORDER_H
--- a/widgetmanager/inc/wmplugin.h	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,162 +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:
-* widget manager plugin declaration
-*
-*/
-
-#ifndef __WMPLUGIN_
-#define __WMPLUGIN_
-
-//  INCLUDES
-#include <e32base.h>
-#include <vwsdef.h>
-
-#include <hscontentcontrolui.h>
-#include <hscontentcontroller.h>
-#include <hscontentinfo.h>
-
-class CAknViewAppUi;
-class CWmResourceLoader;
-class CWmMainContainerView;
-class CWmMainContainer;
-class CWmEffectManager;
-
-/**
- * CWmPlugin 
- */
-NONSHARABLE_CLASS( CWmPlugin ) : public CHsContentControlUi
-    {
-public:
-
-    /**
-     * Two-phased constructor.
-     */
-    static CWmPlugin* NewL();
-    
-    /** Destructor */
-    ~CWmPlugin();
-
-public: // From MHsContentControlUi
-
-    /** 
-     * shows the widget manager UI 
-     * 
-     * @see MHsContentControlUi::Activate
-     */
-    void Activate();
-    
-    /** 
-     * Notifies widget list changes 
-     * 
-     * @see MHsContentControlUi::NotifyWidgetListChanged
-     */
-    void NotifyWidgetListChanged();
-        
-public: // plugin services
-
-    /** 
-     * whether widget manager UI is showing 
-     * 
-     * @return return ETrue if wm UI is showed 
-     */
-    TBool IsActive();
-
-    /** 
-     * hides widget manager UI 
-     */
-    void Deactivate();
-
-    /** 
-     * main view activated. Sets the previous view ID and main container 
-     *
-     * @param aPreviousViewId
-     * @param aWmMainContainer 
-     */
-    void MainViewActivated( 
-            const TVwsViewId& aPreviousViewId,
-            CWmMainContainer* aWmMainContainer );
-
-    /** 
-     * main view was deactivated 
-     */
-    void MainViewDeactivated();
-
-    /** 
-     * the CAknViewAppUi reference
-     * 
-     * @return returns CAknViewAppUi 
-     */
-    inline CAknViewAppUi& ViewAppUi();
-
-    /** 
-     * the resource loader 
-     * 
-     * @return returns CWmResourceLoader
-     */
-    inline CWmResourceLoader& ResourceLoader();
-    
-    /** 
-     * the content controller ref
-     * 
-     * @return returns MHsContentController
-     */
-    inline MHsContentController& ContentController();
-
-    /**
-     * the shared file server reference
-     */
-    inline RFs& FileServer();
-
-private: // Construction
-    CWmPlugin();
-    void ConstructL();
-
-private: // data members
-
-    /**
-     * the host application view app UI (not owned)
-     */
-    CAknViewAppUi*  iViewAppUi;
-
-    /**
-     * main container (not owned)
-     */
-    CWmMainContainer*  iWmMainContainer;
-    
-    /**
-     * resource loader
-     */
-    CWmResourceLoader* iResourceLoader;
-
-    /**
-     * previous view ID (shown when main view closed)
-     */
-    TVwsViewId iPreviousViewUid;
-	
-    /**
-     * Takes care of fancy UI effects
-     */    
-    CWmEffectManager* iEffectManager;
-    
-    /**
-     * The file server session
-     */
-    RFs* iFs;
-
-    };
-
-#include "wmplugin.inl"
-#endif // __WMPLUGIN_
-
--- a/widgetmanager/inc/wmplugin.inl	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies)..
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-* widget manager plugin inline defintions
-*
-*/
-
-#ifndef WMPLUGIN_INL_
-#define WMPLUGIN_INL_
-
-    /** 
-     * the CAknViewAppUi reference
-     * 
-     * @return returns CAknViewAppUi 
-     */
-    inline CAknViewAppUi& CWmPlugin::ViewAppUi()
-        { return *iViewAppUi; }
-    
-    /** 
-     * the resource loader 
-     * 
-     * @return returns CWmResourceLoader
-     */
-    inline CWmResourceLoader& CWmPlugin::ResourceLoader()
-        { return *iResourceLoader; }
-    
-    /** 
-     * the content controller ref
-     * 
-     * @return returns MHsContentController
-     */
-    inline MHsContentController& CWmPlugin::ContentController()
-        { return *iHsContentController; }
-
-    /**
-     * the shared file server reference
-     */
-    inline RFs& CWmPlugin::FileServer()
-        { return *iFs; }
-    
-    
-
-#endif /* WMPLUGIN_INL_ */
--- a/widgetmanager/inc/wmresourceloader.h	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,133 +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:
-* loads widget manager resources and icons
-*
-*/
-
-
-#ifndef WMRESOURCELOADER_H_
-#define WMRESOURCELOADER_H_
-
-// INCLUDE FILES
-#include <e32base.h>
-
-// FORWARD DECLARATIONS
-class CAknStylusPopUpMenu;
-class CEikonEnv;
-class CAknButton;
-class CAknInformationNote;
-
-/**
- * CWmResourceLoader
- */
-NONSHARABLE_CLASS( CWmResourceLoader ) : public CBase
-    {
-
-public: // construction/destruction
-	/** 
-	 * static constructor 
-	 * 
-	 * @param aCoeEnv Control environment.
-	 */
-	static CWmResourceLoader* NewL(
-	        CEikonEnv& aEnv );
-	
-	/** destructor */
-	~CWmResourceLoader();
-
-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
-     */
-    void InfoPopupL( TInt aResourceId, const TDesC& aString );
-
-    /**
-     * shows a standard error popup
-     * @param aErrorCode a system-wide standard error code 
-     */
-    void ErrorPopup( TInt aErrorCode );
-
-    /** icon file path */
-    const TDesC& IconFilePath();
-
-    /** default no description text */
-    const TDesC& NoDescriptionText();
-    
-private: // internal methods
-
-    /** constructor */
-    CWmResourceLoader(
-            CEikonEnv& aEnv );
-    
-    /** 2nd phase constructor */
-    void ConstructL();
-
-    /** load the resource */
-    void LoadResourcesL();
-
-    /** free resources */
-    void UnloadResources();
-
-    /** find icon file path */
-    void DetermineIconFilePath();
-
-private: // members
-    
-    /**
-     * the environment
-     */
-    CEikonEnv&    iEnv;
-
-    /**
-     * name of this DLL
-     */
-    TFileName   iDllName;
-
-    /**
-     * resource file offset
-     */
-    TInt        iResourceFileOffset;
-
-    /**
-     * ICON file
-     */
-    TFileName   iMifFile;
-    
-    /**
-     * info note dialog
-     */
-    CAknInformationNote *iNote;
-
-    /**
-     * Default description text
-     */    
-    HBufC*      iDescription;
-    };
-
-#endif // WMRESOURCELOADER_H_
--- a/widgetmanager/inc/wmwidgetdata.h	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,252 +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:
-* CWmWidgetData declaration
-*
-*/
-
-
-#ifndef WMWIDGETDATA_H
-#define WMWIDGETDATA_H
-
-// INCLUDES
-#include <e32std.h>
-#include <e32base.h>
-#include <f32file.h>
-#include <bamdesca.h>
-#include <hscontentinfo.h>
-
-#include "wmimageconverter.h"
-
-// FORWARD DECLARATIONS
-class CDictionaryFileStore;
-class MWmWidgetDataObserver;
-class CFbsBitmap;
-class CHsContentInfo;
-class CWmPersistentWidgetOrder;
-class RWidgetRegistryClientSession;
-
-// CLASS DECLARATION
-/**
- * CWmWidgetData is a representation of a widget in CWmListBox. it
- * stores all data required for drawing the item in a list box, and
- * handling the list item.
- */
-NONSHARABLE_CLASS( CWmWidgetData )
-    : public CBase
-    , public MConverterObserver
-    {
-
-public: // types
-
-    /** widget type */
-    enum TWidgetType
-            {
-            EUnknown,
-            ENative,
-            ECps // wrt widgets included in this category
-            };
-
-public: // construction
-    /**
-     * Two-phased constructor.
-     * @param aHsContentInfo
-     * @param aRegistryClientSession  
-     */
-    static CWmWidgetData* NewL( 
-            CHsContentInfo& aHsContentInfo,
-            RWidgetRegistryClientSession* aRegistryClientSession );
-
-    /**
-     * Two-phased constructor.
-     * @param aHsContentInfo
-     * @param aRegistryClientSession  
-     */
-    static CWmWidgetData* NewLC( 
-            CHsContentInfo& aHsContentInfo,
-            RWidgetRegistryClientSession* aRegistryClientSession );
-        
-    /** Destructor. */
-    ~CWmWidgetData();
-
-private: // private construction
-    /** Constructor for performing 1st stage construction */
-    CWmWidgetData();
-
-    /** 2nd phase constructor */
-    void ConstructL( 
-            CHsContentInfo& aHsContentInfo,
-            RWidgetRegistryClientSession* aRegistryClientSession );
-     
-public: // external handles
-
-    /** 
-     * sets an observer for callbacks 
-     *
-     * @param aObserver notifications when changes occur in widget data
-     */
-    void SetObserver( MWmWidgetDataObserver* aObserver );
-
-    /**
-     * persistent widget order handle, which is used in comparing
-     */
-    void SetPersistentWidgetOrder(
-            const CWmPersistentWidgetOrder* aPersistentWidgetOrder );
-    
-    /**
-     * set logo rect size
-     */
-    void SetLogoSize( const TSize& aSize );
-
-    /**
-     * Init logo re-creation
-     */
-    void ReCreateLogo( const TSize& aSize );
-    
-public: // comparing / sorting
-    /** whether this object represents the same widget as aContentInfo */
-    TBool EqualsTo( CHsContentInfo& aContentInfo );
-    
-    /** comparator function for sort by name (compare two names)*/    
-    static TInt CompareByName(
-                        const CWmWidgetData& aDataOne,
-                        const CWmWidgetData& aDataTwo );
-
-    /**
-     * comparator function for sorting by stored order
-     **/
-    static TInt CompareByPersistentWidgetOrder(
-            const CWmWidgetData& aDataOne,
-            const CWmWidgetData& aDataTwo );
-
-public: // methods to read the content
-    
-    /** the HsContent info */
-    inline CHsContentInfo& HsContentInfo();
-
-    /** the HsContent info */
-    inline const CHsContentInfo& HsContentInfo() const;
-
-    /** widget name */
-    inline const TDesC& Name() const;
-
-    /** widget description */
-    inline const TDesC& Description() const;
-
-    /** widget uid */
-    inline TUid Uid() const;
-    
-    /** cps widget publisher id */
-    inline const TDesC& PublisherId() const;
-    
-    /** cps widget publisher uid */
-    TUid PublisherUid();
-    
-    /** widget type */
-    inline TWidgetType WidgetType() const;
-
-    /** running install animation index */
-    inline TInt InstallAnimationIndex() const;
-
-    /** the logo bitmap */
-    inline const CFbsBitmap* LogoImage();
-
-    /** the logo bitmap */
-    inline const CFbsBitmap* LogoImageMask();
-
-    /** whether the widget data is valid or not */
-    inline TBool IsValid();
-    
-    /** sets the widget data validity */
-    inline void SetValid( TBool aValid );
-    
-protected: // from MConverterObserver
-
-    /** image conversin completed */
-    void NotifyCompletion( TInt aError );
-
-private: // new functions
-
-    /** fetches publisher uid from widget registry*/
-    void FetchPublisherUidL( 
-            RWidgetRegistryClientSession* aRegistryClientSession );
-
-    /** Converts uid to TUid from TDesC8 */
-    TUid UidFromString( const TDesC8& aUidString ) const;
-    
-    /** Logo icon string handling */
-    static TInt HandleAsyncIconString( TAny* aPtr );
-    void HandleIconStringL( const TDesC& aIconStr );
-    void FireDataChanged();
-
-private: // data members
-    
-    /* instance of the CIdle class for async iconStr handling*/
-    CIdle*              iIdle;
-
-    /* the image converter utility */
-    CWmImageConverter*    iImageConverter;
-
-    /* observes this widget representation (NOT OWNED) */
-    MWmWidgetDataObserver* iObserver;
-
-    /* rotating animation index */
-    TInt                iInstallAnimationIndex;
-
-    /** the widget logo bitmap */
-    CFbsBitmap*         iLogoImage;
-
-    /** the widget logo mask */
-    CFbsBitmap*         iLogoImageMask;
-    
-    /** The CHsContentInfo that corresponds to this list row */
-    CHsContentInfo*     iHsContentInfo;
-
-    /** type oif the widget */
-    TWidgetType         iWidgetType;
-
-    /** persistent order of widgets (used in sorting) */
-    const CWmPersistentWidgetOrder* iPersistentWidgetOrder;
-
-    /** wrt widget publisher uid */
-    TUid                iPublisherUid;
-    
-    /** size of logo rect in list item */
-    TSize               iLogoSize;
-    
-    /** validity of the widget - used during list refresh */
-    TBool               iValid;
-    
-    };
-
-
-/**
- * Pointer array of widget data objects.
- * Also acts as an adapter to a descriptor array, providing the
- * widget names as descriptor array elements.
- */
-NONSHARABLE_CLASS( RWidgetDataValues ) : public RPointerArray<CWmWidgetData>,
-    public MDesCArray
-    {
-    protected: // from MDesCArray
-        /** returns number of items in the pointer array */
-        inline TInt MdcaCount() const;
-
-        /** returns the pointed widget name */
-        inline TPtrC16 MdcaPoint(TInt aIndex) const;
-
-    };
-
-#include "wmwidgetdata.inl"
-#endif // WMWIDGETDATA_H
--- a/widgetmanager/inc/wmwidgetdata.inl	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,85 +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:
-* CWmWidgetData , RWidgetDataValues inline function definitions
-*
-*/
-
-#ifndef WMWIDGETDATA_INL_
-#define WMWIDGETDATA_INL_
-
-    /** the HsContent info */
-    inline CHsContentInfo& CWmWidgetData::HsContentInfo()
-        { return *iHsContentInfo; }
-
-    /** the HsContent info */
-    inline const CHsContentInfo& CWmWidgetData::HsContentInfo() const
-        { return *iHsContentInfo; }
-
-    /** widget name */
-    inline const TDesC& CWmWidgetData::Name() const
-        { return iHsContentInfo->Name(); }
-
-    /** widget description */
-    inline const TDesC& CWmWidgetData::Description() const
-        { return iHsContentInfo->Description(); }
-
-    /** widget uid */
-    inline TUid CWmWidgetData::Uid() const
-        { return UidFromString( iHsContentInfo->Uid() ); };
-    
-    /** cps widget publisher id */
-    inline const TDesC& CWmWidgetData::PublisherId() const
-        { return iHsContentInfo->PublisherId(); }
-    
-    /** widget type */
-    inline CWmWidgetData::TWidgetType CWmWidgetData::WidgetType() const
-        { return iWidgetType; }
-
-    /** running install animation index */
-    inline TInt CWmWidgetData::InstallAnimationIndex() const
-        { return iInstallAnimationIndex; }
-
-    /** the logo bitmap */
-    inline const CFbsBitmap* CWmWidgetData::LogoImage()
-        { return iLogoImage; }
-
-    /** the logo bitmap */
-    inline const CFbsBitmap* CWmWidgetData::LogoImageMask()
-        { return iLogoImageMask; }
-  
-    /** whether the widget data is valid or not */
-    inline TBool CWmWidgetData::IsValid()
-        { return iValid; }
-    
-    /** sets the widget data validity */
-    inline void CWmWidgetData::SetValid( TBool aValid )
-        { iValid = aValid; }
-    
-    
-    //From  RWidgetDataValues
-    
-    /** returns number of items in the pointer array */
-    inline TInt RWidgetDataValues::MdcaCount() const
-        {
-        return Count();
-        }
-    /** returns the pointed widget name */
-    inline TPtrC16 RWidgetDataValues::MdcaPoint(TInt aIndex) const
-        {
-        const TPtrC16 ptr( (*this)[aIndex]->Name() );
-        return ptr;
-        }
-
-#endif /* WMWIDGETDATA_INL_ */
--- a/widgetmanager/inc/wmwidgetdataobserver.h	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +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:
-* Observer for changes in the widget data
-*
-*/
-
-
-#ifndef WMWIDGETDATAOBSERVER_H
-#define WMWIDGETDATAOBSERVER_H
-
-// INCLUDES
-#include <e32std.h>
-
-// Forward declarations
-class CWmWidgetData;
-
-// CLASS DECLARATION
-
-/**
- * Observer class for receiving notifications
- * when changes occur in widget data
- */
-NONSHARABLE_CLASS( MWmWidgetDataObserver )
-    {
-    public:
-        /**
-         * A single widget data has changed.
-         * @param aWidgetData pointer to the data where change
-         *        has occurred
-         */
-        virtual void HandleWidgetDataChanged(
-                            CWmWidgetData* aWidgetData ) = 0;
-
-    };
-
-#endif // WMWIDGETDATAOBSERVER_H
--- a/widgetmanager/inc/wmwidgetloaderao.h	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,125 +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:
-* CWmIconFileProvider declaration
-*
-*/
-
-#ifndef WMWIDGETLOADERAO_H_
-#define WMWIDGETLOADERAO_H_
-
-// INCLUDES
-#include <e32base.h>
-
-// FORWARD DECLARATIONS
-class CWmPlugin;
-class CWmListBox;
-class CHsContentInfo;
-class CWmWidgetData;
-class CWmPersistentWidgetOrder;
-class RWidgetRegistryClientSession;
-
-// CLASS DECLARATIONS
-
-/**
- * CWmWidgetLoaderAo
- */
-NONSHARABLE_CLASS( CWmWidgetLoaderAo ) : public CAsyncOneShot
-    {
-    
-public:
-	/**
-     * Static constructor
-     */
-	static CWmWidgetLoaderAo* NewL(
-	        CWmPlugin& aWmPlugin,
-	        CWmListBox& aTargetList );
-	
-    /**
-     * Destructor.
-     */
-	~CWmWidgetLoaderAo();
-
-    /**
-     * Starts the load process by activating the AO
-     */
-    void StartLoading();
-    
-private:
-    
-    /**
-     * Constructor
-     */
-    CWmWidgetLoaderAo(
-            CWmPlugin& aWmPlugin,
-            CWmListBox& aTargetList );
-    
-    /**
-     * 2nd phase constructor
-     */
-    void ConstructL();
-
-protected: // from CActive
-    
-    /**
-     * AO body
-     */
-    void RunL();
-
-    /**
-     * AO error handler
-     */
-    TInt RunError( TInt aError );
-
-private:
-
-    /**
-     * loads widgets into the listbox
-     */
-    void DoLoadWidgetsL();
-
-    /**
-     * finds a widget data entry from iWidgetsList that matches
-     * given content info. returns a pointer to the data found,
-     * or NULL if not found
-     */
-    CWmWidgetData* FindWidgetData( CHsContentInfo& aContentInfo );
-    
-    /**
-     * adds a widget data entry to iWidgetsList
-     */
-    void AddWidgetDataL( CHsContentInfo& aContentInfo );
-    
-    /**
-     * cleanup resources allocated runing one single run
-     */
-    void Cleanup();
-    
-private: // data
-
-    /** reference to the widget manager root */
-    CWmPlugin& iWmPlugin;
-
-    /** target where widgets are to be loaded */
-    CWmListBox& iWidgetsList;
-    
-    /** widget registry */
-    RWidgetRegistryClientSession* iWidgetRegistry;
-    
-    /** persistent widget order */
-    CWmPersistentWidgetOrder* iWidgetOrder;
-    
-    };
-
-#endif // WMWIDGETLOADERAO_H_
--- a/widgetmanager/rom/widgetmanager.iby	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +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:
-* widgetmanager binaries
-*/
-
-#ifndef WIDGETMANAGER_IBY
-#define WIDGETMANAGER_IBY
-
-// widgetmanager plugin
-ECOM_PLUGIN( widgetmanager.dll, widgetmanager.rsc )
-
-// widgetmanager icons
-data=DATAZ_\resource\apps\widgetmanager.mif	\resource\apps\widgetmanager.mif
-
-// widgetmanager stub sis
-data=ZSYSTEM\install\widgetmanager_stub.sis system\install\widgetmanager_stub.sis
-
-#endif // WIDGETMANAGER_IBY
-
--- a/widgetmanager/rom/widgetmanager_resources.iby	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +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:
-* widgetmanager resource binaries
-*/
-
-#ifndef WIDGETMANAGER_RESOURCES_IBY
-#define WIDGETMANAGER_RESOURCES_IBY
-
-// widgetmanager resources
-data=DATAZ_\resource\widgetmanagerview.rsc  \resource\widgetmanagerview.rsc
-
-#endif // WIDGETMANAGER_RESOURCES_IBY
-
--- a/widgetmanager/sis/Create_update_sisx.bat	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-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
-
-rem Change dll versions for IAD update
-call elftran.exe -version 1.2 \epoc32\release\armv5\urel\widgetmanager.dll
-call elftran.exe -version 1.2 \epoc32\release\armv5\udeb\widgetmanager.dll
-
-rem Create wm sis&sisx files
-makesis widgetmanager_udeb.pkg
-signsis widgetmanager_udeb.SIS widgetmanager_udeb.SISX Nokia_RnDCert_02.der Nokia_RnDCert_02.key
-makesis widgetmanager_urel.pkg
-signsis widgetmanager_urel.SIS widgetmanager_urel.SISX Nokia_RnDCert_02.der Nokia_RnDCert_02.key
-
-rem Create wm stubsis file
-makesis -s widgetmanager_stub.pkg
\ No newline at end of file
Binary file widgetmanager/sis/Nokia_RnDCert_02.der has changed
--- a/widgetmanager/sis/Nokia_RnDCert_02.key	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIICXQIBAAKBgQC/TDP7KKIaf5+uW4OD2iVZuUMC2a+SeQTjf6srlKcOm+CpPNXn
-uLNm/8fdEnyOIuRXPRKmqhs1n0JkxEGHynELWMTuKXbQx9SRAGUXzyneGn+IJNnO
-vOKHWgKCouX2hfI8rtkdqJpqmO460gGsMgw+lsbeyWyW9lnfLxq+ZC7sqQIDAQAB
-AoGBALmUWZE8GBaQ3P4u9WUCSd3DJkkrmXIFSULSZeH/chlwCwDjbbhArHothVzo
-REE3hEFFlERvHbplZ+mNouzy7boduvgUzbksGrbGMLJ2qO1GzWWVwV+GzOWKd3ss
-/98Gwoy5R8pjnkqUE2wP1iJFw0FjvUTKcYv/z6t3LLJ0CsoBAkEA+c7ixvsviQ3J
-s0INytCKU2bf8fqFQJi1VI82ukxNsujGTQ9upVSjuvqPvWyDvvTdrUBHqO+3qPut
-sEh01Q8aiQJBAMQKDJPVRu4ud3mwUfEavzL5EjqwG1k9VCNGYsT4FwtrHcxu1oP/
-pk6M3rIZukqomoEEnHWPMwhrK3fhBqi0OSECQQDr40VXege4FnH5OI2Hj4afHMyp
-VdQQXGMWFyopnzXblFz0lXb43cTCIiorR9XcMqNFHybLypkWE5o+lRzlt55pAkBQ
-P/zeF5Sts//cpL0mgdh7OVKpC6ZmZaCnwAx2rUhhuDu+kDDoYCLoTOps5fNI1LRK
-1GRoC3LMo3Jr5IYhUYWBAkBpCpN6k4JU/mszq98EojHerQNxk8sPqvQKUzTutohT
-1gLX9yepGayB/TtT2EEJDkWOlnTy/dvN6W3vzbJYz97x
------END RSA PRIVATE KEY-----
--- a/widgetmanager/sis/backup_registration.xml	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-<?xml version="1.0" standalone="yes"?>
-<backup_registration>
-  <system_backup/>
-  <restore requires_reboot = "no"/>
-</backup_registration>
--- a/widgetmanager/sis/widgetmanager_stub.pkg	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +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: widgetmanager_stub.pkg
-;
-
-;Language - standard language definitions
-&EN
-
-; standard SIS file header
-#{"Widget Manager"},(0x20026F53),1,0,0,TYPE=SA
-
-;Localized Vendor name
-%{"Nokia"}
-
-;Unique Vendor name
-:"Nokia"
-
Binary file widgetmanager/sis/widgetmanager_stub.sis has changed
--- a/widgetmanager/sis/widgetmanager_udeb.pkg	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +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: widgetmanager.pkg
-;
-
-;Language - standard language definitions
-&EN
-
-; standard SIS file header
-#{"Widget Manager"},(0x20026F53),1,2,2,TYPE=SA,RU
-
-;Localised Vendor name
-%{"Nokia"}
-
-;Unique Vendor name
-:"Nokia"
-
-;Supports Series 60 v 5.0
-[0x1028315F], 0, 0, 0, {"S60ProductID"}
-
-;We need to force update to be installed to c-drive
-;becouse we are part of the homescreen. If update was installed to memcard
-;homescreen will be closed when memcard is removed.
-
-; widgetmanager plugin and plugin resource
-"\epoc32\release\armv5\udeb\widgetmanager.dll"          -"C:\sys\bin\widgetmanager.dll"
-"\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"
-
-; widgetmanager icons
-"\epoc32\data\z\resource\apps\widgetmanager.mif"        -"C:\resource\apps\widgetmanager.mif"
-
--- a/widgetmanager/sis/widgetmanager_urel.pkg	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +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: widgetmanager.pkg
-;
-
-;Language - standard language definitions
-&EN
-
-; standard SIS file header
-#{"Widget Manager"},(0x20026F53),1,2,2,TYPE=SA,RU
-
-;Localised Vendor name
-%{"Nokia"}
-
-;Unique Vendor name
-:"Nokia"
-
-;Supports Series 60 v 5.0
-[0x1028315F], 0, 0, 0, {"S60ProductID"}
-
-;We need to force update to be installed to c-drive
-;becouse we are part of the homescreen. If update was installed to memcard
-;homescreen will be closed when memcard is removed.
-
-; widgetmanager plugin and plugin resource
-"\epoc32\release\armv5\urel\widgetmanager.dll"          -"C:\sys\bin\widgetmanager.dll"
-"\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"
-
-; widgetmanager icons
-"\epoc32\data\z\resource\apps\widgetmanager.mif"        -"C:\resource\apps\widgetmanager.mif"
-
--- a/widgetmanager/src/wmdetailsdlg.cpp	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,525 +0,0 @@
-/*
-* 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:
-* Implementation of the widget details dlg for WidgetManager
-*
-*/
-
-// INCLUDE FILES
-#include <gdi.h>
-#include <eikrted.h> // for CRichTextEditor
-#include <txtrich.h> // for CRichText
-#include <AknUtils.h> // for AknUtils
-#include <AknsUtils.h> // MAknsSkinInstance
-#include <AknsDrawUtils.h> // AknsDrawUtils
-#include <applayout.cdl.h> //layout
-#include <layoutmetadata.cdl.h>
-#include <aknlayoutscalable_avkon.cdl.h>
-#include <aknlayoutscalable_apps.cdl.h>
-#include <AknsBasicBackgroundControlContext.h>
-
-#include <widgetmanagerview.rsg>
-#include "widgetmanager.hrh"
-#include "wmdetailsdlg.h"
-
-
-// CONSTANTS
-
-
-// MEMBER FUNCTIONS
-
-// ---------------------------------------------------------
-// FullScreenRect
-// rectangle representing the screen
-// ---------------------------------------------------------
-//
-TRect FullScreenRect()
-    {
-    TRect screen;
-    CCoeEnv* env = CCoeEnv::Static();
-    if ( env )
-        {
-        CWsScreenDevice* screenDevice = env->ScreenDevice();
-        if ( screenDevice )
-            screen.SetRect( TPoint(0,0), screenDevice->SizeInPixels() );
-        }
-    return screen;
-    }
-
-// ---------------------------------------------------------
-// CWmDetailsDlg::NewL
-// ---------------------------------------------------------
-//
-CWmDetailsDlg* CWmDetailsDlg::NewL(
-			const TDesC& aName,
-	        const TDesC& aDescription,
-	        TBool  aCanBeAdded,
-            const CFbsBitmap* aLogoBmp,
-            const CFbsBitmap* aLogoMask,
-            CAknsBasicBackgroundControlContext* aBgContext )
-    {
-    CWmDetailsDlg* self = new ( ELeave ) CWmDetailsDlg( aCanBeAdded );
-    CleanupStack::PushL( self );
-    self->ConstructL( aName, aDescription, aLogoBmp, aLogoMask, aBgContext );
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// ---------------------------------------------------------
-// CWmDetailsDlg::CWmDetailsDlg
-// ---------------------------------------------------------
-//
-CWmDetailsDlg::CWmDetailsDlg( TBool  aCanBeAdded )
-    : CAknDialog(),
-    iCanBeAdded( aCanBeAdded )
-    {
-    iBorder = TGulBorder::ERaisedControl;
-    }
-
-// ---------------------------------------------------------
-// CWmDetailsDlg::~CWmDetailsDlg
-// ---------------------------------------------------------
-//
-CWmDetailsDlg::~CWmDetailsDlg()
-    {
-    iEikonEnv->RemoveFromStack( iRtEditor );
-    iEikonEnv->RemoveFromStack( this );
-    delete iRtEditor;
-    delete iName;
-    delete iDescription;
-    delete iLogoBmp;
-    delete iLogoMask;	
-    }
-
-// -----------------------------------------------------------------------------
-// CWmDetailsDlg::ExecuteLD
-// -----------------------------------------------------------------------------
-//
-TInt CWmDetailsDlg::ExecuteLD()
-    {
-    if ( iCanBeAdded )
-        {
-        return CAknDialog::ExecuteLD( R_WM_DETAILS_ADD_DIALOG );
-        }
-    else
-        {
-        return CAknDialog::ExecuteLD( R_WM_DETAILS_ONLY_DIALOG );
-        }
-    }
-
-// ---------------------------------------------------------
-// CWmDetailsDlg::ConstructL
-// ---------------------------------------------------------
-//
-void CWmDetailsDlg::ConstructL(
-			const TDesC& aName,
-	        const TDesC& aDescription,
-            const CFbsBitmap* aLogoBmp,
-            const CFbsBitmap* aLogoMask,
-            CAknsBasicBackgroundControlContext* aBgContext )
-    {
-    if ( !aLogoBmp )
-        {
-        User::Leave( KErrArgument );
-        }
- 
-	CAknDialog::ConstructL( R_AVKON_DIALOG_EMPTY_MENUBAR );
-    
-	iBgContext = aBgContext;
-	iName = aName.AllocL();
-	iDescription = aDescription.AllocL();
-	
-	// create bitmap and duplicate handle
-	iLogoBmp = new ( ELeave ) CFbsBitmap;
-    TSize newSize = TSize( aLogoBmp->SizeInPixels().iWidth ,
-                           aLogoBmp->SizeInPixels().iHeight );
-    User::LeaveIfError( iLogoBmp->Create( newSize, aLogoBmp->DisplayMode() ) );    
-    User::LeaveIfError( iLogoBmp->Duplicate( aLogoBmp->Handle() ) );
-	
-    if ( aLogoMask )
-        {
-        iLogoMask = new ( ELeave ) CFbsBitmap;
-        newSize = TSize( aLogoMask->SizeInPixels().iWidth ,
-                         aLogoMask->SizeInPixels().iHeight );
-        User::LeaveIfError( iLogoMask->Create( newSize, aLogoMask->DisplayMode() ) );    
-        User::LeaveIfError( iLogoMask->Duplicate( aLogoMask->Handle() ) );
-        }
-
-    iEikonEnv->AddWindowShadow( static_cast<CCoeControl*>(this) );
-    }
-
-// -----------------------------------------------------------------------------
-// CWmDetailsDlg::OkToExitL
-// -----------------------------------------------------------------------------
-//
-TBool CWmDetailsDlg::OkToExitL( TInt aButtonId )
-	{
-    if ( aButtonId == ECbaAddToHs ||
-		aButtonId == EAknSoftkeyClose )
-        {
-        // Close dlg
-        return ETrue;
-        }
-    return EFalse;
-	}
-
-// -----------------------------------------------------------------------------
-// CWmDetailsDlg::PreLayoutDynInitL
-// -----------------------------------------------------------------------------
-//
-void CWmDetailsDlg::PreLayoutDynInitL()
-    {
-    iRtEditor = new(ELeave) CEikRichTextEditor();
-    iRtEditor->ConstructL( this, 
-                        0, 
-                        0, 
-                        CEikEdwin::EReadOnly | 
-                        CEikEdwin::ENoAutoSelection | 
-                        CEikEdwin::EAvkonDisableCursor |
-                        CEikEdwin::EDisplayOnly );
-    iRtEditor->SetContainerWindowL(*this);
-    iRtEditor->SetAknEditorFlags( 
-                    EAknEditorFlagEnableScrollBars | 
-                    EEikEdwinAvkonDisableCursor |
-                    EEikEdwinDisplayOnly |
-                    EEikEdwinReadOnly );
-
-    iRtEditor->SetSkinBackgroundControlContextL( iBgContext );
-    
-    CEikScrollBarFrame* scrollBarFrame = iRtEditor->CreateScrollBarFrameL();
-    scrollBarFrame->SetScrollBarVisibilityL( CEikScrollBarFrame::EOff,
-                                             CEikScrollBarFrame::EOff );
-    
-    InsertAndFormatContentL();
-    iRtEditor->UpdateScrollBarsL();
-    }
-
-//------------------------------------------------------------------------------
-// CWmDetailsDlg::InsertAndFormatContentL
-//------------------------------------------------------------------------------
-//
-void CWmDetailsDlg::InsertAndFormatContentL()
-    {
-    CRichText* richText = iRtEditor->RichText();
-    const TInt KMinTxtLength = 100;
-    
-    richText->Reset();
-    if ( iDescription->Des().Length() <= KMinTxtLength )
-        {     
-        richText->InsertL( richText->DocumentLength(),
-                CEditableText::ELineBreak );
-        }
-    richText->InsertL( richText->DocumentLength(), *iDescription );
-
-    // change the color of the text according to the skin color
-    TRgb color = KRgbBlack;
-    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
-    AknsUtils::GetCachedColor(skin, color, KAknsIIDQsnTextColors, 
-                                                    EAknsCIQsnTextColorsCG6 );
-
-    // Format text 
-    iRtEditor->SetSelectionL( 0, richText->DocumentLength() );
-
-    // Get a logical font to base my font on:
-    const CFont* logicalFont = AknLayoutUtils::FontFromId(EAknLogicalFontPrimarySmallFont);
-    // Extract font information
-    TFontSpec fontspec = logicalFont->FontSpecInTwips();
-    TCharFormat charFormat(fontspec.iTypeface.iName, fontspec.iHeight);
-    TCharFormatMask charFormatMask;
-    CParaFormat paraFormat;
-    TParaFormatMask paraFormatMask;
-    paraFormat.iHorizontalAlignment = CParaFormat::EJustifiedAlign;
-    charFormat.iFontPresentation.iTextColor = color;
-    paraFormatMask.SetAttrib(EAttAlignment);
-    charFormatMask.SetAttrib(EAttFontTypeface);
-    charFormatMask.SetAttrib(EAttFontHeight);
-    charFormatMask.SetAttrib(EAttColor);
-    iRtEditor->ApplyParaFormatL(&paraFormat, paraFormatMask);
-    iRtEditor->ApplyCharFormatL(charFormat, charFormatMask);
-    iRtEditor->ClearSelectionL();
-    }
-
-//------------------------------------------------------------------------------
-// CWmDetailsDlg::CountComponentControls
-//------------------------------------------------------------------------------
-//
-TInt CWmDetailsDlg::CountComponentControls() const
-    {
-    return iRtEditor ? 1 : 0;
-    }
-
-//------------------------------------------------------------------------------
-// CWmDetailsDlg::ComponentControl
-//------------------------------------------------------------------------------
-//
-CCoeControl* CWmDetailsDlg::ComponentControl(TInt aIndex) const
-    {
-    switch (aIndex)
-        {
-        case 0:
-            return iRtEditor;
-        default:
-            return NULL;
-        }
-    }
-
-//------------------------------------------------------------------------------
-// CWmDetailsDlg::ActivateL
-//------------------------------------------------------------------------------
-//
-void CWmDetailsDlg::ActivateL()
-	{
-    CAknDialog::ActivateL();
-	iEikonEnv->EikAppUi()->AddToStackL( this, ECoeStackPriorityDialog );
-    iEikonEnv->EikAppUi()->AddToStackL( iRtEditor );    
-    iRtEditor->SetFocus( ETrue );
-    }
-
-// -----------------------------------------------------------------------------
-// CWmDetailsDlg::WmDetailsDialogRect
-// -----------------------------------------------------------------------------
-//
-TRect CWmDetailsDlg::WmDetailsDialogRect()
-    {
-    TRect mainPane, dlgRect;    
-    TPoint topLeft;
-    TInt desiredW, desiredH;    
-    AknLayoutUtils::LayoutMetricsRect( 
-            AknLayoutUtils::EApplicationWindow, mainPane );
-
-    if ( Layout_Meta_Data::IsLandscapeOrientation() )
-        {
-        desiredW = ( mainPane.Width() - (mainPane.Width()/4) );
-        desiredH = ( mainPane.Height() - (mainPane.Height()/5) );        
-        topLeft.iX = ( ( mainPane.Width() - desiredW ) /2);
-        topLeft.iY = ( ( mainPane.Height() - desiredH ) /2);
-        dlgRect.SetRect( topLeft, TSize( desiredW, desiredH ) );
-        }
-    else
-        {
-        desiredH = ( mainPane.Height() - (mainPane.Height()/4) );
-        desiredW = ( mainPane.Width() - (mainPane.Width()/5) );
-        topLeft.iX = ( ( mainPane.Width() - desiredW ) /2);
-        topLeft.iY = ( ( mainPane.Height() - desiredH ) /2);
-        dlgRect.SetRect( topLeft, TSize( desiredW, desiredH ) );        
-        }
-    return dlgRect;
-    }
-
-// -----------------------------------------------------------------------------
-// CWmDetailsDlg::SetSizeAndPosition
-// -----------------------------------------------------------------------------
-//
-void CWmDetailsDlg::SetSizeAndPosition( const TSize& /*aSize*/ )
-    {    
-    SetRect( WmDetailsDialogRect() );
-    }
-
-// -----------------------------------------------------------------------------
-// CWmDetailsDlg::SizeChanged
-// -----------------------------------------------------------------------------
-//
-void CWmDetailsDlg::SizeChanged()
-    {
-    CAknDialog::SizeChanged();
-    TRect rect = Rect();
-    if ( iBgContext ) { iBgContext->SetRect( FullScreenRect() ); }
-    if ( iRtEditor ) 
-        {
-        const TInt offSet = 5;
-        TRect cbaRect;
-        AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EControlPane, cbaRect );
-        
-        TInt logoH = iLogoBmp->SizeInPixels().iHeight;
-        
-        TInt height, width;
-        if ( Layout_Meta_Data::IsLandscapeOrientation() )
-            {        
-            height = ( (rect.Height() - logoH) - (cbaRect.Height() * 2) - offSet );
-            }
-        else
-            {
-            height = ( (rect.Height() - logoH) - (cbaRect.Height() * 1.5) - offSet );
-            }
- 
-        width = ( rect.Width() - (CEikScrollBar::DefaultScrollBarBreadth() * 4 ) - offSet );
-        TPoint point = TPoint( rect.iTl.iX + offSet, rect.iTl.iY + logoH + offSet );
-        TSize size = TSize( width, height );
-        iRtEditor->SetRect( TRect( point, size ) );
-        TRAP_IGNORE( 
-            iRtEditor->SetSkinBackgroundControlContextL( iBgContext );
-            InsertAndFormatContentL(); );
-        }
-    }
-
-// ----------------------------------------------------------------------------
-// CWmDetailsDlg::SupplyMopObject
-// ----------------------------------------------------------------------------
-//
-TTypeUid::Ptr CWmDetailsDlg::MopSupplyObject( TTypeUid aId )
-    {
-    if ( aId.iUid == MAknsControlContext::ETypeId )
-        {
-        return MAknsControlContext::SupplyMopObject( aId, iBgContext );
-        }
-    return CAknDialog::MopSupplyObject( aId );
-    }
-	
-// ----------------------------------------------------------------------------
-// CWmDetailsDlg::OfferKeyEventL
-// ----------------------------------------------------------------------------
-//
-TKeyResponse CWmDetailsDlg::OfferKeyEventL( const TKeyEvent& aKeyEvent,TEventCode aType )
-	{
-	if (aType == EEventKey)
-		{
-		switch (aKeyEvent.iCode)
-			{			
-			case EKeyEscape:
-				{
-				// framework calls this when dialog must shut down
-				return CAknDialog::OfferKeyEventL( aKeyEvent, aType );
-        		}
-			case EKeyDownArrow:
-                {
-                if ( iRtEditor )
-                    {
-                    iRtEditor->MoveCursorL(TCursorPosition::EFPageDown, EFalse);
-                    return EKeyWasConsumed;
-                    }
-                }
-            case EKeyUpArrow:
-                {
-                if ( iRtEditor )
-                    {
-                    iRtEditor->MoveCursorL(TCursorPosition::EFPageUp, EFalse);
-                    return EKeyWasConsumed;
-                    }
-                }				
-            default:
-				{
-				if ( iRtEditor )
-					{
-					return iRtEditor->OfferKeyEventL( aKeyEvent, aType );
-					}
-			    break;
-				}
-			}
-		}
-	return CAknDialog::OfferKeyEventL( aKeyEvent, aType);
-	}
-
-// -----------------------------------------------------------------------------
-// CWmDetailsDlg::Draw
-// -----------------------------------------------------------------------------
-//
-void CWmDetailsDlg::Draw( const TRect& /*aRect*/ ) const
-    {
-    CWindowGc& gc = SystemGc();
-    TRect rect = Rect();
-    TRect innerRect( rect );
-    TRgb color = KRgbBlack;
-    const TInt offSet = 5;
-
-    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
-    MAknsControlContext* cc = AknsDrawUtils::ControlContext( this );
-
-    // draw background
-    if ( !AknsDrawUtils::Background( skin, cc, this, gc, innerRect ) )
-        {
-        gc.SetPenStyle( CGraphicsContext::ENullPen );
-        gc.SetBrushStyle( CGraphicsContext::ENullBrush );
-        gc.SetBrushColor( AKN_LAF_COLOR( 0 ) );
-        gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
-        gc.DrawRect( innerRect );
-        gc.SetBrushStyle( CGraphicsContext::ENullBrush );
-        }
-
-    // to fix scrollbar background issue in richtext editor
-    if ( iRtEditor ) 
-        {
-        MAknsControlContext* ccRte = AknsDrawUtils::ControlContext( iRtEditor );
-        AknsDrawUtils::Background( skin, ccRte, iRtEditor, gc, iRtEditor->Rect() );
-        }
-    
-    // draw logo
-    TRect bmpRect( TPoint(0,0), TSize( iLogoBmp->SizeInPixels() ) );
-    TPoint point = TPoint( innerRect.iTl.iX + offSet,
-                           innerRect.iTl.iY + offSet );
-
-    if ( iLogoBmp && iLogoMask )
-        {
-        gc.BitBltMasked( point, iLogoBmp, 
-                         bmpRect, iLogoMask, ETrue );
-        }
-    else
-        {
-        gc.BitBlt( point, iLogoBmp, bmpRect );
-        }
-
-    // draw name
-    point.iX += (bmpRect.Width() + offSet);
-    
-    AknsUtils::GetCachedColor( 
-                    skin, color, 
-                    KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG6 );
-
-    // DRAW TEXT
-    const CFont* font = AknLayoutUtils::FontFromId( EAknLogicalFontPrimaryFont );
-    gc.UseFont( font );
-    gc.SetPenColor( color );
-    gc.SetPenStyle( CGraphicsContext::ESolidPen );
-    point.iY += (bmpRect.Height() - (font->HeightInPixels() /2 ) );
-    CGraphicsContext::TDrawTextParam param;
-    
-    HBufC* buf = iName->Des().Alloc();
-    if ( buf )
-        {
-        TPtr bufPtr = buf->Des();
-        TextUtils::ClipToFit( bufPtr, *font, (innerRect.Width() - point.iX ) );
-        gc.DrawText( bufPtr ,point, param );
-        delete buf;
-        }
-    else
-        {
-        gc.DrawText( *iName ,point, param );
-        }
-    
-    gc.DiscardFont();
-    
-    // draw the rounded rectangle as border
-    const TInt KFrameRoundRadius = 3;
-    const TInt KBorderWidth = 2;
-    gc.SetPenSize( TSize( KBorderWidth, KBorderWidth ) );    
-    gc.DrawRoundRect( innerRect, TSize( KFrameRoundRadius, KFrameRoundRadius ) );
-    
-    // draw shadow
-    gc.SetBrushStyle(CGraphicsContext::ESolidBrush);
-    gc.SetPenStyle( CGraphicsContext::ESolidPen );
-    gc.SetBrushColor( color );
-    gc.SetPenColor( color );
-    TRect rightShadowArea = Rect();
-    rightShadowArea.iTl.iX = rightShadowArea.iBr.iX - offSet;
-    rightShadowArea.iTl.iY += offSet/2;
-    gc.DrawRect(rightShadowArea);
-    TRect bottomShadowArea = Rect();
-    bottomShadowArea.iTl.iX += offSet/2;
-    bottomShadowArea.iTl.iY += bottomShadowArea.iBr.iY - offSet;
-    gc.DrawRect( bottomShadowArea );
-    gc.SetBrushStyle( CGraphicsContext::ENullBrush );
-    gc.SetPenStyle( CGraphicsContext::ENullPen );
-    }
-
-// End of File
-
--- a/widgetmanager/src/wmeffectmanager.cpp	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,157 +0,0 @@
-/*
-* 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:  Effect manager.
-*
-*/
-
-
-// SYSTEM INCLUDE FILES
-#include <eikapp.h>
-#include <aknappui.h>
-#include <gfxtranseffect/gfxtranseffect.h>  // For transition effects
-#include <akntranseffect.h>                 // For transition effects
-
-// INCLUDE FILES
-#include "wmeffectmanager.h"
-
-// CONSTANTS
-const TInt KEffectTypeFullscreen = 1;
-
-const TInt KWaitForLayout = 1;
-const TInt KEffectStarted = 2;
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// C++ default constructor.
-// -----------------------------------------------------------------------------
-//
-CWmEffectManager::CWmEffectManager( CCoeEnv& aCoeEnv ): iCoeEnv (aCoeEnv)
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// Symbian 2nd phase constructor.
-// -----------------------------------------------------------------------------
-//
-void CWmEffectManager::ConstructL()
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-CWmEffectManager* CWmEffectManager::NewL( CCoeEnv& aCoeEnv )
-    {
-    CWmEffectManager* self = new (ELeave) CWmEffectManager( aCoeEnv );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// Destructor.
-// -----------------------------------------------------------------------------
-//
-CWmEffectManager::~CWmEffectManager()
-    {
-    GfxTransEffect::AbortFullScreen();
-    iEffects.ResetAndDestroy();
-    }
-
-// -----------------------------------------------------------------------------
-// CWmEffectManager::BeginFullscreenEffectL
-// -----------------------------------------------------------------------------
-//
-void CWmEffectManager::BeginFullscreenEffectL( TInt aId )
-    {
-    TWmEffect* effect = new (ELeave) TWmEffect;
-    CleanupStack::PushL( effect );
-    effect->iId = aId;
-    effect->iType = KEffectTypeFullscreen;
-    effect->iState = KWaitForLayout;
-    iEffects.Append( effect );
-    
-    CleanupStack::Pop( effect );
-
-    DoBeginFullscreenEffect( *effect );
-    }
-
-// -----------------------------------------------------------------------------
-// CWmEffectManager::UiRendered
-// -----------------------------------------------------------------------------
-//
-void CWmEffectManager::UiRendered()
-    {
-    for ( TInt i = 0; i < iEffects.Count(); )
-        {
-        TWmEffect* effect = iEffects[i];
-        if ( effect && effect->iState == KEffectStarted )
-            {
-            GfxTransEffect::EndFullScreen();
-            RemoveEffect( effect );
-            }
-        else
-            {
-            // RemoveEffect() will remove from iEffects array and
-            // thats why we need to have conter in else
-            i++;
-            }
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CWmEffectManager::DoBeginFullscreenEffect
-// -----------------------------------------------------------------------------
-//
-void CWmEffectManager::DoBeginFullscreenEffect( TWmEffect& aEffect )
-    {
-    if ( iCoeEnv.WsSession().GetFocusWindowGroup() != 
-         iCoeEnv.RootWin().Identifier() )
-        {
-        // Window group is not focused
-        RemoveEffect( &aEffect );
-        return;
-        }
-
-    const TInt flags( AknTransEffect::TParameter::EActivateExplicitCancel );
-    const TUid targetAppUid( iAvkonAppUi->Application()->AppDllUid() );
-
-    // Set effect begin point
-    GfxTransEffect::BeginFullScreen( aEffect.iId , iAvkonAppUi->ClientRect(),
-        AknTransEffect::EParameterType, AknTransEffect::GfxTransParam(
-        targetAppUid, flags ) );
-    
-    aEffect.iState = KEffectStarted;
-    }
-
-// -----------------------------------------------------------------------------
-// CXnEffectManager::RemoveEffect
-// -----------------------------------------------------------------------------
-//
-void CWmEffectManager::RemoveEffect( TWmEffect* aEffect )
-    {
-    TInt index = iEffects.Find( aEffect );
-    if ( index != KErrNotFound )
-        {
-        TWmEffect* temp = iEffects[index];
-        iEffects.Remove( index );
-        delete temp;
-        }
-    }
-
-// End fo file
-
--- a/widgetmanager/src/wmiconfileprovider.cpp	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,89 +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:
-* CWmIconFileProvider implementation.
-*
-*/
-
-#include "wmcommon.h"
-#include "wmiconfileprovider.h"
-
-// ---------------------------------------------------------------------------
-// CWmIconFileProvider::CWmIconFileProvider
-// ---------------------------------------------------------------------------
-//
-CWmIconFileProvider::CWmIconFileProvider( RFs& aFs )
-    :iFs( aFs )
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// CWmIconFileProvider::~CWmIconFileProvider
-// ---------------------------------------------------------------------------
-//
-CWmIconFileProvider::~CWmIconFileProvider()
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// CWmIconFileProvider::SetIconFile
-// ---------------------------------------------------------------------------
-//
-void CWmIconFileProvider::SetIconFile( const TDesC& aFileName )
-    { 
-    iFileName.Copy( aFileName ); 
-    }
-
-// ---------------------------------------------------------------------------
-// CWmIconFileProvider::NewL
-// ---------------------------------------------------------------------------
-//
-CWmIconFileProvider* CWmIconFileProvider::NewL( RFs& aFs )
-    {
-    CWmIconFileProvider* self = new (ELeave) CWmIconFileProvider( aFs );
-    CleanupStack::PushL(self);
-    self->ConstructL();
-    CleanupStack::Pop(); // self
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// CWmIconFileProvider::ConstructL
-// ---------------------------------------------------------------------------
-//
-void CWmIconFileProvider::ConstructL()
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// CWmIconFileProvider::RetrieveIconFileHandleL
-// ---------------------------------------------------------------------------
-//
-void CWmIconFileProvider::RetrieveIconFileHandleL( 
-    RFile& aFile, 
-    const TIconFileType /*aType*/ )
-    {
-	User::LeaveIfError( aFile.Open( iFs, iFileName, EFileShareAny ) );
-    }
-
-// ---------------------------------------------------------------------------
-// CWmIconFileProvider::Finished
-// ---------------------------------------------------------------------------
-//
-void CWmIconFileProvider::Finished()
-    {
-    }
-
-// end of file
-
--- a/widgetmanager/src/wmimageconverter.cpp	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,874 +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:
-* CWmImageConverter implementation
-*
-*/
-
-#include <fbs.h>
-#include <eikdef.h>
-#include <eikenv.h>
-#include <bautils.h>
-#include <imageconversion.h>
-#include <bitmaptransforms.h>
-#include <AknIconUtils.h>
-#include <AknsSkinInstance.h>
-#include <AknsUtils.h>
-#include <avkon.mbg>
-#include <apgcli.h>
-#include <SVGEngineInterfaceImpl.h>
-#include <WidgetRegistryConstants.h> // KWidgetUidLowerBound, KWidgetUidUpperBound
-
-#include "wmiconfileprovider.h"
-#include "wmimageconverter.h"
-
-_LIT( KSkin, 		  "skin" );
-_LIT( KMif, 		  "mif" );
-_LIT( KUid,           "uid" );
-_LIT( KColon,		  ":" );
-_LIT( KSvgExt,        ".svg" );
-_LIT( KHexPrefix,     "0x" );
-const TUint KLeftParenthesis = '(';
-
-// ---------------------------------------------------------
-// CWmImageConverter::NewL
-// ---------------------------------------------------------
-//
-CWmImageConverter* CWmImageConverter::NewL( MConverterObserver* aObserver )
-    {
-    CWmImageConverter* self = 
-        new(ELeave) CWmImageConverter();
-    CleanupStack::PushL( self );    
-    self->ConstructL( aObserver );
-    CleanupStack::Pop(self);
-    return self; 
-    }
-
-// ---------------------------------------------------------
-// CWmImageConverter::CWmImageConverter 
-// ---------------------------------------------------------
-//
-CWmImageConverter::CWmImageConverter() 
-    : CActive( EPriorityStandard )
-    {
-    iState = EIdle;
-    iBitmap = NULL;
-    iMask = NULL;
-    iObserver = NULL;
-    iConversionMethod = EUnrecognized;
-    CActiveScheduler::Add( this );
-    }
-
-// ---------------------------------------------------------
-// CWmImageConverter::ConstructL
-// ---------------------------------------------------------
-//
-void CWmImageConverter::ConstructL( MConverterObserver* aObserver )
-    {
-    User::LeaveIfError( iFs.Connect() );
-    iFs.ShareProtected();
-    iIconFileProvider = CWmIconFileProvider::NewL( iFs );
-    iScaler = CBitmapScaler::NewL();
-    iObserver = aObserver;
-    }
-
-// ---------------------------------------------------------
-// CWmImageConverter::~CWmImageConverter
-// ---------------------------------------------------------
-//
-CWmImageConverter::~CWmImageConverter()
-    {
-    Cancel();
-    delete iImageDecoder;
-    iFs.Close(); 
-    if (iBitmap) 
-        {
-        delete iBitmap;
-        iBitmap = NULL;
-        }    
-    if (iMask) 
-        {
-        delete iMask; 
-        iMask = NULL;
-        }    
-    delete iScaler;
-    delete iIconFileProvider;
-    }
-
-// ---------------------------------------------------------
-// CWmImageConverter::HandleIconStringL
-// ---------------------------------------------------------
-//
-void CWmImageConverter::HandleIconStringL( 
-                            TInt aWidth, TInt aHeight, 
-                            const TDesC& aIconStr )
-    {
-    if ( aIconStr.Length() )
-        {
-        TAknsItemID skinItemId;
-        skinItemId.iMajor = 0;
-        skinItemId.iMinor = 0;
-        TInt bitmapId( KErrNotFound );
-        TInt maskId( KErrNotFound );
-        TUid appUid;
-        iFilename = KNullDesC;
-        iScaleNeeded = EFalse;    
-        iSize.SetSize( aWidth, aHeight );
-        
-        if ( ResolveSkinIdAndMifId( 
-                aIconStr, skinItemId, bitmapId, maskId, iFilename ) )
-            {
-            if ( bitmapId >= 0 && skinItemId.iMajor > 0 )
-                iConversionMethod = ESkinAndMifIcon;
-            else if ( bitmapId >= 0 )
-                iConversionMethod = EMifIcon;
-            else
-                iConversionMethod = ESkinIcon;
-            CreateSkinOrMifIconL( 
-                    skinItemId, bitmapId, maskId, iFilename );
-            }
-        else if ( ResolveUid( aIconStr, appUid ) )
-            {
-            iConversionMethod = EUidIcon;
-            CreateIconFromUidL( appUid );
-            }
-        else if ( EndsWith( aIconStr, KSvgExt ) )
-            {
-            // filename_with_full_path.svg
-            iConversionMethod = ESvgIcon;
-            CreateIconFromSvgL( aIconStr );
-            }
-        else if ( BaflUtils::FileExists( iFs, aIconStr ) )
-            {
-            // filename_with_full_path.png/jpg
-            iConversionMethod = EImageIcon;
-            CreateIconFromOtherL( aIconStr );
-            }
-        else
-            {
-            iConversionMethod = EUnrecognized;
-            User::Leave( KErrArgument );
-            }
-        }
-    }
-
-// ---------------------------------------------------------
-// CWmImageConverter::CreateIconFromUidL
-// ---------------------------------------------------------
-//
-void CWmImageConverter::CreateIconFromUidL( const TUid& aUid )
-    {
-    CFbsBitmap* bitmap = NULL;
-    CFbsBitmap* mask = NULL;
-    
-    if ( aUid.iUid >= KWidgetUidLowerBound &&
-       aUid.iUid < KWidgetUidUpperBound  )
-        {
-        // AknsUtils::CreateAppIconLC panics incase of WRT
-
-        RApaLsSession lsSession;
-        User::LeaveIfError( lsSession.Connect() );
-        CleanupClosePushL( lsSession );
-    
-        CArrayFixFlat<TSize>* sizeArray = new (ELeave) CArrayFixFlat<TSize>(3);
-        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++ )
-                {
-                size = (*sizeArray)[i];
-                if ( size == iSize )
-                    {
-                    break;
-                    }
-                }
-            }      
-        CApaMaskedBitmap* maskedBmp = CApaMaskedBitmap::NewLC();
-        User::LeaveIfError( lsSession.GetAppIcon( aUid, size, *maskedBmp ) );
-        iBitmap = static_cast<CFbsBitmap*>( maskedBmp );  // ownership transfered
-        
-        iMask = new ( ELeave ) CFbsBitmap;
-        User::LeaveIfError( iMask->Create( 
-                                    maskedBmp->Mask()->SizeInPixels(), 
-                                    maskedBmp->Mask()->DisplayMode() ) );
-        // duplicate mask, origional is owned by maskedBmp
-        iMask->Duplicate( maskedBmp->Mask()->Handle() );
-        CleanupStack::Pop( maskedBmp );
-        maskedBmp = NULL;
-        CleanupStack::PopAndDestroy(sizeArray); 
-        CleanupStack::PopAndDestroy( &lsSession );
-
-        // scale or notify
-        if ( size == iSize )
-            {
-            iObserver->NotifyCompletion( KErrNone );
-            }
-        else
-            {
-            iScaleNeeded = ETrue;
-            ScaleBitmap( iSize.iWidth, iSize.iHeight );
-            }
-        }
-    else if ( aUid.iUid != KNullUid.iUid )
-        {
-        MAknsSkinInstance* skin = AknsUtils::SkinInstance();
-        TInt err( KErrNone );
-        TRAP( err,
-                {
-                AknsUtils::CreateAppIconLC( skin, aUid,
-                        EAknsAppIconTypeContext, bitmap, mask );
-                CleanupStack::Pop( 2 ); // for trap
-                }
-            );
-        
-        if( KErrNone != err )
-            {
-            // If icon is not created, try to create default application icon
-            AknsUtils::CreateIconLC( skin,
-                KAknsIIDQgnMenuUnknownLst, bitmap, mask,
-                AknIconUtils::AvkonIconFileName(),
-                EMbmAvkonQgn_menu_unknown_lst,
-                EMbmAvkonQgn_menu_unknown_lst_mask );
-            CleanupStack::Pop( 2 ); // for trap
-            }
-        
-        iBitmap = bitmap;
-        iMask = mask;
-                
-        err = AknIconUtils::SetSize( iBitmap , iSize, EAspectRatioNotPreserved );
-        if ( KErrNone == err )
-            {
-            err = AknIconUtils::SetSize( iMask , iSize, EAspectRatioNotPreserved );
-            }
-
-        // notify observer
-        iObserver->NotifyCompletion( err );
-        }
-    else
-        {
-        User::Leave( KErrArgument );
-        }
-    }
-
-// ---------------------------------------------------------
-// CWmImageConverter::CreateIconFromSvgL
-// ---------------------------------------------------------
-//
-void CWmImageConverter::CreateIconFromSvgL( const TDesC& aFileName )
-    {
-    TInt domHandle;
-    CFbsBitmap* dummyBitmap = new ( ELeave ) CFbsBitmap;
-    CleanupStack::PushL( dummyBitmap );
-    
-    dummyBitmap->Create( TSize( 0, 0 ), EGray2 );
-    TFontSpec fontSpec;
-    CSvgEngineInterfaceImpl* svgEngine =
-        CSvgEngineInterfaceImpl::NewL( dummyBitmap, NULL, fontSpec );
-    CleanupStack::PushL( svgEngine );
-    
-    svgEngine->SetBackgroundColor( 0 );
-    svgEngine->SetDRMMode( EFalse );
-   
-    User::LeaveIfError( svgEngine->PrepareDom( 
-                aFileName, domHandle )->SystemErrorCode() );
-    
-    iBitmap = new ( ELeave ) CFbsBitmap;
-    
-    User::LeaveIfError( iBitmap->Create( iSize, EColor16M ) );
-    
-    iMask = new ( ELeave ) CFbsBitmap;
-    User::LeaveIfError( iMask->Create( iSize, EGray256 ) );
-    
-    svgEngine->UseDom( domHandle, iBitmap, iMask );
-    svgEngine->SetPreserveAspectRatio( NULL, ESvgPreserveAspectRatio_XmidYmid, 
-            ESvgMeetOrSlice_Meet, ETrue );
-    svgEngine->SetSvgDimensionToFrameBuffer(
-        iSize.iWidth, iSize.iHeight );
-
-    svgEngine->Start();
- 
-    if ( iBitmap->SizeInPixels() != iSize ||
-        svgEngine->ContentDimensions() != iSize )    
-        {        
-        iScaleNeeded = ETrue;
-        ScaleBitmap( iSize.iWidth, iSize.iHeight );
-        }
-    else
-        {
-        // notify observer
-        iObserver->NotifyCompletion( KErrNone );
-        }
-    
-    svgEngine->UseDom( domHandle, NULL, NULL );
-    svgEngine->DeleteDom( domHandle );
-    
-    CleanupStack::PopAndDestroy( 2, dummyBitmap ); // dummyBitmap, svgEngine
-    }
-
-// ---------------------------------------------------------
-// CWmImageConverter::CreateIconFromOtherL
-// ---------------------------------------------------------
-//
-void CWmImageConverter::CreateIconFromOtherL( const TDesC& aFileName )
-    {
-    if ( IsActive() || iState != EIdle )
-        {
-        User::Leave( KErrNotReady );
-        }
-    
-    if ( iImageDecoder ) delete iImageDecoder; iImageDecoder = NULL;
-    if (iBitmap) {delete iBitmap; iBitmap = NULL;}
-    if (iMask) {delete iMask; iMask = NULL;}
-    
-    iFilename.Copy( aFileName );
-    
-    // create the decoder
-    iImageDecoder = CImageDecoder::FileNewL( iFs, iFilename );
-    
-    TSize size = iImageDecoder->FrameInfo().iOverallSizeInPixels;
-
-    // create the destination bitmap
-    iBitmap = new (ELeave) CFbsBitmap();
-    iBitmap->Create( size,
-                     iImageDecoder->FrameInfo().iFrameDisplayMode ); 
-    
-    iMask = new (ELeave) CFbsBitmap();
-    iMask->Create( size, EGray256 ); 
-    
-    if ( size != iSize )
-        {
-        iScaleNeeded = ETrue;
-        }
-    // start conversion to bitmap
-    iState = EDecoding;
-    iImageDecoder->Convert( &iStatus, *iBitmap, *iMask );
-    SetActive();
-    }
-
-// ---------------------------------------------------------
-// CWmImageConverter::DoCancel
-// ---------------------------------------------------------
-//
-void CWmImageConverter::DoCancel()
-    {
-    if( iState == EDecoding )
-        {
-        iImageDecoder->Cancel();        
-        if ( iObserver )
-            {
-            iObserver->NotifyCompletion( KErrCancel );
-            }
-        }    
-    else if( iState == EScalingBitmap ||
-        iState == EScalingMask )
-        {
-        iScaler->Cancel();
-        if ( iObserver )
-            {
-            iObserver->NotifyCompletion( KErrCancel );
-            }
-        }    
-    else
-        {
-        // State is EIdle, do nothing
-        }
-    iState = EIdle;
-    iScaleNeeded = EFalse;
-    }
-
-// ---------------------------------------------------------
-// CWmImageConverter::RunL
-// ---------------------------------------------------------
-//
-void CWmImageConverter::RunL()
-    {
-    switch( iState ) 
-        {
-        case EDecoding:
-            {
-            if( iStatus.Int() == KErrNone )
-                {
-                if ( iScaleNeeded )
-                    {
-                    ScaleBitmap( iSize.iWidth, iSize.iHeight );
-                    }
-                else
-                    {
-                    iState = EIdle;
-                    if ( iObserver )
-                        {
-                        iObserver->NotifyCompletion( KErrNone );
-                        }
-                    }
-                break;
-                }
-            else if( iStatus.Int() == KErrUnderflow ) 
-                {
-                iImageDecoder->ContinueConvert( &iStatus );
-                SetActive();
-                break;
-                }
-            else if ( iStatus.Int() == KErrCorrupt )
-                {
-                iState = EIdle;
-                iScaleNeeded = EFalse;
-                if ( iBitmap )
-                    {
-                    delete iBitmap;
-                    iBitmap = NULL;
-                    }
-                if ( iMask )
-                    {
-                    delete iMask;
-                    iMask = NULL;
-                    }
-                if ( iObserver )
-                    {
-                    iObserver->NotifyCompletion( KErrCorrupt );
-                    }
-                break;
-                }
-            else
-                {
-                // Unknown error
-                iState = EIdle;
-                iScaleNeeded = EFalse;
-                if ( iBitmap )
-                    {
-                    delete iBitmap;
-                    iBitmap = NULL;
-                    }
-                if ( iMask )
-                    {
-                    delete iMask;
-                    iMask = NULL;
-                    }
-                if ( iObserver )
-                    {
-                    iObserver->NotifyCompletion( iStatus.Int() );
-                    }
-                break;
-                }
-            }
-        case EScalingBitmap:
-            {
-            if( iStatus.Int() == KErrNone && iMask )
-                {
-                ScaleMask( iSize.iWidth, iSize.iHeight );
-                }
-            else
-                {
-                iState = EIdle;
-                iScaleNeeded = EFalse;
-                if ( iObserver )
-                    {
-                    iObserver->NotifyCompletion( iStatus.Int() );
-                    }                
-                }
-            break;
-            }
-        case EScalingMask:
-            {
-            iState = EIdle;
-            iScaleNeeded = EFalse;
-            if ( iObserver )
-                {
-                iObserver->NotifyCompletion( iStatus.Int() );
-                }
-            break;
-            }
-        default:
-            break;
-        }   
-    }
-
-// ---------------------------------------------------------
-// CWmImageConverter::RunError
-// ---------------------------------------------------------
-//
-TInt CWmImageConverter::RunError(TInt /*aError*/)
-    {
-    // Our RunL does not contain any method calls that would leave, so this method
-    // should never be called.
-    iScaleNeeded = EFalse;
-    return KErrNone;
-    }
-
-// ---------------------------------------------------------
-// CWmImageConverter::ScaleBitmap
-// ---------------------------------------------------------
-//
-void CWmImageConverter::ScaleBitmap( TInt aWidth, TInt aHeight )
-    {
-    if ( !IsActive() && 
-         iBitmap &&
-        ( iState == EDecoding || iState == EIdle ) )
-        {
-        // the maintain aspect ratio is by default set to true
-        iScaler->Scale( &iStatus, *iBitmap, TSize( aWidth,aHeight ), EFalse );
-        iState = EScalingBitmap;
-        SetActive();
-        }
-    }
-
-// ---------------------------------------------------------
-// CWmImageConverter::ScaleMask
-// ---------------------------------------------------------
-//
-void CWmImageConverter::ScaleMask( TInt aWidth, TInt aHeight )
-    {
-    if ( !IsActive() && 
-        iState == EScalingBitmap &&
-        iMask )
-        {
-        // the maintain aspect ratio is by default set to true
-        iScaler->Scale( &iStatus, *iMask, TSize(aWidth,aHeight), EFalse );
-        iState = EScalingMask;
-        SetActive();
-        }
-    }
-
-// ---------------------------------------------------------
-// CWmImageConverter::Bitmap
-// ---------------------------------------------------------
-//
-CFbsBitmap* CWmImageConverter::Bitmap()
-    {
-    CFbsBitmap* bitmap = NULL;
-    if (iState == EIdle &&
-        iBitmap )
-        {
-        bitmap = iBitmap;  // ownership taken
-        iBitmap = NULL;
-        }
-    return bitmap;
-    }
-
-// ---------------------------------------------------------
-// CWmImageConverter::Mask
-// ---------------------------------------------------------
-//
-CFbsBitmap* CWmImageConverter::Mask()
-    {
-    CFbsBitmap* mask = NULL;
-    if (iState == EIdle &&
-        iMask )
-        {
-        mask = iMask;  // ownership taken
-        iMask = NULL;
-        }
-    return mask;
-    }
-
-// ---------------------------------------------------------
-// CWmImageConverter::EndsWith
-// ---------------------------------------------------------
-//
-TBool CWmImageConverter::EndsWith( const TDesC& aString, 
-                                const TDesC& aPattern )
-    {
-    return ( aString.Right( aPattern.Length() ) == aPattern );
-    }
-
-// ---------------------------------------------------------------------------
-// CWmImageConverter::ResolveUid
-// ---------------------------------------------------------------------------
-//
-TBool CWmImageConverter::ResolveUid( 
-                const TDesC& aPath, TUid& aUid )
-    {
-    // Syntax: uid(0x12345678)
-    TInt error = KErrNotFound;
-    TInt pos = aPath.FindF( KUid );
-    if( pos == 0 )
-        {
-        // Skip skin token
-        pos += KUid().Length();
-
-        // Initialize lexer
-        TLex lex( aPath.Mid( pos ) );
-
-        // Check left parenthesis
-        if ( lex.Get() == KLeftParenthesis )
-            {
-            lex.SkipSpaceAndMark();
-            lex.SkipCharacters();
-            
-            TPtrC mtoken = lex.MarkedToken();
-            pos = mtoken.FindF( KHexPrefix );
-            if ( pos == 0 )
-                {
-                TLex lex( mtoken.Mid( KHexPrefix().Length() ) );
-                TUint id = 0;
-                error = lex.Val( id, EHex );
-                aUid = TUid::Uid( (TInt)id );
-                }
-            else
-                {
-                TInt id( 0 );
-                error = lex.Val( id );
-                aUid.iUid = id;
-                }
-            }
-        }
-    
-    return (error == KErrNone );
-    }
-
-// ---------------------------------------------------------------------------
-// CWmImageConverter::ResolveSkinId
-// ---------------------------------------------------------------------------
-//
-TBool CWmImageConverter::ResolveSkinId( 
-                const TDesC& aPath, TAknsItemID& aItemId )
-    {
-    // Syntax: skin(major minor)
-    TInt error = KErrNotFound;
-    TInt pos = aPath.FindF( KSkin );
-    if( pos == 0 )
-        {
-        // Skip skin token
-        pos += KSkin().Length();
-
-        // Initialize lexer
-        TLex lex( aPath.Mid( pos ) );
-        
-        lex.SkipSpaceAndMark();
-        // Check left parenthesis
-        if ( lex.Get() == KLeftParenthesis )
-           {
-           pos++;
-           TLex lex( aPath.Mid( pos ) );
-           lex.SkipSpaceAndMark();
-           
-           TPtrC mtoken = lex.MarkedToken();
-           pos = mtoken.FindF( KHexPrefix );
-           if ( pos == 0 )
-              {
-              TUint majorId( 0 );
-              TUint minorId( 0 );              
-              lex.Assign( mtoken.Mid( KHexPrefix().Length() ) );
-              error = lex.Val( majorId, EHex );
-              lex.SkipSpace();
-              lex.SkipAndMark( KHexPrefix().Length() );
-              error |= lex.Val( minorId, EHex );
-              aItemId.Set( majorId, minorId );
-              }
-          else
-              {
-              TInt majorId(0);
-              TInt minorId(0);
-              error = lex.Val( majorId );
-              lex.SkipSpace();
-              error |= lex.Val( minorId );                      
-              aItemId.Set( majorId, minorId );
-              }
-           }        
-        }
-
-    return (error == KErrNone );
-    }
-
-// ---------------------------------------------------------------------------
-// CWmImageConverter::ResolveMifId
-// ---------------------------------------------------------------------------
-//
-TBool CWmImageConverter::ResolveMifId( 
-                const TDesC& aPath, TInt& aBitmapId,
-                TInt& aMaskId, TDes& aFileName )
-    {
-    // Syntax: mif(filename bimapId maskId)
-   TInt error = KErrNotFound;
-   TInt pos = aPath.FindF( KMif );
-   if( pos == 0 )
-        {
-        // Skip mif token
-        pos += KMif().Length();
-        // Initialize lexer
-        TLex lex( aPath.Mid( pos ) );
-
-        // Check left parenthesis
-        if ( lex.Get() == KLeftParenthesis )
-           {
-           lex.SkipSpaceAndMark();
-           lex.SkipCharacters();
-           // Resolve MifFile name
-           aFileName.Copy(lex.MarkedToken());
-           if( aFileName.Length()!= 0)
-               {
-               // Resolve bitmap id  
-               lex.SkipSpace();
-               error = lex.Val( aBitmapId );
-               
-               // Resolve mask id
-               // dont return error if it is not found, that is ok
-               lex.SkipSpace();
-               lex.Val( aMaskId );
-               }
-           else
-               {
-               error = KErrNotFound;
-               }
-           }        
-        }    
-    return (error == KErrNone );
-    }
-
-// ---------------------------------------------------------------------------
-// CWmImageConverter::ResolveSkinIdAndMifId
-// ---------------------------------------------------------------------------
-//
-TBool CWmImageConverter::ResolveSkinIdAndMifId( 
-                const TDesC& aPath, TAknsItemID& aItemId,
-                TInt& aBitmapId, TInt& aMaskId, TDes& aFileName )
-   {
-   // Syntax: skin(major minor):mif(filename bimapId maskId) 
-   TBool result = ResolveSkinId( aPath, aItemId );
-   if ( result )
-	   {
-	   TInt pos = aPath.FindF( KColon );
-	   if ( pos != KErrNotFound )
-	       {
-	       TPtrC ptr = aPath.Mid( pos+1 );
-	       result = ResolveMifId( ptr, aBitmapId, aMaskId, aFileName );
-	       }
-	   }
-   else
-       {
-       result = ResolveMifId( aPath, aBitmapId, aMaskId, aFileName );
-       }
-   return result;
-   }
-
-// ---------------------------------------------------------------------------
-// CWmImageConverter::CreateSkinOrMifIconL
-// ---------------------------------------------------------------------------
-//
-void CWmImageConverter::CreateSkinOrMifIconL( 
-                const TAknsItemID& aItemId, TInt aBitmapId, 
-                TInt aMaskId, const TDesC& aFileName )
-    {
-	iIconFileProvider->SetIconFile( aFileName );
-
-    CFbsBitmap* bitmap = NULL;
-    CFbsBitmap* mask = NULL;
-    
-    // Load from skin 
-    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
-    if ( skin && aItemId.iMajor != 0 && aItemId.iMinor != 0 )
-        {
-        TInt err( KErrNone );
-        CAknsMaskedBitmapItemData* itemData = NULL;
-        TRAP( err, itemData = 
-                    static_cast<CAknsMaskedBitmapItemData*>(
-                    skin->CreateUncachedItemDataL( aItemId, EAknsITMaskedBitmap ) ); );
-        if( itemData && KErrNone == err )
-            {
-            CleanupStack::PushL( itemData );
-            // Detach bitmaps
-            bitmap = itemData->Bitmap();
-            itemData->SetBitmap( NULL );
-            mask = itemData->Mask();
-            itemData->SetMask( NULL );
-            CleanupStack::PopAndDestroy( itemData );
-            }
-        else 
-            {
-            // look in imagetable
-            CAknsImageTableItemData* iconData = NULL;
-            TRAP( err, iconData = static_cast<CAknsImageTableItemData*>(
-                            skin->CreateUncachedItemDataL( aItemId, EAknsITImageTable ) ); );
-            if( iconData && KErrNone == err )
-                {
-                CleanupStack::PushL( iconData );
-                if( iconData->NumberOfImages() )
-                    {                        
-                    TAknsItemID iconIId;
-                    iconIId.Set( iconData->ImageIID(0) );
-                    TRAP( err, AknsUtils::CreateIconL( 
-                            skin, iconIId, bitmap, mask, KNullDesC, -1, -1 ); );
-                    }
-                CleanupStack::PopAndDestroy( iconData );
-                }
-            }
-        
-        if ( KErrNone == err && bitmap )
-            {
-            TInt err = AknIconUtils::SetSize( bitmap , iSize, EAspectRatioNotPreserved );
-            if ( KErrNone == err  )
-                {
-                if ( mask )
-                    {
-                    err = AknIconUtils::SetSize( mask , iSize, EAspectRatioNotPreserved );
-                    }
-                iBitmap = bitmap;
-                iMask = mask;
-                // notify observer
-                iObserver->NotifyCompletion( KErrNone );
-                return;
-                }
-            else
-                {
-                if ( bitmap ) { delete bitmap; bitmap = NULL; }
-                if ( mask ){ delete mask; mask = NULL; }
-                }
-            }
-        }
-    
-    if( aBitmapId != KErrNotFound && !bitmap && 
-       aFileName.Length() && BaflUtils::FileExists( iFs, aFileName ) )
-        {
-        if ( aMaskId != KErrNotFound )
-          {
-          // Create icon from Mif filename , bitmap id and mask id          
-          AknIconUtils::CreateIconL(
-                  bitmap, mask, *iIconFileProvider, aBitmapId, aMaskId );
-          }
-        else
-          {
-          bitmap = AknIconUtils::CreateIconL( *iIconFileProvider, aBitmapId );
-          }
-        }
-    else
-        {
-        User::Leave( KErrArgument );
-        }
-    
-    iBitmap = bitmap;
-    iMask = mask;
-            
-    TInt err = AknIconUtils::SetSize( iBitmap , iSize, EAspectRatioNotPreserved );
-    if ( KErrNone == err )
-        {
-        err = AknIconUtils::SetSize( iMask , iSize, EAspectRatioNotPreserved );
-        }
-
-    // notify observer
-    iObserver->NotifyCompletion( err );
-    }
-
-// ---------------------------------------------------------------------------
-// CWmImageConverter::ConversionMethod()
-// ---------------------------------------------------------------------------
-//
-CWmImageConverter::TConversionMethod CWmImageConverter::ConversionMethod()
-    {
-    return iConversionMethod;
-    }
-
-// End of file
-
--- a/widgetmanager/src/wmlistbox.cpp	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,678 +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:
-* Implementation of the widget listbox for WidgetManager
-*
-*/
-
-// INCLUDE FILES
-#include <coemain.h>
-#include <StringLoader.h>
-#include <aknstyluspopupmenu.h> 
-#include <AknsDrawUtils.h>
-#include <AknsFrameBackgroundControlContext.h>
-#include <AknsListBoxBackgroundControlContext.h>
-
-#include <widgetmanagerview.rsg>
-#include <widgetmanager.mbg>
-#include "wmcommon.h"
-#include "wmplugin.h"
-#include "wmresourceloader.h"
-#include "wmlistbox.h"
-#include "wmwidgetdata.h"
-
-// CONSTANTS
-const TInt KFrameRoundRadius = 4;
-const TInt KFocusFrameWidth = 2;
-const TInt KLeftMarginBig = 5;
-const TInt KRightMargin = 1;
-const TInt KTopTextMargin = 2;
-const TInt KRightTextMargin = 3;
-const TInt KRightMarginBig = 5;
-const TInt KTopMargin = 1;
-const TInt KTopMarginBig = 5;
-const TInt KBottomMargin = 1;
-const TInt KBottomMarginBig = 5;
-const TInt KLogoWidth = 55;
-const TInt KLogoHeight = 55;
-
-// MEMBER FUNCTIONS
-
-// ---------------------------------------------------------
-// CWmListItemDrawer::NewL
-// ---------------------------------------------------------
-//
-CWmListItemDrawer* CWmListItemDrawer::NewL(
-        CWmPlugin& aWmPlugin,
-        MTextListBoxModel* aTextListBoxModel,  
-        const CFont* aFont,  
-        CFormattedCellListBoxData* aFormattedCellData,
-        CWmListBox* aListBox  )
-    {
-    CWmListItemDrawer* self = new ( ELeave ) CWmListItemDrawer(
-            aWmPlugin,
-            aTextListBoxModel,
-            aFont,
-            aFormattedCellData,
-            aListBox );
-    CleanupStack::PushL(self);   
-    self->ConstructL();
-    CleanupStack::Pop(self);
-    return self;
-    }
-
-// ---------------------------------------------------------
-// CWmListItemDrawer::CWmListItemDrawer
-// ---------------------------------------------------------
-//
-CWmListItemDrawer::CWmListItemDrawer(
-        CWmPlugin& aWmPlugin,
-        MTextListBoxModel* aTextListBoxModel,  
-        const CFont* aFont,  
-        CFormattedCellListBoxData* aFormattedCellData,
-        CWmListBox* aListBox )
-    : CFormattedCellListBoxItemDrawer( aTextListBoxModel,aFont,aFormattedCellData ),
-    iWmPlugin( aWmPlugin )
-	{    
-    iCellData = aFormattedCellData;
-    iListBox = aListBox;
-    iFont = aFont;
-	}
-
-// ---------------------------------------------------------
-// CWmListItemDrawer::ConstructL
-// ---------------------------------------------------------
-//
-void CWmListItemDrawer::ConstructL()
-    {
-    SetSkinEnabledL( ETrue );
-    
-    AknsUtils::CreateIconL(
-            AknsUtils::SkinInstance(),
-            KAknsIIDQgnMenuHswidget,
-            iDefaultLogoImage,
-            iDefaultLogoImageMask,
-            iWmPlugin.ResourceLoader().IconFilePath(),
-            EMbmWidgetmanagerQgn_menu_hswidget,
-            EMbmWidgetmanagerQgn_menu_hswidget_mask
-            );
-	
-    AknsUtils::CreateIconL(
-            AknsUtils::SkinInstance(),
-            KAknsIIDQgnIndiWmAdd,
-            iAddWidgetBtnImage,
-            iAddWidgetBtnMask,
-            iWmPlugin.ResourceLoader().IconFilePath(),
-            EMbmWidgetmanagerAdd_widget_button,
-            EMbmWidgetmanagerAdd_widget_button_mask
-            );	
-    }
-
-// ---------------------------------------------------------
-// CWmListItemDrawer::~CWmListItemDrawer
-// ---------------------------------------------------------
-//
-CWmListItemDrawer::~CWmListItemDrawer()
-	{
-    iCellData = NULL;
-    iListBox = NULL;
-
-    // dispose icons
-    delete iDefaultLogoImage;
-    delete iDefaultLogoImageMask;
-    delete iAddWidgetBtnImage;
-    delete iAddWidgetBtnMask;
-	}
-
-// ---------------------------------------------------------
-// CWmListItemDrawer::CalculateRectangles
-// ---------------------------------------------------------
-//
-void CWmListItemDrawer::CalculateRectangles( const TSize& aSize )
-    {
-	iCurrentSize = aSize;
-	
-    // LOGO RECT
-    TSize logoSize = iListBox->LogoSize();
-    TInt val = ( aSize.iHeight - KBottomMarginBig * 4 );
-	TSize newSize( val, val );
-    if ( logoSize != newSize ||
-        logoSize.iHeight >= aSize.iHeight )
-        {        
-        logoSize = newSize;
-        }
-    iRelativeLogoRect.SetRect(
-            TPoint( KLeftMarginBig, KTopMarginBig ),
-            TSize( logoSize ) );
-
-    // ADD BUTTON RECT
-    TInt btnWidth = ( aSize.iWidth / 7 );
-    TInt btnHeight = ( aSize.iHeight / 3 );
-    TPoint btnLocation(
-            ( aSize.iWidth - KRightMarginBig - btnWidth ),
-            ( aSize.iHeight / 2  - btnHeight / 2 ) );
-    iRelativeAddButtonRect.SetRect( btnLocation, TSize( btnWidth, btnHeight ) );
-
-    // TEXT RECT
-    iRelativeTitleRect.SetRect(
-            KLeftMarginBig + logoSize.iWidth + KRightMarginBig,
-            KTopMargin,
-            aSize.iWidth - KRightMargin - btnWidth - KRightMargin,
-            aSize.iHeight - KBottomMargin - KBottomMargin );
-
-    // RESIZE BITMAPS
-    AknIconUtils::SetSize( 
-        iDefaultLogoImage, iRelativeLogoRect.Size(), EAspectRatioNotPreserved );
-    AknIconUtils::SetSize( 
-        iDefaultLogoImageMask, iRelativeLogoRect.Size(), EAspectRatioNotPreserved );
-    AknIconUtils::SetSize( 
-        iAddWidgetBtnImage, iRelativeAddButtonRect.Size(), EAspectRatioNotPreserved );
-    AknIconUtils::SetSize( 
-        iAddWidgetBtnMask, iRelativeAddButtonRect.Size(), EAspectRatioNotPreserved );
-    }
-
-// ---------------------------------------------------------
-// CWmListItemDrawer::DrawFrame
-// ---------------------------------------------------------
-//
-void CWmListItemDrawer::DrawFrame( 
-							const TRect& aOutterRect,
-							const TRect& aInnerRect,
-							const TAknsItemID& aID,
-							const TAknsItemID& aCenterID ) const
-	{	
-    CWindowGc& gc = *Gc();
-    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
-    AknsDrawUtils::DrawFrame( skin, gc, aOutterRect, aInnerRect, 
-                              aID, aCenterID );
-	}
-
-// ---------------------------------------------------------
-// CWmListItemDrawer::DrawItemRect
-// ---------------------------------------------------------
-//
-void CWmListItemDrawer::DrawItemRect( 
-							const TRect& aActualItemRect ) const
-    {
-	CWindowGc& gc = *Gc();
-    MAknsSkinInstance* skin = AknsUtils::SkinInstance();    
-    MAknsControlContext *cc = AknsDrawUtils::ControlContext( iListBox ); 
-    AknsDrawUtils::Background( skin, cc, iListBox, gc, aActualItemRect );
-    }
-	
-// ---------------------------------------------------------
-// CWmListItemDrawer::DrawItem
-// ---------------------------------------------------------
-//
-void CWmListItemDrawer::DrawItem( TInt aItemIndex, TPoint aItemRectPos, 
-                            TBool /*aItemIsSelected*/, TBool /*aItemIsCurrent*/, 
-                            TBool /*aViewIsEmphasized*/, TBool /*aViewIsDimmed*/ ) const
-    {
-    TInt w = ItemWidthInPixels( aItemIndex );
-    TInt h = iListBox->ItemHeight();
-    CWmWidgetData& wData = iListBox->WidgetData( aItemIndex );
-    if ( iCurrentSize != TSize(w,h) )
-        {
-        // re-calculate all rects
-        // note: members are manipulated here, although this method is const!
-        const_cast<CWmListItemDrawer&>(*this).CalculateRectangles( TSize(w,h) );
-        wData.SetLogoSize( iRelativeLogoRect.Size() );
-        }
-            
-    TInt selectedIndex = iListBox->CurrentItemIndex();
-    TBool isInFocus = ( selectedIndex == aItemIndex );
-    TBool listFocused = iListBox->IsFocused();
-    TRect itemRect = TRect( aItemRectPos, TSize( w, h ) );
-    TRect fullRect = TRect( aItemRectPos, 
-            TSize( iListBox->Rect().Width(), h ) );
-    
-	DrawItemRect( fullRect );
-
-    TRect logoRect( iRelativeLogoRect );
-    logoRect.Move( aItemRectPos );
-    TRect addBtnRect( iRelativeAddButtonRect );
-    addBtnRect.Move( aItemRectPos );
-    TRect textRect( iRelativeTitleRect );
-    textRect.Move( aItemRectPos );
-    
-    if ( isInFocus && listFocused )
-        {
-        TRect innerRect( itemRect );
-        const TInt highlightOffset = 5;
-        innerRect.Shrink( highlightOffset, highlightOffset );		
-		DrawFrame( itemRect, innerRect, 
-				iListBox->PressedDown() ? 
-				KAknsIIDQsnFrListPressed : KAknsIIDQsnFrList,
-				KAknsIIDQsnFrListCenter );
-        }
-    
-    // Get graphics context which is used for drawing.
-    CWindowGc& gc = *Gc();
-    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
-    
-    // DRAW LOGO
-    CFbsBitmap* bitmap = const_cast<CFbsBitmap*>(wData.LogoImage());
-    CFbsBitmap* mask = const_cast<CFbsBitmap*>(wData.LogoImageMask());
-    if ( !bitmap )
-        {
-        TRect bmpRect( TPoint(0,0), TSize( iDefaultLogoImage->SizeInPixels() ) );
-        gc.BitBltMasked( logoRect.iTl, iDefaultLogoImage, 
-                         bmpRect, iDefaultLogoImageMask, ETrue );        
-        }
-    else
-        {
-        TRect bmpRect( TPoint(0,0), TSize( bitmap->SizeInPixels() ) );        
-        if ( bitmap && mask )
-            {
-            gc.BitBltMasked( logoRect.iTl, bitmap, 
-                                bmpRect, mask, ETrue );            
-            }
-        else
-            {
-            gc.BitBlt( logoRect.iTl, bitmap, bmpRect );
-            }
-        }
-
-    TRgb textColor;
-    TAknsQsnTextColorsIndex index = ( isInFocus && listFocused )? 
-                EAknsCIQsnTextColorsCG10 : EAknsCIQsnTextColorsCG6;
-
-    AknsUtils::GetCachedColor( 
-                    skin, textColor, KAknsIIDQsnTextColors, index );
-
-    // DRAW TEXT
-    gc.UseFont( iFont );
-    gc.SetPenColor( textColor );
-    gc.SetPenSize( TSize(2,2) );
-    
-    gc.DrawText( wData.Name(), textRect, 
-           ( KTopTextMargin + iFont->FontMaxHeight() ), 
-           CGraphicsContext::ELeft, KRightTextMargin );
-
-    if ( wData.HsContentInfo().CanBeAdded() )
-        {
-        // DRAW ADD BUTTON
-        gc.BitBltMasked( addBtnRect.iTl, iAddWidgetBtnImage,
-                        TRect( TPoint(0,0), iAddWidgetBtnImage->SizeInPixels() ),
-                        iAddWidgetBtnMask, ETrue );
-
-        // DRAW BUTTON FOCUS
-        if ( isInFocus && listFocused )
-            {
-            // draw focused frame around button if item is selected
-            gc.SetPenStyle( CGraphicsContext::ESolidPen );
-            gc.SetPenSize( TSize( KFocusFrameWidth, KFocusFrameWidth ) );
-            //Draw the rounded rectangle
-            gc.DrawRoundRect( addBtnRect, TSize( KFrameRoundRadius, KFrameRoundRadius ) );
-            gc.SetBrushStyle( CGraphicsContext::ENullBrush );
-            gc.SetPenStyle( CGraphicsContext::ENullPen );
-            }
-        }
-
-    gc.SetPenSize(TSize(1,1));
-
-    // DRAW DESCRIPTION TEXT
-    HBufC* buf = wData.Description().Alloc();
-    if ( buf )
-        {
-        TPtr bufPtr = buf->Des();
-        bufPtr.Copy( wData.Description() );    
-        TextUtils::ClipToFit( bufPtr, *iFont, textRect.Width() );
-        gc.DrawText( bufPtr, textRect,
-                    ( iFont->HeightInPixels() + textRect.Height()/2 ),
-                    CGraphicsContext::ELeft, KRightTextMargin );    
-        delete buf;
-        }
-
-    gc.DiscardFont();
-    }
-
-// ---------------------------------------------------------
-// CWmListItemDrawer::DefaultLogoImage()
-// ---------------------------------------------------------
-//
-const CFbsBitmap* CWmListItemDrawer::DefaultLogoImage()
-    {
-    return iDefaultLogoImage;
-    }
-
-// ---------------------------------------------------------
-// CWmListItemDrawer::DefaultLogoMask()
-// ---------------------------------------------------------
-//
-const CFbsBitmap* CWmListItemDrawer::DefaultLogoMask()
-    {
-    return iDefaultLogoImageMask;
-    }
-
-// ---------------------------------------------------------
-// CWmListBox::NewL
-// ---------------------------------------------------------
-//
-CWmListBox* CWmListBox::NewL(
-        CWmPlugin& aWmPlugin,
-        const TRect& aRect,
-        const CCoeControl* aParent,
-        TInt aFlags )
-    {
-    CWmListBox* self = new ( ELeave ) CWmListBox( aWmPlugin);
-    CleanupStack::PushL( self );
-    self->ConstructL( aRect, aParent, aFlags );
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// ---------------------------------------------------------
-// CWmListBox::CWmListBox
-// ---------------------------------------------------------
-//
-CWmListBox::CWmListBox( CWmPlugin& aWmPlugin ):
-    CAknDouble2LargeStyleListBox(),
-    iWmPlugin( aWmPlugin )
-    {
-    iFindPaneIsVisible = EFalse;
-	iPressedDown = EFalse;
-    }
-
-// ---------------------------------------------------------
-// CWmListBox::~CWmListBox
-// ---------------------------------------------------------
-//
-CWmListBox::~CWmListBox()
-    {
-    iWidgetDatas.ResetAndDestroy();
-    }
-
-// ---------------------------------------------------------
-// CWmListBox::ConstructL
-// ---------------------------------------------------------
-//
-void CWmListBox::ConstructL(
-        const TRect& aRect,
-        const CCoeControl* aParent,
-        TInt aFlags )
-    {
-    CEikFormattedCellListBox::ConstructL( aParent, aFlags );
-    SetContainerWindowL( *aParent );    
-
-    // set model point to the widgets array
-    Model()->SetItemTextArray( &iWidgetDatas );
-    Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
-
-    SetRect( aRect );
-    }
-
-// ---------------------------------------------------------
-// CWmListBox::WidgetData
-// ---------------------------------------------------------
-//
-CWmWidgetData* CWmListBox::WidgetData()
-    {
-    TInt index = CurrentListBoxItemIndex();
-    return (index>=0 ? iWidgetDatas[index] : NULL);
-    }
-
-// ---------------------------------------------------------
-// CWmListBox::WidgetData
-// ---------------------------------------------------------
-//
-CWmWidgetData& CWmListBox::WidgetData( TInt aItemIndex )
-    {
-    return *iWidgetDatas[ RealIndex( aItemIndex ) ];
-    }
-
-// ---------------------------------------------------------
-// CWmListBox::AddWidgetDataL
-// ---------------------------------------------------------
-//
-void CWmListBox::AddWidgetDataL( CWmWidgetData* aWidgetData )
-    {
-    aWidgetData->SetObserver( this );
-    aWidgetData->SetLogoSize( LogoSize() );
-    iWidgetDatas.InsertInOrderAllowRepeatsL( aWidgetData,
-            SortOrder(EStoredOrder) );
-    }
-
-// ---------------------------------------------------------
-// CWmListBox::RemoveWidgetData
-// ---------------------------------------------------------
-//
-void CWmListBox::RemoveWidgetData( TInt aItemIndex )
-    {
-    TInt realIndex = RealIndex( aItemIndex );
-    TBool current = ( aItemIndex == CurrentItemIndex() );
-    // remove widget data
-    CWmWidgetData* data = iWidgetDatas[realIndex];
-    iWidgetDatas.Remove( realIndex );
-    delete data;
-
-    // reorganise
-    TRAP_IGNORE(
-        AknListBoxUtils::HandleItemRemovalAndPositionHighlightL(
-            this, realIndex, current ) );
-    }
-
-// ---------------------------------------------------------
-// CWmListBox::RedrawItem
-// ---------------------------------------------------------
-//
-void CWmListBox::RedrawItem( TInt aItemIndex )
-    {
-    View()->DrawItem( aItemIndex );
-    }
-
-// ---------------------------------------------------------
-// CWmListBox::SetSortOrderL
-// ---------------------------------------------------------
-//
-void CWmListBox::SetSortOrderL( TSortOrder aOrder )
-    {
-    // now sort the existing data
-    iWidgetDatas.Sort( SortOrder( aOrder ) );
-    DrawNow();
-    }
-
-// ---------------------------------------------------------
-// CWmListBox::CreateItemDrawerL
-// ---------------------------------------------------------
-//
-void CWmListBox::CreateItemDrawerL()
-    {
-    CFormattedCellListBoxData* cellData = CFormattedCellListBoxData::NewL();
-    CleanupStack::PushL( cellData );
-    iItemDrawer = CWmListItemDrawer::NewL(
-            iWmPlugin,
-            Model(),
-            iEikonEnv->DenseFont(),
-            cellData,
-            this );
-    CleanupStack::Pop(); // cellData
-    }
-
-// ---------------------------------------------------------
-// CWmListBox::HandleLayoutChanged
-// ---------------------------------------------------------
-//
-void CWmListBox::HandleLayoutChanged()
-    {
-	TSize ls = LogoSize();
-    for ( TInt i=0; i<iWidgetDatas.Count(); i++)
-        {
-        iWidgetDatas[i]->ReCreateLogo( ls );
-        }
-    }
-
-// ---------------------------------------------------------
-// CWmListBox::HandleWidgetDataChanged
-// ---------------------------------------------------------
-//
-void CWmListBox::HandleWidgetDataChanged( CWmWidgetData* aWidgetData )
-    {
-    if ( !iFindPaneIsVisible )
-        {
-        // spontaneous change in the model. Cause table to redraw
-        TInt index = iWidgetDatas.Find( aWidgetData );
-        if ( index >= 0 )
-            {
-            // redraw item.
-            RedrawItem( RealIndex( index ) );			
-            }
-        }
-    }
-
-// ---------------------------------------------------------
-// CWmListBox::SortOrder
-// ---------------------------------------------------------
-//
-TLinearOrder<CWmWidgetData> CWmListBox::SortOrder( TSortOrder aOrder )
-    {
-    if ( aOrder == EStoredOrder )
-        {
-        return TLinearOrder<CWmWidgetData>(
-                CWmWidgetData::CompareByPersistentWidgetOrder );
-        }
-    else
-        {
-        return TLinearOrder<CWmWidgetData>(
-                CWmWidgetData::CompareByName );
-        }
-    }
-
-// ---------------------------------------------------------
-// CWmListBox::CurrentListBoxItemIndex
-// ---------------------------------------------------------
-//
-TInt CWmListBox::CurrentListBoxItemIndex()
-    {
-    TInt index( KErrNotFound );
-    if ( Model()->NumberOfItems() > 0 )
-        {
-        index = CurrentItemIndex();
-        }
-    return RealIndex( index );
-    }
-
-// ---------------------------------------------------------
-// CWmListBox::RealIndex
-// ---------------------------------------------------------
-//
-TInt CWmListBox::RealIndex( TInt aIndex )
-    {
-    TInt realIndex = aIndex;
-    if ( iFindPaneIsVisible && aIndex >= 0 )
-        {
-        realIndex = static_cast<CAknFilteredTextListBoxModel*>(Model())->Filter()
-                ->FilteredItemIndex( aIndex );
-        }
-    return realIndex;    
-    }
-
-// ---------------------------------------------------------
-// CWmListBox::SizeChanged
-// ---------------------------------------------------------
-//
-void CWmListBox::SizeChanged()
-    {
-    CAknsListBoxBackgroundControlContext* context =     
-            static_cast<CAknsListBoxBackgroundControlContext*>(
-                    ItemDrawer()->FormattedCellData()->
-                        SkinBackgroundContext() );
-    if ( context ) context->SetRect( Rect() );
-    CAknDouble2LargeStyleListBox::SizeChanged();
-    }
-
-// ---------------------------------------------------------
-// CWmListBox::Draw
-// ---------------------------------------------------------
-//
-void CWmListBox::Draw( const TRect& aRect ) const
-    {
-    CWindowGc& gc = SystemGc(); 
-    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
-    MAknsControlContext* cc = AknsDrawUtils::ControlContext( this );
-    AknsDrawUtils::Background( skin, cc, this, gc, Rect() );
-    CAknDouble2LargeStyleListBox::Draw( aRect );
-    }
-
-// ---------------------------------------------------------
-// CWmListBox::HandlePointerEventL
-// ---------------------------------------------------------
-//
-void CWmListBox::HandlePointerEventL( const TPointerEvent& 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() );
-			}
-		}
-
-	CAknDouble2LargeStyleListBox::HandlePointerEventL( aPointerEvent );	
-    }
-
-// ---------------------------------------------------------
-// CWmListBox::LogoSize
-// ---------------------------------------------------------
-//
-TSize CWmListBox::LogoSize()
-    {
-    TSize size( KLogoWidth,KLogoHeight );
-    TInt val = ( ItemHeight() - KBottomMarginBig * 4 );
-    if ( val > 0 )
-        {
-        size.SetSize( val, val );     
-        }
-    return size;
-    }
-
-// ---------------------------------------------------------
-// CWmListBox::DefaultLogo
-// ---------------------------------------------------------
-//
-const CFbsBitmap* CWmListBox::DefaultLogo()
-    {
-    CWmListItemDrawer* itemDrawer = 
-                    static_cast <CWmListItemDrawer*>( iItemDrawer );
-    if ( itemDrawer )
-        {
-        return itemDrawer->DefaultLogoImage();
-        }
-    return NULL;
-    }
-
-// ---------------------------------------------------------
-// CWmListBox::DefaultMask
-// ---------------------------------------------------------
-//
-const CFbsBitmap* CWmListBox::DefaultMask()
-    {
-    CWmListItemDrawer* itemDrawer = 
-                    static_cast <CWmListItemDrawer*>( iItemDrawer );
-    if ( itemDrawer )
-        {
-        return itemDrawer->DefaultLogoMask();
-        }
-    return NULL;
-    }
-
-// End of File
-
--- a/widgetmanager/src/wmmaincontainer.cpp	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1323 +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:
-* Implementation of the container control for WidgetManager application.
-*
-*/
-
-// INCLUDE FILES
-#include <aknViewAppUi.h>
-#include <eikappui.h>
-#include <widgetmanagerview.rsg>
-#include <coemain.h>
-#include <eikenv.h>
-#include <barsread.h>
-#include <AknUtils.h>
-#include <barsread.h>
-#include <StringLoader.h>
-#include <eikenv.h>
-#include <AknIconArray.h>
-#include <aknstyluspopupmenu.h> 
-#include <avkon.loc>
-#include <aknlayout.cdl.h>
-#include <layoutmetadata.cdl.h>
-#include <aknlayoutscalable_avkon.cdl.h>
-#include <AknsSkinInstance.h>
-#include <apgicnfl.h>
-#include <AknIconUtils.h>
-#include <AknsDrawUtils.h>
-#include <aknenv.h>
-#include <aknlists.h>
-#include <eikclbd.h>
-#include <aknsfld.h>
-#include <AknLayout.lag>
-#include <aknlayoutscalable_avkon.cdl.h>
-#include <AknsBasicBackgroundControlContext.h>
-#include <apgcli.h>
-#include <widgetmanager.mbg>
-#include <avkon.rsg>
-#include <coecobs.h>
-#include <coecntrl.h>
-#include <SWInstApi.h> //installer
-#include <WidgetRegistryClient.h> // widgetreqistry
-#include <aknbutton.h> // CAknButton
-#include <SchemeHandler.h> // for starting the OVI client
-#include <featmgr.h>     // FeatureManager
-#include <hlplch.h>      // HlpLauncher
-#include <csxhelp/hmsc.hlp.hrh>
-#include <aisystemuids.hrh>
-
-#include "wmcommon.h"
-#include "wmplugin.h"
-#include "wmmaincontainer.h"
-#include "wmmaincontainerview.h"
-#include "wmresourceloader.h"
-#include "widgetmanager.hrh"
-#include "wmlistbox.h"
-#include "wmpersistentwidgetorder.h"
-#include "wmdetailsdlg.h"
-#include "wmwidgetloaderao.h"
-
-// CONSTANTS
-const TInt KTextLimit = 40; // Text-limit for find-field
-const TInt KMinWidgets = 1; // minimum number of widgets to show findpane
-_LIT8( KWrtMime, "application/x-nokia-widget");
-
-// ---------------------------------------------------------
-// CWmMainContainer::CWmMainContainer()
-// ---------------------------------------------------------
-//
-CWmMainContainer::CWmMainContainer( CWmPlugin& aWmPlugin )
-    :iWmPlugin( aWmPlugin )
-	{
-    iWidgetsList = NULL;
-    iFindbox = NULL;
-    iFindPaneIsVisible = EFalse;
-    iBgContext = NULL;
-    iFocusMode = ENowhere;
-    iClosingDown = EFalse;
-	}
-
-// ---------------------------------------------------------
-// CWmMainContainer::~CWmMainContainer()
-// ---------------------------------------------------------
-//
-CWmMainContainer::~CWmMainContainer()
-	{
-	RemoveCtrlsFromStack();
-    Components().ResetAndDestroy();
-    delete iWidgetLoader;
-    iWidgetsList = NULL;
-    iOviPortal = NULL;
-    iFindbox = NULL;
-	delete iBgContext;
-	}
-
-// ---------------------------------------------------------
-// CWmMainContainer::NewL
-// ---------------------------------------------------------
-//
-CWmMainContainer* CWmMainContainer::NewL( 
-		const TRect& aRect, 
-		const CCoeControl* aParent, 
-		MEikCommandObserver* aCommandObserver,
-		CWmPlugin& aWmPlugin )
-	{
-	CWmMainContainer* self = CWmMainContainer::NewLC( 
-			aRect, 
-			aParent, 
-			aCommandObserver,
-			aWmPlugin );
-	CleanupStack::Pop( self );
-	return self;
-	}
-
-// ---------------------------------------------------------
-// CWmMainContainer::NewLC
-// ---------------------------------------------------------
-//
-CWmMainContainer* CWmMainContainer::NewLC( 
-		const TRect& aRect, 
-		const CCoeControl* aParent, 
-    MEikCommandObserver* aCommandObserver,
-    CWmPlugin& aWmPlugin )
-	{
-	CWmMainContainer* self = new ( ELeave ) CWmMainContainer( aWmPlugin );
-	CleanupStack::PushL( self );
-	self->ConstructL( aRect, aParent, aCommandObserver );
-	return self;
-	}
-
-// ---------------------------------------------------------
-// ScreenRect
-// rectangle representing the screen
-// ---------------------------------------------------------
-//
-TRect ScreenRect()
-    {
-    TRect screen;
-    CCoeEnv* env = CCoeEnv::Static();
-    if ( env )
-        {
-        CWsScreenDevice* screenDevice = env->ScreenDevice();
-        if ( screenDevice )
-            screen.SetRect( TPoint(0,0), screenDevice->SizeInPixels() );
-        }
-    return screen;
-    }
-
-// ---------------------------------------------------------
-// CWmMainContainer::ConstructL
-// ---------------------------------------------------------
-//
-void CWmMainContainer::ConstructL( 
-		const TRect& aRect, 
-		const CCoeControl* aParent, 
-        MEikCommandObserver* /*aCommandObserver*/ )
-	{
-    // Initialize control array
-	InitComponentArrayL();
-	Components().SetControlsOwnedExternally( ETrue );
-
-	// create the UI
-	if ( aParent == NULL )
-	    {
-		CreateWindowL();
-		iParent = this;
-	    }
-	else
-	    {
-	    SetContainerWindowL( *aParent );
-	    iParent = aParent;
-	    }
-
-	// background context
-	iBgContext = CAknsBasicBackgroundControlContext::NewL( 
-	        KAknsIIDQsnBgScreen, ScreenRect() , ETrue);
-
-	// set up controls
-	InitializeControlsL( aRect );
-
-	// set size and activate
-	SetRect( aRect );
-	if ( !aParent )
-        {
-        ActivateL();
-        }
-	
-	}
-
-// ---------------------------------------------------------
-// CWmMainContainer::SizeChanged
-// ---------------------------------------------------------
-//
-void CWmMainContainer::SizeChanged()
-	{
-	CCoeControl::SizeChanged();
-    iBgContext->SetRect( ScreenRect() );
-	TRAP_IGNORE( LayoutControlsL() );
-	}
-
-// ---------------------------------------------------------
-// CWmMainContainer::LayoutControlsL
-// ---------------------------------------------------------
-//
-void CWmMainContainer::LayoutControlsL()
-	{
-	TRect rect = Rect();
-	TBool landscape = ( rect.Width() > rect.Height() );
-
-    // calculate layout (different in landscape and portrait)
-	TRect oviButtonRect;
-	TRect widgetsListRect;
-	if ( landscape )
-	    {
-	    iLayout = ELandscape;
-        const TInt KOffset = 2;
-        TInt oviButtonWidth = rect.Width() / 6;
-        widgetsListRect.SetRect(
-                TPoint( 0, 0 ),
-                TPoint( rect.Width() - oviButtonWidth - KOffset, rect.Height() ) );
-        oviButtonRect.SetRect(
-                TPoint( rect.Width() - oviButtonWidth, KOffset ),
-                TPoint( rect.Width() - KOffset, rect.Height() - KOffset ) );
-	    }
-	else
-	    {
-	    iLayout = EPortrait;
-	    const TInt KOffset = 2;
-	    TInt oviButtonHeight = rect.Height() / 8;
-	    oviButtonRect.SetRect(
-	            TPoint( KOffset, KOffset ),
-	            TPoint( rect.Width() - KOffset, oviButtonHeight ) );
-	    widgetsListRect.SetRect(
-	            TPoint( 0, oviButtonHeight + KOffset ),
-	            TPoint( rect.Width(), rect.Height() ) );
-	    }
-
-    // Apply layout to child controls
-	iOviPortal->SetRect( oviButtonRect );
-	iOviPortal->SetHighlightRect( oviButtonRect );
-    iWidgetsList->SetRect( widgetsListRect );
-    if( iFindbox && iFindPaneIsVisible )
-        {
-        // resizes listbox/searchfield
-        HandleFindSizeChanged();
-        }
-
-    // change OVI portal button style
-    if ( landscape )
-        {
-        // vertical style button
-        iOviPortal->State()->SetTextL( KNullDesC() );
-        TInt iconDimension = oviButtonRect.Width() * 2 / 3;
-        iOviPortal->SetIconSize( TSize( iconDimension, iconDimension ) );
-        iOviPortal->SetTextVerticalAlignment( 
-                CAknButton::ECenter );
-        iOviPortal->SetTextAndIconAlignment(
-                CAknButton::EIconOverText );
-        }
-    else
-        {
-        // horizontal style button
-        HBufC* oviText = StringLoader::LoadLC( R_QTN_WM_GO_TO_OVI_STORE );
-        iOviPortal->State()->SetTextL( *oviText );
-        CleanupStack::PopAndDestroy( oviText );
-        TInt iconDimension = oviButtonRect.Height() * 2 / 3;
-        iOviPortal->SetIconSize( TSize( iconDimension, iconDimension ) );
-        iOviPortal->SetTextHorizontalAlignment( 
-                CGraphicsContext::ECenter );
-        iOviPortal->SetTextAndIconAlignment(
-                CAknButton::EIconBeforeText );
-        }
-
-    DrawDeferred();
-	}
-
-// ---------------------------------------------------------
-// CWmMainContainer::OfferKeyEventL
-// ---------------------------------------------------------
-//
-TKeyResponse CWmMainContainer::OfferKeyEventL( 
-		const TKeyEvent& aKeyEvent, 
-		TEventCode aType )
-	{
-    TKeyResponse keyResponse( EKeyWasNotConsumed );
-    
-    if ( iFindbox )
-        {
-        // open search field with alpha digit numbers
-        if ( aType == EEventKeyDown && !iFindPaneIsVisible && 
-        aKeyEvent.iScanCode < EStdKeyF1 &&
-            TChar(aKeyEvent.iScanCode).IsAlphaDigit() )
-            {
-            ActivateFindPaneL();
-            
-            if ( iFindPaneIsVisible )
-                {
-                return EKeyWasConsumed;
-                }
-            }
-        
-        if ( iFindPaneIsVisible )
-            {
-            // deactive the FindPane when Back has been pressed
-            if ( aType == EEventKeyDown && 
-                aKeyEvent.iScanCode == EStdKeyBackspace )
-                {
-                TBuf<KTextLimit> searchText;
-                iFindbox->GetSearchText( searchText );
-                if ( searchText == KNullDesC )
-                    {
-                    DeactivateFindPaneL();
-                    return EKeyWasConsumed;
-                    }
-                }
-            
-            // Cancel-selected need to unfocus findbox 
-            // to receive event in ProcessCommand
-            if ( aType == EEventKeyDown 
-            && aKeyEvent.iScanCode == EStdKeyDevice1 )
-                {
-                iFindbox->SetFocus( EFalse );
-                UpdateFocusMode();
-                return EKeyWasConsumed;
-                }
-
-            if ( aKeyEvent.iScanCode == EStdKeyNo ||
-                aKeyEvent.iCode == EKeyNo )
-                {
-                DeactivateFindPaneL();
-                return EKeyWasConsumed;
-                }
-
-            // find items with all event codes (that's the reason why there is EEventKey instead of aType)
-            TBool needsRefresh( EFalse );
-            keyResponse = AknFind::HandleFindOfferKeyEventL( 
-                                                aKeyEvent, EEventKey, this, 
-                                iWidgetsList, iFindbox, ETrue, needsRefresh );            
-            if ( needsRefresh )
-                {
-                DrawNow();
-                }
-            }
-        }
-
-    // check special cases for movement between controls
-    if ( keyResponse == EKeyWasNotConsumed && !iFindPaneIsVisible )
-         {
-         keyResponse = MoveFocusByKeys( aKeyEvent, aType );
-         }
-
-    // pass key event except backpace or delete key event to widgets list if focused
-    if ( keyResponse == EKeyWasNotConsumed && iWidgetsList->IsFocused() )
-        {
-        if ( (aType == EEventKey) && (aKeyEvent.iCode == EKeyBackspace || aKeyEvent.iCode == EKeyDelete))
-            {
-            if( CanDoUninstall() )
-                {
-                UninstallWidgetL();
-                }
-            else
-                {
-                CWmWidgetData* data = iWidgetsList->WidgetData();
-                if( data != NULL )
-                    iWmPlugin.ResourceLoader().InfoPopupL(
-                         R_QTN_WM_UNINST_NOT_ALLOWED, data->Name() );
-                }
-            }
-        else 
-            {
-			//passing to listbox handler
-            keyResponse = iWidgetsList->OfferKeyEventL( 
-                    aKeyEvent, aType );
-            }
-        }
-
-    // pass key event to OVI portal if focused
-    if ( keyResponse == EKeyWasNotConsumed && iOviPortal->IsFocused() )
-        {
-        keyResponse = iOviPortal->OfferKeyEventL( 
-                            aKeyEvent, aType );
-        }
-
-    if ( keyResponse == EKeyWasConsumed )
-        DrawDeferred();
-
-	// Do not let UI framework forward the keys to child controls as
-	// we have already done that.
-    return EKeyWasConsumed;
-	}
-
-
-// ---------------------------------------------------------
-// CWmMainContainer::MoveFocusByKeys
-// ---------------------------------------------------------
-//
-TKeyResponse CWmMainContainer::MoveFocusByKeys(
-                        const TKeyEvent& aKeyEvent, 
-                        TEventCode aType )
-    {
-    TKeyResponse keyResponse( EKeyWasNotConsumed );
-
-    if ( iWidgetsList->IsFocused() )
-        {
-        // ------------------------------------
-        // focus is in the WIDGETS LIST
-        // ------------------------------------
-        if ( iLayout == EPortrait &&
-                aKeyEvent.iScanCode == EStdKeyUpArrow &&
-                iWidgetsList->CurrentItemIndex() == 0 )
-            {
-            // widget list top -> up -> ovi button (portrait)
-            if ( aType == EEventKey )
-                SetFocusToOviButton();
-            keyResponse = EKeyWasConsumed;
-            }
-        else if ( iLayout == EPortrait &&
-                aKeyEvent.iScanCode == EStdKeyDownArrow &&
-                iWidgetsList->CurrentItemIndex() ==
-                   iWidgetsList->Model()->NumberOfItems() - 1 )
-            {
-            // widget list bottom -> down -> ovi button (portrait)
-            if ( aType == EEventKey )
-                SetFocusToOviButton();
-            keyResponse = EKeyWasConsumed;
-            }
-        else if ( iLayout == ELandscape &&
-                aKeyEvent.iScanCode == EStdKeyRightArrow )
-            {
-            // widget list -> right -> ovi button (landscape)
-            if ( aType == EEventKey )
-                SetFocusToOviButton();
-            keyResponse = EKeyWasConsumed;
-            }
-        else if ( iLayout == ELandscapeMirrored &&
-                aKeyEvent.iScanCode == EStdKeyLeftArrow )
-            {
-            // widget list -> left -> ovi button (landscape mirrored)
-            if ( aType == EEventKey )
-                SetFocusToOviButton();
-            keyResponse = EKeyWasConsumed;
-            }
-        }
-    else if ( iOviPortal->IsFocused() )
-        {
-        // ------------------------------------
-        // focus is in the OVI PORTAL BUTTON
-        // ------------------------------------
-        if ( iLayout == EPortrait &&
-                aKeyEvent.iScanCode == EStdKeyDownArrow )
-            {
-            // ovi button -> down -> widget list top (portrait)
-            if ( aType == EEventKey )
-                SetFocusToWidgetList( 0 );
-            keyResponse = EKeyWasConsumed;
-            }
-        else if ( iLayout == EPortrait &&
-                aKeyEvent.iScanCode == EStdKeyUpArrow )
-            {
-            // obi button -> up -> widget list bottom (portrait)
-            if ( aType == EEventKey )
-                SetFocusToWidgetList( iWidgetsList->Model()->NumberOfItems()-1 );
-            keyResponse = EKeyWasConsumed;
-            }
-        else if ( iLayout == ELandscape &&
-                aKeyEvent.iScanCode == EStdKeyLeftArrow )
-            {
-            // ovi button -> left -> widget list (landscape)
-            if ( aType == EEventKey )
-                SetFocusToWidgetList();
-            keyResponse = EKeyWasConsumed;
-            }
-        else if ( iLayout == ELandscapeMirrored &&
-                aKeyEvent.iScanCode == EStdKeyRightArrow )
-            {
-            // ovi button -> right -> widget list (landscape mirrored)
-            if ( aType == EEventKey )
-                SetFocusToWidgetList();
-            keyResponse = EKeyWasConsumed;
-            }
-        }
-    else
-        {
-        // ------------------------------------
-        // focus is NOWHERE
-        // ------------------------------------
-        if ( aKeyEvent.iScanCode == EStdKeyUpArrow ||
-                aKeyEvent.iScanCode == EStdKeyDownArrow ||
-                aKeyEvent.iScanCode == EStdKeyLeftArrow ||
-                aKeyEvent.iScanCode == EStdKeyRightArrow )
-            {
-            // no focus -> key hit -> focus list
-            if ( aType == EEventKey )
-                SetFocusToWidgetList();
-            keyResponse = EKeyWasConsumed;
-            }
-        }
-
-    return keyResponse;
-    }
-
-// ---------------------------------------------------------
-// CWmMainContainer::SetFocusToOviButton
-// ---------------------------------------------------------
-//
-void CWmMainContainer::SetFocusToOviButton()
-    {
-    iWidgetsList->SetFocus(EFalse);
-    iOviPortal->SetFocus(ETrue);
-    DrawDeferred();
-    UpdateFocusMode();
-    }
-
-// ---------------------------------------------------------
-// CWmMainContainer::SetFocusToWidgetList
-// ---------------------------------------------------------
-//
-void CWmMainContainer::SetFocusToWidgetList( TInt aIndex )
-    {
-    iOviPortal->SetFocus(EFalse);
-    iWidgetsList->SetFocus(ETrue);
-    if ( aIndex >= 0 && aIndex < iWidgetsList->Model()->NumberOfItems() )
-        {
-        iWidgetsList->SetCurrentItemIndex( aIndex );
-        }
-    DrawDeferred();
-    UpdateFocusMode();
-    }
-
-// ---------------------------------------------------------
-// CWmMainContainer::UpdateFocusMode
-// ---------------------------------------------------------
-//
-void CWmMainContainer::UpdateFocusMode()
-    {
-    if ( iOviPortal->IsFocused() )
-        {
-        // OVI BUTTON is focused 
-        iFocusMode = EOvi;
-        }
-    else if( ( iFindPaneIsVisible ) && 
-        ( iFindbox->IsFocused() || iWidgetsList->IsFocused() ) )
-        {
-        // FIND MODE
-        iFocusMode = EFind;
-        }
-    else if ( iWidgetsList->IsFocused() )
-        {
-        // WIDGETS LIST is focused 
-        iFocusMode = EList;
-        }
-    else
-        {
-        // NO focus
-        iFocusMode = ENowhere;
-        }
-    }
-
-// ---------------------------------------------------------
-// CWmMainContainer::FindChildControlByPoint
-// ---------------------------------------------------------
-//
-CCoeControl* CWmMainContainer::FindChildControlByPoint(
-        const TPoint& aPoint )
-    {
-    CCoeControl* theControl = NULL;
-    CCoeControlArray::TCursor cursor = Components().Begin();
-    CCoeControl* c;
-    while((c=cursor.Control<CCoeControl>()) != NULL )
-        {
-        if(c->IsVisible())
-            {
-            if ( c->Rect().Contains( aPoint ) ) theControl = c;
-            }
-        cursor.Next();
-        }
-    return theControl;
-    }
-
-// ---------------------------------------------------------
-// CWmMainContainer::HandlePointerEventL
-// ---------------------------------------------------------
-//
-void CWmMainContainer::HandlePointerEventL( const TPointerEvent& aPointerEvent )
-    {
-    if ( !iClosingDown  )
-        {
-		
-		if (aPointerEvent.iType == TPointerEvent::EButton1Down)
-			{
-	        // Check if user clicked a child control
-	        CCoeControl* control = FindChildControlByPoint( aPointerEvent.iPosition );
-	        if ( control && !control->IsFocused() )
-	            {
-	            // 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;
-	            while ((c=cursor.Control<CCoeControl>()) != NULL )
-	                {
-	                if ( c != control && c->IsFocused() ) c->SetFocus( EFalse );
-	                cursor.Next();
-	                }
-	            // update focus mode accordingly
-	            UpdateFocusMode();
-	            // repaint
-	            DrawDeferred();
-	            }
-			}
-        
-        CCoeControl::HandlePointerEventL( aPointerEvent );
-        }
-    }
-
-// ---------------------------------------------------------
-// CWmMainContainer::InitializeControlsL
-// ---------------------------------------------------------
-//
-void CWmMainContainer::InitializeControlsL( const TRect& /*aRect*/ )
-	{
-	// Create OVI STORE button
-    iOviPortal = CAknButton::NewL();
-    iWmPlugin.ResourceLoader().LoadButtonL( *iOviPortal,
-            R_WM_PORTAL_BUTTON );
-    iOviPortal->SetMopParent( this );
-    iOviPortal->SetFocusing( ETrue );
-    AddControlL( iOviPortal, EOviPortal );
-    iOviPortal->SetContainerWindowL( *this );
-	// ToDo : replace 3-10 IID with real one when available (wk46)
-	iOviPortal->SetFrameAndCenterIds( 
-						KAknsIIDQgnHomeWmButton,
-						KAknsIIDQgnHomeWmButtonCenter,
-						KAknsIIDDefault,
-						KAknsIIDDefault,
-						KAknsIIDDefault,
-						KAknsIIDDefault,
-						KAknsIIDDefault,
-						KAknsIIDDefault,
-						KAknsIIDDefault,
-						KAknsIIDDefault );
-    iOviPortal->ActivateL();
-    iOviPortal->SetObserver( this );
-
-    // Create widget list box
-    iWidgetsList = CWmListBox::NewL(
-            iWmPlugin,
-            TRect(),
-            iParent );
-    iWidgetsList->SetMopParent( this );
-    AddControlL( iWidgetsList, EWidgetsList );
-	iWidgetsList->ActivateL();
-    iWidgetsList->SetListBoxObserver( this );
-    
-    // Create scroll bar.
-    iWidgetsList->CreateScrollBarFrameL( ETrue );
-    iWidgetsList->ScrollBarFrame()->SetScrollBarVisibilityL(
-        CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto );
-    iWidgetsList->UpdateScrollBarsL(); 
-    
-    // search field
-    iFindbox = CAknSearchField::NewL( *this,
-                        CAknSearchField::EAdaptiveSearch,
-                        0, KTextLimit );
-    AddControlL( iFindbox, EFindBox );
-
-    UpdateFocusMode();
-    StartLoadingWidgetsL();
-    }
-
-// ---------------------------------------------------------
-// CWmMainContainer::HandleWidgetListChanged
-// ---------------------------------------------------------
-//
-void CWmMainContainer::HandleWidgetListChanged()
-    {
-    TRAP_IGNORE( StartLoadingWidgetsL(); );
-    }
-
-// ---------------------------------------------------------
-// CWmMainContainer::StartLoadingWidgetsL
-// ---------------------------------------------------------
-//
-void CWmMainContainer::StartLoadingWidgetsL()
-    {
-    if ( !iWidgetLoader )
-        {
-        // create the widget loader AO
-        iWidgetLoader = CWmWidgetLoaderAo::NewL( iWmPlugin, *iWidgetsList );
-        }
-    iWidgetLoader->StartLoading();
-    }
-
-// ---------------------------------------------------------
-// CWmMainContainer::HandleResourceChange
-// ---------------------------------------------------------
-//
-void CWmMainContainer::HandleResourceChange( TInt aType )
-	{
-    CCoeControl::HandleResourceChange( aType );
-	
-    if ( KEikDynamicLayoutVariantSwitch == aType )
-        {
-        TRect rect;
-        AknLayoutUtils::LayoutMetricsRect( 
-                            AknLayoutUtils::EMainPane, rect );
-        SetRect( rect );
-        
-        // notify widgetlist
-        iWidgetsList->HandleLayoutChanged();
-        }
-	}
-
-
-// ---------------------------------------------------------
-// CWmMainContainer::MopSupplyObject
-// ---------------------------------------------------------
-//
-TTypeUid::Ptr CWmMainContainer::MopSupplyObject( TTypeUid aId )
-    {
-    if ( aId.iUid == MAknsControlContext::ETypeId )
-        {
-        return MAknsControlContext::SupplyMopObject( 
-                                            aId, iBgContext );
-        }
-    return CCoeControl::MopSupplyObject( aId );
-    }
-
-// ---------------------------------------------------------
-// CWmMainContainer::Draw
-// ---------------------------------------------------------
-//
-void CWmMainContainer::Draw( const TRect& /*aRect*/ ) const
-	{
-	CWindowGc& gc = SystemGc();	
-    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
-    MAknsControlContext* cc = AknsDrawUtils::ControlContext( this );
-    AknsDrawUtils::Background( skin, cc, this, gc, Rect() );
-	}
-
-// ---------------------------------------------------------
-// CWmMainContainer::AddControlL
-// ---------------------------------------------------------
-//
-void CWmMainContainer::AddControlL( 
-                                CCoeControl* aControl, 
-                                TInt aControlId )
-    {
-    Components().AppendLC( aControl, aControlId ); // Ownership transfered 
-    CleanupStack::Pop(aControl);    
-    iWmPlugin.ViewAppUi().AddToStackL( aControl );
-    aControl->MakeVisible( ETrue );
-    }
-
-// ---------------------------------------------------------
-// CWmMainContainer::PortalSelected
-// ---------------------------------------------------------
-//
-TBool CWmMainContainer::PortalSelected()
-    {    
-    return ( iFocusMode == EOvi );
-    }
-
-// ---------------------------------------------------------
-// CWmMainContainer::WidgetSelected
-// ---------------------------------------------------------
-//
-TBool CWmMainContainer::WidgetSelected() 
-    {
-    return ( iFocusMode == EList ) || ( iFocusMode == EFind );
-    }
-
-// ---------------------------------------------------------
-// CWmMainContainer::CanDoAdd
-// ---------------------------------------------------------
-//
-TBool CWmMainContainer::CanDoAdd()
-    {
-    TBool retVal = EFalse;
-    CWmWidgetData* data = iWidgetsList->WidgetData();
-    if ( WidgetSelected() && data )
-        {
-        if ( data->HsContentInfo().CanBeAdded() )
-            retVal = ETrue;
-        }
-    return retVal;
-    }
-
-// ---------------------------------------------------------
-// CWmMainContainer::CanDoUninstall
-// ---------------------------------------------------------
-//
-TBool CWmMainContainer::CanDoUninstall() 
-    {
-    TBool retVal( EFalse );
-    CWmWidgetData* data = iWidgetsList->WidgetData();
-    if ( WidgetSelected() && data )
-        {
-        if ( data->WidgetType() == CWmWidgetData::ECps &&
-                data->PublisherUid() != KNullUid )
-            {
-            retVal = ETrue;
-            }
-        }
-    return retVal;
-    }
-
-// ---------------------------------------------------------
-// CWmMainContainer::CanDoLaunch
-// ---------------------------------------------------------
-//
-TBool CWmMainContainer::CanDoLaunch() 
-    {
-    TBool retVal(EFalse);
-    if ( WidgetSelected() )
-        {
-        CWmWidgetData* data = iWidgetsList->WidgetData();        
-        if ( data->WidgetType() == CWmWidgetData::ECps &&
-            data->PublisherUid() != KNullUid )
-            {
-            retVal = ETrue;
-            }
-        }
-    return retVal;
-    }
-
-// ---------------------------------------------------------
-// CWmMainContainer::CanDoFind
-// ---------------------------------------------------------
-//
-TBool CWmMainContainer::CanDoFind()
-    {
-    TBool canDo( !iFindPaneIsVisible );
-    if ( canDo )
-        {
-        canDo = ( iFocusMode == EList || iFocusMode == ENowhere );
-        }
-    return canDo;
-    }
-
-// ---------------------------------------------------------
-// CWmMainContainer::CanDoSort
-// ---------------------------------------------------------
-//
-TBool CWmMainContainer::CanDoSort()
-    {
-    return !iFindPaneIsVisible;
-    }
-
-// ---------------------------------------------------------
-// CWmMainContainer::CanDoDetails
-// ---------------------------------------------------------
-//
-TBool CWmMainContainer::CanDoDetails()
-    {
-    return WidgetSelected();
-    }
-
-// ---------------------------------------------------------
-// CWmMainContainer::CanDoHelp
-// ---------------------------------------------------------
-//
-TBool CWmMainContainer::CanDoHelp()
-    {
-    return FeatureManager::FeatureSupported( KFeatureIdHelp );
-    }
-
-// ---------------------------------------------------------------------------
-// CWmMainContainer::AddWidgetToHomeScreenL
-// ---------------------------------------------------------------------------
-//
-void CWmMainContainer::AddWidgetToHomeScreenL()
-    {
-    CWmWidgetData* data = iWidgetsList->WidgetData();
-    if ( data )
-        {
-        if ( iFindbox && iFindPaneIsVisible )
-            {
-            DeactivateFindPaneL();
-            }
-
-        SetExitStatus( iWmPlugin.ContentController().AddWidgetL(
-            data->HsContentInfo() ) );
-        
-        iWmPlugin.Deactivate();
-        }
-
-    }
-
-// ---------------------------------------------------------------------------
-// CWmMainContainer::SetExitStatus
-// ---------------------------------------------------------------------------
-//
-void CWmMainContainer::SetExitStatus( TInt aExitStatus )
-    {
-    iExitStatus = aExitStatus;
-    }
-
-// ---------------------------------------------------------------------------
-// CWmMainContainer::ExitStatus
-// ---------------------------------------------------------------------------
-//
-TInt CWmMainContainer::ExitStatus( )
-    {
-    return iExitStatus;
-    }
-	
-// ---------------------------------------------------------------------------
-// CWmMainContainer::LaunchWidgetL
-// ---------------------------------------------------------------------------
-//
-void CWmMainContainer::LaunchWidgetL()
-    {
-    if ( CanDoLaunch() )
-        {
-        CWmWidgetData* data = iWidgetsList->WidgetData();
-        
-        HBufC* param = KNullDesC().AllocLC(); // launch params
-        
-        RApaLsSession appArc;
-        User::LeaveIfError( appArc.Connect() ); // connect to AppArc server
-        CleanupClosePushL( appArc );
-        TThreadId id;
-        User::LeaveIfError( appArc.StartDocument(
-            *param, data->PublisherUid(), id ) );
-    
-        CleanupStack::PopAndDestroy( &appArc );      
-        CleanupStack::PopAndDestroy( param );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CWmMainContainer::ActivateFindPaneL
-// ---------------------------------------------------------------------------
-//
-void CWmMainContainer::ActivateFindPaneL()
-    {
-    if ( iFindbox && !iFindPaneIsVisible &&
-            iWidgetsList->Model()->NumberOfItems() > KMinWidgets )
-        {
-		// enable filtering
-        CAknFilteredTextListBoxModel* m = 
-                static_cast <CAknFilteredTextListBoxModel*> ( iWidgetsList->Model() );
-        if ( m )
-            {
-            m->CreateFilterL( iWidgetsList, iFindbox );
-            if ( m->Filter() )
-                {
-                m->Filter()->SetParentControl( this );
-                }
-            }
-
-        iFindbox->ActivateL();
-        iFindbox->ResetL();
-        iFindbox->SetSearchTextL( KNullDesC );
-        iFindbox->SetSkinEnabledL( ETrue );
-
-        iFindPaneIsVisible = ETrue;
-        iFindbox->MakeVisible( ETrue );
-        
-        // layout listbox and findbox
-        LayoutControlsL();        
-        
-        iFindbox->SetFocus( ETrue );
-        iWidgetsList->SetFindPaneIsVisible( ETrue );
-
-        // set soft key set
-        CEikButtonGroupContainer* cbaGroup =
-            CEikButtonGroupContainer::Current();
-        cbaGroup->SetCommandSetL( R_AVKON_SOFTKEYS_OPTIONS_CANCEL__SELECT );
-        cbaGroup->DrawNow();
-
-        UpdateFocusMode();
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CWmMainContainer::DeactivateFindPaneL
-// ---------------------------------------------------------------------------
-//
-void CWmMainContainer::DeactivateFindPaneL()
-    {
-    if( iFindbox && iFindPaneIsVisible )
-	    {
-        // notify search field we're shutting down
-        TKeyEvent keyEvent = { EKeyNo, EStdKeyNo, 0, 0  };
-        iFindbox->OfferKeyEventL( keyEvent, EEventKey );
-        
-        // reset findbox
-        iFindbox->ResetL();
-
-        // reset filter
-        CAknFilteredTextListBoxModel* m = 
-                static_cast <CAknFilteredTextListBoxModel*> ( iWidgetsList->Model() );
-        if ( m && m->Filter() )
-            {
-            m->Filter()->ResetFilteringL();
-            m->RemoveFilter();
-            }
-
-        iFindbox->MakeVisible( EFalse );
-        iFindbox->SetFocus( EFalse );
-        iFindPaneIsVisible = EFalse;
-        iWidgetsList->SetFindPaneIsVisible( EFalse );
-        
-        LayoutControlsL();
-        iWidgetsList->SetFocus( ETrue );
-
-        // set soft key set
-        CEikButtonGroupContainer* cbaGroup =
-            CEikButtonGroupContainer::Current();
-        cbaGroup->SetCommandSetL( R_AVKON_SOFTKEYS_OPTIONS_BACK__SELECT );
-        cbaGroup->DrawNow();
-
-        UpdateFocusMode();
-        DrawNow();
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CWmMainContainer::SortListAlphabeticallyL
-// ---------------------------------------------------------------------------
-//
-void CWmMainContainer::SortListAlphabeticallyL()
-    {
-    if ( iWidgetsList )
-        {
-        iWidgetsList->SetSortOrderL( CWmListBox::EAlphabetical );
-       
-        //store changed list order
-        CWmPersistentWidgetOrder* widgetOrder =
-            CWmPersistentWidgetOrder::NewL( iWmPlugin.FileServer() );
-        CleanupStack::PushL( widgetOrder );
-        widgetOrder->StoreL( iWidgetsList->WidgetDataArray() );
-        CleanupStack::PopAndDestroy( widgetOrder );
-
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CWmMainContainer::UninstallWidgetL
-// ---------------------------------------------------------------------------
-//
-void CWmMainContainer::UninstallWidgetL()
-    {
-    if ( CanDoUninstall() )
-        {
-        CWmWidgetData* data = iWidgetsList->WidgetData();
-        
-        SwiUI::RSWInstLauncher installer;
-        User::LeaveIfError( installer.Connect() );
-        
-        installer.Uninstall( data->PublisherUid(), KWrtMime );
-        installer.Close();
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CWmMainContainer::OpenOviPortalL
-// ---------------------------------------------------------------------------
-//
-void CWmMainContainer::OpenOviPortalL()
-    {
-    _LIT( KParam, "{\"Parameters\": {\"cmd\": \"channel\", \"id\": \"tag:mosh.nokia.com,2009-04:atom/2.0/channels/10\" }}" );
-    _LIT( KHtmlFile, "C:\\private\\102829a0\\com.nokia.ovi.juniper.WRTClient\\Juniper\\Main.html" );
-    _LIT( KFileName, "securewidgetui.exe" );
-    _LIT( KUrl, "4 https://store.ovi.com/applications/");
-    
-    RApaLsSession appArcSession;
-    User::LeaveIfError( appArcSession.Connect() );
-    CleanupClosePushL( appArcSession );
-    
-    HBufC* param = HBufC::NewLC( KParam().Length() );
-    param->Des().Copy(KParam);
-    
-    TThreadId id;
-    CApaCommandLine* cmdLine = CApaCommandLine::NewLC(); 
-    cmdLine->SetCommandL( EApaCommandOpen ); 
-    cmdLine->SetExecutableNameL( KFileName );
-    cmdLine->SetDocumentNameL( KHtmlFile );
-    HBufC8* buf8 = HBufC8::NewLC( param->Des().Length() );
-    buf8->Des().Copy( *param );
-    cmdLine->SetOpaqueDataL( *buf8 );
-    cmdLine->SetTailEndL( *buf8 );
-    
-    TInt err = appArcSession.StartApp( *cmdLine, id );
-    if ( err == KErrNone )
-        {
-        _LIT( KSchemeTemplate, "ecwrtservices:command=launch&app=com.nokia.ovi.juniper.WRTClient&commandLine=");
-        const TInt KSecureWidgetWebAppSchemeHandlerUid = 0x102829B2;
-        
-        // Create scheme url to launch the widget
-        HBufC* schemeUrl = HBufC::NewLC( KSchemeTemplate().Length() + 
-                param->Des().Length() );
-        
-        schemeUrl->Des().Copy( KSchemeTemplate );
-        schemeUrl->Des().Append( *param );
-        
-        // Initialize scheme handler plugin
-        TUid dtorId;
-        CSchemeHandler* schemeHandler = reinterpret_cast<CSchemeHandler*>(
-                    REComSession::CreateImplementationL( 
-                            TUid::Uid( KSecureWidgetWebAppSchemeHandlerUid ), 
-                            dtorId, schemeUrl ) );
-        CleanupStack::PushL( schemeHandler );
-        
-        // Handle the scheme url
-        schemeHandler->HandleUrlEmbeddedL();
-        
-        CleanupStack::PopAndDestroy( schemeHandler );
-        REComSession::FinalClose();
-        CleanupStack::PopAndDestroy( schemeUrl );     
-        }
-    else
-        {
-        // Ovi store not found start browser
-        const TUid KOSSBrowserUidValue = { 0x10008D39 };
-        HBufC* param = HBufC::NewLC( KUrl().Length() );
-        param->Des().Copy( KUrl );
-        TUid id( KOSSBrowserUidValue );
-        
-        TApaTaskList taskList( CEikonEnv::Static()->WsSession() );
-        TApaTask task = taskList.FindApp(id);
-        if( task.Exists() )
-            {
-            task.BringToForeground();
-            HBufC8* param8 = HBufC8::NewLC(param->Length());
-            param8->Des().Append(*param);
-            task.SendMessage(TUid::Uid(0), *param8); // UID not used
-            CleanupStack::PopAndDestroy(param8);
-            }
-        else
-            {
-            if( !appArcSession.Handle() )
-                {
-                User::LeaveIfError( appArcSession.Connect() );
-                }
-            TThreadId thread;
-            User::LeaveIfError(appArcSession.StartDocument(*param, KOSSBrowserUidValue, thread));
-            appArcSession.Close();   
-            }
-        CleanupStack::PopAndDestroy( param );
-        }
-    
-    CleanupStack::PopAndDestroy( buf8 );
-    CleanupStack::PopAndDestroy( cmdLine );
-    CleanupStack::PopAndDestroy( param );
-    CleanupStack::PopAndDestroy( &appArcSession );
-
-    // unfocus OVI button
-	iOviPortal->SetFocus( EFalse );
-	iOviPortal->DrawDeferred();
-    UpdateFocusMode();
-    }
-
-// ---------------------------------------------------------------------------
-// CWmMainContainer::SelectL
-// ---------------------------------------------------------------------------
-//
-void CWmMainContainer::SelectL()
-    {
-    if ( WidgetSelected() )
-        AddWidgetToHomeScreenL();
-    else if ( PortalSelected() )
-        OpenOviPortalL();
-    else
-        SetFocusToWidgetList();
-    }
-
-// ---------------------------------------------------------------------------
-// CWmMainContainer::ShowHelpL
-// ---------------------------------------------------------------------------
-//
-void CWmMainContainer::ShowHelpL()
-    {
-    TUid fwUid = TUid::Uid( AI_UID3_AIFW_COMMON );
-    // retrieve resolve host application help context
-    CArrayFix<TCoeHelpContext>* helpContext =
-        iEikonEnv->EikAppUi()->AppHelpContextL();
-
-    // add the widget manager entry into the help context
-    CleanupStack::PushL( helpContext );
-    helpContext->InsertL( 0, TCoeHelpContext(
-            fwUid, KWM_HLP_WIDGET_COLLECTION ) );
-    CleanupStack::Pop( helpContext );
-
-    // launch help
-    HlpLauncher::LaunchHelpApplicationL(
-          iEikonEnv->WsSession(),
-          helpContext );
-    helpContext = 0; // HlpLauncher takes ownership of helpContext
-    }
-
-// ---------------------------------------------------------------------------
-// CWmMainContainer::RemoveCtrlsFromStack
-// ---------------------------------------------------------------------------
-//
-void CWmMainContainer::RemoveCtrlsFromStack()
-    {    
-    for ( TInt i=0; i < CountComponentControls(); i++ ) 
-        {
-        CCoeControl* ctl = ComponentControl( i ) ;
-        if ( ctl )
-            {
-            iWmPlugin.ViewAppUi().RemoveFromStack( ctl );
-            }
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CWmMainContainer::HandleListBoxEventL
-// ---------------------------------------------------------------------------
-//
-void CWmMainContainer::HandleListBoxEventL(
-        CEikListBox* /*aListBox*/, TListBoxEvent aEventType )
-    {
-    if ( !iClosingDown && ( aEventType == EEventEnterKeyPressed ||
-            aEventType == EEventItemSingleClicked ) )
-        {
-        AddWidgetToHomeScreenL();
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CWmMainContainer::HandleControlEventL
-// ---------------------------------------------------------------------------
-//
-void CWmMainContainer::HandleControlEventL(
-        CCoeControl* aControl, TCoeEvent aEventType )
-    {
-    if ( !iClosingDown && aControl == iOviPortal && aEventType == EEventStateChanged )
-        {
-        OpenOviPortalL();
-        }
-    }
-
-// ----------------------------------------------------
-// CWmMainContainer::LaunchDetailsDialogL
-// ----------------------------------------------------
-//
-void CWmMainContainer::LaunchDetailsDialogL()
-    {
-    CWmWidgetData* data = iWidgetsList->WidgetData();
-    if ( data )
-        {
-        const CFbsBitmap* logo = ( data->LogoImage() ) ? 
-                    data->LogoImage() : iWidgetsList->DefaultLogo();
-        const CFbsBitmap* mask = ( data->LogoImageMask() ) ? 
-                    data->LogoImageMask() : iWidgetsList->DefaultMask();
-        
-        TPtrC description = ( data->Description().Length() > 0 ) ? 
-            data->Description() : iWmPlugin.ResourceLoader().NoDescriptionText();
-        CWmDetailsDlg* dlg = CWmDetailsDlg::NewL(
-                data->Name(), description, 
-                data->HsContentInfo().CanBeAdded(),
-                logo, mask, iBgContext );
-
-        if ( dlg && dlg->ExecuteLD() == ECbaAddToHs )
-            {
-            AddWidgetToHomeScreenL();
-            }
-        }
-    }
-
-// ----------------------------------------------------
-// CWmMainContainer::SetClosingDown
-// ----------------------------------------------------
-//
-void CWmMainContainer::SetClosingDown( TBool aClosingDown )
-    {
-    iClosingDown = aClosingDown;
-    }
-
-// ----------------------------------------------------
-// CWmMainContainer::ClosingDown
-// ----------------------------------------------------
-//
-TBool CWmMainContainer::ClosingDown()
-    {
-    return iClosingDown;
-    }
-
-// ----------------------------------------------------
-// CWmMainContainer::HandleFindSizeChanged
-// ----------------------------------------------------
-//
-void CWmMainContainer::HandleFindSizeChanged()
-    {    
-    TAknWindowLineLayout findPane = 
-            AknLayoutScalable_Avkon::find_pane().LayoutLine();
-
-    TAknWindowLineLayout listPane;
-
-    TRect listRect = iWidgetsList->Rect();
-    listPane.il = listRect.iTl.iX;
-    listPane.it = listRect.iTl.iY;
-    listPane.ib = 0;
-    listPane.iH = TUint16( listRect.Height() - ( findPane.iH - 1 ) );
-    listPane.iW = listRect.Width();
-    listPane.ir = ELayoutEmpty;
-    findPane.iW = listPane.iW;
-
-    TRect rect = Rect();
-    AknLayoutUtils::LayoutControl( iFindbox, rect, findPane );
-    AknLayoutUtils::LayoutControl( iWidgetsList, rect, listPane );
-    
-    iWidgetsList->DrawNow();
-    }
-
-
-// End of File
-
--- a/widgetmanager/src/wmmaincontainerview.cpp	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,436 +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:
-* Implementation of the main container view for WidgetManager application.
-*
-*/
-
-// INCLUDES
-#include <aknViewAppUi.h>
-#include <eikmenub.h>
-#include <avkon.hrh>
-#include <akncontext.h>
-#include <akntitle.h>
-#include <StringLoader.h>
-#include <barsread.h>
-#include <eikbtgpc.h>
-#include <widgetmanagerview.rsg>
-#include <hscontentcontroller.h>
-
-#include "wmplugin.h"
-#include "widgetmanager.hrh"
-#include "wmmaincontainerview.h"
-#include "wmresourceloader.h"
-#include "wmmaincontainer.h"
-#include <avkon.rsg>
-
-
-// ---------------------------------------------------------
-// CWmMainContainerView::CWmMainContainerView()
-// ---------------------------------------------------------
-//
-CWmMainContainerView::CWmMainContainerView(
-        CWmPlugin& aWmPlugin ):
-    iWmPlugin( aWmPlugin )
-	{
-	iWmMainContainer = NULL;
-	}
-
-// ---------------------------------------------------------
-// CWmMainContainerView::~CWmMainContainerView()
-// ---------------------------------------------------------
-//
-CWmMainContainerView::~CWmMainContainerView()
-	{
-    if ( iWmMainContainer != NULL )
-        {
-        AppUi()->RemoveFromViewStack( *this, iWmMainContainer );
-        delete iWmMainContainer;
-        iWmMainContainer = NULL;
-        }
-	}
-
-// ---------------------------------------------------------
-// CWmMainContainerView::NewL
-// ---------------------------------------------------------
-//
-CWmMainContainerView* CWmMainContainerView::NewL(
-        CWmPlugin& aWmPlugin )
-	{
-	CWmMainContainerView* self = CWmMainContainerView::NewLC(
-	        aWmPlugin );
-	CleanupStack::Pop( self );
-	return self;
-	}
-
-// ---------------------------------------------------------
-// CWmMainContainerView::NewLC
-// ---------------------------------------------------------
-//
-CWmMainContainerView* CWmMainContainerView::NewLC(
-        CWmPlugin& aWmPlugin )
-	{
-	CWmMainContainerView* self = 
-        new ( ELeave ) CWmMainContainerView( aWmPlugin );
-	CleanupStack::PushL( self );
-	self->ConstructL();
-	return self;
-	}
-
-// ---------------------------------------------------------
-// CWmMainContainerView::ConstructL
-// ---------------------------------------------------------
-//
-void CWmMainContainerView::ConstructL()
-	{
-	BaseConstructL( R_WM_MAIN_CONTAINER_VIEW );
-	}
-
-// ---------------------------------------------------------
-// CWmMainContainerView::Id
-// ---------------------------------------------------------
-//
-TUid CWmMainContainerView::Id() const
-	{
-	return TUid::Uid( EWmMainContainerViewId );
-	}
-
-// ---------------------------------------------------------
-// CWmMainContainerView::HandleCommandL
-// ---------------------------------------------------------
-//
-void CWmMainContainerView::HandleCommandL( TInt aCommand )
-	{
-    if ( !iWmMainContainer->ClosingDown() )
-        {
-        switch ( aCommand )
-            {
-            case EWmMainContainerViewOpenPortalMenuItemCommand:
-                HandleOpenMenuItemSelectedL();
-                break;
-            case EWmMainContainerViewAddMenuItemCommand:
-                HandleAddMenuItemSelectedL();
-                break;
-            case EWmMainContainerViewLaunchMenuItemCommand:
-                HandleLaunchMenuItemSelectedL();
-                break;
-            case EWmMainContainerViewSearchMenuItemCommand: // flow through
-            case EAknSoftkeySearch:
-                HandleSearchMenuItemSelectedL();
-                break;
-            case EWmMainContainerViewSortAlphaMenuItemCommand:
-                HandleSortAlphaMenuItemSelectedL();
-                break;
-            case EWmMainContainerViewUninstallMenuItemCommand:
-                HandleUninstallMenuItemSelectedL();
-                break;
-            case EWmMainContainerViewHelpMenuItemCommand:
-                HandleHelpMenuItemSelectedL();
-                break;
-            case EWmMainContainerViewBackMenuItemCommand: // flow through
-            case EAknSoftkeyBack:
-                iWmPlugin.Deactivate();
-                break;
-            case EWmMainContainerViewWiddetDetailsMenuItemCommand:
-                HandleDetailsMenuItemSelectedL();
-                break;
-            case EAknSoftkeySelect:
-		        if ( iWmMainContainer )
-		            iWmMainContainer->SelectL();
-		        break;
-            case EAknSoftkeyCancel: // flow through
-            case EEikCmdCanceled:
-                {
-                HandleDeactivateFindPaneL();
-                break;
-                }
-            default:
-                break;
-            }
-        }
-	}
-
-// ---------------------------------------------------------
-// CWmMainContainerView::DoActivateL
-// ---------------------------------------------------------
-//
-void CWmMainContainerView::DoActivateL( 
-		const TVwsViewId& aPrevViewId,
-		TUid /*aCustomMessageId*/,
-		const TDesC8& /*aCustomMessage*/ )
-	{
-	if ( iWmMainContainer == NULL )
-		{
-		iWmMainContainer = CreateContainerL();
-		iWmMainContainer->SetClosingDown( EFalse );
-		iWmMainContainer->SetMopParent( this );
-		AppUi()->AddToStackL( *this, iWmMainContainer );
-		}
-	
-	SetupStatusPaneL();
-   
-    iWmMainContainer->SetExitStatus( KErrNone );
-    iWmPlugin.MainViewActivated( aPrevViewId, iWmMainContainer );
-    StatusPane()->SwitchLayoutL( 
-            R_AVKON_STATUS_PANE_LAYOUT_USUAL_FLAT );
-    StatusPane()->ApplyCurrentSettingsL();
-    StatusPane()->DrawNow();
-    CEikButtonGroupContainer* bgc( Cba() );
-        
-    CEikCba* cba = static_cast< CEikCba* >( bgc->ButtonGroup() );
-    if ( cba ) 
-        {
-        
-        bgc->SetBoundingRect( TRect() );
-        cba->DrawNow();
-        }
-	}
-
-// ---------------------------------------------------------
-// CWmMainContainerView::DoDeactivate
-// ---------------------------------------------------------
-//
-void CWmMainContainerView::DoDeactivate()
-	{
-	TInt exitStatus = KErrNone;
-	if ( iWmMainContainer != NULL )
-		{
-		exitStatus = iWmMainContainer->ExitStatus();
-		AppUi()->RemoveFromViewStack( *this, iWmMainContainer );
-		delete iWmMainContainer;
-		iWmMainContainer = NULL;
-		}
-
-	// display error, if such exists
-    if ( exitStatus == KHsErrorViewFull ||
-            exitStatus == KHsErrorDoesNotFit )
-        {
-        TRAP_IGNORE( iWmPlugin.ResourceLoader().InfoPopupL(
-                R_QTN_HS_ADD_WIDGET_NO_SPACE_NOTE, KNullDesC ) );
-        }
-    else if ( exitStatus == KHsErrorMaxInstanceCountExceeded )
-        {
-        TRAP_IGNORE( iWmPlugin.ResourceLoader().InfoPopupL(
-                R_QTN_HS_ADD_WIDGET_MAX_COUNT_NOTE, KNullDesC ) );
-        }
-    else if ( exitStatus != KErrNone )
-        {
-        iWmPlugin.ResourceLoader().ErrorPopup( exitStatus );
-        }
-
-	iWmPlugin.MainViewDeactivated();
-	}
-
-// ---------------------------------------------------------
-// CWmMainContainerView::HandleStatusPaneSizeChange
-// ---------------------------------------------------------
-//
-void CWmMainContainerView::HandleStatusPaneSizeChange()
-	{
-	CAknView::HandleStatusPaneSizeChange();
-	
-	// this may fail, but we're not able to propagate exceptions here
-	TVwsViewId view;
-	AppUi()->GetActiveViewId( view );
-	if ( view.iViewUid == Id() )
-		{
-		if ( iWmMainContainer ) 
-		    {
-		    iWmMainContainer->SetRect( AppUi()->ClientRect() );
-		    }
-		}
-	
-	}
-
-// ---------------------------------------------------------
-// CWmMainContainerView::SetupStatusPaneL
-// ---------------------------------------------------------
-//
-void CWmMainContainerView::SetupStatusPaneL()
-	{	
-	// setup the title pane
-	TUid titlePaneUid = TUid::Uid( EEikStatusPaneUidTitle );
-	CEikStatusPaneBase::TPaneCapabilities subPaneTitle = 
-		StatusPane()->PaneCapabilities( titlePaneUid );
-	if ( subPaneTitle.IsPresent() && subPaneTitle.IsAppOwned() )
-		{
-		CAknTitlePane* title = static_cast< CAknTitlePane* >( 
-			StatusPane()->ControlL( titlePaneUid ) );
-		if ( title )
-		    {
-		    TResourceReader reader;
-            iEikonEnv->CreateResourceReaderLC( 
-                    reader, R_WM_MAIN_CONTAINER_TITLE_RESOURCE );
-            title->SetFromResourceL( reader );
-            title->DrawDeferred();
-            CleanupStack::PopAndDestroy(); // reader internal state
-		    }
-		}
-	}
-
-// ---------------------------------------------------------
-// CWmMainContainerView::CreateContainerL
-// ---------------------------------------------------------
-//
-CWmMainContainer* CWmMainContainerView::CreateContainerL()
-	{
-	return CWmMainContainer::NewL( ClientRect(), NULL, this, iWmPlugin );
-	}
-
-// ---------------------------------------------------------
-// CWmMainContainerView::DynInitMenuPaneL
-// ---------------------------------------------------------
-//
-void CWmMainContainerView::DynInitMenuPaneL( 
-        TInt aResourceId, CEikMenuPane* aMenuPane )
-    {
-    if ( aResourceId == R_WM_MAIN_CONTAINER_MENU_PANE &&
-         iWmMainContainer )
-        {
-        aMenuPane->SetItemDimmed( EWmMainContainerViewAddMenuItemCommand,
-                !iWmMainContainer->CanDoAdd() );
-        aMenuPane->SetItemDimmed( EWmMainContainerViewWiddetDetailsMenuItemCommand,
-                !iWmMainContainer->CanDoDetails() );
-        aMenuPane->SetItemDimmed( EWmMainContainerViewLaunchMenuItemCommand,
-                !iWmMainContainer->CanDoLaunch() );
-        aMenuPane->SetItemDimmed( EWmMainContainerViewSearchMenuItemCommand,
-                !iWmMainContainer->CanDoFind() );
-        aMenuPane->SetItemDimmed( EWmMainContainerViewSortAlphaMenuItemCommand,
-                !iWmMainContainer->CanDoSort() );
-        aMenuPane->SetItemDimmed( EWmMainContainerViewHelpMenuItemCommand,
-                !iWmMainContainer->CanDoHelp() );
-		aMenuPane->SetItemDimmed( EWmMainContainerViewUninstallMenuItemCommand,
-                !iWmMainContainer->CanDoUninstall() );
-        if ( !iWmMainContainer->PortalSelected() )
-            aMenuPane->DeleteMenuItem( EWmMainContainerViewOpenPortalMenuItemCommand );
-        if ( !iWmMainContainer->WidgetSelected() )
-            aMenuPane->DeleteMenuItem( EWmMainContainerViewAddMenuItemCommand );
-        }
-    }
-
-// ---------------------------------------------------------
-// CWmMainContainerView::HandleOpenMenuItemSelectedL
-// ---------------------------------------------------------
-//
-TBool CWmMainContainerView::HandleOpenMenuItemSelectedL()
-    {
-    if ( iWmMainContainer && iWmMainContainer->PortalSelected() )
-        {       
-        iWmMainContainer->OpenOviPortalL();
-        }
-    return ETrue;
-    }
-
-// ---------------------------------------------------------
-// CWmMainContainerView::HandleDetailsMenuItemSelectedL
-// ---------------------------------------------------------
-//
-TBool CWmMainContainerView::HandleDetailsMenuItemSelectedL()
-    {
-    if ( iWmMainContainer && iWmMainContainer->WidgetSelected() )
-        {       
-        iWmMainContainer->LaunchDetailsDialogL();
-        }
-    return ETrue;
-    }
-
-// ---------------------------------------------------------
-// CWmMainContainerView::HandleAddMenuItemSelectedL
-// ---------------------------------------------------------
-//
-TBool CWmMainContainerView::HandleAddMenuItemSelectedL()
-	{
-	if ( iWmMainContainer && iWmMainContainer->WidgetSelected() )
-	    {	    
-	    iWmMainContainer->AddWidgetToHomeScreenL();
-	    }
-	return ETrue;
-	}
-
-// ---------------------------------------------------------
-// CWmMainContainerView::HandleLaunchMenuItemSelectedL
-// ---------------------------------------------------------
-//
-TBool CWmMainContainerView::HandleLaunchMenuItemSelectedL()
-	{
-    if ( iWmMainContainer && iWmMainContainer->WidgetSelected() )
-        {
-        iWmMainContainer->LaunchWidgetL();
-        }
-	return ETrue;
-	}
-
-// ---------------------------------------------------------
-// CWmMainContainerView::HandleSearchMenuItemSelectedL
-// ---------------------------------------------------------
-//
-TBool CWmMainContainerView::HandleSearchMenuItemSelectedL()
-	{
-    if ( iWmMainContainer )
-        {
-        iWmMainContainer->ActivateFindPaneL();
-        }
-	return ETrue;
-	}
-
-// ---------------------------------------------------------
-// CWmMainContainerView::HandleSortAlphaMenuItemSelectedL
-// ---------------------------------------------------------
-//
-TBool CWmMainContainerView::HandleSortAlphaMenuItemSelectedL()
-    {
-    if ( iWmMainContainer )
-        {
-        iWmMainContainer->SortListAlphabeticallyL();
-        }
-    return ETrue;
-    }
-
-// ---------------------------------------------------------
-// CWmMainContainerView::HandleUninstallMenuItemSelectedL
-// ---------------------------------------------------------
-//
-TBool CWmMainContainerView::HandleUninstallMenuItemSelectedL()
-    {
-    if ( iWmMainContainer )
-        {
-        iWmMainContainer->UninstallWidgetL();
-        }
-    return ETrue;
-    }
-
-// ---------------------------------------------------------
-// CWmMainContainerView::HandleHelpMenuItemSelectedL
-// ---------------------------------------------------------
-//
-TBool CWmMainContainerView::HandleHelpMenuItemSelectedL()
-    {
-    iWmMainContainer->ShowHelpL();
-    return ETrue;
-    }
-
-// ---------------------------------------------------------
-// CWmMainContainerView::HandleDeactivateFindPaneL
-// ---------------------------------------------------------
-//
-TBool CWmMainContainerView::HandleDeactivateFindPaneL()
-    {
-    if ( iWmMainContainer )
-        {       
-        iWmMainContainer->DeactivateFindPaneL();
-        }
-    return ETrue;
-    }
-
-// End of file
--- a/widgetmanager/src/wmpersistentwidgetorder.cpp	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,244 +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:
-* Defines an ordered list of widget id's with persistence capability
-*
-*/
-
-// INCLUDES
-#include <s32file.h> // RFile
-#include <s32std.h> // streams
-#include <driveinfo.h>
-#include <sysutil.h> 
-
-#include "wmwidgetdata.h"
-#include "wmpersistentwidgetorder.h"
-
-// CONSTANTS
-_LIT( KStoreFileName, "wmlistorder.dat" );
-
-
-// ---------------------------------------------------------
-// CWmPersistentWidgetOrder::NewL
-// ---------------------------------------------------------
-//
-CWmPersistentWidgetOrder* CWmPersistentWidgetOrder::NewL( RFs& aFs )
-    {
-    CWmPersistentWidgetOrder* self =
-        new (ELeave) CWmPersistentWidgetOrder( aFs );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// ---------------------------------------------------------
-// CWmPersistentWidgetOrder::CWmPersistentWidgetOrder
-// ---------------------------------------------------------
-//
-CWmPersistentWidgetOrder::CWmPersistentWidgetOrder( RFs& aFs )
-    : iFs( aFs )
-    {
-    }
-
-// ---------------------------------------------------------
-// CWmPersistentWidgetOrder::ConstructL
-// ---------------------------------------------------------
-//
-void CWmPersistentWidgetOrder::ConstructL()
-    {
-    }
-
-// ---------------------------------------------------------
-// CWmPersistentWidgetOrder::~CWmPersistentWidgetOrder
-// ---------------------------------------------------------
-//
-CWmPersistentWidgetOrder::~CWmPersistentWidgetOrder()
-    {
-    CleanupArray();
-    }
-
-// ---------------------------------------------------------
-// CWmPersistentWidgetOrder::LoadL
-// ---------------------------------------------------------
-//
-void CWmPersistentWidgetOrder::LoadL()
-    {
-    // 1. empty the in-mempory storage
-    CleanupArray();
-    // 2. create stream for reading data from a file
-    TFileName storeFileName;
-    GetStoreFileNameL( storeFileName );
-    CPermanentFileStore* fileStore = NULL;
-    fileStore = CPermanentFileStore::OpenL(
-            iFs, storeFileName, EFileRead );
-    CleanupStack::PushL( fileStore );
-    RStoreReadStream reader;
-    reader.OpenLC( *fileStore, fileStore->Root() );
-    // 3. read all contents from the stream
-    TInt arrayCount = reader.ReadInt32L();
-    while( iTagArray.Count() < arrayCount )
-        {
-        TInt32 uid = reader.ReadInt32L();
-        TInt32 publisherIdLen = reader.ReadInt32L();
-        HBufC16* publisherId = HBufC16::NewLC(publisherIdLen);
-        TPtr16 publisherIdPtr = publisherId->Des();
-        reader.ReadL( publisherIdPtr, publisherIdLen );
-        iTagArray.AppendL( Tag( uid, publisherId ) );
-        CleanupStack::Pop( publisherId );
-        }
-    // 4. cleanup
-    CleanupStack::PopAndDestroy( &reader );
-    CleanupStack::PopAndDestroy( fileStore );
-    }
-
-// ---------------------------------------------------------
-// CWmPersistentWidgetOrder::StoreL
-// ---------------------------------------------------------
-//
-void CWmPersistentWidgetOrder::StoreL( const RWidgetDataValues& aArray )
-    {
-    // 1. empty the in-mempory storage
-    CleanupArray();
-    // 2. serialize the widget array tags to a local array
-    for( TInt i=0; i<aArray.Count(); ++i )
-        {
-        TInt32 uid = aArray[i]->Uid().iUid;
-        HBufC16* publisherId = aArray[i]->HsContentInfo().PublisherId().AllocLC();
-        iTagArray.AppendL( Tag( uid, publisherId ) );
-        CleanupStack::Pop( publisherId );
-        }
-    // 3. create stream for storing the data to a file
-    TFileName storeFileName;
-    GetStoreFileNameL( storeFileName );
-    CPermanentFileStore* fileStore = CPermanentFileStore::ReplaceLC(
-            iFs, storeFileName, EFileWrite );
-    fileStore->SetTypeL(KPermanentFileStoreLayoutUid);
-    RStoreWriteStream writer;
-    TStreamId id = writer.CreateLC( *fileStore );
-    // 4. write all content to the stream
-    writer.WriteInt32L( iTagArray.Count() );
-    for( TInt i=0; i<iTagArray.Count(); ++i )
-        {
-        writer.WriteInt32L( iTagArray[i].iUid );
-        writer.WriteInt32L( iTagArray[i].iPublisherId->Length() );
-        writer.WriteL( *iTagArray[i].iPublisherId,
-                iTagArray[i].iPublisherId->Length() );
-        }
-    // 5. check available space and commit the stream
-    TInt streamsize = writer.Sink()->SizeL();
-    TBool  noSpace = SysUtil::DiskSpaceBelowCriticalLevelL( &iFs, streamsize,  
-                                                                EDriveC ); 
-    if( noSpace )
-        {
-        //do nothing
-        }
-    else // there is enough free space
-        {
-        writer.CommitL();
-        fileStore->SetRootL(id);
-        fileStore->CommitL();        
-        }
-
-    // 6. cleanup
-    CleanupStack::PopAndDestroy( &writer );
-    CleanupStack::PopAndDestroy( fileStore );
-    }
-
-// ---------------------------------------------------------
-// CWmPersistentWidgetOrder::CleanupArray
-// ---------------------------------------------------------
-//
-void CWmPersistentWidgetOrder::CleanupArray()
-    {
-    for( TInt i=0; i<iTagArray.Count(); ++i )
-        {
-        delete iTagArray[i].iPublisherId;
-        iTagArray[i].iPublisherId = 0;
-        }
-    iTagArray.Close();
-    }
-
-// ---------------------------------------------------------
-// CWmPersistentWidgetOrder::GetStoreFileNameL
-// ---------------------------------------------------------
-//
-void CWmPersistentWidgetOrder::GetStoreFileNameL(
-        TDes& aPathBuf )
-    {
-    // get default drive for phone memory
-    TInt driveNum = EDriveC;
-    User::LeaveIfError( DriveInfo::GetDefaultDrive(
-        DriveInfo::EDefaultPhoneMemory, driveNum ) );
-    // make sure the directory exists
-    iFs.CreatePrivatePath( driveNum ); // ignore errors
-    // build the store path
-    TChar driveLetter;
-    User::LeaveIfError( iFs.DriveToChar( driveNum, driveLetter ) );
-    aPathBuf.Append( driveLetter );
-    aPathBuf.Append( _L(":") );
-    TFileName privatePath;
-    User::LeaveIfError( iFs.PrivatePath( privatePath ) );
-    aPathBuf.Append( privatePath );
-    aPathBuf.Append( KStoreFileName );
-    }
-
-// ---------------------------------------------------------
-// CWmPersistentWidgetOrder::IndexOf
-// ---------------------------------------------------------
-//
-TInt CWmPersistentWidgetOrder::IndexOf( const CWmWidgetData& aWidgetData ) const
-    {
-    TInt found = KErrNotFound;
-    for( TInt i=0; i<iTagArray.Count() && found<0; ++i )
-        {
-        if ( iTagArray[i].Matches( aWidgetData ) )
-            found = i;
-        }
-    return found;
-    }
-
-// ---------------------------------------------------------
-// CWmPersistentWidgetOrder::IsEmpty
-// ---------------------------------------------------------
-//
-TBool CWmPersistentWidgetOrder::IsEmpty() const
-    {
-    return iTagArray.Count() == 0;
-    }
-
-// ---------------------------------------------------------
-// CWmPersistentWidgetOrder::Tag::Tag
-// ---------------------------------------------------------
-//
-CWmPersistentWidgetOrder::Tag::Tag(
-        TInt32 aUid, HBufC16* aPublisherId )
-    {
-    iUid = aUid;
-    iPublisherId = aPublisherId;
-    }
-
-// ---------------------------------------------------------
-// CWmPersistentWidgetOrder::Tag::Matches
-// ---------------------------------------------------------
-//
-TBool CWmPersistentWidgetOrder::Tag::Matches(
-        const CWmWidgetData& aWidgetData ) const
-    {
-    return ( aWidgetData.Uid().iUid == iUid &&
-            aWidgetData.HsContentInfo().PublisherId() == *iPublisherId );
-    }
-
-
-// end of file
--- a/widgetmanager/src/wmplugin.cpp	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,177 +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:
-* widget manager plugin implementation
-*
-*/
-
-// INCLUDE FILES
-#include <bautils.h>
-#include <coemain.h>
-#include <aknViewAppUi.h>
-
-#include "wmcommon.h"
-#include "widgetmanager.hrh"
-#include "wmmaincontainer.h"
-#include "wmmaincontainerview.h"
-#include "wmresourceloader.h"
-#include "wmplugin.h"
-#include "wmeffectmanager.h"
-
-// ---------------------------------------------------------
-// CWmPlugin::NewL
-// ---------------------------------------------------------
-//
-CWmPlugin* CWmPlugin::NewL()
-    {
-    CWmPlugin* self=new(ELeave) CWmPlugin();
-    CleanupStack::PushL(self);
-    self->ConstructL();
-    CleanupStack::Pop(self);
-    return self;
-    }
-
-// ---------------------------------------------------------
-// CWmPlugin::~CWmPlugin
-// ---------------------------------------------------------
-//
-CWmPlugin::~CWmPlugin()
-    {
-    if ( iViewAppUi )
-        {
-        Deactivate();
-        iViewAppUi->RemoveView( TUid::Uid( EWmMainContainerViewId ) );
-        }
-    iWmMainContainer = NULL;
-    delete iResourceLoader;
-    delete iEffectManager;
-    }
-
-// ---------------------------------------------------------
-// CWmPlugin::CWmPlugin
-// ---------------------------------------------------------
-//
-CWmPlugin::CWmPlugin()
-    {
-    iPreviousViewUid.iViewUid = KNullUid;
-    }
-
-// ---------------------------------------------------------
-// CWmPlugin::ConstructL
-// ---------------------------------------------------------
-//
-void CWmPlugin::ConstructL()
-    {
-    iWmMainContainer = NULL;
-
-    // store static view app ui
-    CEikonEnv* eikonEnv = CEikonEnv::Static();
-    if ( !eikonEnv ) User::Leave( KErrUnknown );
-    iViewAppUi = (CAknViewAppUi*)eikonEnv->EikAppUi();
-    if ( !iViewAppUi ) User::Leave( KErrUnknown );
-
-    // create resource loader
-    iFs = &eikonEnv->FsSession();
-    iResourceLoader = CWmResourceLoader::NewL( *eikonEnv );
-    iEffectManager = CWmEffectManager::NewL( *eikonEnv );
-    
-    // main view
-    CWmMainContainerView* mainView =
-            CWmMainContainerView::NewL( *this );
-    CleanupStack::PushL( mainView );
-	iViewAppUi->AddViewL( mainView );	
-	CleanupStack::Pop( mainView );
-    }
-
-// ---------------------------------------------------------
-// CWmPlugin::Activate
-// ---------------------------------------------------------
-//
-void CWmPlugin::Activate()
-    {
-    if ( !IsActive() && iHsContentController )
-        {
-        TRAP_IGNORE( 
-            iEffectManager->BeginFullscreenEffectL( 
-                KAppStartCommonDefaultStyle );
-            iViewAppUi->ActivateLocalViewL( 
-                TUid::Uid( EWmMainContainerViewId ) ); 
-            );
-        }
-    }
-
-// ---------------------------------------------------------
-// CWmPlugin::IsActive
-// ---------------------------------------------------------
-//
-TBool CWmPlugin::IsActive()
-    {
-    return ( iPreviousViewUid.iViewUid != KNullUid );
-    }
-
-// ---------------------------------------------------------
-// CWmPlugin::Deactivate
-// ---------------------------------------------------------
-//
-void CWmPlugin::Deactivate()
-    {
-    if ( IsActive() )
-        {
-        iWmMainContainer->SetClosingDown( ETrue );
-        TRAP_IGNORE( 
-            iEffectManager->BeginFullscreenEffectL(
-                KAppExitCommonDefaultStyle );
-            iViewAppUi->ActivateLocalViewL(
-                iPreviousViewUid.iViewUid ); 
-            );
-        }
-    }
-
-// ---------------------------------------------------------
-// CWmPlugin::MainViewActivated
-// ---------------------------------------------------------
-//
-void CWmPlugin::MainViewActivated( 
-                    const TVwsViewId& aViewId,
-                    CWmMainContainer* aWmMainContainer )
-    {
-    iPreviousViewUid = aViewId;
-    iWmMainContainer = aWmMainContainer;
-    iEffectManager->UiRendered();
-    }
-
-// ---------------------------------------------------------
-// CWmPlugin::MainViewDeactivated
-// ---------------------------------------------------------
-//
-void CWmPlugin::MainViewDeactivated()
-    {
-    iPreviousViewUid.iViewUid = KNullUid;
-    iWmMainContainer = NULL;
-    iEffectManager->UiRendered();
-    }
-
-// ---------------------------------------------------------
-// CWmPlugin::NotifyWidgetListChanged
-// ---------------------------------------------------------
-//
-void CWmPlugin::NotifyWidgetListChanged()
-    {
-    if ( iWmMainContainer )
-        {
-        iWmMainContainer->HandleWidgetListChanged();
-        }
-    }
-
-// End of file
--- a/widgetmanager/src/wmpluginproxy.cpp	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies)..
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-* widget manager plugin proxy
-*
-*/
-
-#include <e32std.h>
-#include <implementationproxy.h>
-
-#include "wmplugin.h"
-
-// Map the interface implementation UIDs to implementation factory functions
-const TImplementationProxy ImplementationTable[] =
-    {
-    IMPLEMENTATION_PROXY_ENTRY( 0x20026F53, CWmPlugin::NewL )
-    };
-
-
-// Exported proxy for instantiation method resolution.
-EXPORT_C const TImplementationProxy* ImplementationGroupProxy(
-    TInt& aTableCount)
-    {
-    aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy);
-    return ImplementationTable;
-    }
--- a/widgetmanager/src/wmresourceloader.cpp	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,199 +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:
-* loads widget manager resources and icons
-*
-*/
-
-// INCLUDE FILES
-#include <eikenv.h>
-#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>
-
-#include "wmresourceloader.h"
-
-// CONSTANTS
-_LIT( KRelativeMifPath, "\\resource\\apps\\widgetmanager.mif" );
-_LIT( KRelativeResourcePathWithWildcard, "\\resource\\widgetmanagerview.r*" );
-_LIT( KRelativeResourcePath, "\\resource\\widgetmanagerview.rsc" );
-
-
-// ---------------------------------------------------------
-// CWmResourceLoader::NewL
-// ---------------------------------------------------------
-//
-CWmResourceLoader* CWmResourceLoader::NewL(
-        CEikonEnv& aEnv )
-    {
-    CWmResourceLoader* self = new (ELeave) CWmResourceLoader( aEnv );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// ---------------------------------------------------------
-// CWmResourceLoader::CWmResourceLoader
-// ---------------------------------------------------------
-//
-CWmResourceLoader::CWmResourceLoader( CEikonEnv& aEnv )
-    : iEnv( aEnv )
-    {
-    }
-
-// ---------------------------------------------------------
-// CWmResourceLoader::~CWmResourceLoader
-// ---------------------------------------------------------
-//
-CWmResourceLoader::~CWmResourceLoader()
-    {
-    UnloadResources();
-    delete iNote;
-    delete iDescription;
-    }
-
-// ---------------------------------------------------------
-// CWmResourceLoader::ConstructL
-// ---------------------------------------------------------
-//
-void CWmResourceLoader::ConstructL()
-    {
-    Dll::FileName( iDllName );
-
-    LoadResourcesL();
-    DetermineIconFilePath();
-    
-    iDescription = StringLoader::LoadL( 
-            R_QTN_WM_DETAILS_NO_DESCRIPTION, &iEnv  );
-    }
-
-// ---------------------------------------------------------
-// CWmResourceLoader::LoadResourcesL
-// ---------------------------------------------------------
-//
-void CWmResourceLoader::LoadResourcesL()
-    {
-    TFileName resourceFile;
-    RFs& fs = iEnv.FsSession();
-    resourceFile.Copy( iDllName.Left(2) );
-    resourceFile.Append( KRelativeResourcePathWithWildcard );
-    BaflUtils::NearestLanguageFile( fs, resourceFile );
-    if ( !BaflUtils::FileExists( fs, resourceFile ) )
-        {
-        resourceFile.Copy( iDllName.Left(2) );
-        resourceFile.Append( KRelativeResourcePath );
-        BaflUtils::NearestLanguageFile( fs, resourceFile );        
-        }
-    iResourceFileOffset = iEnv.AddResourceFileL( resourceFile );
-    }
-
-// ---------------------------------------------------------
-// CWmResourceLoader::UnloadResources
-// ---------------------------------------------------------
-//
-void CWmResourceLoader::UnloadResources()
-    {
-    if ( iResourceFileOffset )
-        {
-        iEnv.DeleteResourceFile( iResourceFileOffset );        
-        }
-    }
-
-// ---------------------------------------------------------
-// CWmResourceLoader::DetermineIconFilePath
-// ---------------------------------------------------------
-//
-void CWmResourceLoader::DetermineIconFilePath()
-    {
-    iMifFile.Copy( iDllName.Left(2) );
-    iMifFile.Append( KRelativeMifPath );
-    }
-
-// ---------------------------------------------------------
-// CWmResourceLoader::IconFilePath
-// ---------------------------------------------------------
-//
-const TDesC& CWmResourceLoader::IconFilePath()
-    {
-    return iMifFile;
-    }
-
-// ---------------------------------------------------------
-// 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
-// StringLoader method to load.
-// ---------------------------------------------------------
-//
-HBufC* LoadStringLC( TInt aResourceId, const TDesC& aString, CEikonEnv* aEnv )
-    {
-    if ( aString.Length() > 0 )
-        return StringLoader::LoadLC( aResourceId, aString, aEnv );
-    else
-        return StringLoader::LoadLC( aResourceId, aEnv );
-    }
-
-// ---------------------------------------------------------
-// CWmResourceLoader::InfoPopupL
-// ---------------------------------------------------------
-//
-void CWmResourceLoader::InfoPopupL( TInt aResourceId, const TDesC& aString )
-    {
-    HBufC* infoMsg = LoadStringLC( aResourceId, aString, &iEnv );
-    iNote = new (ELeave) CAknInformationNote( &iNote );
-    iNote->SetTimeout( CAknNoteDialog::ELongTimeout );
-    iNote->ExecuteLD( *infoMsg );
-    CleanupStack::PopAndDestroy( infoMsg );
-    }
-
-// ---------------------------------------------------------
-// CWmResourceLoader::ErrorPopup
-// ---------------------------------------------------------
-//
-void CWmResourceLoader::ErrorPopup( TInt aErrorCode )
-    {
-    iEnv.HandleError( aErrorCode );
-    }
-
-// ---------------------------------------------------------
-// CWmResourceLoader::NoDescriptionText
-// ---------------------------------------------------------
-//
-const TDesC& CWmResourceLoader::NoDescriptionText()
-    {
-    return *iDescription;
-    }
-    
-// end of file
-
--- a/widgetmanager/src/wmwidgetdata.cpp	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,357 +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:
-* CWmWidgetData implementation.
-*
-*/
-
-
-// INCLUDE FILES
-#include <fbs.h>
-#include <bautils.h>
-#include <s32file.h>
-#include <hscontentinfo.h>
-#include <WidgetRegistryClient.h> // widgetreqistry
-#include "wmwidgetdata.h"
-#include "wmwidgetdataobserver.h"
-#include "wmpersistentwidgetorder.h"
-#include "wmcommon.h"
-
-// ---------------------------------------------------------
-// CWmWidgetData::NewL
-// ---------------------------------------------------------
-//
-CWmWidgetData* CWmWidgetData::NewL( 
-        CHsContentInfo& aHsContentInfo,
-        RWidgetRegistryClientSession* aRegistryClientSession )
-    {
-    CWmWidgetData* self = CWmWidgetData::NewLC( 
-            aHsContentInfo, aRegistryClientSession );
-    CleanupStack::Pop(); // self;
-    return self;
-    }
-
-// ---------------------------------------------------------
-// CWmWidgetData::NewLC
-// ---------------------------------------------------------
-//
-CWmWidgetData* CWmWidgetData::NewLC( 
-        CHsContentInfo& aHsContentInfo,
-        RWidgetRegistryClientSession* aRegistryClientSession )
-    {
-    CWmWidgetData* self = new ( ELeave ) CWmWidgetData();
-    CleanupStack::PushL(self);
-    self->ConstructL( aHsContentInfo, aRegistryClientSession );
-    return self;
-    }
-
-// ---------------------------------------------------------
-// CWmWidgetData::CWmWidgetData
-// ---------------------------------------------------------
-//
-CWmWidgetData::CWmWidgetData()
-    {
-    iIdle = NULL;
-    iLogoImage = NULL;    
-    iLogoImageMask = NULL;
-    iHsContentInfo = NULL;
-    iWidgetType = CWmWidgetData::EUnknown;
-    iInstallAnimationIndex = KErrNotFound;
-    iPublisherUid = KNullUid;
-    iLogoSize = TSize( 0, 0 );
-    }
-
-// ---------------------------------------------------------
-// CWmWidgetData::ConstructL
-// ---------------------------------------------------------
-//
-void CWmWidgetData::ConstructL( 
-        CHsContentInfo& aHsContentInfo,
-        RWidgetRegistryClientSession* aRegistryClientSession )
-    {
-    // analyse the widget type
-    if ( aHsContentInfo.Type() == KContentTemplate )
-        {
-        iWidgetType = CWmWidgetData::ECps; // wrt widgets included in this gategory
-        }
-    else if ( aHsContentInfo.Type() == KContentWidget )
-        {
-        iWidgetType = CWmWidgetData::ENative;
-        }
-
-    // duplicate the content info locally
-    iHsContentInfo = aHsContentInfo.CloneL();
-    
-    iImageConverter = CWmImageConverter::NewL( this );
-
-    FetchPublisherUidL( aRegistryClientSession );
-
-    // start decoding the icon
-    iIdle = CIdle::NewL( CActive::EPriorityLow );
-    iIdle->Start( TCallBack( HandleAsyncIconString, this ) );
-    }
-
-
-// ---------------------------------------------------------
-// CWmWidgetData::~CWmWidgetData
-// ---------------------------------------------------------
-//
-CWmWidgetData::~CWmWidgetData()
-    {
-    if ( iIdle && iIdle->IsActive() )
-        {
-        iIdle->Cancel();
-        }
-    delete iIdle;
-    SetObserver( NULL );
-    delete iLogoImage;
-    delete iLogoImageMask;
-    delete iImageConverter;
-    delete iHsContentInfo;
-    }
-
-// ---------------------------------------------------------
-// CWmWidgetData::SetObserver
-// ---------------------------------------------------------
-//
-void CWmWidgetData::SetObserver( MWmWidgetDataObserver* aObserver )
-    {
-    iObserver = aObserver;
-    }
-
-// ---------------------------------------------------------
-// CWmWidgetData::SetObserver
-// ---------------------------------------------------------
-//
-void CWmWidgetData::SetPersistentWidgetOrder(
-        const CWmPersistentWidgetOrder* aPersistentWidgetOrder )
-    {
-    iPersistentWidgetOrder = aPersistentWidgetOrder;
-    }
-
-// ---------------------------------------------------------
-// CWmWidgetData::EqualsTo
-// ---------------------------------------------------------
-//
-TBool CWmWidgetData::EqualsTo( CHsContentInfo& aContentInfo )
-    {
-    return (
-        HsContentInfo().Uid() == aContentInfo.Uid() &&
-        HsContentInfo().PublisherId() == aContentInfo.PublisherId() );
-    }
-
-// ---------------------------------------------------------
-// CWmWidgetData::CompareByName
-// ---------------------------------------------------------
-//
-TInt CWmWidgetData::CompareByName( 
-        const CWmWidgetData& aDataOne, const CWmWidgetData& aDataTwo )
-    {
-    // negate the result for ascending alphabetical order
-    TInt result = aDataOne.Name().CompareC( aDataTwo.Name() );
-    return result;
-    }
-
-// ---------------------------------------------------------
-// CWmWidgetData::CompareByPersistentWidgetOrder
-// ---------------------------------------------------------
-//
-TInt CWmWidgetData::CompareByPersistentWidgetOrder( 
-        const CWmWidgetData& aDataOne, const CWmWidgetData& aDataTwo )
-    {
-    TInt result;
-    const CWmPersistentWidgetOrder* order = aDataOne.iPersistentWidgetOrder;
-    if ( order && !order->IsEmpty() )
-        {
-        result = order->IndexOf( aDataOne ) - order->IndexOf( aDataTwo );
-        }
-    else
-        {
-        // fallback: if persistent widget order is not available
-        // or it is empty (this is the case on first start, or if the persistent
-        // file is corrupted or deleted) -> order widgets by name.
-        result = CompareByName( aDataOne, aDataTwo );
-        }
-    return result;
-    }
-
-// ---------------------------------------------------------
-// CWmWidgetData::NotifyCompletion
-// ---------------------------------------------------------
-//
-void CWmWidgetData::NotifyCompletion( TInt aError )
-    {
-    delete iLogoImage;
-    iLogoImage = NULL;
-    delete iLogoImageMask;
-    iLogoImageMask = NULL;
-    if ( KErrNone != aError )
-        {
-        // no image available. Do nothing.
-        }
-    else
-        {
-        iLogoImage = iImageConverter->Bitmap();
-        iLogoImageMask = iImageConverter->Mask();
-        FireDataChanged();
-        }
-    }
-
-// ---------------------------------------------------------
-// CWmWidgetData::HandleIconStringL
-// ---------------------------------------------------------
-//
-void CWmWidgetData::HandleIconStringL( const TDesC& aIconStr )
-    {
-    HBufC* iconStr = NULL;
-    if ( aIconStr.Length() == 0 && 
-        iPublisherUid != KNullUid )
-        {
-        // workaround for wrt widgets icon
-        _LIT( KUidTag, "uid(0x%x)" );
-        const TInt KLength = 32;
-        iconStr = HBufC::NewLC( KLength );
-        iconStr->Des().Format( KUidTag, iPublisherUid.iUid );
-        }
-    else
-        {
-        iconStr = aIconStr.AllocLC();
-        }
-
-    TSize size( iLogoSize );
-    if ( iLogoImage ) { size = iLogoImage->SizeInPixels(); }
-    if ( size != iLogoSize &&
-        iLogoSize.iWidth > 0 && iLogoSize.iHeight > 0 )
-        {
-        size = iLogoSize;
-        }
-    iImageConverter->HandleIconStringL( 
-            size.iWidth, size.iHeight, *iconStr );
-    
-    CleanupStack::PopAndDestroy( iconStr );    
-    }
-
-// ---------------------------------------------------------
-// CWmWidgetData::FireDataChanged
-// ---------------------------------------------------------
-//
-void CWmWidgetData::FireDataChanged()
-    {
-    if ( iObserver )
-        {
-        iObserver->HandleWidgetDataChanged( this );
-        }
-    }
-
-// ----------------------------------------------------
-// CWmWidgetData::UidFromString
-// ----------------------------------------------------
-//
-TUid CWmWidgetData::UidFromString( const TDesC8& aUidString ) const
-    {
-    TUid uid( TUid::Null() );
-    const TInt KHexPrefixLength = 2;
-    if ( aUidString.Length() > KHexPrefixLength )
-        {
-        TUint id = 0;
-        TLex8 lex( aUidString.Mid( KHexPrefixLength ) );
-        if ( lex.Val( id, EHex ) == KErrNone )
-            {
-            uid.iUid = (TInt32)id;
-            }
-        }
-    return uid;
-    }
-
-// ----------------------------------------------------
-// CWmWidgetData::PublisherUid
-// ----------------------------------------------------
-//
-TUid CWmWidgetData::PublisherUid()
-    {    
-    return iPublisherUid;
-    }
-
-// ----------------------------------------------------
-// CWmWidgetData::FetchPublisherUidL
-// ----------------------------------------------------
-//
-void CWmWidgetData::FetchPublisherUidL( 
-            RWidgetRegistryClientSession* aRegistryClientSession )
-    {
-    if ( iPublisherUid == KNullUid && 
-        PublisherId() != KNullDesC &&
-        iWidgetType != CWmWidgetData::ENative &&
-        aRegistryClientSession )
-        {
-        TInt widgetUid = aRegistryClientSession->GetWidgetUidL( PublisherId() );
-        iPublisherUid = ( widgetUid != 0 ? TUid::Uid(widgetUid) : KNullUid );
-        }
-    }
-// ----------------------------------------------------
-// CWmWidgetData::SetLogoSize
-// ----------------------------------------------------
-//
-void CWmWidgetData::SetLogoSize( const TSize& aSize )
-    {
-    iLogoSize = aSize;
-    if ( iImageConverter )
-        {
-        iImageConverter->SetLogoSize( aSize );
-        }
-    }
-
-// ---------------------------------------------------------
-// CWmWidgetData::HandleAsyncIconString
-// ---------------------------------------------------------
-//
-TInt CWmWidgetData::HandleAsyncIconString( TAny* aPtr )
-    {
-    CWmWidgetData* self = static_cast< CWmWidgetData* >( aPtr );    
-    if ( self->iIdle->IsActive() )
-      { 
-      self->iIdle->Cancel(); 
-      }
-    TRAP_IGNORE( self->HandleIconStringL( 
-            self->HsContentInfo().IconPath() ); );
-    return KErrNone;
-    }
-
-// ---------------------------------------------------------
-// CWmWidgetData::ReCreateLogo
-// ---------------------------------------------------------
-//
-void CWmWidgetData::ReCreateLogo( const TSize& aSize )
-    {
-	TSize imageSize( iLogoSize );
-	if ( iLogoImage ) { imageSize = iLogoImage->SizeInPixels(); }
-	if ( (aSize != iLogoSize) || (imageSize != iLogoSize) )
-		{
-		iLogoSize = aSize;
-		
-		delete iLogoImage;
-		iLogoImage = NULL;
-		delete iLogoImageMask;
-		iLogoImageMask = NULL;
-
-		if ( iIdle && !iIdle->IsActive() )
-			{
-			// start decoding the icon
-			iIdle->Start( TCallBack( HandleAsyncIconString, this ) );
-			}
-		}
-    }
-
-// End of file
-
--- a/widgetmanager/src/wmwidgetloaderao.cpp	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,256 +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:
-* Active object to load widgets into list
-*
-*/
-
-// INCLUDE FILES
-#include "wmcommon.h"
-#include "wmplugin.h"
-#include "wmresourceloader.h"
-#include "wmpersistentwidgetorder.h"
-#include "wmlistbox.h"
-#include "wmwidgetloaderao.h"
-
-#include <hscontentcontroller.h> // content control api
-#include <hscontentinfoarray.h> // content control api
-#include <WidgetRegistryClient.h> // widget reqistry
-
-
-// ---------------------------------------------------------------------------
-// CWmWidgetLoaderAo::NewL
-// ---------------------------------------------------------------------------
-//
-CWmWidgetLoaderAo* CWmWidgetLoaderAo::NewL(
-        CWmPlugin& aWmPlugin,
-        CWmListBox& aTargetList )
-    {
-    CWmWidgetLoaderAo* self = new (ELeave) CWmWidgetLoaderAo(
-            aWmPlugin, aTargetList );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// CWmWidgetLoaderAo::NewL
-// ---------------------------------------------------------------------------
-//
-CWmWidgetLoaderAo::CWmWidgetLoaderAo(
-        CWmPlugin& aWmPlugin,
-        CWmListBox& aTargetList )
-    : CAsyncOneShot( EPriorityLow )
-    , iWmPlugin( aWmPlugin )
-    , iWidgetsList( aTargetList )
-    {
-    iWidgetRegistry = NULL;
-    iWidgetOrder = NULL;
-    }
-
-// ---------------------------------------------------------------------------
-// CWmWidgetLoaderAo::ConstructL
-// ---------------------------------------------------------------------------
-//
-void CWmWidgetLoaderAo::ConstructL()
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// CWmWidgetLoaderAo::~CWmWidgetLoaderAo
-// ---------------------------------------------------------------------------
-//
-CWmWidgetLoaderAo::~CWmWidgetLoaderAo()
-    {
-    // cancel ongoing operation
-    Cancel();
-
-    // cleanup run data
-    Cleanup();
-    
-    }
-
-// ---------------------------------------------------------------------------
-// CWmWidgetLoaderAo::StartLoading
-// ---------------------------------------------------------------------------
-//
-void CWmWidgetLoaderAo::StartLoading()
-    {
-    if ( IsActive() )
-        {
-        // cancel ongoing process
-        Cancel();
-        }
-    Call();
-    }
-
-// ---------------------------------------------------------------------------
-// CWmWidgetLoaderAo::RunL
-// ---------------------------------------------------------------------------
-//
-void CWmWidgetLoaderAo::RunL()
-    {
-    DoLoadWidgetsL();
-    Cleanup();
-    }
-
-// ---------------------------------------------------------------------------
-// CWmWidgetLoaderAo::RunError
-// ---------------------------------------------------------------------------
-//
-TInt CWmWidgetLoaderAo::RunError( TInt /*aError*/ )
-    {
-    Cleanup();
-    return KErrNone;
-    }
-
-// ---------------------------------------------------------
-// CWmWidgetLoaderAo::DoLoadWidgetsL
-// ---------------------------------------------------------
-//
-void CWmWidgetLoaderAo::DoLoadWidgetsL()
-    {
-    // 1. mark all the existing widgets initially non-valid
-    for( TInt i=0; i<iWidgetsList.WidgetDataCount(); ++i )
-        iWidgetsList.WidgetData(i).SetValid( EFalse );
-
-    // 2. load the widgets array
-    MHsContentController& controller = iWmPlugin.ContentController();    
-    CHsContentInfoArray* contentInfoArray = CHsContentInfoArray::NewL();
-    CleanupStack::PushL( contentInfoArray );
-    controller.WidgetListL( *contentInfoArray );
-    
-    // 3. load the widget order
-    iWidgetOrder = CWmPersistentWidgetOrder::NewL( iWmPlugin.FileServer() );
-    TRAPD( loadError, iWidgetOrder->LoadL() );
-
-    // 4. loop through the content array and compare it against the existing
-    // widget data.
-    TInt widgetsAdded = 0;
-    for ( TInt i=0; i < contentInfoArray->Array().Count(); i++ )
-        {
-        CHsContentInfo* contentInfo = contentInfoArray->Array()[i];
-
-        // check if this widget exists.
-        // if it does, keep the existing one
-        // if it does not, add it
-        CWmWidgetData* existingData = FindWidgetData( *contentInfo );
-        if ( existingData )
-            {
-            // keep the existing one
-            existingData->SetValid( ETrue );
-            }
-        else
-            {
-            // add a new one
-            AddWidgetDataL( *contentInfo );
-            ++widgetsAdded;
-            }
-        }
-
-    // if widgets were added, extend the listbox
-    if ( widgetsAdded )
-        iWidgetsList.HandleItemAdditionL();
-    
-    // 5: finally, remove all UI widgets that during the loading process were
-    // NOT marked as VALID. those widgets do not exist anymore.
-    TInt widgetsRemoved = 0;
-    for( TInt i=0; i<iWidgetsList.WidgetDataCount(); i++ )
-        {
-        if( !iWidgetsList.WidgetData(i).IsValid() )
-            {
-            iWidgetsList.RemoveWidgetData( i );
-            ++widgetsRemoved;
-            }
-        }
-
-    // 6: cleanup
-    CleanupStack::PopAndDestroy( contentInfoArray );
-
-    // 7. redraw list
-    if ( widgetsAdded > 0 || widgetsRemoved > 0 )
-        {
-        iWidgetsList.DrawDeferred();
-        }
-
-    // 8. store list order if necessary
-    if ( loadError != KErrNone || widgetsAdded > 0 || widgetsRemoved > 0 )
-        {
-        iWidgetOrder->StoreL( iWidgetsList.WidgetDataArray() );
-        }
-    
-    }
-
-// ---------------------------------------------------------
-// CWmWidgetLoaderAo::FindWidgetDataL
-// ---------------------------------------------------------
-//
-CWmWidgetData* CWmWidgetLoaderAo::FindWidgetData(
-        CHsContentInfo& aContentInfo )
-    {
-    CWmWidgetData* data = NULL;
-    for( TInt i=0; i<iWidgetsList.WidgetDataCount() && !data; ++i )
-        {
-        if ( iWidgetsList.WidgetData(i).EqualsTo( aContentInfo ) )
-            {
-            data = &iWidgetsList.WidgetData(i);
-            }
-        }
-    return data;
-    }
-
-// ---------------------------------------------------------
-// CWmWidgetLoaderAo::AddWidgetDataL
-// ---------------------------------------------------------
-//
-void CWmWidgetLoaderAo::AddWidgetDataL(
-        CHsContentInfo& aContentInfo )
-    {
-    if ( !iWidgetRegistry )
-        {
-        iWidgetRegistry = new (ELeave) RWidgetRegistryClientSession();
-        User::LeaveIfError( iWidgetRegistry->Connect() );
-        }
-    
-    CWmWidgetData* widgetData = CWmWidgetData::NewLC( 
-            aContentInfo, iWidgetRegistry );
-    widgetData->SetPersistentWidgetOrder( iWidgetOrder );
-    widgetData->SetValid( ETrue );
-    iWidgetsList.AddWidgetDataL( widgetData );
-    CleanupStack::Pop( widgetData );
-    }
-
-// ---------------------------------------------------------------------------
-// CWmWidgetLoaderAo::Cleanup
-// ---------------------------------------------------------------------------
-//
-void CWmWidgetLoaderAo::Cleanup()
-    {
-    // disconnect widget registry
-    if ( iWidgetRegistry )
-        {
-        iWidgetRegistry->Disconnect();
-        iWidgetRegistry->Close();
-        delete iWidgetRegistry;
-        iWidgetRegistry = NULL;
-        }
-    
-    // delete widget order
-    delete iWidgetOrder;
-    iWidgetOrder = NULL;
-    }
-
-// end of file
-
--- a/widgetmanager/tsrc/wmunittest/bwins/wmunittestu.def	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-EXPORTS
-	?LibEntryL@@YAPAVCScriptBase@@AAVCTestModuleIf@@@Z @ 1 NONAME ; class CScriptBase * LibEntryL(class CTestModuleIf &)
-
--- a/widgetmanager/tsrc/wmunittest/conf/ui_wmunittest.cfg	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,776 +0,0 @@
-//-------------------------------------------------------------------------------
-// constants
-//-------------------------------------------------------------------------------
-//
-[Define]
-
-TRUE 1
-FALSE 0
-
-OK 0
-FAIL -1
-
-MAX_WIDGET_AMOUNT 1000 // non-functional requirement
-
-EUnrecognized 0
-EUidIcon 1
-ESvgIcon 2
-ESkinIcon 3
-EMifIcon 4
-ESkinAndMifIcon 5 
-EImageIcon 6
-
-[Enddefine]
-
-//-------------------------------------------------------------------------------
-// Test cases for the plugin
-//-------------------------------------------------------------------------------
-//
-
-
-// Tests WmPlugin construction
-[Test]
-title WmPlugin create/delete
-create wmunittest test
-test HeapSet
-test PluginCreate
-pause 500
-test PluginDelete
-test HeapCheck
-delete test
-[Endtest] 
-
-// Heap usage logging
-[Test]
-title WmPlugin memcon test
-create wmunittest test
-test HeapSet
-test LogHeap "before wm"
-test PluginCreate
-test LogHeap "wm Active"
-//
-test SetMass 10
-test PluginActivate
-pause 500
-test LogHeap "10 widgets"
-//
-test SetMass 20
-test PluginWidgetsChanged
-pause 250
-test LogHeap "20 widgets"
-//
-test SetMass 30
-test PluginWidgetsChanged
-pause 250
-test LogHeap "30 widgets"
-//
-test SetMass 40
-test PluginWidgetsChanged
-pause 250
-test LogHeap "40 widgets"
-//
-test SetMass 50
-test PluginWidgetsChanged
-pause 250
-test LogHeap "50 widgets"
-//
-test SetMass 60
-test PluginWidgetsChanged
-pause 250
-test LogHeap "60 widgets"
-//
-test SetMass 70
-test PluginWidgetsChanged
-pause 250
-test LogHeap "70 widgets"
-//
-test SetMass 80
-test PluginWidgetsChanged
-pause 250
-test LogHeap "80 widgets"
-//
-test SetMass 90
-test PluginWidgetsChanged
-pause 250
-test LogHeap "90 widgets"
-//
-test SetMass 100
-test PluginWidgetsChanged
-pause 250
-test LogHeap "100 widgets"
-//
-test SetMass 200
-test PluginWidgetsChanged
-pause 250
-test LogHeap "200 widgets"
-//
-test SetMass 300
-test PluginWidgetsChanged
-pause 250
-test LogHeap "300 widgets"
-//
-test SetMass 400
-test PluginWidgetsChanged
-pause 250
-test LogHeap "400 widgets"
-//
-test SetMass 500
-test PluginWidgetsChanged
-pause 250
-test LogHeap "500 widgets"
-//
-test PluginDeactivate
-pause 250
-test LogHeap "wm deactive"
-//
-test PluginDeactivate
-pause 500
-test PluginDelete
-test HeapCheck
-test LogHeap "after wm"
-delete test
-[Endtest] 
-
-// Tests WmPlugin Activate method
-[Test]
-title WmPlugin activate/deactivate
-create wmunittest test
-test HeapSet
-test PluginCreate
-test SetMass 10
-test PluginActivate
-pause 500
-test PluginDeactivate
-pause 500
-test PluginDelete
-test HeapCheck
-delete test
-[Endtest]
-
-// Tests WmPlugin NotifyWidgetListChanged with no change at all
-[Test]
-title WmPlugin notify nochange
-create wmunittest test
-test HeapSet
-test PluginCreate
-test SetMass 10
-test PluginActivate
-pause 500
-test SetMass 10
-test PluginWidgetsChanged
-pause 500
-test PluginDeactivate
-pause 500
-test PluginDelete
-test HeapCheck
-delete test
-[Endtest]
-
-// Tests WmPlugin NotifyWidgetListChanged 10->11 widgets
-[Test]
-title WmPlugin notify 10->11
-create wmunittest test
-test HeapSet
-test PluginCreate
-test SetMass 10
-test PluginActivate
-pause 500
-test SetMass 11
-test PluginWidgetsChanged
-pause 500
-test PluginDeactivate
-pause 500
-test PluginDelete
-test HeapCheck
-delete test
-[Endtest]
-
-// Tests WmPlugin NotifyWidgetListChanged 10->9 widgets
-[Test]
-title WmPlugin notify 10->9
-create wmunittest test
-test HeapSet
-test PluginCreate
-test SetMass 10
-test PluginActivate
-pause 500
-test SetMass 9
-test PluginWidgetsChanged
-pause 500
-test PluginDeactivate
-pause 500
-test PluginDelete
-test HeapCheck
-delete test
-[Endtest]
-
-// Tests WmPlugin NotifyWidgetListChanged 0->10 widgets
-[Test]
-title WmPlugin notify 0->10
-create wmunittest test
-test HeapSet
-test PluginCreate
-test SetMass 0
-test PluginActivate
-pause 500
-test SetMass 10
-test PluginWidgetsChanged
-pause 500
-test PluginDeactivate
-pause 500
-test PluginDelete
-test HeapCheck
-delete test
-[Endtest]
-
-// Tests WmPlugin NotifyWidgetListChanged 10->0 widgets
-[Test]
-title WmPlugin notify 10->0
-create wmunittest test
-test HeapSet
-test PluginCreate
-test SetMass 10
-test PluginActivate
-pause 500
-test SetMass 0
-test PluginWidgetsChanged
-pause 500
-test PluginDeactivate
-pause 500
-test PluginDelete
-test HeapCheck
-delete test
-[Endtest]
-
-// Tests WmPlugin NotifyWidgetListChanged with ridiculous amount of widgets
-// testing the OOM error handling
-[Test]
-title WmPlugin notify OOM
-create wmunittest test
-test HeapSet
-test PluginCreate
-test SetMass 10
-test PluginActivate
-pause 500
-test SetMass 10000
-test PluginWidgetsChanged
-pause 500
-test PluginDeactivate
-pause 500
-test PluginDelete
-test HeapCheck
-delete test
-[Endtest]
-
-// Tests WmPlugin with large data amount
-[Test]
-title WmPlugin capacity
-create wmunittest test
-test HeapSet
-test PluginCreate
-test SetMass MAX_WIDGET_AMOUNT
-test PluginActivate
-pause 3000
-test PluginDelete
-test HeapCheck
-delete test
-[Endtest] 
-
-// Tests WmPlugin by notifying widget list changed hundreds of times
-// with different widget amounts and different timeouts. Target is to
-// interrupt the previous update process test that it is cancelled ok
-[Test]
-title WmPlugin robustness
-create wmunittest test
-test HeapSet
-test PluginCreate
-test SetMass 5
-test PluginActivate
-pause 500
-loop 100
-test SetMass 10
-test PluginWidgetsChanged
-pause 10
-test SetMass 15
-test PluginWidgetsChanged
-pause 90
-test SetMass 11
-test PluginWidgetsChanged
-pause 50
-test SetMass 16
-test PluginWidgetsChanged
-pause 120
-endloop
-test PluginDeactivate
-pause 500
-test PluginDelete
-test HeapCheck
-delete test
-[Endtest] 
-
-//-------------------------------------------------------------------------------
-// Test cases for the persistent widget order
-//-------------------------------------------------------------------------------
-//
-
-// Tests persistent widget order NewL method
-[Test]
-title Widget order create
-create wmunittest test
-test HeapSet
-test WidgetOrderCreate
-test WidgetOrderCheckIsEmpty TRUE
-test WidgetOrderDelete
-test HeapCheck
-delete test
-[Endtest] 
-
-// Test persistent widget order STORE method
-[Test]
-title Widget order store
-create wmunittest test
-test HeapSet
-test WidgetOrderCreate
-test WidgetOrderCheckIsEmpty TRUE
-test SetMass 5
-test WidgetOrderSave
-test WidgetOrderCheckIsEmpty FALSE
-test WidgetOrderDelete
-test HeapCheck
-delete test
-[Endtest] 
-
-// Test persistent widget order STORE method when storing an empty array
-[Test]
-title Widget order store empty
-create wmunittest test
-test HeapSet
-test WidgetOrderCreate
-test WidgetOrderCheckIsEmpty TRUE
-test SetMass 0
-test WidgetOrderSave
-test WidgetOrderCheckIsEmpty TRUE
-test WidgetOrderDelete
-test HeapCheck
-delete test
-[Endtest] 
-
-
-// Tests persistent widget order LOAD method
-[Test]
-title Widget order load
-create wmunittest test
-test HeapSet
-test WidgetOrderCreate
-test SetMass 5
-test WidgetOrderSave
-test WidgetOrderCheckIsEmpty 0
-test WidgetOrderDelete
-test WidgetOrderCreate
-test WidgetOrderLoad
-test WidgetOrderCheckIsEmpty 0
-test WidgetOrderDelete
-test HeapCheck
-delete test
-[Endtest] 
-
-// Tests persistent widget order LOAD method when count is ZERO
-[Test]
-title Widget order load empty
-create wmunittest test
-test HeapSet
-test WidgetOrderCreate
-test SetMass 0
-test WidgetOrderSave
-test WidgetOrderCheckIsEmpty TRUE
-test WidgetOrderDelete
-test WidgetOrderCreate
-test WidgetOrderLoad
-test WidgetOrderCheckIsEmpty TRUE
-test WidgetOrderDelete
-test HeapCheck
-delete test
-[Endtest] 
-
-// Tests persistent widget order INDEXOF method
-[Test]
-title Widget order use
-create wmunittest test
-test HeapSet
-test WidgetOrderCreate
-test SetMass 8
-test WidgetOrderSave
-test WidgetOrderCheckIsEmpty FALSE
-test WidgetOrderUse
-test WidgetOrderDelete
-test HeapCheck
-delete test
-[Endtest] 
-
-// Tests persistent widget order INDEXOF method when class is empty
-[Test]
-title Widget order use empty
-create wmunittest test
-test HeapSet
-test WidgetOrderCreate
-test WidgetOrderCheckIsEmpty TRUE
-test SetMass 0
-test WidgetOrderUse
-test WidgetOrderDelete
-test HeapCheck
-delete test
-[Endtest] 
-
-// Tests persistent widget order with large data amount
-[Test]
-title Widget order capacity
-create wmunittest test
-test HeapSet
-test WidgetOrderCreate
-test SetMass MAX_WIDGET_AMOUNT
-test WidgetOrderSave
-test WidgetOrderDelete
-test WidgetOrderCreate
-test WidgetOrderLoad
-test SetMass MAX_WIDGET_AMOUNT
-test WidgetOrderUse
-test WidgetOrderDelete
-test HeapCheck
-delete test
-[Endtest] 
-
-// Tests persistent widget order save & load 100 times in sequence
-[Test]
-title Widget order robustness
-create wmunittest test
-test HeapSet
-test WidgetOrderCreate
-test SetMass 100
-loop 100
-test WidgetOrderSave
-endloop
-test WidgetOrderDelete
-test WidgetOrderCreate
-test SetMass 100
-loop 100
-test WidgetOrderLoad
-endloop
-test WidgetOrderUse
-test WidgetOrderDelete
-test HeapCheck
-delete test
-[Endtest] 
-
-
-//-------------------------------------------------------------------------------
-// Test cases for the image converter
-//-------------------------------------------------------------------------------
-//
-
-// Tests image converter NewL method
-[Test]
-title Image converter create delete
-create wmunittest test
-test HeapSet
-test ImageConverterCreate
-test ImageConverterConversionMethod EUnrecognized
-test ImageConverterDelete
-test HeapCheck
-delete test
-[Endtest] 
-
-// Tests malformed icon string
-[Test]
-title malformed image formats
-create wmunittest test
-test HeapSet
-test ImageConverterCreate
-test ImageConverterConvert "foo bar"
-test ImageConverterWaitResult FAIL
-test ImageConverterConvert "*************"
-test ImageConverterWaitResult FAIL
-test ImageConverterConvert "uid skin mif logo icon jpg jpeg icon"
-test ImageConverterWaitResult FAIL
-test ImageConverterConvert "girl.jpg"
-test ImageConverterWaitResult FAIL
-test ImageConverterConvert "dirty_hack.exe"
-test ImageConverterWaitResult FAIL
-test ImageConverterConvert "c:/testframework/wmunittest/wmlogo/logo.jpg"
-test ImageConverterWaitResult FAIL
-test ImageConverterConvert "skin (0x10005a26 0x1000 )"
-test ImageConverterWaitResult FAIL
-test ImageConverterConvert "mif ( c:\testframework\wmunittest\wmlogo\logo.mif 16384 16385)"
-test ImageConverterWaitResult FAIL
-test ImageConverterConvert "skin( 0x100056c6 0x86 ):mif ( c:\testframework\wmunittest\wmlogo\logo.mif 16384 16385 )"
-test ImageConverterWaitResult FAIL
-test ImageConverterConvert "skin ( 0x101f84b7 0x1000594D ) : mif ( c:\testframework\wmunittest\wmlogo\logo.mif 16384 16385 )"
-test ImageConverterWaitResult FAIL
-test ImageConverterConvert " uid(0x10005901 )"
-test ImageConverterWaitResult FAIL
-test ImageConverterConvert "uid (268458241  )"
-test ImageConverterWaitResult FAIL
-test ImageConverterConvert "uid (0x10005901)"
-test ImageConverterWaitResult FAIL
-test ImageConverterDelete
-test HeapCheck
-delete test
-[Endtest] 
-
-
-// Tests image converter with skin syntax
-[Test]
-title Image converter skin
-create wmunittest test
-test HeapSet
-test ImageConverterCreate
-test ImageConverterConvert "skin(0x101F86E3 0x100d)"
-test ImageConverterWaitResult OK
-test ImageConverterConversionMethod ESkinIcon
-test ImageConverterDelete
-test HeapCheck
-delete test
-[Endtest]
-
-// Tests image converter skin method with null skin item ids
-[Test]
-title Image converter skin (null)
-create wmunittest test
-test HeapSet
-test ImageConverterCreate
-test ImageConverterConvert "skin(0 0)"
-test ImageConverterWaitResult FAIL
-test ImageConverterDelete
-test HeapCheck
-delete test
-[Endtest]
-
-// Tests image converter with skin/mif syntax
-[Test]
-title Image converter skin/mif
-create wmunittest test
-test HeapSet
-test ImageConverterCreate
-test ImageConverterConvert "skin(270501603 4145):mif(c:\testframework\wmunittest\wmlogo\logo.mif 16384 16385)"
-test ImageConverterWaitResult OK
-test ImageConverterConversionMethod ESkinAndMifIcon
-test ImageConverterDelete
-test HeapCheck
-delete test
-[Endtest] 
-
-// Tests image converter mif method
-[Test]
-title Image converter mif
-create wmunittest test
-test HeapSet
-test ImageConverterCreate
-test ImageConverterConvert "mif(c:\testframework\wmunittest\wmlogo\logo.mif 16384 16385)"
-test ImageConverterWaitResult OK
-test ImageConverterConversionMethod EMifIcon
-test ImageConverterDelete
-test HeapCheck
-delete test
-[Endtest]
-
-// Tests image converter mif method with invalid path
-[Test]
-title Image converter mif (invalid path)
-create wmunittest test
-test HeapSet
-test ImageConverterCreate
-test ImageConverterConvert "mif(c:\blabla.mif 16384 16385)"
-test ImageConverterWaitResult FAIL
-test ImageConverterDelete
-test HeapCheck
-delete test
-[Endtest]
-
-// Tests image converter mif method with invalid bitmap & mask ids
-[Test]
-title Image converter mif (invalid ids)
-create wmunittest test
-test HeapSet
-test ImageConverterCreate
-test ImageConverterConvert "mif(c:\testframework\wmunittest\wmlogo\logo.mif 1 2)"
-test ImageConverterWaitResult FAIL
-test ImageConverterDelete
-test HeapCheck
-delete test
-[Endtest]
-
-// Tests image converter uid method
-[Test]
-title Image converter uid
-create wmunittest test
-test HeapSet
-test ImageConverterCreate
-test ImageConverterConvert "uid(0x10005901)"
-test ImageConverterWaitResult OK
-test ImageConverterConversionMethod EUidIcon
-test ImageConverterDelete
-test HeapCheck
-delete test
-[Endtest]
-
-// Tests image converter uid method with null uid
-[Test]
-title Image converter uid (null)
-create wmunittest test
-test HeapSet
-test ImageConverterCreate
-test ImageConverterConvert "uid(0x0)"
-test ImageConverterWaitResult FAIL
-test ImageConverterDelete
-test HeapCheck
-delete test
-[Endtest]
-
-// Tests image converter uid method with wrt widget uid.
-[Test]
-title Image converter wrt widget
-create wmunittest test
-test HeapSet
-test InstallWrtWidget "c:\testframework\wmunittest\wmlogo\test.wgz"
-test ImageConverterCreate
-test ImageConverterConvert "uid(0x2000DAD2)"
-test ImageConverterWaitResult OK
-test ImageConverterConversionMethod EUidIcon
-test ImageConverterDelete
-test UninstallWrtWidget "0x2000DAD2"
-test HeapCheck
-delete test
-[Endtest]
-
-// Tests image converter svg method
-[Test]
-title Image converter svg
-create wmunittest test
-test HeapSet
-test ImageConverterCreate
-test ImageConverterConvert "c:\testframework\wmunittest\wmlogo\logo.svg"
-test ImageConverterWaitResult OK
-test ImageConverterConversionMethod ESvgIcon
-test ImageConverterDelete
-test HeapCheck
-delete test
-[Endtest]
-
-// Tests image converter svg method corrupt file.
-[Test]
-title Image converter svg (corrupted)
-create wmunittest test
-test HeapSet
-test ImageConverterCreate
-test ImageConverterConvert "c:\testframework\wmunittest\wmlogo\logocorrupt.svg"
-test ImageConverterWaitResult FAIL
-test ImageConverterConversionMethod ESvgIcon
-test ImageConverterDelete
-test HeapCheck
-delete test
-[Endtest]
-
-// Tests image converter png method
-[Test]
-title Image converter png
-create wmunittest test
-test HeapSet
-test ImageConverterCreate
-test ImageConverterConvert "c:\testframework\wmunittest\wmlogo\logo.png"
-test ImageConverterWaitResult OK
-test ImageConverterConversionMethod EImageIcon
-test ImageConverterDelete
-test HeapCheck
-delete test
-[Endtest]
-
-// Tests image converter png method corrupt file.
-[Test]
-title Image converter png (corrupted)
-create wmunittest test
-test HeapSet
-test ImageConverterCreate
-test ImageConverterConvert "c:\testframework\wmunittest\wmlogo\logocorrupt.png"
-test ImageConverterWaitResult FAIL
-test ImageConverterDelete
-test HeapCheck
-delete test
-[Endtest]
-
-// Tests image converter jpeg method
-[Test]
-title Image converter jpeg
-create wmunittest test
-test HeapSet
-test ImageConverterCreate
-test ImageConverterConvert "c:\testframework\wmunittest\wmlogo\logo.jpg"
-test ImageConverterWaitResult OK
-test ImageConverterConversionMethod EImageIcon
-test ImageConverterDelete
-test HeapCheck
-delete test
-[Endtest]
-
-// Tests image converter jpeg method
-[Test]
-title Image converter jpeg (corrupted)
-create wmunittest test
-test HeapSet
-test ImageConverterCreate
-test ImageConverterConvert "c:\testframework\wmunittest\wmlogo\logocorrupt.jpg"
-test ImageConverterWaitResult FAIL
-test ImageConverterDelete
-test HeapCheck
-delete test
-[Endtest]
-
-// Tests image converter cancel
-[Test]
-title Image converter cancel
-create wmunittest test
-test HeapSet
-test ImageConverterCreate
-test ImageConverterConvert "c:\testframework\wmunittest\wmlogo\logo.svg"
-test CancelConvert
-test ImageConverterWaitResult FAIL
-test ImageConverterDelete
-test HeapCheck
-delete test
-[Endtest]
-
-
-//-------------------------------------------------------------------------------
-// Misc Test cases
-//-------------------------------------------------------------------------------
-//
-
-// Tests error note
-[Test]
-title Other error note
-create wmunittest test
-test HeapSet
-test PluginCreate
-test PluginActivate
-test ErrorPopup
-pause 3000
-test PluginDelete
-test HeapCheck
-delete test
-[Endtest]
-
-/*
-// Test for heikki to play :)
-[Test]
-title WmPlugin 1h test
-create wmunittest test
-test HeapSet
-test PluginCreate
-test SetMass 500
-test PluginActivate
-pause 3600000
-test PluginDelete
-test HeapCheck
-delete test
-[Endtest]
-*/
-
-
--- a/widgetmanager/tsrc/wmunittest/conf/wmunittest.bat	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +0,0 @@
-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 *
-rem */
-
-ATSInterface.exe -testmodule TestScripter -config c:\testframework\ui_wmunittest.cfg
-
--- a/widgetmanager/tsrc/wmunittest/conf/wmunittest.ini	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,188 +0,0 @@
-#
-# This is STIF initialization file
-# Comment lines start with '#'-character.
-# See STIF TestFramework users guide.doc for instructions
-
-# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-# Set following test engine settings:
-#	- Set Test Reporting mode. TestReportMode's possible values are:
-#		+ 'Summary': Summary of the tested test cases.
-#		+ 'Environment': Hardware and software info.
-#		+ 'TestCases': Test case report.
-#		+ 'FullReport': Set of all above ones.
-#		+ Example 'TestReportMode= Summary TestCases'
-#
-# 	- CreateTestReport setting controls report creation mode
-#		+ YES, Test report will created.
-#		+ NO, No Test report.
-#
-# 	- File path indicates the base path of the test report.
-# 	- File name indicates the name of the test report.
-#
-# 	- File format indicates the type of the test report.
-#		+ TXT, Test report file will be txt type, for example 'TestReport.txt'.
-#		+ HTML, Test report will be html type, for example 'TestReport.html'.
-#   + XML, Test report will be xml type, for example 'TestReport.xml'.
-#          Note, that xml format is available only when output is set to FILE.
-#
-# 	- File output indicates output source of the test report.
-#		+ FILE, Test report logging to file.
-#		+ RDEBUG, Test report logging to using rdebug.
-#
-# 	- File Creation Mode indicates test report overwriting if file exist.
-#		+ OVERWRITE, Overwrites if the Test report file exist.
-#		+ APPEND, Continue logging after the old Test report information if
-#                 report exist.
-# 	- Sets a device reset module's dll name(Reboot).
-#		+ If Nokia specific reset module is not available or it is not correct one
-#		  StifHWResetStub module may use as a template for user specific reset
-#		  module.
-# 	- Sets STIF test measurement disable options. e.g. pluging1 and pluging2 disablation
-#		DisableMeasurement= stifmeasurementplugin01 stifmeasurementplugin02
-#
-
-[Engine_Defaults]
-
-TestReportMode= FullReport    # Possible values are: 'Empty', 'Summary', 'Environment',
-                              #                      'TestCases' or 'FullReport'
-
-CreateTestReport= YES         # Possible values: YES or NO
-
-TestReportFilePath= C:\LOGS\TestFramework\
-TestReportFileName= WidgetManager
-
-TestReportFormat= TXT         # Possible values: TXT, HTML or XML
-TestReportOutput= FILE        # Possible values: FILE or RDEBUG
-TestReportFileCreationMode= OVERWRITE # Possible values: OVERWRITE or APPEND
-
-DeviceResetDllName= StifResetForNokia.dll # e.g. 'StifHWResetStub.dll' for user specific reseting
-
-DisableMeasurement= stifmeasurementdisablenone  # Possible values are:
-              # 'stifmeasurementdisablenone', 'stifmeasurementdisableall'
-              # 'stifmeasurementplugin01', 'stifmeasurementplugin02',
-              # 'stifmeasurementplugin03', 'stifmeasurementplugin04',
-              # 'stifmeasurementplugin05' or 'stifbappeaprofiler'
-
-Timeout= 0                    # Default timeout value for each test case. In milliseconds
-UITestingSupport= YES        # Possible values: YES or NO
-#SeparateProcesses= YES       # Possible values: YES or NO (default: NO)
-[End_Defaults]
-# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-
-
-
-# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-
-# Widget manager unit tests
-[New_Module]
-ModuleName= testscripter
-TestCaseFile= c:\testframework\ui_wmunittest.cfg
-[End_Module]
-
-# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-
-
-
-
-# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-# Set STIF logging overwrite parameters for Logger.
-# 	Hardware and emulator environment logging path and styles can
-# 	be configured from here to overwrite the Logger's implemented values.
-#	
-#	Settings description:
-#	- Indicates option for creation log directory/directories. If log directory/directories
-#         is/are not created by user they will make by software.
-#		+ YES, Create log directory/directories if not allready exist.
-#		+ NO, Log directory/directories not created. Only created one is used.
-#
-#	- Overwrite emulator path setting.
-#		+ Example: If 'EmulatorBasePath= C:\LOGS\TestFramework\' and in code is defined 
-#		           Logger's path 'D:\\LOGS\\Module\\' with those definition the path
-#		           will be 'C:\LOGS\TestFramework\LOGS\Module\'
-#
-#	- Overwrite emulator's logging format.
-#		+ TXT, Log file(s) will be txt type(s), for example 'Module.txt'.
-#		+ HTML, Log file(s) will be html type(s), for example 'Module.html'.
-#
-#	- Overwrited emulator logging output source.
-#		+ FILE, Logging to file(s).
-#		+ RDEBUG, Logging to using rdebug(s).
-#
-#	- Overwrite hardware path setting (Same description as above in emulator path).
-#	- Overwrite hardware's logging format(Same description as above in emulator format).
-#	- Overwrite hardware's logging output source(Same description as above in emulator output).
-#
-#	- File Creation Mode indicates file overwriting if file exist.
-#		+ OVERWRITE, Overwrites if file(s) exist.
-#		+ APPEND, Continue logging after the old logging information if file(s) exist.
-#
-#	- Will thread id include to the log filename.
-#		+ YES, Thread id to log file(s) name, Example filename 'Module_b9.txt'.
-#		+ NO, No thread id to log file(s), Example filename 'Module.txt'.
-#
-#	- Will time stamps include the to log file.
-#		+ YES, Time stamp added to each line in log file(s). Time stamp is 
-#                 for example'12.Nov.2003 115958    LOGGING INFO'
-#		+ NO, No time stamp(s).
-#
-#	- Will line breaks include to the log file.
-#		+ YES, Each logging event includes line break and next log event is in own line.
-#		+ NO, No line break(s).
-#
-#	- Will event ranking include to the log file.
-#		+ YES, Event ranking number added to each line in log file(s). Ranking number
-#                 depends on environment's tics, for example(includes time stamp also)
-#                 '012   12.Nov.2003 115958    LOGGING INFO'
-#		+ NO, No event ranking.
-#
-#	- Will write log file in unicode format.
-#		+ YES, Log file will be written in unicode format
-#		+ NO, Log will be written as normal, not unicode, file.
-#
-
-[Logger_Defaults]
-
-#NOTE: If you want to set Logger using next setting(s) remove comment(s)'#'
-#NOTE: TestEngine and TestServer logging settings cannot change here
-
-#CreateLogDirectories= YES    # Possible values: YES or NO
-
-#EmulatorBasePath= C:\LOGS\TestFramework\
-#EmulatorFormat= HTML         # Possible values: TXT or HTML
-#EmulatorOutput= FILE         # Possible values: FILE or RDEBUG
-
-#HardwareBasePath= D:\LOGS\TestFramework\
-#HardwareFormat= HTML         # Possible values: TXT or HTML
-#HardwareOutput= FILE         # Possible values: FILE or RDEBUG
-
-#FileCreationMode= OVERWRITE  # Possible values: OVERWRITE or APPEND
-
-#ThreadIdToLogFile= YES       # Possible values: YES or NO
-#WithTimeStamp= YES           # Possible values: YES or NO
-#WithLineBreak= YES           # Possible values: YES or NO
-#WithEventRanking= YES        # Possible values: YES or NO
-
-#FileUnicode= YES             # Possible values: YES or NO
-#AddTestCaseTitle= YES        # Possible values: YES or NO
-[End_Logger_Defaults]
-# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-
-
-
-# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-# Set filters to be used by ConsoleUI.
-# 	If you want to use filter with ConsoleUI, simply remove comments
-# 	from section below and provide valid filter entries.
-#   Each filter line has to start with "filter= " keyword.
-#   Filter can contain special wildcard characters:
-#     *  which stands for none or any literal;
-#     ?  which stands for single character.
-#   Filters are not case-sensitive.
-
-#[Filters]
-#filter= *math*
-#filter= *radio*
-#[End_Filters]
-# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-
-# End of file
Binary file widgetmanager/tsrc/wmunittest/data/wmlogo/logo.jpg has changed
Binary file widgetmanager/tsrc/wmunittest/data/wmlogo/logo.mif has changed
Binary file widgetmanager/tsrc/wmunittest/data/wmlogo/logo.png has changed
--- a/widgetmanager/tsrc/wmunittest/data/wmlogo/logo.svg	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,72 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="32px"
-   height="32px"
-   id="svg2466"
-   sodipodi:version="0.32"
-   inkscape:version="0.46"
-   sodipodi:docname="drawing.svg"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape">
-  <defs
-     id="defs2468">
-    <inkscape:perspective
-       sodipodi:type="inkscape:persp3d"
-       inkscape:vp_x="0 : 16 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_z="32 : 16 : 1"
-       inkscape:persp3d-origin="16 : 10.666667 : 1"
-       id="perspective2474" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="15.938205"
-     inkscape:cx="9.927765"
-     inkscape:cy="10.627086"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     inkscape:grid-bbox="true"
-     inkscape:document-units="px"
-     inkscape:window-width="1680"
-     inkscape:window-height="1031"
-     inkscape:window-x="0"
-     inkscape:window-y="0" />
-  <metadata
-     id="metadata2471">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     id="layer1"
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer">
-    <image
-       y="5.765738"
-       x="-0.030936712"
-       id="image2462"
-       height="18.19879"
-       width="31.139833"
-       sodipodi:absref="Y:\HS_Domain\homescreen\idlehomescreen\data\qhd_tch\shortcut2_2001f484\gfx\shortcut2logo.png"
-       xlink:href="Y:\HS_Domain\homescreen\idlehomescreen\data\qhd_tch\shortcut2_2001f484\gfx\shortcut2logo.png"
-       transform="matrix(1,0,2.5955691e-2,0.9996631,0,0)" />
-  </g>
-</svg>
--- a/widgetmanager/tsrc/wmunittest/data/wmlogo/logocorrupt.jpg	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-ÿØÿà JFIF  ` `  ÿá 6Exif  II*         &   ÓJûZP `NƒÜà:÷¬Çy¥êmC%´™0»¦Až™ÿ 
-Ö~í5;ܬz ê9áÕ¢s7‘(dUó	=‡ç]_„.ßû%P·Íå9è3Ÿçšãå̧˜ã_dPµÓh
-öúlŒ8,2>¼š¬
W9µÒÇ>MÉ®‡©£‡\te?~jµ£±Až»ùTÛz–;Ç桹ÿ YÜoåI,éfI]Q,Xà
-ÁºñŽ‹Œ³)\œ{óúSå¹­*5*|	³€ÿ Åi ÿ lÿ #^ÂÊ®¥YCØŒ×Û8o@Àä$_”×±î>ÕRèzYº|ÔÓþTr>)ð½­ï—-­ k¶$
¼vïíÏ~•o—@†G¸¸GšlnU^èO^ž‚¶`ŸÍlŒ1ùqÙsÇçÖ±5MrãOÕ
-©ÝS·@­eV´iCšnÈ󥋩
-Å¿u»9RA
øb0n{JʲÖí¯ áû¬­Z–(¬ ðW÷ü:þtá(N<ÑwF	¦®‹µ“oþ­¿ë£ÿ èF´÷j˶?ºoúèÿ úª%²8šëýõÿ ÐV­1ùOÒªZ®ºÿ |è+VIùOÒ“(äƒíàqÞž»$ª:Ÿ_j­ÆâÎJ 8Ïsì)q¿ | }Õ|&)V“}ÙïÒà­Ø[ûh¯@$luåYN>¹þµL®¬WÉ7Q„Æß0/ͯ¯¾*Ï›ÏZ<ßzÅN]KöHd[(hN'ù‡’ÙëŸPjÔW[ò¬6È¿y­AæûÔRøem²/Ýoè}©7}ÇÉm8ß2 Ïñ
-ë³\•Ï™rˆÃlŠÃrÿ Qí]Îkë2%l;õ<ŒrµEè?5ƒâÛ&¾ÐäŒÈŸ2qÎ? üko4Ž¡Õ‘€!†=ëÜ„œd¤·G£Ì¬Ï	³ÕRßP “r­»¡nÙ»ÖãËægy
žÇšgŽ|#-Ô—Ö±—·–uQÊœòÇó¬«	Ø ÜI; 9® ¥
-œ¸ªNÍèןsÉ)Sm=‡k+@’**¶ð¤¨ÆFøV3¸ee=ø5wZºO"8÷ìà…ï€5æZúnu%^Ñ·«ß±ÉR+›CHÔnàÛÜN¬e2 $‚;÷5»
-µÕÌVÊ7X)û¿ÅúgñÇ­q6LÍDg`ü*®IàôëþðûÛíÔvUÏ
-½qýIõÇ¥|þm”ÒXõ:i(Úí.çnœ§fö:ëxü‹xãã* ¯z—4Ê3[ž°®£!èÀƒ^ys—uqg7X‘ž2¬O?žGá^…\׊t‰.oí3Ä>eé¹{ƒú}³I««ÕÎBêi-ØÄrÍÉÿ ?L~5Òà  ÅÂRrwfÉ$¬‚Š(¤0 àäQE sß„b½”ÜÙ9·º#QÃ{Üœ×-%¶½¤Ëó[HÀËKvëÿ 8?νB‚<ŠVËŽ»¬·ÈÔ3ÿ \óÅ,vºþ­ Ûm"ç%Ãçð“ü«Ó|ˆ³þ­?ï‘O€)(¤+Ήá(ld[›Ç77XûÍÑ}€èùÉ®˜pµU(=h¢€
-ZJ(£#†í^gâ_ ^Ïpe°uhÙ‹laÈ$ó‚•é´P‹¥VtåÍfxí‡ÃmNæP·eb‹ø°	$~#ç¥vñøO†Þ(à’[wU
-Z'eÝùù⺺(m½Ê«^¥gy»œå·ƒ4øfY§i.d^33`ÿ À‰ý+¡$	…QÐ
-u-B¥iþ¤ÿ ×Gÿ Ð]5J×ýIÿ ®ÿ ¡ R¯³Å MßyJîúõã—7xÿ _ýú?üUP¥ÿ Ïx¿ïÑÿ â¨ÿ Kÿ žñߣÿ ÅQE éóÞ/ûôøª_ô¿ùïýú?üUP¥ÿ Ïx¿ïÑÿ â©Òóþ¾/ûôøª( ý/þ{Åÿ ~ÿ Gú_ü÷‹þýþ*Š( ÿ Kÿ žñߣÿ ÅRfëþ{Eÿ ~ÿ E fëþ{Eÿ ~ÿ Gú_ü÷‹þýþ*Š(Òÿ ç¼_÷èÿ ñT™ºÿ žÑߣÿ ÅQE /ú_ü÷‹þýþ*ô¿ùïýú?üUPþ—ÿ =âÿ ¿Gÿ Š£ý/þ{Åÿ ~ÿ E ¥ÿ Ïx¿ïÑÿ â¨Íßü÷‹þýþ*Š( ÿ Kÿ žñߣÿ ÅRfëþ{Eÿ ~ÿ E fëþ{Eÿ ~ÿ Kþ—ÿ =âÿ ¿Gÿ Š¢Š ?Òÿ ç¼_÷èÿ ñT™ºÿ žÑߣÿ ÅQE éóÞ/ûôøª?Òÿ ç¼_÷èÿ ñTQ@ú_ü÷‹þýþ*ŒÝÏh¿ïÑÿ ⨢€ý/þ{Åÿ ~ÿ Gú_ü÷‹þýþ*Š( ÿ Kÿ žñߣÿ ÅRfëþ{Eÿ ~ÿ E ¿éóÞ/ûôøªLÝÏh¿ïÑÿ ⨢€Ý"9ü>j|_ºR‰ÎI'©<ÑE ÿÙ
\ No newline at end of file
--- a/widgetmanager/tsrc/wmunittest/data/wmlogo/logocorrupt.png	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-‰PNG
-
-   
IHDR  <   W   #n|   sRGB ®Îé   gAMA  ±üa    cHRM  z&  €„  ú   €è  u0  ê`  :˜  pœºQ<  ˜þIDATx^í½XÙº5œ{Ï=÷ž3÷ !4„@Ü=3™ÈÄ…@šœ¸»»1 ÁÝÝÝݦ•¦
—úWu‘’@&ÌÉÜïû¿çäYÙOu±»ºjïZû•ýîwÿ£–ÙÝÝý_ÿõ_~÷«¿ƒí³î·ú]â“øãûÛWéÕ âûü¸‘¿üý>/Ñ=°öÿVíÖßCôwýö{õÿc@ÍßS÷{ý¾ÏyȺ co ¹þsùH8ÿ÷¿ÿ½½¥õoûÛ z
£ª´eƒË®çÔ”×V•VrèlF-Dí#ÔÒë«Æ׃^þþÊTMz½O0ªB¿×¡Úá3ÔWÓúÁ€Ú‡N¯©ªiô¾À¨©ïý=×_Ýn½þ@ï³ßúmÏ~ê÷׿ë¬oq3’טCãÐËi´ÒZ’´u•4ðt-Ì)ÊHÎLKLÍËÌÍLÉ ‘šöR2Pa@ÈLÉtqTÎLêYÉYB×éiª5z!#9½´}>½r¿Øs>9=³/d¥dô‰~Ÿë¯n·^ ÷™‘˜Ñ'þ õ>ëÇöï·ºþ—¯“•šIÕð˜é	éµeµõ•õ 0­‚6¨¢¸’Ec—–ç•äg@[ndq™u»‘§áð9<1ÿw”>‹ß'lÁ7AO;P­ÑÚjÏñõíÓßú>/àð†oÔߤ1¿áEúë÷?ê—µöÿþÕÀ>¼f’ßÅG.[’[RœSý‚YÃT]Vá7dâ ¶¢®³¥‹è"Z…-Íü&á'hŠHšÿ¯(ÍÍ|Üjh´~ô´Õ½@¶@øúöùÂE¾ÙŸ¾M;|“Æü†é¿ßûï—oÖ¤áOù"‘ ©IØÜ,jÁÖÄ	¹"Aƒ°ª¸*7-b–$-D+­ª>9.…Çæâ|ð»?Ò~Nã/Ÿiâ„^_Ô(56}Ž&x èï%è´ýžÿl˜ûƒöá‰Ð1_þ~·¿+ôÿ\}vj4TþV×ÿV×ùú–ürͶó·ú]Š´=¼å7á²x·ÁJh™ÐRÒV–TÅFĵ‰ÚÛ›::š;;[:ˆön[¢¦OÐŒA`   ÐÅ›EŸ
-@I[Iö5âö</õÔÿ
-È~5š,&”Éч-€6ÒBØþŽ=í@Oz|öÙýgS&OÁfYؘçÎÕ;ÈüÒ>¹û9Í]<{k7aÌØÑÃG„…ææ”ddÑÒ¸‡/ú[Ú6ÕøL¦Ñé,ã3Ù&g3öƒPMÝ{¥lÿÍÚ­G²Õ7yŒšólÔ¼Ò+œÇ,v¾àý°ùï†Îw±È
oþ°E®?-tºÔkÈ!K‡,q²äýðÅ.£xŽ_à.3ï­Ü‚»;Líò›SsjÒ2óã±O`µ]õ'ÝŠ}“–VZºâ]0¨7¾o`µR7ÔÖÖVÕ2bÓÊ☳W]Q]üxÒü7RœÆ.rµäýˆ¥ï‡-w¶ÒgÌÏžã—½Üx$ê]á˜Ýæ\ÐàZX÷.»Ä9¯Ü5¿Ö5ážÃqÏiðÈáxä0<rk=skÝ2k}òÙïRÊ|‹9~åB—€¸èÕ0nÅÓÑKíG-ñ¹ÈkäbÏ‘KÝF-u”]v¤ÍH­à0Z$¤²°ï%ÞWÑŒ·–°Hç¬üþÞïOHÆbs—”¨¤Ô¨G[‡PïDê`É8H+lD
-Æ®&zs]Tmwð´£Å!h‰¦Öû¬ãm¢tmüõ¬C­Ï;›k	I!²«xnÁ^º¾»L#t,bõDèÖ?¸ïD€å9§ýGì-Ž¾?|¾Ø;¬..[TÁªÍ¯©-­/ÈE*H4YZëîí mrTlbD4ò±i¿ÀUÉŸÈF HËf‹yÛCÚô˜¬ÄÈ´úzF«,›xÖÉì·óÓ¹¤°ùùŒµO§ü|Wþ×{Škoªn»5w…ÅÔM–Ë5–¨)¨(ËMT…Jj´Ü˜QãGŽúÓMŒ-í½ßùx^n¡ «£½àž=cñ†uÛ Q×­Y¿`Þ|0vá‚y(-X¸pþ‚9³æÊL>d윙K|=ß=rxñÄÉÍ1ôÙC'ðöù#ççÉ“켜ü?!íGŒ{{‘”ÆGÊ¥ŒwÓã;±‰öÈöý0ìšuÿÆ}
-8ž¥>[Qb­	ÃÇÿn0ëôäÂÄäªØTžõi_«ñWsM¯”ì½Php>ßäR‘éõrÃ+µ¿ZdLÙà-µüýÄ•îòküdVúŒZäq2j±÷È%¾£—ù]8zEàÈeÖúŽXá;l¥×Е.CW:
_á:b¹ç˜¥ã—øN\쬰äÉNS縬æ¤ôêôÔ‚”˜ôØà–•>‹?%-½œFIZ–¢+ŸN½ñ} Í- ;{¤cÏä<ìx̘¾ü¶â|Û‰óœ¥úŒ_ê5j‰ÛPŒ+K/s#SU+CM;©Uv¦ªîJ™ªª¦“ª¦¤º3IuGªŠV²’vŒ¢N¤‚N´‚NŒÒ®$U­¸é»Ãfî|·ç¤›OBµWõ%B­‹‹ÆXüíI˯â±Jhq1ï_yððæ¥7n=u¹ü0ðÔè+/‹‘~sÐ[d—<¡y_zÛSß~¯þrð¬×Ãæ¾<ûÙ?5îþCãƳn_xïÇÙ7~šs}ðÜCçß™!ón™skø‚Û?̼òi—¾ŸqsÈÜGƒç=ûqö‹g½:ÛaÈ,D“¼:Ó~8‰·#f¼•šyã‰mBb\!Ôc	i›8ðEõëˆúiÑXX…‹IÊšÅJ¨Ð€°ÀÀHÖñ½GR<ç–e•"ÑfqzqQJaa2¶è(ÈO.$‘‚ÌE…©…%ÉÙÅ)™y)9é¹)…I™…iH7‘ž‡TH%)éåIée‰iÅIY¨™–Ÿžž__Ž¹Á’âj9U©úº›[:ɽöšÚ[š;êjhî>
		Œ	#cr4KZ‰MÛ¿êiéäk
Æ~ -/!86?)»89ÙieÕH©Œl±eåEåyùìꚚ⒲¼‚<¤Ëuyÿî ©ÙšÅËç(O›&£¨1QEa¬Ü„aãÇ‹	›_Wm9}üÚų÷,öŸ8vðêåsàC:wêö±C—ïݲ}x÷•…éá_V®_¶xb¡ *««iª©N›5}Þ®z'Ž^ ±o_amvñÉЇAÔã‡n=píÄᛧŽÞ>}ìÖùã×Þ<}Ò"¸â+I+±óTŸ™”ùöù[ÐyÛ>‚µvìÔÕÕÑÑÞ±[g§o`”wX–SPÙâ·çï|=[ËcÆ® ÚaÓw…jjƒÃÚ¡»Â5vEŠ=M+
-ÐÜ5]+Zsg„ÆŽpM­°Z¡¨?]+XsGðŒÑ3´Â§khìöž¦ë=m·ïtm\ÐoÆŽ÷Ku_œxû>(Í3$*<:&À/0"(ì_"­Ø&ü‚z^3­¥<½$ÜkõÖ­ÿeÑòUÓæÿ&§±mè¤mrs
Sµ4L{äŒ+æ=9Ý~ô,pzò?§=ûiæ«QÆ-}?jÑ+½?Í~0xÎýÁs‚™$æ<2çéÐ9O†Ïy0löý¡3
™õdäü7£‘æë÷¯Ï´#1ãõெN5t†íð/Çϸ
-I›œPŒyZŠ´ƒIoõ'lZÊ{AIZ‹*ñøñ«Ko^¾pyèÉm…O_¾|âÂís×o½vóìõg®Ý8sãƹ›7ÎÞ¾uîÆíSn†Ò…ŒÕWN\¼vüÒµ3¯_8åæ¹K÷Ï\xxú܃“çoŸ!÷&¾pñÚ¹‹7.]ºuúÔ…Ó§.]¾tãÚÕÛ±mé™K¨éâµóg/aƒ&lazþÔ9D½øøû!ÌYê1 H"¢ lqç}ÆO=5ÕE7·$$ÆëˆÀTš¡&¸ÄÀä¸Ï'ê9‰†¶	ï16†Åxéô%{[{p2ÔEĘ¿‡¿Ÿ‡¿§/²û‘,ú _0×ÛßÏD
ò÷
-ðÄ1	ï 	p²/ ro쀈WÆOÇbàc¨0œa8	@ ~žþØ¡øÝ«wØ÷ K
-꧿~y©
-
Œ|.©(b0èt$î#3Œ±¸%ù¥îNØvÙÔØÜÔÀÂP{¯ÞNc#]sc]Kƒ]Và¸úvÛ@IÈ?}86Ús2ÖÔø8´hHÑc8yKª&ùØs°ÛRŸ„¹¡¶É™£ga¤@7FãF¬¢¸©n¥ÀL¸$Hô×ýgT3‘µHŒˆ…vc÷ÌöÙݯžÚbGi¬‚RC®ã{jûüáã×onØ!¤>-±kuaØ7€*q†*ñW„ìQE‰ãä¸Tì-ôY™Šß¥WÁü!ÓJR¼Åýàö¾i©w†û¨f§¼8†A…+'5:5‚ã C瀀Çú®ŠR?„׉Ü*@¼8éÛKZrA#½‰^Â2ZùõÍ<Zx´f¬VëYnŽ±9 É­L>“Ž±8X/*¤‰¾¦Ä’12(B²«ØéòÊ@]~š[Ãk¨å"ñÆ‹FŒl2žSBÔæÜ{L)Õÿ³d.^¢ˆJØò¹NÕ¡¾"^I3 PßêM!É™ÞýG¹Ç1++‘«½ŸôORý‘C09
-“ËÍñ>‘ô (o-Jf
)©›¡Æ”/<,æ~%@5jÃ26³ë9(©ð±O@ÔSú0î‡â*Î|[Ò‚9Ô@LÚTœ¥nPNjU=ÆM*…Í€Ð	)¿öv¤Ìi£ÄOi©}¸`¹ážÈà„Oç9?‘'®hæÒ[ë{£
¹´fn}²«`\2;J®§'Áùú’Gg| &4r\„49èä›M¾“%94ˆ×ˆÜ|ý+¾"éÈ¿ââÿÊ5û#g¿×D÷IÐKýô:ÇQ!+¨©×ž9ž3±}Lùô¼vgHɸü¯4ø'ßíS-ê_Íù4¦@ò^ASó´\õ&­$8¡ßá\)‚ sÀe Í@#â~‘Wd,EZ’·
t¤~ÖÑYüz’_Sòõ\f=Y"êŠÎ€¿óLÔ¢gr
·¸$7)¢ðoÒþј5`Ò‚¨i?6?ºN¯å¬]?ÿ&­X¶CW§¶o{HS’Vâä蟴ö‡Ñp ¥Þ ®7Ø0ëÅ (ê~]	Š2°Ù ¸Ä1%õZ€Ÿâß"ËÞ U¬?zqÿ*ü¿#i?檤ézHûÉêscü…bVÌÛ“VLÚöòé3"êK¤åСC³9t›—ÅìA/‚a#L a3ÅfLO¸tö¥ØòAoýpG÷ÍŠCg±TQïÔ‚•“öËCÒÀ%mïþú}@ü?DÚ«Ç=&4µkôbR=Ƈ¯=@Td‡‚›à²ëYt
-bU–’6“à¨+Ö“…H8úu%¥cK@*Ûâ/
-9,¡Q%›ÙÌ—8†xÿ_¤øIÛçB‹/œüÃ+ÿ‹þi¡×`l«Hü™ë|
èß’–zµ(õò–T%¤Å‰ÑÜß¼IZhÅ bÛÈd’þa1øH”fKñ¶i{¸G1°?ôЕ¿ôGF2êĦli
-bÒâ@ðoÒ~cIû1WÿMÚqÐüVŽ¨²1ˆ´ÔÒ< ³˜ŒÁt9£SO¦G`ž“ô÷˜¯ 7¥$T}¥Óñi(±°îw)JÎjPsäʲß1Ðëÿ‹}ð>5"þÿ^Ò’¤%½	`#ð£EöT
-5Ÿø«¾ùÇKZ꽂L¥ÔcLñ¢.Qøü‡’–t¾ÓEðSs§˜V„$o‘œšÝ!ׂQovϼ\ÏK@½
-X’<à*u±ç™ÒÐXâ¥dbw±ØiOÿßç=þ…´éƤ÷þߤýSÚþ·’´ðSê1x:óȈóÀZ$0@8µ»t"E2ÄŠ3qRø(ÿ[ƵXùã²Çj¢l'Iù¡]$Ìï¹
ê¥éu*…ïŸÀ·’´ÿŠ×{v~ ×hýþû±ïÖû¼/¾U‹ý¹ëH¢\>	AùVí0ÐöùV¿û…ëPap¨€÷¥dáæi¡…&mZ,B¬ ±‰
-s¡¢öúÄ€ÂAþDåþ~÷Ïuùçßú·ÔçWþPOþä[’úýÿä‚ýÝç@÷¯¾Î·jϯ¹ÏÞu¾U;|Íï~Í»7Ðvèïš’hYT Ýà.†
-k®L…²c!Zñáéȇ *ƒÙ8	Aü—ƒEŸèöwþÎSS\ÿ:ú»Ïþ®Œîý§?¼íþ®ó­žë[]ç_oÉ/_¡÷}~Í»ñ­Úí;è“
-m‡þž…º,(	¢âšxm°®‹Zu„œ*THü 0C‰u$øôf¬H@~“þÖãS©þuÀŠîÍ0Ðúýýî@Ï÷÷»ý]G’¾à“
-½Î@ë´ÚuýOžWòâ}«vhû|«ßíï:ð6á–@@dÌ@‰ *c•x
--ñQ‹ññ™Š¼ËÅk²¨ðÆÏ1Ð¥¿úø•>Ñßï~«ûèõ¿U}êa{_íË-9Ðçè}~A#è¥þ×ê÷¾çþè@ß·¾ç½Ÿ/Ô§ÞHZ€rS+%©µ¾Ð‚áæpDiÈÐ)èK3Їh#þÕ÷3Ðûèý|=]z'ÿo×—¼'Ÿ4à@Û¿¿÷íÿTëõwÿQ!A©Œ i‰ªü{pHK	XhÏ›ñêô­ÿ­l6ú@ïs ¶ß×Ôï]ç[µÃ@Ÿk ¿;Ðë«úÔËý¹;` ÷ÿ­êô:_ó>ô¾&8ˆ¯ô¦4*taœÇµïÿÛ ³^²g<b    IEND®B`‚
\ No newline at end of file
--- a/widgetmanager/tsrc/wmunittest/data/wmlogo/logocorrupt.svg	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   id="svg2466"
-   inkscape:version="0.46"
-   sodipodi:docname="drawing.svg"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape">
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     id="layer1"
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer">
-       id="image2462"
-       height="18.19879"
-       width="31.139833"
-       sodipodi:absref="Y:\HS_Domain\homescreen\idlehomescreen\data\qhd_tch\shortcut2_2001f484\gfx\shortcut2logo.png"
-       xlink:href="Y:\HS_Domain\homescreen\idlehomescreen\data\qhd_tch\shortcut2_2001f484\gfx\shortcut2logo.png"
-       transform="matrix(1,0,2.5955691e-2,0.9996631,0,0)" />
-  </g>
-</svg>
Binary file widgetmanager/tsrc/wmunittest/data/wmlogo/test.wgz has changed
--- a/widgetmanager/tsrc/wmunittest/eabi/wmunittestu.def	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-EXPORTS
-	_Z9LibEntryLR13CTestModuleIf @ 1 NONAME
-
--- a/widgetmanager/tsrc/wmunittest/group/Create_sisx.bat	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +0,0 @@
-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
-
-rem Create wm sis&sisx files
-makesis wmunittest.pkg
-signsis wmunittest.SIS wmunittest.SISX Nokia_RnDCert_02.der Nokia_RnDCert_02.key
Binary file widgetmanager/tsrc/wmunittest/group/Nokia_RnDCert_02.der has changed
--- a/widgetmanager/tsrc/wmunittest/group/Nokia_RnDCert_02.key	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIICXQIBAAKBgQC/TDP7KKIaf5+uW4OD2iVZuUMC2a+SeQTjf6srlKcOm+CpPNXn
-uLNm/8fdEnyOIuRXPRKmqhs1n0JkxEGHynELWMTuKXbQx9SRAGUXzyneGn+IJNnO
-vOKHWgKCouX2hfI8rtkdqJpqmO460gGsMgw+lsbeyWyW9lnfLxq+ZC7sqQIDAQAB
-AoGBALmUWZE8GBaQ3P4u9WUCSd3DJkkrmXIFSULSZeH/chlwCwDjbbhArHothVzo
-REE3hEFFlERvHbplZ+mNouzy7boduvgUzbksGrbGMLJ2qO1GzWWVwV+GzOWKd3ss
-/98Gwoy5R8pjnkqUE2wP1iJFw0FjvUTKcYv/z6t3LLJ0CsoBAkEA+c7ixvsviQ3J
-s0INytCKU2bf8fqFQJi1VI82ukxNsujGTQ9upVSjuvqPvWyDvvTdrUBHqO+3qPut
-sEh01Q8aiQJBAMQKDJPVRu4ud3mwUfEavzL5EjqwG1k9VCNGYsT4FwtrHcxu1oP/
-pk6M3rIZukqomoEEnHWPMwhrK3fhBqi0OSECQQDr40VXege4FnH5OI2Hj4afHMyp
-VdQQXGMWFyopnzXblFz0lXb43cTCIiorR9XcMqNFHybLypkWE5o+lRzlt55pAkBQ
-P/zeF5Sts//cpL0mgdh7OVKpC6ZmZaCnwAx2rUhhuDu+kDDoYCLoTOps5fNI1LRK
-1GRoC3LMo3Jr5IYhUYWBAkBpCpN6k4JU/mszq98EojHerQNxk8sPqvQKUzTutohT
-1gLX9yepGayB/TtT2EEJDkWOlnTy/dvN6W3vzbJYz97x
------END RSA PRIVATE KEY-----
--- a/widgetmanager/tsrc/wmunittest/group/bld.inf	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +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:
-* Widget manager unit tests
-*/
-
-PRJ_PLATFORMS
-DEFAULT
-
-PRJ_TESTEXPORTS
-// test case configuration
-../conf/wmunittest.bat              /epoc32/winscw/c/wmunittest.bat
-../conf/wmunittest.ini              /epoc32/winscw/c/testframework/testframework.ini
-../conf/ui_wmunittest.cfg           /epoc32/winscw/c/testframework/ui_wmunittest.cfg
-// test data
-../data/wmlogo/logo.jpg             /epoc32/winscw/c/testframework/wmunittest/wmlogo/logo.jpg
-../data/wmlogo/logo.mif             /epoc32/winscw/c/testframework/wmunittest/wmlogo/logo.mif
-../data/wmlogo/logo.png             /epoc32/winscw/c/testframework/wmunittest/wmlogo/logo.png
-../data/wmlogo/logo.svg             /epoc32/winscw/c/testframework/wmunittest/wmlogo/logo.svg
-../data/wmlogo/logocorrupt.jpg      /epoc32/winscw/c/testframework/wmunittest/wmlogo/logocorrupt.jpg
-../data/wmlogo/logocorrupt.png      /epoc32/winscw/c/testframework/wmunittest/wmlogo/logocorrupt.png
-../data/wmlogo/logocorrupt.svg      /epoc32/winscw/c/testframework/wmunittest/wmlogo/logocorrupt.svg
-../data/wmlogo/test.wgz             /epoc32/winscw/c/testframework/wmunittest/wmlogo/test.wgz
-
-PRJ_TESTMMPFILES
-wmunittest.mmp
-
-//  End of File
--- a/widgetmanager/tsrc/wmunittest/group/wmunittest.mmp	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,104 +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: MMP file for STIF Test Framework's TestScripter 
-* testclass test module.
-*
-*/
-
-#include <data_caging_paths.hrh>
-#include <platform_paths.hrh>
-#include <bldvariant.hrh>
-
-TARGET          wmunittest.dll
-TARGETTYPE      dll
-UID             0x1000008D 0x101FB3E3
-
-CAPABILITY      ALL -TCB
-VENDORID        VID_DEFAULT
-SECUREID        0x101FB3E3
-
-DEFFILE         wmunittest.def
-
-USERINCLUDE     ../inc
-USERINCLUDE     ../../../inc
-
-APP_LAYER_SYSTEMINCLUDE
-SYSTEMINCLUDE   /epoc32/include/libc
-SYSTEMINCLUDE   /epoc32/include/ecom
-
-SOURCEPATH      ../../../src
-SOURCE 	        wmplugin.cpp
-SOURCE          wmresourceloader.cpp
-SOURCE          wmmaincontainer.cpp
-SOURCE          wmmaincontainerview.cpp
-SOURCE          wmwidgetdata.cpp
-SOURCE          wmlistbox.cpp
-SOURCE          wmimageconverter.cpp
-SOURCE          wmiconfileprovider.cpp
-SOURCE          wmpersistentwidgetorder.cpp
-SOURCE          wmeffectmanager.cpp
-SOURCE          wmdetailsdlg.cpp
-SOURCE          wmwidgetloaderao.cpp
-
-SOURCEPATH      ../src
-SOURCE          wmunittest.cpp
-SOURCE          wmunittest_all.cpp
-SOURCE          wmunittest_plugin.cpp
-SOURCE          wmunittest_sortorder.cpp
-SOURCE          wmunittest_converter.cpp
-
-// same as in widgetmanager.mmp
-LIBRARY	    euser.lib
-LIBRARY     cone.lib
-LIBRARY     avkon.lib
-LIBRARY     eikcore.lib
-LIBRARY     estor.lib
-LIBRARY     eikcoctl.lib
-LIBRARY     eikctl.lib
-LIBRARY	    eikdlg.lib
-LIBRARY     efsrv.lib // RFs
-LIBRARY     bafl.lib // BaflUtils
-LIBRARY     apgrfx.lib // RApaLsSession
-LIBRARY     commonengine.lib // StringLoader
-LIBRARY     aknicon.lib // AknIconUtility
-LIBRARY     imageconversion.lib // CImageDecoder
-LIBRARY     bitmaptransforms.lib // CBitmapScaler
-LIBRARY     fbscli.lib // CFbsBitmap
-LIBRARY     gdi.lib // CFont
-LIBRARY     egul.lib // TextUtils
-LIBRARY     ecom.lib // ECom fw
-LIBRARY     aknskins.lib // AknsDrawUtils
-LIBRARY     aknskinsrv.lib // AknsDrawUtils
-LIBRARY     aknswallpaperutils.lib // AknsDrawUtils
-LIBRARY     hscontentcontrol.lib // CHsContentControlUi
-LIBRARY     apparc.lib // CApaCommandLine
-LIBRARY     aknlayout.lib // avkon layout
-LIBRARY     aknlayout2scalable.lib // scalable avkon layout
-LIBRARY     swinstcli.lib // widget uninstall
-LIBRARY     hscontentinfo.lib // CHsContentInfo
-LIBRARY     platformenv.lib  // DriveInfo::GetDefaultDrive
-LIBRARY	    svgengine.lib // CSvgEngineInterfaceImpl
-LIBRARY     gfxtrans.lib // effect manager
-LIBRARY     ws32.lib //WindowSession
-LIBRARY     widgetregistryclient.lib // WidgetRegistryClient
-LIBRARY     hlplch.lib // HlpLauncher
-LIBRARY     sysutil.lib //  diskspace
-LIBRARY     featmgr.lib // FeatureManager
-LIBRARY     etext.lib 
-
-
-// libraries needed by the test framework
-LIBRARY     stiftestinterface.lib
-
-// End of File
--- a/widgetmanager/tsrc/wmunittest/group/wmunittest.pkg	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +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:
-;
-; 	Installation file for STIF
-;
-
-; Languages
-&EN
-
-; Provide value for uid
-#{"STIF"},(0x101FB3E3),1,1,0,TYPE=SA
-
-; Series60 product id for S60 3.0
-[0x101F7961], 0, 0, 0, {"Series60ProductID"}
-
-; Localised Vendor name
-%{"Nokia"}
-
-; Unique Vendor name
-:"Nokia"
-
-
-; Install files
-
-"\epoc32\release\armv5\udeb\wmunittest.dll"   -   "!:\sys\bin\wmunittest.dll"
-
-"..\conf\wmunittest.bat"                      -   "!:\wmunittest.bat"
-"..\conf\wmunittest.ini"                      -   "!:\testframework\testframework2.ini"
-"..\conf\ui_wmunittest.cfg"                   -   "!:\testframework\ui_wmunittest.cfg"
-
-"..\data\wmlogo\logo.jpg"                     -   "!:\testframework\wmunittest\wmlogo\logo.jpg"
-"..\data\wmlogo\logo.mif"                     -   "!:\testframework\wmunittest\wmlogo\logo.mif"
-"..\data\wmlogo\logo.png"                     -   "!:\testframework\wmunittest\wmlogo\logo.png"
-"..\data\wmlogo\logo.svg"                     -   "!:\testframework\wmunittest\wmlogo\logo.svg"
-"..\data\wmlogo\logocorrupt.jpg"              -   "!:\testframework\wmunittest\wmlogo\logocorrupt.jpg"
-"..\data\wmlogo\logocorrupt.png"              -   "!:\testframework\wmunittest\wmlogo\logocorrupt.png"
-"..\data\wmlogo\logocorrupt.svg"              -   "!:\testframework\wmunittest\wmlogo\logocorrupt.svg"
-"..\data\wmlogo\test.wgz"                     -   "!:\testframework\wmunittest\wmlogo\test.wgz"
-
--- a/widgetmanager/tsrc/wmunittest/inc/wmunittest.h	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,205 +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: STIF testclass declaration
-*
-*/
-
-#ifndef WMUNITTEST_H
-#define WMUNITTEST_H
-
-//  INCLUDES
-#include <stiflogger.h>
-#include <testscripterinternal.h>
-#include <stiftestmodule.h>
-#include <testclassassert.h>
-#include <s32file.h> // RFs
-
-#include "wmimageconverter.h" // MConverterObserver
-#include <hscontentcontroller.h>
-
-// MACROS
-#define TEST_CLASS_VERSION_MAJOR 0
-#define TEST_CLASS_VERSION_MINOR 0
-#define TEST_CLASS_VERSION_BUILD 0
-
-// MACROS FOR THE TEST CASES
-#define _LOG(a) iLog->Log(_L(a))
-#define _RETURN(a, b) iLog->Log(_L("\treturn: %d"),b); \
-                     iLog->Log(_L(a)); \
-                     return b; \
-
-#define _CLEANUPCHECK_BEGIN \
-    CBase* __check = new (ELeave) CBase(); \
-    CleanupStack::PushL( __check );
-
-#define _CLEANUPCHECK_END \
-    CleanupStack::PopAndDestroy( __check );
-
-
-// Logging path & file
-_LIT( KWmUnitTestLogPath, "\\logs\\testframework\\wmunittest\\" ); 
-_LIT( KWmUnitTestLogFile, "wmunittest.txt" ); 
-
-// FORWARD DECLARATIONS
-class CWmPlugin;
-class CWmPersistentWidgetOrder;
-class CWmImageConverter;
-class CHsContentInfo;
-class CHsContentInfoArray;
-class RWidgetDataValues;
-
-
-// CLASS DECLARATION
-/**
-*  test class for STIF Test Framework TestScripter.
-*/
-NONSHARABLE_CLASS(CWmUnitTest) : public CScriptBase,
-                                 public MConverterObserver,
-                                 public MHsContentController
-    {
-    public: // Constructors and destructor
-        /** static constructor */
-        static CWmUnitTest* NewL( CTestModuleIf& aTestModuleIf );
-        /** desctructor */
-        ~CWmUnitTest();
-
-    private: // private stuff
-        /** default constructor */
-        CWmUnitTest( CTestModuleIf& aTestModuleIf );
-        /** 2nd phase constructor */
-        void ConstructL();
-        /** version check */
-        void SendTestClassVersion();
-
-    public: // Test run API
-
-        /** From CScriptBase Runs a script line. */
-        virtual TInt RunMethodL( CStifItemParser& aItem );
-    
-    public: // from MConverterObserver
-
-        virtual void NotifyCompletion( TInt aError );
-
-    public: // from MHsContentController
-
-        TInt WidgetListL( CHsContentInfoArray& aArray );
-        TInt ViewListL( CHsContentInfoArray& aArray );
-        TInt AppListL( CHsContentInfoArray& aArray );
-        TInt AddWidgetL( CHsContentInfo& aInfo );
-        TInt RemoveWidgetL( CHsContentInfo& aInfo );
-        TInt AddViewL( CHsContentInfo& aInfo );
-        TInt RemoveViewL( CHsContentInfo& aInfo );
-        TInt ActivateViewL( CHsContentInfo& aInfo );
-        TInt ActivateAppL( CHsContentInfo& aInfo );
-        
-    private: // Test methods
-
-        // GENERAL
-        
-        // sets heap reference value
-        TInt HeapSetL( CStifItemParser& aItem );
-        // Log heap usage to file
-        TInt LogHeapL( CStifItemParser& aItem );
-        // compares heap against reference, logs warning if no match
-        TInt HeapCheckL( CStifItemParser& aItem );
-        // sets the mass of data for next test case
-        TInt SetMassL( CStifItemParser& aItem );
-		// install and uninstall wrt widget for tests
-		TInt InstallWrtWidgetL( CStifItemParser& aItem );
-		TInt UninstallWrtWidgetL( CStifItemParser& aItem );
-		// test error note
-		TInt ErrorPopupL( CStifItemParser& aItem );
-		
-        // TESTING THE PLUGIN
-        
-        // creates the WM plugin
-        TInt PluginCreateL( CStifItemParser& aItem );
-        // deletes WM plugin
-        TInt PluginDeleteL( CStifItemParser& aItem );        
-        // calls Activate method for WM plugin
-        TInt PluginActivateL( CStifItemParser& aItem );
-        // calls Deactivate method for WM plugin
-        TInt PluginDeactivateL( CStifItemParser& aItem );
-        // calls NotifyWidgetListChanged method for WM plugin
-        TInt PluginWidgetsChangedL( CStifItemParser& aItem );
-
-        // TESTING THE WIDGET SORTING AND ORDER
-        
-        // creates WM persistent widget order object
-        TInt WidgetOrderCreateL( CStifItemParser& aItem );
-        // deletes WM persistent widget order object
-        TInt WidgetOrderDeleteL( CStifItemParser& aItem );
-        // tests WM persistent widget order's LOAD method
-        TInt WidgetOrderLoadL( CStifItemParser& aItem );
-        // tests WM persistent widget order's SAVE method
-        TInt WidgetOrderSaveL( CStifItemParser& aItem );
-        // tests WM persistent widget order's SAVE method
-        TInt WidgetOrderCheckIsEmptyL( CStifItemParser& aItem );
-        // calls WM persistent widget order's API methods
-        TInt WidgetOrderUseL( CStifItemParser& aItem );
-
-        // TESTING IMAGE CONVERSION ROUTINES
-       
-        // creates image converter object
-        TInt ImageConverterCreateL( CStifItemParser& aItem );
-        // deletes image converter object
-        TInt ImageConverterDeleteL( CStifItemParser& aItem );
-        // calls image converter's main conversion method
-        TInt ImageConverterConvertL( CStifItemParser& aItem );
-        // checks image converter callback and checks its result
-        TInt ImageConverterWaitResultL( CStifItemParser& aItem );
-        // gets and checks the conversion method from image converter
-        TInt ImageConverterConversionMethodL( CStifItemParser& aItem );
-        // cancel ongoing convert
-        TInt CancelConvertL( CStifItemParser& aItem );
-
-
-    private: // members used in testing
-
-        void CreateContentInfoArrayL( CHsContentInfoArray& aArray, TInt aCount );
-        void CreateWidgetDataArrayL( RWidgetDataValues& aArray, TInt aCount );
-
-        // file server
-        RFs iFs;
-
-        // the WM plugin instance
-        CWmPlugin* iWmPlugin;
-
-        // the WM persistent widget order instance
-        CWmPersistentWidgetOrder* iWmWidgetOrder;
-
-        // the Image converter instance
-        CWmImageConverter* iImageConverter;
-        
-        // amount of heap allocated in HeapSet
-        TInt iHeapSize;
-        
-        // image converter response ready
-        TBool iConversionReady;
-        
-        // image converter result
-        TInt iConversionError;
-        
-        // switch for active schedular wait
-        TBool iWaiting;
-
-        // multipurpose test data count
-        TInt iMass;
-
-    };
-
-
-#endif      // WMUNITTEST_H
-
-// End of File
--- a/widgetmanager/tsrc/wmunittest/src/wmunittest.cpp	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,111 +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: This file contains testclass implementation.
-*
-*/
-
-// INCLUDE FILES
-#include <stiftestinterface.h>
-#include <settingserverclient.h>
-
-#include "wmunittest.h"
-
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CWmUnitTest::CWmUnitTest
-// -----------------------------------------------------------------------------
-//
-CWmUnitTest::CWmUnitTest( 
-    CTestModuleIf& aTestModuleIf ):
-        CScriptBase( aTestModuleIf )
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// CWmUnitTest::ConstructL
-// -----------------------------------------------------------------------------
-//
-void CWmUnitTest::ConstructL()
-    {
-    iLog = CStifLogger::NewL( KWmUnitTestLogPath, 
-            KWmUnitTestLogFile,
-            CStifLogger::ETxt,
-            CStifLogger::EFile,
-            EFalse );
-    
-    SendTestClassVersion();
-    
-    User::LeaveIfError( iFs.Connect() );
-    }
-
-// -----------------------------------------------------------------------------
-// CWmUnitTest::NewL
-// -----------------------------------------------------------------------------
-//
-CWmUnitTest* CWmUnitTest::NewL( 
-    CTestModuleIf& aTestModuleIf )
-    {
-    CWmUnitTest* self = new (ELeave) CWmUnitTest( aTestModuleIf );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// CWmUnitTest::~CWmUnitTest
-// -----------------------------------------------------------------------------
-//
-CWmUnitTest::~CWmUnitTest()
-    { 
-    // Delete logger
-    delete iLog; 
-    // close file server
-    iFs.Close();
-    }
-
-//-----------------------------------------------------------------------------
-// CWmDeploymentClientTest::SendTestClassVersion
-//-----------------------------------------------------------------------------
-//
-void CWmUnitTest::SendTestClassVersion()
-	{
-	TVersion moduleVersion;
-	moduleVersion.iMajor = TEST_CLASS_VERSION_MAJOR;
-	moduleVersion.iMinor = TEST_CLASS_VERSION_MINOR;
-	moduleVersion.iBuild = TEST_CLASS_VERSION_BUILD;
-	
-	TFileName moduleName;
-	moduleName = _L("wmunittest.dll");
-
-	TBool newVersionOfMethod = ETrue;
-	TestModuleIf().SendTestModuleVersion(moduleVersion, moduleName, newVersionOfMethod);
-	}
-
-// ========================== OTHER EXPORTED FUNCTIONS =========================
-
-// -----------------------------------------------------------------------------
-// LibEntryL() - polymorphic Dll entry point.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C CScriptBase* LibEntryL( 
-    CTestModuleIf& aTestModuleIf ) // Backpointer to STIF Test Framework
-    {
-    return ( CScriptBase* ) CWmUnitTest::NewL( aTestModuleIf );
-    }
-
-
-//  End of File
--- a/widgetmanager/tsrc/wmunittest/src/wmunittest_all.cpp	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,249 +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: list of all test blocks
-*
-*/
-
-//INCLUDE FILES
-#include <e32svr.h>
-#include <stdlib.h>
-#include <stifparser.h>
-#include <stiftestinterface.h>
-#include <bautils.h>
-#include <aknsskininstance.h>
-#include <swinstapi.h>
-#include <swinstdefs.h>
-#include <coemain.h>
-#include <EIKENV.H> 
-#include "wmunittest.h"
-#include "wmresourceloader.h"
-
-// CONSTANTS
-_LIT( KHexPrefix,     "0x" );
-_LIT8( KWrtMime, "application/x-nokia-widget");
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CWmUnitTest::RunMethodL
-// -----------------------------------------------------------------------------
-//
-TInt CWmUnitTest::RunMethodL( 
-    CStifItemParser& aItem ) 
-    {
-    static TStifFunctionInfo const KFunctions[] =
-        {
-        // general test blocks
-        ENTRY( "HeapSet", CWmUnitTest::HeapSetL ),
-        ENTRY( "LogHeap", CWmUnitTest::LogHeapL ),
-        ENTRY( "HeapCheck", CWmUnitTest::HeapCheckL ),
-        ENTRY( "SetMass", CWmUnitTest::SetMassL ),
-        ENTRY( "ErrorPopup", CWmUnitTest::ErrorPopupL ),
-        
-		// install/uninstall wrt widget for test
-		ENTRY( "InstallWrtWidget", CWmUnitTest::InstallWrtWidgetL ),
-		ENTRY( "UninstallWrtWidget", CWmUnitTest::UninstallWrtWidgetL ),
-
-        // test blocks for the plugin
-        ENTRY( "PluginCreate", CWmUnitTest::PluginCreateL ),
-        ENTRY( "PluginDelete", CWmUnitTest::PluginDeleteL ),
-        ENTRY( "PluginActivate", CWmUnitTest::PluginActivateL ),
-        ENTRY( "PluginDeactivate", CWmUnitTest::PluginDeactivateL ),
-        ENTRY( "PluginWidgetsChanged", CWmUnitTest::PluginWidgetsChangedL ),
-
-        // test blocks for the persistent widget order class
-        ENTRY( "WidgetOrderCreate", CWmUnitTest::WidgetOrderCreateL ),
-        ENTRY( "WidgetOrderDelete", CWmUnitTest::WidgetOrderDeleteL ),
-        ENTRY( "WidgetOrderLoad", CWmUnitTest::WidgetOrderLoadL ),
-        ENTRY( "WidgetOrderSave", CWmUnitTest::WidgetOrderSaveL ),
-        ENTRY( "WidgetOrderCheckIsEmpty", CWmUnitTest::WidgetOrderCheckIsEmptyL ),
-        ENTRY( "WidgetOrderUse", CWmUnitTest::WidgetOrderUseL ),
-        
-        // test blocks for the image converter
-        ENTRY( "ImageConverterCreate", CWmUnitTest::ImageConverterCreateL ),
-        ENTRY( "ImageConverterDelete", CWmUnitTest::ImageConverterDeleteL ),
-        ENTRY( "ImageConverterConvert", CWmUnitTest::ImageConverterConvertL ),
-        ENTRY( "ImageConverterWaitResult", CWmUnitTest::ImageConverterWaitResultL ),
-        ENTRY( "ImageConverterConversionMethod", CWmUnitTest::ImageConverterConversionMethodL ),
-        ENTRY( "CancelConvert", CWmUnitTest::CancelConvertL ),
-        
-        };
-
-    const TInt count = sizeof( KFunctions ) / 
-                        sizeof( TStifFunctionInfo );
-
-    return RunInternalL( KFunctions, count, aItem );
-    }
-
-// -----------------------------------------------------------------------------
-// CWmUnitTest::HeapSetL
-// -----------------------------------------------------------------------------
-//
-TInt CWmUnitTest::HeapSetL( CStifItemParser& /*aItem*/ )
-    {
-    User::Heap().AllocSize( iHeapSize );
-    _RETURN("HeapSetL End", KErrNone);
-    }
-
-// -----------------------------------------------------------------------------
-// CWmUnitTest::LogHeapL
-// -----------------------------------------------------------------------------
-//
-TInt CWmUnitTest::LogHeapL( CStifItemParser& aItem )
-    {
-    TPtrC inputStr;
-    aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing );
-    User::LeaveIfError( aItem.GetNextString( inputStr ) );
-
-    TInt size = 0;
-    User::Heap().AllocSize( size );
-    iLog->Log( _L("Heap usage, %S: %d"), &inputStr, size );
-    _RETURN("LogHeapL End", KErrNone);
-    }
-
-// -----------------------------------------------------------------------------
-// CWmUnitTest::HeapCheckL
-// -----------------------------------------------------------------------------
-//
-TInt CWmUnitTest::HeapCheckL( CStifItemParser& /*aItem*/ )
-    {
-    TInt ret = KErrNone;
-    TInt heapSizeAtCheckpoint;
-    User::Heap().AllocSize( heapSizeAtCheckpoint );
-    if ( iHeapSize != heapSizeAtCheckpoint )
-        {
-        //ret = KErrTooBig; <-- not reliable
-        _LOG("Warning: potential memory leak detected!!!");
-        }
-    _RETURN("HeapCheckL End", ret);
-    }
-
-// -----------------------------------------------------------------------------
-// CWmUnitTest::SetMassL
-// -----------------------------------------------------------------------------
-//
-TInt CWmUnitTest::SetMassL( CStifItemParser& aItem )
-    {
-    aItem.GetNextInt( iMass );
-    _RETURN("SetMassL End", KErrNone);
-    }
-
-// -----------------------------------------------------------------------------
-// CWmUnitTest::InstallWrtWidgetL
-// -----------------------------------------------------------------------------
-//
-TInt CWmUnitTest::InstallWrtWidgetL( CStifItemParser& aItem )
-    {
-	TInt ret = KErrNone;
-    TPtrC inputStr;
-    aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing );
-    User::LeaveIfError( aItem.GetNextString( inputStr ) );
-    if ( inputStr.Length() == 0 ) User::Leave( KErrArgument );
-	
-	// install widget
-    SwiUI::RSWInstSilentLauncher installer;
-    User::LeaveIfError( installer.Connect() );
-    CleanupClosePushL( installer );
-
-    SwiUI::TInstallReqPckg installReqPckg;
-    SwiUI::TInstallOptions options;
-    TRequestStatus status = KRequestPending;
-    
-    options.iUpgrade = SwiUI::EPolicyAllowed;
-    options.iOptionalItems = SwiUI::EPolicyAllowed;
-    options.iOCSP = SwiUI::EPolicyAllowed;
-    options.iIgnoreOCSPWarnings = SwiUI::EPolicyAllowed;
-    options.iUntrusted = SwiUI::EPolicyAllowed;
-    options.iPackageInfo = SwiUI::EPolicyAllowed;
-    options.iCapabilities = SwiUI::EPolicyAllowed;
-    options.iKillApp = SwiUI::EPolicyAllowed;
-    options.iOverwrite = SwiUI::EPolicyAllowed;
-    options.iDownload = SwiUI::EPolicyAllowed;
-    options.iDrive = 'C';
-    options.iLang = User::Language();
-    options.iUsePhoneLang = ETrue;
-    options.iUpgradeData = SwiUI::EPolicyAllowed;
-    
-    SwiUI::TInstallOptionsPckg optionsPkg( options );
-    installer.SilentInstall( status , inputStr, optionsPkg );
-    User::WaitForRequest( status );
-    ret = status.Int();
-	CleanupStack::PopAndDestroy( &installer );
-    _RETURN("InstallWrtWidgetL End", ret);
-    }
-
-// -----------------------------------------------------------------------------
-// CWmUnitTest::UninstallWrtWidgetL
-// -----------------------------------------------------------------------------
-//
-TInt CWmUnitTest::UninstallWrtWidgetL( CStifItemParser& aItem )
-    {
-    TInt ret = KErrNone;
-	TPtrC inputStr;
-    aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing );
-    User::LeaveIfError( aItem.GetNextString( inputStr ) );
-    if ( inputStr.Length() == 0 ) User::Leave( KErrArgument );
-
-	TUid uid;
-	TLex lex( inputStr );
-	lex.SkipSpaceAndMark();
-	TPtrC mtoken = lex.MarkedToken();
-	TInt pos = mtoken.FindF( KHexPrefix );
-	if ( pos == 0 )
-		{
-		TLex lex( mtoken.Mid( KHexPrefix().Length() ) );
-		TUint id = 0;
-		ret = lex.Val( id, EHex );
-		uid = TUid::Uid( (TInt)id );
-		}
-	else
-		{
-		TInt id( 0 );
-		ret = lex.Val( id );
-		uid.iUid = id;
-		}
-
-	if ( ret == KErrNone )
-		{
-		// Uninstall widget
-		SwiUI::RSWInstSilentLauncher installer;
-		User::LeaveIfError( installer.Connect() );
-		CleanupClosePushL( installer );
-		
-		TRequestStatus status = KRequestPending;
-		SwiUI::TUninstallOptions optionsUninstall;
-		optionsUninstall.iBreakDependency = SwiUI::EPolicyAllowed;
-		optionsUninstall.iKillApp = SwiUI::EPolicyAllowed;
-		SwiUI::TUninstallOptionsPckg uninstallOptionsPkg( optionsUninstall );
-		
-		installer.SilentUninstall( status, uid, uninstallOptionsPkg, KWrtMime );
-		User::WaitForRequest( status );				
-		CleanupStack::PopAndDestroy( &installer );
-		}
-	
-    _RETURN("UninstallWrtWidgetL End", ret);
-    }
-
-// -----------------------------------------------------------------------------
-// CWmUnitTest::ErrorPopup
-// -----------------------------------------------------------------------------
-//
-TInt CWmUnitTest::ErrorPopupL( CStifItemParser& /*aItem*/ )
-    {
-    CWmResourceLoader* res = CWmResourceLoader::NewL( *CEikonEnv::Static() );
-    res->ErrorPopup(KErrNone);
-    delete res;
-    _RETURN("ErrorPopupL End", KErrNone);
-    }
-// End of File
--- a/widgetmanager/tsrc/wmunittest/src/wmunittest_converter.cpp	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,164 +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: test blocks for CWmImageConverter
-*
-*/
-
-//INCLUDE FILES
-#include <e32svr.h>
-#include <stdlib.h>
-#include <stifparser.h>
-#include <stiftestinterface.h>
-#include <bautils.h>
-#include <aknsskininstance.h>
-#include "wmunittest.h"
-// components to test
-#include "wmimageconverter.h"
-
-
-// -----------------------------------------------------------------------------
-// CWmUnitTest::ImageConverterCreateL
-// -----------------------------------------------------------------------------
-//
-TInt CWmUnitTest::ImageConverterCreateL( CStifItemParser& /*aItem*/ )
-    {
-    if ( iImageConverter != 0 ) User::Leave( KErrArgument );
-    TInt ret = KErrNone;
-    _CLEANUPCHECK_BEGIN
-    iImageConverter = CWmImageConverter::NewL( this );
-    _CLEANUPCHECK_END
-    _RETURN("ImageConverterCreateL End", ret);
-    }
-
-// -----------------------------------------------------------------------------
-// CWmUnitTest::ImageConverterDeleteL
-// -----------------------------------------------------------------------------
-//
-TInt CWmUnitTest::ImageConverterDeleteL( CStifItemParser& /*aItem*/ )
-    {
-    if ( iImageConverter == 0 ) User::Leave( KErrArgument );
-    TInt ret = KErrNone;
-    delete iImageConverter;
-    iImageConverter = 0;
-    _RETURN("ImageConverterDeleteL End", ret);
-    }
-
-// -----------------------------------------------------------------------------
-// CWmUnitTest::ImageConverterConvertL
-// -----------------------------------------------------------------------------
-//
-TInt CWmUnitTest::ImageConverterConvertL( CStifItemParser& aItem )
-    {
-    if ( iImageConverter == 0 ) User::Leave( KErrArgument );
-    TInt ret = KErrNone;
-    iConversionReady = EFalse;
-    TPtrC inputStr;
-
-    aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing );
-    User::LeaveIfError( aItem.GetNextString( inputStr ) );
-    if ( inputStr.Length() == 0 ) User::Leave( KErrArgument );
-
-    TRAPD( err, iImageConverter->HandleIconStringL( 40, 40, inputStr ) );
-    if ( err != KErrNone )
-        {
-        _LOG("ImageConverterConvertL:HandleIconStringL returns with leave");
-        iConversionReady = ETrue;
-        iConversionError = err;
-        }
-
-    _RETURN("ImageConverterConvertL End", ret );
-    }
-
-// -----------------------------------------------------------------------------
-// CWmUnitTest::ImageConverterWaitResultL
-// -----------------------------------------------------------------------------
-//
-TInt CWmUnitTest::ImageConverterWaitResultL( CStifItemParser& aItem )
-    {
-    if ( iImageConverter == 0 ) User::Leave( KErrArgument );
-    TInt ret = KErrNone;
-    TInt expectedResult;
-
-    User::LeaveIfError( aItem.GetNextInt( expectedResult ) );    
-
-    iWaiting = EFalse;
-    if ( !iConversionReady )
-        {
-        iWaiting = ETrue;
-        CActiveScheduler::Start();
-        iWaiting = EFalse;
-        }
-
-    // check conversion error
-    if ( expectedResult == KErrNone && iConversionError != KErrNone )
-        {
-        _LOG("ImageConverterWaitResultL: expected ok, returns error");
-        ret = iConversionError;
-        }
-    else if ( expectedResult != KErrNone && iConversionError == KErrNone )
-        {
-        _LOG("ImageConverterWaitResultL: expected error, returns ok");
-        ret = KErrGeneral;
-        }
-
-    _RETURN("ImageConverterWaitResultL End", ret);
-    }
-
-// -----------------------------------------------------------------------------
-// CWmUnitTest::NotifyCompletion
-// -----------------------------------------------------------------------------
-//
-void CWmUnitTest::NotifyCompletion( TInt aError )
-    {
-    if ( !iConversionReady )
-        {
-        iConversionReady = ETrue;
-        iConversionError = aError;
-        if ( iWaiting )
-            {
-            CActiveScheduler::Stop();
-            }
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CWmUnitTest::ImageConverterConversionMethodL
-// -----------------------------------------------------------------------------
-//
-TInt CWmUnitTest::ImageConverterConversionMethodL( CStifItemParser& aItem )
-    {
-    if ( iImageConverter == 0 ) User::Leave( KErrArgument );
-    TInt ret = KErrNone;
-    TInt conversionMethod;
-
-    User::LeaveIfError( aItem.GetNextInt( conversionMethod ) );    
-
-    // check conversion method
-    if ( conversionMethod != iImageConverter->ConversionMethod() )
-        ret = KErrGeneral;
-
-    _RETURN("ImageConverterConversionMethodL End", ret);
-    }
-
-// -----------------------------------------------------------------------------
-// CWmUnitTest::CancelConvertL
-// -----------------------------------------------------------------------------
-//
-TInt CWmUnitTest::CancelConvertL( CStifItemParser& aItem )
-    {
-    if ( iImageConverter == 0 ) User::Leave( KErrArgument );
-    iImageConverter->Cancel();
-    _RETURN("CancelConvertL End", KErrNone);
-    }
-// End of File
--- a/widgetmanager/tsrc/wmunittest/src/wmunittest_plugin.cpp	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,186 +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: test blocks for CWmPlugin
-*
-*/
-
-//INCLUDE FILES
-#include <e32svr.h>
-#include <stdlib.h>
-#include <stifparser.h>
-#include <stiftestinterface.h>
-#include <bautils.h>
-#include <aknsskininstance.h>
-#include "wmunittest.h"
-// components to test
-#include "wmplugin.h"
-#include <hscontentinfo.h>
-#include <hscontentinfoarray.h>
-
-// MACROS
-#define _LOG(a) iLog->Log(_L(a))
-#define _RETURN(a, b) iLog->Log(_L("\treturn: %d"),b); \
-                     iLog->Log(_L(a)); \
-                     return b; \
-
-#define _CLEANUPCHECK_BEGIN \
-    CBase* __check = new (ELeave) CBase(); \
-    CleanupStack::PushL( __check );
-
-#define _CLEANUPCHECK_END \
-    CleanupStack::PopAndDestroy( __check );
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-
-// -----------------------------------------------------------------------------
-// CWmUnitTest::PluginCreateL
-// -----------------------------------------------------------------------------
-//
-TInt CWmUnitTest::PluginCreateL( CStifItemParser& /*aItem*/ )
-    {
-    if ( iWmPlugin != 0 ) User::Leave( KErrArgument );
-    TInt ret = KErrNone;
-    _CLEANUPCHECK_BEGIN
-    iWmPlugin = CWmPlugin::NewL();
-    iWmPlugin->SetContentController( this );
-    _CLEANUPCHECK_END
-    _RETURN("PluginCreateL End", ret);
-    }
-
-// -----------------------------------------------------------------------------
-// CWmUnitTest::PluginDeleteL
-// -----------------------------------------------------------------------------
-//
-TInt CWmUnitTest::PluginDeleteL( CStifItemParser& /*aItem*/ )
-    {
-    if ( iWmPlugin == 0 ) User::Leave( KErrArgument );
-    TInt ret = KErrNone;
-    delete iWmPlugin;
-    iWmPlugin = 0;
-    _RETURN("PluginDeleteL End", ret);
-    }
-
-// -----------------------------------------------------------------------------
-// CWmUnitTest::PluginActivateL
-// -----------------------------------------------------------------------------
-//
-TInt CWmUnitTest::PluginActivateL( CStifItemParser& /*aItem*/ )
-    {
-    if ( iWmPlugin == 0 ) User::Leave( KErrArgument );
-    iWmPlugin->Activate();
-    _RETURN("PluginActivateL End", KErrNone);
-    }
-
-// -----------------------------------------------------------------------------
-// CWmUnitTest::PluginDeactivateL
-// -----------------------------------------------------------------------------
-//
-TInt CWmUnitTest::PluginDeactivateL( CStifItemParser& /*aItem*/ )
-    {
-    if ( iWmPlugin == 0 ) User::Leave( KErrArgument );
-    iWmPlugin->Deactivate();
-    _RETURN("PluginActivateL End", KErrNone);
-    }
-
-// -----------------------------------------------------------------------------
-// CWmUnitTest::PluginWidgetsChangedL
-// -----------------------------------------------------------------------------
-//
-TInt CWmUnitTest::PluginWidgetsChangedL( CStifItemParser& /*aItem*/ )
-    {
-    if ( iWmPlugin == 0 ) User::Leave( KErrArgument );
-    iWmPlugin->NotifyWidgetListChanged();
-    _RETURN("PluginWidgetsChangedL End", KErrNone);
-    }
-
-// =============================================================================
-// Methods from MHsContentController
-// =============================================================================
-
-TInt CWmUnitTest::WidgetListL( CHsContentInfoArray& aArray )
-    {
-    CreateContentInfoArrayL( aArray, iMass );
-    return KErrNone;
-    }
-
-TInt CWmUnitTest::ViewListL( CHsContentInfoArray& /*aArray*/ )
-    {
-    return KErrNone;
-    }
-
-TInt CWmUnitTest::AppListL( CHsContentInfoArray& /*aArray*/ )
-    {
-    return KErrNone;
-    }
-
-TInt CWmUnitTest::AddWidgetL( CHsContentInfo& /*aInfo*/ )
-    {
-    return KErrNone;
-    }
-
-TInt CWmUnitTest::RemoveWidgetL( CHsContentInfo& /*aInfo*/ )
-    {
-    return KErrNone;
-    }
-
-TInt CWmUnitTest::AddViewL( CHsContentInfo& /*aInfo*/ )
-    {
-    return KErrNone;
-    }
-
-TInt CWmUnitTest::RemoveViewL( CHsContentInfo& /*aInfo*/ )
-    {
-    return KErrNone;
-    }
-
-TInt CWmUnitTest::ActivateViewL( CHsContentInfo& /*aInfo*/ )
-    {
-    return KErrNone;
-    }
-
-TInt CWmUnitTest::ActivateAppL( CHsContentInfo& /*aInfo*/ )
-    {
-    return KErrNone;
-    }
-
-
-
-
-// -----------------------------------------------------------------------------
-// CWmUnitTest::CreateContentInfoArrayL
-// -----------------------------------------------------------------------------
-//
-void CWmUnitTest::CreateContentInfoArrayL( CHsContentInfoArray& aArray, TInt aCount )
-    {
-    for( TInt i=0; i<aCount; ++i )
-        {
-        CHsContentInfo* info = CHsContentInfo::NewLC();
-        TBuf<64> name;
-        name.Format( _L("Widget_%d"), i );
-        info->SetNameL( name );
-        TBuf8<20> id;
-        id.Num( i );
-        info->SetUidL( id );
-        info->SetTypeL( _L8("template") );
-        info->SetIconPathL( _L("uid(0x2000DAD2)") );
-        info->SetCanBeAdded( ETrue );
-        info->SetDescriptionL(_L("Default plaa plaa plaa plaa plaa plaa plaa"));
-        
-        aArray.Array().AppendL( info );
-        CleanupStack::Pop( info );
-        }
-    }
-
-// End of File
--- a/widgetmanager/tsrc/wmunittest/src/wmunittest_sortorder.cpp	Thu Dec 17 08:40:49 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,176 +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:  test blocks for CWmPersistentWidgetorder
-*
-*/
-
-//INCLUDE FILES
-#include <e32svr.h>
-#include <stdlib.h>
-#include <stifparser.h>
-#include <stiftestinterface.h>
-#include <bautils.h>
-#include <aknsskininstance.h>
-#include "wmunittest.h"
-// components to test
-#include "wmpersistentwidgetorder.h"
-#include "wmwidgetdata.h"
-#include <hscontentinfo.h>
-#include <hscontentinfoarray.h>
-#include <widgetregistryclient.h> // widgetreqistry
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-
-// -----------------------------------------------------------------------------
-// CWmUnitTest::WidgetOrderCreateL
-// -----------------------------------------------------------------------------
-//
-TInt CWmUnitTest::WidgetOrderCreateL( CStifItemParser& /*aItem*/ )
-    {
-    if ( iWmWidgetOrder != 0 ) User::Leave( KErrArgument );
-    TInt ret = KErrNone;
-    _CLEANUPCHECK_BEGIN
-    iWmWidgetOrder = CWmPersistentWidgetOrder::NewL( iFs );
-    _CLEANUPCHECK_END
-    _RETURN("WidgetOrderCreateL End", ret);
-    }
-
-// -----------------------------------------------------------------------------
-// CWmUnitTest::WidgetOrderDeleteL
-// -----------------------------------------------------------------------------
-//
-TInt CWmUnitTest::WidgetOrderDeleteL( CStifItemParser& /*aItem*/ )
-    {
-    if ( iWmWidgetOrder == 0 ) User::Leave( KErrArgument );
-    TInt ret = KErrNone;
-    delete iWmWidgetOrder;
-    iWmWidgetOrder = 0;
-    _RETURN("WidgetOrderDeleteL End", ret);
-    }
-
-// -----------------------------------------------------------------------------
-// CWmUnitTest::WidgetOrderLoadL
-// -----------------------------------------------------------------------------
-//
-TInt CWmUnitTest::WidgetOrderLoadL( CStifItemParser& /*aItem*/ )
-    {
-    if ( iWmWidgetOrder == 0 ) User::Leave( KErrArgument );
-    TInt ret = KErrNone;
-    _CLEANUPCHECK_BEGIN
-    iWmWidgetOrder->LoadL();
-    _CLEANUPCHECK_END
-    _RETURN("WidgetOrderLoadL End", ret);
-    }
-
-
-// -----------------------------------------------------------------------------
-// CWmUnitTest::WidgetOrderSaveL
-// -----------------------------------------------------------------------------
-//
-TInt CWmUnitTest::WidgetOrderSaveL( CStifItemParser& /*aItem*/ )
-    {
-    if ( iWmWidgetOrder == 0 ) User::Leave( KErrArgument );
-    TInt ret = KErrNone;
-
-    _CLEANUPCHECK_BEGIN
-    RWidgetDataValues array;
-    CleanupClosePushL( array );
-    CreateWidgetDataArrayL( array, iMass );
-    iWmWidgetOrder->StoreL( array );
-    array.ResetAndDestroy();
-    CleanupStack::Pop( &array );
-    _CLEANUPCHECK_END
-
-    _RETURN("WidgetOrderSaveL End", ret);
-    }
-
-// -----------------------------------------------------------------------------
-// CWmUnitTest::WidgetOrderCheckIsEmptyL
-// -----------------------------------------------------------------------------
-//
-TInt CWmUnitTest::WidgetOrderCheckIsEmptyL( CStifItemParser& aItem )
-    {
-    if ( iWmWidgetOrder == 0 ) User::Leave( KErrArgument );
-    TInt ret = KErrNone;
-    TInt expectedResult;
-    aItem.GetNextInt( expectedResult );
-
-    if ( iWmWidgetOrder->IsEmpty() && !expectedResult )
-        ret = KErrGeneral;
-    if ( !iWmWidgetOrder->IsEmpty() && expectedResult )
-        ret = KErrGeneral;
-
-    _RETURN("WidgetOrderCheckIsEmptyL End", ret);
-    }
-
-// -----------------------------------------------------------------------------
-// CWmUnitTest::WidgetOrderUseL
-// -----------------------------------------------------------------------------
-//
-TInt CWmUnitTest::WidgetOrderUseL( CStifItemParser& /*aItem*/ )
-    {
-    if ( iWmWidgetOrder == 0 ) User::Leave( KErrArgument );
-    TInt ret = KErrNone;
-
-    _CLEANUPCHECK_BEGIN
-    // test IndexOf
-    RWidgetDataValues array;
-    CreateWidgetDataArrayL( array, iMass );
-    for( TInt i=0; i<array.Count() && ret==KErrNone; ++i )
-        {
-        TInt index = iWmWidgetOrder->IndexOf( *array[i] );
-        if ( index < KErrNotFound || index >= array.Count() )
-            ret = KErrUnknown; // illegal index
-        }
-    array.ResetAndDestroy();
-    _CLEANUPCHECK_END
-
-    _RETURN("WidgetOrderUseL End", ret);
-    }
-
-
-// -----------------------------------------------------------------------------
-// CWmUnitTest::CreateWidgetDataArrayL
-// -----------------------------------------------------------------------------
-//
-void CWmUnitTest::CreateWidgetDataArrayL( RWidgetDataValues& aArray, TInt aCount )
-    {
-    // first create an array of content info classes
-    CHsContentInfoArray* contentArray = CHsContentInfoArray::NewL();
-    CleanupStack::PushL( contentArray );
-    CreateContentInfoArrayL( *contentArray, aCount );
-    // connect to widget registry
-    RWidgetRegistryClientSession registryClient;
-    User::LeaveIfError( registryClient.Connect() );
-    CleanupClosePushL( registryClient );
-
-    for( TInt i=0; i<contentArray->Array().Count(); ++i )
-        {
-        CWmWidgetData* data = CWmWidgetData::NewL(
-                *contentArray->Array()[i], &registryClient);
-        CleanupStack::PushL( data );
-        aArray.AppendL( data );
-        CleanupStack::Pop( data );
-        delete contentArray->Array()[i];
-        contentArray->Array()[i] = 0;
-        }
- 
-    registryClient.Disconnect();
-    CleanupStack::PopAndDestroy( &registryClient );
-    CleanupStack::PopAndDestroy( contentArray );
-    }
-
-
-// End of File