Revision: 201015 RCL_3
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 27 Apr 2010 16:26:12 +0300
branchRCL_3
changeset 38 79311d856354
parent 34 d05a55b217df
child 43 899e4666ea9a
child 47 7be2816dbabd
Revision: 201015 Kit: 201017
idlehomescreen/data/qhd_tch/root_2001f482/conf/root2001f482.confml
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.confml
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.confml
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.confml
idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5manifest.gcfml
idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5xuikon.gcfml
idlehomescreen/inc/xnviewmanager.h
idlehomescreen/loc/activeidle3.loc
idlehomescreen/nativeuicontroller/inc/ainativerenderer.h
idlehomescreen/nativeuicontroller/src/ainativeuimodel.cpp
idlehomescreen/nativeuicontroller/src/aistatuspanetouchui.cpp
idlehomescreen/nativeuicontroller/src/nativeuicontroller.cpp
idlehomescreen/widgetmanager/inc/wmconfiguration.h
idlehomescreen/widgetmanager/inc/wmdetailsdlg.h
idlehomescreen/widgetmanager/inc/wmimageconverter.h
idlehomescreen/widgetmanager/inc/wmlistbox.h
idlehomescreen/widgetmanager/inc/wmportalbutton.h
idlehomescreen/widgetmanager/inc/wmwidgetdata.h
idlehomescreen/widgetmanager/src/wmconfiguration.cpp
idlehomescreen/widgetmanager/src/wmdetailsdlg.cpp
idlehomescreen/widgetmanager/src/wmimageconverter.cpp
idlehomescreen/widgetmanager/src/wmlistbox.cpp
idlehomescreen/widgetmanager/src/wmmaincontainer.cpp
idlehomescreen/widgetmanager/src/wmportalbutton.cpp
idlehomescreen/widgetmanager/src/wmwidgetdata.cpp
idlehomescreen/widgetmanager/tsrc/wmunittest/conf/ui_wmunittest.cfg
idlehomescreen/widgetmanager/tsrc/wmunittest/inc/wmunittest.h
idlehomescreen/widgetmanager/tsrc/wmunittest/src/wmunittest_all.cpp
idlehomescreen/widgetmanager/tsrc/wmunittest/src/wmunittest_converter.cpp
idlehomescreen/widgetmanager/tsrc/wmunittest/src/wmunittest_plugin.cpp
idlehomescreen/xmluirendering/uiengine/inc/xneditor.h
idlehomescreen/xmluirendering/uiengine/inc/xneffectmanager.h
idlehomescreen/xmluirendering/uiengine/inc/xnwallpaperview.h
idlehomescreen/xmluirendering/uiengine/src/xnbackgroundmanager.cpp
idlehomescreen/xmluirendering/uiengine/src/xneditor.cpp
idlehomescreen/xmluirendering/uiengine/src/xnnodeimpl.cpp
idlehomescreen/xmluirendering/uiengine/src/xnuiengineimpl.cpp
idlehomescreen/xmluirendering/uiengine/src/xnviewmanager.cpp
idlehomescreen/xmluirendering/uiengine/src/xnwallpaperview.cpp
idlehomescreen/xmluirendering/uiengine/src/xnwallpaperview.rss
idlehomescreen/xmluirendering/uiengine/src/xnwidgetextensionadapter.cpp
menufw/hierarchynavigator/hnmetadatamodel/inc/hnmdvaluetext.h
menufw/menufwui/matrixmenu/inc/mmappui.h
menufw/menufwui/matrixmenu/src/mmappui.cpp
menufw/menufwui/mmwidgets/bwins/mmwidgetsu.def
menufw/menufwui/mmwidgets/eabi/mmwidgetsu.def
menufw/menufwui/mmwidgets/inc/mmdraganddropobserver.h
menufw/menufwui/mmwidgets/inc/mmdraweranimator.h
menufw/menufwui/mmwidgets/inc/mmlistboxitemdrawer.h
menufw/menufwui/mmwidgets/inc/mmlistboxview.h
menufw/menufwui/mmwidgets/inc/mmwidgetcontainer.h
menufw/menufwui/mmwidgets/inc/mmwidgetsconstants.h
menufw/menufwui/mmwidgets/src/mmdraweranimator.cpp
menufw/menufwui/mmwidgets/src/mmgrid.cpp
menufw/menufwui/mmwidgets/src/mmgridview.cpp
menufw/menufwui/mmwidgets/src/mmlistbox.cpp
menufw/menufwui/mmwidgets/src/mmlistboxitemdrawer.cpp
menufw/menufwui/mmwidgets/src/mmlistboxview.cpp
menufw/menufwui/mmwidgets/src/mmwidgetcontainer.cpp
menufw/menusuites/foldersuite/bwins/dummyCu.def
menufw/menusuites/foldersuite/data/matrixmenudata.xml
menufw/menusuites/foldersuite/eabi/dummyCu.def
menufw/menusuites/foldersuite/group/foldersuite.mmp
menufw/menusuites/foldersuite/loc/matrixmenudata.loc
menufw/menusuites/foldersuite/src/dummyC.cpp
taskswitcher/contextengine/tsfswpreviewprovider/wsplugin/inc/previewprovidercrp.h
taskswitcher/contextengine/tsfswpreviewprovider/wsplugin/src/previewprovidercrp.cpp
taskswitcher/contextengine/tsfswserver/engine/inc/tsfswdatalist.h
taskswitcher/contextengine/tsfswserver/engine/inc/tsfswengine.h
taskswitcher/contextengine/tsfswserver/engine/src/tsfswdatalist.cpp
taskswitcher/contextengine/tsfswserver/engine/src/tsfswengine.cpp
taskswitcher/taskswitcherui/taskswitcherapp/inc/tsappview.h
taskswitcher/taskswitcherui/taskswitcherapp/inc/tsfastswaparea.h
taskswitcher/taskswitcherui/taskswitcherapp/loc/taskswitcher.loc
taskswitcher/taskswitcherui/taskswitcherapp/src/tsappui.cpp
taskswitcher/taskswitcherui/taskswitcherapp/src/tsappview.cpp
taskswitcher/taskswitcherui/taskswitcherapp/src/tsfastswaparea.cpp
Binary file idlehomescreen/data/qhd_tch/root_2001f482/conf/root2001f482.confml has changed
--- a/idlehomescreen/data/qhd_tch/root_2001f482/conf/root2001f482.gcfml	Wed Apr 14 15:47:59 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/root_2001f482/conf/root2001f482.gcfml	Tue Apr 27 16:26:12 2010 +0300
@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<container xmlns="http://www.symbianfoundation.org/xml/implml/1">
 <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"/>
@@ -15,36 +16,6 @@
 							<plugin>
 								<xsl:attribute name="uid"><xsl:value-of select="Uid"/></xsl:attribute>
 								<xsl:attribute name="locking_status"><xsl:value-of select="LockingStatus"/></xsl:attribute>
-								<xsl:choose>
-								<xsl:when test="Background = 1">
-								    <intial_settings>
-								      <settings>
-								      <item>
-								          <xsl:attribute name="id"><xsl:value-of select="ItemIdWallpaper"/></xsl:attribute>
-								            <property>
-								              <xsl:attribute name="name"><xsl:value-of select="WallpaperPropertyName"/></xsl:attribute>								             
-  							              <xsl:attribute name="value"><xsl:value-of select="BackGroundPath"/></xsl:attribute>
-								            </property>
-								       </item>     
-				              </settings>
-				            </intial_settings>
-				        </xsl:when>
-				        <xsl:when test="Background = 2">
-								    <intial_settings>
-								      <settings>
-								      <item>
-								          <xsl:attribute name="id"><xsl:value-of select="ItemIdSlideshow"/></xsl:attribute>
-								            <property>
-								              <xsl:attribute name="name"><xsl:value-of select="SlideshowPropertyName"/></xsl:attribute>								             
-  							              <xsl:attribute name="value"><xsl:value-of select="BackGroundPath"/></xsl:attribute>
-								            </property>
-								       </item>     
-				              </settings>
-				            </intial_settings>
-				        </xsl:when>
-				        <xsl:otherwise>
-				        </xsl:otherwise>
-				        </xsl:choose>
 							</plugin>
 						</xsl:for-each>
 					</plugins>
@@ -54,3 +25,4 @@
 		</xsl:template>
 	</xsl:stylesheet>
 </file>
+</container>
\ No newline at end of file
Binary file idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48b.confml has changed
--- a/idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48b.gcfml	Wed Apr 14 15:47:59 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48b.gcfml	Tue Apr 27 16:26:12 2010 +0300
@@ -1,15 +1,13 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<container xmlns="http://www.symbianfoundation.org/xml/implml/1">
 <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"/>
   <setting ref="HomescreenPlugins_1/ItemIdEmptyWidgets"/>
   <setting ref="HomescreenPlugins_1/PropertyEmptyWidgets"/>
-	<setting ref="HomescreenPlugins_1/Background"/>
   <setting ref="HomescreenPlugins_1/BackGroundPath"/>
   <setting ref="HomescreenPlugins_1/ItemIdWallpaper"/>
-  <setting ref="HomescreenPlugins_1/ItemIdSlideshow"/>
   <setting ref="HomescreenPlugins_1/WallpaperPropertyName"/>
-  <setting ref="HomescreenPlugins_1/SlideshowPropertyName"/>
 	<setting ref="HomescreenPlugins_1/Shortcut1ItemId"/>
   <setting ref="HomescreenPlugins_1/Shortcut1ItemName"/>
   <setting ref="HomescreenPlugins_1/Shortcut2ItemId"/>
@@ -20,6 +18,8 @@
   <setting ref="HomescreenPlugins_1/Shortcut4ItemName"/>
   <setting ref="HomescreenPlugins_1/ShortcutPropertyNameType"/>
   <setting ref="HomescreenPlugins_1/ShortcutPropertyNameUid"/>
+  <setting ref="HomescreenPlugins_1/ShortcutPropertyNameView"/>
+  <setting ref="HomescreenPlugins_1/ShortcutPropertyNameParam"/>
 	<setting ref="HomescreenPlugins_1/Plugins"/>
 	<xsl:stylesheet version="1.0" 
                 xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
@@ -31,35 +31,20 @@
 				<control>
 				  <settings>
 				    <item>
-					    <xsl:attribute name="id"><xsl:value-of select="HomescreenPlugins_1/ItemIdEmptyWidgets"/></xsl:attribute>
-						    <property>
-								  <xsl:attribute name="name"><xsl:value-of select="HomescreenPlugins_1/PropertyEmptyWidgets"/></xsl:attribute>								             
-  							  <xsl:attribute name="value"><xsl:value-of select="HomescreenPlugins_1/UseEmptyWidgets"/></xsl:attribute>
-								</property>
-						</item> 
-					  <xsl:choose>
-						  <xsl:when test="HomescreenPlugins_1/Background = 1">
-							  <item>
-								  <xsl:attribute name="id"><xsl:value-of select="HomescreenPlugins_1/ItemIdWallpaper"/></xsl:attribute>
-								    <property>
-								      <xsl:attribute name="name"><xsl:value-of select="HomescreenPlugins_1/WallpaperPropertyName"/></xsl:attribute>								             
-  							      <xsl:attribute name="value"><xsl:value-of select="HomescreenPlugins_1/BackGroundPath"/></xsl:attribute>
-								    </property>
-								</item>     
-				      </xsl:when>
-				      <xsl:when test="HomescreenPlugins_1/Background = 2">
-						    <item>
-								  <xsl:attribute name="id"><xsl:value-of select="HomescreenPlugins_1/ItemIdSlideshow"/></xsl:attribute>
-								    <property>
-								      <xsl:attribute name="name"><xsl:value-of select="HomescreenPlugins_1/SlideshowPropertyName"/></xsl:attribute>								             
-  							      <xsl:attribute name="value"><xsl:value-of select="HomescreenPlugins_1/BackGroundPath"/></xsl:attribute>
-								    </property>
-								</item>     
-				      </xsl:when>
-				      <xsl:otherwise>
-				      </xsl:otherwise>
-				    </xsl:choose>
-				  </settings>
+				      <xsl:attribute name="id"><xsl:value-of select="HomescreenPlugins_1/ItemIdEmptyWidgets"/></xsl:attribute>
+				        <property>
+					  <xsl:attribute name="name"><xsl:value-of select="HomescreenPlugins_1/PropertyEmptyWidgets"/></xsl:attribute>								             
+  					  <xsl:attribute name="value"><xsl:value-of select="HomescreenPlugins_1/UseEmptyWidgets"/></xsl:attribute>
+					</property>
+				      </item>
+				      <item>
+				        <xsl:attribute name="id"><xsl:value-of select="HomescreenPlugins_1/ItemIdWallpaper"/></xsl:attribute>
+					  <property>
+					    <xsl:attribute name="name"><xsl:value-of select="HomescreenPlugins_1/WallpaperPropertyName"/></xsl:attribute>								             
+  					    <xsl:attribute name="value"><xsl:value-of select="HomescreenPlugins_1/BackGroundPath"/></xsl:attribute>
+					  </property>
+				      </item>      
+                                    </settings>
 					<plugins>
 						<xsl:for-each select="HomescreenPlugins_1/Plugins">
 							<plugin>
@@ -82,6 +67,14 @@
 								              <xsl:attribute name="name"><xsl:value-of select="ShortcutPropertyNameUid"/></xsl:attribute>
 								              <xsl:attribute name="value"><xsl:value-of select="Shortcut1Uid"/></xsl:attribute>
 								            </property>
+								            <property>
+								              <xsl:attribute name="name"><xsl:value-of select="ShortcutPropertyNameView"/></xsl:attribute>
+								              <xsl:attribute name="value"><xsl:value-of select="Shortcut1View"/></xsl:attribute>
+								            </property>
+								            <property>
+								              <xsl:attribute name="name"><xsl:value-of select="ShortcutPropertyNameParam"/></xsl:attribute>
+								              <xsl:attribute name="value"><xsl:value-of select="Shortcut1Param"/></xsl:attribute>
+								            </property>
 				                  </item>
 				                </xsl:if>
 				                <xsl:if test="Customize2Shortcut = 1">
@@ -96,6 +89,14 @@
 								              <xsl:attribute name="name"><xsl:value-of select="ShortcutPropertyNameUid"/></xsl:attribute>
 								              <xsl:attribute name="value"><xsl:value-of select="Shortcut2Uid"/></xsl:attribute>
 								            </property>
+								            <property>
+								              <xsl:attribute name="name"><xsl:value-of select="ShortcutPropertyNameView"/></xsl:attribute>
+								              <xsl:attribute name="value"><xsl:value-of select="Shortcut2View"/></xsl:attribute>
+								            </property>
+								            <property>
+								              <xsl:attribute name="name"><xsl:value-of select="ShortcutPropertyNameParam"/></xsl:attribute>
+								              <xsl:attribute name="value"><xsl:value-of select="Shortcut2Param"/></xsl:attribute>
+								            </property>
 				                  </item>
 				                </xsl:if>
 				                <xsl:if test="Customize3Shortcut = 1">
@@ -110,6 +111,14 @@
 								              <xsl:attribute name="name"><xsl:value-of select="ShortcutPropertyNameUid"/></xsl:attribute>
 								              <xsl:attribute name="value"><xsl:value-of select="Shortcut3Uid"/></xsl:attribute>
 								            </property>
+								            <property>
+								              <xsl:attribute name="name"><xsl:value-of select="ShortcutPropertyNameView"/></xsl:attribute>
+								              <xsl:attribute name="value"><xsl:value-of select="Shortcut3View"/></xsl:attribute>
+								            </property>
+								            <property>
+								              <xsl:attribute name="name"><xsl:value-of select="ShortcutPropertyNameParam"/></xsl:attribute>
+								              <xsl:attribute name="value"><xsl:value-of select="Shortcut3Param"/></xsl:attribute>
+								            </property>
 				                  </item>
 				                </xsl:if>
 				                <xsl:if test="Customize4Shortcut = 1">
@@ -124,6 +133,14 @@
 								              <xsl:attribute name="name"><xsl:value-of select="ShortcutPropertyNameUid"/></xsl:attribute>
 								              <xsl:attribute name="value"><xsl:value-of select="Shortcut4Uid"/></xsl:attribute>
 								            </property>
+								            <property>
+								              <xsl:attribute name="name"><xsl:value-of select="ShortcutPropertyNameView"/></xsl:attribute>
+								              <xsl:attribute name="value"><xsl:value-of select="Shortcut4View"/></xsl:attribute>
+								            </property>
+								            <property>
+								              <xsl:attribute name="name"><xsl:value-of select="ShortcutPropertyNameParam"/></xsl:attribute>
+								              <xsl:attribute name="value"><xsl:value-of select="Shortcut4Param"/></xsl:attribute>
+								            </property>
 								          </item>
 				                </xsl:if>
 				              </settings>
@@ -137,3 +154,4 @@
 		</xsl:template>
 	</xsl:stylesheet>
 </file>
+</container>
\ No newline at end of file
Binary file idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48bmanifest.confml has changed
--- a/idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48bmanifest.gcfml	Wed Apr 14 15:47:59 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48bmanifest.gcfml	Tue Apr 27 16:26:12 2010 +0300
@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<container xmlns="http://www.symbianfoundation.org/xml/implml/1">
 <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"/>
@@ -56,3 +57,4 @@
   </xsl:template>
 	</xsl:stylesheet>
 </file>
+</container>
\ No newline at end of file
--- a/idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48bxuikon.gcfml	Wed Apr 14 15:47:59 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48bxuikon.gcfml	Tue Apr 27 16:26:12 2010 +0300
@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<container xmlns="http://www.symbianfoundation.org/xml/implml/1">
 <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" 
@@ -12,3 +13,4 @@
   </xsl:template>
 	</xsl:stylesheet>
 </file>
+</container>
\ No newline at end of file
Binary file idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4.confml has changed
--- a/idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4.gcfml	Wed Apr 14 15:47:59 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4.gcfml	Tue Apr 27 16:26:12 2010 +0300
@@ -1,15 +1,13 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<container xmlns="http://www.symbianfoundation.org/xml/implml/1">
 <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"/>
   <setting ref="HomescreenPlugins_2/ItemIdEmptyWidgets"/>
   <setting ref="HomescreenPlugins_2/PropertyEmptyWidgets"/>
-	<setting ref="HomescreenPlugins_2/Background"/>
   <setting ref="HomescreenPlugins_2/BackGroundPath"/>
-  <setting ref="HomescreenPlugins_2/ItemIdWallpaper"/>
-  <setting ref="HomescreenPlugins_2/ItemIdSlideshow"/>
+  <setting ref="HomescreenPlugins_2/ItemIdWallpaper"/> 
   <setting ref="HomescreenPlugins_2/WallpaperPropertyName"/>
-  <setting ref="HomescreenPlugins_2/SlideshowPropertyName"/>
 	<setting ref="HomescreenPlugins_2/Shortcut1ItemId"/>
   <setting ref="HomescreenPlugins_2/Shortcut1ItemName"/>
   <setting ref="HomescreenPlugins_2/Shortcut2ItemId"/>
@@ -20,6 +18,8 @@
   <setting ref="HomescreenPlugins_2/Shortcut4ItemName"/>
   <setting ref="HomescreenPlugins_2/ShortcutPropertyNameType"/>
   <setting ref="HomescreenPlugins_2/ShortcutPropertyNameUid"/>
+  <setting ref="HomescreenPlugins_2/ShortcutPropertyNameView"/>
+  <setting ref="HomescreenPlugins_2/ShortcutPropertyNameParam"/>
 	<setting ref="HomescreenPlugins_2/Plugins"/>
 	<xsl:stylesheet version="1.0" 
                 xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
@@ -31,36 +31,21 @@
 				<control>
 				  <settings>
 				    <item>
-					    <xsl:attribute name="id"><xsl:value-of select="HomescreenPlugins_2/ItemIdEmptyWidgets"/></xsl:attribute>
-						    <property>
-								  <xsl:attribute name="name"><xsl:value-of select="HomescreenPlugins_2/PropertyEmptyWidgets"/></xsl:attribute>								             
-  							  <xsl:attribute name="value"><xsl:value-of select="HomescreenPlugins_2/UseEmptyWidgets"/></xsl:attribute>
-								</property>
-						</item> 
-					  <xsl:choose>
-						  <xsl:when test="HomescreenPlugins_2/Background = 1">
-							  <item>
-								  <xsl:attribute name="id"><xsl:value-of select="HomescreenPlugins_2/ItemIdWallpaper"/></xsl:attribute>
-								    <property>
-								      <xsl:attribute name="name"><xsl:value-of select="HomescreenPlugins_2/WallpaperPropertyName"/></xsl:attribute>								             
-  							      <xsl:attribute name="value"><xsl:value-of select="HomescreenPlugins_2/BackGroundPath"/></xsl:attribute>
-								    </property>
-								</item>     
-				      </xsl:when>
-				      <xsl:when test="HomescreenPlugins_2/Background = 2">
-						    <item>
-								  <xsl:attribute name="id"><xsl:value-of select="HomescreenPlugins_2/ItemIdSlideshow"/></xsl:attribute>
-								    <property>
-								      <xsl:attribute name="name"><xsl:value-of select="HomescreenPlugins_2/SlideshowPropertyName"/></xsl:attribute>								             
-  							      <xsl:attribute name="value"><xsl:value-of select="HomescreenPlugins_2/BackGroundPath"/></xsl:attribute>
-								    </property>
-								</item>     
-				      </xsl:when>
-				      <xsl:otherwise>
-				      </xsl:otherwise>
-				    </xsl:choose>
-				  </settings>
-					<plugins>
+				      <xsl:attribute name="id"><xsl:value-of select="HomescreenPlugins_2/ItemIdEmptyWidgets"/></xsl:attribute>
+				        <property>
+					  <xsl:attribute name="name"><xsl:value-of select="HomescreenPlugins_2/PropertyEmptyWidgets"/></xsl:attribute>								             
+  					  <xsl:attribute name="value"><xsl:value-of select="HomescreenPlugins_2/UseEmptyWidgets"/></xsl:attribute>
+					</property>
+				      </item>
+				      <item>
+				        <xsl:attribute name="id"><xsl:value-of select="HomescreenPlugins_2/ItemIdWallpaper"/></xsl:attribute>
+					  <property>
+					    <xsl:attribute name="name"><xsl:value-of select="HomescreenPlugins_2/WallpaperPropertyName"/></xsl:attribute>								             
+  					    <xsl:attribute name="value"><xsl:value-of select="HomescreenPlugins_2/BackGroundPath"/></xsl:attribute>
+					  </property>
+					</item>      
+                                      </settings>
+				      <plugins>
 						<xsl:for-each select="HomescreenPlugins_2/Plugins">
 							<plugin>
 								<xsl:attribute name="uid"><xsl:value-of select="Uid"/></xsl:attribute>
@@ -82,6 +67,14 @@
 								              <xsl:attribute name="name"><xsl:value-of select="ShortcutPropertyNameUid"/></xsl:attribute>
 								              <xsl:attribute name="value"><xsl:value-of select="Shortcut1Uid"/></xsl:attribute>
 								            </property>
+								            <property>
+								              <xsl:attribute name="name"><xsl:value-of select="ShortcutPropertyNameView"/></xsl:attribute>
+								              <xsl:attribute name="value"><xsl:value-of select="Shortcut1View"/></xsl:attribute>
+								            </property>
+								            <property>
+								              <xsl:attribute name="name"><xsl:value-of select="ShortcutPropertyNameParam"/></xsl:attribute>
+								              <xsl:attribute name="value"><xsl:value-of select="Shortcut1Param"/></xsl:attribute>
+								            </property>
 				                  </item>
 				                </xsl:if>
 				                <xsl:if test="Customize2Shortcut = 1">
@@ -96,6 +89,14 @@
 								              <xsl:attribute name="name"><xsl:value-of select="ShortcutPropertyNameUid"/></xsl:attribute>
 								              <xsl:attribute name="value"><xsl:value-of select="Shortcut2Uid"/></xsl:attribute>
 								            </property>
+								            <property>
+								              <xsl:attribute name="name"><xsl:value-of select="ShortcutPropertyNameView"/></xsl:attribute>
+								              <xsl:attribute name="value"><xsl:value-of select="Shortcut2View"/></xsl:attribute>
+								            </property>
+								            <property>
+								              <xsl:attribute name="name"><xsl:value-of select="ShortcutPropertyNameParam"/></xsl:attribute>
+								              <xsl:attribute name="value"><xsl:value-of select="Shortcut2Param"/></xsl:attribute>
+								            </property>
 				                  </item>
 				                </xsl:if>
 				                <xsl:if test="Customize3Shortcut = 1">
@@ -110,6 +111,14 @@
 								              <xsl:attribute name="name"><xsl:value-of select="ShortcutPropertyNameUid"/></xsl:attribute>
 								              <xsl:attribute name="value"><xsl:value-of select="Shortcut3Uid"/></xsl:attribute>
 								            </property>
+								            <property>
+								              <xsl:attribute name="name"><xsl:value-of select="ShortcutPropertyNameView"/></xsl:attribute>
+								              <xsl:attribute name="value"><xsl:value-of select="Shortcut3View"/></xsl:attribute>
+								            </property>
+								            <property>
+								              <xsl:attribute name="name"><xsl:value-of select="ShortcutPropertyNameParam"/></xsl:attribute>
+								              <xsl:attribute name="value"><xsl:value-of select="Shortcut3Param"/></xsl:attribute>
+								            </property>
 				                  </item>
 				                </xsl:if>
 				                <xsl:if test="Customize4Shortcut = 1">
@@ -124,6 +133,14 @@
 								              <xsl:attribute name="name"><xsl:value-of select="ShortcutPropertyNameUid"/></xsl:attribute>
 								              <xsl:attribute name="value"><xsl:value-of select="Shortcut4Uid"/></xsl:attribute>
 								            </property>
+								            <property>
+								              <xsl:attribute name="name"><xsl:value-of select="ShortcutPropertyNameView"/></xsl:attribute>
+								              <xsl:attribute name="value"><xsl:value-of select="Shortcut4View"/></xsl:attribute>
+								            </property>
+								            <property>
+								              <xsl:attribute name="name"><xsl:value-of select="ShortcutPropertyNameParam"/></xsl:attribute>
+								              <xsl:attribute name="value"><xsl:value-of select="Shortcut4Param"/></xsl:attribute>
+								            </property>
 								          </item>
 				                </xsl:if>
 				              </settings>
@@ -137,3 +154,4 @@
 		</xsl:template>
 	</xsl:stylesheet>
 </file>
+</container>
\ No newline at end of file
Binary file idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4manifest.confml has changed
--- a/idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4manifest.gcfml	Wed Apr 14 15:47:59 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4manifest.gcfml	Tue Apr 27 16:26:12 2010 +0300
@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<container xmlns="http://www.symbianfoundation.org/xml/implml/1">
 <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"/>
@@ -56,3 +57,4 @@
   </xsl:template>
 	</xsl:stylesheet>
 </file>
+</container>
\ No newline at end of file
--- a/idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4xuikon.gcfml	Wed Apr 14 15:47:59 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4xuikon.gcfml	Tue Apr 27 16:26:12 2010 +0300
@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<container xmlns="http://www.symbianfoundation.org/xml/implml/1">
 <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" 
@@ -12,3 +13,4 @@
   </xsl:template>
 	</xsl:stylesheet>
 </file>
+</container>
\ No newline at end of file
Binary file idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5.confml has changed
--- a/idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5.gcfml	Wed Apr 14 15:47:59 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5.gcfml	Tue Apr 27 16:26:12 2010 +0300
@@ -1,15 +1,13 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<container xmlns="http://www.symbianfoundation.org/xml/implml/1">
 <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"/>
   <setting ref="HomescreenPlugins_3/ItemIdEmptyWidgets"/>
   <setting ref="HomescreenPlugins_3/PropertyEmptyWidgets"/>
-	<setting ref="HomescreenPlugins_3/Background"/>
   <setting ref="HomescreenPlugins_3/BackGroundPath"/>
   <setting ref="HomescreenPlugins_3/ItemIdWallpaper"/>
-  <setting ref="HomescreenPlugins_3/ItemIdSlideshow"/>
   <setting ref="HomescreenPlugins_3/WallpaperPropertyName"/>
-  <setting ref="HomescreenPlugins_3/SlideshowPropertyName"/>
 	<setting ref="HomescreenPlugins_3/Shortcut1ItemId"/>
   <setting ref="HomescreenPlugins_3/Shortcut1ItemName"/>
   <setting ref="HomescreenPlugins_3/Shortcut2ItemId"/>
@@ -20,6 +18,8 @@
   <setting ref="HomescreenPlugins_3/Shortcut4ItemName"/>
   <setting ref="HomescreenPlugins_3/ShortcutPropertyNameType"/>
   <setting ref="HomescreenPlugins_3/ShortcutPropertyNameUid"/>
+  <setting ref="HomescreenPlugins_2/ShortcutPropertyNameView"/>
+  <setting ref="HomescreenPlugins_2/ShortcutPropertyNameParam"/>
 	<setting ref="HomescreenPlugins_3/Plugins"/>
 	<xsl:stylesheet version="1.0" 
                 xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
@@ -31,36 +31,21 @@
 				<control>
 				  <settings>
 				    <item>
-					    <xsl:attribute name="id"><xsl:value-of select="HomescreenPlugins_3/ItemIdEmptyWidgets"/></xsl:attribute>
-						    <property>
-								  <xsl:attribute name="name"><xsl:value-of select="HomescreenPlugins_3/PropertyEmptyWidgets"/></xsl:attribute>								             
-  							  <xsl:attribute name="value"><xsl:value-of select="HomescreenPlugins_3/UseEmptyWidgets"/></xsl:attribute>
-								</property>
-						</item> 
-					  <xsl:choose>
-						  <xsl:when test="HomescreenPlugins_3/Background = 1">
-							  <item>
-								  <xsl:attribute name="id"><xsl:value-of select="HomescreenPlugins_3/ItemIdWallpaper"/></xsl:attribute>
-								    <property>
-								      <xsl:attribute name="name"><xsl:value-of select="HomescreenPlugins_3/WallpaperPropertyName"/></xsl:attribute>								             
-  							      <xsl:attribute name="value"><xsl:value-of select="HomescreenPlugins_3/BackGroundPath"/></xsl:attribute>
-								    </property>
-								</item>     
-				      </xsl:when>
-				      <xsl:when test="HomescreenPlugins_3/Background = 2">
-						    <item>
-								  <xsl:attribute name="id"><xsl:value-of select="HomescreenPlugins_3/ItemIdSlideshow"/></xsl:attribute>
-								    <property>
-								      <xsl:attribute name="name"><xsl:value-of select="HomescreenPlugins_3/SlideshowPropertyName"/></xsl:attribute>								             
-  							      <xsl:attribute name="value"><xsl:value-of select="HomescreenPlugins_3/BackGroundPath"/></xsl:attribute>
-								    </property>
-								</item>     
-				      </xsl:when>
-				      <xsl:otherwise>
-				      </xsl:otherwise>
-				    </xsl:choose>
-				  </settings>
-					<plugins>
+				      <xsl:attribute name="id"><xsl:value-of select="HomescreenPlugins_3/ItemIdEmptyWidgets"/></xsl:attribute>
+				        <property>
+					  <xsl:attribute name="name"><xsl:value-of select="HomescreenPlugins_3/PropertyEmptyWidgets"/></xsl:attribute>								             
+  					  <xsl:attribute name="value"><xsl:value-of select="HomescreenPlugins_3/UseEmptyWidgets"/></xsl:attribute>
+					</property>
+				      </item>
+				      <item>
+				        <xsl:attribute name="id"><xsl:value-of select="HomescreenPlugins_3/ItemIdWallpaper"/></xsl:attribute>
+					  <property>
+					    <xsl:attribute name="name"><xsl:value-of select="HomescreenPlugins_3/WallpaperPropertyName"/></xsl:attribute>								             
+  					    <xsl:attribute name="value"><xsl:value-of select="HomescreenPlugins_3/BackGroundPath"/></xsl:attribute>
+					  </property>
+					</item>      
+                                      </settings>
+				      <plugins>
 						<xsl:for-each select="HomescreenPlugins_3/Plugins">
 							<plugin>
 								<xsl:attribute name="uid"><xsl:value-of select="Uid"/></xsl:attribute>
@@ -82,6 +67,14 @@
 								              <xsl:attribute name="name"><xsl:value-of select="ShortcutPropertyNameUid"/></xsl:attribute>
 								              <xsl:attribute name="value"><xsl:value-of select="Shortcut1Uid"/></xsl:attribute>
 								            </property>
+								            <property>
+								              <xsl:attribute name="name"><xsl:value-of select="ShortcutPropertyNameView"/></xsl:attribute>
+								              <xsl:attribute name="value"><xsl:value-of select="Shortcut1View"/></xsl:attribute>
+								            </property>
+								            <property>
+								              <xsl:attribute name="name"><xsl:value-of select="ShortcutPropertyNameParam"/></xsl:attribute>
+								              <xsl:attribute name="value"><xsl:value-of select="Shortcut1Param"/></xsl:attribute>
+								            </property>
 				                  </item>
 				                </xsl:if>
 				                <xsl:if test="Customize2Shortcut = 1">
@@ -96,6 +89,14 @@
 								              <xsl:attribute name="name"><xsl:value-of select="ShortcutPropertyNameUid"/></xsl:attribute>
 								              <xsl:attribute name="value"><xsl:value-of select="Shortcut2Uid"/></xsl:attribute>
 								            </property>
+								            <property>
+								              <xsl:attribute name="name"><xsl:value-of select="ShortcutPropertyNameView"/></xsl:attribute>
+								              <xsl:attribute name="value"><xsl:value-of select="Shortcut2View"/></xsl:attribute>
+								            </property>
+								            <property>
+								              <xsl:attribute name="name"><xsl:value-of select="ShortcutPropertyNameParam"/></xsl:attribute>
+								              <xsl:attribute name="value"><xsl:value-of select="Shortcut2Param"/></xsl:attribute>
+								            </property>
 				                  </item>
 				                </xsl:if>
 				                <xsl:if test="Customize3Shortcut = 1">
@@ -110,6 +111,14 @@
 								              <xsl:attribute name="name"><xsl:value-of select="ShortcutPropertyNameUid"/></xsl:attribute>
 								              <xsl:attribute name="value"><xsl:value-of select="Shortcut3Uid"/></xsl:attribute>
 								            </property>
+								            <property>
+								              <xsl:attribute name="name"><xsl:value-of select="ShortcutPropertyNameView"/></xsl:attribute>
+								              <xsl:attribute name="value"><xsl:value-of select="Shortcut3View"/></xsl:attribute>
+								            </property>
+								            <property>
+								              <xsl:attribute name="name"><xsl:value-of select="ShortcutPropertyNameParam"/></xsl:attribute>
+								              <xsl:attribute name="value"><xsl:value-of select="Shortcut3Param"/></xsl:attribute>
+								            </property>
 				                  </item>
 				                </xsl:if>
 				                <xsl:if test="Customize4Shortcut = 1">
@@ -124,6 +133,14 @@
 								              <xsl:attribute name="name"><xsl:value-of select="ShortcutPropertyNameUid"/></xsl:attribute>
 								              <xsl:attribute name="value"><xsl:value-of select="Shortcut4Uid"/></xsl:attribute>
 								            </property>
+								            <property>
+								              <xsl:attribute name="name"><xsl:value-of select="ShortcutPropertyNameView"/></xsl:attribute>
+								              <xsl:attribute name="value"><xsl:value-of select="Shortcut4View"/></xsl:attribute>
+								            </property>
+								            <property>
+								              <xsl:attribute name="name"><xsl:value-of select="ShortcutPropertyNameParam"/></xsl:attribute>
+								              <xsl:attribute name="value"><xsl:value-of select="Shortcut4Param"/></xsl:attribute>
+								            </property>
 								          </item>
 				                </xsl:if>
 				              </settings>
@@ -137,3 +154,4 @@
 		</xsl:template>
 	</xsl:stylesheet>
 </file>
+</container>
\ No newline at end of file
Binary file idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5manifest.confml has changed
--- a/idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5manifest.gcfml	Wed Apr 14 15:47:59 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5manifest.gcfml	Tue Apr 27 16:26:12 2010 +0300
@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<container xmlns="http://www.symbianfoundation.org/xml/implml/1">
 <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"/>
@@ -56,3 +57,4 @@
   </xsl:template>
 	</xsl:stylesheet>
 </file>
+</container>
\ No newline at end of file
--- a/idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5xuikon.gcfml	Wed Apr 14 15:47:59 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5xuikon.gcfml	Tue Apr 27 16:26:12 2010 +0300
@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<container xmlns="http://www.symbianfoundation.org/xml/implml/1">
 <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" 
@@ -12,3 +13,4 @@
   </xsl:template>
 	</xsl:stylesheet>
 </file>
+</container>
\ No newline at end of file
--- a/idlehomescreen/inc/xnviewmanager.h	Wed Apr 14 15:47:59 2010 +0300
+++ b/idlehomescreen/inc/xnviewmanager.h	Tue Apr 27 16:26:12 2010 +0300
@@ -202,7 +202,9 @@
     CXnOomSysHandler& OomSysHandler() const;
     
     void UpdatePageManagementInformationL();
-                  
+
+    void OrientationChanged();
+
 private:
     // new functions
     
@@ -344,6 +346,11 @@
      * Own.
      */
     CPeriodic* iStabilityTimer;
+
+    /**
+     * Flag for current orientation.
+     */    
+    TBool iIsLandscapeOrientation;
     
 private:   
     // Friend classes
--- a/idlehomescreen/loc/activeidle3.loc	Wed Apr 14 15:47:59 2010 +0300
+++ b/idlehomescreen/loc/activeidle3.loc	Tue Apr 27 16:26:12 2010 +0300
@@ -298,6 +298,13 @@
 //
 #define qtn_hs_corrupted_image_note "Unable to select. Image corrupted or format not supported."
 
+// d: Shown when user select too large image file as a wallpaper 
+// l: popup_note_window
+// w:
+// r: TB9.2
+//
+#define qtn_hs_too_big_image_note "Unable to select. Image size is too large."
+
 // d: Show when default configuration is loaded (critical error case)
 // l: list_single_pane_t1_cp2
 // w:
--- a/idlehomescreen/nativeuicontroller/inc/ainativerenderer.h	Wed Apr 14 15:47:59 2010 +0300
+++ b/idlehomescreen/nativeuicontroller/inc/ainativerenderer.h	Tue Apr 27 16:26:12 2010 +0300
@@ -23,8 +23,8 @@
 #include <e32base.h>
 
 // User includes
-#include "aidevicestatuscontentmodel.h"
-#include "aiprofileplugincontentmodel.h"
+#include <aidevicestatuscontentmodel.h>
+#include <aiprofileplugincontentmodel.h>
 
 // Forward declarations
 class CHsContentPublisher;
--- a/idlehomescreen/nativeuicontroller/src/ainativeuimodel.cpp	Wed Apr 14 15:47:59 2010 +0300
+++ b/idlehomescreen/nativeuicontroller/src/ainativeuimodel.cpp	Tue Apr 27 16:26:12 2010 +0300
@@ -17,7 +17,7 @@
 
 
 #include "ainativeuimodel.h"
-#include "aidevicestatuscontentmodel.h"
+#include <aidevicestatuscontentmodel.h>
 
 namespace AiNativeUiController
     {
--- a/idlehomescreen/nativeuicontroller/src/aistatuspanetouchui.cpp	Wed Apr 14 15:47:59 2010 +0300
+++ b/idlehomescreen/nativeuicontroller/src/aistatuspanetouchui.cpp	Tue Apr 27 16:26:12 2010 +0300
@@ -27,18 +27,18 @@
 #ifdef RD_TACTILE_FEEDBACK
 #include <touchfeedback.h>
 #endif
+#include <hscontentpublisher.h>
+#include <hspublisherinfo.h>
+#include <aidevicestatuscontentmodel.h>
+#include <AiNativeUi.rsg>
 
 // User includes
-#include <hscontentpublisher.h>
-#include <hspublisherinfo.h>
 #include "aistrcnv.h"
 #include "aistatuspanetouchui.h"
 #include "aistatuspanel.h"
 #include "ainativeuiplugins.h"
 #include "aifweventhandler.h"
 #include "aiconsts.h"
-#include "aidevicestatuscontentmodel.h"
-#include <AiNativeUi.rsg>
 
 using namespace AiNativeUiController;
 
--- a/idlehomescreen/nativeuicontroller/src/nativeuicontroller.cpp	Wed Apr 14 15:47:59 2010 +0300
+++ b/idlehomescreen/nativeuicontroller/src/nativeuicontroller.cpp	Tue Apr 27 16:26:12 2010 +0300
@@ -26,7 +26,8 @@
 #include <aipspropertyobserver.h>
 #include <eikstart.h>
 #include <avkondomainpskeys.h>
-#include <AknDlgShut.h> 
+#include <AknDlgShut.h>
+#include <aidevicestatuscontentmodel.h>
 
 // User includes
 #include <aifwstatehandler.h>
@@ -38,7 +39,6 @@
 #include "appui.h"
 #include "aiutility.h"
 #include "aistrparser.h"
-#include "aidevicestatuscontentmodel.h"
 #include "aistatuspanel.h"
 #include "ainativerenderer.h"
 #include "aititlepanerenderer.h"
--- a/idlehomescreen/widgetmanager/inc/wmconfiguration.h	Wed Apr 14 15:47:59 2010 +0300
+++ b/idlehomescreen/widgetmanager/inc/wmconfiguration.h	Tue Apr 27 16:26:12 2010 +0300
@@ -144,7 +144,7 @@
     TUid FetchWidgetUidFromRegistryL( const TDesC& aBundleId );
     
     /** sets operator icon to button if not already defined */
-    void SetOperatorIcon( TUid aUid );
+    void SetOperatorIconL( TUid aUid );
 	
 private:
 
--- a/idlehomescreen/widgetmanager/inc/wmdetailsdlg.h	Wed Apr 14 15:47:59 2010 +0300
+++ b/idlehomescreen/widgetmanager/inc/wmdetailsdlg.h	Tue Apr 27 16:26:12 2010 +0300
@@ -27,6 +27,7 @@
 class CAknMarqueeControl;
 class CEikRichTextEditor;
 class CAknsBasicBackgroundControlContext;
+class CWmImageConverter;
 
 // CLASS DECLARATIONS
 /**
@@ -42,9 +43,10 @@
 	static CWmDetailsDlg* NewL(
 	        const TDesC& aName,
 	        const TDesC& aDescription,
-	        TBool  aCanBeAdded,
-            const CFbsBitmap* aLogoBmp,
-            const CFbsBitmap* aLogoMask );
+	        TBool aCanBeAdded,
+	        const TDesC& aIconStr,
+	        const CFbsBitmap& aDefaultIcon,
+	        const CFbsBitmap& aDefaultIconMask );
 
     /** Destructor. */
     ~CWmDetailsDlg();
@@ -108,8 +110,9 @@
     void ConstructL(
 	        const TDesC& aName,
 	        const TDesC& aDescription,
-            const CFbsBitmap* aLogoBmp,
-            const CFbsBitmap* aLogoMask );
+	        const TDesC& aIconStr,
+	        const CFbsBitmap& aDefaultIcon,
+	        const CFbsBitmap& aDefaultIconMask );
 
 private:
 	
@@ -157,6 +160,11 @@
      * ETrue if widget name needs to be scrolled. 
      */
     TBool               iNeedToScroll;
+    
+    /**
+     *  the image converter utility 
+     */
+    CWmImageConverter*    iImageConverter;
 	};
 
 #endif ___WMDETAILSDLG_H__
--- a/idlehomescreen/widgetmanager/inc/wmimageconverter.h	Wed Apr 14 15:47:59 2010 +0300
+++ b/idlehomescreen/widgetmanager/inc/wmimageconverter.h	Tue Apr 27 16:26:12 2010 +0300
@@ -27,47 +27,23 @@
 
 // Forward declarations
 class CFbsBitmap;
-class CBitmapScaler;
-class CImageDecoder;
 class TAknsItemID;
 class CWmUnitTest;
 class MSvgError;
 
 // Class declaration
 /**
- *  MConverterObserver
- *  To notify when image is converted
- */
-NONSHARABLE_CLASS( MConverterObserver )
-    {
-    public:
-        virtual void NotifyCompletion( TInt aError ) = 0;
-    };
-
-// Class declaration
-/**
  * CWmImageConverter
  * Image converter
  */
-NONSHARABLE_CLASS ( CWmImageConverter ) : public CActive,
-        public MAknIconFileProvider
+NONSHARABLE_CLASS ( CWmImageConverter ) : public MAknIconFileProvider
     {
-    /** states for this converter */
-    enum TState 
-        {
-        EIdle = 0,
-        EDecoding,
-        EScalingBitmap,
-        EScalingMask,
-        EFailed
-        };
-
 public: //contructors/destructors
     /**
      * Two-phased constructor.
      * @param aObserver observer
      */
-    static CWmImageConverter* NewL( MConverterObserver* aObserver );    
+    static CWmImageConverter* NewL();    
     
     /** Destructor */
     ~CWmImageConverter();
@@ -77,9 +53,10 @@
     /**
      * Parses icon string and prepares logo image.
      * 
-     * @param aWidth wanted widht
-     * @param aHeight wanted height
+     * @param aIconSize wanted size
      * @param aIconStr str containing logo icon
+	 * @param aBitmap bitmap to create. Empty if fails
+	 * @param aMask mask to create. Empty if fails
      * Supported values:
      * - skin(<major id> <minor id>):mif(<path> <bitmapid> <maskid>)
      * - mif(<path> <bitmapid> <maskid>)
@@ -88,91 +65,35 @@
      * 
      * @return Error code 
      */
-    TInt HandleIconString( TInt aWidth, TInt aHeight, const TDesC& aIconStr );
-
-    /**
-     * Returns converted bitmap. Caller takes ownership
-     * 
-     * @return CFbsBitmap
-     */
-    CFbsBitmap* Bitmap();
+    TInt HandleIconString( 
+            const TSize& aIconSize,
+            const TDesC& aIconStr,
+            CFbsBitmap*& aBitmap,
+            CFbsBitmap*& aMask  );
     
-    /**
-     * Returns converted mask. Caller takes ownership
+	/**
+     * Parses icon string and resizes given bitmaps if needed.
+	 * Errors are ignored and previos size image will be used.
      * 
-     * @return CFbsBitmap
-     */
-    CFbsBitmap* Mask();
-
-    /**
-     * sets the size for decoding
-     * @param aSize the logo size
-     */
-    void SetLogoSize( const TSize& aSize );
-
-    /** supported image conversion methods */
-    enum TConversionMethod
-        {
-        EUnrecognized, // we could not recognise the icon string
-        EUidIcon, // App.UID-coded icon
-        ESvgIcon, // Icon from SVG-file
-        ESkinIcon, // Icon from SKIN id
-        EMifIcon, // Icon from MIF file, known graphic index
-        ESkinAndMifIcon, // Icon from SKIN and MIF combination 
-        EImageIcon, // Icon from image file (jpeg or png)
-        };
-
-    /**
-     * The type of currently converted image.
-     * This method can be used to check if correct conversion was used.
-     * @return conversion method used for current image
-     */
-    TConversionMethod ConversionMethod();
-
-    /**
-     * Image convertion status
-     * 
-     * @return ETrue if processing image, false otherwise.
-     */
-    TBool IsProcessing();
-
-protected: // implementation of CActive
-    /**
-     * Implements cancellation of an outstanding request.
-     * 
-     * @see CActive::DoCancel
-     */
-    void DoCancel();
+     * @param aIconSize wanted size
+     * @param aIconStr icon string to find out what to resize
+	 * @param aBitmap bitmap to resize
+	 * @param aMask mask to resize
+	 */
+    void UpdateImageSize( 
+            const TSize& aSize,
+            const TDesC& aIconStr, 
+            CFbsBitmap& aBitmap, 
+            CFbsBitmap& aMask );
     
-    /**
-     * Handles an active object's request completion event.
-     * 
-     * @see CActive::RunL
-     */
-    void RunL();
-    
-    /**
-     * RunError
-     * 
-     * @see CActive::RunError
-     */
-    TInt RunError(TInt aError);
-        
 private:
     CWmImageConverter(); 
-    void ConstructL( MConverterObserver* aObserver );
-    void CheckSvgErrorL( MSvgError* aError );
-    void HandleIconStringL( TInt aWidth, TInt aHeight, 
-            const TDesC& aIconStr );
+    void ConstructL();
 
 private:
+    void CheckSvgErrorL( MSvgError* aError );
+    void HandleIconStringL( const TSize& aIconSize, const TDesC& aIconStr );
     
-    TBool DoesScaleBitmapUseFallBack( CFbsBitmap* aSrcBitmap );
-    void ScaleBitmapL( const TSize& aSize, 
-                    CFbsBitmap* aTrgBitmap,
-                    CFbsBitmap* aSrcBitmap );    
-    void ScaleBitmap( TInt aWidth, TInt aHeight );
-    void ScaleMask( TInt aWidth, TInt aHeight );
     void CreateIconFromUidL( const TUid& aUid );
     void CreateIconFromSvgL( const TDesC& aFileName );
     void CreateIconFromOtherL( const TDesC& aFileName );
@@ -190,6 +111,7 @@
 
     // helpers
     TInt ParseNextUint( TLex& aLex, TUint& aValue );
+    void CopyBitmapL( CFbsBitmap& aTrgBitmap, CFbsBitmap& aSrcBitmap );
     
 private: // from MAknIconFileProvider
 
@@ -201,11 +123,6 @@
     
 private:
     /**
-     * Converter observer (not owned)
-     */
-    MConverterObserver*     iObserver;
-
-    /**
      * decoded image
      */
     CFbsBitmap*             iBitmap;
@@ -214,22 +131,7 @@
      * decoded image mask
      */
     CFbsBitmap*             iMask;
-    
-    /**
-     * decoder from ICL API
-     */
-    CImageDecoder*          iImageDecoder;
-    
-    /**
-     * bitmap scaler
-     */
-    CBitmapScaler*          iScaler;
-    
-    /**
-     * internal state
-     */
-    TState                  iState;
-    
+
     /**
      * File name to convert
      */
@@ -239,22 +141,11 @@
      * size to convert
      */
     TSize                   iSize;
-    
-    /**
-     * is scaling needed
-     */
-    TBool                   iScaleNeeded;
-    
+
     /**
      * File handle
      */
     RFs                     iFs;
-
-    /**
-     * Conversion method for current image
-     */
-    TConversionMethod       iConversionMethod;
-
     };
 
 #endif // #ifndef WMIMAGECONVERTER_H
--- a/idlehomescreen/widgetmanager/inc/wmlistbox.h	Wed Apr 14 15:47:59 2010 +0300
+++ b/idlehomescreen/widgetmanager/inc/wmlistbox.h	Tue Apr 27 16:26:12 2010 +0300
@@ -70,22 +70,11 @@
     const CFbsBitmap* DefaultLogoMask();
 
     /**
-     * re-size bitmaps to size provided by layout
-     */
-    void ResizeDefaultBitmaps();
-    
-    /**
      * sets item height according to layout 
      */
     void UpdateItemHeight();
-    
-    /**
-     * Responds to skin changed event.
-     */
-    void HandleSkinChanged();
 
 public:
-
     /**
      * from CFormattedCellListBoxItemDrawer:
      * draws a single list box item
@@ -106,9 +95,8 @@
 
     /** 2nd phase constructor */
     void ConstructL();
-
+    
 private: // data members
-
     /** 
      * the plugin root (not owned) 
      */
@@ -137,7 +125,6 @@
 	};
 
 
-
 // CLASS DECLARATIONS
 /**
  * CWmListBox
@@ -269,11 +256,6 @@
     void HandleLayoutChanged();
 
     /**
-     * Responds to skin changed.
-     */
-    void HandleSkinChanged();
-
-    /**
      * Returns size of logo 
      * 
      * @return Size of logo rect
--- a/idlehomescreen/widgetmanager/inc/wmportalbutton.h	Wed Apr 14 15:47:59 2010 +0300
+++ b/idlehomescreen/widgetmanager/inc/wmportalbutton.h	Tue Apr 27 16:26:12 2010 +0300
@@ -22,7 +22,6 @@
 #include <aknbutton.h>	// CAknButton
 #include <AknServerApp.h> //MAknServerAppExitObserver
 
-#include "wmimageconverter.h"
 #include "wmcommon.h"
 
 // FORWARD DECLARATIONS
@@ -31,6 +30,7 @@
 class CWmConfiguration;
 class CWmProcessMonitor;
 class CBrowserLauncher;
+class CWmImageConverter;
 
 /**
  * Portal button ( ovi, operator ) class for Wm
@@ -38,7 +38,6 @@
  * @class   CWmPortalButton wmportalbutton.h
  */
 NONSHARABLE_CLASS( CWmPortalButton ) : public CAknButton,
-                                       public MConverterObserver,
                                        public MCoeControlObserver,
                                        public MAknServerAppExitObserver
     {
@@ -77,11 +76,6 @@
      */
     void ExecuteL();
     
-protected: // from MConverterObserver
-
-    /** image conversin completed */
-    void NotifyCompletion( TInt aError );
-
 protected: // from MCoeControlObserver
 
     /** Observes the button's own activity  */
--- a/idlehomescreen/widgetmanager/inc/wmwidgetdata.h	Wed Apr 14 15:47:59 2010 +0300
+++ b/idlehomescreen/widgetmanager/inc/wmwidgetdata.h	Tue Apr 27 16:26:12 2010 +0300
@@ -27,7 +27,6 @@
 #include <bamdesca.h>
 #include <hscontentinfo.h>
 
-#include "wmimageconverter.h"
 
 // FORWARD DECLARATIONS
 class CDictionaryFileStore;
@@ -37,6 +36,7 @@
 class CWmPersistentWidgetOrder;
 class RWidgetRegistryClientSession;
 class CWmResourceLoader;
+class CWmImageConverter;
 
 // CLASS DECLARATION
 /**
@@ -46,7 +46,6 @@
  */
 NONSHARABLE_CLASS( CWmWidgetData )
     : public CBase
-    , public MConverterObserver
     {
 
 public: // types
@@ -147,7 +146,7 @@
     /**
      * Init logo re-creation
      */
-    void ReCreateLogo( const TSize& aSize );
+    void UpdateLogo( const TSize& aSize, TBool aReCreateLogo );
     
     /**
      * returns widget description
@@ -231,11 +230,6 @@
     /** stop uninstallation animation */
     void StopUninstallAnimation();
     
-protected: // from MConverterObserver
-
-    /** image conversin completed */
-    void NotifyCompletion( TInt aError );
-
 private: // new functions
     
     /** uninstall animation related*/
@@ -254,16 +248,12 @@
     /** Logo icon string handling */
     void HandleIconString( const TDesC& aIconStr );
     void FireDataChanged();
-    static TInt TimeoutTick( TAny* aPtr );
 
 private: // data members
     
     /* reference to resource loader */
     CWmResourceLoader& iWmResourceLoader;
     
-    /* the image converter utility */
-    CWmImageConverter*    iImageConverter;
-
     /* observes this widget representation (NOT OWNED) */
     MWmWidgetDataObserver* iObserver;
 
@@ -302,30 +292,15 @@
     
     /** timer for updating animation */
     CPeriodic*          iAnimationTimer;
-    
-    /** timer for canceling image convertion */
-    CPeriodic*          iTimeoutTimer;
-    
+        
     /* uninstall animation index */
     TInt                iAnimationIndex;
 
     /** uninstallation switch */
     TBool               iAsyncUninstalling;
-    
-    /** logo changed switch */
-    TBool               iFireLogoChanged;
-
-    /**
-     * ActiveSchedulerWait used to wait while logo image
-     * is being prepaired.
-     */
-    CActiveSchedulerWait* iWait;
-    
-    /**
-     * Holds widget name. Used for restoring widget name 
-     * if error has occurred during uninstallation.
-     */
-    HBufC* iWidgetName;
+        
+    /* the image converter utility */
+    CWmImageConverter*    iImageConverter;
     };
 
 
--- a/idlehomescreen/widgetmanager/src/wmconfiguration.cpp	Wed Apr 14 15:47:59 2010 +0300
+++ b/idlehomescreen/widgetmanager/src/wmconfiguration.cpp	Tue Apr 27 16:26:12 2010 +0300
@@ -282,19 +282,19 @@
                 {
                 iOperatorAppType = ES60;
                 iOperatorAppIdUid = StringToUid( appId );
-                SetOperatorIcon( iOperatorAppIdUid );
+                SetOperatorIconL( iOperatorAppIdUid );
                 }
             else if ( !type.Compare( KOpAppTypeCwrt ) )
                 {
                 iOperatorAppType = ECwrt;
                 iOperatorAppIdUid = FetchWidgetUidFromRegistryL( appId );
-                SetOperatorIcon( iOperatorAppIdUid );
+                SetOperatorIconL( iOperatorAppIdUid );
                 }
             else if ( !type.Compare( KOpAppTypeWrt ) )
                 {
                 iOperatorAppType = EWrt;
                 iOperatorAppIdUid = FetchWidgetUidFromRegistryL( appId );
-                SetOperatorIcon( iOperatorAppIdUid );
+                SetOperatorIconL( iOperatorAppIdUid );
                 }
             else if ( !type.Compare( KOpAppTypeJava ) )
                 {
@@ -307,7 +307,7 @@
                 {
                 iOperatorAppType = EQt;
                 iOperatorAppIdUid = StringToUid( appId );
-                SetOperatorIcon( iOperatorAppIdUid );
+                SetOperatorIconL( iOperatorAppIdUid );
                 }
             }
         CleanupStack::PopAndDestroy( applicationInfo );
@@ -318,15 +318,15 @@
 // CWmConfiguration::SetOperatorIcon
 // ---------------------------------------------------------
 //
-void CWmConfiguration::SetOperatorIcon( TUid aUid )
+void CWmConfiguration::SetOperatorIconL( TUid aUid )
     {
     if ( iOperatorButtonIcon &&
         !iOperatorButtonIcon->Des().Length() )
         {
         delete iOperatorButtonIcon;
         iOperatorButtonIcon = NULL;
-        TRAP_IGNORE( iOperatorButtonIcon = HBufC::NewL(
-                KMaxUidName + KOperatorIcon().Length() ) );
+        iOperatorButtonIcon = HBufC::NewL(
+                KMaxUidName + KOperatorIcon().Length() );
         iOperatorButtonIcon->Des().Format(
                 KOperatorIcon(), aUid );
         }
--- a/idlehomescreen/widgetmanager/src/wmdetailsdlg.cpp	Wed Apr 14 15:47:59 2010 +0300
+++ b/idlehomescreen/widgetmanager/src/wmdetailsdlg.cpp	Tue Apr 27 16:26:12 2010 +0300
@@ -30,8 +30,10 @@
 #include <AknsBasicBackgroundControlContext.h>
 #include <AknMarqueeControl.h>
 #include <widgetmanagerview.rsg>
+
 #include "widgetmanager.hrh"
 #include "wmdetailsdlg.h"
+#include "wmimageconverter.h"
 
 
 // CONSTANTS
@@ -47,12 +49,18 @@
 			const TDesC& aName,
 	        const TDesC& aDescription,
 	        TBool  aCanBeAdded,
-            const CFbsBitmap* aLogoBmp,
-            const CFbsBitmap* aLogoMask )
+            const TDesC& aIconStr,
+            const CFbsBitmap& aDefaultIcon,
+            const CFbsBitmap& aDefaultIconMask )
     {
     CWmDetailsDlg* self = new ( ELeave ) CWmDetailsDlg( aCanBeAdded );
     CleanupStack::PushL( self );
-    self->ConstructL( aName, aDescription, aLogoBmp, aLogoMask );
+    self->ConstructL( 
+            aName, 
+            aDescription, 
+            aIconStr, 
+            aDefaultIcon, 
+            aDefaultIconMask );
     CleanupStack::Pop( self );
     return self;
     }
@@ -61,7 +69,7 @@
 // CWmDetailsDlg::CWmDetailsDlg
 // ---------------------------------------------------------
 //
-CWmDetailsDlg::CWmDetailsDlg( TBool  aCanBeAdded )
+CWmDetailsDlg::CWmDetailsDlg( TBool aCanBeAdded )
     : CAknDialog(),
     iCanBeAdded( aCanBeAdded ),
     iNeedToScroll( EFalse )
@@ -85,6 +93,7 @@
     delete iLogoBmp;
     delete iLogoMask;
     delete iBgContext;
+    delete iImageConverter;
     }
 
 // -----------------------------------------------------------------------------
@@ -110,13 +119,10 @@
 void CWmDetailsDlg::ConstructL(
 			const TDesC& aName,
 	        const TDesC& aDescription,
-            const CFbsBitmap* aLogoBmp,
-            const CFbsBitmap* aLogoMask )
+	        const TDesC& aIconStr,
+	        const CFbsBitmap& aDefaultIcon,
+	        const CFbsBitmap& aDefaultIconMask )
     {
-    if ( !aLogoBmp )
-        {
-        User::Leave( KErrArgument );
-        }
  
 	CAknDialog::ConstructL( R_AVKON_DIALOG_EMPTY_MENUBAR );
     
@@ -125,21 +131,61 @@
 
 	iName = aName.AllocL();
 	iDescription = aDescription.AllocL();
-
-	// create bitmap and duplicate handle
-	iLogoBmp = new ( ELeave ) CFbsBitmap;
-    TSize newSize = TSize( aLogoBmp->SizeInPixels().iWidth ,
-                           aLogoBmp->SizeInPixels().iHeight );
-    User::LeaveIfError( iLogoBmp->Create( newSize, aLogoBmp->DisplayMode() ) );    
-    User::LeaveIfError( iLogoBmp->Duplicate( aLogoBmp->Handle() ) );
+	
+	iImageConverter = CWmImageConverter::NewL();
 	
-    if ( aLogoMask )
+    // Main window
+    TRect mainPane;
+    AknLayoutUtils::LayoutMetricsRect(
+            AknLayoutUtils::EApplicationWindow, mainPane );
+    
+    // Dialog
+    TAknLayoutRect dlgWindowRect;
+    TAknWindowLineLayout dlgWindow = AknLayoutScalable_Apps
+               ::popup_wgtman_window().LayoutLine();
+    dlgWindowRect.LayoutRect( mainPane, dlgWindow );
+    
+    // Heading
+    TAknLayoutRect layoutRect;
+    TAknWindowLineLayout headingPane = AknLayoutScalable_Apps
+               ::wgtman_heading_pane().LayoutLine();        
+    layoutRect.LayoutRect( dlgWindowRect.Rect(), headingPane );
+    
+    // Icon
+    TAknLayoutRect iconRect;
+    TAknWindowLineLayout icongrapichs = AknLayoutScalable_Apps
+            ::wgtman_heading_pane_g1().LayoutLine();
+    iconRect.LayoutRect( layoutRect.Rect(), icongrapichs );
+    
+    iImageConverter->HandleIconString( 
+            iconRect.Rect().Size(), 
+            aIconStr, 
+            iLogoBmp, 
+            iLogoMask );
+    
+    // if icon creation fails use defaults
+    if ( !iLogoBmp || !iLogoMask )
         {
-        iLogoMask = new ( ELeave ) CFbsBitmap;
-        newSize = TSize( aLogoMask->SizeInPixels().iWidth ,
-                         aLogoMask->SizeInPixels().iHeight );
-        User::LeaveIfError( iLogoMask->Create( newSize, aLogoMask->DisplayMode() ) );    
-        User::LeaveIfError( iLogoMask->Duplicate( aLogoMask->Handle() ) );
+		delete iLogoBmp; iLogoBmp = NULL;
+		delete iLogoMask; iLogoMask = NULL;
+
+		iLogoBmp = new ( ELeave ) CFbsBitmap;        
+		iLogoMask = new ( ELeave ) CFbsBitmap;  
+
+		TSize size = iconRect.Rect().Size();
+		User::LeaveIfError(
+                iLogoBmp->Create( size, aDefaultIcon.DisplayMode() ) );
+        User::LeaveIfError( 
+                iLogoMask->Create( size, aDefaultIconMask.DisplayMode() ) );
+        
+        iLogoBmp->Duplicate( aDefaultIcon.Handle() );
+        iLogoMask->Duplicate( aDefaultIconMask.Handle() );
+        
+        // Resize default icons only when they are really needed
+        AknIconUtils::SetSize( 
+                iLogoBmp, size, EAspectRatioPreserved );
+        AknIconUtils::SetSize( 
+                iLogoMask, size, EAspectRatioPreserved );
         }
     
     iEikonEnv->AddWindowShadow( static_cast<CCoeControl*>(this) );
@@ -312,7 +358,10 @@
         layoutRect.LayoutRect( rect, contentPane );
         AknLayoutUtils::LayoutControl( iRtEditor, layoutRect.Rect(), rtePane );
         CEikScrollBarFrame* sbFrame = iRtEditor->ScrollBarFrame();
-        if ( sbFrame && sbFrame->VScrollBarVisibility() != CEikScrollBarFrame::EOff )
+        if ( sbFrame && 
+            sbFrame->ScrollBarVisibility( 
+                    CEikScrollBar::EVertical ) != CEikScrollBarFrame::EOff &&
+            sbFrame->VerticalScrollBar()->IsVisible() )
             {
             CEikScrollBar* scrollBar = sbFrame->VerticalScrollBar();
             TAknWindowLineLayout scrollPane = AknLayoutScalable_Apps
@@ -415,12 +464,17 @@
                ::wgtman_heading_pane().LayoutLine();        
     layoutRect.LayoutRect( rect, headingPane );
 
+    TAknLayoutRect logoLayout;
+        logoLayout.LayoutRect( layoutRect.Rect(),AknLayoutScalable_Apps
+                ::wgtman_heading_pane_g1().LayoutLine() );
+        
     if( iLogoBmp && iLogoMask )
         {
-        TAknLayoutRect logoLayout;
-        logoLayout.LayoutRect( layoutRect.Rect(),AknLayoutScalable_Apps
-                ::wgtman_heading_pane_g1().LayoutLine() );        
-        logoLayout.DrawImage( gc, iLogoBmp, iLogoMask );
+        gc.DrawBitmapMasked( logoLayout.Rect(), 
+                iLogoBmp, 
+                TRect(TPoint(0, 0), iLogoBmp->SizeInPixels()), 
+                iLogoMask, 
+                EFalse );
         }
     
     AknsUtils::GetCachedColor( 
@@ -523,14 +577,7 @@
 void CWmDetailsDlg::FocusChanged( TDrawNow aDrawNow )
     {
     CCoeControl::FocusChanged( aDrawNow );
-    if ( IsFocused() )
-        {
-        StartMarquee();
-        }
-    else
-        {
-        StopMarquee();
-        }
+    ( IsFocused() ? StartMarquee() : StopMarquee() );
     }
 
 
--- a/idlehomescreen/widgetmanager/src/wmimageconverter.cpp	Wed Apr 14 15:47:59 2010 +0300
+++ b/idlehomescreen/widgetmanager/src/wmimageconverter.cpp	Tue Apr 27 16:26:12 2010 +0300
@@ -44,12 +44,12 @@
 // CWmImageConverter::NewL
 // ---------------------------------------------------------
 //
-CWmImageConverter* CWmImageConverter::NewL( MConverterObserver* aObserver )
+CWmImageConverter* CWmImageConverter::NewL()
     {
     CWmImageConverter* self = 
         new(ELeave) CWmImageConverter();
     CleanupStack::PushL( self );    
-    self->ConstructL( aObserver );
+    self->ConstructL();
     CleanupStack::Pop(self);
     return self; 
     }
@@ -59,26 +59,19 @@
 // ---------------------------------------------------------
 //
 CWmImageConverter::CWmImageConverter() 
-    : CActive( EPriorityStandard )
     {
-    iState = EIdle;
     iBitmap = NULL;
     iMask = NULL;
-    iObserver = NULL;
-    iConversionMethod = EUnrecognized;
-    CActiveScheduler::Add( this );
     }
 
 // ---------------------------------------------------------
 // CWmImageConverter::ConstructL
 // ---------------------------------------------------------
 //
-void CWmImageConverter::ConstructL( MConverterObserver* aObserver )
+void CWmImageConverter::ConstructL()
     {
     User::LeaveIfError( iFs.Connect() );
     iFs.ShareProtected();
-    iScaler = CBitmapScaler::NewL();
-    iObserver = aObserver;
     }
 
 // ---------------------------------------------------------
@@ -87,8 +80,6 @@
 //
 CWmImageConverter::~CWmImageConverter()
     {
-    Cancel();
-    delete iImageDecoder;
     iFs.Close(); 
     if ( iBitmap ) 
         {
@@ -100,7 +91,6 @@
         delete iMask; 
         iMask = NULL;
         }
-    delete iScaler;
     }
 
 // ---------------------------------------------------------
@@ -108,14 +98,26 @@
 // ---------------------------------------------------------
 //
 TInt CWmImageConverter::HandleIconString( 
-                            TInt aWidth, TInt aHeight, 
-                            const TDesC& aIconStr )
+                            const TSize& aIconSize, 
+                            const TDesC& aIconStr,
+                            CFbsBitmap*& aBitmap,
+                            CFbsBitmap*& aMask )
     {
+    delete aBitmap; aBitmap = NULL;
+    delete aMask; aMask = NULL;
+
     TInt err( KErrNone );
-    TRAP( err, HandleIconStringL( aWidth, aHeight, aIconStr ); );
-    if ( KErrNone != err )
+    TRAP( err, HandleIconStringL( aIconSize, aIconStr ); );
+    if ( err == KErrNone && iBitmap && iMask )
         {
-        iState = EFailed;
+        // ownership transferred
+        aBitmap = iBitmap;
+        iBitmap = NULL;
+        aMask = iMask;        
+        iMask = NULL;
+        }
+    else
+        {
         if ( iBitmap ) 
             {
             delete iBitmap;
@@ -127,6 +129,7 @@
             iMask = NULL;
             }
         }
+
     return err;
     }
 
@@ -135,11 +138,9 @@
 // ---------------------------------------------------------
 //
 void CWmImageConverter::HandleIconStringL( 
-                            TInt aWidth, TInt aHeight, 
+                            const TSize& aIconSize, 
                             const TDesC& aIconStr )
     {
-    iConversionMethod = EUnrecognized;
-    iState = EDecoding;
     if ( aIconStr.Length() )
         {
         TAknsItemID skinItemId;
@@ -149,36 +150,26 @@
         TInt maskId( KErrNotFound );
         TUid appUid;
         iFilename = KNullDesC;
-        iScaleNeeded = EFalse;
-        iSize.SetSize( aWidth, aHeight );
+        iSize = aIconSize;
         
         if ( ResolveSkinIdAndMifId( 
                 aIconStr, skinItemId, bitmapId, maskId, iFilename ) )
             {
-            if ( bitmapId >= 0 && skinItemId.iMajor > 0 )
-                iConversionMethod = ESkinAndMifIcon;
-            else if ( bitmapId >= 0 )
-                iConversionMethod = EMifIcon;
-            else
-                iConversionMethod = ESkinIcon;
             CreateSkinOrMifIconL( 
                     skinItemId, bitmapId, maskId, iFilename );
             }
         else if ( ResolveUid( aIconStr, appUid ) )
             {
-            iConversionMethod = EUidIcon;
             CreateIconFromUidL( appUid );
             }
         else if ( EndsWith( aIconStr, KSvgExt ) )
             {
             // filename_with_full_path.svg
-            iConversionMethod = ESvgIcon;
             CreateIconFromSvgL( aIconStr );
             }
         else if ( BaflUtils::FileExists( iFs, aIconStr ) )
             {
             // filename_with_full_path.png/jpg
-            iConversionMethod = EImageIcon;
             CreateIconFromOtherL( aIconStr );
             }
         else
@@ -201,7 +192,6 @@
     CFbsBitmap* bitmap = NULL;
     CFbsBitmap* mask = NULL;
    
-   
     if ( aUid.iUid >= KWidgetUidLowerBound &&
        aUid.iUid < KWidgetUidUpperBound  )
         {
@@ -232,34 +222,20 @@
         User::LeaveIfError( lsSession.GetAppIcon( aUid, size, *maskedBmp ) );
         
         // handle bitmap
-        iBitmap = new ( ELeave ) CFbsBitmap;
-        User::LeaveIfError( iBitmap->Create( 
-                maskedBmp->SizeInPixels(), 
-                maskedBmp->DisplayMode() ) );
-
-        // scale bitmap
-        ScaleBitmapL( iSize, iBitmap, maskedBmp );  
-
+        iBitmap = new ( ELeave ) CFbsBitmap;       
+        CopyBitmapL( *iBitmap, *maskedBmp );
+        
         // handle mask
         if ( maskedBmp->Mask() )
             {
             iMask = new ( ELeave ) CFbsBitmap;
-            User::LeaveIfError( iMask->Create( 
-                    maskedBmp->Mask()->SizeInPixels(), 
-                    maskedBmp->Mask()->DisplayMode() ) );
-            
-            // scale mask
-            ScaleBitmapL( iSize, iMask, maskedBmp->Mask() );
+            CopyBitmapL( *iMask, *maskedBmp->Mask() );
             }
         
         // cleanup
         CleanupStack::PopAndDestroy( maskedBmp );
         CleanupStack::PopAndDestroy( sizeArray ); 
         CleanupStack::PopAndDestroy( &lsSession );
-        
-        // notify
-        iState = EIdle;
-        iObserver->NotifyCompletion( KErrNone );
         }
     else if ( aUid.iUid != KNullUid.iUid )
         {
@@ -286,20 +262,14 @@
         
         iBitmap = bitmap;
         iMask = mask;
-                
-        err = AknIconUtils::SetSize( iBitmap , iSize, EAspectRatioNotPreserved );
+        err = AknIconUtils::SetSize( iBitmap , iSize, EAspectRatioPreserved );
         if ( KErrNone == err )
             {
-            err = AknIconUtils::SetSize( iMask , iSize, EAspectRatioNotPreserved );
+            err = AknIconUtils::SetSize( iMask , iSize, EAspectRatioPreserved );
             }
-
-        // notify observer
-        iState = EIdle;
-        iObserver->NotifyCompletion( err );
         }
     else
         {
-        iState = EIdle;
         User::Leave( KErrArgument );
         }
     }
@@ -363,8 +333,152 @@
     
     iBitmap = bitmap;
     iMask = mask;
-    iState = EIdle;
-    iObserver->NotifyCompletion( KErrNone );
+    }
+
+// ---------------------------------------------------------
+// CWmImageConverter::CreateIconFromOtherL
+// ---------------------------------------------------------
+//
+void CWmImageConverter::CreateIconFromOtherL( const TDesC& aFileName )
+    {
+    if (iBitmap) {delete iBitmap; iBitmap = NULL;}
+    if (iMask) {delete iMask; iMask = NULL;}
+    
+    iFilename.Copy( aFileName );
+    
+    // create the decoder
+    CImageDecoder* imageDecoder = CImageDecoder::FileNewL( 
+            iFs, iFilename, CImageDecoder::EOptionAlwaysThread );
+    CleanupStack::PushL( imageDecoder );
+    
+    TSize size = imageDecoder->FrameInfo().iOverallSizeInPixels;
+
+    // create the destination bitmap
+    iBitmap = new (ELeave) CFbsBitmap();
+    User::LeaveIfError( iBitmap->Create( 
+            size, imageDecoder->FrameInfo().iFrameDisplayMode ) ); 
+    
+    iMask = new (ELeave) CFbsBitmap();
+    User::LeaveIfError( iMask->Create( size, EGray256 ) ); 
+    
+    // start conversion to bitmap
+    TRequestStatus status;
+    imageDecoder->Convert( &status, *iBitmap, *iMask );
+    User::WaitForRequest( status );
+    if( status.Int() == KErrUnderflow ) 
+        {
+        imageDecoder->ContinueConvert( &status );
+        User::WaitForRequest( status );
+        }
+    User::LeaveIfError( status.Int() );    
+    CleanupStack::PopAndDestroy( imageDecoder );
+    }
+
+// ---------------------------------------------------------------------------
+// CWmImageConverter::CreateSkinOrMifIconL
+// ---------------------------------------------------------------------------
+//
+void CWmImageConverter::CreateSkinOrMifIconL( 
+                const TAknsItemID& aItemId, TInt aBitmapId, 
+                TInt aMaskId, const TDesC& aFileName )
+    {
+    iFilename = aFileName;
+    CFbsBitmap* bitmap = NULL;
+    CFbsBitmap* mask = NULL;
+    
+    // Load from skin 
+    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+    if ( skin && aItemId.iMajor != 0 && aItemId.iMinor != 0 )
+        {
+        TInt err( KErrNone );
+        CAknsMaskedBitmapItemData* itemData = NULL;
+        TRAP( err, itemData = 
+                    static_cast<CAknsMaskedBitmapItemData*>(
+                    skin->CreateUncachedItemDataL( aItemId, EAknsITMaskedBitmap ) ); );
+        if( itemData && KErrNone == err )
+            {
+            CleanupStack::PushL( itemData );
+            // Detach bitmaps
+            bitmap = itemData->Bitmap();
+            itemData->SetBitmap( NULL );
+            mask = itemData->Mask();
+            itemData->SetMask( NULL );
+            CleanupStack::PopAndDestroy( itemData );
+            }
+        else
+            {
+            // look in imagetable
+            CAknsImageTableItemData* iconData = NULL;
+            TRAP( err, iconData = static_cast<CAknsImageTableItemData*>(
+                            skin->CreateUncachedItemDataL( aItemId, EAknsITImageTable ) ); );
+            if( iconData && KErrNone == err )
+                {
+                CleanupStack::PushL( iconData );
+                if( iconData->NumberOfImages() )
+                    {                        
+                    TAknsItemID iconIId;
+                    iconIId.Set( iconData->ImageIID(0) );
+                    TRAP( err, AknsUtils::CreateIconL( 
+                            skin, iconIId, bitmap, mask, KNullDesC, -1, -1 ); );
+                    }
+                CleanupStack::PopAndDestroy( iconData );
+                }
+            }
+        
+        if ( KErrNone == err && bitmap )
+            {
+            TInt err = AknIconUtils::SetSize( 
+                    bitmap, 
+                    iSize, 
+                    EAspectRatioPreserved );
+            if ( KErrNone == err  )
+                {
+                if ( mask )
+                    {
+                    err = AknIconUtils::SetSize( 
+                            mask, 
+                            iSize, 
+                            EAspectRatioPreserved );
+                    }
+                iBitmap = bitmap;
+                iMask = mask;
+                return;
+                }
+            else
+                {
+                if ( bitmap ) { delete bitmap; bitmap = NULL; }
+                if ( mask ){ delete mask; mask = NULL; }
+                }
+            }
+        }
+    
+    if( aBitmapId != KErrNotFound && !bitmap && 
+       aFileName.Length() && BaflUtils::FileExists( iFs, aFileName ) )
+        {
+        if ( aMaskId != KErrNotFound )
+          {
+          // Create icon from Mif filename , bitmap id and mask id          
+          AknIconUtils::CreateIconL(
+                  bitmap, mask, *this, aBitmapId, aMaskId );
+          }
+        else
+          {
+          bitmap = AknIconUtils::CreateIconL( *this, aBitmapId );
+          }
+        }
+    else
+        {
+        User::Leave( KErrArgument );
+        }
+    
+    iBitmap = bitmap;
+    iMask = mask;
+
+    TInt err = AknIconUtils::SetSize( iBitmap , iSize, EAspectRatioPreserved );
+    if ( KErrNone == err && iMask )
+        {
+        err = AknIconUtils::SetSize( iMask , iSize, EAspectRatioPreserved );
+        }
     }
 
 // ---------------------------------------------------------
@@ -380,263 +494,6 @@
     }
 
 // ---------------------------------------------------------
-// CWmImageConverter::CreateIconFromOtherL
-// ---------------------------------------------------------
-//
-void CWmImageConverter::CreateIconFromOtherL( const TDesC& aFileName )
-    {
-    if ( IsActive() )
-        {
-        User::Leave( KErrNotReady );
-        }
-    
-    if ( iImageDecoder ) delete iImageDecoder; iImageDecoder = NULL;
-    if (iBitmap) {delete iBitmap; iBitmap = NULL;}
-    if (iMask) {delete iMask; iMask = NULL;}
-    
-    iFilename.Copy( aFileName );
-    
-    // create the decoder
-    iImageDecoder = CImageDecoder::FileNewL( iFs, iFilename );
-    
-    TSize size = iImageDecoder->FrameInfo().iOverallSizeInPixels;
-
-    // create the destination bitmap
-    iBitmap = new (ELeave) CFbsBitmap();
-    iBitmap->Create( size,
-                     iImageDecoder->FrameInfo().iFrameDisplayMode ); 
-    
-    iMask = new (ELeave) CFbsBitmap();
-    iMask->Create( size, EGray256 ); 
-
-    if ( size != iSize )
-        {
-        iScaleNeeded = ETrue;
-        }
-
-    // start conversion to bitmap
-    iImageDecoder->Convert( &iStatus, *iBitmap, *iMask );
-    SetActive();
-    }
-
-// ---------------------------------------------------------
-// CWmImageConverter::DoCancel
-// ---------------------------------------------------------
-//
-void CWmImageConverter::DoCancel()
-    {
-    if( iState == EDecoding && 
-       iConversionMethod == EImageIcon )
-        {
-        iImageDecoder->Cancel();
-        iState = EIdle;
-        if ( iObserver )
-            {            
-            iObserver->NotifyCompletion( KErrCancel );
-            }
-        }    
-    else if( iState == EScalingBitmap ||
-        iState == EScalingMask )
-        {
-        iScaler->Cancel();
-        iState = EIdle;
-        if ( iObserver )
-            {            
-            iObserver->NotifyCompletion( KErrCancel );
-            }
-        }    
-    else
-        {
-        // State is EIdle, do nothing
-        }    
-    iScaleNeeded = EFalse;
-    }
-
-// ---------------------------------------------------------
-// CWmImageConverter::RunL
-// ---------------------------------------------------------
-//
-void CWmImageConverter::RunL()
-    {
-    switch( iState ) 
-        {
-        case EDecoding:
-            {
-            if( iStatus.Int() == KErrNone )
-                {
-                if ( iScaleNeeded )
-                    {
-                    ScaleBitmap( iSize.iWidth, iSize.iHeight );
-                    }
-                else
-                    {
-                    iState = EIdle;
-                    if ( iObserver )
-                        {
-                        iObserver->NotifyCompletion( KErrNone );
-                        }
-                    }
-                break;
-                }
-            else if( iStatus.Int() == KErrUnderflow ) 
-                {
-                iImageDecoder->ContinueConvert( &iStatus );
-                SetActive();
-                break;
-                }
-            else if ( iStatus.Int() == KErrCorrupt )
-                {
-                iState = EIdle;
-                iScaleNeeded = EFalse;
-                if ( iBitmap )
-                    {
-                    delete iBitmap;
-                    iBitmap = NULL;
-                    }
-                if ( iMask )
-                    {
-                    delete iMask;
-                    iMask = NULL;
-                    }
-                if ( iObserver )
-                    {
-                    iObserver->NotifyCompletion( KErrCorrupt );
-                    }
-                break;
-                }
-            else
-                {
-                // Unknown error
-                iState = EIdle;
-                iScaleNeeded = EFalse;
-                if ( iBitmap )
-                    {
-                    delete iBitmap;
-                    iBitmap = NULL;
-                    }
-                if ( iMask )
-                    {
-                    delete iMask;
-                    iMask = NULL;
-                    }
-                if ( iObserver )
-                    {
-                    iObserver->NotifyCompletion( iStatus.Int() );
-                    }
-                break;
-                }
-            }
-        case EScalingBitmap:
-            {
-            if( iStatus.Int() == KErrNone && iMask )
-                {
-                ScaleMask( iSize.iWidth, iSize.iHeight );
-                }
-            else
-                {
-                iState = EIdle;
-                iScaleNeeded = EFalse;
-                if ( iObserver )
-                    {
-                    iObserver->NotifyCompletion( iStatus.Int() );
-                    }                
-                }
-            break;
-            }
-        case EScalingMask:
-            {
-            iState = EIdle;
-            iScaleNeeded = EFalse;
-            if ( iObserver )
-                {
-                iObserver->NotifyCompletion( iStatus.Int() );
-                }
-            break;
-            }
-        default:
-            break;
-        }   
-    }
-
-// ---------------------------------------------------------
-// CWmImageConverter::RunError
-// ---------------------------------------------------------
-//
-TInt CWmImageConverter::RunError(TInt /*aError*/)
-    {
-    // Our RunL does not contain any method calls that would leave, so this method
-    // should never be called.
-    iScaleNeeded = EFalse;
-    return KErrNone;
-    }
-
-// ---------------------------------------------------------
-// CWmImageConverter::ScaleBitmap
-// ---------------------------------------------------------
-//
-void CWmImageConverter::ScaleBitmap( TInt aWidth, TInt aHeight )
-    {
-    if ( !IsActive() && 
-         iBitmap &&
-        ( iState == EDecoding || iState == EIdle ) )
-        {
-        iState = EScalingBitmap;
-        // the maintain aspect ratio is by default set to true
-        iScaler->Scale( &iStatus, *iBitmap, TSize( aWidth,aHeight ), EFalse );        
-        SetActive();
-        }
-    }
-
-// ---------------------------------------------------------
-// CWmImageConverter::ScaleMask
-// ---------------------------------------------------------
-//
-void CWmImageConverter::ScaleMask( TInt aWidth, TInt aHeight )
-    {
-    if ( !IsActive() && 
-        iState == EScalingBitmap &&
-        iMask )
-        {
-        iState = EScalingMask;
-        // the maintain aspect ratio is by default set to true
-        iScaler->Scale( &iStatus, *iMask, TSize(aWidth,aHeight), EFalse );        
-        SetActive();
-        }
-    }
-
-// ---------------------------------------------------------
-// CWmImageConverter::Bitmap
-// ---------------------------------------------------------
-//
-CFbsBitmap* CWmImageConverter::Bitmap()
-    {
-    CFbsBitmap* bitmap = NULL;
-    if (iState == EIdle &&
-        iBitmap )
-        {
-        bitmap = iBitmap;  // ownership taken
-        iBitmap = NULL;
-        }
-    return bitmap;
-    }
-
-// ---------------------------------------------------------
-// CWmImageConverter::Mask
-// ---------------------------------------------------------
-//
-CFbsBitmap* CWmImageConverter::Mask()
-    {
-    CFbsBitmap* mask = NULL;
-    if (iState == EIdle &&
-        iMask )
-        {
-        mask = iMask;  // ownership taken
-        iMask = NULL;
-        }
-    return mask;
-    }
-
-// ---------------------------------------------------------
 // CWmImageConverter::EndsWith
 // ---------------------------------------------------------
 //
@@ -774,115 +631,6 @@
    }
 
 // ---------------------------------------------------------------------------
-// CWmImageConverter::CreateSkinOrMifIconL
-// ---------------------------------------------------------------------------
-//
-void CWmImageConverter::CreateSkinOrMifIconL( 
-                const TAknsItemID& aItemId, TInt aBitmapId, 
-                TInt aMaskId, const TDesC& aFileName )
-    {
-    iFilename = aFileName;
-    CFbsBitmap* bitmap = NULL;
-    CFbsBitmap* mask = NULL;
-    
-    // Load from skin 
-    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
-    if ( skin && aItemId.iMajor != 0 && aItemId.iMinor != 0 )
-        {
-        TInt err( KErrNone );
-        CAknsMaskedBitmapItemData* itemData = NULL;
-        TRAP( err, itemData = 
-                    static_cast<CAknsMaskedBitmapItemData*>(
-                    skin->CreateUncachedItemDataL( aItemId, EAknsITMaskedBitmap ) ); );
-        if( itemData && KErrNone == err )
-            {
-            CleanupStack::PushL( itemData );
-            // Detach bitmaps
-            bitmap = itemData->Bitmap();
-            itemData->SetBitmap( NULL );
-            mask = itemData->Mask();
-            itemData->SetMask( NULL );
-            CleanupStack::PopAndDestroy( itemData );
-            }
-        else
-            {
-            // look in imagetable
-            CAknsImageTableItemData* iconData = NULL;
-            TRAP( err, iconData = static_cast<CAknsImageTableItemData*>(
-                            skin->CreateUncachedItemDataL( aItemId, EAknsITImageTable ) ); );
-            if( iconData && KErrNone == err )
-                {
-                CleanupStack::PushL( iconData );
-                if( iconData->NumberOfImages() )
-                    {                        
-                    TAknsItemID iconIId;
-                    iconIId.Set( iconData->ImageIID(0) );
-                    TRAP( err, AknsUtils::CreateIconL( 
-                            skin, iconIId, bitmap, mask, KNullDesC, -1, -1 ); );
-                    }
-                CleanupStack::PopAndDestroy( iconData );
-                }
-            }
-        
-        if ( KErrNone == err && bitmap )
-            {
-            TInt err = AknIconUtils::SetSize( bitmap , iSize, EAspectRatioNotPreserved );
-            if ( KErrNone == err  )
-                {
-                if ( mask )
-                    {
-                    err = AknIconUtils::SetSize( mask , iSize, EAspectRatioNotPreserved );
-                    }
-                iBitmap = bitmap;
-                iMask = mask;
-                iState = EIdle;
-                // notify observer                    
-                iObserver->NotifyCompletion( KErrNone );
-                return;
-                }
-            else
-                {
-                if ( bitmap ) { delete bitmap; bitmap = NULL; }
-                if ( mask ){ delete mask; mask = NULL; }
-                }
-            }
-        }
-    
-    if( aBitmapId != KErrNotFound && !bitmap && 
-       aFileName.Length() && BaflUtils::FileExists( iFs, aFileName ) )
-        {
-        if ( aMaskId != KErrNotFound )
-          {
-          // Create icon from Mif filename , bitmap id and mask id          
-          AknIconUtils::CreateIconL(
-                  bitmap, mask, *this, aBitmapId, aMaskId );
-          }
-        else
-          {
-          bitmap = AknIconUtils::CreateIconL( *this, aBitmapId );
-          }
-        }
-    else
-        {
-        iState = EIdle;
-        User::Leave( KErrArgument );
-        }
-    
-    iBitmap = bitmap;
-    iMask = mask;
-
-    TInt err = AknIconUtils::SetSize( iBitmap , iSize, EAspectRatioNotPreserved );
-    if ( KErrNone == err && iMask )
-        {
-        err = AknIconUtils::SetSize( iMask , iSize, EAspectRatioNotPreserved );
-        }
-    
-    iState = EIdle;
-    // notify observer
-    iObserver->NotifyCompletion( err );
-    }
-
-// ---------------------------------------------------------------------------
 // CWmImageConverter::ParseNextUint()
 // ---------------------------------------------------------------------------
 //
@@ -909,24 +657,6 @@
     }
 
 // ---------------------------------------------------------------------------
-// CWmImageConverter::SetLogoSize()
-// ---------------------------------------------------------------------------
-//
-void CWmImageConverter::SetLogoSize( const TSize& aSize )
-    {
-    iSize = aSize;
-    }
-
-// ---------------------------------------------------------------------------
-// CWmImageConverter::ConversionMethod()
-// ---------------------------------------------------------------------------
-//
-CWmImageConverter::TConversionMethod CWmImageConverter::ConversionMethod()
-    {
-    return iConversionMethod;
-    }
-
-// ---------------------------------------------------------------------------
 // CWmImageConverter::RetrieveIconFileHandleL
 // ---------------------------------------------------------------------------
 //
@@ -937,293 +667,33 @@
 	        EFileRead | EFileShareReadersOnly );
 	if ( KErrNone != err )
 	    {
-        iState = EIdle;
         User::Leave( err );
 	    }
     }
 
 // ---------------------------------------------------------------------------
-// CWmImageConverter::DoesScaleBitmapUseFallBack
-// ---------------------------------------------------------------------------
-//
-TBool CWmImageConverter::DoesScaleBitmapUseFallBack( CFbsBitmap* aSrcBitmap )
-    {
-    if ( !aSrcBitmap )
-        {
-        return EFalse;
-        }
-
-    TDisplayMode displayMode = aSrcBitmap->DisplayMode();
-    TBool fallbackOnly = EFalse;
-
-    switch ( displayMode )
-        {
-        case EGray2:
-        case EGray4:
-        case EGray16:
-        case EColor16:
-        case EColor16M:
-        case ERgb:
-        case EColor16MA:
-            fallbackOnly = ETrue;
-            break;
-        case EGray256:
-        case EColor4K:
-        case EColor64K:
-        case EColor256:
-        case EColor16MU:
-            // These are the supported modes
-            break;
-        default:
-            fallbackOnly = ETrue;
-        }
-
-    return fallbackOnly;
-    }
-
-
-// ---------------------------------------------------------------------------
-// CWmImageConverter::ScaleBitmapL
+// CWmImageConverter::CopyBitmapL
 // ---------------------------------------------------------------------------
 //
-void CWmImageConverter::ScaleBitmapL( 
-                            const TSize& aSize,
-                            CFbsBitmap* aTrgBitmap,
-                            CFbsBitmap* aSrcBitmap )
+void CWmImageConverter::CopyBitmapL( 
+                            CFbsBitmap& aTrgBitmap,
+                            CFbsBitmap& aSrcBitmap )
     {
-    if ( !aSrcBitmap ) User::Leave( KErrArgument );
-    if ( !aTrgBitmap ) User::Leave( KErrArgument );
-    if ( aSrcBitmap->DisplayMode() != aTrgBitmap->DisplayMode() )
-        {
-        User::Leave( KErrArgument );
-        }
-    
-    // make target to correct size
-    if ( aTrgBitmap->SizeInPixels() != aSize )
-        {
-        aTrgBitmap->Resize( aSize );
-        }
-    
-    TRect targetRect( aSize );
-
-    // calculate aspect ratio
-    TInt srcHeight = aSrcBitmap->SizeInPixels().iHeight;
-    TInt srcWidth = aSrcBitmap->SizeInPixels().iWidth;
-    TReal scaleRatio( 1 ); //no scale as defaul
-    
-    //If any dimension is 0, then we do not bother to scale
-    if ( targetRect.Width() > 0 && targetRect.Height() > 0 )
-        {
-        TReal xRatio = ( ( TReal )srcWidth / ( TReal )targetRect.Width() );
-        TReal yRatio = ( ( TReal )srcHeight / ( TReal )targetRect.Height() );
-        //Find out appropriate scaling factor
-        xRatio > yRatio ? ( scaleRatio = xRatio ) : ( scaleRatio = yRatio );
-        }
-
-    //Scale the size for target bitmap
-    targetRect.SetHeight( srcHeight / scaleRatio );
-    targetRect.SetWidth( srcWidth / scaleRatio );    
-    
-    TSize trgBitmapSize = aTrgBitmap->SizeInPixels();
+    TSize size( aSrcBitmap.SizeInPixels() );
+    TDisplayMode displayMode( aSrcBitmap.DisplayMode() );
+    User::LeaveIfError( aTrgBitmap.Create( size, displayMode ) );
     
-    // calculate the valid drawing area
-    TRect drawRect = targetRect;
-    drawRect.Intersection( TRect( TPoint( 0, 0 ), trgBitmapSize ) );
-
-    if( drawRect.IsEmpty() || 
-        aSrcBitmap->SizeInPixels().iHeight <= 0 || 
-        aSrcBitmap->SizeInPixels().iWidth <= 0 )
-        {
-        User::Leave( KErrArgument );
-        }
-
-    TSize srcSize = aSrcBitmap->SizeInPixels();
-
-    TBool srcTemporary = EFalse;
-    if ( aSrcBitmap->IsRomBitmap() )
-        {
-        srcTemporary = ETrue;
-        }
-
-    TDisplayMode displayMode = aSrcBitmap->DisplayMode();
-    TBool fallbackOnly = DoesScaleBitmapUseFallBack( aSrcBitmap );
-
-    if ( fallbackOnly )
-        {
-        CFbsBitmapDevice* dev = CFbsBitmapDevice::NewL( aTrgBitmap );
-        CleanupStack::PushL( dev );
-        CFbsBitGc* gc = NULL;
-        User::LeaveIfError( dev->CreateContext( gc ) );
-        CleanupStack::PushL( gc );
-
-        // write alpha information if it exists
-        if ( aSrcBitmap->DisplayMode() == EColor16MA )
-            {
-            gc->SetDrawMode( CGraphicsContext::EDrawModeWriteAlpha );
-            }
-
-        // targetRect is used because DrawBitmap handles clipping automatically
-        gc->DrawBitmap( targetRect, aSrcBitmap );
-        CleanupStack::PopAndDestroy( 2 ); // dev, gc
-        return;
-        }
-
-    // Heap lock for FBServ large chunk to prevent background
-    // compression of aSrcBitmap after if IsCompressedInRAM returns EFalse
-    aSrcBitmap->LockHeapLC( ETrue ); // fbsheaplock
-    TBool fbsHeapLock = ETrue;
-    if ( aSrcBitmap->IsCompressedInRAM() )
-        {
-        srcTemporary = ETrue;
-        }
-
-    CFbsBitmap* realSource = aSrcBitmap;
-    if ( srcTemporary )
-        {
-        CleanupStack::PopAndDestroy(); // fbsheaplock
-        fbsHeapLock = EFalse;
-
-        realSource = new ( ELeave ) CFbsBitmap();
-        CleanupStack::PushL( realSource );
-        User::LeaveIfError(
-            realSource->Create( srcSize, aSrcBitmap->DisplayMode() ) );
-        CFbsBitmapDevice* dev = CFbsBitmapDevice::NewL( realSource );
-        CleanupStack::PushL( dev );
-        CFbsBitGc* gc = NULL;
-        User::LeaveIfError( dev->CreateContext( gc ) );
-        CleanupStack::PushL( gc );
-        gc->BitBlt( TPoint( 0, 0 ), aSrcBitmap );
-        CleanupStack::PopAndDestroy( 2 ); // dev, gc
-        }
-
-    if ( !fbsHeapLock )
-        {
-        // Heap lock for FBServ large chunk is only needed with large bitmaps.
-        if ( realSource->IsLargeBitmap() || aTrgBitmap->IsLargeBitmap() )
-            {
-            aTrgBitmap->LockHeapLC( ETrue ); // fbsheaplock
-            }
-        else
-            {
-            CleanupStack::PushL( ( TAny* )NULL );
-            }
-        }
-
-    TUint32* srcAddress = realSource->DataAddress();
-    TUint32* trgAddress = aTrgBitmap->DataAddress();
-
-    const TInt xSkip = ( srcSize.iWidth << 8 ) / targetRect.Width();
-    const TInt ySkip = ( srcSize.iHeight << 8 ) / targetRect.Height();
-
-    const TInt drawWidth  = drawRect.Width();
-    const TInt drawHeight = drawRect.Height();
-
-    TRect offsetRect( targetRect.iTl, drawRect.iTl );
-    const TInt yPosOffset = ySkip * offsetRect.Height();
-    const TInt xPosOffset = xSkip * offsetRect.Width();
-
-    if ( ( displayMode == EGray256 ) || ( displayMode == EColor256 ) )
-        {
-        TInt srcScanLen8 = CFbsBitmap::ScanLineLength(
-            srcSize.iWidth, displayMode );
-        TInt trgScanLen8 = CFbsBitmap::ScanLineLength(
-            trgBitmapSize.iWidth, displayMode );
-
-        TUint8* trgAddress8 = reinterpret_cast< TUint8* >( trgAddress );
-
-        TInt yPos = yPosOffset;
-        // skip left and top margins in the beginning
-        trgAddress8 += trgScanLen8 * drawRect.iTl.iY + drawRect.iTl.iX;
-
-        for ( TInt y = 0; y < drawHeight; y++ )
-            {
-            TUint8* srcAddress8 = reinterpret_cast< TUint8* >( srcAddress ) +
-                ( srcScanLen8 * ( yPos >> 8 ) );
-
-            TInt xPos = xPosOffset;
-            for ( TInt x = 0; x < drawWidth; x++ )
-                {
-                *( trgAddress8++ ) = srcAddress8[xPos >> 8];
-                xPos += xSkip;
-                }
-
-            yPos += ySkip;
-
-            trgAddress8 += trgScanLen8 - drawWidth;
-            }
-        }
-    else if ( displayMode == EColor4K || displayMode == EColor64K )
-        {
-        TInt srcScanLen16 = CFbsBitmap::ScanLineLength(
-            srcSize.iWidth, displayMode ) /2;
-        TInt trgScanLen16 = CFbsBitmap::ScanLineLength(
-            trgBitmapSize.iWidth, displayMode ) /2;
-
-        TUint16* trgAddress16 = reinterpret_cast< TUint16* >( trgAddress );
-
-        TInt yPos = yPosOffset;
-        // skip left and top margins in the beginning
-        trgAddress16 += trgScanLen16 * drawRect.iTl.iY + drawRect.iTl.iX;
-
-        for ( TInt y = 0; y < drawHeight; y++ )
-            {
-            TUint16* srcAddress16 = reinterpret_cast< TUint16* >( srcAddress ) +
-                ( srcScanLen16 * ( yPos >> 8 ) );
-
-            TInt xPos = xPosOffset;
-            for ( TInt x = 0; x < drawWidth; x++ )
-                {
-                *( trgAddress16++ ) = srcAddress16[xPos >> 8];
-                xPos += xSkip;
-                }
-
-            yPos += ySkip;
-
-            trgAddress16 += trgScanLen16 - drawWidth;
-            }
-        }
-    else if ( displayMode == EColor16MU )
-        {
-        TInt srcScanLen32 = CFbsBitmap::ScanLineLength(
-            srcSize.iWidth, displayMode ) /4;
-        TInt trgScanLen32 = CFbsBitmap::ScanLineLength(
-            trgBitmapSize.iWidth, displayMode ) /4;
-
-        TUint32* trgAddress32 = reinterpret_cast< TUint32* >( trgAddress );
-
-        TInt yPos = yPosOffset;
-        // skip left and top margins in the beginning
-        trgAddress32 += trgScanLen32 * drawRect.iTl.iY + drawRect.iTl.iX;
-
-        for ( TInt y = 0; y < drawHeight; y++ )
-            {
-            TUint32* srcAddress32 = reinterpret_cast< TUint32* >( srcAddress ) +
-                ( srcScanLen32 * ( yPos >> 8 ) );
-
-            TInt xPos = xPosOffset;
-            for ( TInt x = 0; x < drawWidth; x++ )
-                {
-                *( trgAddress32++ ) = srcAddress32[xPos >> 8];
-                xPos += xSkip;
-                }
-
-            yPos += ySkip;
-
-            trgAddress32 += trgScanLen32 - drawWidth;
-            }
-        }
-    else
-        {
-        User::Leave( KErrUnknown );
-        }
-
-    CleanupStack::PopAndDestroy(); // fbsheaplock
-
-    if ( srcTemporary )
-        {
-        CleanupStack::PopAndDestroy(); // realSource
-        }
-    }
+    HBufC8* scanLine = HBufC8::NewL( aSrcBitmap.ScanLineLength( 
+            size.iWidth, displayMode ) ); 
+    TPtr8 scanPtr( scanLine->Des() );                                                   
+    TPoint pp;                                                                          
+    for( pp.iY = 0; pp.iY < size.iHeight; ++pp.iY )                                    
+        {                                                                               
+        aSrcBitmap.GetScanLine( scanPtr, pp, size.iWidth, displayMode );                 
+        aTrgBitmap.SetScanLine( scanPtr, pp.iY );                                     
+        }                                                                               
+    delete scanLine;                  
+    }  
 
 // ---------------------------------------------------------------------------
 // CWmImageConverter::Finished
@@ -1235,13 +705,47 @@
     }
 
 // ---------------------------------------------------------------------------
-// CWmImageConverter::IsProcessing
+// CWmImageConverter::UpdateImageSize
 // ---------------------------------------------------------------------------
 //
-TBool CWmImageConverter::IsProcessing()
+void CWmImageConverter::UpdateImageSize( 
+        const TSize& aSize,
+        const TDesC& aIconStr, 
+        CFbsBitmap& aBitmap, 
+        CFbsBitmap& aMask )
     {
-    return ( ( ( iState != EIdle && iState != EFailed ) ||
-            IsActive() ) ? ETrue : EFalse );
+    if ( aIconStr.Length() && iSize != aSize )
+        {
+        TAknsItemID skinItemId;
+        skinItemId.iMajor = 0;
+        skinItemId.iMinor = 0;
+        TInt bitmapId( KErrNotFound );
+        TInt maskId( KErrNotFound );
+        TUid appUid;
+        iFilename = KNullDesC;
+        iSize = aSize;
+        
+        if ( ResolveSkinIdAndMifId( 
+                aIconStr, skinItemId, bitmapId, maskId, iFilename ) )
+            {
+            AknIconUtils::SetSize( &aBitmap, iSize );
+            AknIconUtils::SetSize( &aMask, iSize );
+            }
+        else if ( ResolveUid( aIconStr, appUid ) )
+            {
+            if ( appUid.iUid >= KWidgetUidLowerBound &&
+                    appUid.iUid < KWidgetUidUpperBound  )
+                {
+                //WRT. No resize needed here
+                return;
+                }
+            else if ( appUid.iUid != KNullUid.iUid )
+                {
+                AknIconUtils::SetSize( &aBitmap, iSize );
+                AknIconUtils::SetSize( &aMask, iSize );
+                }            
+            }
+        }
     }
 
 // End of file
--- a/idlehomescreen/widgetmanager/src/wmlistbox.cpp	Wed Apr 14 15:47:59 2010 +0300
+++ b/idlehomescreen/widgetmanager/src/wmlistbox.cpp	Tue Apr 27 16:26:12 2010 +0300
@@ -146,28 +146,6 @@
 	}
 
 // ---------------------------------------------------------
-// CWmListItemDrawer::ResizeDefaultBitmaps
-// ---------------------------------------------------------
-//
-void CWmListItemDrawer::ResizeDefaultBitmaps()
-    {
-	TAknWindowLineLayout logoPane = 
-	          AknLayoutScalable_Apps::listrow_wgtman_pane_g1().LayoutLine();
-
-    TAknLayoutRect layoutRect;
-    TRect rect = TRect( ItemCellSize() );
-    layoutRect.LayoutRect( rect, logoPane );
-    
-    // RESIZE DEFAULT LOGO BITMAPS ACCORDING TO LAYOUT
-    TSize size = layoutRect.Rect().Size();
-    AknIconUtils::SetSize( 
-        iDefaultLogoImage, size, EAspectRatioPreserved );
-    AknIconUtils::SetSize( 
-        iDefaultLogoImageMask, size, EAspectRatioPreserved );
-    }
-	
-
-// ---------------------------------------------------------
 // CWmListItemDrawer::UpdateItemHeight
 // ---------------------------------------------------------
 //
@@ -182,7 +160,7 @@
         ::listrow_wgtman_pane().LayoutLine();
     TAknLayoutRect listRowPaneRect;
     listRowPaneRect.LayoutRect( listPaneRect.Rect(), listRowPane );
-    iListBox->View()->SetItemHeight( listRowPaneRect.Rect().Height() );
+    TRAP_IGNORE( iListBox->SetItemHeightL( listRowPaneRect.Rect().Height() ); );
     iListBox->View()->ItemDrawer()->SetItemCellSize( listRowPaneRect.Rect().Size() );
     }
 
@@ -221,21 +199,38 @@
                                   KAknsIIDQsnFrList,
                                   KAknsIIDQsnFrListCenter );
         }
-    
     // DRAW LOGO
     CFbsBitmap* bitmap = const_cast<CFbsBitmap*>(wData.LogoImage());
     CFbsBitmap* mask = const_cast<CFbsBitmap*>(wData.LogoImageMask());
     TAknLayoutRect logoLayout;
     logoLayout.LayoutRect( itemRect,
              AknLayoutScalable_Apps::listrow_wgtman_pane_g1().LayoutLine() );
-
-    if ( !bitmap && !wData.IsPrepairingLogo() )
+    if ( ( !bitmap || !mask ) && iDefaultLogoImage && iDefaultLogoImageMask )
         {
-        logoLayout.DrawImage( gc, iDefaultLogoImage, iDefaultLogoImageMask );
+        // real logo missing use default
+        TSize size = logoLayout.Rect().Size();
+        if ( iDefaultLogoImage->SizeInPixels() != size )
+            {
+            // Resize default icons only when they are really needed
+            AknIconUtils::SetSize( 
+                iDefaultLogoImage, size, EAspectRatioPreserved );
+            AknIconUtils::SetSize( 
+                iDefaultLogoImageMask, size, EAspectRatioPreserved );
+            }
+    
+        gc.DrawBitmapMasked( logoLayout.Rect(), 
+                iDefaultLogoImage, 
+                TRect(TPoint(0, 0), iDefaultLogoImage->SizeInPixels()), 
+                iDefaultLogoImageMask, 
+                EFalse );
         }
     else if( bitmap && mask )
         {
-        logoLayout.DrawImage( gc, bitmap, mask );
+        gc.DrawBitmapMasked( logoLayout.Rect(), 
+                bitmap, 
+                TRect(TPoint(0, 0), bitmap->SizeInPixels()), 
+                mask, 
+                ETrue );
         }
 
     // DRAW NAME
@@ -302,15 +297,6 @@
     }
 
 // ---------------------------------------------------------
-// CWmListItemDrawer::HandleSkinChanged
-// ---------------------------------------------------------
-//
-void CWmListItemDrawer::HandleSkinChanged()
-    {
-    ResizeDefaultBitmaps();
-    }
-
-// ---------------------------------------------------------
 // CWmListBox::NewL
 // ---------------------------------------------------------
 //
@@ -491,21 +477,7 @@
 	iLogoSize = LogoSize();
     for ( TInt i=0; i<iVisibleWidgetArray.Count(); i++)
         {
-        iVisibleWidgetArray[i]->ReCreateLogo( iLogoSize );
-        }
-    }
-
-// ---------------------------------------------------------
-// CWmListBox::HandleSkinChanged
-// ---------------------------------------------------------
-//
-void CWmListBox::HandleSkinChanged()
-    {
-    CWmListItemDrawer* itemDrawer = 
-                        static_cast <CWmListItemDrawer*>( iItemDrawer );
-    if ( itemDrawer )
-        {
-        itemDrawer->HandleSkinChanged();
+        iVisibleWidgetArray[i]->UpdateLogo( iLogoSize, EFalse );
         }
     }
 
@@ -592,7 +564,6 @@
     if ( itemDrawer )
         {
         itemDrawer->UpdateItemHeight();
-        itemDrawer->ResizeDefaultBitmaps();
         }
     }
 
--- a/idlehomescreen/widgetmanager/src/wmmaincontainer.cpp	Wed Apr 14 15:47:59 2010 +0300
+++ b/idlehomescreen/widgetmanager/src/wmmaincontainer.cpp	Tue Apr 27 16:26:12 2010 +0300
@@ -485,7 +485,7 @@
             {
             // widget list -> left -> ovi button (landscape mirrored)
             if ( aType == EEventKey )
-                SetFocusToPortalButton( 0 );
+                SetFocusToPortalButton( OperatorButtonHigherPriority ( 0 ) );
             keyResponse = EKeyWasConsumed;
             }
         }
@@ -532,8 +532,19 @@
             keyResponse = EKeyWasConsumed;
             }
         else if ( !iLandscape && iMirrored &&
+                aKeyEvent.iScanCode == EStdKeyRightArrow &&
+                iConfiguration->PortalButtonCount() > 1 &&
+                iConfiguration->PortalButtonsMirrored() )
+            {
+            // right portal -> left -> left portal (portrait mirrored)
+            if ( aType == EEventKey )
+                SetFocusToPortalButton( 1 );
+            keyResponse = EKeyWasConsumed;
+            }      
+        else if ( !iLandscape && iMirrored &&
                 aKeyEvent.iScanCode == EStdKeyLeftArrow &&
-                iConfiguration->PortalButtonCount() > 1 )
+                iConfiguration->PortalButtonCount() > 1 &&
+                !iConfiguration->PortalButtonsMirrored() )
             {
             // right portal -> left -> left portal (portrait mirrored)
             if ( aType == EEventKey )
@@ -621,8 +632,19 @@
             keyResponse = EKeyWasConsumed;
             }
         else if ( !iLandscape && iMirrored &&
+                aKeyEvent.iScanCode == EStdKeyLeftArrow &&
+                iConfiguration->PortalButtonCount() > 1 && 
+                iConfiguration->PortalButtonsMirrored() )
+            {
+            // left portal -> right -> right portal (portrait mirrored)
+            if ( aType == EEventKey )
+                SetFocusToPortalButton( 0 );
+            keyResponse = EKeyWasConsumed;
+            }
+        else if ( !iLandscape && iMirrored &&
                 aKeyEvent.iScanCode == EStdKeyRightArrow &&
-                iConfiguration->PortalButtonCount() > 1 )
+                iConfiguration->PortalButtonCount() > 1 && 
+                !iConfiguration->PortalButtonsMirrored() )
             {
             // left portal -> right -> right portal (portrait mirrored)
             if ( aType == EEventKey )
@@ -929,6 +951,17 @@
 //
 void CWmMainContainer::StartLoadingWidgetsL()
     {
+    if ( iFindbox && iFindPaneIsVisible )
+        {
+        iFindbox->ResetL();
+        iFindbox->SetSearchTextL( KNullDesC );
+        CAknFilteredTextListBoxModel* m = 
+                static_cast <CAknFilteredTextListBoxModel*> ( iWidgetsList->Model() );
+        if ( m && m->Filter() )
+            {
+            m->Filter()->ResetFilteringL();
+            }
+        }
     if ( !iWidgetLoader )
         {
         // create the widget loader AO
@@ -955,11 +988,6 @@
         // notify widgetlist
         iWidgetsList->HandleLayoutChanged();
         }
-    else if ( KAknsMessageSkinChange == aType )
-        {
-        // notify widgetlist , colored add icon need to be updated 
-        iWidgetsList->HandleSkinChanged();
-        }
 	}
 
 
@@ -1435,12 +1463,7 @@
     {
     CWmWidgetData* data = iWidgetsList->WidgetData();
     if ( data )
-        {
-        const CFbsBitmap* logo = ( data->LogoImage() ) ? 
-                    data->LogoImage() : iWidgetsList->DefaultLogo();
-        const CFbsBitmap* mask = ( data->LogoImageMask() ) ? 
-                    data->LogoImageMask() : iWidgetsList->DefaultMask();
-        
+        {       
         // Find out if HS is full
         TBool hsFull = ETrue;
         MHsContentController& controller = iWmPlugin.ContentController();
@@ -1455,8 +1478,11 @@
                 data->Name(), 
                 data->Description(), 
                 !hsFull,
-                logo, mask );
-
+                data->HsContentInfo().IconPath(),
+                *iWidgetsList->DefaultLogo(),
+                *iWidgetsList->DefaultMask()
+                );
+        
         if ( dlg && dlg->ExecuteLD() == ECbaAddToHs )
             {
             AddWidgetToHomeScreenL();
--- a/idlehomescreen/widgetmanager/src/wmportalbutton.cpp	Wed Apr 14 15:47:59 2010 +0300
+++ b/idlehomescreen/widgetmanager/src/wmportalbutton.cpp	Tue Apr 27 16:26:12 2010 +0300
@@ -35,6 +35,7 @@
 #include <browserlauncher.h>
 #include <centralrepository.h>
 
+#include "wmimageconverter.h"
 #include "wmportalbutton.h"
 #include "wmcommon.h"
 #include "wmplugin.h"
@@ -139,10 +140,13 @@
             KAknsIIDQsnFrButtonCenterInactive );
     
     // start image converter for the icon
-    iImageConverter = CWmImageConverter::NewL( this );
+    iImageConverter = CWmImageConverter::NewL();
     TSize iconsize( LayoutIconSize() );
     iImageConverter->HandleIconString(
-            iconsize.iWidth, iconsize.iHeight, aIcon );
+            iconsize, 
+            aIcon, 
+            iButtonIcon, 
+            iButtonIconMask );
     // observe our own press events
     SetObserver( this );
     
@@ -351,11 +355,12 @@
     // resize icon
     if ( iButtonIcon && iButtonIconMask )
         {
-        TSize size = LayoutIconSize();
-        AknIconUtils::SetSize( 
-            iButtonIcon, size, EAspectRatioPreserved );
-        AknIconUtils::SetSize( 
-            iButtonIconMask, size, EAspectRatioPreserved );
+        iImageConverter->UpdateImageSize(
+            LayoutIconSize(),
+            iWmMainContainer->Configuration().PortalButtonIcon(
+                    iPortalButtonIndex ),
+            *iButtonIcon, 
+            *iButtonIconMask );
         }
         
     TBool landscape = Layout_Meta_Data::IsLandscapeOrientation();
@@ -364,43 +369,6 @@
     }
 
 // ---------------------------------------------------------
-// CWmPortalButton::NotifyCompletion
-// ---------------------------------------------------------
-//
-void CWmPortalButton::NotifyCompletion( TInt aError )
-    {
-    if ( KErrNone == aError )
-        {
-        // take ownership of icon
-        delete iButtonIcon;
-        iButtonIcon = NULL;
-        iButtonIcon = iImageConverter->Bitmap();
-        delete iButtonIconMask;
-        iButtonIconMask = NULL;
-        iButtonIconMask = iImageConverter->Mask();
-        if ( iButtonIcon && iButtonIconMask )
-            {
-            TSize size = LayoutIconSize();
-            if ( iButtonIcon->SizeInPixels() != size )
-                {
-                AknIconUtils::SetSize( 
-                    iButtonIcon, size, EAspectRatioPreserved );
-                }
-            if ( iButtonIconMask->SizeInPixels() != size )
-                {
-                AknIconUtils::SetSize( 
-                    iButtonIconMask, size, EAspectRatioPreserved );
-                }
-            DrawDeferred();
-            }
-        }
-    else
-        {
-        // no image available. Do nothing.
-        }
-    }
-
-// ---------------------------------------------------------
 // CWmPortalButton::Draw
 // ---------------------------------------------------------
 //
@@ -468,7 +436,13 @@
                 imageLayout.LayoutRect( rect, AknLayoutScalable_Apps
                         ::wgtman_btn_pane_g1( variety ).LayoutLine() );
                 }
-            imageLayout.DrawImage( gc, iButtonIcon, iButtonIconMask );
+            
+            gc.DrawBitmapMasked(
+                imageLayout.Rect(),
+                iButtonIcon,
+                TRect(TPoint( 0, 0 ), iButtonIcon->SizeInPixels() ),
+                iButtonIconMask,
+                EFalse );
             }
         
         // draw text if portrait        
--- a/idlehomescreen/widgetmanager/src/wmwidgetdata.cpp	Wed Apr 14 15:47:59 2010 +0300
+++ b/idlehomescreen/widgetmanager/src/wmwidgetdata.cpp	Tue Apr 27 16:26:12 2010 +0300
@@ -36,6 +36,7 @@
 #include "wmpersistentwidgetorder.h"
 #include "wmresourceloader.h"
 #include "wmcommon.h"
+#include "wmimageconverter.h"
 
 // ---------------------------------------------------------
 // CWmWidgetData::NewL
@@ -87,32 +88,26 @@
     iPublisherUid = KNullUid;
     iLogoSize = aLogoSize;
     iAnimationTimer = NULL;
-    iTimeoutTimer = NULL;
     iAnimationIndex = 0;
     iAsyncUninstalling = EFalse;
-    iFireLogoChanged = EFalse;
     iMdcaPoint = NULL;
-    iWidgetName = NULL;
     }
 
 // ---------------------------------------------------------
 // CWmWidgetData::ConstructL
 // ---------------------------------------------------------
 //
-void CWmWidgetData::ConstructL( 
+void CWmWidgetData::ConstructL(         
         CHsContentInfo* aHsContentInfo,
         RWidgetRegistryClientSession* aRegistryClientSession )
     {
     // start decoding the icon
-    iImageConverter = CWmImageConverter::NewL( this );
-    iWait = new (ELeave) CActiveSchedulerWait();
+	iImageConverter = CWmImageConverter::NewL();
     iAnimationTimer = CPeriodic::NewL( CActive::EPriorityStandard );
-    iTimeoutTimer = CPeriodic::NewL( CActive::EPriorityStandard );
 
     InitL( aHsContentInfo, aRegistryClientSession );
     
     // start logo handling
-    iImageConverter->SetLogoSize( iLogoSize );
     HandleIconString( HsContentInfo().IconPath() );
     }
 
@@ -154,19 +149,6 @@
 //
 CWmWidgetData::~CWmWidgetData()
     {
-    if ( iTimeoutTimer && 
-        iTimeoutTimer->IsActive() )
-        {
-        iTimeoutTimer->Cancel();
-        }
-    delete iTimeoutTimer;
-
-    delete iWidgetName;
-    if ( iWait && iWait->IsStarted() )
-        {
-        iWait->AsyncStop();
-        }
-    delete iWait;
     SetObserver( NULL );
     DestroyAnimData();
     delete iAnimationTimer;
@@ -243,37 +225,6 @@
     }
 
 // ---------------------------------------------------------
-// CWmWidgetData::NotifyCompletion
-// ---------------------------------------------------------
-//
-void CWmWidgetData::NotifyCompletion( TInt aError )
-    {
-    delete iLogoImage;
-    iLogoImage = NULL;
-    delete iLogoImageMask;
-    iLogoImageMask = NULL;
-    if ( KErrNone != aError )
-        {
-        // no image available. Do nothing.
-        }
-    else
-        {
-        iLogoImage = iImageConverter->Bitmap();
-        iLogoImageMask = iImageConverter->Mask();
-
-        if ( iWait && iWait->IsStarted() )
-            {
-            iWait->AsyncStop();
-            }
-        if ( iFireLogoChanged ) 
-            {
-            iFireLogoChanged = EFalse;
-            FireDataChanged();
-            }
-        }
-    }
-
-// ---------------------------------------------------------
 // CWmWidgetData::HandleIconString
 // ---------------------------------------------------------
 //
@@ -305,27 +256,17 @@
         {
         size = iLogoSize;
         }
-    TInt err = iImageConverter->HandleIconString( 
-            size.iWidth, size.iHeight, *iconStr );
+    
+    iImageConverter->HandleIconString( 
+            size, 
+            *iconStr, 
+            iLogoImage, 
+            iLogoImageMask );
     
     delete iconStr;
     iconStr = NULL;
     
-    // handle result
-    if ( KErrNone == err && iWait &&
-        IsPrepairingLogo() && iTimeoutTimer )
-        {
-        iTimeoutTimer->Cancel();
-        const TInt tickInterval = 200000;        
-        iTimeoutTimer->Start(
-                tickInterval,tickInterval,TCallBack(TimeoutTick, this));
-        iWait->Start();
-        }
-    else if ( KErrNone != err && iFireLogoChanged )
-        {
-        FireDataChanged(); // draw default icon
-        iFireLogoChanged = EFalse;
-        }
+    FireDataChanged(); // draw default icon
     }
 
 // ---------------------------------------------------------
@@ -447,21 +388,25 @@
 // CWmWidgetData::ReCreateLogo
 // ---------------------------------------------------------
 //
-void CWmWidgetData::ReCreateLogo( const TSize& aSize )
-    {    
-    delete iLogoImage;
-    iLogoImage = NULL;
-    delete iLogoImageMask;
-    iLogoImageMask = NULL;
-    
-    if ( iWait && iWait->IsStarted() )
+void CWmWidgetData::UpdateLogo( const TSize& aSize, TBool aReCreateLogo )
+    {        
+    iLogoSize = aSize;
+    if ( aReCreateLogo )
         {
-        iWait->AsyncStop();
+        delete iLogoImage;
+        iLogoImage = NULL;
+        delete iLogoImageMask;
+        iLogoImageMask = NULL;
+        HandleIconString( HsContentInfo().IconPath() );
         }
-
-    iFireLogoChanged = ETrue;
-    iLogoSize = aSize;
-    HandleIconString( HsContentInfo().IconPath() );
+    else
+        {
+        iImageConverter->UpdateImageSize(
+                iLogoSize,
+                HsContentInfo().IconPath(),
+                *iLogoImage,
+                *iLogoImageMask );
+        }
     }
 
 // ---------------------------------------------------------
@@ -500,27 +445,13 @@
         {
         // re-convert image
         // change event will be fired later when bitmap is ready
-        ReCreateLogo( iLogoSize );
+        UpdateLogo( iLogoSize, ETrue );
         }
 
     return !( sameAppearance && sameLogo );
     }
 
 // ---------------------------------------------------------
-// CWmWidgetData::IsPrepairingLogo
-// ---------------------------------------------------------
-//
-TBool CWmWidgetData::IsPrepairingLogo()
-    {
-    TBool prepairing( EFalse );            
-    if ( !iLogoImage )
-        {
-        prepairing = iImageConverter->IsProcessing();
-        }
-    return prepairing;
-    }
-
-// ---------------------------------------------------------
 // CWmWidgetData::VisualizeUninstall
 // ---------------------------------------------------------
 //
@@ -606,21 +537,6 @@
     }
 
 // ---------------------------------------------------------
-// CWmWidgetData::TimeoutTick
-// ---------------------------------------------------------
-//
-TInt CWmWidgetData::TimeoutTick( TAny* aPtr )
-    {
-    CWmWidgetData* self = static_cast< CWmWidgetData* >( aPtr );
-    self->iTimeoutTimer->Cancel();
-    if ( self->iWait && self->iWait->IsStarted() )
-        {
-        self->iWait->AsyncStop();
-        }
-    return 1;
-    }
-
-// ---------------------------------------------------------
 // CWmWidgetData::AnimationBitmap
 // ---------------------------------------------------------
 //
--- a/idlehomescreen/widgetmanager/tsrc/wmunittest/conf/ui_wmunittest.cfg	Wed Apr 14 15:47:59 2010 +0300
+++ b/idlehomescreen/widgetmanager/tsrc/wmunittest/conf/ui_wmunittest.cfg	Tue Apr 27 16:26:12 2010 +0300
@@ -603,7 +603,6 @@
 create wmunittest test
 test HeapSet
 test ImageConverterCreate
-test ImageConverterConversionMethod EUnrecognized
 test ImageConverterDelete
 test HeapCheck
 delete test
@@ -615,36 +614,21 @@
 create wmunittest test
 test HeapSet
 test ImageConverterCreate
-test ImageConverterConvert "foo bar"
-test ImageConverterWaitResult FAIL
-test ImageConverterConvert "*************"
-test ImageConverterWaitResult FAIL
-test ImageConverterConvert "uid skin mif logo icon jpg jpeg icon"
-test ImageConverterWaitResult FAIL
-test ImageConverterConvert "girl.jpg"
-test ImageConverterWaitResult FAIL
-test ImageConverterConvert "dirty_hack.exe"
-test ImageConverterWaitResult FAIL
-test ImageConverterConvert "c:/testframework/wmunittest/wmlogo/logo.jpg"
-test ImageConverterWaitResult FAIL
-test ImageConverterConvert "skin[0x10005a26 0x1000]"
-test ImageConverterWaitResult FAIL
-test ImageConverterConvert "skin(0x10005a26)"
-test ImageConverterWaitResult FAIL
-test ImageConverterConvert "mif(c:\testframework\wmunittest\wmlogo\logo.mif)"
-test ImageConverterWaitResult FAIL
-test ImageConverterConvert "mif(c:\testframework\wmunittest\wmlogo\logo.mif XXX YYY)"
-test ImageConverterWaitResult FAIL
-test ImageConverterConvert "mif  ( 16384 16385)"
-test ImageConverterWaitResult FAIL
-test ImageConverterConvert "skin( 0x100056c6 0x86 ):mif ( c:\testframework\wmunittest\wmlogo\logo.mif )"
-test ImageConverterWaitResult FAIL
-test ImageConverterConvert "    uid(0x10005901)"
-test ImageConverterWaitResult FAIL
-test ImageConverterConvert "uidaan(0x10005901)"
-test ImageConverterWaitResult FAIL
-test ImageConverterConvert "uid (%%%)"
-test ImageConverterWaitResult FAIL
+test ImageConverterConvert "foo bar" FAIL
+test ImageConverterConvert "*************" FAIL
+test ImageConverterConvert "uid skin mif logo icon jpg jpeg icon" FAIL
+test ImageConverterConvert "girl.jpg" FAIL
+test ImageConverterConvert "dirty_hack.exe" FAIL
+test ImageConverterConvert "c:/testframework/wmunittest/wmlogo/logo.jpg" FAIL
+test ImageConverterConvert "skin[0x10005a26 0x1000]" FAIL
+test ImageConverterConvert "skin(0x10005a26)" FAIL
+test ImageConverterConvert "mif(c:\testframework\wmunittest\wmlogo\logo.mif)" FAIL
+test ImageConverterConvert "mif(c:\testframework\wmunittest\wmlogo\logo.mif XXX YYY)" FAIL
+test ImageConverterConvert "mif  ( 16384 16385)" FAIL
+test ImageConverterConvert "skin( 0x100056c6 0x86 ):mif ( c:\testframework\wmunittest\wmlogo\logo.mif )" FAIL
+test ImageConverterConvert "    uid(0x10005901)" FAIL
+test ImageConverterConvert "uidaan(0x10005901)" FAIL
+test ImageConverterConvert "uid (%%%)" FAIL
 test ImageConverterDelete
 test HeapCheck
 delete test
@@ -662,9 +646,7 @@
 create wmunittest test
 test HeapSet
 test ImageConverterCreate
-test ImageConverterConvert "skin(270501603 4145)"
-test ImageConverterWaitResult OK
-test ImageConverterConversionMethod ESkinIcon
+test ImageConverterConvert "skin(270501603 4145)" OK
 test ImageConverterDelete
 test HeapCheck
 delete test
@@ -676,9 +658,7 @@
 create wmunittest test
 test HeapSet
 test ImageConverterCreate
-test ImageConverterConvert "skin(0x101F86E3 0x100d)"
-test ImageConverterWaitResult OK
-test ImageConverterConversionMethod ESkinIcon
+test ImageConverterConvert "skin(0x101F86E3 0x100d)" OK
 test ImageConverterDelete
 test HeapCheck
 delete test
@@ -690,9 +670,7 @@
 create wmunittest test
 test HeapSet
 test ImageConverterCreate
-test ImageConverterConvert "skin ( 270501603 4145 ) "
-test ImageConverterWaitResult OK
-test ImageConverterConversionMethod ESkinIcon
+test ImageConverterConvert "skin ( 270501603 4145 ) " OK
 test ImageConverterDelete
 test HeapCheck
 delete test
@@ -705,8 +683,7 @@
 create wmunittest test
 test HeapSet
 test ImageConverterCreate
-test ImageConverterConvert "skin(0 0)"
-test ImageConverterWaitResult FAIL
+test ImageConverterConvert "skin(0 0)" FAIL
 test ImageConverterDelete
 test HeapCheck
 delete test
@@ -718,9 +695,7 @@
 create wmunittest test
 test HeapSet
 test ImageConverterCreate
-test ImageConverterConvert "skin(270501603 4145):mif(c:\testframework\wmunittest\wmlogo\logo.mif 16384 16385)"
-test ImageConverterWaitResult OK
-test ImageConverterConversionMethod ESkinAndMifIcon
+test ImageConverterConvert "skin(270501603 4145):mif(c:\testframework\wmunittest\wmlogo\logo.mif 16384 16385)" OK
 test ImageConverterDelete
 test HeapCheck
 delete test
@@ -732,9 +707,7 @@
 create wmunittest test
 test HeapSet
 test ImageConverterCreate
-test ImageConverterConvert "skin(0x101F86E3 0x1031):mif(c:\testframework\wmunittest\wmlogo\logo.mif 0x4000 0x4001)"
-test ImageConverterWaitResult OK
-test ImageConverterConversionMethod ESkinAndMifIcon
+test ImageConverterConvert "skin(0x101F86E3 0x1031):mif(c:\testframework\wmunittest\wmlogo\logo.mif 0x4000 0x4001)" OK
 test ImageConverterDelete
 test HeapCheck
 delete test
@@ -746,9 +719,7 @@
 create wmunittest test
 test HeapSet
 test ImageConverterCreate
-test ImageConverterConvert "skin (  0x101F86E3 0x1031  ) :mif ( c:\testframework\wmunittest\wmlogo\logo.mif   0x4000  0x4001 ) "
-test ImageConverterWaitResult OK
-test ImageConverterConversionMethod ESkinAndMifIcon
+test ImageConverterConvert "skin (  0x101F86E3 0x1031  ) :mif ( c:\testframework\wmunittest\wmlogo\logo.mif   0x4000  0x4001 ) " OK
 test ImageConverterDelete
 test HeapCheck
 delete test
@@ -760,9 +731,7 @@
 create wmunittest test
 test HeapSet
 test ImageConverterCreate
-test ImageConverterConvert "mif(c:\testframework\wmunittest\wmlogo\logo.mif 16384 16385)"
-test ImageConverterWaitResult OK
-test ImageConverterConversionMethod EMifIcon
+test ImageConverterConvert "mif(c:\testframework\wmunittest\wmlogo\logo.mif 16384 16385)" OK
 test ImageConverterDelete
 test HeapCheck
 delete test
@@ -774,9 +743,7 @@
 create wmunittest test
 test HeapSet
 test ImageConverterCreate
-test ImageConverterConvert "mif(c:\testframework\wmunittest\wmlogo\logo.mif 16384)"
-test ImageConverterWaitResult OK
-test ImageConverterConversionMethod EMifIcon
+test ImageConverterConvert "mif(c:\testframework\wmunittest\wmlogo\logo.mif 16384)" OK
 test ImageConverterDelete
 test HeapCheck
 delete test
@@ -788,9 +755,7 @@
 create wmunittest test
 test HeapSet
 test ImageConverterCreate
-test ImageConverterConvert "mif(c:\testframework\wmunittest\wmlogo\logo.mif 0x4000 0x4001)"
-test ImageConverterWaitResult OK
-test ImageConverterConversionMethod EMifIcon
+test ImageConverterConvert "mif(c:\testframework\wmunittest\wmlogo\logo.mif 0x4000 0x4001)" OK
 test ImageConverterDelete
 test HeapCheck
 delete test
@@ -802,9 +767,7 @@
 create wmunittest test
 test HeapSet
 test ImageConverterCreate
-test ImageConverterConvert "mif (  c:\testframework\wmunittest\wmlogo\logo.mif  16384  16385  ) "
-test ImageConverterWaitResult OK
-test ImageConverterConversionMethod EMifIcon
+test ImageConverterConvert "mif (  c:\testframework\wmunittest\wmlogo\logo.mif  16384  16385  ) " OK
 test ImageConverterDelete
 test HeapCheck
 delete test
@@ -817,8 +780,7 @@
 create wmunittest test
 test HeapSet
 test ImageConverterCreate
-test ImageConverterConvert "mif(c:\blabla.mif 16384 16385)"
-test ImageConverterWaitResult FAIL
+test ImageConverterConvert "mif(c:\blabla.mif 16384 16385)" FAIL
 test ImageConverterDelete
 test HeapCheck
 delete test
@@ -830,8 +792,7 @@
 create wmunittest test
 test HeapSet
 test ImageConverterCreate
-test ImageConverterConvert "mif(c:\testframework\wmunittest\wmlogo\logo.mif 1 2)"
-test ImageConverterWaitResult FAIL
+test ImageConverterConvert "mif(c:\testframework\wmunittest\wmlogo\logo.mif 1 2)" FAIL
 test ImageConverterDelete
 test HeapCheck
 delete test
@@ -843,9 +804,7 @@
 create wmunittest test
 test HeapSet
 test ImageConverterCreate
-test ImageConverterConvert "uid(268458241)"
-test ImageConverterWaitResult OK
-test ImageConverterConversionMethod EUidIcon
+test ImageConverterConvert "uid(268458241)" OK
 test ImageConverterDelete
 test HeapCheck
 delete test
@@ -857,9 +816,7 @@
 create wmunittest test
 test HeapSet
 test ImageConverterCreate
-test ImageConverterConvert "uid(0x10005901)"
-test ImageConverterWaitResult OK
-test ImageConverterConversionMethod EUidIcon
+test ImageConverterConvert "uid(0x10005901)" OK
 test ImageConverterDelete
 test HeapCheck
 delete test
@@ -871,9 +828,7 @@
 create wmunittest test
 test HeapSet
 test ImageConverterCreate
-test ImageConverterConvert "uid (  0x10005901  ) "
-test ImageConverterWaitResult OK
-test ImageConverterConversionMethod EUidIcon
+test ImageConverterConvert "uid (  0x10005901  ) " OK
 test ImageConverterDelete
 test HeapCheck
 delete test
@@ -885,8 +840,7 @@
 create wmunittest test
 test HeapSet
 test ImageConverterCreate
-test ImageConverterConvert "uid(0x0)"
-test ImageConverterWaitResult FAIL
+test ImageConverterConvert "uid(0x0)" FAIL
 test ImageConverterDelete
 test HeapCheck
 delete test
@@ -899,9 +853,7 @@
 test HeapSet
 test InstallWrtWidget "c:\testframework\wmunittest\wmlogo\test.wgz"
 test ImageConverterCreate
-test ImageConverterConvert "uid(0x2000DAD2)"
-test ImageConverterWaitResult OK
-test ImageConverterConversionMethod EUidIcon
+test ImageConverterConvert "uid(0x2000DAD2)" OK
 test ImageConverterDelete
 test UninstallWrtWidget "0x2000DAD2"
 test HeapCheck
@@ -914,9 +866,7 @@
 create wmunittest test
 test HeapSet
 test ImageConverterCreate
-test ImageConverterConvert "c:\testframework\wmunittest\wmlogo\logo.svg"
-test ImageConverterWaitResult OK
-test ImageConverterConversionMethod ESvgIcon
+test ImageConverterConvert "c:\testframework\wmunittest\wmlogo\logo.svg" OK
 test ImageConverterDelete
 test HeapCheck
 delete test
@@ -928,9 +878,7 @@
 create wmunittest test
 test HeapSet
 test ImageConverterCreate
-test ImageConverterConvert "c:\testframework\wmunittest\wmlogo\logocorrupt.svg"
-test ImageConverterWaitResult FAIL
-test ImageConverterConversionMethod ESvgIcon
+test ImageConverterConvert "c:\testframework\wmunittest\wmlogo\logocorrupt.svg" FAIL
 test ImageConverterDelete
 test HeapCheck
 delete test
@@ -942,9 +890,7 @@
 create wmunittest test
 test HeapSet
 test ImageConverterCreate
-test ImageConverterConvert "c:\testframework\wmunittest\wmlogo\logo.png"
-test ImageConverterWaitResult OK
-test ImageConverterConversionMethod EImageIcon
+test ImageConverterConvert "c:\testframework\wmunittest\wmlogo\logo.png" OK
 test ImageConverterDelete
 test HeapCheck
 delete test
@@ -956,8 +902,7 @@
 create wmunittest test
 test HeapSet
 test ImageConverterCreate
-test ImageConverterConvert "c:\testframework\wmunittest\wmlogo\logocorrupt.png"
-test ImageConverterWaitResult FAIL
+test ImageConverterConvert "c:\testframework\wmunittest\wmlogo\logocorrupt.png" FAIL
 test ImageConverterDelete
 test HeapCheck
 delete test
@@ -969,9 +914,7 @@
 create wmunittest test
 test HeapSet
 test ImageConverterCreate
-test ImageConverterConvert "c:\testframework\wmunittest\wmlogo\logo.jpg"
-test ImageConverterWaitResult OK
-test ImageConverterConversionMethod EImageIcon
+test ImageConverterConvert "c:\testframework\wmunittest\wmlogo\logo.jpg" OK
 test ImageConverterDelete
 test HeapCheck
 delete test
@@ -983,80 +926,12 @@
 create wmunittest test
 test HeapSet
 test ImageConverterCreate
-test ImageConverterConvert "c:\testframework\wmunittest\wmlogo\logocorrupt.jpg"
-test ImageConverterWaitResult FAIL
-test ImageConverterDelete
-test HeapCheck
-delete test
-[Endtest]
-
-
-
-// Tests image converter cancel when idle
-[Test]
-title Image converter cancel (idle)
-create wmunittest test
-test HeapSet
-test ImageConverterCreate
-test CancelConvert
-test ImageConverterDelete
-test HeapCheck
-delete test
-[Endtest]
-
-// Tests image converter cancel (mif conversion)
-[Test]
-title Image converter cancel (mif)
-create wmunittest test
-test HeapSet
-test ImageConverterCreate
-test ImageConverterConvert "mif(c:\testframework\wmunittest\wmlogo\logo.mif 16384 16385)"
-test CancelConvert
+test ImageConverterConvert "c:\testframework\wmunittest\wmlogo\logocorrupt.jpg" FAIL
 test ImageConverterDelete
 test HeapCheck
 delete test
 [Endtest]
 
-// Tests image converter cancel (uid conversion)
-[Test]
-title Image converter cancel (uid)
-create wmunittest test
-test HeapSet
-test ImageConverterCreate
-test ImageConverterConvert "uid(268458241)"
-test CancelConvert
-test ImageConverterDelete
-test HeapCheck
-delete test
-[Endtest]
-
-// Tests image converter cancel (svg conversion)
-[Test]
-title Image converter cancel (svg)
-create wmunittest test
-test HeapSet
-test ImageConverterCreate
-test ImageConverterConvert "c:\testframework\wmunittest\wmlogo\logo.svg"
-test CancelConvert
-test ImageConverterDelete
-test HeapCheck
-delete test
-[Endtest]
-
-// Tests image converter cancel (jpg conversion)
-[Test]
-title Image converter cancel (jpg)
-create wmunittest test
-test HeapSet
-test ImageConverterCreate
-test ImageConverterConvert "c:\testframework\wmunittest\wmlogo\logo.jpg"
-test CancelConvert
-test ImageConverterDelete
-test HeapCheck
-delete test
-[Endtest]
-
-
 //-------------------------------------------------------------------------------
 // Misc Test cases
 //-------------------------------------------------------------------------------
--- a/idlehomescreen/widgetmanager/tsrc/wmunittest/inc/wmunittest.h	Wed Apr 14 15:47:59 2010 +0300
+++ b/idlehomescreen/widgetmanager/tsrc/wmunittest/inc/wmunittest.h	Tue Apr 27 16:26:12 2010 +0300
@@ -26,7 +26,6 @@
 #include <s32file.h> // RFs
 
 #include "wmwidgetorderdata.h"
-#include "wmimageconverter.h" // MConverterObserver
 #include <hscontentcontroller.h>
 #include "wminstaller.h"
 
@@ -67,7 +66,6 @@
 *  test class for STIF Test Framework TestScripter.
 */
 NONSHARABLE_CLASS(CWmUnitTest) : public CScriptBase,
-                                 public MConverterObserver,
                                  public MHsContentController
     {
     public: // Constructors and destructor
@@ -89,16 +87,13 @@
         /** From CScriptBase Runs a script line. */
         virtual TInt RunMethodL( CStifItemParser& aItem );
     
-    public: // from MConverterObserver
-
-        virtual void NotifyCompletion( TInt aError );
-
     public: // from MHsContentController
 
         
         TInt WidgetListL( CHsContentInfoArray& aArray );
         TInt WidgetListL( CHsContentInfo& aInfo, CHsContentInfoArray& aArray );
         TInt ViewListL( CHsContentInfoArray& aArray );
+        TInt ViewListL( CHsContentInfo& aInfo, CHsContentInfoArray& aArray );
         TInt AppListL( CHsContentInfoArray& aArray );
         TInt AddWidgetL( CHsContentInfo& aInfo );
         TInt RemoveWidgetL( CHsContentInfo& aInfo );
@@ -165,12 +160,6 @@
         TInt ImageConverterDeleteL( CStifItemParser& aItem );
         // calls image converter's main conversion method
         TInt ImageConverterConvertL( CStifItemParser& aItem );
-        // checks image converter callback and checks its result
-        TInt ImageConverterWaitResultL( CStifItemParser& aItem );
-        // gets and checks the conversion method from image converter
-        TInt ImageConverterConversionMethodL( CStifItemParser& aItem );
-        // cancel ongoing convert
-        TInt CancelConvertL( CStifItemParser& aItem );
 
         // TESTING UNISTALL
         TInt UninstallL( CStifItemParser& aItem );
--- a/idlehomescreen/widgetmanager/tsrc/wmunittest/src/wmunittest_all.cpp	Wed Apr 14 15:47:59 2010 +0300
+++ b/idlehomescreen/widgetmanager/tsrc/wmunittest/src/wmunittest_all.cpp	Tue Apr 27 16:26:12 2010 +0300
@@ -75,9 +75,6 @@
         ENTRY( "ImageConverterCreate", CWmUnitTest::ImageConverterCreateL ),
         ENTRY( "ImageConverterDelete", CWmUnitTest::ImageConverterDeleteL ),
         ENTRY( "ImageConverterConvert", CWmUnitTest::ImageConverterConvertL ),
-        ENTRY( "ImageConverterWaitResult", CWmUnitTest::ImageConverterWaitResultL ),
-        ENTRY( "ImageConverterConversionMethod", CWmUnitTest::ImageConverterConversionMethodL ),
-        ENTRY( "CancelConvert", CWmUnitTest::CancelConvertL ),
         
         // uninstall
         ENTRY( "Uninstall", CWmUnitTest::UninstallL ),
--- a/idlehomescreen/widgetmanager/tsrc/wmunittest/src/wmunittest_converter.cpp	Wed Apr 14 15:47:59 2010 +0300
+++ b/idlehomescreen/widgetmanager/tsrc/wmunittest/src/wmunittest_converter.cpp	Tue Apr 27 16:26:12 2010 +0300
@@ -36,7 +36,7 @@
     if ( iImageConverter != 0 ) User::Leave( KErrArgument );
     TInt ret = KErrNone;
     _CLEANUPCHECK_BEGIN
-    iImageConverter = CWmImageConverter::NewL( this );
+    iImageConverter = CWmImageConverter::NewL();
     _CLEANUPCHECK_END
     _RETURN("ImageConverterCreateL End", ret);
     }
@@ -64,101 +64,24 @@
     TInt ret = KErrNone;
     iConversionReady = EFalse;
     TPtrC inputStr;
-
+    
     aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing );
     User::LeaveIfError( aItem.GetNextString( inputStr ) );
     if ( inputStr.Length() == 0 ) User::Leave( KErrArgument );
 
-    TInt err = iImageConverter->HandleIconString( 40, 40, inputStr );
-    if ( err != KErrNone )
+    TInt expectedResult;
+    User::LeaveIfError( aItem.GetNextInt( expectedResult ) ); 
+    
+    CFbsBitmap* bitmap = NULL;
+    CFbsBitmap* mask = NULL;
+    TInt err = iImageConverter->HandleIconString( 
+            TSize (40, 40), inputStr, bitmap, mask );
+    if ( err != KErrNone && expectedResult == -1 )
         {
-        _LOG("ImageConverterConvertL:HandleIconString returns Error!!!");
-        iConversionReady = ETrue;
-        iConversionError = err;
+        err = KErrNone;
         }
 
     _RETURN("ImageConverterConvertL End", ret );
     }
 
-// -----------------------------------------------------------------------------
-// CWmUnitTest::ImageConverterWaitResultL
-// -----------------------------------------------------------------------------
-//
-TInt CWmUnitTest::ImageConverterWaitResultL( CStifItemParser& aItem )
-    {
-    if ( iImageConverter == 0 ) User::Leave( KErrArgument );
-    TInt ret = KErrNone;
-    TInt expectedResult;
-
-    User::LeaveIfError( aItem.GetNextInt( expectedResult ) );    
-
-    iWaiting = EFalse;
-    if ( !iConversionReady )
-        {
-        iWaiting = ETrue;
-        CActiveScheduler::Start();
-        iWaiting = EFalse;
-        }
-
-    // check conversion error
-    if ( expectedResult == KErrNone && iConversionError != KErrNone )
-        {
-        _LOG("ImageConverterWaitResultL: expected ok, returns error");
-        ret = iConversionError;
-        }
-    else if ( expectedResult != KErrNone && iConversionError == KErrNone )
-        {
-        _LOG("ImageConverterWaitResultL: expected error, returns ok");
-        ret = KErrGeneral;
-        }
-
-    _RETURN("ImageConverterWaitResultL End", ret);
-    }
-
-// -----------------------------------------------------------------------------
-// CWmUnitTest::NotifyCompletion
-// -----------------------------------------------------------------------------
-//
-void CWmUnitTest::NotifyCompletion( TInt aError )
-    {
-    if ( !iConversionReady )
-        {
-        iConversionReady = ETrue;
-        iConversionError = aError;
-        if ( iWaiting )
-            {
-            CActiveScheduler::Stop();
-            }
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CWmUnitTest::ImageConverterConversionMethodL
-// -----------------------------------------------------------------------------
-//
-TInt CWmUnitTest::ImageConverterConversionMethodL( CStifItemParser& aItem )
-    {
-    if ( iImageConverter == 0 ) User::Leave( KErrArgument );
-    TInt ret = KErrNone;
-    TInt conversionMethod;
-
-    User::LeaveIfError( aItem.GetNextInt( conversionMethod ) );    
-
-    // check conversion method
-    if ( conversionMethod != iImageConverter->ConversionMethod() )
-        ret = KErrGeneral;
-
-    _RETURN("ImageConverterConversionMethodL End", ret);
-    }
-
-// -----------------------------------------------------------------------------
-// CWmUnitTest::CancelConvertL
-// -----------------------------------------------------------------------------
-//
-TInt CWmUnitTest::CancelConvertL( CStifItemParser& /*aItem*/ )
-    {
-    if ( iImageConverter == 0 ) User::Leave( KErrArgument );
-    iImageConverter->Cancel();
-    _RETURN("CancelConvertL End", KErrNone);
-    }
 // End of File
--- a/idlehomescreen/widgetmanager/tsrc/wmunittest/src/wmunittest_plugin.cpp	Wed Apr 14 15:47:59 2010 +0300
+++ b/idlehomescreen/widgetmanager/tsrc/wmunittest/src/wmunittest_plugin.cpp	Tue Apr 27 16:26:12 2010 +0300
@@ -135,6 +135,11 @@
     return KErrNone;
     }
 
+TInt CWmUnitTest::ViewListL( CHsContentInfo& aInfo, CHsContentInfoArray& aArray )
+    {
+    return KErrNone;
+    }
+
 TInt CWmUnitTest::AppListL( CHsContentInfoArray& /*aArray*/ )
     {
     return KErrNone;
--- a/idlehomescreen/xmluirendering/uiengine/inc/xneditor.h	Wed Apr 14 15:47:59 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/inc/xneditor.h	Tue Apr 27 16:26:12 2010 +0300
@@ -204,7 +204,9 @@
     TInt WidgetListL( CHsContentInfo& aInfo, CHsContentInfoArray& aArray );
 
     TInt ViewListL( CHsContentInfoArray& aArray );
-    
+
+    TInt ViewListL( CHsContentInfo& aInfo, CHsContentInfoArray& aArray );
+
     TInt AppListL( CHsContentInfoArray& aArray );
     
     TInt AddWidgetL( CHsContentInfo& aInfo );
@@ -303,7 +305,12 @@
      * Retrieves publishers from CPS and them with the HSPS's template plugins
      */
     void CpsWidgetPluginsL( RPointerArray< CHsContentInfo >& aWidgets );
-            
+
+    /**
+     * Checks whether the view is full
+     */
+    TBool IsViewFull( CXnViewData& aViewData );
+    
 private:
     // from MXnViewObserver    
     
--- a/idlehomescreen/xmluirendering/uiengine/inc/xneffectmanager.h	Wed Apr 14 15:47:59 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/inc/xneffectmanager.h	Tue Apr 27 16:26:12 2010 +0300
@@ -43,6 +43,14 @@
 #define KGfxControlActionAppear         3
 #define KGfxControlActionDisappear      4
 
+#define KGfxControlActionAppearPrt         3
+#define KGfxControlActionDisappearPrt      5
+#define KGfxControlActionAppearLsc         6
+#define KGfxControlActionDisappearLsc      7
+
+#define KGfxControlActionBgImgToImgAppear   3
+#define KGfxControlActionBgAnimToImgAppear  5
+
 // Full screen effect ids
 #define KGfxContextOpenWallpaperView    1007
 #define KGfxContextCloseWallpaperView   1008
--- a/idlehomescreen/xmluirendering/uiengine/inc/xnwallpaperview.h	Wed Apr 14 15:47:59 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/inc/xnwallpaperview.h	Tue Apr 27 16:26:12 2010 +0300
@@ -33,22 +33,11 @@
 class TVwsViewId;
 class CPeriodic;
 class CXnSpBgCleaner;
+class CAknWaitDialog;
 
 // Constants
 const TUid KWallpaperViewUid = { 0x200286DB };
 
-/**
-*  Data structure to be used with timer callback.
-*
-*  @since S60 v5.0
-*/
-NONSHARABLE_STRUCT( TXnWallpaperViewData )
-    {
-    TBool iMultiple;
-    TUid iAppUid;
-    TUid iViewUid;    
-    };
-
 // CLASS DECLARATION
 
 /**
@@ -59,6 +48,13 @@
 */
 NONSHARABLE_CLASS( CXnWallpaperView ) : public CAknView 
     {
+    /** View states */
+    enum TViewState 
+        {
+        EIdle,
+        EImageSelection,
+        EViewDeactivation
+        };
 public:
 
     /**
@@ -103,8 +99,16 @@
     /**
      * Callback function to be used with CPeriodic.
      */
-    static TInt TimerCallbackL( TAny *aPtr );
+    static TInt TimerCallback( TAny *aPtr );
+    void DoHandleCallBackL();
 
+    /**
+     * Show error dialog
+     * 
+     * @param aResourceId Resource id to string to be displayed.
+     */
+    static void ShowErrorDialogL( const TInt aResourceId );
+    
 private: // data
 
     /**
@@ -126,9 +130,19 @@
     CXnAppUiAdapter& iAppUi;
     
     /**
-     * Data structure, that is transferred to TimerCallback.
+     * Switch for multiple image selection.
+     */
+    TBool iMultiple;
+    
+    /**
+     * Previous view id
      */
-    TXnWallpaperViewData iData;
+    TVwsViewId iPreviousViewUid;
+
+    /**
+     * States of wallpaperview
+     */
+    TViewState iViewState;
     
     /**
      * Periodic timer.
@@ -146,7 +160,12 @@
      * Own.
      */
 	CXnSpBgCleaner* iXnSpBgCleaner;
-
+    
+    /** 
+     * Wait dialog. 
+     * Own.
+     */
+	CAknWaitDialog* iWaitDialog;    
     };
 
 #endif      // CXNWALLPAPERVIEW_H
--- a/idlehomescreen/xmluirendering/uiengine/src/xnbackgroundmanager.cpp	Wed Apr 14 15:47:59 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnbackgroundmanager.cpp	Tue Apr 27 16:26:12 2010 +0300
@@ -780,14 +780,15 @@
     // Add new to the cache
     if( aFileName != KNullDesC )
         {
-        if( CacheWallpaperL( aFileName, viewData ) == KErrNone )
+        err = CacheWallpaperL( aFileName, viewData ); 
+    
+        if( err == KErrNone )
             {
             SaveWallpaperL(); // to HSPS
             }
         else
             {
-            // image is corrupted or format is not supported
-            return KErrCACorruptContent;
+            return err;
             }
         }
     // WallpaperImage changed back to default. Update view data.
@@ -832,13 +833,13 @@
         {
         iBgImagePath = aFileName.AllocL();
     
-        TBool err( KErrNone );
+        err = KErrNone;
         TRAP( err, iSkinSrv.AddWallpaperL( aFileName, iRect.Size() ) );
-        if( err )
+        if( err != KErrNone )
             {
-            // image is corrupted or format is not supported
-            return KErrCACorruptContent;
+            return err;
             }
+        
         TRAP( err, iBgImage = iSkinSrv.WallpaperImageL( aFileName ) );
         if( err )
             {
--- a/idlehomescreen/xmluirendering/uiengine/src/xneditor.cpp	Wed Apr 14 15:47:59 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/src/xneditor.cpp	Tue Apr 27 16:26:12 2010 +0300
@@ -95,6 +95,7 @@
 // ====================== LOCAL FUNTION PROTOTYPES ============================
 static void DeletePluginInfos( TAny* aObject );
 static void DeleteItemMaps( TAny* aObject );
+static void DeleteContentInfo( TAny* aObject );
 
 static TPtrC ParseWidgetName( const CHsContentInfo& aContentInfo );
 static void SetPropertyL( CXnNode& aNode, const TDesC8& aAttribute, 
@@ -131,6 +132,16 @@
     }
 
 // ---------------------------------------------------------------------------
+// DeleteContentInfo
+// ---------------------------------------------------------------------------
+// 
+static void DeleteContentInfo( TAny* aObject )    
+    {
+    reinterpret_cast<RPointerArray< CHsContentInfo >* >( 
+        aObject )->ResetAndDestroy();
+    }
+
+// ---------------------------------------------------------------------------
 // ParseWidgetName
 // ---------------------------------------------------------------------------
 // 
@@ -324,21 +335,7 @@
 //
 TBool CXnEditor::IsCurrentViewFull()
     {
-    TBool viewFull = ETrue;
-    
-    RPointerArray< CXnPluginData >& plugins( 
-        iViewManager.ActiveViewData().PluginData() );
-                
-    for ( TInt i = 0; i < plugins.Count(); i++ )
-        {
-        if ( !plugins[i]->Occupied() )
-            {
-            viewFull = EFalse;
-            break;
-            }
-        }
-    
-    return viewFull;
+    return IsViewFull( iViewManager.ActiveViewData() );
     }
 
 // -----------------------------------------------------------------------------
@@ -419,14 +416,6 @@
 		
 		if ( plugin->PublisherName() == aInfo.PublisherId() )
 			{
-			if ( plugin->Removable() )
-			    {
-			    // To enable widget remove
-			    aInfo.SetPluginIdL( plugin->PluginId() );
-			    
-			    retval |= ECanBeRemoved;
-			    }
-			
 			widgetCount++;
 			}
 		}
@@ -468,14 +457,6 @@
         
         if ( plugin->PluginUid().CompareF( aInfo.Uid() ) == 0 )
             {
-            if ( plugin->Removable() )
-                {
-                // To enable widget remove
-                aInfo.SetPluginIdL( plugin->PluginId() );
-                
-                retval |= ECanBeRemoved;
-                }
-            
             widgetCount++;
             }
         }
@@ -498,40 +479,17 @@
     {
     RPointerArray< CHsContentInfo >& list( aContentInfoArray.Array() );
     
-    RPointerArray< CXnPluginData >& views( 
-        iViewManager.ActiveAppData().PluginData() );
-
-    TInt viewAmount( iViewManager.ViewAmount() );
-    
-    const TInt KMaxViewAmount( 6 );
+    TBool canBeAdded( EFalse );
+    CXnRootData& appData( iViewManager.ActiveAppData() );
+    if ( appData.PluginData().Count() < appData.MaxPages() )
+        {
+        canBeAdded = ETrue;
+        }    
     
     for ( TInt i = 0; i < list.Count(); i++ )
         {
-        CHsContentInfo* info( list[i] );
-        
-        info->SetCanBeAdded( EFalse );
-        info->SetCanBeRemoved( EFalse );
-
-        for ( TInt j = 0 ; j < views.Count(); j++ )
-            {
-            CXnPluginData* view( views[j] );
-            
-            if ( view->PluginUid().CompareF( info->Uid() ) == 0 )
-                {
-                // To enable view remove
-                info->SetPluginIdL( view->PluginId() );
-                // Last view cannot be removed
-                if ( views.Count() > 1 )
-                    {
-                    info->SetCanBeRemoved( ETrue );
-                    }
-                }
-            }
-        
-        if ( viewAmount < KMaxViewAmount )
-            {
-            info->SetCanBeAdded( ETrue );
-            }
+        CHsContentInfo* info( list[i] );        
+        info->SetCanBeAdded( canBeAdded );
         }
     }
 
@@ -1718,7 +1676,7 @@
         {
         // Get installed widget content infos
         RPointerArray< CHsContentInfo > array;
-        CleanupClosePushL( array );        
+        CleanupStack::PushL( TCleanupItem( DeleteContentInfo, &array ) );
         
         // get installed widgets and template configurations from HSPS
         HspsWidgetPluginsL( array );
@@ -1765,6 +1723,56 @@
 // from MHsContentController
 // -----------------------------------------------------------------------------
 //
+TInt CXnEditor::ViewListL( CHsContentInfo& aInfo, CHsContentInfoArray& aArray )
+    {
+    TInt err( KErrNone );
+
+    if ( aInfo.Type() == KApplication )
+        {
+        if ( aInfo.Uid().CompareF( iViewManager.ActiveAppData().PluginUid() ) == 0 )
+            {
+            // Get list of views in active application configuration
+            CXnRootData& appData( iViewManager.ActiveAppData() );
+            RPointerArray< CXnPluginData >& views( appData.PluginData() );
+            
+            // Get installed view content infos
+            RPointerArray< CHsContentInfo > array;
+            CleanupStack::PushL( TCleanupItem( DeleteContentInfo, &array ) );
+            HspsViewPluginsL( array );
+                    
+            // Create content info for each found view
+            for ( TInt i = 0; i < views.Count(); i++ )
+                {
+                CHsContentInfo* info = CreateContentInfoLC( *views[i], array );
+                if ( info )
+                    {
+                    CXnViewData* view = static_cast < CXnViewData* >( views[ i ] );
+                    info->SetIsFull( IsViewFull( *view ) );
+                    aArray.Array().AppendL( info );
+                    CleanupStack::Pop( info );
+                    }
+                }
+            CleanupStack::PopAndDestroy(); // array
+            }
+        else
+            {
+            // Invalid application configuration
+            err = KErrArgument;
+            }
+        }
+    else
+        {
+        // Invalid argument
+        err = KErrArgument;
+        }
+    
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// from MHsContentController
+// -----------------------------------------------------------------------------
+//
 TInt CXnEditor::AppListL( CHsContentInfoArray& aArray )
     {
     RPointerArray< CHsContentInfo >& array( aArray.Array() );
@@ -1950,23 +1958,7 @@
         aInfo.SetTypeL( view->PluginInfo().Type() );
         aInfo.SetDescriptionL( view->PluginInfo().Description() );
         aInfo.SetIconPathL( view->PluginInfo().LogoIcon() );
-
-        // Check if there is empty space
-        RPointerArray< CXnNode > nodes;
-        viewData.PluginNodesL( nodes );
-        TBool isFull( ETrue );
-        for ( TInt i = 0; i < nodes.Count(); i++ )
-            {
-            CXnNode* node( nodes[i] );
-            CXnPluginData* plugin = viewData.Plugin( node );
-
-            if ( plugin && !plugin->Occupied() )
-                {
-                isFull = EFalse;
-                break;
-                }
-            }
-        aInfo.SetIsFull( isFull );
+        aInfo.SetIsFull( IsViewFull( viewData ) );        
         }
     else
         {
@@ -2036,6 +2028,7 @@
                 contentInfo = info->CloneL();
                 CleanupStack::PushL( contentInfo );
                 contentInfo->SetPluginIdL( aPlugin.PluginId() );
+                contentInfo->SetCanBeRemoved( aPlugin.Removable() );
                 }
             }
         }
@@ -2043,6 +2036,31 @@
     }
 
 // -----------------------------------------------------------------------------
+// CXnEditor::IsViewFull
+// -----------------------------------------------------------------------------
+//
+TBool CXnEditor::IsViewFull( CXnViewData& aViewData )
+    {
+    TBool isFull( ETrue );
+
+    RPointerArray< CXnPluginData >& plugins( 
+            aViewData.PluginData() );
+
+    for ( TInt i = 0; i < plugins.Count(); i++ )
+        {
+        CXnPluginData* plugin = plugins[ i ];
+
+        if ( !plugin->Occupied() )
+            {
+            isFull = EFalse;
+            break;
+            }
+        }
+    
+    return isFull;
+    }
+
+// -----------------------------------------------------------------------------
 // CXnBackgroundManager::OOMSysHandler
 // -----------------------------------------------------------------------------
 //
--- a/idlehomescreen/xmluirendering/uiengine/src/xnnodeimpl.cpp	Wed Apr 14 15:47:59 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnnodeimpl.cpp	Tue Apr 27 16:26:12 2010 +0300
@@ -892,197 +892,197 @@
     TInt level( XnDirtyLevel::ENone );
 
     EnableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::WidthL,
+        aNode, aPseudoClass, &CXnNode::WidthL,
         aLayoutPropertyCache->iWidth,
         aLayoutPropertyCache->iWidths, level );
 
     EnableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::HeightL,
+        aNode, aPseudoClass, &CXnNode::HeightL,
         aLayoutPropertyCache->iHeight,
         aLayoutPropertyCache->iHeights, level );
 
     EnableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::MarginLeftL,
+        aNode, aPseudoClass, &CXnNode::MarginLeftL,
         aLayoutPropertyCache->iMarginLeft,
         aLayoutPropertyCache->iMarginLefts, level );
 
     EnableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::MarginRightL,
+        aNode, aPseudoClass, &CXnNode::MarginRightL,
         aLayoutPropertyCache->iMarginRight,
         aLayoutPropertyCache->iMarginRights, level );
 
     EnableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::BorderLeftL,
+        aNode, aPseudoClass, &CXnNode::BorderLeftL,
         aLayoutPropertyCache->iBorderLeft,
         aLayoutPropertyCache->iBorderLefts, level );
 
     EnableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::BorderRightL,
+        aNode, aPseudoClass, &CXnNode::BorderRightL,
         aLayoutPropertyCache->iBorderRight,
         aLayoutPropertyCache->iBorderRights, level );
 
     EnableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::PaddingLeftL,
+        aNode, aPseudoClass, &CXnNode::PaddingLeftL,
         aLayoutPropertyCache->iPaddingLeft,
         aLayoutPropertyCache->iPaddingLefts, level );
 
     EnableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::PaddingRightL,
+        aNode, aPseudoClass, &CXnNode::PaddingRightL,
         aLayoutPropertyCache->iPaddingRight,
         aLayoutPropertyCache->iPaddingRights, level );
 
     EnableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::MarginTopL,
+        aNode, aPseudoClass, &CXnNode::MarginTopL,
         aLayoutPropertyCache->iMarginTop,
         aLayoutPropertyCache->iMarginTops, level );
 
     EnableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::MarginBottomL,
+        aNode, aPseudoClass, &CXnNode::MarginBottomL,
         aLayoutPropertyCache->iMarginBottom,
         aLayoutPropertyCache->iMarginBottoms, level );
 
     EnableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::BorderTopL,
+        aNode, aPseudoClass, &CXnNode::BorderTopL,
         aLayoutPropertyCache->iBorderTop,
         aLayoutPropertyCache->iBorderTops, level );
 
     EnableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::BorderBottomL,
+        aNode, aPseudoClass, &CXnNode::BorderBottomL,
         aLayoutPropertyCache->iBorderBottom,
         aLayoutPropertyCache->iBorderBottoms, level );
 
     EnableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::PaddingTopL,
+        aNode, aPseudoClass, &CXnNode::PaddingTopL,
         aLayoutPropertyCache->iPaddingTop,
         aLayoutPropertyCache->iPaddingTops, level );
 
     EnableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::PaddingBottomL,
+        aNode, aPseudoClass, &CXnNode::PaddingBottomL,
         aLayoutPropertyCache->iPaddingBottom,
         aLayoutPropertyCache->iPaddingBottoms, level );
 
     EnableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::BorderWidthL,
+        aNode, aPseudoClass, &CXnNode::BorderWidthL,
         aLayoutPropertyCache->iBorderWidth,
         aLayoutPropertyCache->iBorderWidths, level );
 
     EnableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::BlockProgressionL,
+        aNode, aPseudoClass, &CXnNode::BlockProgressionL,
         aLayoutPropertyCache->iBlockProgression,
         aLayoutPropertyCache->iBlockProgressions, level );
 
     EnableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::DirectionL,
+        aNode, aPseudoClass, &CXnNode::DirectionL,
         aLayoutPropertyCache->iDirection,
         aLayoutPropertyCache->iDirections, level );
 
     EnableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::PositionL,
+        aNode, aPseudoClass, &CXnNode::PositionL,
         aLayoutPropertyCache->iPosition,
         aLayoutPropertyCache->iPositions, level );
 
     EnableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::MaxHeightL,
+        aNode, aPseudoClass, &CXnNode::MaxHeightL,
         aLayoutPropertyCache->iMaxHeight,
         aLayoutPropertyCache->iMaxHeights, level );
 
     EnableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::MinHeightL,
+        aNode, aPseudoClass, &CXnNode::MinHeightL,
         aLayoutPropertyCache->iMinHeight,
         aLayoutPropertyCache->iMinHeights, level );
 
     EnableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::MaxWidthL,
+        aNode, aPseudoClass, &CXnNode::MaxWidthL,
         aLayoutPropertyCache->iMaxWidth,
         aLayoutPropertyCache->iMaxWidths, level );
 
     EnableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::MinWidthL,
+        aNode, aPseudoClass, &CXnNode::MinWidthL,
         aLayoutPropertyCache->iMinWidth,
         aLayoutPropertyCache->iMinWidths, level );
 
     EnableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::DisplayL,
+        aNode, aPseudoClass, &CXnNode::DisplayL,
         aLayoutPropertyCache->iDisplay,
         aLayoutPropertyCache->iDisplays, level, ETrue );
 
     EnableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::VisibilityL,
+        aNode, aPseudoClass, &CXnNode::VisibilityL,
         aLayoutPropertyCache->iVisibility,
         aLayoutPropertyCache->iVisibilities, level );
 
     EnableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::LeftL,
+        aNode, aPseudoClass, &CXnNode::LeftL,
         aLayoutPropertyCache->iLeft,
         aLayoutPropertyCache->iLefts, level );
 
     EnableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::RightL,
+        aNode, aPseudoClass, &CXnNode::RightL,
         aLayoutPropertyCache->iRight,
         aLayoutPropertyCache->iRights, level );
 
     EnableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::TopL,
+        aNode, aPseudoClass, &CXnNode::TopL,
         aLayoutPropertyCache->iTop,
         aLayoutPropertyCache->iTops, level );
 
     EnableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::BottomL,
+        aNode, aPseudoClass, &CXnNode::BottomL,
         aLayoutPropertyCache->iBottom,
         aLayoutPropertyCache->iBottoms, level );
 
     EnableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::BorderLeftStyleL,
+        aNode, aPseudoClass, &CXnNode::BorderLeftStyleL,
         aLayoutPropertyCache->iBorderLeftStyle,
         aLayoutPropertyCache->iBorderLeftStyles, level );
 
     EnableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::BorderRightStyleL,
+        aNode, aPseudoClass, &CXnNode::BorderRightStyleL,
         aLayoutPropertyCache->iBorderRightStyle,
         aLayoutPropertyCache->iBorderRightStyles, level );
 
     EnableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::BorderTopStyleL,
+        aNode, aPseudoClass, &CXnNode::BorderTopStyleL,
         aLayoutPropertyCache->iBorderTopStyle,
         aLayoutPropertyCache->iBorderTopStyles, level );
 
     EnableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::BorderBottomStyleL,
+        aNode, aPseudoClass, &CXnNode::BorderBottomStyleL,
         aLayoutPropertyCache->iBorderBottomStyle,
         aLayoutPropertyCache->iBorderBottomStyles, level );
 
     EnableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::BorderStyleL,
+        aNode, aPseudoClass, &CXnNode::BorderStyleL,
         aLayoutPropertyCache->iBorderStyle,
         aLayoutPropertyCache->iBorderStyles, level );
 
     EnableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::DisplayPriorityL,
+        aNode, aPseudoClass, &CXnNode::DisplayPriorityL,
         aLayoutPropertyCache->iDisplayPriority,
         aLayoutPropertyCache->iDisplayPriorities, level );
 
     EnableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::NavIndexL,
+        aNode, aPseudoClass, &CXnNode::NavIndexL,
         aLayoutPropertyCache->iNavIndex,
         aLayoutPropertyCache->iNavIndexes, level );
 
     EnableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::ZIndexL,
+        aNode, aPseudoClass, &CXnNode::ZIndexL,
         aLayoutPropertyCache->iZIndex,
         aLayoutPropertyCache->iZIndexes, level );
 
     EnableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::BackgroundColorL,
+        aNode, aPseudoClass, &CXnNode::BackgroundColorL,
         aLayoutPropertyCache->iBackgroundColor,
         aLayoutPropertyCache->iBackgroundColors, level );
 
     EnableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::BackgroundImageL,
+        aNode, aPseudoClass, &CXnNode::BackgroundImageL,
         aLayoutPropertyCache->iBackgroundImage,
         aLayoutPropertyCache->iBackgroundImages, level, ETrue );
 
     EnableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::FocusBackgroundL,
+        aNode, aPseudoClass, &CXnNode::FocusBackgroundL,
         aLayoutPropertyCache->iFocusBackground,
         aLayoutPropertyCache->iFocusBackgrounds, level );
 
@@ -1107,197 +1107,197 @@
     TInt level( XnDirtyLevel::ENone );
 
     DisableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::WidthL,
+        aNode, aPseudoClass, &CXnNode::WidthL,
         aLayoutPropertyCache->iWidth,
         aLayoutPropertyCache->iWidths, aStates, level );
 
     DisableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::HeightL,
+        aNode, aPseudoClass, &CXnNode::HeightL,
         aLayoutPropertyCache->iHeight,
         aLayoutPropertyCache->iHeights, aStates, level );
 
     DisableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::MarginLeftL,
+        aNode, aPseudoClass, &CXnNode::MarginLeftL,
         aLayoutPropertyCache->iMarginLeft,
         aLayoutPropertyCache->iMarginLefts, aStates, level );
 
     DisableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::MarginRightL,
+        aNode, aPseudoClass, &CXnNode::MarginRightL,
         aLayoutPropertyCache->iMarginRight,
         aLayoutPropertyCache->iMarginRights, aStates, level );
 
     DisableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::BorderLeftL,
+        aNode, aPseudoClass, &CXnNode::BorderLeftL,
         aLayoutPropertyCache->iBorderLeft,
         aLayoutPropertyCache->iBorderLefts, aStates, level );
 
     DisableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::BorderRightL,
+        aNode, aPseudoClass, &CXnNode::BorderRightL,
         aLayoutPropertyCache->iBorderRight,
         aLayoutPropertyCache->iBorderRights, aStates, level );
 
     DisableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::PaddingLeftL,
+        aNode, aPseudoClass, &CXnNode::PaddingLeftL,
         aLayoutPropertyCache->iPaddingLeft,
         aLayoutPropertyCache->iPaddingLefts, aStates, level );
 
     DisableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::PaddingRightL,
+        aNode, aPseudoClass, &CXnNode::PaddingRightL,
         aLayoutPropertyCache->iPaddingRight,
         aLayoutPropertyCache->iPaddingRights, aStates, level );
 
     DisableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::MarginTopL,
+        aNode, aPseudoClass, &CXnNode::MarginTopL,
         aLayoutPropertyCache->iMarginTop,
         aLayoutPropertyCache->iMarginTops, aStates, level );
 
     DisableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::MarginBottomL,
+        aNode, aPseudoClass, &CXnNode::MarginBottomL,
         aLayoutPropertyCache->iMarginBottom,
         aLayoutPropertyCache->iMarginBottoms, aStates, level );
 
     DisableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::BorderTopL,
+        aNode, aPseudoClass, &CXnNode::BorderTopL,
         aLayoutPropertyCache->iBorderTop,
         aLayoutPropertyCache->iBorderTops, aStates, level );
 
     DisableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::BorderBottomL,
+        aNode, aPseudoClass, &CXnNode::BorderBottomL,
         aLayoutPropertyCache->iBorderBottom,
         aLayoutPropertyCache->iBorderBottoms, aStates, level );
 
     DisableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::PaddingTopL,
+        aNode, aPseudoClass, &CXnNode::PaddingTopL,
         aLayoutPropertyCache->iPaddingTop,
         aLayoutPropertyCache->iPaddingTops, aStates, level );
 
     DisableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::PaddingBottomL,
+        aNode, aPseudoClass, &CXnNode::PaddingBottomL,
         aLayoutPropertyCache->iPaddingBottom,
         aLayoutPropertyCache->iPaddingBottoms, aStates, level );
 
     DisableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::BorderWidthL,
+        aNode, aPseudoClass, &CXnNode::BorderWidthL,
         aLayoutPropertyCache->iBorderWidth,
         aLayoutPropertyCache->iBorderWidths, aStates, level );
 
     DisableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::BlockProgressionL,
+        aNode, aPseudoClass, &CXnNode::BlockProgressionL,
         aLayoutPropertyCache->iBlockProgression,
         aLayoutPropertyCache->iBlockProgressions, aStates, level );
 
     DisableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::DirectionL,
+        aNode, aPseudoClass, &CXnNode::DirectionL,
         aLayoutPropertyCache->iDirection,
         aLayoutPropertyCache->iDirections, aStates, level );
 
     DisableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::PositionL,
+        aNode, aPseudoClass, &CXnNode::PositionL,
         aLayoutPropertyCache->iPosition,
         aLayoutPropertyCache->iPositions, aStates, level );
 
     DisableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::MaxHeightL,
+        aNode, aPseudoClass, &CXnNode::MaxHeightL,
         aLayoutPropertyCache->iMaxHeight,
         aLayoutPropertyCache->iMaxHeights, aStates, level );
 
     DisableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::MinHeightL,
+        aNode, aPseudoClass, &CXnNode::MinHeightL,
         aLayoutPropertyCache->iMinHeight,
         aLayoutPropertyCache->iMinHeights, aStates, level );
 
     DisableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::MaxWidthL,
+        aNode, aPseudoClass, &CXnNode::MaxWidthL,
         aLayoutPropertyCache->iMaxWidth,
         aLayoutPropertyCache->iMaxWidths, aStates, level );
 
     DisableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::MinWidthL,
+        aNode, aPseudoClass, &CXnNode::MinWidthL,
         aLayoutPropertyCache->iMinWidth,
         aLayoutPropertyCache->iMinWidths, aStates, level );
 
     DisableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::DisplayL,
+        aNode, aPseudoClass, &CXnNode::DisplayL,
         aLayoutPropertyCache->iDisplay,
         aLayoutPropertyCache->iDisplays, aStates, level, ETrue );
 
     DisableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::VisibilityL,
+        aNode, aPseudoClass, &CXnNode::VisibilityL,
         aLayoutPropertyCache->iVisibility,
         aLayoutPropertyCache->iVisibilities, aStates, level );
 
     DisableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::LeftL,
+        aNode, aPseudoClass, &CXnNode::LeftL,
         aLayoutPropertyCache->iLeft,
         aLayoutPropertyCache->iLefts, aStates, level );
 
     DisableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::RightL,
+        aNode, aPseudoClass, &CXnNode::RightL,
         aLayoutPropertyCache->iRight,
         aLayoutPropertyCache->iRights, aStates, level );
 
     DisableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::TopL,
+        aNode, aPseudoClass, &CXnNode::TopL,
         aLayoutPropertyCache->iTop,
         aLayoutPropertyCache->iTops, aStates, level );
 
     DisableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::BottomL,
+        aNode, aPseudoClass, &CXnNode::BottomL,
         aLayoutPropertyCache->iBottom,
         aLayoutPropertyCache->iBottoms, aStates, level );
 
     DisableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::BorderLeftStyleL,
+        aNode, aPseudoClass, &CXnNode::BorderLeftStyleL,
         aLayoutPropertyCache->iBorderLeftStyle,
         aLayoutPropertyCache->iBorderLeftStyles, aStates, level );
 
     DisableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::BorderRightStyleL,
+        aNode, aPseudoClass, &CXnNode::BorderRightStyleL,
         aLayoutPropertyCache->iBorderRightStyle,
         aLayoutPropertyCache->iBorderRightStyles, aStates, level );
 
     DisableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::BorderTopStyleL,
+        aNode, aPseudoClass, &CXnNode::BorderTopStyleL,
         aLayoutPropertyCache->iBorderTopStyle,
         aLayoutPropertyCache->iBorderTopStyles, aStates, level );
 
     DisableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::BorderBottomStyleL,
+        aNode, aPseudoClass, &CXnNode::BorderBottomStyleL,
         aLayoutPropertyCache->iBorderBottomStyle,
         aLayoutPropertyCache->iBorderBottomStyles, aStates, level );
 
     DisableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::BorderStyleL,
+        aNode, aPseudoClass, &CXnNode::BorderStyleL,
         aLayoutPropertyCache->iBorderStyle,
         aLayoutPropertyCache->iBorderStyles, aStates, level );
 
     DisableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::DisplayPriorityL,
+        aNode, aPseudoClass, &CXnNode::DisplayPriorityL,
         aLayoutPropertyCache->iDisplayPriority,
         aLayoutPropertyCache->iDisplayPriorities, aStates, level );
 
     DisableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::NavIndexL,
+        aNode, aPseudoClass, &CXnNode::NavIndexL,
         aLayoutPropertyCache->iNavIndex,
         aLayoutPropertyCache->iNavIndexes, aStates, level );
 
     DisableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::ZIndexL,
+        aNode, aPseudoClass, &CXnNode::ZIndexL,
         aLayoutPropertyCache->iZIndex,
         aLayoutPropertyCache->iZIndexes, aStates, level );
 
     DisableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::BackgroundColorL,
+        aNode, aPseudoClass, &CXnNode::BackgroundColorL,
         aLayoutPropertyCache->iBackgroundColor,
         aLayoutPropertyCache->iBackgroundColors, aStates, level );
 
     DisableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::BackgroundImageL,
+        aNode, aPseudoClass, &CXnNode::BackgroundImageL,
         aLayoutPropertyCache->iBackgroundImage,
         aLayoutPropertyCache->iBackgroundImages, aStates, level, ETrue );
 
     DisableStatePropertyL(
-        aNode, aPseudoClass, CXnNode::FocusBackgroundL,
+        aNode, aPseudoClass, &CXnNode::FocusBackgroundL,
         aLayoutPropertyCache->iFocusBackground,
         aLayoutPropertyCache->iFocusBackgrounds, aStates, level );
 
--- a/idlehomescreen/xmluirendering/uiengine/src/xnuiengineimpl.cpp	Wed Apr 14 15:47:59 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnuiengineimpl.cpp	Tue Apr 27 16:26:12 2010 +0300
@@ -9117,6 +9117,8 @@
     RootNode()->SetDirtyL();
 
     ReportScreenDeviceChangeL();
+    
+    iViewManager.OrientationChanged();
             
     if ( !iControlAdapterList )
         {
--- a/idlehomescreen/xmluirendering/uiengine/src/xnviewmanager.cpp	Wed Apr 14 15:47:59 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnviewmanager.cpp	Tue Apr 27 16:26:12 2010 +0300
@@ -27,6 +27,7 @@
 #include <aifwdefs.h>
 #include <gfxtranseffect/gfxtranseffect.h>
 #include <akntransitionutils.h>
+#include <layoutmetadata.cdl.h>
 
 // User includes
 #include "xnapplication.h"
@@ -325,6 +326,8 @@
     
     iComposer = CXnComposer::NewL( *iHspsWrapper );
     
+    iIsLandscapeOrientation = Layout_Meta_Data::IsLandscapeOrientation();
+    
     DoRobustnessCheckL();
     }
 
@@ -866,7 +869,6 @@
         if ( next.Load() == KErrNoMemory )
             {
             next.ShowOutOfMemError();
-            
             return;
             }
         }
@@ -885,21 +887,42 @@
         
         TInt ret( GfxTransEffect::BeginGroup() );
         
-        CCoeControl* bg( &iAppUiAdapter.ViewAdapter().BgManager() );
+        CFbsBitmap* currentBg( ActiveViewData().WallpaperImage() );
+        CFbsBitmap* nextBg( next.WallpaperImage() );
         
-        GfxTransEffect::Begin( bg, KGfxControlActionAppear );
-
-        GfxTransEffect::SetDemarcation( bg, bg->Position() );
-        GfxTransEffect::End( bg );        
+        if ( currentBg || nextBg )
+            {
+            CCoeControl* bg( &iAppUiAdapter.ViewAdapter().BgManager() );
+            
+            if ( !currentBg && nextBg )
+                {
+                GfxTransEffect::Begin( bg, KGfxControlActionBgAnimToImgAppear );
+                }
+            else
+                {
+                GfxTransEffect::Begin( bg, KGfxControlActionBgImgToImgAppear );
+                }
+            
+            GfxTransEffect::SetDemarcation( bg, bg->Position() );
+            GfxTransEffect::End( bg );
+            }
         
-        GfxTransEffect::Begin( thisView, KGfxControlActionDisappear );
+        if ( iIsLandscapeOrientation )
+            {
+            GfxTransEffect::Begin( thisView, KGfxControlActionDisappearLsc );
+            GfxTransEffect::Begin( nextView, KGfxControlActionAppearLsc );
+            }
+        else
+            {
+            GfxTransEffect::Begin( thisView, KGfxControlActionDisappearPrt );
+            GfxTransEffect::Begin( nextView, KGfxControlActionAppearPrt );
+            }
         
-        iAppUiAdapter.ViewAdapter().ActivateContainerL( next );
+        TRAP_IGNORE( iAppUiAdapter.ViewAdapter().ActivateContainerL( next ) );
         
         GfxTransEffect::SetDemarcation( thisView, thisView->Position() );
         GfxTransEffect::End( thisView );
-                
-        GfxTransEffect::Begin( nextView, KGfxControlActionAppear );
+        
         GfxTransEffect::SetDemarcation( nextView, nextView->Position() );
         GfxTransEffect::End( nextView );
                                 
@@ -924,7 +947,6 @@
         if ( prev.Load() == KErrNoMemory )
             {
             prev.ShowOutOfMemError();
-            
             return;
             }
         }
@@ -942,23 +964,43 @@
         GfxTransEffect::Register( prevView, KGfxContextActivatePrevView );
     
         TInt ret( GfxTransEffect::BeginGroup() );
-            
-        CCoeControl* bg( &iAppUiAdapter.ViewAdapter().BgManager() );
+        
+        CFbsBitmap* currentBg( ActiveViewData().WallpaperImage() );
+        CFbsBitmap* prevBg( prev.WallpaperImage() );
         
-        GfxTransEffect::Begin( bg, KGfxControlActionAppear );
-    
-        GfxTransEffect::SetDemarcation( bg, bg->Position() );
-        GfxTransEffect::End( bg );        
+        if ( currentBg || prevBg )
+            {
+            CCoeControl* bg( &iAppUiAdapter.ViewAdapter().BgManager() );
+            
+            if ( !currentBg && prevBg )
+                {
+                GfxTransEffect::Begin( bg, KGfxControlActionBgAnimToImgAppear );
+                }
+            else
+                {
+                GfxTransEffect::Begin( bg, KGfxControlActionBgImgToImgAppear );
+                }
+            
+            GfxTransEffect::SetDemarcation( bg, bg->Position() );
+            GfxTransEffect::End( bg );
+            }
         
-        GfxTransEffect::Begin( thisView, KGfxControlActionDisappear );
+        if ( iIsLandscapeOrientation )
+            {
+            GfxTransEffect::Begin( thisView, KGfxControlActionDisappearLsc );
+            GfxTransEffect::Begin( prevView, KGfxControlActionAppearLsc );
+            }
+        else
+            {
+            GfxTransEffect::Begin( thisView, KGfxControlActionDisappearPrt );
+            GfxTransEffect::Begin( prevView, KGfxControlActionAppearPrt );
+            }
         
-        iAppUiAdapter.ViewAdapter().ActivateContainerL( prev );
+        TRAP_IGNORE( iAppUiAdapter.ViewAdapter().ActivateContainerL( prev ) );
         
         GfxTransEffect::SetDemarcation( thisView, thisView->Position() );
         GfxTransEffect::End( thisView );
-                
-        GfxTransEffect::Begin( prevView, KGfxControlActionAppear );
-                              
+                                      
         GfxTransEffect::SetDemarcation( prevView, prevView->Position() );
         GfxTransEffect::End( prevView );
                                 
@@ -1772,4 +1814,12 @@
         }           
     }
 
+// -----------------------------------------------------------------------------
+// CXnViewManager::OrientationChanged 
+// -----------------------------------------------------------------------------
+void CXnViewManager::OrientationChanged()
+    {
+    iIsLandscapeOrientation = Layout_Meta_Data::IsLandscapeOrientation();    
+    }
+
 // End of file
--- a/idlehomescreen/xmluirendering/uiengine/src/xnwallpaperview.cpp	Wed Apr 14 15:47:59 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnwallpaperview.cpp	Tue Apr 27 16:26:12 2010 +0300
@@ -17,6 +17,7 @@
 
 // System includes
 #include <aknappui.h>
+#include <eikapp.h>
 #include <eikbtgpc.h>
 #include <avkon.rsg>
 #include <AknsWallpaperUtils.h>
@@ -25,6 +26,7 @@
 #include <StringLoader.h> 
 #include <caf/caf.h>
 #include <bautils.h>
+#include <AknWaitDialog.h>
 #include <data_caging_path_literals.hrh>
 
 // User includes
@@ -46,6 +48,8 @@
 _LIT8( KMulti, "multi" );
 
 const TInt KFileArrayGranularity( 6 );
+const TInt KShortDelay = 1000;
+const TInt KLongDelay = 1000 * 1000;
 
 // ============================ MEMBER FUNCTIONS ===============================
 
@@ -78,6 +82,7 @@
     BaseConstructL( R_WALLPAPER_VIEW );
            
     iTimer = CPeriodic::NewL( CActive::EPriorityIdle );
+    iViewState = EIdle;
     }
 
 // -----------------------------------------------------------------------------
@@ -98,7 +103,12 @@
 // -----------------------------------------------------------------------------
 //
 CXnWallpaperView::~CXnWallpaperView()
-    {    
+    {
+    if ( iWaitDialog )
+        {
+        TRAP_IGNORE( iWaitDialog->ProcessFinishedL(); );
+        }
+    
     CCoeEnv::Static()->DeleteResourceFile( iResourceOffset );    
     
     delete iContainer;
@@ -161,20 +171,17 @@
         iContainer->DrawNow();
         }
     
-    iData.iAppUid = aPrevViewId.iAppUid;
-    iData.iViewUid = aPrevViewId.iViewUid; 
-    iData.iMultiple = EFalse;
-        
-    if ( aCustomMessage == KMulti )
-        {
-        iData.iMultiple = ETrue;
-        }
+    iPreviousViewUid = aPrevViewId;
+    iMultiple = ( (aCustomMessage == KMulti) ? ETrue : EFalse );
+
+    iAppUi.EffectManager()->UiRendered();
+    
+    iWaitDialog = NULL;
+    iViewState = EImageSelection;
 
     // Run image selection dialog asynchronously
     iTimer->Cancel();
-    iTimer->Start( 0, 1000, TCallBack( TimerCallbackL, this ) );
-    
-    iAppUi.EffectManager()->UiRendered();
+    iTimer->Start( KShortDelay, KLongDelay, TCallBack( TimerCallback, this ) );
     }
 
 // -----------------------------------------------------------------------------
@@ -183,6 +190,13 @@
 //
 void CXnWallpaperView::DoDeactivate()
     {
+    iTimer->Cancel(); // cancel timer
+    
+    if ( iWaitDialog )
+        {
+        TRAP_IGNORE( iWaitDialog->ProcessFinishedL(); );
+        }
+    
     if ( iContainer )
         {
         iAppUi.RemoveFromStack( iContainer );
@@ -196,7 +210,8 @@
         delete iXnSpBgCleaner;
         iXnSpBgCleaner = NULL;
         }
-
+    
+    iViewState = EIdle;
     iAppUi.EffectManager()->UiRendered();
     }
 
@@ -204,54 +219,122 @@
 // CXnWallpaperView::TimerCallback
 // -----------------------------------------------------------------------------
 //
-TInt CXnWallpaperView::TimerCallbackL( TAny *aPtr )
+TInt CXnWallpaperView::TimerCallback( TAny *aPtr )
     {       
     CXnWallpaperView* self = reinterpret_cast< CXnWallpaperView* >( aPtr );
-    self->iTimer->Cancel();
-    
-    CDesCArrayFlat* files = 
-        new (ELeave) CDesCArrayFlat( KFileArrayGranularity );    
-    CleanupStack::PushL( files );
-
-    TInt err( KErrNone );
-    TBool selected( EFalse );
-        
-    TXnWallpaperViewData& data( self->iData );
-    
-    CXnBackgroundManager& bg( self->iAppUi.ViewAdapter().BgManager() );
-    
-    TRAPD( fetch, selected = MGFetch::RunL( *files, EImageFile, data.iMultiple ) );
-    
-    if ( fetch == KErrNone && selected && files->MdcaCount() > 0 )                 
+    TRAPD( err, self->DoHandleCallBackL(); );    
+    if ( KErrNone != err )
         {
-        // set wallpaper
-        if( files->MdcaCount() == 1 )
-            {                        
-            err = bg.AddWallpaperL( files->MdcaPoint( 0 ) );
-            }
+        // activate default view in case of any error
+        TVwsViewId defaultView;
+        if ( self->iAppUi.GetDefaultViewId( defaultView ) != KErrNone )
+            {
+            // use default if we got wrong viewid as previous view
+            defaultView.iAppUid = self->iAppUi.Application()->AppDllUid();
+            defaultView.iViewUid = TUid::Uid( 1 );
+            }        
+        // try activating default view
+        TRAP_IGNORE( self->iAppUi.ActivateViewL( defaultView ); );
         }
-    
-    CleanupStack::PopAndDestroy( files );
-
-    if ( err == KErrCACorruptContent )
-        {
-        //load message text
-        HBufC* msg = StringLoader::LoadLC( R_QTN_HS_CORRUPTED_IMAGE_NOTE );
-        //ensure that dialog will not disappear immediatelly - by const. param
-        CAknErrorNote* dialog = new (ELeave) CAknErrorNote( true );
-        CleanupStack::PushL( dialog );
-        //show dialog to user and destroy it
-        dialog->ExecuteLD( *msg );
-        CleanupStack::Pop( dialog );
-        CleanupStack::PopAndDestroy( msg );
-        }
-    
-    self->iAppUi.EffectManager()->BeginFullscreenEffectL( 
-        KGfxContextCloseWallpaperView, self->iAppUi.ViewManager().ActiveViewData() );
-    
-    self->iAppUi.ActivateViewL( TVwsViewId( data.iAppUid, data.iViewUid ) );
-
     return KErrNone;
     }
 
+// -----------------------------------------------------------------------------
+// CXnWallpaperView::DoHandleCallBackL
+// -----------------------------------------------------------------------------
+//
+void CXnWallpaperView::DoHandleCallBackL()
+    {
+    iTimer->Cancel();
+    
+    if ( iViewState == EImageSelection )
+        {
+        CDesCArrayFlat* files = 
+                new (ELeave) CDesCArrayFlat( KFileArrayGranularity );    
+        CleanupStack::PushL( files );
+    
+        TInt err( KErrNone );
+        TBool selected( EFalse );
+        
+        CXnBackgroundManager& bg( iAppUi.ViewAdapter().BgManager() );
+        
+        selected = MGFetch::RunL( *files, EImageFile, iMultiple );
+        
+        if ( selected && files->MdcaCount() > 0 )                 
+            {
+            // set wallpaper
+            if( files->MdcaCount() == 1 )
+                {
+                TFileName fileName( files->MdcaPoint( 0 ) );
+                RFs& fs = CEikonEnv::Static()->FsSession();
+                if ( BaflUtils::FileExists( fs, fileName ) )
+                    {
+                    // if wallpaper adding will take more than 1,5 sec waitdlg will appear
+                    iWaitDialog = new( ELeave ) CAknWaitDialog(
+                            reinterpret_cast<CEikDialog**>( &iWaitDialog ), EFalse );
+                    iWaitDialog->ExecuteLD( R_CHANGE_WALLPAPER_WAIT_DIALOG );
+                    
+                    // add wallpaper
+                    err = bg.AddWallpaperL( fileName );
+    
+                    // notify waitdlg we're done.     
+                    iWaitDialog->ProcessFinishedL();
+                    // ProcessFinishedL() will NULL iWaitDialog
+                    }
+                }
+            }
+        
+        CleanupStack::PopAndDestroy( files );
+        
+        if( err == KErrTooBig || err == KErrNoMemory )
+            {
+            ShowErrorDialogL( R_QTN_HS_TOO_BIG_IMAGE_NOTE );
+            }
+        else if( err == KErrCancel || err == KErrCouldNotConnect )
+            {
+            // Ignore these.
+            }
+        else if( err != KErrNone )
+            {
+            ShowErrorDialogL( R_QTN_HS_CORRUPTED_IMAGE_NOTE );        
+            }
+        
+        // restart timer to deactivate view. View activation fails if
+        // any dialog was shown just before calling iAppUi.ActivateViewL
+        // specially when theme effects are on.
+        iViewState = EViewDeactivation;
+        iTimer->Start( KLongDelay, KLongDelay, TCallBack( TimerCallback, this ) );
+        }
+    else if ( iViewState == EViewDeactivation )
+        {        
+        iAppUi.EffectManager()->BeginFullscreenEffectL( 
+                                    KGfxContextCloseWallpaperView, 
+                                    iAppUi.ViewManager().ActiveViewData() );
+        iAppUi.ActivateViewL( iPreviousViewUid );
+        }
+    else
+        {
+        iViewState = EIdle;
+        User::Leave( KErrUnknown );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CXnWallpaperView::ShowErrorDialogL
+// -----------------------------------------------------------------------------
+//
+void CXnWallpaperView::ShowErrorDialogL( const TInt aResourceId )
+    {
+    //load message text
+    HBufC* msg = StringLoader::LoadLC( aResourceId );
+    //ensure that dialog will not disappear immediatelly - by const. param
+    CAknErrorNote* dialog = new (ELeave) CAknErrorNote( true );
+    CleanupStack::PushL( dialog );
+    //show dialog to user and destroy it
+    dialog->ExecuteLD( *msg );
+    CleanupStack::Pop( dialog );
+    CleanupStack::PopAndDestroy( msg );
+    }
+
+
 //  End of File
--- a/idlehomescreen/xmluirendering/uiengine/src/xnwallpaperview.rss	Wed Apr 14 15:47:59 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnwallpaperview.rss	Tue Apr 27 16:26:12 2010 +0300
@@ -54,4 +54,39 @@
     buf = qtn_hs_corrupted_image_note; 
     }
 
+// ----------------------------------------------------
+// r_qtn_hs_too_big_image_note
+//
+// ----------------------------------------------------
+//
+RESOURCE TBUF r_qtn_hs_too_big_image_note 
+    {
+    buf = qtn_hs_too_big_image_note;
+    }
+    
+// ----------------------------------------------------
+// r_change_wallpaper_wait_dialog
+//
+// ----------------------------------------------------
+//
+RESOURCE DIALOG r_change_wallpaper_wait_dialog
+    {
+    flags = EAknWaitNoteFlags;
+    buttons = R_AVKON_SOFTKEYS_EMPTY;
+    items =
+        {
+        DLG_LINE
+            {
+            type = EAknCtNote;
+            id = EGeneralNote;
+            control= AVKON_NOTE
+                {
+                layout = EWaitLayout;
+                singular_label = qtn_gen_note_processing;
+                animation = R_QGN_GRAF_WAIT_BAR_ANIM;
+                };
+            }
+        };
+    }    
+    
 // End of file
--- a/idlehomescreen/xmluirendering/uiengine/src/xnwidgetextensionadapter.cpp	Wed Apr 14 15:47:59 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnwidgetextensionadapter.cpp	Tue Apr 27 16:26:12 2010 +0300
@@ -21,6 +21,7 @@
 #include <AknUtils.h>
 #include <gfxtranseffect/gfxtranseffect.h>
 #include <akntransitionutils.h>
+#include <AknPriv.hrh>
 
 // User includes
 #include "xnwidgetextensionadapter.h"
@@ -708,6 +709,11 @@
             DrawableWindow()->FadeBehind( ETrue );
             }
         }
+    
+    else if( iPopup && aType == KAknSplitInputDisabled )
+        {
+        HidePopupL();
+        }
     }
 
 //  End of File  
--- a/menufw/hierarchynavigator/hnmetadatamodel/inc/hnmdvaluetext.h	Wed Apr 14 15:47:59 2010 +0300
+++ b/menufw/hierarchynavigator/hnmetadatamodel/inc/hnmdvaluetext.h	Tue Apr 27 16:26:12 2010 +0300
@@ -29,7 +29,6 @@
 struct THnMdCommonPointers;
 class CDesC16Array;
 class CDesC8Array;
-class CArrayFix<TInt>;
 
 // CLASS DECLARATION
 
--- a/menufw/menufwui/matrixmenu/inc/mmappui.h	Wed Apr 14 15:47:59 2010 +0300
+++ b/menufw/menufwui/matrixmenu/inc/mmappui.h	Tue Apr 27 16:26:12 2010 +0300
@@ -71,35 +71,35 @@
  */
 NONSHARABLE_CLASS(CMmAppUi) : public CAknAppUi,
                             public MHnControllerInterface,
-							public MAknToolbarObserver,
+                            public MAknToolbarObserver,
                             public MMmWidgetObserver,
                             public MMmActionRequest,
                             public MAknsSkinChangeObserver
-	{
+  {
 
 public:
 
-	/**
-	 * 2nd phase constructor.
-	 *
-	 * @since S60 v5.0
-	 */
-	void ConstructL();
+  /**
+   * 2nd phase constructor.
+   *
+   * @since S60 v5.0
+   */
+  void ConstructL();
 
-	/**
-	 * C++ default constructor. This needs to be public due to
-	 * the way the framework constructs the AppUi.
-	 *
-	 * @since S60 v5.0
-	 */
-	CMmAppUi();
+  /**
+   * C++ default constructor. This needs to be public due to
+   * the way the framework constructs the AppUi.
+   *
+   * @since S60 v5.0
+   */
+  CMmAppUi();
 
-	/**
-	 * Virtual Destructor.
-	 *
-	 * @since S60 v5.0
-	 */
-	~CMmAppUi();
+  /**
+   * Virtual Destructor.
+   *
+   * @since S60 v5.0
+   */
+  ~CMmAppUi();
 
 // from base class CEikAppUi
 
@@ -124,9 +124,9 @@
      * @param aDocumentName Not used by this app.
      * @param aTail Command line tail.
      */
-	TBool ProcessCommandParametersL( TApaCommand aCommand,
-									TFileName& aDocumentName,
-									const TDesC8& aTail );
+  TBool ProcessCommandParametersL( TApaCommand aCommand,
+                  TFileName& aDocumentName,
+                  const TDesC8& aTail );
 
     /**
      * From CAknAppUi.
@@ -138,7 +138,7 @@
      */
     void ProcessCommandL(TInt aCommand);
 
-	/**
+  /**
      * From CEikAppUi.
      * Takes care of Command Line tail handling.
      *
@@ -146,9 +146,9 @@
      * @param aUid UID of the message.
      * @param aParams Message params.
      */
-	void ProcessMessageL( TUid aUid, const TDesC8& aParams );
+  void ProcessMessageL( TUid aUid, const TDesC8& aParams );
 
-	/**
+  /**
      * From MCoeMessageObserver.
      * Handles window server messages.
      *
@@ -163,7 +163,7 @@
          TUid aMessageUid,
          const TDesC8& aMessageParameters );
 
-	/**
+  /**
      * From MEikMenuObserver (CEikAppUi).
      * Handles dynamic menu pane initialization.
      *
@@ -339,6 +339,17 @@
     void SkinPackageChanged(
         const TAknsSkinStatusPackageChangeReason aReason );
 
+    /**
+     * From MMmDragAndDropObserver.
+     * Method is invoked on the observer, when the move item event is needed.
+     *
+     * @since S60 v5.0
+     * @param aRecipientId Index of item on which the move event invokes.
+     * @param aEventParameters Event parameters.
+     */
+    void HandleTriggerMoveItemL( const TInt aRecipientId,
+            CLiwGenericParamList* aEventParameters );
+
 private:
 
     /**
@@ -379,29 +390,29 @@
         };
 
     /**
-	 * Indicates if edit mode is on.
-	 *
-	 * @since S60 v5.0
-	 * @return Returns edit mode status.
-	 */
+   * Indicates if edit mode is on.
+   *
+   * @since S60 v5.0
+   * @return Returns edit mode status.
+   */
     TBool IsEditMode();
 
     /**
-	 * Adjusts highlight when entering or leaving edit mode.
-	 *
-	 * @since S60 v5.0
-	 * @param aOriginalHighlight Highlight that would normally be set
-	 * @return A modified value of highlight
-	 */
+   * Adjusts highlight when entering or leaving edit mode.
+   *
+   * @since S60 v5.0
+   * @param aOriginalHighlight Highlight that would normally be set
+   * @return A modified value of highlight
+   */
     TInt AdjustEditModeHighlightL( TInt aOriginalHighlight );
 
     /**
-	 * Manages the container lookup.
-	 *
-	 * @since S60 v5.0
-	 * @return Pointer to the container to be loaded, of NULL
-	 * 		   if a new container should be created.
-	 */
+   * Manages the container lookup.
+   *
+   * @since S60 v5.0
+   * @return Pointer to the container to be loaded, of NULL
+   * 		   if a new container should be created.
+   */
     CMmWidgetContainer* GetAppropriateContainerToLoadL();
 
     /**
@@ -426,16 +437,16 @@
 
 // from base class CEikAppUi
 
-	/**
-	 * From CEikAppUi.
-	 * Takes care of command handling.
-	 *
-	 * @since S60 v5.0
-	 * @param aCommand Command to be handled.
-	 */
-	void HandleCommandL( TInt aCommand );
+  /**
+   * From CEikAppUi.
+   * Takes care of command handling.
+   *
+   * @since S60 v5.0
+   * @param aCommand Command to be handled.
+   */
+  void HandleCommandL( TInt aCommand );
 
-	/**
+  /**
      * From CEikAppUi.
      * Handles Window Server events.
      *
@@ -445,18 +456,18 @@
      */
     void HandleWsEventL( const TWsEvent& aEvent, CCoeControl* aDestination );
 
-	/**
+  /**
      * Indicates if root (main) view is displayed.
      *
      * @since S60 v5.0
      * @return ETrue if root displayed, EFalse otherwise.
      */
-	TBool IsRootdisplayedL();
+  TBool IsRootdisplayedL();
 
-	/**
-	 * Handles pen down events for an item.
-	 *
-	 * @since S60 v5.0
+  /**
+   * Handles pen down events for an item.
+   *
+   * @since S60 v5.0
      * @param aIndex Item index.
      */
     void HandleHighlightItemPenDownL( TInt aIndex );
@@ -513,12 +524,12 @@
      */
     void InsertL();
 
-	/**
+  /**
      * Handles the "Back" softkey event.
      *
      * @since S60 v5.0
      */
-	void HandleBackCommandL();
+  void HandleBackCommandL();
 
     /**
      * Refreshes toolbar.
@@ -732,7 +743,7 @@
      * @since S60 v5.0
      */
     void StartLayoutSwitchFullScreen( TInt aKastorEffect
-    		= AknTransEffect::ELayoutSwitchStart);
+        = AknTransEffect::ELayoutSwitchStart);
 
     /**
      * Ends fullscreen
@@ -932,7 +943,7 @@
      */
     CMMExtensionManager* iMmExtManager;
 
-	/**
+  /**
      * Screen state.
      */
     TBool iScreenOn;
@@ -1000,11 +1011,11 @@
      */
     TBool iHasFocus;
 
-	/**
+  /**
      * ETrue if Matrix is hidden from TS which is used on startup.
      */
-	TBool isHiddenFromFS;
-	
+  TBool isHiddenFromFS;
+
     /**
      * Own.
      * Popup menu displayed after long tap.
--- a/menufw/menufwui/matrixmenu/src/mmappui.cpp	Wed Apr 14 15:47:59 2010 +0300
+++ b/menufw/menufwui/matrixmenu/src/mmappui.cpp	Tue Apr 27 16:26:12 2010 +0300
@@ -12,8 +12,8 @@
 * Contributors:
 *
 * Description:  Application UI class
-*  Version     : %version: MM_176.1.28.1.67 % << Don't touch! Updated by Synergy at check-out.
-*  Version     : %version: MM_176.1.28.1.67 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: MM_176.1.28.1.69 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: MM_176.1.28.1.69 % << Don't touch! Updated by Synergy at check-out.
 *
 */
 
@@ -93,7 +93,7 @@
     iEikonEnv->SetSystem( ETrue );
 
     TInt appUiFlags = AknLayoutUtils::PenEnabled() ?
-    	EAknEnableSkin | EAknSingleClickCompatible :
+      EAknEnableSkin | EAknSingleClickCompatible :
         EAknEnableSkin | EAknEnableMSK;
     BaseConstructL( appUiFlags );
     //hide Menu from TS at startup
@@ -213,11 +213,17 @@
         iIsKastorEffectStarted = ETrue;
         TInt lastItemIndex = iCurrentContainer->NumberOfItems() - 1;
 
-        if ( lastItemIndex >= 0 && iCurrentContainer->ItemIsFullyVisible( lastItemIndex ) &&
-        		!iCurrentContainer->IsHighlightVisible() )
-        	{
-        	iCurrentContainer->SetManualHighlightL( lastItemIndex, EFalse );
-        	}
+        if ( lastItemIndex >= 0 && iCurrentContainer->ItemIsFullyVisible( lastItemIndex )
+                && !iCurrentContainer->IsHighlightVisible() )
+            {
+            iCurrentContainer->SetManualHighlightL( lastItemIndex, EFalse );
+            }
+/*        else if( !iCurrentContainer->IsHighlightVisible()
+                && iCurrentContainer->Widget()->TopItemIndex() > -1)
+            {
+            iCurrentContainer->SetManualHighlightL(
+                    iCurrentContainer->Widget()->TopItemIndex(), EFalse );
+            } */
 
         iCurrentContainer->SetRect( ClientRect() );
         iDummyContainer->SetRect( ClientRect() );
@@ -301,9 +307,9 @@
         }
 
     if ( iCurrentContainer )
-    	{
-    	iCurrentContainer->EndLongTapL();
-    	}
+      {
+      iCurrentContainer->EndLongTapL();
+      }
     }
 
 // ---------------------------------------------------------------------------
@@ -322,18 +328,18 @@
     if( !aParams.Compare( KNullDesC8 ) )
         {
         if ( !iAppkeyHandler->IsActive() )
-        	{
+            {
             //make dummy container visible when returning
             //to menu by AppKey
-        	iDummyContainer->MakeVisible( ETrue );
+            iDummyContainer->MakeVisible( ETrue );
             RefreshUiPanesL( ETrue );
             iCurrentContainer->MakeVisible( EFalse );
             iDummyContainer->DrawNow();
             CleanupForExitL( EExitKeyApplication );
-			User::LeaveIfError( iCoeEnv->WsSession().SetWindowGroupOrdinalPosition(
-						CEikonEnv::Static()->RootWin().Identifier(), 0 ) );
-			iAppkeyHandler->StartL();
-        	}
+            User::LeaveIfError( iCoeEnv->WsSession().SetWindowGroupOrdinalPosition(
+            CEikonEnv::Static()->RootWin().Identifier(), 0 ) );
+            iAppkeyHandler->StartL();
+            }
         }
 
     // first refresh model, show afterwords
@@ -627,61 +633,61 @@
 // ---------------------------------------------------------------------------
 //
 TInt CMmAppUi::GetKastorEffectL( CHnItemModel* aItemModel )
-	{
-	TInt effect( AknTransEffect::ENone );
+  {
+  TInt effect( AknTransEffect::ENone );
     if ((IsEditMode() || iEditModeStatus == ETransitionFromEditMode)
             && !AknLayoutUtils::PenEnabled())
         {
         return effect;
         }
-	switch( aItemModel->GetItemType() )
-		{
-		case EItemTypeApplication:
-			{
-			if( !IsEditMode() && !aItemModel->IsDrmExpired() )
-				{
-				if( aItemModel->IsRunning() )
-					{
-					effect = AknTransEffect::EApplicationStartSwitchRect;
-					}
-				else
-					{
-					effect = AknTransEffect::EApplicationStartRect;
-					}
-				}
-			break;
-			}
-		case EItemTypeSuite:
-			{
-			if( !IsEditMode() )
-				{
-				effect = EMenuOpenFolderEffect;
-				iIsKastorEffectStarted = ETrue;
-				}
-			break;
-			}
-		case EItemTypeParentFolder:
-		    {
+  switch( aItemModel->GetItemType() )
+    {
+    case EItemTypeApplication:
+      {
+      if( !IsEditMode() && !aItemModel->IsDrmExpired() )
+        {
+        if( aItemModel->IsRunning() )
+          {
+          effect = AknTransEffect::EApplicationStartSwitchRect;
+          }
+        else
+          {
+          effect = AknTransEffect::EApplicationStartRect;
+          }
+        }
+      break;
+      }
+    case EItemTypeSuite:
+      {
+      if( !IsEditMode() )
+        {
+        effect = EMenuOpenFolderEffect;
+        iIsKastorEffectStarted = ETrue;
+        }
+      break;
+      }
+    case EItemTypeParentFolder:
+        {
             effect = EMenuCloseFolderEffect;
             iIsKastorEffectStarted = ETrue;
-		    break;
-		    }
-		case EItemTypeFolder:
-			{
-			if (!(IsEditMode() && aItemModel->IsDeleteLocked()))
+        break;
+        }
+    case EItemTypeFolder:
+      {
+      if (!(IsEditMode() && aItemModel->IsDeleteLocked()))
                 {
                 effect = EMenuOpenFolderEffect;
                 iIsKastorEffectStarted = ETrue;
                 }
-			break;
-			}
-		case EItemTypeUnknown:
-		default:
-			{
-			effect = AknTransEffect::ENone;
-			break;
-			}
-		}
+      break;
+      }
+    case EItemTypeUnknown:
+    default:
+      {
+      effect = AknTransEffect::ENone;
+      break;
+      }
+    }
     return effect;
     }
 
@@ -961,7 +967,7 @@
             IsEditMode() && !Layout_Meta_Data::IsPenEnabled() )
         {
         DEBUG(("_Mm_:CMmAppUi::HandleKeyPressedL - enter in edit mode"));
-		HandleCommandL( EAknSoftkeyOk );
+        HandleCommandL( EAknSoftkeyOk );
         resp = EKeyWasConsumed;
         }
 
@@ -1070,29 +1076,29 @@
 void CMmAppUi::HandleDragStopL( TInt aModelItemIndex )
     {
     MMPERF(("CMmAppUi::HandleDragStopL - START"));
-    if ( IsEditMode() )
+    if( IsEditMode() )
         {
         TInt itemId = iCurrentSuiteModel->IdByIndex( aModelItemIndex );
         TMcsItemType typeCurr =
             iCurrentSuiteModel->GetItemType( aModelItemIndex );
         TBool isOverFolder = ( AknLayoutUtils::PenEnabled() &&
             ( typeCurr == EItemTypeParentFolder || typeCurr == EItemTypeFolder ) );
-        TBool isDeleteLocked = (itemId != KErrNotFound) ?
-                    iCurrentSuiteModel->GetItemModel( itemId )->IsDeleteLocked():
-                    EFalse;
+        TBool isDeleteLocked = (itemId != KErrNotFound)
+                                ? iCurrentSuiteModel->GetItemModel( itemId )->IsDeleteLocked()
+                                : EFalse;
 
-        TBuf8< KMaxLength > beforeCustomId;
+        TBuf8<KMaxLength> beforeCustomId;
         beforeCustomId.Num( KErrNotFound );
-        if ( aModelItemIndex + 1 < iCurrentContainer->NumberOfItems() )
+        if( aModelItemIndex + 1 < iCurrentContainer->NumberOfItems() )
             {
             beforeCustomId.Num( iCurrentSuiteModel->GetItemModel(
                     iCurrentSuiteModel->IdByIndex( aModelItemIndex + 1 ) )->CustomId() );
             }
 
-        TBuf8< KMaxLength > draggedCustomId;
+        TBuf8<KMaxLength> draggedCustomId;
         draggedCustomId.Num( KErrNotFound );
         CHnItemModel* draggedModel = iCurrentSuiteModel->GetItemModel( iIdDragged );
-        if (draggedModel)
+        if( draggedModel )
             {
             draggedCustomId.Num( iCurrentSuiteModel->GetItemModel( iIdDragged )->CustomId() );
             }
@@ -1116,11 +1122,13 @@
         tempKeys->ToGenericParamListL( *eventParameters );
         CleanupStack::PopAndDestroy( tempKeys );
 
-        if ( iIdDragged != itemId
-                && isOverFolder && !isDeleteLocked)
+        TBool allowMoveInto = iCurrentContainer->AllowMove();
+
+        if( iIdDragged != itemId && isOverFolder && !isDeleteLocked
+                && allowMoveInto )
             {
             iCurrentSuiteModel->RemoveItemL( iIdDragged );
-            if ( iItemDragged < aModelItemIndex )
+            if( iItemDragged < aModelItemIndex )
                 {
                 // indices of all items after iItemDragged have been
                 // decreased when the dragged item got removed from the
@@ -1136,30 +1144,30 @@
             iHNInterface->TriggerHnEventL( KKeyIdMoveInto, itemId, eventParameters );
             iMakeHightlightedItemFullyVisible = ETrue;
             }
-        else if ( iIdDragged == itemId )
+        else if( iIdDragged == itemId )
             {
             iCurrentContainer->CancelDragL( ETrue );
-            TBool result = iHNInterface->TriggerHnEventL( KKeyIdMove, itemId, eventParameters );
+            iCurrentContainer->SetTriggerMoveItemL( itemId, eventParameters );
             // fix for: edit->move, then LSK->Up->LSK->LSK FAST... (short options show up)
-            if ( result != KErrNone && !AknLayoutUtils::PenEnabled() )
-				{
-				CLiwGenericParamList* paramList = CLiwGenericParamList::NewLC();
-				TLiwGenericParam command(KHnRequest, TLiwVariant( KEvaluateMdModel));
-				paramList->AppendL(command);
-				HandleRequestL(*paramList);
-				CleanupStack::PopAndDestroy(paramList);
-				}
+            if( !AknLayoutUtils::PenEnabled() )
+                {
+                CLiwGenericParamList* paramList = CLiwGenericParamList::NewLC();
+                TLiwGenericParam command(KHnRequest, TLiwVariant( KEvaluateMdModel));
+                paramList->AppendL( command );
+                HandleRequestL( *paramList );
+                CleanupStack::PopAndDestroy( paramList );
+                }
             }
         else
             {
             iCurrentContainer->CancelDragL( ETrue );
-            if (!AknLayoutUtils::PenEnabled())
+            if( !AknLayoutUtils::PenEnabled() )
                 {
                 CLiwGenericParamList* paramList = CLiwGenericParamList::NewLC();
                 TLiwGenericParam command(KHnRequest, TLiwVariant( KEvaluateMdModel));
-                paramList->AppendL(command);
-                HandleRequestL(*paramList);
-                CleanupStack::PopAndDestroy(paramList);
+                paramList->AppendL( command );
+                HandleRequestL( *paramList );
+                CleanupStack::PopAndDestroy( paramList );
                 }
             }
 
@@ -1213,9 +1221,9 @@
         HandleHighlightItemSingleClickedL(  iCurrentContainer->Widget()->CurrentItemIndex() );
         }
     else if ( aEventType == MEikListBoxObserver::EEventPanningStarted )
-    	{
-    	iKeyClickLocked = ETrue;
-    	}
+      {
+      iKeyClickLocked = ETrue;
+      }
 
     DEBUG(("_Mm_:CMmAppUi::HandleListBoxEventL OUT"));
     }
@@ -1225,13 +1233,13 @@
 // ---------------------------------------------------------------------------
 //
 void CMmAppUi::HandleLongTapEventL( const TPoint& aPenEventLocation )
-	{
+  {
     TBool popupMenuDisplayed(EFalse);
-	if (iPopupMenu)
-    	{
-    	delete iPopupMenu;
-    	iPopupMenu = NULL;
-    	}
+  if (iPopupMenu)
+      {
+      delete iPopupMenu;
+      iPopupMenu = NULL;
+      }
     iPopupMenu = CAknStylusPopUpMenu::NewL(this,aPenEventLocation);
 
     if ( AknLayoutUtils::LayoutMirrored() )
@@ -1246,71 +1254,71 @@
         }
 
     if( iCurrentSuiteModel == iHNInterface->GetLastSuiteModelL()
-    		&& iCurrentContainer->IsHighlightVisible()
-    		&& iCurrentContainer->GetSuiteModelL()->GetItemModelsCount() > 1 )
-    	{
-		MMPERF(("CMmAppUi::DynInitMenuPaneL - START"));
-		//fill the main menu structure, look for cascade menus
-		//reset the helper hash map
-		iCascadeMenuMap.Close();
+        && iCurrentContainer->IsHighlightVisible()
+        && iCurrentContainer->GetSuiteModelL()->GetItemModelsCount() > 1 )
+      {
+    MMPERF(("CMmAppUi::DynInitMenuPaneL - START"));
+    //fill the main menu structure, look for cascade menus
+    //reset the helper hash map
+    iCascadeMenuMap.Close();
 
-		MHnMenuItemModelIterator* menuIterator =
-			iCurrentSuiteModel->GetMenuStructureL(
-				iCurrentSuiteModel->IdByIndex(
-						iCurrentContainer->GetHighlight() ) );
+    MHnMenuItemModelIterator* menuIterator =
+      iCurrentSuiteModel->GetMenuStructureL(
+        iCurrentSuiteModel->IdByIndex(
+            iCurrentContainer->GetHighlight() ) );
 
-		// check if there is a menu structure available
-		// for the specified item
-		if ( menuIterator )
-			{
-			//create item sorting helper objects
-			RArray<TInt> positionArray;
-			CleanupClosePushL( positionArray );
-			RHashMap<TInt, CEikMenuPaneItem::SData> menuItemMap;
-			CleanupClosePushL( menuItemMap );
+    // check if there is a menu structure available
+    // for the specified item
+    if ( menuIterator )
+      {
+      //create item sorting helper objects
+      RArray<TInt> positionArray;
+      CleanupClosePushL( positionArray );
+      RHashMap<TInt, CEikMenuPaneItem::SData> menuItemMap;
+      CleanupClosePushL( menuItemMap );
 
             while ( menuIterator->HasNextSpecific() )
                 {
                 CHnMenuItemModel* childItem = menuIterator->GetNextSpecific();
-				CEikMenuPaneItem::SData childData;
-				childData.iCommandId = childItem->Command();
-				childData.iText = childItem->NameL().
-					Left( CEikMenuPaneItem::SData::ENominalTextLength );
-				childData.iFlags = 0;
-				childData.iCascadeId = 0;
+        CEikMenuPaneItem::SData childData;
+        childData.iCommandId = childItem->Command();
+        childData.iText = childItem->NameL().
+          Left( CEikMenuPaneItem::SData::ENominalTextLength );
+        childData.iFlags = 0;
+        childData.iCascadeId = 0;
 
-				positionArray.AppendL( childItem->Position() );
-				menuItemMap.InsertL( childItem->Position(), childData );
+        positionArray.AppendL( childItem->Position() );
+        menuItemMap.InsertL( childItem->Position(), childData );
                 }
 
-			positionArray.Sort();
+      positionArray.Sort();
 
-			//add items in correct order
-			for ( TInt i = 0; i < positionArray.Count(); ++i )
-				{
-				iPopupMenu->
-					AddMenuItemL(
-						menuItemMap.FindL( positionArray[i] ).iText,
-						menuItemMap.FindL( positionArray[i] ).iCommandId );
-				}
+      //add items in correct order
+      for ( TInt i = 0; i < positionArray.Count(); ++i )
+        {
+        iPopupMenu->
+          AddMenuItemL(
+            menuItemMap.FindL( positionArray[i] ).iText,
+            menuItemMap.FindL( positionArray[i] ).iCommandId );
+        }
 
-			if (positionArray.Count()>0)
-				{
-				iPopupMenu->ShowMenu();
-				popupMenuDisplayed = ETrue;
-				}
-			CleanupStack::PopAndDestroy( &menuItemMap );
-			CleanupStack::PopAndDestroy( &positionArray );
-			}
-		MMPERF(("CMmAppUi::DynInitMenuPaneL - STOP"));
-		}
+      if (positionArray.Count()>0)
+        {
+        iPopupMenu->ShowMenu();
+        popupMenuDisplayed = ETrue;
+        }
+      CleanupStack::PopAndDestroy( &menuItemMap );
+      CleanupStack::PopAndDestroy( &positionArray );
+      }
+    MMPERF(("CMmAppUi::DynInitMenuPaneL - STOP"));
+    }
 
-	if ( !popupMenuDisplayed && iCurrentContainer )
-		{
-		iCurrentContainer->EndLongTapL( ETrue );
-		HandleHighlightItemSingleClickedL(
-				iCurrentContainer->Widget()->CurrentItemIndex() );
-		}
+  if ( !popupMenuDisplayed && iCurrentContainer )
+    {
+    iCurrentContainer->EndLongTapL( ETrue );
+    HandleHighlightItemSingleClickedL(
+        iCurrentContainer->Widget()->CurrentItemIndex() );
+    }
     }
 
 // ---------------------------------------------------------------------------
@@ -1320,7 +1328,7 @@
 void CMmAppUi::HandleHighlightItemDoubleClickedL( TInt aIndex )
     {
     if ( iKeyClickLocked )
-    	return;
+      return;
 
     if ( iCurrentSuiteModel->WidgetType() == EListWidget
         && iCurrentContainer->GetPreviousHighlight() == aIndex )
@@ -1439,9 +1447,9 @@
         RefreshCbaL();
         iGarbage.ResetAndDestroy();
         ResetContainerMap();
-	    iCurrentSuiteModel = NULL;
-	    iCurrentContainer = NULL;
-	    }
+      iCurrentSuiteModel = NULL;
+      iCurrentContainer = NULL;
+      }
 
     TRAPD( err, iHNInterface->LoadSuitesFromUriL( aMessage ) );
 
@@ -1476,23 +1484,23 @@
                     {
                     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 );
                 }
 
@@ -1524,42 +1532,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();
@@ -1803,10 +1811,10 @@
         // grid and list views but no highlight should be visible
         // after opening a folder.
         TBool highlightVisibleBefore =
-            iCurrentContainer &&
-            aWidgetContainer &&
-			iCurrentContainer->IsHighlightVisible() &&
-			iCurrentContainer->WidgetType() != aWidgetContainer->WidgetType();
+                iCurrentContainer &&
+                aWidgetContainer &&
+                iCurrentContainer->IsHighlightVisible() &&
+                iCurrentContainer->WidgetType() != aWidgetContainer->WidgetType();
 
         HandleWidgetChangeRefreshL( aWidgetContainer );
 
@@ -2034,8 +2042,8 @@
 // ---------------------------------------------------------------------------
 //
 void CMmAppUi::SetEditModeL( TBool aIsEditMode )
-	{
-	MMPERF(("CMmAppUi::SetEditModeL %d - START",aIsEditMode));
+  {
+  MMPERF(("CMmAppUi::SetEditModeL %d - START",aIsEditMode));
     if ( IsEditMode() != aIsEditMode && iCurrentSuiteModel )
         {
 
@@ -2046,20 +2054,20 @@
         iCurrentContainer->StopMovingL();
 
         if ( aIsEditMode )
-        	{
-        	iEditModeStatus = ETransitionToEditMode;
-        	}
+          {
+          iEditModeStatus = ETransitionToEditMode;
+          }
         else
-        	{
-        	if ( iEditModeStatus == ETransitionToEditMode )
-        		{
-        		iEditModeStatus = EFastTransitionFromEditMode;
-        		}
-        	else
-        		{
-        		iEditModeStatus = ETransitionFromEditMode;
-        		}
-        	}
+          {
+          if ( iEditModeStatus == ETransitionToEditMode )
+            {
+            iEditModeStatus = EFastTransitionFromEditMode;
+            }
+          else
+            {
+            iEditModeStatus = ETransitionFromEditMode;
+            }
+          }
 
         HandleHighlightOffsetL( aIsEditMode ? EOffsetNext : EOffsetPrevious );
         iCurrentSuiteModel->SetSuiteHighlightL(
@@ -2109,7 +2117,7 @@
     TEventCode type = static_cast< TEventCode >( aEvent.Type() );
 
     if ( ( type == EEventFocusLost || type == KAknFullOrPartialForegroundLost )
-    		&& iCurrentContainer )
+        && iCurrentContainer )
         {
         iCurrentContainer->CacheWidgetPosition();
         }
@@ -2131,8 +2139,8 @@
         HandleFocusGainedL();
         }
     else if ( type == EEventFocusLost )
-    	{
-    	HandleFocusLostL();
+        {
+        HandleFocusLostL();
         }
     else if ( type == KAknFullOrPartialForegroundGained )
         {
@@ -2235,8 +2243,8 @@
                 }
                 break;
             case ESuiteItemsUpdated:
-            	{
-				ClearTransitionFromEditModeFlag();
+                {
+                ClearTransitionFromEditModeFlag();
                 iCurrentContainer->DrawView();
                 }
                 break;
@@ -2258,13 +2266,13 @@
 // ---------------------------------------------------------------------------
 //
 void CMmAppUi::ClearTransitionFromEditModeFlag()
-	{
-	if ( iEditModeStatus == ETransitionFromEditMode ||
-		 iEditModeStatus == EFastTransitionFromEditMode )
-		{
-		iEditModeStatus = ENoEditMode;
-		}
-	}
+  {
+  if ( iEditModeStatus == ETransitionFromEditMode ||
+     iEditModeStatus == EFastTransitionFromEditMode )
+    {
+    iEditModeStatus = ENoEditMode;
+    }
+  }
 
 // ---------------------------------------------------------------------------
 //
@@ -2373,7 +2381,7 @@
         ShowSuiteL();
         iGarbage.ResetAndDestroy();
 
-       	if ( iEditModeStatus == ETransitionToEditMode )
+         if ( iEditModeStatus == ETransitionToEditMode )
             {
             iEditModeStatus = EEditMode;
             }
@@ -2500,8 +2508,8 @@
             DEBUG(("\t_Mm_:Top item index reset"));
             iCurrentContainer->ResetWidgetPosition();
             iCurrentContainer->Widget()->UpdateScrollBarsL();
-			iCurrentContainer->MakeVisible( ETrue );
-			iCurrentContainer->DrawNow();
+      iCurrentContainer->MakeVisible( ETrue );
+      iCurrentContainer->DrawNow();
             }
         }
 
@@ -2516,7 +2524,7 @@
     {
     TInt appToShowUid(0);
     TInt idleid(0);
-    if (aExitType == EExitToIdle)
+    if (aExitType == EExitToIdle || aExitType == EExitToPhone)
         {
         User::LeaveIfError(RProperty::Get(KPSUidAiInformation, KActiveIdleUid,
                 appToShowUid));
@@ -2655,37 +2663,37 @@
     {
     DEBUG(("_Mm_:CMmAppUi::SetMiddleSoftKeyL - IN"));
     if ( iCurrentSuiteModel && !AknLayoutUtils::PenEnabled() && !IsEditMode() )
-    	{
-    	DEBUG(("\t_Mm_:suite highlight: %d",
-    	            iCurrentSuiteModel->GetSuiteHighlight()));
+      {
+      DEBUG(("\t_Mm_:suite highlight: %d",
+                  iCurrentSuiteModel->GetSuiteHighlight()));
 
-		TBool idByContainer = iCurrentContainer->IsHighlightVisible() &&
-				iCurrentContainer->GetSuiteModelL()->GetItemModelsCount() > 1;
-		TInt itemId = idByContainer ?
-			iCurrentSuiteModel->IdByIndex( iCurrentContainer->GetHighlight() ) :
-			iCurrentSuiteModel->IdByIndex( KErrNotFound );
-		CHnItemModel* itemModel = iCurrentSuiteModel->GetItemModel( itemId );
+    TBool idByContainer = iCurrentContainer->IsHighlightVisible() &&
+        iCurrentContainer->GetSuiteModelL()->GetItemModelsCount() > 1;
+    TInt itemId = idByContainer ?
+      iCurrentSuiteModel->IdByIndex( iCurrentContainer->GetHighlight() ) :
+      iCurrentSuiteModel->IdByIndex( KErrNotFound );
+    CHnItemModel* itemModel = iCurrentSuiteModel->GetItemModel( itemId );
 
-		CHnButtonModel* mskModel = NULL;
+    CHnButtonModel* mskModel = NULL;
 
-		if ( itemModel )
-			{
-			mskModel = itemModel->GetMiddleSoftKey();
-			}
+    if ( itemModel )
+      {
+      mskModel = itemModel->GetMiddleSoftKey();
+      }
 
-		if ( mskModel )
-			{
-			TInt event = (mskModel->GetEventId() == KErrNotFound) ?
-					KKeyIdSelect : mskModel->GetEventId();
-			Cba()->SetCommandL( CEikButtonGroupContainer::EMiddleSoftkeyPosition,
-					event, mskModel->GetButtonText());
-			}
-		else
-			{
-			// reset to default
-			RefreshCbaL();
-			}
-    	}
+    if ( mskModel )
+      {
+      TInt event = (mskModel->GetEventId() == KErrNotFound) ?
+          KKeyIdSelect : mskModel->GetEventId();
+      Cba()->SetCommandL( CEikButtonGroupContainer::EMiddleSoftkeyPosition,
+          event, mskModel->GetButtonText());
+      }
+    else
+      {
+      // reset to default
+      RefreshCbaL();
+      }
+      }
     DEBUG(("_Mm_:CMmAppUi::SetMiddleSoftKeyL - OUT"));
     }
 
@@ -2825,6 +2833,16 @@
 //
 // ---------------------------------------------------------------------------
 //
+void CMmAppUi::HandleTriggerMoveItemL( const TInt aRecipientId,
+        CLiwGenericParamList* aEventParameters)
+    {
+    iHNInterface->TriggerHnEventL( KKeyIdMove, aRecipientId, aEventParameters);
+    }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
 void CMmAppUi::RefreshIconsL()
     {
     iSkinChangeNeeded = EFalse;
@@ -2896,133 +2914,133 @@
 // ---------------------------------------------------------------------------
 //
 void CMmAppUi::HandleFocusGainedL()
-	{
-	DEBUG(("_Mm_:CMmAppUi::HandleWsEventL "
-			"- EEventFocusGained"));
+    {
+    DEBUG(("_Mm_:CMmAppUi::HandleWsEventL "
+      "- EEventFocusGained"));
 
-	iHasFocus = ETrue;
+    iHasFocus = ETrue;
 
     // Tricky: lack of iCurrentSuiteModel indicates that suite evaluation is in
     // progress - do not call HandlePresentationChangeL if evalution has not
     // finished.
-	if ( iCurrentContainer && !iCurrentContainer->IsVisible() &&
-	        iCurrentSuiteModel )
-		{
-		HandlePresentationChangeL( iCurrentContainer );
-		}
+    if ( iCurrentContainer && !iCurrentContainer->IsVisible() &&
+          iCurrentSuiteModel )
+        {
+        HandlePresentationChangeL( iCurrentContainer );
+        }
 
-	if ( iCurrentSuiteModel && iCurrentContainer )
-		{
-		iDummyContainer->MakeVisible( EFalse );
-		iCurrentContainer->MakeVisible( ETrue );
-		iCurrentContainer->DrawNow();
-		}
-	if( IsForeground() )
-		{
-		RefreshUiPanesL();
-		}
-	if ( iCurrentContainer )
-	    {
-	    iCurrentContainer->SetHasFocusL( ETrue );
-	    }
-	if ( iCurrentSuiteModel )
+    if ( iCurrentSuiteModel && iCurrentContainer )
+        {
+        iDummyContainer->MakeVisible( EFalse );
+        iCurrentContainer->MakeVisible( ETrue );
+        iCurrentContainer->DrawNow();
+        }
+    if( IsForeground() )
+        {
+        RefreshUiPanesL();
+        }
+    if ( iCurrentContainer )
+        {
+        iCurrentContainer->SetHasFocusL( ETrue );
+        }
+    if ( iCurrentSuiteModel )
         {
         iCurrentSuiteModel->SetVisibleL( ETrue );
         }
-	}
+    }
 
 // ---------------------------------------------------------------------------
 //
 // ---------------------------------------------------------------------------
 //
 void CMmAppUi::HandleFocusLostL()
-	{
-	DEBUG(("_Mm_:CMmAppUi::HandleWsEventL "
-			"- EEventFocusLost"));
+  {
+  DEBUG(("_Mm_:CMmAppUi::HandleWsEventL "
+      "- EEventFocusLost"));
 
-	iHasFocus = EFalse;
+  iHasFocus = EFalse;
 
-	if( iCurrentContainer )
-		{
-		//This is needed in case some popup is displayed
-		//while touching item in grid. Highlight
-		//should be reset to normal then.
-		if( AknLayoutUtils::PenEnabled() )
-			{
-			if( iCurrentContainer->WidgetType() == EGridWidget && !IsEditMode() )
-				{
-				iCurrentContainer->Widget()->View()->ItemDrawer()->
-					SetFlags( CListItemDrawer::EDisableHighlight );
-				}
-			iCurrentContainer->Widget()->View()->
-			ItemDrawer()->ClearFlags( CListItemDrawer::EPressedDownState );
-			iCurrentContainer->Widget()->View()->DrawItem(
-							  iCurrentContainer->Widget()->CurrentItemIndex() ) ;
-			}
-		if( IsEditMode() && iCurrentContainer->IsDraggable() )
-			{
-			HandleDragStopL( iCurrentContainer->GetHighlight() );
-			iCurrentContainer->DrawNow();
-			}
-		iCurrentContainer->SetHasFocusL( EFalse );
-		}
-	if ( iCurrentSuiteModel )
-		{
-		iCurrentSuiteModel->SetVisibleL( EFalse );
-		}
+  if( iCurrentContainer )
+    {
+    //This is needed in case some popup is displayed
+    //while touching item in grid. Highlight
+    //should be reset to normal then.
+    if( AknLayoutUtils::PenEnabled() )
+      {
+      if( iCurrentContainer->WidgetType() == EGridWidget && !IsEditMode() )
+        {
+        iCurrentContainer->Widget()->View()->ItemDrawer()->
+          SetFlags( CListItemDrawer::EDisableHighlight );
+        }
+      iCurrentContainer->Widget()->View()->
+      ItemDrawer()->ClearFlags( CListItemDrawer::EPressedDownState );
+      iCurrentContainer->Widget()->View()->DrawItem(
+                iCurrentContainer->Widget()->CurrentItemIndex() ) ;
+      }
+    if( IsEditMode() && iCurrentContainer->IsDraggable() )
+      {
+      HandleDragStopL( iCurrentContainer->GetHighlight() );
+      iCurrentContainer->DrawNow();
+      }
+    iCurrentContainer->SetHasFocusL( EFalse );
+    }
+  if ( iCurrentSuiteModel )
+    {
+    iCurrentSuiteModel->SetVisibleL( EFalse );
+    }
 
-	}
+  }
 
 // ---------------------------------------------------------------------------
 //
 // ---------------------------------------------------------------------------
 //
 void CMmAppUi::HandleFullOrPartialForegroundGainedL()
-	{
-		DEBUG(("_Mm_:CMmAppUi::HandleWsEventL "
-						"- KAknFullOrPartialForegroundGained"));
+  {
+    DEBUG(("_Mm_:CMmAppUi::HandleWsEventL "
+            "- KAknFullOrPartialForegroundGained"));
     //show Menu in TS when launched for the first time
     if( isHiddenFromFS )
         {
         HideApplicationFromFSW( EFalse );
         isHiddenFromFS = EFalse;
         }
-	
-	if (iCurrentContainer && iCurrentSuiteModel )
-		{
-		iCurrentContainer->HandleForegroundGainedL();
-		iDummyContainer->MakeVisible( EFalse );
-		iCurrentContainer->MakeVisible( ETrue );
-		RefreshUiPanesL();
-		}
-	if (iSkinChangeNeeded && !iSkinChangeInProgress)
-		{
-		MAknsSkinInstance* skinInstance = AknsUtils::SkinInstance();
-		if (skinInstance && !skinInstance->IsUpdateInProgress())
-			{
-			RefreshIconsL();
 
-			}
-		}
-	}
+  if (iCurrentContainer && iCurrentSuiteModel )
+    {
+    iCurrentContainer->HandleForegroundGainedL();
+    iDummyContainer->MakeVisible( EFalse );
+    iCurrentContainer->MakeVisible( ETrue );
+    RefreshUiPanesL();
+    }
+  if (iSkinChangeNeeded && !iSkinChangeInProgress)
+    {
+    MAknsSkinInstance* skinInstance = AknsUtils::SkinInstance();
+    if (skinInstance && !skinInstance->IsUpdateInProgress())
+      {
+      RefreshIconsL();
+
+      }
+    }
+  }
 
 // ---------------------------------------------------------------------------
 //
 // ---------------------------------------------------------------------------
 //
 void CMmAppUi::HandleFullOrPartialForegroundLostL()
-	{
-	DEBUG(("_Mm_:CMmAppUi::HandleWsEventL "
-			"- KAknFullOrPartialForegroundLost"));
-	if ( iCurrentContainer )
-		{
-		iCurrentContainer->HandleBackgroundGainedL();
-		if ( IsRootdisplayedL() )
-			{
-			iCurrentContainer->RestoreWidgetPosition();
-			iCurrentContainer->CacheWidgetPosition();
-			}
-		}
-	}
+  {
+  DEBUG(("_Mm_:CMmAppUi::HandleWsEventL "
+      "- KAknFullOrPartialForegroundLost"));
+  if ( iCurrentContainer )
+    {
+    iCurrentContainer->HandleBackgroundGainedL();
+    if ( IsRootdisplayedL() )
+      {
+      iCurrentContainer->RestoreWidgetPosition();
+      iCurrentContainer->CacheWidgetPosition();
+      }
+    }
+  }
 
 // End of File
--- a/menufw/menufwui/mmwidgets/bwins/mmwidgetsu.def	Wed Apr 14 15:47:59 2010 +0300
+++ b/menufw/menufwui/mmwidgets/bwins/mmwidgetsu.def	Tue Apr 27 16:26:12 2010 +0300
@@ -37,4 +37,6 @@
 	?CacheWidgetPosition@CMmWidgetContainer@@QAEXXZ @ 36 NONAME ; void CMmWidgetContainer::CacheWidgetPosition(void)
 	?SetIsFaded@CMmWidgetContainer@@QAEXH@Z @ 37 NONAME ; void CMmWidgetContainer::SetIsFaded(int)
 	?CancelDragL@CMmWidgetContainer@@QAEXH@Z @ 38 NONAME ; void CMmWidgetContainer::CancelDragL(int)
+	?AllowMove@CMmWidgetContainer@@QBEHXZ @ 39 NONAME ; int CMmWidgetContainer::AllowMove(void) const
+	?SetTriggerMoveItemL@CMmWidgetContainer@@QAEXHPAVCLiwGenericParamList@@@Z @ 40 NONAME ; void CMmWidgetContainer::SetTriggerMoveItemL(int, class CLiwGenericParamList *)
 
--- a/menufw/menufwui/mmwidgets/eabi/mmwidgetsu.def	Wed Apr 14 15:47:59 2010 +0300
+++ b/menufw/menufwui/mmwidgets/eabi/mmwidgetsu.def	Tue Apr 27 16:26:12 2010 +0300
@@ -38,4 +38,6 @@
 	_ZN19CMmListBoxContainer20SetDefaultHighlightLEi @ 37 NONAME
 	_ZThn52_N18CMmWidgetContainer23HandleBackgroundGainedLEv @ 38 NONAME
 	_ZThn52_N18CMmWidgetContainer23HandleForegroundGainedLEv @ 39 NONAME
+	_ZN18CMmWidgetContainer19SetTriggerMoveItemLEiP20CLiwGenericParamList @ 40 NONAME
+	_ZNK18CMmWidgetContainer9AllowMoveEv @ 41 NONAME
 
--- a/menufw/menufwui/mmwidgets/inc/mmdraganddropobserver.h	Wed Apr 14 15:47:59 2010 +0300
+++ b/menufw/menufwui/mmwidgets/inc/mmdraganddropobserver.h	Tue Apr 27 16:26:12 2010 +0300
@@ -24,7 +24,7 @@
  *  Whenever a drag begins HandleDragStartL() is invoked.
  *  When the highlight changes during drag, HandleDragOverL() is invoked.
  *  When item is dropped, HandleDragStopL() is invoked.
- *  The set of the three methods fully notifies the observer about the state 
+ *  The set of the three methods fully notifies the observer about the state
  *  of the drag.
  *
  *  @code
@@ -52,7 +52,7 @@
      * @param aModelItemIndex Index of item that the dragged item hovers over.
      */
     virtual void HandleDragOverL( TInt aModelItemIndex ) = 0;
-    
+
     /**
      * Method is invoked on the observer, when the item is dropped.
      *
@@ -60,7 +60,7 @@
      * @param aModelItemIndex Index of item on which the draging stops.
      */
     virtual void HandleDragStopL( TInt aModelItemIndex ) = 0;
-    
+
     /**
      * Method is invoked on the observer, when the dragged item index changes.
      *
@@ -68,7 +68,17 @@
      * @param aModelItemIndex Index of item on which the draging stops.
      */
     virtual void HandleDraggedIndexUpdatedL( TInt aModelItemIndex ) = 0;
-    
+
+    /**
+     * Method is invoked on the observer, when the move item event is needed.
+     *
+     * @since S60 v5.0
+     * @param aRecipientId Index of item on which the move event invokes.
+     * @param aEventParameters Event parameters.
+     */
+    virtual void HandleTriggerMoveItemL( const TInt aRecipientId,
+                CLiwGenericParamList* aEventParameters) = 0;
+
     };
-    
+
 #endif // M_MMDRAGANDDROPOBSERVER_H
--- a/menufw/menufwui/mmwidgets/inc/mmdraweranimator.h	Wed Apr 14 15:47:59 2010 +0300
+++ b/menufw/menufwui/mmwidgets/inc/mmdraweranimator.h	Tue Apr 27 16:26:12 2010 +0300
@@ -22,11 +22,12 @@
 
 #include <e32base.h>
 #include <e32std.h>
+
 #ifdef RD_UI_TRANSITION_EFFECTS_LIST
 #include <aknlistloadertfx.h>
 #include <aknlistboxtfxinternal.h>
 #include <aknlistboxtfx.h>
-#endif 
+#endif
 class CMmListBoxItemDrawer;
 class TMmFloatingItem;
 
@@ -56,11 +57,11 @@
  */
 NONSHARABLE_CLASS( CMmDrawerAnimator ) : public CActive
     {
-    
+
 public:
     /**
      * Two-phased constructor.
-     * 
+     *
      * @since S60 v5.0
      * @param aDrawer Item drawer used to draw item.
      */
@@ -68,15 +69,15 @@
 
     /**
      * Two-phased constructor.
-     * 
+     *
      * @since S60 v5.0
      * @param aDrawer Item drawer used to draw item.
      */
     static CMmDrawerAnimator* NewLC( CMmListBoxItemDrawer& aDrawer );
-    
+
     /**
      * Destructor.
-     * 
+     *
      * @since S60 v5.0
      */
     virtual ~CMmDrawerAnimator();
@@ -90,9 +91,9 @@
      * @since S60 v5.0
      */
     void AnimateDragItemTransitionL( );
-    
+
     /**
-     * Animates an item with index aItemFrom into position 
+     * Animates an item with index aItemFrom into position
      * indexed by aItemTo.
      *
      * @since S60 v5.0
@@ -117,14 +118,14 @@
      * @return Is system ready so new animation can proceed.
      */
     TBool IsReadyForNewAnimation();
-    
+
     /**
      * Cancel currently running or pending animations.
      *
      * @since S60 v5.0
      */
     void CancelAnimationsL();
-    
+
     /**
      * Triggers animation.
      * This methods sets the Activeobject into active state
@@ -134,41 +135,39 @@
      * @return Error code
      */
     TInt Trigger();
-    
-    /**
-     * Marks next redraw to be cancelled.
-     * 
-     * @return Indicates if redraw occured due to cancel.
-     */
-    TBool CancelNextRedrawL();
-    
+
     /**
      * Make the next animation redraw the whole screen;
      */
     void SetNextRedrawToWholeScreen();
-    
+
     /**
      * Indicates that draweranimator is in garbage.
-     * This is used when suite model has been destroyed so there isn't 
-     * anything to draw, therefore any animator attempts should be 
+     * This is used when suite model has been destroyed so there isn't
+     * anything to draw, therefore any animator attempts should be
      * dropped.
      */
     void PrepareForGarbage();
-    
+
+    /**
+     * Calls move event.
+     */
+    void TriggerMoveItemL();
+
 private:
-	
+
     /**
      * Default constructor.
-     * 
+     *
      * @since S60 v3.0
      * @param aDrawer Object used to draw items in widgets.
      */
     CMmDrawerAnimator( CMmListBoxItemDrawer& aDrawer );
-    
+
     /**
      * 2nd phase constructor.
      *
-     * @since S60 v3.0 
+     * @since S60 v3.0
      */
     void ConstructL();
 
@@ -196,10 +195,10 @@
      * @return Error code for error handling.
      */
     TInt RunError( TInt aError );
-    
+
     /**
      * Adjusts rect to non touch.
-     * 
+     *
      * @since S60 v3.0
      * @param aRefreshRect Refresh rect.
      * @return Adjusted rect.
@@ -207,67 +206,67 @@
     TRect AdjustRefreshRectToNonTouch( const TRect& aRefreshRect );
 
 private: // Data
-	
+
     /**
      * Timer
-     */  
+     */
     RTimer iTimer;
-    
+
     /**
      * Associated item drawer.
-     */  
+     */
     CMmListBoxItemDrawer& iDrawer;
-    
+
     /**
      * Number of animation frames
-     */  
+     */
     TInt iAnimateFrames;
 
     /**
      * Delay between redrawing.
-     */  
+     */
     TTimeIntervalMicroSeconds iDelay;
-   
+
     /**
      * Last redraw time
-     */  
+     */
     TTime iLastRedrawTime;
-      
+
     /**
      * Effects api.
-     */  
+     */
     MAknListBoxTfx *iTransTfx;
-    
+
     /**
      * Effects api.
-     */  
+     */
     MAknListBoxTfxInternal *iTransTfxInternal;
-    
+
     /**
      * Highlight noted when last redraw occured.
      */
     TInt iLastNotedHighlight;
-    
+
     /**
      * Top item index noted when last redraw occured.
      */
     TInt iLastNotedTopItem;
-    
+
     /**
      * Vertical offset noted when last redraw occured.
      */
     TInt iLastNotedVerticalOffset;
-    
+
     /**
      * Holds the previous animation refresh rectangle.
      */
     TRect iPreviousRefreshRect;
-    
+
     /**
      * Holds the number of frames to animate.
      */
     const TInt iUsualAnimationFramesCount;
-    
+
     /**
      * Holds the previous animation refresh rectangle.
      */
--- a/menufw/menufwui/mmwidgets/inc/mmlistboxitemdrawer.h	Wed Apr 14 15:47:59 2010 +0300
+++ b/menufw/menufwui/mmwidgets/inc/mmlistboxitemdrawer.h	Tue Apr 27 16:26:12 2010 +0300
@@ -12,7 +12,7 @@
 * Contributors:
 *
 * Description:  CMmListBoxItemDrawer
-*  Version     : %version: MM_38.1.16 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: MM_38.1.17 % << Don't touch! Updated by Synergy at check-out.
 *
 */
 
@@ -238,6 +238,14 @@
     void SetRedrawItemBackground( TBool aRedraw );
 
     /**
+     * Sets condition if separator line should be drawn.
+     *
+     * @since S60 v3.0
+     * @param aRedraw Should separator line be drawn.
+     */
+    void SetDrawSeparatorLines( TBool aDraw );
+
+    /**
      * Checks if item background redrawing is enabled.
      *
      * @since S60 v3.0
@@ -470,12 +478,12 @@
 	void SetHighlightShown( TBool aDrawn );
 
     /**
-     * Draws background and separator lines.
+     * Draws background.
      *
      * @since S60 v3.0
      * @param aItemTextRect Item rectangle.
      */
-    void DrawBackgroundAndSeparatorLines( const TRect& aItemTextRect ) const;
+    void DrawBackground( const TRect& aItemTextRect ) const;
 
 protected:
     /**
@@ -800,6 +808,11 @@
     TBool iRedrawBackground;
 
     /**
+     * Draw separators flag.
+     */
+    TBool iDrawSeparatorLines;
+
+    /**
      * Ratio of zooming animation.
      */
     TReal iIconAnimationZoomRatio;
--- a/menufw/menufwui/mmwidgets/inc/mmlistboxview.h	Wed Apr 14 15:47:59 2010 +0300
+++ b/menufw/menufwui/mmwidgets/inc/mmlistboxview.h	Tue Apr 27 16:26:12 2010 +0300
@@ -12,7 +12,7 @@
 * Contributors:
 *
 * Description:  
-*  Version     : %version: MM_12.1.6 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: MM_12.1.7 % << Don't touch! Updated by Synergy at check-out.
 *
 */
 
@@ -210,6 +210,13 @@
      */
     void DisableScrollToItem( TBool aDisable );
 
+    /**
+     * Gets number of items in model.
+     *
+     * @return
+     */
+    TInt ModelItemsCount();
+
 private:
 
     /**
--- a/menufw/menufwui/mmwidgets/inc/mmwidgetcontainer.h	Wed Apr 14 15:47:59 2010 +0300
+++ b/menufw/menufwui/mmwidgets/inc/mmwidgetcontainer.h	Tue Apr 27 16:26:12 2010 +0300
@@ -30,6 +30,7 @@
 #include <AknsLayeredBackgroundControlContext.h>
 #include <AknsListBoxBackgroundControlContext.h>
 #include <aknlongtapdetector.h>
+#include <liwgenericparam.h>
 
 #include "hnsuiteobserver.h"
 #include "mmvisibilityobserver.h"
@@ -62,7 +63,7 @@
  * @ingroup group_mmwidgets
  */
 class TMmWidgetPosition
-	{
+  {
 public:
     /**
      * Default constructor.
@@ -71,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.
@@ -114,7 +115,7 @@
                                          public MMmVisibilityObserver,
                                          public MEikListBoxObserver,
                                          public MAknLongTapDetectorCallBack
-	{
+  {
 public:
 
     /**
@@ -142,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.
@@ -157,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.
@@ -165,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.
@@ -173,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.
@@ -181,22 +182,22 @@
      * @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.
      *
      * @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();
 
 
     /**
@@ -204,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.
@@ -219,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.
@@ -260,7 +261,7 @@
      * @since S60 v3.0
      * @return Model.
      */
-	virtual CMmListBoxModel* GetMmModel() = 0;
+  virtual CMmListBoxModel* GetMmModel() = 0;
 
     /**
      * Sets widget observer.
@@ -268,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.
@@ -277,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.
@@ -285,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.
@@ -293,7 +294,7 @@
      * @since S60 v3.0
      * @param Flag Flag.
      */
-	virtual void SetFlag(TInt Flag);
+  virtual void SetFlag(TInt Flag);
 
     /**
      * Gets widget.
@@ -301,7 +302,7 @@
      * @since S60 v3.0
      * @return Widget.
      */
-	virtual CEikListBox* Widget();
+  virtual CEikListBox* Widget();
 
     /**
      * Sets background context for item drawer and view.
@@ -309,8 +310,8 @@
      * @since S60 v3.0
      * @param aBgContext Background context.
      */
-	virtual void SetItemDrawerAndViewBgContext(
-			CAknsBasicBackgroundControlContext * aBgContext ) =0;
+  virtual void SetItemDrawerAndViewBgContext(
+      CAknsBasicBackgroundControlContext * aBgContext ) =0;
 
     /**
      * Sets edit mode so UI is aware.
@@ -318,7 +319,7 @@
      * @since S60 v3.0
      * @param aIsEditMode Is edit mode.
      */
-	virtual void SetEditModeL( TBool aIsEditMode );
+  virtual void SetEditModeL( TBool aIsEditMode );
 
     /**
      * Tells if UI is aware of edit mode.
@@ -326,32 +327,32 @@
      * @since S60 v5.0
      * @return Edit mode status.
      */
-	virtual TBool IsEditMode() const;
+  virtual TBool IsEditMode() const;
 
     /**
      * Sets up widget layout (needed for grid).
      *
      * @since S60 v3.0
      */
-	virtual void SetupWidgetLayoutL() =0;
+  virtual void SetupWidgetLayoutL() =0;
 
     /**
      * Constructor.
      */
-	CMmWidgetContainer();
+  CMmWidgetContainer();
 
     /**
      * Destructor.
      */
     ~CMmWidgetContainer();
-    
+
     /**
      * Enables/disables animation during long tap.
      * Tactile feedback is also enabled and disabled with the animation.
      * Changes made with this method will be effective on the next long
      * tap, i.e. it is not possible to stop an already started animation
      * by using this method.
-     * 
+     *
      * @param aEnable ETrue - enable, EFalse - disable long tap animation
      *                and long tap tactile feedback
      */
@@ -404,7 +405,7 @@
      * @param aPointerEvent Pointer event.
      */
     void HandlePointerEventsInEditModeL(const TPointerEvent& aPointerEvent,
-    		TBool aAbortAnimations );
+        TBool aAbortAnimations );
 
     /**
      * Set draggable.
@@ -655,14 +656,38 @@
      * if marquee animation can be enabled.
      */
     IMPORT_C void SetIsFaded( TBool aIsFaded );
-    
+
     /**
      * Determines if long tap is in progress.
-     * 
+     *
      * @return ETrue if long tap is in progress.
      */
     TBool LongTapInProgress() const;
 
+    /**
+     * Determines if folder can be moved to another one.
+     */
+    IMPORT_C TBool AllowMove() const;
+
+    /**
+     * Sets allow move param.
+     * @param aAllowMove. ETrue if move item is allowed.
+     */
+    void SetAllowMove( TBool aAllowMove );
+
+    /**
+     * Sets parameters for move event.
+     * @param aRecipientId Item id to be moved.
+     * @param aEventParameters Event parameters.
+     */
+    IMPORT_C void SetTriggerMoveItemL( const TInt aRecipientId,
+                CLiwGenericParamList* aEventParameters );
+
+    /**
+     * Calls move event.
+     */
+    void TriggerMoveItemL();
+
 public: // from MMmVisibilityObserver
 
     /**
@@ -703,7 +728,7 @@
      *
      * @since S60 v3.0
      */
-	void ConstructL();
+  void ConstructL();
 
     /**
      * Sets highlight locally.
@@ -712,9 +737,9 @@
      * @since S60 v3.0
      * @param aItemIndex Index of the item.
      */
-	void SetHighlightL(TInt aItemIndex);
+  void SetHighlightL(TInt aItemIndex);
 
-	/**
+  /**
      * Checks whether given point collides with specific item's re-order area.
      *
      * This function gets called during drag-and-drop operations to
@@ -755,13 +780,13 @@
 
 private:
 
-	 /**
-	 * Called when the number of items in widget model changed.
-	 * @since S60 v5.0
-	 *
-	 * @param aChange Type of change
-	 */
-	void HandleNumberOfItemsChangedL( TItemsChangeType aChange );
+   /**
+   * Called when the number of items in widget model changed.
+   * @since S60 v5.0
+   *
+   * @param aChange Type of change
+   */
+  void HandleNumberOfItemsChangedL( TItemsChangeType aChange );
 
     /**
      * Manages zooming of folder.
@@ -769,7 +794,7 @@
      * @since S60 v3.0
      * @param aDraggedItemOverIcons Is dragged over icons flag.
      */
-	void ManageFolderZoomingL( TBool aDraggedItemOverIcons );
+  void ManageFolderZoomingL( TBool aDraggedItemOverIcons );
 
     /**
      * Cancels gragging of item if relevant( Edit Mode is activated )
@@ -807,7 +832,7 @@
      * @return Distance between two points in pixels.
      */
     TInt DeltaSquare( const TPoint aTapPoint,
-    		const TPoint aPos );
+        const TPoint aPos );
 
     /**
      * Checks, whether given item is a folder or root folder.
@@ -817,17 +842,17 @@
     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 IsDeleteLockedL( TInt aItemIndex );
 
-	/**
-	 * Gets column count in current view.
-	 * @returns Column count in current view.
-	 */
-	virtual TInt ColumnsInCurrentView();
+  /**
+   * Gets column count in current view.
+   * @returns Column count in current view.
+   */
+  virtual TInt ColumnsInCurrentView();
 
     /**
      * Gets row count in current view.
@@ -835,35 +860,35 @@
      */
     virtual TInt RowsInCurrentView();
 
-	/**
-	 * Scrolls the view move mode non-touch so that move indicators are visible.
-	 */
-	void ScrollViewIfNeededL();
+  /**
+   * Scrolls the view move mode non-touch so that move indicators are visible.
+   */
+  void ScrollViewIfNeededL();
 
     /**
      * Scrolls the view in pixels.
      * @param aPixels THe number of pixels to scroll. If negative, the view is scrolled down.
      */
-	void ScrollInPixelsL( TInt aPixels );
+  void ScrollInPixelsL( TInt aPixels );
 
     /**
      * Sets up the scrolling effect movement type.
      * @param aDown True if scrolling is downwards.
      */
-	void SetupScrollingEffectsL( TBool aDown );
+  void SetupScrollingEffectsL( TBool aDown );
 
 protected:
 
 
-	/**
-	 * Own.
-	 */
-	CEikListBox* iWidget;
+  /**
+   * Own.
+   */
+  CEikListBox* iWidget;
 
     /**
      * Key event observer.
      */
-	MMmKeyEventObserver* iKeyEventObserver;
+  MMmKeyEventObserver* iKeyEventObserver;
 
     /**
      * Drag and drop observer.
@@ -888,24 +913,24 @@
 
 protected:
 
-	/**
-	 * Current Highlight.
-	 */
-	TInt iCurrentHighlight;
+  /**
+   * Current Highlight.
+   */
+  TInt iCurrentHighlight;
 
     /**
      * Has drag occurred.
      */
     TBool iDragOccured;
 
-	/**
-	 * Processed display elelments for better performance.
-	 */
+  /**
+   * Processed display elelments for better performance.
+   */
     CMmPostEvaluationProcessor* iPostProcessor;
 
-	/**
-	 * Set when long tap is in progress (stylus popup displayed over container)
-	 */
+  /**
+   * Set when long tap is in progress (stylus popup displayed over container)
+   */
     TBool iLongTapInProgress;
 
 private:
@@ -915,51 +940,51 @@
      * Background context.
      * Own.
      */
-	CAknsBasicBackgroundControlContext* iBgContext;
+  CAknsBasicBackgroundControlContext* iBgContext;
 
     /**
      * Last drag point.
      */
-	TPoint iLastDragPoint;
+  TPoint iLastDragPoint;
 
     /**
      * First tap point.
      */
-	TPoint iTapPoint;
+  TPoint iTapPoint;
 
     /**
      * First tap point.
      */
-	TPoint iItemRelativeTapPoint;
+  TPoint iItemRelativeTapPoint;
 
-	/**
+  /**
      * Last drag highlight.
      */
-	TInt iLastDragHighlight;
+  TInt iLastDragHighlight;
 
     /**
      * Dragged item index.
      */
-	TBool iDraggedIndex;
+  TBool iDraggedIndex;
 
     /**
      * Edit mode status.
      */
-	TBool iIsEditMode;
+  TBool iIsEditMode;
 
-	/**
+  /**
      * Destination of item index.
      */
-	TInt iItemIndexDestination;
+  TInt iItemIndexDestination;
 
-	/**
+  /**
      * Previous Highlight.
      */
-	TInt iPreviousHighlight;
+  TInt iPreviousHighlight;
 
-	/**
-	 * The current rect of the widget control.
-	 */
+  /**
+   * The current rect of the widget control.
+   */
     TRect iWidgetRect;
 
     /**
@@ -969,9 +994,9 @@
      */
     TBool iAllowLongPress;
 
-	/**
-	 * Cache for widget position.
-	 */
+  /**
+   * Cache for widget position.
+   */
     TMmWidgetPosition iWidgetPositionCache;
 
     /**
@@ -1000,7 +1025,7 @@
      * Observer to notify about long tap events.
      */
     MMmLongTapObserver* iLongTapObserver;
-    
+
     /**
      * Stores previously set highlight visibility.
      * ETrue - hightlight visible, EFalse - highlight disabled.
@@ -1011,6 +1036,21 @@
      */
     TBool iPreviousHighlightVisibility;
 
-	};
+    /**
+     * Defines if move item is allowed.
+     */
+    TBool iAllowMove;
+
+    /**
+     * Defines item id to be moved.
+     */
+    TInt iRecipientId;
+
+    /**
+     * Event parameters for move item.
+     */
+    CLiwGenericParamList *iEventParameters;
+
+  };
 
 #endif // MMMWIDGETCONTAINER_H
--- a/menufw/menufwui/mmwidgets/inc/mmwidgetsconstants.h	Wed Apr 14 15:47:59 2010 +0300
+++ b/menufw/menufwui/mmwidgets/inc/mmwidgetsconstants.h	Tue Apr 27 16:26:12 2010 +0300
@@ -12,7 +12,7 @@
 * Contributors:
 *
 * Description:  Constants for the matrixmenu
-*  Version     : %version: 33.1.12 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: 33.1.13 % << Don't touch! Updated by Synergy at check-out.
 *
 */
 
@@ -27,256 +27,256 @@
  * Grid constants' namespace.
  */
 namespace MmGrid
-	{
-	/**
-	 * X component of the 4x3 layout.
-	 */
-	const TInt K4By3LayoutX = 4;
+  {
+  /**
+   * X component of the 4x3 layout.
+   */
+  const TInt K4By3LayoutX = 4;
 
-	/**
-	 * Y component of the 4x3 layout.
-	 */
-	const TInt K4By3LayoutY = 3;
+  /**
+   * Y component of the 4x3 layout.
+   */
+  const TInt K4By3LayoutY = 3;
 
-	/**
-	 * X component of the 3x4 layout.
-	 */
+  /**
+   * X component of the 3x4 layout.
+   */
 
-	const TInt K3By4LayoutX = 3;
+  const TInt K3By4LayoutX = 3;
 
-	/**
-	 * Y component of the 3x4 layout.
-	 */
-	const TInt K3By4LayoutY = 4;
+  /**
+   * Y component of the 3x4 layout.
+   */
+  const TInt K3By4LayoutY = 4;
 
-	/**
-	 * X component of the 4x5 layout.
-	 */
-	const TInt K4By5LayoutX = 4;
+  /**
+   * X component of the 4x5 layout.
+   */
+  const TInt K4By5LayoutX = 4;
 
-	/**
-	 * Y component of the 5x4 layout.
-	 */
-	const TInt K4By5LayoutY = 5;
+  /**
+   * Y component of the 5x4 layout.
+   */
+  const TInt K4By5LayoutY = 5;
 
-	/**
-	 * X component of the 5x4 layout.
-	 */
-	const TInt K5By4LayoutX = 5;
+  /**
+   * X component of the 5x4 layout.
+   */
+  const TInt K5By4LayoutX = 5;
 
-	/**
-	 * Y component of the 5x4 layout.
-	 */
-	const TInt K5By4LayoutY = 4;
+  /**
+   * Y component of the 5x4 layout.
+   */
+  const TInt K5By4LayoutY = 4;
 
-	/**
-	 * Below this value, default highlight in 3x4 grid
-	 * is set up on the first item. Otherwize, on the default
-	 * highlight.
-	 */
-	const TInt K3By4Threshold(5);
+  /**
+   * Below this value, default highlight in 3x4 grid
+   * is set up on the first item. Otherwize, on the default
+   * highlight.
+   */
+  const TInt K3By4Threshold(5);
 
-	/**
-	 * Below this value, default highlight in 4x3 grid
-	 * is set up on the first item. Otherwize, on the default
-	 * highlight.
-	 */
-	const TInt K4By3Threshold(6);
+  /**
+   * Below this value, default highlight in 4x3 grid
+   * is set up on the first item. Otherwize, on the default
+   * highlight.
+   */
+  const TInt K4By3Threshold(6);
 
-	/**
-	 * Below this value, default highlight in 5x4 grid
-	 * is set up on the first item. Otherwize, on the default
-	 * highlight.
-	 */
-	const TInt K5By4Threshold(8);
+  /**
+   * Below this value, default highlight in 5x4 grid
+   * is set up on the first item. Otherwize, on the default
+   * highlight.
+   */
+  const TInt K5By4Threshold(8);
 
-	/**
-	 * Below this value, default highlight in 4x5 grid
-	 * is set up on the first item. Otherwize, on the default
-	 * highlight.
-	 */
-	const TInt K4By5Threshold(10);
+  /**
+   * Below this value, default highlight in 4x5 grid
+   * is set up on the first item. Otherwize, on the default
+   * highlight.
+   */
+  const TInt K4By5Threshold(10);
 
-	/**
-	 * Default highlight in 3x4 grid.
-	 */
-	const TInt K3By4DefaultHighlight(4);
+  /**
+   * Default highlight in 3x4 grid.
+   */
+  const TInt K3By4DefaultHighlight(4);
 
-	/**
-	 * Default highlight in 4x3 grid.
-	 */
-	const TInt K4By3DefaultHighlight(5);
+  /**
+   * Default highlight in 4x3 grid.
+   */
+  const TInt K4By3DefaultHighlight(5);
 
-	/**
-	 * Default highlight in 5x4 grid.
-	 */
-	const TInt K5By4DefaultHighlight(7);
+  /**
+   * Default highlight in 5x4 grid.
+   */
+  const TInt K5By4DefaultHighlight(7);
 
-	/**
-	 * Default highlight in 4x5 grid.
-	 */
-	const TInt K4By5DefaultHighlight(8);
+  /**
+   * Default highlight in 4x5 grid.
+   */
+  const TInt K4By5DefaultHighlight(8);
 
-	/**
-	 * Number of rows in portrait/non-zoom mode;
-	 */
-	const TInt KRowsPortraitZoomNormal(4);
+  /**
+   * Number of rows in portrait/non-zoom mode;
+   */
+  const TInt KRowsPortraitZoomNormal(4);
 
-	/**
-	 * Number of columns in landscape/non-zoom mode;
-	 */
-	const TInt KColsPortraitZoomNormal(3);
+  /**
+   * Number of columns in landscape/non-zoom mode;
+   */
+  const TInt KColsPortraitZoomNormal(3);
 
-	/**
-	 * Number of rows in portrait/non-zoom mode;
-	 */
-	const TInt KRowsLandscapeZoomNormal(3);
+  /**
+   * Number of rows in portrait/non-zoom mode;
+   */
+  const TInt KRowsLandscapeZoomNormal(3);
 
-	/**
-	 * Number of columns in landscape/non-zoom mode;
-	 */
-	const TInt KColsLandscapeZoomNormal(4);
-	
+  /**
+   * Number of columns in landscape/non-zoom mode;
+   */
+  const TInt KColsLandscapeZoomNormal(4);
+
     /**
      * Focus based scrolling item threshold for grid.
      */
     const TReal KFocusScrollingThreshold( 0.27 );
-	}
+  }
 
 /**
  * Listbox constants' namespace.
  */
 namespace MmListBox
-	{
-	/**
-	 * Threshold value, determinign if a partial should
-	 * be shown in a list.
-	 */
-	const TInt KPartialItemShowThreshold (0);
+    {
+    /**
+     * Threshold value, determinign if a partial should
+     * be shown in a list.
+     */
+    const TInt KPartialItemShowThreshold( 0 );
 
-	/**
-	 * Default highlight in 4x5 grid.
-	 */
-	const TInt KCols(1);
-	
+    /**
+     * Default highlight in 4x5 grid.
+     */
+    const TInt KCols( 1 );
+
     /**
      * Focus based scrolling item threshold for list.
      */
     const TReal KFocusScrollingThreshold( 0.55 );
-	}
+    }
 
 /**
  * Drag and drop related constants.
  */
 namespace MmEffects
-	{
-	/**
-	 * Threshold for items shift.
-	 */
-	const TReal KShiftRatio(0.25);
+  {
+    /**
+     * Threshold for items shift.
+     */
+    const TReal KShiftRatio( 0.25 );
 
-	/**
-	 * Drag and drop speed limit.
-	 */
-	const TInt KDragSpeedIgnoreThreshold(15 * 15);
+    /**
+     * Drag and drop speed limit.
+     */
+    const TInt KDragSpeedIgnoreThreshold( 15 * 15 );
 
-	/**
-	 * Number of frames to animate.
-	 */
-	const TInt KMaximumAnimationFramesCount( 6 );
+    /**
+     * Number of frames to animate.
+     */
+    const TInt KMaximumAnimationFramesCount( 6 );
 
-	/**
-	 * Number of frames to animate.
-	 */
-	const TInt KUsualAnimationFramesCount( 3 );
+    /**
+     * Number of frames to animate.
+     */
+    const TInt KUsualAnimationFramesCount( 3 );
 
-	/**
-	 * Number of frames to animate on non-touch devices.
-	 */
-	const TInt KUsualAnimationFramesCountNonTouch( 2 );
+    /**
+     * Number of frames to animate on non-touch devices.
+     */
+    const TInt KUsualAnimationFramesCountNonTouch( 2 );
 
-	/**
-	 * No animation frames count.
-	 */
-	const TInt KNoAnimationFramesCount( 1 );
+    /**
+     * No animation frames count.
+     */
+    const TInt KNoAnimationFramesCount( 1 );
 
-	/**
-	 * Delay between redrawing frames.
-	 */
-	const TInt KAnimationFrameDelay( 40000 );
+    /**
+     * Delay between redrawing frames.
+     */
+    const TInt KAnimationFrameDelay( 35000 );
 
-	/**
-	 * Text alpha during drag.
-	 */
-	const TInt KDragTextAlpha( 50 );
+    /**
+     * Text alpha during drag.
+     */
+    const TInt KDragTextAlpha( 50 );
 
-	/**
-	 * Value of drag ignore.
-	 */
-	const TInt KDragIgnoreRectValue(200);
+    /**
+     * Value of drag ignore.
+     */
+    const TInt KDragIgnoreRectValue( 200 );
 
-	/**
-	 * Time between two butto repeat events.
-	 */
-	const TInt KDragRepeatRespawn(2);
+    /**
+     * Time between two butto repeat events.
+     */
+    const TInt KDragRepeatRespawn( 2 );
 
-	/**
-	 * Determines the speed of focus-based scrolling in edit mode.
-	 */
-	const TInt KEditModeScrollingDelayFactor = 4000;
-	}
+    /**
+     * Determines the speed of focus-based scrolling in edit mode.
+     */
+    const TInt KEditModeScrollingDelayFactor = 4000;
+    }
 
 /**
  * Templates' related constants.
  */
 namespace MmTemplateContants
-	{
-	/**
-	 * If a custom (non LCT) template is used, this is
-	 * its default scrollbar width.
-	 */
-	const TInt KCustomTemplateScrolbarWidth (25);
+  {
+  /**
+   * If a custom (non LCT) template is used, this is
+   * its default scrollbar width.
+   */
+  const TInt KCustomTemplateScrolbarWidth (25);
 
-	const TInt KTemplateChildTextLength (64);
+  const TInt KTemplateChildTextLength (64);
 
-	const TInt KSubCellsCount (6);
+  const TInt KSubCellsCount (6);
 
-	const TInt KItemSubCellsText (300);
+  const TInt KItemSubCellsText (300);
 
-	const TInt KMoveIndicatorStartingPos ( 32 );
+  const TInt KMoveIndicatorStartingPos ( 32 );
 
-	}
+  }
 
 /**
  * Shortcut constants.
  */
 namespace MmShortcutConstants
-	{
-	/**
-	 * Possible scancodes when interpreting shortcut key.
-	 */
-	const TInt KScanCodes[] = { '1','2','3','4','5','6','7','8','9',
+  {
+  /**
+   * Possible scancodes when interpreting shortcut key.
+   */
+  const TInt KScanCodes[] = { '1','2','3','4','5','6','7','8','9',
 #ifndef __WINS__
         '*',
 #else
         EStdKeyNkpAsterisk,
 #endif
-	    '0', EStdKeyHash };
+      '0', EStdKeyHash };
 
-	/**
-	 * Number of available scancodes.
-	 */
-	const TInt KScanCodeCount = 12;
-	}
+  /**
+   * Number of available scancodes.
+   */
+  const TInt KScanCodeCount = 12;
+  }
 
 namespace MmMarqueeConstants
-	{
-	const TInt KTextTrimmingThreshold (80);
-	const TInt KClippingBufLength (80);
-	const TInt KLoops (1);
-	const TInt KScrollAmount (6);
-	const TInt KScrollDelay (1000000);
-	}
+  {
+  const TInt KTextTrimmingThreshold (80);
+  const TInt KClippingBufLength (80);
+  const TInt KLoops (1);
+  const TInt KScrollAmount (6);
+  const TInt KScrollDelay (1000000);
+  }
 /**
  * Matrix Template Library panic notice.
  */
@@ -306,7 +306,7 @@
 _LIT8( KImageVisual8,        	"imagevisual"           );
 _LIT8( KImagePath8,        		"imagepath"           );
 _LIT8( KGridLayout8,        	"gridlayout"           );
-_LIT8( KEnabled8,        	"enabled"           );
+_LIT8( KEnabled8,        	    "enabled"           );
 _LIT8( KRow8,        			"row"           );
 _LIT8( KCol8,        			"col"           );
 _LIT8( KPositionX8,        		"positionx"           );
@@ -373,18 +373,18 @@
 _LIT8( KUiaccelAagridCellImagePaneG38,        "uiaccel_aagrid_cell_image_pane_g3"           );
 _LIT8( KUiaccelAagridCellImagePaneG48,        "uiaccel_aagrid_cell_image_pane_g4"           );
 
-_LIT8( KCellHcAppsPane8,        "cell_hc_apps_pane"           );
+_LIT8( KCellHcAppsPane8,           "cell_hc_apps_pane"           );
 _LIT8( KCellHcAppsPaneT18,        "cell_hc_apps_pane_t1"           );
 _LIT8( KCellHcAppsPaneG18,        "cell_hc_apps_pane_g1"           );
 _LIT8( KCellHcAppsPaneG28,        "cell_hc_apps_pane_g2"           );
 _LIT8( KCellHcAppsPaneG38,        "cell_hc_apps_pane_g3"           );
 
-_LIT8( KCellAppPane8,        "cell_app_pane"           );
+_LIT8( KCellAppPane8,           "cell_app_pane"           );
 _LIT8( KCellAppsPaneG18,        "cell_app_pane_g1"           );
 _LIT8( KCellAppsPaneT18,        "cell_app_pane_t1"           );
 _LIT8( KCellAppsPaneG28,        "cell_app_pane_g2"           );
 
-_LIT8( KListSingleHcAppsPane8,        "list_single_hc_apps_pane"           );
+_LIT8( KListSingleHcAppsPane8,          "list_single_hc_apps_pane"           );
 _LIT8( KListSingleHcAppsPaneT18,        "list_single_hc_apps_pane_t1"           );
 _LIT8( KListSingleHcAppsPaneG18,        "list_single_hc_apps_pane_g1"           );
 _LIT8( KListSingleHcAppsPaneG28,        "list_single_hc_apps_pane_g2"           );
@@ -443,7 +443,7 @@
 /**
  * The minimal drag vector y-length that can trigger kinetic scrolling.
  * This is just a rough estimation of the actual trigger value used by AVKON,
- * but it is sufficient for our purposes.  
+ * but it is sufficient for our purposes.
  */
 const TInt KDragTreshold = 18;
 
--- a/menufw/menufwui/mmwidgets/src/mmdraweranimator.cpp	Wed Apr 14 15:47:59 2010 +0300
+++ b/menufw/menufwui/mmwidgets/src/mmdraweranimator.cpp	Tue Apr 27 16:26:12 2010 +0300
@@ -1,20 +1,20 @@
 /*
-* 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:  
-*  Version     : %version: MM_41 % << Don't touch! Updated by Synergy at check-out.
-*
-*/
+ * 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:
+ *  Version     : %version: MM_41 % << Don't touch! Updated by Synergy at check-out.
+ *
+ */
 
 #include <AknUtils.h>
 
@@ -23,31 +23,31 @@
 #include "mmfloatingitem.h"
 #include "mmwidgetcontainer.h"
 
-
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
-// 
-CMmDrawerAnimator::CMmDrawerAnimator(CMmListBoxItemDrawer& aDrawer) :
-    CActive( AknLayoutUtils::PenEnabled() ?
-    		EPriorityRealTime : 
-			EPriorityAbsoluteRealTime8 ), iDrawer(aDrawer), 
+//
+CMmDrawerAnimator::CMmDrawerAnimator( CMmListBoxItemDrawer& aDrawer ) :
+    CActive( AknLayoutUtils::PenEnabled()
+        ? EPriorityAbsoluteVeryLow
+        : EPriorityAbsoluteRealTime8 ), iDrawer( aDrawer ),
     iLastNotedHighlight( KErrNotFound ), iLastNotedTopItem( KErrNotFound ),
     iLastNotedVerticalOffset( 0 ),
-    iUsualAnimationFramesCount( AknLayoutUtils::PenEnabled() ?
-    		MmEffects::KUsualAnimationFramesCount : 
-			MmEffects::KUsualAnimationFramesCountNonTouch )
+    iUsualAnimationFramesCount( AknLayoutUtils::PenEnabled()
+                    ? MmEffects::KUsualAnimationFramesCount
+                    : MmEffects::KUsualAnimationFramesCountNonTouch ),
+    iPreparedForGarbage( EFalse )
     {
     }
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
-// 
-CMmDrawerAnimator* CMmDrawerAnimator::NewLC(CMmListBoxItemDrawer& aDrawer)
+//
+CMmDrawerAnimator* CMmDrawerAnimator::NewLC( CMmListBoxItemDrawer& aDrawer )
     {
-    CMmDrawerAnimator* self = new ( ELeave ) CMmDrawerAnimator(aDrawer);
-    CleanupStack::PushL(self);
+    CMmDrawerAnimator* self = new ( ELeave ) CMmDrawerAnimator( aDrawer );
+    CleanupStack::PushL( self );
     self->ConstructL();
     return self;
     }
@@ -55,10 +55,10 @@
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
-// 
-CMmDrawerAnimator* CMmDrawerAnimator::NewL(CMmListBoxItemDrawer& aDrawer)
+//
+CMmDrawerAnimator* CMmDrawerAnimator::NewL( CMmListBoxItemDrawer& aDrawer )
     {
-    CMmDrawerAnimator* self = CMmDrawerAnimator::NewLC(aDrawer);
+    CMmDrawerAnimator* self = CMmDrawerAnimator::NewLC( aDrawer );
     CleanupStack::Pop( self );
     return self;
     }
@@ -66,18 +66,17 @@
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
-// 
+//
 void CMmDrawerAnimator::ConstructL()
     {
     User::LeaveIfError( iTimer.CreateLocal() ); // Initialize timer
-    CActiveScheduler::Add( this); // Add to scheduler
-    iPreparedForGarbage = EFalse;
+    CActiveScheduler::Add( this ); // Add to scheduler
     }
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
-// 
+//
 CMmDrawerAnimator::~CMmDrawerAnimator()
     {
     Cancel(); // Cancel any request, if outstanding
@@ -88,141 +87,129 @@
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
-// 
+//
 void CMmDrawerAnimator::DoCancel()
     {
     iTimer.Cancel();
+    if( iDrawer.GetFloatingItemCount() == 0 )
+        {
+        TRAP_IGNORE(TriggerMoveItemL());
+        }
     }
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
-// 
-TBool CMmDrawerAnimator::CancelNextRedrawL()
-	{
-	RunL();
-    TTime currentTime;
-    currentTime.HomeTime();
-    return (currentTime.MicroSecondsFrom(iLastRedrawTime) 
-    		<= MmEffects::KAnimationFrameDelay);
-	}
-// -----------------------------------------------------------------------------
 //
-// -----------------------------------------------------------------------------
-// 
 void CMmDrawerAnimator::RunL()
-    {      
-	if ( iPreparedForGarbage )
-		{
-		return;
-		}
-	
-    TTime currentTime;
-    currentTime.HomeTime();
-	
-   if (currentTime.MicroSecondsFrom(iLastRedrawTime) 
-    		>= MmEffects::KAnimationFrameDelay && iDrawer.GetFloatingItemCount() > 0)
-    	{
-    	Cancel();
-    	
-    	TRect refreshRect;
-    	for(int i=0; i< iDrawer.GetFloatingItemCount(); i++)
-			{
-			TMmFloatingItem& current = iDrawer.GetFloatingItemAtIndex(i);
-			TSize itemSize = iDrawer.GetItemSize(current.GetDrawnItemIndex(), EFalse);
+    {
+    if( iPreparedForGarbage )
+        {
+        return;
+        }
+
+    if( iDrawer.GetFloatingItemCount() > 0 )
+        {
+        TRect refreshRect;
+        for( int i = 0; i < iDrawer.GetFloatingItemCount(); i++ )
+            {
+            TMmFloatingItem& current = iDrawer.GetFloatingItemAtIndex( i );
+            TSize itemSize = iDrawer.GetItemSize(current.GetDrawnItemIndex(), EFalse);
+
+            TRect beforeRect( current.GetItemPosition(), itemSize );
+            current.MakeStep();
+            TRect afterRect( current.GetItemPosition(), itemSize );
 
-			TRect beforeRect(current.GetItemPosition(), itemSize);
-			current.MakeStep();
-			TRect afterRect(current.GetItemPosition(), itemSize);
-			
-			if (current.GetFloatingItemType() == EDrag )
-				{
-				TInt dragTrail = iDrawer.GetFloatingItemIndex( EPostDragRefreshItem );
-				if (dragTrail != KErrNotFound)
-					{
-					refreshRect = (refreshRect == TRect(0,0,0,0)) ? beforeRect : refreshRect;
-					refreshRect.BoundingRect( afterRect );
-					}
-				}
-			else
-				{
-				refreshRect = (refreshRect == TRect(0,0,0,0)) ? beforeRect : refreshRect;
-				refreshRect.BoundingRect( beforeRect );
-				refreshRect.BoundingRect( afterRect );
-				}
-			}
-    	const TInt highlightedItemIndex = iDrawer.Widget()->View()->CurrentItemIndex();
-    	if ( iLastNotedHighlight != highlightedItemIndex )
-    	    {
+            if( current.GetFloatingItemType() == EDrag )
+                {
+                TInt dragTrail = iDrawer.GetFloatingItemIndex( EPostDragRefreshItem );
+                if( dragTrail != KErrNotFound )
+                    {
+                    refreshRect = ( refreshRect == TRect() ) ? beforeRect : refreshRect;
+                    refreshRect.BoundingRect( afterRect );
+                    static_cast<CMmWidgetContainer*> ( iDrawer.Widget()->Parent() )->
+                            SetAllowMove( EFalse );
+                    }
+                }
+            else
+                {
+                refreshRect = (refreshRect == TRect() ) ? beforeRect : refreshRect;
+                refreshRect.BoundingRect( beforeRect );
+                refreshRect.BoundingRect( afterRect );
+                }
+            }
+        const TInt highlightedItemIndex = iDrawer.Widget()->View()->CurrentItemIndex();
+        if( iLastNotedHighlight != highlightedItemIndex )
+            {
             TRect highlightedItemRect(
                     iDrawer.Widget()->View()->ItemPos( highlightedItemIndex ),
-                    iDrawer.Widget()->View()->ItemSize( highlightedItemIndex ) ); 
+                    iDrawer.Widget()->View()->ItemSize( highlightedItemIndex ) );
             refreshRect.BoundingRect( highlightedItemRect );
             iLastNotedHighlight = highlightedItemIndex;
-    	    }
+            }
+
+
+      TInt currentVerticalOffset = static_cast<CMmWidgetContainer*>(
+              iDrawer.Widget()->Parent() )->VerticalItemOffset();
 
-    	
-    	TInt currentVerticalOffset = static_cast<CMmWidgetContainer*>(
-    	        iDrawer.Widget()->Parent() )->VerticalItemOffset();
+        if( iLastNotedTopItem != iDrawer.Widget()->TopItemIndex()
+                || iLastNotedVerticalOffset != currentVerticalOffset )
+            {
+            iDrawer.Widget()->DrawNow();
+            iLastNotedTopItem = iDrawer.Widget()->TopItemIndex();
+            iLastNotedVerticalOffset = currentVerticalOffset;
+            }
+        else
+            {
+            if( refreshRect != TRect() )
+                {
+                TRect prev( iPreviousRefreshRect );
+                iPreviousRefreshRect = refreshRect;
+                refreshRect.BoundingRect( prev );
+
+                // expand rect if non-touch
+                refreshRect = TRect( AdjustRefreshRectToNonTouch( refreshRect ) );
+
+                // never draw on the outside of widget's view rectangle
+                refreshRect.Intersection( iDrawer.Widget()->View()->ViewRect() );
 
-    	if (iLastNotedTopItem != iDrawer.Widget()->TopItemIndex() ||
-    	        iLastNotedVerticalOffset != currentVerticalOffset )
-    		{
-    		iDrawer.Widget()->DrawNow();
-        	iLastNotedTopItem = iDrawer.Widget()->TopItemIndex();
-        	iLastNotedVerticalOffset = currentVerticalOffset;
-    		}
-    	else
-    		{
-			if ( refreshRect != TRect(0,0,0,0))
-				{
-				TRect prev(iPreviousRefreshRect);
-				iPreviousRefreshRect = refreshRect;
-				refreshRect.BoundingRect(prev);
-				
-	            // expand rect if non-touch
-	            refreshRect = TRect( AdjustRefreshRectToNonTouch( refreshRect ) );
-	            
-	            // never draw on the outside of widget's view rectangle
-	            refreshRect.Intersection( iDrawer.Widget()->View()->ViewRect() );
-	            
-				iDrawer.Widget()->View()->Draw( &refreshRect );
-				}
-    		}
+                iDrawer.Widget()->View()->Draw( &refreshRect );
+                }
+            }
+
+        iLastRedrawTime.HomeTime();
+
+        }
 
-    	
-		iLastRedrawTime.HomeTime();
-    	
-    	}
-    
-		if (iDrawer.GetFloatingItemCount() > 0)
-			{
-			Trigger();
-			}
-		else
-			{
-			Cancel();
-			
+    if( iDrawer.GetFloatingItemCount() > 0 )
+        {
+        Trigger();
+        }
+    else
+        {
+        TriggerMoveItemL();
+        Cancel();
+
 #ifdef RD_UI_TRANSITION_EFFECTS_LIST
-			if ( iTransTfx && iTransTfxInternal->EffectsDisabled() )
-				{
-				iTransTfx->EnableEffects( ETrue );
-	
-				if ( iTransTfx )
-					{
-					iTransTfxInternal->Remove( MAknListBoxTfxInternal::EListEverything );
-					iDrawer.Widget()->DrawNow();
-					iTransTfxInternal->Draw( iDrawer.Widget()->Rect() );
-					}
-				}
+        if( iTransTfx && iTransTfxInternal->EffectsDisabled() )
+            {
+            iTransTfx->EnableEffects( ETrue );
+
+            if( iTransTfx )
+                {
+                iTransTfxInternal->Remove( MAknListBoxTfxInternal::EListEverything );
+                iDrawer.Widget()->DrawNow();
+                iTransTfxInternal->Draw( iDrawer.Widget()->Rect() );
+                }
+            }
 #endif
-			}
+        }
     }
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
-// 
+//
 TRect CMmDrawerAnimator::AdjustRefreshRectToNonTouch( const TRect& aRefreshRect )
     {
     TRect rect( aRefreshRect );
@@ -231,13 +218,10 @@
         TRect indicatorRect( iDrawer.GetIndicatorRect() );
         TSize itemSize( iDrawer.GetItemSize(
                 iDrawer.Widget()->CurrentItemIndex(), ETrue ) );
-        
+
         TInt horizontalMargin( ( indicatorRect.Width() - itemSize.iWidth ) / 2 );
         TInt verticalMargin( ( indicatorRect.Height() - itemSize.iHeight ) / 2 );
-        rect.iBr.iX += horizontalMargin;
-        rect.iBr.iY += verticalMargin;
-        rect.iTl.iX -= horizontalMargin;
-        rect.iTl.iY -= verticalMargin;
+        rect.Grow(horizontalMargin, verticalMargin);
         }
     return rect;
     }
@@ -245,35 +229,34 @@
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
-// 
+//
 TInt CMmDrawerAnimator::Trigger()
     {
-	if ( iPreparedForGarbage )
-		{
-		return KErrCancel;
-		}
-	
-    if (!IsActive() && iDrawer.GetFloatingItemCount() > 0 )
+    if( iPreparedForGarbage )
+        {
+        return KErrCancel;
+        }
+
+    if( !IsActive() && iDrawer.GetFloatingItemCount() > 0 )
         {
 #ifdef RD_UI_TRANSITION_EFFECTS_LIST
-		iTransTfx = CAknListLoader::TfxApi( iDrawer.Gc() );
-		iTransTfxInternal = CAknListLoader::TfxApiInternal( 
-				iDrawer.Gc() );
-	
-		if ( iTransTfx && !iTransTfxInternal->EffectsDisabled() )
-			{
-			iTransTfx->EnableEffects( EFalse );
-			
-			if ( iTransTfxInternal )
-				{
-				iTransTfxInternal->Remove( MAknListBoxTfxInternal::EListEverything );
-				iTransTfxInternal->Draw( iDrawer.Widget()->Rect() );
-				}
-			}
+        iTransTfx = CAknListLoader::TfxApi( iDrawer.Gc() );
+        iTransTfxInternal = CAknListLoader::TfxApiInternal( iDrawer.Gc() );
+
+        if( iTransTfx && !iTransTfxInternal->EffectsDisabled() )
+            {
+            iTransTfx->EnableEffects( EFalse );
+
+            if( iTransTfxInternal )
+                {
+        iTransTfxInternal->Remove( MAknListBoxTfxInternal::EListEverything );
+                iTransTfxInternal->Draw( iDrawer.Widget()->Rect() );
+                }
+            }
 #endif
-    
-        iTimer.After(iStatus, TTimeIntervalMicroSeconds32( 
-        		MmEffects::KAnimationFrameDelay ) ); 
+
+        iTimer.After( iStatus, TTimeIntervalMicroSeconds32(
+                MmEffects::KAnimationFrameDelay ) );
         SetActive();
         }
     return KErrNone;
@@ -282,8 +265,8 @@
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
-// 
-TInt CMmDrawerAnimator::RunError(TInt aError)
+//
+TInt CMmDrawerAnimator::RunError( TInt aError )
     {
     return aError;
     }
@@ -291,39 +274,39 @@
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
-// 
-void CMmDrawerAnimator::AnimateDragItemTransitionL( )
-    {     
-    if (KErrNotFound != iDrawer.GetFloatingItemIndex(EDrag))
+//
+void CMmDrawerAnimator::AnimateDragItemTransitionL()
+    {
+    if( KErrNotFound != iDrawer.GetFloatingItemIndex( EDrag ) )
         {
         TMmFloatingItem floatingItem(
-                iDrawer.GetFloatingItemL(EDrag).GetDrawnItemIndex(), 
-                iDrawer.GetFloatingItemL(EDrag).GetItemPosition(), 
+                iDrawer.GetFloatingItemL( EDrag ).GetDrawnItemIndex(),
+                iDrawer.GetFloatingItemL( EDrag ).GetItemPosition(),
                 EDragTransition, iUsualAnimationFramesCount,
-                iDrawer.Widget()->View());
+                iDrawer.Widget()->View() );
         TPoint pointEnd = iDrawer.Widget()->View()->ItemPos( floatingItem.GetDrawnItemIndex() );
         floatingItem.SetPositionStep( pointEnd - floatingItem.GetItemPosition() );
         iDrawer.AddFloatingItemL( floatingItem, 0 );
-        iDrawer.RemoveFloatingItem( iDrawer.GetFloatingItemIndex(EDrag) );
+        iDrawer.RemoveFloatingItem( iDrawer.GetFloatingItemIndex( EDrag ) );
         }
     }
-  
+
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
 TBool CMmDrawerAnimator::IsReadyForNewAnimation()
     {
-	if ( iPreparedForGarbage )
-		{
-		return EFalse;
-		}
-	
-    for(int i=0; i< iDrawer.GetFloatingItemCount(); i++)
+    if( iPreparedForGarbage )
         {
-        TMmFloatingItemType type 
-			= iDrawer.GetFloatingItemAtIndex(i).GetFloatingItemType();
-        if ( type != EDrag && type != EZoomTransition )
+        return EFalse;
+        }
+
+    for( int i = 0; i < iDrawer.GetFloatingItemCount(); i++ )
+        {
+        TMmFloatingItemType type =
+                iDrawer.GetFloatingItemAtIndex( i ).GetFloatingItemType();
+        if( type != EDrag && type != EZoomTransition )
             {
             return EFalse;
             }
@@ -337,32 +320,32 @@
 //
 void CMmDrawerAnimator::CancelAnimationsL()
     {
-    for(int i=0; i< iDrawer.GetFloatingItemCount(); i++)
+    for( int i = 0; i < iDrawer.GetFloatingItemCount(); i++ )
         {
-        TMmFloatingItem& current = iDrawer.GetFloatingItemAtIndex(i);
-        if (current.GetFloatingItemType() != EDrag)
+        TMmFloatingItem& current = iDrawer.GetFloatingItemAtIndex( i );
+        if( current.GetFloatingItemType() != EDrag )
             {
             current.InvalidateFloatingItem();
             }
         }
     }
 
- // -----------------------------------------------------------------------------
- //
- // -----------------------------------------------------------------------------
- // 
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
 void CMmDrawerAnimator::AnimateItemSwapL( TInt aItemFrom, TInt aItemTo )
     {
-    TMmFloatingItem floatingItem( aItemTo, 
-            iDrawer.Widget()->View()->ItemPos( aItemFrom ), 
+    TMmFloatingItem floatingItem( aItemTo,
+            iDrawer.Widget()->View()->ItemPos( aItemFrom ),
             ESwapTransition, iUsualAnimationFramesCount,
             iDrawer.Widget()->View() );
-      
-    for(int i=0; i< iDrawer.GetFloatingItemCount(); i++)
+
+    for( int i = 0; i < iDrawer.GetFloatingItemCount(); i++ )
         {
-        TMmFloatingItem& current = iDrawer.GetFloatingItemAtIndex(i);
+        TMmFloatingItem& current = iDrawer.GetFloatingItemAtIndex( i );
 
-        if (current.GetFloatingItemType() == EZoomTransition 
+        if( current.GetFloatingItemType() == EZoomTransition
                 && current.GetDrawnItemIndex() == aItemFrom )
             {
             current.InvalidateFloatingItem();
@@ -371,15 +354,15 @@
             }
         }
 
-    floatingItem.SetPositionStep( iDrawer.Widget()->View()->ItemPos(aItemTo)- 
-            iDrawer.Widget()->View()->ItemPos(aItemFrom) );
-    iDrawer.AddFloatingItemL(floatingItem);
+    floatingItem.SetPositionStep( iDrawer.Widget()->View()->ItemPos(aItemTo)
+            - iDrawer.Widget()->View()->ItemPos(aItemFrom) );
+    iDrawer.AddFloatingItemL( floatingItem );
     }
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
-// 
+//
 void CMmDrawerAnimator::AnimateItemZoomL( TInt aItemIndex, TBool aZoomIn )
     {
     TMmFloatingItem floatingItem( aItemIndex,
@@ -392,24 +375,26 @@
             (aZoomIn) ? KZoomStateZoomRatio : KNormalStateZoomRatio );
 
     TInt animationFound = EFalse;
-    for(int i=0; i< iDrawer.GetFloatingItemCount(); i++)
+    for( int i = 0; i < iDrawer.GetFloatingItemCount(); i++ )
         {
-        TMmFloatingItem& current = iDrawer.GetFloatingItemAtIndex(i);
-        if (current.GetFloatingItemType() == EZoomTransition &&
-                current.GetDrawnItemIndex() == aItemIndex )
+        TMmFloatingItem& current = iDrawer.GetFloatingItemAtIndex( i );
+        if( current.GetFloatingItemType() == EZoomTransition
+                && current.GetDrawnItemIndex() == aItemIndex )
             {
             current.InvalidateFloatingItem();
             floatingItem.SetSizeStep( current.GetCurrentZoomRatio(),
                     (aZoomIn) ? KZoomStateZoomRatio : KNormalStateZoomRatio);
             animationFound = ETrue;
+            static_cast<CMmWidgetContainer*> ( iDrawer.Widget()->Parent() )->
+                    SetAllowMove( EFalse );
             break;
             }
         }
-    
-    if ( (aZoomIn != EFalse || animationFound != EFalse) )
+
+    if( ( aZoomIn != EFalse || animationFound != EFalse ) )
         {
         // This covers the situation, when a zoom out animation is requested
-        // whilst no zoom in occured earlier. In this case the request is 
+        // whilst no zoom in occured earlier. In this case the request is
         // neglected.
         iDrawer.AddFloatingItemL( floatingItem );
         }
@@ -418,20 +403,30 @@
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
-// 
+//
 void CMmDrawerAnimator::SetNextRedrawToWholeScreen()
-	{
-	iPreviousRefreshRect = iDrawer.Widget()->View()->ViewRect();
-	}
+    {
+    iPreviousRefreshRect = iDrawer.Widget()->View()->ViewRect();
+    }
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
-// 
+//
 void CMmDrawerAnimator::PrepareForGarbage()
-	{
-//	Cancel any outstanding requests
-	Cancel();
-	iPreparedForGarbage = ETrue;
-	}
+    {
+    //	Cancel any outstanding requests
+    Cancel();
+    iPreparedForGarbage = ETrue;
+    }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMmDrawerAnimator::TriggerMoveItemL()
+    {
+    static_cast<CMmWidgetContainer*> ( iDrawer.Widget()->Parent() )->
+            TriggerMoveItemL();
+    }
 //End of file
--- a/menufw/menufwui/mmwidgets/src/mmgrid.cpp	Wed Apr 14 15:47:59 2010 +0300
+++ b/menufw/menufwui/mmwidgets/src/mmgrid.cpp	Tue Apr 27 16:26:12 2010 +0300
@@ -12,7 +12,7 @@
 * Contributors:
 *
 * Description:
-*  Version     : %version: MM_102 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: MM_103 % << Don't touch! Updated by Synergy at check-out.
 *
 */
 
@@ -486,12 +486,6 @@
         {
         HandlePointerEventInNormalModeL( aPointerEvent );
         }
-
-    if ( iMmDrawer->GetFloatingItemCount() > 0 &&
-            iMmDrawer->GetAnimator()->IsActive() )
-        {
-        iMmDrawer->GetAnimator()->CancelNextRedrawL();
-        }
     }
 
 // -----------------------------------------------------------------------------
--- a/menufw/menufwui/mmwidgets/src/mmgridview.cpp	Wed Apr 14 15:47:59 2010 +0300
+++ b/menufw/menufwui/mmwidgets/src/mmgridview.cpp	Tue Apr 27 16:26:12 2010 +0300
@@ -243,7 +243,7 @@
 
     if ( !itemDrawer->IsEditMode() )
         {
-        itemDrawer->DrawBackgroundAndSeparatorLines(ViewRect());
+        itemDrawer->DrawBackground(ViewRect());
         itemDrawer->SetRedrawItemBackground( EFalse );
         CAknGridView::Draw( aClipRect );
         itemDrawer->SetRedrawItemBackground( ETrue );
--- a/menufw/menufwui/mmwidgets/src/mmlistbox.cpp	Wed Apr 14 15:47:59 2010 +0300
+++ b/menufw/menufwui/mmwidgets/src/mmlistbox.cpp	Tue Apr 27 16:26:12 2010 +0300
@@ -48,18 +48,18 @@
 // -----------------------------------------------------------------------------
 //
 CMmListBox::CMmListBox() : AKNDOUBLELISTBOXNAME(R_LIST_PANE_LINES_AB_COLUMN)
-	{
-	// No implementation required
-	}
+  {
+  // No implementation required
+  }
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
 CMmListBox::~CMmListBox()
-	{
-	delete iRedrawTimer;
-	}
+  {
+  delete iRedrawTimer;
+  }
 
 // -----------------------------------------------------------------------------
 //
@@ -67,30 +67,30 @@
 //
 CMmListBox* CMmListBox::NewLC( const CCoeControl* aParent, TInt aFlags,
     CMmTemplateLibrary* aTemplateLibrary )
-	{
-	CMmListBox* self = new (ELeave)CMmListBox();
-	CleanupStack::PushL(self);
-	self->ConstructL( aParent, aFlags, aTemplateLibrary );
-	return self;
-	}
+  {
+  CMmListBox* self = new (ELeave)CMmListBox();
+  CleanupStack::PushL(self);
+  self->ConstructL( aParent, aFlags, aTemplateLibrary );
+  return self;
+  }
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
 void CMmListBox::SetListFlag( TInt aFlag )
-	{
-	iListBoxFlags = iListBoxFlags | aFlag;
-	}
+  {
+  iListBoxFlags = iListBoxFlags | aFlag;
+  }
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
 void CMmListBox::ClearListFlag( TInt aFlag )
-	{
-	iListBoxFlags = iListBoxFlags & !aFlag;
-	}
+  {
+  iListBoxFlags = iListBoxFlags & !aFlag;
+  }
 
 // -----------------------------------------------------------------------------
 //
@@ -98,11 +98,11 @@
 //
 CMmListBox* CMmListBox::NewL( const CCoeControl* aParent, TInt aFlags,
     CMmTemplateLibrary* aTemplateLibrary )
-	{
-	CMmListBox* self = CMmListBox::NewLC( aParent, aFlags, aTemplateLibrary );
-	CleanupStack::Pop( self );
-	return self;
-	}
+  {
+  CMmListBox* self = CMmListBox::NewLC( aParent, aFlags, aTemplateLibrary );
+  CleanupStack::Pop( self );
+  return self;
+  }
 
 // -----------------------------------------------------------------------------
 //
@@ -110,9 +110,9 @@
 //
 void CMmListBox::ConstructL( const CCoeControl* aParent, TInt aFlags,
     CMmTemplateLibrary* aTemplateLibrary )
-	{
-	iDisableChildComponentDrawing = EFalse;
-	iModel = iMmModel = CMmListBoxModel::NewL();
+  {
+  iDisableChildComponentDrawing = EFalse;
+  iModel = iMmModel = CMmListBoxModel::NewL();
     CreateItemDrawerL( aTemplateLibrary );
 
     EnableExtendedDrawingL();
@@ -121,7 +121,7 @@
     CEikListBox::ConstructL(aParent,aFlags);
     iMmDrawer->SetView( this );
     iRedrawTimer = CPeriodic::NewL( EPriorityRealTime );
-	}
+  }
 
 // -----------------------------------------------------------------------------
 // Clearing ELeftDownInViewRect flag before invoking the base class
@@ -148,14 +148,14 @@
             iListBoxFlags &= ~ELeftDownInViewRect;
             }
         }
-    
+
     TInt itemUnderPointerIndex = KErrNotFound;
     if ( aPointerEvent.iType == TPointerEvent::EButton1Up ||
             aPointerEvent.iType == TPointerEvent::EButton1Down )
         {
         TBool highlightWasVisible = parent->IsHighlightVisible();
         CEikFormattedCellListBoxTypedef::HandlePointerEventL( aPointerEvent );
-        // Tricky: Do not allow the base class implementation of HandlePointerEventL 
+        // Tricky: Do not allow the base class implementation of HandlePointerEventL
         //         to remove the highlight on EButton1Up event when context menu
         //         is displayed for an item
         if ( aPointerEvent.iType == TPointerEvent::EButton1Up &&
@@ -237,50 +237,50 @@
 TInt CMmListBox::ScrollIfNeeded( const TPointerEvent& aPointerEvent )
     {
     TInt nextScrollDelay = 0;
-    
-	TBool readyForScrolling =
-			iMmDrawer->GetAnimator()->IsReadyForNewAnimation()
-					&& iMmDrawer->GetFloatingItemCount() != 0;
-	
-	if ( IsPointerInTopScrollingThreshold( aPointerEvent ) )
-		{
-		// scroll up by one row
-		TInt newCurrentItemIndex = CurrentItemIndex() - 1;
+
+  TBool readyForScrolling =
+      iMmDrawer->GetAnimator()->IsReadyForNewAnimation()
+          && iMmDrawer->GetFloatingItemCount() != 0;
 
-		if ( newCurrentItemIndex >= 0 )
-			{
-			nextScrollDelay = MmEffects::KEditModeScrollingDelayFactor *
-				Max( 1, aPointerEvent.iPosition.iY - Rect().iTl.iY );
-			if (readyForScrolling)
-				{
-				View()->VScrollTo( View()->CalcNewTopItemIndexSoItemIsVisible(
+  if ( IsPointerInTopScrollingThreshold( aPointerEvent ) )
+    {
+    // scroll up by one row
+    TInt newCurrentItemIndex = CurrentItemIndex() - 1;
+
+    if ( newCurrentItemIndex >= 0 )
+      {
+      nextScrollDelay = MmEffects::KEditModeScrollingDelayFactor *
+        Max( 1, aPointerEvent.iPosition.iY - Rect().iTl.iY );
+      if (readyForScrolling)
+        {
+        View()->VScrollTo( View()->CalcNewTopItemIndexSoItemIsVisible(
                         newCurrentItemIndex ) );
                 View()->SetCurrentItemIndex( newCurrentItemIndex );
                 UpdateScrollBarThumbs();
-				}
-			}
-		}
-	else if ( IsPointerInBottomScrollingThreshold( aPointerEvent) )
-		{
-		// scroll down by one row
-		TInt lastItemIndex = iModel->NumberOfItems() - 1;
-		TInt newCurrentItemIndex = CurrentItemIndex() + 1;
-		
-		
-		if ( newCurrentItemIndex <= lastItemIndex )
-			{
-			nextScrollDelay = MmEffects::KEditModeScrollingDelayFactor *
-				Max( 1, Rect().iBr.iY - aPointerEvent.iPosition.iY );
+        }
+      }
+    }
+  else if ( IsPointerInBottomScrollingThreshold( aPointerEvent) )
+    {
+    // scroll down by one row
+    TInt lastItemIndex = iModel->NumberOfItems() - 1;
+    TInt newCurrentItemIndex = CurrentItemIndex() + 1;
+
 
-			if (readyForScrolling)
-				{
-				View()->VScrollTo( View()->CalcNewTopItemIndexSoItemIsVisible(
-						newCurrentItemIndex ) );
-				View()->SetCurrentItemIndex( newCurrentItemIndex );
+    if ( newCurrentItemIndex <= lastItemIndex )
+      {
+      nextScrollDelay = MmEffects::KEditModeScrollingDelayFactor *
+        Max( 1, Rect().iBr.iY - aPointerEvent.iPosition.iY );
+
+      if (readyForScrolling)
+        {
+        View()->VScrollTo( View()->CalcNewTopItemIndexSoItemIsVisible(
+            newCurrentItemIndex ) );
+        View()->SetCurrentItemIndex( newCurrentItemIndex );
                 UpdateScrollBarThumbs();
-				}
-			}
-		}
+        }
+      }
+    }
 
     return nextScrollDelay;
     }
@@ -308,14 +308,9 @@
         HandlePointerEventInEditModeL( aPointerEvent );
         }
     else
-    	{
+      {
         CEikFormattedCellListBoxTypedef::HandlePointerEventL( aPointerEvent );
-    	}
-
-    if ( iMmDrawer->GetAnimator()->IsActive() )
-    	{
-    	iMmDrawer->GetAnimator()->CancelNextRedrawL();
-    	}
+      }
 
     }
 
@@ -383,7 +378,7 @@
 //
 // -----------------------------------------------------------------------------
 //
-void CMmListBox::ProcessScrollEventL( CEikScrollBar* aScrollBar, 
+void CMmListBox::ProcessScrollEventL( CEikScrollBar* aScrollBar,
             TEikScrollEvent aEventType )
     {
     CEikFormattedCellListBoxTypedef::HandleScrollEventL(
@@ -403,7 +398,7 @@
         }
     iSkippedScrollbarEventsCount = 0;
     }
-    
+
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
@@ -434,32 +429,32 @@
                + View()->ItemSize( currentItemIndex ).iHeight;
 
     if ( currentItemIndex == BottomItemIndex()
-    		&& currentItemIndex != previousItemIndex
-    		&& itemY > View()->ViewRect().iBr.iY )
-    	{
-    	if( aType == EEventKey )
-    		{
+        && currentItemIndex != previousItemIndex
+        && itemY > View()->ViewRect().iBr.iY )
+      {
+      if( aType == EEventKey )
+        {
 #ifdef RD_UI_TRANSITION_EFFECTS_LIST
-    		MAknListBoxTfxInternal* transApi = CAknListLoader::TfxApiInternal(
-    		    View()->ItemDrawer()->Gc() );
-    		TBool effects = transApi && !transApi->EffectsDisabled();
-    		if ( effects )
-    			{
-    			transApi->SetMoveType( MAknListBoxTfxInternal::EListScrollDown );
-    			}
+        MAknListBoxTfxInternal* transApi = CAknListLoader::TfxApiInternal(
+            View()->ItemDrawer()->Gc() );
+        TBool effects = transApi && !transApi->EffectsDisabled();
+        if ( effects )
+          {
+          transApi->SetMoveType( MAknListBoxTfxInternal::EListScrollDown );
+          }
 #endif
-			iView->VScrollTo(
-				iView->CalcNewTopItemIndexSoItemIsVisible( currentItemIndex ) );
+      iView->VScrollTo(
+        iView->CalcNewTopItemIndexSoItemIsVisible( currentItemIndex ) );
 
 #ifdef RD_UI_TRANSITION_EFFECTS_LIST
-			if ( effects )
-				{
-				transApi->Draw( Rect() );
-				}
+      if ( effects )
+        {
+        transApi->Draw( Rect() );
+        }
 #endif
-			}
-    	SetCurrentItemIndex( currentItemIndex );
-    	}
+      }
+      SetCurrentItemIndex( currentItemIndex );
+      }
 
     RedrawIfNecessary( itemIndex, CurrentItemIndex());
     return ret;
@@ -508,13 +503,13 @@
         if ( differenceIndex == 1 )
             {
             if( sizeAllBefore != sizeAllAfter )
-            	{
+              {
                 redrawIndex = Min( aPreviousCurrent, aCurrent );
-            	}
+              }
             else
-            	{
-            	return redrawConsumed;
-            	}
+              {
+              return redrawConsumed;
+              }
             }
         else if ( differenceIndex > 1 && sizeAllBefore == sizeAllAfter  )
             {
@@ -533,14 +528,14 @@
             lastPotentialItemIndex = iView->BottomItemIndex();
 
         if ( aPreviousCurrent < TopItemIndex() )
-        	{
-        	lastPotentialItemIndex = BottomItemIndex() ;
-        	}
+          {
+          lastPotentialItemIndex = BottomItemIndex() ;
+          }
         else if ( BottomItemIndex() < aPreviousCurrent )
-        	{
-        	lastPotentialItemIndex = BottomItemIndex() + 1;
-        	}
-        
+          {
+          lastPotentialItemIndex = BottomItemIndex() + 1;
+          }
+
         while ( redrawIndex < lastPotentialItemIndex +1 )
             {
             view->DrawSingleItem( redrawIndex++ );
@@ -570,22 +565,22 @@
 // -----------------------------------------------------------------------------
 //
 CMmListBoxModel* CMmListBox::MmModel()
-	{
-	return iMmModel;
-	}
+  {
+  return iMmModel;
+  }
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
 void CMmListBox::SetMmModel( CMmListBoxModel* aMmModel )
-	{
-	if ( iMmModel != aMmModel )
-		{
-		delete iMmModel;
-		iMmModel = aMmModel;
-		}
-	}
+  {
+  if ( iMmModel != aMmModel )
+    {
+    delete iMmModel;
+    iMmModel = aMmModel;
+    }
+  }
 
 // -----------------------------------------------------------------------------
 //
@@ -610,45 +605,45 @@
 // -----------------------------------------------------------------------------
 //
 void CMmListBox::SetItemDrawerAndViewBgContext (CAknsBasicBackgroundControlContext * aBgContext)
-	{
-	iMmDrawer->SetBgContext (aBgContext);
-	}
+  {
+  iMmDrawer->SetBgContext (aBgContext);
+  }
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
 TBool CMmListBox::HandleScrollbarVisibilityChangeL()
-	{
-	TBool ret = EFalse;
-	if ( AllItemsFitInViewRect() )
-		{
-		if ( ScrollBarFrame()->VerticalScrollBar()->IsVisible()
+  {
+  TBool ret = EFalse;
+  if ( AllItemsFitInViewRect() )
+    {
+    if ( ScrollBarFrame()->VerticalScrollBar()->IsVisible()
             || iMmDrawer->TemplateLibrary()->GetScrollbarVisibility() )
-			{
-			ScrollBarFrame()->VerticalScrollBar()->MakeVisible( EFalse );
-			iMmDrawer->SetScrollbarVisibilityL( EFalse );
+      {
+      ScrollBarFrame()->VerticalScrollBar()->MakeVisible( EFalse );
+      iMmDrawer->SetScrollbarVisibilityL( EFalse );
 
 #ifdef RD_UI_TRANSITION_EFFECTS_LIST
-			MAknListBoxTfxInternal *trans = CAknListLoader::TfxApiInternal( ItemDrawer()->Gc() );
-				if ( trans )
-					{
-					trans->Remove( MAknListBoxTfxInternal::EListEverything );
-					}
+      MAknListBoxTfxInternal *trans = CAknListLoader::TfxApiInternal( ItemDrawer()->Gc() );
+        if ( trans )
+          {
+          trans->Remove( MAknListBoxTfxInternal::EListEverything );
+          }
 #endif
 
-			ret = ETrue; //redraw is needed
-			}
-		}
-	else if ( !ScrollBarFrame()->VerticalScrollBar()->IsVisible()
-	          || !iMmDrawer->TemplateLibrary()->GetScrollbarVisibility() )
-		{
-		ScrollBarFrame()->VerticalScrollBar()->MakeVisible( ETrue );
-		iMmDrawer->SetScrollbarVisibilityL( ETrue );
-		ret = ETrue; //redraw is needed
-		}
-	return ret;
-	}
+      ret = ETrue; //redraw is needed
+      }
+    }
+  else if ( !ScrollBarFrame()->VerticalScrollBar()->IsVisible()
+            || !iMmDrawer->TemplateLibrary()->GetScrollbarVisibility() )
+    {
+    ScrollBarFrame()->VerticalScrollBar()->MakeVisible( ETrue );
+    iMmDrawer->SetScrollbarVisibilityL( ETrue );
+    ret = ETrue; //redraw is needed
+    }
+  return ret;
+  }
 
 
 // -----------------------------------------------------------------------------
@@ -656,23 +651,23 @@
 // -----------------------------------------------------------------------------
 //
 TBool CMmListBox::AllItemsFitInViewRect()
-	{
-	CMmListBoxView* view = static_cast< CMmListBoxView* >(iView);
-	TInt totalHeight = view->GetTotalHeight( view->TopItemIndex(), view->BottomItemIndex());
-	if ( view->TopItemIndex() == 0 && iMmModel->NumberOfItems() <= view->BottomItemIndex() + 1
-	        && totalHeight <= iView->ViewRect().Height() )
-		{
-		return ETrue;
-		}
-	else
-		{
-		return EFalse;
-		}
-	}
+  {
+  CMmListBoxView* view = static_cast< CMmListBoxView* >(iView);
+  TInt totalHeight = view->GetTotalHeight( view->TopItemIndex(), view->BottomItemIndex());
+  if ( view->TopItemIndex() == 0 && iMmModel->NumberOfItems() <= view->BottomItemIndex() + 1
+          && totalHeight <= iView->ViewRect().Height() )
+    {
+    return ETrue;
+    }
+  else
+    {
+    return EFalse;
+    }
+  }
 
 /**
  * Helper class whose only purpose is to ensure that
- * ScrollToItem method will be always re-enabled. 
+ * ScrollToItem method will be always re-enabled.
  */
 struct TScrollToItemEnabler
     {
@@ -685,77 +680,77 @@
 // -----------------------------------------------------------------------------
 //
 void CMmListBox::UpdateScrollBarsL()
-	{
-	TBool redrawNeeded = HandleScrollbarVisibilityChangeL();
-	if (ScrollBarFrame()->VerticalScrollBar()->IsVisible())
-		{
-		CMmListBoxView* view = static_cast<CMmListBoxView*>( View() );
-		view->DisableScrollToItem( ETrue );
-		TScrollToItemEnabler reverter = { view };
-		CleanupClosePushL( reverter );
-		CEikFormattedCellListBoxTypedef::UpdateScrollBarsL();
-		CleanupStack::PopAndDestroy( &reverter );
-		}
-	iMmDrawer->TemplateLibrary()->SetScrollbarWidthL(
+  {
+  TBool redrawNeeded = HandleScrollbarVisibilityChangeL();
+  if (ScrollBarFrame()->VerticalScrollBar()->IsVisible())
+    {
+    CMmListBoxView* view = static_cast<CMmListBoxView*>( View() );
+    view->DisableScrollToItem( ETrue );
+    TScrollToItemEnabler reverter = { view };
+    CleanupClosePushL( reverter );
+    CEikFormattedCellListBoxTypedef::UpdateScrollBarsL();
+    CleanupStack::PopAndDestroy( &reverter );
+    }
+  iMmDrawer->TemplateLibrary()->SetScrollbarWidthL(
         ScrollBarFrame()->VerticalScrollBar()->Rect().Width() );
-	FixViewForMirroredLayout();
-	if ( redrawNeeded )
-		{
-		DrawNow();
-		}
-	}
+  FixViewForMirroredLayout();
+  if ( redrawNeeded )
+    {
+    DrawNow();
+    }
+  }
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
 void CMmListBox::UpdateScrollBarsNoRedrawL()
-	{
-	HandleScrollbarVisibilityChangeL();
-	if ( ScrollBarFrame()->VerticalScrollBar()->IsVisible() )
-		{
-		CMmListBoxView* view = static_cast<CMmListBoxView*>( View() );
-		view->DisableScrollToItem( ETrue );
-		TScrollToItemEnabler reverter = { view };
-		CleanupClosePushL( reverter );
-		CEikFormattedCellListBoxTypedef::UpdateScrollBarsL();
-		CleanupStack::PopAndDestroy( &reverter );
-		iMmDrawer->TemplateLibrary()->SetScrollbarWidthL(
-		        ScrollBarFrame()->VerticalScrollBar()->Rect().Width() );
-		}
-	}
+  {
+  HandleScrollbarVisibilityChangeL();
+  if ( ScrollBarFrame()->VerticalScrollBar()->IsVisible() )
+    {
+    CMmListBoxView* view = static_cast<CMmListBoxView*>( View() );
+    view->DisableScrollToItem( ETrue );
+    TScrollToItemEnabler reverter = { view };
+    CleanupClosePushL( reverter );
+    CEikFormattedCellListBoxTypedef::UpdateScrollBarsL();
+    CleanupStack::PopAndDestroy( &reverter );
+    iMmDrawer->TemplateLibrary()->SetScrollbarWidthL(
+            ScrollBarFrame()->VerticalScrollBar()->Rect().Width() );
+    }
+  }
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
 void CMmListBox::SetMarqueeAdapter( CMmMarqueeAdapter* aAdapter )
-	{
-	iMarqueeAdapter = aAdapter;
-	iMarqueeAdapter->SetControl( const_cast< CMmListBox *>(this) );
-	}
+  {
+  iMarqueeAdapter = aAdapter;
+  iMarqueeAdapter->SetControl( const_cast< CMmListBox *>(this) );
+  }
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
 void CMmListBox::SetMarqueeDrawing( TBool aIsMarqueeBeingDrawn )
-	{
-	iMmDrawer->SetMarqueeDrawing( aIsMarqueeBeingDrawn );
-	}
+  {
+  iMmDrawer->SetMarqueeDrawing( aIsMarqueeBeingDrawn );
+  }
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
 void CMmListBox::HandleItemRemovalL()
-	{
-	CEikFormattedCellListBoxTypedef::HandleItemRemovalL();
+  {
+  CEikFormattedCellListBoxTypedef::HandleItemRemovalL();
     DrawNow();
     //avkon does not redraw the items for listbox when item is
     //removed. This needs to be forced here.
     UpdateScrollBarsL();
-	}
+  }
 
 // -----------------------------------------------------------------------------
 // If a parent to the supplied control has its Gc set, this function will find
@@ -819,7 +814,7 @@
 
 #ifdef RD_UI_TRANSITION_EFFECTS_LIST
     MAknListBoxTfxInternal *transApi = CAknListLoader::TfxApiInternal( gc );
-    
+
     if ( transApi )
         {
         transApi->SetListType( MAknListBoxTfxInternal::EListBoxTypeMainPane );
@@ -842,7 +837,7 @@
             {
             TRect clientRect;
             this->RestoreClientRectFromViewRect(clientRect);
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST           
+#ifdef RD_UI_TRANSITION_EFFECTS_LIST
             if ( transApi )
                 {
                 transApi->StartDrawing( MAknListBoxTfxInternal::EListView );
@@ -883,7 +878,7 @@
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
-// 
+//
 void CMmListBox::DrawView()
     {
     iDisableChildComponentDrawing = ETrue;
@@ -896,41 +891,41 @@
 // -----------------------------------------------------------------------------
 //
 void CMmListBox::SetVerticalItemOffset( TInt aOffset )
-	{
-	static_cast<CMmListBoxView*>( View() )->SetItemOffsetInPixels( aOffset );
-	UpdateScrollBarThumbs();
-	}
+  {
+  static_cast<CMmListBoxView*>( View() )->SetItemOffsetInPixels( aOffset );
+  UpdateScrollBarThumbs();
+  }
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
 TInt CMmListBox::VerticalItemOffset() const
-	{
-	return static_cast<CMmListBoxView*>( View() )->VerticalItemOffset();
-	}
+  {
+  return static_cast<CMmListBoxView*>( View() )->VerticalItemOffset();
+  }
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
 void CMmListBox::SetItemHeight( TInt aItemHeight )
-	{
-	if ( aItemHeight != iItemHeight )
-	    {
-	    iItemHeight = aItemHeight;
-	    TRAP_IGNORE( UpdateScrollBarsNoRedrawL() );
-	    }
-	}
+  {
+  if ( aItemHeight != iItemHeight )
+      {
+      iItemHeight = aItemHeight;
+      TRAP_IGNORE( UpdateScrollBarsNoRedrawL() );
+      }
+  }
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
 void CMmListBox::UpdateScrollBarThumbs()
-	{
-	CEikFormattedCellListBox::UpdateScrollBarThumbs();
-	}
+  {
+  CEikFormattedCellListBox::UpdateScrollBarThumbs();
+  }
 
 // -----------------------------------------------------------------------------
 //
@@ -940,9 +935,9 @@
     {
     TInt componentControls(0);
     if ( !iDisableChildComponentDrawing )
-		{
+    {
         componentControls = CEikFormattedCellListBoxTypedef::CountComponentControls();
-    	}
+      }
     return componentControls;
     }
 // -----------------------------------------------------------------------------
@@ -958,7 +953,7 @@
 //
 // -----------------------------------------------------------------------------
 //
-void CMmListBox::HandleScrollEventL( CEikScrollBar* aScrollBar, 
+void CMmListBox::HandleScrollEventL( CEikScrollBar* aScrollBar,
             TEikScrollEvent aEventType )
     {
     if ( aEventType == EEikScrollThumbDragVert && !iScrollbarThumbIsBeingDragged )
--- a/menufw/menufwui/mmwidgets/src/mmlistboxitemdrawer.cpp	Wed Apr 14 15:47:59 2010 +0300
+++ b/menufw/menufwui/mmwidgets/src/mmlistboxitemdrawer.cpp	Tue Apr 27 16:26:12 2010 +0300
@@ -1,22 +1,22 @@
 /*
-* 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:
-*
-*/
-
+ * 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:
+ *
+ */
 
 #include <eikfrlb.h>
+#include <e32math.h>
 #include "mmwidgetsconstants.h"
 #include "hnconvutils.h"
 #include <gdi.h>
@@ -47,13 +47,13 @@
 #include "mmmarqueeadapter.h"
 #include "mmfloatingitem.h"
 #include "mmgridview.h"
+#include "mmlistboxview.h"
 #include "mmcacheforitem.h"
 #include "mmitemsdatacache.h"
 #include "mmwidgetcontainer.h"
 #include "hnsuitemodel.h"
 #include "menudebug.h"
 
-
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
@@ -71,24 +71,25 @@
 	iTemplateLibrary = aTemplateLibrary;
 	iMmModel = aMmListBoxModel;
 	iRedrawBackground = ETrue;
+	iDrawSeparatorLines = EFalse;
 	iZoomIconIndex = -1;
 	iIconAnimationZoomRatio = 1;
 	// this is needed to get iColors initialized on first use:
 	iLastDrawnItemWasFloating = ETrue;
     SetFlags( CListItemDrawer::EDisableHighlight );
-	}
+    }
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
 CMmListBoxItemDrawer::~CMmListBoxItemDrawer()
-	{
-	iFloatingItems.Close();
-	delete iItemsDataCache;
-	delete iAnimator;
-	delete iSubcellText;
-	}
+    {
+    iFloatingItems.Close();
+    delete iItemsDataCache;
+    delete iAnimator;
+    delete iSubcellText;
+    }
 
 // -----------------------------------------------------------------------------
 //
@@ -97,7 +98,7 @@
 void CMmListBoxItemDrawer::EnableCachedDataUse( TBool aEnable )
     {
     iUseCache = aEnable;
-    if ( aEnable )
+    if( aEnable )
         {
         RemoveFloatingItems();
         }
@@ -138,18 +139,18 @@
 //
 CMmListBoxItemDrawer* CMmListBoxItemDrawer::NewLC(
         CMmListBoxModel* aMmListBoxModel,
-	    const CFont* aFont,
-	    CFormattedCellListBoxData* aFormattedCellData,
-	    TMmWidgetType aWidgetType,
-	    CMmTemplateLibrary* aTemplateLibrary )
-	{
-	CMmListBoxItemDrawer* self = new (ELeave)CMmListBoxItemDrawer(
-			aMmListBoxModel, aFont, aFormattedCellData, aWidgetType,
-			aTemplateLibrary );
-	CleanupStack::PushL(self);
-	self->ConstructL();
-	return self;
-	}
+        const CFont* aFont,
+        CFormattedCellListBoxData* aFormattedCellData,
+        TMmWidgetType aWidgetType,
+        CMmTemplateLibrary* aTemplateLibrary )
+    {
+    CMmListBoxItemDrawer* self = new ( ELeave ) CMmListBoxItemDrawer(
+            aMmListBoxModel, aFont, aFormattedCellData, aWidgetType,
+            aTemplateLibrary );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    return self;
+    }
 
 // -----------------------------------------------------------------------------
 //
@@ -157,24 +158,24 @@
 //
 CMmListBoxItemDrawer* CMmListBoxItemDrawer::NewL(
         CMmListBoxModel* aMmListBoxModel,
-	    const CFont* aFont,
-	    CFormattedCellListBoxData* aFormattedCellData,
-	    TMmWidgetType aWidgetType,
-	    CMmTemplateLibrary* aTemplateLibrary )
-	{
-	CMmListBoxItemDrawer* self = CMmListBoxItemDrawer::NewLC(
-	    aMmListBoxModel, aFont, aFormattedCellData, aWidgetType,
-        aTemplateLibrary );
-	CleanupStack::Pop( self );
-	return self;
+      const CFont* aFont,
+      CFormattedCellListBoxData* aFormattedCellData,
+      TMmWidgetType aWidgetType,
+      CMmTemplateLibrary* aTemplateLibrary )
+    {
+    CMmListBoxItemDrawer* self = CMmListBoxItemDrawer::NewLC(
+            aMmListBoxModel, aFont, aFormattedCellData, aWidgetType,
+            aTemplateLibrary );
+    CleanupStack::Pop( self );
+    return self;
 
-	}
+    }
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
-void CMmListBoxItemDrawer::SetView(CEikListBox * aView)
+void CMmListBoxItemDrawer::SetView( CEikListBox * aView )
     {
     iWidget = aView;
     }
@@ -193,40 +194,40 @@
 // -----------------------------------------------------------------------------
 //
 void CMmListBoxItemDrawer::ConstructL()
-	{
-	iAnimator = CMmDrawerAnimator::NewL( *this );
-	iItemsDataCache = CMmItemsDataCache::NewL();
-	iIsEditMode = EFalse;
-	iHighlightShown = EFalse;
-	iDrawMoveIndicators = ETrue;
-	}
+    {
+    iAnimator = CMmDrawerAnimator::NewL( *this );
+    iItemsDataCache = CMmItemsDataCache::NewL();
+    iIsEditMode = EFalse;
+    iHighlightShown = EFalse;
+    iDrawMoveIndicators = ETrue;
+    }
 
-// ----xm-------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
 void CMmListBoxItemDrawer::DrawEmptyItem( TInt aItemIndex,
-        TPoint aItemRectPos,  TBool aViewIsDimmed ) const
+        TPoint aItemRectPos, TBool aViewIsDimmed ) const
     {
     TRect r( aItemRectPos, iItemCellSize );
 
     CFormattedCellListBoxItemDrawer::DrawEmptyItem( aItemIndex, aItemRectPos,
         aViewIsDimmed );
 
-    const_cast<CMmListBoxItemDrawer*>(this)->DrawFloatingItems(r);
+    const_cast<CMmListBoxItemDrawer*> ( this )->DrawFloatingItems( r );
     }
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
-TInt CMmListBoxItemDrawer::GetFloatingItemIndex(TMmFloatingItemType aType) const
+TInt CMmListBoxItemDrawer::GetFloatingItemIndex( TMmFloatingItemType aType ) const
     {
-    TInt ret (KErrNotFound);
-    TInt i(iFloatingItems.Count()-1);
-    for(; i >= 0; i--)
+    TInt ret( KErrNotFound );
+    TInt i( iFloatingItems.Count() - 1 );
+    for( ; i >= 0; i-- )
         {
-        if (iFloatingItems[i].GetFloatingItemType() == aType)
+        if( iFloatingItems[i].GetFloatingItemType() == aType )
             {
             ret = i;
             break;
@@ -242,9 +243,9 @@
 //
 TMmFloatingItem& CMmListBoxItemDrawer::GetFloatingItemL(TMmFloatingItemType aType)
     {
-    TInt index = GetFloatingItemIndex(aType);
+    TInt index = GetFloatingItemIndex( aType );
     User::LeaveIfError( index );
-    return iFloatingItems[ index ];
+    return iFloatingItems[index];
     }
 
 // -----------------------------------------------------------------------------
@@ -275,6 +276,7 @@
     {
     iAnimator->AnimateItemZoomL( aItemIndex, ETrue );
     iAnimator->Trigger();
+    static_cast<CMmWidgetContainer*> (Widget()->Parent() )->SetAllowMove( EFalse );
     }
 
 // -----------------------------------------------------------------------------
@@ -291,42 +293,42 @@
 //
 // -----------------------------------------------------------------------------
 //
-void CMmListBoxItemDrawer::DrawFloatingItems(TRect currentlyDrawnRect)
+void CMmListBoxItemDrawer::DrawFloatingItems( TRect currentlyDrawnRect )
     {
-    TBool redrawItemBackground = IsRedrawItemBackgroundEnabled( );
+    TBool redrawItemBackground = IsRedrawItemBackgroundEnabled();
     SetRedrawItemBackground( EFalse );
-    for(TInt i(iFloatingItems.Count()-1); i >= 0 ; i--)
+    for( TInt i( iFloatingItems.Count() - 1 ); i >= 0; i-- )
         {
         TMmFloatingItemType type = iFloatingItems[i].GetFloatingItemType();
-        if ( iFloatingItems[i].IsFloatingItemValid() )
+        if( iFloatingItems[i].IsFloatingItemValid() )
             {
             TInt drawnItemIndex = iFloatingItems[i].GetDrawnItemIndex();
             TSize size = iWidget->View()->ItemSize( drawnItemIndex );
             TRect rect( iFloatingItems[i].GetItemPosition(), iFloatingItems[i].GetItemPosition() + size);
 
-            if (rect.Intersects(currentlyDrawnRect))
-				{
-				TInt tempZoomIconIndex = iZoomIconIndex;
-				TInt tempZoomRatio = iIconAnimationZoomRatio;
+            if( rect.Intersects( currentlyDrawnRect ) )
+                {
+                TInt tempZoomIconIndex = iZoomIconIndex;
+                TInt tempZoomRatio = iIconAnimationZoomRatio;
 
-				iZoomIconIndex = iFloatingItems[i].GetDrawnItemIndex();
-				iIconAnimationZoomRatio = iFloatingItems[i].GetCurrentZoomRatio();
+                iZoomIconIndex = iFloatingItems[i].GetDrawnItemIndex();
+                iIconAnimationZoomRatio = iFloatingItems[i].GetCurrentZoomRatio();
 
-				if ( ItemHasFloatingType( drawnItemIndex, EDrag) ||
-						ItemHasFloatingType( drawnItemIndex, EDragTransition) )
-					{
-					ClearFlags( CListItemDrawer::EPressedDownState );
-					}
+        if ( ItemHasFloatingType( drawnItemIndex, EDrag) ||
+            ItemHasFloatingType( drawnItemIndex, EDragTransition) )
+                    {
+                    ClearFlags( CListItemDrawer::EPressedDownState );
+                    }
 
-				DrawActualItem( drawnItemIndex, rect, ETrue, EFalse, EFalse, EFalse );
-				iIconAnimationZoomRatio = tempZoomRatio;
-				iZoomIconIndex = tempZoomIconIndex;
-				}
+        DrawActualItem( drawnItemIndex, rect, ETrue, EFalse, EFalse, EFalse );
+                iIconAnimationZoomRatio = tempZoomRatio;
+                iZoomIconIndex = tempZoomIconIndex;
+                }
             }
         else
-        	{
-            iFloatingItems.Remove(i);
-        	}
+            {
+            iFloatingItems.Remove( i );
+            }
         }
     SetRedrawItemBackground( redrawItemBackground );
     }
@@ -337,11 +339,11 @@
 //
 TInt CMmListBoxItemDrawer::GetValidFloatingItemCount(TMmFloatingItemType aType)
     {
-    TInt count (0);
+    TInt count( 0 );
 
-    for(TInt i(iFloatingItems.Count()-1); i >= 0; i--)
+    for( TInt i( iFloatingItems.Count() - 1 ); i >= 0; i-- )
         {
-        if (iFloatingItems[i].GetFloatingItemType() == aType
+        if( iFloatingItems[i].GetFloatingItemType() == aType
                 && iFloatingItems[i].IsFloatingItemValid() )
             count++;
         }
@@ -351,19 +353,19 @@
 //
 // -----------------------------------------------------------------------------
 //
-void CMmListBoxItemDrawer::DrawItem(TInt aItemIndex, TPoint aItemRectPos,
+void CMmListBoxItemDrawer::DrawItem( TInt aItemIndex, TPoint aItemRectPos,
         TBool aItemIsSelected, TBool aItemIsCurrent, TBool aViewIsEmphasized,
         TBool aViewIsDimmed) const
+    {
+    if( !Widget()->View()->RedrawDisabled() )
         {
-        if ( !Widget()->View()->RedrawDisabled() )
-            {
-            TBool highlightVisible =
+        TBool highlightVisible =
                 !( Flags() & CListItemDrawer::ESingleClickDisabledHighlight );
-            aItemIsCurrent = aItemIsCurrent && highlightVisible;
-            DoDrawItem( aItemIndex, aItemRectPos, aItemIsSelected,
-                    aItemIsCurrent, aViewIsEmphasized, aViewIsDimmed);
-            }
+        aItemIsCurrent = aItemIsCurrent && highlightVisible;
+        DoDrawItem( aItemIndex, aItemRectPos, aItemIsSelected,
+                aItemIsCurrent, aViewIsEmphasized, aViewIsDimmed );
         }
+    }
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
@@ -372,25 +374,25 @@
         TBool aItemIsSelected, TBool aItemIsCurrent, TBool aViewIsEmphasized,
         TBool aViewIsDimmed) const
     {
-    TSize itemCellSize = TSize( GetItemSize( aItemIndex, aItemIsCurrent ));
-    TRect actualItemRect(aItemRectPos, itemCellSize);
+    TSize itemCellSize = TSize( GetItemSize( aItemIndex, aItemIsCurrent ) );
+    TRect actualItemRect( aItemRectPos, itemCellSize );
 
 #ifdef RD_UI_TRANSITION_EFFECTS_LIST
-	MAknListBoxTfxInternal* transApi = CAknListLoader::TfxApiInternal( iGc );
-	if ( transApi )
-		{
-		transApi->StartDrawing( MAknListBoxTfxInternal::EListView );
-		transApi->StopDrawing();
-		transApi->BeginRedraw( MAknListBoxTfxInternal::EListItem,
-				actualItemRect, aItemIndex );
-		}
+    MAknListBoxTfxInternal* transApi = CAknListLoader::TfxApiInternal( iGc );
+    if( transApi )
+        {
+        transApi->StartDrawing( MAknListBoxTfxInternal::EListView );
+        transApi->StopDrawing();
+        transApi->BeginRedraw( MAknListBoxTfxInternal::EListItem,
+                actualItemRect, aItemIndex );
+        }
 #endif
 
     const_cast<CMmListBoxItemDrawer*>(this)->iLeftOverAreaUnderAnimatedItem = EFalse;
-    for(TInt i(iFloatingItems.Count()-1); i >= 0; i--)
+    for( TInt i( iFloatingItems.Count() - 1 ); i >= 0; i-- )
         {
-        if ( iFloatingItems[i].GetDrawnItemIndex() == aItemIndex
-        		&& iFloatingItems[i].IsFloatingItemValid() )
+        if( iFloatingItems[i].GetDrawnItemIndex() == aItemIndex
+                && iFloatingItems[i].IsFloatingItemValid() )
             {
             const_cast<CMmListBoxItemDrawer*>(this)->iLeftOverAreaUnderAnimatedItem = ETrue;
             break;
@@ -398,20 +400,20 @@
         }
 
     DrawActualItem(aItemIndex, actualItemRect, aItemIsCurrent, aViewIsEmphasized,
-    		aViewIsDimmed, aItemIsSelected);
+            aViewIsDimmed, aItemIsSelected);
     const_cast<CMmListBoxItemDrawer*>(this)->iLeftOverAreaUnderAnimatedItem = EFalse;
 
     const_cast<CMmListBoxItemDrawer*>(this)->DrawFloatingItems(actualItemRect);
 
-    if (!AknLayoutUtils::PenEnabled() && IsEditMode())
+    if( !AknLayoutUtils::PenEnabled() && IsEditMode() )
         {
-        const_cast<CMmListBoxItemDrawer*>(this)->DrawActualIndicatorItem(
-        		aItemIndex, actualItemRect );
+        const_cast<CMmListBoxItemDrawer*> ( this )->DrawActualIndicatorItem(
+                aItemIndex, actualItemRect );
         }
 
 #ifdef RD_UI_TRANSITION_EFFECTS_LIST
-	if ( transApi )
-		{
+    if( transApi )
+        {
 	    transApi->EndRedraw( MAknListBoxTfxInternal::EListItem, aItemIndex );
 		}
 #endif
@@ -423,12 +425,12 @@
 //
 // -----------------------------------------------------------------------------
 //
-void CMmListBoxItemDrawer::DrawItemText(TInt aItemIndex,
-		const TRect &aItemTextRect, TBool aItemIsCurrent,
-		TBool aViewIsEmphasized, TBool aItemIsSelected ) const
+void CMmListBoxItemDrawer::DrawItemText( TInt aItemIndex,
+        const TRect &aItemTextRect, TBool aItemIsCurrent,
+        TBool aViewIsEmphasized, TBool aItemIsSelected ) const
     {
     TRAP_IGNORE( DoDrawItemTextL( aItemIndex, aItemTextRect, aItemIsCurrent,
-    		aViewIsEmphasized, aItemIsSelected ) );
+                    aViewIsEmphasized, aItemIsSelected ) );
     }
 
 // -----------------------------------------------------------------------------
@@ -436,16 +438,16 @@
 // -----------------------------------------------------------------------------
 //
 void CMmListBoxItemDrawer::DoDrawItemTextL( TInt aItemIndex, const TRect
-		&aItemTextRect, TBool aItemIsCurrent, TBool aViewIsEmphasized,
-		TBool /* aItemIsSelected */) const
+        &aItemTextRect, TBool aItemIsCurrent, TBool aViewIsEmphasized,
+        TBool /* aItemIsSelected */) const
     {
     CMmCacheForItem* cache = iItemsDataCache->GetItemCacheL( aItemIndex );
     cache->InvalidateIfCacheMayNotBeUsed(
             aItemIsCurrent, iLastSubcellsSetupCode );
 
-    if ( IsRedrawItemBackgroundEnabled() )
+    if( IsRedrawItemBackgroundEnabled() )
         {
-        DrawBackgroundAndSeparatorLines( aItemTextRect );
+        DrawBackground( aItemTextRect );
         }
 
     if ( !iUseCache || !cache->IsValid() )
@@ -456,54 +458,63 @@
 
     FormattedCellData()->SetIconArray( cache->GetIconListL() );
 
-	TBool isFloating = !iUseCache && IsFloating( aItemIndex );
-	if ( !!isFloating != !!iLastDrawnItemWasFloating ) // Ex-OR
-	    {
-	    iLastDrawnItemWasFloating = isFloating;
-	    iColors = SetupColors( isFloating );
-	    }
+    TBool isFloating = !iUseCache && IsFloating( aItemIndex );
+    if( !!isFloating != !!iLastDrawnItemWasFloating ) // Ex-OR
+        {
+        iLastDrawnItemWasFloating = isFloating;
+        iColors = SetupColors( isFloating );
+        }
 
-	CFormattedCellListBoxData* data = static_cast<CFormattedCellListBoxData*>(iData);
-	data->EnableMarqueeL( EFalse );
+  CFormattedCellListBoxData* data = static_cast<CFormattedCellListBoxData*>(iData);
+    data->EnableMarqueeL( EFalse );
 
     TBool highlightShown = ETrue;
-	if (FormattedCellData()->RespectFocus() && !aViewIsEmphasized)
-		{
+    if( FormattedCellData()->RespectFocus() && !aViewIsEmphasized )
+        {
 #ifdef RD_UI_TRANSITION_EFFECTS_LIST
-		MAknListBoxTfxInternal *transApi = CAknListLoader::TfxApiInternal( iGc );
-		if ( transApi )
-			 {
-			 transApi->Remove( MAknListBoxTfxInternal::EListHighlight );
-			 }
+    MAknListBoxTfxInternal *transApi = CAknListLoader::TfxApiInternal( iGc );
+        if( transApi )
+            {
+            transApi->Remove( MAknListBoxTfxInternal::EListHighlight );
+            }
 #endif
-		highlightShown = EFalse;
-		}
+        highlightShown = EFalse;
+        }
 
     data->Draw( Properties(aItemIndex), *iGc, &( cache->GetItemText() ), aItemTextRect,
-    		GetHighlightVisibility( aItemIndex, aItemIsCurrent, highlightShown ), iColors );
+            GetHighlightVisibility( aItemIndex, aItemIsCurrent, highlightShown ), iColors );
 
 #ifdef RD_UI_TRANSITION_EFFECTS_LIST
-	MAknListBoxTfxInternal *transApi = CAknListLoader::TfxApiInternal( iGc );
-	if ( transApi )
-		{
-		transApi->StartDrawing( MAknListBoxTfxInternal::EListItem );
-		}
+    MAknListBoxTfxInternal *transApi = CAknListLoader::TfxApiInternal( iGc );
+    if( transApi )
+        {
+        transApi->StartDrawing( MAknListBoxTfxInternal::EListItem );
+        }
 #endif
 
-	if ( iMarqueeAdapter && aItemIsCurrent )
-		{
-		DEBUG(("CMmListBoxItemDrawer::DoDrawItemTextL - DrawMarquee"));
-		iMarqueeAdapter->DrawMarqueeL( *iGc );
-		}
+    if( iMarqueeAdapter && aItemIsCurrent )
+        {
+        DEBUG(("CMmListBoxItemDrawer::DoDrawItemTextL - DrawMarquee"));
+        iMarqueeAdapter->DrawMarqueeL( *iGc );
+        }
 
 #ifdef RD_UI_TRANSITION_EFFECTS_LIST
-	if ( transApi )
-		{
-		transApi->StopDrawing();
-		}
+    if( transApi )
+        {
+        transApi->StopDrawing();
+        }
 #endif
 
-	ColumnData()->SetIconArray( NULL );
+	if( iDrawSeparatorLines )
+        {
+        CMmListBoxView* view = static_cast<CMmListBoxView*>( iWidget->View() );
+        if( aItemIndex != ( view->ModelItemsCount() - 1  ))
+            {
+            AknListUtils::DrawSeparator( *iGc, aItemTextRect, iColors.iBack );
+            }
+       }
+    ColumnData()->SetIconArray( NULL );
+
     }
 
 // -----------------------------------------------------------------------------
@@ -519,29 +530,42 @@
 //
 // -----------------------------------------------------------------------------
 //
+void CMmListBoxItemDrawer::SetDrawSeparatorLines( TBool aDraw )
+    {
+    iDrawSeparatorLines = aDraw;
+    }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
 TBool CMmListBoxItemDrawer::IsRedrawItemBackgroundEnabled() const
     {
     return iRedrawBackground;
     }
 
-void CMmListBoxItemDrawer::DrawBackgroundAndSeparatorLines( const TRect& aItemTextRect ) const
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMmListBoxItemDrawer::DrawBackground( const TRect& aItemTextRect ) const
     {
     MAknsSkinInstance *skin = AknsUtils::SkinInstance();
     CCoeControl* control = FormattedCellData()->Control();
 
-    if ( IsRedrawItemBackgroundEnabled() )
+    if( IsRedrawItemBackgroundEnabled() )
         {
 #ifdef RD_UI_TRANSITION_EFFECTS_LIST
-  	    MAknListBoxTfxInternal *transApi = CAknListLoader::TfxApiInternal( iGc );
-        if ( transApi )
+        MAknListBoxTfxInternal *transApi = CAknListLoader::TfxApiInternal( iGc );
+        if( transApi )
             {
             transApi->StartDrawing( MAknListBoxTfxInternal::EListView );
             }
 #endif
         TBool bgDrawn( EFalse );
-        if ( control )
+        if( control )
             {
-	        if ( CAknEnv::Static()->TransparencyEnabled() )
+            if( CAknEnv::Static()->TransparencyEnabled() )
                 {
                 bgDrawn = AknsDrawUtils::Background(
                     skin, iBgContext, control, *iGc, aItemTextRect,
@@ -555,12 +579,12 @@
                     KAknsDrawParamBottomLevelRGBOnly );
                 }
             }
-        if ( !bgDrawn )
+        if( !bgDrawn )
             {
             iGc->Clear( aItemTextRect );
             }
 #ifdef RD_UI_TRANSITION_EFFECTS_LIST
-        if ( transApi )
+        if( transApi )
             {
             transApi->StopDrawing();
             }
@@ -596,7 +620,7 @@
 				ItemCellSize().iHeight * iIconAnimationZoomRatio);
 
     aSubCellTemplate.iRectAccordingToParent.iTl = TPoint(0, 0);
-    SetupSubCellL( aSubCellTemplate, aIndex , aItemIndex);
+    SetupSubCellL( aSubCellTemplate, aIndex, aItemIndex );
     }
 
 // -----------------------------------------------------------------------------
@@ -604,72 +628,72 @@
 // -----------------------------------------------------------------------------
 //
 void CMmListBoxItemDrawer::SetupSubCellL( TTemplateChild aSubCellTemplate,
-        TInt aIndex, TInt aItemIndex  ) const
-	{
+        TInt aIndex, TInt aItemIndex ) const
+    {
     CFormattedCellListBoxData* data = static_cast<CFormattedCellListBoxData*>(iData);
     TInt width = aSubCellTemplate.iRectAccordingToParent.iBr.iX - aSubCellTemplate.iRectAccordingToParent.iTl.iX;
     TInt height = aSubCellTemplate.iRectAccordingToParent.iBr.iY - aSubCellTemplate.iRectAccordingToParent.iTl.iY;
-    data->SetTransparentSubCellL(aIndex, ETrue);
-    data->SetSubCellSizeL( aIndex, TSize(width,height));
-    data->SetSubCellIconSize( aIndex, TSize(width,height) );
-	data->SetSubCellPositionL( aIndex, aSubCellTemplate.iRectAccordingToParent.iTl);
-	data->SetGraphicsSubCellL( aIndex, aSubCellTemplate.iIsImage );
-	data->SetSubCellAlignmentL( aIndex, aSubCellTemplate.iTextAlign );
-	const CFont* font = AknLayoutUtils::FontFromId(aSubCellTemplate.iFontId);
-	data->SetSubCellFontL (aIndex, font);
-	data->SetSubCellBaselinePosL( aIndex,
-			CAknLayoutFont::AsCAknLayoutFontOrNull( font )->TextPaneTopToBaseline()
-			+ aSubCellTemplate.iRectAccordingToParent.iTl.iY );
+    data->SetTransparentSubCellL( aIndex, ETrue );
+    data->SetSubCellSizeL( aIndex, TSize( width, height ) );
+    data->SetSubCellIconSize( aIndex, TSize( width, height ) );
+    data->SetSubCellPositionL( aIndex, aSubCellTemplate.iRectAccordingToParent.iTl);
+    data->SetGraphicsSubCellL( aIndex, aSubCellTemplate.iIsImage );
+    data->SetSubCellAlignmentL( aIndex, aSubCellTemplate.iTextAlign );
+    const CFont* font = AknLayoutUtils::FontFromId(aSubCellTemplate.iFontId);
+    data->SetSubCellFontL (aIndex, font);
+    data->SetSubCellBaselinePosL( aIndex,
+            CAknLayoutFont::AsCAknLayoutFontOrNull( font )->TextPaneTopToBaseline()
+                    + aSubCellTemplate.iRectAccordingToParent.iTl.iY );
 
-//	If some text is clipped then marquee will do the drawing right after the subcell is drawn by ListBoxData.
-//	Setting the subcell size to zero prevents ListBoxData from drawing the text.
-	if (!aSubCellTemplate.iIsImage
-			&& !iIsMarqueeBeingDrawn
-			&& ( aItemIndex == iWidget->View()->CurrentItemIndex() )
-			&& !IsEditMode()
-			&& iWidgetType == EListbox
-			&& iSubcellText
+    //	If some text is clipped then marquee will do the drawing right after the subcell is drawn by ListBoxData.
+    //	Setting the subcell size to zero prevents ListBoxData from drawing the text.
+  if (!aSubCellTemplate.iIsImage
+      && !iIsMarqueeBeingDrawn
+      && ( aItemIndex == iWidget->View()->CurrentItemIndex() )
+      && !IsEditMode()
+      && iWidgetType == EListbox
+      && iSubcellText
             && iMarqueeAdapter->IsMarqueeEnabled() )
 
-		{
-		if (iMarqueeAdapter && IsTextClippedL( aSubCellTemplate, *iSubcellText )
-			&& STATIC_CAST(CMmWidgetContainer*,Widget()->Parent())->IsHighlightVisible() )
-		    {
-		    data->SetSubCellSizeL( aIndex, TSize(0,0));
-    		const_cast<CMmListBoxItemDrawer*>(this)->AddSubcellMarqueeElementL(
-    				aSubCellTemplate, aIndex, aItemIndex);
-		    }
-		else if (iMarqueeAdapter)
+        {
+    if (iMarqueeAdapter && IsTextClippedL( aSubCellTemplate, *iSubcellText )
+                && STATIC_CAST(CMmWidgetContainer*,Widget()->Parent())->IsHighlightVisible() )
             {
-            iMarqueeAdapter->StopMarqueeDrawing(aIndex);
+            data->SetSubCellSizeL( aIndex, TSize( 0, 0 ) );
+            const_cast<CMmListBoxItemDrawer*> ( this )->AddSubcellMarqueeElementL(
+                    aSubCellTemplate, aIndex, aItemIndex );
             }
-		}
+        else if( iMarqueeAdapter )
+            {
+            iMarqueeAdapter->StopMarqueeDrawing( aIndex );
+            }
+        }
 
-	if ( iMarqueeAdapter && iIsMarqueeBeingDrawn
-    		&& iMarqueeAdapter->SubcellMarqueeElementExists( aIndex ) )
-    	{
-    	if (aItemIndex != iWidget->View()->CurrentItemIndex() )
+    if( iMarqueeAdapter && iIsMarqueeBeingDrawn
+            && iMarqueeAdapter->SubcellMarqueeElementExists( aIndex ) )
+        {
+        if( aItemIndex != iWidget->View()->CurrentItemIndex() )
             {
-            iMarqueeAdapter->StopMarqueeDrawing(aIndex);
+            iMarqueeAdapter->StopMarqueeDrawing( aIndex );
             }
-    	else
-    	    {
-    	    data->SetSubCellSizeL(aIndex, TSize(0, 0));
-    	    }
+        else
+            {
+            data->SetSubCellSizeL( aIndex, TSize( 0, 0 ) );
+            }
         }
-	}
+    }
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
 CFormattedCellListBoxData::TColors CMmListBoxItemDrawer::SetupColors(  TBool aDragged ) const
-	{
-	CFormattedCellListBoxData::TColors colors;
-	MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+    {
+    CFormattedCellListBoxData::TColors colors;
+    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
 
-	if ( !aDragged )
-	    {
+    if( !aDragged )
+        {
         AknsUtils::GetCachedColor( skin, colors.iText, KAknsIIDQsnTextColors,
                 EAknsCIQsnTextColorsCG9 );
         AknsUtils::GetCachedColor( skin, colors.iBack , KAknsIIDQsnTextColors,
@@ -678,9 +702,9 @@
                 KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG11 );
         AknsUtils::GetCachedColor( skin, colors.iHighlightedBack,
                 KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG6 );
-	    }
-	else
-	    {
+        }
+    else
+        {
         AknsUtils::GetCachedColor( skin, colors.iText, KAknsIIDQsnTextColors,
                 EAknsCIQsnTextColorsCG11 );
         AknsUtils::GetCachedColor( skin, colors.iBack , KAknsIIDQsnTextColors,
@@ -689,10 +713,10 @@
                 KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG11 );
         AknsUtils::GetCachedColor( skin, colors.iHighlightedBack,
                 KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG6 );
-	    }
+        }
 
-	return colors;
-	}
+    return colors;
+    }
 
 // -----------------------------------------------------------------------------
 //
@@ -700,8 +724,8 @@
 //
 TInt CMmListBoxItemDrawer::GetItemHeight( TInt aItemIndex, TBool aItemIsCurrent ) const
     {
-    TSize ret(TInt(0),TInt(0));
-    ret = GetItemSize(aItemIndex, aItemIsCurrent);
+    TSize ret( TInt( 0 ), TInt( 0 ) );
+    ret = GetItemSize( aItemIndex, aItemIsCurrent );
     return ret.iHeight;
     }
 
@@ -711,14 +735,14 @@
 //
 TInt CMmListBoxItemDrawer::GetFloatingItemCount()
     {
-	for( TInt i=0; i< iFloatingItems.Count(); i++)
-		{
-		TMmFloatingItem& current = GetFloatingItemAtIndex(i);
-		if (current.GetDrawnItemIndex() == KErrNotFound)
-			{
-			RemoveFloatingItem(i);
-			}
-		}
+    for( TInt i = 0; i < iFloatingItems.Count(); i++ )
+        {
+        TMmFloatingItem& current = GetFloatingItemAtIndex( i );
+        if( current.GetDrawnItemIndex() == KErrNotFound )
+            {
+            RemoveFloatingItem( i );
+            }
+        }
 
     return iFloatingItems.Count();
     }
@@ -729,7 +753,7 @@
 //
 TMmFloatingItem& CMmListBoxItemDrawer::GetFloatingItemAtIndex( TInt aIndex )
     {
-    return iFloatingItems[ aIndex ];
+    return iFloatingItems[aIndex];
     }
 
 // -----------------------------------------------------------------------------
@@ -738,10 +762,10 @@
 //
 void CMmListBoxItemDrawer::RemoveFloatingItem( TInt aPosition )
     {
-    if (aPosition != KErrNotFound)
-    	{
-    	iFloatingItems.Remove( aPosition );
-    	}
+    if( aPosition != KErrNotFound )
+        {
+        iFloatingItems.Remove( aPosition );
+        }
     }
 
 // -----------------------------------------------------------------------------
@@ -761,7 +785,7 @@
         TInt aPosition )
     {
     EnableCachedDataUse( EFalse );
-    if (aPosition != KErrNotFound)
+    if( aPosition != KErrNotFound )
         {
         iFloatingItems.InsertL( aFloatingItem, aPosition );
         }
@@ -777,40 +801,40 @@
 //
 TSize CMmListBoxItemDrawer::GetItemSize( TInt aItemIndex, TBool aItemIsCurrent ) const
     {
-    if ( aItemIndex < 0 )
+    if( aItemIndex < 0 )
         {
         return TSize( 1, 1 );
         }
 
-	TSize size;
+    TSize size;
 
-	CMmCacheForItem* cache = NULL;
-	TRAPD( cacheError, cache = iItemsDataCache->GetItemCacheL( aItemIndex ) );
-	if ( cacheError != KErrNone )
-	    {
-	    cache = NULL;
-	    }
+    CMmCacheForItem* cache = NULL;
+    TRAPD( cacheError, cache = iItemsDataCache->GetItemCacheL( aItemIndex ) );
+    if( cacheError != KErrNone )
+        {
+        cache = NULL;
+        }
 
-	if ( cache )
-	    {
-	    cache->InvalidateIfCacheMayNotBeUsed(
-	            aItemIsCurrent, iLastSubcellsSetupCode );
-	    }
+    if( cache )
+        {
+      cache->InvalidateIfCacheMayNotBeUsed(
+              aItemIsCurrent, iLastSubcellsSetupCode );
+      }
 
-    if ( !iUseCache || !cache || !cache->IsValid() )
+    if( !iUseCache || !cache || !cache->IsValid() )
         {
         const TDesC8& mm_template = iMmModel->GetAttributeAsText (aItemIndex,
                 KMmTemplate8);
         TRect viewRect = iWidget->View()->ViewRect();
         TBool landscapeOrientation = Layout_Meta_Data::IsLandscapeOrientation();
 
-        if ( iTemplateLibrary->GetSize( size, iWidgetType, mm_template,
+        if( iTemplateLibrary->GetSize( size, iWidgetType, mm_template,
                 landscapeOrientation, aItemIsCurrent, viewRect )
                 != KErrNone )
             {
             size = TSize( 1, 1 );
             }
-        if ( cache )
+        if( cache )
             {
             cache->SetSize( size );
             }
@@ -843,19 +867,19 @@
 void CMmListBoxItemDrawer::SetDraggableL( TBool aDraggable )
     {
 
-	iDraggable = aDraggable;
+    iDraggable = aDraggable;
 
-    if (!iDraggable)
+    if( !iDraggable )
         {
-        for(int i=0; i< iFloatingItems.Count(); i++)
+        for( int i = 0; i < iFloatingItems.Count(); i++ )
             {
-            if (iFloatingItems[i].GetFloatingItemType() == EZoomTransition
-                    && iFloatingItems[i].GetZoomingStatus() > 0)
+            if( iFloatingItems[i].GetFloatingItemType() == EZoomTransition
+                    && iFloatingItems[i].GetZoomingStatus() > 0 )
                 {
                 AnimateItemZoomOutL( iFloatingItems[i].GetDrawnItemIndex() );
                 }
-            else if (iFloatingItems[i].GetFloatingItemType() == EDrag
-                    || iFloatingItems[i].IsManualDelete())
+            else if( iFloatingItems[i].GetFloatingItemType() == EDrag
+                    || iFloatingItems[i].IsManualDelete() )
                 {
                 iFloatingItems[i].InvalidateFloatingItem();
                 }
@@ -869,7 +893,7 @@
 //
 void CMmListBoxItemDrawer::SetEditModeL( TBool aEditMode )
     {
-    if ( aEditMode )
+    if( aEditMode )
         {
         EnableCachedDataUse( EFalse );
         }
@@ -889,9 +913,9 @@
 // -----------------------------------------------------------------------------
 //
 TBool CMmListBoxItemDrawer::IsEditMode() const
-	{
-	return iIsEditMode;
-	}
+    {
+    return iIsEditMode;
+    }
 
 // -----------------------------------------------------------------------------
 //
@@ -917,58 +941,58 @@
 		floatingItem.SetManualDelete( ETrue );
 
 		TMmFloatingItem postDragRefresh( item.GetDrawnItemIndex(),
-						item.GetItemPosition(),	EPostDragRefreshItem,
-						MmEffects::KNoAnimationFramesCount, iWidget->View() );
+                item.GetItemPosition(), EPostDragRefreshItem,
+                MmEffects::KNoAnimationFramesCount, iWidget->View() );
 
-		iFloatingItems.Remove(dragFloatingItem);
+        iFloatingItems.Remove( dragFloatingItem );
 
-		if (postDragRefresh.GetItemPosition() != floatingItem.GetItemPosition())
-			{
-			iFloatingItems.Append( postDragRefresh );
-			}
-		iFloatingItems.Insert( floatingItem, 0 );
-		}
-	}
+    if (postDragRefresh.GetItemPosition() != floatingItem.GetItemPosition())
+            {
+            iFloatingItems.Append( postDragRefresh );
+            }
+        iFloatingItems.Insert( floatingItem, 0 );
+        }
+    }
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
-void CMmListBoxItemDrawer::SetDraggedIndexL(TInt aDraggedItemIndex,
-		TPoint aPoint)
+void CMmListBoxItemDrawer::SetDraggedIndexL( TInt aDraggedItemIndex,
+        TPoint aPoint )
     {
     TInt dragFloatingItem = KErrNotFound;
     do
-    	{
-	    dragFloatingItem = GetFloatingItemIndex(EDrag);
-	    if (dragFloatingItem != KErrNotFound)
-	    	{
-	    	TMmFloatingItem & item = GetFloatingItemAtIndex( dragFloatingItem );
+        {
+        dragFloatingItem = GetFloatingItemIndex( EDrag );
+        if( dragFloatingItem != KErrNotFound )
+            {
+        TMmFloatingItem & item = GetFloatingItemAtIndex( dragFloatingItem );
 
-	    	TMmFloatingItem postDragRefresh( item.GetDrawnItemIndex(),
-				item.GetItemPosition(),	EPostDragRefreshItem,
-				MmEffects::KNoAnimationFramesCount, iWidget->View() );
+            TMmFloatingItem postDragRefresh( item.GetDrawnItemIndex(),
+                    item.GetItemPosition(), EPostDragRefreshItem,
+                    MmEffects::KNoAnimationFramesCount, iWidget->View() );
 
-	    	if (postDragRefresh.GetItemPosition() != aPoint)
-	    		{
-	    		iFloatingItems.Append( postDragRefresh );
-	    		}
-	    	}
+            if( postDragRefresh.GetItemPosition() != aPoint )
+                {
+                iFloatingItems.Append( postDragRefresh );
+                }
+            }
 
-		RemoveFloatingItem( dragFloatingItem );
+        RemoveFloatingItem( dragFloatingItem );
 
-    	}
-	while ( dragFloatingItem != KErrNotFound );
+        }
+    while( dragFloatingItem != KErrNotFound );
 
-    if ( aDraggedItemIndex != KErrNotFound )
-    	{
-		TMmFloatingItem floatingItem( aDraggedItemIndex, aPoint, EDrag,
-				MmEffects::KNoAnimationFramesCount, iWidget->View() );
-		floatingItem.SetManualDelete( ETrue );
-		AddFloatingItemL(floatingItem, 0);
+    if( aDraggedItemIndex != KErrNotFound )
+        {
+        TMmFloatingItem floatingItem( aDraggedItemIndex, aPoint, EDrag,
+                MmEffects::KNoAnimationFramesCount, iWidget->View() );
+        floatingItem.SetManualDelete( ETrue );
+        AddFloatingItemL( floatingItem, 0 );
 
-	    ClearFlags( CListItemDrawer::EPressedDownState );
-    	}
+        ClearFlags( CListItemDrawer::EPressedDownState );
+        }
 
     iAnimator->Trigger();
     }
@@ -987,45 +1011,45 @@
 // -----------------------------------------------------------------------------
 //
 void CMmListBoxItemDrawer::SetBgContext(
-		CAknsBasicBackgroundControlContext * aBgContext )
-	{
-	iBgContext = aBgContext;
-	}
+        CAknsBasicBackgroundControlContext * aBgContext )
+    {
+    iBgContext = aBgContext;
+    }
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
 void CMmListBoxItemDrawer::SetScrollbarVisibilityL( TBool aIsScrollbarVisible )
-	{
-	iTemplateLibrary->SetScrollbarVisibilityL( aIsScrollbarVisible );
-	}
+    {
+    iTemplateLibrary->SetScrollbarVisibilityL( aIsScrollbarVisible );
+    }
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
 TRect CMmListBoxItemDrawer::AdjustItemRect( TInt aItemIndex ) const
-	{
-	TSize size = iWidget->View()->ItemSize (iWidget->View()->CurrentItemIndex () );
-	TRect rect(iWidget->View()->ItemPos (iWidget->View()->CurrentItemIndex () ),
-			iWidget->View()->ItemPos (iWidget->View()->CurrentItemIndex () ) + size);
-	if ( !AknLayoutUtils::PenEnabled () && iIsIndicatorItem)
-		{
-		TBool landscapeOrientation =
-				Layout_Meta_Data::IsLandscapeOrientation ();
-		const TDesC8& mm_template = iMmModel->GetAttributeAsText (
-				0, KMmTemplate8);
-		TRect relativeToParentRect = TRect (TPoint (0, 0), TPoint (0, 0));
-		relativeToParentRect = iTemplateLibrary->GetMoveIndicatorRect(
-						iWidgetType, mm_template, landscapeOrientation,
-						aItemIndex == iWidget->View()->CurrentItemIndex () );
-		rect.Move (relativeToParentRect.iTl);
-		rect.iBr.iX = rect.iBr.iX + relativeToParentRect.Width ();
-		rect.iBr.iY = rect.iBr.iY + relativeToParentRect.Height ();
-		}
-	return rect;
-	}
+    {
+  TSize size = iWidget->View()->ItemSize (iWidget->View()->CurrentItemIndex () );
+  TRect rect(iWidget->View()->ItemPos (iWidget->View()->CurrentItemIndex () ),
+      iWidget->View()->ItemPos (iWidget->View()->CurrentItemIndex () ) + size);
+    if( !AknLayoutUtils::PenEnabled() && iIsIndicatorItem )
+        {
+        TBool landscapeOrientation =
+                Layout_Meta_Data::IsLandscapeOrientation();
+    const TDesC8& mm_template = iMmModel->GetAttributeAsText (
+        0, KMmTemplate8);
+        TRect relativeToParentRect = TRect( TPoint( 0, 0 ), TPoint( 0, 0 ) );
+    relativeToParentRect = iTemplateLibrary->GetMoveIndicatorRect(
+            iWidgetType, mm_template, landscapeOrientation,
+            aItemIndex == iWidget->View()->CurrentItemIndex () );
+        rect.Move( relativeToParentRect.iTl );
+        rect.iBr.iX = rect.iBr.iX + relativeToParentRect.Width();
+        rect.iBr.iY = rect.iBr.iY + relativeToParentRect.Height();
+        }
+    return rect;
+    }
 
 // -----------------------------------------------------------------------------
 //
@@ -1040,50 +1064,50 @@
             IsRedrawItemBackgroundEnabled( );
 		SetRedrawItemBackground( EFalse );
 
-		DrawActualItem( aItemIndex, AdjustItemRect( aItemIndex ) , EFalse, EFalse, EFalse, EFalse);
+    DrawActualItem( aItemIndex, AdjustItemRect( aItemIndex ) , EFalse, EFalse, EFalse, EFalse);
 
-		SetRedrawItemBackground( redrawItemBackground );
-		iIsIndicatorItem = EFalse;
-		}
-	}
+        SetRedrawItemBackground( redrawItemBackground );
+        iIsIndicatorItem = EFalse;
+        }
+    }
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
 void CMmListBoxItemDrawer::ReplaceSubCellText( const TDesC& aText )
-	{
-	delete iSubcellText;
-	iSubcellText = NULL;
-	if( aText.Compare( KNullDesC() ) )
-		{
-		iSubcellText = aText.Alloc();
-		}
-	}
+    {
+    delete iSubcellText;
+    iSubcellText = NULL;
+    if( aText.Compare( KNullDesC() ) )
+        {
+        iSubcellText = aText.Alloc();
+        }
+    }
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
 void CMmListBoxItemDrawer::AddSubcellMarqueeElementL( TTemplateChild aSubCellTemplate, TInt aIndex, TInt aItemIndex )
-	{
-	TRgb textColor;
-	MAknsSkinInstance* skin = AknsUtils::SkinInstance();
-	AknsUtils::GetCachedColor( skin, textColor, KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG10 );
-	iMarqueeAdapter->AddMarqueeElementL( aSubCellTemplate.iRectAccordingToParent, *iSubcellText,
-			aSubCellTemplate.iFontId, textColor, aSubCellTemplate.iTextAlign, aIndex,
-			aSubCellTemplate.iRectAccordingToParent.iTl.iY,
-			aItemIndex);
-	}
+  {
+  TRgb textColor;
+  MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+  AknsUtils::GetCachedColor( skin, textColor, KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG10 );
+  iMarqueeAdapter->AddMarqueeElementL( aSubCellTemplate.iRectAccordingToParent, *iSubcellText,
+      aSubCellTemplate.iFontId, textColor, aSubCellTemplate.iTextAlign, aIndex,
+      aSubCellTemplate.iRectAccordingToParent.iTl.iY,
+      aItemIndex);
+  }
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
 void CMmListBoxItemDrawer::SetMarqueeAdapter( CMmMarqueeAdapter* aAdapter )
-	{
-	iMarqueeAdapter = aAdapter;
-	}
+    {
+    iMarqueeAdapter = aAdapter;
+    }
 
 // -----------------------------------------------------------------------------
 //
@@ -1107,17 +1131,17 @@
 	TInt maxClipWidth = aTemplateChild.iRectAccordingToParent.Width();
 	const CFont* font = AknLayoutUtils::FontFromId(aTemplateChild.iFontId);
     return AknBidiTextUtils::ConvertToVisualAndClipL( clipbuf, *font,
-    		aTemplateChild.iRectAccordingToParent.Width(), maxClipWidth );
-	}
+            aTemplateChild.iRectAccordingToParent.Width(), maxClipWidth );
+    }
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
-void CMmListBoxItemDrawer::SetNumberOfColsInView(TInt aNumberOfColumns)
-	{
-	iNumberOfColsInWidget = aNumberOfColumns;
-	}
+void CMmListBoxItemDrawer::SetNumberOfColsInView( TInt aNumberOfColumns )
+    {
+    iNumberOfColsInWidget = aNumberOfColumns;
+    }
 
 // -----------------------------------------------------------------------------
 //
@@ -1135,80 +1159,86 @@
 		    child.iIsImage = EFalse;
 		    }
 
-		if ( IsDraggable() && aItemIndex == iZoomIconIndex )
-			{
-			const TReal KNormalZoomRatio = 1.0;
-			TReal zoomDelta = ( iIconAnimationZoomRatio - KNormalZoomRatio ) / 2.0;
-			TSize size = child.iRectAccordingToParent.Size();
-			TSize sizeDelta( size.iWidth * zoomDelta, size.iHeight * zoomDelta );
-			child.iRectAccordingToParent.Grow( sizeDelta );
-			}
-
-		TSize targetSize = child.iRectAccordingToParent.Size();
+    if( IsEditMode() && IsDraggable() && aItemIndex == iZoomIconIndex )
+        {
+        const TReal KNormalZoomRatio = 1.0;
+        TReal zoomDelta = ( iIconAnimationZoomRatio - KNormalZoomRatio ) / 2.0;
+        TSize size = child.iRectAccordingToParent.Size();
+        TSize sizeDelta( size.iWidth * zoomDelta, size.iHeight * zoomDelta );
+        child.iRectAccordingToParent.Grow( sizeDelta );
+        TInt targetZoom( KZoomStateZoomRatio * 100 );
+        Math::Round( zoomDelta, ( zoomDelta * 1000 ), 0);
+        if( (TInt)zoomDelta == targetZoom )
+            {
+            static_cast<CMmWidgetContainer*> (Widget()->Parent())->SetAllowMove( ETrue );
+            }
+        }
 
-		CHnIconHolder* iconHolder = iMmModel->GetAttributeAsRefCountedGraphics(
-                aItemIndex, child.iData, &targetSize );
-        icon = iconHolder ? iconHolder->GetGulIcon() : NULL;
-        if ( icon )
+    TSize targetSize = child.iRectAccordingToParent.Size();
+
+    CHnIconHolder* iconHolder = iMmModel->GetAttributeAsRefCountedGraphics(
+            aItemIndex, child.iData, &targetSize );
+    icon = iconHolder ? iconHolder->GetGulIcon() : NULL;
+    if( icon )
+        {
+        CFbsBitmap* bitmap = icon->Bitmap();
+        ASSERT( bitmap );
+        //resize the item if it is a move indicator
+        if( iIsIndicatorItem )
             {
-            CFbsBitmap* bitmap = icon->Bitmap();
-            ASSERT( bitmap );
-            //resize the item if it is a move indicator
-            if( iIsIndicatorItem )
-                {
                 AknIconUtils::SetSize( bitmap, child.iRectAccordingToParent.Size(),
-                		EAspectRatioNotPreserved );
-                }
-            else
-                {
+                    EAspectRatioNotPreserved );
+            }
+        else
+            {
                 TSize bmpSize = bitmap->SizeInPixels();
                 TBool setSizeRequired = bitmap->DisplayMode() == ENone;
                 if ( targetSize.iWidth && targetSize.iHeight &&
                         ( setSizeRequired || !BitmapFitsIntoTarget( bmpSize, targetSize ) ) )
                     {
-                    CFbsBitmap* mask = icon->Mask();
-                    if ( mask )
-                        {
+                CFbsBitmap* mask = icon->Mask();
+                if( mask )
+                    {
                         __ASSERT_DEBUG( bmpSize == mask->SizeInPixels(), User::Invariant() );
                         AknIconUtils::SetSize( mask, targetSize, EAspectRatioPreservedAndUnusedSpaceRemoved );
                         }
                     AknIconUtils::SetSize( bitmap, targetSize, EAspectRatioPreservedAndUnusedSpaceRemoved );
-                    }
                 }
+            }
 
             TInt iconIndex = iItemsDataCache->GetItemCacheL( aItemIndex )->AppendIconL( iconHolder );
 
-            HBufC8* number = HnConvUtils::NumToStr8LC( iconIndex );
-            const TInt newLength = aItemText.Length() + number->Length();
+        HBufC8* number = HnConvUtils::NumToStr8LC( iconIndex );
+        const TInt newLength = aItemText.Length() + number->Length();
+        if( aItemText.MaxLength() < newLength )
+            {
+            aItemText.ReAllocL( newLength );
+            }
+        CleanupStack::PopAndDestroy( number );
+        aItemText.AppendNum( iconIndex );
+
+        SetupSubCellL( child, aSubcellIncrement, aItemIndex );
+
+        if( aChildIndex < aTemplateChildArray.Count() - 1 )
+            {
+            const TInt newLength = aItemText.Length() + KTab().Length();
             if( aItemText.MaxLength() < newLength )
                 {
                 aItemText.ReAllocL( newLength );
                 }
-            CleanupStack::PopAndDestroy( number );
-            aItemText.AppendNum( iconIndex );
-
-    	    SetupSubCellL( child, aSubcellIncrement, aItemIndex );
+            aItemText.Append( KTab );
+            }
 
-        	if ( aChildIndex < aTemplateChildArray.Count() - 1 )
-        	    {
-	            const TInt newLength = aItemText.Length() + KTab().Length();
-                if( aItemText.MaxLength() < newLength )
-                    {
-                    aItemText.ReAllocL( newLength );
-                    }
-        	    aItemText.Append( KTab );
-        	    }
-
-        	aSubcellIncrement++;
-        	iLastSubcellsSetupCode.AddSubcellInfo( TMmSubcellsSetupCode::EGraphicsSubcell );
-        	}
-        else
-            {
-            // Mark the fact that subcell was not set to ensure that TMmSubcellsSetupCode
-            // works properly.
+        aSubcellIncrement++;
+          iLastSubcellsSetupCode.AddSubcellInfo( TMmSubcellsSetupCode::EGraphicsSubcell );
+        }
+    else
+        {
+        // Mark the fact that subcell was not set to ensure that TMmSubcellsSetupCode
+        // works properly.
             iLastSubcellsSetupCode.AddSubcellInfo( TMmSubcellsSetupCode::ESkippedSubcell );
-            }
-		}
+        }
+    }
 
 // -----------------------------------------------------------------------------
 //
@@ -1230,61 +1260,61 @@
 // -----------------------------------------------------------------------------
 //
 void CMmListBoxItemDrawer::SetupTextSubcellL(
-		RArray<TTemplateChild>& aTemplateChildArray, TInt aChildIndex,
-		TInt aItemIndex, RBuf& aItemText, TInt& aSubcellIncrement ) const
-		{
-		TTemplateChild child = aTemplateChildArray[aChildIndex];
-		RBuf itemChildText;
-		CleanupClosePushL( itemChildText );
-		const TDesC8& mmTitleDes8 = iMmModel->GetAttributeAsText( aItemIndex,
-				child.iData  );
-		itemChildText.Assign( HnConvUtils::Str8ToStr( mmTitleDes8 ) );
+        RArray<TTemplateChild>& aTemplateChildArray, TInt aChildIndex,
+        TInt aItemIndex, RBuf& aItemText, TInt& aSubcellIncrement ) const
+    {
+    TTemplateChild child = aTemplateChildArray[aChildIndex];
+    RBuf itemChildText;
+    CleanupClosePushL( itemChildText );
+    const TDesC8& mmTitleDes8 = iMmModel->GetAttributeAsText( aItemIndex,
+            child.iData );
+    itemChildText.Assign( HnConvUtils::Str8ToStr( mmTitleDes8 ) );
 
-		AppendText( aItemText, itemChildText );
+    AppendText( aItemText, itemChildText );
 
-		const_cast<CMmListBoxItemDrawer*>(this)->ReplaceSubCellText(
-				itemChildText );
-		CleanupStack::PopAndDestroy( &itemChildText );
+    const_cast<CMmListBoxItemDrawer*> ( this )->ReplaceSubCellText(
+            itemChildText );
+    CleanupStack::PopAndDestroy( &itemChildText );
 
-	    SetupSubCellL( child, aSubcellIncrement, aItemIndex );
+    SetupSubCellL( child, aSubcellIncrement, aItemIndex );
 
-    	if ( aChildIndex < aTemplateChildArray.Count() - 1 )
-    	    {
-    	    AppendText( aItemText, KTab );
-    	    }
+    if( aChildIndex < aTemplateChildArray.Count() - 1 )
+        {
+        AppendText( aItemText, KTab );
+        }
 
-    	aSubcellIncrement++;
-    	iLastSubcellsSetupCode.AddSubcellInfo( TMmSubcellsSetupCode::ETextSubcell );
-		}
+    aSubcellIncrement++;
+      iLastSubcellsSetupCode.AddSubcellInfo( TMmSubcellsSetupCode::ETextSubcell );
+    }
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
 void CMmListBoxItemDrawer::AppendText( RBuf& aBuffer, const TDesC& aTextToAppend ) const
-	{
-		TInt newLength = aBuffer.Length() + aTextToAppend.Length();
-		TInt error = KErrNone;
+    {
+    TInt newLength = aBuffer.Length() + aTextToAppend.Length();
+    TInt error = KErrNone;
 
-   		if( aBuffer.MaxLength() < newLength )
-   		    {
-   		    error = aBuffer.ReAlloc( newLength );
-   		    }
-   		if ( error == KErrNone )
-   			{
-   			aBuffer.Append( aTextToAppend );
-   			}
-	}
+    if( aBuffer.MaxLength() < newLength )
+        {
+        error = aBuffer.ReAlloc( newLength );
+        }
+    if( error == KErrNone )
+        {
+        aBuffer.Append( aTextToAppend );
+        }
+    }
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
 void CMmListBoxItemDrawer::SetupBackdropSubcellL(
-		RArray<TTemplateChild>& aTemplateChildArray, TInt aItemIndex,
-		RBuf& aItemText, TInt& aSubcellIncrement ) const
-	{
+        RArray<TTemplateChild>& aTemplateChildArray, TInt aItemIndex,
+        RBuf& aItemText, TInt& aSubcellIncrement ) const
+    {
     CGulIcon* icon = NULL;
-    for ( TInt i = 0; i < aTemplateChildArray.Count() /*&&
-            aItemIndex != iWidget->View()->CurrentItemIndex()*/; ++i )
+    for( TInt i = 0; i < aTemplateChildArray.Count() /*&&
+     aItemIndex != iWidget->View()->CurrentItemIndex()*/; ++i )
         {
         TTemplateChild child = aTemplateChildArray[i];
         if( child.iImageVisualId == EImageVisualIdEditMode  &&
@@ -1294,14 +1324,14 @@
             		aItemIndex == iWidget->View()->CurrentItemIndex() );
             CHnIconHolder* iconHolder = iMmModel->GetAttributeAsRefCountedGraphics( aItemIndex, child.iData, &itemSize );
             icon = iconHolder ? iconHolder->GetGulIcon() : NULL;
-            if ( icon )
+            if( icon )
                 {
                 CFbsBitmap* bitmap = icon->Bitmap();
-				child.iRectAccordingToParent = TRect( TPoint( 0, 0 ),
-						TPoint( itemSize.iWidth, itemSize.iHeight ) );
-				AknIconUtils::SetSize( bitmap, itemSize,
-						EAspectRatioNotPreserved );
-				TInt iconIndex = iItemsDataCache->GetItemCacheL( aItemIndex )->AppendIconL( iconHolder );
+                child.iRectAccordingToParent = TRect( TPoint( 0, 0 ),
+                        TPoint( itemSize.iWidth, itemSize.iHeight ) );
+                AknIconUtils::SetSize( bitmap, itemSize,
+                        EAspectRatioNotPreserved );
+        TInt iconIndex = iItemsDataCache->GetItemCacheL( aItemIndex )->AppendIconL( iconHolder );
 
                 HBufC8* number = HnConvUtils::NumToStr8LC( iconIndex );
                 TInt newLength = aItemText.Length() + number->Length();
@@ -1324,7 +1354,7 @@
                 }
             }
         }
-	}
+    }
 
 // -----------------------------------------------------------------------------
 //
@@ -1337,7 +1367,7 @@
     cache->MarkAsInvalid();
 
     const TDesC8& mmTemplate = iMmModel->GetAttributeAsText( aItemIndex, KMmTemplate8 );
-    if ( !mmTemplate.Compare( KNullDesC8 ) || !mmTemplate.Compare( KEmpty8 ) )
+    if( !mmTemplate.Compare( KNullDesC8 ) || !mmTemplate.Compare( KEmpty8 ) )
         {
         User::Leave( KErrNotFound );
         }
@@ -1354,68 +1384,68 @@
 
     RArray<TTemplateChild> templateChildArray;
     CleanupClosePushL( templateChildArray );
-    if ( !iIsIndicatorItem )
-		{
-		iTemplateLibrary->GetChildrenL( iWidgetType, templateChildArray, mmTemplate,
-				landscapeOrientation, aItemIsCurrent,	IsEditMode() );
-		}
+    if( !iIsIndicatorItem )
+        {
+    iTemplateLibrary->GetChildrenL( iWidgetType, templateChildArray, mmTemplate,
+        landscapeOrientation, aItemIsCurrent,	IsEditMode() );
+    }
     else if ( !AknLayoutUtils::PenEnabled() )
-		{
-		iTemplateLibrary->GetMoveIndicatorChildrenL( iWidgetType, templateChildArray,
-	    		mmTemplate, landscapeOrientation, aItemIsCurrent );
-		}
+    {
+    iTemplateLibrary->GetMoveIndicatorChildrenL( iWidgetType, templateChildArray,
+          mmTemplate, landscapeOrientation, aItemIsCurrent );
+    }
 
     iLastSubcellsSetupCode.Clear();
 
     //Backdrop icon as first element to draw
     TInt subcellIncrement( 0 );
-    if ( GetBackdropVisibility( aItemIndex, aItemIsCurrent ) )
+    if( GetBackdropVisibility( aItemIndex, aItemIsCurrent ) )
         {
         SetupBackdropSubcellL( templateChildArray, aItemIndex, itemText, subcellIncrement );
         iItemHasBackdrop = ETrue;
         }
     else
-    	{
-    	iItemHasBackdrop = EFalse;
-    	}
+        {
+        iItemHasBackdrop = EFalse;
+        }
 
-	for ( TInt i( 0 ) ; i < templateChildArray.Count() && !iLeftOverAreaUnderAnimatedItem; i++ )
-		{
-		TTemplateChild child = templateChildArray[i];
+  for ( TInt i( 0 ) ; i < templateChildArray.Count() && !iLeftOverAreaUnderAnimatedItem; i++ )
+        {
+        TTemplateChild child = templateChildArray[i];
         if ( child.iImageVisualId == EImageVisualIdEditMode && child.iIsImage )
             {
             continue;
             }
         else if( !child.iIsImage )
-    		{
-    		SetupTextSubcellL( templateChildArray, i, aItemIndex, itemText, subcellIncrement );
-    		}
-    	else
-    		{
-    		SetupIconSubcellL( templateChildArray, i, aItemIndex, itemText, subcellIncrement );
-    		}
-		}
-	TInt subcellsJustSet = subcellIncrement;
-	iCurrentNumberOfSubcellsSet = Max( iCurrentNumberOfSubcellsSet, subcellsJustSet );
-	__ASSERT_DEBUG( iCurrentNumberOfSubcellsSet <= MmTemplateContants::KSubCellsCount,
-	        User::Invariant() );
+        {
+        SetupTextSubcellL( templateChildArray, i, aItemIndex, itemText, subcellIncrement );
+        }
+      else
+        {
+        SetupIconSubcellL( templateChildArray, i, aItemIndex, itemText, subcellIncrement );
+            }
+        }
+    TInt subcellsJustSet = subcellIncrement;
+  iCurrentNumberOfSubcellsSet = Max( iCurrentNumberOfSubcellsSet, subcellsJustSet );
+    __ASSERT_DEBUG( iCurrentNumberOfSubcellsSet <= MmTemplateContants::KSubCellsCount,
+            User::Invariant() );
 
-	for ( TInt i = subcellIncrement; i < iCurrentNumberOfSubcellsSet; i++ )
-	    {
-	    SetupSubNoCellL( i, aItemIndex );
-	    }
+    for( TInt i = subcellIncrement; i < iCurrentNumberOfSubcellsSet; i++ )
+        {
+        SetupSubNoCellL( i, aItemIndex );
+        }
 
-	iLastSubcellsSetupCode.AddTemplateInfo(
-	        iItemsDataCache->GetTemplateIdentifierL( mmTemplate ) );
-	iLastSubcellsSetupCode.AddIsCurrentInfo( aItemIsCurrent );
+    iLastSubcellsSetupCode.AddTemplateInfo(
+            iItemsDataCache->GetTemplateIdentifierL( mmTemplate ) );
+    iLastSubcellsSetupCode.AddIsCurrentInfo( aItemIsCurrent );
 
-	CleanupStack::PopAndDestroy( &templateChildArray );
+    CleanupStack::PopAndDestroy( &templateChildArray );
 
-	cache->SetSubcellsSetupCode( iLastSubcellsSetupCode );
-	// the line below is here only to make the cached information complete
-	GetItemSize( aItemIndex, aItemIsCurrent );
-	cache->MarkAsValidL();
-	}
+    cache->SetSubcellsSetupCode( iLastSubcellsSetupCode );
+    // the line below is here only to make the cached information complete
+    GetItemSize( aItemIndex, aItemIsCurrent );
+    cache->MarkAsValidL();
+    }
 
 // -----------------------------------------------------------------------------
 //
@@ -1431,10 +1461,10 @@
 // -----------------------------------------------------------------------------
 //
 void CMmListBoxItemDrawer::SetHighlightShown( TBool aDrawn )
-	{
-	iHighlightShown = aDrawn;
-	iDrawMoveIndicators = aDrawn;
-	}
+    {
+    iHighlightShown = aDrawn;
+    iDrawMoveIndicators = aDrawn;
+    }
 
 // -----------------------------------------------------------------------------
 //
@@ -1445,16 +1475,16 @@
     TBool isFloating( EFalse );
 
     TInt index = GetFloatingItemIndex( EDrag );
-    if (index == KErrNotFound)
-    	{
-    	index = GetFloatingItemIndex( EDragTransition );
-    	}
+    if( index == KErrNotFound )
+        {
+        index = GetFloatingItemIndex( EDragTransition );
+        }
 
-    if ( KErrNotFound != index )
+    if( KErrNotFound != index )
         {
         TMmFloatingItem& current = const_cast<CMmListBoxItemDrawer*>(this)->GetFloatingItemAtIndex( index );
         TInt drawnIndex = current.GetDrawnItemIndex();
-        if ( drawnIndex == aItemIndex )
+        if( drawnIndex == aItemIndex )
             {
             isFloating = ETrue;
             }
@@ -1466,53 +1496,53 @@
 //
 // -----------------------------------------------------------------------------
 //
-void CMmListBoxItemDrawer::DrawActualItem(TInt aItemIndex,
-		const TRect& aActualItemRect, TBool aItemIsCurrent,
-		TBool aViewIsEmphasized, TBool /*aViewIsDimmed*/,
-		TBool aItemIsSelected) const
-		{
-		if (Properties(aItemIndex).IsSelectionHidden())
-			{
-			aItemIsSelected = EFalse;
-			}
-		DrawItemText(aItemIndex,aActualItemRect,aItemIsCurrent,
-				aViewIsEmphasized,aItemIsSelected);
-		}
+void CMmListBoxItemDrawer::DrawActualItem( TInt aItemIndex,
+        const TRect& aActualItemRect, TBool aItemIsCurrent,
+        TBool aViewIsEmphasized, TBool /*aViewIsDimmed*/,
+        TBool aItemIsSelected ) const
+    {
+    if( Properties( aItemIndex ).IsSelectionHidden() )
+        {
+        aItemIsSelected = EFalse;
+        }
+    DrawItemText( aItemIndex, aActualItemRect, aItemIsCurrent,
+            aViewIsEmphasized, aItemIsSelected );
+    }
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
 TBool CMmListBoxItemDrawer::GetHighlightVisibility( TInt aItemIndex,
-		TBool aItemIsCurrent, TBool aAllowHighlightForNonDraggedItem ) const
-	{
-	TBool highlightVisibility(EFalse);
-	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 );
+        TBool aItemIsCurrent, TBool aAllowHighlightForNonDraggedItem ) const
+    {
+    TBool highlightVisibility( EFalse );
+    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 );
 
-		if ( ( STATIC_CAST(CMmWidgetContainer*,Widget()->Parent())->IsHighlightVisible()
-				&& aItemIsCurrent && aAllowHighlightForNonDraggedItem )
-				|| currentlyDraggedItem )
-			{
-			highlightVisibility = ETrue;
-			}
-		}
-	return highlightVisibility;
-	}
+        if( ( STATIC_CAST(CMmWidgetContainer*,Widget()->Parent())->IsHighlightVisible()
+                && aItemIsCurrent && aAllowHighlightForNonDraggedItem )
+                || currentlyDraggedItem )
+            {
+            highlightVisibility = ETrue;
+            }
+        }
+    return highlightVisibility;
+    }
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
 TBool CMmListBoxItemDrawer::GetBackdropVisibility( TInt aItemIndex,
-		TBool aItemIsCurrent ) const
-	{
-	TBool currentlyDraggedItem =
-		ItemHasFloatingType( aItemIndex, EDrag ) ||
-		ItemHasFloatingType( aItemIndex, EDragTransition );
+        TBool aItemIsCurrent ) const
+    {
+  TBool currentlyDraggedItem =
+    ItemHasFloatingType( aItemIndex, EDrag ) ||
+    ItemHasFloatingType( aItemIndex, EDragTransition );
 
     return 	IsEditMode() /* draw the backdrop only in edit mode */
     		&& !currentlyDraggedItem /* backdrop is disabled for dragged items */
@@ -1520,26 +1550,26 @@
     		&& !iLeftOverAreaUnderAnimatedItem /* is the currently drawn item the area left over behind dragged item*/
     		&& !( STATIC_CAST( CMmWidgetContainer*,Widget()->Parent() )->IsHighlightVisible()
     				&& aItemIsCurrent );/*if the timer is active then we want to draw highlight (not backdrop) on the current index*/
-	}
+    }
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
 TBool CMmListBoxItemDrawer::ItemHasFloatingType( TInt aItemIndex,
-		TMmFloatingItemType aFloatingType) const
-	{
-	TBool hasFloatingType( EFalse );
-	for ( TInt i = iFloatingItems.Count() - 1 ; i >= 0; i-- )
+        TMmFloatingItemType aFloatingType ) const
+    {
+    TBool hasFloatingType( EFalse );
+    for( TInt i = iFloatingItems.Count() - 1; i >= 0; i-- )
         {
-		const TMmFloatingItem& item = iFloatingItems[i];
-        if ( item.GetFloatingItemType() == aFloatingType
-        		&& item.GetDrawnItemIndex() == aItemIndex )
+        const TMmFloatingItem& item = iFloatingItems[i];
+        if( item.GetFloatingItemType() == aFloatingType
+                && item.GetDrawnItemIndex() == aItemIndex )
             {
             hasFloatingType = ETrue;
             break;
             }
         }
-	return hasFloatingType;
-	}
+    return hasFloatingType;
+    }
 // End of file
--- a/menufw/menufwui/mmwidgets/src/mmlistboxview.cpp	Wed Apr 14 15:47:59 2010 +0300
+++ b/menufw/menufwui/mmwidgets/src/mmlistboxview.cpp	Tue Apr 27 16:26:12 2010 +0300
@@ -12,7 +12,7 @@
 * Contributors:
 *
 * Description:
- *  Version     : %version: MM_51 % << Don't touch! Updated by Synergy at check-out.
+ *  Version     : %version: MM_52 % << Don't touch! Updated by Synergy at check-out.
  *
 */
 
@@ -198,6 +198,15 @@
 	return ret;
 	}
 
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TInt CMmListBoxView::ModelItemsCount()
+    {
+    return iModel->NumberOfItems();
+    }
+
 
 // -----------------------------------------------------------------------------
 //
@@ -330,13 +339,15 @@
 
 		if ( !itemDrawer->IsEditMode() )
 		    {
-		    itemDrawer->DrawBackgroundAndSeparatorLines( ViewRect() );
+		    itemDrawer->DrawBackground( ViewRect() );
             itemDrawer->SetRedrawItemBackground( EFalse );
+            itemDrawer->SetDrawSeparatorLines( ETrue );
             while (i < lastPotentialItemIndex)
                 {
                 DrawItem(i++);
                 }
             itemDrawer->SetRedrawItemBackground( ETrue );
+            itemDrawer->SetDrawSeparatorLines( EFalse );
 		    }
 		else
 		    {
@@ -378,7 +389,9 @@
 
 	if ( !redrawConsumed )
 		{
-		DrawSingleItem ( aItemIndex );
+        itemDrawer->SetDrawSeparatorLines( ETrue );
+	    DrawSingleItem ( aItemIndex );
+        itemDrawer->SetDrawSeparatorLines( EFalse );
 		}
 	}
 
--- a/menufw/menufwui/mmwidgets/src/mmwidgetcontainer.cpp	Wed Apr 14 15:47:59 2010 +0300
+++ b/menufw/menufwui/mmwidgets/src/mmwidgetcontainer.cpp	Tue Apr 27 16:26:12 2010 +0300
@@ -16,7 +16,6 @@
 *
 */
 
-
 #include <e32keys.h>
 #include <e32math.h>
 #include <AknsDrawUtils.h>
@@ -83,32 +82,34 @@
     return CMmListBoxContainer::NewL( aRect, aObjectProvider, aTemplateLibrary );
     }
 
-
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
 void CMmWidgetContainer::ConstructL()
-	{
+    {
     iBgContext = CAknsBasicBackgroundControlContext::NewL(
-    	KAknsIIDQsnBgAreaMainAppsGrid, Rect(), EFalse);
+            KAknsIIDQsnBgAreaMainAppsGrid, Rect(), EFalse );
     iLongTapDetector = CAknLongTapDetector::NewL( this );
-    iLongTapDetector->EnableLongTapAnimation(ETrue);
-	}
+    iLongTapDetector->EnableLongTapAnimation( ETrue );
+    }
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
 CMmWidgetContainer::CMmWidgetContainer()
-    : iIsFaded( EFalse )
+    : iMarqueeAdapter( NULL )
+    , iLongTapInProgress( EFalse )
+    , iBgContext( NULL )
+    , iIsFaded( EFalse )
     , iHasFocus( ETrue )
     , iInForeground( ETrue )
+    , iAllowMove( EFalse )
+    , iRecipientId( KErrNotFound )
+    , iEventParameters( NULL )
     {
-    iMarqueeAdapter = NULL;
-    iBgContext = NULL;
     iWidgetPositionCache.iValid = EFalse;
-    iLongTapInProgress = EFalse;
     }
 
 // -----------------------------------------------------------------------------
@@ -122,6 +123,7 @@
     delete iBgContext;
     delete iPostProcessor;
     delete iLongTapDetector;
+    delete iEventParameters;
     }
 
 // -----------------------------------------------------------------------------
@@ -130,7 +132,7 @@
 //
 EXPORT_C void CMmWidgetContainer::EnableLongTapAnimation( TBool aEnable )
     {
-    if ( iLongTapDetector )
+    if( iLongTapDetector )
         {
         iLongTapDetector->EnableLongTapAnimation( aEnable );
         }
@@ -142,22 +144,22 @@
 //
 void CMmWidgetContainer::SizeChanged()
     {
-    if ( iWidget && iWidgetRect != Rect() )
+    if( iWidget && iWidgetRect != Rect() )
         {
-    	CMmTemplateLibrary * templateLibrary =
-    	static_cast<CMmListBoxItemDrawer*> (
-    			Widget()->View()->ItemDrawer() )->TemplateLibrary();
-        if ( Rect() != templateLibrary->GetParentRect(
-        		Layout_Meta_Data::IsLandscapeOrientation() ) )
-        	{
-        	templateLibrary->CleanAndClearCache();
-        	}
+      CMmTemplateLibrary * templateLibrary =
+      static_cast<CMmListBoxItemDrawer*> (
+          Widget()->View()->ItemDrawer() )->TemplateLibrary();
+        if( Rect() != templateLibrary->GetParentRect(
+                Layout_Meta_Data::IsLandscapeOrientation() ) )
+            {
+            templateLibrary->CleanAndClearCache();
+            }
         iWidget->View()->SetViewRect( Rect() );
         iWidget->SetRect( Rect() );
         iWidgetRect = Rect();
         }
 
-    if ( iBgContext )
+    if( iBgContext )
         {
         TRect rect = iCoeEnv->ScreenDevice()->SizeInPixels();
         iBgContext->SetRect( rect );
@@ -172,7 +174,7 @@
 //
 // -----------------------------------------------------------------------------
 //
-void CMmWidgetContainer::Draw( const TRect& /*aRect*/ ) const
+void CMmWidgetContainer::Draw( const TRect& /*aRect*/) const
     {
     // do nothing
     }
@@ -180,14 +182,14 @@
 //
 // -----------------------------------------------------------------------------
 //
-TTypeUid::Ptr CMmWidgetContainer::MopSupplyObject(TTypeUid aId)
+TTypeUid::Ptr CMmWidgetContainer::MopSupplyObject( TTypeUid aId )
     {
-    if (aId.iUid == MAknsControlContext::ETypeId && iBgContext )
+    if( aId.iUid == MAknsControlContext::ETypeId && iBgContext )
         {
-        return MAknsControlContext::SupplyMopObject(aId, iBgContext );
+        return MAknsControlContext::SupplyMopObject( aId, iBgContext );
         }
 
-    return CCoeControl::MopSupplyObject(aId);
+    return CCoeControl::MopSupplyObject( aId );
     }
 
 // -----------------------------------------------------------------------------
@@ -200,19 +202,19 @@
     iLastDragPoint = aPointerEvent.iPosition;
     iLastDragHighlight = GetHighlight();
     if( !iWidget->View()->XYPosToItemIndex(
-    		aPointerEvent.iPosition, iDraggedIndex ) )
+        aPointerEvent.iPosition, iDraggedIndex ) )
         {
         iDraggedIndex = KErrNotFound;
         }
     iItemRelativeTapPoint = aPointerEvent.iPosition - iWidget->View()->ItemPos(
-    		iDraggedIndex );
+        iDraggedIndex );
     }
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
-void CMmWidgetContainer::HandleButtonUpL(const TPointerEvent& /*aPointerEvent*/ )
+void CMmWidgetContainer::HandleButtonUpL( const TPointerEvent& /*aPointerEvent*/)
     {
     iTapPoint = TPoint( 0, 0 );
     CancelDragL( EFalse );
@@ -227,7 +229,7 @@
     if ( aType == KEikDynamicLayoutVariantSwitch ||
             aType == KAknsMessageSkinChange )
         {
-        static_cast<CMmListBoxItemDrawer*>( iDrawer )->InvalidateCache();
+        static_cast<CMmListBoxItemDrawer*> ( iDrawer )->InvalidateCache();
         CMmTemplateLibrary * templateLibrary =
         static_cast<CMmListBoxItemDrawer*>( iDrawer )->TemplateLibrary();
         templateLibrary->CleanAndClearCache();
@@ -235,15 +237,15 @@
 
     TBool highlightVisibleBefore = iWidget->IsVisible() && IsHighlightVisible();
     CCoeControl::HandleResourceChange( aType );
-    if ( highlightVisibleBefore )
+    if( highlightVisibleBefore )
         {
         TRAP_IGNORE( SetHighlightVisibilityL( ETrue ) );
         }
 
-	if ( aType == KEikDynamicLayoutVariantSwitch && !IsHighlightVisible() )
-		{
-		TRAP_IGNORE( SetDefaultHighlightL( EFalse ) );
-		}
+    if( aType == KEikDynamicLayoutVariantSwitch && !IsHighlightVisible() )
+        {
+        TRAP_IGNORE( SetDefaultHighlightL( EFalse ) );
+        }
     }
 
 // -----------------------------------------------------------------------------
@@ -253,7 +255,7 @@
 EXPORT_C void CMmWidgetContainer::ItemIconZoomL( TInt /*aItemIndex */)
     {
     TInt index = GetHighlight();
-    if (index != iDraggedIndex)
+    if( index != iDraggedIndex )
         {
         iDrawer->AnimateItemZoomInL( index );
         }
@@ -264,65 +266,65 @@
 // -----------------------------------------------------------------------------
 //
 EXPORT_C CHnSuiteModel* CMmWidgetContainer::GetSuiteModelL()
-	{
-	return GetMmModel()->GetSuiteModel();
-	}
+    {
+    return GetMmModel()->GetSuiteModel();
+    }
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
-void CMmWidgetContainer::HandleDragL(const TPointerEvent& aPointerEvent,
+void CMmWidgetContainer::HandleDragL( const TPointerEvent& aPointerEvent,
         TBool aAbortAnimation )
     {
     DEBUG(("\t_Mm_:CMmWidgetContainer::HandleDragL: iLastDragHighlight = %d ",
-    		iLastDragHighlight ));
+                    iLastDragHighlight ));
 
     TInt highlight = GetHighlight();
     DEBUG(("\t_Mm_:CMmWidgetContainer::HandleDragL: highlight = %d ", highlight ));
 
-    TPoint dragDelta ( iLastDragPoint - aPointerEvent.iPosition);
+    TPoint dragDelta( iLastDragPoint - aPointerEvent.iPosition );
     TInt dragSpeed = dragDelta.iX * dragDelta.iX + dragDelta.iY * dragDelta.iY;
-    TBool tooFast = (dragSpeed > MmEffects::KDragSpeedIgnoreThreshold);
+    TBool tooFast = ( dragSpeed > MmEffects::KDragSpeedIgnoreThreshold );
 
-    if (iLastDragHighlight != highlight )
+    if( iLastDragHighlight != highlight )
         {
-       	iDragAndDropObserver->HandleDragOverL( GetHighlight() );
+        iDragAndDropObserver->HandleDragOverL( GetHighlight() );
         }
 
-    if (!tooFast)
-    	{
-		TSize itemSize = iWidget->View()->ItemSize( highlight );
-		TPoint itemPos = iWidget->View()->ItemPos( highlight );
+    if( !tooFast )
+        {
+        TSize itemSize = iWidget->View()->ItemSize( 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)
-				   {
-				   GetMmModel()->ReorderModelL( iDraggedIndex, highlight );
-				   AnimateShiftL( highlight );
-				   iDrawer->SetDraggedIndexL( highlight,
-						   aPointerEvent.iPosition - iItemRelativeTapPoint );
-				   iDraggedIndex = highlight;
-				   iDragAndDropObserver->HandleDraggedIndexUpdatedL( 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)
+           {
+           GetMmModel()->ReorderModelL( iDraggedIndex, highlight );
+                AnimateShiftL( highlight );
+                iDrawer->SetDraggedIndexL( highlight,
+                        aPointerEvent.iPosition - iItemRelativeTapPoint );
+           iDraggedIndex = highlight;
+           iDragAndDropObserver->HandleDraggedIndexUpdatedL( highlight );
+           }
+       }
+      }
 
     if ( DeltaSquare( iTapPoint, aPointerEvent.iPosition ) > KDragDelta &&
-				!iDrawer->IsDraggable() )
-		{
-		iDrawer->SetDraggedIndexL( iDraggedIndex, iTapPoint - iItemRelativeTapPoint );
-		iDrawer->SetDraggableL( ETrue );
-		}
-	else if ( iDrawer->IsDraggable() )
-		{
-		iDrawer->SetDraggedPointL( aPointerEvent.iPosition - iItemRelativeTapPoint );
-		}
+        !iDrawer->IsDraggable() )
+    {
+    iDrawer->SetDraggedIndexL( iDraggedIndex, iTapPoint - iItemRelativeTapPoint );
+        iDrawer->SetDraggableL( ETrue );
+        }
+    else if( iDrawer->IsDraggable() )
+        {
+        iDrawer->SetDraggedPointL( aPointerEvent.iPosition - iItemRelativeTapPoint );
+        }
 
     DEBUG(("\t_Mm_:CMmWidgetContainer::HandleDragL: iLastDragHighlight = %d ", iLastDragHighlight ));
     DEBUG(("\t_Mm_:CMmWidgetContainer::HandleDragL: highlight = %d ", highlight ));
@@ -334,24 +336,24 @@
 //
 // -----------------------------------------------------------------------------
 //
-void CMmWidgetContainer::AnimateShiftL(TInt aHighlight)
-	{
+void CMmWidgetContainer::AnimateShiftL( TInt aHighlight )
+    {
     TInt lowerVal =  (iDraggedIndex < aHighlight)? iDraggedIndex : aHighlight;
     TInt higherVal = (iDraggedIndex < aHighlight)? aHighlight : iDraggedIndex;
-    TInt switchOperation = (iDraggedIndex < aHighlight) ? EFalse : ETrue;
+    TInt switchOperation = ( iDraggedIndex < aHighlight ) ? EFalse : ETrue;
 
-       for(TInt iter(lowerVal); iter < higherVal; iter++ )
-           {
-           TInt from = iter + 1;
-           TInt to = iter;
-           if (switchOperation)
-               {
-               from = iter;
-               to = iter + 1;
-               }
-           iDrawer->AnimateItemSwapL( from, to );
+    for( TInt iter( lowerVal ); iter < higherVal; iter++ )
+        {
+        TInt from = iter + 1;
+        TInt to = iter;
+        if( switchOperation )
+            {
+            from = iter;
+            to = iter + 1;
+            }
+        iDrawer->AnimateItemSwapL( from, to );
         }
-     }
+    }
 
 // -----------------------------------------------------------------------------
 //
@@ -359,7 +361,7 @@
 //
 EXPORT_C void CMmWidgetContainer::CancelDragL( TBool aAnimate )
     {
-    if (aAnimate)
+    if( aAnimate )
         {
         iDrawer->AnimateDragItemTransitionL();
         }
@@ -367,7 +369,7 @@
     SetHighlightAfterDrag();
 
     iDraggedIndex = -1;
-    iDrawer->SetDraggedIndexL( iDraggedIndex, TPoint(0,0) );
+    iDrawer->SetDraggedIndexL( iDraggedIndex, TPoint( 0, 0 ) );
     SetDraggableL( EFalse );
 
     TInt dragFloatingItem;
@@ -376,9 +378,7 @@
         dragFloatingItem = iDrawer->GetFloatingItemIndex( EDrag );
         iDrawer->RemoveFloatingItem( dragFloatingItem );
         }
-    while ( dragFloatingItem != KErrNotFound );
-
-    iDrawer->GetAnimator()->CancelNextRedrawL();
+    while( dragFloatingItem != KErrNotFound );
 
     }
 
@@ -387,24 +387,24 @@
 // -----------------------------------------------------------------------------
 //
 
-TBool CMmWidgetContainer::IsFolderL(TInt aItemIndex)
-	{
-	TBool result = EFalse;
+TBool CMmWidgetContainer::IsFolderL( TInt aItemIndex )
+    {
+    TBool result = EFalse;
 
-	CHnSuiteModel* model = GetMmModel()->GetSuiteModel();
-	if (model)
-		{
-		CHnItemModel* onItemModel = model->GetItemModel( model->IdByIndex( aItemIndex ));
-	    if (onItemModel)
-	    	{
-	    	result = onItemModel->GetItemType() == EItemTypeParentFolder ||
-	      		onItemModel->GetItemType() == EItemTypeFolder;
-	    	}
-		}
+    CHnSuiteModel* model = GetMmModel()->GetSuiteModel();
+    if( model )
+        {
+    CHnItemModel* onItemModel = model->GetItemModel( model->IdByIndex( aItemIndex ));
+        if( onItemModel )
+            {
+            result = onItemModel->GetItemType() == EItemTypeParentFolder
+                    || onItemModel->GetItemType() == EItemTypeFolder;
+            }
+        }
 
-	return result;
+    return result;
 
-	}
+    }
 
 // -----------------------------------------------------------------------------
 //
@@ -412,20 +412,20 @@
 //
 
 TBool CMmWidgetContainer::IsNoItemDragged()
-	{
-	TBool noItemDragged = EFalse;
-	noItemDragged = ( KErrNotFound == iDraggedIndex ) ? ETrue : noItemDragged;
-	CHnSuiteModel* model = GetMmModel()->GetSuiteModel();
-	if ( !noItemDragged && model)
-		{
-		CHnItemModel* onItemModel = model->GetItemModel( model->IdByIndex( iDraggedIndex ));
-	    if (onItemModel)
-	    	{
-	    	noItemDragged = ( onItemModel->GetItemType() == EItemTypeParentFolder );
-	    	}
-		}
-	return noItemDragged;
-	}
+    {
+    TBool noItemDragged = EFalse;
+  noItemDragged = ( KErrNotFound == iDraggedIndex ) ? ETrue : noItemDragged;
+    CHnSuiteModel* model = GetMmModel()->GetSuiteModel();
+    if( !noItemDragged && model )
+        {
+    CHnItemModel* onItemModel = model->GetItemModel( model->IdByIndex( iDraggedIndex ));
+        if( onItemModel )
+            {
+        noItemDragged = ( onItemModel->GetItemType() == EItemTypeParentFolder );
+            }
+        }
+    return noItemDragged;
+    }
 
 // -----------------------------------------------------------------------------
 //
@@ -433,15 +433,15 @@
 //
 EXPORT_C void CMmWidgetContainer::SetHasFocusL( TBool aHasFocus )
     {
-    if ( !!aHasFocus != !!iHasFocus ) // logical Ex-OR
+    if( !!aHasFocus != !!iHasFocus ) // logical Ex-OR
         {
         iHasFocus = aHasFocus;
         StartOrStopMarquee();
         }
-    if ( !aHasFocus )
-    	{
-    	SetHighlightVisibilityL( EFalse );
-    	}
+    if( !aHasFocus )
+        {
+        SetHighlightVisibilityL( EFalse );
+        }
     }
 
 // -----------------------------------------------------------------------------
@@ -450,7 +450,7 @@
 //
 EXPORT_C void CMmWidgetContainer::SetIsFaded( TBool aIsFaded )
     {
-    if ( !!aIsFaded != !!iIsFaded ) // logical Ex-OR
+    if( !!aIsFaded != !!iIsFaded ) // logical Ex-OR
         {
         iIsFaded = aIsFaded;
         StartOrStopMarquee();
@@ -470,139 +470,192 @@
 //
 // -----------------------------------------------------------------------------
 //
-TBool CMmWidgetContainer::IsDeleteLockedL( TInt aItemIndex )
-	{
-	TBool result = ETrue;
+EXPORT_C TBool CMmWidgetContainer::AllowMove() const
+    {
+    return iAllowMove;
+    }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMmWidgetContainer::SetAllowMove( TBool aAllowMove )
+    {
+    iAllowMove = aAllowMove;
+    }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMmWidgetContainer::SetTriggerMoveItemL( const TInt aRecipientId,
+        CLiwGenericParamList* aEventParameters )
+    {
+    iRecipientId = aRecipientId;
+    if( !iEventParameters )
+        {
+        iEventParameters = CLiwGenericParamList::NewL();
+        }
+    else
+        {
+        iEventParameters->Reset();
+        }
+
+    iEventParameters->AppendL(*aEventParameters);
+    }
 
-	CHnSuiteModel* model = GetMmModel()->GetSuiteModel();
-	if (model)
-		{
-		CHnItemModel* onItemModel = model->GetItemModel(model->IdByIndex(
-				aItemIndex));
-		if (onItemModel)
-			{
-			result = onItemModel->IsDeleteLocked();
-			}
-		}
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMmWidgetContainer::TriggerMoveItemL()
+    {
+    if( iRecipientId != KErrNotFound && iDragAndDropObserver )
+        {
+        iDragAndDropObserver->HandleTriggerMoveItemL( iRecipientId,
+            iEventParameters );
+        iRecipientId = KErrNotFound;
+        iEventParameters->Reset();
+        }
+    }
 
-	return result;
-	}
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TBool CMmWidgetContainer::IsDeleteLockedL( TInt aItemIndex )
+    {
+    TBool result = ETrue;
+
+    CHnSuiteModel* model = GetMmModel()->GetSuiteModel();
+    if( model )
+        {
+        CHnItemModel* onItemModel = model->GetItemModel( model->IdByIndex(
+                aItemIndex ) );
+        if( onItemModel )
+            {
+            result = onItemModel->IsDeleteLocked();
+            }
+        }
+
+    return result;
+    }
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
 void CMmWidgetContainer::ManageFolderZoomingL( TBool aDraggedItemOverIcons )
-	{
-	TBool isAnimated;
+    {
+    TBool isAnimated( EFalse );
 
-	isAnimated = EFalse;
-	for(int i=0; i< iDrawer->GetFloatingItemCount(); i++)
-		{
-	    TMmFloatingItem& current = iDrawer->GetFloatingItemAtIndex(i);
-	    if (/*current.GetFloatingItemType() != EZoomTransition &&*/
-	    		current.GetFloatingItemType() != EPostHighlightChangeRefreshItem &&
- 				current.GetDrawnItemIndex() == GetHighlight() )
-	    	{
-	        isAnimated = ETrue;
-	        break;
-	        }
-	    }
+    for( int i = 0; i < iDrawer->GetFloatingItemCount(); i++ )
+        {
+        TMmFloatingItem& current = iDrawer->GetFloatingItemAtIndex( i );
+        if( /*current.GetFloatingItemType() != EZoomTransition &&*/
+            current.GetFloatingItemType() != EPostHighlightChangeRefreshItem
+                && current.GetDrawnItemIndex() == GetHighlight() )
+            {
+            isAnimated = ETrue;
+            break;
+            }
+        }
 
-	if (!isAnimated)
-		{
-		if ( GetHighlight() != iDraggedIndex &&
-			 IsFolderL( GetHighlight() ) &&
-			 !IsDeleteLockedL( GetHighlight() ) &&
-			 iDrawer->IsDraggable() )
-			{
-			iDrawer->AnimateItemZoomInL( GetHighlight() );
-			}
-		}
+    if( !isAnimated )
+        {
+        if( GetHighlight() != iDraggedIndex
+                && IsFolderL( GetHighlight() )
+                && !IsDeleteLockedL( GetHighlight() )
+                && iDrawer->IsDraggable() )
+            {
+            iDrawer->AnimateItemZoomInL( GetHighlight() );
+            }
+        }
 
-	isAnimated = EFalse;
-	for(int i=0; i< iDrawer->GetFloatingItemCount(); i++)
-		{
-	    TMmFloatingItem& current = iDrawer->GetFloatingItemAtIndex(i);
-	    if (current.GetFloatingItemType() != EZoomTransition &&
-	    		current.GetFloatingItemType() != EPostHighlightChangeRefreshItem &&
-				current.GetDrawnItemIndex() == iLastDragHighlight )
-	    	{
-	        isAnimated = ETrue;
-	        break;
-	        }
-	    }
+    isAnimated = EFalse;
+    for( int i = 0; i < iDrawer->GetFloatingItemCount(); i++ )
+        {
+        TMmFloatingItem& current = iDrawer->GetFloatingItemAtIndex( i );
+        if( current.GetFloatingItemType() != EZoomTransition
+                && current.GetFloatingItemType() != EPostHighlightChangeRefreshItem
+                && current.GetDrawnItemIndex() == iLastDragHighlight )
+            {
+            isAnimated = ETrue;
+            break;
+            }
+        }
 
-	if (!isAnimated)
-		{
-		if ( ( !aDraggedItemOverIcons && IsFolderL( iLastDragHighlight ) ) ||
-				iLastDragHighlight != Widget()->CurrentItemIndex() )
-			{
-			iDrawer->AnimateItemZoomOutL( iLastDragHighlight );
-			}
-		}
-	}
+    if( !isAnimated )
+        {
+        if( ( !aDraggedItemOverIcons && IsFolderL( iLastDragHighlight ) )
+                || iLastDragHighlight != Widget()->CurrentItemIndex() )
+            {
+            iDrawer->AnimateItemZoomOutL( iLastDragHighlight );
+            }
+        }
+    }
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
 void CMmWidgetContainer::HandlePointerEventsInEditModeL(
-		const TPointerEvent& aPointerEvent, TBool aAbortAnimations )
-	{
+        const TPointerEvent& aPointerEvent, TBool aAbortAnimations )
+    {
 
-	TInt pointedItem = KErrNotFound;
-	TBool draggedItemOverIcons = iWidget->View()->XYPosToItemIndex(
-			aPointerEvent.iPosition, pointedItem );
+    TInt pointedItem = KErrNotFound;
+    TBool draggedItemOverIcons = iWidget->View()->XYPosToItemIndex(
+            aPointerEvent.iPosition, pointedItem );
 
-	if (aPointerEvent.iType == TPointerEvent::EButton1Down)
+    if( aPointerEvent.iType == TPointerEvent::EButton1Down )
         {
-//TODO: PROTO OF 2PHASE HIGHLIGHT EDITMODE BEHAVIOUR
-//        if (!IsFolderL(pointedItem))
-//        	{
-//        	iDrawer->ClearFlags( CListItemDrawer::EPressedDownState );
-//        	}
-        HandleButtonDownL(aPointerEvent);
+        //TODO: PROTO OF 2PHASE HIGHLIGHT EDITMODE BEHAVIOUR
+        //        if (!IsFolderL(pointedItem))
+        //        	{
+        //        	iDrawer->ClearFlags( CListItemDrawer::EPressedDownState );
+        //        	}
+        HandleButtonDownL( aPointerEvent );
         iDragAndDropObserver->HandleDragStartL( GetHighlight() );
         }
-    else if ( (aPointerEvent.iType == TPointerEvent::EDrag ||
-            aPointerEvent.iType == TPointerEvent::EButtonRepeat) &&
-            iDraggedIndex != KErrNotFound)
+    else if( ( aPointerEvent.iType == TPointerEvent::EDrag
+            || aPointerEvent.iType == TPointerEvent::EButtonRepeat )
+            && iDraggedIndex != KErrNotFound )
         {
-//TODO: PROTO OF 2PHASE HIGHLIGHT EDITMODE BEHAVIOUR
-//        if (!IsFolderL(pointedItem))
-//        	{
-//        	iDrawer->SetFlags( CListItemDrawer::EPressedDownState );
-//        	}
+        //TODO: PROTO OF 2PHASE HIGHLIGHT EDITMODE BEHAVIOUR
+        //        if (!IsFolderL(pointedItem))
+        //        	{
+        //        	iDrawer->SetFlags( CListItemDrawer::EPressedDownState );
+        //        	}
 
         TPointerEvent pointerEvent = aPointerEvent;
         if( WidgetType() == EListWidget )
-        	{
-        	pointerEvent.iPosition.iX =
-                    iWidget->View()->ItemPos( pointedItem ).iX +
-                    iItemRelativeTapPoint.iX;
-        	}
+            {
+            pointerEvent.iPosition.iX =
+                    iWidget->View()->ItemPos( pointedItem ).iX
+                    + iItemRelativeTapPoint.iX;
+            }
 
-        if (GetHighlight() !=  Widget()->CurrentItemIndex() )
-        	{
-        	SetHighlightL( Widget()->CurrentItemIndex() );
-        	}
+        if( GetHighlight() != Widget()->CurrentItemIndex() )
+            {
+            SetHighlightL( Widget()->CurrentItemIndex() );
+            }
 
         ManageFolderZoomingL( draggedItemOverIcons );
 
-        HandleDragL(pointerEvent, aAbortAnimations);
+        HandleDragL( pointerEvent, aAbortAnimations );
 
         }
     else if (aPointerEvent.iType == TPointerEvent::EButton1Up && iDrawer->IsDraggable())
         {
-        if ( !draggedItemOverIcons )
-        	{
-        	SetManualHighlightL( iDraggedIndex );
-        	}
+        if( !draggedItemOverIcons )
+            {
+            SetManualHighlightL( iDraggedIndex );
+            }
 
         iDragAndDropObserver->HandleDragStopL( GetHighlight() );
-        HandleButtonUpL(aPointerEvent);
+        iAllowMove = EFalse ;
+        HandleButtonUpL( aPointerEvent );
         }
-	}
+    }
 
 // -----------------------------------------------------------------------------
 //
@@ -611,70 +664,70 @@
 void CMmWidgetContainer::HandlePointerEventL(const TPointerEvent& aPointerEvent )
     {
     if ( iMarqueeAdapter && aPointerEvent.iType == TPointerEvent::EButton1Down )
-    	{
-    	iMarqueeAdapter->StopMarqueeDrawing();
-    	}
+      {
+      iMarqueeAdapter->StopMarqueeDrawing();
+      }
 
     TInt index = KErrNotFound;
     TBool itemExists = iWidget->View()->XYPosToItemIndex( aPointerEvent.iPosition, index );
 
-    if ( iLongTapDetector )
+    if( iLongTapDetector )
         {
-        if ( aPointerEvent.iType == TPointerEvent::EButton1Down )
+        if( aPointerEvent.iType == TPointerEvent::EButton1Down )
             {
             iLongTapDetector->EnableLongTapAnimation( itemExists &&
                     GetMmModel()->GetNumberOfSpecificMenuItemsL( index ) > 0 );
             }
         TPointerEvent longTapPointerEvent = aPointerEvent;
-        if ( aPointerEvent.iType == TPointerEvent::EButtonRepeat )
+        if( aPointerEvent.iType == TPointerEvent::EButtonRepeat )
             {
             longTapPointerEvent.iType = TPointerEvent::EDrag;
             }
         iLongTapDetector->PointerEventL( longTapPointerEvent );
         }
 
-    CCoeControl::HandlePointerEventL(aPointerEvent);
+    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
-    		  // because behaviour in the grid and list is different
-    		  || (aPointerEvent.iType == TPointerEvent::EButtonRepeat && WidgetType() == EGridWidget ))
-    	{
-    	if ( itemExists )
-    		{
-        	if ( GetHighlight() != index )
-        	    {
-        	    SetHighlightVisibilityL( EFalse );
-        	    if ( IsEditMode() )
-        	    	{
-        		    SetHighlightL( index );
-        	    	}
-        	    }
-    		}
-    	else
-    		{
-    		SetHighlightVisibilityL( EFalse );
-    		}
-    	}
+    else if( aPointerEvent.iType == TPointerEvent::EDrag
+    // 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 ))
+        {
+        if( itemExists )
+            {
+            if( GetHighlight() != index )
+                {
+                SetHighlightVisibilityL( EFalse );
+                if( IsEditMode() )
+                    {
+                    SetHighlightL( index );
+                    }
+                }
+            }
+        else
+            {
+            SetHighlightVisibilityL( EFalse );
+            }
+        }
 
-	TInt lastTopItemIndex = Widget()->TopItemIndex();
+    TInt lastTopItemIndex = Widget()->TopItemIndex();
 
     TBool abortAnimation = lastTopItemIndex != Widget()->TopItemIndex();
 
-    if (abortAnimation)
+    if( abortAnimation )
         {
         iDrawer->GetAnimator()->CancelAnimationsL();
         }
 
-    if ( IsEditMode() && iDragAndDropObserver )
-    	{
-		HandlePointerEventsInEditModeL(aPointerEvent, abortAnimation);
-    	}
+    if( IsEditMode() && iDragAndDropObserver )
+        {
+        HandlePointerEventsInEditModeL( aPointerEvent, abortAnimation );
+        }
     }
 
 // -----------------------------------------------------------------------------
@@ -682,12 +735,12 @@
 // -----------------------------------------------------------------------------
 //
 EXPORT_C TRect CMmWidgetContainer::GetItemRectL( TInt aItemIndex )
-	{
-	User::LeaveIfNull( iWidget );
-	TPoint pos = iWidget->View()->ItemPos( aItemIndex );
-	TSize size = iDrawer->GetItemSize( aItemIndex, EFalse );
-	return TRect( pos.iX, pos.iY, pos.iX + size.iWidth, pos.iY + size.iHeight );
-	}
+    {
+    User::LeaveIfNull( iWidget );
+    TPoint pos = iWidget->View()->ItemPos( aItemIndex );
+    TSize size = iDrawer->GetItemSize( aItemIndex, EFalse );
+  return TRect( pos.iX, pos.iY, pos.iX + size.iWidth, pos.iY + size.iHeight );
+    }
 
 // -----------------------------------------------------------------------------
 //
@@ -705,9 +758,9 @@
 // -----------------------------------------------------------------------------
 //
 TBool CMmWidgetContainer::IsEditMode() const
-	{
-	return iIsEditMode;
-	}
+    {
+    return iIsEditMode;
+    }
 
 // -----------------------------------------------------------------------------
 //
@@ -716,15 +769,16 @@
 void CMmWidgetContainer::SetEditModeL( TBool aIsEditMode )
     {
     iIsEditMode = aIsEditMode;
+    iAllowMove = EFalse;
     StartOrStopMarquee();
 
     ASSERT(iDrawer);
     iDrawer->SetEditModeL( aIsEditMode );
-    if ( !AknLayoutUtils::PenEnabled() && aIsEditMode )
-    	{
+    if( !AknLayoutUtils::PenEnabled() && aIsEditMode )
+        {
         iDraggedIndex = iWidget->CurrentItemIndex();
         ScrollViewIfNeededL(); //only edit mode non-touch
-    	}
+        }
 
     // scrollbar does not work when scrolling is disabled
     // iWidget->DisableScrolling( aIsEditMode );
@@ -739,24 +793,24 @@
     // activate the model
     CHnSuiteModel* suiteModel = GetMmModel()->GetSuiteModel();
 
-    if ( suiteModel )
+    if( suiteModel )
         {
         suiteModel->SetActiveL( aEnable );
         }
 
-    if ( ( !!aEnable != !!iPreviousHighlightVisibility ) // Ex-OR
+    if( ( !!aEnable != !!iPreviousHighlightVisibility ) // Ex-OR
             || ( !!aEnable != !!IsHighlightVisible() ) ) // Ex-OR
         {
 #ifdef RD_UI_TRANSITION_EFFECTS_LIST
-            MAknListBoxTfxInternal *transApi = CAknListLoader::TfxApiInternal(
-                    iDrawer->Gc() );
+        MAknListBoxTfxInternal *transApi = CAknListLoader::TfxApiInternal(
+                iDrawer->Gc() );
 #endif
-        if ( !aEnable )
+        if( !aEnable )
             {
             iWidget->View()->ItemDrawer()->SetFlags(
-                CListItemDrawer::ESingleClickDisabledHighlight );
+                    CListItemDrawer::ESingleClickDisabledHighlight );
 #ifdef RD_UI_TRANSITION_EFFECTS_LIST
-            if ( transApi )
+            if( transApi )
                 {
                 transApi->Remove( MAknListBoxTfxInternal::EListHighlight );
                 }
@@ -765,10 +819,10 @@
         else
             {
             iWidget->View()->ItemDrawer()->ClearFlags(
-                CListItemDrawer::ESingleClickDisabledHighlight );
+                    CListItemDrawer::ESingleClickDisabledHighlight );
             }
 
-        if ( IsVisible() )
+        if( IsVisible() )
             {
             TInt highlight = GetHighlight();
             CListBoxView* view = Widget()->View();
@@ -785,8 +839,8 @@
 //
 EXPORT_C TBool CMmWidgetContainer::IsHighlightVisible()
     {
-    return !( iWidget->View()->ItemDrawer()->Flags() &
-    		CListItemDrawer::ESingleClickDisabledHighlight );
+    return !( iWidget->View()->ItemDrawer()->Flags()
+            & CListItemDrawer::ESingleClickDisabledHighlight );
     }
 
 // -----------------------------------------------------------------------------
@@ -794,7 +848,7 @@
 // -----------------------------------------------------------------------------
 //
 EXPORT_C TBool CMmWidgetContainer::IsDraggable()
-	{
+    {
     iDrawer = STATIC_CAST(CMmListBoxItemDrawer*, iWidget->View()->ItemDrawer());
     return iDrawer->IsDraggable();
     }
@@ -813,7 +867,7 @@
 //
 // -----------------------------------------------------------------------------
 //
-CCoeControl* CMmWidgetContainer::ComponentControl(TInt aIndex) const
+CCoeControl* CMmWidgetContainer::ComponentControl( TInt aIndex ) const
     {
     switch( aIndex )
         {
@@ -836,12 +890,12 @@
 //
 // -----------------------------------------------------------------------------
 //
-EXPORT_C void CMmWidgetContainer::SetObserver( MMmWidgetObserver*  aObserver )
+EXPORT_C void CMmWidgetContainer::SetObserver( MMmWidgetObserver* aObserver )
     {
     //iWidget->SetListBoxObserver( aObserver );
     iListBoxObserver = aObserver;
     iKeyEventObserver = aObserver;
-	iDragAndDropObserver = aObserver;
+    iDragAndDropObserver = aObserver;
     }
 
 // -----------------------------------------------------------------------------
@@ -856,7 +910,7 @@
 //
 // -----------------------------------------------------------------------------
 //
-EXPORT_C TInt CMmWidgetContainer::GetHighlight( )
+EXPORT_C TInt CMmWidgetContainer::GetHighlight()
     {
     return iCurrentHighlight;
     }
@@ -866,24 +920,24 @@
 // -----------------------------------------------------------------------------
 //
 void CMmWidgetContainer::SetManualHighlightL( TInt aItemIndex,
-		TBool aRedraw )
-	{
-	SetHighlightL( aItemIndex );
+        TBool aRedraw )
+    {
+    SetHighlightL( aItemIndex );
 
-	if ( aItemIndex >= 0 && aItemIndex < GetMmModel()->NumberOfItems() )
-		{
-		if ( aItemIndex != iWidget->CurrentItemIndex() )
-			{
-			iWidget->View()->SetCurrentItemIndex( aItemIndex );
-			}
+    if( aItemIndex >= 0 && aItemIndex < GetMmModel()->NumberOfItems() )
+        {
+        if( aItemIndex != iWidget->CurrentItemIndex() )
+            {
+            iWidget->View()->SetCurrentItemIndex( aItemIndex );
+            }
 
-		if ( aRedraw )
-			{
-			iWidget->SetCurrentItemIndex( aItemIndex );
-			iWidget->DrawNow();
-			}
-		}
-	}
+        if( aRedraw )
+            {
+            iWidget->SetCurrentItemIndex( aItemIndex );
+            iWidget->DrawNow();
+            }
+        }
+    }
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
@@ -892,49 +946,48 @@
     {
     ASSERT( aItemIndex >= KErrNotFound );
 
-    if (aItemIndex == KErrNotFound)
+    if( aItemIndex == KErrNotFound )
         {
-        iCurrentHighlight =	 iPreviousHighlight = KErrNotFound;
+        iCurrentHighlight = iPreviousHighlight = KErrNotFound;
         SetDefaultHighlightL( EFalse );
         }
-    else if (aItemIndex >= 0 && aItemIndex < GetMmModel()->NumberOfItems())
+    else if( aItemIndex >= 0 && aItemIndex < GetMmModel()->NumberOfItems() )
         {
         iPreviousHighlight = iCurrentHighlight;
         iCurrentHighlight = aItemIndex;
 
-        if ( iPreviousHighlight != iCurrentHighlight )
+        if( iPreviousHighlight != iCurrentHighlight )
             {
             HideOptionsMenuIfDisplayed();
             }
 
         CHnSuiteModel* suiteModel = GetMmModel()->GetSuiteModel();
 
-        if (suiteModel)
+        if( suiteModel )
             {
             suiteModel->SetSuiteHighlightL( iCurrentHighlight );
             }
         }
 
+    if( IsEditMode() )
+        {
+        TMmFloatingItem postDragCurrent( GetHighlight(),
+                Widget()->View()->ItemPos( GetHighlight() ),
+                EPostHighlightChangeRefreshItem,
+                MmEffects::KNoAnimationFramesCount, Widget()->View() );
 
-	if ( IsEditMode() )
-    	{
-    	TMmFloatingItem postDragCurrent( GetHighlight(),
-    			Widget()->View()->ItemPos( GetHighlight() ),
-    			EPostHighlightChangeRefreshItem,
-				MmEffects::KNoAnimationFramesCount, Widget()->View() );
-
-    	iDrawer->AddFloatingItemL( postDragCurrent );
+        iDrawer->AddFloatingItemL( postDragCurrent );
 
-    	if ( GetPreviousHighlight() != GetHighlight() )
-    		{
-    		TMmFloatingItem postDragPrevious( GetPreviousHighlight(),
-    				Widget()->View()->ItemPos( GetPreviousHighlight() ),
-    				EPostHighlightChangeRefreshItem,
-    				MmEffects::KNoAnimationFramesCount, Widget()->View() );
+        if( GetPreviousHighlight() != GetHighlight() )
+            {
+            TMmFloatingItem postDragPrevious( GetPreviousHighlight(),
+                    Widget()->View()->ItemPos( GetPreviousHighlight() ),
+                    EPostHighlightChangeRefreshItem,
+                    MmEffects::KNoAnimationFramesCount, Widget()->View() );
 
-    		iDrawer->AddFloatingItemL( postDragPrevious );
-    		}
-    	}
+            iDrawer->AddFloatingItemL( postDragPrevious );
+            }
+        }
     }
 
 // -----------------------------------------------------------------------------
@@ -957,7 +1010,7 @@
 void CMmWidgetContainer::HideOptionsMenuIfDisplayed()
     {
     CEikMenuBar* menuBar = CEikonEnv::Static()->AppUiFactory()->MenuBar();
-    if ( menuBar && menuBar->IsDisplayed() )
+    if( menuBar && menuBar->IsDisplayed() )
         {
         menuBar->StopDisplayingMenuBar();
         }
@@ -968,7 +1021,7 @@
 //
 // -----------------------------------------------------------------------------
 //
-void CMmWidgetContainer::SetFlag(TInt /*Flag*/)
+void CMmWidgetContainer::SetFlag( TInt /*Flag*/)
     {
     }
 
@@ -994,25 +1047,25 @@
 
     TBool highlightVisibleWhenEventReceived = IsHighlightVisible();
 
-    if ( IsEditMode() && IsDraggable() )
-    	return resp;
+    if( IsEditMode() && IsDraggable() )
+        return resp;
 
     resp = HandleKeyEventL( aKeyEvent, aType );
-    if ( iMarqueeAdapter && ( aType == EEventKeyDown ) )
-    	{
-    	iMarqueeAdapter->StopMarqueeDrawing();
-    	}
+    if( iMarqueeAdapter && ( aType == EEventKeyDown ) )
+        {
+        iMarqueeAdapter->StopMarqueeDrawing();
+        }
 
-    if (!AknLayoutUtils::PenEnabled() && iIsEditMode )
+    if( !AknLayoutUtils::PenEnabled() && iIsEditMode )
         {
-		if ((GetHighlight() + ColumnsInCurrentView() > NumberOfItems() - 1)
-						&& aKeyEvent.iScanCode == EStdKeyDownArrow)
-			// the second condition is needed to block moving item down when there is no item below the moved item.
-			{
-			return resp;
-			}
+        if( ( GetHighlight() + ColumnsInCurrentView() > NumberOfItems() - 1 )
+                && aKeyEvent.iScanCode == EStdKeyDownArrow )
+        // the second condition is needed to block moving item down when there is no item below the moved item.
+            {
+            return resp;
+            }
 
-        if (aType == EEventKey )
+        if( aType == EEventKey )
             {
             TInt prevIndex = GetHighlight();
             static_cast<CMmListBoxItemDrawer*>(iDrawer)->SetHighlightShown( EFalse );
@@ -1022,45 +1075,45 @@
             ScrollViewIfNeededL(); //only edit mode non-touch
 
             if ( prevIndex != GetHighlight()
-            		&& KErrNotFound != prevIndex  )
-            	{
-            	iDraggedIndex = prevIndex;
+                && KErrNotFound != prevIndex  )
+                {
+                iDraggedIndex = prevIndex;
                 iDragAndDropObserver->HandleDragStartL( iDraggedIndex );
                 GetMmModel()->ReorderModelL( iDraggedIndex, GetHighlight() );
-                iDrawer->AnimateItemSwapL( iDraggedIndex , GetHighlight() );
+                iDrawer->AnimateItemSwapL( iDraggedIndex, GetHighlight() );
                 AnimateShiftL( GetHighlight() );
-            	}
+                }
             return resp;
             }
         }
 
-    if ( resp == EKeyWasNotConsumed )
+    if( resp == EKeyWasNotConsumed )
         {
         resp = iWidget->OfferKeyEventL( aKeyEvent, aType );
         }
 
-    if ( iKeyEventObserver )
-    	{
-    	resp = iKeyEventObserver->HandleKeyPressedL( aKeyEvent, aType );
-    	}
+    if( iKeyEventObserver )
+        {
+        resp = iKeyEventObserver->HandleKeyPressedL( aKeyEvent, aType );
+        }
 
     if ( ( aKeyEvent.iScanCode == EStdKeyDevice3 ||
-    		aKeyEvent.iScanCode == EStdKeyEnter ||
-    		aKeyEvent.iScanCode == EStdKeyNkpEnter ) && aType == EEventKeyDown )
-    	{
-    	if ( highlightVisibleWhenEventReceived )
-    		{
-    		iAllowLongPress = EFalse;
-    		}
-    	else
-    		{
-    		iAllowLongPress = ETrue;
+        aKeyEvent.iScanCode == EStdKeyEnter ||
+        aKeyEvent.iScanCode == EStdKeyNkpEnter ) && aType == EEventKeyDown )
+        {
+        if( highlightVisibleWhenEventReceived )
+            {
+            iAllowLongPress = EFalse;
+            }
+        else
+            {
+            iAllowLongPress = ETrue;
 
-			SetHighlightVisibilityL( ETrue );
-			SetDefaultHighlightL( ETrue );
-			HandleForegroundGainedL();
-			}
-    	}
+            SetHighlightVisibilityL( ETrue );
+            SetDefaultHighlightL( ETrue );
+            HandleForegroundGainedL();
+            }
+        }
     return resp;
     }
 
@@ -1069,10 +1122,10 @@
 // -----------------------------------------------------------------------------
 //
 TInt CMmWidgetContainer::ColumnsInCurrentView()
-	{
-	//should be overridden by deriving classes
-	return NumberOfItems();
-	}
+    {
+    //should be overridden by deriving classes
+    return NumberOfItems();
+    }
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
@@ -1080,8 +1133,8 @@
 TInt CMmWidgetContainer::RowsInCurrentView()
     {
     //should be overridden by deriving classes
-    CListBoxView *view = ((CListBoxView*) Widget()->View());
-    return view->NumberOfItemsThatFitInRect( Rect());//Widget()->View()->ViewRect());
+    CListBoxView *view = ( (CListBoxView* ) Widget()->View() );
+    return view->NumberOfItemsThatFitInRect( Rect() );//Widget()->View()->ViewRect());
     }
 
 // -----------------------------------------------------------------------------
@@ -1089,7 +1142,7 @@
 // -----------------------------------------------------------------------------
 //
 void CMmWidgetContainer::HandleRockerPressL()
-	{
+    {
     TKeyEvent ke;
     ke.iScanCode = EStdKeyNull;
     ke.iCode = EStdKeyNull;
@@ -1099,7 +1152,7 @@
         {
         iKeyEventObserver->HandleKeyPressedL( ke, EEventUser );
         }
-	}
+    }
 
 // -----------------------------------------------------------------------------
 //
@@ -1109,37 +1162,37 @@
         TEventCode aType )
     {
     TKeyResponse resp = EKeyWasNotConsumed;
-    TBool arrowKeyPressed = aKeyEvent.iScanCode == EStdKeyRightArrow ||
-        aKeyEvent.iScanCode == EStdKeyLeftArrow ||
-        aKeyEvent.iScanCode == EStdKeyUpArrow ||
-        aKeyEvent.iScanCode == EStdKeyDownArrow;
+    TBool arrowKeyPressed = aKeyEvent.iScanCode == EStdKeyRightArrow
+            || aKeyEvent.iScanCode == EStdKeyLeftArrow
+            || aKeyEvent.iScanCode == EStdKeyUpArrow
+            || aKeyEvent.iScanCode == EStdKeyDownArrow;
     TBool arrowHasHandling = ( aKeyEvent.iScanCode == EStdKeyRightArrow
-									&& WidgetType() != EListWidget )
-							|| ( aKeyEvent.iScanCode == EStdKeyLeftArrow
-									&& WidgetType() != EListWidget )
-							|| aKeyEvent.iScanCode == EStdKeyUpArrow
-							|| aKeyEvent.iScanCode == EStdKeyDownArrow;
+                  && WidgetType() != EListWidget )
+              || ( aKeyEvent.iScanCode == EStdKeyLeftArrow
+                  && WidgetType() != EListWidget )
+              || aKeyEvent.iScanCode == EStdKeyUpArrow
+              || aKeyEvent.iScanCode == EStdKeyDownArrow;
 
     // handle arrow: draw highlight when arrow used
-    if ( arrowHasHandling )
+    if( arrowHasHandling )
         {
-        if ( !IsHighlightVisible() )
+        if( !IsHighlightVisible() )
             {
-            if ( aType == EEventKey  || aType == EEventKeyUp )
+            if( aType == EEventKey || aType == EEventKeyUp )
                 {
                 SetHighlightVisibilityL( ETrue );
                 SetDefaultHighlightL( ETrue );
                 }
-           	// override avkon's default highlight setting
-         	resp = EKeyWasConsumed;
+            // override avkon's default highlight setting
+            resp = EKeyWasConsumed;
             }
         else
             {
             // this block is used to set the highlight only once for each event
-            if ( aKeyEvent.iRepeats > 0 )
+            if( aKeyEvent.iRepeats > 0 )
                 {
                 // if repeated key events we move focus on EEventKey
-                if ( aType == EEventKey )
+                if( aType == EEventKey )
                     {
                     SetHighlightL( iWidget->CurrentItemIndex() );
                     }
@@ -1147,13 +1200,13 @@
             else
                 {
                 // if single event we move focus on EEventKeyUp
-                if ( aType == EEventKeyUp )
+                if( aType == EEventKeyUp )
                     {
                     SetHighlightL( iWidget->CurrentItemIndex() );
                     }
                 }
             }
-    	}
+        }
     else if( arrowKeyPressed )
         {
         // ignore left and right arrows in list
@@ -1161,19 +1214,19 @@
         }
     // rocker select (short press)
     else if ( ( aKeyEvent.iScanCode == EStdKeyDevice3 ) && ( aType == EEventKeyDown  ) )
-    	{
-		HandleRockerPressL();
-		resp = EKeyWasConsumed;
-    	}
+        {
+        HandleRockerPressL();
+        resp = EKeyWasConsumed;
+        }
     else if ( iAllowLongPress && aType == EEventKey && aKeyEvent.iRepeats > 0 &&
-    		( aKeyEvent.iScanCode == EStdKeyDevice3
-				|| aKeyEvent.iScanCode == EStdKeyEnter
-				|| aKeyEvent.iScanCode == EStdKeyNkpEnter ) )
-    	{
-    	HandleRockerPressL();
-    	resp = EKeyWasConsumed;
-    	iAllowLongPress = EFalse;
-    	}
+        ( aKeyEvent.iScanCode == EStdKeyDevice3
+        || aKeyEvent.iScanCode == EStdKeyEnter
+        || aKeyEvent.iScanCode == EStdKeyNkpEnter ) )
+        {
+        HandleRockerPressL();
+        resp = EKeyWasConsumed;
+        iAllowLongPress = EFalse;
+        }
 
     return resp;
     }
@@ -1183,11 +1236,11 @@
 //
 // -----------------------------------------------------------------------------
 //
-void CMmWidgetContainer::SetSuiteModelL(CHnSuiteModel* aModel)
+void CMmWidgetContainer::SetSuiteModelL( CHnSuiteModel* aModel )
     {
     CHnSuiteModel* prevModel = GetMmModel()->GetSuiteModel();
 
-    TInt numberOfItemsBefore (0);
+    TInt numberOfItemsBefore( 0 );
     numberOfItemsBefore = GetMmModel()->NumberOfItems();
 
     GetMmModel()->SetSuiteModelL( aModel );
@@ -1197,8 +1250,8 @@
     // This needs to be in place (disabling redraw)
     // to udpate widget internal state, however to wait for
     // drawing until all highlight set matters are solved.
-    iWidget->MakeVisible(EFalse);
-    if ( GetMmModel()->NumberOfItems() >= numberOfItemsBefore )
+    iWidget->MakeVisible( EFalse );
+    if( GetMmModel()->NumberOfItems() >= numberOfItemsBefore )
         {
         HandleItemAdditionL();
         }
@@ -1206,20 +1259,20 @@
         {
         HandleItemRemovalL();
         }
-    if ( prevModel && aModel )
+    if( prevModel && aModel )
         {
         SetupWidgetLayoutL();
         }
-    iWidget->MakeVisible(ETrue);
+    iWidget->MakeVisible( ETrue );
 
-    if ( highlightVisibleBefore )
+    if( highlightVisibleBefore )
         {
         SetHighlightVisibilityL( ETrue );
         }
 
     Widget()->View()->ItemDrawer()->ClearFlags(
-    		CListItemDrawer::EPressedDownState );
-	iPostProcessor->StartAt( iWidget->BottomItemIndex() + 1 );
+            CListItemDrawer::EPressedDownState );
+    iPostProcessor->StartAt( iWidget->BottomItemIndex() + 1 );
     }
 
 // ---------------------------------------------------------------------------
@@ -1227,19 +1280,18 @@
 // ---------------------------------------------------------------------------
 //
 void CMmWidgetContainer::SetupDrawer()
-	{
-	iDrawer = STATIC_CAST(CMmListBoxItemDrawer*, iWidget->View()->ItemDrawer());
-	}
-
+  {
+  iDrawer = STATIC_CAST(CMmListBoxItemDrawer*, iWidget->View()->ItemDrawer());
+  }
 
 // ---------------------------------------------------------------------------
 //
 // ---------------------------------------------------------------------------
 //
 EXPORT_C THnSuiteWidgetType CMmWidgetContainer::WidgetType()
-	{
-	return EUnspecified;
-	}
+    {
+    return EUnspecified;
+    }
 // ---------------------------------------------------------------------------
 //
 // ---------------------------------------------------------------------------
@@ -1263,11 +1315,11 @@
 
     // Fix for EMWK-7NYKRJ
     // Matrix Menu: Scrollbar highligted when App Key is pressed while it is held
-    if ( AknLayoutUtils::PenEnabled() )
+    if( AknLayoutUtils::PenEnabled() )
         {
         CEikScrollBar* scrollBar =
                 iWidget->ScrollBarFrame()->VerticalScrollBar();
-        if ( scrollBar && scrollBar->IsVisible() )
+        if( scrollBar && scrollBar->IsVisible() )
             {
             TPointerEvent fakeButton1UpEvent;
             fakeButton1UpEvent.iType = TPointerEvent::EButton1Up;
@@ -1292,21 +1344,21 @@
 // ---------------------------------------------------------------------------
 //
 TInt CMmWidgetContainer::DeltaSquare( const TPoint aTapPoint,
-		const TPoint aPos )
-	{
-	TInt delta( KErrNotFound );
-	TInt height = aTapPoint.iY - aPos.iY;
-	TInt width = aTapPoint.iX - aPos.iX;
+        const TPoint aPos )
+    {
+    TInt delta( KErrNotFound );
+    TInt height = aTapPoint.iY - aPos.iY;
+    TInt width = aTapPoint.iX - aPos.iX;
     if( WidgetType() == EListWidget )
-    	{
-    	delta = height * height + height * height;
-    	}
+        {
+        delta = height * height + height * height;
+        }
     else
-    	{
-    	delta = height * height + width * width;
-    	}
-	return delta;
-	}
+        {
+        delta = height * height + width * width;
+        }
+    return delta;
+    }
 
 // ---------------------------------------------------------------------------
 //
@@ -1328,120 +1380,118 @@
 // ---------------------------------------------------------------------------
 //
 EXPORT_C void CMmWidgetContainer::HandleItemAdditionL()
-	{
-	// only the the descended method should be invoked.
-	// this is needed to avoid codescanner warning
-	User::Leave( KErrNotSupported );
-	}
-
+    {
+    // only the the descended method should be invoked.
+    // this is needed to avoid codescanner warning
+    User::Leave( KErrNotSupported );
+    }
 
 // ---------------------------------------------------------------------------
 //
 // ---------------------------------------------------------------------------
 //
 EXPORT_C void CMmWidgetContainer::HandleItemRemovalL()
-	{
-	// only the the descended method should be invoked.
-	// this is needed to avoid codescanner warning
-	User::Leave( KErrNotSupported );
-	}
+    {
+    // only the the descended method should be invoked.
+    // this is needed to avoid codescanner warning
+    User::Leave( KErrNotSupported );
+    }
 
 // ---------------------------------------------------------------------------
 //
 // ---------------------------------------------------------------------------
 //
 EXPORT_C void CMmWidgetContainer::StopMovingL()
-	{
-	if ( !AknLayoutUtils::PenEnabled() && iDragAndDropObserver )
-		iDragAndDropObserver->HandleDragStopL( GetHighlight() );
-	}
-
+    {
+    if( !AknLayoutUtils::PenEnabled() && iDragAndDropObserver )
+        iDragAndDropObserver->HandleDragStopL( GetHighlight() );
+    }
 
 // ---------------------------------------------------------------------------
 //
 // ---------------------------------------------------------------------------
 //
 void CMmWidgetContainer::ScrollViewIfNeededL()
-	{
-	if ((iWidget->BottomItemIndex() / ColumnsInCurrentView()
-			-  iWidget->TopItemIndex() / ColumnsInCurrentView() ) <= 1 )
-		{
-		return;
-		}
+    {
+    if( ( iWidget->BottomItemIndex() / ColumnsInCurrentView()
+            - iWidget->TopItemIndex() / ColumnsInCurrentView() ) <= 1 )
+        {
+        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();
-		}
+    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();
+        }
 
-	if ( needToScrollUp )
-		{
+    if( needToScrollUp )
+        {
 #ifdef RD_UI_TRANSITION_EFFECTS_LIST
-			MAknListBoxTfxInternal *transApi = CAknListLoader::TfxApiInternal( iDrawer->Gc() );
-			if ( transApi )
-				{
-				transApi->SetMoveType( MAknListBoxTfxInternal::EListScrollUp );
-				}
+      MAknListBoxTfxInternal *transApi = CAknListLoader::TfxApiInternal( iDrawer->Gc() );
+        if( transApi )
+            {
+            transApi->SetMoveType( MAknListBoxTfxInternal::EListScrollUp );
+            }
 #endif
-		iDrawer->RemoveFloatingItems();
-		iWidget->View()->VScrollTo(
-				iWidget->TopItemIndex() - ColumnsInCurrentView() );
+        iDrawer->RemoveFloatingItems();
+    iWidget->View()->VScrollTo(
+        iWidget->TopItemIndex() - ColumnsInCurrentView() );
 #ifdef RD_UI_TRANSITION_EFFECTS_LIST
-			if ( transApi )
-				{
-				transApi->Draw( Rect() );
-				}
+        if( transApi )
+            {
+            transApi->Draw( Rect() );
+            }
 #endif
-		UpdateViewScrollBarThumbs();
-		}
-	else if ( needToScrollDown )
-		{
+        UpdateViewScrollBarThumbs();
+        }
+    else if( needToScrollDown )
+        {
 
 #ifdef RD_UI_TRANSITION_EFFECTS_LIST
-			MAknListBoxTfxInternal *transApi = CAknListLoader::TfxApiInternal( iDrawer->Gc() );
-			if ( transApi )
-				{
-				transApi->SetMoveType( MAknListBoxTfxInternal::EListScrollDown );
-				}
+      MAknListBoxTfxInternal *transApi = CAknListLoader::TfxApiInternal( iDrawer->Gc() );
+        if( transApi )
+            {
+            transApi->SetMoveType( MAknListBoxTfxInternal::EListScrollDown );
+            }
 #endif
-		iDrawer->RemoveFloatingItems();
-		iWidget->View()->VScrollTo(
-				iWidget->TopItemIndex() + ColumnsInCurrentView() );
+        iDrawer->RemoveFloatingItems();
+    iWidget->View()->VScrollTo(
+        iWidget->TopItemIndex() + ColumnsInCurrentView() );
 
 #ifdef RD_UI_TRANSITION_EFFECTS_LIST
-			if ( transApi )
-				{
-				transApi->Draw( Rect() );
-				}
+        if( transApi )
+            {
+            transApi->Draw( Rect() );
+            }
 #endif
 
-		UpdateViewScrollBarThumbs();
-		}
-	}
+        UpdateViewScrollBarThumbs();
+        }
+    }
 
 //----------------------------------------------------------------------------
 //
 // ---------------------------------------------------------------------------
 //
 void CMmWidgetContainer::UpdateViewScrollBarThumbs()
-	{
+    {
 
-	}
+    }
 
 //----------------------------------------------------------------------------
 //
@@ -1449,15 +1499,15 @@
 //
 void CMmWidgetContainer::StartOrStopMarquee()
     {
-    if ( iMarqueeAdapter )
+    if( iMarqueeAdapter )
         {
         TBool marqueeShouldBeEnabled = iHasFocus && iInForeground
                 && !iIsFaded && !IsEditMode();
 
-         // logical Ex-OR
+        // logical Ex-OR
         if ( !!marqueeShouldBeEnabled != !!iMarqueeAdapter->IsMarqueeEnabled() )
             {
-            if ( !marqueeShouldBeEnabled )
+            if( !marqueeShouldBeEnabled )
                 {
                 iMarqueeAdapter->StopMarqueeDrawing();
                 }
@@ -1472,89 +1522,89 @@
 // ---------------------------------------------------------------------------
 //
 void CMmWidgetContainer::SetHighlightAfterDrag()
-	{
-    if ( AknLayoutUtils::PenEnabled() &&
-    		iDraggedIndex != KErrNotFound &&
-			iDraggedIndex != Widget()->CurrentItemIndex()
-			&& iDraggedIndex < NumberOfItems() )
-    	{
-    	TBool isFolder(EFalse);
-    	CHnSuiteModel* model = GetMmModel()->GetSuiteModel();
-		CHnItemModel* onItemModel = model->GetItemModel(
-				model->IdByIndex( Widget()->CurrentItemIndex() ));
-	    if (onItemModel)
-	    	{
-	    	isFolder = onItemModel->GetItemType() == EItemTypeParentFolder ||
-				onItemModel->GetItemType() == EItemTypeFolder;
-	    	}
-	    if (!isFolder)
-	    	{
-	    	Widget()->View()->SetCurrentItemIndex( iDraggedIndex );
-	    	}
-    	}
-	}
+    {
+    if( AknLayoutUtils::PenEnabled()
+            && iDraggedIndex != KErrNotFound
+            && iDraggedIndex != Widget()->CurrentItemIndex()
+            && iDraggedIndex < NumberOfItems() )
+        {
+        TBool isFolder( EFalse );
+        CHnSuiteModel* model = GetMmModel()->GetSuiteModel();
+    CHnItemModel* onItemModel = model->GetItemModel(
+        model->IdByIndex( Widget()->CurrentItemIndex() ));
+        if( onItemModel )
+            {
+            isFolder = onItemModel->GetItemType() == EItemTypeParentFolder
+                    || onItemModel->GetItemType() == EItemTypeFolder;
+            }
+        if( !isFolder )
+            {
+            Widget()->View()->SetCurrentItemIndex( iDraggedIndex );
+            }
+        }
+    }
 
 // ---------------------------------------------------------------------------
 //
 // ---------------------------------------------------------------------------
 //
 void CMmWidgetContainer::ValidateWidgetCurrentItemIndex()
-	{
-	if (Widget()->CurrentItemIndex() >= GetMmModel()->NumberOfItems()
-			|| Widget()->CurrentItemIndex() == KErrNotFound )
-		{
-		iCurrentHighlight = GetMmModel()->NumberOfItems();
-		if( iCurrentHighlight > 0 )
-			{
-			Widget()->View()->SetCurrentItemIndex( --iCurrentHighlight );
-			}
-		else
-			{
-			iCurrentHighlight = KErrNotFound ;
-			}
-		}
-	}
+    {
+    if( Widget()->CurrentItemIndex() >= GetMmModel()->NumberOfItems()
+            || Widget()->CurrentItemIndex() == KErrNotFound )
+        {
+        iCurrentHighlight = GetMmModel()->NumberOfItems();
+        if( iCurrentHighlight > 0 )
+            {
+            Widget()->View()->SetCurrentItemIndex( --iCurrentHighlight );
+            }
+        else
+            {
+            iCurrentHighlight = KErrNotFound;
+            }
+        }
+    }
 
 // ---------------------------------------------------------------------------
 //
 // ---------------------------------------------------------------------------
 //
 EXPORT_C void CMmWidgetContainer::CacheWidgetPosition()
-	{
-	iWidgetPositionCache.iVerticalItemOffset = VerticalItemOffset();
-	iWidgetPositionCache.iTopItemIndex = Widget()->TopItemIndex();
-	iWidgetPositionCache.iLandscape
-			= Layout_Meta_Data::IsLandscapeOrientation();
-	iWidgetPositionCache.iHighlightedItemId = KErrNotFound;
+    {
+    iWidgetPositionCache.iVerticalItemOffset = VerticalItemOffset();
+    iWidgetPositionCache.iTopItemIndex = Widget()->TopItemIndex();
+    iWidgetPositionCache.iLandscape
+            = Layout_Meta_Data::IsLandscapeOrientation();
+    iWidgetPositionCache.iHighlightedItemId = KErrNotFound;
 
-	TInt highlightedItemIndex = Widget()->CurrentItemIndex();
-	CHnSuiteModel* suiteModel = GetMmModel()->GetSuiteModel();
-	if ( suiteModel && highlightedItemIndex != KErrNotFound
-	        && suiteModel->GetSuiteHighlight() == highlightedItemIndex
-	        && ItemIsVisible( highlightedItemIndex ) )
-	    {
-	    iWidgetPositionCache.iHighlightedItemId =
+    TInt highlightedItemIndex = Widget()->CurrentItemIndex();
+    CHnSuiteModel* suiteModel = GetMmModel()->GetSuiteModel();
+    if( suiteModel && highlightedItemIndex != KErrNotFound
+            && suiteModel->GetSuiteHighlight() == highlightedItemIndex
+            && ItemIsVisible( highlightedItemIndex ) )
+        {
+      iWidgetPositionCache.iHighlightedItemId =
             suiteModel->IdByIndex( highlightedItemIndex );
-	    }
+        }
 
-	iWidgetPositionCache.iValid = ETrue;
-	}
+    iWidgetPositionCache.iValid = ETrue;
+    }
 
 // ---------------------------------------------------------------------------
 //
 // ---------------------------------------------------------------------------
 //
 EXPORT_C void CMmWidgetContainer::RestoreWidgetPosition()
-	{
-	if (iWidgetPositionCache.iValid)
-		{
-	   if ( iWidgetPositionCache.iLandscape
-				== Layout_Meta_Data::IsLandscapeOrientation() )
-			{
+    {
+    if( iWidgetPositionCache.iValid )
+        {
+        if( iWidgetPositionCache.iLandscape
+                == Layout_Meta_Data::IsLandscapeOrientation() )
+            {
             // If view position was cached during boundary effect, correct the
             // cached position.
-            if ( iWidgetPositionCache.iTopItemIndex == 0 &&
-                    iWidgetPositionCache.iVerticalItemOffset > 0 )
+            if( iWidgetPositionCache.iTopItemIndex == 0
+                    && iWidgetPositionCache.iVerticalItemOffset > 0 )
                 {
                 iWidgetPositionCache.iVerticalItemOffset = 0;
                 // This corrects the position cached during the upper boundary
@@ -1562,139 +1612,139 @@
                 // effect.
                 }
 
-			Widget()->View()->SetTopItemIndex(iWidgetPositionCache.iTopItemIndex);
-			SetVerticalItemOffset(iWidgetPositionCache.iVerticalItemOffset);
-			TRAP_IGNORE( AlignBottomOfViewL() );
+      Widget()->View()->SetTopItemIndex(iWidgetPositionCache.iTopItemIndex);
+            SetVerticalItemOffset( iWidgetPositionCache.iVerticalItemOffset );
+            TRAP_IGNORE( AlignBottomOfViewL() );
 
-			// Important: If an item that was previously highlighted and visible is
-			// still highlighted and yet somehow is not visible after the position
-			// has been restored, fix the problem by scrolling the view until that
-			// item is visible again:
-			CHnSuiteModel* suiteModel = GetMmModel()->GetSuiteModel();
-			if ( suiteModel && IsHighlightVisible() )
-			    {
-			    TInt highlightedItemIndex = suiteModel->GetSuiteHighlight();
-			    TInt highlightedItemId = highlightedItemIndex != KErrNotFound ?
-			        suiteModel->IdByIndex( highlightedItemIndex ) : KErrNotFound;
-			    if ( highlightedItemId != KErrNotFound
-			            && highlightedItemId == iWidgetPositionCache.iHighlightedItemId
-			            && !ItemIsVisible( highlightedItemIndex ) )
-			        {
-			        TRAP_IGNORE( ScrollToItemL( highlightedItemIndex ) );
-			        }
-			    }
-			}
-		else
-			{
-			TRAP_IGNORE( ScrollToItemL(Widget()->CurrentItemIndex()) );
-			}
+            // Important: If an item that was previously highlighted and visible is
+            // still highlighted and yet somehow is not visible after the position
+            // has been restored, fix the problem by scrolling the view until that
+            // item is visible again:
+            CHnSuiteModel* suiteModel = GetMmModel()->GetSuiteModel();
+            if( suiteModel && IsHighlightVisible() )
+                {
+                TInt highlightedItemIndex = suiteModel->GetSuiteHighlight();
+          TInt highlightedItemId = highlightedItemIndex != KErrNotFound ?
+              suiteModel->IdByIndex( highlightedItemIndex ) : KErrNotFound;
+          if ( highlightedItemId != KErrNotFound
+                  && highlightedItemId == iWidgetPositionCache.iHighlightedItemId
+                  && !ItemIsVisible( highlightedItemIndex ) )
+                    {
+                    TRAP_IGNORE( ScrollToItemL( highlightedItemIndex ) );
+                    }
+                }
+            }
+        else
+            {
+            TRAP_IGNORE( ScrollToItemL(Widget()->CurrentItemIndex()) );
+            }
 
-		iWidgetPositionCache.iValid = EFalse;
-		}
-	}
+        iWidgetPositionCache.iValid = EFalse;
+        }
+    }
 
 // ---------------------------------------------------------------------------
 //
 // ---------------------------------------------------------------------------
 //
-void CMmWidgetContainer::MakeVisible(TBool aVisible)
-	{
-	if ( !aVisible )
-		{
-		RestoreWidgetPosition();
-		CacheWidgetPosition();
-		iDrawer->RemoveFloatingItems();
-		}
-	else if ( aVisible )
-		{
-		RestoreWidgetPosition();
-		}
-	CCoeControl::MakeVisible(aVisible);
-	iWidget->MakeVisible(aVisible);
-	if ( !aVisible )
+void CMmWidgetContainer::MakeVisible( TBool aVisible )
+    {
+    if( !aVisible )
+        {
+        RestoreWidgetPosition();
+        CacheWidgetPosition();
+        iDrawer->RemoveFloatingItems();
+        }
+    else if( aVisible )
         {
-		TRAP_IGNORE( SetHighlightVisibilityL( EFalse ) );
+        RestoreWidgetPosition();
         }
-	}
+    CCoeControl::MakeVisible( aVisible );
+    iWidget->MakeVisible( aVisible );
+    if( !aVisible )
+        {
+        TRAP_IGNORE( SetHighlightVisibilityL( EFalse ) );
+        }
+    }
 
 // ---------------------------------------------------------------------------
 //
 // ---------------------------------------------------------------------------
 //
 EXPORT_C void CMmWidgetContainer::ResetWidgetPosition()
-	{
-	iWidgetPositionCache.iVerticalItemOffset = 0;
-	iWidgetPositionCache.iTopItemIndex = 0;
-	iWidgetPositionCache.iValid = EFalse;
-	iWidgetPositionCache.iHighlightedItemId = KErrNotFound;
-	Widget()->SetTopItemIndex(0);
-	SetVerticalItemOffset(0);
-	}
+    {
+    iWidgetPositionCache.iVerticalItemOffset = 0;
+    iWidgetPositionCache.iTopItemIndex = 0;
+    iWidgetPositionCache.iValid = EFalse;
+    iWidgetPositionCache.iHighlightedItemId = KErrNotFound;
+    Widget()->SetTopItemIndex( 0 );
+    SetVerticalItemOffset( 0 );
+    }
 
 // ---------------------------------------------------------------------------
 //
 // ---------------------------------------------------------------------------
 //
 EXPORT_C void CMmWidgetContainer::NumberOfItemsChangedL( TItemsChangeType aChange )
-	{
-	if ( AknLayoutUtils::PenEnabled() )
-		{
-		CacheWidgetPosition();
-		Widget()->View()->SetDisableRedraw( ETrue );
+    {
+    if( AknLayoutUtils::PenEnabled() )
+        {
+        CacheWidgetPosition();
+        Widget()->View()->SetDisableRedraw( ETrue );
 
-		HandleNumberOfItemsChangedL( aChange );
+        HandleNumberOfItemsChangedL( aChange );
 
-		Widget()->View()->SetDisableRedraw( EFalse );
-		RestoreWidgetPosition();
-		}
-	else
-		{
-		// there is no need to cache and restore widget position in non-touch;
-		// moreover, it can cause some problems with scrolling when adding
-		// new folder
-		HandleNumberOfItemsChangedL( aChange );
-		}
-	}
+        Widget()->View()->SetDisableRedraw( EFalse );
+        RestoreWidgetPosition();
+        }
+    else
+        {
+        // there is no need to cache and restore widget position in non-touch;
+        // moreover, it can cause some problems with scrolling when adding
+        // new folder
+        HandleNumberOfItemsChangedL( aChange );
+        }
+    }
 
 // ---------------------------------------------------------------------------
 //
 // ---------------------------------------------------------------------------
 //
 void CMmWidgetContainer::HandleNumberOfItemsChangedL( TItemsChangeType aChange )
-	{
-	SetHighlightVisibilityL( EFalse );
-	if ( aChange == EItemsAdded )
-		{
-		HandleItemAdditionL();
-		}
-	else if ( aChange == EItemsRemoved )
-		{
-		HandleItemRemovalL();
-		}
-	}
+    {
+    SetHighlightVisibilityL( EFalse );
+    if( aChange == EItemsAdded )
+        {
+        HandleItemAdditionL();
+        }
+    else if( aChange == EItemsRemoved )
+        {
+        HandleItemRemovalL();
+        }
+    }
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
 TBool CMmWidgetContainer::AlignBottomOfViewL()
-	{
-	TInt scrollConsumed( EFalse );
-	TInt pixelsToScroll( 0 );
+    {
+    TInt scrollConsumed( EFalse );
+    TInt pixelsToScroll( 0 );
 
-	if ( NumberOfItems() > 0 )
-		{
-		pixelsToScroll = CalcBottomPixelsToScroll();
-		}
+    if( NumberOfItems() > 0 )
+        {
+        pixelsToScroll = CalcBottomPixelsToScroll();
+        }
 
-	if ( pixelsToScroll != 0 )
-		{
-		ScrollInPixelsL( pixelsToScroll );
-		scrollConsumed = ETrue;
-		}
+    if( pixelsToScroll != 0 )
+        {
+        ScrollInPixelsL( pixelsToScroll );
+        scrollConsumed = ETrue;
+        }
 
-	return scrollConsumed;
-	}
+    return scrollConsumed;
+    }
 
 // -----------------------------------------------------------------------------
 //
@@ -1705,11 +1755,11 @@
     const TInt firstItemIndex( 0 );
     TInt lastItemIndex = NumberOfItems() - 1;
     TInt viewHeight = Widget()->View()->ViewRect().Height();
-    TInt lastItemBottomY = Widget()->View()->ItemPos(lastItemIndex).iY
-                + Widget()->ItemHeight();
+    TInt lastItemBottomY = Widget()->View()->ItemPos( lastItemIndex ).iY
+            + Widget()->ItemHeight();
     TInt pixelsToScroll( 0 );
 
-    if ( Widget()->ScrollBarFrame()->VerticalScrollBar()->IsVisible() )
+    if( Widget()->ScrollBarFrame()->VerticalScrollBar()->IsVisible() )
         {
         pixelsToScroll = Min( 0, lastItemBottomY - viewHeight );
         }
@@ -1721,7 +1771,6 @@
     return pixelsToScroll;
     }
 
-
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
@@ -1735,155 +1784,156 @@
 //
 // -----------------------------------------------------------------------------
 //
-EXPORT_C TBool CMmWidgetContainer::ItemIsFullyVisible(TInt aIndex)
-	{
-	return ItemIsVisible( aIndex )
-			&& !Widget()->View()->ItemIsPartiallyVisible(aIndex);
-	}
+EXPORT_C TBool CMmWidgetContainer::ItemIsFullyVisible( TInt aIndex )
+    {
+    return ItemIsVisible( aIndex )
+            && !Widget()->View()->ItemIsPartiallyVisible( aIndex );
+    }
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
-void CMmWidgetContainer::ScrollInPixelsL(TInt aPixels)
-	{
-	SetupScrollingEffectsL( aPixels > 0 );
+void CMmWidgetContainer::ScrollInPixelsL( TInt aPixels )
+    {
+    SetupScrollingEffectsL( aPixels > 0 );
 
-	if ( AknLayoutUtils::PenEnabled() )
-		{
-		Widget()->HandlePhysicsScrollEventL(aPixels);
-		}
-	else
-		{
-		// non-touch avkon doesn't seem to support scrolling by given
-		// amount of pixels
-		TInt delta = aPixels / Widget()->View()->ItemHeight();
+    if( AknLayoutUtils::PenEnabled() )
+        {
+        Widget()->HandlePhysicsScrollEventL( aPixels );
+        }
+    else
+        {
+        // non-touch avkon doesn't seem to support scrolling by given
+        // amount of pixels
+        TInt delta = aPixels / Widget()->View()->ItemHeight();
 
-		Widget()->View()->VScrollTo( Widget()->TopItemIndex() +
-				delta * ColumnsInCurrentView() );
-		}
-	}
+        Widget()->View()->VScrollTo( Widget()->TopItemIndex()
+                + delta * ColumnsInCurrentView() );
+        }
+    }
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
-EXPORT_C TBool CMmWidgetContainer::ScrollToItemL(TInt aIndex)
-	{
-	TInt scrollConsumed(EFalse);
-	if (aIndex >= 0 && aIndex <= NumberOfItems())
-		{
-		scrollConsumed = AlignBottomOfViewL();
-		if ( !scrollConsumed && Widget()->View()->ItemIsPartiallyVisible(aIndex))
-			{
-//			the case when the item is partially visible at top or
-//			bottom of screen. Th e view is scrolled the offset to
-//			make the item entirely visible.
-			TInt offsetBottom = Widget()->View()->ItemPos(aIndex).iY
-					+ Widget()->ItemHeight()
-					- Widget()->View()->ViewRect().Height();
-			TInt offsetTop = Widget()->View()->ItemPos(aIndex).iY;
-			TBool takeTop = Abs(offsetTop) < Abs(offsetBottom);
-			TInt offset = (takeTop) ? offsetTop : offsetBottom;
-			if (offset != 0)
-				{
-				ScrollInPixelsL( offset );
-				scrollConsumed = ETrue;
-				}
+EXPORT_C TBool CMmWidgetContainer::ScrollToItemL( TInt aIndex )
+    {
+    TInt scrollConsumed( EFalse );
+    if( aIndex >= 0 && aIndex <= NumberOfItems() )
+        {
+        scrollConsumed = AlignBottomOfViewL();
+    if ( !scrollConsumed && Widget()->View()->ItemIsPartiallyVisible(aIndex))
+            {
+            //			the case when the item is partially visible at top or
+            //			bottom of screen. Th e view is scrolled the offset to
+            //			make the item entirely visible.
+            TInt offsetBottom = Widget()->View()->ItemPos( aIndex ).iY
+                    + Widget()->ItemHeight()
+                    - Widget()->View()->ViewRect().Height();
+            TInt offsetTop = Widget()->View()->ItemPos( aIndex ).iY;
+            TBool takeTop = Abs( offsetTop ) < Abs( offsetBottom );
+            TInt offset = ( takeTop ) ? offsetTop : offsetBottom;
+            if( offset != 0 )
+                {
+                ScrollInPixelsL( offset );
+                scrollConsumed = ETrue;
+                }
 
-			}
-		else if (!Widget()->View()->ItemIsVisible(aIndex))
-			{
-//			the case when the item is not visible on screen
-			SetupScrollingEffectsL( aIndex > Widget()->BottomItemIndex() );
-			Widget()->ScrollToMakeItemVisible(aIndex);
-			AlignBottomOfViewL();
-			scrollConsumed = ETrue;
-			}
-		}
-	return scrollConsumed;
-	}
+            }
+        else if( !Widget()->View()->ItemIsVisible( aIndex ) )
+            {
+            //			the case when the item is not visible on screen
+            SetupScrollingEffectsL( aIndex > Widget()->BottomItemIndex() );
+            Widget()->ScrollToMakeItemVisible( aIndex );
+            AlignBottomOfViewL();
+            scrollConsumed = ETrue;
+            }
+        }
+    return scrollConsumed;
+    }
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
-void CMmWidgetContainer::SetupScrollingEffectsL(TBool aDown)
-	{
+void CMmWidgetContainer::SetupScrollingEffectsL( TBool aDown )
+    {
 #ifdef RD_UI_TRANSITION_EFFECTS_LIST
-	MAknListBoxTfxInternal *transApi = CAknListLoader::TfxApiInternal(
-			iDrawer->Gc());
-	if (transApi)
-		{
-		MAknListBoxTfxInternal::TMovementType movementType;
-		movementType = (aDown == (TInt)ETrue ) ? MAknListBoxTfxInternal::EListScrollDown
-				: MAknListBoxTfxInternal::EListScrollUp;
-		transApi->SetMoveType(movementType);
-		}
+    MAknListBoxTfxInternal *transApi = CAknListLoader::TfxApiInternal(
+            iDrawer->Gc() );
+    if( transApi )
+        {
+        MAknListBoxTfxInternal::TMovementType movementType;
+        movementType = ( aDown == (TInt ) ETrue )
+                ? MAknListBoxTfxInternal::EListScrollDown
+                : MAknListBoxTfxInternal::EListScrollUp;
+        transApi->SetMoveType( movementType );
+        }
 #endif
-	}
+    }
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
 EXPORT_C void CMmWidgetContainer::PrepareForGarbage()
-	{
-//	This is called when the suite model is destoyed and the container is set to be destroyed
-//	by the garbage collector. There should be no redraws done to the widget in this period
-//	because this will cause the screen to be redrawn only containing the balnk background.
-//	Before garbage cleanup an asynchronous redraw event may intend to redraw the widget.
-//	SetDisableRedraw() prevents redrawing. Animator is also prepared for garbage so there is
-//	no instance which can enable redraw of the widget.
-	Widget()->View()->SetDisableRedraw( ETrue );
-	iDrawer->RemoveFloatingItems();
-//	Prapares the animator for garbage, which means it blocks any animator drawing.
-	iDrawer->GetAnimator()->PrepareForGarbage();
-	}
+    {
+    //	This is called when the suite model is destoyed and the container is set to be destroyed
+    //	by the garbage collector. There should be no redraws done to the widget in this period
+    //	because this will cause the screen to be redrawn only containing the balnk background.
+    //	Before garbage cleanup an asynchronous redraw event may intend to redraw the widget.
+    //	SetDisableRedraw() prevents redrawing. Animator is also prepared for garbage so there is
+    //	no instance which can enable redraw of the widget.
+    Widget()->View()->SetDisableRedraw( ETrue );
+    iDrawer->RemoveFloatingItems();
+    //	Prapares the animator for garbage, which means it blocks any animator drawing.
+    iDrawer->GetAnimator()->PrepareForGarbage();
+    }
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
 void CMmWidgetContainer::HandleLongTapEventL( const TPoint& aPenEventLocation,
-                                      const TPoint& aPenEventScreenLocation )
-	{
-	TInt index( KErrNotFound );
-	if ( iWidget->View()->XYPosToItemIndex( aPenEventLocation, index ) )
-		{
-		SetHighlightVisibilityL( ETrue );
-	    iLongTapInProgress = ETrue;
-		if ( iLongTapObserver )
-			{
-			iLongTapObserver->HandleLongTapEventL( aPenEventScreenLocation );
-			}
-		}
-	}
+        const TPoint& aPenEventScreenLocation )
+    {
+    TInt index( KErrNotFound );
+    if( iWidget->View()->XYPosToItemIndex( aPenEventLocation, index ) )
+        {
+        SetHighlightVisibilityL( ETrue );
+        iLongTapInProgress = ETrue;
+        if( iLongTapObserver )
+            {
+            iLongTapObserver->HandleLongTapEventL( aPenEventScreenLocation );
+            }
+        }
+    }
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
 EXPORT_C void CMmWidgetContainer::SetLongTapObserver( MMmLongTapObserver* aObserver )
-	{
-	iLongTapObserver = aObserver;
-	}
+    {
+    iLongTapObserver = aObserver;
+    }
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
 EXPORT_C void CMmWidgetContainer::EndLongTapL( TBool aStopTimer )
-	{
-	if ( iLongTapInProgress )
-		{
-		iLongTapInProgress = EFalse;
-		if( aStopTimer )
-			{
-			SetHighlightVisibilityL( EFalse );
-			}
-		}
-	}
+    {
+    if( iLongTapInProgress )
+        {
+        iLongTapInProgress = EFalse;
+        if( aStopTimer )
+            {
+            SetHighlightVisibilityL( EFalse );
+            }
+        }
+    }
 
 // ---------------------------------------------------------------------------
 //
@@ -1892,65 +1942,65 @@
 void CMmWidgetContainer::HandleListBoxEventL( CEikListBox* aListBox,
         TListBoxEvent aEventType )
     {
-//    handle same behaviour in edit mode and normal mode
-    switch ( aEventType )
-		{
-		case MEikListBoxObserver::EEventPenDownOnItem:
-		case MEikListBoxObserver::EEventItemSingleClicked:
-			{
-			iDragOccured = EFalse;
-			break;
-			}
-		case MEikListBoxObserver::EEventItemDraggingActioned:
-			{
-			iDragOccured = ETrue;
-			break;
-			}
-		}
+    //    handle same behaviour in edit mode and normal mode
+    switch( aEventType )
+        {
+        case MEikListBoxObserver::EEventPenDownOnItem:
+        case MEikListBoxObserver::EEventItemSingleClicked:
+            {
+            iDragOccured = EFalse;
+            break;
+            }
+        case MEikListBoxObserver::EEventItemDraggingActioned:
+            {
+            iDragOccured = ETrue;
+            break;
+            }
+        }
 
-//    handle different behaviour in edit mode and normal mode
-	if ( !IsEditMode() )
-		{
-		switch ( aEventType )
-			{
-			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;
-				}
-			}
-		}
-	else
-		{
-		switch ( aEventType )
-			{
-			case MEikListBoxObserver::EEventFlickStopped:
-				{
-				// this fixes some problems with messed edit mode
-				// caused by kinetic scrolling
-				iDrawer->GetAnimator()->SetNextRedrawToWholeScreen();
-				break;
-				}
-			}
-		}
+    //    handle different behaviour in edit mode and normal mode
+    if( !IsEditMode() )
+        {
+        switch( aEventType )
+            {
+            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;
+                }
+            }
+        }
+    else
+        {
+        switch( aEventType )
+            {
+            case MEikListBoxObserver::EEventFlickStopped:
+                {
+                // this fixes some problems with messed edit mode
+                // caused by kinetic scrolling
+                iDrawer->GetAnimator()->SetNextRedrawToWholeScreen();
+                break;
+                }
+            }
+        }
 
     if ( aEventType == MEikListBoxObserver::EEventItemSingleClicked &&
         iListBoxObserver && !iLongTapInProgress && !iDrawer->IsDraggable() )
--- a/menufw/menusuites/foldersuite/bwins/dummyCu.def	Wed Apr 14 15:47:59 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-EXPORTS
-	?E32Main@@YAHXZ @ 1 NONAME ; int E32Main(void)
-
--- a/menufw/menusuites/foldersuite/data/matrixmenudata.xml	Wed Apr 14 15:47:59 2010 +0300
+++ b/menufw/menusuites/foldersuite/data/matrixmenudata.xml	Tue Apr 27 16:26:12 2010 +0300
@@ -105,6 +105,9 @@
                             
           <menu:application uid="0x100058EC"
                             view="0x10283321"
+                            icon_file="aimcsplugin.mif"
+                            icon_id="16392"
+                            mask_id="16393" 
                             long_name="&qtn_apps_installations_list;"/>
 
           <menu:shortcut    uid="0x99999999"
--- a/menufw/menusuites/foldersuite/eabi/dummyCu.def	Wed Apr 14 15:47:59 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-EXPORTS
-	_Z7E32Mainv @ 1 NONAME
-
--- a/menufw/menusuites/foldersuite/group/foldersuite.mmp	Wed Apr 14 15:47:59 2010 +0300
+++ b/menufw/menusuites/foldersuite/group/foldersuite.mmp	Tue Apr 27 16:26:12 2010 +0300
@@ -19,21 +19,13 @@
 #include <platform_paths.hrh>
 #include <data_caging_paths.hrh>
 
-TARGET          dummyC.dll
-TARGETTYPE      dll
-
-UID             0x0 0x02349823
-CAPABILITY      CAP_GENERAL_DLL
+TARGET          foldersuite
+TARGETTYPE      NONE
 
 APP_LAYER_SYSTEMINCLUDE
 
-SOURCEPATH      ../src
-SOURCE          dummyC.cpp
-
-SOURCEPATH      .
 USERINCLUDE     ../../../menufwui/matrixmenu/loc
 
-
 START RESOURCE  ../data/foldersuite.rss
 HEADER
 TARGETPATH      APP_RESOURCE_DIR
Binary file menufw/menusuites/foldersuite/loc/matrixmenudata.loc has changed
--- a/menufw/menusuites/foldersuite/src/dummyC.cpp	Wed Apr 14 15:47:59 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-#include <e32def.h>
-
-EXPORT_C int E32Main()
-{
-	return 0;
-}
--- a/taskswitcher/contextengine/tsfswpreviewprovider/wsplugin/inc/previewprovidercrp.h	Wed Apr 14 15:47:59 2010 +0300
+++ b/taskswitcher/contextengine/tsfswpreviewprovider/wsplugin/inc/previewprovidercrp.h	Tue Apr 27 16:26:12 2010 +0300
@@ -178,6 +178,7 @@
     RArray<TInt> iWgIds;
     TTime iScreenChangedTime; // fix for orientation changed/wg group changed problem
     TBool iClockwiseRot; // for marking rotation direction
+    TBool iLastWgIdRedraw;
     };
 
 #endif // PREVIEWPROVIDERCRP_H
--- a/taskswitcher/contextengine/tsfswpreviewprovider/wsplugin/src/previewprovidercrp.cpp	Wed Apr 14 15:47:59 2010 +0300
+++ b/taskswitcher/contextengine/tsfswpreviewprovider/wsplugin/src/previewprovidercrp.cpp	Tue Apr 27 16:26:12 2010 +0300
@@ -53,7 +53,8 @@
 // --------------------------------------------------------------------------
 //    
 void CPreviewProviderCRP::ConstructL()
-    { 
+    {
+    iLastWgIdRedraw = ETrue;
     }
 
 // --------------------------------------------------------------------------
@@ -147,7 +148,8 @@
     
     BaseConstructL( aEnv, aId, aOwner );
     aEnv.RegisterEventHandler( this, this, TWservCrEvent::EWindowGroupChanged |
-                                           TWservCrEvent::EDeviceOrientationChanged );
+                                           TWservCrEvent::EDeviceOrientationChanged |
+                                           TWservCrEvent::EScreenDrawing );
     iScreenChangedTime = 0;
     
     TSLOG_OUT();
@@ -174,7 +176,10 @@
             TInt err = currTime.SecondsFrom( iScreenChangedTime, secondsFrom );
             if ( err != KErrNone || secondsFrom.Int() > KMinTimeForOrientationSwitch )
                 {
-                TRAP_IGNORE( ScreenshotL() );
+                if ( iLastWgIdRedraw )
+                    {
+                    TRAP_IGNORE( ScreenshotL() );
+                    }
                 }
             else
                 {
@@ -186,11 +191,19 @@
             iPrevReg = 0;
             }
         iPrevId = wgId;
+        iLastWgIdRedraw = EFalse;
         }
     else if ( aEvent.Type() == TWservCrEvent::EDeviceOrientationChanged )
         {
         iScreenChangedTime.HomeTime();
-        TRAP_IGNORE( ScreenshotL() );
+        if ( iLastWgIdRedraw )
+            {
+            TRAP_IGNORE( ScreenshotL() );
+            }
+        }
+    else if ( aEvent.Type() == TWservCrEvent::EScreenDrawing )
+        {
+        iLastWgIdRedraw = ETrue;
         }
     
     TSLOG_OUT();
--- a/taskswitcher/contextengine/tsfswserver/engine/inc/tsfswdatalist.h	Wed Apr 14 15:47:59 2010 +0300
+++ b/taskswitcher/contextengine/tsfswserver/engine/inc/tsfswdatalist.h	Tue Apr 27 16:26:12 2010 +0300
@@ -123,6 +123,29 @@
      * the first position on conten data list
      */
     void MoveEntryAtStart( TInt aAppId, TBool aWidget );
+    
+    /**
+     * If application uid exists in the contained CTsFsAlwaysShownAppList 
+     * @return   ETrue  application uid exists in the list
+     *           EFalse application uid doesn't exist in the list
+     * @param    TInt aWgId the window group application
+     */
+    TBool IsAlwaysShownAppL( TInt aWgId );
+    
+    /**
+     * Finds out the app uid for the given window group id.
+     * @param   aWgId   a valid window group id
+     * @param   aUid   	requested uid
+     * @return  error code
+     */
+    TInt AppUidForWgId( TInt aWgId, TUid& aUid );
+    
+    /**
+     * Finds out the app uid for the given window group id.
+     * @param   aWgId   a valid window group id
+     * @return  application uid
+     */
+    TUid AppUidForWgIdL( TInt aWgId );
 
 private:
     /**
--- a/taskswitcher/contextengine/tsfswserver/engine/inc/tsfswengine.h	Wed Apr 14 15:47:59 2010 +0300
+++ b/taskswitcher/contextengine/tsfswserver/engine/inc/tsfswengine.h	Tue Apr 27 16:26:12 2010 +0300
@@ -161,12 +161,6 @@
      */
     TBool CollectTasksL();
 
-    /**
-     * Finds out the app uid for the given window group id.
-     * @param   aWgId   a valid window group id
-     * @return  application uid
-     */
-    TUid AppUidForWgIdL( TInt aWgId );
 
     /**
      * Makes a copy of the bitmap with the given handle.
--- a/taskswitcher/contextengine/tsfswserver/engine/src/tsfswdatalist.cpp	Wed Apr 14 15:47:59 2010 +0300
+++ b/taskswitcher/contextengine/tsfswserver/engine/src/tsfswdatalist.cpp	Tue Apr 27 16:26:12 2010 +0300
@@ -153,8 +153,8 @@
 TBool CTsFswDataList::CollectTasksL()
     {
     // clear dirty flag
+    TBool changed = iTaskListDirty;
     iTaskListDirty = EFalse;
-    TBool changed = EFalse;
     
     RTsFswArray newAppsList;
     RTsFswArray newWidgetsList;
@@ -280,9 +280,29 @@
     {
     TSLOG_CONTEXT( MoveEntryAtStart, TSLOG_LOCAL );
     
+    TInt appId(0);
+    //check embeded case
+    if( !aWidget )
+    	{
+		TInt wgId(0);
+		CApaWindowGroupName::FindByAppUid(TUid::Uid(aAppId), iWsSession, wgId);
+		TInt parentWgId = FindMostTopParentWgId( wgId );
+		if( parentWgId != KErrNotFound )
+			{
+			TUid appUid = TUid::Uid(0);
+			AppUidForWgId(parentWgId, appUid); 
+			appId = appUid.iUid;
+			}
+    	}
+    
+    if( !appId )
+    	{
+		appId = aAppId;
+    	}
+ 
     for ( TInt i = 0; i < iData.Count(); ++i )
         {
-        if( iData[i]->AppUid().iUid == aAppId && iData[i]->Widget() == aWidget)
+        if( iData[i]->AppUid().iUid == appId && iData[i]->Widget() == aWidget)
             {
             CTsFswEntry* entry = iData[i];
             iData.Remove(i);
@@ -301,8 +321,6 @@
     {
     TSLOG_CONTEXT( CollectTasksL, TSLOG_LOCAL );
     TSLOG_IN();
-    // clear dirty flag
-    iTaskListDirty = EFalse;
     
     // update app data if needed
     // (usually on startup and when new apps might have been installed)
@@ -750,4 +768,36 @@
     return exists;
     }
 
+// --------------------------------------------------------------------------
+// CTsFswDataList::AppUidForWgIdL
+// --------------------------------------------------------------------------
+//
+TBool CTsFswDataList::IsAlwaysShownAppL( TInt aWgId )
+	{
+	return iAlwaysShownAppList->IsAlwaysShownApp( AppUidForWgIdL(aWgId) );
+	}
+
+// --------------------------------------------------------------------------
+// CTsFswDataList::AppUidForWgId
+// --------------------------------------------------------------------------
+//
+TInt CTsFswDataList::AppUidForWgId( TInt aWgId, TUid& aUid )
+    {
+	TRAPD(err, aUid = AppUidForWgIdL( aWgId ) );
+	return err;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFswDataList::AppUidForWgIdL
+// --------------------------------------------------------------------------
+//
+TUid CTsFswDataList::AppUidForWgIdL( TInt aWgId )
+    {
+    CApaWindowGroupName* windowName =
+        CApaWindowGroupName::NewLC( iWsSession, aWgId );
+    TUid appUid = windowName->AppUid();
+    CleanupStack::PopAndDestroy( windowName );
+    return appUid;
+    }
+
 // end of file
--- a/taskswitcher/contextengine/tsfswserver/engine/src/tsfswengine.cpp	Wed Apr 14 15:47:59 2010 +0300
+++ b/taskswitcher/contextengine/tsfswserver/engine/src/tsfswengine.cpp	Tue Apr 27 16:26:12 2010 +0300
@@ -172,7 +172,7 @@
         // convert aWgId to an index in the list of running widgets and close widget
         CloseWidgetL( -aWgId -1 );
         }
-    else if( !iDataList->AlwaysShownApps()->IsAlwaysShownApp( AppUidForWgIdL( aWgId ) ) )
+    else if( !iDataList->IsAlwaysShownAppL( aWgId ) )
         {
         // send window group event to kill the app
         TWsEvent event;
@@ -243,12 +243,12 @@
 
     // There can be many calls in a row, use a timer to prevent degrading
     // device performance.
+    iDataList->SetDirty();
     if ( !iUpdateStarter->IsActive() )
         {
         iUpdateStarter->Start( KContentRefreshDelay, 0,
                 TCallBack( UpdateStarterCallback, this ) );
         }
-    iDataList->SetDirty();
 
     // screenshot taking support - call Register and Unregister when needed
     UpdatePreviewContent();
@@ -366,20 +366,6 @@
     }
 
 // --------------------------------------------------------------------------
-// CTsFswEngine::AppUidForWgIdL
-// --------------------------------------------------------------------------
-//
-TUid CTsFswEngine::AppUidForWgIdL( TInt aWgId )
-    {
-    CApaWindowGroupName* windowName =
-        CApaWindowGroupName::NewLC( iWsSession, aWgId );
-    TUid appUid = windowName->AppUid();
-    CleanupStack::PopAndDestroy( windowName );
-    return appUid;
-
-    }
-
-// --------------------------------------------------------------------------
 // CTsFswEngine::CopyBitmapL
 // --------------------------------------------------------------------------
 //
@@ -496,7 +482,7 @@
     TSLOG2_IN( "aWgId = %d aFbsHandle = %d", aWgId, aFbsHandle );
 
     TUid appUid;
-    TRAPD( err, appUid = AppUidForWgIdL( aWgId ) );
+    TInt err = iDataList->AppUidForWgId( aWgId, appUid );
     if ( err || appUid == KTsCameraUid )
         {
         // Dont't assign screenshot to camera app
@@ -511,8 +497,8 @@
     iPreviewProvider->AckPreview(aFbsHandle);
     if ( err == KErrNone )
         {
+		iDataList->MoveEntryAtStart(appUid.iUid, EFalse);
         StoreScreenshot(aWgId, bmp);
-		iDataList->MoveEntryAtStart(appUid.iUid, EFalse);
         }
 
     TSLOG_OUT();
@@ -767,7 +753,10 @@
 void CTsFswEngine::HandleWidgetUpdateL(TInt aWidgetId, TInt aBitmapHandle)
     {
 	TSLOG_CONTEXT( HandleWidgetUpdateL, TSLOG_LOCAL );
-    CFbsBitmap* bmp = 0;
+    
+	iDataList->MoveEntryAtStart(aWidgetId, ETrue);
+    
+	CFbsBitmap* bmp = 0;
     TBool contentChanged(EFalse); 
     if( aBitmapHandle )
     	{
@@ -782,7 +771,6 @@
 		iObserver.FswDataChanged();
 		}
  
-    iDataList->MoveEntryAtStart(aWidgetId, ETrue);
     TSLOG_OUT();
     }
 
--- a/taskswitcher/taskswitcherui/taskswitcherapp/inc/tsappview.h	Wed Apr 14 15:47:59 2010 +0300
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/inc/tsappview.h	Tue Apr 27 16:26:12 2010 +0300
@@ -180,7 +180,7 @@
     /**
      * Updates the text in the applications and suggestions heading panes.
      */
-    void UpdateHeadingsL();
+    void UpdateHeadingsL( TInt aNewCount );
     
     /**
      * Disables transition animations for taskswitcher app.
--- a/taskswitcher/taskswitcherui/taskswitcherapp/inc/tsfastswaparea.h	Wed Apr 14 15:47:59 2010 +0300
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/inc/tsfastswaparea.h	Tue Apr 27 16:26:12 2010 +0300
@@ -386,7 +386,17 @@
      * @return  1 if landscape, 0 if portait 
      */
     TInt GetCurrentScreenOrientation();
-
+    
+    /**
+     * Retrieves variety value, based on current screen resolution.
+     * 
+     * @param  aVariety  result of the function, 0 value means portrait
+     *                   value of 1 indicates landscape
+     * @return  ETrue if screen resolution differs from vale returned by
+     *          layout meta data functions.
+     */
+    TBool GetVariety( TInt& aVariety );
+        
 private: // Data
     
     // parent control
@@ -441,7 +451,10 @@
     // Key event handling
     TBool iConsumeEvent;
     TBool iKeyEvent;
+    
+    // App closing handling
     RArray<TInt> iIsClosing;
+    TInt iWidgetClosingCount;
     };
 
 #endif // TSFASTSWAPAREA_H
--- a/taskswitcher/taskswitcherui/taskswitcherapp/loc/taskswitcher.loc	Wed Apr 14 15:47:59 2010 +0300
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/loc/taskswitcher.loc	Tue Apr 27 16:26:12 2010 +0300
@@ -41,7 +41,7 @@
 //l:heading_pane_t1
 //r:5.0
 //
-#define qtn_task_switcher_heading_applications "Open applications"
+#define qtn_task_switcher_heading_applications "Open applications (%d)"
 
 //d:Text for no appliactions
 //l:none
--- a/taskswitcher/taskswitcherui/taskswitcherapp/src/tsappui.cpp	Wed Apr 14 15:47:59 2010 +0300
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/src/tsappui.cpp	Tue Apr 27 16:26:12 2010 +0300
@@ -274,7 +274,7 @@
     if ( aWgId == iUnderAppWgId )
         {
         // App under task switcher was launched
-        StartTransition( EActivationTransition, 
+        StartTransition( EBackgroundTransition, 
                          EFalse, 
                          ETrue, 
                          CAknTransitionUtils::EForceInvisible );
@@ -290,7 +290,7 @@
                  EActivationAppShowTransition, ApplicationRect(),
                  AknTransEffect::EParameterType,
                  AknTransEffect::GfxTransParam( aNextAppUid , KTsAppUid ) );
-        GfxTransEffect::Begin( iAppView, EActivationTransition );
+        GfxTransEffect::Begin( iAppView, EBackgroundTransition );
         GfxTransEffect::SetDemarcation( iAppView, iAppView->Rect() );
         GfxTransEffect::NotifyExternalState( ECaptureComponentsBegin, ptr );
         iAppView->MakeVisible( EFalse );
--- a/taskswitcher/taskswitcherui/taskswitcherapp/src/tsappview.cpp	Wed Apr 14 15:47:59 2010 +0300
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/src/tsappview.cpp	Tue Apr 27 16:26:12 2010 +0300
@@ -249,7 +249,7 @@
     
     CleanupStack::PopAndDestroy( &rects );
     
-    UpdateHeadingsL();
+    UpdateHeadingsL(0);
     }
 
 // -----------------------------------------------------------------------------
@@ -629,28 +629,22 @@
 // CTsAppView::DataChanged
 // -----------------------------------------------------------------------------
 //
-void CTsAppView::DataChanged( CCoeControl* /*aWhere*/, TInt /*aNewCount*/ )
+void CTsAppView::DataChanged( CCoeControl* /*aWhere*/, TInt aNewCount )
     {
-    TRAP_IGNORE( UpdateHeadingsL() );
+    TRAP_IGNORE( UpdateHeadingsL( aNewCount ) );
     }
 
 // -----------------------------------------------------------------------------
 // CTsAppView::UpdateHeadingsL
 // -----------------------------------------------------------------------------
 //
-void CTsAppView::UpdateHeadingsL()
+void CTsAppView::UpdateHeadingsL( TInt aNewCount )
     {
-#ifndef TASKSWITCHER_USE_CUSTOM_LAYOUT
     HBufC* text = StringLoader::LoadLC(
-        R_TASK_SWITCHER_HEADING_APPLICATIONS );
-#else
-    _LIT( KTitle, "Task switcher" );
-    HBufC* text = KTitle().AllocLC();
-#endif
+        R_TASK_SWITCHER_HEADING_APPLICATIONS, aNewCount );
     iAppsHeading->SetTextL( *text );
     iAppsHeading->DrawDeferred();
     CleanupStack::PopAndDestroy( text );
-
     }
 
 
--- a/taskswitcher/taskswitcherui/taskswitcherapp/src/tsfastswaparea.cpp	Wed Apr 14 15:47:59 2010 +0300
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/src/tsfastswaparea.cpp	Tue Apr 27 16:26:12 2010 +0300
@@ -103,7 +103,7 @@
     CTsDeviceState& aDeviceState,
     CTsEventControler& aEventHandler) :
     iParent(aParent), iDeviceState(aDeviceState), iEvtHandler(aEventHandler),
-    iIgnoreLayoutSwitch(EFalse)
+    iIgnoreLayoutSwitch(EFalse), iWidgetClosingCount(0)
     {
     // no implementation required
     }
@@ -237,8 +237,14 @@
     TAknLayoutRect gridNextItem = rects[3];
     CleanupStack::PopAndDestroy(&rects);
     
-    TInt variety = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0;
     iGrid->SetRect(gridAppPane.Rect());
+    
+    TInt variety;
+    TBool disable = GetVariety(variety);
+    if ( disable )
+        {
+        TRAP_IGNORE(static_cast<CTsAppUi*>(iEikonEnv->AppUi())->RequestPopUpL());
+        }
     TAknLayoutScalableParameterLimits gridParams = 
         AknLayoutScalable_Apps::cell_tport_appsw_pane_ParamLimits( variety );
     TPoint empty( ELayoutEmpty, ELayoutEmpty );
@@ -293,6 +299,11 @@
     
     // Update state
     HandleDeviceStateChanged( EDeviceType );
+    
+    if ( disable )
+        {
+        TRAP_IGNORE(static_cast<CTsAppUi*>(iEikonEnv->AppUi())->DisablePopUpL());
+        }
     }
 
 
@@ -307,7 +318,12 @@
     TAknLayoutRect gridImage;
     TAknLayoutRect gridNextItem;
     
-    TInt variety = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0;
+    TInt variety;
+    TBool disable = GetVariety(variety);
+    if ( disable )
+        {
+        TRAP_IGNORE(static_cast<CTsAppUi*>(iEikonEnv->AppUi())->RequestPopUpL());
+        }
     
     gridAppPane.LayoutRect( Rect(), 
             AknLayoutScalable_Apps::tport_appsw_pane( variety ) );
@@ -323,6 +339,11 @@
     gridNextItem.LayoutRect( gridAppPane.Rect(),
             AknLayoutScalable_Apps::cell_tport_appsw_pane_cp03( variety ) );
     aRects.Append(gridNextItem);
+    
+    if ( disable )
+        {
+        TRAP_IGNORE(static_cast<CTsAppUi*>(iEikonEnv->AppUi())->DisablePopUpL());
+        }
     }
 
 
@@ -437,6 +458,10 @@
         TInt wgId = iArray[aIndex]->WgId();
         iFSClient->CloseApp( wgId );
         iIsClosing.Append(wgId);
+        if ( iArray[aIndex]->Widget() )
+            {
+            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
@@ -574,6 +599,20 @@
         TSLOG4( TSLOG_INFO, "[%d]: %d %d %S", i, e->WgId(), e->AppUid(), &name );
         }
 #endif
+    
+    // Update closing widget count if necessary
+    if ( iWidgetClosingCount )
+        {
+        TInt widgetCount(0);
+        for ( TInt i = 0, ie = iArray.Count(); i != ie; ++i )
+            {
+            if ( iArray[i]->Widget() )
+                {
+                widgetCount++;
+                }
+            }
+        iWidgetClosingCount = widgetCount;
+        }
 
     // draw
     RenderContentL();
@@ -604,7 +643,6 @@
     RArray<TInt> strokeItemArray;
     CleanupClosePushL(strokeItemArray);
     
-    TInt variety = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0;
     RArray<TAknLayoutRect> rects;
     CleanupClosePushL(rects);
     rects.ReserveL(KLayoutItemCount);
@@ -789,6 +827,7 @@
     TSLOG_IN();
     
     iIsClosing.Reset();
+    iWidgetClosingCount = 0;
     
     CTsGridItemDrawer* itemDrawer =
         static_cast<CTsGridItemDrawer*>( iGrid->ItemDrawer() );
@@ -1712,6 +1751,22 @@
 
 
 // -----------------------------------------------------------------------------
+// CTsFastSwapArea::GetVariety
+// -----------------------------------------------------------------------------
+//
+TBool CTsFastSwapArea::GetVariety( TInt& aVariety )
+    {
+    aVariety = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0;
+    TInt screenOrientation = GetCurrentScreenOrientation();
+    if ( aVariety != screenOrientation )
+        {
+        aVariety = screenOrientation;
+        return ETrue;
+        }
+    return EFalse;
+    }
+
+// -----------------------------------------------------------------------------
 // CTsFastSwapArea::IsAppClosing
 // -----------------------------------------------------------------------------
 //
@@ -1726,6 +1781,23 @@
             {
             iIsClosing.Remove(idx);
             }
+        else if ( iWidgetClosingCount )
+            {
+            retVal = ETrue;
+            iWidgetClosingCount--;
+            }
+        }
+    else
+        {
+        // Check current item list
+        for ( TInt i = 0; i < iArray.Count(); i++ )
+            {
+            TInt wgId = iArray[i]->WgId();
+            if ( wgId == aWgId )
+                {
+                retVal = ETrue;
+                }
+            }
         }
     return retVal;
     }