Revision: 201021 RCL_3
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Wed, 09 Jun 2010 09:29:04 +0300
branchRCL_3
changeset 54 1b758917cafc
parent 50 137ebc85284b
child 59 d721605b30d0
Revision: 201021 Kit: 2010123
idlehomescreen/data/qhd_tch/group/bld.inf
idlehomescreen/data/qhd_tch/profile_2001cb7c/xuikon/00/profile.css
idlehomescreen/data/qhd_tch/profile_2001cb7c/xuikon/00/profile.xml
idlehomescreen/data/qhd_tch/profile_2001cb7c/xuikon/37/profile.css
idlehomescreen/data/qhd_tch/profile_2001cb7c/xuikon/50/profile.css
idlehomescreen/data/qhd_tch/profile_2001cb7c/xuikon/57/profile.css
idlehomescreen/data/qhd_tch/profile_2001cb7c/xuikon/94/profile.css
idlehomescreen/data/qhd_tch/root_2001f482/conf/root2001f482.gcfml
idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48b.confml
idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48b.gcfml
idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48bmanifest.gcfml
idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48bxuikon.gcfml
idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4.confml
idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4.gcfml
idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4manifest.gcfml
idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4xuikon.gcfml
idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5.confml
idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5.gcfml
idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5manifest.gcfml
idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5xuikon.gcfml
idlehomescreen/data/qhd_tch/view_200286ed/conf/view200286ed.confml
idlehomescreen/data/qhd_tch/view_200286ed/conf/view200286ed.gcfml
idlehomescreen/data/qhd_tch/view_200286ed/conf/view200286edmanifest.confml
idlehomescreen/data/qhd_tch/view_200286ed/conf/view200286edmanifest.gcfml
idlehomescreen/data/qhd_tch/view_200286ed/conf/view200286edxuikon.confml
idlehomescreen/data/qhd_tch/view_200286ed/conf/view200286edxuikon.gcfml
idlehomescreen/data/qhd_tch/view_200286ed/group/bld.inf
idlehomescreen/inc/xnbitmap.h
idlehomescreen/inc/xneditmode.h
idlehomescreen/inc/xnnewsticker.h
idlehomescreen/widgetmanager/inc/wmmaincontainer.h
idlehomescreen/widgetmanager/inc/wmwidgetloaderao.h
idlehomescreen/widgetmanager/src/wmmaincontainer.cpp
idlehomescreen/widgetmanager/src/wmwidgetloaderao.cpp
idlehomescreen/xmluicontroller/group/aixmluimain.mmp
idlehomescreen/xmluicontroller/inc/aixmluiconstants.h
idlehomescreen/xmluicontroller/inc/contentrenderer.h
idlehomescreen/xmluicontroller/inc/databuffertransactionelement.h
idlehomescreen/xmluicontroller/inc/dynamicthememodifier.h
idlehomescreen/xmluicontroller/inc/imagetransactionelement.h
idlehomescreen/xmluicontroller/inc/mpscallback.h
idlehomescreen/xmluicontroller/inc/newstickercallbackhandler.h
idlehomescreen/xmluicontroller/inc/pmodtiterator.h
idlehomescreen/xmluicontroller/inc/psobserver.h
idlehomescreen/xmluicontroller/inc/transactionfactory.h
idlehomescreen/xmluicontroller/inc/transactionfactoryimpl.h
idlehomescreen/xmluicontroller/inc/xmluicontroller.h
idlehomescreen/xmluicontroller/src/appui.cpp
idlehomescreen/xmluicontroller/src/contentrenderer.cpp
idlehomescreen/xmluicontroller/src/databuffertransactionelement.cpp
idlehomescreen/xmluicontroller/src/dynamicthememodifier.cpp
idlehomescreen/xmluicontroller/src/emptycontenttransactionelement.cpp
idlehomescreen/xmluicontroller/src/imagetransactionelement.cpp
idlehomescreen/xmluicontroller/src/newstickercallbackhandler.cpp
idlehomescreen/xmluicontroller/src/pmodtiterator.cpp
idlehomescreen/xmluicontroller/src/psobserver.cpp
idlehomescreen/xmluicontroller/src/transactionfactoryimpl.cpp
idlehomescreen/xmluicontroller/src/xmluicontroller.cpp
idlehomescreen/xmluirendering/renderingplugins/xnbitmapfactory/group/xnbitmapfactory.mmp
idlehomescreen/xmluirendering/renderingplugins/xnbitmapfactory/inc/xnbitmapadapter.h
idlehomescreen/xmluirendering/renderingplugins/xnbitmapfactory/inc/xnimagedecoder.h
idlehomescreen/xmluirendering/renderingplugins/xnbitmapfactory/src/xnbitmap.cpp
idlehomescreen/xmluirendering/renderingplugins/xnbitmapfactory/src/xnbitmapadapter.cpp
idlehomescreen/xmluirendering/renderingplugins/xnbitmapfactory/src/xnimagedecoder.cpp
idlehomescreen/xmluirendering/renderingplugins/xnnewstickerfactory/inc/xnnewstickeradapter.h
idlehomescreen/xmluirendering/renderingplugins/xnnewstickerfactory/inc/xnnewstickercontrol.h
idlehomescreen/xmluirendering/renderingplugins/xnnewstickerfactory/src/xnnewsticker.cpp
idlehomescreen/xmluirendering/renderingplugins/xnnewstickerfactory/src/xnnewstickeradapter.cpp
idlehomescreen/xmluirendering/renderingplugins/xnnewstickerfactory/src/xnnewstickercontrol.cpp
idlehomescreen/xmluirendering/renderingplugins/xntexteditorfactory/inc/xntexteditoradapter.h
idlehomescreen/xmluirendering/renderingplugins/xntexteditorfactory/src/xntexteditoradapter.cpp
idlehomescreen/xmluirendering/uiengine/inc/xnviewcontroladapter.h
idlehomescreen/xmluirendering/uiengine/src/xnbackgroundmanager.cpp
idlehomescreen/xmluirendering/uiengine/src/xncomposer.cpp
idlehomescreen/xmluirendering/uiengine/src/xncontroladapterimpl.cpp
idlehomescreen/xmluirendering/uiengine/src/xneditmode.cpp
idlehomescreen/xmluirendering/uiengine/src/xneffectmanager.cpp
idlehomescreen/xmluirendering/uiengine/src/xnlistquerydialogadapter.cpp
idlehomescreen/xmluirendering/uiengine/src/xnnodeimpl.cpp
idlehomescreen/xmluirendering/uiengine/src/xnuiengineimpl.cpp
idlehomescreen/xmluirendering/uiengine/src/xnviewadapter.cpp
idlehomescreen/xmluirendering/uiengine/src/xnviewcontroladapter.cpp
idlehomescreen/xmluirendering/uiengine/src/xnwidgetextensionadapter.cpp
menufw/hierarchynavigator/hnengine/group/bld.inf
menufw/hierarchynavigator/hnengine/group/hnengine.mmp
menufw/hierarchynavigator/hnengine/inc/hnengine.h
menufw/hierarchynavigator/hnengine/inc/hninstallnotifier.h
menufw/hierarchynavigator/hnengine/src/hnengine.cpp
menufw/hierarchynavigator/hnengine/src/hninstallnotifier.cpp
menufw/hierarchynavigator/hnmetadatamodel/bwins/hnmetadatamodelu.def
menufw/hierarchynavigator/hnmetadatamodel/eabi/hnmetadatamodelu.def
menufw/hierarchynavigator/hnmetadatamodel/group/hnmetadatamodel.mmp
menufw/hierarchynavigator/hnmetadatamodel/inc/hnglobals.h
menufw/hierarchynavigator/hnmetadatamodel/inc/hnmdlocalization.h
menufw/hierarchynavigator/hnmetadatamodel/inc/hnmdmodel.h
menufw/hierarchynavigator/hnmetadatamodel/inc/hnutils.h
menufw/hierarchynavigator/hnmetadatamodel/inc/hnxmlmodelprovider.h
menufw/hierarchynavigator/hnmetadatamodel/inc/hnxmlsuitefilesreg.h
menufw/hierarchynavigator/hnmetadatamodel/src/hnmdlocalization.cpp
menufw/hierarchynavigator/hnmetadatamodel/src/hnmdmodel.cpp
menufw/hierarchynavigator/hnmetadatamodel/src/hnmdvalueimage.cpp
menufw/hierarchynavigator/hnmetadatamodel/src/hnutils.cpp
menufw/hierarchynavigator/hnmetadatamodel/src/hnxmlmodelprovider.cpp
menufw/hierarchynavigator/hnmetadatamodel/src/hnxmlsuitefilesreg.cpp
menufw/hierarchynavigator/hnpresentationmodel/bwins/hnpresentationmodelu.def
menufw/hierarchynavigator/hnpresentationmodel/eabi/hnpresentationmodelu.def
menufw/hierarchynavigator/hnpresentationmodel/group/hnpresentationmodel.mmp
menufw/hierarchynavigator/hnpresentationmodel/inc/hnitemfocushandler.h
menufw/hierarchynavigator/hnpresentationmodel/inc/hnsuitemodel.h
menufw/hierarchynavigator/hnpresentationmodel/src/hnattributeimage.cpp
menufw/hierarchynavigator/hnpresentationmodel/src/hnitemfocushandler.cpp
menufw/hierarchynavigator/hnpresentationmodel/src/hnsuitemodel.cpp
menufw/menufwui/matrixmenu/src/mmappui.cpp
menufw/menufwui/mmextensions/mmextensionmanager/group/bld.inf
menufw/menufwui/mmextensions/mmextensionmanager/group/mmextensionmanager.mmp
menufw/menufwui/mmextensions/mmextensionmanager/inc/mmecomobserver.h
menufw/menufwui/mmextensions/mmextensionmanager/inc/mmextensionmanager.h
menufw/menufwui/mmextensions/mmextensionmanager/src/mmecomobserver.cpp
menufw/menufwui/mmextensions/mmextensionmanager/src/mmextensionmanager.cpp
menufw/menufwui/mmwidgets/inc/mmdraweranimator.h
menufw/menufwui/mmwidgets/inc/mmgrid.h
menufw/menufwui/mmwidgets/inc/mmgridview.h
menufw/menufwui/mmwidgets/inc/mmlistboxitemdrawer.h
menufw/menufwui/mmwidgets/inc/mmwidgetcontainer.h
menufw/menufwui/mmwidgets/inc/mmwidgetsconstants.h
menufw/menufwui/mmwidgets/src/mmdraweranimator.cpp
menufw/menufwui/mmwidgets/src/mmfloatingitem.cpp
menufw/menufwui/mmwidgets/src/mmgrid.cpp
menufw/menufwui/mmwidgets/src/mmgridcontainer.cpp
menufw/menufwui/mmwidgets/src/mmgridview.cpp
menufw/menufwui/mmwidgets/src/mmlistboxcontainer.cpp
menufw/menufwui/mmwidgets/src/mmlistboxitemdrawer.cpp
menufw/menufwui/mmwidgets/src/mmlistboxview.cpp
menufw/menufwui/mmwidgets/src/mmwidgetcontainer.cpp
menufw/menusuites/foldersuite/loc/matrixmenudata.loc
taskswitcher/taskswitcherui/taskswitcherapp/inc/tsappui.h
taskswitcher/taskswitcherui/taskswitcherapp/inc/tsfastswaparea.h
taskswitcher/taskswitcherui/taskswitcherapp/src/tsappui.cpp
taskswitcher/taskswitcherui/taskswitcherapp/src/tsappview.cpp
taskswitcher/taskswitcherui/taskswitcherapp/src/tsfastswaparea.cpp
taskswitcher/taskswitcherui/taskswitcherapp/src/tsphysicsengine.cpp
--- a/idlehomescreen/data/qhd_tch/group/bld.inf	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/group/bld.inf	Wed Jun 09 09:29:04 2010 +0300
@@ -27,6 +27,7 @@
 #include "../view_2001f48b/group/bld.inf"
 #include "../view_200286e4/group/bld.inf"
 #include "../view_200286e5/group/bld.inf"
+#include "../view_200286ed/group/bld.inf"
 #include "../templateview_20026f50/group/bld.inf"
 #include "../root_2001f482/group/bld.inf"
 
--- a/idlehomescreen/data/qhd_tch/profile_2001cb7c/xuikon/00/profile.css	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/profile_2001cb7c/xuikon/00/profile.css	Wed Jun 09 09:29:04 2010 +0300
@@ -115,9 +115,9 @@
     
     _s60-scroll-behaviour: scroll-alternate;
     
-    _s60-display-time: 2000;
+    _s60-display-time: 5000;
+    _s60-start-delay: 2000;
     _s60-scroll-loop: false;
-    _s60-start-delay: 0;
     _s60-restart-after-update: true;
 }
 
--- a/idlehomescreen/data/qhd_tch/profile_2001cb7c/xuikon/00/profile.xml	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/profile_2001cb7c/xuikon/00/profile.xml	Wed Jun 09 09:29:04 2010 +0300
@@ -73,16 +73,7 @@
                                     <trigger name="titletoscroll" titleindex="0"/>
                                     <event name="system/set">
                                         <property name="name" value="visibility"/>
-                                        <property name="value" value="hidden"/>
-                                        <property name="type" value="string"/>
-                                        <property name="id" value="SatIdleModeIcon"/>
-                                    </event>
-                                </action>
-                                <action>
-                                    <trigger name="titlescrolled" titleindex="0"/>
-                                    <event name="system/set">
-                                        <property name="name" value="visibility"/>
-                                        <property name="value" value="hidden"/>
+                                        <property name="value" value="visible"/>
                                         <property name="type" value="string"/>
                                         <property name="id" value="SatIdleModeIcon"/>
                                     </event>
@@ -91,16 +82,7 @@
                                     <trigger name="titletoscroll" titleindex="1"/>
                                     <event name="system/set">
                                         <property name="name" value="visibility"/>
-                                        <property name="value" value="visible"/>
-                                        <property name="type" value="string"/>
-                                        <property name="id" value="SatIdleModeIcon"/>
-                                    </event>
-                                </action>
-                                <action>
-                                    <trigger name="titlescrolled" titleindex="1"/>
-                                    <event name="system/set">
-                                        <property name="name" value="visibility"/>
-                                        <property name="value" value="visible"/>
+                                        <property name="value" value="hidden"/>
                                         <property name="type" value="string"/>
                                         <property name="id" value="SatIdleModeIcon"/>
                                     </event>
--- a/idlehomescreen/data/qhd_tch/profile_2001cb7c/xuikon/37/profile.css	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/profile_2001cb7c/xuikon/37/profile.css	Wed Jun 09 09:29:04 2010 +0300
@@ -115,9 +115,9 @@
     
     _s60-scroll-behaviour: scroll-alternate;
     
-    _s60-display-time: 2000;
+    _s60-display-time: 5000;
+    _s60-start-delay: 2000;
     _s60-scroll-loop: false;
-    _s60-start-delay: 0;
     _s60-restart-after-update: true;
 }
 
--- a/idlehomescreen/data/qhd_tch/profile_2001cb7c/xuikon/50/profile.css	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/profile_2001cb7c/xuikon/50/profile.css	Wed Jun 09 09:29:04 2010 +0300
@@ -115,9 +115,9 @@
     
     _s60-scroll-behaviour: scroll-alternate;
     
-    _s60-display-time: 2000;
+    _s60-display-time: 5000;
+    _s60-start-delay: 2000;
     _s60-scroll-loop: false;
-    _s60-start-delay: 0;
     _s60-restart-after-update: true;
 }
 
--- a/idlehomescreen/data/qhd_tch/profile_2001cb7c/xuikon/57/profile.css	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/profile_2001cb7c/xuikon/57/profile.css	Wed Jun 09 09:29:04 2010 +0300
@@ -115,9 +115,9 @@
     
     _s60-scroll-behaviour: scroll-alternate;
     
-    _s60-display-time: 2000;
+    _s60-display-time: 5000;
+    _s60-start-delay: 2000;
     _s60-scroll-loop: false;
-    _s60-start-delay: 0;
     _s60-restart-after-update: true;
 }
 
--- a/idlehomescreen/data/qhd_tch/profile_2001cb7c/xuikon/94/profile.css	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/profile_2001cb7c/xuikon/94/profile.css	Wed Jun 09 09:29:04 2010 +0300
@@ -115,9 +115,9 @@
     
     _s60-scroll-behaviour: scroll-alternate;
     
-    _s60-display-time: 2000;
+    _s60-display-time: 5000;
+    _s60-start-delay: 2000;
     _s60-scroll-loop: false;
-    _s60-start-delay: 0;
     _s60-restart-after-update: true;
 }
 
--- a/idlehomescreen/data/qhd_tch/root_2001f482/conf/root2001f482.gcfml	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/root_2001f482/conf/root2001f482.gcfml	Wed Jun 09 09:29:04 2010 +0300
@@ -3,8 +3,8 @@
 	<tag name="target" value="core"/>
 	<tag name="target" value="rofs2"/>
 	<tag name="target" value="rofs3"/>
-	<tag name="target" value="uda"/>
-	<tag name="target" value="emmc"/>
+<!--	<tag name="target" value="uda"/>
+	<tag name="target" value="emmc"/> -->
 <file xmlns="http://www.s60.com/xml/genconfml/1" name="rootconfiguration.xml" target="\private\200159c0\install\root_2001f482\hsps\00\">
 	<setting ref="HSViews/MaxPages"/>
 	<setting ref="HSViews/Views"/>
--- a/idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48b.confml	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48b.confml	Wed Jun 09 09:29:04 2010 +0300
@@ -1,434 +1,493 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <configuration name="Homescreen 1" version="1" xmlns="http://www.s60.com/xml/confml/2" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xs="http://www.w3.org/2001/XMLSchema">
   <feature name="Homescreen 1 widgets" ref="HomescreenPlugins_1">
     <setting name="Max Widgets" ref="MaxWidgets" type="string">
       <desc>Maximum widget amount in Homescreen 1 page. Customizable</desc>
     </setting>
-    <setting name="Use Empty Widgets" readOnly="true" ref="UseEmptyWidgets" type="boolean">
+  <setting name="Use Empty Widgets" readOnly="true" ref="UseEmptyWidgets" type="boolean">
       <desc>Not customizable!</desc>
     </setting>
-    <setting name="Item id for empty widgets definition in view" readOnly="true" ref="ItemIdEmptyWidgets" type="string">
+  <setting name="Item id for empty widgets definition in view" readOnly="true" ref="ItemIdEmptyWidgets" type="string">
       <desc>Not customizable!</desc>
     </setting>
-    <setting name="Property name for empty widgets definition in view" readOnly="true" ref="PropertyEmptyWidgets" type="string">
+  <setting name="Property name for empty widgets definition in view" readOnly="true" ref="PropertyEmptyWidgets" type="string">
       <desc>Not customizable!</desc>
     </setting>
-    <setting name="background path" ref="BackGroundPath" type="string">
+  <setting name="background path" ref="BackGroundPath" type="string">
       <desc>Path of the Wallpaper resource. Customizable. </desc>
     </setting>
-    <setting name="Item id wallpaper" readOnly="true" ref="ItemIdWallpaper" type="string">
+  <setting name="Item id wallpaper" readOnly="true" ref="ItemIdWallpaper" type="string">
       <desc>Not customizable!</desc>
     </setting>
-    <setting name="Wallpaper property name" readOnly="true" ref="WallpaperPropertyName" type="string">
+  <setting name="Wallpaper property name" readOnly="true" ref="WallpaperPropertyName" type="string">
       <desc>Not customizable!</desc>
     </setting>
-    <setting name="Widgets" ref="Plugins" type="sequence">
+  <setting name="Widgets" ref="Plugins" type="sequence">
       <desc>Widgets in the Homescreen 1</desc>
-    <setting name="Widget" ref="Uid" type="selection">
+    <setting name="Widget" ref="Uid" type="string">
       <desc>Widget name</desc>
-      <!-- S60 Native Widgets -->
-      <option name="Empty" value="0x2001f47f"/>
-      <option name="PhoneSetup" value="0x20021195"/>
-      <option name="ContactsBar" value="0x20022eba"/>
-      <option name="Shortcut" value="0x2001f483"/>
-      <option name="Shortcut2" value="0x2001f484"/>
-      <option name="Desktop" value="0x20026f4f"/>
-      <option name="Topcontacts" value="0x200184cd"/>
-      <option name="Topcontacts2" value="0x200184c9"/>
-      <option name="ShareOnlineAI3" value="0x20010980"/>
-      <option name="wsfwidget" value="0x20026f45"/>
-      <option name="Organizer" value="0x2001f481"/>
-      <option name="MusicWidget" value="0x10207c18"/>
-      <option name="Fmtx" value="0x20021189"/>
-      <option name="EmailWidget" value="0x2001e272"/>
-      <option name="Profile" value="0x2001cb7c"/>
-      <option name="ServiceWidget" value="0x20021383"/>
-      <option name="SocialMixer" value="0x2002699f"/>
-      <!-- Automatic option listing of WRTs on the release -->	
-      <option map="DFSFeatures/HomescreenWidgets"></option>
-      </setting>
-      <setting name="Bundle Identifier" ref="BundleIdentifier" type="selection">
-        <desc>Bundle identifier for the (C)WRT widgets. None for the native widgets</desc>
-      <option name="None / Automatic" value="0" />
+      <!--<option map="DFSFeatures/HomescreenWidgets" />-->
+      <option name="Empty" value="0x2001f47f" />
+      <option name="PhoneSetup" value="0x20021195" />
+      <option name="ContactsBar" value="0x20022eba" />
+      <option name="Shortcut" value="0x2001f483" />
+      <option name="Shortcut2" value="0x2001f484" />
+      <option name="Desktop" value="0x20026f4f" />
+      <option name="Topcontacts" value="0x200184cd" />
+      <option name="Topcontacts2" value="0x200184c9" />
+      <option name="ShareOnlineAI3" value="0x20010980" />
+      <option name="wsfwidget" value="0x20026f45" />
+      <option name="Organizer" value="0x2001f481" />
+      <option name="MusicWidget" value="0x10207c18" />
+      <option name="Fmtx" value="0x20021189" />
+      <option name="EmailWidget" value="0x2001e272" />
+      <option name="Profile" value="0x2001cb7c" />
+      <option name="ServiceWidget" value="0x20021383" />
+      <option name="SocialMixer" value="0x2002699f" />
+      <option name="wrtplugin_1" value="0x20022FD4"/>
+      <option name="wrtplugin_2" value="0x20022FD5"/>
+      <option name="wrtplugin_3" value="0x20022FD6"/>
+      <option name="wrtplugin_4" value="0x20022FD7"/>
+      <option name="wrtplugin_5" value="0x20022FD8"/>
+      <option name="wrtplugin_6" value="0x20022FD9"/>
+      <option name="wrtplugin_7" value="0x20022FDA"/>
+      <option name="wrtplugin_8" value="0x20022FDB"/>
+      <option name="wrtplugin_9" value="0x2001CB7D"/>
+      <option name="wrtplugin_10" value="0x2001CB7E"/>
+      <option name="wrtplugin_11" value="0x2001CB7F"/>
+      <option name="wrtplugin_12" value="0x200286EE"/>
     </setting>
-      <setting name="Template Identifier" ref="TemplateIdentifier" type="selection">
+    <setting name="Bundle Identifier" ref="BundleIdentifier" type="string">
+        <desc>Bundle identifier for the (C)WRT widgets. None for the native widgets</desc>
+        <option name="None / Automatic" value="0" />
+	<option name="8TV Catch Up" value="com.nerdattack.widget.8TV"/>
+        <option name="Aftonbladet WebbTV" value="apegroup.aftonbladet.webbtv.symbian3"/>
+        <option name="Al Jazeera" value="si.inova.verve.aljazeera"/>
+        <option name="BBC Arabic Web TV" value="com.nokia.forum.bbcatv1.widget"/>
+        <option name="BH TV" value="com.bollywoodhungama.widget.BollywoodHungamaTV"/>
+        <option name="Channel NewsAsia" value="Channel.newsasia"/>
+        <option name="CNN Video" value="com.cnn"/>
+        <option name="DigiturkWebTV" value="com.digiturkwebtv.widget"/>
+        <option name="EFE Videos" value="com.ericsson.efe.widget"/>
+        <option name="E!" value="com.moderati.eonline"/>
+        <option name="Bollywood" value="br.org.indt.widget.eros"/>
+        <option name="Ovi Files" value="com.nokia.ss.sas.filesql"/>
+        <option name="Hi5" value="com.hi5.widget.Launcher"/>
+        <option name="凤凰电视" value="com.ifeng.www.webtv.widget"/>
+        <option name="Chat" value="com.nokia.ChatClient"/>
+        <option name="芒果 TV" value="com.imgo.tv"/>
+        <option name="India Today" value="br.org.indt.widget.indiatoday"/>
+        <option name="BBC iPlayer" value="com.bbc.widget.iplayer"/>
+        <option name="Contacts' latest activities" value="com.nokia.somawebui.xwidget"/>
+        <option name="M1TV" value="com.m1tv.basic.widget"/>
+        <option name="Makansutr" value="com.nerdattack.wrt.Makansutra"/>
+        <option name="bose" value="com.bose.basic.widget"/>
+        <option name="SingTel MTVS" value="com.nokia.widget.sapi.mtvs"/>
+        <option name="Nat Geo" value="com.natgeo"/>
+        <option name="NRK Mobil-TV" value="no.nrk.mobil.mobiltv.widget"/>
+        <option name="ontv" value="ontv.cc.on.tv.widget"/>
+        <option name="ovi" value="com.nokia.ovi"/>
+        <option name="Movie Teasers" value="com.movieteasers"/>
+        <option name="Schweizer Fernsehen" value="com.sftvreader.basic.widget"/>
+        <option name="Sky News On Demand" value="com.nerdattack.widget.SKYNEWS"/>
+        <option name="Social" value="com.nokia.socialmixer.v1"/>
+        <option name="æœç‹å¨±ä¹" value="com.sohu.widget.webtv4ovi"/>
+        <option name="SSOUI" value="ovi.serviceui.SSOUI"/>
+        <option name="Terra TV" value="com.terra.widget.wrt.tv"/>
+        <option name="Terra TV Lat" value="com.terra.widget.wrt.tv.latam"/>
+        <option name="topApps" value="com.topApps.basic.widget"/>
+        <option name="Tudou" value="com.Tudou.widget"/>
+        <option name="tv2news" value="com.nokia.forum.widget.tv2news"/>
+        <option name="TV2Play" value="no.tv2.tv2play.widget"/>
+        <option name="TV3 Catch Up" value="com.nerdattack.widget.TV3"/>
+        <option name="ВеÑти" value="com.vesti.basic.widget"/>
+        <option name="Viasat No" value="no.viasat.widget"/>
+        <option name="Viasat Swe" value="se.viasat.widget"/>
+        <option name="Virtual Malaysia" value="com.nerdattack.widget.VirtualMalaysia"/>
+        <option name="央广新浪" value="cn.com.sina.3g"/>
+        <option name="Web TV Demo" value="com.nokia.forum.webtv.widget"/>
+        <option name="Yle Areena" value="com.tieto.yle"/>
+        <option name="优酷" value="com.youku.s605th.webtv"/>
+      </setting>
+    <setting name="Template Identifier" ref="TemplateIdentifier" type="selection">
         <desc>Templeate identifier for the (C)WRT widgets. None for the native widgets</desc>
-        <option name="None" value="0"/>
-        <option name="wideimage" value="0x2001f489"/>
-        <option name="threerows" value="0x2001f486"/>
-        <option name="threetextrows" value="0x2001f487"/>
-        <option name="tworows" value="0x2001f488"/>
-        <option name="onerow" value="0x2001f480"/>
+      <option name="None" value="0" />
+      <option name="wideimage" value="0x2001f489" />
+      <option name="threerows" value="0x2001f486" />
+      <option name="threetextrows" value="0x2001f487" />
+      <option name="tworows" value="0x2001f488" />
+      <option name="onerow" value="0x2001f480" />
       </setting>
-      <setting name="locking Status" ref="LockingStatus" type="selection">
+    <setting name="locking Status" ref="LockingStatus" type="selection">
         <desc>Locking status for the widget 1 in Homescreen 1 page</desc>
-        <option name="None" value="none"/>
-        <option name="Locked" value="locked"/>
+      <option name="None" value="none" />
+      <option name="Locked" value="locked" />
       </setting>
-      <setting name="Customize Shortcut widget" ref="ShortcutWidget" type="selection">
+    <setting name="Customize Shortcut widget" ref="ShortcutWidget" type="selection">
         <desc>Customize enabler for desktop/shortcut widget</desc>
-        <option name="Not Customize desktop Widget" value="0"/>
-        <option name="Customize desktop widget" value="1"/>
+      <option name="Not Customize desktop Widget" value="0" />
+      <option name="Customize desktop widget" value="1" />
       </setting>
-      <setting name="Customize 1st Shortcut" ref="Customize1Shortcut" type="selection">
+    <setting name="Customize 1st Shortcut" ref="Customize1Shortcut" type="selection">
         <desc>Customize 1st item in desktop widget</desc>
-        <option name="Not Customize 1st shortcut" value="0"/>
-        <option name="Customize 1st shortcut" value="1"/>
+      <option name="Not Customize 1st shortcut" value="0" />
+      <option name="Customize 1st shortcut" value="1" />
       </setting>
-      <setting name="1st Shortcut type" ref="Shortcut1Type" type="selection">
+    <setting name="1st Shortcut type" ref="Shortcut1Type" type="selection">
         <desc>Type of the item: Application, bookmark, or shortcut(param specific item)</desc>
-        <option name="Application" value="application"/>
-        <option name="Bookmark" value="bookmark"/>
-        <option name="Shortcut" value="shortcut"/>
+      <option name="Application" value="application" />
+      <option name="Bookmark" value="bookmark" />
+      <option name="Shortcut" value="shortcut" />
       </setting>
-      <setting name="1st Shortcut Uid" ref="Shortcut1Uid" type="string">
+    <setting name="1st Shortcut Uid" ref="Shortcut1Uid" type="string">
         <desc>Uid for the application, Menu content Uid for the bookmarks and shortcuts.</desc>
       </setting>
-      <setting name="1st Shortcut View" ref="Shortcut1View" type="string">
+    <setting name="1st Shortcut View" ref="Shortcut1View" type="string">
         <desc>url for the bookmark based shortcut. for example http://www.google.com</desc>
       </setting>
-      <setting name="1st Shortcut Param" ref="Shortcut1Param" type="string">
+    <setting name="1st Shortcut Param" ref="Shortcut1Param" type="string">
         <desc>Params for shortcut. For example: messaging:msg</desc>
       </setting>
-      <setting name="Customize 2nd Shortcut" ref="Customize2Shortcut" type="selection">
+    <setting name="Customize 2nd Shortcut" ref="Customize2Shortcut" type="selection">
         <desc>Customize 2nd item in desktop widget</desc>
-        <option name="Not Customize 2nd shortcut" value="0"/>
-        <option name="Customize 2nd shortcut" value="1"/>
+      <option name="Not Customize 2nd shortcut" value="0" />
+      <option name="Customize 2nd shortcut" value="1" />
       </setting>
-      <setting name="2nd Shortcut Application" ref="Shortcut2Type" type="selection">
+    <setting name="2nd Shortcut Application" ref="Shortcut2Type" type="selection">
         <desc>Type of the item: Application, bookmark, or shortcut(param specific item)</desc>
-        <option name="Application" value="application"/>
-        <option name="Bookmark" value="bookmark"/>
-        <option name="Shortcut" value="shortcut"/>
+      <option name="Application" value="application" />
+      <option name="Bookmark" value="bookmark" />
+      <option name="Shortcut" value="shortcut" />
       </setting>
-      <setting name="2nd Shortcut Uid" ref="Shortcut2Uid" type="string">
+    <setting name="2nd Shortcut Uid" ref="Shortcut2Uid" type="string">
         <desc>Uid for the application, Menu content Uid for the bookmarks and shortcuts</desc>
       </setting>
-      <setting name="2nd Shortcut View" ref="Shortcut2View" type="string">
+    <setting name="2nd Shortcut View" ref="Shortcut2View" type="string">
         <desc>url for the bookmark based shortcut. for example http://www.google.com</desc>
       </setting>
-      <setting name="2nd Shortcut Param" ref="Shortcut2Param" type="string">
+    <setting name="2nd Shortcut Param" ref="Shortcut2Param" type="string">
         <desc>Params for shortcut. messaging:msg</desc>
       </setting>
-      <setting name="Customize 3rd Shortcut" ref="Customize3Shortcut" type="selection">
+    <setting name="Customize 3rd Shortcut" ref="Customize3Shortcut" type="selection">
         <desc>Customize 3rd item in desktop widget</desc>
-        <option name="Not Customize 3rd shortcut" value="0"/>
-        <option name="Customize 3rd shortcut" value="1"/>
+      <option name="Not Customize 3rd shortcut" value="0" />
+      <option name="Customize 3rd shortcut" value="1" />
       </setting>
-      <setting name="3rd Shortcut Application" ref="Shortcut3Type" type="selection">
+    <setting name="3rd Shortcut Application" ref="Shortcut3Type" type="selection">
         <desc>Type of the item: Application, bookmark, or shortcut(param specific item)</desc>
-        <option name="Application" value="application"/>
-        <option name="Bookmark" value="bookmark"/>
-        <option name="Shortcut" value="shortcut"/>
+      <option name="Application" value="application" />
+      <option name="Bookmark" value="bookmark" />
+      <option name="Shortcut" value="shortcut" />
       </setting>
-      <setting name="3rd Shortcut Uid" ref="Shortcut3Uid" type="string">
+    <setting name="3rd Shortcut Uid" ref="Shortcut3Uid" type="string">
         <desc>Uid for the application,Menu content  Uid for the bookmarks and shortcuts.</desc>
       </setting>
-      <setting name="3rd Shortcut View" ref="Shortcut3View" type="string">
+    <setting name="3rd Shortcut View" ref="Shortcut3View" type="string">
         <desc>url for the bookmark based shortcut. for example http://www.google.com</desc>
       </setting>
-      <setting name="3rd Shortcut Param" ref="Shortcut3Param" type="string">
+    <setting name="3rd Shortcut Param" ref="Shortcut3Param" type="string">
         <desc>Params for shortcut. messaging:msg</desc>
       </setting>
-      <setting name="Customize 4th Shortcut" ref="Customize4Shortcut" type="selection">
+    <setting name="Customize 4th Shortcut" ref="Customize4Shortcut" type="selection">
         <desc>Customize 4th item in desktop widget</desc>
-        <option name="Not Customize 4th shortcut" value="0" />
-        <option name="Customize 4th shortcut" value="1" />
+      <option name="Not Customize 4th shortcut" value="0" />
+      <option name="Customize 4th shortcut" value="1" />
       </setting>
-      <setting name="4th ShortCut Application" ref="Shortcut4Type" type="selection">
+    <setting name="4th ShortCut Application" ref="Shortcut4Type" type="selection">
         <desc>Type of the item: Application, bookmark, or shortcut(param specific item)</desc>
-        <option name="Application" value="application" />
-        <option name="Bookmark" value="bookmark" />
-        <option name="Shortcut" value="shortcut" />
+      <option name="Application" value="application" />
+      <option name="Bookmark" value="bookmark" />
+      <option name="Shortcut" value="shortcut" />
       </setting>
-      <setting name="4th Shortcut Uid" ref="Shortcut4Uid" type="string">
+    <setting name="4th Shortcut Uid" ref="Shortcut4Uid" type="string">
         <desc>Uid for the application, Menu content  ids for the bookmarks and shortcuts </desc>
       </setting>
-      <setting name="4th Shortcut View" ref="Shortcut4View" type="string">
+    <setting name="4th Shortcut View" ref="Shortcut4View" type="string">
         <desc>url for the bookmark based shortcut. for example http://www.google.com</desc>
       </setting>
-      <setting name="4th Shortcut Param" ref="Shortcut4Param" type="string">
+    <setting name="4th Shortcut Param" ref="Shortcut4Param" type="string">
         <desc>Params for shortcut. messaging:msg</desc>
       </setting>
-      <setting name="Shortcut1 ItemId" readOnly="true" ref="Shortcut1ItemId" type="string">
+    <setting name="Shortcut1 ItemId" readOnly="true" ref="Shortcut1ItemId" type="string">
         <desc>Not customizable!</desc>
       </setting>
-      <setting name="Shortcut1 ItemName" readOnly="true" ref="Shortcut1ItemName" type="string">
+    <setting name="Shortcut1 ItemName" readOnly="true" ref="Shortcut1ItemName" type="string">
         <desc>Not customizable!</desc>
       </setting>
-      <setting name="Shortcut2 ItemId" readOnly="true" ref="Shortcut2ItemId" type="string">
+    <setting name="Shortcut2 ItemId" readOnly="true" ref="Shortcut2ItemId" type="string">
         <desc>Not customizable!</desc>
       </setting>
-      <setting name="Shortcut2 ItemName" readOnly="true" ref="Shortcut2ItemName" type="string">
+    <setting name="Shortcut2 ItemName" readOnly="true" ref="Shortcut2ItemName" type="string">
         <desc>Not customizable!</desc>
       </setting>
-      <setting name="Shortcut3 ItemId" readOnly="true" ref="Shortcut3ItemId" type="string">
+    <setting name="Shortcut3 ItemId" readOnly="true" ref="Shortcut3ItemId" type="string">
         <desc>Not customizable!</desc>
       </setting>
-      <setting name="Shortcut3 ItemName" readOnly="true" ref="Shortcut3ItemName" type="string">
+    <setting name="Shortcut3 ItemName" readOnly="true" ref="Shortcut3ItemName" type="string">
         <desc>Not customizable!</desc>
       </setting>
-      <setting name="Shortcut4 ItemId" readOnly="true" ref="Shortcut4ItemId" type="string">
+    <setting name="Shortcut4 ItemId" readOnly="true" ref="Shortcut4ItemId" type="string">
         <desc>Not customizable!</desc>
       </setting>
-      <setting name="Shortcut4 ItemName" readOnly="true" ref="Shortcut4ItemName" type="string">
+    <setting name="Shortcut4 ItemName" readOnly="true" ref="Shortcut4ItemName" type="string">
         <desc>Not customizable!</desc>
       </setting>
-      <setting name="Shortcut PropertyNameType" readOnly="true" ref="ShortcutPropertyNameType" type="string">
+    <setting name="Shortcut PropertyNameType" readOnly="true" ref="ShortcutPropertyNameType" type="string">
         <desc>Not customizable!</desc>
       </setting>
-      <setting name="Shortcut PropertyNameUid" readOnly="true" ref="ShortcutPropertyNameUid" type="string">
+    <setting name="Shortcut PropertyNameUid" readOnly="true" ref="ShortcutPropertyNameUid" type="string">
         <desc>Not customizable!</desc>
       </setting>
-      <setting name="Shortcut PropertyNameView" readOnly="true" ref="ShortcutPropertyNameView" type="string">
+    <setting name="Shortcut PropertyNameView" readOnly="true" ref="ShortcutPropertyNameView" type="string">
         <desc>Not customizable!</desc>
       </setting>
-      <setting name="Shortcut PropertyNameParam" readOnly="true" ref="ShortcutPropertyNameParam" type="string">
+    <setting name="Shortcut PropertyNameParam" readOnly="true" ref="ShortcutPropertyNameParam" type="string">
         <desc>Not customizable!</desc>
       </setting>
     </setting>
   </feature>
-  <data>
+<data>
     <HomescreenPlugins_1>
       <MaxWidgets>6</MaxWidgets>
-      <UseEmptyWidgets>true</UseEmptyWidgets>
-      <ItemIdEmptyWidgets>hs_qhd_tch_view</ItemIdEmptyWidgets>
-      <PropertyEmptyWidgets>use_empty_widget</PropertyEmptyWidgets>
-      <ItemIdWallpaper>wallpaper</ItemIdWallpaper>
-      <WallpaperPropertyName>path</WallpaperPropertyName>
-      <BackGroundPath />
-      <Plugins extensionPolicy="replace">
+    <UseEmptyWidgets>true</UseEmptyWidgets>
+    <ItemIdEmptyWidgets>hs_qhd_tch_view</ItemIdEmptyWidgets>
+    <PropertyEmptyWidgets>use_empty_widget</PropertyEmptyWidgets>
+    <ItemIdWallpaper>wallpaper</ItemIdWallpaper>
+    <WallpaperPropertyName>path</WallpaperPropertyName>
+    <BackGroundPath />
+    <Plugins extensionPolicy="replace">
         <Uid>0x2001cb7c</Uid>
-        <BundleIdentifier>0</BundleIdentifier>
-        <TemplateIdentifier>0</TemplateIdentifier>
-        <LockingStatus>locked</LockingStatus>
-        <ShortcutWidget>0</ShortcutWidget>
-        <Customize1Shortcut />
-        <Shortcut1Type />
-        <Shortcut1Uid />
-        <Shortcut1View />
-        <Shortcut1Param />
-        <Customize2Shortcut />
-        <Shortcut2Type />
-        <Shortcut2Uid />
-        <Shortcut2View />
-        <Shortcut2Param />
-        <Customize3Shortcut />
-        <Shortcut3Type />
-        <Shortcut3Uid />
-        <Shortcut3View />
-        <Shortcut3Param />
-        <Customize4Shortcut />
-        <Shortcut4Type />
-        <Shortcut4Uid />
-        <Shortcut4View />
-        <Shortcut4Param />
-        <Shortcut1ItemId>first</Shortcut1ItemId>
-        <Shortcut1ItemName>Shortcut1</Shortcut1ItemName>
-        <Shortcut2ItemId>second</Shortcut2ItemId>
-        <Shortcut2ItemName>Shortcut2</Shortcut2ItemName>
-        <Shortcut3ItemId>third</Shortcut3ItemId>
-        <Shortcut3ItemName>Shortcut3</Shortcut3ItemName>
-        <Shortcut4ItemId>fourth</Shortcut4ItemId>
-        <Shortcut4ItemName>Shortcut4</Shortcut4ItemName>
-        <ShortcutPropertyNameType>type</ShortcutPropertyNameType>
-        <ShortcutPropertyNameUid>uid</ShortcutPropertyNameUid>
-        <ShortcutPropertyNameView>view</ShortcutPropertyNameView>
-        <ShortcutPropertyNameParam>param</ShortcutPropertyNameParam>
+      <BundleIdentifier>0</BundleIdentifier>
+      <TemplateIdentifier>0</TemplateIdentifier>
+      <LockingStatus>locked</LockingStatus>
+      <ShortcutWidget>0</ShortcutWidget>
+      <Customize1Shortcut />
+      <Shortcut1Type />
+      <Shortcut1Uid />
+      <Shortcut1View />
+      <Shortcut1Param />
+      <Customize2Shortcut />
+      <Shortcut2Type />
+      <Shortcut2Uid />
+      <Shortcut2View />
+      <Shortcut2Param />
+      <Customize3Shortcut />
+      <Shortcut3Type />
+      <Shortcut3Uid />
+      <Shortcut3View />
+      <Shortcut3Param />
+      <Customize4Shortcut />
+      <Shortcut4Type />
+      <Shortcut4Uid />
+      <Shortcut4View />
+      <Shortcut4Param />
+      <Shortcut1ItemId>first</Shortcut1ItemId>
+      <Shortcut1ItemName>Shortcut1</Shortcut1ItemName>
+      <Shortcut2ItemId>second</Shortcut2ItemId>
+      <Shortcut2ItemName>Shortcut2</Shortcut2ItemName>
+      <Shortcut3ItemId>third</Shortcut3ItemId>
+      <Shortcut3ItemName>Shortcut3</Shortcut3ItemName>
+      <Shortcut4ItemId>fourth</Shortcut4ItemId>
+      <Shortcut4ItemName>Shortcut4</Shortcut4ItemName>
+      <ShortcutPropertyNameType>type</ShortcutPropertyNameType>
+      <ShortcutPropertyNameUid>uid</ShortcutPropertyNameUid>
+      <ShortcutPropertyNameView>view</ShortcutPropertyNameView>
+      <ShortcutPropertyNameParam>param</ShortcutPropertyNameParam>
       </Plugins>
-      <Plugins>
+    <Plugins>
         <Uid>0x20026f4f</Uid>
-        <BundleIdentifier>0</BundleIdentifier>
-        <TemplateIdentifier>0</TemplateIdentifier>
-        <LockingStatus>none</LockingStatus>
-        <ShortcutWidget>0</ShortcutWidget>
-        <Customize1Shortcut>0</Customize1Shortcut>
-        <Shortcut1Type />
-        <Shortcut1Uid />
-        <Shortcut1View />
-        <Shortcut1Param />
-        <Customize2Shortcut />
-        <Shortcut2Type />
-        <Shortcut2Uid />
-        <Shortcut2View />
-        <Shortcut2Param />
-        <Customize3Shortcut />
-        <Shortcut3Type />
-        <Shortcut3Uid />
-        <Shortcut3View />
-        <Shortcut3Param />
-        <Customize4Shortcut />
-        <Shortcut4Type />
-        <Shortcut4Uid />
-        <Shortcut4View />
-        <Shortcut4Param />
-        <Shortcut1ItemId>first</Shortcut1ItemId>
-        <Shortcut1ItemName>Shortcut1</Shortcut1ItemName>
-        <Shortcut2ItemId>second</Shortcut2ItemId>
-        <Shortcut2ItemName>Shortcut2</Shortcut2ItemName>
-        <Shortcut3ItemId>third</Shortcut3ItemId>
-        <Shortcut3ItemName>Shortcut3</Shortcut3ItemName>
-        <Shortcut4ItemId>fourth</Shortcut4ItemId>
-        <Shortcut4ItemName>Shortcut4</Shortcut4ItemName>
-        <ShortcutPropertyNameType>type</ShortcutPropertyNameType>
-        <ShortcutPropertyNameUid>uid</ShortcutPropertyNameUid>
-        <ShortcutPropertyNameView>view</ShortcutPropertyNameView>
-        <ShortcutPropertyNameParam>param</ShortcutPropertyNameParam>
+      <BundleIdentifier>0</BundleIdentifier>
+      <TemplateIdentifier>0</TemplateIdentifier>
+      <LockingStatus>none</LockingStatus>
+      <ShortcutWidget>0</ShortcutWidget>
+      <Customize1Shortcut>0</Customize1Shortcut>
+      <Shortcut1Type />
+      <Shortcut1Uid />
+      <Shortcut1View />
+      <Shortcut1Param />
+      <Customize2Shortcut />
+      <Shortcut2Type />
+      <Shortcut2Uid />
+      <Shortcut2View />
+      <Shortcut2Param />
+      <Customize3Shortcut />
+      <Shortcut3Type />
+      <Shortcut3Uid />
+      <Shortcut3View />
+      <Shortcut3Param />
+      <Customize4Shortcut />
+      <Shortcut4Type />
+      <Shortcut4Uid />
+      <Shortcut4View />
+      <Shortcut4Param />
+      <Shortcut1ItemId>first</Shortcut1ItemId>
+      <Shortcut1ItemName>Shortcut1</Shortcut1ItemName>
+      <Shortcut2ItemId>second</Shortcut2ItemId>
+      <Shortcut2ItemName>Shortcut2</Shortcut2ItemName>
+      <Shortcut3ItemId>third</Shortcut3ItemId>
+      <Shortcut3ItemName>Shortcut3</Shortcut3ItemName>
+      <Shortcut4ItemId>fourth</Shortcut4ItemId>
+      <Shortcut4ItemName>Shortcut4</Shortcut4ItemName>
+      <ShortcutPropertyNameType>type</ShortcutPropertyNameType>
+      <ShortcutPropertyNameUid>uid</ShortcutPropertyNameUid>
+      <ShortcutPropertyNameView>view</ShortcutPropertyNameView>
+      <ShortcutPropertyNameParam>param</ShortcutPropertyNameParam>
       </Plugins>
-      <Plugins>
+    <Plugins>
         <Uid>0x10207c18</Uid>
-        <BundleIdentifier>0</BundleIdentifier>
-        <TemplateIdentifier>0</TemplateIdentifier>
-        <LockingStatus>none</LockingStatus>
-        <ShortcutWidget>0</ShortcutWidget>
-        <Customize1Shortcut>0</Customize1Shortcut>
-        <Shortcut1Type />
-        <Shortcut1Uid />
-        <Shortcut1View />
-        <Shortcut1Param />
-        <Customize2Shortcut />
-        <Shortcut2Type />
-        <Shortcut2Uid />
-        <Shortcut2View />
-        <Shortcut2Param />
-        <Customize3Shortcut />
-        <Shortcut3Type />
-        <Shortcut3Uid />
-        <Shortcut3View />
-        <Shortcut3Param />
-        <Customize4Shortcut />
-        <Shortcut4Type />
-        <Shortcut4Uid />
-        <Shortcut4View />
-        <Shortcut4Param />
-        <Shortcut1ItemId>first</Shortcut1ItemId>
-        <Shortcut1ItemName>Shortcut1</Shortcut1ItemName>
-        <Shortcut2ItemId>second</Shortcut2ItemId>
-        <Shortcut2ItemName>Shortcut2</Shortcut2ItemName>
-        <Shortcut3ItemId>third</Shortcut3ItemId>
-        <Shortcut3ItemName>Shortcut3</Shortcut3ItemName>
-        <Shortcut4ItemId>fourth</Shortcut4ItemId>
-        <Shortcut4ItemName>Shortcut4</Shortcut4ItemName>
-        <ShortcutPropertyNameType>type</ShortcutPropertyNameType>
-        <ShortcutPropertyNameUid>uid</ShortcutPropertyNameUid>
-        <ShortcutPropertyNameView>view</ShortcutPropertyNameView>
-        <ShortcutPropertyNameParam>param</ShortcutPropertyNameParam>
+      <BundleIdentifier>0</BundleIdentifier>
+      <TemplateIdentifier>0</TemplateIdentifier>
+      <LockingStatus>none</LockingStatus>
+      <ShortcutWidget>0</ShortcutWidget>
+      <Customize1Shortcut>0</Customize1Shortcut>
+      <Shortcut1Type />
+      <Shortcut1Uid />
+      <Shortcut1View />
+      <Shortcut1Param />
+      <Customize2Shortcut />
+      <Shortcut2Type />
+      <Shortcut2Uid />
+      <Shortcut2View />
+      <Shortcut2Param />
+      <Customize3Shortcut />
+      <Shortcut3Type />
+      <Shortcut3Uid />
+      <Shortcut3View />
+      <Shortcut3Param />
+      <Customize4Shortcut />
+      <Shortcut4Type />
+      <Shortcut4Uid />
+      <Shortcut4View />
+      <Shortcut4Param />
+      <Shortcut1ItemId>first</Shortcut1ItemId>
+      <Shortcut1ItemName>Shortcut1</Shortcut1ItemName>
+      <Shortcut2ItemId>second</Shortcut2ItemId>
+      <Shortcut2ItemName>Shortcut2</Shortcut2ItemName>
+      <Shortcut3ItemId>third</Shortcut3ItemId>
+      <Shortcut3ItemName>Shortcut3</Shortcut3ItemName>
+      <Shortcut4ItemId>fourth</Shortcut4ItemId>
+      <Shortcut4ItemName>Shortcut4</Shortcut4ItemName>
+      <ShortcutPropertyNameType>type</ShortcutPropertyNameType>
+      <ShortcutPropertyNameUid>uid</ShortcutPropertyNameUid>
+      <ShortcutPropertyNameView>view</ShortcutPropertyNameView>
+      <ShortcutPropertyNameParam>param</ShortcutPropertyNameParam>
       </Plugins>
-      <Plugins>
+    <Plugins>
         <Uid>0x2001f481</Uid>
-        <BundleIdentifier>0</BundleIdentifier>
-        <TemplateIdentifier>0</TemplateIdentifier>
-        <LockingStatus>none</LockingStatus>
-        <ShortcutWidget>0</ShortcutWidget>
-        <Customize1Shortcut>0</Customize1Shortcut>
-        <Shortcut1Type />
-        <Shortcut1Uid />
-        <Shortcut1View />
-        <Shortcut1Param />
-        <Customize2Shortcut />
-        <Shortcut2Type />
-        <Shortcut2Uid />
-        <Shortcut2View />
-        <Shortcut2Param />
-        <Customize3Shortcut />
-        <Shortcut3Type />
-        <Shortcut3Uid />
-        <Shortcut3View />
-        <Shortcut3Param />
-        <Customize4Shortcut />
-        <Shortcut4Type />
-        <Shortcut4Uid />
-        <Shortcut4View />
-        <Shortcut4Param />
-        <Shortcut1ItemId>first</Shortcut1ItemId>
-        <Shortcut1ItemName>Shortcut1</Shortcut1ItemName>
-        <Shortcut2ItemId>second</Shortcut2ItemId>
-        <Shortcut2ItemName>Shortcut2</Shortcut2ItemName>
-        <Shortcut3ItemId>third</Shortcut3ItemId>
-        <Shortcut3ItemName>Shortcut3</Shortcut3ItemName>
-        <Shortcut4ItemId>fourth</Shortcut4ItemId>
-        <Shortcut4ItemName>Shortcut4</Shortcut4ItemName>
-        <ShortcutPropertyNameType>type</ShortcutPropertyNameType>
-        <ShortcutPropertyNameUid>uid</ShortcutPropertyNameUid>
-        <ShortcutPropertyNameView>view</ShortcutPropertyNameView>
-        <ShortcutPropertyNameParam>param</ShortcutPropertyNameParam>
+      <BundleIdentifier>0</BundleIdentifier>
+      <TemplateIdentifier>0</TemplateIdentifier>
+      <LockingStatus>none</LockingStatus>
+      <ShortcutWidget>0</ShortcutWidget>
+      <Customize1Shortcut>0</Customize1Shortcut>
+      <Shortcut1Type />
+      <Shortcut1Uid />
+      <Shortcut1View />
+      <Shortcut1Param />
+      <Customize2Shortcut />
+      <Shortcut2Type />
+      <Shortcut2Uid />
+      <Shortcut2View />
+      <Shortcut2Param />
+      <Customize3Shortcut />
+      <Shortcut3Type />
+      <Shortcut3Uid />
+      <Shortcut3View />
+      <Shortcut3Param />
+      <Customize4Shortcut />
+      <Shortcut4Type />
+      <Shortcut4Uid />
+      <Shortcut4View />
+      <Shortcut4Param />
+      <Shortcut1ItemId>first</Shortcut1ItemId>
+      <Shortcut1ItemName>Shortcut1</Shortcut1ItemName>
+      <Shortcut2ItemId>second</Shortcut2ItemId>
+      <Shortcut2ItemName>Shortcut2</Shortcut2ItemName>
+      <Shortcut3ItemId>third</Shortcut3ItemId>
+      <Shortcut3ItemName>Shortcut3</Shortcut3ItemName>
+      <Shortcut4ItemId>fourth</Shortcut4ItemId>
+      <Shortcut4ItemName>Shortcut4</Shortcut4ItemName>
+      <ShortcutPropertyNameType>type</ShortcutPropertyNameType>
+      <ShortcutPropertyNameUid>uid</ShortcutPropertyNameUid>
+      <ShortcutPropertyNameView>view</ShortcutPropertyNameView>
+      <ShortcutPropertyNameParam>param</ShortcutPropertyNameParam>
       </Plugins>
-      <Plugins>
+    <Plugins>
         <Uid>0x2001f47f</Uid>
-        <BundleIdentifier>0</BundleIdentifier>
-        <TemplateIdentifier>0</TemplateIdentifier>
-        <LockingStatus>none</LockingStatus>
-        <ShortcutWidget>0</ShortcutWidget>
-        <Customize1Shortcut>0</Customize1Shortcut>
-        <Shortcut1Type />
-        <Shortcut1Uid />
-        <Shortcut1View />
-        <Shortcut1Param />
-        <Customize2Shortcut />
-        <Shortcut2Type />
-        <Shortcut2Uid />
-        <Shortcut2View />
-        <Shortcut2Param />
-        <Customize3Shortcut />
-        <Shortcut3Type />
-        <Shortcut3Uid />
-        <Shortcut3View />
-        <Shortcut3Param />
-        <Customize4Shortcut />
-        <Shortcut4Type />
-        <Shortcut4Uid />
-        <Shortcut4View />
-        <Shortcut4Param />
-        <Shortcut1ItemId>first</Shortcut1ItemId>
-        <Shortcut1ItemName>Shortcut1</Shortcut1ItemName>
-        <Shortcut2ItemId>second</Shortcut2ItemId>
-        <Shortcut2ItemName>Shortcut2</Shortcut2ItemName>
-        <Shortcut3ItemId>third</Shortcut3ItemId>
-        <Shortcut3ItemName>Shortcut3</Shortcut3ItemName>
-        <Shortcut4ItemId>fourth</Shortcut4ItemId>
-        <Shortcut4ItemName>Shortcut4</Shortcut4ItemName>
-        <ShortcutPropertyNameType>type</ShortcutPropertyNameType>
-        <ShortcutPropertyNameUid>uid</ShortcutPropertyNameUid>
-        <ShortcutPropertyNameView>view</ShortcutPropertyNameView>
-        <ShortcutPropertyNameParam>param</ShortcutPropertyNameParam>
+      <BundleIdentifier>0</BundleIdentifier>
+      <TemplateIdentifier>0</TemplateIdentifier>
+      <LockingStatus>none</LockingStatus>
+      <ShortcutWidget>0</ShortcutWidget>
+      <Customize1Shortcut>0</Customize1Shortcut>
+      <Shortcut1Type />
+      <Shortcut1Uid />
+      <Shortcut1View />
+      <Shortcut1Param />
+      <Customize2Shortcut />
+      <Shortcut2Type />
+      <Shortcut2Uid />
+      <Shortcut2View />
+      <Shortcut2Param />
+      <Customize3Shortcut />
+      <Shortcut3Type />
+      <Shortcut3Uid />
+      <Shortcut3View />
+      <Shortcut3Param />
+      <Customize4Shortcut />
+      <Shortcut4Type />
+      <Shortcut4Uid />
+      <Shortcut4View />
+      <Shortcut4Param />
+      <Shortcut1ItemId>first</Shortcut1ItemId>
+      <Shortcut1ItemName>Shortcut1</Shortcut1ItemName>
+      <Shortcut2ItemId>second</Shortcut2ItemId>
+      <Shortcut2ItemName>Shortcut2</Shortcut2ItemName>
+      <Shortcut3ItemId>third</Shortcut3ItemId>
+      <Shortcut3ItemName>Shortcut3</Shortcut3ItemName>
+      <Shortcut4ItemId>fourth</Shortcut4ItemId>
+      <Shortcut4ItemName>Shortcut4</Shortcut4ItemName>
+      <ShortcutPropertyNameType>type</ShortcutPropertyNameType>
+      <ShortcutPropertyNameUid>uid</ShortcutPropertyNameUid>
+      <ShortcutPropertyNameView>view</ShortcutPropertyNameView>
+      <ShortcutPropertyNameParam>param</ShortcutPropertyNameParam>
       </Plugins>
-     <Plugins>
+    <Plugins>
         <Uid>0x2001f47f</Uid>
-        <BundleIdentifier>0</BundleIdentifier>
-        <TemplateIdentifier>0</TemplateIdentifier>
-        <LockingStatus>none</LockingStatus>
-        <ShortcutWidget>0</ShortcutWidget>
-        <Customize1Shortcut>0</Customize1Shortcut>
-        <Shortcut1Type />
-        <Shortcut1Uid />
-        <Shortcut1View />
-        <Shortcut1Param />
-        <Customize2Shortcut />
-        <Shortcut2Type />
-        <Shortcut2Uid />
-        <Shortcut2View />
-        <Shortcut2Param />
-        <Customize3Shortcut />
-        <Shortcut3Type />
-        <Shortcut3Uid />
-        <Shortcut3View />
-        <Shortcut3Param />
-        <Customize4Shortcut />
-        <Shortcut4Type />
-        <Shortcut4Uid />
-        <Shortcut4View />
-        <Shortcut4Param />
-        <Shortcut1ItemId>first</Shortcut1ItemId>
-        <Shortcut1ItemName>Shortcut1</Shortcut1ItemName>
-        <Shortcut2ItemId>second</Shortcut2ItemId>
-        <Shortcut2ItemName>Shortcut2</Shortcut2ItemName>
-        <Shortcut3ItemId>third</Shortcut3ItemId>
-        <Shortcut3ItemName>Shortcut3</Shortcut3ItemName>
-        <Shortcut4ItemId>fourth</Shortcut4ItemId>
-        <Shortcut4ItemName>Shortcut4</Shortcut4ItemName>
-        <ShortcutPropertyNameType>type</ShortcutPropertyNameType>
-        <ShortcutPropertyNameUid>uid</ShortcutPropertyNameUid>
-        <ShortcutPropertyNameView>view</ShortcutPropertyNameView>
-        <ShortcutPropertyNameParam>param</ShortcutPropertyNameParam>
+      <BundleIdentifier>0</BundleIdentifier>
+      <TemplateIdentifier>0</TemplateIdentifier>
+      <LockingStatus>none</LockingStatus>
+      <ShortcutWidget>0</ShortcutWidget>
+      <Customize1Shortcut>0</Customize1Shortcut>
+      <Shortcut1Type />
+      <Shortcut1Uid />
+      <Shortcut1View />
+      <Shortcut1Param />
+      <Customize2Shortcut />
+      <Shortcut2Type />
+      <Shortcut2Uid />
+      <Shortcut2View />
+      <Shortcut2Param />
+      <Customize3Shortcut />
+      <Shortcut3Type />
+      <Shortcut3Uid />
+      <Shortcut3View />
+      <Shortcut3Param />
+      <Customize4Shortcut />
+      <Shortcut4Type />
+      <Shortcut4Uid />
+      <Shortcut4View />
+      <Shortcut4Param />
+      <Shortcut1ItemId>first</Shortcut1ItemId>
+      <Shortcut1ItemName>Shortcut1</Shortcut1ItemName>
+      <Shortcut2ItemId>second</Shortcut2ItemId>
+      <Shortcut2ItemName>Shortcut2</Shortcut2ItemName>
+      <Shortcut3ItemId>third</Shortcut3ItemId>
+      <Shortcut3ItemName>Shortcut3</Shortcut3ItemName>
+      <Shortcut4ItemId>fourth</Shortcut4ItemId>
+      <Shortcut4ItemName>Shortcut4</Shortcut4ItemName>
+      <ShortcutPropertyNameType>type</ShortcutPropertyNameType>
+      <ShortcutPropertyNameUid>uid</ShortcutPropertyNameUid>
+      <ShortcutPropertyNameView>view</ShortcutPropertyNameView>
+      <ShortcutPropertyNameParam>param</ShortcutPropertyNameParam>
       </Plugins>
     </HomescreenPlugins_1>
   </data>
--- a/idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48b.gcfml	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48b.gcfml	Wed Jun 09 09:29:04 2010 +0300
@@ -3,10 +3,11 @@
 	<tag name="target" value="core"/>
 	<tag name="target" value="rofs2"/>
 	<tag name="target" value="rofs3"/>
-	<tag name="target" value="uda"/>
-	<tag name="target" value="emmc"/>
+<!--	<tag name="target" value="uda"/>
+	<tag name="target" value="emmc"/> -->
 <phase name='post'/> <!-- post phase for making sure that data for all homescreen widgets is available in sequence -->
 
+<!--
   <ruleml xmlns="http://www.s60.com/xml/ruleml/3">
     <rule>True configures ${HomescreenPlugins_1.Plugins} = {% mapBundleIds(@{DFSFeatures.HomescreenWidgets}, @{HomescreenPlugins_1.Plugins}) %}</rule>
 <eval_globals>      
@@ -32,7 +33,8 @@
   
   return new_plugins
 </eval_globals>
-  </ruleml>
+  </ruleml> 
+-->
 <file xmlns="http://www.s60.com/xml/genconfml/1" name="viewconfiguration.xml" target="\private\200159c0\install\view_2001f48b\hsps\00\">
 	<setting ref="HomescreenPlugins_1/MaxWidgets"/>
 	<setting ref="HomescreenPlugins_1/UseEmptyWidgets"/>
--- a/idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48bmanifest.gcfml	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48bmanifest.gcfml	Wed Jun 09 09:29:04 2010 +0300
@@ -3,8 +3,8 @@
 	<tag name="target" value="core"/>
 	<tag name="target" value="rofs2"/>
 	<tag name="target" value="rofs3"/>
-	<tag name="target" value="uda"/>
-	<tag name="target" value="emmc"/>
+<!--	<tag name="target" value="uda"/>
+	<tag name="target" value="emmc"/> -->
 <file xmlns="http://www.s60.com/xml/genconfml/1" name="manifest.dat" target="\private\200159c0\install\view_2001f48b\hsps\00\">
 	<setting ref="Homescreen1manifest/PackageVersion"/>
 	<setting ref="Homescreen1manifest/DeviceFamily"/>
--- a/idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48bxuikon.gcfml	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48bxuikon.gcfml	Wed Jun 09 09:29:04 2010 +0300
@@ -3,8 +3,8 @@
 	<tag name="target" value="core"/>
 	<tag name="target" value="rofs2"/>
 	<tag name="target" value="rofs3"/>
-	<tag name="target" value="uda"/>
-	<tag name="target" value="emmc"/>
+<!--	<tag name="target" value="uda"/>
+	<tag name="target" value="emmc"/> -->
 <file xmlns="http://www.s60.com/xml/genconfml/1" name="empty.foo" target="\private\200159c0\install\view_2001f48b\xuikon\">
 	<setting ref="Homescreen1XuikonFolder/FolderCFG"/>
 		<xsl:stylesheet version="1.0" 
Binary file idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4.confml has changed
--- a/idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4.gcfml	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4.gcfml	Wed Jun 09 09:29:04 2010 +0300
@@ -3,10 +3,11 @@
 	<tag name="target" value="core"/>
 	<tag name="target" value="rofs2"/>
 	<tag name="target" value="rofs3"/>
-	<tag name="target" value="uda"/>
-	<tag name="target" value="emmc"/>
+<!--	<tag name="target" value="uda"/>
+	<tag name="target" value="emmc"/> -->
 <phase name='post'/> <!-- post phase for making sure that data for all homescreen widgets is available in sequence -->
 
+<!--
   <ruleml xmlns="http://www.s60.com/xml/ruleml/3">
     <rule>True configures ${HomescreenPlugins_2.Plugins} = {% mapBundleIds(@{DFSFeatures.HomescreenWidgets}, @{HomescreenPlugins_2.Plugins}) %}</rule>
 <eval_globals>      
@@ -33,6 +34,8 @@
   return new_plugins
 </eval_globals>
   </ruleml>
+-->
+
 <file xmlns="http://www.s60.com/xml/genconfml/1" name="viewconfiguration.xml" target="\private\200159c0\install\view_200286e4\hsps\00\">
 	<setting ref="HomescreenPlugins_2/MaxWidgets"/>
 	<setting ref="HomescreenPlugins_2/UseEmptyWidgets"/>
--- a/idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4manifest.gcfml	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4manifest.gcfml	Wed Jun 09 09:29:04 2010 +0300
@@ -3,8 +3,8 @@
 	<tag name="target" value="core"/>
 	<tag name="target" value="rofs2"/>
 	<tag name="target" value="rofs3"/>
-	<tag name="target" value="uda"/>
-	<tag name="target" value="emmc"/>
+<!--	<tag name="target" value="uda"/>
+	<tag name="target" value="emmc"/> -->
 <file xmlns="http://www.s60.com/xml/genconfml/1" name="manifest.dat" target="\private\200159c0\install\view_200286e4\hsps\00\">
 	<setting ref="Homescreen2manifest/PackageVersion"/>
 	<setting ref="Homescreen2manifest/DeviceFamily"/>
--- a/idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4xuikon.gcfml	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4xuikon.gcfml	Wed Jun 09 09:29:04 2010 +0300
@@ -3,8 +3,8 @@
 	<tag name="target" value="core"/>
 	<tag name="target" value="rofs2"/>
 	<tag name="target" value="rofs3"/>
-	<tag name="target" value="uda"/>
-	<tag name="target" value="emmc"/>
+<!--	<tag name="target" value="uda"/>
+	<tag name="target" value="emmc"/> -->
 <file xmlns="http://www.s60.com/xml/genconfml/1" name="empty.foo" target="\private\200159c0\install\view_200286e4\xuikon\">
 	<setting ref="Homescreen2XuikonFolder/FolderCFG"/>
 		<xsl:stylesheet version="1.0" 
Binary file idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5.confml has changed
--- a/idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5.gcfml	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5.gcfml	Wed Jun 09 09:29:04 2010 +0300
@@ -3,10 +3,11 @@
 	<tag name="target" value="core"/>
 	<tag name="target" value="rofs2"/>
 	<tag name="target" value="rofs3"/>
-	<tag name="target" value="uda"/>
-	<tag name="target" value="emmc"/>
+<!--	<tag name="target" value="uda"/>
+	<tag name="target" value="emmc"/> -->
 <phase name='post'/> <!-- post phase for making sure that data for all homescreen widgets is available in sequence -->
 
+<!--
   <ruleml xmlns="http://www.s60.com/xml/ruleml/3">
     <rule>True configures ${HomescreenPlugins_3.Plugins} = {% mapBundleIds(@{DFSFeatures.HomescreenWidgets}, @{HomescreenPlugins_3.Plugins}) %}</rule>
 <eval_globals>      
@@ -33,6 +34,8 @@
   return new_plugins
 </eval_globals>
   </ruleml>
+-->
+
 <file xmlns="http://www.s60.com/xml/genconfml/1" name="viewconfiguration.xml" target="\private\200159c0\install\view_200286e5\hsps\00\">
 	<setting ref="HomescreenPlugins_3/MaxWidgets"/>
 	<setting ref="HomescreenPlugins_3/UseEmptyWidgets"/>
--- a/idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5manifest.gcfml	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5manifest.gcfml	Wed Jun 09 09:29:04 2010 +0300
@@ -3,8 +3,8 @@
 	<tag name="target" value="core"/>
 	<tag name="target" value="rofs2"/>
 	<tag name="target" value="rofs3"/>
-	<tag name="target" value="uda"/>
-	<tag name="target" value="emmc"/>
+<!--	<tag name="target" value="uda"/>
+	<tag name="target" value="emmc"/> -->
 <file xmlns="http://www.s60.com/xml/genconfml/1" name="manifest.dat" target="\private\200159c0\install\view_200286e5\hsps\00\">
 	<setting ref="Homescreen3manifest/PackageVersion"/>
 	<setting ref="Homescreen3manifest/DeviceFamily"/>
--- a/idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5xuikon.gcfml	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5xuikon.gcfml	Wed Jun 09 09:29:04 2010 +0300
@@ -3,8 +3,8 @@
 	<tag name="target" value="core"/>
 	<tag name="target" value="rofs2"/>
 	<tag name="target" value="rofs3"/>
-	<tag name="target" value="uda"/>
-	<tag name="target" value="emmc"/>
+<!--	<tag name="target" value="uda"/>
+	<tag name="target" value="emmc"/> -->
 <file xmlns="http://www.s60.com/xml/genconfml/1" name="empty.foo" target="\private\200159c0\install\view_200286e5\xuikon\">
 	<setting ref="Homescreen3XuikonFolder/FolderCFG"/>
 		<xsl:stylesheet version="1.0" 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/qhd_tch/view_200286ed/conf/view200286ed.confml	Wed Jun 09 09:29:04 2010 +0300
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration xmlns="http://www.s60.com/xml/confml/2" name="Banko Homescreen" version="1">
+  <feature ref="BlankoHomescreenPlugins" name="Blanko Homescreen Widgets">
+    <setting ref="Plugins" name="Widgets" type="sequence">
+      <desc>Widgets on Blanko Homescreen</desc>
+      <setting ref="Uid" name="Widget" type="string">
+        <desc>Widget name</desc>
+        <option name="Empty" value="0x2001f47f"/>
+        <option name="wrtplugin_1" value="0x20022FD4"/>
+        <option name="wrtplugin_2" value="0x20022FD5"/>
+        <option name="wrtplugin_3" value="0x20022FD6"/>
+        <option name="wrtplugin_4" value="0x20022FD7"/>
+        <option name="wrtplugin_5" value="0x20022FD8"/>
+        <option name="wrtplugin_6" value="0x20022FD9"/>
+        <option name="wrtplugin_7" value="0x20022FDA"/>
+        <option name="wrtplugin_8" value="0x20022FDB"/>
+        <option name="wrtplugin_9" value="0x2001CB7D"/>
+        <option name="wrtplugin_10" value="0x2001CB7E"/>
+        <option name="wrtplugin_11" value="0x2001CB7F"/>
+        <option name="wrtplugin_12" value="0x200286EE"/>
+      </setting>
+      <setting ref="BundleIdentifier" name="Bundle Identifier" type="string">
+        <desc>Bundle identifier for the (C)WRT widgets. Leave empty if not set.</desc>
+        <option name="8TV Catch Up" value="com.nerdattack.widget.8TV"/>
+        <option name="Aftonbladet WebbTV" value="apegroup.aftonbladet.webbtv.symbian3"/>
+        <option name="Al Jazeera" value="si.inova.verve.aljazeera"/>
+        <option name="BBC Arabic Web TV" value="com.nokia.forum.bbcatv1.widget"/>
+        <option name="BH TV" value="com.bollywoodhungama.widget.BollywoodHungamaTV"/>
+        <option name="Channel NewsAsia" value="Channel.newsasia"/>
+        <option name="CNN Video" value="com.cnn"/>
+        <option name="DigiturkWebTV" value="com.digiturkwebtv.widget"/>
+        <option name="EFE Videos" value="com.ericsson.efe.widget"/>
+        <option name="E!" value="com.moderati.eonline"/>
+        <option name="Bollywood" value="br.org.indt.widget.eros"/>
+        <option name="Ovi Files" value="com.nokia.ss.sas.filesql"/>
+        <option name="Hi5" value="com.hi5.widget.Launcher"/>
+        <option name="凤凰电视" value="com.ifeng.www.webtv.widget"/>
+        <option name="Chat" value="com.nokia.ChatClient"/>
+        <option name="芒果 TV" value="com.imgo.tv"/>
+        <option name="India Today" value="br.org.indt.widget.indiatoday"/>
+        <option name="BBC iPlayer" value="com.bbc.widget.iplayer"/>
+        <option name="Contacts' latest activities" value="com.nokia.somawebui.xwidget"/>
+        <option name="M1TV" value="com.m1tv.basic.widget"/>
+        <option name="Makansutr" value="com.nerdattack.wrt.Makansutra"/>
+        <option name="bose" value="com.bose.basic.widget"/>
+        <option name="SingTel MTVS" value="com.nokia.widget.sapi.mtvs"/>
+        <option name="Nat Geo" value="com.natgeo"/>
+        <option name="NRK Mobil-TV" value="no.nrk.mobil.mobiltv.widget"/>
+        <option name="ontv" value="ontv.cc.on.tv.widget"/>
+        <option name="ovi" value="com.nokia.ovi"/>
+        <option name="Movie Teasers" value="com.movieteasers"/>
+        <option name="Schweizer Fernsehen" value="com.sftvreader.basic.widget"/>
+        <option name="Sky News On Demand" value="com.nerdattack.widget.SKYNEWS"/>
+        <option name="Social" value="com.nokia.socialmixer.v1"/>
+        <option name="æœç‹å¨±ä¹" value="com.sohu.widget.webtv4ovi"/>
+        <option name="SSOUI" value="ovi.serviceui.SSOUI"/>
+        <option name="Terra TV" value="com.terra.widget.wrt.tv"/>
+        <option name="Terra TV Lat" value="com.terra.widget.wrt.tv.latam"/>
+        <option name="topApps" value="com.topApps.basic.widget"/>
+        <option name="Tudou" value="com.Tudou.widget"/>
+        <option name="tv2news" value="com.nokia.forum.widget.tv2news"/>
+        <option name="TV2Play" value="no.tv2.tv2play.widget"/>
+        <option name="TV3 Catch Up" value="com.nerdattack.widget.TV3"/>
+        <option name="ВеÑти" value="com.vesti.basic.widget"/>
+        <option name="Viasat No" value="no.viasat.widget"/>
+        <option name="Viasat Swe" value="se.viasat.widget"/>
+        <option name="Virtual Malaysia" value="com.nerdattack.widget.VirtualMalaysia"/>
+        <option name="央广新浪" value="cn.com.sina.3g"/>
+        <option name="Web TV Demo" value="com.nokia.forum.webtv.widget"/>
+        <option name="Yle Areena" value="com.tieto.yle"/>
+        <option name="优酷" value="com.youku.s605th.webtv"/>
+      </setting>
+      <setting ref="TemplateIdentifier" name="Template Identifier" type="selection">
+        <desc>Templeate identifier for the (C)WRT widgets. None for the native widgets</desc>
+        <option name="None" value="0"/>
+        <option name="wideimage" value="0x2001f489"/>
+        <option name="threerows" value="0x2001f486"/>
+        <option name="threetextrows" value="0x2001f487"/>
+        <option name="tworows" value="0x2001f488"/>
+        <option name="onerow" value="0x2001f480"/>
+      </setting>
+      <setting ref="LockingStatus" name="locking Status" type="selection">
+        <desc>Locking status</desc>
+        <option name="None" value="none"/>
+        <option name="Locked" value="locked"/>
+      </setting>
+    </setting>
+  </feature>
+  <data>
+  <!--  <BlankoHomescreenPlugins>
+      <Plugins extensionPolicy="replace"><Uid>0x2001f47f</Uid><BundleIdentifier></BundleIdentifier><TemplateIdentifier>0</TemplateIdentifier><LockingStatus>none</LockingStatus></Plugins>
+      <Plugins><Uid>0x2001f47f</Uid><BundleIdentifier></BundleIdentifier><TemplateIdentifier>0</TemplateIdentifier><LockingStatus>none</LockingStatus></Plugins>
+      <Plugins><Uid>0x2001f47f</Uid><BundleIdentifier></BundleIdentifier><TemplateIdentifier>0</TemplateIdentifier><LockingStatus>none</LockingStatus></Plugins>
+      <Plugins><Uid>0x2001f47f</Uid><BundleIdentifier></BundleIdentifier><TemplateIdentifier>0</TemplateIdentifier><LockingStatus>none</LockingStatus></Plugins>
+      <Plugins><Uid>0x2001f47f</Uid><BundleIdentifier></BundleIdentifier><TemplateIdentifier>0</TemplateIdentifier><LockingStatus>none</LockingStatus></Plugins>
+      <Plugins><Uid>0x2001f47f</Uid><BundleIdentifier></BundleIdentifier><TemplateIdentifier>0</TemplateIdentifier><LockingStatus>none</LockingStatus></Plugins>
+    </BlankoHomescreenPlugins> -->
+  </data>
+</configuration>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/qhd_tch/view_200286ed/conf/view200286ed.gcfml	Wed Jun 09 09:29:04 2010 +0300
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<container xmlns="http://www.symbianfoundation.org/xml/implml/1">
+	<tag name="target" value="core"/>
+	<tag name="target" value="rofs2"/>
+	<tag name="target" value="rofs3"/>
+	<tag name="target" value="uda"/>
+	<tag name="target" value="emmc"/>
+<file xmlns="http://www.s60.com/xml/genconfml/1" name="viewconfiguration.xml" target="\private\200159c0\install\view_200286ed\hsps\00\">
+		<setting ref="BlankoHomescreenPlugins/Plugins"/>
+	<xsl:stylesheet version="1.0" 
+                xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
+                xmlns:xi="http://www.w3.org/2001/xinclude">
+		<xsl:output method="xml" indent="yes" encoding="UTF-8"/>
+		<xsl:template match="configuration/data">
+			<configuration>
+			 	<control>
+				  <plugins>
+						<xsl:for-each select="BlankoHomescreenPlugins/Plugins">
+							<plugin>
+								<xsl:attribute name="uid"><xsl:value-of select="Uid"/></xsl:attribute>
+								<xsl:attribute name="bundle_id"><xsl:value-of select="BundleIdentifier"/></xsl:attribute>
+								<xsl:attribute name="template_id"><xsl:value-of select="TemplateIdentifier"/></xsl:attribute>
+								<xsl:attribute name="locking_status"><xsl:value-of select="LockingStatus"/></xsl:attribute>
+							</plugin>
+						</xsl:for-each>
+					</plugins>
+				</control>
+			</configuration>
+		</xsl:template>
+	</xsl:stylesheet>
+</file>
+</container>
\ No newline at end of file
Binary file idlehomescreen/data/qhd_tch/view_200286ed/conf/view200286edmanifest.confml has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/qhd_tch/view_200286ed/conf/view200286edmanifest.gcfml	Wed Jun 09 09:29:04 2010 +0300
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<container xmlns="http://www.symbianfoundation.org/xml/implml/1">
+	<tag name="target" value="core"/>
+	<tag name="target" value="rofs2"/>
+	<tag name="target" value="rofs3"/>
+	<tag name="target" value="uda"/>
+	<tag name="target" value="emmc"/>
+<file xmlns="http://www.s60.com/xml/genconfml/1" name="manifest.dat" target="\private\200159c0\install\view_200286ed\hsps\00\">
+	<setting ref="BlankoHomescreenManifest/PackageVersion"/>
+	<setting ref="BlankoHomescreenManifest/DeviceFamily"/>
+	<setting ref="BlankoHomescreenManifest/ConfigurationType"/>
+	<setting ref="BlankoHomescreenManifest/InterfaceUid"/>
+	<setting ref="BlankoHomescreenManifest/ProviderUid"/>
+	<setting ref="BlankoHomescreenManifest/ConfigurationUid"/>
+	<setting ref="BlankoHomescreenManifest/FullName"/>
+	<setting ref="BlankoHomescreenManifest/ShortName"/>
+	<setting ref="BlankoHomescreenManifest/ConfigurationVersion"/>
+	<setting ref="BlankoHomescreenManifest/ConfigurationFile"/>
+	<setting ref="BlankoHomescreenManifest/UiResourceFile"/>
+		<xsl:stylesheet version="1.0" 
+                xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
+                xmlns:xi="http://www.w3.org/2001/xinclude">
+		<xsl:output method="xml" indent="yes" encoding="UTF-8"/>
+		<xsl:template match="configuration/data">
+		<package>
+	  <xsl:attribute name="version"><xsl:value-of select="BlankoHomescreenManifest/PackageVersion"/></xsl:attribute>
+    <family>
+    <xsl:value-of select="BlankoHomescreenManifest/DeviceFamily"/>
+    </family>
+    <type>
+    <xsl:value-of select="BlankoHomescreenManifest/ConfigurationType"/>
+    </type>
+    <interfaceuid>
+    <xsl:value-of select="BlankoHomescreenManifest/InterfaceUid"/>
+    </interfaceuid>
+    <provideruid>
+    <xsl:value-of select="BlankoHomescreenManifest/ProviderUid"/>
+    </provideruid>
+    <configurationuid>
+    <xsl:value-of select="BlankoHomescreenManifest/ConfigurationUid"/>
+    </configurationuid>
+    <fullname>
+    <xsl:text>&#x26;</xsl:text>
+    <xsl:value-of select="BlankoHomescreenManifest/FullName"/>
+    <xsl:text>&#x3B;</xsl:text>
+    </fullname>
+    <shortname>
+    <xsl:value-of select="BlankoHomescreenManifest/ShortName"/>
+    </shortname>
+    <version>
+    <xsl:value-of select="BlankoHomescreenManifest/ConfigurationVersion"/>
+    </version>
+    <filexml>
+    <xsl:value-of select="BlankoHomescreenManifest/ConfigurationFile"/>
+    </filexml>
+    <localization>
+        <fileresource>
+        <xsl:value-of select="BlankoHomescreenManifest/UiResourceFile"/>
+        </fileresource>
+    </localization>
+  </package>
+  </xsl:template>
+	</xsl:stylesheet>
+</file>
+</container>
\ No newline at end of file
Binary file idlehomescreen/data/qhd_tch/view_200286ed/conf/view200286edxuikon.confml has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/qhd_tch/view_200286ed/conf/view200286edxuikon.gcfml	Wed Jun 09 09:29:04 2010 +0300
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<container xmlns="http://www.symbianfoundation.org/xml/implml/1">
+	<tag name="target" value="core"/>
+	<tag name="target" value="rofs2"/>
+	<tag name="target" value="rofs3"/>
+	<tag name="target" value="uda"/>
+	<tag name="target" value="emmc"/>
+<file xmlns="http://www.s60.com/xml/genconfml/1" name="empty.foo" target="\private\200159c0\install\view_200286ed\xuikon\">
+	<setting ref="BlankoHomescreenXuikonFolder/FolderCFG"/>
+		<xsl:stylesheet version="1.0" 
+                xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
+                xmlns:xi="http://www.w3.org/2001/xinclude">
+		<xsl:output method="xml" indent="yes" encoding="UTF-8"/>
+		<xsl:template match="configuration/data">
+		<whois>
+	  <xsl:attribute name="dude"><xsl:value-of select="BlankoHomescreenXuikonFolder/FolderCFG"/></xsl:attribute>
+	  </whois>
+  </xsl:template>
+	</xsl:stylesheet>
+</file>
+</container>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/qhd_tch/view_200286ed/group/bld.inf	Wed Jun 09 09:29:04 2010 +0300
@@ -0,0 +1,40 @@
+/*
+* Copyright (c) 2002-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 information required for building
+*
+*/
+
+#include <platform_paths.hrh>
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_EXPORTS
+
+//Confml and cfgml files for the customization
+// starting use confml it is need to remove root_configuration.xml direct exporting (view_200286e5_variant.iby)
+//***********************************
+../conf/view200286ed.confml   APP_LAYER_CONFML(view200286ed.confml)
+../conf/view200286ed.gcfml    APP_LAYER_GCFML(view200286ed.gcfml)
+../conf/view200286edmanifest.confml   APP_LAYER_CONFML(view200286edmanifest.confml)
+../conf/view200286edmanifest.gcfml    APP_LAYER_GCFML(view200286edmanifest.gcfml)
+../conf/view200286edxuikon.confml   APP_LAYER_CONFML(view200286edxuikon.confml)
+../conf/view200286edxuikon.gcfml    APP_LAYER_GCFML(view200286edxuikon.gcfml)
+
+PRJ_MMPFILES
+
+PRJ_TESTMMPFILES
+
+//  End of File  
--- a/idlehomescreen/inc/xnbitmap.h	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/inc/xnbitmap.h	Wed Jun 09 09:29:04 2010 +0300
@@ -53,6 +53,13 @@
     virtual void SetContentBitmaps(CFbsBitmap* aBitmap, CFbsBitmap* aMask) = 0;   
 
     /**
+    * Sets content bitmaps from file path.
+    * @since S60 5.2
+    * @param aFilename Bitmap filename.    
+    */            
+    virtual void SetContentBitmaps( TFileName& aFilename ) = 0;
+    
+    /**
     * Gets content bitmaps. Ownership is not transferred.
     * @since Series 60 3.1
     * @param aBitmap Bitmap to draw
@@ -95,6 +102,13 @@
     void SetContentBitmaps(CFbsBitmap* aBitmap, CFbsBitmap* aMask);   
 
     /**
+    * Sets content bitmaps from file path.
+    * @since S60 5.2
+    * @param aFilename Bitmap filename.    
+    */            
+    void SetContentBitmaps( TFileName& aFilename );
+    
+    /**
     * Gets content bitmaps. Ownership is not transferred.
     * @since Series 60 3.1
     * @param aBitmap Bitmap to draw
--- a/idlehomescreen/inc/xneditmode.h	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/inc/xneditmode.h	Wed Jun 09 09:29:04 2010 +0300
@@ -122,6 +122,13 @@
     void HandleScreenDeviceChangedL();
 
     /**
+     * Sets control rect.
+     *
+     * @since Series 60 5.0
+     */
+    void SetClientRect( TRect aRect );
+
+    /**
      * Reset the dragging state and update screen
      *
      * @since Series 60 5.0
--- a/idlehomescreen/inc/xnnewsticker.h	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/inc/xnnewsticker.h	Wed Jun 09 09:29:04 2010 +0300
@@ -36,18 +36,6 @@
 {
 _LIT8(KType, "newsticker");
 
-class MXnNewstickerCallbackInterface
-    {
-    public: // New functions
-
-        /**
-         * Called when the title has been shown and is now offscreen.
-         * @param aTitleIndex The title that has been completely shown.
-         */
-        virtual void TitleScrolled(TInt aTitleIndex) = 0;
-        
-    };
-
 class MXnNewstickerInterface : public XnComponentInterface::MXnComponentInterface
     {
     public: // New functions
@@ -100,12 +88,6 @@
          * Delete all titles.
          */
         virtual void ClearTitles() = 0;
-
-        /**
-         * Set callback interface.
-         * @param aCallback The callback interface pointer.
-         */
-        virtual void SetCallbackInterfaceL(MXnNewstickerCallbackInterface* aCallback) = 0;
     };
 }
 
@@ -177,25 +159,6 @@
          */
         void ClearTitles();
 
-        /**
-         * Append the SVG title to be shown.
-         * @param aByteData The SVG data.
-         */
-        void AppendSvgTitleL(const TDesC8& aByteData);
-
-        /**
-         * Insert the SVG title to be shown.
-         * @param aByteData The SVG data.
-         */
-        void InsertSvgTitleL(const TDesC8& aByteData, TInt aIndex);
-
-        /**
-         * Set callback interface.
-         * @param aCallback The callback interface pointer.
-         */
-        void SetCallbackInterfaceL(
-            XnNewstickerInterface::MXnNewstickerCallbackInterface* aCallback);
-
 	   	/**
         * Create a component interface according to the given type.
         * @param aType Type of the interface to create
--- a/idlehomescreen/widgetmanager/inc/wmmaincontainer.h	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/widgetmanager/inc/wmmaincontainer.h	Wed Jun 09 09:29:04 2010 +0300
@@ -27,6 +27,7 @@
 #include <AknsUtils.h>
 #include <gulicon.h>
 #include <eiklbo.h>  // MEikListBoxObserver
+#include <aknsfld.h>  // MAdaptiveSearchTextObserver
 
 // FORWARD DECLARATIONS
 class CWmPlugin;
@@ -47,7 +48,8 @@
  * @class	CWmMainContainer WmMainContainer.h
  */
 NONSHARABLE_CLASS( CWmMainContainer ) : public CCoeControl,
-                                        public MEikListBoxObserver
+                                        public MEikListBoxObserver,
+                                        public MAdaptiveSearchTextObserver
 	{
 public: // constructors and destructor
 	
@@ -301,6 +303,14 @@
                         CEikListBox* aListBox,
                         TListBoxEvent aEventType);
 
+private: // from MAdaptiveSearchTextObserver    
+    /**
+     * Adaptive search observer interface.
+     * 
+     * @see MAdaptiveSearchTextObserver::AdaptiveSearchTextChanged
+     */
+    void AdaptiveSearchTextChanged( CAknSearchField* aSearchField );
+    
 private: // New functions
     
     void AddControlL( CCoeControl* aControl, TInt aControlId );
--- a/idlehomescreen/widgetmanager/inc/wmwidgetloaderao.h	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/widgetmanager/inc/wmwidgetloaderao.h	Wed Jun 09 09:29:04 2010 +0300
@@ -35,7 +35,7 @@
 /**
  * Active object to load widgets into list
  */
-NONSHARABLE_CLASS( CWmWidgetLoaderAo ) : public CAsyncOneShot
+NONSHARABLE_CLASS( CWmWidgetLoaderAo ) : public CActive
     {
     
 public:
@@ -78,14 +78,25 @@
 protected: // from CActive
     
     /**
-     * AO body
-     */
+    * Handles an active object's request completion event.
+    * 
+    * @see CActive::RunL
+    */
     void RunL();
 
     /**
-     * AO error handler
+     * RunError
+     * 
+     * @see CActive::RunError
      */
     TInt RunError( TInt aError );
+    
+    /**
+     * Implements cancellation of an outstanding request.
+     * 
+     * @see CActive::DoCancel
+     */
+    void DoCancel();
 
 private:
 
@@ -93,6 +104,11 @@
      * connects to wrt registry
      */
     void OpenSessionL();
+
+    /**
+     * disconnects from wrt registry
+     */
+    void CloseSession();
     
     /**
      * loads widgets into the listbox
--- a/idlehomescreen/widgetmanager/src/wmmaincontainer.cpp	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/widgetmanager/src/wmmaincontainer.cpp	Wed Jun 09 09:29:04 2010 +0300
@@ -931,7 +931,8 @@
                         CAknSearchField::EAdaptiveSearch,
                         0, KTextLimit );
     AddControlL( iFindbox, EFindBox );
-
+    iFindbox->AddAdaptiveSearchTextObserverL(this);
+    
     UpdateFocusMode();
     StartLoadingWidgetsL();
     }
@@ -1643,6 +1644,17 @@
         }
     }
 
+// ----------------------------------------------------
+// CWmMainContainer::AdaptiveSearchTextChanged
+// ----------------------------------------------------
+//
+void CWmMainContainer::AdaptiveSearchTextChanged( 
+        CAknSearchField* aSearchField )
+    {
+    // fix for ou1cimx1#376818. aknfind will call drawDeferred for lisbox. 
+    // We need to be sure that button area is also drawn.
+    DrawDeferred();
+    }
 
 // End of File
 
--- a/idlehomescreen/widgetmanager/src/wmwidgetloaderao.cpp	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/widgetmanager/src/wmwidgetloaderao.cpp	Wed Jun 09 09:29:04 2010 +0300
@@ -55,7 +55,7 @@
 CWmWidgetLoaderAo::CWmWidgetLoaderAo(
         CWmPlugin& aWmPlugin,
         CWmListBox& aTargetList )
-    : CAsyncOneShot( EPriorityHigh )
+    : CActive( EPriorityNormal )
     , iWmPlugin( aWmPlugin )
     , iWidgetsList( aTargetList )
     {
@@ -70,6 +70,7 @@
 //
 void CWmWidgetLoaderAo::ConstructL()
     {
+    CActiveScheduler::Add( this );
     }
 
 // ---------------------------------------------------------------------------
@@ -81,9 +82,9 @@
     // cancel ongoing operation
     Cancel();
 
-    // cleanup run data
+    // cleanup and close session
     Cleanup();
-    
+    CloseSession();
     }
 
 // ---------------------------------------------------------------------------
@@ -94,10 +95,14 @@
     {
     if ( IsActive() )
         {
-        // cancel ongoing process
-        Cancel();
+        return; // already active                
         }
-    Call();
+
+    // call itself
+    iStatus = KRequestPending;
+    TRequestStatus *pS = (&iStatus);
+    User::RequestComplete( pS, KErrNone );
+    SetActive();
     }
 
 // ---------------------------------------------------------------------------
@@ -108,6 +113,7 @@
     {
     DoLoadWidgetsL();
     Cleanup();
+    CloseSession();
     }
 
 // ---------------------------------------------------------------------------
@@ -117,10 +123,19 @@
 TInt CWmWidgetLoaderAo::RunError( TInt /*aError*/ )
     {
     Cleanup();
+    CloseSession();
     return KErrNone;
     }
 
 // ---------------------------------------------------------
+// CWmWidgetLoaderAo::DoCancel
+// ---------------------------------------------------------
+//
+void CWmWidgetLoaderAo::DoCancel()
+    {
+    }
+
+// ---------------------------------------------------------
 // CWmWidgetLoaderAo::DoLoadWidgetsL
 // ---------------------------------------------------------
 //
@@ -280,6 +295,22 @@
     }
 
 // ---------------------------------------------------------
+// CWmWidgetLoaderAo::CloseSession
+// ---------------------------------------------------------
+//
+void CWmWidgetLoaderAo::CloseSession()
+    {
+    // disconnect widget registry
+    if ( iWidgetRegistry )
+        {
+        iWidgetRegistry->Disconnect();
+        iWidgetRegistry->Close();
+        delete iWidgetRegistry;
+        iWidgetRegistry = NULL;
+        }
+    }
+
+// ---------------------------------------------------------
 // CWmWidgetLoaderAo::AddWidgetDataL
 // ---------------------------------------------------------
 //
@@ -345,15 +376,6 @@
     {
     iLoading = EFalse;
     
-    // disconnect widget registry
-    if ( iWidgetRegistry )
-        {
-        iWidgetRegistry->Disconnect();
-        iWidgetRegistry->Close();
-        delete iWidgetRegistry;
-        iWidgetRegistry = NULL;
-        }
-    
     // delete widget order and references to it
     for( TInt i=0; i<iWidgetsList.WidgetDataCount(); ++i )
         {
--- a/idlehomescreen/xmluicontroller/group/aixmluimain.mmp	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/xmluicontroller/group/aixmluimain.mmp	Wed Jun 09 09:29:04 2010 +0300
@@ -46,12 +46,9 @@
 SOURCE          aixmluiutils.cpp
 SOURCE          xmluicontrollerpanic.cpp
 SOURCE          databuffertransactionelement.cpp
-SOURCE          newstickercallbackhandler.cpp
 SOURCE          csspropertymap.cpp
 SOURCE          aipolicyelement.cpp
 SOURCE          policyevaluator.cpp
-SOURCE          psobserver.cpp
-SOURCE          pmodtiterator.cpp
 SOURCE          contentpublisher.cpp
 SOURCE          globalqueryhandler.cpp
 SOURCE          onlineofflinehelper.cpp
@@ -82,11 +79,10 @@
 
 LIBRARY         euser.lib efsrv.lib
 LIBRARY         ecom.lib centralrepository.lib
-LIBRARY         fbscli.lib apparc.lib cone.lib
+LIBRARY         apparc.lib cone.lib
 LIBRARY         eikcore.lib eikcoctl.lib egul.lib avkon.lib aknskins.lib
 LIBRARY         xn3layoutengine.lib xn3utils.lib xn3domdocument.lib
 LIBRARY         aiidleint.lib aiutils.lib
-LIBRARY         imageconversion.lib
 LIBRARY         apgrfx.lib
 LIBRARY         bafl.lib
 LIBRARY         flogger.lib
--- a/idlehomescreen/xmluicontroller/inc/aixmluiconstants.h	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/xmluicontroller/inc/aixmluiconstants.h	Wed Jun 09 09:29:04 2010 +0300
@@ -113,6 +113,8 @@
             _LIT8( KNewsTicker, "newsticker" );            
             _LIT8( KAnimation, "animation" ); 
             _LIT8( KTextEditor, "texteditor" );
+            _LIT8( KData, "data" );
+            _LIT8( KTitle, "title" );
             }
         
          }   // End of namespace xml
--- a/idlehomescreen/xmluicontroller/inc/contentrenderer.h	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/xmluicontroller/inc/contentrenderer.h	Wed Jun 09 09:29:04 2010 +0300
@@ -24,7 +24,6 @@
 #include <e32hashtab.h>
 
 // User includes
-#include "xnnewsticker.h"
 #include "aicontentobserver.h"
 #include "xnproperty.h"
 
@@ -49,7 +48,6 @@
     class MTransaction;
     class CAppUi;
     class CXmlNodeIdGenerator;
-    class CNewstickerCallbackHandler;
     class CCssPropertyMap;
     class CPolicyEvaluator;
     class TAiPolicyElement;
@@ -66,8 +64,7 @@
 *  @lib AiXmlUiMain
 */
 class CContentRenderer : public CBase,
-    public MAiContentObserver,
-    public XnNewstickerInterface::MXnNewstickerCallbackInterface
+    public MAiContentObserver    
     {
 public:  
     // Constructors and destructor
@@ -244,8 +241,6 @@
     void SendRefreshContentEventL();
     
     TBool IsParentNewsticker( CXnNodeAppIf& aTarget );
-    
-    void RegisterNewstickerCallbackInterfaceL( CXnNodeAppIf& aTarget );
 
     void ProcessContentChangesL( MTransaction& aTr );
     void ProcessContentChangeL( TAiPolicyElement& aElement );         
@@ -258,13 +253,6 @@
         MAiContentObserver::TValueType aValueType ); 
             
 private:    
-    // From XnNewstickerInterface::MXnNewstickerCallbackInterface    
-
-    void TitleScrolled(TInt aTitleIndex);
-    
-    void TitleToScroll(TInt aTitleIndex);
-    
-private:    
     // data
     
     /** Transaction stack, Owned. */
@@ -285,12 +273,6 @@
     CPeriodic* iTimer;    
     /** Fw event handler, Not owned. */
     MAiFwEventHandler* iFwEventHandler;
-    /** Newsticker callback handler, Owned */
-    CNewstickerCallbackHandler* iCallbackHandler;    
-    /** Pointer descriptor to newsticker plugin name */
-    TPtrC iNTPublisher;    
-    /** Newsticker element property class, Owned */
-    HBufC* iNTClass;    
     /** CSS property map, Owned. */
     CCssPropertyMap* iPropertyMap;    
     /** Publishing policy evaluator, Owned. */
--- a/idlehomescreen/xmluicontroller/inc/databuffertransactionelement.h	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/xmluicontroller/inc/databuffertransactionelement.h	Wed Jun 09 09:29:04 2010 +0300
@@ -57,6 +57,18 @@
     * @param aData - the content. 
     */
     void InitializeL(CXnNodeAppIf& aTarget, const TDesC8& aData);
+
+    /**
+    * Initializes this transaction element to publish content aData
+    * to node aTarget.
+    *
+    * @param aTarget - the target of publishing.
+    * @param aData - the content. 
+    * @param aCid - the content id.
+    * @param aIndex - the content index.
+    */    
+    void InitializeL(CXnNodeAppIf& aTarget, const TDesC8& aData, 
+        const TDesC& aCid, TInt aIndex);
     
     /**
      * Checks if given content type is supported by target ui element.
@@ -86,10 +98,19 @@
 private:    // Data
 
     /**
-     * New content.
+     * New content, owned.
+     */
+    HBufC8* iNewData;
+    
+    /**
+     * Content id, owned.
      */
-    TPtrC8 iNewData;
-        
+    HBufC* iCid;
+    
+    /*
+     * Content index
+     */
+    TInt iIndex;
     };
 
 }   // namespace AiXmlUiController
--- a/idlehomescreen/xmluicontroller/inc/dynamicthememodifier.h	Tue May 25 12:29:32 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,131 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  This file contains the header file of the CDynamicThemeModifier class.
-*
-*/
-
-
-#ifndef __DYNAMICTHEMEMODIFIER_H__
-#define __DYNAMICTHEMEMODIFIER_H__
-
-// INCLUDES
-#include <e32base.h>
-#include <centralrepository.h>
-#include <cenrepnotifyhandler.h>
-//#include <xnclient.h>
-//#include <xncontentaccessclient.h>
-//#include <xnrequestclient.h>
-//#include <xnresult.h>
-
-
-//class MAiPSPropertyObserver;
-
-namespace AiXmlUiController
-{
-
-// CLASS DECLARATION
-
-/**
-*  This class updates the theme dynamically as it is being somehow modified.
-*
-*  It connects to XUIKON Content Access API and modifies e.g. NT visibility
-*  in theme level as user changes appropriate setting in GS. Appropriate CenRep
-*  keys are being observed and theme modifications are launched based on changes
-*  in those keys.
-*
-*  @since S60 3.2
-*/
-class CDynamicThemeModifier : public CBase,
-                                	public MCenRepNotifyHandlerCallback,
-									public MXnThemeManagementServiceObserver,
-                                	public MXnContentAccessServiceObserver,
-                                	public MXnClientRequestServiceObserver
-
-    {
-    public:  // Constructors and destructor
-
-        /**
-        * Two-phased constructor.
-        */
-        static CDynamicThemeModifier* NewL();
-
-        /**
-        * Destructor.
-        */
-        ~CDynamicThemeModifier();
-
-
-    private:
-
-        /**
-        * C++ default constructor.
-        */
-        CDynamicThemeModifier();
-
-        /**
-        * By default Symbian 2nd phase constructor is private.
-        */
-        void ConstructL();
-
-
-    private:	// New methods
-
-        /**
-         * Load AI2 themes.
-         */
-        void LoadThemesL();
-
-        /**
-         * Load settings from active theme.
-         */
-        void LoadSettingsFromThemeL();
-
-        /**
-         * Handle NT visibility in theme.
-         * @param ETrue for showing NewsTicker, EFalse for hiding it.
-         */
-        void EnableNewsTickerL( TBool aEnabled );
-
-
-    private:	// From base classes
-
-        void HandleXnClientMessage( TXnServiceCompletedMessage aMessage );
-        void HandleXnRequestClientMessage( TXnServiceCompletedMessage /*aMessage*/ ) {};
-        void XnSettingsUpdated() {};
-        void HandleNotifyInt( TUint32 aId, TInt aNewValue );
-
-
-
-    private:    // Data
-
-        CArrayPtrFlat<CXnODT>* iThemeArray;
-        CXnClient* iXnClient;
-        CXnContentAccessClient* iXnContentAccessClient;
-        CXnRequestClient* iXnRequestClient;
-        CXnResult* iXnResult;
-        CXnDomDocument* iDomDocument;
-        CXnODT* iOdt;
-        CRepository* iNTCenRep;
-        CRepository* iAiCenRep;
-        CCenRepNotifyHandler* iNTCenRepObserver;
-        TInt iNumberOfHeaders;
-        TInt iEnabledInCenRep;
-
-    };
-    
-}   // namespace 
-
-#endif      // __DYNAMICTHEMEMODIFIER_H__
-
-// End of File
--- a/idlehomescreen/xmluicontroller/inc/imagetransactionelement.h	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/xmluicontroller/inc/imagetransactionelement.h	Wed Jun 09 09:29:04 2010 +0300
@@ -23,7 +23,6 @@
 
 class CGulIcon;
 class CXnNodeAppIf;
-class RFile;
 
 namespace AiUtility
     {
@@ -31,8 +30,7 @@
     }
 
 namespace AiXmlUiController
-{
-class CKamikazeImageDecoder;    
+{    
     
 /**
  *  @ingroup group_xmluicontroller
@@ -88,16 +86,17 @@
      * Icon to be published.
      * Own.
      */
-    CGulIcon* iNewIcon;
-
+    CGulIcon* iIcon;    
+    
     /**
-     * Asynchronous image decoder. Executed and 
-     * self destroyed when decoding is ready. Not own.
+     * Icon filename.     
      */
-    CKamikazeImageDecoder* iImageDecoder;
-    
+    TFileName iFilename;
     };
     
 } // namespace AiXmlUiController
 
 #endif // C_IMAGETRANSACTIONELEMENT_H
+
+// End of file
+
--- a/idlehomescreen/xmluicontroller/inc/mpscallback.h	Tue May 25 12:29:32 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-/*
-* Copyright (c) 2005-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:  Callback for Publish & Subscribe observation
-*
-*/
-
-
-#ifndef M_PSCALLBACK_H
-#define M_PSCALLBACK_H
-
-#include <e32base.h>
-
-namespace AiXmlUiController
-{
-	
-class MPSCallback
-	{
-	public:
-	
-		/**
-		 * Callback method for P&S observer.
-		 * Called when appropriate value has been updated.
-		 * @param aKey Key that has been observed.
-		 * @param aValue New Value
-		 */
-		virtual void ValueUpdatedL( TInt aKey, TInt aValue ) = 0;	
-   
-    protected:
-
-        /**
-         * Protected destructor prevents deletion through this interface.
-         */
-        MPSCallback() {};	
-	};
-	
-} // namespace AiXmlUiController
-
-#endif // M_PSCALLBACK_H
--- a/idlehomescreen/xmluicontroller/inc/newstickercallbackhandler.h	Tue May 25 12:29:32 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,94 +0,0 @@
-/*
-* Copyright (c) 2005-2007 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Callback handler of newsticker component callbacks
-*
-*/
-
-
-#ifndef C_NEWSTICKERCALLBACKHANDLER_H
-#define C_NEWSTICKERCALLBACKHANDLER_H
-
-
-#include <e32base.h>
-
-class MAiFwEventHandler;
-
-namespace AiXmlUiController
-{
-    
-/**
- *  @ingroup group_xmluicontroller
- * 
- *  Helper class to handle newsticker component callbacks.
- *
- *  @lib AiXmlUiMain
- */
-class CNewstickerCallbackHandler : public CBase
-    {
-
-public:
-
-    static CNewstickerCallbackHandler* NewLC( MAiFwEventHandler& aFwEventHandler );
-
-    virtual ~CNewstickerCallbackHandler();
-
-    /**
-     * Sends TitleScrolled event to newsticker plugin
-     *
-     * @param aPublisherName    Plugin name
-     * @param aPublishingClass  content selector
-     * @param aIndex            Index of the scrolled title
-     */
-    void TitleScrolledL( const TDesC& aPublisherName,
-                         const TDesC& aPublishingClass,
-                         TInt aIndex );
-
-    /**
-     * Sends TitleToScroll event to newsticker plugin
-     *
-     * @param aPublisherName    Plugin name
-     * @param aPublishingClass  content selector
-     * @param aIndex            Index of the scrolled title
-     */
-    void TitleToScrollL( const TDesC& aPublisherName,
-                         const TDesC& aPublishingClass,
-                         TInt aIndex );
-
-private:
-
-    CNewstickerCallbackHandler( MAiFwEventHandler& aFwEventHandler );
-
-    void SendEventToNewstickerPluginL( const TDesC& aEvent, 
-                                       const TDesC& aPublisherName,
-                                       const TDesC& aPublishingClass,
-                                       TInt aIndex);
-
-private: // data
-
-    /**
-     * Event handler for events
-     */
-    MAiFwEventHandler& iFwEventHandler;
-
-    /**
-     * Event buffer.
-     * Own.
-     */
-    HBufC* iEventBuffer;
-
-    };
-
-} // namespace AiXmlUiController
-
-#endif // C_NEWSTICKERCALLBACKHANDLER_H
--- a/idlehomescreen/xmluicontroller/inc/pmodtiterator.h	Tue May 25 12:29:32 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,115 +0,0 @@
-/*
-* Copyright (c) 2006-2007 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  ODT iterator.
-*
-*/
-
-
-
-#ifndef C_PMODTITERATOR_H
-#define C_PMODTITERATOR_H
-
-//  INCLUDES
-#include <e32base.h>
-
-
-// FORWARD DECLARATIONS
-class CXnNodeAppIf;
-
-
-// CLASS DECLARATION
-
-/**
-*  @ingroup group_xmluicontroller
-* 
-*  Depth iterator walks through the dom tree using the depth first
-*  principle.
-*
-*  @lib presentationmanager.lib
-*  @since S60 v5.0
-*/
-class CPmODTIterator: public CBase
-    {
-   public:        
-        static CPmODTIterator* NewL( CXnNodeAppIf& aRootNode );
-        
-        virtual ~CPmODTIterator();
-
-    public:
-    	
-        /**
-         * Returns the first node of the dom tree.
-         *
-         * @since S60 v5.0
-         * @return First node.
-         */
-        CXnNodeAppIf* First();
-    	
-    	  /**
-         * Returns the next node according to depth first principle.
-         *
-         * @since S60 v5.0
-         * @return Next node.
-         */
-        CXnNodeAppIf* NextL();
-        
-        /**
-         * Skips the current node branch and returns next sibling
-         * or parent's sibling. Returns NULL if no nodes left.
-         *
-         * @since S60 v5.0
-         * @return Sibling node.
-         */
-        CXnNodeAppIf* SkipBranchL();
-        
-   private:
-        
-        CPmODTIterator( CXnNodeAppIf& aRootNode );
-
-        void ConstructL(); 
-        
-        /**
-        * Push node to stack.
-        * @param aNode Node to push 
-        */
-        void PushL( CXnNodeAppIf& aNode );
-        
-        /**
-        * Pop node from the stack.
-        * @return Pointer to node
-        */
-        CXnNodeAppIf* Pop();
-        
-   private:
-        /**
-         * Follow tree hierarchy with stack
-         * Own.
-         */
-        RPointerArray<CXnNodeAppIf> iDepthLevel;
-        
-        /**
-         * First node
-         * Own.
-         */
-        CXnNodeAppIf* iFirst;
-        
-        /**
-         * Current node.
-         * Own.
-         */
-        CXnNodeAppIf* iCurrent;
-                   
-    };
-
-#endif      // C_PMODTITERATOR_H  
--- a/idlehomescreen/xmluicontroller/inc/psobserver.h	Tue May 25 12:29:32 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,82 +0,0 @@
-/*
-* Copyright (c) 2005-2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Observer for changes in Publish & Subscribe keys
-*
-*/
-
-
-#ifndef C_PSOBSERVER_H
-#define C_PSOBSERVER_H
-
-#include <e32property.h>
-#include <e32base.h>
-
-
-namespace AiXmlUiController
-{
-
-class MPSCallback;
-
-/**
-*  @ingroup group_xmluicontroller
-* 
-*  Observer for changes in Publish & Subcribe keys
-*
-*  @lib AiXmlUiMain
-*/
-class CPSObserver : public CActive
-    {
-	public:  // Constructors and destructor
-	    
-	    static CPSObserver* NewL( MPSCallback& aCallback, TUid aCategory, TInt aKey );
-	    
-	    virtual ~CPSObserver();
-
-	    /**
-	     * Returns the current value of the monitored
-	     * P&S key. 
-	     * 
-	     * @param aValue Value is placed here
-	     * 
-	     * @return KErrNone if succesfull
-	     */
-	    TInt GetValue( TInt &aValue ) const;
-	    
-	private:
-
-		CPSObserver( MPSCallback& aCallback, TUid aCategory, TInt aKey );
-		void ConstructL();
-		
-
-	private:	// from CActive
-
-		void RunL();
-		void DoCancel();
-		TInt RunError();	
-		
-
-	private:    // Data
-
-	    RProperty iProperty;
-	    MPSCallback& iCallback;
-	    TUid iCategory;
-	    TInt iKey;
-	    
-   };
-
-} // namespace AiXmlUiController
-
-#endif      // C_PSOBSERVER_H 
-           
-//  End of File
--- a/idlehomescreen/xmluicontroller/inc/transactionfactory.h	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/xmluicontroller/inc/transactionfactory.h	Wed Jun 09 09:29:04 2010 +0300
@@ -64,56 +64,74 @@
     *
     * @param aTarget the target node of the transaction element
     * @param aText the text to update 
+    * @param aPriority Priority
     */
-    virtual MTransactionElement*
-        CreateTextTransactionElementL( CXnNodeAppIf& aTarget,
-                                       const TDesC& aText,
-                                       TInt aPriority ) = 0;
+    virtual MTransactionElement* CreateTextTransactionElementL( 
+        CXnNodeAppIf& aTarget, const TDesC& aText, TInt aPriority ) = 0;                                       
 
     /**
     * Creates a new data buffer transaction element.
     *
     * @param aTarget the traget node of the transaction element
     * @param aData the data to update
+    * @param aPriority Priority
+    * @param aCid Content selector id
+    * @param aIndex Content index
     */
-    virtual MTransactionElement*
-        CreateDataBufferTransactionElementL( CXnNodeAppIf& aTarget,
-                                             const TDesC8& aData,
-                                             TInt aPriority ) = 0;
-
+    virtual MTransactionElement* CreateDataBufferTransactionElementL( 
+        CXnNodeAppIf& aTarget, const TDesC8& aData, TInt aPriority, const TDesC& aCid, TInt aIndex ) = 0;
+    
+    /**
+    * Creates a new data buffer transaction element.
+    *
+    * @param aTarget the traget node of the transaction element
+    * @param aData the data to update
+    * @param aPriority Priority    
+    */
+    virtual MTransactionElement* CreateDataBufferTransactionElementL( 
+        CXnNodeAppIf& aTarget, const TDesC8& aData, TInt aPriority ) = 0;
+        
     /**
     * Creates a new empty content transaction element.
     *
     * @param aTarget the target node of the transaction element
     * @param aText the text to update 
     */
-    virtual MTransactionElement*
-        CreateEmptyContentTransactionElementL( CXnNodeAppIf& aTarget,
-                                               TInt aIndex ) = 0;
+    virtual MTransactionElement* CreateEmptyContentTransactionElementL( 
+        CXnNodeAppIf& aTarget, TInt aIndex ) = 0;
 
     /**
     * Creates a new image transaction element.
     *
     * @param aTarget the target node of the transaction element
     * @param aIcon the icon to update. Ownership transferred.
+    * @param aPriority Priority
     */
-    virtual MTransactionElement*
-        CreateImageTransactionElementL( CXnNodeAppIf& aTarget,
-                                        CGulIcon* aIcon,
-                                        TInt aPriority ) = 0;
+    virtual MTransactionElement* CreateImageTransactionElementL( 
+        CXnNodeAppIf& aTarget, CGulIcon* aIcon, TInt aPriority ) = 0;
     
     /**
     * Creates a new image transaction element.
     *
     * @param aTarget the target node of the transaction element
     * @param aFile the file to read image data from.
+    * @param aPriority Priority
     */
-    virtual MTransactionElement*
-        CreateImageTransactionElementL( CXnNodeAppIf& aTarget,
-                                        RFile& aFile,
-                                        TInt aPriority ) = 0;
+    virtual MTransactionElement* CreateImageTransactionElementL( 
+        CXnNodeAppIf& aTarget, RFile& aFile, TInt aPriority ) = 0;
 
     /**
+    * Creates a new newsticker transaction element.
+    *
+    * @param aTarget the target node of the transaction element
+    * @param aText the text to update     
+    * @param aPriority Priority
+    * @param aIndex Newsticker title index
+    */
+    virtual MTransactionElement* CreateNewsTickerTransactionElementL( 
+        CXnNodeAppIf& aTarget, const TDesC& aText, TInt aPriority, TInt aIndex ) = 0;
+                                                        
+    /**
     * Releases a transaction element.
     *
     * @param aElement the element to release.
@@ -128,17 +146,16 @@
     * @param aContentType the content type
     * @return ETrue if content type is supported, otherwise EFalse.
     */
-    virtual TBool IsSupported( CXnNodeAppIf& aTarget,
-                               const TDesC8& aContentType ) = 0;
+    virtual TBool IsSupported( 
+        CXnNodeAppIf& aTarget, const TDesC8& aContentType ) = 0;                               
 
 protected:
 
-    ~MTransactionFactory(){};
-        
+    ~MTransactionFactory(){};        
     };
 
 } // namespace AiXmlUiController
 
 #endif      // M_TRANSACTIONFACTORY_H  
            
-//  End of File
\ No newline at end of file
+//  End of File
--- a/idlehomescreen/xmluicontroller/inc/transactionfactoryimpl.h	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/xmluicontroller/inc/transactionfactoryimpl.h	Wed Jun 09 09:29:04 2010 +0300
@@ -60,36 +60,27 @@
     
     void ReleaseTransaction( MTransaction* aTransaction );
 
-    MTransactionElement* CreateTextTransactionElementL( CXnNodeAppIf& aTarget,
-                                                        const TDesC& aText,
-                                                        TInt aPriority );
-    
+    MTransactionElement* CreateTextTransactionElementL( 
+        CXnNodeAppIf& aTarget, const TDesC& aText, TInt aPriority );
+                                                                                                                   
+    MTransactionElement* CreateDataBufferTransactionElementL( 
+        CXnNodeAppIf& aTarget, const TDesC8& aData, TInt aPriority );
+                                                                                                                
     MTransactionElement* CreateDataBufferTransactionElementL( 
-                                                        CXnNodeAppIf& aTarget,
-                                                        const TDesC8& aData,
-                                                        TInt aPriority );
-
-    MTransactionElement* CreateEmptyContentTransactionElementL( CXnNodeAppIf& aTarget,
-                                                                TInt aIndex );
+        CXnNodeAppIf& aTarget, const TDesC8& aData, TInt aPriority, 
+        const TDesC& aCid, TInt aIndex );
+                                                        
+    MTransactionElement* CreateEmptyContentTransactionElementL( 
+        CXnNodeAppIf& aTarget, TInt aIndex );
+                                                                
+    MTransactionElement* CreateImageTransactionElementL( 
+        CXnNodeAppIf& aTarget, CGulIcon* aIcon, TInt aPriority );
+                                                                                                                            
+    MTransactionElement* CreateImageTransactionElementL( 
+        CXnNodeAppIf& aTarget, RFile& aFile, TInt aPriority );
 
-    MTransactionElement* CreateImageTransactionElementL( CXnNodeAppIf& aTarget,
-                                                         CGulIcon* aIcon,        
-                                                         TInt aPriority );
-    
-    MTransactionElement* CreateImageTransactionElementL( CXnNodeAppIf& aTarget,
-                                                         RFile& aFile,
-                                                         TInt aPriority );
-    
-    /**
-     * @param aTarget
-     * @param aText new text
-     * @param aPriority
-     * @param aIndex Index of the news ticker element updated
-     */
-    MTransactionElement* CreateNewsTickerTransactionElementL( CXnNodeAppIf& aTarget,
-                                                        const TDesC& aText,
-                                                        TInt aPriority,
-                                                        TInt aIndex );
+    MTransactionElement* CreateNewsTickerTransactionElementL( 
+        CXnNodeAppIf& aTarget, const TDesC& aText, TInt aPriority, TInt aIndex );
     
     void ReleaseTransactionElement( MTransactionElement* aElement );
 
--- a/idlehomescreen/xmluicontroller/inc/xmluicontroller.h	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/xmluicontroller/inc/xmluicontroller.h	Wed Jun 09 09:29:04 2010 +0300
@@ -246,9 +246,6 @@
     
     static TInt ExitTimerCallBack( TAny *aSelf );
        
-    void GetContentItemL( CXnNodeAppIf& aNode, 
-        RAiSettingsItemArray& aSettings, HBufC*& aItemName );
-    
     void GetConfigurationsL( CXnNodeAppIf& aNode, 
         RAiSettingsItemArray& aSettings, const TDesC& aConfOwner );
     
--- a/idlehomescreen/xmluicontroller/src/appui.cpp	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/xmluicontroller/src/appui.cpp	Wed Jun 09 09:29:04 2010 +0300
@@ -43,7 +43,6 @@
 #include "aixuikoneventhandler.h"
 #include "aixmluiconstants.h"
 #include "contentrenderer.h"
-#include "psobserver.h"
 
 #include "aicontentmodel.h"
 #include "aiuiidleintegration.h"
--- a/idlehomescreen/xmluicontroller/src/contentrenderer.cpp	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/xmluicontroller/src/contentrenderer.cpp	Wed Jun 09 09:29:04 2010 +0300
@@ -35,14 +35,12 @@
 #include "aixmluiconstants.h"
 #include "aifweventhandler.h"
 #include "databuffertransactionelement.h"
-#include "newstickercallbackhandler.h"
 #include "newstickertransactionelement.h"
 #include "csspropertymap.h"
 #include "policyevaluator.h"
 #include "debug.h"
 #include "xnuiengineappif.h"
 #include "xnnodeappif.h"
-#include "xncomponentnodeimpl.h"
 #include "xnproperty.h"
 #include "mxncomponentinterface.h"
 #include "xntext.h"
@@ -50,6 +48,7 @@
 #include "xntype.h"
 #include "xnmenuadapter.h"
 #include "xnlistquerydialogadapter.h"
+#include "xnnewsticker.h"
 #include "mxncomponentinterface.h"
 #include "aistrcnv.h"
 #include "contentprioritymap.h"
@@ -390,12 +389,9 @@
     
     iRefreshableUiElements.ResetAndDestroy();
     
-    delete iNTClass;
-    
     delete iPropertyMap;
     
-    delete iContentPriorityMap;
-    delete iCallbackHandler;
+    delete iContentPriorityMap;    
     }
 
 // ----------------------------------------------------------------------------
@@ -987,8 +983,7 @@
             MTransactionElement* element( NULL );
             
             if ( IsParentNewsticker( *target ) )
-                {
-                // Register callback interface for newsticker
+                {                
                 CXnNodeAppIf *parent( target->ParentL() );
                 
                 if( !parent )
@@ -996,11 +991,6 @@
                     return KErrNotFound;
                     }
                                 
-                RegisterNewstickerCallbackInterfaceL( *parent );
-                                               
-                iNTPublisher.Set( info.Name() );
-                iNTClass = AiUtility::CopyToBufferL( iNTClass, nodeId );
-                
                 element = iFactory->CreateNewsTickerTransactionElementL( 
                         *target, aText, priority, aIndex );
                 }
@@ -1077,8 +1067,7 @@
         // Publish icon
         retval = PublishIconL( aPlugin, nodeId, icon, aIndex );
         }
-    else if ( type == KContentTypeImageSvg ||
-        type == KContentTypeData )
+    else if ( type == KContentTypeImageSvg || type == KContentTypeData )        
         {
         // Publish data
         retval = PublishDataL( aPlugin, nodeId, aBuf, type, aIndex );
@@ -1135,24 +1124,7 @@
             }
 
         if ( AllowPublishByPriority( *target, priority ) )
-            {
-            // Check if target is newsticker
-            if ( IsParentNewsticker( *target ) )
-                {
-                // Register callback interface
-                CXnNodeAppIf *parent( target->ParentL() );
-                
-                if( !parent )
-                    {
-                    return KErrNotFound;
-                    }
-                                
-                RegisterNewstickerCallbackInterfaceL( *parent );
-                
-                iNTPublisher.Set( info.Name() );
-                iNTClass = AiUtility::CopyToBufferL( iNTClass, nodeId );           
-                }
-            
+            {            
             // Create transaction element for file
             MTransactionElement* element =
                 iFactory->CreateImageTransactionElementL( 
@@ -1225,21 +1197,6 @@
         return KErrAccessDenied;
         }
 
-    if ( IsParentNewsticker( *target ) )
-        {
-        CXnNodeAppIf *parent( target->ParentL() );
-        
-        if( !parent )
-            {
-            return KErrNotFound;
-            }
-               
-        RegisterNewstickerCallbackInterfaceL( *parent );
-        
-        iNTPublisher.Set( info.Name() );
-        iNTClass = AiUtility::CopyToBufferL( iNTClass, nodeId );
-        }
-    
     if( target->Type()->Type() ==
         XnListQueryDialogInterface::MXnListQueryDialogInterface::Type())
         {
@@ -1480,23 +1437,6 @@
         return KErrAccessDenied;        
         }
     
-    // Special handling of newsticker
-    if ( IsParentNewsticker( *target ) )
-        {
-        // Register callback interface
-        CXnNodeAppIf *parent( target->ParentL() );
-        
-        if( !parent )
-            {
-            return KErrNotFound;
-            }
-                
-        RegisterNewstickerCallbackInterfaceL( *parent );
-        
-        iNTPublisher.Set( info.Name() );
-        iNTClass = AiUtility::CopyToBufferL( iNTClass, aCid );
-        }
-
     MTransactionElement* element =
         iFactory->CreateImageTransactionElementL( 
             *target, aIcon, priority );
@@ -1561,37 +1501,23 @@
         return KErrAccessDenied;        
         }
 
-    if( aContentType == KContentTypeData )
-        {
-        CXnComponent& component( target->ParentL()->Component() );
-        component.SetDataL( aData, aCid, aIndex );
-        return KErrNone;
-        }
-
     if ( !CDataBufferTransactionElement::IsSupported( *target, aContentType ) )
         {
         return KErrNotSupported;        
         }
         
-    // Handle newsticker 
-    if ( IsParentNewsticker( *target ) )
+    MTransactionElement* element( NULL );
+    
+    if ( aContentType == KContentTypeData )
         {
-        CXnNodeAppIf *parent( target->ParentL() );
-        
-        if( !parent )
-            {
-            return KErrNotFound;
-            }
-                
-        RegisterNewstickerCallbackInterfaceL( *parent );
-        
-        iNTPublisher.Set( info.Name() );
-        iNTClass = AiUtility::CopyToBufferL( iNTClass, aCid );
+        element = iFactory->CreateDataBufferTransactionElementL( 
+            *target, aData, priority, aCid, aIndex );
         }
-        
-    MTransactionElement* element =
-        iFactory->CreateDataBufferTransactionElementL( 
-            *target, aData, priority );
+    else
+        {
+        element = iFactory->CreateDataBufferTransactionElementL(     
+            *target, aData, priority );    
+        }
                                                        
     if ( aResource )
         {
@@ -1919,35 +1845,7 @@
     // Continue content refresh for next ui element.
     StartContentRefresh();    
     }
-
-// ----------------------------------------------------------------------------
-// CContentRenderer::TitleScrolled
-// 
-// ----------------------------------------------------------------------------
-//
-void CContentRenderer::TitleScrolled( TInt aTitleIndex )
-    {
-    if ( iCallbackHandler )
-        {
-        TRAP_IGNORE( iCallbackHandler->TitleScrolledL( 
-            iNTPublisher, *iNTClass, aTitleIndex ) );
-        }
-    }
-
-// ----------------------------------------------------------------------------
-// CContentRenderer::TitleToScroll
-// 
-// ----------------------------------------------------------------------------
-//
-void CContentRenderer::TitleToScroll( TInt aTitleIndex )
-    {
-    if ( iCallbackHandler )
-        {
-        TRAP_IGNORE( iCallbackHandler->TitleToScrollL( 
-            iNTPublisher, *iNTClass, aTitleIndex ) );
-        }
-    }
-
+	
 // ----------------------------------------------------------------------------
 // CContentRenderer::IsParentNewsticker
 // 
@@ -1968,34 +1866,6 @@
             
     return ( type == XnNewstickerInterface::MXnNewstickerInterface::Type() );
     }
-    
-// ----------------------------------------------------------------------------
-// CContentRenderer::RegisterNewstickerCallbackInterfaceL
-// 
-// ----------------------------------------------------------------------------
-//
-void CContentRenderer::RegisterNewstickerCallbackInterfaceL( 
-    CXnNodeAppIf& aTarget )
-    {
-    if ( !iCallbackHandler )
-        {
-        // Instantiate callback handler
-        CNewstickerCallbackHandler* handler = 
-            CNewstickerCallbackHandler::NewLC( *iFwEventHandler );
-
-        // Set callback handler
-        iCallbackHandler = handler;
-        CleanupStack::Pop( handler );
-        }
-
-    // Obtain newsticker component interface
-    XnNewstickerInterface::MXnNewstickerInterface* newsticker( NULL );
-    XnComponentInterface::MakeInterfaceL( newsticker, aTarget );
-    
-    LeaveIfNull( newsticker, KErrGeneral );
-    
-    // Set callback interface
-    newsticker->SetCallbackInterfaceL( this );
-    }
+	
 
 //  End of File
--- a/idlehomescreen/xmluicontroller/src/databuffertransactionelement.cpp	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/xmluicontroller/src/databuffertransactionelement.cpp	Wed Jun 09 09:29:04 2010 +0300
@@ -19,6 +19,7 @@
 #include    "databuffertransactionelement.h"
 #include    "aixmluiutils.h"
 
+#include    "xncomponent.h"
 #include    "xntype.h"
 #include    "xntext.h"
 #include    "xnnewsticker.h"
@@ -51,13 +52,32 @@
 
 CDataBufferTransactionElement::~CDataBufferTransactionElement()
     {
+    delete iNewData;
+    delete iCid;
     }
 
 void CDataBufferTransactionElement::InitializeL( CXnNodeAppIf& aTarget, const TDesC8& aData )
     {
     CheckTypeL( aTarget );
     SetTarget( aTarget );
-    iNewData.Set( aData );
+    
+    delete iNewData;
+    iNewData = NULL;
+
+    iNewData = aData.AllocL();    
+    }
+
+void CDataBufferTransactionElement::InitializeL( CXnNodeAppIf& aTarget, const TDesC8& aData,
+    const TDesC& aCid, TInt aIndex )
+    {
+    InitializeL( aTarget, aData );
+    
+    iIndex = aIndex;
+    
+    delete iCid;
+    iCid = NULL;
+    
+    iCid = aCid.AllocL();
     }
 
 void CDataBufferTransactionElement::UpdateDataL()
@@ -73,7 +93,13 @@
     {
     CTransactionElement::Reset();
     
-    iNewData.Set( KNullDesC8);
+    delete iNewData;
+    iNewData = NULL;
+    
+    delete iCid;
+    iCid = NULL;
+    
+    iIndex = KErrNotFound;    
     }
 
 TBool CDataBufferTransactionElement::IsSupported( CXnNodeAppIf& aTarget,
@@ -103,6 +129,10 @@
         // Newsticker support
         return ( type == XnNewstickerInterface::MXnNewstickerInterface::Type() );
         }
+    else if ( aContentType == KContentTypeData )
+        {
+        return ( type == AiUiDef::xml::element::KData() );
+        }
         
     return EFalse;
     }
@@ -112,13 +142,14 @@
     // Get type info
     const TDesC8& type = LeaveIfNull( aTarget.Type(), KErrNotSupported )->Type();
     
-    // Text element, menu item, and newsticker supported
+    // Text element, menu item, data and newsticker supported
     if ( type != XnTextInterface::MXnTextInterface::Type() &&
          type != KXnMenuItem &&
          type != KXnMenu &&
          type != XnPropertyNames::softkey::KNodeName && 
          type != XnPropertyNames::volumecontrol::KSlider &&
-         type != XnNewstickerInterface::MXnNewstickerInterface::Type() )
+         type != XnNewstickerInterface::MXnNewstickerInterface::Type() && 
+         type != AiUiDef::xml::element::KData() )
         {
         User::Leave( KErrNotSupported );
         }
@@ -132,7 +163,7 @@
     if ( type == XnTextInterface::MXnTextInterface::Type() ) // Text element
         {
         // Set character data directly to target
-        Target().SetPCDataL( iNewData );
+        Target().SetPCDataL( iNewData ? *iNewData : KNullDesC8() );
         }
     else if (  type == XnPropertyNames::softkey::KNodeName ||
             type == KXnMenuItem || 
@@ -150,7 +181,7 @@
         CleanupStack::PushL( propertyValue );
     
         propertyValue->SetStringValueL( CXnDomPropertyValue::EString,
-                                        iNewData );
+                                        iNewData ? *iNewData : KNullDesC8() );
     
         CXnProperty* newProperty = CXnProperty::NewL( XnPropertyNames::menu::KLabel,
                                                       propertyValue,
@@ -175,9 +206,14 @@
         LeaveIfNull( volumeControl, KErrNotSupported );
         
         TInt32 volume = 0;
-        User::LeaveIfError( AiUtility::ParseInt( volume, iNewData ) );
+        User::LeaveIfError( AiUtility::ParseInt( volume, iNewData ? *iNewData : KNullDesC8() ) );
         volumeControl->SetValue( volume );
         }
+    else if ( type == AiUiDef::xml::element::KData() )
+        {
+        CXnComponent& component( Target().ParentL()->Component() );
+        component.SetDataL( iNewData ? *iNewData : KNullDesC8(), iCid ? *iCid : KNullDesC(), iIndex );
+        }
     else
         {
         User::Leave( KErrNotSupported );
--- a/idlehomescreen/xmluicontroller/src/dynamicthememodifier.cpp	Tue May 25 12:29:32 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,331 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  This module contains the implementation of
-* 					CDynamicThemeModifier class member functions.
-*
-*/
-
-
-
-// INCLUDE FILES
-
-#include "dynamicthememodifier.h"
-#include <aisystemuids.hrh>
-#include "xnodt.h"
-#include "xndomdocument.h"
-#include "xndomattribute.h"
-#include "xndomnode.h"
-#include "xndomlist.h"
-#include "xndomdepthiterator.h"
-#include <activeidle2domaincrkeys.h>
-
-// CONSTANTS
-#define NEWS_TICKER_GENERAL_SETTINGS_UID 0x10207196
-const TUid KCRUidNewsTicker = {NEWS_TICKER_GENERAL_SETTINGS_UID};
-
-/**
- * KGSNewsTickerStatus
- * CenRep key for "NewsTicker activated"
- * Off = 0
- * On = 1
- */
-const TUint32 KGSNewsTickerStatus = 0x00000004;
-
-/**
- * KAINTInTheme
- * CenRep key for "NewsTicker implemented in AI2 theme"
- * No = 0
- * Yes = 1
- */
-const TUint32 KAiNTInTheme = 0x00000800;
-const TInt KThemeArrayGranularity = 4;
-
-_LIT8( KProperty, "property" );
-_LIT8( KControl, "control" );
-_LIT8( KName, "name" );
-_LIT8( KValue, "value" );
-_LIT8( KBlock, "block" );
-_LIT8( KNone, "none" );
-
-using namespace AiXmlUiController;
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CDynamicThemeModifier::CDynamicThemeModifier
-// -----------------------------------------------------------------------------
-//
-CDynamicThemeModifier::CDynamicThemeModifier()
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// CDynamicThemeModifier::ConstructL
-// -----------------------------------------------------------------------------
-//
-void CDynamicThemeModifier::ConstructL()
-    {
-    // NT is not shown in theme by default. 
-    // This is overridden later if it really is implemented (some other theme 
-    // Basic activated)
-    iAiCenRep = CRepository::NewL( TUid::Uid( KCRUidActiveIdleLV ) );
-    User::LeaveIfError( iAiCenRep->Set( KAiNTInTheme, 0 ) );
-
-	// Check if NT settings are visible in GS
-    iNTCenRep = CRepository::NewL( KCRUidNewsTicker );
-    User::LeaveIfError( iNTCenRep->Get( KGSNewsTickerStatus, iEnabledInCenRep ) );
-    
-    iNTCenRepObserver = CCenRepNotifyHandler::NewL( *this, 
-                                                *iNTCenRep, 
-                                                CCenRepNotifyHandler::EIntKey, 
-                                                KGSNewsTickerStatus );    
-    iNTCenRepObserver->StartListeningL();
-    
-    LoadThemesL();    
-    }
-
-// -----------------------------------------------------------------------------
-// CDynamicThemeModifier::NewL
-// -----------------------------------------------------------------------------
-//
-CDynamicThemeModifier* CDynamicThemeModifier::NewL()
-    {
-    CDynamicThemeModifier* self = new( ELeave ) CDynamicThemeModifier;
-
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop();
-
-    return self;
-    }
-
-
-// Destructor
-CDynamicThemeModifier::~CDynamicThemeModifier()
-    {
-    if( iThemeArray )
-	    {
-	    iThemeArray->ResetAndDestroy();
-	    delete iThemeArray;    	
-	    }
-    delete iOdt;
-    delete iDomDocument;
-    delete iXnResult;
-    delete iXnRequestClient;
-    delete iXnContentAccessClient;
-    delete iXnClient;
-    if( iNTCenRepObserver )
-	    {
-	    iNTCenRepObserver->StopListening();	
-	    delete iNTCenRepObserver;
-	    }
-    delete iNTCenRep;
-    delete iAiCenRep;
-    }
-
-// ---------------------------------------------------------------------------
-// CDynamicThemeModifier::LoadThemesL
-// ---------------------------------------------------------------------------
-//
-void CDynamicThemeModifier::LoadThemesL()
-    {
-    const TUid KUidAI2 = TUid::Uid( AI_UID3_AIFW_EXE );
-    
-    iXnClient = CXnClient::NewL( *this );
-    // we're only interested in AI2 themes
-    iXnContentAccessClient = CXnContentAccessClient::NewL( *this,
-    														KUidAI2.iUid );
-    iXnRequestClient = CXnRequestClient::NewL( *this, KUidAI2.iUid );    														
-    iXnResult = CXnResult::NewL();
-
-    CXnODT* odt = CXnODT::NewL();
-    CleanupStack::PushL( odt );
-
-    odt->SetAppUid( KUidAI2.iUid );
-
-    iThemeArray = new( ELeave ) CArrayPtrFlat<CXnODT>( KThemeArrayGranularity );
-
-    // theme array gets filled up by XnClient after this
-    // HandleXnClientMessage() is a callback method that we're interested in
-    TXnServiceCompletedMessage ret =
-    	iXnClient->XnGetListHeaders( *odt, *iThemeArray );
-
-    if( ret == EXnGetListHeadersSuccess || ret == EXnGetListHeadersEmpty )
-        {
-		iXnClient->GetXnResult( *iXnResult );
-		iNumberOfHeaders = iXnResult->iIntValue1;
-        iXnClient->XnGetNextHeader();
-        }
-
-    CleanupStack::PopAndDestroy( odt );
-    }
-
-
-
-// -----------------------------------------------------------------------------
-// CDynamicThemeModifier::HandleXnClientMessage
-// -----------------------------------------------------------------------------
-//
-void CDynamicThemeModifier::HandleXnClientMessage(
-									TXnServiceCompletedMessage aMessage )
-    {
-    // wait until all themes are fetched before loading settings
-    if( ( aMessage == EXnGetListHeadersUpdate ) &&
-        ( iThemeArray->Count() == iNumberOfHeaders ) )
-        {
-        TRAP_IGNORE( LoadSettingsFromThemeL() );
-        }
-
-    else if( aMessage == EXnGetListHeadersFailed )
-        {
-        if (iXnClient)
-        	{
-            iXnClient->XnCancelGetListHeaders();
-        	}
-
-        if ( iThemeArray )
-    		{
-    		iThemeArray->ResetAndDestroy();
-    		delete iThemeArray;
-    		iThemeArray = NULL;
-    		}
-        }
-
-    }
-
-
-// -----------------------------------------------------------------------------
-// CDynamicThemeModifier::LoadSettingsFromThemeL
-// -----------------------------------------------------------------------------
-//
-void CDynamicThemeModifier::LoadSettingsFromThemeL()
-    {    
-    for( TInt i = 0; i < iThemeArray->Count(); i++ )
-	    {
-   	   	CXnODT* odt = iThemeArray->At( i );
-
-   	    // activated theme found -> load settings
-   	   	if( odt->Flags() & EXnThemeStatusActive )
-   	   	    {
-   	   	    delete iDomDocument;
-   	   	    iDomDocument = NULL;
-            iDomDocument = CXnDomDocument::NewL();
-
-            TXnServiceCompletedMessage ret = 
-                iXnContentAccessClient->XnLoadSettings( *odt, *iDomDocument );
-        	if( ret == EXnSettingsLoaded )
-        	    {
-        	    delete iOdt;
-        	    iOdt = NULL;
-			    iOdt = odt->CloneL();
-	            odt = NULL;
-	            // update theme to match CenRep value	            
-			    EnableNewsTickerL( TBool( iEnabledInCenRep ) );	
-	            break;	            
-                }
-   	   	    }
-	    }
-    }
-    
-
-// -----------------------------------------------------------------------------
-// CDynamicThemeModifier::EnableNewsTickerL
-// -----------------------------------------------------------------------------
-//
-void CDynamicThemeModifier::EnableNewsTickerL( TBool aEnabled )
-    {
-    TInt found = 0;
-	CXnDomDepthIterator* iterator =
-		CXnDomDepthIterator::NewL( *iDomDocument->RootNode() );
-	CleanupStack::PushL( iterator );
-
-	CXnDomNode* node = iterator->First();
-
-	if( !node )
-	    {
-	    CleanupStack::PopAndDestroy( iterator );
-	    return;
-	    }
-
-	// find <control> tag
-	while( node )
-	    {
-		if( !node->Name().Compare( KControl ) )
-		    {
-			break;
-		    }
-		node = iterator->NextL();
-	    }
-
-	if( !node->Name().Compare( KControl ) )
-	    {
-		node = iterator->NextL();
-
-		while( node )
-    		{
-			// look for <property> tag...
-            if( !node->Name().Compare( KProperty ) )
-    		    {
-				// ...with attribute "value"...
-    			if( !node->AttributeValue( KName ).Compare( KValue ) )
-    			    {
-    			    found = 1;
-    				CXnDomAttribute* attr = static_cast<CXnDomAttribute*>
-    					( node->AttributeList().FindByName( KValue) );
-
-					// ...update it accordingly...
-    				if( aEnabled )
-    				    {
-    				    attr->SetValueL( KBlock );
-    				    }
-                    else
-    				    {
-    				    attr->SetValueL( KNone );
-    				    }
-    		        }
-    		    }
-    	    node = iterator->NextL();
-    		}
-
-		// ...and communicate the changes via Content Access API.		
-        for( TInt i = 0; i < iThemeArray->Count(); i++ )
-    	    {
-       	   	CXnODT* odt = iThemeArray->At( i );
-    		
-			// This might return an error if settings were not found from theme.
-			// However, we don't need to take any actions since appropriate 
-			// theme is left untouched in that case anyway
-            iXnContentAccessClient->XnUpdateSettings( *odt, *iDomDocument );
-    	    }
-
-		// if found == 1, then NT is implemented in theme 
-		// -> NT settings can be shown in GS
-		User::LeaveIfError( iAiCenRep->Set( KAiNTInTheme, found ) );
-		CleanupStack::PopAndDestroy( iterator );
-	    }
-    }
-
-// -----------------------------------------------------------------------------
-//  CDynamicThemeModifier::HandleNotifyInt
-//  Callback method for observing CenRep changes
-// -----------------------------------------------------------------------------
-//
-void CDynamicThemeModifier::HandleNotifyInt( TUint32 /*aId*/, TInt aNewValue )
-    {
-    iEnabledInCenRep = TBool( aNewValue );
-    TRAP_IGNORE( EnableNewsTickerL( iEnabledInCenRep ) );
-    ;
-    }
-
-//  End of File
--- a/idlehomescreen/xmluicontroller/src/emptycontenttransactionelement.cpp	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/xmluicontroller/src/emptycontenttransactionelement.cpp	Wed Jun 09 09:29:04 2010 +0300
@@ -73,58 +73,66 @@
 
     if ( type->Type() == XnImageInterface::MXnImageInterface::Type() )
         {
-        MXnImageInterface* imageIntr = NULL;
-        if ( !XnComponentInterface::MakeInterfaceL( imageIntr, Target() ) )
-            {
-            User::Leave( KErrNotSupported );
-            }
+        MXnImageInterface* image( NULL );
+        XnComponentInterface::MakeInterfaceL( image, Target() );
+
+        LeaveIfNull( image, KErrNotSupported );
+        
         // Clears the bitmaps from component
-        imageIntr->SetContentBitmaps( NULL, NULL );
+        image->SetContentBitmaps( NULL, NULL );
         }
     else if ( type->Type() == XnTextInterface::MXnTextInterface::Type() ) // text element
         {
         // Get control interface
-        XnTextInterface::MXnTextInterface* textControl = NULL;
-        XnComponentInterface::MakeInterfaceL( textControl, Target() );
-        LeaveIfNull( textControl, KErrNotSupported );
+        XnTextInterface::MXnTextInterface* text( NULL );
+        XnComponentInterface::MakeInterfaceL( text, Target() );
+        
+        LeaveIfNull( text, KErrNotSupported );
         
         // Clears the text from component
-        textControl->SetTextL( KNullDesC );
+        text->SetTextL( KNullDesC );
         }
     else if ( type->Type() == XnTextEditorInterface::MXnTextEditorInterface::Type() ) // texteditor element
         {
         // Get control interface
-        XnTextEditorInterface::MXnTextEditorInterface* editorControl = NULL;
-        XnComponentInterface::MakeInterfaceL( editorControl, Target() );
-        LeaveIfNull( editorControl, KErrNotSupported );
+        XnTextEditorInterface::MXnTextEditorInterface* editor( NULL );
+        XnComponentInterface::MakeInterfaceL( editor, Target() );
+        
+        LeaveIfNull( editor, KErrNotSupported );
         
         // Clears the text from component
-        editorControl->SetTextL( KNullDesC );
+        editor->SetTextL( KNullDesC );
         }
     else
         {
-        CXnNodeAppIf* parent = Target().ParentL();
+        CXnNodeAppIf* parent( Target().ParentL() );
         LeaveIfNull( parent, KErrNotSupported );
-        const TDesC8& type = LeaveIfNull( parent->Type(), KErrNotSupported )->Type();
+        
+        const TDesC8& parentType( parent->Type()->Type() );
             
-        if ( type == XnNewstickerInterface::MXnNewstickerInterface::Type() )
+        if ( parentType == XnNewstickerInterface::MXnNewstickerInterface::Type() )
             {
-            XnNewstickerInterface::MXnNewstickerInterface* newsticker = NULL;
+            XnNewstickerInterface::MXnNewstickerInterface* newsticker( NULL );
             XnComponentInterface::MakeInterfaceL( newsticker, *parent );
-            LeaveIfNull( newsticker, KErrGeneral );
-            TInt titleIndexVal = -1;
-            CXnProperty* titleIndex = Target().GetPropertyL( XnPropertyNames::title::KTitleIndex );
-            if ( titleIndex )
-                {
-                TLex8 lex( titleIndex->StringValue() );
-                TInt err = lex.Val( titleIndexVal );
-                if ( err == KErrNone && titleIndexVal > -1 )
-                    {
-                    newsticker->DeleteTitle( titleIndexVal );
-                    }
-                }
+            
+            LeaveIfNull( newsticker, KErrNotSupported );
+            
+            CXnProperty* prop( Target().GetPropertyL( 
+                XnPropertyNames::title::KTitleIndex ) );
+    
+            LeaveIfNull( prop, KErrNotSupported );
+
+            TInt index( KErrNotFound );
+            
+            TLex8 lex( prop->StringValue() );
+            lex.Val( index );
+            
+            newsticker->DeleteTitle( index );
             }
         }
+    
     // Clear current content priority
     ClearContentPriorityL();
     }
+
+// End of file
--- a/idlehomescreen/xmluicontroller/src/imagetransactionelement.cpp	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/xmluicontroller/src/imagetransactionelement.cpp	Wed Jun 09 09:29:04 2010 +0300
@@ -17,451 +17,119 @@
 
 
 #include "xnbitmap.h"
-#include "xnnewsticker.h"
 #include "xntype.h"
-#include "xnmenu.h"
-#include "xnmenuadapter.h"
-#include "xnuiengineappif.h"
 
-#include <imageconversion.h>
 #include <gulicon.h>
 
 #include "imagetransactionelement.h"
 #include "xmluicontrollerpanic.h"
 #include "aixmluiutils.h"
-#include "xnuiengineappif.h"
 
 using namespace AiXmlUiController;
 using namespace XnImageInterface;
-using namespace ContentAccess;
 
 namespace AiXmlUiController
-    {
-
-TBool IsNodeVisible( CXnNodeAppIf& aNode )
-    {
-    CXnProperty* propVisibility = aNode.GetPropertyL( XnPropertyNames::style::common::KVisibility );;
-
-    if( propVisibility )
-        {
-        const TDesC8& visibility = propVisibility->StringValue();
-
-        if( visibility == XnPropertyNames::style::common::visibility::KHidden )
-            {
-            return EFalse;
-            }    
-        }
-
-    CXnProperty* propDisplay = aNode.GetPropertyL( XnPropertyNames::style::common::KDisplay );
-
-    if( propDisplay )
-        {
-        const TDesC8& display = propDisplay->StringValue();
-
-        if( display == XnPropertyNames::style::common::display::KNone )
-            {
-            return EFalse;
-            }
-        }
-
-    CXnProperty* propDisabled = aNode.GetPropertyL( XnPropertyNames::common::KDisabled );
-
-    if( propDisabled )
-        {
-        const TDesC8& disabled = propDisabled->StringValue();
-
-        if( disabled == XnPropertyNames::KTrue )
-            {
-            return EFalse;
-            }
-        }
-    return ETrue;
-    }
-/**
- * Uses CImageDecoder to decode images asynchronously.
- * When decoding is done, it tries to find target and set
- * image into element. Destroys itself at end of RunL method.
- */
-class CKamikazeImageDecoder: public CActive
-    {
-public:
-    static CKamikazeImageDecoder* NewL(
-            RFile& aFile, const TDesC8& aNodeId, 
-            const TDesC8& aNodeNs, TXnUiEngineAppIf& aUiEngine);
-    ~CKamikazeImageDecoder();
-public:
-    /**
-     * Start decoding and forget instance. 
-     * Destroyes itself.
-     */
-    void DecodeLD();
-private:
-    // from CActive
-    void DoCancel();
-    void RunL();
-private:    
-    void ConstructL(RFile& aFile, const TDesC8& aNodeId,const TDesC8& aNodeNs);
-    CKamikazeImageDecoder(TXnUiEngineAppIf& aUiEngine);
-    void SetImageL();
-private:
-    /**
-     * Image decoder. Own.
-     */
-    CImageDecoder* iDecoder;
-    /**
-     * Target node id
-     */
-    HBufC8* iNodeId;
-    /**
-     * Target node namespace
-     */
-    HBufC8* iNodeNs;
-    /**
-     * Provides services to find target
-     */
-    TXnUiEngineAppIf& iUiEngine;
-    /**
-     * Icon. Own.
-     */
-    CGulIcon* iIcon;
-    };
-
-CKamikazeImageDecoder* CKamikazeImageDecoder::NewL(
-    RFile& aFile, 
-    const TDesC8& aNodeId,
-    const TDesC8& aNodeNs,
-    TXnUiEngineAppIf& aUiEngine)
-    {
-    CKamikazeImageDecoder* p = new (ELeave)CKamikazeImageDecoder(aUiEngine);
-    CleanupStack::PushL(p);
-    p->ConstructL(aFile,aNodeId,aNodeNs);
-    CleanupStack::Pop(p);
-    return p;
-    }
-
-CKamikazeImageDecoder::CKamikazeImageDecoder(TXnUiEngineAppIf& aUiEngine):
-    CActive(CActive::EPriorityStandard ), iUiEngine(aUiEngine)
-    {
-    CActiveScheduler::Add( this );
-    }
-
-CKamikazeImageDecoder::~CKamikazeImageDecoder()
-    {
-    Cancel();
-    delete iDecoder;
-    delete iNodeId;
-    delete iNodeNs;
-    delete iIcon;
-    }
+{
 
-void CKamikazeImageDecoder::ConstructL(
-    RFile& aFile, 
-    const TDesC8& aNodeId, 
-    const TDesC8& aNodeNs)
-    {
-    // Create new decoder for file
-    iDecoder = CImageDecoder::FileNewL( aFile, EView );
-    iNodeId = aNodeId.AllocL();
-    iNodeNs = aNodeNs.AllocL();
-    iIcon = CGulIcon::NewL();
-    }
-
-void CKamikazeImageDecoder::DecodeLD()
-    {
-    TFrameInfo frameInfo = iDecoder->FrameInfo(0);
-    CFbsBitmap* bitmap = new( ELeave ) CFbsBitmap;
-    iIcon->SetBitmap( bitmap );
-    
-    User::LeaveIfError( bitmap->Create( frameInfo.iOverallSizeInPixels,
-                        frameInfo.iFrameDisplayMode ) );
-    
-    CFbsBitmap* mask(0);
-    if ( frameInfo.iFlags & TFrameInfo::ETransparencyPossible )
-        {
-        mask = new( ELeave ) CFbsBitmap;
-        iIcon->SetMask( mask );
-        User::LeaveIfError( mask->Create( frameInfo.iOverallSizeInPixels,
-                                          ( ( frameInfo.iFlags & TFrameInfo::EAlphaChannel )
-                                          ? EGray256 : EGray2 ) ) );
-        }
-    
-    if(iIcon->Mask())
-        {
-        iDecoder->Convert( &iStatus, *bitmap, *mask );
-        }
-    else
-        {
-        iDecoder->Convert( &iStatus, *bitmap );
-        }
-    SetActive();
-    }
-
-void CKamikazeImageDecoder::DoCancel()
-    {
-    iDecoder->Cancel();
-    }
-
-void CKamikazeImageDecoder::SetImageL()
-    {
-     
-    // Find target
-    CXnNodeAppIf* node = iUiEngine.FindNodeByIdL(*iNodeId,*iNodeNs);
-    if(!node)
-        {
-        return;
-        }
-        
-    const TDesC8& type = node->Type()->Type();
-    
-    if ( type == XnImageInterface::MXnImageInterface::Type() )
-        {
-        MXnImageInterface* imageIntr = NULL;
-        if ( !XnComponentInterface::MakeInterfaceL( imageIntr, *node ) )
-            {
-            return;
-            }
-        // Set new bitmaps. Ownership is transferred to MXnImageInterface
-        iIcon->SetBitmapsOwnedExternally( ETrue );
-        imageIntr->SetContentBitmaps( iIcon->Bitmap(), iIcon->Mask() );
-      
-        }
-    // Menu softkey icons
-    else if ( ( ( type == KXnMenuItem || type == KXnMenu ) &&
-                IsNodeVisible( *node ) ) ||
-              type == XnPropertyNames::softkey::KNodeName )
-        {
-        CXnNodeAppIf* menuBar = node->ParentL();
-        
-        XnMenuInterface::MXnMenuInterface::TSoftKeyPosition softkeyPosition = 
-            XnMenuInterface::MXnMenuInterface::ELeft;
-                    
-        CXnProperty* property = 
-            node->GetPropertyL( XnPropertyNames::softkey::KTypeAttribute );     
-        if ( property && property->StringValue() == XnPropertyNames::softkey::type::KRight )
-            {
-            softkeyPosition = XnMenuInterface::MXnMenuInterface::ERight;
-            }
-        else if ( property && property->StringValue() == XnPropertyNames::softkey::type::KLeft )
-            {
-            softkeyPosition = XnMenuInterface::MXnMenuInterface::ELeft;
-            }
-        else  // Image can be published only to RSK or LSK
-            {
-            return;
-            }
-            
-        XnMenuInterface::MXnMenuInterface* menuIf = NULL;
-        
-        XnComponentInterface::MakeInterfaceL( menuIf, *menuBar );
-        if ( menuIf )
-            {
-            // Use black mask and preserver aspect ratio
-           
-            menuIf->SetSoftKeyImageL( iIcon->Bitmap(), 
-                                          iIcon->Mask(), 
-                                          softkeyPosition, 
-                                          node,
-                                          ETrue, 
-                                          ETrue ); 
-            iIcon->SetBitmapsOwnedExternally( ETrue );
-            }
-        if( menuBar )
-            {
-            iUiEngine.RefreshMenuL();
-            }
-        }
-        
-    }
-
-void CKamikazeImageDecoder::RunL()
-    {
-    CleanupStack::PushL(this);
-    if(iStatus == KErrNone)
-        {
-        SetImageL();
-        iUiEngine.RenderUIL();
-        }
-    CleanupStack::PopAndDestroy(this);
-    }
-     
 // ======== MEMBER FUNCTIONS ========
 
 CImageTransactionElement::CImageTransactionElement(
-                                AiUtility::CContentPriorityMap& aContentPriorityMap)
+    AiUtility::CContentPriorityMap& aContentPriorityMap)
     : CTransactionElement(aContentPriorityMap)
     {
     }
 
 CImageTransactionElement* CImageTransactionElement::NewL(
-                                AiUtility::CContentPriorityMap& aContentPriorityMap)
+    AiUtility::CContentPriorityMap& aContentPriorityMap)
     {
-    CImageTransactionElement* self = new( ELeave ) CImageTransactionElement(
-                                                            aContentPriorityMap );
+    CImageTransactionElement* self = 
+        new( ELeave ) CImageTransactionElement( aContentPriorityMap );
+                                                            
     return self;
     }
 
 CImageTransactionElement::~CImageTransactionElement()
     {
-    delete iNewIcon;
-    delete iImageDecoder;
+    delete iIcon;    
     }
 
 void CImageTransactionElement::InitializeL( CXnNodeAppIf& aTarget,
-                                            CGulIcon* aIcon )
+    CGulIcon* aIcon )
     {
-    CheckTypeL( aTarget );
-    
     LeaveIfNull( aIcon, KErrArgument );
     
+    CheckTypeL( aTarget );
     SetTarget( aTarget );
-    iNewIcon = aIcon;
+
+    iIcon = aIcon;
+    iFilename = KNullDesC();
     }
 
 void CImageTransactionElement::InitializeL( CXnNodeAppIf& aTarget,
-                                            RFile& aFile )
-    {
-    CheckTypeL( aTarget );
-   
-    const TDesC8* nodeId = &KNullDesC8;
+    RFile& aFile )
+    {    
+    CheckTypeL( aTarget );   
+    SetTarget( aTarget );
+
+    iFilename = KNullDesC();
     
-    CXnProperty* property = aTarget.GetPropertyL(XnPropertyNames::common::KId);
-    if(property)
-        {
-        nodeId = &property->StringValue();
-        }
-    if ( iImageDecoder )
-        {
-        delete iImageDecoder;
-        iImageDecoder = NULL;
-        }
-    iImageDecoder = CKamikazeImageDecoder::NewL(
-                        aFile,*nodeId,aTarget.Namespace(),*aTarget.UiEngineL()); 
+    aFile.FullName( iFilename );
     
-    SetTarget( aTarget );
+    delete iIcon;
+    iIcon = NULL;    
     }
 
-
 void CImageTransactionElement::UpdateDataL()
-    {
-    if ( iImageDecoder )
+    {           
+    const TDesC8& type( Target().Type()->Type() );
+    
+    if ( type == XnImageInterface::MXnImageInterface::Type() )
         {
-        iImageDecoder->DecodeLD();
-        iImageDecoder = NULL; // self destroy
-        }
-    else
-        {
-        __ASSERT_DEBUG( iNewIcon, Panic( EBitmapNull ) );
-    
-        const TDesC8& type = LeaveIfNull( Target().Type(), KErrNotSupported )->Type();
+        MXnImageInterface* image( NULL );
+        XnComponentInterface::MakeInterfaceL( image, Target() );
         
-        if ( type == XnImageInterface::MXnImageInterface::Type() )
+        LeaveIfNull( image, KErrNotSupported );
+
+        if ( iIcon )
             {
-            MXnImageInterface* imageIntr = NULL;
-            if ( !XnComponentInterface::MakeInterfaceL( imageIntr, Target() ) )
-                {
-                User::Leave( KErrNotSupported );
-                }
             // Set new bitmaps. Ownership is transferred to MXnImageInterface
-            iNewIcon->SetBitmapsOwnedExternally( ETrue );
-            imageIntr->SetContentBitmaps( iNewIcon->Bitmap(), iNewIcon->Mask() );
-            }
-        // Menu softkey icons
-        else if ( ( ( type == KXnMenuItem || type == KXnMenu ) &&
-                    IsNodeVisible( Target() ) ) ||
-                  type == XnPropertyNames::softkey::KNodeName )
-            {
-            CXnNodeAppIf* menuBar = Target().ParentL();
+            iIcon->SetBitmapsOwnedExternally( ETrue );
             
-            XnMenuInterface::MXnMenuInterface::TSoftKeyPosition softkeyPosition = 
-                XnMenuInterface::MXnMenuInterface::ELeft;
-                        
-            CXnProperty* property = 
-                Target().GetPropertyL( XnPropertyNames::softkey::KTypeAttribute );     
-            if ( property && property->StringValue() == XnPropertyNames::softkey::type::KRight )
-                {
-                softkeyPosition = XnMenuInterface::MXnMenuInterface::ERight;
-                }
-            else if ( property && property->StringValue() == XnPropertyNames::softkey::type::KLeft )
-                {
-                softkeyPosition = XnMenuInterface::MXnMenuInterface::ELeft;
-                }
-            else  // Image can be published only to RSK or LSK
-                {
-                delete iNewIcon;
-                iNewIcon = NULL;            
-                User::Leave( KErrNotSupported );
-                }
-                
-            XnMenuInterface::MXnMenuInterface* menuIf = NULL;
-            
-            XnComponentInterface::MakeInterfaceL( menuIf, *menuBar );
-            if ( menuIf )
-                {
-                // Use black mask and preserver aspect ratio
-                TRAPD(err,
-                    menuIf->SetSoftKeyImageL( iNewIcon->Bitmap(), 
-                                              iNewIcon->Mask(), 
-                                              softkeyPosition, 
-                                              &Target(),
-                                              ETrue, 
-                                              ETrue ) 
-                );
-                // Menuinterface takes ownership
-                if ( err == KErrNone )
-                    {
-                    iNewIcon->SetBitmapsOwnedExternally( ETrue );
-                    }
-                if( menuBar )
-                    {
-                    menuBar->UiEngineL()->RefreshMenuL();
-                    }
-                }
+            image->SetContentBitmaps( iIcon->Bitmap(), iIcon->Mask() );
             }
-        else
+        else if ( iFilename != KNullDesC() )
             {
-            User::Leave( KErrNotSupported );
-            }
+            image->SetContentBitmaps( iFilename );
+            }        
         }
     
-    delete iNewIcon;
-    iNewIcon = NULL;
-    
     UpdateContentPriorityL();
     }
 
 void CImageTransactionElement::Reset()
     {
-    if ( iImageDecoder )
-        {
-        delete iImageDecoder;
-        iImageDecoder = NULL;
-        }
-    
     CTransactionElement::Reset();
 
-    delete iNewIcon;
-    iNewIcon = NULL;
+    iFilename = KNullDesC();    
+    
+    delete iIcon;
+    iIcon = NULL;    
     }
 
 TBool CImageTransactionElement::IsSupported( CXnNodeAppIf& aTarget )
     {
     // Get type info
-    CXnType* typeInfo = aTarget.Type();
+    CXnType* typeInfo( aTarget.Type() );
     
     if ( !typeInfo )
         {
         return EFalse;
         }
     
-    const TDesC8& type = typeInfo->Type();
+    const TDesC8& type( typeInfo->Type() );
     
     // image element and newsticker supported
-    return ( type == XnImageInterface::MXnImageInterface::Type() ||
-             type == XnNewstickerInterface::MXnNewstickerInterface::Type() ||
-             type == XnMenuInterface::MXnMenuInterface::Type() ||
-             type == KXnMenuItem ||
-             type == KXnMenu ||
-             type == XnPropertyNames::softkey::KNodeName );
+    return ( type == XnImageInterface::MXnImageInterface::Type() );
     }
 
 void CImageTransactionElement::CheckTypeL( CXnNodeAppIf& aTarget )
@@ -472,3 +140,5 @@
         }
     }
 } // ns
+
+// End of file
--- a/idlehomescreen/xmluicontroller/src/newstickercallbackhandler.cpp	Tue May 25 12:29:32 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,124 +0,0 @@
-/*
-* Copyright (c) 2005-2007 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Callback handler for newsticker component callbacks
-*
-*/
-
-
-#include "newstickercallbackhandler.h"
-#include "aifweventhandler.h"
-#include "aiconsts.h"
-#include "aixmluiconstants.h"
-#include "aistrcnv.h"
-
-using namespace AiXmlUiController;
-
-const TInt KRadix = 10;
-const TText16 KPluginEventParameterSeparator = ',';
-const TText16 KEventParameterTerminator = ')';
-
-static TInt IndexLength( TInt aIndex )
-    {
-    TInt length = 0;
-
-    if ( aIndex < 0 )
-        {
-        ++length;
-        }
-
-    do
-        {
-        aIndex /= KRadix;
-        ++length;
-        }
-    while ( aIndex != 0 );
-
-    return length;
-    }
-
-// ======== MEMBER FUNCTIONS ========
-
-CNewstickerCallbackHandler::CNewstickerCallbackHandler( MAiFwEventHandler& aFwEventHandler )
-    : iFwEventHandler( aFwEventHandler )
-    {
-    }
-
-CNewstickerCallbackHandler* CNewstickerCallbackHandler::NewLC( MAiFwEventHandler& aFwEventHandler )
-    {
-    CNewstickerCallbackHandler* self = new( ELeave ) CNewstickerCallbackHandler( aFwEventHandler );
-    CleanupStack::PushL( self );
-    return self;
-    }
-
-
-CNewstickerCallbackHandler::~CNewstickerCallbackHandler()
-    {
-    delete iEventBuffer;
-    }
-
-
-void CNewstickerCallbackHandler::TitleScrolledL( const TDesC& aPublisherName,
-                                                 const TDesC& aPublishingClass,
-                                                 TInt aIndex )
-    {
-    SendEventToNewstickerPluginL( AiUiDef::xml::event::KNewstickerTitleScrolled,
-                                    aPublisherName,
-                                    aPublishingClass,
-                                    aIndex);
-    }
-
-void CNewstickerCallbackHandler::TitleToScrollL( const TDesC& aPublisherName,
-                                                 const TDesC& aPublishingClass,
-                                                 TInt aIndex )
-    {
-    SendEventToNewstickerPluginL( AiUiDef::xml::event::KNewstickerTitleToScroll,
-                                    aPublisherName,
-                                    aPublishingClass,
-                                    aIndex);
-    }
-
-
-void CNewstickerCallbackHandler::SendEventToNewstickerPluginL( const TDesC& aEvent,
-                                                        const TDesC& aPublisherName,
-                                                        const TDesC& aPublishingClass,
-                                                        TInt aIndex)
-    {
-        // Calculate event buffer length
-    TInt length = aPublisherName.Length()
-                  + KPluginEventSeparatorLength
-                  + aEvent.Length()
-                  + KEventParameterSeparatorLength
-                  + aPublishingClass.Length()
-                  + KEventParameterSeparatorLength
-                  + IndexLength( aIndex )
-                  + KEventParameterSeparatorLength;
-
-    // Allocate event buffer
-    TPtr event = AiUtility::EnsureBufMaxLengthL( iEventBuffer, length );
-
-    // Create event string
-    event.Zero();
-    event.Append( aPublisherName );
-    event.Append( KPluginEventSeparator );
-    event.Append( aEvent );
-    event.Append( KEventParameterSeparator );
-    event.Append( aPublishingClass );
-    event.Append( KPluginEventParameterSeparator );
-    event.AppendNum( aIndex );
-    event.Append( KEventParameterTerminator );
-
-    // Send event to plugin
-    // TODO: fix namespace
-    iFwEventHandler.HandlePluginEvent( event );
-    }
--- a/idlehomescreen/xmluicontroller/src/pmodtiterator.cpp	Tue May 25 12:29:32 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,205 +0,0 @@
-/*
-* Copyright (c) 2006-2007 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  DT iterator.
-*
-*/
-
-
-
-// INCLUDE FILES
-//#include    "xndomlist.h"
-#include    "xnnodeappif.h"
-
-#include    "pmodtiterator.h"
-
-// ============================ LOCAL FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// Finds next sibling.
-// Returns NULL if there is no siblings left or there is no parent i.e this is a
-// root node
-// Returns: CXnDomNode* Pointer to the node or NULL
-//          
-// -----------------------------------------------------------------------------
-//
-
-static CXnNodeAppIf* NextSiblingL( CXnNodeAppIf& aNode )
-    {
-    CXnNodeAppIf* left( NULL );
-    CXnNodeAppIf* parent( NULL );
-    TRAP_IGNORE( parent = aNode.ParentL() );
-    if ( parent )
-        {
-        RPointerArray<CXnNodeAppIf> nodeList;
-        TRAP_IGNORE( nodeList = parent->ChildrenL() );
-        CleanupClosePushL( nodeList );
-        TInt currentIndex( nodeList.Find( &aNode ) );
-        TInt nextIndex( ++currentIndex );
-        TInt length( nodeList.Count() );
-        if ( nextIndex < length )  
-            {
-            left = nodeList[ nextIndex ];
-            }
-        CleanupStack::PopAndDestroy( &nodeList );
-        }
-    return left;     
-    }
-    
-    
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// -----------------------------------------------------------------------------
-//
-CPmODTIterator::CPmODTIterator( CXnNodeAppIf& aRootNode  ):
-    iFirst(&aRootNode), iCurrent(&aRootNode)
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// ConstructL
-// -----------------------------------------------------------------------------
-//
-void CPmODTIterator::ConstructL()
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// NewL
-// -----------------------------------------------------------------------------
-//
-CPmODTIterator* CPmODTIterator::NewL( CXnNodeAppIf& aRootNode )
-    {
-    CPmODTIterator* self = new( ELeave ) CPmODTIterator( aRootNode );
-    
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// Destructor
-// -----------------------------------------------------------------------------
-//
-CPmODTIterator::~CPmODTIterator()
-    {
-    iDepthLevel.Close();
-    }
-
-// -----------------------------------------------------------------------------
-// First node
-// -----------------------------------------------------------------------------
-//
-CXnNodeAppIf* CPmODTIterator::First()
-    {
-    return iFirst;
-    }
-    
-// -----------------------------------------------------------------------------
-// Next node
-// -----------------------------------------------------------------------------
-//
-CXnNodeAppIf* CPmODTIterator::NextL()
-    {
-    CXnNodeAppIf* firstChild( NULL );     
-    
-    //Initialise iCurrent if the whole tree has been walked through 
-    if (!iCurrent) 
-        {
-        iCurrent = iFirst;
-        }
-    RPointerArray<CXnNodeAppIf> children = iCurrent->ChildrenL();
-    if( children.Count() > 0 )
-        {
-        firstChild = children[0];
-        }
-    children.Close();
-        
-    // Current node has childs left
-    if (firstChild)
-        {
-        //Keep count of depth level
-        PushL( *iCurrent );
-        iCurrent = firstChild;
-        }
-    else //If current node has siblings left
-        {
-        SkipBranchL();
-        }
-    return iCurrent;
-    }
-
-// -----------------------------------------------------------------------------
-// SkipBranch
-// -----------------------------------------------------------------------------
-//
-CXnNodeAppIf* CPmODTIterator::SkipBranchL()
-    {
-    CXnNodeAppIf* sibling = NextSiblingL(*iCurrent);
-    if(sibling)
-        {
-        iCurrent = sibling;    
-        }
-    else //Current node don't have any childs or siblings left
-        {
-        // Reverse the tree by moving up in hierarchy
-        // Move up one level in hierarchy and check if siblings exists or we are in a 
-        // root level
-        TBool stop( EFalse );
-        while( !stop && iDepthLevel.Count() )
-            {
-            iCurrent = Pop();                   //Reach the previous level
-            sibling = NextSiblingL( *iCurrent ); //Check if siblings exist
-            if ( sibling && iDepthLevel.Count() )
-                {
-                iCurrent = sibling;
-                stop = ETrue;
-                }
-            else                                //We didn't find any siblings
-                {
-                iCurrent = NULL;
-                }
-            }
-        }
-    return iCurrent;
-    }
-    
-// -----------------------------------------------------------------------------
-// Push node into stack.
-// -----------------------------------------------------------------------------
-//
-void CPmODTIterator::PushL( CXnNodeAppIf& aNode )
-    {
-    iDepthLevel.AppendL( &aNode );
-    }
-
-// -----------------------------------------------------------------------------
-// Pop node from stack.
-// -----------------------------------------------------------------------------
-//
-CXnNodeAppIf* CPmODTIterator::Pop()
-    {
-    CXnNodeAppIf* pop = NULL;
-    TInt count( iDepthLevel.Count() );
-    if ( count )
-        {
-        pop = iDepthLevel[ count-1 ];
-        iDepthLevel.Remove( count-1 );
-        }
-    return pop;    
-    }
--- a/idlehomescreen/xmluicontroller/src/psobserver.cpp	Tue May 25 12:29:32 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +0,0 @@
-/*
-* Copyright (c) 2005-2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Observer for changes in Publish & Subscribe keys
-*
-*/
-
-
-#include "psobserver.h"
-#include "mpscallback.h"
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-using namespace AiXmlUiController;
-
-CPSObserver::CPSObserver( MPSCallback& aCallback, TUid aCategory, TInt aKey ) :
-    CActive( CActive::EPriorityStandard ),
-	iCallback( aCallback ),	
-	iCategory( aCategory ), 
-	iKey( aKey )
-    {
-    CActiveScheduler::Add( this );
-    }
-
-CPSObserver* CPSObserver::NewL( MPSCallback& aCallback, TUid aCategory, TInt aKey )
-    {
-    CPSObserver* self = new( ELeave ) CPSObserver( aCallback, aCategory, aKey );
-    CleanupStack::PushL( self );
-    self->ConstructL();    
-    CleanupStack::Pop( self );
-    return self;
-    }
-    
-CPSObserver::~CPSObserver()
-    {
-    Cancel();
-    }
-
-void CPSObserver::ConstructL()
-    {
-    // subscribe for changes
-    User::LeaveIfError( iProperty.Attach( iCategory, iKey ) );
-    iProperty.Subscribe( iStatus );
-    SetActive();
-    }
-
-void CPSObserver::RunL()
-	{
-    iProperty.Subscribe( iStatus );
-    SetActive();
-
-    TInt value;
-    if( iProperty.Get( iCategory, iKey, value ) != KErrNotFound )
-        {
-		iCallback.ValueUpdatedL( iKey, value );
-        }
-	}
-
-TInt CPSObserver::RunError()
-	{
-	Cancel();
-	return KErrNone;		
-	}
-
-void CPSObserver::DoCancel()
-	{
-    iProperty.Close();
-	}
-
-TInt CPSObserver::GetValue( TInt &aValue ) const
-    {
-    return iProperty.Get( iCategory, iKey, aValue );
-    }
-
-
-//  End of File
--- a/idlehomescreen/xmluicontroller/src/transactionfactoryimpl.cpp	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/xmluicontroller/src/transactionfactoryimpl.cpp	Wed Jun 09 09:29:04 2010 +0300
@@ -152,6 +152,31 @@
     }    
 
 MTransactionElement*
+    CTransactionFactoryImpl::CreateDataBufferTransactionElementL(
+        CXnNodeAppIf& aTarget,
+        const TDesC8& aData,
+        TInt aPriority,
+        const TDesC& aCid, 
+        TInt aIndex )
+    {
+    // Instantiate element
+    CDataBufferTransactionElement* element = NewInstanceL< CDataBufferTransactionElement >();
+    CleanupStack::PushL( element );
+    
+    // Initialize
+    element->InitializeL( aTarget, aData, aCid, aIndex );
+    CleanupStack::Pop( element );
+    
+    // Reserve
+    iReservedElements.AddLast( *element );
+    
+    // Set content priority
+    element->SetContentPriority( aPriority );
+        
+    return element;
+    }    
+
+MTransactionElement*
     CTransactionFactoryImpl::CreateEmptyContentTransactionElementL(
         CXnNodeAppIf& aTarget,
         TInt aIndex)
--- a/idlehomescreen/xmluicontroller/src/xmluicontroller.cpp	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/xmluicontroller/src/xmluicontroller.cpp	Wed Jun 09 09:29:04 2010 +0300
@@ -52,19 +52,67 @@
 #include "aiconsts.h"
 #include "contentrenderer.h"
 #include "xmluicontrollerpanic.h"
-#include "pmodtiterator.h"
 #include "contentpublisher.h"
 #include "xnplugindefs.h"
 #include "ainativeuiplugins.h"
 
 // Constants
 const TInt KOneSecondInMicroS = 1000*1000;
-_LIT8( KData, "data" );
 
+// Macros
+#define IS_KNOWN_CONTENT_MODEL_ELEMENT( e ) \
+    ( e == AiUiDef::xml::element::KImage || \
+      e == AiUiDef::xml::element::KText || \
+      e == AiUiDef::xml::element::KAnimation || \
+      e == AiUiDef::xml::element::KTextEditor || \
+      e == AiUiDef::xml::element::KTitle || \
+      e == AiUiDef::xml::element::KData )
+    
 using namespace AiXmlUiController;
 
 // ======== LOCAL FUNCTIONS ========
 // ----------------------------------------------------------------------------
+// BuildModelL()
+// ----------------------------------------------------------------------------
+//
+static void BuildModelL( CXnNodeAppIf* aParent, const TDesC8& aKey, 
+    const TDesC8& aNs, RPointerArray< CXnNodeAppIf >& aModel )     
+    {
+    if ( !aParent || aParent->Namespace() != aNs )
+        {
+        // No parent or traversed out from the namespace
+        return;
+        }
+
+    if ( aParent->Type()->Type() == XnPropertyNames::action::KProperty )
+        {
+        CXnProperty* prop( 
+            aParent->GetPropertyL( XnPropertyNames::common::KClass ) );
+        
+        if ( prop )
+            {
+            const TDesC8& value( prop->StringValue() );
+                        
+            if ( value.Find( aKey ) != KErrNotFound )
+                {
+                aModel.AppendL( aParent );
+                }                                  
+            }        
+        }
+    
+    RPointerArray< CXnNodeAppIf > children( aParent->ChildrenL() );
+    CleanupClosePushL( children );
+    
+    for ( TInt i = 0; i < children.Count(); i++ )
+        {
+        // Recurse children
+        BuildModelL( children[i], aKey, aNs, aModel );
+        }
+    
+    CleanupStack::PopAndDestroy( &children );             
+    }
+
+// ----------------------------------------------------------------------------
 // ResolveEventParameters()
 // ----------------------------------------------------------------------------
 //
@@ -403,7 +451,6 @@
 // CXmlUiController::GetContentModelL()
 // ----------------------------------------------------------------------------
 //
-// ContentModelL()
 void CXmlUiController::GetContentModelL( const THsPublisherInfo& aPublisherInfo,         
     RAiSettingsItemArray& aSettings )
     {
@@ -413,136 +460,101 @@
         return;
         }
     
-    // Find the node for the publisher
-	// TODO Does not work if widget is in view  
+    // Find the node for the publisher	
     RPointerArray<CXnNodeAppIf> list( 
         UiEngineL()->FindContentSourceNodesL( aPublisherInfo.Namespace() ) );
     
     CleanupClosePushL( list );
     
-    CXnNodeAppIf* publisherNode( NULL );
+    CXnNodeAppIf* publisher( NULL );
     
     if ( list.Count() > 0 )
         {
-        publisherNode = list[0];
+        publisher = list[0];
         }
          
     CleanupStack::PopAndDestroy( &list );
     
-    if( !publisherNode )
+    if( !publisher )
         {
         return;
         }
     
-    // Find ui plugin node for the data plugin
-    CXnNodeAppIf* parentNode( publisherNode->ParentL() );
+    // Find plugin node for the <contentsource> element 
+    CXnNodeAppIf* parent( publisher->ParentL() );
     
-    // parent must be correct type
-    if( parentNode->InternalDomNodeType() == _L8("widget") )
+    if ( parent && parent->InternalDomNodeType() == XnPropertyNames::KWidget )
         {
-        // Get plugin configurations
-        GetConfigurationsL( *parentNode, aSettings, AiUiDef::xml::element::K16Plugin());
-        CPmODTIterator* iter = CPmODTIterator::NewL( *parentNode );
-        CleanupStack::PushL( iter );
-        CXnNodeAppIf* node = iter->First();
-        while( node )
-            {
-            const TDesC8& nodeType = node->Type()->Type();
-            if( nodeType == XnPropertyNames::action::KActions)
+        // Get <contentsource> element configurations
+        GetConfigurationsL( 
+            *parent, aSettings, AiUiDef::xml::element::K16Plugin() );
+            
+        RPointerArray< CXnNodeAppIf > model;
+        CleanupClosePushL( model );
+        
+        HBufC8* key = HBufC8::NewLC( aPublisherInfo.Name().Length() + 1 );
+        
+        _LIT( KSlash, "/" );
+        
+        key->Des().Copy( aPublisherInfo.Name() );
+        key->Des().Append( KSlash );
+                
+        BuildModelL( parent, *key, parent->Namespace(), model );
+        
+        for ( TInt i = 0; i < model.Count(); i++ )
+            {            
+            CXnNodeAppIf* parent( model[i]->ParentL() );
+            
+            if ( parent )
                 {
-                node = iter->SkipBranchL();
-                }
-            // Get the content model and configuration for the supported elements
-            else if( nodeType == AiUiDef::xml::element::KImage ||
-                     nodeType == AiUiDef::xml::element::KText ||
-                     nodeType == AiUiDef::xml::element::KNewsTicker ||
-                     nodeType == AiUiDef::xml::element::KAnimation ||
-					 nodeType == AiUiDef::xml::element::KTextEditor || 
-                     nodeType == KData )
-                {
-                // Is created in GetContenItem and used in GetConfigurationsL
-                HBufC* confOwner( NULL );
-                // get content item for the element, confOwner is filled
-                GetContentItemL( *node, aSettings, confOwner );
-                if( confOwner )
-                    {
-                    CleanupStack::PushL( confOwner );
-                    // get configurations for the element
-                    GetConfigurationsL( *node, aSettings, *confOwner );
-                    CleanupStack::PopAndDestroy( confOwner );
+                const TDesC8& type( parent->Type()->Type() );
+                
+                if ( IS_KNOWN_CONTENT_MODEL_ELEMENT( type ) )
+                    {                
+                    // Content model found for the element, create content item
+                    MAiPluginSettings* settings( 
+                        AiUtility::CreatePluginSettingsL() );
+                    
+                    CleanupDeletePushL( settings );
+                                        
+                    MAiPluginContentItem& item( 
+                        settings->AiPluginContentItem() );
+                                        
+                    // Type of the element is needed in content model                     
+                    HBufC* type16( NULL );
+                    
+                    type16 = AiUtility::CopyToBufferL( type16, type ); 
+                                            
+                    CleanupStack::PushL( type16 );
+                    
+                    item.SetTypeL( *type16 );
+                                                           
+                    HBufC* name( PropertyValueL( 
+                        *model[i], AiUiDef::xml::property::KClass ) );
+                    CleanupStack::PushL( name );
+                    
+                    item.SetNameL( *name );
+                                                                                              
+                    // Get content model configurations, 
+                    // i.e. <property> element's <configuration> siblings
+                    GetConfigurationsL( *parent, aSettings, *name );
+                    
+                    CleanupStack::PopAndDestroy( 2, type16 ); // name
+                    
+                    aSettings.AppendL( settings );
+                    CleanupStack::Pop( settings );
                     }
-                node = iter->SkipBranchL();
-                }
-            else
-                {
-                node = iter->NextL();
-                }
+                }           
             }
-        CleanupStack::PopAndDestroy( iter );
-        }
-    }
-
-// ----------------------------------------------------------------------------
-// CXmlUiController::GetContentItemL()
-// ----------------------------------------------------------------------------
-//
-// ContentItemL()
-void CXmlUiController::GetContentItemL( CXnNodeAppIf& aNode, 
-    RAiSettingsItemArray& aSettings, HBufC*& aItemName )
-    {
-    // Find property node
-    RPointerArray<CXnNodeAppIf> childNodes( aNode.ChildrenL() );
-    CleanupClosePushL( childNodes );
-    
-    TInt count( childNodes.Count() );
-    
-    for ( TInt i = 0; i < count; i++ )
-        {
-        CXnNodeAppIf* node( childNodes[i] );
         
-        if( node->Type()->Type() == XnPropertyNames::action::KProperty )
-            {
-            HBufC* name = PropertyValueL( *node, AiUiDef::xml::property::KClass );
-            CleanupStack::PushL( name );
-        
-            if( name )
-                {
-                // Content model found for the element, create content item
-                MAiPluginSettings* settings = AiUtility::CreatePluginSettingsL();
-                CleanupDeletePushL( settings );
-                
-                MAiPluginContentItem& item = settings->AiPluginContentItem();
-                
-                // Type of the element is needed in content model 
-                HBufC* type( NULL ); 
-                type = AiUtility::CopyToBufferL( type, aNode.Type()->Type());
-                CleanupStack::PushL( type );
-                item.SetTypeL( *type );
-                CleanupStack::PopAndDestroy( type );
-                
-                item.SetNameL( *name );
-                
-                aItemName = name;
-                aSettings.AppendL( settings );
-                CleanupStack::Pop( settings );
-                }
-            
-            // Ownership is given to aItemName
-            CleanupStack::Pop( name );
-            
-            // First property element, which has class attribute is selected
-            break;
-            }
-        }
-    
-    CleanupStack::PopAndDestroy( &childNodes );
+        CleanupStack::PopAndDestroy( 2, &model ); // key
+        }   
     }
 
 // ----------------------------------------------------------------------------
 // CXmlUiController::GetConfigurationsL()
 // ----------------------------------------------------------------------------
 //
-// ConfigurationItemsL()
 void CXmlUiController::GetConfigurationsL( CXnNodeAppIf& aNode, 
     RAiSettingsItemArray& aSettings, const TDesC& aConfOwner  )
     {    
@@ -553,9 +565,9 @@
     // Collect settings
     TInt count( nodes.Count() );
     
-    for( TInt j = 0; j < count; j++ )
+    for( TInt i = 0; i < count; i++ )
         {
-        CXnNodeAppIf* node( nodes[j] );
+        CXnNodeAppIf* node( nodes[i] );
         
         if( node->Type()->Type() == AiUiDef::xml::element::KConfiguration )
             {
--- a/idlehomescreen/xmluirendering/renderingplugins/xnbitmapfactory/group/xnbitmapfactory.mmp	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/xmluirendering/renderingplugins/xnbitmapfactory/group/xnbitmapfactory.mmp	Wed Jun 09 09:29:04 2010 +0300
@@ -29,7 +29,8 @@
 SOURCEPATH      ../src 
 SOURCE          xnbitmapfactory.cpp
 SOURCE          xnbitmap.cpp
-SOURCE			xnbitmapadapter.cpp
+SOURCE		xnbitmapadapter.cpp
+SOURCE          xnimagedecoder.cpp
 
 USERINCLUDE     ../inc
 USERINCLUDE     ../../../inc
@@ -41,7 +42,8 @@
 LIBRARY	        xn3layoutengine.lib
 LIBRARY	        xn3utils.lib
 LIBRARY         avkon.lib
-
+LIBRARY         imageconversion.lib
+LIBRARY         fbscli.lib
 LANG            SC
 
 START RESOURCE  xn3bitmapfactory.rss
--- a/idlehomescreen/xmluirendering/renderingplugins/xnbitmapfactory/inc/xnbitmapadapter.h	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/xmluirendering/renderingplugins/xnbitmapfactory/inc/xnbitmapadapter.h	Wed Jun 09 09:29:04 2010 +0300
@@ -26,6 +26,7 @@
 
 // FORWARD DECLARATIONS
 class CXnNodePluginIf;
+class CXnImageDecoder;
 
 // CLASS DECLARATION
 /**
@@ -57,6 +58,13 @@
     void SetContentBitmaps(CFbsBitmap* aBitmap, CFbsBitmap* aMask);   
 
     /**
+    * Sets content bitmaps from file.
+    * @since S60 5.2
+    * @param aFilename Bitmap filename.    
+    */            
+    void SetContentBitmaps( TFileName& aFilename );
+    
+    /**
     * Gets content bitmaps. Ownership not is transferred.
     * @since Series 60 3.1
     * @param aBitmap Bitmap to draw
@@ -73,18 +81,6 @@
     void DoHandlePropertyChangeL(CXnProperty* aProperty = NULL);
     
     /**
-    * From CCoeControl Handles the resource change.
-    * @since Series 60 3.1
-    * @param aType A type of the resource change
-    * @return void.
-    */
-    void HandleScreenDeviceChangedL();
-
-    /**
-    * See CCoeControl documentation
-    */    	
-    void HandlePointerEventL( const TPointerEvent& aPointerEvent );
-    /**
     * From CCoeControl Handles the skin change
     * @since Series 60 3.2
     * @return void.
@@ -96,8 +92,7 @@
     * Size change notification
     */ 
     void SizeChanged();    
-	void Draw(const TRect& aRect) const;
-
+	
 private:
 	CXnBitmapAdapter(CXnNodePluginIf& aNode);
 	void ConstructL(CXnNodePluginIf& aNode);
@@ -106,15 +101,17 @@
 private: // Data
     // UI node, not owned
     CXnNodePluginIf& iNode;
+    // Image decoder, owned
+    CXnImageDecoder* iDecoder;
     // Whether the bitmaps has been loaded or not.
     mutable TBool iAreBitmapsLoaded;
     // Whether the data API has been used or not.
     TBool iAreBitmapsSet;
-    // Path of the bitmap
+    // Path of the bitmap, owned
     HBufC* iPath;
     // The size of the current bitmap
     TSize iBitmapSize;
-	// The path of the fallback image
+	// The path of the fallback image, owned
     HBufC* iFallbackPath;
 	// Whether fallback path has changed and bitmaps need to be reloaded
     TBool iFallbackPathChange;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/xmluirendering/renderingplugins/xnbitmapfactory/inc/xnimagedecoder.h	Wed Jun 09 09:29:04 2010 +0300
@@ -0,0 +1,123 @@
+/*
+* 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:  Image decoder
+*
+*/
+
+
+#ifndef _XNIMAGEDECODER_H
+#define _XNIMAGEDECODER_H
+
+// System includes
+#include <e32base.h>
+
+// User includes
+class CXnBitmapAdapter;
+class CFbsBitmap;
+class CImageDecoder;
+class RFs;
+
+// Forward declarations
+
+/**
+ * Image decoder
+ * 
+ * @ingroup group_xnbitmapfactory
+ * @lib xn3bitmapfactory.lib
+ * @since S60 5.2
+ */
+NONSHARABLE_CLASS( CXnImageDecoder ) : public CActive
+    {
+public:    
+    // Constructors and destructor
+    
+    /**
+     * Two-phased constructor.
+     */
+    static CXnImageDecoder* NewL( CXnBitmapAdapter& aAdapter, RFs& aFs );        
+
+    /**
+     * Two-phased constructor. Leaving on stack
+     */
+    static CXnImageDecoder* NewLC( CXnBitmapAdapter& aAdapter, RFs& aFs );         
+
+    /**
+     * Destructor
+     */
+    ~CXnImageDecoder();
+
+private:
+    // private constructors
+
+    /**
+     * Leaving constructor
+     */
+    void ConstructL();
+    
+    /**
+     * C++ default constructor
+     */
+    CXnImageDecoder( CXnBitmapAdapter& aAdapter, RFs& aFs );         
+        
+private:
+    // from CActive
+    
+    /**
+     * @see CActive
+     */
+    void RunL();
+
+    /**
+     * @see CActive
+     */    
+    TInt RunError( TInt aError );
+    
+    /**
+     * @see CActive
+     */    
+    void DoCancel();
+    
+public: 
+    // new functions
+    
+    /**
+     * Starts decode.
+     * 
+     * @param aFile Image file
+     */
+    void DecodeL( TFileName& aFilename );
+            
+private:
+    // new functions
+    
+    void Cleanup();
+    
+private:
+    // data
+
+    /** Bitmapadapter, not owned */
+    CXnBitmapAdapter& iAdapter; 
+    /** File server session, not owned */
+    RFs& iFs;
+    /** Image decoder, owned */
+    CImageDecoder* iDecoder;
+    /** Bitmap, owned during conversion */
+    CFbsBitmap* iBitmap;
+    /** Mask, owned during conversion */
+    CFbsBitmap* iMask;    
+    };
+
+#endif // _XNIMAGEDECODER_H
+
+// End of file
--- a/idlehomescreen/xmluirendering/renderingplugins/xnbitmapfactory/src/xnbitmap.cpp	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/xmluirendering/renderingplugins/xnbitmapfactory/src/xnbitmap.cpp	Wed Jun 09 09:29:04 2010 +0300
@@ -77,6 +77,15 @@
     }   
 
 // -----------------------------------------------------------------------------
+// CXnBitmap::SetContentBitmaps
+// -----------------------------------------------------------------------------
+//
+void CXnBitmap::SetContentBitmaps( TFileName& aFilename )
+    {
+    (static_cast<CXnBitmapAdapter*>(ControlAdapter()))->SetContentBitmaps(aFilename);
+    }   
+
+// -----------------------------------------------------------------------------
 // CXnBitmap::ContentBitmaps
 // -----------------------------------------------------------------------------
 //
--- a/idlehomescreen/xmluirendering/renderingplugins/xnbitmapfactory/src/xnbitmapadapter.cpp	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/xmluirendering/renderingplugins/xnbitmapfactory/src/xnbitmapadapter.cpp	Wed Jun 09 09:29:04 2010 +0300
@@ -20,7 +20,7 @@
 #include "xndomproperty.h"
 #include "xnproperty.h"
 #include "xncontroladapter.h"
-
+#include "xnimagedecoder.h"
 #include "xnbitmapadapter.h"
 
 _LIT(KSkin, "skin(");
@@ -55,6 +55,8 @@
     iAreBitmapsLoaded = EFalse;
     
     iFallbackPathChange = ETrue;
+    
+    iDecoder = CXnImageDecoder::NewL( *this, iCoeEnv->FsSession() );
     }
     
 // -----------------------------------------------------------------------------
@@ -73,6 +75,7 @@
 //
 CXnBitmapAdapter::~CXnBitmapAdapter()
     {
+    delete iDecoder;
     delete iPath;
     delete iFallbackPath;
     }
@@ -82,7 +85,9 @@
 // -----------------------------------------------------------------------------
 //
 void CXnBitmapAdapter::SetContentBitmaps(CFbsBitmap* aBitmap, CFbsBitmap* aMask)
-    {    
+    {
+    iDecoder->Cancel();
+    
     CXnControlAdapter::SetContentBitmaps( aBitmap, aMask );
     
     iAreBitmapsSet = ETrue;
@@ -91,6 +96,20 @@
     }   
 
 // -----------------------------------------------------------------------------
+// CXnBitmapAdapter::SetContentBitmaps
+// -----------------------------------------------------------------------------
+//
+void CXnBitmapAdapter::SetContentBitmaps( TFileName& aFilename )
+    {       
+    TRAPD( err, iDecoder->DecodeL( aFilename ) );
+    
+    if ( err )
+        {
+        SetContentBitmaps( NULL, NULL );
+        }
+    }
+
+// -----------------------------------------------------------------------------
 // CXnBitmapAdapter::ContentBitmaps
 // -----------------------------------------------------------------------------
 //
@@ -100,15 +119,6 @@
     }
 
 // -----------------------------------------------------------------------------
-// CXnBitmapAdapter::Draw
-// -----------------------------------------------------------------------------
-//
-void CXnBitmapAdapter::Draw(const TRect& aRect) const
-    {        
-    CXnControlAdapter::Draw( aRect );    
-    }
-
-// -----------------------------------------------------------------------------
 // CXnBitmapAdapter::SizeChanged
 // -----------------------------------------------------------------------------
 //
@@ -190,25 +200,6 @@
     }
 
 // -----------------------------------------------------------------------------
-// CXnTextAdapter::HandleResourceChange
-// -----------------------------------------------------------------------------
-//
-void CXnBitmapAdapter::HandleScreenDeviceChangedL( )
-    {
-    CXnControlAdapter::HandleScreenDeviceChangedL();        
-    }
-
-// -----------------------------------------------------------------------------
-// CXnBitmapAdapter::HandlePointerEventL
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-// 
-void CXnBitmapAdapter::HandlePointerEventL( const TPointerEvent& aPointerEvent )
-    {        
-    CXnControlAdapter::HandlePointerEventL( aPointerEvent );    
-    }
-
-// -----------------------------------------------------------------------------
 // CXnBitmapAdapter::SkinChanged
 // -----------------------------------------------------------------------------
 //
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/xmluirendering/renderingplugins/xnbitmapfactory/src/xnimagedecoder.cpp	Wed Jun 09 09:29:04 2010 +0300
@@ -0,0 +1,206 @@
+/*
+* 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:  Image decoder
+*
+*/
+
+// System includes
+#include <imageconversion.h>
+
+// User includes
+#include "xncomponent.h"
+#include "xnnodepluginif.h"
+#include "xnuienginepluginif.h"
+#include "xnbitmapadapter.h"
+#include "xnimagedecoder.h"
+
+using namespace ContentAccess;
+
+// Constants
+    
+// ============================ LOCAL FUNCTIONS ================================
+// ============================ MEMBER FUNCTIONS ===============================
+// -----------------------------------------------------------------------------
+// CXnImageDecoder::NewL()
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CXnImageDecoder* CXnImageDecoder::NewL( CXnBitmapAdapter& aAdapter, RFs& aFs ) 
+    {
+    CXnImageDecoder* self = CXnImageDecoder::NewLC( aAdapter, aFs );
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CXnImageDecoder::NewLC()
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CXnImageDecoder* CXnImageDecoder::NewLC( CXnBitmapAdapter& aAdapter, RFs& aFs )
+    {
+    CXnImageDecoder* self = new ( ELeave ) CXnImageDecoder( aAdapter, aFs );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CXnImageDecoder::~CXnImageDecoder()
+// C++ default destructor.
+// -----------------------------------------------------------------------------
+//
+CXnImageDecoder::~CXnImageDecoder()
+    {    
+    Cancel();
+    
+    Cleanup();
+    }
+
+// -----------------------------------------------------------------------------
+// CXnImageDecoder::CXnImageDecoder()
+// C++ default constructor.
+// -----------------------------------------------------------------------------
+//
+CXnImageDecoder::CXnImageDecoder( CXnBitmapAdapter& aAdapter, RFs& aFs )
+    : CActive( CActive::EPriorityHigh ), iAdapter( aAdapter ), iFs( aFs )
+    {
+    CActiveScheduler::Add( this );
+    }
+
+// -----------------------------------------------------------------------------
+// CXnImageDecoder::ConstructL()
+// 2nd phase constructor.
+// -----------------------------------------------------------------------------
+//
+void CXnImageDecoder::ConstructL()
+    {                     
+    }
+
+// -----------------------------------------------------------------------------
+// CXnImageDecoder::RunL()
+// 
+// -----------------------------------------------------------------------------
+//
+void CXnImageDecoder::RunL()
+    {   
+    // Takes ownership of iBitmap and iMask
+    iAdapter.SetContentBitmaps( iBitmap, iMask );
+    
+    iBitmap = NULL;
+    iMask = NULL;
+    
+    delete iDecoder;
+    iDecoder = NULL;
+    
+    iAdapter.Component()->Node()->UiEngineL()->RenderUIL();
+    }
+
+// -----------------------------------------------------------------------------
+// CXnImageDecoder::RunError()
+// 
+// -----------------------------------------------------------------------------
+//
+TInt CXnImageDecoder::RunError( TInt /*aError*/ )
+    {
+    Cleanup();
+    
+    // Set NULL bitmaps
+    TRAP_IGNORE( RunL() );
+    
+    // Ignore
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CXnImageDecoder::DoCancel()
+// 
+// -----------------------------------------------------------------------------
+//
+void CXnImageDecoder::DoCancel()
+    {
+    Cleanup();
+    }
+
+// -----------------------------------------------------------------------------
+// CXnImageDecoder::DecodeL()
+// 
+// -----------------------------------------------------------------------------
+//
+void CXnImageDecoder::DecodeL( TFileName& aFilename )
+    {     
+    Cancel();
+    
+    TInt options( 
+        CImageDecoder::EOptionAlwaysThread | 
+        CImageDecoder::EPreferFastDecode );
+         
+    iDecoder = CImageDecoder::FileNewL( iFs, aFilename, EView, 
+        ( CImageDecoder::TOptions ) options ); 
+    
+    TFrameInfo frameInfo( iDecoder->FrameInfo( 0 ) );
+    
+    CFbsBitmap* bitmap = new ( ELeave ) CFbsBitmap;
+    CleanupStack::PushL( bitmap );
+    
+    User::LeaveIfError( bitmap->Create( 
+        frameInfo.iOverallSizeInPixels, frameInfo.iFrameDisplayMode ) );
+                             
+    if ( frameInfo.iFlags & TFrameInfo::ETransparencyPossible )
+        {
+        CFbsBitmap* mask = new ( ELeave ) CFbsBitmap;
+        CleanupStack::PushL( mask );
+        
+        User::LeaveIfError( mask->Create( frameInfo.iOverallSizeInPixels,                
+            ( frameInfo.iFlags & TFrameInfo::EAlphaChannel ) ? EGray256 : EGray2 ) );
+        
+        iDecoder->Convert( &iStatus, *bitmap, *mask );
+        
+        CleanupStack::Pop( mask );
+        iMask = mask;
+        }
+    else
+        {
+        iDecoder->Convert( &iStatus, *bitmap );               
+        }
+    
+    CleanupStack::Pop( bitmap );
+    iBitmap = bitmap;
+        
+    SetActive();    
+    }
+
+// -----------------------------------------------------------------------------
+// CXnImageDecoder::Cleanup()
+// 
+// -----------------------------------------------------------------------------
+//
+void CXnImageDecoder::Cleanup()
+    {
+    if ( iDecoder )
+        {
+        iDecoder->Cancel();        
+        }
+    
+    delete iDecoder;
+    iDecoder = NULL;
+    
+    delete iBitmap;
+    iBitmap = NULL;
+    
+    delete iMask;
+    iMask = NULL;      
+    }
+
+// End of file
--- a/idlehomescreen/xmluirendering/renderingplugins/xnnewstickerfactory/inc/xnnewstickeradapter.h	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/xmluirendering/renderingplugins/xnnewstickerfactory/inc/xnnewstickeradapter.h	Wed Jun 09 09:29:04 2010 +0300
@@ -29,13 +29,6 @@
 class CAknMarqueeControl;
 
 // CONSTANTS
-// The default values for the newsticker control
-const TInt KXnNewstickerDelay = 1000000;   // start scrolling after a delay of 1 second
-const TInt KXnNewstickerInterval = 100000; // scroll 10 times in a second
-const TInt KXnNewstickerScrollAmount = 6;  // scroll 6 pixels at time
-const TInt KXnNewstickerLoops = 1;         // loop amount
-const TInt KNoDelay = 0;                   //  No delay to start the animation
-const TInt KAnimationTime = 6000000;       //  The animation lasts 6 seconds
 
 // CLASS DECLARATION
 
@@ -47,8 +40,7 @@
 *  @lib xnnewstickerfactory.dll
 *  @since Series 60 3.2
 */
-class CXnNewstickerAdapter : public CXnControlAdapter,
-            XnNewstickerInterface::MXnNewstickerCallbackInterface
+class CXnNewstickerAdapter : public CXnControlAdapter    
     {
     public:
           
@@ -120,16 +112,14 @@
         void ClearTitles();
 
         /**
-         * Set callback interface.
-         * @param aCallback The callback interface pointer.
+         * Restarts current title
          */
-        void SetCallbackInterfaceL(
-            XnNewstickerInterface::MXnNewstickerCallbackInterface* aCallback );
-
+        void Restart();
+        
         /**
          * Start showing the titles.
          */
-        void Start();
+        void Start( TBool aSelectTitle = EFalse );
 
         /**
          * Stop showing the titles.
@@ -157,17 +147,13 @@
          * @return ETrue if the method should be called again.
          */
         static TInt PeriodicEventL( TAny * aPtr );
-     
-        void MakeVisible( TBool aVisible );
-        
+
     public: // from base classes
 
-        //  From MXnNewstickerCallbackInterface
         /**
-         * Called when the title has been shown and is now offscreen.
-         * @param aTitleIndex The title that has been completely shown.
-         */
-        void TitleScrolled( TInt aTitleIndex );
+        * See CCoeControl documentation
+        */      
+        void MakeVisible( TBool aVisible );
 
         /**
         * See CCoeControl documentation
@@ -208,20 +194,14 @@
         * Reports newsticker event
         * 
         */   
-        void ReportNewstickerEvent( const TDesC8& aEventName );
+        void ReportNewstickerEvent( const TDesC8& aEventName, TInt aIndex );
         
         /**
         * Draws text
         * Text drawing function is selected by scrolling behaviour
         */
-        void DrawText( const TDesC& aText, const TRect& aRect  );
+        void DrawText( const TDesC& aText );
         
-        /**
-        * ETrue if marquee control redrawing is needed. EFalse if truncated text is needed
-        */
-        TBool Redraw() { return iRedraw; }
-
-
     private:
 
     	CXnNewstickerAdapter( CXnControlAdapter* aParent, CXnNodePluginIf& aNode );
@@ -256,12 +236,12 @@
         /**
         *  FScrolls alternative text. Function is called by periodic timer
         */    
-        void DoScroll();
+        void DoScroll( TBool aEndOfLoop );
         
         /**
         *  Draws text directly to screen if scrollins is not needed
         */  
-        void DrawStaticText( CWindowGc& aGc, const TDesC& aText ) const;
+        void DrawStaticText( CWindowGc& aGc, const TDesC& aText, TBool aTruncate = ETrue ) const;
         
         /**
         *  Draws scrolling text to screen via marquee control
@@ -277,26 +257,15 @@
 	    CPeriodic*                  iPeriodicTimer;
 
         /**
-        * The callback interface which is used when a title has been shown.
-        * Not own.
-        */
-        XnNewstickerInterface::MXnNewstickerCallbackInterface*  iCallback;
-
-        /**
         * The control handling the text title showing
         * Own.
         */
         CXnNewstickerControl*       iControl;
 	    
         /**
-         * The delay before first event
+         * Alternate delay, i.e. display time
          */  
-	    TInt                        iAlternateDelay;
-        
-        /**
-         * The alternate interval between ticks.
-         */	    
-	    TInt                        iAlternateInterval;
+	    TInt                        iAlternateDelay;        
 
         /**
         * UI node
@@ -360,19 +329,11 @@
        * Current strikethrough behaviour
        */ 
        TFontStrikethrough          iStrikethrough;
-       
-       /**
-       * is scroll looping activated
-       */ 
-       TBool                    iScrollLooping;
-       
+              
        /**
        * is marquee control redraw needed
        */ 
        TBool                    iRedraw;
-        
-        
-        
     };
 
 #endif // XNNEWSTICKERADAPTER_H
--- a/idlehomescreen/xmluirendering/renderingplugins/xnnewstickerfactory/inc/xnnewstickercontrol.h	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/xmluirendering/renderingplugins/xnnewstickerfactory/inc/xnnewstickercontrol.h	Wed Jun 09 09:29:04 2010 +0300
@@ -95,7 +95,7 @@
 		 * Returns last index from iTitleTexts
 		 * Which is not empty string
 		 */
-        TInt LastIndexWithContent();
+        TInt LastIndexWithContent() const;
         
         /**
          * Delete all titles.
@@ -116,14 +116,33 @@
 	    /**
         * Selects title to be shown
         */
-        const TDesC& SelectTitle();
+        const TDesC& CurrentTitle() const;
+
+        /**
+        * Selects current title to display
+        */
+        TInt SelectTitle();
         
         /**
-        * Sets the current title to default ( last one ) or move to next one
+        * Selects next title to display
+        */
+        TBool SelectNextTitle();
+
+        /**
+        * Checks is there any visible titles in array
         */
-        TBool SetCurrentTitle( TBool aSetDefault = EFalse );
+        TBool IsVisibleTitles() const;
+        
+        /**
+         * Sets scroll looping
+         */
+        void SetScrollLooping( TBool aLooping );
 
-
+        /**
+         * Peeks next title, return loop status in aEndOfLoop.         
+         */
+        TPtrC PeekNextTitle( TBool& aEndOfLoop ) const;
+        
     private: 
 
         CXnNewstickerControl(CXnNewstickerAdapter* aAdapter);
@@ -139,11 +158,6 @@
          * @return The next index that has content or -1 if nothing was found 
          */
         TInt GetNextTitleWithContent( TInt aStartSearch, TBool aBackwards = EFalse ) const;
-
-        /**
-        * Checks is there any visible titles in array
-        */
-        TBool IsVisibleTitles() const;
         
     private:    // Data
         
@@ -165,9 +179,10 @@
          */	            
         CXnNewstickerAdapter*       iAdapter;
         
-
-
-        
+        /**
+        * is scroll looping activated
+        */ 
+        TBool                    iScrollLooping;
     };
 
 #endif // XNNEWSTICKERCONTROL_H
--- a/idlehomescreen/xmluirendering/renderingplugins/xnnewstickerfactory/src/xnnewsticker.cpp	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/xmluirendering/renderingplugins/xnnewstickerfactory/src/xnnewsticker.cpp	Wed Jun 09 09:29:04 2010 +0300
@@ -142,17 +142,6 @@
     }
 
 // ---------------------------------------------------------
-// CXnNewsticker::SetCallbackInterfaceL
-// ---------------------------------------------------------
-//
-void CXnNewsticker::SetCallbackInterfaceL(
-    XnNewstickerInterface::MXnNewstickerCallbackInterface* aCallback)
-    {
-    (static_cast<CXnNewstickerAdapter*>
-            (ControlAdapter()))->SetCallbackInterfaceL(aCallback);
-    }
-
-// ---------------------------------------------------------
 // CXnNewsticker::MakeInterfaceL
 // ---------------------------------------------------------
 //
--- a/idlehomescreen/xmluirendering/renderingplugins/xnnewstickerfactory/src/xnnewstickeradapter.cpp	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/xmluirendering/renderingplugins/xnnewstickerfactory/src/xnnewstickeradapter.cpp	Wed Jun 09 09:29:04 2010 +0300
@@ -11,7 +11,7 @@
 *
 * Contributors:
 *
-* Description:  Implementation for wrapper for a label
+* Description:  Marquee control
 *
 */
 
@@ -37,9 +37,12 @@
 #include "xnnewstickercontrol.h"
 #include "xncomponentnodeimpl.h"
 
-
+// Constants
 const TInt KThousandCoef = 1000;
 const TInt KByteLength = 8;
+const TInt KXnNewstickerDelay = 1000000;   // start scrolling after a delay of 1 second
+const TInt KXnNewstickerInterval = 100000; // scroll 10 times in a second
+const TInt KXnNewstickerScrollAmount = 6;  // scroll 6 pixels at time
 
 
 // ============================= LOCAL FUNCTIONS ===============================
@@ -79,160 +82,132 @@
 void CXnNewstickerAdapter::SetNewstickerPropertiesL()
     {
     // scroll amount 
-    TInt scrollamount = GetIntPropertyL( iNode, 
-        XnPropertyNames::newsticker::KXnScrollAmount );   // px
+    TInt scrollamount( GetIntPropertyL( iNode, 
+        XnPropertyNames::newsticker::KXnScrollAmount ) );   // px
     
-    if( KErrNotFound == scrollamount )
+    if ( scrollamount == KErrNotFound )
         {
         scrollamount = KXnNewstickerScrollAmount;
         }
 
     CXnProperty* prop( iNode.GetPropertyL(
-            XnPropertyNames::newsticker::KScrollBehaviour ) );
+        XnPropertyNames::newsticker::KScrollBehaviour ) );
+    
+    // Default
+    iScrollBehaviour = EScroll;
     
-    if( prop )
+    if ( prop )
         {
-        if ( prop->StringValue() == 
-                XnPropertyNames::newsticker::scroll_behaviour::KAlternate )
+        const TDesC8& value( prop->StringValue() );
+        
+        if ( value == XnPropertyNames::newsticker::scroll_behaviour::KAlternate )                 
             {
             scrollamount = 0;
             iScrollBehaviour = EAlternate;
             }
-        else if ( prop->StringValue() == 
-                XnPropertyNames::newsticker::scroll_behaviour::KScrollAlternate )
+        else if ( value == XnPropertyNames::newsticker::scroll_behaviour::KScrollAlternate )                 
             {
             iScrollBehaviour = EScrollAlternate;
             }
-        else
-            {
-            iScrollBehaviour = EScroll;
-            }
         }
-    else
-        {
-        iScrollBehaviour = EScroll;
-        }        
-        
+    
     iMarqueeControl->SetSpeedInPixels( scrollamount );
     
-    if( iScrollBehaviour == EScroll )
+    if ( iScrollBehaviour == EScroll || iScrollBehaviour == EScrollAlternate )
         {                    
-        // scroll delay
-        TInt scrolldelay = GetIntPropertyL( iNode, 
-            XnPropertyNames::newsticker::KXnScrollDelay );  // ms
+        // scroll delay, i.e. fps
+        TInt scrolldelay( GetIntPropertyL( iNode, 
+            XnPropertyNames::newsticker::KXnScrollDelay ) );  // ms
         
-        if( KErrNotFound == scrolldelay )
+        if ( scrolldelay == KErrNotFound )
             {
             scrolldelay = KXnNewstickerInterval;
             }
         else 
             {
-            scrolldelay *= KThousandCoef;    // change to microseconds
+            // change to seconds
+            scrolldelay *= KThousandCoef;
             }
         
-        iMarqueeControl->SetInterval( scrolldelay ); 
-        iAlternateInterval = scrolldelay;
-            
+        iMarqueeControl->SetInterval( scrolldelay );         
+                                    
         // start delay
-        TInt startdelay = GetIntPropertyL( iNode, 
-            XnPropertyNames::newsticker::KXnStartDelay ); // ms
+        TInt startdelay( GetIntPropertyL( iNode, 
+            XnPropertyNames::newsticker::KXnStartDelay ) ); // ms
         
-        if( KErrNotFound == startdelay )
+        if ( startdelay == KErrNotFound )
             {
             startdelay = KXnNewstickerDelay;
             }
         else 
             {
-            startdelay *= KThousandCoef;    // change to microseconds
+            // change to seconds
+            startdelay *= KThousandCoef;
             }
         
         iMarqueeControl->SetDelay( startdelay );
         iAlternateDelay = startdelay;
-        }
-    else if( iScrollBehaviour == EScrollAlternate )
-		{
-        // scroll delay
-        TInt scrolldelay = GetIntPropertyL( iNode, 
-            XnPropertyNames::newsticker::KXnScrollDelay );  // ms
         
-        if( KErrNotFound == scrolldelay )
+        if ( iScrollBehaviour == EScrollAlternate )
             {
-            scrolldelay = KXnNewstickerInterval;
+            TInt alternateTime( GetIntPropertyL( iNode,  
+                XnPropertyNames::newsticker::KDisplayTime ) );
+            
+            if( alternateTime == KErrNotFound )
+                {
+                alternateTime = KXnNewstickerDelay;            
+                }
+            else
+                {
+                // change to seconds
+                alternateTime *= KThousandCoef; 
+                }
+                    
+            iAlternateDelay = alternateTime;            
+            }                    
+        }                
+    else // TScrollBehaviour::EAlternate
+        {
+        TInt alternateTime( GetIntPropertyL( 
+            iNode, XnPropertyNames::newsticker::KDisplayTime ) );
+        
+        if ( alternateTime == KErrNotFound )
+            {
+            alternateTime = KXnNewstickerDelay;
             }
-        else 
+        else
             {
-            scrolldelay *= KThousandCoef;    // change to microseconds
-            }
-        
-        iMarqueeControl->SetInterval( scrolldelay );
-        iAlternateInterval = scrolldelay;
-
-        TInt alternateTime( GetIntPropertyL( iNode, XnPropertyNames::newsticker::KDisplayTime ) );
-        
-        if( alternateTime == KErrNotFound )
-            {
-            alternateTime = 0;
+            // change to seconds    
+            alternateTime *= KThousandCoef; 
             }
 
-        alternateTime *= KThousandCoef; // change to ms                        
-
-        iAlternateInterval = alternateTime;
-
-        // start delay
-        TInt startdelay = GetIntPropertyL( iNode, 
-            XnPropertyNames::newsticker::KXnStartDelay ); // ms
-        
-        if( KErrNotFound == startdelay )
-            {
-            startdelay = 0;
-            }
-        else 
-            {
-            startdelay *= KThousandCoef;    // change to microseconds
-            }
+        iMarqueeControl->SetDelay( 0 );
+        iMarqueeControl->SetInterval( 0 );
         
-        iMarqueeControl->SetDelay( startdelay );
-        iAlternateDelay = startdelay;
-        }
-    else // TScrollBehaviour::EAlternate
-        {
-        TInt alternateTime( GetIntPropertyL( iNode, XnPropertyNames::newsticker::KDisplayTime ) );
-        
-        if( alternateTime == KErrNotFound )
-            {
-            alternateTime = 0;
-            }
-
-        alternateTime *= KThousandCoef; // change to ms                        
-
-        iMarqueeControl->SetDelay( 0 );
-        iMarqueeControl->SetInterval( alternateTime );
-        
-        iAlternateDelay = 0;
-        iAlternateInterval = alternateTime;
+        iAlternateDelay = alternateTime;        
         }        
     
     // _s60-scroll-loop property. True by default.
     CXnProperty* loopProp( iNode.GetPropertyL(
-            XnPropertyNames::newsticker::KScrollLoop ) );
+        XnPropertyNames::newsticker::KScrollLoop ) );
     
-    if( loopProp && loopProp->StringValue() == XnPropertyNames::KFalse )
+    TBool looping( ETrue );
+    
+    if ( loopProp && loopProp->StringValue() == XnPropertyNames::KFalse )
         {
-        iScrollLooping = EFalse;
+        looping = EFalse;
         }
-    else
-        {
-        iScrollLooping = ETrue;
-        }    
+    
+    iControl->SetScrollLooping( looping );
     
     CXnProperty* restartProperty( iNode.GetPropertyL(
-            XnPropertyNames::newsticker::KRestartAfterUpdate ) );
+        XnPropertyNames::newsticker::KRestartAfterUpdate ) );
     
     if ( restartProperty && restartProperty->StringValue() == XnPropertyNames::KTrue )
         {
         iRestartAfterUpdate = ETrue;
         }
-     }
+    }  
 
 // ============================ MEMBER FUNCTIONS ===============================
 
@@ -269,7 +244,7 @@
     iMarqueeControl->SetContainerWindowL( *aParent );
     iMarqueeControl->ActivateL();
     
-    iPeriodicTimer = CPeriodic::NewL( CActive::EPriorityStandard );
+    iPeriodicTimer = CPeriodic::NewL( CActive::EPriorityLow );
     
     SetTextPropertiesL();
     SetNewstickerPropertiesL();
@@ -281,39 +256,15 @@
         {
         CXnNodePluginIf* child( children[i] );
         
-        CXnType* xnType = child->Type();
-        
+        const TDesC8& type( child->Type()->Type() );
+                
         // We only care for <title> nodes
-        if ( xnType && xnType->Type() == XnPropertyNames::title::KTitle )
+        if ( type == XnPropertyNames::title::KTitle )
             {
-            // Append  title, if one is given from the theme use that.
-            // If no content yet available create empty title so that 
-            // indexing is always current
-            const TDesC8& pcData( child->GetPCData() );
-    
-            HBufC* pcData16 = CnvUtfConverter::ConvertToUnicodeFromUtf8L( pcData );
-            CleanupStack::PushL( pcData16 );
-    
-            TPtr ptr( pcData16->Des() );
-    
-            CXnUtils::CollapseWhiteSpace( iNode, ptr );
-    
-            if( ptr.Length() > 0 )
-                {
-                iControl->AppendTitleL( *pcData16 );
-                }
-            else
-                {
-                iControl->AppendTitleL( KNullDesC );
-                }
-    
-            CleanupStack::PopAndDestroy( pcData16 );
+            iControl->AppendTitleL( KNullDesC );    
             }
         }
-    CleanupStack::PopAndDestroy( &children );
-    
-    iControl->SetCurrentTitle( ETrue );
-    
+    CleanupStack::PopAndDestroy( &children );          
     }
 
 // -----------------------------------------------------------------------------
@@ -324,14 +275,13 @@
 CXnNewstickerAdapter::CXnNewstickerAdapter( CXnControlAdapter* /*aParent*/, 
     CXnNodePluginIf& aNode )
     : iNode( aNode ),
-      iPowerSaveMode( ETrue ),
+      iPowerSaveMode( EFalse ),
       iRestartAfterUpdate( EFalse ),
       iTextColor( KRgbBlack ),
-      iTextAlignment( ELayoutAlignLeft ),
+      iTextAlignment( CGraphicsContext::ELeft ),
       iTextBaseline( 0 ),
       iUnderlining( EUnderlineOff ),
-      iStrikethrough( EStrikethroughOff ),
-      iScrollLooping( ETrue ),
+      iStrikethrough( EStrikethroughOff ),      
       iRedraw( ETrue )
     {
     }
@@ -343,11 +293,6 @@
 //
 CXnNewstickerAdapter::~CXnNewstickerAdapter()
     {           
-    if( iPeriodicTimer && iPeriodicTimer->IsActive() )
-        {
-        iPeriodicTimer->Cancel();
-        }
-        
     delete iPeriodicTimer;
 
     if( iFont && ( iReleaseFont == 1 ) )
@@ -358,7 +303,6 @@
     
     delete iMarqueeControl;
     delete iControl;
-
     }
 
 // -----------------------------------------------------------------------------
@@ -477,15 +421,13 @@
     switch( alignment )
         {
         case EHCenterVCenter:            
-            iTextAlignment = ELayoutAlignCenter;                 
-            break;
-            
+            iTextAlignment = CGraphicsContext::ECenter;                 
+            break;            
         case EHRightVCenter:            
-            iTextAlignment = ELayoutAlignRight;                
-            break;
-            
+            iTextAlignment = CGraphicsContext::ERight;                
+            break;            
         default: 
-            iTextAlignment = ELayoutAlignLeft;
+            iTextAlignment = CGraphicsContext::ELeft;
             break;    
         }   
     }
@@ -520,9 +462,8 @@
     iNode.SetDirtyL();
     
     if ( iRestartAfterUpdate )
-        {
-        Stop();
-        Start();
+        {        
+        Restart();
         }
     }
 
@@ -565,68 +506,63 @@
     }
 
 // -----------------------------------------------------------------------------
-// CXnNewstickerAdapter::SetCallbackInterfaceL
+// CXnNewstickerAdapter::Restart
 // -----------------------------------------------------------------------------
 //
-void CXnNewstickerAdapter::SetCallbackInterfaceL(
-        XnNewstickerInterface::MXnNewstickerCallbackInterface* aCallback )
+void CXnNewstickerAdapter::Restart()
     {
-    iCallback = aCallback;
-    }
-
-// -----------------------------------------------------------------------------
-// CXnNewstickerAdapter::TitleScrolled
-// -----------------------------------------------------------------------------
-//
-void CXnNewstickerAdapter::TitleScrolled( TInt aTitleIndex )
-    {
-    if( iCallback )
-        {
-        iCallback->TitleScrolled( aTitleIndex );
-        }
+    Stop();
+    Start( ETrue );                
     }
 
 // -----------------------------------------------------------------------------
-// CXnNewstickerAdapter::StartL
+// CXnNewstickerAdapter::Start
 // -----------------------------------------------------------------------------
 //
-void CXnNewstickerAdapter::Start()
+void CXnNewstickerAdapter::Start( TBool aSelectTitle )
     {
-    if( IsVisible() && !iPowerSaveMode )
+    if ( IsVisible() && !iPowerSaveMode && !iNode.Rect().IsEmpty() )
         {
-        if( iControl->TitleCount() < 1 )
+        if ( aSelectTitle )
             {
-            // Nothing to show
-            return;
+            if ( iControl->SelectTitle() == KErrNotFound )
+                {
+                return;
+                }
             }
         
-        switch( iScrollBehaviour )
+        const TDesC& title( iControl->CurrentTitle() );
+                                
+        switch ( iScrollBehaviour )
             {
             case EScroll:
+            case EScrollAlternate:
                 {
                 iMarqueeControl->EnableMarquee( ETrue );
                 iRedraw = ETrue;
+
+                TInt textWidth( 
+                    iFont->TextWidthInPixels( title ) );
+                
+                TInt rectWidth( iNode.Rect().Width() );
+                
+                if ( textWidth < rectWidth )
+                    {
+                    StartAlternateCounter();
+                    }                                
                 }
-                break;
-                
+                break;                
             case EAlternate:
                 {
                 iMarqueeControl->EnableMarquee( EFalse );
                 StartAlternateCounter();  
                 }
-                break;
-                
-            case EScrollAlternate:
-                {
-                iMarqueeControl->EnableMarquee( ETrue );
-                StartAlternateCounter(); 
-                iRedraw = ETrue;
-                }
-                break;
-                
+                break;                
             default:
                 break;
             }
+        
+        DrawDeferred();
         }
     }
 
@@ -646,10 +582,7 @@
 //
 void CXnNewstickerAdapter::StopAlternateCounter()
     {
-    if( iPeriodicTimer && iPeriodicTimer->IsActive() )
-        {
-        iPeriodicTimer->Cancel();
-        }
+    iPeriodicTimer->Cancel();    
     }
 
 // -----------------------------------------------------------------------------
@@ -668,15 +601,12 @@
 //
 void CXnNewstickerAdapter::StartAlternateCounter()
     {
-    if( iPeriodicTimer && iPeriodicTimer->IsActive() )
-        {
-        iPeriodicTimer->Cancel();
-        }
-
+    iPeriodicTimer->Cancel();
+    
     iPeriodicTimer->Start(                
         TTimeIntervalMicroSeconds32( iAlternateDelay ),
-        TTimeIntervalMicroSeconds32( iAlternateInterval ), 
-        TCallBack( CXnNewstickerAdapter::PeriodicEventL, this ) ); 
+        TTimeIntervalMicroSeconds32( 0 ), 
+        TCallBack( PeriodicEventL, this ) ); 
     }
 
 // -----------------------------------------------------------------------------
@@ -686,9 +616,17 @@
 TInt CXnNewstickerAdapter::PeriodicEventL( TAny* aPtr )
     {
     __PRINTS( "CXnNewstickerAdapter::PeriodicEventL, timer runs" );
+    
     CXnNewstickerAdapter* self = static_cast< CXnNewstickerAdapter* >( aPtr );
-    self->DoScroll();
+    
+    self->iPeriodicTimer->Cancel();
+    
+    TBool endOfLoop( self->iControl->SelectNextTitle() );
+    
+    self->DoScroll( endOfLoop );
   
+    self->DrawNow();
+    
     return KErrNone;
     }
 
@@ -700,9 +638,9 @@
     {
     CCoeControl::MakeVisible( aVisible );
 
-    if( aVisible )
+    if ( aVisible )
         {
-        Start();
+        Restart();
         }
     else
         {
@@ -719,7 +657,7 @@
     CXnControlAdapter::SizeChanged();         
     iMarqueeControl->SetExtent( iNode.Rect().iTl, iNode.Rect().Size() );
     
-    iTextBaseline = iNode.Rect().Height() / 2 + iFont->AscentInPixels() / 2;
+    iTextBaseline = iNode.Rect().Height() / 2 + iFont->AscentInPixels() / 2;    
     }
 
 // -----------------------------------------------------------------------------
@@ -737,14 +675,12 @@
 //
 CCoeControl* CXnNewstickerAdapter::ComponentControl( TInt aIndex ) const
     {
-    switch ( aIndex )
+    if ( aIndex == 0 )
         {
-        case 0:
-            return iMarqueeControl;
-            
-        default:
-            return NULL;
+        return iMarqueeControl;
         }
+
+    return NULL;        
     }
 
 // -----------------------------------------------------------------------------
@@ -771,10 +707,11 @@
 // CXnNewstickerAdapter::ReportNewstickerEventL
 // -----------------------------------------------------------------------------
 // 
-void CXnNewstickerAdapter::ReportNewstickerEvent( const TDesC8& aEventName )
+void CXnNewstickerAdapter::ReportNewstickerEvent( const TDesC8& aEventName,
+    TInt aIndex )
     { 
-    TBuf8<KByteLength>index( KNullDesC8 );
-    index.Num( CurrentTitleIndex() );
+    TBuf8< KByteLength >index( KNullDesC8 );
+    index.Num( aIndex );
     
     TRAP_IGNORE( iNode.ReportTriggerEventL( aEventName,
             XnPropertyNames::action::trigger::name::KTitleIndex, index ); )
@@ -786,7 +723,14 @@
 // -----------------------------------------------------------------------------
 void CXnNewstickerAdapter::Draw( const TRect& aRect ) const
     {    
-    const_cast<CXnNewstickerAdapter*>(this)->DrawText( iControl->SelectTitle(), aRect );
+    CXnControlAdapter::Draw( aRect );
+    
+    if ( iControl->CurrentTitleIndex() != KErrNotFound )
+        {
+        const TDesC& title( iControl->CurrentTitle() );
+        
+        const_cast< CXnNewstickerAdapter* >( this )->DrawText( title );             
+        }
     }
     
 // -----------------------------------------------------------------------------
@@ -796,6 +740,7 @@
 void CXnNewstickerAdapter::DoEnterPowerSaveModeL( TModeEvent /*aEvent*/ )
     {     
     iPowerSaveMode = ETrue;
+    
     Stop();
     }
 
@@ -807,9 +752,9 @@
     {
     iPowerSaveMode = EFalse;
     
-    if( IsVisible() )
+    if ( IsVisible() )
         {
-        Start();
+        Restart();
         }
     }
 
@@ -817,61 +762,65 @@
 // CXnNewstickerAdapter::DrawText
 // Text drawing function is selected by scrolling behaviour
 // -----------------------------------------------------------------------------
-void CXnNewstickerAdapter::DrawText( const TDesC& aText, const TRect& aRect )
+void CXnNewstickerAdapter::DrawText( const TDesC& aText )
     {    
-    CWindowGc& gc = SystemGc();
+    CWindowGc& gc( SystemGc() );
     
-    TRect rect = iNode.Rect();
-           
-    CXnControlAdapter::Draw( aRect );
-    
+    TRect rect( iNode.Rect() );
+                  
     gc.SetPenColor( iTextColor );
     gc.UseFont( iFont );
     gc.SetUnderlineStyle( iUnderlining );
     gc.SetStrikethroughStyle( iStrikethrough );
            
-    TInt textWidth = iFont->TextWidthInPixels( aText );
-    TInt rectWidth = rect.Width();
+    TInt textWidth( iFont->TextWidthInPixels( aText ) );
+    TInt rectWidth( rect.Width() );
     
-    switch( iScrollBehaviour )
+    switch ( iScrollBehaviour )
         {  
         case EScroll:
         case EScrollAlternate:
             {
-            if( !iRedraw || textWidth < rectWidth )
+            if ( !iRedraw || textWidth < rectWidth )                 
                 {
                 iMarqueeControl->Stop();
-                DrawStaticText( gc, aText );
+                DrawStaticText( gc, aText );                
                 }
             else
                 {
                 iMarqueeControl->Start();
-                TBool isLast = DrawMarqueeText( gc, aText );
-                
-                if( isLast )
+
+                iRedraw = !DrawMarqueeText( gc, aText );   
+                                                   
+                if ( !iRedraw )                    
                     {
-                    if( !iScrollLooping )
+                    // Marquee is in end
+                    if ( iPeriodicTimer && !iPeriodicTimer->IsActive() )
                         {
-                        iRedraw = EFalse;
+                        iPeriodicTimer->Start(                
+                            TTimeIntervalMicroSeconds32( 0 ),
+                            TTimeIntervalMicroSeconds32( 0 ), 
+                            TCallBack( PeriodicEventL, this ) );                         
                         }
                     
-                    iMarqueeControl->Reset();
-                    StartAlternateCounter();
-                    }
-                }
+                    TBool endOfLoop;
+                    
+                    const TDesC& next( iControl->PeekNextTitle( endOfLoop ) );
+                    
+                    DrawStaticText( gc, next, endOfLoop );                    
+                    }                
+                }                        
             }
-            break;
-            
+            break;            
         case EAlternate:
             {
             DrawStaticText( gc, aText );
             }
-            break;
-            
+            break;            
         default:
             break;
         }
-      }
+    }
 
 // -----------------------------------------------------------------------------
 // CXnNewstickerAdapter::RedrawCallback
@@ -880,31 +829,35 @@
 //
 TInt CXnNewstickerAdapter::RedrawCallback( TAny* aPtr )
     {
-    CXnNewstickerAdapter* self = static_cast<CXnNewstickerAdapter*>( aPtr );
-    self->DrawNow();
-
-    return self->Redraw();
- 
+    CXnNewstickerAdapter* self = static_cast< CXnNewstickerAdapter* >( aPtr );
+    
+    if ( self->iRedraw )
+        {
+        self->DrawNow();        
+        }
+            
+    return self->iRedraw; 
     }
 
 // -----------------------------------------------------------------------------
 // CXnNewstickerAdapter::DoScroll
-// Scrolls alternative text. Function is called by periodic timer
+// 
 // -----------------------------------------------------------------------------
 //
-void CXnNewstickerAdapter::DoScroll()
+void CXnNewstickerAdapter::DoScroll( TBool aEndOfLoop )
     {
-    ReportNewstickerEvent( XnPropertyNames::action::trigger::name::KTitleScrolled );
+    iMarqueeControl->Reset();
+        
+    iRedraw = EFalse;
     
-    if( iControl->SetCurrentTitle() )
+    if ( !aEndOfLoop )
+        {        
+        Start();
+        }
+    else 
         {
-        // stop alternate scrolling if current index is last
-        StopAlternateCounter();
+        Stop();
         }
-    
-    DrawNow();
- 
-    ReportNewstickerEvent( XnPropertyNames::action::trigger::name::KTitleToScroll );
     }
 
 // -----------------------------------------------------------------------------
@@ -912,17 +865,22 @@
 // Draws text directly to screen when scrolling is not needed
 // -----------------------------------------------------------------------------
 //
-void CXnNewstickerAdapter::DrawStaticText( CWindowGc& aGc, const TDesC& aText ) const
+void CXnNewstickerAdapter::DrawStaticText( CWindowGc& aGc, 
+    const TDesC& aText, TBool aTruncate ) const
     { 
     HBufC* text = HBufC::New( aText.Length() + KAknBidiExtraSpacePerLine );
     
-    if( text )
+    if ( text )
         {
-        TRect rect = iNode.Rect();
+        TRect rect = iNode.Rect();        
         TInt maxLength = rect.Width();
+        
+        TChar clipChar( aTruncate ? KEllipsis : 0xFFFF );
+        
         TPtr ptr = text->Des();
         AknBidiTextUtils::ConvertToVisualAndClip(
-                aText, ptr, *iFont, maxLength, maxLength );
+                aText, ptr, *iFont, maxLength, maxLength, 
+                AknBidiTextUtils::EImplicit, clipChar );
         
         aGc.DrawText( *text, rect, iTextBaseline,
                 ( CGraphicsContext::TTextAlign )iTextAlignment );
@@ -936,9 +894,10 @@
 // Draws scrolling text to screen via marquee control
 // -----------------------------------------------------------------------------
 //
-TBool CXnNewstickerAdapter::DrawMarqueeText( CWindowGc& aGc, const TDesC& aText ) const
+TBool CXnNewstickerAdapter::DrawMarqueeText( CWindowGc& aGc, 
+    const TDesC& aText ) const
     {
-    TRect rect = iNode.Rect();
+    TRect rect( iNode.Rect() );
     
     // returns true when all loops have been executed
     return iMarqueeControl->DrawText( aGc, rect, aText, iTextBaseline,
--- a/idlehomescreen/xmluirendering/renderingplugins/xnnewstickerfactory/src/xnnewstickercontrol.cpp	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/xmluirendering/renderingplugins/xnnewstickerfactory/src/xnnewstickercontrol.cpp	Wed Jun 09 09:29:04 2010 +0300
@@ -17,13 +17,9 @@
 
 
 // INCLUDE FILES
-#include <AknUtils.h>
-#include <AknsDrawUtils.h>
-#include <AknBidiTextUtils.h>
-
 #include "xnnewstickercontrol.h"
 #include "xnnewstickeradapter.h"
-
+#include "xnproperty.h"
 
 // CONSTANTS
    
@@ -36,8 +32,9 @@
 // -----------------------------------------------------------------------------
 //
 CXnNewstickerControl::CXnNewstickerControl( CXnNewstickerAdapter* aAdapter ) :     
-    iCurrentTitleIndex( -1 ),
-    iAdapter( aAdapter )
+    iCurrentTitleIndex( KErrNotFound ),
+    iAdapter( aAdapter ), 
+    iScrollLooping( ETrue )
     {
     }
 
@@ -76,6 +73,16 @@
     }
 
 // -----------------------------------------------------------------------------
+// CXnNewstickerControl::SetScrollLooping()
+// 
+// -----------------------------------------------------------------------------
+//
+void CXnNewstickerControl::SetScrollLooping( TBool aLooping )
+    {
+    iScrollLooping = aLooping;
+    }
+
+// -----------------------------------------------------------------------------
 // CXnNewstickerControl::AppendTitleL
 // (other items were commented in a header).
 // -----------------------------------------------------------------------------
@@ -143,7 +150,7 @@
         if(count == 1)
             {
             iAdapter->Stop();
-            iCurrentTitleIndex = -1;
+            iCurrentTitleIndex = KErrNotFound;
             }
 
         UpdateTitleL( KNullDesC, aIndex );      
@@ -177,15 +184,18 @@
 // CXnNewstickerControl::LastIndexWithContent
 // -----------------------------------------------------------------------------
 //
-TInt CXnNewstickerControl::LastIndexWithContent()
+TInt CXnNewstickerControl::LastIndexWithContent() const
     {
     for( TInt i(iTitleTexts.Count()-1); i>=0; --i )
         {
-        if ( iTitleTexts[ i ]->Des().Length() > 0 )
+        const TDesC& title( *iTitleTexts[i] );
+        
+        if( title != KNullDesC() )
             {
             return i;
-            }
+            }   
         }
+    
     return KErrNotFound;
     }
 
@@ -196,7 +206,7 @@
 void CXnNewstickerControl::ClearTitles()
     {
     iAdapter->Stop();
-    iCurrentTitleIndex = -1;
+    iCurrentTitleIndex = KErrNotFound;
     // Don't delete just clear the contents
     for( TInt i=0; i < iTitleTexts.Count(); i++ )
         {
@@ -214,26 +224,13 @@
     }
 
 // -----------------------------------------------------------------------------
-// CXnNewstickerControl::SelectTitle
+// CXnNewstickerControl::CurrentTitle
 // (other items were commented in a header).
 // -----------------------------------------------------------------------------
 //
-const TDesC& CXnNewstickerControl::SelectTitle()
+const TDesC& CXnNewstickerControl::CurrentTitle() const
     {
-    if( IsVisibleTitles() ) 
-        { 
-        if( iCurrentTitleIndex < 0 || iCurrentTitleIndex >= iTitleTexts.Count() )
-            {
-            // Get the last title
-            TInt index = 
-                    GetNextTitleWithContent( iTitleTexts.Count() - 1, ETrue );
-            iCurrentTitleIndex = index;
-            }
-        
-        return Title( iCurrentTitleIndex );
-        }  
-    
-    return KNullDesC;
+    return Title( iCurrentTitleIndex );
     }
 
 // -----------------------------------------------------------------------------
@@ -241,7 +238,7 @@
 // -----------------------------------------------------------------------------
 //
 TInt CXnNewstickerControl::GetNextTitleWithContent( TInt aStartSearch, 
-        TBool aBackwards ) const
+    TBool aBackwards ) const
     {
     TInt dir = 1;
     if( aBackwards )
@@ -251,59 +248,157 @@
     
     for( TInt i = aStartSearch; i < iTitleTexts.Count() && i >= 0; i += dir )
         {
-        if( iTitleTexts[i]->Compare( KNullDesC ) != KErrNone )
+        const TDesC& title( *iTitleTexts[i] );
+        
+        if( title != KNullDesC() )
             {
             return i;
             }
         }
     
-    return aStartSearch;
+    return KErrNotFound;
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNewstickerControl::SelectTitle
+// -----------------------------------------------------------------------------
+//
+TInt CXnNewstickerControl::SelectTitle()
+    {    
+    TInt index( GetNextTitleWithContent( 0 ) );
+    
+    TInt currentIndex( iCurrentTitleIndex );
+    
+    iCurrentTitleIndex = index;
+    
+    if ( currentIndex != iCurrentTitleIndex )
+        {
+        if ( currentIndex != KErrNotFound )
+            {
+            iAdapter->ReportNewstickerEvent( 
+                XnPropertyNames::action::trigger::name::KTitleScrolled, 
+                currentIndex );        
+            }
+        
+        if ( iCurrentTitleIndex != KErrNotFound )
+            {
+            iAdapter->ReportNewstickerEvent( 
+                XnPropertyNames::action::trigger::name::KTitleToScroll, 
+                iCurrentTitleIndex );            
+            }    
+        }
+    
+    return iCurrentTitleIndex;
     }
 
 // -----------------------------------------------------------------------------
-// CXnNewstickerControl::SetCurrentTitle
+// CXnNewstickerControl::SelectNextTitle
 // -----------------------------------------------------------------------------
 //
-TBool CXnNewstickerControl::SetCurrentTitle( TBool aSetDefault )
+TBool CXnNewstickerControl::SelectNextTitle()
+    {
+    TBool ret( EFalse );
+    TInt lastIndex( iTitleTexts.Count() - 1 );
+    TInt lastIndexWithContent( LastIndexWithContent() );
+    
+    TInt currentIndex( iCurrentTitleIndex );
+                                
+    if ( lastIndexWithContent == KErrNotFound )
+        {               
+        // Loop done
+        ret = ETrue;                
+        }
+    else if ( !iScrollLooping && iCurrentTitleIndex == lastIndexWithContent )
+        {
+        // Loop done
+        ret = ETrue;
+        }        
+    else
+        {
+        if ( iCurrentTitleIndex + 1 > lastIndexWithContent )
+            {
+            // At the end, get first
+            iCurrentTitleIndex = 
+                GetNextTitleWithContent( 0 );
+            }
+        else
+            {
+            // find next index with content
+            iCurrentTitleIndex =
+                    GetNextTitleWithContent( iCurrentTitleIndex + 1 );
+            }               
+        }
+            
+    if ( ret )
+        {
+        if ( iCurrentTitleIndex != KErrNotFound )
+            {
+            iAdapter->ReportNewstickerEvent( 
+                XnPropertyNames::action::trigger::name::KTitleScrolled, 
+                iCurrentTitleIndex );            
+            }    
+        }
+    else
+        {
+        if ( currentIndex != iCurrentTitleIndex && currentIndex != KErrNotFound )
+            {
+            iAdapter->ReportNewstickerEvent( 
+                XnPropertyNames::action::trigger::name::KTitleScrolled, 
+                currentIndex );        
+            }
+        
+        if ( currentIndex != iCurrentTitleIndex && iCurrentTitleIndex != KErrNotFound )
+            {
+            iAdapter->ReportNewstickerEvent( 
+                XnPropertyNames::action::trigger::name::KTitleToScroll, 
+                iCurrentTitleIndex );            
+            }    
+        }
+              
+   return ret;
+   }
+
+// -----------------------------------------------------------------------------
+// CXnNewstickerControl::PeekNextTitle
+// -----------------------------------------------------------------------------
+//
+TPtrC CXnNewstickerControl::PeekNextTitle( TBool& aEndOfLoop ) const
     {
     TBool ret( EFalse );
     TInt lastIndex( iTitleTexts.Count() - 1 );
     TInt lastIndexWithContent = LastIndexWithContent();
+           
+    TPtrC retval( KNullDesC() );
     
-    if( aSetDefault )
-        {
-        // set last index as default
-        iCurrentTitleIndex = GetNextTitleWithContent( lastIndex, ETrue );
+    if ( lastIndexWithContent == KErrNotFound )
+        {               
+        // Loop done
+        ret = ETrue;                
         }
-    else if( iCurrentTitleIndex >= lastIndex )
+    else if ( !iScrollLooping && iCurrentTitleIndex == lastIndexWithContent )
         {
-        // if iCurrentTitleIndex is in last position start from beginning
-        iCurrentTitleIndex = GetNextTitleWithContent( 0 );
-        }
+        // Loop done
+        ret = ETrue;
+        
+        retval.Set( CurrentTitle() );
+        }        
     else
         {
         if ( iCurrentTitleIndex + 1 > lastIndexWithContent )
             {
-            // if lastIndexWithContent is creater than next item 
-            // it means all next items are empty strings
-            iCurrentTitleIndex = lastIndexWithContent;
+            // At the end, get first
+            retval.Set( Title( GetNextTitleWithContent( 0 ) ) );                
             }
         else
             {
             // find next index with content
-            iCurrentTitleIndex
-                = GetNextTitleWithContent( iCurrentTitleIndex + 1 );
-            }
+            retval.Set( Title( GetNextTitleWithContent( iCurrentTitleIndex + 1 ) ) );                    
+            }               
         }
     
-    if( iCurrentTitleIndex == lastIndexWithContent || 
-            lastIndexWithContent == KErrNotFound )
-        {
-        // loop done stop periodic timer.
-        ret = ETrue;
-        }
+    aEndOfLoop = ret;
     
-    return ret;
+    return retval;
     }
 
 // -----------------------------------------------------------------------------
@@ -312,9 +407,11 @@
 //
 TBool CXnNewstickerControl::IsVisibleTitles() const
     {
-    for( TInt i=0; i < iTitleTexts.Count(); i++ )
+    for( TInt i = 0; i < iTitleTexts.Count(); i++ )
         {
-        if( iTitleTexts[i]->Compare( KNullDesC ) != KErrNone )
+        const TDesC& title( *iTitleTexts[i] );
+        
+        if( title != KNullDesC() )
             {
             return ETrue;
             }
--- a/idlehomescreen/xmluirendering/renderingplugins/xntexteditorfactory/inc/xntexteditoradapter.h	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/xmluirendering/renderingplugins/xntexteditorfactory/inc/xntexteditoradapter.h	Wed Jun 09 09:29:04 2010 +0300
@@ -32,7 +32,7 @@
 class CXnAppUiAdapter;
 
 // CLASS DECLARATION
-class CXnTextEditorAdapter : public CXnControlAdapter
+class CXnTextEditorAdapter : public CXnControlAdapter, public MCoeControlBackground
     {
 public:
     // constructor and destructor
@@ -125,13 +125,18 @@
     */          
     void HandleResourceChange( TInt aType );
 
-private:
-    // from MCoeControlObserver
-    
     /**
-    * See MCoeControlObserver documentation
-    */
-    void HandleControlEventL( CCoeControl* aControl, TCoeEvent aEventType );
+     * See CCoeAppUiBase.
+     */
+    void HandleScreenDeviceChangedL();
+
+private: // from base classes
+
+    /**
+    * See MCoeControlBackground documentation
+    */          
+    void Draw( CWindowGc& aGc, const CCoeControl& aControl, 
+        const TRect& aRect ) const;
 
 private:
     // private constrcutors 
--- a/idlehomescreen/xmluirendering/renderingplugins/xntexteditorfactory/src/xntexteditoradapter.cpp	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/xmluirendering/renderingplugins/xntexteditorfactory/src/xntexteditoradapter.cpp	Wed Jun 09 09:29:04 2010 +0300
@@ -57,12 +57,15 @@
     ESplitInputEnabled = 1,   
     ESplitInputOpen = 2,
     ESplitInputEditorInStack = 4,
+    EScreenDeviceChanged = 8
     };
 
 _LIT8( KCpsPublishing, "cpspublishing" );
 _LIT8( KMaxLineAmount, "max-line-amount" );
 _LIT8( KMaxCharAmount, "max-char-amount" );
 _LIT8( KEnablePartialInput, "splitinputenabled" );
+_LIT8( KSplitScreenEnabledTrigger , "splitscreenenabled" );
+_LIT8( KSplitScreenDisabledTrigger, "splitscreendisabled" );
 
 _LIT( KEnterChar, "\x2029" );
 
@@ -194,6 +197,7 @@
 
     iEditor->SetContainerWindowL( *iParent );
     iEditor->ConstructL( 0, maxChars, maxChars, iMaxLines );
+    iEditor->SetBackground( this );
     
     // Set allowed input modes
     iEditor->SetAknEditorAllowedInputModes( EAknEditorAllInputModes );
@@ -213,8 +217,6 @@
                                      
     // Set numeric keymap
     iEditor->SetAknEditorNumericKeymap( EAknEditorPlainNumberModeKeymap );
-    
-    iEditor->SetSuppressBackgroundDrawing( ETrue );
 
     // Enable partial Screen
     CXnProperty* enablepartialinput( iNode.GetPropertyL( KEnablePartialInput ) );
@@ -402,9 +404,10 @@
 // Draws the editor component
 // -----------------------------------------------------------------------------
 //
-void CXnTextEditorAdapter::Draw( const TRect& aRect ) const
-    {                           
-    CXnControlAdapter::Draw( aRect );
+void CXnTextEditorAdapter::Draw( const TRect& /*aRect*/ ) const
+    { 
+    // Do nothing. 
+    // Background is drawn through MCoeControlBackground of CEikEdwin. 
     }
 
 // -----------------------------------------------------------------------------
@@ -421,6 +424,15 @@
             {
             iUiEngine->EnablePartialTouchInput( iNode, ETrue );
             SetFlag( iSplitInputFlags, ESplitInputOpen );
+            if ( !IsFlagSet( iSplitInputFlags, EScreenDeviceChanged ) )
+                {
+                TRAP_IGNORE( iNode.ReportTriggerEventL( KSplitScreenEnabledTrigger, 
+                    KNullDesC8, KNullDesC8) );
+                }
+            else
+                {
+                ClearFlag( iSplitInputFlags, EScreenDeviceChanged );
+                }
             }
         }    
     
@@ -431,41 +443,58 @@
             iUiEngine->EnablePartialTouchInput( iNode, EFalse );
             ClearFlag( iSplitInputFlags, ESplitInputOpen );
             
-            // If editor is not focused anymore, remove if from stack
-            CXnNodePluginIf* focusedNode( NULL );
-            TRAP_IGNORE( focusedNode = iUiEngine->FocusedNodeL() );
-            if( focusedNode != &iNode && 
-                IsFlagSet( iSplitInputFlags, ESplitInputEditorInStack ) )
+            // Note that after orientation switch, split screen is first closed and  
+            // then opened again. Therefore these must be discarded
+            if ( !IsFlagSet( iSplitInputFlags, EScreenDeviceChanged ) )
                 {
-                iAppui->RemoveFromStack( iEditor );
-                iEditor->SetFocus( EFalse );
-                ClearFlag( iSplitInputFlags, ESplitInputEditorInStack );
-
-                // Forward keys to phone again    
-                RProperty::Set( KPSUidAiInformation,            
-                                KActiveIdleForwardNumericKeysToPhone,
-                                EPSAiForwardNumericKeysToPhone );
+                TRAP_IGNORE( iNode.ReportTriggerEventL( KSplitScreenDisabledTrigger, 
+                    KNullDesC8, KNullDesC8) );
+            
+                // If editor is not focused anymore, remove if from stack
+                CXnNodePluginIf* focusedNode( NULL );
+                TRAP_IGNORE( focusedNode = iUiEngine->FocusedNodeL() );
+                if( focusedNode != &iNode && 
+                    IsFlagSet( iSplitInputFlags, ESplitInputEditorInStack ) )
+                    {
+                    iAppui->RemoveFromStack( iEditor );
+                    iEditor->SetFocus( EFalse );
+                    ClearFlag( iSplitInputFlags, ESplitInputEditorInStack );
+    
+                    // Forward keys to phone again    
+                    RProperty::Set( KPSUidAiInformation,            
+                                    KActiveIdleForwardNumericKeysToPhone,
+                                    EPSAiForwardNumericKeysToPhone );
+                    }
                 }
             }
         }
     CCoeControl::HandleResourceChange( aType );
     }
-    
+
 // -----------------------------------------------------------------------------
-// CXnTextEditorAdapter::HandleControlEventL
-// 
+// CXnTextEditorAdapter::HandleScreenDeviceChangedL
+//
 // -----------------------------------------------------------------------------
-//    
-void CXnTextEditorAdapter::HandleControlEventL( CCoeControl* aControl, 
-    TCoeEvent aEventType )
+//
+void CXnTextEditorAdapter::HandleScreenDeviceChangedL()
     {
-    if ( aControl == iEditor )
+    if( IsFlagSet( iSplitInputFlags, ESplitInputOpen ) )
         {
-        // If background drawing is suppressed, then we need to call draw here
-        if ( aEventType == EEventStateChanged )
-            {
-            DrawNow();                                    
-            }        
+        SetFlag( iSplitInputFlags, EScreenDeviceChanged );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// From MCoeControlBackground
+// CXnTextEditorAdapter::Draw
+// -----------------------------------------------------------------------------
+//
+void CXnTextEditorAdapter::Draw( CWindowGc& aGc, const CCoeControl& aControl, 
+    const TRect& aRect) const
+    {
+    if( &aControl == iEditor )
+        {
+        CXnControlAdapter::Draw( aRect, aGc );    
         }
     }
 
--- a/idlehomescreen/xmluirendering/uiengine/inc/xnviewcontroladapter.h	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/inc/xnviewcontroladapter.h	Wed Jun 09 09:29:04 2010 +0300
@@ -117,6 +117,8 @@
     CXnNodePluginIf& iNode;
     /** AppUi */
     CXnAppUiAdapter& iAppUi;
+    /** HS foreground status*/
+    MXnUiStateObserver::TForegroundStatus iForegroundStatus;
     };
     
 #endif // _XNVIEWCONTROLADAPTER_H
--- a/idlehomescreen/xmluirendering/uiengine/src/xnbackgroundmanager.cpp	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnbackgroundmanager.cpp	Wed Jun 09 09:29:04 2010 +0300
@@ -44,6 +44,7 @@
 #include <StringLoader.h>
 #include <aknnotewrappers.h>
 #include <bautils.h>
+#include <UTF.h>
 
 #include <AknsUtils.h>
 #include <AknsDrawUtils.h>
@@ -103,34 +104,32 @@
     }
 
 // -----------------------------------------------------------------------------
-// CreateSkinBitmapL
+// CreateBitmapFromColorL
+// Creates a bitmap object with the given size and fill color
 // -----------------------------------------------------------------------------
 //
-CFbsBitmap* CreateSkinBitmapL( TAknsItemID aId, TRect aRect )
+static CFbsBitmap* CreateBitmapFromColorL( TSize aSize, TRgb aColor )
     {
     CFbsBitmap* newBitmap = new ( ELeave ) CFbsBitmap;
-    User::LeaveIfError( newBitmap->Create( aRect.Size(), EColor16M ) );
+    newBitmap->Create( aSize, EColor16M );
     CleanupStack::PushL( newBitmap );
-            
+
     CFbsBitmapDevice* bitmapDev = CFbsBitmapDevice::NewL( newBitmap );
     CleanupStack::PushL( bitmapDev );
 
-    CBitmapContext* bc( NULL );
-    User::LeaveIfError( bitmapDev->CreateBitmapContext( bc ) );
+    CFbsBitGc* bc = NULL;
+    User::LeaveIfError( bitmapDev->CreateContext( bc ) );
     CleanupStack::PushL( bc );
 
-    CAknsBasicBackgroundControlContext* context = 
-        CAknsBasicBackgroundControlContext::NewL( aId, aRect, EFalse );
-    CleanupStack::PushL( context );
+    bc->SetBrushColor( aColor );
+    bc->Clear(); // area is filled with the brush color
 
-    AknsDrawUtils::Background( AknsUtils::SkinInstance(),
-        context, static_cast< CWindowGc& >( *bc ), aRect );
-
-    CleanupStack::PopAndDestroy( 3, bitmapDev );
+    CleanupStack::PopAndDestroy( bc );
+    CleanupStack::PopAndDestroy( bitmapDev );
     CleanupStack::Pop( newBitmap );
     return newBitmap;
     }
-
+ 
 // ============================ MEMBER FUNCTIONS ===============================
 
 // -----------------------------------------------------------------------------
@@ -329,7 +328,9 @@
 void CXnBackgroundManager::HandleNotifyDisk( TInt /*aError*/, 
     const TDiskEvent& aEvent )              
     {
-    if( aEvent.iType == MDiskNotifyHandlerCallback::EDiskStatusChanged )
+    if( aEvent.iType == MDiskNotifyHandlerCallback::EDiskStatusChanged || 
+        aEvent.iType == MDiskNotifyHandlerCallback::EDiskAdded  ||  
+        aEvent.iType == MDiskNotifyHandlerCallback::EDiskRemoved )
         {
         if( !( aEvent.iInfo.iDriveAtt & KDriveAttInternal ) ) 
             {        
@@ -530,11 +531,18 @@
     // Save wallpaper to HSPS
     if( iType == EPageSpecific )
         {
-        TBuf8<KMaxFileName> wallpaper8;
         CXnViewData& viewData( iViewManager.ActiveViewData() );
-        wallpaper8.Copy( viewData.WallpaperImagePath() );    
-        SetSettingPropertyL( viewData.PluginId(), KWallpaper,
-                KPath, wallpaper8 );
+        
+        HBufC8* pUtf8String = CnvUtfConverter::ConvertFromUnicodeToUtf8L( viewData.WallpaperImagePath() );
+        CleanupStack::PushL( pUtf8String );
+        
+        SetSettingPropertyL( viewData.PluginId(),
+                            KWallpaper,
+                            KPath,
+                            *pUtf8String );
+        
+        CleanupStack::PopAndDestroy( pUtf8String );
+        pUtf8String = NULL;
         }
     else
         {
@@ -1156,16 +1164,23 @@
     TRect spRect;
     AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EStatusPane, spRect );
     
-    iSpBitmap = CreateSkinBitmapL( KAknsIIDQsnBgScreenIdle, spRect );
+    MAknsSkinInstance* skinInstance( AknsUtils::SkinInstance() );
+
+    // Get Homescreen status area mask color (EAknsCIQsnOtherColorsCG23)
+    TRgb color;
+    User::LeaveIfError( AknsUtils::GetCachedColor( skinInstance, color, 
+        KAknsIIDQsnOtherColors, EAknsCIQsnOtherColorsCG23 ) );
+
+    iSpBitmap = CreateBitmapFromColorL( spRect.Size(), color );
     
     if ( Layout_Meta_Data::IsLandscapeOrientation() )
         {
-        iSpMask = AknsUtils::CreateBitmapL( AknsUtils::SkinInstance(),
+        iSpMask = AknsUtils::CreateBitmapL( skinInstance,
             KAknsIIDQgnGrafBgLscTopMaskIcon );
         }
     else
         {
-        iSpMask = AknsUtils::CreateBitmapL( AknsUtils::SkinInstance(),
+        iSpMask = AknsUtils::CreateBitmapL( skinInstance,
             KAknsIIDQgnGrafBgPrtTopMaskIcon );        
         }
     
--- a/idlehomescreen/xmluirendering/uiengine/src/xncomposer.cpp	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/src/xncomposer.cpp	Wed Jun 09 09:29:04 2010 +0300
@@ -17,6 +17,7 @@
 
 // System includes
 #include <s32file.h>
+#include <UTF.h>
 
 // User includes
 #include "xncomposer.h"
@@ -60,7 +61,9 @@
 // --------------------------------------------------------------------------
 //
 static HBufC* ItemValueL( CHspsConfiguration& aConfiguration, 
-    const TDesC8& aItemId, const TDesC8& aName )
+    const TDesC8& aItemId,
+    const TDesC8& aName,
+    const TBool aUseUtfConversion = EFalse )
     {
     HBufC* ret = NULL;
 
@@ -86,8 +89,16 @@
                 
                 if( property->Name() == aName )
                     {
-                    ret = HBufC::NewL( property->Value().Length() );
-                    ret->Des().Copy( property->Value() );
+                    if( aUseUtfConversion )
+                        {
+                        ret = CnvUtfConverter::ConvertToUnicodeFromUtf8L( property->Value() );
+                        }
+                    else
+                        {
+                        ret = HBufC::NewL( property->Value().Length() );
+                        ret->Des().Copy( property->Value() );
+                        }
+                    
                     break;
                     }
                 }            
@@ -639,7 +650,10 @@
         // if page specific wallpaper feature is enabled
         if( bgManager.WallpaperType() == CXnBackgroundManager::EPageSpecific )
             {
-            HBufC* bgImage = ItemValueL( *configuration, KWallpaper, KPath );
+            HBufC* bgImage = ItemValueL( *configuration,
+                                         KWallpaper,
+                                         KPath,
+                                         ETrue );
             if ( bgImage )
                 {
                 CleanupStack::PushL( bgImage );
--- a/idlehomescreen/xmluirendering/uiengine/src/xncontroladapterimpl.cpp	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/src/xncontroladapterimpl.cpp	Wed Jun 09 09:29:04 2010 +0300
@@ -74,6 +74,8 @@
 
 const TInt KDragThreshold = 20; // pixels
 
+const TReal KEps( 3e-16 ); // proximite EPS value for double FP numbers
+
 // LOCAL FUNCTION PROTOTYPES
 static TRgb ConvertHslToRgb( TInt aHue, TInt aSaturation, TInt aLightness );
 static void ConvertRgbToHsl( TRgb aRGB, TUint& aHue, TUint& aSaturation,
@@ -3433,6 +3435,42 @@
     }
 
 // -----------------------------------------------------------------------------
+// Calculates scaled bitmap size (rect)
+// -----------------------------------------------------------------------------
+//
+void CalculateScaledBitmapRect( TSize& aScaledSize, const TSize& aDrawSize,
+    const TSize& aImageSize )    
+    {
+    //no scaling as default
+    TReal scaleRatio( 1.0f ); 
+    aScaledSize.SetSize( aDrawSize.iWidth, aDrawSize.iHeight );
+    
+    //If any dimension is 0, then we do not bother to scale
+    if ( aDrawSize.iWidth == 0 || aDrawSize.iHeight == 0 )
+        {
+        return;
+        }
+    
+    TReal xRatio = 
+        ( ( TReal )aImageSize.iWidth / ( TReal )aDrawSize.iWidth );
+    TReal yRatio = 
+        ( ( TReal )aImageSize.iHeight / ( TReal )aDrawSize.iHeight );
+    //Find out appropriate scaling factor
+    xRatio > yRatio ? ( scaleRatio = xRatio ) : ( scaleRatio = yRatio );
+    
+    // ratio is too small (can be considered as division by zero)
+    if ( scaleRatio < KEps && scaleRatio > -KEps )
+        {
+        return;
+        }
+    
+    // Otherwise scaling can be done
+    aScaledSize.iWidth = ( TInt )( ( TReal )aImageSize.iWidth / scaleRatio );
+    aScaledSize.iHeight = 
+        ( TInt )( ( TReal )aImageSize.iHeight / scaleRatio );
+    }
+
+// -----------------------------------------------------------------------------
 // BuildSwipeTriggerNodeLC
 // Build trigger node for swipe event
 // -----------------------------------------------------------------------------
@@ -4479,7 +4517,7 @@
         return;
         }
 
-    aGc.SetClippingRect( aRect );
+//    aGc.SetClippingRect( aRect );
 #ifdef _XN_DEBUG_
     CXnComponent* comp = Component();
     CXnNode& node = comp->Node()->Node();
@@ -4495,7 +4533,7 @@
     aGc.DrawRect( contentRect );
 #endif
     TRAP_IGNORE( DoDrawL( aRect, aGc ) );
-    aGc.CancelClippingRect();
+//    aGc.CancelClippingRect();
     }
 
 // -----------------------------------------------------------------------------
@@ -4969,14 +5007,28 @@
 
     TRect bitmapRect = rect;
     bitmapRect.Move( -rect.iTl.iX, -rect.iTl.iY );
+    // Finds appropriate method of scaling
     if ( AknIconUtils::IsMifIcon( iContentBitmap ) )
         {
         if ( preserveAspectRatio )
             {
             AknIconUtils::SetSize(
-                iContentBitmap, bitmapRect.Size(), EAspectRatioPreserved );
+                iContentBitmap, bitmapRect.Size(), 
+                EAspectRatioPreservedAndUnusedSpaceRemoved );
             AknIconUtils::SetSize(
-                iContentMask, bitmapRect.Size(), EAspectRatioPreserved );
+                iContentMask, bitmapRect.Size(), 
+                EAspectRatioPreservedAndUnusedSpaceRemoved );
+            // In some cases resizing might fail with previous settings
+            if ( iContentBitmap->SizeInPixels().iHeight == 0 || 
+                iContentBitmap->SizeInPixels().iWidth == 0 )
+                {
+                AknIconUtils::SetSize(
+                    iContentBitmap, bitmapRect.Size(), 
+                    EAspectRatioPreserved );
+                AknIconUtils::SetSize(
+                    iContentMask, bitmapRect.Size(), 
+                    EAspectRatioPreserved );
+                }
             }
         else
             {
@@ -4985,6 +5037,20 @@
             AknIconUtils::SetSize(
                 iContentMask, bitmapRect.Size(), EAspectRatioNotPreserved );
             }
+        // Set a new bitmap size
+        bitmapRect.SetSize( iContentBitmap->SizeInPixels() );
+        }
+    else
+        {
+        if ( preserveAspectRatio )
+            {
+            TSize newBitmapSize;
+            // scaling is done in bitmap drawing routine, here only the
+            // sacling rect is calculated
+            CalculateScaledBitmapRect( newBitmapSize, rect.Size(), 
+                iContentBitmap->SizeInPixels() );
+            bitmapRect.SetSize( newBitmapSize );
+            }
         }
     
     // Calculate new point to start draw 
@@ -4993,6 +5059,8 @@
         ( rect.Height() - bitmapRect.Height() ) / 2;
     rect.iTl.iX +=
         ( rect.Width() - bitmapRect.Width() ) / 2;
+    // sets a new size to draw
+    rect.SetSize( bitmapRect.Size() );
     
     if ( iContentBitmap && iContentMask )
         {
--- a/idlehomescreen/xmluirendering/uiengine/src/xneditmode.cpp	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/src/xneditmode.cpp	Wed Jun 09 09:29:04 2010 +0300
@@ -807,10 +807,17 @@
         
         StopDragL();               
         }
+   
+    UpdateScreen();
+    }
 
-    SetRect( iUiEngine.ClientRect() );
-                       
-    UpdateScreen();
+// -----------------------------------------------------------------------------
+// CXnEditMode::HandleScreenDeviceChangedL
+// -----------------------------------------------------------------------------
+//
+void CXnEditMode::SetClientRect( TRect aRect )
+    {
+    SetRect( aRect );
     }
 
 // -----------------------------------------------------------------------------
--- a/idlehomescreen/xmluirendering/uiengine/src/xneffectmanager.cpp	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/src/xneffectmanager.cpp	Wed Jun 09 09:29:04 2010 +0300
@@ -366,16 +366,30 @@
         
         iBgEffect = ETrue;
         }
-                  
+    
+    // because of changes in nga end has to call here. Effects below are
+    // grouped and those will be triggered when calling GfxTransEffect::EndGroup
     if ( iLandscape )
         {
         GfxTransEffect::Begin( thisView, KGfxControlActionDisappearLsc );
         GfxTransEffect::Begin( otherView, KGfxControlActionAppearLsc );
+        
+        GfxTransEffect::SetDemarcation( otherView, otherView->Position() );
+        GfxTransEffect::End( otherView );
+            
+        GfxTransEffect::SetDemarcation( thisView, thisView->Position() );
+        GfxTransEffect::End( thisView );
         }
     else
         {
         GfxTransEffect::Begin( thisView, KGfxControlActionDisappearPrt );
         GfxTransEffect::Begin( otherView, KGfxControlActionAppearPrt );
+        
+        GfxTransEffect::SetDemarcation( otherView, otherView->Position() );
+        GfxTransEffect::End( otherView );
+            
+        GfxTransEffect::SetDemarcation( thisView, thisView->Position() );
+        GfxTransEffect::End( thisView );
         }    
     
     return ETrue;
@@ -396,7 +410,7 @@
         }
     
     CXnControlAdapter* thisView( aThis.ViewNode()->Control() );                             
-    CXnControlAdapter* otherView( aOther.ViewNode()->Control() ); 
+    CXnControlAdapter* otherView( aOther.ViewNode()->Control() );
     
     if ( iBgEffect )
         {    
@@ -405,17 +419,11 @@
         GfxTransEffect::SetDemarcation( bg, bg->Position() );
         GfxTransEffect::End( bg );        
         }
-        
-    GfxTransEffect::SetDemarcation( thisView, thisView->Position() );
-    GfxTransEffect::End( thisView );
-    
-    GfxTransEffect::SetDemarcation( otherView, otherView->Position() );
-    GfxTransEffect::End( otherView );                     
                             
     GfxTransEffect::EndGroup( iGroupId );
     
+    GfxTransEffect::Deregister( otherView );
     GfxTransEffect::Deregister( thisView );
-    GfxTransEffect::Deregister( otherView );    
     }
 
 // -----------------------------------------------------------------------------
--- a/idlehomescreen/xmluirendering/uiengine/src/xnlistquerydialogadapter.cpp	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnlistquerydialogadapter.cpp	Wed Jun 09 09:29:04 2010 +0300
@@ -344,6 +344,7 @@
     
     if ( dialog->RunLD() )
         {
+        iDialog = NULL;
         ActivateItemL( selectedIndex );
         }            
            
--- a/idlehomescreen/xmluirendering/uiengine/src/xnnodeimpl.cpp	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnnodeimpl.cpp	Wed Jun 09 09:29:04 2010 +0300
@@ -61,6 +61,8 @@
 _LIT8( KMenuBar, "menubar" );
 _LIT8( KTextEditor, "texteditor" );
 _LIT8( KPlugin, "plugin" );
+_LIT8( KTemplate, "template" );
+_LIT8( KIndex, "index" );
 
 _LIT8( KActionsHandler, "actionshandler" );
 
@@ -424,9 +426,75 @@
     TBool aInformChange = EFalse );
 static TBool MatchTitleScrollTriggerL(
     CXnNode& aEventData, CXnDomNode& aTriggerNode );
+static CXnDomNode* GetTemplateEventL( 
+    const TDesC8& aTemplate, 
+    CXnNode& aNode, 
+    CXnDomNode& aEventNode );    
 
 // ============================= LOCAL FUNCTIONS ===============================
-
+// -----------------------------------------------------------------------------
+// GetTemplateEventL
+// -----------------------------------------------------------------------------
+//
+static CXnDomNode* GetTemplateEventL( const TDesC8& aTemplate, CXnNode& aNode, 
+    CXnDomNode& aEventNode )
+    {
+    CXnDomNode* retval( NULL );
+    
+    if ( aTemplate == KIndex() )
+        {
+        _LIT8( KTemplateIndex, "(#)" );
+        
+        const TDesC8& eventString( aEventNode.AttributeValue( KName ) );
+        
+        TInt index( eventString.Find( KTemplateIndex ) );
+        
+        CXnNode* parent( aNode.Parent() );
+        
+        if ( index != KErrNotFound && parent )
+            {                                
+            RPointerArray< CXnNode >& siblings( parent->Children() );
+            
+            TInt itemindex( siblings.Find( &aNode ) );
+            
+            if ( itemindex != KErrNotFound )
+                {
+                TBuf8< 4 > buf;
+                buf.AppendNum( itemindex );
+    
+                CXnDomNode* clone( 
+                    aEventNode.CloneL( *aEventNode.StringPool() ) );
+                CleanupStack::PushL( clone );
+                
+                HBufC8* templateString = 
+                    HBufC8::NewLC( eventString.Length() + 4 );
+
+                TPtr8 ptr( templateString->Des() );
+                
+                ptr.Copy( eventString );
+                ptr.Delete( index + 1, 1 );                    
+                ptr.Insert( index + 1, buf );
+                                
+                CXnDomAttribute* attribute = static_cast< CXnDomAttribute* > 
+                    ( clone->AttributeList().FindByName( 
+                        XnPropertyNames::action::event::KName ) );
+                                                
+                if ( attribute )
+                    {                                        
+                    attribute->SetValueL( ptr );
+                    }
+                                
+                CleanupStack::PopAndDestroy( templateString );
+                
+                CleanupStack::Pop( clone );
+                retval = clone;
+                }
+            }    
+        }
+    
+    return retval;
+    }
+    
 // -----------------------------------------------------------------------------
 // ResolveEffectId
 // -----------------------------------------------------------------------------
@@ -2719,8 +2787,28 @@
     {       
     CXnAppUiAdapter& adapter( aEngine.AppUiAdapter() );
     
-    adapter.HandleXuikonEventL(
-        aNode.AppIfL(), aEventData.AppIfL(), aTriggerNode, aEventNode );
+    // Check if event is template
+    const TDesC8& templateEvent( aEventNode.AttributeValue( KTemplate ) );
+    
+    if ( templateEvent != KNullDesC8() )
+        {
+        CXnDomNode* event( 
+            GetTemplateEventL( templateEvent, aNode, aEventNode ) );
+        CleanupStack::PushL( event );
+
+        if ( event )
+            {
+            adapter.HandleXuikonEventL(
+                aNode.AppIfL(), aEventData.AppIfL(), aTriggerNode, *event );            
+            }
+        
+        CleanupStack::PopAndDestroy( event );        
+        }
+    else
+        {
+        adapter.HandleXuikonEventL(
+            aNode.AppIfL(), aEventData.AppIfL(), aTriggerNode, aEventNode );    
+        }
     }
 
 // -----------------------------------------------------------------------------
--- a/idlehomescreen/xmluirendering/uiengine/src/xnuiengineimpl.cpp	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnuiengineimpl.cpp	Wed Jun 09 09:29:04 2010 +0300
@@ -8283,19 +8283,19 @@
                         {
                         rect = node->BorderRect();
                         }
-                    if ( adapter->Rect() != rect )
+                    
+                    // popup calculates its position based on _s60-position-hint property
+                    // This needs to be done even if popup's rect has not been changed
+                    if( node->Type()->Type() == KPopUpNodeName )
+                        {
+                        adapter->DoHandlePropertyChangeL();
+                        }
+                    else if ( adapter->Rect() != rect )
                         {
                         AddToRedrawListL( node, rect );
                         
-                        // popup calculates its position based on _s60-position-hint property
-                        if( node->Type()->Type() == KPopUpNodeName )
-                            {
-                            adapter->DoHandlePropertyChangeL();
-                            }
-                        else
-                            {
-                            adapter->SetRect( rect );                        
-                            }
+                        adapter->SetRect( rect );                        
+
                         CXnProperty* prop = node->GetPropertyL(
                             XnPropertyNames::common::KSizeAware );
                         if ( prop && prop->StringValue() ==
@@ -9565,6 +9565,8 @@
         UpdateInternalUnits( iHorizontalUnitInPixels, iVerticalUnitInPixels,
             iClientRect );
         
+        iEditMode->SetClientRect( aRect );
+
         if ( aDrawNow )
             {
             RootNode()->SetDirtyL();
--- a/idlehomescreen/xmluirendering/uiengine/src/xnviewadapter.cpp	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnviewadapter.cpp	Wed Jun 09 09:29:04 2010 +0300
@@ -557,26 +557,27 @@
         {
         return;
         }
-
-    // Get previous container and then deactivate it    
-    const CXnViewData* previous( iContainer ); 
-    const CXnViewData& active( iAppUiAdapter.ViewManager().ActiveViewData() );
     
-    DeactivateContainerL( EFalse );
-
     if ( iFlags.IsClear( EIsActivated ) )
         {
         // Some other view than this in this appui is currently active,
         // postpone container activation
         return;
         }
+ 
+    const CXnViewData& active( iAppUiAdapter.ViewManager().ActiveViewData() );
+    
+    CXnEffectManager* mgr( iAppUiAdapter.EffectManager() );
+    
+    CleanupStack::PushL( TCleanupItem( CleanupEffect, mgr ) );
+    
+    TBool started(
+        mgr->BeginActivateViewEffect( active, aContainer, aEffect ) );
+    
+    DeactivateContainerL( EFalse );
         
     // Update  
     iContainer = &aContainer;
-        
-    CXnEffectManager* mgr( iAppUiAdapter.EffectManager() );
-    
-    CleanupStack::PushL( TCleanupItem( CleanupEffect, mgr ) );
     
     // Disable layout and redraw until container activation is done
     iAppUiAdapter.UiEngine().DisableRenderUiLC();
@@ -620,18 +621,7 @@
         {
         EnterEditStateL( aContainer, EFalse );                                
         }
-   
-    TBool started(
-        mgr->BeginActivateViewEffect( active, aContainer, aEffect ) );
-            
-    if ( previous )
-        {
-        CXnControlAdapter* previousControl( 
-            previous->Node()->LayoutNode()->Control() );
-                                      
-        previousControl->MakeVisible( EFalse );
-        }
-              
+    
     CXnControlAdapter* adapter( node->Control() );
     adapter->MakeVisible( ETrue );
            
@@ -907,6 +897,11 @@
             else
                 {
                 controls[i]->EnterPowerSaveModeL();
+                if ( controls[i]->LongTapDetector() && 
+                        controls[i]->LongTapDetector()->IsActive() )
+                    {
+                    controls[i]->LongTapDetector()->Cancel();
+                    }
                 }               
             }
             
--- a/idlehomescreen/xmluirendering/uiengine/src/xnviewcontroladapter.cpp	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnviewcontroladapter.cpp	Wed Jun 09 09:29:04 2010 +0300
@@ -41,11 +41,17 @@
     const TPointerEvent& aEvent ) 
     {       
     if ( aControl )
-        {                              
+        {
         CCoeControl* grabber( aControl->GrabbingComponent() );
         
         if ( grabber )
-            {                        
+            {
+            // cancel longtap detector before reset grabbing.
+            CAknLongTapDetector* detector = aControl->LongTapDetector();
+            if ( detector && detector->IsActive() )
+                {
+                detector->Cancel();
+                }
             grabber->IgnoreEventsUntilNextPointerUp();
             
             aControl->CCoeControl::HandlePointerEventL( aEvent );
@@ -53,7 +59,7 @@
             CXnControlAdapter* adapter = 
                 dynamic_cast< CXnControlAdapter* >( grabber );
             
-            ResetGrabbingL( adapter, aEvent );            
+            ResetGrabbingL( adapter, aEvent );
             }        
         }    
     }
@@ -182,13 +188,16 @@
 void CXnViewControlAdapter::HandlePointerEventL( 
     const TPointerEvent& aPointerEvent )
     {    
-    iAppUi.UiEngine().DisableRenderUiLC();
+    if ( iForegroundStatus != EBackground )
+        {
+        iAppUi.UiEngine().DisableRenderUiLC();
+            
+        CXnControlAdapter::HandlePointerEventL( aPointerEvent );
         
-    CXnControlAdapter::HandlePointerEventL( aPointerEvent );
-    
-    iAppUi.UiEngine().RenderUIL();
-    
-    CleanupStack::PopAndDestroy();    
+        iAppUi.UiEngine().RenderUIL();
+        
+        CleanupStack::PopAndDestroy();    
+        }
     }
 
 // -----------------------------------------------------------------------------
@@ -215,6 +224,7 @@
 //
 void CXnViewControlAdapter::NotifyForegroundChanged( TForegroundStatus aStatus )
     {
+    iForegroundStatus = aStatus;
     if ( aStatus == EBackground || aStatus == EPartialForeground )
         {
         ResetGrabbing();
--- a/idlehomescreen/xmluirendering/uiengine/src/xnwidgetextensionadapter.cpp	Tue May 25 12:29:32 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnwidgetextensionadapter.cpp	Wed Jun 09 09:29:04 2010 +0300
@@ -22,6 +22,9 @@
 #include <gfxtranseffect/gfxtranseffect.h>
 #include <akntransitionutils.h>
 #include <AknPriv.hrh>
+#ifdef RD_TACTILE_FEEDBACK
+#include <touchfeedback.h>
+#endif // RD_TACTILE_FEEDBACK
 
 // User includes
 #include "xnwidgetextensionadapter.h"
@@ -147,14 +150,12 @@
             iPermanent = ETrue;
             }        
         }
-    else
+     
+    if ( Window().SetTransparencyAlphaChannel() == KErrNone )
         {
-        if ( Window().SetTransparencyAlphaChannel() == KErrNone )
-            {
-            Window().SetBackgroundColor( ~0 );
-            }                     
-        }
-    
+        Window().SetBackgroundColor( ~0 );
+        }                     
+       
     iUiEngine = iNode.Node().UiEngine();
     CXnControlAdapter::ConstructL( iNode );
     
@@ -253,10 +254,11 @@
     if ( iPopup )
         {        
         // check if the tap was inside of popup
-        TRect popupRect = this->Rect();
-        popupRect.Move(this->Position() );
-        TBool isInPopupWindow = popupRect.Contains(
-                aPointerEvent.iParentPosition );
+        TRect popupRect( Rect() );
+        popupRect.Move( Position() );
+        
+        TBool isInPopupWindow( popupRect.Contains(
+                aPointerEvent.iParentPosition ) );
 
         if ( !isInPopupWindow )
             {            
@@ -267,15 +269,17 @@
             
             if ( parentIdProp )
                 {                
-                const TDesC8& parentIdVal = parentIdProp->StringValue();
-                CXnNode* parentN(iUiEngine->FindNodeByIdL( parentIdVal,
-                        iNode.Node().Namespace() ) );
+                const TDesC8& id( parentIdProp->StringValue() );
+                
+                CXnNode* parent( 
+                    iUiEngine->FindNodeByIdL( id, iNode.Node().Namespace() ) );
+                        
                 
-                if ( parentN )
+                if ( parent )
                     {
-                    TRect clientRect =
-                            static_cast<CEikAppUi&> ( *iAppUiAdapter ).ClientRect();
-                    TRect parentRect = parentN->Rect();
+                    TRect clientRect( iAppUiAdapter->ClientRect() );
+                            
+                    TRect parentRect( parent->Rect() );
                     parentRect.Move( clientRect.iTl );
                     
                     if ( !parentRect.Contains( aPointerEvent.iParentPosition ) )
@@ -284,6 +288,14 @@
                         // we can close it
                         if ( aPointerEvent.iType == TPointerEvent::EButton1Down )
                             {
+#ifdef RD_TACTILE_FEEDBACK                    
+                            MTouchFeedback* fb( MTouchFeedback::Instance() );
+    
+                            if ( fb )
+                                {
+                                fb->InstantFeedback( ETouchFeedbackBasic );
+                                }                        
+#endif                    
                             HidePopupL();
                             return;
                             }
@@ -294,17 +306,30 @@
                         // we pass the event to it after
                         // recalculating the taping point
                         TPointerEvent newPointerEvent;
+                        
                         newPointerEvent.Copy( aPointerEvent );
+                        
                         newPointerEvent.iPosition = TPoint(
-                                 aPointerEvent.iParentPosition - clientRect.iTl );
-                        parentN->Control()->HandlePointerEventL( newPointerEvent );
-                        return;
+                             aPointerEvent.iParentPosition - clientRect.iTl );
+                        
+                        parent->Control()->HandlePointerEventL( newPointerEvent );                        
                         }
                     }
                 }
             else
                 {
-                HidePopupL();
+#ifdef RD_TACTILE_FEEDBACK
+                if ( aPointerEvent.iType == TPointerEvent::EButton1Down )
+                    {
+                    MTouchFeedback* fb( MTouchFeedback::Instance() );
+
+                    if ( fb )
+                        {
+                        fb->InstantFeedback( ETouchFeedbackBasic );
+                        }                        
+#endif                                
+                    HidePopupL();                    
+                    }
                 }
             }
         }
@@ -709,11 +734,6 @@
             DrawableWindow()->FadeBehind( ETrue );
             }
         }
-    
-    else if( iPopup && aType == KAknSplitInputDisabled )
-        {
-        TRAP_IGNORE( HidePopupL() );
-        }
     }
 
 //  End of File  
--- a/menufw/hierarchynavigator/hnengine/group/bld.inf	Tue May 25 12:29:32 2010 +0300
+++ b/menufw/hierarchynavigator/hnengine/group/bld.inf	Wed Jun 09 09:29:04 2010 +0300
@@ -23,7 +23,6 @@
 ../inc/hncontrollerinterface.h      |../../../inc/hncontrollerinterface.h
 ../inc/hnengine.h                   |../../../inc/hnengine.h
 ../inc/hninterface.h                |../../../inc/hninterface.h
-../inc/hninstallnotifier.h          |../../../inc/hninstallnotifier.h
 ../inc/hneventgenerator.h           |../../../inc/hneventgenerator.h
 ../inc/menudebug.h                  |../../../inc/menudebug.h
 
--- a/menufw/hierarchynavigator/hnengine/group/hnengine.mmp	Tue May 25 12:29:32 2010 +0300
+++ b/menufw/hierarchynavigator/hnengine/group/hnengine.mmp	Wed Jun 09 09:29:04 2010 +0300
@@ -32,7 +32,6 @@
 
 SOURCEPATH      ../src
 SOURCE          hnengine.cpp
-SOURCE          hninstallnotifier.cpp
 
 USERINCLUDE     ../inc
 
--- a/menufw/hierarchynavigator/hnengine/inc/hnengine.h	Tue May 25 12:29:32 2010 +0300
+++ b/menufw/hierarchynavigator/hnengine/inc/hnengine.h	Wed Jun 09 09:29:04 2010 +0300
@@ -27,7 +27,6 @@
 #include "hnglobals.h"
 #include "hninterface.h"
 #include "hnmdmodel.h"
-#include "hninstallnotifier.h"
 
 class CHnMdModel;
 class CHnSuiteModelContainer;
@@ -49,7 +48,6 @@
  */
 NONSHARABLE_CLASS( CHnEngine ) : public CHnInterface,
                   public MHnMdModelEventObserver,
-                  public MHnInstallNotifierCallback,
                   public MHWRMLightObserver
     {
 public:
@@ -147,17 +145,6 @@
      TInt HandleBackEventL( const TDesC& aGenre,
              TInt aIterations = KModelCountForRoot );
 
-    // from MHNMulModelInstallNotifierCallback
-
-     /**
-      * InstallChangeL is called when the subscribed key has been changed.
-      * 
-      * @since S60 v5.0
-      * @param aStatus Status of the installation event.
-      */
-    virtual void InstallChangeL( TInt aStatus );
-    
-    
     /**
      * Loads default root suite
      * 
@@ -389,15 +376,15 @@
       * @param aUriFragment Descriptor containig parsed part of the uri.
       */
      void HighlightPlacementFromUriL( const TDesC8& aUriFragment );
-    
-     
+
+
      /**
       * Loads folder and sets focus through CR.
-      * 
+      *
       * @since S60 v5.0
       */
      void LoadFromCrL( const TDesC8& aUri );
-     
+
      /**
       * Handles loading suite from uri if suites names' are the same.
       * 
@@ -452,13 +439,7 @@
      * Not own - Suite observer.
      */
     MHnControllerInterface& iControllerInterface;
-    
-    /**
-     * Installation observer.
-     * Own.
-     */
-    CHnInstallNotifier* iInstObserver;
-    
+
     /**
      * Edit mode
      */
--- a/menufw/hierarchynavigator/hnengine/inc/hninstallnotifier.h	Tue May 25 12:29:32 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,177 +0,0 @@
-/*
-* Copyright (c) 2007-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:  Sis package installation event listener
-*
-*/
-  
-
-
-#ifndef HNINSTALLNOTIFIER_H
-#define HNINSTALLNOTIFIER_H
-
-#include <e32base.h>
-#include <e32property.h>
-
-/**
- * @ingroup group_hnengine
- *  Interface for observing Sis installation events.
- *
- * @lib hnengine
- * @since S60 S60 v3.1
- */
-class MHnInstallNotifierCallback
-    {
-    
-public:
-    /**
-     * @ingroup group_hnengine
-     * Enum defining the purpouse of the installation event.
-     */
-    enum TInstOp
-        {
-        EInstOpNone = 0x00, 
-        EInstOpInstall = 0x01, 
-        EInstOpUninstall = 0x02, 
-        EInstOpRestore = 0x04  
-        };
-
-    /**
-     * @ i ngroup group_hnengine
-     * Enum defining the exit status of the installation event.
-     */
-/*    enum TInstOpStatus
-        {
-        EInstOpStatusNone = 0x0000, 
-        EInstOpStatusSuccess = 0x0100, 
-        EInstOpStatusAborted = 0x0200 
-        };*/
-        
-    /**
-     * InstallChangeL is called when the subscribed key has been changed.
-     * 
-     * @param aStatus Status of the installation event.
-     */
-    virtual void InstallChangeL( TInt aStatus ) = 0;
-    
-    };
-
-
-/**
- * @ingroup group_hnengine
- *  Central Repository notifier.
- * 
- * @lib hnengine
- * @since S60 S60 v3.1
- */
-NONSHARABLE_CLASS( CHnInstallNotifier ) : public CActive
-    {
-    
-public:
-
-    /**
-     * Creates an instance of CHnMulModelInstallNotifier implementation.
-     * 
-     * @since S60 v5.0
-     * 
-     * @param aCallback Reference to notifier interface.
-     * @param aCategory Package uid.
-     * @param aKey Key for central repository.
-     * @return Fully constructed object.
-     */
-    static CHnInstallNotifier* NewL( 
-                                   MHnInstallNotifierCallback* aCallback,
-                                   TUid aCategory, 
-                                   TUint aKey );
-
-    /**
-     * Default destructor.
-     * 
-     * @since S60 v5.0
-     */
-    virtual ~CHnInstallNotifier();
-
-
-private:
-    /**
-     * Constructor.
-     * 
-     * @since S60 v5.0
-     * 
-     * @param aCallback Reference to notifier interface.
-     * @param aCategory Package uid.
-     * @param aKey Key for central repository.
-     */
-    CHnInstallNotifier( 
-                                MHnInstallNotifierCallback* aCallback, 
-                                TUid aCategory, 
-                                TUint aKey );
-
-    /**
-     * Symbian 2nd phase constructor.
-     * 
-     * @since S60 v5.0
-     */
-    void ConstructL();
-
-    /**
-     * From CActive. Implements cancellation of an outstanding request.
-     * 
-     * @since S60 v5.0
-     */
-    void DoCancel();
-    
-    /**
-     * From CActive. Handles an active object's request completion event.
-     * 
-     * @since S60 v5.0
-     */
-    void RunL();
-    
-    /**
-     * From CActive.
-     * 
-     * @since S60 v5.0
-     * @param aError The leave code.
-     * @return Status code.
-     */
-    TInt RunError( TInt aError );
-    
-        
-private:
-    /**
-     * User side interface to Publish & Subscribe.
-     */
-    RProperty iProperty;
-
-    /**
-     * Interface for notifying changes in SWI.
-     * Not own.
-     */
-    MHnInstallNotifierCallback* iCallback;
-    
-    /**
-     * Category uid.
-     */
-    TUid    iCategory;
-    
-    /**
-     * Key identifier.
-     */
-    TUint   iKey;
-
-    };
-
-#endif // HNINSTALLNOTIFIER_H
-
-// End of File
--- a/menufw/hierarchynavigator/hnengine/src/hnengine.cpp	Tue May 25 12:29:32 2010 +0300
+++ b/menufw/hierarchynavigator/hnengine/src/hnengine.cpp	Wed Jun 09 09:29:04 2010 +0300
@@ -56,8 +56,6 @@
     iSuiteContainer = CHnSuiteModelContainer::NewL( *this , iControllerInterface );
     iMetaDataModel = CHnMdModel::NewL( this, iSuiteContainer );
     iLight = CHWRMLight::NewL(this);
-    iInstObserver = CHnInstallNotifier::NewL( this,
-            KUidSystemCategory, KSAUidSoftwareInstallKeyValue  );
     }
 
 // ---------------------------------------------------------------------------
@@ -98,7 +96,6 @@
 //
 CHnEngine::~CHnEngine()
     {
-    delete iInstObserver;
     delete iLight;
     if( iSuiteContainer )
         {
@@ -529,6 +526,11 @@
         param->Value().Get( genre );
         DEBUG16(("_MM_:\tSuite genre name: %S",&genre));
         // load and evaluate the suite
+        if( genre.Compare( KFolderSuite) )
+            {
+            //only folder suite is supported
+            User::Leave( KErrNotSupported );
+            }
         err = iMetaDataModel->LoadSuiteL( genre, &aParams );
         if ( !err )
             {
@@ -712,23 +714,22 @@
 //
 // ---------------------------------------------------------------------------
 //
-void CHnEngine::InstallChangeL( TInt aStatus )
-    {
-    switch ( aStatus)
-        {
-        case EInstOpNone:
-            {
-            iMetaDataModel->HandleSisInstallationEventL( iSuiteContainer );
-            break;
-            }
-        case EInstOpInstall:
-        case EInstOpUninstall:
-            {
-            iMetaDataModel->ReleaseLocalization();
-            break;
-            }
-        }
-    }
+//void CHnEngine::InstallChangeL( TInt aStatus )
+//    {
+//    switch ( aStatus)
+//        {
+//        case EInstOpNone:
+//            {
+//            break;
+//            }
+//        case EInstOpInstall:
+//        case EInstOpUninstall:
+//            {
+//            iMetaDataModel->ReleaseLocalization();
+//            break;
+//            }
+//        }
+//    }
 // ---------------------------------------------------------------------------
 //
 // ---------------------------------------------------------------------------
--- a/menufw/hierarchynavigator/hnengine/src/hninstallnotifier.cpp	Tue May 25 12:29:32 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,122 +0,0 @@
-/*
-* Copyright (c) 2007-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:  Sis package installation event listener
-*
-*/
- 
-
-#include <sacls.h>
-#include "hninstallnotifier.h"
-
-// ============================ MEMBER FUNCTIONS =============================
-
-// -----------------------------------------------------------------------------
-// CHnMulModelInstallNotifier::CHnMulModelInstallNotifier
-// C++ default constructor
-// -----------------------------------------------------------------------------
-//
-CHnInstallNotifier::CHnInstallNotifier( 
-                                    MHnInstallNotifierCallback* aCallback, 
-                                    TUid aCategory, 
-                                    TUint aKey ) : CActive( EPriorityNormal )
-    {    
-    CActiveScheduler::Add( this );
-    
-    iCallback = aCallback;
-    iCategory = aCategory;
-    iKey = aKey;
-    // Prepare automatically
-    TInt err = iProperty.Attach( iCategory, iKey );
-    SetActive();
-    iStatus = KRequestPending;
-    iProperty.Subscribe( iStatus );
-    }
-
-// -----------------------------------------------------------------------------
-// CHnMulModelInstallNotifier::ConstructL
-// S2nd phase constructor.
-// -----------------------------------------------------------------------------
-//
-void CHnInstallNotifier::ConstructL()
-    {
-
-    }
-
-// ---------------------------------------------------------------------------
-// CHnMulModelInstallNotifier::NewL
-// ---------------------------------------------------------------------------
-//
-CHnInstallNotifier* CHnInstallNotifier::
-                              NewL( MHnInstallNotifierCallback* aCallback,
-                                    TUid aCategory, 
-                                    TUint aKey  )
-    {
-    CHnInstallNotifier* self = 
-                new (ELeave) CHnInstallNotifier( aCallback,
-                                                         aCategory,
-                                                         aKey );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    
-    return self;
-    }
-
-
-// ---------------------------------------------------------------------------
-// CHnMulModelInstallNotifier::~CHnMulModelInstallNotifier
-// ---------------------------------------------------------------------------
-//
-CHnInstallNotifier::~CHnInstallNotifier()
-    {
-    Cancel();
-    }
-
-// ---------------------------------------------------------------------------
-// CHnMulModelInstallNotifier::DoCancel
-// ---------------------------------------------------------------------------
-//
-void CHnInstallNotifier::DoCancel()
-    {
-    iProperty.Cancel();
-    }
-
-// ---------------------------------------------------------------------------
-// CHnMulModelInstallNotifier::RunError
-// ---------------------------------------------------------------------------
-//
-TInt CHnInstallNotifier::RunError( TInt /*aError*/ )
-    {    
-    // No need to do anything      
-    return KErrNone;
-    }
-
-// ---------------------------------------------------------------------------
-// CHnMulModelInstallNotifier::RunL
-// ---------------------------------------------------------------------------
-//
-void CHnInstallNotifier::RunL()
-    {
-    // Re-issue request before notifying
-    SetActive();
-    iStatus = KRequestPending;
-    iProperty.Subscribe( iStatus );
-    
-    TInt status;
-    User::LeaveIfError( iProperty.Get( KUidSystemCategory, 
-                                      KSAUidSoftwareInstallKeyValue,status ));
-
-    iCallback->InstallChangeL( status );
-    }
-// End of File
--- a/menufw/hierarchynavigator/hnmetadatamodel/bwins/hnmetadatamodelu.def	Tue May 25 12:29:32 2010 +0300
+++ b/menufw/hierarchynavigator/hnmetadatamodel/bwins/hnmetadatamodelu.def	Wed Jun 09 09:29:04 2010 +0300
@@ -4,50 +4,44 @@
 	?NewLC@CHnItemId@@SAPAV1@ABVTDesC16@@0@Z @ 3 NONAME ; class CHnItemId * CHnItemId::NewLC(class TDesC16 const &, class TDesC16 const &)
 	?GetAlternativeWidgetNumber@CHnMdSuite@@QAEHXZ @ 4 NONAME ; int CHnMdSuite::GetAlternativeWidgetNumber(void)
 	?GetSuiteParameters@CHnMdSuite@@QAEAAVCLiwGenericParamList@@XZ @ 5 NONAME ; class CLiwGenericParamList & CHnMdSuite::GetSuiteParameters(void)
-	?ReloadLocalizationL@CHnMdModel@@QAEXXZ @ 6 NONAME ; void CHnMdModel::ReloadLocalizationL(void)
-	?QueueForeground@CHnMdModel@@QAEXW4TForegroundGainTriggeringEvent@1@@Z @ 7 NONAME ; void CHnMdModel::QueueForeground(enum CHnMdModel::TForegroundGainTriggeringEvent)
-	?ReadFileL@HnUtils@@SAPAVHBufC8@@ABVTDesC16@@@Z @ 8 NONAME ; class HBufC8 * HnUtils::ReadFileL(class TDesC16 const &)
-	?GetModelL@CHnXmlModelProvider@@QAEHABVTDesC16@@AAVRXmlEngDocument@@@Z @ 9 NONAME ; int CHnXmlModelProvider::GetModelL(class TDesC16 const &, class RXmlEngDocument &)
-	?GetLastSuite@CHnMdModel@@QAEPAVCHnMdSuite@@XZ @ 10 NONAME ; class CHnMdSuite * CHnMdModel::GetLastSuite(void)
-	?GetColumnTextColumnCount@HnUtils@@SAHABVTDesC8@@VTChar@@@Z @ 11 NONAME ; int HnUtils::GetColumnTextColumnCount(class TDesC8 const &, class TChar)
-	?SetSuiteParametersL@CHnMdSuite@@QAEXAAVCLiwGenericParamList@@@Z @ 12 NONAME ; void CHnMdSuite::SetSuiteParametersL(class CLiwGenericParamList &)
-	?NewLC@CHnXmlModelProvider@@SAPAV1@XZ @ 13 NONAME ; class CHnXmlModelProvider * CHnXmlModelProvider::NewLC(void)
-	?NewLC@CHnMdModel@@SAPAV1@PAVMHnMdModelEventObserver@@PAVCHnSuiteModelContainer@@@Z @ 14 NONAME ; class CHnMdModel * CHnMdModel::NewLC(class MHnMdModelEventObserver *, class CHnSuiteModelContainer *)
-	?IsForegroundQueued@CHnMdModel@@QBEHXZ @ 15 NONAME ; int CHnMdModel::IsForegroundQueued(void) const
-	?NewL@CHnXmlModelProvider@@SAPAV1@XZ @ 16 NONAME ; class CHnXmlModelProvider * CHnXmlModelProvider::NewL(void)
-	?SetModeL@CHnMdModel@@QAEXW4TMdMode@@@Z @ 17 NONAME ; void CHnMdModel::SetModeL(enum TMdMode)
-	?AppendItemIdL@CHnFilter@@QAEXPAVCHnItemId@@@Z @ 18 NONAME ; void CHnFilter::AppendItemIdL(class CHnItemId *)
-	?HandleSisInstallationEventL@CHnMdModel@@QAEXPAVCHnSuiteModelContainer@@@Z @ 19 NONAME ; void CHnMdModel::HandleSisInstallationEventL(class CHnSuiteModelContainer *)
-	?ReadFileLC@HnUtils@@SAPAVHBufC8@@ABVTDesC16@@@Z @ 20 NONAME ; class HBufC8 * HnUtils::ReadFileLC(class TDesC16 const &)
-	?LoadSuiteL@CHnMdModel@@QAEHABVTDesC16@@PAVCLiwGenericParamList@@@Z @ 21 NONAME ; int CHnMdModel::LoadSuiteL(class TDesC16 const &, class CLiwGenericParamList *)
-	?SuiteModelExistsL@CHnMdModel@@QAEHABVTDesC8@@@Z @ 22 NONAME ; int CHnMdModel::SuiteModelExistsL(class TDesC8 const &)
-	?HandleBackEventL@CHnMdModel@@QAEHPAVCHnSuiteModelContainer@@ABVTDesC16@@H@Z @ 23 NONAME ; int CHnMdModel::HandleBackEventL(class CHnSuiteModelContainer *, class TDesC16 const &, int)
-	?SuiteName@CHnItemId@@QBEABVTDesC16@@XZ @ 24 NONAME ; class TDesC16 const & CHnItemId::SuiteName(void) const
-	?Template@CHnMdItem@@QAEAAVTDesC8@@XZ @ 25 NONAME ; class TDesC8 & CHnMdItem::Template(void)
+	?QueueForeground@CHnMdModel@@QAEXW4TForegroundGainTriggeringEvent@1@@Z @ 6 NONAME ; void CHnMdModel::QueueForeground(enum CHnMdModel::TForegroundGainTriggeringEvent)
+	?ReadFileL@HnUtils@@SAPAVHBufC8@@ABVTDesC16@@@Z @ 7 NONAME ; class HBufC8 * HnUtils::ReadFileL(class TDesC16 const &)
+	?GetModelL@CHnXmlModelProvider@@QAEHABVTDesC16@@AAVRXmlEngDocument@@@Z @ 8 NONAME ; int CHnXmlModelProvider::GetModelL(class TDesC16 const &, class RXmlEngDocument &)
+	?GetLastSuite@CHnMdModel@@QAEPAVCHnMdSuite@@XZ @ 9 NONAME ; class CHnMdSuite * CHnMdModel::GetLastSuite(void)
+	?GetColumnTextColumnCount@HnUtils@@SAHABVTDesC8@@VTChar@@@Z @ 10 NONAME ; int HnUtils::GetColumnTextColumnCount(class TDesC8 const &, class TChar)
+	?SetSuiteParametersL@CHnMdSuite@@QAEXAAVCLiwGenericParamList@@@Z @ 11 NONAME ; void CHnMdSuite::SetSuiteParametersL(class CLiwGenericParamList &)
+	?NewLC@CHnXmlModelProvider@@SAPAV1@XZ @ 12 NONAME ; class CHnXmlModelProvider * CHnXmlModelProvider::NewLC(void)
+	?NewLC@CHnMdModel@@SAPAV1@PAVMHnMdModelEventObserver@@PAVCHnSuiteModelContainer@@@Z @ 13 NONAME ; class CHnMdModel * CHnMdModel::NewLC(class MHnMdModelEventObserver *, class CHnSuiteModelContainer *)
+	?IsForegroundQueued@CHnMdModel@@QBEHXZ @ 14 NONAME ; int CHnMdModel::IsForegroundQueued(void) const
+	?NewL@CHnXmlModelProvider@@SAPAV1@XZ @ 15 NONAME ; class CHnXmlModelProvider * CHnXmlModelProvider::NewL(void)
+	?SetModeL@CHnMdModel@@QAEXW4TMdMode@@@Z @ 16 NONAME ; void CHnMdModel::SetModeL(enum TMdMode)
+	?AppendItemIdL@CHnFilter@@QAEXPAVCHnItemId@@@Z @ 17 NONAME ; void CHnFilter::AppendItemIdL(class CHnItemId *)
+	?ReadFileLC@HnUtils@@SAPAVHBufC8@@ABVTDesC16@@@Z @ 18 NONAME ; class HBufC8 * HnUtils::ReadFileLC(class TDesC16 const &)
+	?LoadSuiteL@CHnMdModel@@QAEHABVTDesC16@@PAVCLiwGenericParamList@@@Z @ 19 NONAME ; int CHnMdModel::LoadSuiteL(class TDesC16 const &, class CLiwGenericParamList *)
+	?SuiteModelExistsL@CHnMdModel@@QAEHABVTDesC8@@@Z @ 20 NONAME ; int CHnMdModel::SuiteModelExistsL(class TDesC8 const &)
+	?HandleBackEventL@CHnMdModel@@QAEHPAVCHnSuiteModelContainer@@ABVTDesC16@@H@Z @ 21 NONAME ; int CHnMdModel::HandleBackEventL(class CHnSuiteModelContainer *, class TDesC16 const &, int)
+	?SuiteName@CHnItemId@@QBEABVTDesC16@@XZ @ 22 NONAME ; class TDesC16 const & CHnItemId::SuiteName(void) const
+	?Template@CHnMdItem@@QAEAAVTDesC8@@XZ @ 23 NONAME ; class TDesC8 & CHnMdItem::Template(void)
+	?DeleteLastSuite@CHnMdModel@@QAEXXZ @ 24 NONAME ; void CHnMdModel::DeleteLastSuite(void)
+	?NewLC@CHnFilter@@SAPAV1@XZ @ 25 NONAME ; class CHnFilter * CHnFilter::NewLC(void)
 	?SetAttributeL@HnUtils@@SAXABVTXmlEngElement@@AAVRBuf8@@@Z @ 26 NONAME ; void HnUtils::SetAttributeL(class TXmlEngElement const &, class RBuf8 &)
-	?ReleaseLocalization@CHnMdModel@@QAEXXZ @ 27 NONAME ; void CHnMdModel::ReleaseLocalization(void)
-	?DeleteLastSuite@CHnMdModel@@QAEXXZ @ 28 NONAME ; void CHnMdModel::DeleteLastSuite(void)
-	?NewLC@CHnFilter@@SAPAV1@XZ @ 29 NONAME ; class CHnFilter * CHnFilter::NewLC(void)
-	?EvaluateL@CHnMdModel@@QAEXXZ @ 30 NONAME ; void CHnMdModel::EvaluateL(void)
-	?SetAttributeL@HnUtils@@SAXABVTXmlEngElement@@ABVTDesC8@@AAVRBuf8@@@Z @ 31 NONAME ; void HnUtils::SetAttributeL(class TXmlEngElement const &, class TDesC8 const &, class RBuf8 &)
-	?Compare@CHnItemId@@QBEHABV1@@Z @ 32 NONAME ; int CHnItemId::Compare(class CHnItemId const &) const
-	?LocateFileLC@HnUtils@@SAPAVHBufC16@@ABVTDesC16@@@Z @ 33 NONAME ; class HBufC16 * HnUtils::LocateFileLC(class TDesC16 const &)
-	?Uid@CHnMdItem@@QAEAAVTDesC8@@XZ @ 34 NONAME ; class TDesC8 & CHnMdItem::Uid(void)
-	?SetEvaluateSuiteL@CHnFilter@@QAEXH@Z @ 35 NONAME ; void CHnFilter::SetEvaluateSuiteL(int)
-	?GetColumnTextLC@HnUtils@@SAPAVHBufC8@@HABVTDesC8@@VTChar@@@Z @ 36 NONAME ; class HBufC8 * HnUtils::GetColumnTextLC(int, class TDesC8 const &, class TChar)
-	?LocateNearestLanguageFileLC@HnUtils@@SAPAVHBufC16@@ABVTDesC16@@@Z @ 37 NONAME ; class HBufC16 * HnUtils::LocateNearestLanguageFileLC(class TDesC16 const &)
-	?SetSuiteId@CHnFilter@@QAEXH@Z @ 38 NONAME ; void CHnFilter::SetSuiteId(int)
-	?NewL@CHnFilter@@SAPAV1@XZ @ 39 NONAME ; class CHnFilter * CHnFilter::NewL(void)
-	?SuiteName@CHnMdSuite@@QAEABVTDesC16@@XZ @ 40 NONAME ; class TDesC16 const & CHnMdSuite::SuiteName(void)
-	?UpdateL@CHnItemId@@QAEXABV1@@Z @ 41 NONAME ; void CHnItemId::UpdateL(class CHnItemId const &)
-	?Type@CHnMdItem@@QAEAAVTDesC8@@XZ @ 42 NONAME ; class TDesC8 & CHnMdItem::Type(void)
-	?ReloadModelL@CHnXmlModelProvider@@QAEXXZ @ 43 NONAME ; void CHnXmlModelProvider::ReloadModelL(void)
-	??1CHnXmlModelProvider@@UAE@XZ @ 44 NONAME ; CHnXmlModelProvider::~CHnXmlModelProvider(void)
-	?NewL@CHnItemId@@SAPAV1@ABVTDesC16@@0@Z @ 45 NONAME ; class CHnItemId * CHnItemId::NewL(class TDesC16 const &, class TDesC16 const &)
-	?Id@CHnItemId@@QBEABVTDesC16@@XZ @ 46 NONAME ; class TDesC16 const & CHnItemId::Id(void) const
-	?EvaluateL@CHnMdModel@@QAEXAAVCHnFilter@@@Z @ 47 NONAME ; void CHnMdModel::EvaluateL(class CHnFilter &)
-	?NewL@CHnMdModel@@SAPAV1@PAVMHnMdModelEventObserver@@PAVCHnSuiteModelContainer@@@Z @ 48 NONAME ; class CHnMdModel * CHnMdModel::NewL(class MHnMdModelEventObserver *, class CHnSuiteModelContainer *)
-	?GetSuiteParameters@CHnMdModel@@QAEAAVCLiwGenericParamList@@H@Z @ 49 NONAME ; class CLiwGenericParamList & CHnMdModel::GetSuiteParameters(int)
-	?IgnoreEvaluations@CHnMdModel@@QAEXH@Z @ 50 NONAME ; void CHnMdModel::IgnoreEvaluations(int)
-	?GetCurrentUriL@CHnMdModel@@QAEXAAVTDes16@@@Z @ 51 NONAME ; void CHnMdModel::GetCurrentUriL(class TDes16 &)
+	?EvaluateL@CHnMdModel@@QAEXXZ @ 27 NONAME ; void CHnMdModel::EvaluateL(void)
+	?SetAttributeL@HnUtils@@SAXABVTXmlEngElement@@ABVTDesC8@@AAVRBuf8@@@Z @ 28 NONAME ; void HnUtils::SetAttributeL(class TXmlEngElement const &, class TDesC8 const &, class RBuf8 &)
+	?Compare@CHnItemId@@QBEHABV1@@Z @ 29 NONAME ; int CHnItemId::Compare(class CHnItemId const &) const
+	?Uid@CHnMdItem@@QAEAAVTDesC8@@XZ @ 30 NONAME ; class TDesC8 & CHnMdItem::Uid(void)
+	?SetEvaluateSuiteL@CHnFilter@@QAEXH@Z @ 31 NONAME ; void CHnFilter::SetEvaluateSuiteL(int)
+	?GetColumnTextLC@HnUtils@@SAPAVHBufC8@@HABVTDesC8@@VTChar@@@Z @ 32 NONAME ; class HBufC8 * HnUtils::GetColumnTextLC(int, class TDesC8 const &, class TChar)
+	?LocateNearestLanguageFileLC@HnUtils@@SAPAVHBufC16@@ABVTDesC16@@@Z @ 33 NONAME ; class HBufC16 * HnUtils::LocateNearestLanguageFileLC(class TDesC16 const &)
+	?SetSuiteId@CHnFilter@@QAEXH@Z @ 34 NONAME ; void CHnFilter::SetSuiteId(int)
+	?NewL@CHnFilter@@SAPAV1@XZ @ 35 NONAME ; class CHnFilter * CHnFilter::NewL(void)
+	?SuiteName@CHnMdSuite@@QAEABVTDesC16@@XZ @ 36 NONAME ; class TDesC16 const & CHnMdSuite::SuiteName(void)
+	?UpdateL@CHnItemId@@QAEXABV1@@Z @ 37 NONAME ; void CHnItemId::UpdateL(class CHnItemId const &)
+	?Type@CHnMdItem@@QAEAAVTDesC8@@XZ @ 38 NONAME ; class TDesC8 & CHnMdItem::Type(void)
+	??1CHnXmlModelProvider@@UAE@XZ @ 39 NONAME ; CHnXmlModelProvider::~CHnXmlModelProvider(void)
+	?NewL@CHnItemId@@SAPAV1@ABVTDesC16@@0@Z @ 40 NONAME ; class CHnItemId * CHnItemId::NewL(class TDesC16 const &, class TDesC16 const &)
+	?Id@CHnItemId@@QBEABVTDesC16@@XZ @ 41 NONAME ; class TDesC16 const & CHnItemId::Id(void) const
+	?EvaluateL@CHnMdModel@@QAEXAAVCHnFilter@@@Z @ 42 NONAME ; void CHnMdModel::EvaluateL(class CHnFilter &)
+	?NewL@CHnMdModel@@SAPAV1@PAVMHnMdModelEventObserver@@PAVCHnSuiteModelContainer@@@Z @ 43 NONAME ; class CHnMdModel * CHnMdModel::NewL(class MHnMdModelEventObserver *, class CHnSuiteModelContainer *)
+	?GetSuiteParameters@CHnMdModel@@QAEAAVCLiwGenericParamList@@H@Z @ 44 NONAME ; class CLiwGenericParamList & CHnMdModel::GetSuiteParameters(int)
+	?IgnoreEvaluations@CHnMdModel@@QAEXH@Z @ 45 NONAME ; void CHnMdModel::IgnoreEvaluations(int)
 
--- a/menufw/hierarchynavigator/hnmetadatamodel/eabi/hnmetadatamodelu.def	Tue May 25 12:29:32 2010 +0300
+++ b/menufw/hierarchynavigator/hnmetadatamodel/eabi/hnmetadatamodelu.def	Wed Jun 09 09:29:04 2010 +0300
@@ -1,54 +1,48 @@
 EXPORTS
 	_ZN10CHnMdModel10LoadSuiteLERK7TDesC16P20CLiwGenericParamList @ 1 NONAME
 	_ZN10CHnMdModel12GetLastSuiteEv @ 2 NONAME
-	_ZN10CHnMdModel14GetCurrentUriLER6TDes16 @ 3 NONAME
-	_ZN10CHnMdModel15DeleteLastSuiteEv @ 4 NONAME
-	_ZN10CHnMdModel15QueueForegroundENS_30TForegroundGainTriggeringEventE @ 5 NONAME
-	_ZN10CHnMdModel16HandleBackEventLEP22CHnSuiteModelContainerRK7TDesC16i @ 6 NONAME
-	_ZN10CHnMdModel17IgnoreEvaluationsEi @ 7 NONAME
-	_ZN10CHnMdModel17SuiteModelExistsLERK6TDesC8 @ 8 NONAME
-	_ZN10CHnMdModel18GetSuiteParametersEi @ 9 NONAME
-	_ZN10CHnMdModel19ReleaseLocalizationEv @ 10 NONAME
-	_ZN10CHnMdModel19ReloadLocalizationLEv @ 11 NONAME
-	_ZN10CHnMdModel27HandleSisInstallationEventLEP22CHnSuiteModelContainer @ 12 NONAME
-	_ZN10CHnMdModel4NewLEP23MHnMdModelEventObserverP22CHnSuiteModelContainer @ 13 NONAME
-	_ZN10CHnMdModel5NewLCEP23MHnMdModelEventObserverP22CHnSuiteModelContainer @ 14 NONAME
-	_ZN10CHnMdModel8SetModeLE7TMdMode @ 15 NONAME
-	_ZN10CHnMdModel9EvaluateLER9CHnFilter @ 16 NONAME
-	_ZN10CHnMdModel9EvaluateLEv @ 17 NONAME
-	_ZN10CHnMdSuite18GetSuiteParametersEv @ 18 NONAME
-	_ZN10CHnMdSuite19SetSuiteParametersLER20CLiwGenericParamList @ 19 NONAME
-	_ZN10CHnMdSuite26GetAlternativeWidgetNumberEv @ 20 NONAME
-	_ZN10CHnMdSuite9SuiteNameEv @ 21 NONAME
-	_ZN19CHnXmlModelProvider12ReloadModelLEv @ 22 NONAME
-	_ZN19CHnXmlModelProvider4NewLEv @ 23 NONAME
-	_ZN19CHnXmlModelProvider5NewLCEv @ 24 NONAME
-	_ZN19CHnXmlModelProvider9GetModelLERK7TDesC16R15RXmlEngDocument @ 25 NONAME
-	_ZN19CHnXmlModelProviderD0Ev @ 26 NONAME
-	_ZN19CHnXmlModelProviderD1Ev @ 27 NONAME
-	_ZN19CHnXmlModelProviderD2Ev @ 28 NONAME
-	_ZN7HnUtils10ReadFileLCERK7TDesC16 @ 29 NONAME
-	_ZN7HnUtils12LocateFileLCERK7TDesC16 @ 30 NONAME
-	_ZN7HnUtils13SetAttributeLERK14TXmlEngElementR5RBuf8 @ 31 NONAME
-	_ZN7HnUtils13SetAttributeLERK14TXmlEngElementRK6TDesC8R5RBuf8 @ 32 NONAME
-	_ZN7HnUtils15GetColumnTextLCEiRK6TDesC85TChar @ 33 NONAME
-	_ZN7HnUtils24GetColumnTextColumnCountERK6TDesC85TChar @ 34 NONAME
-	_ZN7HnUtils27LocateNearestLanguageFileLCERK7TDesC16 @ 35 NONAME
-	_ZN7HnUtils9ReadFileLERK7TDesC16 @ 36 NONAME
-	_ZN9CHnFilter10SetSuiteIdEi @ 37 NONAME
-	_ZN9CHnFilter13AppendItemIdLEP9CHnItemId @ 38 NONAME
-	_ZN9CHnFilter13SetSuiteNameLERK7TDesC16 @ 39 NONAME
-	_ZN9CHnFilter17SetEvaluateSuiteLEi @ 40 NONAME
-	_ZN9CHnFilter4NewLEv @ 41 NONAME
-	_ZN9CHnFilter5NewLCEv @ 42 NONAME
-	_ZN9CHnItemId4NewLERK7TDesC16S2_ @ 43 NONAME
-	_ZN9CHnItemId5NewLCERK7TDesC16S2_ @ 44 NONAME
-	_ZN9CHnItemId7UpdateLERKS_ @ 45 NONAME
-	_ZN9CHnMdItem3UidEv @ 46 NONAME
-	_ZN9CHnMdItem4TypeEv @ 47 NONAME
-	_ZN9CHnMdItem8TemplateEv @ 48 NONAME
-	_ZNK10CHnMdModel18IsForegroundQueuedEv @ 49 NONAME
-	_ZNK9CHnItemId2IdEv @ 50 NONAME
-	_ZNK9CHnItemId7CompareERKS_ @ 51 NONAME
-	_ZNK9CHnItemId9SuiteNameEv @ 52 NONAME
+	_ZN10CHnMdModel15DeleteLastSuiteEv @ 3 NONAME
+	_ZN10CHnMdModel15QueueForegroundENS_30TForegroundGainTriggeringEventE @ 4 NONAME
+	_ZN10CHnMdModel16HandleBackEventLEP22CHnSuiteModelContainerRK7TDesC16i @ 5 NONAME
+	_ZN10CHnMdModel17IgnoreEvaluationsEi @ 6 NONAME
+	_ZN10CHnMdModel17SuiteModelExistsLERK6TDesC8 @ 7 NONAME
+	_ZN10CHnMdModel18GetSuiteParametersEi @ 8 NONAME
+	_ZN10CHnMdModel4NewLEP23MHnMdModelEventObserverP22CHnSuiteModelContainer @ 9 NONAME
+	_ZN10CHnMdModel5NewLCEP23MHnMdModelEventObserverP22CHnSuiteModelContainer @ 10 NONAME
+	_ZN10CHnMdModel8SetModeLE7TMdMode @ 11 NONAME
+	_ZN10CHnMdModel9EvaluateLER9CHnFilter @ 12 NONAME
+	_ZN10CHnMdModel9EvaluateLEv @ 13 NONAME
+	_ZN10CHnMdSuite18GetSuiteParametersEv @ 14 NONAME
+	_ZN10CHnMdSuite19SetSuiteParametersLER20CLiwGenericParamList @ 15 NONAME
+	_ZN10CHnMdSuite26GetAlternativeWidgetNumberEv @ 16 NONAME
+	_ZN10CHnMdSuite9SuiteNameEv @ 17 NONAME
+	_ZN19CHnXmlModelProvider4NewLEv @ 18 NONAME
+	_ZN19CHnXmlModelProvider5NewLCEv @ 19 NONAME
+	_ZN19CHnXmlModelProvider9GetModelLERK7TDesC16R15RXmlEngDocument @ 20 NONAME
+	_ZN19CHnXmlModelProviderD0Ev @ 21 NONAME
+	_ZN19CHnXmlModelProviderD1Ev @ 22 NONAME
+	_ZN19CHnXmlModelProviderD2Ev @ 23 NONAME
+	_ZN7HnUtils10ReadFileLCERK7TDesC16 @ 24 NONAME
+	_ZN7HnUtils13SetAttributeLERK14TXmlEngElementR5RBuf8 @ 25 NONAME
+	_ZN7HnUtils13SetAttributeLERK14TXmlEngElementRK6TDesC8R5RBuf8 @ 26 NONAME
+	_ZN7HnUtils15GetColumnTextLCEiRK6TDesC85TChar @ 27 NONAME
+	_ZN7HnUtils24GetColumnTextColumnCountERK6TDesC85TChar @ 28 NONAME
+	_ZN7HnUtils27LocateNearestLanguageFileLCERK7TDesC16 @ 29 NONAME
+	_ZN7HnUtils9ReadFileLERK7TDesC16 @ 30 NONAME
+	_ZN9CHnFilter10SetSuiteIdEi @ 31 NONAME
+	_ZN9CHnFilter13AppendItemIdLEP9CHnItemId @ 32 NONAME
+	_ZN9CHnFilter13SetSuiteNameLERK7TDesC16 @ 33 NONAME
+	_ZN9CHnFilter17SetEvaluateSuiteLEi @ 34 NONAME
+	_ZN9CHnFilter4NewLEv @ 35 NONAME
+	_ZN9CHnFilter5NewLCEv @ 36 NONAME
+	_ZN9CHnItemId4NewLERK7TDesC16S2_ @ 37 NONAME
+	_ZN9CHnItemId5NewLCERK7TDesC16S2_ @ 38 NONAME
+	_ZN9CHnItemId7UpdateLERKS_ @ 39 NONAME
+	_ZN9CHnMdItem3UidEv @ 40 NONAME
+	_ZN9CHnMdItem4TypeEv @ 41 NONAME
+	_ZN9CHnMdItem8TemplateEv @ 42 NONAME
+	_ZNK10CHnMdModel18IsForegroundQueuedEv @ 43 NONAME
+	_ZNK9CHnItemId2IdEv @ 44 NONAME
+	_ZNK9CHnItemId7CompareERKS_ @ 45 NONAME
+	_ZNK9CHnItemId9SuiteNameEv @ 46 NONAME
 
--- a/menufw/hierarchynavigator/hnmetadatamodel/group/hnmetadatamodel.mmp	Tue May 25 12:29:32 2010 +0300
+++ b/menufw/hierarchynavigator/hnmetadatamodel/group/hnmetadatamodel.mmp	Wed Jun 09 09:29:04 2010 +0300
@@ -71,7 +71,6 @@
 SOURCE          hnsimpleconditionhas.cpp
 SOURCE          hnsimpleconditionhasnot.cpp
 SOURCE          hnxmlmodelcache.cpp 
-SOURCE          hnxmlsuitefilesreg.cpp
 SOURCE          hnbitmapidcache.cpp
 
 USERINCLUDE     ../inc
--- a/menufw/hierarchynavigator/hnmetadatamodel/inc/hnglobals.h	Tue May 25 12:29:32 2010 +0300
+++ b/menufw/hierarchynavigator/hnmetadatamodel/inc/hnglobals.h	Wed Jun 09 09:29:04 2010 +0300
@@ -140,7 +140,11 @@
 
     }
 
+//paths
+_LIT( KFolderSuitePath, "Z:\\private\\101F4CD2\\import\\suites\\foldersuite\\suite.xml" );
+_LIT( KFolderItemsPath, "Z:\\private\\101F4CD2\\import\\suites\\foldersuite\\items.xml" );
 
+//XML tags
 _LIT8( KMm8,                        "mm" );
 _LIT8( KContentElementName8,        "content" );
 _LIT8( KSuiteElementName8,          "suite" );
@@ -324,6 +328,7 @@
 // widget types
 _LIT8 ( KSuite8,                    "suite" );
 _LIT  ( KFolderSuite,               "foldersuite" );
+_LIT8 ( KFolderSuite8,              "foldersuite" );
 _LIT8 ( KWidgetType8,               "type" );
 _LIT8 ( KAllowedTypes8,             "allowed_types" );
 _LIT8 ( KWidgetTypeList8,           "list" );
--- a/menufw/hierarchynavigator/hnmetadatamodel/inc/hnmdlocalization.h	Tue May 25 12:29:32 2010 +0300
+++ b/menufw/hierarchynavigator/hnmetadatamodel/inc/hnmdlocalization.h	Wed Jun 09 09:29:04 2010 +0300
@@ -97,20 +97,6 @@
      HBufC* LoadL( const TDesC& aResourceName, 
                    const CDesC16Array* aDesParams, 
                    const CArrayFix<TInt>* aIntParams );
-     
-     /**
-      * Realeses loaded resources.
-      *
-      * @since S60 5.0
-      */
-     void ReleaseResourceFiles();
-     /**
-      * Reloads realesed resources.
-      *
-      * @since S60 5.0
-      */
-     void ReloadResourceFilesL();
-
 private:
 
     /**
@@ -189,17 +175,7 @@
      * Not own.
      */
     CCoeEnv* iCoeEnv;
-    
-    /**
-     * Own - Dynamic offset.
-     */
-    RArray< TInt > iDynamicOffset;
-    
-    /**
-     * Own - Dynamic localization.
-     */
-    RPointerArray<CHnMdLocalizationElement> iDynamicLocalization;
-    
+
     /**
      * Own - Internal offset.
      */
--- a/menufw/hierarchynavigator/hnmetadatamodel/inc/hnmdmodel.h	Tue May 25 12:29:32 2010 +0300
+++ b/menufw/hierarchynavigator/hnmetadatamodel/inc/hnmdmodel.h	Wed Jun 09 09:29:04 2010 +0300
@@ -394,21 +394,6 @@
      */
     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
@@ -453,16 +438,6 @@
     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
-     * definitions.
-     *
-     * @since S60 5.0
-     * @param aIgnore aModelContainer Model container object.
-     */
-    void ReloadStackSuitesL( CHnSuiteModelContainer* aModelContainer );
-
-    /**
      * Counts number of loaded suites.
      *
      * @since S60 5.0
--- a/menufw/hierarchynavigator/hnmetadatamodel/inc/hnutils.h	Tue May 25 12:29:32 2010 +0300
+++ b/menufw/hierarchynavigator/hnmetadatamodel/inc/hnutils.h	Wed Jun 09 09:29:04 2010 +0300
@@ -61,15 +61,6 @@
     */    
     IMPORT_C static HBufC8* ReadFileL(const TDesC& aPath);
     
-   /**
-    * Locates file.
-    *
-    * @since S60 v3.0
-    * @param aFile File name.
-    * @return File path.
-    */
-    IMPORT_C static HBufC* LocateFileLC( const TDesC& aFile );
-    
     /**
      * Locates nearest Language file.
      *
--- a/menufw/hierarchynavigator/hnmetadatamodel/inc/hnxmlmodelprovider.h	Tue May 25 12:29:32 2010 +0300
+++ b/menufw/hierarchynavigator/hnmetadatamodel/inc/hnxmlmodelprovider.h	Wed Jun 09 09:29:04 2010 +0300
@@ -36,7 +36,7 @@
  * @since S60 5.0
  * @ingroup group_hnmetadatamodel
  */
-NONSHARABLE_CLASS(CHnXmlModelProvider) : public CActive
+NONSHARABLE_CLASS(CHnXmlModelProvider) : public CBase
     {
 public:
     /**
@@ -60,18 +60,6 @@
      */
     IMPORT_C virtual ~CHnXmlModelProvider();
     
-    /**
-     * @see CAsctive::DoCancel
-     */
-    void DoCancel();
-
-    /**
-     * Services the suite synchronization steps according to class iterator.
-     *
-     * @see CAsctive::RunL
-     */
-    void RunL();
-
 private:
     
     /**
@@ -97,37 +85,26 @@
      * Builds root of xml model from suite definition.
      *
      * @since S60 v5.0
-     * @param aSuiteName Suite name.
      * @param aXmlDoc XLM model of the suite.
      * @return Error code.
      */
-     TInt CollectSuiteL( const TDesC& aSuiteName, RXmlEngDocument& aXmlDoc );
+     TInt CollectSuiteL( RXmlEngDocument& aXmlDoc );
      
      /**
      * appends items to suite in model,
      *
      * @since S60 v5.0
-     * @param aSuiteName Name of suite to append items to.
      * @param aXmlDoc XLM model of the suite.
      */
-     void CollectItemsL(const TDesC& aSuiteName, RXmlEngDocument& aXmlDoc );
-     
-     /**
-     * Copies suites and items definitions to working dir.
-     *
-     * @since S60 v5.0
-     * @return Error code.
-     */
-     TBool SynchronizeSuitesL();
-     
+     void CollectItemsL( RXmlEngDocument& aXmlDoc );
+
     /**
      * Creates model from suite definition.
      *
      * @since S60 v5.0
-     * @param aStr Name of suite.
      * @param aXmlDoc XML model of the suite.
      */
-    void CreateModelL( const TDesC& aStr, RXmlEngDocument& aXmlDoc  );   
+    void CreateModelL( RXmlEngDocument& aXmlDoc  );
     
     /**
      * Changes event names to ids.
@@ -166,17 +143,7 @@
      * @return RXmlEngDocument.
      */
      RXmlEngDocument ParseFileL( const TDesC& aPath );
-     
-     /**
-      * Resets cached models.
-      */
-     void ResetCache();
-     
-    /**
-     * Reparses a document.
-     */
-     IMPORT_C void ReloadModelL();
-   
+
     /**
      * Parses a document - searching proper suite.
      *
@@ -193,41 +160,10 @@
       * @return Event id.
       */     
      TInt GetNewEventId( HBufC* aEventName );
-     
-     /**
-      * Check if suite exists.
-      *
-      * @since S60 5.0
-      * @param aSuite Suite name.
-      * @return ETrue if suite exists, otherwise EFalse.
-      */
-     TBool SuiteExistsL( const TDesC& aSuite );
-    
+
 private:
      
     /**
-     * Invoked after asynchronous synchronization is finished.
-     */
-     void SynchronizationFinishedL();
-
-    /**
-     * Sets up normal path to suites.
-     *
-     * @param aPath Path to be searched for suites.
-     */	
-     void SearchPathForSuitesL( const TDesC& aPath );
-	
-    /**
-     * Sets up normal path to suites.
-     */   
-     void SetupSuitePathL();
-	
-    /**
-     * Sets up fail sage path to suites.
-     */   
-    void SetupFailSafeSuitePathL();
-	
-    /**
      * Standard C++ constructor.
      */     
     CHnXmlModelProvider();
@@ -236,15 +172,6 @@
      * Standard symbian 2nd phase constructor.
      */     
     void ConstructL();
-
-    /**
-    * Finds drive letter where suite definition is.
-    *
-    * @since S60 v5.0
-    * @return Error code
-    */
-    void CheckDrivesL(); 
-               
     
 #ifdef _DEBUG
 private:
@@ -265,49 +192,14 @@
     RXmlEngDOMParser iDomParser;
                 
     /**
-     * File server session
-     */
-    RFs iFs;
-        
-    /**
-     * File manager
-     */
-    CFileMan* iFileMan;                
-    
-    /**
-     * List containing names of suites (suite name is same as dir name)
-     * that should be installed from all drives
-     */    
-    RHashSet< HBufC* > iInstSuites;
-    
-    /**
      * Event map.
      */
     RHashMap< HBufC*, TInt > iEventMap;
-    
-    /**
-     * Main path.
-     */
-    RBuf iPath;
-    
+
     /**
      * Cached suites.
      */
     CHnXmlModelCache* iCache;
     
-    /**
-     * Own. Iterator used in synchronisation. 
-     * Indicates next suite name to be synchronised.
-     */
-    THashSetIter<HBufC*>* iSuiteSetIterator;
-
-    /**
-     * ETrue if suite files on the c: drive were updated during the
-     * last synchronization. New suite files also count as updated.
-     * EFalse if the last synchronization did not alter any files
-     * on the c: drive.
-     */
-    TBool iSuiteFilesUpdated;
-
     };
 #endif // C_HNMULMODELPROVIDER_H
--- a/menufw/hierarchynavigator/hnmetadatamodel/inc/hnxmlsuitefilesreg.h	Tue May 25 12:29:32 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,160 +0,0 @@
-/*
-* Copyright (c) 2007-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: 
-*  Version     : %version:  2 % << Don't touch! Updated by Synergy at check-out.
-*
-*/
-
-
-
-#ifndef C_HNXMLSUITEFILESREG_H
-#define C_HNXMLSUITEFILESREG_H
-
-#include <bautils.h>
-#include <e32hashtab.h>
-
-/**
- * Structure binding file information together.
- * All of this information is essential when synchronising suite files.
- */
-NONSHARABLE_STRUCT(THnFileInfo)
-	{
-	TBuf< KMaxFileName > iFileName;
-	TBuf< KMaxPath > iFilePath;
-	TTime iLastModified;
-	TInt iSize;
-	};
-
-/**
- * Registry of suite definition files.
- * 
- * Keeps track of the suite files' sync. 
- *
- * @lib hnmetadatamodel
- * @since S60 5.0
- * @ingroup group_hnmetadatamodel
- */
-NONSHARABLE_CLASS(CHnXmlSuiteFilesReg) : public CBase
-    {
-public:
-    /**
-     * Standard factory method.
-     *
-     * @since S60 v5.0
-     * @return Fully constructed object.
-     */
-    static TBool SynchronizeL( RFs & aFs, const TDesC &aSuiteName );
- 
-    /**
-     * Standard virtual destructor.
-     */
-    virtual ~CHnXmlSuiteFilesReg();
-   
-private:
-	
-    /**
-     * Standard C++ constructor.
-     */     
-	CHnXmlSuiteFilesReg( RFs & aFs );
-
-    /**
-     * Standard symbian 2nd phase constructor.
-     */     
-    void ConstructL( const TDesC &aSuiteName );
-    
-    /**
-     * Destroys suite file maps.
-     */
-    void DestroySuiteFilesMaps();
-
-    /**
-     * Returns the valid suite import dir.
-     *
-     * @param aDriveNumber Number of the drive for which to create path.
-     * @return Path.
-     */	
-    HBufC* GetSuiteImportDirL( TInt aDriveNumber ) const;
-
-    /**
-     * Searches all the drives for import files for this particular suite.
-     */	
-    void SearchDrivesForSuiteFilesL();
-
-    /**
-     * Processes suite import dir.
-     *
-     * @param aSuitePath Path of the suite import.
-     */	
-    void SearchDirForSuiteFilesL( const TDesC& aSuitePath );
-
-    /**
-     * Adds a file to the suite map. The logics in the methods always prefers
-     * the newer files over the older. If a file by the same name already exists 
-     * with a newer date file will not be added.
-     *
-     * @param aDir Directory of the new file.
-     * @param aFile New file entry.
-     */	
-    void AddSuiteFileToMapL( const TDesC& aDir, const TEntry& aFile );
-
-    /**
-     * Calculates the current size of the dir in the installation.\
-     *
-     * @return Size in bytes.
-     */
-    TInt CalculateCurrentSuiteSizeL();
-
-    /**
-     * Calculates the size of the data to be synchronised.
-     *
-     * @return Size in bytes.
-     */
-    TInt CalculateSynchronizationSuiteSize();
-	
-    /**
-     * Synchronizes the suite files.
-     */
-    TBool SynchronizeSuiteFilesL();
-
-    /**
-     * Constructs the valid installation path.
-     *
-     * @return The installation path.
-     */
-    HBufC* GetSuiteInstallPathL();
-	
-private:
-	
-   /**
-    * Name of the suite (suite folder).
-    */
-    RBuf iSuiteName;
-	
-    /**
-     * File server session reference
-     */
-    RFs &iFs;
-    
-    /**
-     * File manager
-     */
-    CFileMan* iFileMan;  
-        
-    /**
-     * Hashmap containing paths to the suite files.
-     */
-    RHashMap< const TDesC*, THnFileInfo* > iSuiteFiles;
-
-    };
-#endif // C_HNXMLSUITEFILESREG_H
--- a/menufw/hierarchynavigator/hnmetadatamodel/src/hnmdlocalization.cpp	Tue May 25 12:29:32 2010 +0300
+++ b/menufw/hierarchynavigator/hnmetadatamodel/src/hnmdlocalization.cpp	Wed Jun 09 09:29:04 2010 +0300
@@ -119,7 +119,6 @@
     {
     TInt count = iInternalLocalization.Count();
     const CHnMdLocalizationElement* element = NULL;
-    
     for ( TInt i = 0; i < count; i++ )
         {
         const CHnMdLocalizationElement* tmp = iInternalLocalization[i];
@@ -129,21 +128,6 @@
             break;
             }
         }
-    if( !element )
-        {
-        count = iDynamicLocalization.Count();
-            
-        for ( TInt i = 0; i < count; i++ )
-            {
-            const CHnMdLocalizationElement* tmp = iDynamicLocalization[i];
-            if ( !tmp->Namespace().Compare( aNamespace) )
-                {
-                element = tmp;
-                break;
-                }
-            }
-        }
-
     return element;
     }
 
@@ -161,13 +145,6 @@
 //
 CHnMdLocalization::~CHnMdLocalization()
     {
-    iDynamicLocalization.ResetAndDestroy();
-    for( TInt i( 0 ); i < iDynamicOffset.Count(); i++ )
-        {
-        iCoeEnv->DeleteResourceFile( iDynamicOffset[i] );
-        }
-    iDynamicOffset.Close();
-    
     iInternalLocalization.ResetAndDestroy();
     for( TInt i( 0 ); i < iInternalOffset.Count(); i++ )
         {
@@ -179,42 +156,6 @@
 // ---------------------------------------------------------------------------
 // 
 // ---------------------------------------------------------------------------
-//
-void CHnMdLocalization::ReloadResourceFilesL()
-    {
-    for( TInt i( 0 ); i < iDynamicLocalization.Count(); i++ )
-        {
-        iDynamicLocalization[i]->LocateLanguageFileL();
-        if( iDynamicLocalization[i]->SourcePath()  )
-            {        
-            TInt offset( 0 );
-            TRAPD( err, offset = iCoeEnv->AddResourceFileL(
-                    *(iDynamicLocalization[i]->SourcePath()) ) );
-            if ( !err )
-                {
-                iDynamicOffset.AppendL( offset );
-                }
-            }
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-void CHnMdLocalization::ReleaseResourceFiles()
-    {
-    iDynamicLocalization.ResetAndDestroy();
-    for( TInt i( 0 ); i < iDynamicOffset.Count(); i++ )
-        {
-        iCoeEnv->DeleteResourceFile( iDynamicOffset[i] );
-        }
-    iDynamicOffset.Reset();
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
 //   
 void CHnMdLocalization::AppendElementL( CHnMdLocalizationElement* aElement )
     {
@@ -231,19 +172,6 @@
                 }
             }
         }
-    else
-        {
-        iDynamicLocalization.AppendL( aElement );
-        if( IsResourceFile (aElement->Source()) )
-            {
-            TInt offset( 0 );
-            TRAPD( err, offset = iCoeEnv->AddResourceFileL( *(aElement->SourcePath()) ) ); 
-            if ( !err )
-                {
-                iDynamicOffset.AppendL( offset );
-                }
-            }
-        }
     }
 
 // ---------------------------------------------------------------------------
--- a/menufw/hierarchynavigator/hnmetadatamodel/src/hnmdmodel.cpp	Tue May 25 12:29:32 2010 +0300
+++ b/menufw/hierarchynavigator/hnmetadatamodel/src/hnmdmodel.cpp	Wed Jun 09 09:29:04 2010 +0300
@@ -50,8 +50,6 @@
     MMPERF(("CHnMetaDataModel::ConstructL - bitmap and mask ids cache ready"));
     iBitmapIdCache = CHnBitmapIdCache::NewL();
     MMPERF(("CHnMetaDataModel::ConstructL - model privider ready"));
-    iXmlModelProvider->ReloadModelL();
-    MMPERF(("CHnMetaDataModel::ConstructL - model reloaded"));
 
     iCmnPtrs.iLocalization = iLocalization;
     iCmnPtrs.iIdGenerator = &iIdGenerator;
@@ -165,102 +163,12 @@
 //
 // ---------------------------------------------------------------------------
 //
-EXPORT_C void CHnMdModel::HandleSisInstallationEventL(
-        CHnSuiteModelContainer* /*aModelContainer*/ )
-    {
-    iXmlModelProvider->ReloadModelL();
-    }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CHnMdModel::ReloadStackSuitesL( CHnSuiteModelContainer* aModelContainer )
-	{
-    RPointerArray< CLiwGenericParamList > paramsArray;
-    CleanupResetAndDestroyPushL( paramsArray );
-
-    TBool rootDisplayed( iLoadedSuites.Count() == 1 );
-    while( iLoadedSuites.Count() > 0 )
-        {
-        // break loop to leave root suite on the stack
-        if( ( iLoadedSuites.Count() == 1 && paramsArray.Count() > 0 )
-                || rootDisplayed )
-            {
-            break;
-            }
-
-        CHnMdSuite* suite = GetLastSuite();
-        if( iXmlModelProvider->SuiteExistsL( suite->SuiteName() ) )
-            {
-            CLiwGenericParamList* suiteParams = CLiwGenericParamList::NewL();
-            CleanupStack::PushL( suiteParams );
-            suiteParams->AppendL( suite->GetSuiteParameters() );
-            paramsArray.Append( suiteParams );
-            CleanupStack::Pop( suiteParams );
-            }
-        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();
-        CleanupStack::PushL(suiteParams);
-        suiteParams->AppendL( *(paramsArray[ i ]));
-        TInt pos( 0 );
-        const TLiwGenericParam* param = suiteParams->FindFirst( pos, KSuiteName8 );
-        if ( param && pos >= 0)
-            {
-            TPtrC suiteName;
-            param->Value().Get( suiteName );
-            err = LoadSuiteL( suiteName, suiteParams );
-            }
-        CleanupStack::PopAndDestroy( suiteParams );
-
-        GetLastSuite()->SetModeL( iMode );
-        GetLastSuite()->MarkEvaluationL(
-                *filter, *iCmnPtrs.iContainer->GetLastSuiteModel() );
-        GetLastSuite()->EvaluateL( *iCmnPtrs.iContainer->GetLastSuiteModel() );
-        }
-
-    CleanupStack::PopAndDestroy( filter );
-    CleanupStack::PopAndDestroy( &paramsArray );
-	}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
 EXPORT_C void CHnMdModel::DeleteLastSuite()
     {
     CHnMdSuite* tmpPtr = GetLastSuite();
     iLoadedSuites.Remove( iLoadedSuites.Count() - 1 );
     delete tmpPtr;
     }
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CHnMdModel::ReleaseLocalization()
-    {
-    iLocalization->ReleaseResourceFiles();
-    iXmlModelProvider->ResetCache();
-    }
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CHnMdModel::ReloadLocalizationL()
-    {
-    iLocalization->ReloadResourceFilesL();
-    }
 
 // ---------------------------------------------------------------------------
 //
@@ -461,10 +369,11 @@
 EXPORT_C TBool CHnMdModel::SuiteModelExistsL( const TDesC8& aSuiteModel )
     {
     TBool res( EFalse );
-    HBufC* suiteName = HnConvUtils::Str8ToStrLC( aSuiteModel );
-    res = iXmlModelProvider->SuiteExistsL( *suiteName ) ||
-            aSuiteModel.Compare( KRoot8 ) == KErrNone ;
-    CleanupStack::PopAndDestroy( suiteName );
+    if( !aSuiteModel.Compare( KFolderSuite8 ) ||
+        !aSuiteModel.Compare( KRoot8 ) )
+        {
+        res = ETrue;
+        }
     return res;
     }
 
@@ -472,22 +381,6 @@
 //
 // ---------------------------------------------------------------------------
 //
-EXPORT_C void CHnMdModel::GetCurrentUriL( TDes& aUri )
-    {
-    iXmlModelProvider->ReloadModelL();
-
-    aUri.Append( KPrefMm );
-    for( TInt i(0); i < iLoadedSuites.Count(); i++ )
-        {
-        aUri.Append( iLoadedSuites[ i ]->SuiteName() );
-        aUri.Append( KSlash );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
 void CHnMdModel::EvaluateTopSuiteL()
     {
     if ( !iIgnoreEvaluations )
--- a/menufw/hierarchynavigator/hnmetadatamodel/src/hnmdvalueimage.cpp	Tue May 25 12:29:32 2010 +0300
+++ b/menufw/hierarchynavigator/hnmetadatamodel/src/hnmdvalueimage.cpp	Wed Jun 09 09:29:04 2010 +0300
@@ -36,6 +36,7 @@
 #include "menudebug.h"
 #include "hnbitmapidcache.h"
 
+_LIT( KGridRootMif, "gridroot.mif" );
 // ======== MEMBER FUNCTIONS ========
 
 // ---------------------------------------------------------------------------
@@ -277,26 +278,9 @@
 HBufC* CHnMdValueImage::FindMatchigMifFileL( const RFs& aFs, TDesC& aFileName )
     {
     DEBUG16(("_MM_: CHnMdValueImage::FindMatchigMifFileL IN"));
-
-    _LIT( KGridRootMif, "gridroot.mif" );
-
-    // whole path to the mif file was not specified
+    HBufC* ret = NULL;
     TDriveList driveList;
-    HBufC* ret = NULL;
-
-    if ( aFileName == KGridRootMif )
-        {
-        ret = HBufC::NewL(
-                1 + KRscPath().Length() + // 1 - drive letter len.
-                aFileName.Length() );
-        TPtr ptr( ret->Des() );
-        TChar driveLetter;
-        aFs.DriveToChar( EDriveZ, driveLetter );
-        ptr.Append( driveLetter );
-        ptr.Append( KRscPath );
-        ptr.Append( aFileName );
-        }
-    else if ( KErrNone == aFs.DriveList( driveList ) )
+    if ( KErrNone == aFs.DriveList( driveList ) )
         {
         TInt driveNumber( EDriveY ); // start with drive Y
         do // iterates through drives: Y, X, W, ..., C, B, A, Z
@@ -352,7 +336,21 @@
     TInt errCode = HnLiwUtils::GetStringL( *iParamList, iMifFile8, iPos, tmpBuf );
     if ( tmpBuf.Length() )
         {
-        if ( BaflUtils::FileExists( iCmnPtrs->iFs, tmpBuf ) )
+        TDriveList driveList;
+        if ( tmpBuf == KGridRootMif )
+            {
+            HBufC* temp = HBufC::NewL(
+                   1 + KRscPath().Length() + // 1 - drive letter len.
+                   tmpBuf.Length() );
+            TPtr ptr( temp->Des() );
+            TChar driveLetter;
+            iCmnPtrs->iFs.DriveToChar( EDriveZ, driveLetter );
+            ptr.Append( driveLetter );
+            ptr.Append( KRscPath );
+            ptr.Append( tmpBuf );
+            ret = temp;
+            }
+        else if ( BaflUtils::FileExists( iCmnPtrs->iFs, tmpBuf ) )
             {
             // return fileName as it is
             ret = tmpBuf.AllocL();
@@ -572,64 +570,4 @@
 	aKeyMask.Append( aMaskIdBuf );
 	}
 
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//  
-//CGulIcon* CHnMdValueImage::GetIconL(
-//        const CLiwGenericParamList* aQueriesResultsList, TInt aPos )
-//    {
-//    CGulIcon* gulIcon = NULL;
-//
-//    iParamList = aQueriesResultsList;
-//    iPos = aPos;
-//    
-//    // only to set iImageSource, to be optimized    
-//    SetImageSourceL();
-//    
-//    TSize defaultSize( KDefaultIconSize, KDefaultIconSize );
-//    
-//    CFbsBitmap* bitmap = NULL; 
-//    CFbsBitmap* mask = NULL;
-//        
-//    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
-//    
-//    switch( iImageSource )
-//        {
-//        case EImageSourceResource:
-//            {
-//            TInt bitmapId = 0;
-//            TInt maskId = 0;
-//            GetBitmapAndMaskIdL(bitmapId, maskId);
-//            if ( iMifFileName && bitmapId != KErrNotFound )
-//                {
-//                AknsUtils::CreateIconL(
-//                        skin, SkinIdL(), bitmap, mask,
-//                        *iMifFileName, bitmapId, maskId );
-//                }
-//            }
-//            break;
-//        default:
-//            {
-//            User::Panic( KMatrixPanic , 1 );
-//            }    
-//        }
-//       
-//    if ( EImageSourceUndefined != iImageSource )
-//        {        
-//        if ( EImageSourceFile != iImageSource )
-//            {
-//            gulIcon = CGulIcon::NewL( bitmap, mask );
-//            AknIconUtils::SetSize( mask, defaultSize );
-//            AknIconUtils::SetSize( bitmap, defaultSize );
-//            }
-//        else
-//            {
-//            gulIcon = CGulIcon::NewL( bitmap );
-//            AknIconUtils::SetSize( bitmap, defaultSize );
-//            }
-//        }
-//    
-//    return gulIcon;
-//    }
 
--- a/menufw/hierarchynavigator/hnmetadatamodel/src/hnutils.cpp	Tue May 25 12:29:32 2010 +0300
+++ b/menufw/hierarchynavigator/hnmetadatamodel/src/hnutils.cpp	Wed Jun 09 09:29:04 2010 +0300
@@ -75,44 +75,6 @@
 // 
 // ---------------------------------------------------------------------------
 //      
-EXPORT_C HBufC* HnUtils::LocateFileLC( const TDesC& aFile )
-    {
-    HBufC* filePath = HBufC::NewLC(KMaxName);
-    RFs& fs = CEikonEnv::Static()->FsSession();
-
-    TDriveList driveList;
-    TChar driveLetter;
-    TInt driveNumber=EDriveY;
-    User::LeaveIfError(fs.DriveList(driveList));
-    for(; driveNumber>=EDriveA-1; driveNumber-- )
-        {
-        if (driveNumber==EDriveA-1)
-        driveNumber = EDriveZ;
-        if (driveList[driveNumber])
-            {
-            User::LeaveIfError(fs.DriveToChar(driveNumber, driveLetter));
-            filePath->Des().Zero();
-            filePath->Des().Append(driveLetter);
-            filePath->Des().Append(KRscPath);
-            filePath->Des().Append(aFile);
-
-            if (BaflUtils::FileExists(fs,*filePath))
-                {
-                return filePath;
-                }
-            }
-        if (driveNumber == EDriveZ)
-        break;
-        }
-
-    User::Leave(KErrNotFound);
-    return filePath;
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//      
 EXPORT_C HBufC* HnUtils::LocateNearestLanguageFileLC( const TDesC& aFile )
     {
     _LIT( KExtRSC, ".r");
@@ -122,31 +84,22 @@
         RFs& fs = CEikonEnv::Static()->FsSession();
         TDriveList driveList;
         TChar driveLetter;
-        TInt driveNumber=EDriveY;
-        User::LeaveIfError(fs.DriveList(driveList));
+        //locate resources only on Z drive for foldersuite
+        //no need to scan all drives
+        TInt driveNumber=EDriveZ;
         TFileName file;
-        for(; driveNumber>=EDriveA-1; driveNumber-- )
+        User::LeaveIfError(fs.DriveToChar(driveNumber, driveLetter));
+        filePath->Des().Zero();
+        filePath->Des().Append(driveLetter);
+        filePath->Des().Append(KRscPath);
+        filePath->Des().Append(aFile);
+
+        file = *filePath;
+        BaflUtils::NearestLanguageFile( fs, file);
+        if( BaflUtils::FileExists( fs, file))
             {
-            if (driveNumber==EDriveA-1)
-            driveNumber = EDriveZ;
-            if (driveList[driveNumber])
-                {
-                User::LeaveIfError(fs.DriveToChar(driveNumber, driveLetter));
-                filePath->Des().Zero();
-                filePath->Des().Append(driveLetter);
-                filePath->Des().Append(KRscPath);
-                filePath->Des().Append(aFile);
-    
-                file = *filePath;
-                BaflUtils::NearestLanguageFile( fs, file);
-                if( BaflUtils::FileExists( fs, file))
-                    {
-                    CleanupStack::PopAndDestroy(filePath);    
-                    return file.AllocLC();
-                    }
-                }
-            if (driveNumber == EDriveZ)
-            break;
+            CleanupStack::PopAndDestroy(filePath);
+            return file.AllocLC();
             }
         CleanupStack::PopAndDestroy(filePath);
         }
--- a/menufw/hierarchynavigator/hnmetadatamodel/src/hnxmlmodelprovider.cpp	Tue May 25 12:29:32 2010 +0300
+++ b/menufw/hierarchynavigator/hnmetadatamodel/src/hnxmlmodelprovider.cpp	Wed Jun 09 09:29:04 2010 +0300
@@ -18,7 +18,6 @@
 #include <sysutil.h> 
 #include "hnxmlmodelprovider.h"
 #include "hnxmlmodelcache.h"	
-#include "hnxmlsuitefilesreg.h"
 #include "hnglobals.h"
 #include "hnconvutils.h"
 #include "menudebug.h"
@@ -36,79 +35,13 @@
 	{
 	iDomImpl.OpenL();
 	User::LeaveIfError(iDomParser.Open(iDomImpl));
-	User::LeaveIfError(iFs.Connect());
-	iFileMan = CFileMan::NewL(iFs);
-
-	iPath.CreateL(KMaxPath);
-	User::LeaveIfError(iFs.PrivatePath(iPath));
-	iPath.Insert(0, KDrive);
-	iPath.Append(KEntriesSuffix);
 	iCache = CHnXmlModelCache::NewL();
-	
-	CActiveScheduler::Add( this);
-	}
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-void CHnXmlModelProvider::DoCancel()
-	{
-	
 	}
 
 // ---------------------------------------------------------------------------
 // 
 // ---------------------------------------------------------------------------
 //
-void CHnXmlModelProvider::SynchronizationFinishedL()
-	{
-	ResetCache();
-	THnMdCommonPointers &cmnPtr = *THnMdCommonPointers::Static();
-	CHnMdModel* model = cmnPtr.iModel;
-	if ( iSuiteFilesUpdated )
-	    {
-	    model->ReloadStackSuitesL( cmnPtr.iContainer );
-	    }
-	}
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-void CHnXmlModelProvider::RunL()
-	{
-	if ( !iSuiteSetIterator )
-		{
-		CheckDrivesL();
-	    iSuiteSetIterator = new ( ELeave ) THashSetIter<HBufC*>( iInstSuites );
-	    iSuiteSetIterator->Reset();
-	    iStatus = KRequestPending;
-	    SetActive();
-	    TRequestStatus* status = &iStatus;
-	    User::RequestComplete( status, KErrNone );
-		}
-	else if ( iSuiteSetIterator->Next() )
-		{
-		TBool filesUpdated = CHnXmlSuiteFilesReg::SynchronizeL(
-                iFs, **(iSuiteSetIterator->Current()) );
-        iSuiteFilesUpdated = ( iSuiteFilesUpdated || filesUpdated ); 
-	    iStatus = KRequestPending;
-	    SetActive();
-	    TRequestStatus* status = &iStatus;
-	    User::RequestComplete( status, KErrNone );
-		}
-	else
-		{
-		delete iSuiteSetIterator;
-		iSuiteSetIterator = NULL;
-		SynchronizationFinishedL();
-		}
-	}
-	
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
 EXPORT_C CHnXmlModelProvider* CHnXmlModelProvider::NewL()
 	{
 	CHnXmlModelProvider* self = CHnXmlModelProvider::NewLC();
@@ -132,11 +65,7 @@
 // 
 // ---------------------------------------------------------------------------
 //
-CHnXmlModelProvider::CHnXmlModelProvider() :
-	CActive( EPriorityLow ),	
-	iInstSuites(&HBuf16Hash, &HBuf16Ident),
-	iEventMap(&HBuf16Hash, &HBuf16Ident), 
-	iSuiteSetIterator( NULL )
+CHnXmlModelProvider::CHnXmlModelProvider(): iEventMap(&HBuf16Hash, &HBuf16Ident)
 	{
 	 
 	}
@@ -147,15 +76,9 @@
 //
 EXPORT_C CHnXmlModelProvider::~CHnXmlModelProvider()
 	{
-	Cancel(); 
-	
-	delete iSuiteSetIterator;
 	delete iCache;
 	iDomParser.Close();
 	iDomImpl.Close();
-	delete iFileMan;
-	iFs.Close();
-	iPath.Close();
 
 	// clean up eventmap
 	THashMapIter<HBufC*, TInt> iter(iEventMap);
@@ -164,14 +87,6 @@
 		delete *ptr;
 		}
 	iEventMap.Close();
-
-	THashSetIter<HBufC*> iterSuites(iInstSuites);
-	while ( iterSuites.Next())
-		{
-		delete *iterSuites.Current();
-		}
-	iInstSuites.Close();
-
 	}
 
 #ifdef _DEBUG
@@ -275,7 +190,8 @@
 HBufC8* CHnXmlModelProvider::ReadFileLC(const TDesC& aPath)
     {
     RFile file;
-    User::LeaveIfError( file.Open(iFs, aPath, EFileRead) );
+    User::LeaveIfError( file.Open( CEikonEnv::Static()->FsSession(),
+                                   aPath, EFileRead) );
     CleanupClosePushL( file );
     
     TInt fileSize(0);
@@ -326,25 +242,13 @@
 // 
 // ---------------------------------------------------------------------------
 //
-TInt CHnXmlModelProvider::CollectSuiteL(const TDesC& aSuiteName,
-		RXmlEngDocument& aXmlDoc)
+TInt CHnXmlModelProvider::CollectSuiteL( RXmlEngDocument& aXmlDoc )
 	{
-	TInt err(KErrNotFound);
-	TBuf<KMaxPath> filePath;
-	TBuf<KMaxPath> KsuitePath;
-	KsuitePath.Zero();
-	KsuitePath.Copy(iPath);
-	KsuitePath.Append(aSuiteName);
-	KsuitePath.Append(Kbackslash);
-
-	filePath.Zero();
-	filePath.Copy(KsuitePath);
-	filePath.Append(KSuiteDefFileName);
-
-	RXmlEngDocument suiteDoc;
-	CleanupClosePushL(suiteDoc);
-	
-	suiteDoc = ParseFileL(filePath);
+    TInt err(KErrNotFound);
+    RXmlEngDocument suiteDoc;
+	CleanupClosePushL( suiteDoc );
+	//hardcoded path for suites as there is only foldersuite
+	suiteDoc = ParseFileL( KFolderSuitePath );
     
     // one suite per file
     RXmlEngNodeList<TXmlEngElement> elements;
@@ -372,133 +276,86 @@
 // 
 // ---------------------------------------------------------------------------
 //
-TBool CHnXmlModelProvider::SuiteExistsL( const TDesC& aSuite )
-    {
-    TBuf<KMaxPath> filePath;
-    TBuf<KMaxPath> KsuitePath;
-    KsuitePath.Zero();
-    KsuitePath.Copy( iPath );
-    KsuitePath.Append( aSuite );
-    KsuitePath.Append( Kbackslash );
-
-    filePath.Zero();
-    filePath.Copy( KsuitePath );
-    filePath.Append( KSuiteDefFileName );
-    
-    return BaflUtils::FileExists( iFs, filePath );
-    }
-
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-void CHnXmlModelProvider::CollectItemsL( const TDesC& aSuiteName,
-        RXmlEngDocument& aXmlDoc )
+void CHnXmlModelProvider::CollectItemsL( RXmlEngDocument& aXmlDoc )
     {
-    TBuf<KMaxPath> filePath;
-    TBuf<KMaxPath> KsuitePath;
-    KsuitePath.Zero();
-    KsuitePath.Copy( iPath );
-    KsuitePath.Append( aSuiteName ); 
-    KsuitePath.Append( Kbackslash ); 
-    CDir* fileList;                  
-    iFs.GetDir( KsuitePath, KEntryAttMaskSupported, ESortByName, fileList);
-    CleanupStack::PushL(fileList);
-
-    //for each file with entries definitions         
-    for( TInt i(0); i<fileList->Count(); i++ )  
-        {            
-        TPtrC fileName = (*fileList)[i].iName;   
+    RXmlEngDocument itemDoc;
+    CleanupClosePushL( itemDoc );
+    //hardcoded path for items as there is only foldersuite
+    TInt err( KErrNone );
+    TRAP( err , itemDoc = ParseFileL(KFolderItemsPath) );
+    if( !err )
+        {
+        RXmlEngNodeList< TXmlEngElement > children;
+        CleanupClosePushL(children);
+        itemDoc.DocumentElement().GetChildElements(children);
         
-        if(!fileName.Compare(KSuiteDefFileName))
-            continue;
-        
-        filePath.Zero();
-        filePath.Copy(KsuitePath);
-        filePath.Append(fileName);  
-            
-        RXmlEngDocument itemDoc;
-        CleanupClosePushL( itemDoc );
-        
-        TInt err( KErrNone );
-        TRAP( err , itemDoc = ParseFileL(filePath) );
-        if( !err )
-            {
-            RXmlEngNodeList< TXmlEngElement > children;
-            CleanupClosePushL(children);
-            itemDoc.DocumentElement().GetChildElements(children);
+        TPtrC8 itemGenre =
+            itemDoc.DocumentElement().AttributeNodeL(KGenreName8).Value();
             
-            TPtrC8 itemGenre =
-                itemDoc.DocumentElement().AttributeNodeL(KGenreName8).Value();
-                
-            TInt amount = children.Count();
-            for( TInt i(0); i<amount; i++ )
+        TInt amount = children.Count();
+        for( TInt i(0); i<amount; i++ )
+            {
+            TXmlEngElement child = children.Next();
+            TPtrC8 tempChildName = child.Name();
+            // append localizations to root
+            if (!child.Name().Compare(KLocalizationName8))
                 {
-                TXmlEngElement child = children.Next();
-                TPtrC8 tempChildName = child.Name();
-                // append localizations to root
-                if (!child.Name().Compare(KLocalizationName8)) 
-                    {                
-                    aXmlDoc.DocumentElement().AsElement().AppendChildL(child);
-                    child.ReconcileNamespacesL();
-                    } 
-                // append itmes to proper suite 
-                else if (!child.Name().Compare(KItemName8) )
-                    {                                    
-                    // go througs item's children to change event names to ids
-                    ChangeEventsToIdsInChildrenL(child);
-                    
-                    // edit_mode item
-                    RXmlEngNodeList< TXmlEngElement > editModeItems;
-                    CleanupClosePushL( editModeItems );
-                    child.GetChildElements( editModeItems );
-                    TInt count = editModeItems.Count();
-                    for ( TInt ic( 0 ); ic < count; ic++ )
+                aXmlDoc.DocumentElement().AsElement().AppendChildL(child);
+                child.ReconcileNamespacesL();
+                }
+            // append itmes to proper suite
+            else if (!child.Name().Compare(KItemName8) )
+                {
+                // go througs item's children to change event names to ids
+                ChangeEventsToIdsInChildrenL(child);
+                
+                // edit_mode item
+                RXmlEngNodeList< TXmlEngElement > editModeItems;
+                CleanupClosePushL( editModeItems );
+                child.GetChildElements( editModeItems );
+                TInt count = editModeItems.Count();
+                for ( TInt ic( 0 ); ic < count; ic++ )
+                    {
+                    TXmlEngElement editModeItem = editModeItems.Next();
+                    if ( !editModeItem.Name().Compare( KEditModeItem8 ))
                         {
-                        TXmlEngElement editModeItem = editModeItems.Next();
-                        if ( !editModeItem.Name().Compare( KEditModeItem8 ))
-                            {
-							editModeItem.AddNewAttributeL(KSuiteElementName8,
-									itemGenre);
-							}
-						}
-					CleanupStack::PopAndDestroy(&editModeItems);
-					// edit_mode items - end
+                        editModeItem.AddNewAttributeL(KSuiteElementName8,
+                                itemGenre);
+                        }
+                    }
+                CleanupStack::PopAndDestroy(&editModeItems);
+                // edit_mode items - end
 
-					RXmlEngNodeList<TXmlEngElement> suites;
-					CleanupClosePushL(suites);
-					aXmlDoc.DocumentElement().GetChildElements(suites);
-					TInt amountSuites = suites.Count();
-					for (TInt i(0); i < amountSuites; i++)
-						{
-						TXmlEngElement childSuite = suites.Next();
-						TPtrC8 tempName = child.Name();
-						//find suite
-						if (!childSuite.Name().Compare(KTitleName8))
-							{
-							TPtrC8 suiteGenre = childSuite.AttributeNodeL(
-									KGenreName8).Value();
+                RXmlEngNodeList<TXmlEngElement> suites;
+                CleanupClosePushL(suites);
+                aXmlDoc.DocumentElement().GetChildElements(suites);
+                TInt amountSuites = suites.Count();
+                for (TInt i(0); i < amountSuites; i++)
+                    {
+                    TXmlEngElement childSuite = suites.Next();
+                    TPtrC8 tempName = child.Name();
+                    //find suite
+                    if (!childSuite.Name().Compare(KTitleName8))
+                        {
+                        TPtrC8 suiteGenre = childSuite.AttributeNodeL(
+                                KGenreName8).Value();
 
-							//find proper suite to append item
-							if (!suiteGenre.Compare(itemGenre))
-								{
-								child.AddNewAttributeL(KSuiteElementName8,
-										itemGenre);
-								childSuite.AppendChildL(child);
-                                }                        
+                        //find proper suite to append item
+                        if (!suiteGenre.Compare(itemGenre))
+                            {
+                            child.AddNewAttributeL(KSuiteElementName8,
+                                    itemGenre);
+                            childSuite.AppendChildL(child);
                             }
                         }
-					aXmlDoc.DocumentElement().ReconcileNamespacesL();
-                    CleanupStack::PopAndDestroy( &suites );                    
-                    }                                
-                }                   
-            CleanupStack::PopAndDestroy( &children );
+                    }
+                aXmlDoc.DocumentElement().ReconcileNamespacesL();
+                CleanupStack::PopAndDestroy( &suites );
+                }
             }
-        CleanupStack::PopAndDestroy( &itemDoc );
-        } 
-    
-    CleanupStack::PopAndDestroy(fileList);
+        CleanupStack::PopAndDestroy( &children );
+        }
+    CleanupStack::PopAndDestroy( &itemDoc );
     }        
 
 
@@ -672,111 +529,19 @@
 // ---------------------------------------------------------------------------
 // 
 // ---------------------------------------------------------------------------
-//
-TBool CHnXmlModelProvider::SynchronizeSuitesL()
-    {
-    MMPERF(("CHnXmlModelProvider::SynchronizeSuitesL - START"));
-    iSuiteFilesUpdated = EFalse;
-    TBool refresh( EFalse );   
-
-    if (IsActive())
-    	{
-    	Cancel();
-    	}
-    
-    delete iSuiteSetIterator;
-    iSuiteSetIterator = NULL;
-    
-    iStatus = KRequestPending;
-    SetActive();
-    TRequestStatus* status = &iStatus;
-    User::RequestComplete( status, KErrNone );
-   
-    MMPERF(("CHnXmlModelProvider::SynchronizeSuitesL - DONE"));
-    return refresh;
-    }
- 
-// ---------------------------------------------------------------------------
 // 
-// ---------------------------------------------------------------------------
-// 
-void CHnXmlModelProvider::ResetCache()
-    {
-    iCache->Reset();
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//   
-void CHnXmlModelProvider::SetupSuitePathL()
-	{
-	iPath.Close();
-	iPath.CreateL(KMaxPath);
-	User::LeaveIfError(iFs.PrivatePath(iPath));
-	TChar drive;
-	TBuf<1> driveLetter;
-	
-	iFs.DriveToChar( EDriveC, drive );
-	iPath.Insert(0, KColon );
-	driveLetter.Append( drive );
-	iPath.Insert(0, driveLetter );
-	iPath.Append(KEntriesSuffix);
-	}
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//   
-void CHnXmlModelProvider::SetupFailSafeSuitePathL()
-	{
-	iPath.Close();
-	iPath.CreateL(KMaxPath);
-	User::LeaveIfError(iFs.PrivatePath(iPath));
-	TChar drive;
-	TBuf<1> driveLetter;
-	
-	iFs.DriveToChar( EDriveZ, drive );
-	iPath.Insert(0, KColon );
-	driveLetter.Append( drive );
-	iPath.Insert(0, driveLetter );
-	iPath.Append(KSuitesDir);
-	}
-
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-// 
-EXPORT_C void CHnXmlModelProvider::ReloadModelL()
-	{
-	SynchronizeSuitesL();
-	}
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-// 
-void CHnXmlModelProvider::CreateModelL(const TDesC& aSuiteName,
-        RXmlEngDocument& aXmlDoc )
+void CHnXmlModelProvider::CreateModelL( RXmlEngDocument& aXmlDoc )
     {
     MMPERF( ( "CHnXmlModelProvider::CreateModelL IN") );
     MMPERF( ( "    Suite name: %S", &aSuiteName ) );
     
     TBool suiteCollected = EFalse;
-	
-    SetupSuitePathL();	
-    TRAPD( failSafeErr, suiteCollected = CollectSuiteL( aSuiteName, aXmlDoc ));
-    if (failSafeErr)
-    	{
-    	SetupFailSafeSuitePathL();
-    	suiteCollected = CollectSuiteL( aSuiteName, aXmlDoc );
-    	}
+    suiteCollected = CollectSuiteL( aXmlDoc );
     
     if ( !suiteCollected )
         {
         MMPERF(("CHnXmlModelProvider::CreateModelL - suite collected"));
-        CollectItemsL( aSuiteName, aXmlDoc );
+        CollectItemsL( aXmlDoc );
         MMPERF(("CHnXmlModelProvider::CreateModelL - items collected"));
         }
     MMPERF( ( "CHnXmlModelProvider::CreateModelL OUT") );
@@ -795,7 +560,7 @@
         RXmlEngDocument newXmlDoc;
         CleanupClosePushL( newXmlDoc );
         
-        CreateModelL( aSuiteName, newXmlDoc );
+        CreateModelL( newXmlDoc );
         
         #ifdef _DEBUG
             DEBUG(("_MM_:CHnXmlModelProvider::GetModelL _DEBUG IN"));
@@ -814,68 +579,3 @@
     
     return KErrNone;
     }   
-   
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-void CHnXmlModelProvider::SearchPathForSuitesL( const TDesC& aPath )
-	{
-	CDir* fileList = NULL;            
-	iFs.GetDir( aPath, KEntryAttMaskSupported, ESortByName, fileList );  
-	if ( fileList )                        
-		{                
-		CleanupStack::PushL( fileList );      
-		for( TInt i( 0 ); i < fileList->Count(); i++ ) 
-			{  
-			if ( (*fileList)[ i ].IsDir() )
-				{
-				HBufC* suiteName = (*fileList)[i].iName.AllocLC();
-				if ( !iInstSuites.Find(suiteName) )
-					{
-					iInstSuites.InsertL( suiteName );
-					CleanupStack::Pop(suiteName);
-					}
-				else
-					{
-					CleanupStack::PopAndDestroy(suiteName);
-					}
-				}
-			}
-			CleanupStack::PopAndDestroy( fileList );
-		}
-    }
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-void CHnXmlModelProvider::CheckDrivesL()
-    { 
-    TDriveList driveList;
-    User::LeaveIfError( iFs.DriveList( driveList ) );
-    
-    TFixedArray< TInt, KMaxDrives > driveSearchOrder( KDriveSearchOrder, KMaxDrives );
-    for(TInt iterator(0); iterator < driveSearchOrder.Count(); iterator++ )
-     	{        
-        if ( driveList[ driveSearchOrder[ iterator ] ] )
-            {
-            TBuf<KMaxPath> filePath;
-
-            TChar driveLetter;
-            User::LeaveIfError( iFs.DriveToChar( driveSearchOrder[ iterator ], driveLetter ) );  
-            
-            TBuf< KSingleChar > driveLetterConst;
-            driveLetterConst.Append( driveLetter );
-            User::LeaveIfError( iFs.PrivatePath( filePath ) );
-            filePath.Insert( 0, driveLetterConst );
-            filePath.Insert( 1, KColon );
-            filePath.Append( KSuitesDir );
-                         
-            SearchPathForSuitesL( filePath );           
-            }
-    	}
-    
-    SearchPathForSuitesL( iPath );
-    }
-
--- a/menufw/hierarchynavigator/hnmetadatamodel/src/hnxmlsuitefilesreg.cpp	Tue May 25 12:29:32 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,290 +0,0 @@
-/*
-* Copyright (c) 2007-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:  
-*  Version     : %version:  9 % << Don't touch! Updated by Synergy at check-out.
-*
-*/
-
-#include <sysutil.h> 
-#include "hnxmlsuitefilesreg.h"
-#include "hnglobals.h"
-#include "hnconvutils.h"
-#include "menudebug.h"
-#include "hnhelper.inl"
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-TBool CHnXmlSuiteFilesReg::SynchronizeL( RFs & aFs, const TDesC &aSuiteName )
-	{
-	CHnXmlSuiteFilesReg* self = new (ELeave) CHnXmlSuiteFilesReg( aFs );
-	CleanupStack::PushL(self);
-	self->ConstructL( aSuiteName );
-	TBool ret = self->SynchronizeSuiteFilesL();
-	CleanupStack::PopAndDestroy( self );
-	return ret;
-	}
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-CHnXmlSuiteFilesReg::~CHnXmlSuiteFilesReg()
-	{
-	iSuiteName.Close();
-	DestroySuiteFilesMaps();
-	delete iFileMan;
-	}
-   
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-CHnXmlSuiteFilesReg::CHnXmlSuiteFilesReg( RFs & aFs ) : iFs(aFs),
-	iSuiteFiles(&TDesC16Hash, &TDesC16Ident)
-	{
-
-	}
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//   
-HBufC* CHnXmlSuiteFilesReg::GetSuiteInstallPathL()
-	{
-	TBuf<KMaxPath> installPath;	
-	User::LeaveIfError( iFs.PrivatePath(installPath) );
-	TChar drive;
-	TBuf<1> driveLetter;
-	iFs.DriveToChar( EDriveC, drive );
-	installPath.Insert(0, KColon );
-	driveLetter.Append( drive );
-	installPath.Insert(0, driveLetter );
-	installPath.Append(KEntriesSuffix);
-	installPath.Append( iSuiteName );
-	installPath.Append( Kbackslash );
-	return installPath.AllocL();
-	}
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-void CHnXmlSuiteFilesReg::ConstructL( const TDesC &aSuiteName )
-	{
-	iSuiteName.CreateL( aSuiteName );
-	iFileMan = CFileMan::NewL(iFs);
-	}
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-void CHnXmlSuiteFilesReg::DestroySuiteFilesMaps()
-	{
-	DestroyMapValue( iSuiteFiles );
-	iSuiteFiles.Close();
-	}
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-HBufC* CHnXmlSuiteFilesReg::GetSuiteImportDirL( TInt aDriveNumber ) const
-	{
-	TBuf<KMaxPath> outputDir; 
-			
-	TChar driveLetter;
-    User::LeaveIfError( iFs.DriveToChar( aDriveNumber, driveLetter ) );  
-    
-    TBuf< KSingleChar > driveLetterConst;
-    driveLetterConst.Append( driveLetter );
-      
-    User::LeaveIfError( iFs.PrivatePath( outputDir ) );
-
-    outputDir.Insert( 0, driveLetterConst );
-    outputDir.Insert( 1, KColon );
-    outputDir.Append( KSuitesDir );
-    outputDir.Append( iSuiteName );
-    outputDir.Append( Kbackslash );
-    
-    return outputDir.AllocL();
-	}
-
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-void CHnXmlSuiteFilesReg::SearchDrivesForSuiteFilesL()
-    {
-    DestroySuiteFilesMaps();
-    
-    TDriveList driveList;
-    User::LeaveIfError( iFs.DriveList( driveList ) );
-    TFixedArray< TInt, KMaxDrives > driveSearchOrder( KDriveSearchOrder, KMaxDrives );
-    
-    for(TInt iterator(0); iterator < driveSearchOrder.Count(); iterator++ )
-    	{ 
-        if ( driveList[ driveSearchOrder[ iterator ] ] )
-            {
-            RBuf filePath( GetSuiteImportDirL( driveSearchOrder[ iterator ] ) );
-            CleanupClosePushL( filePath );
-            SearchDirForSuiteFilesL(filePath);
-            CleanupStack::PopAndDestroy( &filePath );
-            }
-    	} 
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-void CHnXmlSuiteFilesReg::SearchDirForSuiteFilesL( const TDesC& aSuitePath )
-    {
-    CDir* fileList = NULL;
-    if (!iFs.GetDir( aSuitePath, KEntryAttMaskSupported, ESortByName, fileList ))
-	    {
-	    CleanupStack::PushL( fileList );
-        for( TInt i( 0 ); i < fileList->Count(); i++ ) 
-            {  
-            if (! (*fileList)[i].IsDir() )
-        	    {
-        	    AddSuiteFileToMapL( aSuitePath, (*fileList)[i] );
-        	    }
-            }
-        CleanupStack::PopAndDestroy( fileList );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-void CHnXmlSuiteFilesReg::AddSuiteFileToMapL( const TDesC& aDir, const TEntry& aFile )
-	{
-    THnFileInfo fileInfo = { aFile.iName, aDir, aFile.iModified, aFile.iSize };
-	fileInfo.iFilePath.Append( aFile.iName );
-		
-	THnFileInfo** existingFileInfo = iSuiteFiles.Find( &aFile.iName );
-	
-    TInt newFileDrive( KErrNotFound );
-    iFs.CharToDrive( fileInfo.iFilePath[0], newFileDrive );
-    
-    TBool newerThanExisting( EFalse );
-	TInt existingFileDrive( KErrNotFound );
-	if ( existingFileInfo )
-		{
-		iFs.CharToDrive( (*existingFileInfo)->iFilePath[0], existingFileDrive);
-        newerThanExisting =
-                (*existingFileInfo)->iLastModified < fileInfo.iLastModified &&
-                newFileDrive != EDriveZ;
-		}
-	
-    if ( !existingFileInfo || newerThanExisting || existingFileDrive == EDriveZ )
-        {
-        if( existingFileInfo )
-            {
-            iSuiteFiles.Remove( &aFile.iName );
-            }
-        THnFileInfo* fileInfoPointer = new (ELeave) THnFileInfo( fileInfo );
-        iSuiteFiles.InsertL( &fileInfo.iFileName, fileInfoPointer );
-        }
-	}
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-TInt CHnXmlSuiteFilesReg::CalculateCurrentSuiteSizeL()
-	{
-	RBuf suiteInstallDir( GetSuiteInstallPathL() );
-	CleanupClosePushL( suiteInstallDir );
-	CDir* suiteFileList;                  
-	iFs.GetDir( suiteInstallDir, KEntryAttMaskSupported, ESortByName, suiteFileList);
-	CleanupStack::PushL(suiteFileList);
-
-	TInt suiteSize(0); 
-	for( TInt i(0); suiteFileList && i< suiteFileList->Count(); i++ )  
-		{
-		suiteSize+= (*suiteFileList)[i].iSize;
-		}
-	CleanupStack::PopAndDestroy( suiteFileList );
-	CleanupStack::PopAndDestroy( &suiteInstallDir );
-	return suiteSize;
-	}
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-TInt CHnXmlSuiteFilesReg::CalculateSynchronizationSuiteSize()
-	{
-	TInt retSize( 0 );
-	
-	THashMapIter< const TDesC*, THnFileInfo* > iter( iSuiteFiles );
-	
-	while ( iter.NextKey() )
-		{
-		const THnFileInfo& fileInfo =  **(iter.CurrentValue());
-		retSize += fileInfo.iSize;
-		}
-	
-	return retSize;
-	}
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-TBool CHnXmlSuiteFilesReg::SynchronizeSuiteFilesL()
-	{
-	TBool ret( EFalse );
-	SearchDrivesForSuiteFilesL();
-
-	TInt spaceNeeded = CalculateSynchronizationSuiteSize() -
-		CalculateCurrentSuiteSizeL();
-	
-	RBuf suiteInstallationDir( GetSuiteInstallPathL() );
-	CleanupClosePushL( suiteInstallationDir );
-	iFileMan->RmDir( suiteInstallationDir );
-	if( iSuiteFiles.Count() && ( spaceNeeded < 0 || !SysUtil::DiskSpaceBelowCriticalLevelL(
-	        &iFs, spaceNeeded , EDriveC ) ) )
-        {
-        THashMapIter< const TDesC*, THnFileInfo* > iter( iSuiteFiles );
-        iFs.MkDirAll( suiteInstallationDir );
-        while( iter.NextKey() )
-            {
-            const THnFileInfo& fileInfo =  **(iter.CurrentValue());
-            TBuf<KMaxPath> filePath( suiteInstallationDir );
-            filePath.Append( fileInfo.iFileName );
-            if( filePath.Compare( fileInfo.iFilePath ) )
-                {
-                if( BaflUtils::FileExists( iFs, filePath ) )
-                    {
-                    iFs.SetAtt( filePath, NULL, KEntryAttReadOnly );
-                    iFs.Delete( filePath );
-                    }
-                iFileMan->Copy(
-                        fileInfo.iFilePath,
-                        filePath, CFileMan::EOverWrite );
-                ret = ETrue;
-                }
-            }
-        }
-	CleanupStack::PopAndDestroy( &suiteInstallationDir );
-	return ret;
-	}
--- a/menufw/hierarchynavigator/hnpresentationmodel/bwins/hnpresentationmodelu.def	Tue May 25 12:29:32 2010 +0300
+++ b/menufw/hierarchynavigator/hnpresentationmodel/bwins/hnpresentationmodelu.def	Wed Jun 09 09:29:04 2010 +0300
@@ -8,69 +8,69 @@
 	?SetDimmed@CHnButtonModel@@QAEXH@Z @ 7 NONAME ; void CHnButtonModel::SetDimmed(int)
 	?GetModelItemCount@CHnItemsOrder@@QAEHXZ @ 8 NONAME ; int CHnItemsOrder::GetModelItemCount(void)
 	?SetEmptyTextL@CHnSuiteModel@@QAEXABVTDesC16@@@Z @ 9 NONAME ; void CHnSuiteModel::SetEmptyTextL(class TDesC16 const &)
-	?IsActive@CHnSuiteModel@@QAEHXZ @ 10 NONAME ; int CHnSuiteModel::IsActive(void)
-	?Get@CHnSuitesStack@@QAEPAVCHnSuiteModel@@H@Z @ 11 NONAME ; class CHnSuiteModel * CHnSuitesStack::Get(int)
-	?SetActiveL@CHnSuiteModel@@QAEXH@Z @ 12 NONAME ; void CHnSuiteModel::SetActiveL(int)
-	?IsItemMoveLocked@CHnSuiteModel@@QAEHH@Z @ 13 NONAME ; int CHnSuiteModel::IsItemMoveLocked(int)
-	?NewL@CHnAttributeImage@@SAPAV1@XZ @ 14 NONAME ; class CHnAttributeImage * CHnAttributeImage::NewL(void)
-	?CommandName@CHnActionModel@@QBEABVTDesC8@@XZ @ 15 NONAME ; class TDesC8 const & CHnActionModel::CommandName(void) const
-	?SetServiceL@CHnActionModel@@QAEXABVTDesC8@@@Z @ 16 NONAME ; void CHnActionModel::SetServiceL(class TDesC8 const &)
-	?SetBitmap@CHnAttributeImage@@QAEXPAVTLiwVariant@@@Z @ 17 NONAME ; void CHnAttributeImage::SetBitmap(class TLiwVariant *)
-	?SetTemplateL@CHnSuiteModel@@QAEXABVTDesC8@@@Z @ 18 NONAME ; void CHnSuiteModel::SetTemplateL(class TDesC8 const &)
-	?UpdateItemTemplateL@CHnSuiteModel@@QAEXH@Z @ 19 NONAME ; void CHnSuiteModel::UpdateItemTemplateL(int)
-	?SuiteEvaluated@CHnItemsOrder@@QAEXXZ @ 20 NONAME ; void CHnItemsOrder::SuiteEvaluated(void)
-	?Name@CHnAttributeBase@@QBEABVTDesC8@@XZ @ 21 NONAME ; class TDesC8 const & CHnAttributeBase::Name(void) const
-	?SetCustomId@CHnItemModel@@QAEX_J@Z @ 22 NONAME ; void CHnItemModel::SetCustomId(long long)
-	?CustomId@CHnItemModel@@QAE_JXZ @ 23 NONAME ; long long CHnItemModel::CustomId(void)
-	??1CHnSuiteModel@@UAE@XZ @ 24 NONAME ; CHnSuiteModel::~CHnSuiteModel(void)
-	?GetActions@CHnItemModel@@QAEPAV?$CArrayPtr@VCHnActionModel@@@@H@Z @ 25 NONAME ; class CArrayPtr<class CHnActionModel> * CHnItemModel::GetActions(int)
-	?SetGulIcon@CHnIconHolder@@QAEXPAVCGulIcon@@@Z @ 26 NONAME ; void CHnIconHolder::SetGulIcon(class CGulIcon *)
-	?SetValueL@CHnAttributeText@@QAEXABVTDesC8@@@Z @ 27 NONAME ; void CHnAttributeText::SetValueL(class TDesC8 const &)
-	?GetItemIdAt@CHnItemsOrder@@QAEHHH@Z @ 28 NONAME ; int CHnItemsOrder::GetItemIdAt(int, int)
-	?ClearAttributesL@CHnItemModel@@QAEXXZ @ 29 NONAME ; void CHnItemModel::ClearAttributesL(void)
-	?NewLC@CHnAttrImgProvFileImage@@SAPAV1@ABVTDesC16@@@Z @ 30 NONAME ; class CHnAttrImgProvFileImage * CHnAttrImgProvFileImage::NewLC(class TDesC16 const &)
-	?ExitMode@CHnSuiteModel@@QAE?AW4TExitMode@@XZ @ 31 NONAME ; enum TExitMode CHnSuiteModel::ExitMode(void)
-	?ServiceMode@CHnActionModel@@QBE?AW4TServiceMode@@XZ @ 32 NONAME ; enum TServiceMode CHnActionModel::ServiceMode(void) const
-	?GetIcon@CHnButtonModel@@QBEPAVCGulIcon@@XZ @ 33 NONAME ; class CGulIcon * CHnButtonModel::GetIcon(void) const
-	?GetSuiteHighlight@CHnSuiteModel@@QAEHXZ @ 34 NONAME ; int CHnSuiteModel::GetSuiteHighlight(void)
-	?PopSuiteModelL@CHnSuiteModelContainer@@QAEPAVCHnSuiteModel@@ABVTDesC16@@@Z @ 35 NONAME ; class CHnSuiteModel * CHnSuiteModelContainer::PopSuiteModelL(class TDesC16 const &)
-	?NewL@CHnSuiteModelContainer@@SAPAV1@AAVMHnMdModelEventObserver@@AAVMHnControllerInterface@@@Z @ 36 NONAME ; class CHnSuiteModelContainer * CHnSuiteModelContainer::NewL(class MHnMdModelEventObserver &, class MHnControllerInterface &)
-	?CommandLC@CHnActionModel@@QBEPAVCLiwGenericParamList@@XZ @ 37 NONAME ; class CLiwGenericParamList * CHnActionModel::CommandLC(void) const
-	?InsertItemIdToL@CHnItemsOrder@@QAEXHHH@Z @ 38 NONAME ; void CHnItemsOrder::InsertItemIdToL(int, int, int)
-	?SetBitmapId@CHnAttributeImage@@QAEXH@Z @ 39 NONAME ; void CHnAttributeImage::SetBitmapId(int)
-	?RefreshMulModelL@CHnSuiteModel@@QAEXH@Z @ 40 NONAME ; void CHnSuiteModel::RefreshMulModelL(int)
-	?UnregisterSuiteObserver@CHnSuiteModel@@QAEXPAVMHnSuiteObserver@@@Z @ 41 NONAME ; void CHnSuiteModel::UnregisterSuiteObserver(class MHnSuiteObserver *)
-	?SetApplicationUid@CHnAttributeImage@@QAEXVTUid@@@Z @ 42 NONAME ; void CHnAttributeImage::SetApplicationUid(class TUid)
-	?GetGulIcon@CHnIconHolder@@QBEPAVCGulIcon@@XZ @ 43 NONAME ; class CGulIcon * CHnIconHolder::GetGulIcon(void) const
-	?Command@CHnMenuItemModel@@QAEHXZ @ 44 NONAME ; int CHnMenuItemModel::Command(void)
-	?GetButton@CHnToolbarModel@@QBEPBVCHnButtonModel@@H@Z @ 45 NONAME ; class CHnButtonModel const * CHnToolbarModel::GetButton(int) const
-	?SetNameL@CHnAttributeBase@@QAEXABVTDesC8@@@Z @ 46 NONAME ; void CHnAttributeBase::SetNameL(class TDesC8 const &)
-	?GetSuiteModel@CHnSuiteModelContainer@@QAEPAVCHnSuiteModel@@ABVTDesC16@@@Z @ 47 NONAME ; class CHnSuiteModel * CHnSuiteModelContainer::GetSuiteModel(class TDesC16 const &)
-	?SetFileNameSrc@CHnAttributeImage@@QAEXPAVHBufC16@@@Z @ 48 NONAME ; void CHnAttributeImage::SetFileNameSrc(class HBufC16 *)
-	?PushL@CHnSuitesStack@@QAEHPAVCHnSuiteModel@@@Z @ 49 NONAME ; int CHnSuitesStack::PushL(class CHnSuiteModel *)
-	?OfferHnEventL@CHnSuiteModelContainer@@QAEHHHPAVCLiwGenericParamList@@@Z @ 50 NONAME ; int CHnSuiteModelContainer::OfferHnEventL(int, int, class CLiwGenericParamList *)
-	?RemoveLiwObjects@CHnSuiteModelContainer@@QAEXXZ @ 51 NONAME ; void CHnSuiteModelContainer::RemoveLiwObjects(void)
-	?HasButtons@CHnToolbarModel@@QBEHXZ @ 52 NONAME ; int CHnToolbarModel::HasButtons(void) const
-	?GetItemUid@CHnItemModel@@QAE?AVTUid@@XZ @ 53 NONAME ; class TUid CHnItemModel::GetItemUid(void)
-	?AddItemL@CHnSuiteModel@@QAEXHPAVCHnItemModel@@HH@Z @ 54 NONAME ; void CHnSuiteModel::AddItemL(int, class CHnItemModel *, int, int)
-	?GetDimmed@CHnButtonModel@@QBEHXZ @ 55 NONAME ; int CHnButtonModel::GetDimmed(void) const
-	?GetItemsOrder@CHnSuiteModel@@QAEPAVCHnItemsOrder@@XZ @ 56 NONAME ; class CHnItemsOrder * CHnSuiteModel::GetItemsOrder(void)
-	?PushNewSuiteModelL@CHnSuiteModelContainer@@QAEXABVTDesC16@@@Z @ 57 NONAME ; void CHnSuiteModelContainer::PushNewSuiteModelL(class TDesC16 const &)
-	?Interface@CHnActionModel@@QBEABVTDesC8@@XZ @ 58 NONAME ; class TDesC8 const & CHnActionModel::Interface(void) const
-	?GetAttribute@CHnItemModel@@QAEPAVCHnAttributeBase@@ABVTDesC8@@@Z @ 59 NONAME ; class CHnAttributeBase * CHnItemModel::GetAttribute(class TDesC8 const &)
-	?SetInterfaceL@CHnActionModel@@QAEXABVTDesC8@@@Z @ 60 NONAME ; void CHnActionModel::SetInterfaceL(class TDesC8 const &)
-	?HasNext@CHnMenuItemModel@@UAEHXZ @ 61 NONAME ; int CHnMenuItemModel::HasNext(void)
-	?Type@CHnAttributeBase@@QAE?AW4TAttributeType@@XZ @ 62 NONAME ; enum TAttributeType CHnAttributeBase::Type(void)
-	?RegisterSuiteObserverL@CHnSuiteModel@@QAEXPAVMHnSuiteObserver@@W4TThreadPriority@@@Z @ 63 NONAME ; void CHnSuiteModel::RegisterSuiteObserverL(class MHnSuiteObserver *, enum TThreadPriority)
-	?GetItemModelsCount@CHnSuiteModel@@QAEHXZ @ 64 NONAME ; int CHnSuiteModel::GetItemModelsCount(void)
-	?SetToolbarModel@CHnItemModel@@QAEXPAVCHnToolbarModel@@@Z @ 65 NONAME ; void CHnItemModel::SetToolbarModel(class CHnToolbarModel *)
-	?SetServiceModeL@CHnActionModel@@QAEXW4TServiceMode@@@Z @ 66 NONAME ; void CHnActionModel::SetServiceModeL(enum TServiceMode)
-	?SetMenuItemModel@CHnItemModel@@QAEXPAVCHnMenuItemModel@@@Z @ 67 NONAME ; void CHnItemModel::SetMenuItemModel(class CHnMenuItemModel *)
-	?SetHelpTextL@CHnButtonModel@@QAEXABVTDesC16@@@Z @ 68 NONAME ; void CHnButtonModel::SetHelpTextL(class TDesC16 const &)
-	?NewLC@CHnButtonModel@@SAPAV1@H@Z @ 69 NONAME ; class CHnButtonModel * CHnButtonModel::NewLC(int)
-	??ACHnItemsOrder@@QAEHH@Z @ 70 NONAME ; int CHnItemsOrder::operator[](int)
+	?Get@CHnSuitesStack@@QAEPAVCHnSuiteModel@@H@Z @ 10 NONAME ; class CHnSuiteModel * CHnSuitesStack::Get(int)
+	?IsItemMoveLocked@CHnSuiteModel@@QAEHH@Z @ 11 NONAME ; int CHnSuiteModel::IsItemMoveLocked(int)
+	?NewL@CHnAttributeImage@@SAPAV1@XZ @ 12 NONAME ; class CHnAttributeImage * CHnAttributeImage::NewL(void)
+	?CommandName@CHnActionModel@@QBEABVTDesC8@@XZ @ 13 NONAME ; class TDesC8 const & CHnActionModel::CommandName(void) const
+	?SetServiceL@CHnActionModel@@QAEXABVTDesC8@@@Z @ 14 NONAME ; void CHnActionModel::SetServiceL(class TDesC8 const &)
+	?SetBitmap@CHnAttributeImage@@QAEXPAVTLiwVariant@@@Z @ 15 NONAME ; void CHnAttributeImage::SetBitmap(class TLiwVariant *)
+	?SetTemplateL@CHnSuiteModel@@QAEXABVTDesC8@@@Z @ 16 NONAME ; void CHnSuiteModel::SetTemplateL(class TDesC8 const &)
+	?UpdateItemTemplateL@CHnSuiteModel@@QAEXH@Z @ 17 NONAME ; void CHnSuiteModel::UpdateItemTemplateL(int)
+	?SuiteEvaluated@CHnItemsOrder@@QAEXXZ @ 18 NONAME ; void CHnItemsOrder::SuiteEvaluated(void)
+	?Name@CHnAttributeBase@@QBEABVTDesC8@@XZ @ 19 NONAME ; class TDesC8 const & CHnAttributeBase::Name(void) const
+	?SetCustomId@CHnItemModel@@QAEX_J@Z @ 20 NONAME ; void CHnItemModel::SetCustomId(long long)
+	?CustomId@CHnItemModel@@QAE_JXZ @ 21 NONAME ; long long CHnItemModel::CustomId(void)
+	??1CHnSuiteModel@@UAE@XZ @ 22 NONAME ; CHnSuiteModel::~CHnSuiteModel(void)
+	?GetActions@CHnItemModel@@QAEPAV?$CArrayPtr@VCHnActionModel@@@@H@Z @ 23 NONAME ; class CArrayPtr<class CHnActionModel> * CHnItemModel::GetActions(int)
+	?SetGulIcon@CHnIconHolder@@QAEXPAVCGulIcon@@@Z @ 24 NONAME ; void CHnIconHolder::SetGulIcon(class CGulIcon *)
+	?SetValueL@CHnAttributeText@@QAEXABVTDesC8@@@Z @ 25 NONAME ; void CHnAttributeText::SetValueL(class TDesC8 const &)
+	?GetItemIdAt@CHnItemsOrder@@QAEHHH@Z @ 26 NONAME ; int CHnItemsOrder::GetItemIdAt(int, int)
+	?ClearAttributesL@CHnItemModel@@QAEXXZ @ 27 NONAME ; void CHnItemModel::ClearAttributesL(void)
+	?NewLC@CHnAttrImgProvFileImage@@SAPAV1@ABVTDesC16@@@Z @ 28 NONAME ; class CHnAttrImgProvFileImage * CHnAttrImgProvFileImage::NewLC(class TDesC16 const &)
+	?ExitMode@CHnSuiteModel@@QAE?AW4TExitMode@@XZ @ 29 NONAME ; enum TExitMode CHnSuiteModel::ExitMode(void)
+	?ServiceMode@CHnActionModel@@QBE?AW4TServiceMode@@XZ @ 30 NONAME ; enum TServiceMode CHnActionModel::ServiceMode(void) const
+	?GetIcon@CHnButtonModel@@QBEPAVCGulIcon@@XZ @ 31 NONAME ; class CGulIcon * CHnButtonModel::GetIcon(void) const
+	?GetSuiteHighlight@CHnSuiteModel@@QAEHXZ @ 32 NONAME ; int CHnSuiteModel::GetSuiteHighlight(void)
+	?PopSuiteModelL@CHnSuiteModelContainer@@QAEPAVCHnSuiteModel@@ABVTDesC16@@@Z @ 33 NONAME ; class CHnSuiteModel * CHnSuiteModelContainer::PopSuiteModelL(class TDesC16 const &)
+	?NewL@CHnSuiteModelContainer@@SAPAV1@AAVMHnMdModelEventObserver@@AAVMHnControllerInterface@@@Z @ 34 NONAME ; class CHnSuiteModelContainer * CHnSuiteModelContainer::NewL(class MHnMdModelEventObserver &, class MHnControllerInterface &)
+	?CommandLC@CHnActionModel@@QBEPAVCLiwGenericParamList@@XZ @ 35 NONAME ; class CLiwGenericParamList * CHnActionModel::CommandLC(void) const
+	?InsertItemIdToL@CHnItemsOrder@@QAEXHHH@Z @ 36 NONAME ; void CHnItemsOrder::InsertItemIdToL(int, int, int)
+	?SetBitmapId@CHnAttributeImage@@QAEXH@Z @ 37 NONAME ; void CHnAttributeImage::SetBitmapId(int)
+	?RefreshMulModelL@CHnSuiteModel@@QAEXH@Z @ 38 NONAME ; void CHnSuiteModel::RefreshMulModelL(int)
+	?UnregisterSuiteObserver@CHnSuiteModel@@QAEXPAVMHnSuiteObserver@@@Z @ 39 NONAME ; void CHnSuiteModel::UnregisterSuiteObserver(class MHnSuiteObserver *)
+	?SetApplicationUid@CHnAttributeImage@@QAEXVTUid@@@Z @ 40 NONAME ; void CHnAttributeImage::SetApplicationUid(class TUid)
+	?GetGulIcon@CHnIconHolder@@QBEPAVCGulIcon@@XZ @ 41 NONAME ; class CGulIcon * CHnIconHolder::GetGulIcon(void) const
+	?Command@CHnMenuItemModel@@QAEHXZ @ 42 NONAME ; int CHnMenuItemModel::Command(void)
+	?GetButton@CHnToolbarModel@@QBEPBVCHnButtonModel@@H@Z @ 43 NONAME ; class CHnButtonModel const * CHnToolbarModel::GetButton(int) const
+	?SetNameL@CHnAttributeBase@@QAEXABVTDesC8@@@Z @ 44 NONAME ; void CHnAttributeBase::SetNameL(class TDesC8 const &)
+	?GetSuiteModel@CHnSuiteModelContainer@@QAEPAVCHnSuiteModel@@ABVTDesC16@@@Z @ 45 NONAME ; class CHnSuiteModel * CHnSuiteModelContainer::GetSuiteModel(class TDesC16 const &)
+	?SetFileNameSrc@CHnAttributeImage@@QAEXPAVHBufC16@@@Z @ 46 NONAME ; void CHnAttributeImage::SetFileNameSrc(class HBufC16 *)
+	?PushL@CHnSuitesStack@@QAEHPAVCHnSuiteModel@@@Z @ 47 NONAME ; int CHnSuitesStack::PushL(class CHnSuiteModel *)
+	?OfferHnEventL@CHnSuiteModelContainer@@QAEHHHPAVCLiwGenericParamList@@@Z @ 48 NONAME ; int CHnSuiteModelContainer::OfferHnEventL(int, int, class CLiwGenericParamList *)
+	?RemoveLiwObjects@CHnSuiteModelContainer@@QAEXXZ @ 49 NONAME ; void CHnSuiteModelContainer::RemoveLiwObjects(void)
+	?HasButtons@CHnToolbarModel@@QBEHXZ @ 50 NONAME ; int CHnToolbarModel::HasButtons(void) const
+	?GetItemUid@CHnItemModel@@QAE?AVTUid@@XZ @ 51 NONAME ; class TUid CHnItemModel::GetItemUid(void)
+	?AddItemL@CHnSuiteModel@@QAEXHPAVCHnItemModel@@HH@Z @ 52 NONAME ; void CHnSuiteModel::AddItemL(int, class CHnItemModel *, int, int)
+	?GetDimmed@CHnButtonModel@@QBEHXZ @ 53 NONAME ; int CHnButtonModel::GetDimmed(void) const
+	?GetItemsOrder@CHnSuiteModel@@QAEPAVCHnItemsOrder@@XZ @ 54 NONAME ; class CHnItemsOrder * CHnSuiteModel::GetItemsOrder(void)
+	?PushNewSuiteModelL@CHnSuiteModelContainer@@QAEXABVTDesC16@@@Z @ 55 NONAME ; void CHnSuiteModelContainer::PushNewSuiteModelL(class TDesC16 const &)
+	?Interface@CHnActionModel@@QBEABVTDesC8@@XZ @ 56 NONAME ; class TDesC8 const & CHnActionModel::Interface(void) const
+	?GetAttribute@CHnItemModel@@QAEPAVCHnAttributeBase@@ABVTDesC8@@@Z @ 57 NONAME ; class CHnAttributeBase * CHnItemModel::GetAttribute(class TDesC8 const &)
+	?GetNextSpecific@CHnMenuItemModel@@UAEPAV1@XZ @ 58 NONAME ; class CHnMenuItemModel * CHnMenuItemModel::GetNextSpecific(void)
+	?SetInterfaceL@CHnActionModel@@QAEXABVTDesC8@@@Z @ 59 NONAME ; void CHnActionModel::SetInterfaceL(class TDesC8 const &)
+	?HasNext@CHnMenuItemModel@@UAEHXZ @ 60 NONAME ; int CHnMenuItemModel::HasNext(void)
+	?Type@CHnAttributeBase@@QAE?AW4TAttributeType@@XZ @ 61 NONAME ; enum TAttributeType CHnAttributeBase::Type(void)
+	?RegisterSuiteObserverL@CHnSuiteModel@@QAEXPAVMHnSuiteObserver@@W4TThreadPriority@@@Z @ 62 NONAME ; void CHnSuiteModel::RegisterSuiteObserverL(class MHnSuiteObserver *, enum TThreadPriority)
+	?GetItemModelsCount@CHnSuiteModel@@QAEHXZ @ 63 NONAME ; int CHnSuiteModel::GetItemModelsCount(void)
+	?SetToolbarModel@CHnItemModel@@QAEXPAVCHnToolbarModel@@@Z @ 64 NONAME ; void CHnItemModel::SetToolbarModel(class CHnToolbarModel *)
+	?SetServiceModeL@CHnActionModel@@QAEXW4TServiceMode@@@Z @ 65 NONAME ; void CHnActionModel::SetServiceModeL(enum TServiceMode)
+	?SetMenuItemModel@CHnItemModel@@QAEXPAVCHnMenuItemModel@@@Z @ 66 NONAME ; void CHnItemModel::SetMenuItemModel(class CHnMenuItemModel *)
+	?SetHelpTextL@CHnButtonModel@@QAEXABVTDesC16@@@Z @ 67 NONAME ; void CHnButtonModel::SetHelpTextL(class TDesC16 const &)
+	?NewLC@CHnButtonModel@@SAPAV1@H@Z @ 68 NONAME ; class CHnButtonModel * CHnButtonModel::NewLC(int)
+	??ACHnItemsOrder@@QAEHH@Z @ 69 NONAME ; int CHnItemsOrder::operator[](int)
+	?GetToolbarModel@CHnItemModel@@QBEPBVCHnToolbarModel@@XZ @ 70 NONAME ; class CHnToolbarModel const * CHnItemModel::GetToolbarModel(void) const
 	?ClearFlags@CHnItemModel@@QAEXXZ @ 71 NONAME ; void CHnItemModel::ClearFlags(void)
-	?GetToolbarModel@CHnItemModel@@QBEPBVCHnToolbarModel@@XZ @ 72 NONAME ; class CHnToolbarModel const * CHnItemModel::GetToolbarModel(void) const
+	?SetMenuItemType@CHnMenuItemModel@@QAEXW4THnMenuItemType@1@@Z @ 72 NONAME ; void CHnMenuItemModel::SetMenuItemType(enum CHnMenuItemModel::THnMenuItemType)
 	?GetActions@CHnSuiteModel@@QAEPAV?$CArrayPtr@VCHnActionModel@@@@H@Z @ 73 NONAME ; class CArrayPtr<class CHnActionModel> * CHnSuiteModel::GetActions(int)
 	?WidgetType@CHnSuiteModel@@QBEHXZ @ 74 NONAME ; int CHnSuiteModel::WidgetType(void) const
 	?Reset@CHnMenuItemModel@@UAEXXZ @ 75 NONAME ; void CHnMenuItemModel::Reset(void)
@@ -137,52 +137,49 @@
 	?SetMifFile@CHnAttributeImage@@QAEXPAVHBufC16@@@Z @ 136 NONAME ; void CHnAttributeImage::SetMifFile(class HBufC16 *)
 	?GetSuiteModelCount@CHnSuiteModelContainer@@QBEHXZ @ 137 NONAME ; int CHnSuiteModelContainer::GetSuiteModelCount(void) const
 	?HasToolbar@CHnSuiteModel@@QBEHXZ @ 138 NONAME ; int CHnSuiteModel::HasToolbar(void) const
-	?SetAttributeL@CHnItemModel@@QAEXPAVCHnAttributeBase@@@Z @ 139 NONAME ; void CHnItemModel::SetAttributeL(class CHnAttributeBase *)
-	?SetEventId@CHnButtonModel@@QAEXH@Z @ 140 NONAME ; void CHnButtonModel::SetEventId(int)
-	?GetLastSuiteModel@CHnSuiteModelContainer@@QAEPAVCHnSuiteModel@@XZ @ 141 NONAME ; class CHnSuiteModel * CHnSuiteModelContainer::GetLastSuiteModel(void)
-	?NewL@CHnAttrImgProvSvgImage@@SAPAV1@ABVTDesC16@@@Z @ 142 NONAME ; class CHnAttrImgProvSvgImage * CHnAttrImgProvSvgImage::NewL(class TDesC16 const &)
-	?RemoveItemL@CHnSuiteModel@@QAEXH@Z @ 143 NONAME ; void CHnSuiteModel::RemoveItemL(int)
-	?GetTemplate@CHnItemModel@@QAEABVTDesC8@@XZ @ 144 NONAME ; class TDesC8 const & CHnItemModel::GetTemplate(void)
-	?SetMaskId@CHnAttributeImage@@QAEXH@Z @ 145 NONAME ; void CHnAttributeImage::SetMaskId(int)
-	?GetActions@CHnSuiteModel@@QAEAAV?$RHashMap@HPAV?$CArrayPtr@VCHnActionModel@@@@@@XZ @ 146 NONAME ; class RHashMap<int, class CArrayPtr<class CHnActionModel> *> & CHnSuiteModel::GetActions(void)
-	?GetItemType@CHnItemModel@@QAE?AW4TMcsItemType@@XZ @ 147 NONAME ; enum TMcsItemType CHnItemModel::GetItemType(void)
-	?GetButtonText@CHnButtonModel@@QBEABVTDesC16@@XZ @ 148 NONAME ; class TDesC16 const & CHnButtonModel::GetButtonText(void) const
-	?NewL@CHnAttributeText@@SAPAV1@XZ @ 149 NONAME ; class CHnAttributeText * CHnAttributeText::NewL(void)
-	?GetNext@CHnMenuItemModel@@UAEPAV1@XZ @ 150 NONAME ; class CHnMenuItemModel * CHnMenuItemModel::GetNext(void)
-	?DefineModelItemCountL@CHnItemsOrder@@QAEXH@Z @ 151 NONAME ; void CHnItemsOrder::DefineModelItemCountL(int)
-	?SuiteEvaluationFinishedL@CHnSuiteModel@@QAEHXZ @ 152 NONAME ; int CHnSuiteModel::SuiteEvaluationFinishedL(void)
-	?ItemEvaluationFinishedL@CHnSuiteModel@@QAEHH@Z @ 153 NONAME ; int CHnSuiteModel::ItemEvaluationFinishedL(int)
-	?NewL@CHnMenuItemModel@@SAPAV1@ABVTDesC16@@@Z @ 154 NONAME ; class CHnMenuItemModel * CHnMenuItemModel::NewL(class TDesC16 const &)
-	?ReorderItemsL@CHnSuiteModel@@QAEHHH@Z @ 155 NONAME ; int CHnSuiteModel::ReorderItemsL(int, int)
-	?GetIdsForL@CHnItemsOrder@@QAEXHAAV?$RArray@H@@@Z @ 156 NONAME ; void CHnItemsOrder::GetIdsForL(int, class RArray<int> &)
-	?NewLC@CHnAttrImgProvThemeMif@@SAPAV1@VTAknsItemID@@ABVTDesC16@@HH@Z @ 157 NONAME ; class CHnAttrImgProvThemeMif * CHnAttrImgProvThemeMif::NewLC(class TAknsItemID, class TDesC16 const &, int, int)
-	?SetWidgetType@CHnSuiteModel@@QAEXW4THnSuiteWidgetType@@@Z @ 158 NONAME ; void CHnSuiteModel::SetWidgetType(enum THnSuiteWidgetType)
-	?NotifyObserversL@CHnSuiteModel@@QAEXW4THnCustomSuiteEvent@@@Z @ 159 NONAME ; void CHnSuiteModel::NotifyObserversL(enum THnCustomSuiteEvent)
-	?DeleteAllActionModels@CHnItemModel@@QAEXXZ @ 160 NONAME ; void CHnItemModel::DeleteAllActionModels(void)
-	?SetSuiteHighlightL@CHnSuiteModel@@QAEXH@Z @ 161 NONAME ; void CHnSuiteModel::SetSuiteHighlightL(int)
-	?SetCustomId@CHnSuiteModel@@QAEX_J@Z @ 162 NONAME ; void CHnSuiteModel::SetCustomId(long long)
-	?SetCommandNameL@CHnActionModel@@QAEXABVTDesC8@@@Z @ 163 NONAME ; void CHnActionModel::SetCommandNameL(class TDesC8 const &)
-	?NewLC@CHnItemsOrder@@SAPAV1@XZ @ 164 NONAME ; class CHnItemsOrder * CHnItemsOrder::NewLC(void)
-	?SetCommand@CHnActionModel@@QAEXPAVCHnMdBaseKey@@@Z @ 165 NONAME ; void CHnActionModel::SetCommand(class CHnMdBaseKey *)
-	?NewL@CHnAttrImgProvAppImage@@SAPAV1@VTUid@@@Z @ 166 NONAME ; class CHnAttrImgProvAppImage * CHnAttrImgProvAppImage::NewL(class TUid)
-	?NewLC@CHnAttributeText@@SAPAV1@XZ @ 167 NONAME ; class CHnAttributeText * CHnAttributeText::NewLC(void)
-	?NewLC@CHnSuiteModelContainer@@SAPAV1@AAVMHnMdModelEventObserver@@AAVMHnControllerInterface@@@Z @ 168 NONAME ; class CHnSuiteModelContainer * CHnSuiteModelContainer::NewLC(class MHnMdModelEventObserver &, class MHnControllerInterface &)
-	?IsRunning@CHnItemModel@@QAEHXZ @ 169 NONAME ; int CHnItemModel::IsRunning(void)
-	?NewL@CHnActionModel@@SAPAV1@XZ @ 170 NONAME ; class CHnActionModel * CHnActionModel::NewL(void)
-	?AddButtonL@CHnToolbarModel@@QAEXPAVCHnButtonModel@@@Z @ 171 NONAME ; void CHnToolbarModel::AddButtonL(class CHnButtonModel *)
-	?SetItemUidL@CHnItemModel@@QAEXABVTDesC8@@@Z @ 172 NONAME ; void CHnItemModel::SetItemUidL(class TDesC8 const &)
-	?SetType@CHnItemModel@@QAEXABVTDesC8@@@Z @ 173 NONAME ; void CHnItemModel::SetType(class TDesC8 const &)
-	?SetSkinId@CHnAttributeImage@@QAEXVTAknsItemID@@@Z @ 174 NONAME ; void CHnAttributeImage::SetSkinId(class TAknsItemID)
-	?NameL@CHnMenuItemModel@@QAEABVTDesC16@@XZ @ 175 NONAME ; class TDesC16 const & CHnMenuItemModel::NameL(void)
-	?PopL@CHnSuitesStack@@QAEPAVCHnSuiteModel@@XZ @ 176 NONAME ; class CHnSuiteModel * CHnSuitesStack::PopL(void)
-	?SetVisibleL@CHnSuiteModel@@QAEXH@Z @ 177 NONAME ; void CHnSuiteModel::SetVisibleL(int)
-	?SetIcon@CHnButtonModel@@QAEXPAVCHnAttributeBase@@@Z @ 178 NONAME ; void CHnButtonModel::SetIcon(class CHnAttributeBase *)
-	?NewL@CHnAttrImgProvThemeMif@@SAPAV1@VTAknsItemID@@ABVTDesC16@@HH@Z @ 179 NONAME ; class CHnAttrImgProvThemeMif * CHnAttrImgProvThemeMif::NewL(class TAknsItemID, class TDesC16 const &, int, int)
-	?NewLC@CHnAttrImgProvLiwImage@@SAPAV1@AAPAVTLiwVariant@@0@Z @ 180 NONAME ; class CHnAttrImgProvLiwImage * CHnAttrImgProvLiwImage::NewLC(class TLiwVariant * &, class TLiwVariant * &)
-	?GetTemplate@CHnSuiteModel@@QBEABVTDesC8@@XZ @ 181 NONAME ; class TDesC8 const & CHnSuiteModel::GetTemplate(void) const
-	?GetActions@CHnItemModel@@QAEAAV?$RHashMap@HPAV?$CArrayPtr@VCHnActionModel@@@@@@XZ @ 182 NONAME ; class RHashMap<int, class CArrayPtr<class CHnActionModel> *> & CHnItemModel::GetActions(void)
-	?SetMenuItemType@CHnMenuItemModel@@QAEXW4THnMenuItemType@1@@Z @ 183 NONAME ; void CHnMenuItemModel::SetMenuItemType(enum CHnMenuItemModel::THnMenuItemType)
-	?HasNextSpecific@CHnMenuItemModel@@UAEHXZ @ 184 NONAME ; int CHnMenuItemModel::HasNextSpecific(void)
-	?GetNextSpecific@CHnMenuItemModel@@UAEPAV1@XZ @ 185 NONAME ; class CHnMenuItemModel * CHnMenuItemModel::GetNextSpecific(void)
-	?MenuItemType@CHnMenuItemModel@@QAE?AW4THnMenuItemType@1@XZ @ 186 NONAME ; enum CHnMenuItemModel::THnMenuItemType CHnMenuItemModel::MenuItemType(void)
+	?MenuItemType@CHnMenuItemModel@@QAE?AW4THnMenuItemType@1@XZ @ 139 NONAME ; enum CHnMenuItemModel::THnMenuItemType CHnMenuItemModel::MenuItemType(void)
+	?SetAttributeL@CHnItemModel@@QAEXPAVCHnAttributeBase@@@Z @ 140 NONAME ; void CHnItemModel::SetAttributeL(class CHnAttributeBase *)
+	?SetEventId@CHnButtonModel@@QAEXH@Z @ 141 NONAME ; void CHnButtonModel::SetEventId(int)
+	?GetLastSuiteModel@CHnSuiteModelContainer@@QAEPAVCHnSuiteModel@@XZ @ 142 NONAME ; class CHnSuiteModel * CHnSuiteModelContainer::GetLastSuiteModel(void)
+	?NewL@CHnAttrImgProvSvgImage@@SAPAV1@ABVTDesC16@@@Z @ 143 NONAME ; class CHnAttrImgProvSvgImage * CHnAttrImgProvSvgImage::NewL(class TDesC16 const &)
+	?RemoveItemL@CHnSuiteModel@@QAEXH@Z @ 144 NONAME ; void CHnSuiteModel::RemoveItemL(int)
+	?GetTemplate@CHnItemModel@@QAEABVTDesC8@@XZ @ 145 NONAME ; class TDesC8 const & CHnItemModel::GetTemplate(void)
+	?SetMaskId@CHnAttributeImage@@QAEXH@Z @ 146 NONAME ; void CHnAttributeImage::SetMaskId(int)
+	?GetActions@CHnSuiteModel@@QAEAAV?$RHashMap@HPAV?$CArrayPtr@VCHnActionModel@@@@@@XZ @ 147 NONAME ; class RHashMap<int, class CArrayPtr<class CHnActionModel> *> & CHnSuiteModel::GetActions(void)
+	?GetItemType@CHnItemModel@@QAE?AW4TMcsItemType@@XZ @ 148 NONAME ; enum TMcsItemType CHnItemModel::GetItemType(void)
+	?GetButtonText@CHnButtonModel@@QBEABVTDesC16@@XZ @ 149 NONAME ; class TDesC16 const & CHnButtonModel::GetButtonText(void) const
+	?NewL@CHnAttributeText@@SAPAV1@XZ @ 150 NONAME ; class CHnAttributeText * CHnAttributeText::NewL(void)
+	?GetNext@CHnMenuItemModel@@UAEPAV1@XZ @ 151 NONAME ; class CHnMenuItemModel * CHnMenuItemModel::GetNext(void)
+	?DefineModelItemCountL@CHnItemsOrder@@QAEXH@Z @ 152 NONAME ; void CHnItemsOrder::DefineModelItemCountL(int)
+	?SuiteEvaluationFinishedL@CHnSuiteModel@@QAEHXZ @ 153 NONAME ; int CHnSuiteModel::SuiteEvaluationFinishedL(void)
+	?HasNextSpecific@CHnMenuItemModel@@UAEHXZ @ 154 NONAME ; int CHnMenuItemModel::HasNextSpecific(void)
+	?ItemEvaluationFinishedL@CHnSuiteModel@@QAEHH@Z @ 155 NONAME ; int CHnSuiteModel::ItemEvaluationFinishedL(int)
+	?NewL@CHnMenuItemModel@@SAPAV1@ABVTDesC16@@@Z @ 156 NONAME ; class CHnMenuItemModel * CHnMenuItemModel::NewL(class TDesC16 const &)
+	?ReorderItemsL@CHnSuiteModel@@QAEHHH@Z @ 157 NONAME ; int CHnSuiteModel::ReorderItemsL(int, int)
+	?GetIdsForL@CHnItemsOrder@@QAEXHAAV?$RArray@H@@@Z @ 158 NONAME ; void CHnItemsOrder::GetIdsForL(int, class RArray<int> &)
+	?NewLC@CHnAttrImgProvThemeMif@@SAPAV1@VTAknsItemID@@ABVTDesC16@@HH@Z @ 159 NONAME ; class CHnAttrImgProvThemeMif * CHnAttrImgProvThemeMif::NewLC(class TAknsItemID, class TDesC16 const &, int, int)
+	?SetWidgetType@CHnSuiteModel@@QAEXW4THnSuiteWidgetType@@@Z @ 160 NONAME ; void CHnSuiteModel::SetWidgetType(enum THnSuiteWidgetType)
+	?NotifyObserversL@CHnSuiteModel@@QAEXW4THnCustomSuiteEvent@@@Z @ 161 NONAME ; void CHnSuiteModel::NotifyObserversL(enum THnCustomSuiteEvent)
+	?DeleteAllActionModels@CHnItemModel@@QAEXXZ @ 162 NONAME ; void CHnItemModel::DeleteAllActionModels(void)
+	?SetSuiteHighlightL@CHnSuiteModel@@QAEXH@Z @ 163 NONAME ; void CHnSuiteModel::SetSuiteHighlightL(int)
+	?SetCustomId@CHnSuiteModel@@QAEX_J@Z @ 164 NONAME ; void CHnSuiteModel::SetCustomId(long long)
+	?SetCommandNameL@CHnActionModel@@QAEXABVTDesC8@@@Z @ 165 NONAME ; void CHnActionModel::SetCommandNameL(class TDesC8 const &)
+	?NewLC@CHnItemsOrder@@SAPAV1@XZ @ 166 NONAME ; class CHnItemsOrder * CHnItemsOrder::NewLC(void)
+	?SetCommand@CHnActionModel@@QAEXPAVCHnMdBaseKey@@@Z @ 167 NONAME ; void CHnActionModel::SetCommand(class CHnMdBaseKey *)
+	?NewL@CHnAttrImgProvAppImage@@SAPAV1@VTUid@@@Z @ 168 NONAME ; class CHnAttrImgProvAppImage * CHnAttrImgProvAppImage::NewL(class TUid)
+	?NewLC@CHnAttributeText@@SAPAV1@XZ @ 169 NONAME ; class CHnAttributeText * CHnAttributeText::NewLC(void)
+	?NewLC@CHnSuiteModelContainer@@SAPAV1@AAVMHnMdModelEventObserver@@AAVMHnControllerInterface@@@Z @ 170 NONAME ; class CHnSuiteModelContainer * CHnSuiteModelContainer::NewLC(class MHnMdModelEventObserver &, class MHnControllerInterface &)
+	?IsRunning@CHnItemModel@@QAEHXZ @ 171 NONAME ; int CHnItemModel::IsRunning(void)
+	?NewL@CHnActionModel@@SAPAV1@XZ @ 172 NONAME ; class CHnActionModel * CHnActionModel::NewL(void)
+	?AddButtonL@CHnToolbarModel@@QAEXPAVCHnButtonModel@@@Z @ 173 NONAME ; void CHnToolbarModel::AddButtonL(class CHnButtonModel *)
+	?SetItemUidL@CHnItemModel@@QAEXABVTDesC8@@@Z @ 174 NONAME ; void CHnItemModel::SetItemUidL(class TDesC8 const &)
+	?SetType@CHnItemModel@@QAEXABVTDesC8@@@Z @ 175 NONAME ; void CHnItemModel::SetType(class TDesC8 const &)
+	?SetSkinId@CHnAttributeImage@@QAEXVTAknsItemID@@@Z @ 176 NONAME ; void CHnAttributeImage::SetSkinId(class TAknsItemID)
+	?NameL@CHnMenuItemModel@@QAEABVTDesC16@@XZ @ 177 NONAME ; class TDesC16 const & CHnMenuItemModel::NameL(void)
+	?PopL@CHnSuitesStack@@QAEPAVCHnSuiteModel@@XZ @ 178 NONAME ; class CHnSuiteModel * CHnSuitesStack::PopL(void)
+	?SetIcon@CHnButtonModel@@QAEXPAVCHnAttributeBase@@@Z @ 179 NONAME ; void CHnButtonModel::SetIcon(class CHnAttributeBase *)
+	?NewL@CHnAttrImgProvThemeMif@@SAPAV1@VTAknsItemID@@ABVTDesC16@@HH@Z @ 180 NONAME ; class CHnAttrImgProvThemeMif * CHnAttrImgProvThemeMif::NewL(class TAknsItemID, class TDesC16 const &, int, int)
+	?NewLC@CHnAttrImgProvLiwImage@@SAPAV1@AAPAVTLiwVariant@@0@Z @ 181 NONAME ; class CHnAttrImgProvLiwImage * CHnAttrImgProvLiwImage::NewLC(class TLiwVariant * &, class TLiwVariant * &)
+	?GetTemplate@CHnSuiteModel@@QBEABVTDesC8@@XZ @ 182 NONAME ; class TDesC8 const & CHnSuiteModel::GetTemplate(void) const
+	?GetActions@CHnItemModel@@QAEAAV?$RHashMap@HPAV?$CArrayPtr@VCHnActionModel@@@@@@XZ @ 183 NONAME ; class RHashMap<int, class CArrayPtr<class CHnActionModel> *> & CHnItemModel::GetActions(void)
 
--- a/menufw/hierarchynavigator/hnpresentationmodel/eabi/hnpresentationmodelu.def	Tue May 25 12:29:32 2010 +0300
+++ b/menufw/hierarchynavigator/hnpresentationmodel/eabi/hnpresentationmodelu.def	Wed Jun 09 09:29:04 2010 +0300
@@ -46,156 +46,153 @@
 	_ZN13CHnSuiteModel10GetActionsEi @ 45 NONAME
 	_ZN13CHnSuiteModel10GetActionsEv @ 46 NONAME
 	_ZN13CHnSuiteModel10QueueFocusEi @ 47 NONAME
-	_ZN13CHnSuiteModel10SetActiveLEi @ 48 NONAME
-	_ZN13CHnSuiteModel11GetItemTypeEi @ 49 NONAME
-	_ZN13CHnSuiteModel11RemoveItemLEi @ 50 NONAME
-	_ZN13CHnSuiteModel11SetCustomIdEx @ 51 NONAME
-	_ZN13CHnSuiteModel11SetExitModeE9TExitMode @ 52 NONAME
-	_ZN13CHnSuiteModel11SetVisibleLEi @ 53 NONAME
-	_ZN13CHnSuiteModel12GetItemModelEi @ 54 NONAME
-	_ZN13CHnSuiteModel12SetTemplateLERK6TDesC8 @ 55 NONAME
-	_ZN13CHnSuiteModel13GetItemsOrderEv @ 56 NONAME
-	_ZN13CHnSuiteModel13ReorderItemsLEii @ 57 NONAME
-	_ZN13CHnSuiteModel13SetEmptyTextLERK7TDesC16 @ 58 NONAME
-	_ZN13CHnSuiteModel13SetWidgetTypeE18THnSuiteWidgetType @ 59 NONAME
-	_ZN13CHnSuiteModel14RemoveAllItemsEv @ 60 NONAME
-	_ZN13CHnSuiteModel16IsItemMoveLockedEi @ 61 NONAME
-	_ZN13CHnSuiteModel16NotifyObserversLE19THnCustomSuiteEvent @ 62 NONAME
-	_ZN13CHnSuiteModel16RefreshMulModelLEi @ 63 NONAME
-	_ZN13CHnSuiteModel17GetMenuStructureLEi @ 64 NONAME
-	_ZN13CHnSuiteModel17GetSuiteHighlightEv @ 65 NONAME
-	_ZN13CHnSuiteModel18GetItemModelsCountEv @ 66 NONAME
-	_ZN13CHnSuiteModel18SetSuiteHighlightLEi @ 67 NONAME
-	_ZN13CHnSuiteModel19UpdateItemTemplateLEi @ 68 NONAME
-	_ZN13CHnSuiteModel21GetMatchingItemModelLExRi @ 69 NONAME
-	_ZN13CHnSuiteModel22RegisterSuiteObserverLEP16MHnSuiteObserver15TThreadPriority @ 70 NONAME
-	_ZN13CHnSuiteModel23IsItemBetweenMoveLockedEii @ 71 NONAME
-	_ZN13CHnSuiteModel23ItemEvaluationFinishedLEi @ 72 NONAME
-	_ZN13CHnSuiteModel23UnregisterSuiteObserverEP16MHnSuiteObserver @ 73 NONAME
-	_ZN13CHnSuiteModel24SuiteEvaluationFinishedLEv @ 74 NONAME
-	_ZN13CHnSuiteModel4NewLER15CHnEventHandlerRK7TDesC16 @ 75 NONAME
-	_ZN13CHnSuiteModel8AddItemLEiP12CHnItemModelii @ 76 NONAME
-	_ZN13CHnSuiteModel8CustomIdEv @ 77 NONAME
-	_ZN13CHnSuiteModel8ExitModeEv @ 78 NONAME
-	_ZN13CHnSuiteModel8IsActiveEv @ 79 NONAME
-	_ZN13CHnSuiteModel9IdByIndexEi @ 80 NONAME
-	_ZN13CHnSuiteModel9SetTitleLERK7TDesC16 @ 81 NONAME
-	_ZN13CHnSuiteModelD0Ev @ 82 NONAME
-	_ZN13CHnSuiteModelD1Ev @ 83 NONAME
-	_ZN13CHnSuiteModelD2Ev @ 84 NONAME
-	_ZN14CHnActionModel10SetCommandEP12CHnMdBaseKey @ 85 NONAME
-	_ZN14CHnActionModel11SetServiceLERK6TDesC8 @ 86 NONAME
-	_ZN14CHnActionModel13ConstructorLCEv @ 87 NONAME
-	_ZN14CHnActionModel13SetInterfaceLERK6TDesC8 @ 88 NONAME
-	_ZN14CHnActionModel15SetCommandNameLERK6TDesC8 @ 89 NONAME
-	_ZN14CHnActionModel15SetConstructorLEP12CHnMdBaseKey @ 90 NONAME
-	_ZN14CHnActionModel15SetServiceModeLE12TServiceMode @ 91 NONAME
-	_ZN14CHnActionModel4NewLEv @ 92 NONAME
-	_ZN14CHnButtonModel10SetEventIdEi @ 93 NONAME
-	_ZN14CHnButtonModel12SetHelpTextLERK7TDesC16 @ 94 NONAME
-	_ZN14CHnButtonModel5NewLCEi @ 95 NONAME
-	_ZN14CHnButtonModel7SetIconEP16CHnAttributeBase @ 96 NONAME
-	_ZN14CHnButtonModel9SetDimmedEi @ 97 NONAME
-	_ZN14CHnButtonModelD0Ev @ 98 NONAME
-	_ZN14CHnButtonModelD1Ev @ 99 NONAME
-	_ZN14CHnButtonModelD2Ev @ 100 NONAME
-	_ZN14CHnSuitesStack12GetRootSuiteEv @ 101 NONAME
-	_ZN14CHnSuitesStack3GetEi @ 102 NONAME
-	_ZN14CHnSuitesStack4NewLER22MHnControllerInterface @ 103 NONAME
-	_ZN14CHnSuitesStack4PopLEv @ 104 NONAME
-	_ZN14CHnSuitesStack5CountEv @ 105 NONAME
-	_ZN14CHnSuitesStack5PushLEP13CHnSuiteModel @ 106 NONAME
-	_ZN14CHnSuitesStack7GetLastEv @ 107 NONAME
-	_ZN14CHnSuitesStack7IsEmptyEv @ 108 NONAME
-	_ZN15CHnEventHandler14ExecuteActionLEP14CHnActionModel @ 109 NONAME
-	_ZN15CHnToolbarModel10AddButtonLEP14CHnButtonModel @ 110 NONAME
-	_ZN15CHnToolbarModel5NewLCEv @ 111 NONAME
-	_ZN15CHnToolbarModelD0Ev @ 112 NONAME
-	_ZN15CHnToolbarModelD1Ev @ 113 NONAME
-	_ZN15CHnToolbarModelD2Ev @ 114 NONAME
-	_ZN16CHnAttributeBase4TypeEv @ 115 NONAME
-	_ZN16CHnAttributeBase5ValueEv @ 116 NONAME
-	_ZN16CHnAttributeBase7GetIconEP5TSize @ 117 NONAME
-	_ZN16CHnAttributeBase8SetNameLERK6TDesC8 @ 118 NONAME
-	_ZN16CHnAttributeText4NewLEv @ 119 NONAME
-	_ZN16CHnAttributeText5NewLCEv @ 120 NONAME
-	_ZN16CHnAttributeText9SetValueLERK6TDesC8 @ 121 NONAME
-	_ZN16CHnMenuItemModel10SetCommandEi @ 122 NONAME
-	_ZN16CHnMenuItemModel11SetPositionEi @ 123 NONAME
-	_ZN16CHnMenuItemModel16AppendChildMenuLEPS_ @ 124 NONAME
-	_ZN16CHnMenuItemModel16GetMenuStructureEv @ 125 NONAME
-	_ZN16CHnMenuItemModel4NewLERK7TDesC16 @ 126 NONAME
-	_ZN16CHnMenuItemModel5NameLEv @ 127 NONAME
-	_ZN16CHnMenuItemModel5ResetEv @ 128 NONAME
-	_ZN16CHnMenuItemModel7CommandEv @ 129 NONAME
-	_ZN16CHnMenuItemModel7GetNextEv @ 130 NONAME
-	_ZN16CHnMenuItemModel7HasNextEv @ 131 NONAME
-	_ZN16CHnMenuItemModel8PositionEv @ 132 NONAME
-	_ZN17CHnAttributeImage10SetMifFileEP7HBufC16 @ 133 NONAME
-	_ZN17CHnAttributeImage11SetBitmapIdEi @ 134 NONAME
-	_ZN17CHnAttributeImage14SetFileNameSrcEP7HBufC16 @ 135 NONAME
-	_ZN17CHnAttributeImage17SetApplicationUidE4TUid @ 136 NONAME
-	_ZN17CHnAttributeImage4NewLEv @ 137 NONAME
-	_ZN17CHnAttributeImage5NewLCEv @ 138 NONAME
-	_ZN17CHnAttributeImage7GetIconEP5TSize @ 139 NONAME
-	_ZN17CHnAttributeImage7SetMaskEP11TLiwVariant @ 140 NONAME
-	_ZN17CHnAttributeImage9SetBitmapEP11TLiwVariant @ 141 NONAME
-	_ZN17CHnAttributeImage9SetMaskIdEi @ 142 NONAME
-	_ZN17CHnAttributeImage9SetSkinIdE11TAknsItemID @ 143 NONAME
-	_ZN19CHnExtBmpIconHolder10SetGulIconEP8CGulIconP16CLiwBitmapBufferS3_ @ 144 NONAME
-	_ZN22CHnAttrImgProvAppImage4NewLE4TUid @ 145 NONAME
-	_ZN22CHnAttrImgProvAppImage5NewLCE4TUid @ 146 NONAME
-	_ZN22CHnAttrImgProvLiwImage4NewLERP11TLiwVariantS2_ @ 147 NONAME
-	_ZN22CHnAttrImgProvLiwImage5NewLCERP11TLiwVariantS2_ @ 148 NONAME
-	_ZN22CHnAttrImgProvSvgImage4NewLERK7TDesC16 @ 149 NONAME
-	_ZN22CHnAttrImgProvSvgImage5NewLCERK7TDesC16 @ 150 NONAME
-	_ZN22CHnAttrImgProvThemeMif4NewLE11TAknsItemIDRK7TDesC16ii @ 151 NONAME
-	_ZN22CHnAttrImgProvThemeMif5NewLCE11TAknsItemIDRK7TDesC16ii @ 152 NONAME
-	_ZN22CHnSuiteModelContainer13GetSuiteModelERK7TDesC16 @ 153 NONAME
-	_ZN22CHnSuiteModelContainer13GetSuiteModelEi @ 154 NONAME
-	_ZN22CHnSuiteModelContainer13OfferHnEventLEiiP20CLiwGenericParamList @ 155 NONAME
-	_ZN22CHnSuiteModelContainer14PopSuiteModelLERK7TDesC16 @ 156 NONAME
-	_ZN22CHnSuiteModelContainer16RemoveLiwObjectsEv @ 157 NONAME
-	_ZN22CHnSuiteModelContainer17GetLastSuiteModelEv @ 158 NONAME
-	_ZN22CHnSuiteModelContainer18PushNewSuiteModelLERK7TDesC16 @ 159 NONAME
-	_ZN22CHnSuiteModelContainer19GetParentSuiteModelEv @ 160 NONAME
-	_ZN22CHnSuiteModelContainer21GetMatchingSuiteModelEx @ 161 NONAME
-	_ZN22CHnSuiteModelContainer4NewLER23MHnMdModelEventObserverR22MHnControllerInterface @ 162 NONAME
-	_ZN22CHnSuiteModelContainer5NewLCER23MHnMdModelEventObserverR22MHnControllerInterface @ 163 NONAME
-	_ZN23CHnAttrImgProvFileImage4NewLERK7TDesC16 @ 164 NONAME
-	_ZN23CHnAttrImgProvFileImage5NewLCERK7TDesC16 @ 165 NONAME
-	_ZNK12CHnItemModel15GetToolbarModelEv @ 166 NONAME
-	_ZNK13CHnIconHolder10GetGulIconEv @ 167 NONAME
-	_ZNK13CHnItemsOrder10GetSuiteIdEv @ 168 NONAME
-	_ZNK13CHnSuiteModel10HasToolbarEv @ 169 NONAME
-	_ZNK13CHnSuiteModel10WidgetTypeEv @ 170 NONAME
-	_ZNK13CHnSuiteModel11GetTemplateEv @ 171 NONAME
-	_ZNK13CHnSuiteModel5TitleEv @ 172 NONAME
-	_ZNK13CHnSuiteModel9EmptyTextEv @ 173 NONAME
-	_ZNK13CHnSuiteModel9SuiteNameEv @ 174 NONAME
-	_ZNK14CHnActionModel11CommandNameEv @ 175 NONAME
-	_ZNK14CHnActionModel11ServiceModeEv @ 176 NONAME
-	_ZNK14CHnActionModel7ServiceEv @ 177 NONAME
-	_ZNK14CHnActionModel9CommandLCEv @ 178 NONAME
-	_ZNK14CHnActionModel9InterfaceEv @ 179 NONAME
-	_ZNK14CHnButtonModel10GetEventIdEv @ 180 NONAME
-	_ZNK14CHnButtonModel13GetButtonTextEv @ 181 NONAME
-	_ZNK14CHnButtonModel7GetIconEv @ 182 NONAME
-	_ZNK14CHnButtonModel8GetIndexEv @ 183 NONAME
-	_ZNK14CHnButtonModel9GetDimmedEv @ 184 NONAME
-	_ZNK15CHnToolbarModel10HasButtonsEv @ 185 NONAME
-	_ZNK15CHnToolbarModel9GetButtonEi @ 186 NONAME
-	_ZNK16CHnAttributeBase4NameEv @ 187 NONAME
-	_ZNK22CHnSuiteModelContainer18GetSuiteModelCountEv @ 188 NONAME
-	_ZTI19CHnExtBmpIconHolder @ 189 NONAME
-	_ZTV19CHnExtBmpIconHolder @ 190 NONAME
-	_ZThn4_N16CHnMenuItemModel5ResetEv @ 191 NONAME
-	_ZThn4_N16CHnMenuItemModel7GetNextEv @ 192 NONAME
-	_ZThn4_N16CHnMenuItemModel7HasNextEv @ 193 NONAME
-	_ZN16CHnMenuItemModel15GetNextSpecificEv @ 194 NONAME
-	_ZN16CHnMenuItemModel15HasNextSpecificEv @ 195 NONAME
-	_ZN16CHnMenuItemModel15SetMenuItemTypeENS_15THnMenuItemTypeE @ 196 NONAME
-	_ZThn4_N16CHnMenuItemModel15GetNextSpecificEv @ 197 NONAME
-	_ZThn4_N16CHnMenuItemModel15HasNextSpecificEv @ 198 NONAME
-	_ZN16CHnMenuItemModel12MenuItemTypeEv @ 199 NONAME
+	_ZN13CHnSuiteModel11GetItemTypeEi @ 48 NONAME
+	_ZN13CHnSuiteModel11RemoveItemLEi @ 49 NONAME
+	_ZN13CHnSuiteModel11SetCustomIdEx @ 50 NONAME
+	_ZN13CHnSuiteModel11SetExitModeE9TExitMode @ 51 NONAME
+	_ZN13CHnSuiteModel12GetItemModelEi @ 52 NONAME
+	_ZN13CHnSuiteModel12SetTemplateLERK6TDesC8 @ 53 NONAME
+	_ZN13CHnSuiteModel13GetItemsOrderEv @ 54 NONAME
+	_ZN13CHnSuiteModel13ReorderItemsLEii @ 55 NONAME
+	_ZN13CHnSuiteModel13SetEmptyTextLERK7TDesC16 @ 56 NONAME
+	_ZN13CHnSuiteModel13SetWidgetTypeE18THnSuiteWidgetType @ 57 NONAME
+	_ZN13CHnSuiteModel14RemoveAllItemsEv @ 58 NONAME
+	_ZN13CHnSuiteModel16IsItemMoveLockedEi @ 59 NONAME
+	_ZN13CHnSuiteModel16NotifyObserversLE19THnCustomSuiteEvent @ 60 NONAME
+	_ZN13CHnSuiteModel16RefreshMulModelLEi @ 61 NONAME
+	_ZN13CHnSuiteModel17GetMenuStructureLEi @ 62 NONAME
+	_ZN13CHnSuiteModel17GetSuiteHighlightEv @ 63 NONAME
+	_ZN13CHnSuiteModel18GetItemModelsCountEv @ 64 NONAME
+	_ZN13CHnSuiteModel18SetSuiteHighlightLEi @ 65 NONAME
+	_ZN13CHnSuiteModel19UpdateItemTemplateLEi @ 66 NONAME
+	_ZN13CHnSuiteModel21GetMatchingItemModelLExRi @ 67 NONAME
+	_ZN13CHnSuiteModel22RegisterSuiteObserverLEP16MHnSuiteObserver15TThreadPriority @ 68 NONAME
+	_ZN13CHnSuiteModel23IsItemBetweenMoveLockedEii @ 69 NONAME
+	_ZN13CHnSuiteModel23ItemEvaluationFinishedLEi @ 70 NONAME
+	_ZN13CHnSuiteModel23UnregisterSuiteObserverEP16MHnSuiteObserver @ 71 NONAME
+	_ZN13CHnSuiteModel24SuiteEvaluationFinishedLEv @ 72 NONAME
+	_ZN13CHnSuiteModel4NewLER15CHnEventHandlerRK7TDesC16 @ 73 NONAME
+	_ZN13CHnSuiteModel8AddItemLEiP12CHnItemModelii @ 74 NONAME
+	_ZN13CHnSuiteModel8CustomIdEv @ 75 NONAME
+	_ZN13CHnSuiteModel8ExitModeEv @ 76 NONAME
+	_ZN13CHnSuiteModel9IdByIndexEi @ 77 NONAME
+	_ZN13CHnSuiteModel9SetTitleLERK7TDesC16 @ 78 NONAME
+	_ZN13CHnSuiteModelD0Ev @ 79 NONAME
+	_ZN13CHnSuiteModelD1Ev @ 80 NONAME
+	_ZN13CHnSuiteModelD2Ev @ 81 NONAME
+	_ZN14CHnActionModel10SetCommandEP12CHnMdBaseKey @ 82 NONAME
+	_ZN14CHnActionModel11SetServiceLERK6TDesC8 @ 83 NONAME
+	_ZN14CHnActionModel13ConstructorLCEv @ 84 NONAME
+	_ZN14CHnActionModel13SetInterfaceLERK6TDesC8 @ 85 NONAME
+	_ZN14CHnActionModel15SetCommandNameLERK6TDesC8 @ 86 NONAME
+	_ZN14CHnActionModel15SetConstructorLEP12CHnMdBaseKey @ 87 NONAME
+	_ZN14CHnActionModel15SetServiceModeLE12TServiceMode @ 88 NONAME
+	_ZN14CHnActionModel4NewLEv @ 89 NONAME
+	_ZN14CHnButtonModel10SetEventIdEi @ 90 NONAME
+	_ZN14CHnButtonModel12SetHelpTextLERK7TDesC16 @ 91 NONAME
+	_ZN14CHnButtonModel5NewLCEi @ 92 NONAME
+	_ZN14CHnButtonModel7SetIconEP16CHnAttributeBase @ 93 NONAME
+	_ZN14CHnButtonModel9SetDimmedEi @ 94 NONAME
+	_ZN14CHnButtonModelD0Ev @ 95 NONAME
+	_ZN14CHnButtonModelD1Ev @ 96 NONAME
+	_ZN14CHnButtonModelD2Ev @ 97 NONAME
+	_ZN14CHnSuitesStack12GetRootSuiteEv @ 98 NONAME
+	_ZN14CHnSuitesStack3GetEi @ 99 NONAME
+	_ZN14CHnSuitesStack4NewLER22MHnControllerInterface @ 100 NONAME
+	_ZN14CHnSuitesStack4PopLEv @ 101 NONAME
+	_ZN14CHnSuitesStack5CountEv @ 102 NONAME
+	_ZN14CHnSuitesStack5PushLEP13CHnSuiteModel @ 103 NONAME
+	_ZN14CHnSuitesStack7GetLastEv @ 104 NONAME
+	_ZN14CHnSuitesStack7IsEmptyEv @ 105 NONAME
+	_ZN15CHnEventHandler14ExecuteActionLEP14CHnActionModel @ 106 NONAME
+	_ZN15CHnToolbarModel10AddButtonLEP14CHnButtonModel @ 107 NONAME
+	_ZN15CHnToolbarModel5NewLCEv @ 108 NONAME
+	_ZN15CHnToolbarModelD0Ev @ 109 NONAME
+	_ZN15CHnToolbarModelD1Ev @ 110 NONAME
+	_ZN15CHnToolbarModelD2Ev @ 111 NONAME
+	_ZN16CHnAttributeBase4TypeEv @ 112 NONAME
+	_ZN16CHnAttributeBase5ValueEv @ 113 NONAME
+	_ZN16CHnAttributeBase7GetIconEP5TSize @ 114 NONAME
+	_ZN16CHnAttributeBase8SetNameLERK6TDesC8 @ 115 NONAME
+	_ZN16CHnAttributeText4NewLEv @ 116 NONAME
+	_ZN16CHnAttributeText5NewLCEv @ 117 NONAME
+	_ZN16CHnAttributeText9SetValueLERK6TDesC8 @ 118 NONAME
+	_ZN16CHnMenuItemModel10SetCommandEi @ 119 NONAME
+	_ZN16CHnMenuItemModel11SetPositionEi @ 120 NONAME
+	_ZN16CHnMenuItemModel12MenuItemTypeEv @ 121 NONAME
+	_ZN16CHnMenuItemModel15GetNextSpecificEv @ 122 NONAME
+	_ZN16CHnMenuItemModel15HasNextSpecificEv @ 123 NONAME
+	_ZN16CHnMenuItemModel15SetMenuItemTypeENS_15THnMenuItemTypeE @ 124 NONAME
+	_ZN16CHnMenuItemModel16AppendChildMenuLEPS_ @ 125 NONAME
+	_ZN16CHnMenuItemModel16GetMenuStructureEv @ 126 NONAME
+	_ZN16CHnMenuItemModel4NewLERK7TDesC16 @ 127 NONAME
+	_ZN16CHnMenuItemModel5NameLEv @ 128 NONAME
+	_ZN16CHnMenuItemModel5ResetEv @ 129 NONAME
+	_ZN16CHnMenuItemModel7CommandEv @ 130 NONAME
+	_ZN16CHnMenuItemModel7GetNextEv @ 131 NONAME
+	_ZN16CHnMenuItemModel7HasNextEv @ 132 NONAME
+	_ZN16CHnMenuItemModel8PositionEv @ 133 NONAME
+	_ZN17CHnAttributeImage10SetMifFileEP7HBufC16 @ 134 NONAME
+	_ZN17CHnAttributeImage11SetBitmapIdEi @ 135 NONAME
+	_ZN17CHnAttributeImage14SetFileNameSrcEP7HBufC16 @ 136 NONAME
+	_ZN17CHnAttributeImage17SetApplicationUidE4TUid @ 137 NONAME
+	_ZN17CHnAttributeImage4NewLEv @ 138 NONAME
+	_ZN17CHnAttributeImage5NewLCEv @ 139 NONAME
+	_ZN17CHnAttributeImage7GetIconEP5TSize @ 140 NONAME
+	_ZN17CHnAttributeImage7SetMaskEP11TLiwVariant @ 141 NONAME
+	_ZN17CHnAttributeImage9SetBitmapEP11TLiwVariant @ 142 NONAME
+	_ZN17CHnAttributeImage9SetMaskIdEi @ 143 NONAME
+	_ZN17CHnAttributeImage9SetSkinIdE11TAknsItemID @ 144 NONAME
+	_ZN19CHnExtBmpIconHolder10SetGulIconEP8CGulIconP16CLiwBitmapBufferS3_ @ 145 NONAME
+	_ZN22CHnAttrImgProvAppImage4NewLE4TUid @ 146 NONAME
+	_ZN22CHnAttrImgProvAppImage5NewLCE4TUid @ 147 NONAME
+	_ZN22CHnAttrImgProvLiwImage4NewLERP11TLiwVariantS2_ @ 148 NONAME
+	_ZN22CHnAttrImgProvLiwImage5NewLCERP11TLiwVariantS2_ @ 149 NONAME
+	_ZN22CHnAttrImgProvSvgImage4NewLERK7TDesC16 @ 150 NONAME
+	_ZN22CHnAttrImgProvSvgImage5NewLCERK7TDesC16 @ 151 NONAME
+	_ZN22CHnAttrImgProvThemeMif4NewLE11TAknsItemIDRK7TDesC16ii @ 152 NONAME
+	_ZN22CHnAttrImgProvThemeMif5NewLCE11TAknsItemIDRK7TDesC16ii @ 153 NONAME
+	_ZN22CHnSuiteModelContainer13GetSuiteModelERK7TDesC16 @ 154 NONAME
+	_ZN22CHnSuiteModelContainer13GetSuiteModelEi @ 155 NONAME
+	_ZN22CHnSuiteModelContainer13OfferHnEventLEiiP20CLiwGenericParamList @ 156 NONAME
+	_ZN22CHnSuiteModelContainer14PopSuiteModelLERK7TDesC16 @ 157 NONAME
+	_ZN22CHnSuiteModelContainer16RemoveLiwObjectsEv @ 158 NONAME
+	_ZN22CHnSuiteModelContainer17GetLastSuiteModelEv @ 159 NONAME
+	_ZN22CHnSuiteModelContainer18PushNewSuiteModelLERK7TDesC16 @ 160 NONAME
+	_ZN22CHnSuiteModelContainer19GetParentSuiteModelEv @ 161 NONAME
+	_ZN22CHnSuiteModelContainer21GetMatchingSuiteModelEx @ 162 NONAME
+	_ZN22CHnSuiteModelContainer4NewLER23MHnMdModelEventObserverR22MHnControllerInterface @ 163 NONAME
+	_ZN22CHnSuiteModelContainer5NewLCER23MHnMdModelEventObserverR22MHnControllerInterface @ 164 NONAME
+	_ZN23CHnAttrImgProvFileImage4NewLERK7TDesC16 @ 165 NONAME
+	_ZN23CHnAttrImgProvFileImage5NewLCERK7TDesC16 @ 166 NONAME
+	_ZNK12CHnItemModel15GetToolbarModelEv @ 167 NONAME
+	_ZNK13CHnIconHolder10GetGulIconEv @ 168 NONAME
+	_ZNK13CHnItemsOrder10GetSuiteIdEv @ 169 NONAME
+	_ZNK13CHnSuiteModel10HasToolbarEv @ 170 NONAME
+	_ZNK13CHnSuiteModel10WidgetTypeEv @ 171 NONAME
+	_ZNK13CHnSuiteModel11GetTemplateEv @ 172 NONAME
+	_ZNK13CHnSuiteModel5TitleEv @ 173 NONAME
+	_ZNK13CHnSuiteModel9EmptyTextEv @ 174 NONAME
+	_ZNK13CHnSuiteModel9SuiteNameEv @ 175 NONAME
+	_ZNK14CHnActionModel11CommandNameEv @ 176 NONAME
+	_ZNK14CHnActionModel11ServiceModeEv @ 177 NONAME
+	_ZNK14CHnActionModel7ServiceEv @ 178 NONAME
+	_ZNK14CHnActionModel9CommandLCEv @ 179 NONAME
+	_ZNK14CHnActionModel9InterfaceEv @ 180 NONAME
+	_ZNK14CHnButtonModel10GetEventIdEv @ 181 NONAME
+	_ZNK14CHnButtonModel13GetButtonTextEv @ 182 NONAME
+	_ZNK14CHnButtonModel7GetIconEv @ 183 NONAME
+	_ZNK14CHnButtonModel8GetIndexEv @ 184 NONAME
+	_ZNK14CHnButtonModel9GetDimmedEv @ 185 NONAME
+	_ZNK15CHnToolbarModel10HasButtonsEv @ 186 NONAME
+	_ZNK15CHnToolbarModel9GetButtonEi @ 187 NONAME
+	_ZNK16CHnAttributeBase4NameEv @ 188 NONAME
+	_ZNK22CHnSuiteModelContainer18GetSuiteModelCountEv @ 189 NONAME
+	_ZTI19CHnExtBmpIconHolder @ 190 NONAME
+	_ZTV19CHnExtBmpIconHolder @ 191 NONAME
+	_ZThn4_N16CHnMenuItemModel15GetNextSpecificEv @ 192 NONAME
+	_ZThn4_N16CHnMenuItemModel15HasNextSpecificEv @ 193 NONAME
+	_ZThn4_N16CHnMenuItemModel5ResetEv @ 194 NONAME
+	_ZThn4_N16CHnMenuItemModel7GetNextEv @ 195 NONAME
+	_ZThn4_N16CHnMenuItemModel7HasNextEv @ 196 NONAME
 
--- a/menufw/hierarchynavigator/hnpresentationmodel/group/hnpresentationmodel.mmp	Tue May 25 12:29:32 2010 +0300
+++ b/menufw/hierarchynavigator/hnpresentationmodel/group/hnpresentationmodel.mmp	Wed Jun 09 09:29:04 2010 +0300
@@ -49,7 +49,6 @@
 SOURCE          hneventhandler.cpp
 SOURCE          hnitemsorder.cpp 
 SOURCE          hnattrimgprovsvgimage.cpp
-SOURCE          hnitemfocushandler.cpp
 SOURCE          hniconholder.cpp
 SOURCE          hnextbmpiconholder.cpp
 
--- a/menufw/hierarchynavigator/hnpresentationmodel/inc/hnitemfocushandler.h	Tue May 25 12:29:32 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,232 +0,0 @@
-/*
-* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Application UI class
-*  Version     : %version: 2 % << Don't touch! Updated by Synergy at check-out.
-*/
-#ifndef HNITEMFOCUSHANDLER_H
-#define HNITEMFOCUSHANDLER_H
-
-#include <e32base.h>
-#include <e32std.h>
-
-class CHnSuiteModel;
-
-/**
- *  Class representing the focus item to be queued.
- *
- *  @lib hnpresentationmodel
- *  @since S60 5.0
- *  @ingroup group_hnpresentationmodel
- */
-class TFocusQueueItem
-	{
-public:
-	
-    /**
-     * Constructor. Sets the trigger time on construction.
-     * 
-     * @since S60 v5.0
-     * @param aItemId Index of the item in the suite model.
-     */
-	TFocusQueueItem( TInt aItemId, TInt aEventId );
-	
-    /**
-     * Fetches the focus item trigger time.
-     * 
-     * @since S60 v5.0
-     * @return Time when the event was triggered.
-     */
-	TTime TriggerTime();
-	
-    /**
-     * Fetches the focus/unfocus item id.
-     * 
-     * @since S60 v5.0
-     * @return Suite model item id of the focused/unfocused item.
-     */
-	TInt ItemId();
-	
-    /**
-     * Fetches the focus/unfocus item id.
-     * 
-     * @since S60 v5.0
-     * @return Suite model item id of the focused/unfocused item.
-     */
-	TInt EventId();
-	
-    /**
-     * Compares queued items by triggered time.
-     * 
-     * @since S60 v5.0
-     * @param aItem1 First item to compare.
-     * @param aItem2 Second item to compare.
-     * @return 1 if aItem1 was triggered earlier than aItem2.
-     * -1 if aItem1 was triggered later than aItem2.
-     * 0 if aItem1 was triggered at the same time as aItem2.
-     */
-	static TInt CompareByTriggerTime( const TFocusQueueItem& aItem1,
-			const TFocusQueueItem& aItem2 );
-    /**
-     * Compares queued items by triggered time.
-     * 
-     * @since S60 v5.0
-     * @param aItem1 First item to compare.
-     * @param aItem2 Second item to compare.
-     * @return ETrue if aItem1 is equal to aItem2 regarding the item id.
-     * EFalse if aItem1 is not equal to aItem2 regarding the item id.
-     */
-	static TBool CompareByItemId( const TFocusQueueItem& aItem1,
-			const TFocusQueueItem& aItem2 );
-
-private:
-	
-    /**
-     * Item id.
-     * Own.
-     */
-	TInt iItemId;
-    
-	/**
-     * Trigger time.
-     * Own.
-     */
-	TTime iTriggerTime;
-    
-	/**
-     * Event type.
-     */
-	TInt iEventId;
-	
-	};
-
-/**
- *  Item focus handler class.
- *
- *  This is an active object which handles focus/unfocus event triggering.
- *  This class causes focus/unfocus events to be run without performance impact
- *  on the UI. The focus/unfocus events are queued. If incoming events logically 
- *  cancel the queued events, the appropriate events are removed from the queue.
- *
- *  @lib hnpresentationmodel
- *  @since S60 5.0
- *  @ingroup group_hnpresentationmodel
- */
-NONSHARABLE_CLASS( CHnItemFocusHandler ) : public CActive
-	{
-public:
-	
-    /**
-    * Virtual Destructor.
-    * 
-    * @since S60 5.0
-    */
-	~CHnItemFocusHandler();
-
-    /**
-     * Two-phased constructor.
-     * 
-     * @since S60 5.0
-     * @param aSuiteModel The suite model for which focus events are handled.
-     */
-	static CHnItemFocusHandler* NewL( CHnSuiteModel* aSuiteModel );
-
-    /**
-     * Two-phased constructor.
-     * 
-     * @since S60 5.0
-     * @param aSuiteModel The suite model for which focus events are handled.
-     */
-	static CHnItemFocusHandler* NewLC( CHnSuiteModel* aSuiteModel );
-
-public:
-	
-    /**
-     * Called to initiate item focus action handling.
-     * 
-     * @since S60 v5.0
-     * @param aEventId The type of event. Can be KIdFocusGain or KIdFocusLost. Otherwise focus actions are not triggered.
-     * @param aItemId Index of the item in the suite model.
-     */
-	void SetFocusL( TInt aEventId, TBool aItemId );
-
-private:
-	
-    /**
-     * C++ default constructor.
-     * 
-     * @since S60 v5.0
-     */
-	CHnItemFocusHandler();
-
-    /**
-     * Second-phase constructor.
-     * 
-     * @since S60 v5.0
-     * @param aSuiteModel The suite model for which focus events are handled.
-     */
-	void ConstructL( CHnSuiteModel* aSuiteModel );
-
-private:
-	
-    /**
-     * Handles completion. In fact the request is completed immediately after activating the object.
-     * This method calls focus/unfocus action events.
-     * 
-     * @since S60 v5.0
-     */
-	void RunL();
-
-    /**
-     * Run when request is cancelled.
-     */
-	void DoCancel();
-
-    /**
-     * Overriden to handle leaves from RunL(). Default implementation causes
-     * the active scheduler to panic.
-     * 
-     * @since S60 v5.0
-     * @param aError The Error code.
-     * @return Id The eroor code.
-     */
-	TInt RunError(TInt aError);
-	
-    /**
-     * Removes duplicated items. E.g. if a request to focus an item has been triggered
-     * when there is still a request to unfocus that item pending in the queue. Then the unfocus 
-     * event will be removed from the queue and the event and only the focus event is triggered.
-     * 
-     * @since S60 v5.0
-     * @param aFocusItem The item to be compared.
-     * @param aEventId focus or unfocus event.
-     */
-	void RemoveDuplicatedItem( const TFocusQueueItem& aFocusItem );
-
-private:
-	
-    /**
-     * The suite model for which focus events are handled.
-     * Not own.
-     */
-	CHnSuiteModel* iSuiteModel;
-	
-    /**
-     * Focus Queue.
-     * Own.
-     */
-	RArray<TFocusQueueItem> iFocusQueue;
-	
-	};
-
-#endif // HNITEMFOCUSHANDLER_H
--- a/menufw/hierarchynavigator/hnpresentationmodel/inc/hnsuitemodel.h	Tue May 25 12:29:32 2010 +0300
+++ b/menufw/hierarchynavigator/hnpresentationmodel/inc/hnsuitemodel.h	Wed Jun 09 09:29:04 2010 +0300
@@ -378,32 +378,6 @@
      * @return Custom identifier of the suite.
      */
     IMPORT_C TInt64 CustomId();
-    
-    /**
-     * Activates highlight handling.
-     * Used for highlight events for items.
-     * 
-     * @since S60 v5.0
-     * @param aActive ETrue if active.
-     */
-    IMPORT_C void SetActiveL( TBool aActive );
-    
-    /**
-     * Returns the state of the suite.
-     * 
-     * @since S60 v5.0
-     * @return ETrue if active.
-     */
-    IMPORT_C TBool IsActive();
-    
-    /**
-     * Notifies the model that the suite is visible.
-     * Used for highlight events for items.
-     * 
-     * @since S60 v5.0
-     * @param aVisible ETrue if visible.
-     */
-    IMPORT_C void SetVisibleL( TBool aVisible );
 
     /**
      * Returns item model matching given criteria.
@@ -468,17 +442,7 @@
      * @param aGenreName Genre name for model
      */
     void ConstructL( const TDesC& aGenreName );
-    
-    /**
-     * Launches the appropriate action if allowed.
-     * Used for highlight events for items.
-     * 
-     * @since S60 v5.0
-     * @param aItemId ID of the item.
-     * @param aFocused ETrue if focused.
-     */
-    void HandleItemFocusL( TInt aItemId, TBool aFocused );
-    
+
     /**
      * Set highlight on item.
      * 
@@ -572,18 +536,6 @@
      * Not Own.
      */ 
     CHnEventHandler& iEventHandler;
-		
-    /**
-     * Indicates if the suite is active.
-     * Used for handling highlight events for items.
-     */ 
-    TBool iIsActive;
-    
-    /**
-     * Indicates if the suite is visible.
-     * Used for handling highlight events for items.
-     */ 
-    TBool iIsVisible;
     
     /**
      * Exit mode.
--- a/menufw/hierarchynavigator/hnpresentationmodel/src/hnattributeimage.cpp	Tue May 25 12:29:32 2010 +0300
+++ b/menufw/hierarchynavigator/hnpresentationmodel/src/hnattributeimage.cpp	Wed Jun 09 09:29:04 2010 +0300
@@ -187,6 +187,10 @@
         {
         iAttrImgProvider = CHnAttrImgProvAppImage::NewL( iApplicationUid );
         }
+    else if ( IsLiwImage() )
+        {
+        iAttrImgProvider = CHnAttrImgProvLiwImage::NewL( iBitmap, iMask );
+        }
     else if ( IsFileImageL() )
         {
         if ( iFileNameSrc.Find( KSvgFileExtension() ) != KErrNotFound )
@@ -198,10 +202,6 @@
         	iAttrImgProvider = CHnAttrImgProvFileImage::NewL( iFileNameSrc );
         	}
         }
-    else if ( IsLiwImage() )
-        {
-        iAttrImgProvider = CHnAttrImgProvLiwImage::NewL( iBitmap, iMask );
-        }
     // if strin couldn't be resolved then provide empty one
     else
         {
--- a/menufw/hierarchynavigator/hnpresentationmodel/src/hnitemfocushandler.cpp	Tue May 25 12:29:32 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,230 +0,0 @@
-/*
-* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Application UI class
-*  Version     : %version: 3 % << Don't touch! Updated by Synergy at check-out.
-*/
-
-
-#include "hnitemfocushandler.h"
-#include "hnglobals.h"
-#include "hnsuitemodel.h"
-
-// ---------------------------------------------------------------------------
-// TFocusQueueItem::TFocusQueueItem( TInt aItemId, TInt aEventId )
-// ---------------------------------------------------------------------------
-//
-TFocusQueueItem::TFocusQueueItem( TInt aItemId, TInt aEventId ): 
-	iItemId( aItemId ),  iEventId( aEventId )
-	{
-	iTriggerTime.HomeTime();
-	}
-
-// ---------------------------------------------------------------------------
-// TFocusQueueItem::TriggerTime()
-// ---------------------------------------------------------------------------
-//
-TTime TFocusQueueItem::TriggerTime()
-	{
-	return iTriggerTime;
-	}
-
-// ---------------------------------------------------------------------------
-// TFocusQueueItem::ItemId()
-// ---------------------------------------------------------------------------
-//
-TInt TFocusQueueItem::ItemId()
-	{
-	return iItemId;
-	}
-
-// ---------------------------------------------------------------------------
-// TFocusQueueItem::EventId()
-// ---------------------------------------------------------------------------
-//
-TInt TFocusQueueItem::EventId()
-	{
-	return iEventId;
-	}
-
-// ---------------------------------------------------------------------------
-// TFocusQueueItem::CompareByTriggerTime( const TFocusQueueItem& aItem1,
-// const TFocusQueueItem& aItem2 )
-// ---------------------------------------------------------------------------
-//
-TInt TFocusQueueItem::CompareByTriggerTime( const TFocusQueueItem& aItem1,
-		const TFocusQueueItem& aItem2 )
-	{
-	if ( aItem1.iTriggerTime < aItem2.iTriggerTime )
-		{
-		return -1;
-		}
-	else
-		{
-		return 1;
-		}
-	}
-   
-// ---------------------------------------------------------------------------
-// TFocusQueueItem::CompareByItemId( const TFocusQueueItem& aItem1,
-// const TFocusQueueItem& aItem2 )
-// ---------------------------------------------------------------------------
-//
-TBool TFocusQueueItem::CompareByItemId( const TFocusQueueItem& aItem1,
-		const TFocusQueueItem& aItem2 )
-	{
-	return aItem1.iItemId == aItem2.iItemId;
-	}
-
-// ---------------------------------------------------------------------------
-// CHnItemFocusHandler::CHnItemFocusHandler() 
-// ---------------------------------------------------------------------------
-//
-CHnItemFocusHandler::CHnItemFocusHandler() :
-	CActive(EPriorityLow) // Standard priority
-	{
-	}
-
-// ---------------------------------------------------------------------------
-// CHnItemFocusHandler* CHnItemFocusHandler::NewLC()
-// ---------------------------------------------------------------------------
-//
-CHnItemFocusHandler* CHnItemFocusHandler::NewLC( CHnSuiteModel* aSuiteModel )
-	{
-	CHnItemFocusHandler* self = new (ELeave) CHnItemFocusHandler();
-	CleanupStack::PushL(self);
-	self->ConstructL( aSuiteModel );
-	return self;
-	}
-
-// ---------------------------------------------------------------------------
-// CHnItemFocusHandler* CHnItemFocusHandler::NewL()
-// ---------------------------------------------------------------------------
-//
-CHnItemFocusHandler* CHnItemFocusHandler::NewL( CHnSuiteModel* aSuiteModel )
-	{
-	CHnItemFocusHandler* self = CHnItemFocusHandler::NewLC( aSuiteModel );
-	CleanupStack::Pop(); // self;
-	return self;
-	}
-
-// ---------------------------------------------------------------------------
-// CHnItemFocusHandler::ConstructL()
-// ---------------------------------------------------------------------------
-//
-void CHnItemFocusHandler::ConstructL( CHnSuiteModel* aSuiteModel )
-	{
-	CActiveScheduler::Add( this); // Add to scheduler
-	iSuiteModel = aSuiteModel;
-	}
-
-// ---------------------------------------------------------------------------
-// CHnItemFocusHandler::~CHnItemFocusHandler(
-// ---------------------------------------------------------------------------
-//
-CHnItemFocusHandler::~CHnItemFocusHandler()
-	{
-	Cancel(); // Cancel any request, if outstanding
-	
-//	handle all pending unfocus events synchronously.
-	for(TInt i = 0; i < iFocusQueue.Count(); i++ )
-		{
-		if ( KIdFocusLost == iFocusQueue[i].EventId() )
-			{
-			if( iSuiteModel )
-			    {
-	            TRAP_IGNORE( iSuiteModel->OfferHnEventL( 
-	                    KIdFocusLost, iFocusQueue[i].ItemId(), NULL ) );
-			    }
-			}
-		}
-	iFocusQueue.Reset();
-	}
-
-// ---------------------------------------------------------------------------
-// CHnItemFocusHandler::DoCancel()
-// ---------------------------------------------------------------------------
-//
-void CHnItemFocusHandler::DoCancel()
-	{
-//	TRequestStatus* status = &iStatus;
-//	User::RequestComplete( status, KErrCancel);
-	}
-
-// ---------------------------------------------------------------------------
-// CHnItemFocusHandler::StartL(TTimeIntervalMicroSeconds32 aDelay)
-// ---------------------------------------------------------------------------
-//
-void CHnItemFocusHandler::SetFocusL( TInt aEventId, TBool aItemId )
-	{
-	TLinearOrder<TFocusQueueItem> byTriggerTime( 
-			TFocusQueueItem::CompareByTriggerTime );
-	TFocusQueueItem focusItem(aItemId, aEventId);
-	RemoveDuplicatedItem( focusItem );
-	iFocusQueue.InsertInOrderL( focusItem, byTriggerTime );
-	if ( !IsActive() )
-		{
-		SetActive();
-    	TRequestStatus* status = &iStatus;
-    	User::RequestComplete( status, KErrNone );
-		}
-	}
-
-// ---------------------------------------------------------------------------
-// CHnItemFocusHandler::RunL()
-// ---------------------------------------------------------------------------
-//
-void CHnItemFocusHandler::RunL()
-	{
-	TRAP_IGNORE( iSuiteModel->OfferHnEventL( 
-			iFocusQueue[0].EventId(), iFocusQueue[0].ItemId() , NULL ) );
-	iFocusQueue.Remove(0);
-	
-	if ( iFocusQueue.Count() > 0)
-		{
-		SetActive(); // Tell scheduler a request is active		
-    	TRequestStatus* status = &iStatus;
-    	User::RequestComplete( status, KErrNone );
-		}
-	}
-
-// ---------------------------------------------------------------------------
-// CHnItemFocusHandler::RunError(TInt aError)
-// ---------------------------------------------------------------------------
-//
-TInt CHnItemFocusHandler::RunError(TInt aError)
-	{
-	return aError;
-	}
-
-// ---------------------------------------------------------------------------
-// RemoveDuplicatedItem( const TFocusQueueItem& aFocusItem )
-// ---------------------------------------------------------------------------
-//
-void CHnItemFocusHandler::RemoveDuplicatedItem( const TFocusQueueItem& aFocusItem )
-	{
-	if ( iFocusQueue.Count() != 0 )
-		{
-		TIdentityRelation< TFocusQueueItem > byItemId( 
-				TFocusQueueItem::CompareByItemId );
-		TInt itemPosition;
-		itemPosition = iFocusQueue.Find( aFocusItem, byItemId );
-		if ( KErrNotFound != itemPosition )
-			{
-			iFocusQueue.Remove( itemPosition );
-			}
-		}
-	}
-
-// End of file
-
--- a/menufw/hierarchynavigator/hnpresentationmodel/src/hnsuitemodel.cpp	Tue May 25 12:29:32 2010 +0300
+++ b/menufw/hierarchynavigator/hnpresentationmodel/src/hnsuitemodel.cpp	Wed Jun 09 09:29:04 2010 +0300
@@ -30,7 +30,6 @@
 #include "hnattributetext.h"
 #include "hnitemsorder.h"
 #include "hneventhandler.h"
-#include "hnitemfocushandler.h"
 
 // ============================ MEMBER FUNCTIONS =============================
 
@@ -73,11 +72,6 @@
         TRAP_IGNORE( iSuiteObservers[i]->HandleSuiteEventL( ESuiteModelDestroyed, this ) );
         }
 
-    if ( iIsVisible && iIsActive )
-    	{
-    	TRAP_IGNORE( HandleItemFocusL( iSuiteHighlight.iItemId, EFalse ) );
-    	}
-    delete iItemFocusHandler;
     TRAP_IGNORE( OfferHnEventL( KIdSuiteUnLoad, 
             GetItemsOrder()->GetSuiteId(), NULL ) );
 
@@ -697,13 +691,6 @@
 	    newCustomId = itemModel->CustomId();
     	}
     
-    if ( ( newCustomId != iSuiteHighlight.iCustomId ||
-            newItemId != iSuiteHighlight.iItemId ) && ( iIsActive && iIsVisible ) )
-        {
-        HandleItemFocusL( iSuiteHighlight.iItemId, EFalse );
-        HandleItemFocusL( newItemId, ETrue );
-        }
-    
     iSuiteHighlight.iCustomId = newCustomId;
     iSuiteHighlight.iItemId = newItemId;
     iSuiteHighlight.iWidgetIndex = aHighLight;
@@ -845,83 +832,6 @@
 // ---------------------------------------------------------------------------
 // 
 // ---------------------------------------------------------------------------
-// 
-EXPORT_C void CHnSuiteModel::SetActiveL( TBool aActive )
-    {
-    DEBUG16(("_MM_:CHnSuiteModel::SetActiveL %S - IN",iSuiteName));
-    DEBUG(("\t_MM_:aActive: %d",aActive));
-    DEBUG(("\t_MM_:iIsActive: %d",iIsActive));
-    
-    if ( aActive != iIsActive )
-        {
-        iIsActive = aActive;
-        if ( iIsVisible )
-            {
-            HandleItemFocusL( iSuiteHighlight.iItemId, aActive );
-            }
-        }
-    
-    DEBUG(("_MM_:CHnSuiteModel::SetActiveL - OUT"));
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-// 
-EXPORT_C TBool CHnSuiteModel::IsActive()
-    {
-    return iIsActive;
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CHnSuiteModel::SetVisibleL( TBool aVisible )
-    {
-    DEBUG16(("_MM_:CHnSuiteModel::SetVisible %S - IN",iSuiteName));
-    DEBUG(("\t_MM_:aVisible: %d",aVisible));
-    DEBUG(("\t_MM_:iIsVisible: %d",iIsVisible));
-    
-    if ( aVisible != iIsVisible )
-        {
-        iIsVisible = aVisible;
-        if ( iIsActive )
-            {
-            HandleItemFocusL( iSuiteHighlight.iItemId, aVisible );
-            }
-        }
-    
-    DEBUG(("_MM_:CHnSuiteModel::SetVisible - OUT"));
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-void CHnSuiteModel::HandleItemFocusL( TInt aItemId, TBool aFocused )
-    {
-    DEBUG16(("_MM_:CHnSuiteModel::HandleItemFocusL %S - IN",iSuiteName));
-    DEBUG(("\t_MM_:aItemIndex: %d",aItemId));
-    DEBUG(("\t_MM_:aFocused: %d",aFocused));
-    
-    if ( aItemId >= 0 )
-        {
-        if ( !iItemFocusHandler )
-        	{
-        	iItemFocusHandler = CHnItemFocusHandler::NewL( this );
-        	}
-        TInt eventId = aFocused ? KIdFocusGain : KIdFocusLost;
-        iItemFocusHandler->SetFocusL( eventId, aItemId );
-//        TRAP_IGNORE( OfferHnEventL( eventId, aItemId, NULL ) );
-        }
-    
-    DEBUG(("_MM_:CHnSuiteModel::HandleItemFocusL - OUT"));
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
 //
 EXPORT_C CHnItemModel* CHnSuiteModel::GetMatchingItemModelL( TInt64 aCustomId,
 		TInt& aIndex )
--- a/menufw/menufwui/matrixmenu/src/mmappui.cpp	Tue May 25 12:29:32 2010 +0300
+++ b/menufw/menufwui/matrixmenu/src/mmappui.cpp	Wed Jun 09 09:29:04 2010 +0300
@@ -12,8 +12,8 @@
 * Contributors:
 *
 * Description:  Application UI class
-*  Version     : %version: MM_176.1.28.1.78 % << Don't touch! Updated by Synergy at check-out.
-*  Version     : %version: MM_176.1.28.1.78 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: MM_176.1.28.1.82 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: MM_176.1.28.1.82 % << Don't touch! Updated by Synergy at check-out.
 *
 */
 
@@ -77,6 +77,8 @@
     EMenuCloseFolderEffect = 1002
     };
 
+#define AI_UID3_AIFW_COMMON 0x102750F0
+
 // ============================ MEMBER FUNCTIONS =============================
 
 // ---------------------------------------------------------------------------
@@ -112,10 +114,9 @@
     iDummyContainer = CMmWidgetContainer::NewGridContainerL( ClientRect(),
             this, iDummyTemplateLib );
     iDummyContainer->SetEmptyTextL( KNullDesC );
+    iDummyContainer->MakeVisible( EFalse );
     AddToStackL( iDummyContainer, ECoeStackPriorityDefault,
             ECoeStackFlagRefusesFocus | ECoeStackFlagRefusesAllKeys );
-    iDummyContainer->MakeVisible( ETrue );
-    iDummyContainer->DrawNow();
 
     iHNInterface = CHnEngine::NewL( *this );
     iTemplateLibrary = CMmTemplateLibrary::NewL();
@@ -785,10 +786,6 @@
             {
             DEBUG(("_Mm_:CMmAppUi::NotifyUiRefreshL - ELightOn"));
             iScreenOn = ETrue;
-            if ( IsForeground() && iCurrentSuiteModel )
-                {
-                iCurrentSuiteModel->SetVisibleL( ETrue );
-                }
             if ( iCurrentContainer )
                 {
                 iCurrentContainer->HandleForegroundGainedL();
@@ -807,11 +804,6 @@
                     iCurrentContainer->CancelDragL(EFalse);
                     }
                 }
-            if (iCurrentSuiteModel)
-                {
-                iCurrentSuiteModel->SetVisibleL(EFalse);
-                }
-
             }
             break;
         case ERemoveLiwObjects:
@@ -1225,9 +1217,9 @@
         HandleHighlightItemSingleClickedL(  iCurrentContainer->Widget()->CurrentItemIndex() );
         }
     else if ( aEventType == MEikListBoxObserver::EEventPanningStarted )
-      {
-      iKeyClickLocked = ETrue;
-      }
+        {
+        iKeyClickLocked = ETrue;
+        }
 
     DEBUG(("_Mm_:CMmAppUi::HandleListBoxEventL OUT"));
     }
@@ -1488,25 +1480,25 @@
                     {
                     TInt itemId( KErrNotFound );
                     TBool suiteModelHasItems = iCurrentContainer->GetSuiteModelL()->GetItemModelsCount() > 1;
-          TBool highlightVisible = iCurrentContainer->IsHighlightVisible();
-          if ( !highlightVisible && suiteModelHasItems )
-            {
+                    TBool highlightVisible = iCurrentContainer->IsHighlightVisible();
+                    if ( !highlightVisible && suiteModelHasItems )
+                        {
 //						if there is no highlight, but there are items, show menuitems for logically
 //						current suite highlight fetched from suite model.
-            TInt suiteHighlight = iCurrentSuiteModel->GetSuiteHighlight();
-            ASSERT( suiteHighlight != KErrNotFound );
-            itemId = iCurrentSuiteModel->IdByIndex( suiteHighlight );
-            ignoreItemSpecific = ETrue;
-            }
-          else
-            {
-                      TBool idByContainer = highlightVisible && suiteModelHasItems;
-                      itemId = idByContainer ?
-                          iCurrentSuiteModel->IdByIndex( iCurrentContainer->GetHighlight() ) :
-                          iCurrentSuiteModel->IdByIndex( KErrNotFound );
-            }
+                        TInt suiteHighlight = iCurrentSuiteModel->GetSuiteHighlight();
+                        ASSERT( suiteHighlight != KErrNotFound );
+                        itemId = iCurrentSuiteModel->IdByIndex( suiteHighlight );
+                        ignoreItemSpecific = ETrue;
+                        }
+                    else
+                        {
+                        TBool idByContainer = highlightVisible && suiteModelHasItems;
+                        itemId = idByContainer
+                                ? iCurrentSuiteModel->IdByIndex( iCurrentContainer->GetHighlight() )
+                                : iCurrentSuiteModel->IdByIndex( KErrNotFound );
+                        }
                     menuIterator = iCurrentSuiteModel->GetMenuStructureL( itemId );
-                }
+                    }
 
                 // check if there is a menu structure available
                 // for the specified item
@@ -1536,42 +1528,42 @@
                         {
                         CHnMenuItemModel* menuItem = menuIterator->GetNext();
                         if ( (menuItem->MenuItemType() == CHnMenuItemModel::EItemApplication) || !ignoreItemSpecific )
-                          {
-                          CEikMenuPaneItem::SData menuData;
-              menuData.iCommandId = menuItem->Command();
-              menuData.iText = menuItem->NameL().
-                Left( CEikMenuPaneItem::SData::ENominalTextLength );
-              menuData.iFlags = 0;
+                            {
+                            CEikMenuPaneItem::SData menuData;
+                            menuData.iCommandId = menuItem->Command();
+                            menuData.iText = menuItem->NameL().
+                                    Left( CEikMenuPaneItem::SData::ENominalTextLength );
+                            menuData.iFlags = 0;
 
-              //check for children
-              MHnMenuItemModelIterator* childIterator =
-                menuItem->GetMenuStructure();
-              if ( childIterator->HasNext() )
-                {
-                //this is a cascade item
-                //one menu item can contain only one cascade menu
-                //check if there are available cascade menu containers
-                TInt freeResource = GetNextCascadeMenuResourceId();
-                if ( freeResource != KErrNotFound )
-                  {
-                  //error checking
-                  if( !iCascadeMenuMap.Insert( freeResource,
-                                childIterator ) )
-                    {
-                    //add item only if there is an
-                    //available resource
-                    menuData.iCascadeId = freeResource;
-                    }
-                  }
-                }
-              else
-                {
-                //normal entry
-                menuData.iCascadeId = 0;
-                }
-              positionArray.AppendL( menuItem->Position() );
-              menuItemMap.InsertL( menuItem->Position(), menuData );
-                          }
+                            //check for children
+                            MHnMenuItemModelIterator* childIterator =
+                                    menuItem->GetMenuStructure();
+                            if ( childIterator->HasNext() )
+                                {
+                                //this is a cascade item
+                                //one menu item can contain only one cascade menu
+                                //check if there are available cascade menu containers
+                                TInt freeResource = GetNextCascadeMenuResourceId();
+                                if ( freeResource != KErrNotFound )
+                                    {
+                                    //error checking
+                                    if( !iCascadeMenuMap.Insert( freeResource,
+                                            childIterator ) )
+                                        {
+                                        //add item only if there is an
+                                        //available resource
+                                        menuData.iCascadeId = freeResource;
+                                        }
+                                    }
+                                }
+                            else
+                                {
+                                //normal entry
+                                menuData.iCascadeId = 0;
+                                }
+                            positionArray.AppendL( menuItem->Position() );
+                            menuItemMap.InsertL( menuItem->Position(), menuData );
+                            }
                         }
 
                     aMenuPane->Reset();
@@ -1742,7 +1734,15 @@
 
     iCurrentContainer = aWidgetContainer;
     iCurrentContainer->Widget()->View()->SetDisableRedraw(ETrue);
-    iDummyContainer->MakeVisible( ETrue );
+    if( isHiddenFromFS )
+        {
+        iCurrentContainer->MakeVisible( EFalse );
+        }
+    else
+        {
+        iDummyContainer->MakeVisible( ETrue );
+        }
+
     RefreshCbaL();
     iCurrentContainer->SetEditModeL( IsEditMode() );
     iCurrentContainer->SetSuiteModelL( iCurrentSuiteModel );
@@ -2378,9 +2378,9 @@
 //
 void CMmAppUi::HandleSuiteModelInitializedL( CHnSuiteModel* aModel )
     {
+
     StatusPane()->MakeVisible( ETrue );
     Cba()->MakeVisible( ETrue );
-
     if ( aModel == iHNInterface->GetLastSuiteModelL() )
         {
         TBool showOpenFolderEffect(iCurrentSuiteModel
@@ -2392,12 +2392,6 @@
             StartLayoutSwitchFullScreen( EMenuOpenFolderEffect );
             }
 
-        if ( iCurrentSuiteModel )
-            {
-            iCurrentSuiteModel->SetVisibleL( EFalse );
-            DEBUG16(("\t\t_Mm_:SetVisible EFalse - %S",
-                    &(iCurrentSuiteModel->SuiteName())));
-            }
         iCurrentSuiteModel = aModel;
         ShowSuiteL();
         iGarbage.ResetAndDestroy();
@@ -2411,13 +2405,6 @@
             iEditModeStatus = ENoEditMode;
             }
 
-        if (iScreenOn && IsForeground())
-            {
-            iCurrentSuiteModel->SetVisibleL( ETrue );
-            DEBUG16(("\t\t_Mm_:SetVisible ETrue - %S",
-                    &(iCurrentSuiteModel->SuiteName())));
-            }
-
         HideMenuPaneIfVisibleL();
         EndFullScreen();
         }
@@ -2755,15 +2742,20 @@
             aKastorEffect == AknTransEffect::EApplicationExit )
         {
         DEBUG(("_MM_:CMmAppUi::StartLayoutSwitchFullScreen Foreground"));
-        TUid uid1( KUidMatrixMenuApp );
-        TUid uid2( KUidMatrixMenuApp );
-        if ( aKastorEffect == AknTransEffect::EApplicationExit )
+        TUid uidNext( KUidMatrixMenuApp );
+        TUid uidPrev( KUidMatrixMenuApp );
+
+        if( aKastorEffect == AknTransEffect::EApplicationExit )
             {
-            uid2 = TUid::Null();
+            uidPrev = TUid::Null();
+            }
+        else if( aKastorEffect == AknTransEffect::EApplicationStart )
+            {
+            uidPrev = uidPrev.Uid( AI_UID3_AIFW_COMMON );
             }
 
         AknTransEffect::TParamBuffer params = AknTransEffect::GfxTransParam(
-                uid1, uid2, AknTransEffect::TParameter::EFlagNone );
+                uidNext, uidPrev, AknTransEffect::TParameter::EFlagNone );
 
         GfxTransEffect::BeginFullScreen( aKastorEffect, TRect(),
                 AknTransEffect::EParameterType, params );
@@ -2990,10 +2982,6 @@
         {
         iCurrentContainer->SetHasFocusL( ETrue );
         }
-    if ( iCurrentSuiteModel )
-        {
-        iCurrentSuiteModel->SetVisibleL( ETrue );
-        }
     }
 
 // ---------------------------------------------------------------------------
@@ -3031,11 +3019,6 @@
       }
     iCurrentContainer->SetHasFocusL( EFalse );
     }
-  if ( iCurrentSuiteModel )
-    {
-    iCurrentSuiteModel->SetVisibleL( EFalse );
-    }
-
   }
 
 // ---------------------------------------------------------------------------
--- a/menufw/menufwui/mmextensions/mmextensionmanager/group/bld.inf	Tue May 25 12:29:32 2010 +0300
+++ b/menufw/menufwui/mmextensions/mmextensionmanager/group/bld.inf	Wed Jun 09 09:29:04 2010 +0300
@@ -21,7 +21,6 @@
 
 PRJ_EXPORTS
 ../inc/mmextensionmanager.h 		|../../../../inc/mmextensionmanager.h
-../inc/mmecomobserver.h             |../../../../inc/mmecomobserver.h
 
 PRJ_MMPFILES
 mmextensionmanager.mmp
--- a/menufw/menufwui/mmextensions/mmextensionmanager/group/mmextensionmanager.mmp	Tue May 25 12:29:32 2010 +0300
+++ b/menufw/menufwui/mmextensions/mmextensionmanager/group/mmextensionmanager.mmp	Wed Jun 09 09:29:04 2010 +0300
@@ -28,7 +28,6 @@
 SOURCEPATH    	../src
 
 SOURCE		mmextensionmanager.cpp
-SOURCE      mmecomobserver.cpp
 
 
 USERINCLUDE   	.
--- a/menufw/menufwui/mmextensions/mmextensionmanager/inc/mmecomobserver.h	Tue May 25 12:29:32 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,131 +0,0 @@
-/*
-* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:   Menu Framewrok ECom observer
-*
-*/
-
-#ifndef C_ECOM_OBSERVER_H
-#define C_ECOM_OBSERVER_H
-
-#include <e32base.h>	// For CActive, link against: euser.lib
-#include <e32std.h>		// For RTimer, link against: euser.lib
-
-class REComSession;
-
-/**
- * Class defining callback interface.
- */
-
-/**
- * MHNEcomInstallNotifierCallback is an interface contains function
- * executed when ECom plugin have changed. Interface is used by all
- * ECom observer implementations.
- *
- * @since S60 5.0
- * @ingroup group_mmextensions
- */
-class MHNEcomInstallNotifierCallback
-    {
-public:
-	
-	/**
-	 * Refreshes list of MultimediaMenu plugins implementations.
-	 */
-    virtual void EcomChangedL() = 0;    
-    };
-
-/**
- * Class for observing ECom server
- */
-
-/**
- * CMMEcomObserver is a class represents ECom plugin. Class is
- * derived by all ECom plugin implemetations. Implementation
- * contains basic functionality related with ECom mechanism and
- * notification handling.
- *
- * @since S60 5.0
- * @ingroup group_mmextensions
- */
-NONSHARABLE_CLASS( CMMEcomObserver ) : public CActive
-    {
-public:
-    /**
-     * Cancel and destroy.
-     */
-    ~CMMEcomObserver();
-
-    /**
-     * Two-phased constructor.
-     * @param aCallback Pointer to ECom plugin callback.
-     * @return Instance of the CMMEcomObserver class.
-     */
-    static CMMEcomObserver* NewL( MHNEcomInstallNotifierCallback* aCallback );
-
-    /**
-     * Two-phased constructor.
-     * @param aCallback Pointer to ECom plugin callback.
-     * @return Instance of the CMMEcomObserver class.
-     */
-    static CMMEcomObserver* NewLC( MHNEcomInstallNotifierCallback* aCallback );
-
-private:
-    /**
-     * Default C++ constructor.
-     */
-    CMMEcomObserver();
-
-    /**
-     * Second-phase constructor.
-     * @param aCallback Pointer to ECom plugin callback.
-     */
-    void ConstructL( MHNEcomInstallNotifierCallback* aCallback );
-
-private:
-    
-    /**
-     * From CActive. Handles completion.
-     */
-    void RunL();
-
-    /**
-     * Cancels active object.
-     */
-    void DoCancel();
-
-    /**
-     * Override to handle leaves from RunL(). Default implementation causes
-     * the active scheduler to panic.
-     * @param aError Currently error status.
-     * @return Error code.
-     */
-    TInt RunError( TInt aError );
-
-private:
-
-    /**
-     * ECom handler
-     * Own.
-     */
-    REComSession* iSession;
-    
-    /**
-     * Callback pointer.
-     * Not own.
-     */
-    MHNEcomInstallNotifierCallback* iCallback;
-    
-    };
-
-#endif // C_ECOM_OBSERVER_H
--- a/menufw/menufwui/mmextensions/mmextensionmanager/inc/mmextensionmanager.h	Tue May 25 12:29:32 2010 +0300
+++ b/menufw/menufwui/mmextensions/mmextensionmanager/inc/mmextensionmanager.h	Wed Jun 09 09:29:04 2010 +0300
@@ -20,7 +20,6 @@
 #define C_MM_EXTENSION_MANAGER_H
 
 // INCLUDES
-#include "mmecomobserver.h"
 #include <e32std.h>
 #include <e32base.h>
 #include <e32hashtab.h>
@@ -38,9 +37,7 @@
  * @since S60 5.0
  * @ingroup group_mmextensions
  */
-NONSHARABLE_CLASS( CMMExtensionManager ):
-    public CBase,
-    public MHNEcomInstallNotifierCallback
+NONSHARABLE_CLASS( CMMExtensionManager ): public CBase
 	{
 public: // Constructors and destructor
 
@@ -79,11 +76,6 @@
 		const TUid aUid,
         const TDesC& aCommand,
         CLiwGenericParamList* aEventParamList );
-	
-	/**
-	 * Refreshes list of MultimediaMenu plugins implementations.
-	 */
-	void EcomChangedL();
 
 private:
 
@@ -124,12 +116,7 @@
 	 * Reference to the App UI.
 	 */	
 	MMmActionRequest& iActionRequest;
-	
-	/**
-	 * Pointer to ECom observer.
-	 * Own.
-	 */
-    CMMEcomObserver *iEcomObserver;
+
 };
 
 #endif // C_MM_EXTENSION_MANAGER_H
--- a/menufw/menufwui/mmextensions/mmextensionmanager/src/mmecomobserver.cpp	Tue May 25 12:29:32 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,109 +0,0 @@
-/*
-* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:   Interface of the Ecom observer
-*
-*/
-
-#include <ecom/ecom.h>
-#include "mmecomobserver.h"
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-CMMEcomObserver::CMMEcomObserver() :
-    CActive(EPriorityStandard) // Standard priority
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-CMMEcomObserver* CMMEcomObserver::NewLC( 
-                                    MHNEcomInstallNotifierCallback* aCallback )
-    {
-    CMMEcomObserver* self = new ( ELeave ) CMMEcomObserver();
-    CleanupStack::PushL(self);
-    self->ConstructL( aCallback );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-CMMEcomObserver* CMMEcomObserver::NewL( 
-                                    MHNEcomInstallNotifierCallback* aCallback )
-    {
-    CMMEcomObserver* self = CMMEcomObserver::NewLC( aCallback );
-    CleanupStack::Pop(); // self;
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-void CMMEcomObserver::ConstructL( MHNEcomInstallNotifierCallback* aCallback )
-    {
-    iCallback = aCallback;
-    iSession = &REComSession::OpenL();
-    iSession->NotifyOnChange( iStatus );
-    CActiveScheduler::Add( this );
-    SetActive();
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-CMMEcomObserver::~CMMEcomObserver()
-    {
-    Cancel(); // Cancel any request, if outstanding
-    if( iSession )
-        {
-        iSession->Close();
-        }
-    REComSession::FinalClose( );
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-void CMMEcomObserver::DoCancel()
-    {
-    iSession->CancelNotifyOnChange( iStatus );
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-void CMMEcomObserver::RunL()
-    {
-    iCallback->EcomChangedL();
-    iSession->NotifyOnChange( iStatus );
-    SetActive(); // Tell scheduler a request is active
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-TInt CMMEcomObserver::RunError( TInt /*aError*/ )
-    {
-    return KErrNone;
-    }
--- a/menufw/menufwui/mmextensions/mmextensionmanager/src/mmextensionmanager.cpp	Tue May 25 12:29:32 2010 +0300
+++ b/menufw/menufwui/mmextensions/mmextensionmanager/src/mmextensionmanager.cpp	Wed Jun 09 09:29:04 2010 +0300
@@ -45,17 +45,6 @@
             delete (CMMExtensionPlugin*)(*ptr);
         }    
 	iPluginMap.Close ();
-	
-	
-    //delete iPluginNameMap
-    /*THashMapIter< HBufC*, TInt32 > iter1( iPluginNameMap );
-    while ( HBufC*const* ptrHbuf = iter1.NextKey() )
-        {		
-        delete *ptrHbuf;
-        }  
-    iPluginNameMap.Close();*/
-	
-    delete iEcomObserver;
 	}
 
 // ---------------------------------------------------------------------------
@@ -88,7 +77,6 @@
 //
 void CMMExtensionManager::ConstructL()
 	{
-    iEcomObserver = CMMEcomObserver::NewL( this );
 	LoadPluginsL();
 	}
 
@@ -179,21 +167,4 @@
     return ret;
     }
 
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-void CMMExtensionManager::EcomChangedL()
-    {
-    THashMapIter< TInt32, CMMExtensionPlugin* > iter( iPluginMap );
-    for (CMMExtensionPlugin* const* ptr =
-                                ( CMMExtensionPlugin* const* ) iter.NextValue();
-        ptr; ptr = ( CMMExtensionPlugin* const* ) iter.NextValue())
-        {
-            delete (CMMExtensionPlugin*)(*ptr);
-        }
-    iPluginMap.Close();
-    LoadPluginsL();
-    }
-
 // End of file
--- a/menufw/menufwui/mmwidgets/inc/mmdraweranimator.h	Tue May 25 12:29:32 2010 +0300
+++ b/menufw/menufwui/mmwidgets/inc/mmdraweranimator.h	Wed Jun 09 09:29:04 2010 +0300
@@ -12,7 +12,7 @@
 * Contributors:
 *
 * Description:  CMmDrawerAnimator declaration
-*  Version     : %version: MM_17.1.8 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: MM_17.1.10 % << Don't touch! Updated by Synergy at check-out.
 *
 */
 
@@ -154,6 +154,17 @@
      */
     void TriggerMoveItemL();
 
+    /**
+     * Animates transition of the dragged item.
+     * The animation starts in the original place of dragging item,
+     * and end in the EDrag floating item position, when item had been start drag.
+     *
+     * @since S60 v5.0
+	 * @param aDraggedIndex Draged item index to be animated.
+	 * @param aPoint End position of animated item.
+     */
+    void AnimateDragItemStartL( TInt aDraggedIndex, TPoint aPoint );
+
 private:
 
     /**
--- a/menufw/menufwui/mmwidgets/inc/mmgrid.h	Tue May 25 12:29:32 2010 +0300
+++ b/menufw/menufwui/mmwidgets/inc/mmgrid.h	Wed Jun 09 09:29:04 2010 +0300
@@ -12,7 +12,7 @@
 * Contributors:
 *
 * Description:  CMmGrid declaration
-*  Version     : %version: MM_32.1.24 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: MM_32.1.25 % << Don't touch! Updated by Synergy at check-out.
 *
 */
 
@@ -131,7 +131,7 @@
      * @param aBgContext Background context to be set in view and item drawer.
      */
     void SetItemDrawerAndViewBgContext(
-    		CAknsBasicBackgroundControlContext* aBgContext );
+        CAknsBasicBackgroundControlContext* aBgContext );
 
     /**
      * Handles changes in scrollbar visibility.
@@ -362,7 +362,7 @@
      * @param aPointerEvent Type of pointer event.
      */
     void HandleOverridenHighlightDrawing( const TPointerEvent& aPointerEvent,
-    		TInt aIndexBefore, TInt aIndexAfter );
+        TInt aIndexBefore, TInt aIndexAfter );
 
     /**
      * Ensures that elements are drawn correctly when mirrored layout is
--- a/menufw/menufwui/mmwidgets/inc/mmgridview.h	Tue May 25 12:29:32 2010 +0300
+++ b/menufw/menufwui/mmwidgets/inc/mmgridview.h	Wed Jun 09 09:29:04 2010 +0300
@@ -12,7 +12,7 @@
 * Contributors:
 *
 * Description:  CMmGridView declaration
-*  Version     : %version: MM_24.1.10 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: MM_24.1.11 % << Don't touch! Updated by Synergy at check-out.
 *
 */
 
@@ -63,9 +63,9 @@
      * @since S60 v3.0
      * @param aClipRect Clipping rectangle.
      */
-	void Draw( const TRect* aClipRect ) const;
+  void Draw( const TRect* aClipRect ) const;
 
-	/**
+  /**
      * Gets item position.
      *
      * This fuction from @c CAknGridView is overridden so that it
@@ -90,12 +90,12 @@
      */
     TBool XYPosToItemIndex(TPoint aPosition, TInt& aItemIndex) const;
 
-	/**
-	 * Returns this view's gc.
-	 *
-	 * @return pointer to gc
-	 */
-	CWindowGc* Gc();
+  /**
+   * Returns this view's gc.
+   *
+   * @return pointer to gc
+   */
+  CWindowGc* Gc();
 
     /**
      * @see CAknGridView::UpdateSelectionL
@@ -108,15 +108,15 @@
      */
     void UpdateSelectionL( TSelectionMode aSelectionMode );
 
-	/**
-	 * @see CAknGridView::MoveCursorL
-	 *
-	 * This method of CAknGridView is overriden to so that
-	 * correct effects are displayed when moving highlight with
-	 * rocker key in mirrored layout.
+  /**
+   * @see CAknGridView::MoveCursorL
+   *
+   * This method of CAknGridView is overriden to so that
+   * correct effects are displayed when moving highlight with
+   * rocker key in mirrored layout.
      * Please note that it is necessary because of the hackish
      * solution used to draw items in mirrored layout.
-	 */
+   */
     void MoveCursorL( TCursorMovement aCursorMovement,
             TSelectionMode aSelectionMode );
 
@@ -128,10 +128,10 @@
      */
     TInt VerticalItemOffset() const;
 
-	/**
-	* This function sets item height in pixels.
-	* @param aItemHeight New height in pixels for this view’s items.
-	*/
+  /**
+  * This function sets item height in pixels.
+  * @param aItemHeight New height in pixels for this view’s items.
+  */
     void SetItemHeight(TInt aItemHeight);
 
     /**
--- a/menufw/menufwui/mmwidgets/inc/mmlistboxitemdrawer.h	Tue May 25 12:29:32 2010 +0300
+++ b/menufw/menufwui/mmwidgets/inc/mmlistboxitemdrawer.h	Wed Jun 09 09:29:04 2010 +0300
@@ -12,7 +12,7 @@
 * Contributors:
 *
 * Description:  CMmListBoxItemDrawer
-*  Version     : %version: MM_38.1.18 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: MM_38.1.19 % << Don't touch! Updated by Synergy at check-out.
 *
 */
 
@@ -485,6 +485,17 @@
      */
     void DrawBackground( const TRect& aItemTextRect ) const;
 
+    /**
+     * Animates transition of the dragged item.
+     * The animation starts in the original place of dragging item,
+     * and end in the EDrag floating item position, when item had been start drag.
+     *
+     * @since S60 v5.0
+	 * @param aDraggedIndex Draged item index to be animated.
+	 * @param aPoint End position of animated item.
+     */
+    void AnimateDragItemStartL( TInt aDraggedIndex, TPoint aPoint );
+
 protected:
     /**
      * From CListItemDrawer. Draws an item.
--- a/menufw/menufwui/mmwidgets/inc/mmwidgetcontainer.h	Tue May 25 12:29:32 2010 +0300
+++ b/menufw/menufwui/mmwidgets/inc/mmwidgetcontainer.h	Wed Jun 09 09:29:04 2010 +0300
@@ -12,7 +12,7 @@
 * Contributors:
 *
 * Description:
-*  Version     : %version: MM_48.1.40 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: MM_48.1.43 % << Don't touch! Updated by Synergy at check-out.
 *
 */
 
@@ -72,34 +72,34 @@
     TMmWidgetPosition();
 
 public: // data
-  /**
-   * The vertical item offset cache.
-   */
-  TInt iVerticalItemOffset;
+    /**
+     * The vertical item offset cache.
+     */
+    TInt iVerticalItemOffset;
 
-  /**
-   * The top item index cache.
-   */
-  TInt iTopItemIndex;
+    /**
+     * The top item index cache.
+     */
+    TInt iTopItemIndex;
 
-  /**
-   * Tells if the cached values are valid.
-   */
-  TBool iValid;
+    /**
+     * Tells if the cached values are valid.
+     */
+    TBool iValid;
 
-  /**
-   * The mode (portrait/landscape) for which the cache is valid.
-   */
-  TBool iLandscape;
+    /**
+     * 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
-   * initialized to KErrNotFound.
-   */
-  TInt iHighlightedItemId;
-  };
+    /**
+     * 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
+     * initialized to KErrNotFound.
+     */
+    TInt iHighlightedItemId;
+    };
 
 /**
  *  Interface for widget containers.
@@ -143,13 +143,13 @@
 
 public: // Highlight related methods
 
-  /**
-   * Sets the default highlight.
-   *
+    /**
+     * Sets the default highlight.
+     *
      * @since S60 v3.0
      * @param aRedraw Is highlight to redraw.
-     */
-  virtual void SetDefaultHighlightL( TBool aRedraw = ETrue ) = 0;
+    */
+    virtual void SetDefaultHighlightL( TBool aRedraw = ETrue ) = 0;
 
     /**
      * Sets the highlight.
@@ -158,7 +158,7 @@
      * @param aItemIndex Index to set the highlight at.
      * @param aRedraw Is highlight to redraw.
      */
-  IMPORT_C virtual void SetManualHighlightL(TInt aItemIndex,  TBool aRedraw = ETrue );
+    IMPORT_C virtual void SetManualHighlightL(TInt aItemIndex,  TBool aRedraw = ETrue );
 
     /**
      * Gets the highlight from the widget.
@@ -166,7 +166,7 @@
      * @since S60 v3.0
      * @return Current Highlight in the widget.
      */
-  IMPORT_C virtual TInt GetHighlight();
+    IMPORT_C virtual TInt GetHighlight();
 
     /**
      * Gets the highlight from the widget.
@@ -174,7 +174,7 @@
      * @since S60 v3.0
      * @return Previous Highlight in the widget.
      */
-  IMPORT_C virtual TInt GetPreviousHighlight();
+    IMPORT_C virtual TInt GetPreviousHighlight();
 
     /**
      * Set highlight visibility.
@@ -182,7 +182,7 @@
      * @since S60 v3.0
      * @param aVisible Visibility status.
      */
-  IMPORT_C virtual void SetHighlightVisibilityL( TBool aVisible );
+    IMPORT_C virtual void SetHighlightVisibilityL( TBool aVisible );
 
     /**
      * Set highlight visibility.
@@ -190,14 +190,14 @@
      * @since S60 v3.0
      * @return Visibility status.
      */
-  IMPORT_C virtual TBool IsHighlightVisible();
+    IMPORT_C virtual TBool IsHighlightVisible();
 
     /**
      * Handle item addition.
      *
      * @since S60 v3.0
      */
-  IMPORT_C virtual void HandleItemAdditionL();
+    IMPORT_C virtual void HandleItemAdditionL();
 
 
     /**
@@ -205,14 +205,14 @@
      *
      * @since S60 v3.0
      */
-  IMPORT_C virtual void HandleItemRemovalL();
+    IMPORT_C virtual void HandleItemRemovalL();
 
     /**
      * Handle item removal.
      *
      * @since S60 v3.0
      */
-  IMPORT_C CHnSuiteModel* GetSuiteModelL();
+    IMPORT_C CHnSuiteModel* GetSuiteModelL();
 
     /**
      * Retrieve type of widget.
@@ -220,40 +220,40 @@
      * @since S60 v3.0
      * @return Type of widget.
      */
-  IMPORT_C virtual THnSuiteWidgetType WidgetType();
+    IMPORT_C virtual THnSuiteWidgetType WidgetType();
 
-  /**
-   * Removes all LIW objects owned by this object.
+    /**
+     * Removes all LIW objects owned by this object.
      *
      * LIW objects owned by non-LIW objects that are owned by
      * this object are also removed.
-   */
-  virtual void RemoveLiwObjects();
+    */
+    virtual void RemoveLiwObjects();
 
-  /**
-   * Sets the long tap observer.
+    /**
+     * Sets the long tap observer.
      *
      * @param aObserver Observer to receive long tap events.
-   */
-  IMPORT_C virtual void SetLongTapObserver( MMmLongTapObserver* aObserver );
+     */
+    IMPORT_C virtual void SetLongTapObserver( MMmLongTapObserver* aObserver );
 
-  /**
-   * 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 EndLongTapL( TBool aStopTimer = ETrue );
+    /**
+     * 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 EndLongTapL( TBool aStopTimer = ETrue );
 
 public:
 
-  /**
-   * Sets suite model.
-   *
-   * @since S60 v3.0
-   * @param aModel Suite model.
-   */
-  virtual void SetSuiteModelL( CHnSuiteModel* aModel );
+    /**
+     * Sets suite model.
+     *
+     * @since S60 v3.0
+     * @param aModel Suite model.
+     */
+    virtual void SetSuiteModelL( CHnSuiteModel* aModel );
 
     /**
      * Gets Multimedia Menu model.
@@ -261,7 +261,7 @@
      * @since S60 v3.0
      * @return Model.
      */
-  virtual CMmListBoxModel* GetMmModel() = 0;
+    virtual CMmListBoxModel* GetMmModel() = 0;
 
     /**
      * Sets widget observer.
@@ -269,7 +269,7 @@
      * @since S60 v3.0
      * @param aObserver Widget observer.
      */
-  IMPORT_C virtual void SetObserver( MMmWidgetObserver*  aObserver);
+    IMPORT_C virtual void SetObserver( MMmWidgetObserver*  aObserver);
 
     /**
      * Gets item rectangle according to item index.
@@ -278,7 +278,7 @@
      * @param aItemIndex Item index.
      * @return Item rectangle.
      */
-  IMPORT_C TRect GetItemRectL( TInt aItemIndex );
+    IMPORT_C TRect GetItemRectL( TInt aItemIndex );
 
     /**
      * Sets empty text visible when model has no items.
@@ -286,7 +286,7 @@
      * @since S60 v3.0
      * @param aText Text to be shown when view is empty.
      */
-  virtual void SetEmptyTextL(const TDesC& aText) = 0 ;
+    virtual void SetEmptyTextL(const TDesC& aText) = 0 ;
 
     /**
      * Sets flag.
@@ -294,7 +294,7 @@
      * @since S60 v3.0
      * @param Flag Flag.
      */
-  virtual void SetFlag(TInt Flag);
+    virtual void SetFlag(TInt Flag);
 
     /**
      * Gets widget.
@@ -302,7 +302,7 @@
      * @since S60 v3.0
      * @return Widget.
      */
-  virtual CEikListBox* Widget();
+    virtual CEikListBox* Widget();
 
     /**
      * Sets background context for item drawer and view.
@@ -310,7 +310,7 @@
      * @since S60 v3.0
      * @param aBgContext Background context.
      */
-  virtual void SetItemDrawerAndViewBgContext(
+    virtual void SetItemDrawerAndViewBgContext(
       CAknsBasicBackgroundControlContext * aBgContext ) =0;
 
     /**
@@ -693,6 +693,11 @@
      */
     IMPORT_C void SetExDialogOpened( TBool aOpened );
 
+    /**
+     * Widget position cache.
+     */
+    TMmWidgetPosition WidgetPositionCache() const;
+
 public: // from MMmVisibilityObserver
 
     /**
@@ -847,11 +852,11 @@
     TBool IsFolderL( TInt aItemIndex );
 
     /**
-   * Checks, whether given item has IsDeleteLockedL flag set.
-   * @param aItemIndex Item index to check.
-   * @returns IsDeleteLockedL flag
-   */
-  TBool IsDeleteLockedL( TInt aItemIndex );
+     * Checks, whether given item has IsDeleteLockedL flag set.
+     * @param aItemIndex Item index to check.
+     * @returns IsDeleteLockedL flag
+     */
+    TBool IsDeleteLocked( TInt aItemIndex );
 
   /**
    * Gets column count in current view.
@@ -885,24 +890,24 @@
 protected:
 
 
-  /**
-   * Own.
-   */
-  CEikListBox* iWidget;
+    /**
+     * Own.
+     */
+    CEikListBox* iWidget;
 
     /**
      * Key event observer.
      */
-  MMmKeyEventObserver* iKeyEventObserver;
+    MMmKeyEventObserver* iKeyEventObserver;
 
     /**
      * Drag and drop observer.
      */
-     MMmDragAndDropObserver* iDragAndDropObserver;
+    MMmDragAndDropObserver* iDragAndDropObserver;
      /**
       * List box observer.
       */
-     MEikListBoxObserver* iListBoxObserver;
+    MEikListBoxObserver* iListBoxObserver;
 
     /**
      * Marquee adapter.
@@ -918,29 +923,28 @@
 
 protected:
 
-  /**
-   * Current Highlight.
-   */
-  TInt iCurrentHighlight;
+    /**
+     * Current Highlight.
+     */
+    TInt iCurrentHighlight;
+
+    /**
+     * Processed display elelments for better performance.
+     */
+    CMmPostEvaluationProcessor* iPostProcessor;
+
+    /**
+     * Set when long tap is in progress (stylus popup displayed over container)
+     */
+    TBool iLongTapInProgress;
+
+private:
 
     /**
      * Has drag occurred.
      */
     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.
@@ -970,7 +974,7 @@
     /**
      * Dragged item index.
      */
-  TBool iDraggedIndex;
+    TInt iDraggedIndex;
 
     /**
      * Edit mode status.
--- a/menufw/menufwui/mmwidgets/inc/mmwidgetsconstants.h	Tue May 25 12:29:32 2010 +0300
+++ b/menufw/menufwui/mmwidgets/inc/mmwidgetsconstants.h	Wed Jun 09 09:29:04 2010 +0300
@@ -12,7 +12,7 @@
 * Contributors:
 *
 * Description:  Constants for the matrixmenu
-*  Version     : %version: 33.1.13 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: 33.1.14 % << Don't touch! Updated by Synergy at check-out.
 *
 */
 
@@ -424,6 +424,7 @@
     EPostDragRefreshItem,
     EPostHighlightChangeRefreshItem,
     ESwapTransition,
+    EDragStart,
     EDragTransition,
     EZoomTransition
     };
--- a/menufw/menufwui/mmwidgets/src/mmdraweranimator.cpp	Tue May 25 12:29:32 2010 +0300
+++ b/menufw/menufwui/mmwidgets/src/mmdraweranimator.cpp	Wed Jun 09 09:29:04 2010 +0300
@@ -12,7 +12,7 @@
  * Contributors:
  *
  * Description:
- *  Version     : %version: MM_41 % << Don't touch! Updated by Synergy at check-out.
+ *  Version     : %version: MM_43 % << Don't touch! Updated by Synergy at check-out.
  *
  */
 
@@ -120,7 +120,9 @@
             current.MakeStep();
             TRect afterRect( current.GetItemPosition(), itemSize );
 
-            if( current.GetFloatingItemType() == EDrag )
+            if( ( current.GetFloatingItemType() == EDrag
+                        && iDrawer.GetFloatingItemIndex( EDragStart ) == KErrNotFound )
+                    || current.GetFloatingItemType() == EDragStart )
                 {
                 TInt dragTrail = iDrawer.GetFloatingItemIndex( EPostDragRefreshItem );
                 if( dragTrail != KErrNotFound )
@@ -131,7 +133,9 @@
                             SetAllowMove( EFalse );
                     }
                 }
-            else
+            else if( ( current.GetFloatingItemType() == EDrag
+                            && iDrawer.GetFloatingItemIndex( EDragStart ) == KErrNotFound )
+                        || current.GetFloatingItemType() != EDrag )
                 {
                 refreshRect = (refreshRect == TRect() ) ? beforeRect : refreshRect;
                 refreshRect.BoundingRect( beforeRect );
@@ -149,7 +153,7 @@
             }
 
 
-      TInt currentVerticalOffset = static_cast<CMmWidgetContainer*>(
+        TInt currentVerticalOffset = static_cast<CMmWidgetContainer*>(
               iDrawer.Widget()->Parent() )->VerticalItemOffset();
 
         if( iLastNotedTopItem != iDrawer.Widget()->TopItemIndex()
@@ -249,7 +253,7 @@
 
             if( iTransTfxInternal )
                 {
-        iTransTfxInternal->Remove( MAknListBoxTfxInternal::EListEverything );
+                iTransTfxInternal->Remove( MAknListBoxTfxInternal::EListEverything );
                 iTransTfxInternal->Draw( iDrawer.Widget()->Rect() );
                 }
             }
@@ -277,17 +281,30 @@
 //
 void CMmDrawerAnimator::AnimateDragItemTransitionL()
     {
-    if( KErrNotFound != iDrawer.GetFloatingItemIndex( EDrag ) )
+    if( KErrNotFound != iDrawer.GetFloatingItemIndex( EDrag )
+            || KErrNotFound != iDrawer.GetFloatingItemIndex( EDragStart ) )
         {
+        TMmFloatingItemType floatingType =
+                iDrawer.GetFloatingItemIndex( EDrag ) != KErrNotFound
+                    ? EDrag : EDragStart;
         TMmFloatingItem floatingItem(
-                iDrawer.GetFloatingItemL( EDrag ).GetDrawnItemIndex(),
-                iDrawer.GetFloatingItemL( EDrag ).GetItemPosition(),
-                EDragTransition, iUsualAnimationFramesCount,
+                iDrawer.GetFloatingItemL( floatingType ).GetDrawnItemIndex(),
+                iDrawer.GetFloatingItemL( floatingType ).GetItemPosition(),
+                EDragTransition, floatingType == EDrag
+                    ? iUsualAnimationFramesCount : MmEffects::KNoAnimationFramesCount,
                 iDrawer.Widget()->View() );
         TPoint pointEnd = iDrawer.Widget()->View()->ItemPos( floatingItem.GetDrawnItemIndex() );
         floatingItem.SetPositionStep( pointEnd - floatingItem.GetItemPosition() );
         iDrawer.AddFloatingItemL( floatingItem, 0 );
+
+        TMmFloatingItem postDragRefresh(
+                iDrawer.GetFloatingItemL( floatingType ).GetDrawnItemIndex(),
+                pointEnd, EPostDragRefreshItem,
+                MmEffects::KNoAnimationFramesCount, iDrawer.Widget()->View() );
+        iDrawer.AddFloatingItemL( postDragRefresh );
+
         iDrawer.RemoveFloatingItem( iDrawer.GetFloatingItemIndex( EDrag ) );
+        iDrawer.RemoveFloatingItem( iDrawer.GetFloatingItemIndex( EDragStart ) );
         }
     }
 
@@ -429,4 +446,20 @@
     static_cast<CMmWidgetContainer*> ( iDrawer.Widget()->Parent() )->
             TriggerMoveItemL();
     }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMmDrawerAnimator::AnimateDragItemStartL( TInt aDraggedIndex, TPoint aPoint )
+    {
+    TMmFloatingItem floatingItem(
+            aDraggedIndex,
+            iDrawer.Widget()->View()->ItemPos( aDraggedIndex ),
+            EDragStart,
+            MmEffects::KUsualAnimationFramesCountNonTouch,
+            iDrawer.Widget()->View() );
+    floatingItem.SetPositionStep( aPoint - floatingItem.GetItemPosition() );
+    iDrawer.AddFloatingItemL( floatingItem, 0 );
+    }
 //End of file
--- a/menufw/menufwui/mmwidgets/src/mmfloatingitem.cpp	Tue May 25 12:29:32 2010 +0300
+++ b/menufw/menufwui/mmwidgets/src/mmfloatingitem.cpp	Wed Jun 09 09:29:04 2010 +0300
@@ -22,15 +22,15 @@
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
-// 
+//
 TMmFloatingItem::TMmFloatingItem( TInt aDrawnIndex, TPoint aStartPosition,
-        TMmFloatingItemType aType, TInt aAnimationFrames, CListBoxView* aView ) 
+        TMmFloatingItemType aType, TInt aAnimationFrames, CListBoxView* aView )
     {
     iView = aView;
     iSizeStep = 0;
     iZoomRatio = 1;
     iManualDelete = EFalse;
-    
+
     if ( iView )
         {
         // item position is relative
@@ -52,7 +52,7 @@
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
-// 
+//
 void TMmFloatingItem::SetPositionStep( TPoint aDiffetenceVector  )
      {
      ASSERT( iFrames );
@@ -62,35 +62,35 @@
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
-// 
-void TMmFloatingItem::CalculateSteps(TPoint aVector) 
+//
+void TMmFloatingItem::CalculateSteps(TPoint aVector)
     {
     iPositionStep.Reset();
 
     TReal x = aVector.iX;
     TReal y = aVector.iY;
-    
+
     TReal sx = 0.0;
     TReal sy = 0.0;
-    
+
     for( TInt i = 0; i < iFrames; i++ )
-    	{
-    	TReal sin;
-    	Math::Sin( sin, (i+1) * KPi/iFrames + KPi * 3./2.  );
-    	TReal xx = x * (0.5*( sin + 1.0 ) ) - sx;
-    	TReal yy = y * (0.5*( sin + 1.0 ) ) - sy;
-    	
-    	sx += xx;
-    	sy += yy;
-    	
-    	iPositionStep.At(i) = TPoint( xx, yy );
-    	}
+      {
+      TReal sin;
+      Math::Sin( sin, (i+1) * KPi/iFrames + KPi * 3./2.  );
+      TReal xx = x * (0.5*( sin + 1.0 ) ) - sx;
+      TReal yy = y * (0.5*( sin + 1.0 ) ) - sy;
+
+      sx += xx;
+      sy += yy;
+
+      iPositionStep.At(i) = TPoint( xx, yy );
+      }
     }
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
-// 
+//
 void TMmFloatingItem::SetSizeStep( TReal aStartSize, TReal aFinalSize )
     {
     ASSERT( iFrames );
@@ -103,32 +103,32 @@
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
-//   
-TBool TMmFloatingItem::MakeStep() 
+//
+TBool TMmFloatingItem::MakeStep()
     {
     TBool ret(EFalse);
-    
-    if(iFrameCounter >= iFrames && iManualDelete == EFalse)
+
+    if( iFrameCounter >= iFrames && iManualDelete == EFalse )
         {
         InvalidateFloatingItem();
         }
-    else if (iFrameCounter < iFrames)
+    else if( iFrameCounter < iFrames )
         {
         iItemPosition += iPositionStep[iFrameCounter];
         iZoomRatio += iSizeStep;
-        ret = Abs(iPositionStep[iFrameCounter].iX) > 0 
-			|| Abs(iPositionStep[iFrameCounter].iY > 0)
-			|| Abs(iSizeStep) > 0;
-		iFrameCounter++;
+        ret = Abs(iPositionStep[iFrameCounter].iX) > 0
+                || Abs(iPositionStep[iFrameCounter].iY > 0)
+                || Abs(iSizeStep) > 0;
+        iFrameCounter++;
         }
-    
+
     return ret;
     }
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
-// 
+//
 void TMmFloatingItem::SetManualDelete(TBool aManual)
     {
     iManualDelete = aManual;
@@ -137,7 +137,7 @@
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
-// 
+//
 TReal TMmFloatingItem::GetCurrentZoomRatio() const
     {
     return iZoomRatio;
@@ -146,7 +146,7 @@
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
-// 
+//
 TMmFloatingItemType TMmFloatingItem::GetFloatingItemType() const
     {
     return iType;
@@ -180,9 +180,9 @@
 
 TBool TMmFloatingItem::IsFloatingItemValid() const
     {
-    return GetDrawnItemIndex() != KErrNotFound 
-		&& iType != EPostDragRefreshItem 
-		&& iType != EPostHighlightChangeRefreshItem;
+    return GetDrawnItemIndex() != KErrNotFound
+    && iType != EPostDragRefreshItem
+    && iType != EPostHighlightChangeRefreshItem;
     }
 
 TBool TMmFloatingItem::IsManualDelete()
--- a/menufw/menufwui/mmwidgets/src/mmgrid.cpp	Tue May 25 12:29:32 2010 +0300
+++ b/menufw/menufwui/mmwidgets/src/mmgrid.cpp	Wed Jun 09 09:29:04 2010 +0300
@@ -12,7 +12,7 @@
 * Contributors:
 *
 * Description:
-*  Version     : %version: MM_104 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: MM_106 % << Don't touch! Updated by Synergy at check-out.
 *
 */
 
@@ -293,19 +293,19 @@
         if ( CurrentItemIndex() != itemUnderPointerIndex )
             {
             CMmWidgetContainer* parent = static_cast<CMmWidgetContainer*>( Parent() );
-        if ( parent->IsNoItemDragged() )
-          {
-          if ( ItemDrawer()->Flags() & CListItemDrawer::EPressedDownState )
-            {
-            ItemDrawer()->ClearFlags( CListItemDrawer::EPressedDownState );
-            iView->DrawItem( CurrentItemIndex() );
-            }
-          }
-        else
-          {
-          iView->SetCurrentItemIndex( itemUnderPointerIndex );
-        iView->DrawItem(itemUnderPointerIndex);
-          }
+            if ( parent->IsNoItemDragged() )
+                {
+                if ( ItemDrawer()->Flags() & CListItemDrawer::EPressedDownState )
+                    {
+                    ItemDrawer()->ClearFlags( CListItemDrawer::EPressedDownState );
+                    iView->DrawItem( CurrentItemIndex() );
+                    }
+                }
+            else
+                {
+                iView->SetCurrentItemIndex( itemUnderPointerIndex );
+                iView->DrawItem(itemUnderPointerIndex);
+                }
             }
         }
 
@@ -697,12 +697,6 @@
         topRow = Min( topRow, maxPossibleTopRow );
         SetTopItemIndex( topRow * numOfCols );
         }
-    else if( ( (CMmWidgetContainer* ) Parent() )->IsEditMode()
-            && ( Abs(maxPossibleTopRow - topRow) == 1) // prevention scrolling both scrollbar and view too much rows
-            && !View()->ItemIsPartiallyVisible(TopItemIndex())) // prevention scrolling view during remove item via menu
-        {
-        SetTopItemIndex( maxPossibleTopRow * numOfCols );
-        }
 
     // prevent problems with view being scrolled up beyond limits
     if ( topRow == maxPossibleTopRow && VerticalItemOffset() < 0 )
@@ -815,6 +809,12 @@
     TBool visibilityChanged = HandleScrollbarVisibilityChangeL();
     if (ScrollBarFrame()->VerticalScrollBar()->IsVisible())
         {
+        CMmWidgetContainer* widget = static_cast< CMmWidgetContainer* >(Parent());
+        if( widget->IsEditMode() && widget->WidgetPositionCache().iValid )
+            {
+            static_cast<CMmGridView*> ( View() )->SetItemOffsetInPixels(
+                    widget->WidgetPositionCache().iVerticalItemOffset );
+            }
         CAknGrid::UpdateScrollBarsL();
         }
     iCurrentTopItemIndex = TopItemIndex();
@@ -1017,9 +1017,9 @@
 // -----------------------------------------------------------------------------
 //
 void CMmGrid::UpdateScrollBarThumbs()
-  {
-  CAknGrid::UpdateScrollBarThumbs();
-  }
+    {
+    CAknGrid::UpdateScrollBarThumbs();
+    }
 
 // -----------------------------------------------------------------------------
 //
--- a/menufw/menufwui/mmwidgets/src/mmgridcontainer.cpp	Tue May 25 12:29:32 2010 +0300
+++ b/menufw/menufwui/mmwidgets/src/mmgridcontainer.cpp	Wed Jun 09 09:29:04 2010 +0300
@@ -12,8 +12,8 @@
 * Contributors:
 *
 * Description:
-*  Version     : %version: MM_75 % << Don't touch! Updated by Synergy at check-out.
-*  Version     : %version: MM_75 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: MM_76 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: MM_76 % << Don't touch! Updated by Synergy at check-out.
 *
 */
 
@@ -266,10 +266,6 @@
 void CMmGridContainer::SetSuiteModelL( CHnSuiteModel* aModel )
     {
     CMmWidgetContainer::SetSuiteModelL( aModel );
-    if ( aModel )
-        {
-        aModel->SetActiveL( !AknLayoutUtils::PenEnabled() );
-        }
     }
 
 // -----------------------------------------------------------------------------
--- a/menufw/menufwui/mmwidgets/src/mmgridview.cpp	Tue May 25 12:29:32 2010 +0300
+++ b/menufw/menufwui/mmwidgets/src/mmgridview.cpp	Wed Jun 09 09:29:04 2010 +0300
@@ -227,19 +227,19 @@
     CMmListBoxItemDrawer* itemDrawer = static_cast< CMmListBoxItemDrawer*> ( ItemDrawer() );
     TBool drawingInitiated(EFalse);
     if ( CAknEnv::Static()->TransparencyEnabled() &&
-    		iWin && iWin->GetDrawRect() == TRect::EUninitialized )
-    	{
-    	TRect a;
-    	if (!aClipRect || *aClipRect == TRect(0,0,0,0) )
-    		{
-    		a = ViewRect();
-    		aClipRect = &a;
-    		}
+            iWin && iWin->GetDrawRect() == TRect::EUninitialized )
+        {
+        TRect a;
+        if (!aClipRect || *aClipRect == TRect(0,0,0,0) )
+            {
+            a = ViewRect();
+            aClipRect = &a;
+            }
 
-    	drawingInitiated=ETrue;
-		iWin->Invalidate( *aClipRect );
-		iWin->BeginRedraw( *aClipRect );
-    	}
+        drawingInitiated=ETrue;
+        iWin->Invalidate( *aClipRect );
+        iWin->BeginRedraw( *aClipRect );
+        }
 
     if ( !itemDrawer->IsEditMode() )
         {
@@ -253,18 +253,18 @@
         CAknGridView::Draw( aClipRect );
         }
 
-	if ( aClipRect )
-	    {
-    	TRect rect(*aClipRect);
-    	TInt lastItemInView = (iModel->NumberOfItems() <= BottomItemIndex() )
-    	    ? iModel->NumberOfItems()-1 : BottomItemIndex();
-    	rect.iTl.iY = ItemPos( lastItemInView ).iY + ItemSize( lastItemInView ).iHeight;
+  if ( aClipRect )
+      {
+      TRect rect(*aClipRect);
+      TInt lastItemInView = (iModel->NumberOfItems() <= BottomItemIndex() )
+          ? iModel->NumberOfItems()-1 : BottomItemIndex();
+      rect.iTl.iY = ItemPos( lastItemInView ).iY + ItemSize( lastItemInView ).iHeight;
 //      iGc->SetClippingRect( rect );
 //		removed to prevent non-redraw drawing. Was present to prevent out of view drawing when effects are on.
 //      could be removed because effects were disabled at some point in edit mode to enhance performance.
-    	itemDrawer->DrawFloatingItems( rect );
+      itemDrawer->DrawFloatingItems( rect );
 //      iGc->CancelClippingRect();
-	    }
+      }
 
 //    if (aClipRect)
 //    	{
@@ -272,36 +272,36 @@
 //    	}
 
     if ( CAknEnv::Static()->TransparencyEnabled() &&
-    		iWin && drawingInitiated )
-    	{
-    	drawingInitiated = EFalse;
-    	iWin->EndRedraw( );
-    	}
+        iWin && drawingInitiated )
+      {
+      drawingInitiated = EFalse;
+      iWin->EndRedraw( );
+      }
 
-	}
+  }
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
 TInt CMmGridView::VerticalItemOffset() const
-	{
-	return iVerticalOffset;
-	}
+  {
+  return iVerticalOffset;
+  }
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
 void CMmGridView::SetItemHeight(TInt aItemHeight)
-	{
-	//	we need to update the iItemHeight member in grid also (there are two different item height value holders - in grid and here in grid view)
-	CMmListBoxItemDrawer* itemDrawer =
-	        STATIC_CAST( CMmListBoxItemDrawer*, ItemDrawer() );
-	static_cast<CMmGrid*>(itemDrawer->Widget())->SetItemHeight( aItemHeight );
+  {
+  //	we need to update the iItemHeight member in grid also (there are two different item height value holders - in grid and here in grid view)
+  CMmListBoxItemDrawer* itemDrawer =
+          STATIC_CAST( CMmListBoxItemDrawer*, ItemDrawer() );
+  static_cast<CMmGrid*>(itemDrawer->Widget())->SetItemHeight( aItemHeight );
 
-	CAknGridView::SetItemHeight(aItemHeight);
-	}
+  CAknGridView::SetItemHeight(aItemHeight);
+  }
 
 // -----------------------------------------------------------------------------
 //
--- a/menufw/menufwui/mmwidgets/src/mmlistboxcontainer.cpp	Tue May 25 12:29:32 2010 +0300
+++ b/menufw/menufwui/mmwidgets/src/mmlistboxcontainer.cpp	Wed Jun 09 09:29:04 2010 +0300
@@ -12,7 +12,7 @@
 * Contributors:
 *
 * Description:   
-*  Version     : %version: MM_65 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: MM_66 % << Don't touch! Updated by Synergy at check-out.
 *
 */
 
@@ -226,8 +226,6 @@
 void CMmListBoxContainer::SetSuiteModelL( CHnSuiteModel* aModel )
     {
     CMmWidgetContainer::SetSuiteModelL( aModel );
-    // highlight always active
-    aModel->SetActiveL( ETrue );
 	iMarqueeAdapter->StopMarqueeDrawing();
     }
 
--- a/menufw/menufwui/mmwidgets/src/mmlistboxitemdrawer.cpp	Tue May 25 12:29:32 2010 +0300
+++ b/menufw/menufwui/mmwidgets/src/mmlistboxitemdrawer.cpp	Wed Jun 09 09:29:04 2010 +0300
@@ -317,13 +317,21 @@
                 iZoomIconIndex = iFloatingItems[i].GetDrawnItemIndex();
                 iIconAnimationZoomRatio = iFloatingItems[i].GetCurrentZoomRatio();
 
-                if ( ItemHasFloatingType( drawnItemIndex, EDrag) ||
-                        ItemHasFloatingType( drawnItemIndex, EDragTransition) )
+                if ( ItemHasFloatingType( drawnItemIndex, EDrag)
+                        || ItemHasFloatingType( drawnItemIndex, EDragTransition)
+                        || ItemHasFloatingType( drawnItemIndex, EDragStart ) )
                     {
                     ClearFlags( CListItemDrawer::EPressedDownState );
                     }
                 type == ESwapTransition ? iIsSwapFloating = ETrue : iIsSwapFloating = EFalse;
-                DrawActualItem( drawnItemIndex, rect, ETrue, EFalse, EFalse, EFalse );
+                if( ( type == EDrag && !ItemHasFloatingType( drawnItemIndex, EDragStart ) )
+                        || ( type != EDragTransition && type != EDrag
+                                && !ItemHasFloatingType( drawnItemIndex, EDragTransition ) )
+                        || ( type == EDragTransition )
+                    )
+					{
+                    DrawActualItem( drawnItemIndex, rect, ETrue, EFalse, EFalse, EFalse );
+					}
                 iIconAnimationZoomRatio = tempZoomRatio;
                 iZoomIconIndex = tempZoomIconIndex;
                 }
@@ -600,6 +608,17 @@
 //
 // -----------------------------------------------------------------------------
 //
+void CMmListBoxItemDrawer::AnimateDragItemStartL( TInt aDraggedIndex,
+        TPoint aPoint )
+    {
+    iAnimator->AnimateDragItemStartL( aDraggedIndex, aPoint );
+    iAnimator->Trigger();
+    }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
 void CMmListBoxItemDrawer::SetupSubNoCellL( TInt aIndex,
         TInt aItemIndex ) const
     {
@@ -739,7 +758,7 @@
 //
 TInt CMmListBoxItemDrawer::GetFloatingItemCount()
     {
-    for( TInt i = 0; i < iFloatingItems.Count(); i++ )
+    for( TInt i( iFloatingItems.Count() - 1 ); i >= 0; i-- )
         {
         TMmFloatingItem& current = GetFloatingItemAtIndex( i );
         if( current.GetDrawnItemIndex() == KErrNotFound )
@@ -935,22 +954,36 @@
 // -----------------------------------------------------------------------------
 //
 void CMmListBoxItemDrawer::SetDraggedPointL( TPoint aPoint )
-  {
-  TInt dragFloatingItem = GetFloatingItemIndex(EDrag);
-  if (dragFloatingItem != KErrNotFound )
     {
-    TMmFloatingItem & item = GetFloatingItemAtIndex( dragFloatingItem );
-    TMmFloatingItem floatingItem( item.GetDrawnItemIndex(),
-        aPoint,	EDrag, MmEffects::KNoAnimationFramesCount, NULL );
-    floatingItem.SetManualDelete( ETrue );
+    TInt dragFloatingItem = GetFloatingItemIndex( EDragStart );
+    if( KErrNotFound != dragFloatingItem )
+        {
+        TMmFloatingItem & item = GetFloatingItemAtIndex( dragFloatingItem );
+        TMmFloatingItem postDragRefresh( item.GetDrawnItemIndex(),
+                item.GetItemPosition(), EPostDragRefreshItem,
+                MmEffects::KNoAnimationFramesCount, iWidget->View() );
+        if( postDragRefresh.GetItemPosition() != aPoint )
+            {
+            iFloatingItems.Append( postDragRefresh );
+            }
+        }
 
-    TMmFloatingItem postDragRefresh( item.GetDrawnItemIndex(),
+    if( dragFloatingItem == KErrNotFound
+            && ( dragFloatingItem = GetFloatingItemIndex( EDrag ) )
+                != KErrNotFound )
+        {
+        TMmFloatingItem & item = GetFloatingItemAtIndex( dragFloatingItem );
+        TMmFloatingItem floatingItem( item.GetDrawnItemIndex(),
+                aPoint,	EDrag, MmEffects::KNoAnimationFramesCount, NULL );
+        floatingItem.SetManualDelete( ETrue );
+
+        TMmFloatingItem postDragRefresh( item.GetDrawnItemIndex(),
                 item.GetItemPosition(), EPostDragRefreshItem,
                 MmEffects::KNoAnimationFramesCount, iWidget->View() );
 
         iFloatingItems.Remove( dragFloatingItem );
 
-    if (postDragRefresh.GetItemPosition() != floatingItem.GetItemPosition())
+        if (postDragRefresh.GetItemPosition() != floatingItem.GetItemPosition())
             {
             iFloatingItems.Append( postDragRefresh );
             }
@@ -968,10 +1001,12 @@
     TInt dragFloatingItem = KErrNotFound;
     do
         {
-        dragFloatingItem = GetFloatingItemIndex( EDrag );
+        dragFloatingItem = GetFloatingItemIndex( EDragStart );
+        if( dragFloatingItem == KErrNotFound )
+            dragFloatingItem = GetFloatingItemIndex( EDrag );
         if( dragFloatingItem != KErrNotFound )
             {
-        TMmFloatingItem & item = GetFloatingItemAtIndex( dragFloatingItem );
+            TMmFloatingItem & item = GetFloatingItemAtIndex( dragFloatingItem );
 
             TMmFloatingItem postDragRefresh( item.GetDrawnItemIndex(),
                     item.GetItemPosition(), EPostDragRefreshItem,
@@ -981,12 +1016,11 @@
                 {
                 iFloatingItems.Append( postDragRefresh );
                 }
+            if( item.GetFloatingItemType() == EDrag )
+                RemoveFloatingItem( dragFloatingItem );
             }
-
-        RemoveFloatingItem( dragFloatingItem );
-
         }
-    while( dragFloatingItem != KErrNotFound );
+    while( GetFloatingItemIndex( EDrag ) != KErrNotFound );
 
     if( aDraggedItemIndex != KErrNotFound )
         {
@@ -995,6 +1029,11 @@
         floatingItem.SetManualDelete( ETrue );
         AddFloatingItemL( floatingItem, 0 );
 
+        TMmFloatingItem postDragRefresh( aDraggedItemIndex,
+                iWidget->View()->ItemPos( aDraggedItemIndex ), EPostDragRefreshItem,
+                MmEffects::KNoAnimationFramesCount, iWidget->View() );
+        AddFloatingItemL( postDragRefresh );
+
         ClearFlags( CListItemDrawer::EPressedDownState );
         }
 
@@ -1523,6 +1562,10 @@
         {
         index = GetFloatingItemIndex( EDragTransition );
         }
+    if( index == KErrNotFound )
+        {
+        index = GetFloatingItemIndex( EDragStart );
+        }
 
     if( KErrNotFound != index )
         {
@@ -1564,8 +1607,9 @@
     if( !iItemHasBackdrop && !iLeftOverAreaUnderAnimatedItem ) //never draw highlight when item has backdrop or when left over area under animated item
         {
         TBool currentlyDraggedItem =
-                ItemHasFloatingType( aItemIndex, EDrag ) ||
-                ItemHasFloatingType( aItemIndex, EDragTransition );
+                ItemHasFloatingType( aItemIndex, EDrag )
+                || ItemHasFloatingType( aItemIndex, EDragTransition )
+                || ItemHasFloatingType( aItemIndex, EDragStart );
 
         if( ( STATIC_CAST(CMmWidgetContainer*,Widget()->Parent())->IsHighlightVisible()
                 && aItemIsCurrent && aAllowHighlightForNonDraggedItem )
@@ -1585,8 +1629,9 @@
         TBool aItemIsCurrent ) const
     {
     TBool currentlyDraggedItem =
-    ItemHasFloatingType( aItemIndex, EDrag ) ||
-    ItemHasFloatingType( aItemIndex, EDragTransition );
+            ItemHasFloatingType( aItemIndex, EDrag )
+            || ItemHasFloatingType( aItemIndex, EDragTransition )
+            || ItemHasFloatingType( aItemIndex, EDragStart );
 
     return 	IsEditMode() /* draw the backdrop only in edit mode */
         && !currentlyDraggedItem /* backdrop is disabled for dragged items */
--- a/menufw/menufwui/mmwidgets/src/mmlistboxview.cpp	Tue May 25 12:29:32 2010 +0300
+++ b/menufw/menufwui/mmwidgets/src/mmlistboxview.cpp	Wed Jun 09 09:29:04 2010 +0300
@@ -12,7 +12,7 @@
 * Contributors:
 *
 * Description:
- *  Version     : %version: MM_53 % << Don't touch! Updated by Synergy at check-out.
+ *  Version     : %version: MM_54 % << Don't touch! Updated by Synergy at check-out.
  *
 */
 
@@ -199,29 +199,29 @@
 // -----------------------------------------------------------------------------
 //
 void CMmListBoxView::Draw (const TRect* aClipRect) const
-  {
+    {
     TBool drawingInitiated(EFalse);
     if ( CAknEnv::Static()->TransparencyEnabled() &&
-        iWin && iWin->GetDrawRect() == TRect::EUninitialized )
+            iWin && iWin->GetDrawRect() == TRect::EUninitialized )
       {
       TRect a(ViewRect());
       if (!aClipRect || *aClipRect == TRect(0,0,0,0) )
-        {
-        aClipRect = &a;
-        }
+          {
+          aClipRect = &a;
+          }
       drawingInitiated=ETrue;
-    iWin->Invalidate( *aClipRect );
-    iWin->BeginRedraw( *aClipRect );
+      iWin->Invalidate( *aClipRect );
+      iWin->BeginRedraw( *aClipRect );
       }
 
-  DoDraw(aClipRect);
+    DoDraw(aClipRect);
 
-  CMmListBoxItemDrawer* itemDrawer =
-      static_cast<CMmListBoxItemDrawer*>(iItemDrawer );
-    if (aClipRect)
+    CMmListBoxItemDrawer* itemDrawer =
+            static_cast<CMmListBoxItemDrawer*>(iItemDrawer );
+    if( aClipRect )
         {
         TRect rect(*aClipRect);
-        rect.iTl.iY = ItemPos( BottomItemIndex() ).iY + ItemSize( BottomItemIndex() ).iHeight;
+        rect.iTl.iY = ItemPos( BottomItemIndex() ).iY;
 
 //      iGc->SetClippingRect( rect );
 //		removed to prevent non-redraw drawing. Was present to prevent out of view drawing when effects are on.
@@ -232,76 +232,76 @@
 
     if ( CAknEnv::Static()->TransparencyEnabled() &&
         iWin && drawingInitiated )
-      {
-      drawingInitiated = EFalse;
-      iWin->EndRedraw( );
-      }
-  }
+        {
+        drawingInitiated = EFalse;
+        iWin->EndRedraw( );
+        }
+    }
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
 void CMmListBoxView::DoDraw(const TRect* aClipRect) const
-  {
-  CMmListBoxView* view= CONST_CAST( CMmListBoxView*, this );
-  view->UpdateAverageItemHeight ();
+    {
+    CMmListBoxView* view= CONST_CAST( CMmListBoxView*, this );
+    view->UpdateAverageItemHeight ();
 
-  CMmListBoxModel* model = static_cast< CMmListBoxModel* > ( iModel );
-  if ( model && model->GetSuiteModel()
-      && !model->GetSuiteModel()->GetItemsOrder()->IsSuiteReadyToShow() )
-    {
-    return;
-    }
+    CMmListBoxModel* model = static_cast< CMmListBoxModel* > ( iModel );
+    if ( model && model->GetSuiteModel()
+            && !model->GetSuiteModel()->GetItemsOrder()->IsSuiteReadyToShow() )
+        {
+        return;
+        }
 
-  if ( RedrawDisabled () || !IsVisible () )
-    {
-    return;
-    }
+    if ( RedrawDisabled () || !IsVisible () )
+        {
+        return;
+        }
 
-  TInt i = iTopItemIndex;
-  CMmListBoxItemDrawer* itemDrawer =
-      static_cast<CMmListBoxItemDrawer*>(iItemDrawer );
-  MAknsSkinInstance *skin = AknsUtils::SkinInstance ();
-  CCoeControl* control = itemDrawer->FormattedCellData()->Control ();
-  MAknsControlContext *cc = AknsDrawUtils::ControlContext (control);
+    TInt i = iTopItemIndex;
+    CMmListBoxItemDrawer* itemDrawer =
+            static_cast<CMmListBoxItemDrawer*>(iItemDrawer );
+    MAknsSkinInstance *skin = AknsUtils::SkinInstance ();
+    CCoeControl* control = itemDrawer->FormattedCellData()->Control ();
+    MAknsControlContext *cc = AknsDrawUtils::ControlContext (control);
 
-  if ( !cc)
-    {
-    cc = itemDrawer->FormattedCellData()->SkinBackgroundContext ();
-    }
+    if ( !cc)
+        {
+        cc = itemDrawer->FormattedCellData()->SkinBackgroundContext ();
+        }
 
-  itemDrawer->SetTopItemIndex (iTopItemIndex);
+    itemDrawer->SetTopItemIndex (iTopItemIndex);
 
-  if ( iModel->NumberOfItems () > 0)
-    {
-    TBool drawingInitiated = ETrue;
-    if ( CAknEnv::Static()->TransparencyEnabled () )
-      {
-      if ( iWin && iWin->GetDrawRect () == TRect::EUninitialized)
+    if ( iModel->NumberOfItems () > 0)
         {
+        TBool drawingInitiated = ETrue;
+        if ( CAknEnv::Static()->TransparencyEnabled () )
+            {
+            if ( iWin && iWin->GetDrawRect () == TRect::EUninitialized)
+                {
 #ifdef RD_UI_TRANSITION_EFFECTS_LIST
                 MAknListBoxTfxInternal* transApi =
-                  CAknListLoader::TfxApiInternal( iGc );
+                        CAknListLoader::TfxApiInternal( iGc );
                 drawingInitiated = transApi && !transApi->EffectsDisabled();
 #else
-        drawingInitiated = EFalse;
+                drawingInitiated = EFalse;
 #endif
-        }
+                }
 
-      if ( !drawingInitiated)
-        {
-        iWin->Invalidate ( *aClipRect);
-        iWin->BeginRedraw ( *aClipRect);
-        }
-      }
+            if ( !drawingInitiated)
+                {
+                iWin->Invalidate ( *aClipRect);
+                iWin->BeginRedraw ( *aClipRect);
+                }
+            }
 
-    TInt lastPotentialItemIndex = Min( iModel->NumberOfItems(),
+        TInt lastPotentialItemIndex = Min( iModel->NumberOfItems(),
                 iTopItemIndex + NumberOfItemsThatFitInRect( ViewRect() ) );
 
-    if ( !itemDrawer->IsEditMode() )
-        {
-        itemDrawer->DrawBackground( ViewRect() );
+        if ( !itemDrawer->IsEditMode() )
+            {
+            itemDrawer->DrawBackground( ViewRect() );
             itemDrawer->SetRedrawItemBackground( EFalse );
             itemDrawer->SetDrawSeparatorLines( ETrue );
             while (i < lastPotentialItemIndex)
@@ -310,26 +310,26 @@
                 }
             itemDrawer->SetRedrawItemBackground( ETrue );
             itemDrawer->SetDrawSeparatorLines( EFalse );
-        }
-    else
-        {
-        while (i < lastPotentialItemIndex)
+            }
+        else
+            {
+            while (i < lastPotentialItemIndex)
                 {
                 DrawItem(i++);
                 }
         // this redraws background in the view portion not covered by items
-        RedrawBackground();
-        }
+            RedrawBackground();
+            }
 
 
-    if ( CAknEnv::Static()->TransparencyEnabled () && !drawingInitiated)
-      {
-      iWin->EndRedraw ();
-      }
+        if ( CAknEnv::Static()->TransparencyEnabled () && !drawingInitiated)
+            {
+            iWin->EndRedraw ();
+            }
+        }
+
     }
 
-  }
-
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
@@ -490,24 +490,24 @@
 // -----------------------------------------------------------------------------
 //
 void CMmListBoxView::RedrawBackground (TRect aUsedPortionOfViewRect,
-    TRect aSmallerViewRect) const
-  {
+        TRect aSmallerViewRect) const
+    {
 #ifdef RD_UI_TRANSITION_EFFECTS_LIST
-        MAknListBoxTfxInternal* transApi = CAknListLoader::TfxApiInternal(iGc);
+    MAknListBoxTfxInternal* transApi = CAknListLoader::TfxApiInternal(iGc);
     if (transApi)
         {
         transApi->StartDrawing(MAknListBoxTfxInternal::EListView);
         }
 #endif
 
-  CMmListBoxItemDrawer* itemDrawer = STATIC_CAST( CMmListBoxItemDrawer*, iItemDrawer );
+    CMmListBoxItemDrawer* itemDrawer = STATIC_CAST( CMmListBoxItemDrawer*, iItemDrawer );
     MAknsSkinInstance *skin = AknsUtils::SkinInstance();
     CCoeControl* control = itemDrawer->FormattedCellData()->Control();
     MAknsControlContext *cc = AknsDrawUtils::ControlContext(control);
 
-  if (control)
+    if (control)
         {
-        AknsDrawUtils::BackgroundBetweenRects(skin, cc, control, *iGc,
+        AknsDrawUtils::BackgroundBetweenRects( skin, cc, control, *iGc,
                 aSmallerViewRect, aUsedPortionOfViewRect);
         }
     else
@@ -518,7 +518,7 @@
         }
 
 #ifdef RD_UI_TRANSITION_EFFECTS_LIST
-    if (transApi)
+    if( transApi )
         {
         transApi->StopDrawing();
         }
--- a/menufw/menufwui/mmwidgets/src/mmwidgetcontainer.cpp	Tue May 25 12:29:32 2010 +0300
+++ b/menufw/menufwui/mmwidgets/src/mmwidgetcontainer.cpp	Wed Jun 09 09:29:04 2010 +0300
@@ -12,7 +12,7 @@
 * Contributors:
 *
 * Description:
-*  Version     : %version: MM_71.1.17.1.65 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: MM_71.1.17.1.70 % << Don't touch! Updated by Synergy at check-out.
 *
 */
 
@@ -101,6 +101,7 @@
 CMmWidgetContainer::CMmWidgetContainer()
     : iMarqueeAdapter( NULL )
     , iLongTapInProgress( EFalse )
+    , iDragOccured( EFalse )
     , iBgContext( NULL )
     , iIsFaded( EFalse )
     , iHasFocus( ETrue )
@@ -141,7 +142,7 @@
         // cancel longTap timer, avoid showing popupmenu
         if( !aEnable )
             {
-            iLongTapDetector->PointerEventL( TPointerEvent() );
+            TRAP_IGNORE( iLongTapDetector->PointerEventL( TPointerEvent() ) );
             }
         }
     }
@@ -210,7 +211,7 @@
     iLastDragPoint = aPointerEvent.iPosition;
     iLastDragHighlight = GetHighlight();
     if( !iWidget->View()->XYPosToItemIndex(
-        aPointerEvent.iPosition, iDraggedIndex ) )
+            aPointerEvent.iPosition, iDraggedIndex ) )
         {
         iDraggedIndex = KErrNotFound;
         }
@@ -252,7 +253,7 @@
         iDialogOpened = EFalse;
         if(highlightVisibleBefore != iHighlightVisibleBeforeLongTap)
             {
-            SetHighlightVisibilityL( iHighlightVisibleBeforeLongTap);
+            TRAP_IGNORE( SetHighlightVisibilityL( iHighlightVisibleBeforeLongTap) );
             }
         highlightVisibleBefore = iHighlightVisibleBeforeLongTap;
         }
@@ -312,39 +313,57 @@
         {
         iDragAndDropObserver->HandleDragOverL( GetHighlight() );
         }
-
+    
+    TPoint centerPoint( aPointerEvent.iPosition );
+    if( WidgetType() == EGridWidget )
+        { // move item's TL corner by half width/height to center item horizontally.
+        centerPoint.iX -= ( iWidget->View()->ItemSize( highlight ).iWidth / 2 );
+        centerPoint.iY -= ( iWidget->View()->ItemSize( highlight ).iHeight / 2 );
+        }
+    else
+        { // move item's T of corner by relative tap point to align left horizontally.
+        centerPoint.iX -= iItemRelativeTapPoint.iX;
+        // move item's L of corner by half height to center item horizontally.
+        centerPoint.iY -= ( iWidget->View()->ItemSize( highlight ).iHeight / 2 );
+        }
+    
     if( !tooFast )
         {
         TSize itemSize = iWidget->View()->ItemSize( highlight );
-    TPoint itemPos = iWidget->View()->ItemPos( highlight );
+        TPoint itemPos = iWidget->View()->ItemPos( highlight );
 
-    if ( PointInItemReorderAreaL( highlight, aPointerEvent.iPosition ) )
-       {
-       CHnSuiteModel* model = GetMmModel()->GetSuiteModel();
-       CHnItemModel* onItemModel = model->GetItemModel( model->IdByIndex( highlight ));
-       if (iDrawer->GetAnimator()->IsReadyForNewAnimation() && !aAbortAnimation
-           && onItemModel->GetItemType() != EItemTypeParentFolder
-           && iDraggedIndex != highlight)
+        if ( PointInItemReorderAreaL( highlight, aPointerEvent.iPosition ) )
            {
-           GetMmModel()->ReorderModelL( iDraggedIndex, highlight );
-                AnimateShiftL( highlight );
-                iDrawer->SetDraggedIndexL( highlight,
-                        aPointerEvent.iPosition - iItemRelativeTapPoint );
-           iDraggedIndex = highlight;
-           iDragAndDropObserver->HandleDraggedIndexUpdatedL( highlight );
+           CHnSuiteModel* model = GetMmModel()->GetSuiteModel();
+           CHnItemModel* onItemModel = model->GetItemModel( model->IdByIndex( highlight ));
+           if( iDrawer->GetAnimator()->IsReadyForNewAnimation() && !aAbortAnimation
+                   && onItemModel->GetItemType() != EItemTypeParentFolder
+                   && iDraggedIndex != highlight )
+               {
+               GetMmModel()->ReorderModelL( iDraggedIndex, highlight );
+               AnimateShiftL( highlight );
+               iDrawer->SetDraggedIndexL( highlight, centerPoint );
+               iDraggedIndex = highlight;
+               iDragAndDropObserver->HandleDraggedIndexUpdatedL( highlight );
+               }
            }
-       }
-      }
+        }
+
+
 
-    if ( DeltaSquare( iTapPoint, aPointerEvent.iPosition ) > KDragDelta &&
-        !iDrawer->IsDraggable() )
-    {
-    iDrawer->SetDraggedIndexL( iDraggedIndex, iTapPoint - iItemRelativeTapPoint );
+    if ( DeltaSquare( iTapPoint, aPointerEvent.iPosition ) > KDragDelta
+            && !iDrawer->IsDraggable() )
+        {
+        if( !tooFast )
+            {
+            iDrawer->AnimateDragItemStartL( iDraggedIndex, centerPoint );
+            }
+        iDrawer->SetDraggedIndexL( iDraggedIndex, centerPoint );
         iDrawer->SetDraggableL( ETrue );
         }
     else if( iDrawer->IsDraggable() )
         {
-        iDrawer->SetDraggedPointL( aPointerEvent.iPosition - iItemRelativeTapPoint );
+        iDrawer->SetDraggedPointL( centerPoint );
         }
 
     DEBUG(("\t_Mm_:CMmWidgetContainer::HandleDragL: iLastDragHighlight = %d ", iLastDragHighlight ));
@@ -393,13 +412,16 @@
     iDrawer->SetDraggedIndexL( iDraggedIndex, TPoint( 0, 0 ) );
     SetDraggableL( EFalse );
 
-    TInt dragFloatingItem;
+    TInt dragFloatingItem( KErrNotFound );
+    TInt dragStartFloatingItem( KErrNotFound );
     do
         {
         dragFloatingItem = iDrawer->GetFloatingItemIndex( EDrag );
         iDrawer->RemoveFloatingItem( dragFloatingItem );
+        dragStartFloatingItem = iDrawer->GetFloatingItemIndex( EDragStart );
+        iDrawer->RemoveFloatingItem( dragStartFloatingItem );
         }
-    while( dragFloatingItem != KErrNotFound );
+    while( dragFloatingItem != KErrNotFound || dragStartFloatingItem != KErrNotFound);
 
     }
 
@@ -435,14 +457,14 @@
 TBool CMmWidgetContainer::IsNoItemDragged()
     {
     TBool noItemDragged = EFalse;
-  noItemDragged = ( KErrNotFound == iDraggedIndex ) ? ETrue : noItemDragged;
+    noItemDragged = ( KErrNotFound == iDraggedIndex ) ? ETrue : noItemDragged;
     CHnSuiteModel* model = GetMmModel()->GetSuiteModel();
     if( !noItemDragged && model )
         {
-    CHnItemModel* onItemModel = model->GetItemModel( model->IdByIndex( iDraggedIndex ));
+        CHnItemModel* onItemModel = model->GetItemModel( model->IdByIndex( iDraggedIndex ));
         if( onItemModel )
             {
-        noItemDragged = ( onItemModel->GetItemType() == EItemTypeParentFolder );
+            noItemDragged = ( onItemModel->GetItemType() == EItemTypeParentFolder );
             }
         }
     return noItemDragged;
@@ -553,7 +575,16 @@
 //
 // -----------------------------------------------------------------------------
 //
-TBool CMmWidgetContainer::IsDeleteLockedL( TInt aItemIndex )
+TMmWidgetPosition CMmWidgetContainer::WidgetPositionCache() const
+    {
+    return iWidgetPositionCache;
+    }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TBool CMmWidgetContainer::IsDeleteLocked( TInt aItemIndex )
     {
     TBool result = ETrue;
 
@@ -595,7 +626,7 @@
         {
         if( GetHighlight() != iDraggedIndex
                 && IsFolderL( GetHighlight() )
-                && !IsDeleteLockedL( GetHighlight() )
+                && !IsDeleteLocked( GetHighlight() )
                 && iDrawer->IsDraggable() )
             {
             iDrawer->AnimateItemZoomInL( GetHighlight() );
@@ -674,7 +705,7 @@
         HandleDragL( pointerEvent, aAbortAnimations );
 
         }
-    else if (aPointerEvent.iType == TPointerEvent::EButton1Up && iDrawer->IsDraggable())
+    else if( aPointerEvent.iType == TPointerEvent::EButton1Up && iDrawer->IsDraggable() )
         {
         if( !draggedItemOverIcons )
             {
@@ -716,15 +747,13 @@
         iLongTapDetector->PointerEventL( longTapPointerEvent );
         }
 
-    CCoeControl::HandlePointerEventL( aPointerEvent );
-
     if ( aPointerEvent.iType == TPointerEvent::EButton1Down
             && itemExists  )
         {
         SetHighlightL( index );
         }
     else if( aPointerEvent.iType == TPointerEvent::EDrag
-    // the line below is needed to enable edit mode in the list widget
+            // the line below is needed to enable edit mode in the list widget
             // because behaviour in the grid and list is different
           || (aPointerEvent.iType == TPointerEvent::EButtonRepeat && WidgetType() == EGridWidget ))
         {
@@ -741,10 +770,13 @@
             }
         else
             {
+            iDragOccured = ETrue;
             SetHighlightVisibilityL( EFalse );
             }
         }
 
+    CCoeControl::HandlePointerEventL( aPointerEvent );
+
     TInt lastTopItemIndex = Widget()->TopItemIndex();
 
     TBool abortAnimation = lastTopItemIndex != Widget()->TopItemIndex();
@@ -820,14 +852,6 @@
 //
 EXPORT_C void CMmWidgetContainer::SetHighlightVisibilityL( TBool aEnable )
     {
-    // activate the model
-    CHnSuiteModel* suiteModel = GetMmModel()->GetSuiteModel();
-
-    if( suiteModel )
-        {
-        suiteModel->SetActiveL( aEnable );
-        }
-
     if( ( !!aEnable != !!iPreviousHighlightVisibility ) // Ex-OR
             || ( !!aEnable != !!IsHighlightVisible() ) ) // Ex-OR
         {
@@ -852,7 +876,7 @@
                     CListItemDrawer::ESingleClickDisabledHighlight );
             }
 
-        if( IsVisible() )
+        if( IsVisible() && !aEnable )
             {
             TInt highlight = GetHighlight();
             CListBoxView* view = Widget()->View();
@@ -1398,7 +1422,8 @@
     {
     if( iIsEditMode && iDrawer )
         {
-        if( iDrawer->GetFloatingItemIndex( EDrag ) != KErrNotFound )
+        if( iDrawer->GetFloatingItemIndex( EDrag ) != KErrNotFound
+                || iDrawer->GetFloatingItemIndex( EDragStart ) != KErrNotFound )
             {
             CancelDragL( EFalse );
             }
@@ -1449,38 +1474,38 @@
         return;
         }
 
-  TBool needToScrollUp =
-    GetHighlight() - iWidget->TopItemIndex() < ColumnsInCurrentView()
-    && iWidget->TopItemIndex() != 0;
+    TBool needToScrollUp =
+            GetHighlight() - iWidget->TopItemIndex() < ColumnsInCurrentView()
+            && iWidget->TopItemIndex() != 0;
 
-  TBool needToScrollDown =
-    iWidget->BottomItemIndex() - GetHighlight() < ColumnsInCurrentView()
-    && iWidget->BottomItemIndex() / ColumnsInCurrentView()
-      != ( NumberOfItems() - 1 )  / ColumnsInCurrentView();
+    TBool needToScrollDown =
+            iWidget->BottomItemIndex() - GetHighlight() < ColumnsInCurrentView()
+            && iWidget->BottomItemIndex() / ColumnsInCurrentView()
+                != ( NumberOfItems() - 1 )  / ColumnsInCurrentView();
 
     if( WidgetType() == EGridWidget )
         {
         // TODO: temporary - invisible partial items in MCL grid :/
-    needToScrollDown =
-      iWidget->BottomItemIndex() - ColumnsInCurrentView() - GetHighlight() < ColumnsInCurrentView()
-        && ( iWidget->BottomItemIndex() / ColumnsInCurrentView() ) - 1
-        != ( NumberOfItems() - 1 ) / ColumnsInCurrentView()
-      && iWidget->BottomItemIndex() - iWidget->TopItemIndex()
-        > ColumnsInCurrentView() * RowsInCurrentView();
+        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
-      MAknListBoxTfxInternal *transApi = CAknListLoader::TfxApiInternal( iDrawer->Gc() );
+        MAknListBoxTfxInternal *transApi = CAknListLoader::TfxApiInternal( iDrawer->Gc() );
         if( transApi )
             {
             transApi->SetMoveType( MAknListBoxTfxInternal::EListScrollUp );
             }
 #endif
         iDrawer->RemoveFloatingItems();
-    iWidget->View()->VScrollTo(
-        iWidget->TopItemIndex() - ColumnsInCurrentView() );
+        iWidget->View()->VScrollTo(
+                iWidget->TopItemIndex() - ColumnsInCurrentView() );
 #ifdef RD_UI_TRANSITION_EFFECTS_LIST
         if( transApi )
             {
@@ -1493,15 +1518,15 @@
         {
 
 #ifdef RD_UI_TRANSITION_EFFECTS_LIST
-      MAknListBoxTfxInternal *transApi = CAknListLoader::TfxApiInternal( iDrawer->Gc() );
+        MAknListBoxTfxInternal *transApi = CAknListLoader::TfxApiInternal( iDrawer->Gc() );
         if( transApi )
             {
             transApi->SetMoveType( MAknListBoxTfxInternal::EListScrollDown );
             }
 #endif
         iDrawer->RemoveFloatingItems();
-    iWidget->View()->VScrollTo(
-        iWidget->TopItemIndex() + ColumnsInCurrentView() );
+        iWidget->View()->VScrollTo(
+                iWidget->TopItemIndex() + ColumnsInCurrentView() );
 
 #ifdef RD_UI_TRANSITION_EFFECTS_LIST
         if( transApi )
@@ -1560,7 +1585,7 @@
         {
         TBool isFolder( EFalse );
         CHnSuiteModel* model = GetMmModel()->GetSuiteModel();
-    CHnItemModel* onItemModel = model->GetItemModel(
+        CHnItemModel* onItemModel = model->GetItemModel(
         model->IdByIndex( Widget()->CurrentItemIndex() ));
         if( onItemModel )
             {
@@ -1980,11 +2005,12 @@
     switch( aEventType )
         {
         case MEikListBoxObserver::EEventPenDownOnItem:
-        case MEikListBoxObserver::EEventItemSingleClicked:
             {
             iDragOccured = EFalse;
             break;
             }
+        case MEikListBoxObserver::EEventItemSingleClicked:
+            break;
         case MEikListBoxObserver::EEventItemDraggingActioned:
             {
             iDragOccured = ETrue;
@@ -2000,25 +2026,25 @@
             case MEikListBoxObserver::EEventFlickStarted:
             case MEikListBoxObserver::EEventPanningStarted:
                 {
-        static_cast<CMmListBoxItemDrawer*>(
-            Widget()->View()->ItemDrawer() )->
-            EnableCachedDataUse( ETrue );
-        break;
-        }
-      case MEikListBoxObserver::EEventFlickStopped:
-        {
-        static_cast<CMmListBoxItemDrawer*>(
-            Widget()->View()->ItemDrawer() )->
-            EnableCachedDataUse( EFalse );
-        DrawView();
-        break;
-        }
-      case MEikListBoxObserver::EEventPanningStopped:
-        {
-        static_cast<CMmListBoxItemDrawer*>(
-            Widget()->View()->ItemDrawer() )->
-            EnableCachedDataUse( EFalse );
-        break;
+                static_cast<CMmListBoxItemDrawer*>(
+                        Widget()->View()->ItemDrawer() )->
+                            EnableCachedDataUse( ETrue );
+                break;
+                }
+            case MEikListBoxObserver::EEventFlickStopped:
+                {
+                static_cast<CMmListBoxItemDrawer*>(
+                        Widget()->View()->ItemDrawer() )->
+                            EnableCachedDataUse( EFalse );
+                DrawView();
+                break;
+                }
+            case MEikListBoxObserver::EEventPanningStopped:
+                {
+                static_cast<CMmListBoxItemDrawer*>(
+                        Widget()->View()->ItemDrawer() )->
+                            EnableCachedDataUse( EFalse );
+                break;
                 }
             }
         }
@@ -2036,8 +2062,9 @@
             }
         }
 
-    if ( aEventType == MEikListBoxObserver::EEventItemSingleClicked &&
-        iListBoxObserver && !iLongTapInProgress && !iDrawer->IsDraggable() )
+    if ( aEventType == MEikListBoxObserver::EEventItemSingleClicked
+            && iListBoxObserver && !iLongTapInProgress && !iDrawer->IsDraggable()
+            && !iDragOccured )
         {
         iListBoxObserver->HandleListBoxEventL( aListBox, aEventType );
         }
Binary file menufw/menusuites/foldersuite/loc/matrixmenudata.loc has changed
--- a/taskswitcher/taskswitcherui/taskswitcherapp/inc/tsappui.h	Tue May 25 12:29:32 2010 +0300
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/inc/tsappui.h	Wed Jun 09 09:29:04 2010 +0300
@@ -173,7 +173,7 @@
      *                             will be ignored when deteriminig window
      *                             group id
      */
-    TInt WgIdOfUnderlyingApp( TBool aIgnoreParentChild );
+    TInt WgIdOfUnderlyingAppL( TBool aIgnoreParentChild );
 
     static TInt GoToBackgroundTimerCallback( TAny* aParam );
     
@@ -191,6 +191,14 @@
      */
     TInt GetParentWg( TInt aChildWg );
 
+    /*
+     * Returns window group id of camera app if it's lying beneath task
+     * switcher window group.
+     * This method considers also case, when camera window group is hidden.
+     * @return camera's window group id.
+     */
+    TInt CheckForUnderlyingHiddenAppsL();
+
 private:
 
     // Taskswitcher application view, owned
--- a/taskswitcher/taskswitcherui/taskswitcherapp/inc/tsfastswaparea.h	Tue May 25 12:29:32 2010 +0300
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/inc/tsfastswaparea.h	Wed Jun 09 09:29:04 2010 +0300
@@ -291,6 +291,13 @@
     void LayoutGridL();
     
     /**
+     * Setup grid layout for view
+     * 
+     * @param  aItemCount  number of items in grid
+     */
+    void LayoutGridViewL( TInt aItemCount );
+    
+    /**
      * Returns rectangles for fast swap area controls
      */
     void GetFastSwapAreaRects( RArray<TAknLayoutRect>& aRects );
--- a/taskswitcher/taskswitcherui/taskswitcherapp/src/tsappui.cpp	Tue May 25 12:29:32 2010 +0300
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/src/tsappui.cpp	Wed Jun 09 09:29:04 2010 +0300
@@ -65,6 +65,9 @@
 
 const TUid KTsAppUid = { KTsAppUidValue };
 
+const TUid KTsCameraUid = { 0x101F857a };
+const TUid KTsTelephoneUid = { 0x100058b3 };
+
 // -----------------------------------------------------------------------------
 // CTsAppUi::ConstructL()
 // ConstructL is called by the application framework
@@ -161,6 +164,11 @@
     iUiStarted = EFalse;
     iDisableAppKeyHandling = EFalse;
     
+    // Set process priority to high to avoid being
+    // locked by heavy ui apps processing
+    iEikonEnv->WsSession().ComputeMode(RWsSession::EPriorityControlDisabled);
+    RProcess().SetPriority(EPriorityHigh);
+    
     TSLOG_OUT();
     }
 
@@ -691,6 +699,7 @@
             {
             SetOrientationL(EAppUiOrientationPortrait);
             }
+        RProcess().SetPriority(EPriorityForeground);
         SetFullScreenApp(EFalse);
         iEikonEnv->RootWin().SetOrdinalPosition(0, ECoeWinPriorityAlwaysAtFront);
         }
@@ -712,6 +721,7 @@
         iEikonEnv->RootWin().SetOrdinalPosition(-1, ECoeWinPriorityNeverAtFront);
         SetOrientationL(EAppUiOrientationAutomatic);
         SetFullScreenApp(EFalse);
+        RProcess().SetPriority(EPriorityHigh);
         }
     TSLOG_OUT();
     }
@@ -752,7 +762,7 @@
     TInt eventType = aEvent.Type();
     if ( eventType == EEventWindowGroupListChanged )
         {
-        TInt wgId = WgIdOfUnderlyingApp(EFalse);
+        TInt wgId = WgIdOfUnderlyingAppL(EFalse); 
         if ( iForeground &&
              wgId != iUnderAppWgId &&
              !iAppView->AppCloseInProgress(iUnderAppWgId) &&
@@ -760,7 +770,7 @@
             {
             MoveAppToBackground( ENoneTransition );
             }
-        if ( WgIdOfUnderlyingApp(ETrue) != iUnderAppWgId )
+        if ( WgIdOfUnderlyingAppL(ETrue) != iUnderAppWgId )
             {
             HandleResourceChangeL(KEikDynamicLayoutVariantSwitch);
             }
@@ -773,11 +783,16 @@
 // CTsAppUi::WgIdOfUnderlyingApp
 // -----------------------------------------------------------------------------
 //
-TInt CTsAppUi::WgIdOfUnderlyingApp( TBool aIgnoreParentChild )
+TInt CTsAppUi::WgIdOfUnderlyingAppL( TBool aIgnoreParentChild )
     {
     TInt retVal(0);
-    TApaTaskList taskList( iEikonEnv->WsSession() );
-    TInt underlyingWg = taskList.FindByPos(0).WgId();
+    TInt underlyingWg = CheckForUnderlyingHiddenAppsL();
+    if ( !underlyingWg )
+        {
+        TApaTaskList taskList( iEikonEnv->WsSession() );
+        underlyingWg = taskList.FindByPos(0).WgId();
+        }
+    
     if ( aIgnoreParentChild )
         {
         retVal = underlyingWg;
@@ -835,7 +850,6 @@
 	return retVal;
 	}
 
-
 // -----------------------------------------------------------------------------
 // CTsAppUi::IsForeground
 // -----------------------------------------------------------------------------
@@ -845,4 +859,29 @@
     return iForeground;
     }
 
+// -----------------------------------------------------------------------------
+// CTsAppUi::CheckForUnderlyingCameraL
+// -----------------------------------------------------------------------------
+//
+TInt CTsAppUi::CheckForUnderlyingHiddenAppsL()
+    {
+    TInt wgId(0);
+    RArray<RWsSession::TWindowGroupChainInfo> allWgIds;
+    CleanupClosePushL(allWgIds);
+    User::LeaveIfError(iEikonEnv->WsSession().WindowGroupList(0, &allWgIds));
+    TInt underlyingWg(allWgIds[0].iId);
+    CleanupStack::PopAndDestroy(&allWgIds);
+    
+    CApaWindowGroupName* windowName =
+        CApaWindowGroupName::NewLC( iEikonEnv->WsSession(), underlyingWg );
+    TUid appUid = windowName->AppUid();
+    CleanupStack::PopAndDestroy( windowName );
+    if( appUid == KTsCameraUid ||
+        appUid == KTsTelephoneUid )
+        {
+        wgId = underlyingWg;
+        }
+    return wgId;
+    }
+
 // End of file
--- a/taskswitcher/taskswitcherui/taskswitcherapp/src/tsappview.cpp	Tue May 25 12:29:32 2010 +0300
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/src/tsappview.cpp	Wed Jun 09 09:29:04 2010 +0300
@@ -627,7 +627,7 @@
             !iFastSwapArea->Count() )
             {
             LaunchFeedback(ETouchFeedbackBasic, TTouchFeedbackType(
-                    ETouchFeedbackVibra | ETouchFeedbackAudio), aPointerEvent);
+                    ETouchFeedbackVibra ), aPointerEvent);
             iEikonEnv->EikAppUi()->HandleCommandL(EAknSoftkeyExit);
             }
         }
--- a/taskswitcher/taskswitcherui/taskswitcherapp/src/tsfastswaparea.cpp	Tue May 25 12:29:32 2010 +0300
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/src/tsfastswaparea.cpp	Wed Jun 09 09:29:04 2010 +0300
@@ -259,6 +259,8 @@
         {
         TRAP_IGNORE(static_cast<CTsAppUi*>(iEikonEnv->AppUi())->RequestPopUpL());
         }
+    variety = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0; // double check to avoid layout panic
+    
     TAknLayoutScalableParameterLimits gridParams = 
         AknLayoutScalable_Apps::cell_tport_appsw_pane_ParamLimits( variety );
     TPoint empty( ELayoutEmpty, ELayoutEmpty );
@@ -322,6 +324,39 @@
 
 
 // --------------------------------------------------------------------------
+// CTsFastSwapArea::LayoutGridView
+// --------------------------------------------------------------------------
+//
+void CTsFastSwapArea::LayoutGridViewL( TInt aItemCount )
+    {
+    RArray<TAknLayoutRect> rects;
+    CleanupClosePushL(rects);
+    rects.ReserveL(KLayoutItemCount);
+    GetFastSwapAreaRects(rects);
+    TAknLayoutRect gridItem = rects[1];
+    CleanupStack::PopAndDestroy(&rects);
+    if ( aItemCount )
+        {
+        iGrid->ItemDrawer()->ColumnData()->SetDrawBackground(EFalse);
+        static_cast<CTsAppView*>(&iParent)->EnableDragEvents(ETrue);
+        if ( AknLayoutUtils::LayoutMirrored() )
+            {
+            iGrid->SetLayoutL( EFalse, EFalse, ETrue, aItemCount, 1, gridItem.Rect().Size(), iGridItemGap );
+            }
+        else
+            {
+            iGrid->SetLayoutL( EFalse, ETrue, ETrue, aItemCount, 1, gridItem.Rect().Size(), iGridItemGap );
+            }
+        }
+    else
+        {
+        iGrid->ItemDrawer()->ColumnData()->SetDrawBackground(ETrue);
+        static_cast<CTsAppView*>(&iParent)->EnableDragEvents(EFalse);
+        }
+    }
+
+
+// --------------------------------------------------------------------------
 // CTsFastSwapArea::GetFastSwapAreaRects
 // --------------------------------------------------------------------------
 //
@@ -338,6 +373,7 @@
         {
         TRAP_IGNORE(static_cast<CTsAppUi*>(iEikonEnv->AppUi())->RequestPopUpL());
         }
+    variety = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0; // double check to avoid layout panic
     
     gridAppPane.LayoutRect( Rect(), 
             AknLayoutScalable_Apps::tport_appsw_pane( variety ) );
@@ -381,17 +417,22 @@
     
     if ( iGrid && !iIgnoreLayoutSwitch )
         {
+        // Cancel ongoing pointer event
+        iHandlePointerCandidate = EFalse;
         // Grid needs to be recreated to proper reinitilize
         // data with new layout values
         TInt selIdx = SelectedIndex();
-        TRAPD(err, 
-              /*ReCreateGridL()*/
-              LayoutGridL() );
+        TRAPD(err,
+              LayoutGridL();
+              LayoutGridViewL( iArray.Count() )
+              );
+        
         if ( err != KErrNone )
             {
             TSLOG1( TSLOG_INFO, "LayoutGridL leaves with %d", err );
             }
-        HandleFswContentChanged();
+        
+        // Update grid view
         iGrid->SetCurrentDataIndex(selIdx);
         UpdateGrid(ETrue, EFalse);
         iGrid->DrawDeferred();
@@ -497,11 +538,6 @@
 
     if ( aIndex >= 0 && aIndex < iArray.Count() && CanClose( aIndex ) )
         {
-        TInt selIdx = SelectedIndex();
-        if ( selIdx > aIndex && selIdx > 0 )
-            {
-            selIdx--;
-            }
         TInt wgId = iArray[aIndex]->WgId();
         iFSClient->CloseApp( wgId );
         iIsClosing.Append(wgId);
@@ -509,45 +545,11 @@
             {
             iWidgetClosingCount++;
             }
-        // The fsw content will change sooner or later
-        // but the updated content (without the closed app) will not
-        // come very fast. It looks better to the user if the item
-        // in the grid is removed right here, right now.
-        // If the app does not close for some reason then this is
-        // not fully correct but the app will then reappear on the next
-        // content-changed notification anyway.
-        delete iArray[aIndex];
-        iArray.Remove( aIndex );
-        NotifyChange();
-        
-        // Hide highlight
-        if ( iGrid->GridBehaviour() == CTsFastSwapGrid::ETouchOnly )
-            {
-            iGrid->HideHighlight();
-            }
-        // Update selection
-        TInt newItemCount = GridItemCount() - 1;
-        if ( aIndex == newItemCount )
-            {
-            newItemCount--;
-            iGrid->SetCurrentDataIndex(newItemCount);
-            }
-        else
-            {
-            iGrid->SetCurrentDataIndex(selIdx);
-            }
-        // Render contect
-        if ( !aSuppressRendering )
-            {
-            RenderContentL( ETrue );
-            }
         
         // Orientation update
         iPrevScreenOrientation = GetCurrentScreenOrientation();
         iOrientationSignalTimer->Cancel();
         iOrientationSignalTimer->After(KOrientationSwitchTime);
-        
-        iPrevAppCount = iArray.Count();
         }
 
     TSLOG_OUT();
@@ -559,23 +561,13 @@
 //
 void CTsFastSwapArea::TryCloseAllL()
     {
-    // note the direction of the loop, this is needed because
-    // TryCloseAppL may modify the array
-    TBool changed = EFalse;
     for ( TInt i = iArray.Count() - 1; i >= 0; --i )
         {
         if ( CanClose( i ) )
             {
             TryCloseAppL( i, ETrue );
-            changed = ETrue;
             }
         }
-    if ( changed )
-        {
-        RenderContentL();
-        RestoreSelectedIndex();
-        UpdateGrid( ETrue, EFalse );
-        }
     }
 
 // --------------------------------------------------------------------------
@@ -584,10 +576,14 @@
 //
 TBool CTsFastSwapArea::CanClose( TInt aIndex ) const
     {
-    CTsFswEntry* e = iArray[aIndex];
-    TBool canClose = !e->AlwaysShown() && !e->SystemApp();
-    // Special cases: Menu
-    canClose |= e->AppUid() == KTsMenuUid;
+    TBool canClose(EFalse);
+    if ( aIndex >= 0 && aIndex < iArray.Count() )
+        {
+        CTsFswEntry* e = iArray[aIndex];
+        canClose = !e->AlwaysShown() && !e->SystemApp();
+        // Special cases: Menu
+        canClose |= e->AppUid() == KTsMenuUid;
+        }
     return canClose;
     }
 
@@ -695,31 +691,9 @@
     RArray<TInt> strokeItemArray;
     CleanupClosePushL(strokeItemArray);
     
-    RArray<TAknLayoutRect> rects;
-    CleanupClosePushL(rects);
-    rects.ReserveL(KLayoutItemCount);
-    GetFastSwapAreaRects(rects);
-    TAknLayoutRect gridItem = rects[1];
-    CleanupStack::PopAndDestroy(&rects);
-    if ( iArray.Count() )
-        {
-        iGrid->ItemDrawer()->ColumnData()->SetDrawBackground(EFalse);
-        static_cast<CTsAppView*>(&iParent)->EnableDragEvents(ETrue);
-        if ( AknLayoutUtils::LayoutMirrored() )
-            {
-            iGrid->SetLayoutL( EFalse, EFalse, ETrue, iArray.Count(), 1, gridItem.Rect().Size(), iGridItemGap );
-            }
-        else
-            {
-            iGrid->SetLayoutL( EFalse, ETrue, ETrue, iArray.Count(), 1, gridItem.Rect().Size(), iGridItemGap );
-            }
-        }
-    else
-        {
-        iGrid->ItemDrawer()->ColumnData()->SetDrawBackground(ETrue);
-        static_cast<CTsAppView*>(&iParent)->EnableDragEvents(EFalse);
-        }
-        
+    // Update view based on number of items
+    LayoutGridViewL( iArray.Count() );
+    
     for ( TInt i = 0; i < iArray.Count(); ++i )
         {
         const TDesC& appName( iArray[i]->AppName() );
@@ -798,9 +772,13 @@
     CleanupStack::Pop(iconArray);
     
     // refresh the items in the grid
+    iGrid->HandleItemAdditionL();
     iEvtHandler.ReInitPhysicsL( GridWorldSize(), ViewSize(), ETrue );
+    if ( SelectedIndex() >= GridItemCount() && GridItemCount() )
+        {
+        iGrid->SetCurrentDataIndex( GridItemCount() - 1 );
+        }
     UpdateGrid( ETrue, !aSuppressAnimation );
-    iGrid->HandleItemAdditionL();
     
     TSLOG_OUT();
     }
@@ -1503,8 +1481,8 @@
         {
         if( aType == KAppKeyTypeShort )
             {
-            // Switch to homescreen
-            SwitchToApp( KTsHomescreenUid );
+            //SwitchToApp( KTsHomescreenUid );
+            TRAP_IGNORE( iEikonEnv->EikAppUi()->HandleCommandL(EAknSoftkeyExit) );
             }
         else if( aType == KAppKeyTypeLong )
             {
--- a/taskswitcher/taskswitcherui/taskswitcherapp/src/tsphysicsengine.cpp	Tue May 25 12:29:32 2010 +0300
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/src/tsphysicsengine.cpp	Wed Jun 09 09:29:04 2010 +0300
@@ -117,6 +117,12 @@
         {
         TPoint drag(iStartPosition - aEvent.CurrentPosition());
         iPhysics->StartPhysics(drag, iStartTime);
+        if( Abs(drag.iX) < iPhysics->DragThreshold() &&
+            (TInt)CAknPhysics::EAknPhysicsActionBouncing != 
+            iPhysics->OngoingPhysicsAction() )
+            {
+            iPhysics->StopPhysics();
+            }
         }
     }