Revision: 201035 RCL_3
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Wed, 15 Sep 2010 12:00:00 +0300
branchRCL_3
changeset 93 b01126ce0bec
parent 88 3321d3e205b6
child 102 ba63c83f4716
Revision: 201035 Kit: 201036
idlehomescreen/data/common/view_200286ed/conf/view200286ed.confml
idlehomescreen/data/common/view_200286ed/conf/view200286edmanifest.confml
idlehomescreen/data/common/view_200286ed/conf/view200286edxuikon.confml
idlehomescreen/data/group/bld.inf
idlehomescreen/data/qhd_tch/root_2001f482/conf/root2001f482.confml
idlehomescreen/data/qhd_tch/root_2001f482/conf/root2001f482.gcfml
idlehomescreen/data/qhd_tch/templateview_20026f50/xuikon/00/templateview.css
idlehomescreen/data/qhd_tch/templateview_20026f50/xuikon/37/templateview.css
idlehomescreen/data/qhd_tch/templateview_20026f50/xuikon/50/templateview.css
idlehomescreen/data/qhd_tch/templateview_20026f50/xuikon/57/templateview.css
idlehomescreen/data/qhd_tch/templateview_20026f50/xuikon/94/templateview.css
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.confml
idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48bxuikon.gcfml
idlehomescreen/data/qhd_tch/view_2001f48b/xuikon/00/View.css
idlehomescreen/data/qhd_tch/view_2001f48b/xuikon/37/View.css
idlehomescreen/data/qhd_tch/view_2001f48b/xuikon/50/View.css
idlehomescreen/data/qhd_tch/view_2001f48b/xuikon/57/View.css
idlehomescreen/data/qhd_tch/view_2001f48b/xuikon/94/View.css
idlehomescreen/data/qhd_tch/view_20022fe0/conf/view20022fe0.confml
idlehomescreen/data/qhd_tch/view_20022fe0/conf/view20022fe0.gcfml
idlehomescreen/data/qhd_tch/view_20022fe0/conf/view20022fe0manifest.confml
idlehomescreen/data/qhd_tch/view_20022fe0/conf/view20022fe0manifest.gcfml
idlehomescreen/data/qhd_tch/view_20022fe0/conf/view20022fe0xuikon.confml
idlehomescreen/data/qhd_tch/view_20022fe0/conf/view20022fe0xuikon.gcfml
idlehomescreen/data/qhd_tch/view_20022fe0/xuikon/00/View.css
idlehomescreen/data/qhd_tch/view_20022fe0/xuikon/37/View.css
idlehomescreen/data/qhd_tch/view_20022fe0/xuikon/50/View.css
idlehomescreen/data/qhd_tch/view_20022fe0/xuikon/57/View.css
idlehomescreen/data/qhd_tch/view_20022fe0/xuikon/94/View.css
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.confml
idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4xuikon.gcfml
idlehomescreen/data/qhd_tch/view_200286e4/xuikon/00/View.css
idlehomescreen/data/qhd_tch/view_200286e4/xuikon/37/View.css
idlehomescreen/data/qhd_tch/view_200286e4/xuikon/50/View.css
idlehomescreen/data/qhd_tch/view_200286e4/xuikon/57/View.css
idlehomescreen/data/qhd_tch/view_200286e4/xuikon/94/View.css
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.confml
idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5xuikon.gcfml
idlehomescreen/data/qhd_tch/view_200286e5/xuikon/00/View.css
idlehomescreen/data/qhd_tch/view_200286e5/xuikon/37/View.css
idlehomescreen/data/qhd_tch/view_200286e5/xuikon/50/View.css
idlehomescreen/data/qhd_tch/view_200286e5/xuikon/57/View.css
idlehomescreen/data/qhd_tch/view_200286e5/xuikon/94/View.css
idlehomescreen/data/vga_tch/clockdate_200286e6/xuikon/00/clockdate.css
idlehomescreen/data/vga_tch/clockdate_200286e6/xuikon/00/clockdate.xml
idlehomescreen/data/vga_tch/desktop_20018eee/hsps/00/manifest.dat
idlehomescreen/data/vga_tch/group/bld.inf
idlehomescreen/data/vga_tch/onerow_200315c2/group/bld.inf
idlehomescreen/data/vga_tch/onerow_200315c2/hsps/00/manifest.dat
idlehomescreen/data/vga_tch/onerow_200315c2/hsps/00/widgetconfiguration.xml
idlehomescreen/data/vga_tch/onerow_200315c2/rom/onerow.iby
idlehomescreen/data/vga_tch/onerow_200315c2/rom/onerow_customer.iby
idlehomescreen/data/vga_tch/onerow_200315c2/rom/onerow_resources.iby
idlehomescreen/data/vga_tch/onerow_200315c2/rom/onerow_variant.iby
idlehomescreen/data/vga_tch/onerow_200315c2/xuikon/00/onerow.css
idlehomescreen/data/vga_tch/onerow_200315c2/xuikon/00/onerow.dat
idlehomescreen/data/vga_tch/onerow_200315c2/xuikon/00/onerow.xml
idlehomescreen/data/vga_tch/onerow_200315c2/xuikon/37/onerow.css
idlehomescreen/data/vga_tch/onerow_200315c2/xuikon/50/onerow.css
idlehomescreen/data/vga_tch/onerow_200315c2/xuikon/57/onerow.css
idlehomescreen/data/vga_tch/onerow_200315c2/xuikon/94/onerow.css
idlehomescreen/data/vga_tch/posterwideimage_200315c6/group/bld.inf
idlehomescreen/data/vga_tch/posterwideimage_200315c6/hsps/00/manifest.dat
idlehomescreen/data/vga_tch/posterwideimage_200315c6/hsps/00/widgetconfiguration.xml
idlehomescreen/data/vga_tch/posterwideimage_200315c6/loc/wideimage.loc
idlehomescreen/data/vga_tch/posterwideimage_200315c6/rom/posterwideimage.iby
idlehomescreen/data/vga_tch/posterwideimage_200315c6/rom/posterwideimage_customer.iby
idlehomescreen/data/vga_tch/posterwideimage_200315c6/rom/posterwideimage_resources.iby
idlehomescreen/data/vga_tch/posterwideimage_200315c6/rom/posterwideimage_variant.iby
idlehomescreen/data/vga_tch/posterwideimage_200315c6/xuikon/00/posterwideimage.css
idlehomescreen/data/vga_tch/posterwideimage_200315c6/xuikon/00/posterwideimage.dat
idlehomescreen/data/vga_tch/posterwideimage_200315c6/xuikon/00/posterwideimage.xml
idlehomescreen/data/vga_tch/posterwideimage_200315c6/xuikon/00/wideimage.dtd
idlehomescreen/data/vga_tch/root_2001f48f/conf/root2001f48f.confml
idlehomescreen/data/vga_tch/root_2001f48f/conf/root2001f48f.gcfml
idlehomescreen/data/vga_tch/templateview_200286ec/group/bld.inf
idlehomescreen/data/vga_tch/templateview_200286ec/hsps/00/viewconfiguration.xml
idlehomescreen/data/vga_tch/templateview_200286ec/loc/templateview.loc
idlehomescreen/data/vga_tch/templateview_200286ec/loc/view.loc
idlehomescreen/data/vga_tch/templateview_200286ec/xuikon/37/view.css
idlehomescreen/data/vga_tch/templateview_200286ec/xuikon/50/view.css
idlehomescreen/data/vga_tch/templateview_200286ec/xuikon/57/view.css
idlehomescreen/data/vga_tch/templateview_200286ec/xuikon/94/view.css
idlehomescreen/data/vga_tch/threerows_200315c4/group/bld.inf
idlehomescreen/data/vga_tch/threerows_200315c4/hsps/00/manifest.dat
idlehomescreen/data/vga_tch/threerows_200315c4/hsps/00/widgetconfiguration.xml
idlehomescreen/data/vga_tch/threerows_200315c4/rom/threerows.iby
idlehomescreen/data/vga_tch/threerows_200315c4/rom/threerows_customer.iby
idlehomescreen/data/vga_tch/threerows_200315c4/rom/threerows_resources.iby
idlehomescreen/data/vga_tch/threerows_200315c4/rom/threerows_variant.iby
idlehomescreen/data/vga_tch/threerows_200315c4/xuikon/00/threerows.css
idlehomescreen/data/vga_tch/threerows_200315c4/xuikon/00/threerows.dat
idlehomescreen/data/vga_tch/threerows_200315c4/xuikon/00/threerows.xml
idlehomescreen/data/vga_tch/threerows_200315c4/xuikon/37/threerows.css
idlehomescreen/data/vga_tch/threerows_200315c4/xuikon/50/threerows.css
idlehomescreen/data/vga_tch/threerows_200315c4/xuikon/57/threerows.css
idlehomescreen/data/vga_tch/threerows_200315c4/xuikon/94/threerows.css
idlehomescreen/data/vga_tch/threetextrows_200315c5/group/bld.inf
idlehomescreen/data/vga_tch/threetextrows_200315c5/hsps/00/manifest.dat
idlehomescreen/data/vga_tch/threetextrows_200315c5/hsps/00/widgetconfiguration.xml
idlehomescreen/data/vga_tch/threetextrows_200315c5/rom/threetextrows.iby
idlehomescreen/data/vga_tch/threetextrows_200315c5/rom/threetextrows_customer.iby
idlehomescreen/data/vga_tch/threetextrows_200315c5/rom/threetextrows_resources.iby
idlehomescreen/data/vga_tch/threetextrows_200315c5/rom/threetextrows_variant.iby
idlehomescreen/data/vga_tch/threetextrows_200315c5/xuikon/00/threetextrows.css
idlehomescreen/data/vga_tch/threetextrows_200315c5/xuikon/00/threetextrows.dat
idlehomescreen/data/vga_tch/threetextrows_200315c5/xuikon/00/threetextrows.xml
idlehomescreen/data/vga_tch/threetextrows_200315c5/xuikon/37/threetextrows.css
idlehomescreen/data/vga_tch/threetextrows_200315c5/xuikon/50/threetextrows.css
idlehomescreen/data/vga_tch/threetextrows_200315c5/xuikon/57/threetextrows.css
idlehomescreen/data/vga_tch/threetextrows_200315c5/xuikon/94/threetextrows.css
idlehomescreen/data/vga_tch/tworows_200315c3/group/bld.inf
idlehomescreen/data/vga_tch/tworows_200315c3/hsps/00/manifest.dat
idlehomescreen/data/vga_tch/tworows_200315c3/hsps/00/widgetconfiguration.xml
idlehomescreen/data/vga_tch/tworows_200315c3/rom/tworows.iby
idlehomescreen/data/vga_tch/tworows_200315c3/rom/tworows_customer.iby
idlehomescreen/data/vga_tch/tworows_200315c3/rom/tworows_resources.iby
idlehomescreen/data/vga_tch/tworows_200315c3/rom/tworows_variant.iby
idlehomescreen/data/vga_tch/tworows_200315c3/xuikon/00/tworows.css
idlehomescreen/data/vga_tch/tworows_200315c3/xuikon/00/tworows.dat
idlehomescreen/data/vga_tch/tworows_200315c3/xuikon/00/tworows.xml
idlehomescreen/data/vga_tch/tworows_200315c3/xuikon/37/tworows.css
idlehomescreen/data/vga_tch/tworows_200315c3/xuikon/50/tworows.css
idlehomescreen/data/vga_tch/tworows_200315c3/xuikon/57/tworows.css
idlehomescreen/data/vga_tch/tworows_200315c3/xuikon/94/tworows.css
idlehomescreen/data/vga_tch/view1_2001fdb9/conf/view2001fdb9.confml
idlehomescreen/data/vga_tch/view1_2001fdb9/conf/view2001fdb9.gcfml
idlehomescreen/data/vga_tch/view1_2001fdb9/conf/view2001fdb9manifest.confml
idlehomescreen/data/vga_tch/view1_2001fdb9/conf/view2001fdb9manifest.gcfml
idlehomescreen/data/vga_tch/view1_2001fdb9/conf/view2001fdb9xuikon.confml
idlehomescreen/data/vga_tch/view1_2001fdb9/conf/view2001fdb9xuikon.gcfml
idlehomescreen/data/vga_tch/view1_2001fdb9/group/bld.inf
idlehomescreen/data/vga_tch/view1_2001fdb9/hsps/00/viewconfiguration.xml
idlehomescreen/data/vga_tch/view1_2001fdb9/xuikon/37/view.css
idlehomescreen/data/vga_tch/view1_2001fdb9/xuikon/50/view.css
idlehomescreen/data/vga_tch/view1_2001fdb9/xuikon/57/view.css
idlehomescreen/data/vga_tch/view1_2001fdb9/xuikon/94/view.css
idlehomescreen/data/vga_tch/view2_200286ea/conf/view200286ea.confml
idlehomescreen/data/vga_tch/view2_200286ea/conf/view200286ea.gcfml
idlehomescreen/data/vga_tch/view2_200286ea/conf/view200286eamanifest.confml
idlehomescreen/data/vga_tch/view2_200286ea/conf/view200286eamanifest.gcfml
idlehomescreen/data/vga_tch/view2_200286ea/conf/view200286eaxuikon.confml
idlehomescreen/data/vga_tch/view2_200286ea/conf/view200286eaxuikon.gcfml
idlehomescreen/data/vga_tch/view2_200286ea/group/bld.inf
idlehomescreen/data/vga_tch/view2_200286ea/hsps/00/viewconfiguration.xml
idlehomescreen/data/vga_tch/view2_200286ea/xuikon/37/view.css
idlehomescreen/data/vga_tch/view2_200286ea/xuikon/50/view.css
idlehomescreen/data/vga_tch/view2_200286ea/xuikon/57/view.css
idlehomescreen/data/vga_tch/view2_200286ea/xuikon/94/view.css
idlehomescreen/data/vga_tch/view3_200286eb/conf/view200286eb.confml
idlehomescreen/data/vga_tch/view3_200286eb/conf/view200286eb.gcfml
idlehomescreen/data/vga_tch/view3_200286eb/conf/view200286ebmanifest.confml
idlehomescreen/data/vga_tch/view3_200286eb/conf/view200286ebmanifest.gcfml
idlehomescreen/data/vga_tch/view3_200286eb/conf/view200286ebxuikon.confml
idlehomescreen/data/vga_tch/view3_200286eb/conf/view200286ebxuikon.gcfml
idlehomescreen/data/vga_tch/view3_200286eb/group/bld.inf
idlehomescreen/data/vga_tch/view3_200286eb/hsps/00/viewconfiguration.xml
idlehomescreen/data/vga_tch/view3_200286eb/xuikon/37/view.css
idlehomescreen/data/vga_tch/view3_200286eb/xuikon/50/view.css
idlehomescreen/data/vga_tch/view3_200286eb/xuikon/57/view.css
idlehomescreen/data/vga_tch/view3_200286eb/xuikon/94/view.css
idlehomescreen/inc/xnproperty.h
idlehomescreen/inc/xnuiengine.h
idlehomescreen/inc/xnviewswitcher.h
idlehomescreen/widgetmanager/conf/widgetmanager.confml
idlehomescreen/widgetmanager/conf/widgetmanager_20026F53.crml
idlehomescreen/widgetmanager/data/widgetmanagerview.rss
idlehomescreen/widgetmanager/gfx/qgn_menu_shopping.svg
idlehomescreen/widgetmanager/group/widgetmanager.mmp
idlehomescreen/widgetmanager/group/wmicons.txt
idlehomescreen/widgetmanager/inc/widgetmanager.hrh
idlehomescreen/widgetmanager/inc/wmcommon.h
idlehomescreen/widgetmanager/inc/wmconfiguration.h
idlehomescreen/widgetmanager/inc/wmcrkeys.h
idlehomescreen/widgetmanager/inc/wmimageconverter.h
idlehomescreen/widgetmanager/inc/wmmaincontainer.h
idlehomescreen/widgetmanager/inc/wmmaincontainerview.h
idlehomescreen/widgetmanager/inc/wmplugin.h
idlehomescreen/widgetmanager/inc/wmportalbutton.h
idlehomescreen/widgetmanager/inc/wmstore.h
idlehomescreen/widgetmanager/loc/widgetmanagerview.loc
idlehomescreen/widgetmanager/src/wmconfiguration.cpp
idlehomescreen/widgetmanager/src/wmimageconverter.cpp
idlehomescreen/widgetmanager/src/wmlistbox.cpp
idlehomescreen/widgetmanager/src/wmmaincontainer.cpp
idlehomescreen/widgetmanager/src/wmmaincontainerview.cpp
idlehomescreen/widgetmanager/src/wmplugin.cpp
idlehomescreen/widgetmanager/src/wmportalbutton.cpp
idlehomescreen/widgetmanager/src/wmstore.cpp
idlehomescreen/widgetmanager/src/wmwidgetorderdata.cpp
idlehomescreen/widgetmanager/tsrc/wmunittest/group/wmunittest.mmp
idlehomescreen/xmluirendering/renderingplugins/xnclockfactory/inc/xnclockadapter.h
idlehomescreen/xmluirendering/renderingplugins/xnclockfactory/inc/xnclockface.h
idlehomescreen/xmluirendering/renderingplugins/xnclockfactory/src/xnclockadapter.cpp
idlehomescreen/xmluirendering/renderingplugins/xnclockfactory/src/xnclockface.cpp
idlehomescreen/xmluirendering/renderingplugins/xnclockfactory/src/xndatecontrol.cpp
idlehomescreen/xmluirendering/uiengine/eabi/xn3layoutengineu.def
idlehomescreen/xmluirendering/uiengine/inc/xnplugindata.h
idlehomescreen/xmluirendering/uiengine/inc/xnplugindata.inl
idlehomescreen/xmluirendering/uiengine/inc/xnrootdata.h
idlehomescreen/xmluirendering/uiengine/inc/xnuiengineimpl.h
idlehomescreen/xmluirendering/uiengine/inc/xnviewadapter.h
idlehomescreen/xmluirendering/uiengine/inc/xnviewdata.h
idlehomescreen/xmluirendering/uiengine/src/xnbackgroundmanager.cpp
idlehomescreen/xmluirendering/uiengine/src/xneditor.cpp
idlehomescreen/xmluirendering/uiengine/src/xnplugindata.cpp
idlehomescreen/xmluirendering/uiengine/src/xnpopupcontroladapter.cpp
idlehomescreen/xmluirendering/uiengine/src/xnrootdata.cpp
idlehomescreen/xmluirendering/uiengine/src/xnuiengine.cpp
idlehomescreen/xmluirendering/uiengine/src/xnuiengineimpl.cpp
idlehomescreen/xmluirendering/uiengine/src/xnutils.cpp
idlehomescreen/xmluirendering/uiengine/src/xnviewadapter.cpp
idlehomescreen/xmluirendering/uiengine/src/xnviewcontroladapter.cpp
idlehomescreen/xmluirendering/uiengine/src/xnviewdata.cpp
idlehomescreen/xmluirendering/uiengine/src/xnviewswitcher.cpp
menufw/hierarchynavigator/hnengine/inc/hnengine.h
menufw/hierarchynavigator/hnengine/src/hnengine.cpp
menufw/hierarchynavigator/hnmetadatamodel/inc/hnglobals.h
menufw/hierarchynavigator/hnmetadatamodel/inc/hnmdmodel.h
menufw/hierarchynavigator/hnmetadatamodel/inc/hnrepositoryobserver.h
menufw/hierarchynavigator/hnmetadatamodel/src/hnmdmodel.cpp
menufw/hierarchynavigator/hnmetadatamodel/src/hnrepositoryobserver.cpp
menufw/menusuites/foldersuite/loc/matrixmenudata.loc
taskswitcher/taskswitcherui/taskswitcherapp/inc/tsfastswaparea.h
taskswitcher/taskswitcherui/taskswitcherapp/inc/tsfastswapareautils.h
taskswitcher/taskswitcherui/taskswitcherapp/src/tsappui.cpp
taskswitcher/taskswitcherui/taskswitcherapp/src/tsfastswaparea.cpp
taskswitcher/taskswitcherui/taskswitcherapp/src/tsfastswapareautils.cpp
--- a/idlehomescreen/data/common/view_200286ed/conf/view200286ed.confml	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/common/view_200286ed/conf/view200286ed.confml	Wed Sep 15 12:00:00 2010 +0300
@@ -1,6 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <configuration xmlns="http://www.s60.com/xml/confml/2" name="Banko Homescreen" version="1">
   <feature ref="BlankoHomescreenPlugins" name="Blanko Homescreen Widgets">
+    <setting ref="SupportQhd" name="Qhd Support" type="boolean">
+      <desc>The Qhd touch is a supported display type of the xuikon homescreen</desc>
+    </setting>
+    <setting ref="SupportVga" name="Vga Support" type="boolean">
+      <desc>The Vga touch is a supported display type of the xuikon homescreen</desc>
+    </setting>
     <setting ref="Plugins" name="Widgets" type="sequence">
       <desc>Widgets on Blanko Homescreen</desc>
       <setting ref="Uid" name="Widget" type="string">
@@ -84,13 +90,8 @@
     </setting>
   </feature>
   <data>
-  <!--  <BlankoHomescreenPlugins>
-      <Plugins extensionPolicy="replace"><Uid>0x2001f47f</Uid><BundleIdentifier></BundleIdentifier><TemplateIdentifier>0</TemplateIdentifier><LockingStatus>none</LockingStatus></Plugins>
-      <Plugins><Uid>0x2001f47f</Uid><BundleIdentifier></BundleIdentifier><TemplateIdentifier>0</TemplateIdentifier><LockingStatus>none</LockingStatus></Plugins>
-      <Plugins><Uid>0x2001f47f</Uid><BundleIdentifier></BundleIdentifier><TemplateIdentifier>0</TemplateIdentifier><LockingStatus>none</LockingStatus></Plugins>
-      <Plugins><Uid>0x2001f47f</Uid><BundleIdentifier></BundleIdentifier><TemplateIdentifier>0</TemplateIdentifier><LockingStatus>none</LockingStatus></Plugins>
-      <Plugins><Uid>0x2001f47f</Uid><BundleIdentifier></BundleIdentifier><TemplateIdentifier>0</TemplateIdentifier><LockingStatus>none</LockingStatus></Plugins>
-      <Plugins><Uid>0x2001f47f</Uid><BundleIdentifier></BundleIdentifier><TemplateIdentifier>0</TemplateIdentifier><LockingStatus>none</LockingStatus></Plugins>
-    </BlankoHomescreenPlugins> -->
+      <SupportQhd>true</SupportQhd>
+      <SupportVga>true</SupportVga>
+
   </data>
 </configuration>
\ No newline at end of file
Binary file idlehomescreen/data/common/view_200286ed/conf/view200286edmanifest.confml has changed
Binary file idlehomescreen/data/common/view_200286ed/conf/view200286edxuikon.confml has changed
--- a/idlehomescreen/data/group/bld.inf	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/group/bld.inf	Wed Sep 15 12:00:00 2010 +0300
@@ -17,7 +17,7 @@
 
 
 #include "../common/group/bld.inf"       
-// #include "../vga_tch/group/bld.inf"         // Buzzidle
+#include "../vga_tch/group/bld.inf"         // Buzzidle
 #include "../qhd_tch/group/bld.inf"     // Flashidle
 
 PRJ_PLATFORMS
Binary file idlehomescreen/data/qhd_tch/root_2001f482/conf/root2001f482.confml has changed
--- a/idlehomescreen/data/qhd_tch/root_2001f482/conf/root2001f482.gcfml	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/root_2001f482/conf/root2001f482.gcfml	Wed Sep 15 12:00:00 2010 +0300
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<container xmlns="http://www.symbianfoundation.org/xml/implml/1">
+<container xmlns="http://www.symbianfoundation.org/xml/implml/1" condition="${HSViews.SupportQhd}">
 	<tag name="target" value="core"/>
 	<tag name="target" value="rofs2"/>
 	<tag name="target" value="rofs3"/>
--- a/idlehomescreen/data/qhd_tch/templateview_20026f50/xuikon/00/templateview.css	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/templateview_20026f50/xuikon/00/templateview.css	Wed Sep 15 12:00:00 2010 +0300
@@ -13,6 +13,8 @@
     direction: ltr;
     block-progression: rl;
     padding-top: 3px;
+    padding-left: 17px;
+    padding-right: 17px;
 }
 
 plugin.plugins
@@ -23,7 +25,7 @@
     margin-bottom: 4px;
     margin-right: 5px;
     margin-left: 5px;
-
+ 
     _s60-longtap: true;
 
     nav-index: appearance;
@@ -48,7 +50,7 @@
 {
     _s60-longtap: true;
     _s60-aspect-ratio: preserve;
-}  
+}
 
 softkey#msk_ltr
 {
@@ -59,3 +61,4 @@
 {
     display: none;
 }
+
--- a/idlehomescreen/data/qhd_tch/templateview_20026f50/xuikon/37/templateview.css	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/templateview_20026f50/xuikon/37/templateview.css	Wed Sep 15 12:00:00 2010 +0300
@@ -13,6 +13,8 @@
     direction: rtl;
     block-progression: rl;
     padding-top: 3px;
+    padding-left: 17px;
+    padding-right: 17px;
 }
 
 plugin.plugins
@@ -23,7 +25,7 @@
     margin-bottom: 4px;
     margin-right: 5px;
     margin-left: 5px;
-
+ 
     _s60-longtap: true;
 
     nav-index: appearance;
@@ -48,7 +50,7 @@
 {
     _s60-longtap: true;
     _s60-aspect-ratio: preserve;
-}  
+}
 
 softkey#msk_ltr
 {
@@ -59,3 +61,4 @@
 {
     display: block;
 }
+
--- a/idlehomescreen/data/qhd_tch/templateview_20026f50/xuikon/50/templateview.css	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/templateview_20026f50/xuikon/50/templateview.css	Wed Sep 15 12:00:00 2010 +0300
@@ -13,6 +13,8 @@
     direction: rtl;
     block-progression: rl;
     padding-top: 3px;
+    padding-left: 17px;
+    padding-right: 17px;
 }
 
 plugin.plugins
@@ -23,7 +25,7 @@
     margin-bottom: 4px;
     margin-right: 5px;
     margin-left: 5px;
-
+ 
     _s60-longtap: true;
 
     nav-index: appearance;
@@ -48,7 +50,7 @@
 {
     _s60-longtap: true;
     _s60-aspect-ratio: preserve;
-}  
+}
 
 softkey#msk_ltr
 {
@@ -59,3 +61,4 @@
 {
     display: block;
 }
+
--- a/idlehomescreen/data/qhd_tch/templateview_20026f50/xuikon/57/templateview.css	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/templateview_20026f50/xuikon/57/templateview.css	Wed Sep 15 12:00:00 2010 +0300
@@ -13,6 +13,8 @@
     direction: rtl;
     block-progression: rl;
     padding-top: 3px;
+    padding-left: 17px;
+    padding-right: 17px;
 }
 
 plugin.plugins
@@ -23,7 +25,7 @@
     margin-bottom: 4px;
     margin-right: 5px;
     margin-left: 5px;
-
+ 
     _s60-longtap: true;
 
     nav-index: appearance;
@@ -48,7 +50,7 @@
 {
     _s60-longtap: true;
     _s60-aspect-ratio: preserve;
-}  
+}
 
 softkey#msk_ltr
 {
@@ -59,3 +61,4 @@
 {
     display: block;
 }
+
--- a/idlehomescreen/data/qhd_tch/templateview_20026f50/xuikon/94/templateview.css	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/templateview_20026f50/xuikon/94/templateview.css	Wed Sep 15 12:00:00 2010 +0300
@@ -13,6 +13,8 @@
     direction: rtl;
     block-progression: rl;
     padding-top: 3px;
+    padding-left: 17px;
+    padding-right: 17px;
 }
 
 plugin.plugins
@@ -23,7 +25,7 @@
     margin-bottom: 4px;
     margin-right: 5px;
     margin-left: 5px;
-
+ 
     _s60-longtap: true;
 
     nav-index: appearance;
@@ -48,7 +50,7 @@
 {
     _s60-longtap: true;
     _s60-aspect-ratio: preserve;
-}  
+}
 
 softkey#msk_ltr
 {
@@ -59,3 +61,4 @@
 {
     display: block;
 }
+
--- a/idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48b.confml	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48b.confml	Wed Sep 15 12:00:00 2010 +0300
@@ -1,6 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <configuration name="Homescreen 1" version="1" xmlns="http://www.s60.com/xml/confml/2" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xs="http://www.w3.org/2001/XMLSchema">
   <feature name="Homescreen 1 widgets" ref="HomescreenPlugins_1">
+    <setting ref="SupportQhd" name="Qhd Support" type="boolean">
+      <desc>The Qhd touch is a supported display type of the xuikon homescreen</desc>
+    </setting>
+    <setting ref="SupportVga" name="Vga Support" type="boolean">
+      <desc>The Vga touch is a supported display type of the xuikon homescreen</desc>
+    </setting>
     <setting name="Max Widgets" ref="MaxWidgets" type="string">
       <desc>Maximum widget amount in Homescreen 1 page. Customizable</desc>
     </setting>
@@ -26,7 +32,6 @@
       <desc>Widgets in the Homescreen 1</desc>
     <setting name="Widget" ref="Uid" type="string">
       <desc>Widget name</desc>
-      <!--<option map="DFSFeatures/HomescreenWidgets" />-->
       <option name="Empty" value="0x2001f47f" />
       <option name="PhoneSetup" value="0x20021195" />
       <option name="ContactsBar" value="0x20022eba" />
@@ -248,6 +253,8 @@
   </feature>
 <data>
     <HomescreenPlugins_1>
+      <SupportQhd>true</SupportQhd>
+      <SupportVga>true</SupportVga>
       <MaxWidgets>6</MaxWidgets>
     <UseEmptyWidgets>true</UseEmptyWidgets>
     <ItemIdEmptyWidgets>hs_qhd_tch_view</ItemIdEmptyWidgets>
--- a/idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48b.gcfml	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48b.gcfml	Wed Sep 15 12:00:00 2010 +0300
@@ -1,10 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<container xmlns="http://www.symbianfoundation.org/xml/implml/1">
+<container xmlns="http://www.symbianfoundation.org/xml/implml/1" condition="${HomescreenPlugins_1.SupportQhd}">
 	<tag name="target" value="core"/>
 	<tag name="target" value="rofs2"/>
 	<tag name="target" value="rofs3"/>
   <phase name='post'/> <!-- post phase for making sure that data for all homescreen widgets is available in sequence -->
-
 <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"/>
Binary file idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48bmanifest.confml has changed
--- a/idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48bmanifest.gcfml	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48bmanifest.gcfml	Wed Sep 15 12:00:00 2010 +0300
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<container xmlns="http://www.symbianfoundation.org/xml/implml/1">
+<container xmlns="http://www.symbianfoundation.org/xml/implml/1" condition="${Homescreen1manifest.SupportQhd}">
 	<tag name="target" value="core"/>
 	<tag name="target" value="rofs2"/>
 	<tag name="target" value="rofs3"/>
Binary file idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48bxuikon.confml has changed
--- a/idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48bxuikon.gcfml	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48bxuikon.gcfml	Wed Sep 15 12:00:00 2010 +0300
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<container xmlns="http://www.symbianfoundation.org/xml/implml/1">
+<container xmlns="http://www.symbianfoundation.org/xml/implml/1" condition="${Homescreen1XuikonFolder.SupportQhd}">
 	<tag name="target" value="core"/>
 	<tag name="target" value="rofs2"/>
 	<tag name="target" value="rofs3"/>
--- a/idlehomescreen/data/qhd_tch/view_2001f48b/xuikon/00/View.css	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_2001f48b/xuikon/00/View.css	Wed Sep 15 12:00:00 2010 +0300
@@ -13,6 +13,8 @@
     direction: ltr;
     block-progression: rl;
     padding-top: 3px;
+    padding-left: 17px;
+    padding-right: 17px;
 }
 
 plugin.plugins
--- a/idlehomescreen/data/qhd_tch/view_2001f48b/xuikon/37/View.css	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_2001f48b/xuikon/37/View.css	Wed Sep 15 12:00:00 2010 +0300
@@ -13,6 +13,8 @@
     direction: rtl;
     block-progression: rl;
     padding-top: 3px;
+    padding-left: 17px;
+    padding-right: 17px;
 }
 
 plugin.plugins
--- a/idlehomescreen/data/qhd_tch/view_2001f48b/xuikon/50/View.css	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_2001f48b/xuikon/50/View.css	Wed Sep 15 12:00:00 2010 +0300
@@ -13,6 +13,8 @@
     direction: rtl;
     block-progression: rl;
     padding-top: 3px;
+    padding-left: 17px;
+    padding-right: 17px;
 }
 
 plugin.plugins
--- a/idlehomescreen/data/qhd_tch/view_2001f48b/xuikon/57/View.css	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_2001f48b/xuikon/57/View.css	Wed Sep 15 12:00:00 2010 +0300
@@ -13,6 +13,8 @@
     direction: rtl;
     block-progression: rl;
     padding-top: 3px;
+    padding-left: 17px;
+    padding-right: 17px;
 }
 
 plugin.plugins
--- a/idlehomescreen/data/qhd_tch/view_2001f48b/xuikon/94/View.css	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_2001f48b/xuikon/94/View.css	Wed Sep 15 12:00:00 2010 +0300
@@ -13,6 +13,8 @@
     direction: rtl;
     block-progression: rl;
     padding-top: 3px;
+    padding-left: 17px;
+    padding-right: 17px;
 }
 
 plugin.plugins
--- a/idlehomescreen/data/qhd_tch/view_20022fe0/conf/view20022fe0.confml	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_20022fe0/conf/view20022fe0.confml	Wed Sep 15 12:00:00 2010 +0300
@@ -1,6 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <configuration name="Homescreen 4" version="1" xmlns="http://www.s60.com/xml/confml/2" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xs="http://www.w3.org/2001/XMLSchema">
   <feature name="Homescreen 4 widgets" ref="HomescreenPlugins_4">
+    <setting ref="SupportQhd" name="Qhd Support" type="boolean">
+      <desc>The Qhd touch is a supported display type of the xuikon homescreen</desc>
+    </setting>
+    <setting ref="SupportVga" name="Vga Support" type="boolean">
+      <desc>The Vga touch is a supported display type of the xuikon homescreen</desc>
+    </setting>
     <setting name="Max Widgets" ref="MaxWidgets" type="string">
       <desc>Maximum widget amount in Homescreen 4 page. Customizable</desc>
     </setting>
@@ -247,6 +253,8 @@
   </feature>
 <data>
     <HomescreenPlugins_4>
+      <SupportQhd>true</SupportQhd>
+      <SupportVga>true</SupportVga>
       <MaxWidgets>6</MaxWidgets>
     <UseEmptyWidgets>true</UseEmptyWidgets>
     <ItemIdEmptyWidgets>hs_qhd_tch_view</ItemIdEmptyWidgets>
--- a/idlehomescreen/data/qhd_tch/view_20022fe0/conf/view20022fe0.gcfml	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_20022fe0/conf/view20022fe0.gcfml	Wed Sep 15 12:00:00 2010 +0300
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<container xmlns="http://www.symbianfoundation.org/xml/implml/1">
+<container xmlns="http://www.symbianfoundation.org/xml/implml/1" condition="${HomescreenPlugins_4.SupportQhd}">
 	<tag name="target" value="core"/>
 	<tag name="target" value="rofs2"/>
 	<tag name="target" value="rofs3"/>
--- a/idlehomescreen/data/qhd_tch/view_20022fe0/conf/view20022fe0manifest.confml	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_20022fe0/conf/view20022fe0manifest.confml	Wed Sep 15 12:00:00 2010 +0300
@@ -1,6 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<configuration xmlns="http://www.s60.com/xml/confml/1" name="Home screen 4 manifest" version="1">
+<configuration xmlns="http://www.s60.com/xml/confml/2" name="Home screen 4 manifest" version="1">
   <feature ref="Homescreen4manifest" name="Homescreen4 manifest">
+    <setting ref="SupportQhd" name="Qhd Support" type="boolean">
+      <desc>The Qhd touch is a supported display type of the xuikon homescreen</desc>
+    </setting>
+    <setting ref="SupportVga" name="Vga Support" type="boolean">
+      <desc>The Vga touch is a supported display type of the xuikon homescreen</desc>
+    </setting>
     <setting ref="PackageVersion" name="Configuration package type version" type="selection">
       <option name="NotDefined" value="0"/>
       <option name="2.0" value="2.0"/>
@@ -28,6 +34,8 @@
   </feature>
 <data>
     <Homescreen4manifest>
+      <SupportQhd>true</SupportQhd>
+      <SupportVga>true</SupportVga>
       <PackageVersion>2.0</PackageVersion>
     <DeviceFamily>qhd_tch</DeviceFamily>
     <ConfigurationType>view</ConfigurationType>
--- a/idlehomescreen/data/qhd_tch/view_20022fe0/conf/view20022fe0manifest.gcfml	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_20022fe0/conf/view20022fe0manifest.gcfml	Wed Sep 15 12:00:00 2010 +0300
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<container xmlns="http://www.symbianfoundation.org/xml/implml/1">
+<container xmlns="http://www.symbianfoundation.org/xml/implml/1" condition="${Homescreen4manifest.SupportQhd}">
 	<tag name="target" value="core"/>
 	<tag name="target" value="rofs2"/>
 	<tag name="target" value="rofs3"/>
--- a/idlehomescreen/data/qhd_tch/view_20022fe0/conf/view20022fe0xuikon.confml	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_20022fe0/conf/view20022fe0xuikon.confml	Wed Sep 15 12:00:00 2010 +0300
@@ -1,9 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <configuration name="Home screen 4 Xuikon Folder generation " version="1" xmlns="http://www.s60.com/xml/confml/2" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xs="http://www.w3.org/2001/XMLSchema">
   <feature name="Homescreen4 Xuikon Folder generation" ref="Homescreen4XuikonFolder">
+  <setting ref="SupportQhd" name="Qhd Support" type="boolean">
+    <desc>The Qhd touch is a supported display type of the xuikon homescreen</desc>
+  </setting>
+  <setting ref="SupportVga" name="Vga Support" type="boolean">
+    <desc>The Vga touch is a supported display type of the xuikon homescreen</desc>
+  </setting>
     <setting name="hard coded version" readOnly="true" ref="FolderCFG" type="string" />
   </feature>
-<data>
+  <data>
     <Homescreen4XuikonFolder>
+      <SupportQhd>true</SupportQhd>
+      <SupportVga>true</SupportVga>
       <FolderCFG>foo</FolderCFG>
     </Homescreen4XuikonFolder>
   </data>
--- a/idlehomescreen/data/qhd_tch/view_20022fe0/conf/view20022fe0xuikon.gcfml	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_20022fe0/conf/view20022fe0xuikon.gcfml	Wed Sep 15 12:00:00 2010 +0300
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<container xmlns="http://www.symbianfoundation.org/xml/implml/1">
+<container xmlns="http://www.symbianfoundation.org/xml/implml/1" condition="${Homescreen4XuikonFolder.SupportQhd}">
 	<tag name="target" value="core"/>
 	<tag name="target" value="rofs2"/>
 	<tag name="target" value="rofs3"/>
--- a/idlehomescreen/data/qhd_tch/view_20022fe0/xuikon/00/View.css	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_20022fe0/xuikon/00/View.css	Wed Sep 15 12:00:00 2010 +0300
@@ -13,6 +13,8 @@
     direction: ltr;
     block-progression: rl;
     padding-top: 3px;
+    padding-left: 17px;
+    padding-right: 17px;
 }
 
 plugin.plugins
@@ -29,11 +31,6 @@
     nav-index: appearance;
 }
 
-plugin:edit
-{
-    background-color:"SKIN(270501603 8582)";
-}
-
 trigger#hs_popup_open_hold:edit
 {
     display: none;
--- a/idlehomescreen/data/qhd_tch/view_20022fe0/xuikon/37/View.css	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_20022fe0/xuikon/37/View.css	Wed Sep 15 12:00:00 2010 +0300
@@ -13,6 +13,8 @@
     direction: rtl;
     block-progression: rl;
     padding-top: 3px;
+    padding-left: 17px;
+    padding-right: 17px;
 }
 
 plugin.plugins
@@ -23,13 +25,10 @@
     margin-bottom: 4px;
     margin-right: 5px;
     margin-left: 5px;
+ 
     _s60-longtap: true;
-    nav-index: appearance;
-}
 
-plugin:edit
-{
-    background-color:"SKIN(270501603 8582)";
+    nav-index: appearance;
 }
 
 trigger#hs_popup_open_hold:edit
--- a/idlehomescreen/data/qhd_tch/view_20022fe0/xuikon/50/View.css	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_20022fe0/xuikon/50/View.css	Wed Sep 15 12:00:00 2010 +0300
@@ -13,6 +13,8 @@
     direction: rtl;
     block-progression: rl;
     padding-top: 3px;
+    padding-left: 17px;
+    padding-right: 17px;
 }
 
 plugin.plugins
@@ -23,13 +25,10 @@
     margin-bottom: 4px;
     margin-right: 5px;
     margin-left: 5px;
+ 
     _s60-longtap: true;
-    nav-index: appearance;
-}
 
-plugin:edit
-{
-    background-color:"SKIN(270501603 8582)";
+    nav-index: appearance;
 }
 
 trigger#hs_popup_open_hold:edit
--- a/idlehomescreen/data/qhd_tch/view_20022fe0/xuikon/57/View.css	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_20022fe0/xuikon/57/View.css	Wed Sep 15 12:00:00 2010 +0300
@@ -13,6 +13,8 @@
     direction: rtl;
     block-progression: rl;
     padding-top: 3px;
+    padding-left: 17px;
+    padding-right: 17px;
 }
 
 plugin.plugins
@@ -23,13 +25,10 @@
     margin-bottom: 4px;
     margin-right: 5px;
     margin-left: 5px;
+ 
     _s60-longtap: true;
-    nav-index: appearance;
-}
 
-plugin:edit
-{
-    background-color:"SKIN(270501603 8582)";
+    nav-index: appearance;
 }
 
 trigger#hs_popup_open_hold:edit
--- a/idlehomescreen/data/qhd_tch/view_20022fe0/xuikon/94/View.css	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_20022fe0/xuikon/94/View.css	Wed Sep 15 12:00:00 2010 +0300
@@ -13,6 +13,8 @@
     direction: rtl;
     block-progression: rl;
     padding-top: 3px;
+    padding-left: 17px;
+    padding-right: 17px;
 }
 
 plugin.plugins
@@ -23,13 +25,10 @@
     margin-bottom: 4px;
     margin-right: 5px;
     margin-left: 5px;
+ 
     _s60-longtap: true;
-    nav-index: appearance;
-}
 
-plugin:edit
-{
-    background-color:"SKIN(270501603 8582)";
+    nav-index: appearance;
 }
 
 trigger#hs_popup_open_hold:edit
--- a/idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4.confml	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4.confml	Wed Sep 15 12:00:00 2010 +0300
@@ -1,6 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <configuration name="Homescreen 2" version="1" xmlns="http://www.s60.com/xml/confml/2" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xs="http://www.w3.org/2001/XMLSchema">
   <feature name="Homescreen 2 widgets" ref="HomescreenPlugins_2">
+    <setting ref="SupportQhd" name="Qhd Support" type="boolean">
+      <desc>The Qhd touch is a supported display type of the xuikon homescreen</desc>
+    </setting>
+    <setting ref="SupportVga" name="Vga Support" type="boolean">
+      <desc>The Vga touch is a supported display type of the xuikon homescreen</desc>
+    </setting>
     <setting name="Max Widgets" ref="MaxWidgets" type="string">
       <desc>Maximum widget amount in Homescreen 2 page. Customizable</desc>
     </setting>
@@ -26,7 +32,6 @@
       <desc>Widgets in the Homescreen 2</desc>
     <setting name="Widget" ref="Uid" type="string">
       <desc>Widget name</desc>
-      <!--<option map="DFSFeatures/HomescreenWidgets" />-->
       <option name="Empty" value="0x2001f47f" />
       <option name="PhoneSetup" value="0x20021195" />
       <option name="ContactsBar" value="0x20022eba" />
@@ -248,6 +253,8 @@
   </feature>
 <data>
     <HomescreenPlugins_2>
+      <SupportQhd>true</SupportQhd>
+      <SupportVga>true</SupportVga>
       <MaxWidgets>6</MaxWidgets>
     <UseEmptyWidgets>true</UseEmptyWidgets>
     <ItemIdEmptyWidgets>hs_qhd_tch_view</ItemIdEmptyWidgets>
--- a/idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4.gcfml	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4.gcfml	Wed Sep 15 12:00:00 2010 +0300
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<container xmlns="http://www.symbianfoundation.org/xml/implml/1">
+<container xmlns="http://www.symbianfoundation.org/xml/implml/1" condition="${HomescreenPlugins_2.SupportQhd}">
 	<tag name="target" value="core"/>
 	<tag name="target" value="rofs2"/>
 	<tag name="target" value="rofs3"/>
Binary file idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4manifest.confml has changed
--- a/idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4manifest.gcfml	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4manifest.gcfml	Wed Sep 15 12:00:00 2010 +0300
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<container xmlns="http://www.symbianfoundation.org/xml/implml/1">
+<container xmlns="http://www.symbianfoundation.org/xml/implml/1" condition="${Homescreen2manifest.SupportQhd}">
 	<tag name="target" value="core"/>
 	<tag name="target" value="rofs2"/>
 	<tag name="target" value="rofs3"/>
Binary file idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4xuikon.confml has changed
--- a/idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4xuikon.gcfml	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4xuikon.gcfml	Wed Sep 15 12:00:00 2010 +0300
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<container xmlns="http://www.symbianfoundation.org/xml/implml/1">
+<container xmlns="http://www.symbianfoundation.org/xml/implml/1" condition="${Homescreen2XuikonFolder.SupportQhd}">
 	<tag name="target" value="core"/>
 	<tag name="target" value="rofs2"/>
 	<tag name="target" value="rofs3"/>
--- a/idlehomescreen/data/qhd_tch/view_200286e4/xuikon/00/View.css	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_200286e4/xuikon/00/View.css	Wed Sep 15 12:00:00 2010 +0300
@@ -13,6 +13,8 @@
     direction: ltr;
     block-progression: rl;
     padding-top: 3px;
+    padding-left: 17px;
+    padding-right: 17px;
 }
 
 plugin.plugins
@@ -29,11 +31,6 @@
     nav-index: appearance;
 }
 
-plugin:edit
-{
-    background-color:"SKIN(270501603 8582)";
-}
-
 trigger#hs_popup_open_hold:edit
 {
     display: none;
--- a/idlehomescreen/data/qhd_tch/view_200286e4/xuikon/37/View.css	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_200286e4/xuikon/37/View.css	Wed Sep 15 12:00:00 2010 +0300
@@ -13,6 +13,8 @@
     direction: rtl;
     block-progression: rl;
     padding-top: 3px;
+    padding-left: 17px;
+    padding-right: 17px;
 }
 
 plugin.plugins
@@ -23,13 +25,10 @@
     margin-bottom: 4px;
     margin-right: 5px;
     margin-left: 5px;
+ 
     _s60-longtap: true;
-    nav-index: appearance;
-}
 
-plugin:edit
-{
-    background-color:"SKIN(270501603 8582)";
+    nav-index: appearance;
 }
 
 trigger#hs_popup_open_hold:edit
--- a/idlehomescreen/data/qhd_tch/view_200286e4/xuikon/50/View.css	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_200286e4/xuikon/50/View.css	Wed Sep 15 12:00:00 2010 +0300
@@ -13,6 +13,8 @@
     direction: rtl;
     block-progression: rl;
     padding-top: 3px;
+    padding-left: 17px;
+    padding-right: 17px;
 }
 
 plugin.plugins
@@ -23,13 +25,10 @@
     margin-bottom: 4px;
     margin-right: 5px;
     margin-left: 5px;
+ 
     _s60-longtap: true;
-    nav-index: appearance;
-}
 
-plugin:edit
-{
-    background-color:"SKIN(270501603 8582)";
+    nav-index: appearance;
 }
 
 trigger#hs_popup_open_hold:edit
--- a/idlehomescreen/data/qhd_tch/view_200286e4/xuikon/57/View.css	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_200286e4/xuikon/57/View.css	Wed Sep 15 12:00:00 2010 +0300
@@ -13,6 +13,8 @@
     direction: rtl;
     block-progression: rl;
     padding-top: 3px;
+    padding-left: 17px;
+    padding-right: 17px;
 }
 
 plugin.plugins
@@ -23,13 +25,10 @@
     margin-bottom: 4px;
     margin-right: 5px;
     margin-left: 5px;
+ 
     _s60-longtap: true;
-    nav-index: appearance;
-}
 
-plugin:edit
-{
-    background-color:"SKIN(270501603 8582)";
+    nav-index: appearance;
 }
 
 trigger#hs_popup_open_hold:edit
--- a/idlehomescreen/data/qhd_tch/view_200286e4/xuikon/94/View.css	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_200286e4/xuikon/94/View.css	Wed Sep 15 12:00:00 2010 +0300
@@ -13,6 +13,8 @@
     direction: rtl;
     block-progression: rl;
     padding-top: 3px;
+    padding-left: 17px;
+    padding-right: 17px;
 }
 
 plugin.plugins
@@ -23,13 +25,10 @@
     margin-bottom: 4px;
     margin-right: 5px;
     margin-left: 5px;
+ 
     _s60-longtap: true;
-    nav-index: appearance;
-}
 
-plugin:edit
-{
-    background-color:"SKIN(270501603 8582)";
+    nav-index: appearance;
 }
 
 trigger#hs_popup_open_hold:edit
--- a/idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5.confml	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5.confml	Wed Sep 15 12:00:00 2010 +0300
@@ -1,6 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <configuration name="Homescreen 3" version="1" xmlns="http://www.s60.com/xml/confml/2" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xs="http://www.w3.org/2001/XMLSchema">
   <feature name="Homescreen 3 widgets" ref="HomescreenPlugins_3">
+    <setting ref="SupportQhd" name="Qhd Support" type="boolean">
+      <desc>The Qhd touch is a supported display type of the xuikon homescreen</desc>
+    </setting>
+    <setting ref="SupportVga" name="Vga Support" type="boolean">
+      <desc>The Vga touch is a supported display type of the xuikon homescreen</desc>
+    </setting>
     <setting name="Max Widgets" ref="MaxWidgets" type="string">
       <desc>Maximum widget amount in Homescreen 3 page. Customizable</desc>
     </setting>
@@ -26,7 +32,6 @@
       <desc>Widgets in the Homescreen 3</desc>
     <setting name="Widget" ref="Uid" type="string">
       <desc>Widget name</desc>
-      <!--<option map="DFSFeatures/HomescreenWidgets" />-->
       <option name="Empty" value="0x2001f47f" />
       <option name="PhoneSetup" value="0x20021195" />
       <option name="ContactsBar" value="0x20022eba" />
@@ -248,6 +253,8 @@
   </feature>
 <data>
     <HomescreenPlugins_3>
+      <SupportQhd>true</SupportQhd>
+      <SupportVga>true</SupportVga>
       <MaxWidgets>6</MaxWidgets>
     <UseEmptyWidgets>true</UseEmptyWidgets>
     <ItemIdEmptyWidgets>hs_qhd_tch_view</ItemIdEmptyWidgets>
--- a/idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5.gcfml	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5.gcfml	Wed Sep 15 12:00:00 2010 +0300
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<container xmlns="http://www.symbianfoundation.org/xml/implml/1">
+<container xmlns="http://www.symbianfoundation.org/xml/implml/1" condition="${HomescreenPlugins_3.SupportQhd}">
 	<tag name="target" value="core"/>
 	<tag name="target" value="rofs2"/>
 	<tag name="target" value="rofs3"/>
Binary file idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5manifest.confml has changed
--- a/idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5manifest.gcfml	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5manifest.gcfml	Wed Sep 15 12:00:00 2010 +0300
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<container xmlns="http://www.symbianfoundation.org/xml/implml/1">
+<container xmlns="http://www.symbianfoundation.org/xml/implml/1" condition="${Homescreen3manifest.SupportQhd}">
 	<tag name="target" value="core"/>
 	<tag name="target" value="rofs2"/>
 	<tag name="target" value="rofs3"/>
Binary file idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5xuikon.confml has changed
--- a/idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5xuikon.gcfml	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5xuikon.gcfml	Wed Sep 15 12:00:00 2010 +0300
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<container xmlns="http://www.symbianfoundation.org/xml/implml/1">
+<container xmlns="http://www.symbianfoundation.org/xml/implml/1" condition="${Homescreen3XuikonFolder.SupportQhd}">
 	<tag name="target" value="core"/>
 	<tag name="target" value="rofs2"/>
 	<tag name="target" value="rofs3"/>
--- a/idlehomescreen/data/qhd_tch/view_200286e5/xuikon/00/View.css	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_200286e5/xuikon/00/View.css	Wed Sep 15 12:00:00 2010 +0300
@@ -13,6 +13,8 @@
     direction: ltr;
     block-progression: rl;
     padding-top: 3px;
+    padding-left: 17px;
+    padding-right: 17px;
 }
 
 plugin.plugins
@@ -29,11 +31,6 @@
     nav-index: appearance;
 }
 
-plugin:edit
-{
-    background-color:"SKIN(270501603 8582)";
-}
-
 trigger#hs_popup_open_hold:edit
 {
     display: none;
--- a/idlehomescreen/data/qhd_tch/view_200286e5/xuikon/37/View.css	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_200286e5/xuikon/37/View.css	Wed Sep 15 12:00:00 2010 +0300
@@ -13,6 +13,8 @@
     direction: rtl;
     block-progression: rl;
     padding-top: 3px;
+    padding-left: 17px;
+    padding-right: 17px;
 }
 
 plugin.plugins
@@ -23,13 +25,10 @@
     margin-bottom: 4px;
     margin-right: 5px;
     margin-left: 5px;
+ 
     _s60-longtap: true;
-    nav-index: appearance;
-}
 
-plugin:edit
-{
-    background-color:"SKIN(270501603 8582)";
+    nav-index: appearance;
 }
 
 trigger#hs_popup_open_hold:edit
--- a/idlehomescreen/data/qhd_tch/view_200286e5/xuikon/50/View.css	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_200286e5/xuikon/50/View.css	Wed Sep 15 12:00:00 2010 +0300
@@ -13,6 +13,8 @@
     direction: rtl;
     block-progression: rl;
     padding-top: 3px;
+    padding-left: 17px;
+    padding-right: 17px;
 }
 
 plugin.plugins
@@ -23,13 +25,10 @@
     margin-bottom: 4px;
     margin-right: 5px;
     margin-left: 5px;
+ 
     _s60-longtap: true;
-    nav-index: appearance;
-}
 
-plugin:edit
-{
-    background-color:"SKIN(270501603 8582)";
+    nav-index: appearance;
 }
 
 trigger#hs_popup_open_hold:edit
--- a/idlehomescreen/data/qhd_tch/view_200286e5/xuikon/57/View.css	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_200286e5/xuikon/57/View.css	Wed Sep 15 12:00:00 2010 +0300
@@ -13,6 +13,8 @@
     direction: rtl;
     block-progression: rl;
     padding-top: 3px;
+    padding-left: 17px;
+    padding-right: 17px;
 }
 
 plugin.plugins
@@ -23,13 +25,10 @@
     margin-bottom: 4px;
     margin-right: 5px;
     margin-left: 5px;
+ 
     _s60-longtap: true;
-    nav-index: appearance;
-}
 
-plugin:edit
-{
-    background-color:"SKIN(270501603 8582)";
+    nav-index: appearance;
 }
 
 trigger#hs_popup_open_hold:edit
--- a/idlehomescreen/data/qhd_tch/view_200286e5/xuikon/94/View.css	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_200286e5/xuikon/94/View.css	Wed Sep 15 12:00:00 2010 +0300
@@ -13,6 +13,8 @@
     direction: rtl;
     block-progression: rl;
     padding-top: 3px;
+    padding-left: 17px;
+    padding-right: 17px;
 }
 
 plugin.plugins
@@ -23,13 +25,10 @@
     margin-bottom: 4px;
     margin-right: 5px;
     margin-left: 5px;
+ 
     _s60-longtap: true;
-    nav-index: appearance;
-}
 
-plugin:edit
-{
-    background-color:"SKIN(270501603 8582)";
+    nav-index: appearance;
 }
 
 trigger#hs_popup_open_hold:edit
--- a/idlehomescreen/data/vga_tch/clockdate_200286e6/xuikon/00/clockdate.css	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/vga_tch/clockdate_200286e6/xuikon/00/clockdate.css	Wed Sep 15 12:00:00 2010 +0300
@@ -4,7 +4,6 @@
     height: 115px;
     _s60-font-size: 48px;
     color: "SKIN(268458534 13056 74)";
-    background-color: "SKIN(268458534 9916)";
     nav-index: appearance;
 }
 
@@ -16,6 +15,7 @@
 	width: 102px;
 	height: 59px;
 	text-align: right;
+	font-family: EAknLogicalFontPrimaryFont;
 }
 
 ampm
@@ -27,6 +27,7 @@
 	left: 124px;
 	text-align: left;
 	_s60-font-size: 28px;
+	font-family: EAknLogicalFontSecondaryFont;
 }
 
 face24
@@ -35,6 +36,7 @@
 	top: 14px;
 	width: auto;
 	height: 59px;
+	font-family: EAknLogicalFontPrimaryFont;
 }
 
 date
@@ -44,14 +46,26 @@
 	width: auto;
 	height: 28px;
 	_s60-font-size: 26px;
+	font-family: EAknLogicalFontSecondaryFont;
+}
+
+day
+{
+    position: absolute;
+    top: 44px;
+    left: 117px;
+    width: 32px;
+    height: 28px;
+    _s60-font-size: 28px;
+    font-family: EAknLogicalFontSecondaryFont;
 }
 
 face
 {
-	width: auto;
-	height: auto;
-
-	margin-left: 6px;
-	margin-right: 6px;
-	margin-bottom: 5px;
+    margin-left: 4px;
+    margin-right: 4px;
+    margin-top: 4px;
+    margin-bottom: 4px;
+    
+    face-adjustment-value: 20;
 }
--- a/idlehomescreen/data/vga_tch/clockdate_200286e6/xuikon/00/clockdate.xml	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/vga_tch/clockdate_200286e6/xuikon/00/clockdate.xml	Wed Sep 15 12:00:00 2010 +0300
@@ -10,6 +10,7 @@
 			</digital>
 			<analog>
 				<face/>
+				<day/>
 			</analog>
 			<actions>
 				<action>
--- a/idlehomescreen/data/vga_tch/desktop_20018eee/hsps/00/manifest.dat	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/vga_tch/desktop_20018eee/hsps/00/manifest.dat	Wed Sep 15 12:00:00 2010 +0300
@@ -23,7 +23,7 @@
     <filexml>widgetconfiguration.xml</filexml>
         
     <!-- Locale independent/common resources -->
-    
+    <multiinstance>unlimited</multiinstance>
     
     <!-- Locale specific resources -->
     <localization>
--- a/idlehomescreen/data/vga_tch/group/bld.inf	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/vga_tch/group/bld.inf	Wed Sep 15 12:00:00 2010 +0300
@@ -30,6 +30,11 @@
 #include "../view3_200286eb/group/bld.inf"
 #include "../templateview_200286ec/group/bld.inf"
 #include "../wideimage_10009dff/group/bld.inf"
+#include "../onerow_200315c2/group/bld.inf"
+#include "../tworows_200315c3/group/bld.inf"
+#include "../threerows_200315c4/group/bld.inf"
+#include "../threetextrows_200315c5/group/bld.inf"
+#include "../posterwideimage_200315c6/group/bld.inf"
 
 PRJ_PLATFORMS
 DEFAULT
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/onerow_200315c2/group/bld.inf	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,67 @@
+/*
+* Copyright (c) 2002-2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* The information required for building  
+*
+*/
+
+#include <platform_paths.hrh>
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_EXPORTS
+// Support for productization and Carbide.Ui customization
+//********************************************************
+../hsps/00/manifest.dat /epoc32/data/Z/resource/homescreen/onerow_200315c2/hsps/manifest.dat
+../hsps/00/widgetconfiguration.xml /epoc32/data/Z/resource/homescreen/onerow_200315c2/hsps/widgetconfiguration.xml
+../xuikon/00/onerow.dat /epoc32/data/Z/resource/homescreen/onerow_200315c2/xuikon/onerow_200315c2.dat
+../xuikon/00/onerow.css /epoc32/data/Z/resource/homescreen/onerow_200315c2/xuikon/onerow.css
+../xuikon/00/onerow.xml /epoc32/data/Z/resource/homescreen/onerow_200315c2/xuikon/onerow.xml
+
+// Arabic languages
+//*****************
+../xuikon/37/onerow.css /epoc32/data/Z/resource/homescreen/onerow_200315c2/xuikon/37/onerow.css
+../xuikon/50/onerow.css /epoc32/data/Z/resource/homescreen/onerow_200315c2/xuikon/50/onerow.css
+../xuikon/57/onerow.css /epoc32/data/Z/resource/homescreen/onerow_200315c2/xuikon/57/onerow.css
+../xuikon/94/onerow.css /epoc32/data/Z/resource/homescreen/onerow_200315c2/xuikon/94/onerow.css
+
+
+// Support for S60 builds
+//***********************
+// export iby files
+../rom/onerow_resources.iby LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(onerow_200315c2_resources.iby)
+../rom/onerow_customer.iby CUSTOMER_APP_LAYER_IBY_EXPORT_PATH(onerow_200315c2_customer.iby)
+../rom/onerow_variant.iby CUSTOMER_APP_LAYER_IBY_EXPORT_PATH(onerow_200315c2_variant.iby)
+../rom/onerow.iby CORE_APP_LAYER_IBY_EXPORT_PATH(onerow_200315c2.iby)
+
+// Dtd-localization
+//*****************
+PRJ_EXTENSIONS
+START EXTENSION tools/dtd
+OPTION SWITCH_LOC_FILE_NAME onerow_200315c2
+OPTION DTD_TYPE widget
+OPTION LOC_FOLDERS yes
+END
+
+
+PRJ_MMPFILES
+
+PRJ_TESTMMPFILES
+
+//  End of File  
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/onerow_200315c2/hsps/00/manifest.dat	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,63 @@
+<?xml version="1.0"?>
+
+<package version="2.0">
+
+
+
+    <family>vga_tch</family>
+
+
+
+    <type>template</type>
+
+
+
+    <!-- interface uid -->
+
+	<interfaceuid>0x2001f48a</interfaceuid>
+
+
+
+	<!-- vendor uid  -->
+
+	<provideruid>0x101fb657</provideruid>
+
+
+
+	<!-- uid -->
+
+	<configurationuid>0x200315c2</configurationuid>
+
+	
+
+	<!-- description -->
+
+	<fullname>onerow</fullname>
+
+	<shortname>oner</shortname>
+
+	<version>1.0</version>
+
+
+
+	<!-- configuration -->
+
+	<filexml>widgetconfiguration.xml</filexml>
+
+
+
+  <!-- Locale independent/common resources -->
+
+
+
+  <!-- Locale specific resources -->
+
+	<localization>
+
+		<fileresource>onerow.o0000</fileresource>	
+
+	</localization>
+
+
+
+</package>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/onerow_200315c2/hsps/00/widgetconfiguration.xml	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,34 @@
+<configuration>
+    <control>
+        <settings>
+          <item id="onerow_plugin" name="ContentSource">
+            <property  name="name" value=""/>
+          </item>
+          <!--Def value "Test_Publisher"-->
+          <item id="pub_id" name="publisher">
+            <property name="value" value=""/> 
+          </item>
+          
+          <!-- Template designer choice -->
+          <item id="prop1" name="contentdata">
+            <property  name="class" value="image1"/>
+          </item>
+					<!-- Template designer choice -->
+          <item id="p1trigger" name="trigger">  
+            <property  name="name" value="image1"/> 
+          </item>
+          
+          <!-- next content -->
+          <!-- Template designer choice -->
+          <item id="prop2" name="contentdata">
+            <property  name="class" value="text1"/>
+          </item>
+					<!-- Template designer choice -->
+          <item id="p2trigger" name="trigger"> 
+            <property  name="name" value="text1"/> 
+          </item>
+
+              
+        </settings>
+    </control>
+</configuration>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/onerow_200315c2/rom/onerow.iby	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,29 @@
+/*
+* Copyright (c) 2005-2007 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* Onerow widget HSPS-plugin IBY file. 
+*
+*/
+
+#ifndef __ONEROW_200315C2_IBY__
+#define __ONEROW_200315C2_IBY__
+
+#if defined(FF_LAYOUT_480_640_TOUCH_VGA4) || defined(FF_LAYOUT_640_480_TOUCH_VGA4)
+
+// Enabled by DTD-localization tools
+data=ZPRIVATE\200159c0\install\onerow_200315c2\hsps\00\manifest.dat \private\200159c0\install\onerow_200315c2\hsps\00\manifest.dat
+
+#endif // FF_LAYOUT_480_640_TOUCH_VGA4 || FF_LAYOUT_640_480_TOUCH_VGA4
+
+#endif // __ONEROW_200315C2_IBY__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/onerow_200315c2/rom/onerow_customer.iby	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,29 @@
+/*
+* Copyright (c) 2005-2007 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* Onerow widget HSPS-plugin language specific IBY file. 
+*
+*/
+
+#ifndef __ONEROW_200315C2_CUSTOMER_IBY__
+#define __ONEROW_200315C2_CUSTOMER_IBY__
+
+#if defined(FF_LAYOUT_480_640_TOUCH_VGA4) || defined(FF_LAYOUT_640_480_TOUCH_VGA4)
+
+// Enabled by DTD-localization tools, language specific
+data=ZPRIVATE\200159c0\install\onerow_200315c2\xuikon\00\onerow.o0000 \private\200159c0\install\onerow_200315c2\xuikon\00\onerow.o0000
+
+#endif // FF_LAYOUT_480_640_TOUCH_VGA4 || FF_LAYOUT_640_480_TOUCH_VGA4
+
+#endif // __ONEROW_200315C2_CUSTOMER_IBY__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/onerow_200315c2/rom/onerow_resources.iby	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,40 @@
+/*
+* Copyright (c) 2005-2007 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  
+* Onerow widget HSPS-plugin language specific IBY file.
+*
+*/
+
+#ifndef __ONEROW_200315C2_RESOURCES_IBY__
+#define __ONEROW_200315C2_RESOURCES_IBY__
+
+#if defined(FF_LAYOUT_480_640_TOUCH_VGA4) || defined(FF_LAYOUT_640_480_TOUCH_VGA4)
+
+// Enabled by DTD-localization tools, language specific
+#if defined (__LOCALES_37_IBY__)
+data=ZPRIVATE\200159c0\install\onerow_200315c2\xuikon\37\onerow.o0037 \private\200159c0\install\onerow_200315c2\xuikon\37\onerow.o0037
+#endif
+#if defined  (__LOCALES_50_IBY__)
+data=ZPRIVATE\200159c0\install\onerow_200315c2\xuikon\50\onerow.o0050 \private\200159c0\install\onerow_200315c2\xuikon\50\onerow.o0050
+#endif
+#if defined  (__LOCALES_57_IBY__)
+data=ZPRIVATE\200159c0\install\onerow_200315c2\xuikon\57\onerow.o0057 \private\200159c0\install\onerow_200315c2\xuikon\57\onerow.o0057
+#endif
+#if defined  (__LOCALES_94_IBY__)
+data=ZPRIVATE\200159c0\install\onerow_200315c2\xuikon\94\onerow.o0094 \private\200159c0\install\onerow_200315c2\xuikon\94\onerow.o0094
+#endif
+
+#endif // FF_LAYOUT_480_640_TOUCH_VGA4 || FF_LAYOUT_640_480_TOUCH_VGA4
+
+#endif // __ONEROW_200315C2_RESOURCES_IBY__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/onerow_200315c2/rom/onerow_variant.iby	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,29 @@
+/*
+* Copyright (c) 2005-2007 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  
+* Onerow widget HSPS-plugin variant specific IBY file.
+*
+*/
+
+#ifndef __ONEROW_200315C2_VARIANT_IBY__
+#define __ONEROW_200315C2_VARIANT_IBY__
+
+#if defined(FF_LAYOUT_480_640_TOUCH_VGA4) || defined(FF_LAYOUT_640_480_TOUCH_VGA4)
+
+// Enabled by variation tools, variant specific
+data=ZPRIVATE\200159c0\install\onerow_200315c2\hsps\00\widgetconfiguration.xml \private\200159c0\install\onerow_200315c2\hsps\00\widgetconfiguration.xml
+
+#endif // FF_LAYOUT_480_640_TOUCH_VGA4 || FF_LAYOUT_640_480_TOUCH_VGA4
+
+#endif  // __ONEROW_200315C2_VARIANT_IBY__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/onerow_200315c2/xuikon/00/onerow.css	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,40 @@
+widget#onerow_template
+{
+    block-progression:rl;
+    
+}
+
+image#image_container
+{
+    height: 95px;
+    width: 95px;
+    margin-top:5px;
+    margin-bottom:5px;
+    margin-left:5px;
+    margin-right:4px;
+    padding-top:5px;
+    padding-bottom:5px;
+    padding-left:5px;
+    padding-right:5px;
+    nav-index:appearance;
+    _s60-aspect-ratio:preserve;
+}
+
+text
+{
+    font-size:3.5u;
+    margin-left:3px;
+    margin-right:5px;
+    margin-top:5px;
+    margin-bottom:5px;
+    padding-top:5px;
+    padding-bottom:5px;
+    padding-left:5px;
+    padding-right:5px;
+    text-align:center;
+    text-overflow-mode: wrap;
+    max-line-amount: 2;
+    font-family: EAknLogicalFontSecondaryFont;
+    color: "SKIN(268458534 13056 74)";
+    nav-index:appearance;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/onerow_200315c2/xuikon/00/onerow.dat	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<data>
+    <AppUid>2001CB4F</AppUid>
+    <Provideruid>101FB657</Provideruid>
+    <ThemeUid>110012F6</ThemeUid>
+    <ThemeFullName>onerow</ThemeFullName>
+    <ThemeShortName>onerow</ThemeShortName>
+    <ThemeVersion>1.0</ThemeVersion>
+    <FileXML>onerow.xml</FileXML>
+    <FileCSS>onerow.css</FileCSS>
+    
+</data>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/onerow_200315c2/xuikon/00/onerow.xml	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- <!DOCTYPE xmluiml SYSTEM "AI3_Demo.dtd"> -->
+<xmluiml xmlns="http://www.series60.com/xml/xmluiml/1" version="1.0">
+
+    <widget id="onerow_template">
+        
+        <!-- Data plugin in this widget -->
+        <contentsource id="onerow_plugin" name="" value="0x20019594" />
+        
+        <configuration name="service" value="Service.ContentPublishing"/>
+        <configuration name="interface" value="IContentPublishing"/>
+        <configuration name="command" value="GetList"/>
+        <configuration id="pub_id" name="publisher" value=""/>
+
+        <image id="image_container" focusable="true" _s60-initial-focus="1">
+            <!-- Template designer choice -->
+            <actions> 
+                <action>
+                    <trigger name="activate"/>
+                    <event id="p1trigger" name="" />
+                </action>
+            </actions>
+            <configuration name="content_type" value="image1"/>
+            <property id="prop1" class=""/>
+        </image>
+        
+        <box id="text_container">
+            <text id="row1" focusable="true">
+            <!-- Template designer choice -->
+            <actions>
+                <action>
+                    <trigger name="activate"/>
+                    <event id="p2trigger" name="" />
+                </action>
+              </actions>
+              <configuration name="content_type" value="text1"/>  
+              <property id="prop2" class=""/>
+            </text>
+         </box>
+         <menuextension>
+            <!-- dynmenuitems are mapped to HS view.xml menu based on target attribute.
+                 HS view.xml provides localisation for predined items: "settings" and "refresh". -->                
+            <dynmenuitem type="widgetsettings" target="hs_widget_menuitem_settings">
+                <actions>
+                    <action>
+                        <trigger name="activate"/>
+                        <event name="menuitem(widgetsettings)" destination="onerow_plugin"/>  
+                    </action>
+                </actions>
+            </dynmenuitem>                    
+            <dynmenuitem type="refresh" target="hs_widget_menuitem_refresh">
+                <actions>
+                    <action>
+                        <trigger name="activate"/>
+                        <event name="menuitem(refresh)" destination="onerow_plugin"/>  
+                    </action>
+                </actions>
+            </dynmenuitem>        
+        </menuextension>
+    </widget>
+</xmluiml>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/onerow_200315c2/xuikon/37/onerow.css	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,41 @@
+widget#onerow_template
+{
+    direction: rtl;
+    block-progression:rl;
+}
+
+image#image_container
+{
+    height: 95px;
+    width: 95px;
+    margin-top:5px;
+    margin-bottom:5px;
+    margin-left:5px;
+    margin-right:4px;
+    padding-top:5px;
+    padding-bottom:5px;
+    padding-left:5px;
+    padding-right:5px;
+    nav-index:appearance;
+    _s60-aspect-ratio:preserve;
+}
+
+text
+{
+    font-size:3.5u;
+    margin-left:3px;
+    margin-right:5px;
+    margin-top:5px;
+    margin-bottom:5px;
+    padding-top:5px;
+    padding-bottom:5px;
+    padding-left:5px;
+    padding-right:5px;
+    direction: ltr;
+    text-align:center;
+    text-overflow-mode: wrap;
+    max-line-amount: 2;
+    font-family: EAknLogicalFontSecondaryFont;
+    color: "SKIN(268458534 13056 74)";
+    nav-index:appearance;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/onerow_200315c2/xuikon/50/onerow.css	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,41 @@
+widget#onerow_template
+{
+    direction: rtl;
+    block-progression:rl;
+}
+
+image#image_container
+{
+    height: 95px;
+    width: 95px;
+    margin-top:5px;
+    margin-bottom:5px;
+    margin-left:5px;
+    margin-right:4px;
+    padding-top:5px;
+    padding-bottom:5px;
+    padding-left:5px;
+    padding-right:5px;
+    nav-index:appearance;
+    _s60-aspect-ratio:preserve;
+}
+
+text
+{
+    font-size:3.5u;
+    margin-left:3px;
+    margin-right:5px;
+    margin-top:5px;
+    margin-bottom:5px;
+    padding-top:5px;
+    padding-bottom:5px;
+    padding-left:5px;
+    padding-right:5px;
+    direction: ltr;
+    text-align:center;
+    text-overflow-mode: wrap;
+    max-line-amount: 2;
+    font-family: EAknLogicalFontSecondaryFont;
+    color: "SKIN(268458534 13056 74)";
+    nav-index:appearance;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/onerow_200315c2/xuikon/57/onerow.css	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,41 @@
+widget#onerow_template
+{
+    direction: rtl;
+    block-progression:rl;
+}
+
+image#image_container
+{
+    height: 95px;
+    width: 95px;
+    margin-top:5px;
+    margin-bottom:5px;
+    margin-left:5px;
+    margin-right:4px;
+    padding-top:5px;
+    padding-bottom:5px;
+    padding-left:5px;
+    padding-right:5px;
+    nav-index:appearance;
+    _s60-aspect-ratio:preserve;
+}
+
+text
+{
+    font-size:3.5u;
+    margin-left:3px;
+    margin-right:5px;
+    margin-top:5px;
+    margin-bottom:5px;
+    padding-top:5px;
+    padding-bottom:5px;
+    padding-left:5px;
+    padding-right:5px;
+    direction: ltr;
+    text-align:center;
+    text-overflow-mode: wrap;
+    max-line-amount: 2;
+    font-family: EAknLogicalFontSecondaryFont;
+    color: "SKIN(268458534 13056 74)";
+    nav-index:appearance;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/onerow_200315c2/xuikon/94/onerow.css	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,41 @@
+widget#onerow_template
+{
+    direction: rtl;
+    block-progression:rl;
+}
+
+image#image_container
+{
+    height: 95px;
+    width: 95px;
+    margin-top:5px;
+    margin-bottom:5px;
+    margin-left:5px;
+    margin-right:4px;
+    padding-top:5px;
+    padding-bottom:5px;
+    padding-left:5px;
+    padding-right:5px;
+    nav-index:appearance;
+    _s60-aspect-ratio:preserve;
+}
+
+text
+{
+    font-size:3.5u;
+    margin-left:3px;
+    margin-right:5px;
+    margin-top:5px;
+    margin-bottom:5px;
+    padding-top:5px;
+    padding-bottom:5px;
+    padding-left:5px;
+    padding-right:5px;
+    direction: ltr;
+    text-align:center;
+    text-overflow-mode: wrap;
+    max-line-amount: 2;
+    font-family: EAknLogicalFontSecondaryFont;
+    color: "SKIN(268458534 13056 74)";
+    nav-index:appearance;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/posterwideimage_200315c6/group/bld.inf	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,64 @@
+/*
+* Copyright (c) 2002-2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  
+* The information required for building
+*
+*/
+
+#include <platform_paths.hrh>
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_EXPORTS
+// Support for productization and Carbide.Ui customization
+//********************************************************
+../hsps/00/manifest.dat /epoc32/data/Z/resource/homescreen/posterwideimage_200315c6/hsps/manifest.dat
+../hsps/00/widgetconfiguration.xml /epoc32/data/Z/resource/homescreen/posterwideimage_200315c6/hsps/widgetconfiguration.xml
+../xuikon/00/posterwideimage.dat /epoc32/data/Z/resource/homescreen/posterwideimage_200315c6/xuikon/posterwideimage_200315c6.dat
+../xuikon/00/posterwideimage.css /epoc32/data/Z/resource/homescreen/posterwideimage_200315c6/xuikon/posterwideimage.css
+../xuikon/00/posterwideimage.xml /epoc32/data/Z/resource/homescreen/posterwideimage_200315c6/xuikon/posterwideimage.xml
+../xuikon/00/wideimage.dtd /epoc32/data/Z/resource/homescreen/posterwideimage_200315c6/xuikon/wideimage.dtd
+
+// Support for S60 builds
+//***********************
+../rom/posterwideimage.iby CORE_APP_LAYER_IBY_EXPORT_PATH(posterwideimage_200315c6.iby)
+../rom/posterwideimage_resources.iby LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(posterwideimage_200315c6_resources.iby)
+../rom/posterwideimage_customer.iby CUSTOMER_APP_LAYER_IBY_EXPORT_PATH(posterwideimage_200315c6_customer.iby)
+../rom/posterwideimage_variant.iby CUSTOMER_APP_LAYER_IBY_EXPORT_PATH(posterwideimage_200315c6_variant.iby)
+
+// Support for S60 localization
+//*****************************
+// export localizable loc files (engineering versions)
+../loc/wideimage.loc                      APP_LAYER_LOC_EXPORT_PATH(wideimage.loc)
+
+// Dtd-localization
+//*****************
+PRJ_EXTENSIONS
+START EXTENSION tools/dtd
+OPTION SWITCH_LOC_FILE_NAME posterwideimage_200315c6
+OPTION DTD_TYPE widget
+OPTION LOC_FOLDERS yes
+END
+
+
+PRJ_MMPFILES
+
+PRJ_TESTMMPFILES
+
+//  End of File  
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/posterwideimage_200315c6/hsps/00/manifest.dat	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,55 @@
+<?xml version="1.0"?>
+
+<package version="2.0">
+
+
+
+    <family>vga_tch</family>
+
+  
+
+    <type>template</type>
+
+
+
+    <!-- interface uid -->
+
+	<interfaceuid>0x2001f48a</interfaceuid>
+
+
+
+	<!-- vendor uid  -->
+
+	<provideruid>0x101fb657</provideruid>
+
+
+
+	<!-- uid -->
+
+	<configurationuid>0x200315c6</configurationuid>
+
+	
+
+	<!-- description -->
+
+	<fullname>posterwideimage</fullname>
+
+	<shortname>posterwide</shortname>
+
+	<version>1.0</version>
+
+
+
+	<!-- configuration -->
+
+	<filexml>widgetconfiguration.xml</filexml>
+
+
+
+  <!-- Locale specific resources -->
+<localization>
+  <fileresource>posterwideimage.o0000</fileresource>
+</localization>
+
+
+</package>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/posterwideimage_200315c6/hsps/00/widgetconfiguration.xml	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,21 @@
+<configuration>
+    <control>
+        <settings>
+          <item id="posterwideimage_plugin" name="ContentSource" >
+            <property  name="name" value=""/>
+          </item>
+          <!--Def value "Test_Publisher"-->
+          <item id="pub_id" name="publisher">
+            <property name="value" value=""/> 
+          </item>
+          <!-- Template designer choice -->
+          <item id="prop1" name="contentdata"  >
+            <property  name="class" value="image1"/>
+          </item>  
+          <!-- Template designer choice -->
+          <item id="p_trigger" name="pubtrigger" >   
+            <property  name="name" value="selected"/> 
+          </item>                    
+        </settings>
+    </control>
+</configuration>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/posterwideimage_200315c6/loc/wideimage.loc	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,22 @@
+/*
+* Copyright (c) 2005-2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Localization strings for PosterWideImage widget (Xuikon)
+*
+*/
+
+// d: Loading content
+// l: ai_gene_pane_1_t1/opt4
+// w: 
+// r: TB9.2
+#define qtn_ai_loading_content  "Loading content..."
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/posterwideimage_200315c6/rom/posterwideimage.iby	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,30 @@
+/*
+* Copyright (c) 2005-2007 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* PosterWideImage widget HSPS-plugin IBY file. 
+*
+*/
+
+#ifndef __POSTERWIDEIMAGE_200315C6_IBY__
+#define __POSTERWIDEIMAGE_200315C6_IBY__
+
+#if defined(FF_LAYOUT_480_640_TOUCH_VGA4) || defined(FF_LAYOUT_640_480_TOUCH_VGA4)          
+
+// Enabled by DTD-localization tools
+
+data=ZPRIVATE\200159c0\install\posterwideimage_200315c6\hsps\00\manifest.dat \private\200159c0\install\posterwideimage_200315c6\hsps\00\manifest.dat
+
+#endif // FF_LAYOUT_480_640_TOUCH_VGA4 || FF_LAYOUT_640_480_TOUCH_VGA4
+
+#endif // __POSTERWIDEIMAGE_200315C6_IBY__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/posterwideimage_200315c6/rom/posterwideimage_customer.iby	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,29 @@
+/*
+* Copyright (c) 2005-2007 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* Posterwideimage widget HSPS-plugin language specific IBY file. 
+*
+*/
+
+#ifndef __POSTERWIDEIMAGE_200315C6_CUSTOMER_IBY__
+#define __POSTERWIDEIMAGE_200315C6_CUSTOMER_IBY__
+
+#if defined(FF_LAYOUT_480_640_TOUCH_VGA4) || defined(FF_LAYOUT_640_480_TOUCH_VGA4)
+
+// Enabled by DTD-localization tools, language specific
+data=ZPRIVATE\200159c0\install\posterwideimage_200315c6\xuikon\00\posterwideimage.o0000 \private\200159c0\install\posterwideimage_200315c6\xuikon\00\posterwideimage.o0000
+
+#endif // FF_LAYOUT_480_640_TOUCH_VGA4 || FF_LAYOUT_640_480_TOUCH_VGA4
+
+#endif // __POSTERWIDEIMAGE_200315C6_CUSTOMER_IBY__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/posterwideimage_200315c6/rom/posterwideimage_resources.iby	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,29 @@
+/*
+* Copyright (c) 2005-2007 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  
+* Posterwideimage widget HSPS-plugin language specific IBY file.
+*
+*/
+
+#ifndef __POSTERWIDEIMAGE_200315C6_RESOURCES_IBY__
+#define __POSTERWIDEIMAGE_200315C6_RESOURCES_IBY__
+
+#if defined(FF_LAYOUT_480_640_TOUCH_VGA4) || defined(FF_LAYOUT_640_480_TOUCH_VGA4)
+
+// Enabled by DTD-localization tools, language specific
+data=ZPRIVATE\200159c0\install\posterwideimage_200315c6\xuikon\00\posterwideimage.o0000 \private\200159c0\install\posterwideimage_200315c6\xuikon\00\posterwideimage.o0000
+
+#endif // FF_LAYOUT_480_640_TOUCH_VGA4 || FF_LAYOUT_640_480_TOUCH_VGA4
+
+#endif // __POSTERWIDEIMAGE_200315C6_RESOURCES_IBY__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/posterwideimage_200315c6/rom/posterwideimage_variant.iby	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,29 @@
+/*
+* Copyright (c) 2005-2007 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* PosterWideImage widget HSPS-plugin variant specific IBY file.  
+*
+*/
+
+#ifndef __POSTERWIDEIMAGE_200315C6_VARIANT_IBY__
+#define __POSTERWIDEIMAGE_200315C6_VARIANT_IBY__
+
+#if defined(FF_LAYOUT_480_640_TOUCH_VGA4) || defined(FF_LAYOUT_640_480_TOUCH_VGA4)          
+
+// Enabled by variation tools, variant specific
+data=ZPRIVATE\200159c0\install\posterwideimage_200315c6\hsps\00\widgetconfiguration.xml \private\200159c0\install\posterwideimage_200315c6\hsps\00\widgetconfiguration.xml
+
+#endif // FF_LAYOUT_480_640_TOUCH_VGA4 || FF_LAYOUT_640_480_TOUCH_VGA4
+
+#endif  // __POSTERWIDEIMAGE_200315C6_VARIANT_IBY__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/posterwideimage_200315c6/xuikon/00/posterwideimage.css	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,25 @@
+widget#posterwideimage_template
+{
+    padding-top: 5px;
+    padding-left: 14px;
+    padding-right: 14px;
+    padding-bottom: 7px;
+    nav-index:appearance;
+    background-color: none;
+}
+
+image#wide_image
+{
+    display: none;
+}
+
+text#wide_text
+{
+    padding-left: 7px;
+    text-align: center;
+    font-family: EAknLogicalFontSecondaryFont;
+    font-size: 32px;
+    color: "SKIN(268458534 13056 74)";
+}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/posterwideimage_200315c6/xuikon/00/posterwideimage.dat	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<data>
+    <AppUid>2001CB4F</AppUid>
+    <Provideruid>101FB657</Provideruid>
+    <ThemeUid>110012F5</ThemeUid>
+    <ThemeFullName>posterwideimage</ThemeFullName>
+    <ThemeShortName>posterwideimage</ThemeShortName>
+    <ThemeVersion>1.0</ThemeVersion>
+    <FileXML>posterwideimage.xml</FileXML>
+    <FileCSS>posterwideimage.css</FileCSS>
+    <FileDTD>wideimage.dtd</FileDTD>
+</data>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/posterwideimage_200315c6/xuikon/00/posterwideimage.xml	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE xmluiml SYSTEM "wideimage.dtd">
+<xmluiml xmlns="http://www.series60.com/xml/xmluiml/1" version="1.0">
+
+    <widget id="posterwideimage_template" focusable="true" _s60-initial-focus="1">
+        <!-- Data plugin in this widget -->
+        <contentsource id="posterwideimage_plugin" name="" value="0x20019594" />
+        
+        <configuration name="service" value="Service.ContentPublishing"/>
+        <configuration name="interface" value="IContentPublishing"/>
+        <configuration name="command" value="GetList"/>
+        <configuration id="pub_id" name="publisher" value=""/>
+
+        <actions>
+          <action>
+            <trigger name="activate"/>
+            <event id="p_trigger" name="selected" />
+          </action>
+        </actions>
+        <box id="image_container" sizeaware="true" >
+        	<actions>
+            <action>
+              <trigger name="sizechanged"/>
+              <event name="ui/setelementsizetocps(image_container)"/>
+            </action>
+          </actions>
+          <image id="wide_image">
+            <configuration name="content_type" value="image1"/>
+            <property id="prop1" class=""/>
+            <property class="policy/emptyContent" name="wide_image" value="display: none;"/>
+            <property class="policy/Content" name="wide_image" value="display: block;"/>
+            <property class="policy/emptyContent" name="wide_text" value="display: block;"/>
+            <property class="policy/Content" name="wide_text" value="display: none;"/>
+          </image>
+          <text id="wide_text">&qtn_ai_loading_content;</text>
+        </box>
+        <menuextension>
+            <!-- dynmenuitems are mapped to HS view.xml menu based on target attribute.
+                 HS view.xml provides localisation for predined items: "settings" and "refresh". -->                
+            <dynmenuitem type="widgetsettings" target="hs_widget_menuitem_settings">
+                <actions>
+                    <action>
+                        <trigger name="activate"/>
+                        <event name="menuitem(widgetsettings)" destination="posterwideimage_plugin"/>  
+                    </action>
+                </actions>
+            </dynmenuitem>                    
+            <dynmenuitem type="refresh" target="hs_widget_menuitem_refresh">
+                <actions>
+                    <action>
+                        <trigger name="activate"/>
+                        <event name="menuitem(refresh)" destination="posterwideimage_plugin"/>  
+                    </action>
+                </actions>
+            </dynmenuitem>        
+        </menuextension>
+    </widget>
+</xmluiml>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/posterwideimage_200315c6/xuikon/00/wideimage.dtd	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+============================================================================
+<FileName: "wideimage.dtd">
+<PartOf  : "AI3">
+
+<FileDescription: "Localization strings for AI3">
+<FileVersion    : >
+
+<Copyright:
+"Copyright © 2005 Nokia Corporation.
+This material, including documentation and any related
+computer programs, is protected by copyright controlled by
+Nokia Corporation. All rights are reserved. Copying,
+including reproducing, storing,  adapting or translating, any
+or all of this material requires the prior written consent of
+Nokia Corporation. This material also contains confidential
+information which may not be disclosed to others without the
+prior written consent of Nokia Corporation.">
+============================================================================
+-->
+
+
+<!--
+qtn_ai_loading_content.attributes
+qtn_ai_loading_content.layout "ai_gene_pane_1_t1/opt4"
+qtn_ai_loading_content.release "5.0"
+qtn_ai_loading_content.description "Shows information text for slow loading widgets"
+qtn_ai_loading_content.parents "ai_gene_pane_1"
+-->
+<!ENTITY qtn_ai_loading_content  "Loading content...">
+
+
+
+
+
Binary file idlehomescreen/data/vga_tch/root_2001f48f/conf/root2001f48f.confml has changed
--- a/idlehomescreen/data/vga_tch/root_2001f48f/conf/root2001f48f.gcfml	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/vga_tch/root_2001f48f/conf/root2001f48f.gcfml	Wed Sep 15 12:00:00 2010 +0300
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<container xmlns="http://www.symbianfoundation.org/xml/implml/1">
+<container xmlns="http://www.symbianfoundation.org/xml/implml/1" condition="${VGA_HSViews.SupportVga}">
 	<tag name="target" value="core"/>
 	<tag name="target" value="rofs2"/>
 	<tag name="target" value="rofs3"/>
--- a/idlehomescreen/data/vga_tch/templateview_200286ec/group/bld.inf	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/vga_tch/templateview_200286ec/group/bld.inf	Wed Sep 15 12:00:00 2010 +0300
@@ -48,10 +48,10 @@
 //../loc/viewconfiguration.loc APP_LAYER_LOC_EXPORT_PATH(viewconfiguration.loc)
 //#endif // __VIEWCONFIGURATION_LOC__
 
-#ifndef __VIEW_LOC__
-#define __VIEW_LOC__
-../loc/view.loc APP_LAYER_LOC_EXPORT_PATH(view.loc)
-#endif // __VIEW_LOC__
+#ifndef __TEMPLATEVIEW_LOC__
+#define __TEMPLATEVIEW_LOC__
+../loc/templateview.loc APP_LAYER_LOC_EXPORT_PATH(templateview.loc)
+#endif // __TEMPLATEVIEW_LOC__
 
 // Support for S60 builds
 //***********************
--- a/idlehomescreen/data/vga_tch/templateview_200286ec/hsps/00/viewconfiguration.xml	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/vga_tch/templateview_200286ec/hsps/00/viewconfiguration.xml	Wed Sep 15 12:00:00 2010 +0300
@@ -13,7 +13,7 @@
         <plugins>
             <plugin uid="0x200286e6" bundle_id="0" template_id="0" locking_status="permanent"/>
             <plugin uid="0x200286e7" bundle_id="0" template_id="0" locking_status="permanent"/>
-            <plugin uid="0x2001f47f" bundle_id="0" template_id="0" locking_status="permanent"/>
+            <plugin uid="0x200255b6" bundle_id="0" template_id="0" locking_status="permanent"/>
             <plugin uid="0x2001f47f" bundle_id="0" template_id="0" locking_status="none"/>
             <plugin uid="0x2001f47f" bundle_id="0" template_id="0" locking_status="none"/>
             <plugin uid="0x2001f47f" bundle_id="0" template_id="0" locking_status="none"/>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/templateview_200286ec/loc/templateview.loc	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,322 @@
+/*
+* Copyright (c) 2005-2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Localization strings for project Active Idle 3
+*
+*/
+
+// d: Help
+// l: list_single_pane_t1_cp2
+// w: 
+// r: TB9.2
+#define qtn_options_help "Help"
+
+// d: Open
+// l: control_pane_t1/opt7
+// w:
+// r: TB9.2
+#define qtn_msk_open "Open"
+
+// d: Done
+// l: nhd_control_pane_t2/opt7
+// w:
+// r: TB9.2
+#define text_softkey_done "Done"
+
+// d: Open 
+// l: list_single_pane_t1_cp2
+// w:
+// r: TB9.2
+#define qtn_options_open "Open"
+
+// d: Back
+// l: nhd_control_pane_t2/opt7
+// w:
+// r: TB9.2
+#define text_softkey_back "Back"
+
+// d: Empty string
+// l: control_pane_t1/opt7
+// w:
+// r: TB9.2
+#define shortcut_emptycaption " "
+
+// d: Add page
+// l: list_single_pane_t1_cp2
+// w: 
+// r: TB9.2
+#define qtn_hs_add_page "Add page"
+
+// d: Select
+// l: list_single_pane_t1_cp2
+// w:
+// r: TB9.2
+#define qtn_options_select_widget "Select"
+
+// d: Add content
+// l: list_single_pane_t1_cp2
+// w: 
+// r: TB9.2
+#define qtn_hs_add_widget "Add content"
+
+// d: Access the widget catalog
+// l: list_single_pane_t1_cp2
+// w: 
+// r: TB9.2
+#define qtn_hs_widget_catalog "Widget catalog"
+
+// d: Search
+// l: nhd_control_pane_t2/opt7
+// w:
+// r: TB9.2
+#define text_softkey_search "Search"
+
+// d: Options
+// l: nhd_control_pane_t2/opt7
+// w:
+// r: TB9.2
+#define text_softkey_options "Options"
+
+// d: Refresh 
+// l: list_single_pane_t1_cp2/opt3
+// w:
+// r: TB9.2
+#define qtn_hs_refresh_widget "Refresh"
+
+// d: Focused widget
+// l: list_single_popup_submenu_pane_t1
+// w:
+// r: TB9.2
+#define qtn_hs_refresh_one_widget "One"
+
+// d: All widgets 
+// l: list_single_popup_submenu_pane_t1
+// w:
+// r: TB9.2
+#define qtn_hs_refresh_all_widgets "All"
+
+// d: Remove content 
+// l: list_single_pane_t1_cp2
+// w:
+// r: TB9.2
+#define qtn_hs_remove_widget "Remove content"
+
+// d: Hide the content 
+// l: list_single_pane_t1_cp2
+// w:
+// r: TB9.2
+#define qtn_hs_hide_widgets "Hide the content"
+
+// d: Edit contents 
+// l: list_single_pane_t1_cp2
+// w:
+// r: TB9.2
+#define qtn_hs_edit_content "Edit content"
+
+// d: Change Wallpaper
+// l: list_single_pane_t1_cp2
+// w:
+// r: TB9.2
+#define qtn_hs_change_wallpaper "Change Wallpaper"
+
+// d: Change Shortcut Settings
+// l: list_single_pane_t1_cp2
+// w:
+// r: TB9.2
+#define qtn_hs_change_shortcut_settings "Change Shortcut Settings"
+
+// d: Widget settings
+// l: list_single_pane_t1_cp2
+// w:
+// r: TB9.2
+#define qtn_hs_widget_settings "Widget settings"
+
+// d: Show widgets
+// l: list_single_pane_t1_cp2
+// w:
+// r: TB9.2
+#define qtn_hs_show_widgets "Show the content"
+
+// d: Change Home screen page
+// l: list_single_pane_t1_cp2
+// w:
+// r: TB9.2
+#define qtn_hs_change_page "Change Home screen page"
+
+// d: Change
+// l: control_pane_t1/opt7
+// w:
+// r: TB9.2
+#define qtn_msk_change "Change"
+
+// d: Show all profiles in Profiles widget
+// l: list_single_pane_t1_cp2
+// w:
+// r: TB9.2
+#define qtn_hs_show_profiles "Show all profiles"
+
+// d: Right selection key
+// l: list_single_pane_t1_cp2
+// w:
+// r: TB9.2
+#define qtn_set_right_idle_softkey "Right selection key"
+
+// d: Select
+// l: nhd_control_pane_t2/opt7
+// w:
+// r: TB9.2
+#define text_softkey_select "Select"
+
+// d: Cancel
+// l: nhd_control_pane_t2/opt7
+// w:
+// r: TB9.2
+#define text_softkey_cancel "Cancel"
+
+// d: Options menu item which switches home to online. Web widgets get updates from network.
+// l: list_single_pane_t1_cp2
+// w:
+// r: TB9.2
+#define qtn_hs_online "Switch Home to online"
+
+// d: Options menu item which switches home to offline. Web widgets are not updated
+// l: list_single_pane_t1_cp2
+// w:
+// r: TB9.2
+#define qtn_hs_offline "Switch Home to offline"
+
+// d: String which is shown in long tap menu of Home screen if tapped widget has settings
+// l: list_single_touch_menu_pane_t1
+// w:
+// r: TB9.2
+#define qtn_hs_longtap_settings "Settings"
+
+// d: String which is shown in long tap menu of Home screen if tapped some widget which is removable
+// l: list_single_touch_menu_pane_t1
+// w:
+// r: TB9.2
+#define qtn_hs_longtap_remove_element "Remove"
+
+// d: String which is shown in long tap menu of Home screen if tapped empty space in home screen
+// l: list_single_touch_menu_pane_t1
+// w:
+// r: TB9.2
+#define qtn_hs_longtap_add "Add content"
+
+// d: String which is shown in long tap menu of Home screen
+// l: list_single_touch_menu_pane_t1
+// w:
+// r: TB9.2
+#define qtn_hs_change_longtap_wallpaper "Change wallpaper"
+
+// d: User can download new HS widgets. String is visible in add content list query
+// l: list_single_pane_t1_cp2
+// w:
+// r: TB9.2
+#define qtn_hs_download_new_widgets "Download"
+
+// d: Changes focused widget
+// l: list_single_touch_menu_pane_t1
+// w:
+// r: TB9.2
+#define qtn_hs_edit_replace "Replace"
+
+// d: deletes current home screen page
+// l: list_single_pane_t1_cp2
+// w:
+// r: TB9.2
+#define qtn_hs_page_options_delete "Delete page"
+
+// d: creates new home screen page
+// l: list_single_pane_t1_cp2
+// w:
+// r: TB9.2
+#define qtn_hs_page_options_new "New page"
+
+// d: view title in editing mode
+// l: title_pane_t2
+// w:
+// r: TB9.2
+#define qtn_hs_title_editing_view "Editing view"
+
+// d: Call
+// l: nhd_control_pane_t2/opt7
+// w:
+// r: TB9.2
+#define text_softkey_call "Call"
+
+// d: Added new option menu item to Edit mode for opening the widget catalog,
+// l: list_single_pane_t1_cp2
+// w:
+// r: TB9.2
+#define qtn_hs_edit_widget_catalog "Widget Catalog"
+
+// d: Deletes the current Home screen page and focus goes to the next available Home screen page in Edit mode
+// l: list_single_pane_t1_cp2
+// w:
+// r: TB9.2
+#define qtn_hs_page_edit_options_delete "Delete page"
+
+// d: Done
+// l: nhd_control_pane_t2/opt7
+// w:
+// r: TB9.2
+#define qtn_hs_text_softkey_done "Done"
+
+// d: Search
+// l: nhd_control_pane_t2/opt7
+// w:
+// r: TB9.2
+#define qtn_hs_text_softkey_search "Search"
+
+// d: Options
+// l: nhd_control_pane_t2/opt7
+// w:
+// r: TB9.2
+#define qtn_hs_text_softkey_options "Options"
+
+// d: Back
+// l: nhd_control_pane_t2/opt7
+// w:
+// r: TB9.2
+#define qtn_hs_text_softkey_back "Back"
+
+// d: Select
+// l: nhd_control_pane_t2/opt7
+// w:
+// r: TB9.2
+#define qtn_hs_text_softkey_select "Select"
+
+// d: Cancel
+// l: nhd_control_pane_t2/opt7
+// w:
+// r: TB9.2
+#define qtn_hs_text_softkey_cancel "Cancel"
+
+// d: Call
+// l: nhd_control_pane_t2/opt7
+// w:
+// r: TB9.2
+#define qtn_hs_text_softkey_call "Call"
+
+// d: Lock keypad
+// l: list_single_pane_t1_cp2
+// w:
+// r: TB9.2
+#define qtn_hs_lock_keypad "Lock keypad"
+
+// d: Menu
+// l: nhd_control_pane_t2/opt7
+// w:
+// r: TB9.2
+#define qtn_hs_apps_menu_skey "Menu"
--- a/idlehomescreen/data/vga_tch/templateview_200286ec/loc/view.loc	Tue Sep 14 20:58:58 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,322 +0,0 @@
-/*
-* Copyright (c) 2005-2006 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Localization strings for project Active Idle 3
-*
-*/
-
-// d: Help
-// l: list_single_pane_t1_cp2
-// w: 
-// r: TB9.2
-#define qtn_options_help "Help"
-
-// d: Open
-// l: control_pane_t1/opt7
-// w:
-// r: TB9.2
-#define qtn_msk_open "Open"
-
-// d: Done
-// l: nhd_control_pane_t2/opt7
-// w:
-// r: TB9.2
-#define text_softkey_done "Done"
-
-// d: Open 
-// l: list_single_pane_t1_cp2
-// w:
-// r: TB9.2
-#define qtn_options_open "Open"
-
-// d: Back
-// l: nhd_control_pane_t2/opt7
-// w:
-// r: TB9.2
-#define text_softkey_back "Back"
-
-// d: Empty string
-// l: control_pane_t1/opt7
-// w:
-// r: TB9.2
-#define shortcut_emptycaption " "
-
-// d: Add page
-// l: list_single_pane_t1_cp2
-// w: 
-// r: TB9.2
-#define qtn_hs_add_page "Add page"
-
-// d: Select
-// l: list_single_pane_t1_cp2
-// w:
-// r: TB9.2
-#define qtn_options_select_widget "Select"
-
-// d: Add content
-// l: list_single_pane_t1_cp2
-// w: 
-// r: TB9.2
-#define qtn_hs_add_widget "Add content"
-
-// d: Access the widget catalog
-// l: list_single_pane_t1_cp2
-// w: 
-// r: TB9.2
-#define qtn_hs_widget_catalog "Widget catalog"
-
-// d: Search
-// l: nhd_control_pane_t2/opt7
-// w:
-// r: TB9.2
-#define text_softkey_search "Search"
-
-// d: Options
-// l: nhd_control_pane_t2/opt7
-// w:
-// r: TB9.2
-#define text_softkey_options "Options"
-
-// d: Refresh 
-// l: list_single_pane_t1_cp2/opt3
-// w:
-// r: TB9.2
-#define qtn_hs_refresh_widget "Refresh"
-
-// d: Focused widget
-// l: list_single_popup_submenu_pane_t1
-// w:
-// r: TB9.2
-#define qtn_hs_refresh_one_widget "One"
-
-// d: All widgets 
-// l: list_single_popup_submenu_pane_t1
-// w:
-// r: TB9.2
-#define qtn_hs_refresh_all_widgets "All"
-
-// d: Remove content 
-// l: list_single_pane_t1_cp2
-// w:
-// r: TB9.2
-#define qtn_hs_remove_widget "Remove content"
-
-// d: Hide the content 
-// l: list_single_pane_t1_cp2
-// w:
-// r: TB9.2
-#define qtn_hs_hide_widgets "Hide the content"
-
-// d: Edit contents 
-// l: list_single_pane_t1_cp2
-// w:
-// r: TB9.2
-#define qtn_hs_edit_content "Edit content"
-
-// d: Change Wallpaper
-// l: list_single_pane_t1_cp2
-// w:
-// r: TB9.2
-#define qtn_hs_change_wallpaper "Change Wallpaper"
-
-// d: Change Shortcut Settings
-// l: list_single_pane_t1_cp2
-// w:
-// r: TB9.2
-#define qtn_hs_change_shortcut_settings "Change Shortcut Settings"
-
-// d: Widget settings
-// l: list_single_pane_t1_cp2
-// w:
-// r: TB9.2
-#define qtn_hs_widget_settings "Widget settings"
-
-// d: Show widgets
-// l: list_single_pane_t1_cp2
-// w:
-// r: TB9.2
-#define qtn_hs_show_widgets "Show the content"
-
-// d: Change Home screen page
-// l: list_single_pane_t1_cp2
-// w:
-// r: TB9.2
-#define qtn_hs_change_page "Change Home screen page"
-
-// d: Change
-// l: control_pane_t1/opt7
-// w:
-// r: TB9.2
-#define qtn_msk_change "Change"
-
-// d: Show all profiles in Profiles widget
-// l: list_single_pane_t1_cp2
-// w:
-// r: TB9.2
-#define qtn_hs_show_profiles "Show all profiles"
-
-// d: Right selection key
-// l: list_single_pane_t1_cp2
-// w:
-// r: TB9.2
-#define qtn_set_right_idle_softkey "Right selection key"
-
-// d: Select
-// l: nhd_control_pane_t2/opt7
-// w:
-// r: TB9.2
-#define text_softkey_select "Select"
-
-// d: Cancel
-// l: nhd_control_pane_t2/opt7
-// w:
-// r: TB9.2
-#define text_softkey_cancel "Cancel"
-
-// d: Options menu item which switches home to online. Web widgets get updates from network.
-// l: list_single_pane_t1_cp2
-// w:
-// r: TB9.2
-#define qtn_hs_online "Switch Home to online"
-
-// d: Options menu item which switches home to offline. Web widgets are not updated
-// l: list_single_pane_t1_cp2
-// w:
-// r: TB9.2
-#define qtn_hs_offline "Switch Home to offline"
-
-// d: String which is shown in long tap menu of Home screen if tapped widget has settings
-// l: list_single_touch_menu_pane_t1
-// w:
-// r: TB9.2
-#define qtn_hs_longtap_settings "Settings"
-
-// d: String which is shown in long tap menu of Home screen if tapped some widget which is removable
-// l: list_single_touch_menu_pane_t1
-// w:
-// r: TB9.2
-#define qtn_hs_longtap_remove_element "Remove"
-
-// d: String which is shown in long tap menu of Home screen if tapped empty space in home screen
-// l: list_single_touch_menu_pane_t1
-// w:
-// r: TB9.2
-#define qtn_hs_longtap_add "Add content"
-
-// d: String which is shown in long tap menu of Home screen
-// l: list_single_touch_menu_pane_t1
-// w:
-// r: TB9.2
-#define qtn_hs_change_longtap_wallpaper "Change wallpaper"
-
-// d: User can download new HS widgets. String is visible in add content list query
-// l: list_single_pane_t1_cp2
-// w:
-// r: TB9.2
-#define qtn_hs_download_new_widgets "Download"
-
-// d: Changes focused widget
-// l: list_single_touch_menu_pane_t1
-// w:
-// r: TB9.2
-#define qtn_hs_edit_replace "Replace"
-
-// d: deletes current home screen page
-// l: list_single_pane_t1_cp2
-// w:
-// r: TB9.2
-#define qtn_hs_page_options_delete "Delete page"
-
-// d: creates new home screen page
-// l: list_single_pane_t1_cp2
-// w:
-// r: TB9.2
-#define qtn_hs_page_options_new "New page"
-
-// d: view title in editing mode
-// l: title_pane_t2
-// w:
-// r: TB9.2
-#define qtn_hs_title_editing_view "Editing view"
-
-// d: Call
-// l: nhd_control_pane_t2/opt7
-// w:
-// r: TB9.2
-#define text_softkey_call "Call"
-
-// d: Added new option menu item to Edit mode for opening the widget catalog,
-// l: list_single_pane_t1_cp2
-// w:
-// r: TB9.2
-#define qtn_hs_edit_widget_catalog "Widget Catalog"
-
-// d: Deletes the current Home screen page and focus goes to the next available Home screen page in Edit mode
-// l: list_single_pane_t1_cp2
-// w:
-// r: TB9.2
-#define qtn_hs_page_edit_options_delete "Delete page"
-
-// d: Done
-// l: nhd_control_pane_t2/opt7
-// w:
-// r: TB9.2
-#define qtn_hs_text_softkey_done "Done"
-
-// d: Search
-// l: nhd_control_pane_t2/opt7
-// w:
-// r: TB9.2
-#define qtn_hs_text_softkey_search "Search"
-
-// d: Options
-// l: nhd_control_pane_t2/opt7
-// w:
-// r: TB9.2
-#define qtn_hs_text_softkey_options "Options"
-
-// d: Back
-// l: nhd_control_pane_t2/opt7
-// w:
-// r: TB9.2
-#define qtn_hs_text_softkey_back "Back"
-
-// d: Select
-// l: nhd_control_pane_t2/opt7
-// w:
-// r: TB9.2
-#define qtn_hs_text_softkey_select "Select"
-
-// d: Cancel
-// l: nhd_control_pane_t2/opt7
-// w:
-// r: TB9.2
-#define qtn_hs_text_softkey_cancel "Cancel"
-
-// d: Call
-// l: nhd_control_pane_t2/opt7
-// w:
-// r: TB9.2
-#define qtn_hs_text_softkey_call "Call"
-
-// d: Lock keypad
-// l: list_single_pane_t1_cp2
-// w:
-// r: TB9.2
-#define qtn_hs_lock_keypad "Lock keypad"
-
-// d: Menu
-// l: nhd_control_pane_t2/opt7
-// w:
-// r: TB9.2
-#define qtn_hs_apps_menu_skey "Menu"
--- a/idlehomescreen/data/vga_tch/templateview_200286ec/xuikon/37/view.css	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/vga_tch/templateview_200286ec/xuikon/37/view.css	Wed Sep 15 12:00:00 2010 +0300
@@ -63,11 +63,12 @@
 
 softkey#msk_ltr
 {
-    display: block;
+    display: none;
 }
 
 softkey#msk_rtl
 {
-    display: none;
+    display: block;
 }
 
+
--- a/idlehomescreen/data/vga_tch/templateview_200286ec/xuikon/50/view.css	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/vga_tch/templateview_200286ec/xuikon/50/view.css	Wed Sep 15 12:00:00 2010 +0300
@@ -63,11 +63,11 @@
 
 softkey#msk_ltr
 {
-    display: block;
+    display: none;
 }
 
 softkey#msk_rtl
 {
-    display: none;
+    display: block;
 }
 
--- a/idlehomescreen/data/vga_tch/templateview_200286ec/xuikon/57/view.css	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/vga_tch/templateview_200286ec/xuikon/57/view.css	Wed Sep 15 12:00:00 2010 +0300
@@ -63,11 +63,11 @@
 
 softkey#msk_ltr
 {
-    display: block;
+    display: none;
 }
 
 softkey#msk_rtl
 {
-    display: none;
+    display: block;
 }
 
--- a/idlehomescreen/data/vga_tch/templateview_200286ec/xuikon/94/view.css	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/vga_tch/templateview_200286ec/xuikon/94/view.css	Wed Sep 15 12:00:00 2010 +0300
@@ -63,11 +63,12 @@
 
 softkey#msk_ltr
 {
-    display: block;
+    display: none;
 }
 
 softkey#msk_rtl
 {
-    display: none;
+    display: block;
 }
 
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/threerows_200315c4/group/bld.inf	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,66 @@
+/*
+* Copyright (c) 2002-2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* The information required for building 
+*
+*/
+
+#include <platform_paths.hrh>
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_EXPORTS
+// Support for productization and Carbide.Ui customization
+//********************************************************
+../hsps/00/manifest.dat /epoc32/data/Z/resource/homescreen/threerows_200315c4/hsps/manifest.dat
+../hsps/00/widgetconfiguration.xml /epoc32/data/Z/resource/homescreen/threerows_200315c4/hsps/widgetconfiguration.xml
+../xuikon/00/threerows.dat /epoc32/data/Z/resource/homescreen/threerows_200315c4/xuikon/threerows_200315c4.dat
+../xuikon/00/threerows.css /epoc32/data/Z/resource/homescreen/threerows_200315c4/xuikon/threerows.css
+../xuikon/00/threerows.xml /epoc32/data/Z/resource/homescreen/threerows_200315c4/xuikon/threerows.xml
+
+// Arabic languages
+//*****************
+../xuikon/37/threerows.css /epoc32/data/Z/resource/homescreen/threerows_200315c4/xuikon/37/threerows.css
+../xuikon/50/threerows.css /epoc32/data/Z/resource/homescreen/threerows_200315c4/xuikon/50/threerows.css
+../xuikon/57/threerows.css /epoc32/data/Z/resource/homescreen/threerows_200315c4/xuikon/57/threerows.css
+../xuikon/94/threerows.css /epoc32/data/Z/resource/homescreen/threerows_200315c4/xuikon/94/threerows.css
+
+
+// Support for S60 builds
+//***********************
+../rom/threerows_resources.iby LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(threerows_200315c4_resources.iby)
+../rom/threerows_customer.iby CUSTOMER_APP_LAYER_IBY_EXPORT_PATH(threerows_200315c4_customer.iby)
+../rom/threerows_variant.iby CUSTOMER_APP_LAYER_IBY_EXPORT_PATH(threerows_200315c4_variant.iby)
+../rom/threerows.iby CORE_APP_LAYER_IBY_EXPORT_PATH(threerows_200315c4.iby)
+
+// Dtd-localization
+//*****************
+PRJ_EXTENSIONS
+START EXTENSION tools/dtd
+OPTION SWITCH_LOC_FILE_NAME threerows_200315c4
+OPTION DTD_TYPE widget
+OPTION LOC_FOLDERS yes
+END
+
+
+PRJ_MMPFILES
+
+PRJ_TESTMMPFILES
+
+//  End of File  
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/threerows_200315c4/hsps/00/manifest.dat	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,63 @@
+<?xml version="1.0"?>
+
+<package version="2.0">
+
+
+
+    <family>vga_tch</family>
+
+  
+
+    <type>template</type>
+
+
+
+    <!-- interface uid -->
+
+	<interfaceuid>0x2001f48a</interfaceuid>
+
+
+
+	<!-- vendor uid  -->
+
+	<provideruid>0x101fb657</provideruid>
+
+
+
+	<!-- uid -->
+
+	<configurationuid>0x200315c4</configurationuid>
+
+	
+
+	<!-- description -->
+
+	<fullname>threerows</fullname>
+
+	<shortname>thrs</shortname>
+
+	<version>1.0</version>
+
+
+
+	<!-- configuration -->
+
+	<filexml>widgetconfiguration.xml</filexml>
+
+
+
+  <!-- Locale independent/common resources -->
+
+
+
+  <!-- Locale specific resources -->
+
+	<localization>
+
+  	<fileresource>threerows.o0000</fileresource>		
+
+	</localization>
+
+
+
+</package>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/threerows_200315c4/hsps/00/widgetconfiguration.xml	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,50 @@
+<configuration>
+    <control>
+        <settings>
+          <item id="threerows_plugin" name="ContentSource">
+            <property  name="name" value=""/>
+          </item>
+          <!--Def value "Test_Publisher"-->
+          <item id="pub_id" name="publisher">
+            <property name="value" value=""/> 
+          </item>
+          
+          <!-- Template designer choice -->
+          <item id="prop1" name="contentdata">
+            <property  name="class" value="image1"/>
+          </item>
+					<!-- Template designer choice -->
+          <item id="p1trigger" name="trigger" > 
+            <property  name="name" value="image1"/> 
+          </item>
+          
+          <!-- Template designer choice -->
+          <item id="prop2" name="contentdata">
+            <property  name="class" value="text1"/>
+          </item>
+          <!-- Template designer choice -->
+          <item id="p2trigger" name="trigger" > 
+            <property  name="name" value="text1"/> 
+          </item>
+          
+          <!-- Template designer choice -->
+          <item id="prop3" name="contentdata">
+            <property  name="class" value="text2"/>
+          </item>
+				 <!-- Template designer choice -->
+		     <item id="p3trigger" name="trigger" > 
+            <property  name="name" value="text2"/> 
+          </item>            
+          
+          <!-- Template designer choice -->
+          <item id="prop4" name="contentdata">
+            <property  name="class" value="text3"/>
+          </item>
+         <!-- Template designer choice -->
+		     <item id="p4trigger" name="trigger" > 
+            <property  name="name" value="text3"/> 
+         </item>             
+             
+        </settings>
+    </control>
+</configuration>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/threerows_200315c4/rom/threerows.iby	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,29 @@
+/*
+* Copyright (c) 2005-2007 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  
+* threerows widget HSPS-plugin IBY file.
+*
+*/
+
+#ifndef __THREEROWS_200315C4_IBY__
+#define __THREEROWS_200315C4_IBY__
+
+#if defined(FF_LAYOUT_480_640_TOUCH_VGA4) || defined(FF_LAYOUT_640_480_TOUCH_VGA4)
+
+// Enabled by DTD-localization tools
+data=ZPRIVATE\200159c0\install\threerows_200315c4\hsps\00\manifest.dat \private\200159c0\install\threerows_200315c4\hsps\00\manifest.dat
+
+#endif // FF_LAYOUT_480_640_TOUCH_VGA4 || FF_LAYOUT_640_480_TOUCH_VGA4
+
+#endif // __THREEROWS_200315C4_IBY__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/threerows_200315c4/rom/threerows_customer.iby	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,29 @@
+/*
+* Copyright (c) 2005-2007 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  
+* threerows widget HSPS-plugin language specific IBY file.
+*
+*/
+
+#ifndef __THREEROWS_200315C4_CUSTOMER_IBY__
+#define __THREEROWS_200315C4_CUSTOMER_IBY__
+
+#if defined(FF_LAYOUT_480_640_TOUCH_VGA4) || defined(FF_LAYOUT_640_480_TOUCH_VGA4)
+
+// Enabled by DTD-localization tools, language specific
+data=ZPRIVATE\200159c0\install\threerows_200315c4\xuikon\00\threerows.o0000 \private\200159c0\install\threerows_200315c4\xuikon\00\threerows.o0000
+
+#endif // FF_LAYOUT_480_640_TOUCH_VGA4 || FF_LAYOUT_640_480_TOUCH_VGA4
+
+#endif // __THREEROWS_200315C4_CUSTOMER_IBY__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/threerows_200315c4/rom/threerows_resources.iby	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,40 @@
+/*
+* Copyright (c) 2005-2007 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* threerows widget HSPS-plugin language specific IBY file. 
+*
+*/
+
+#ifndef __THREEROWS_200315C4_RESOURCES_IBY__
+#define __THREEROWS_200315C4_RESOURCES_IBY__
+
+#if defined(FF_LAYOUT_480_640_TOUCH_VGA4) || defined(FF_LAYOUT_640_480_TOUCH_VGA4)          
+
+// Enabled by DTD-localization tools, language specific
+#if defined (__LOCALES_37_IBY__)
+data=ZPRIVATE\200159c0\install\threerows_200315c4\xuikon\37\threerows.o0037 \private\200159c0\install\threerows_200315c4\xuikon\37\threerows.o0037
+#endif
+#if defined  (__LOCALES_50_IBY__)
+data=ZPRIVATE\200159c0\install\threerows_200315c4\xuikon\50\threerows.o0050 \private\200159c0\install\threerows_200315c4\xuikon\50\threerows.o0050
+#endif
+#if defined  (__LOCALES_57_IBY__)
+data=ZPRIVATE\200159c0\install\threerows_200315c4\xuikon\57\threerows.o0057 \private\200159c0\install\threerows_200315c4\xuikon\57\threerows.o0057
+#endif
+#if defined  (__LOCALES_94_IBY__)
+data=ZPRIVATE\200159c0\install\threerows_200315c4\xuikon\94\threerows.o0094 \private\200159c0\install\threerows_200315c4\xuikon\94\threerows.o0094
+#endif
+
+#endif // FF_LAYOUT_480_640_TOUCH_VGA4 || FF_LAYOUT_640_480_TOUCH_VGA4
+
+#endif // __THREEROWS_200315C4_RESOURCES_IBY__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/threerows_200315c4/rom/threerows_variant.iby	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,29 @@
+/*
+* Copyright (c) 2005-2007 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* threerows widget HSPS-plugin variant specific IBY file. 
+*
+*/
+
+#ifndef __THREEROWS_200315C4_VARIANT_IBY__
+#define __THREEROWS_200315C4_VARIANT_IBY__
+
+#if defined(FF_LAYOUT_480_640_TOUCH_VGA4) || defined(FF_LAYOUT_640_480_TOUCH_VGA4)          
+
+// Enabled by variation tools, variant specific
+data=ZPRIVATE\200159c0\install\threerows_200315c4\hsps\00\widgetconfiguration.xml \private\200159c0\install\threerows_200315c4\hsps\00\widgetconfiguration.xml
+
+#endif // FF_LAYOUT_480_640_TOUCH_VGA4 || FF_LAYOUT_640_480_TOUCH_VGA4
+
+#endif  // __SHORTCUT_200315C4_VARIANT_IBY__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/threerows_200315c4/xuikon/00/threerows.css	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,42 @@
+widget#threerows_template
+{
+    block-progression:rl;
+}
+
+image#image_container
+{
+    height: 95px;
+    width: 95px;
+    margin-top:5px;
+    margin-bottom:5px;
+    margin-left:5px;
+    margin-right:4px;
+    padding-top:5px;
+    padding-bottom:5px;
+    padding-left:5px;
+    padding-right:5px;
+    nav-index:appearance;
+    _s60-aspect-ratio:preserve;
+}
+
+box#text_container
+{
+    direction: ltr;
+    block-progression:tb;
+    margin-left:3px;
+    margin-right:5px;
+}
+
+text.text_box
+{
+    padding-right:5px;
+    padding-left:5px;
+    padding-top:2px;
+    padding-bottom:2px;
+    font-family: EAknLogicalFontSecondaryFont;
+    font-size: 3.5u;
+    height:35px;
+    color:"SKIN(268458534 13056 74)";
+    nav-index:appearance;
+    _s60-text-valign: top;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/threerows_200315c4/xuikon/00/threerows.dat	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<data>
+    <AppUid>2001CB4F</AppUid>
+    <Provideruid>101FB657</Provideruid>
+    <ThemeUid>110012F8</ThemeUid>
+    <ThemeFullName>threerows</ThemeFullName>
+    <ThemeShortName>threerows</ThemeShortName>
+    <ThemeVersion>1.0</ThemeVersion>
+    <FileXML>threerows.xml</FileXML>
+    <FileCSS>threerows.css</FileCSS>
+    
+</data>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/threerows_200315c4/xuikon/00/threerows.xml	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- <!DOCTYPE xmluiml SYSTEM "AI3_Demo.dtd"> -->
+<xmluiml xmlns="http://www.series60.com/xml/xmluiml/1" version="1.0">
+
+    <widget id="threerows_template">
+        <!-- Data plugin in this widget -->
+        <contentsource id="threerows_plugin" name="" value="0x20019594" />
+        
+        <configuration name="service" value="Service.ContentPublishing"/>
+        <configuration name="interface" value="IContentPublishing"/>
+        <configuration name="command" value="GetList"/>
+        <configuration id="pub_id" name="publisher" value=""/>
+
+ 			  <image id="image_container" focusable="true" _s60-initial-focus="1">
+ 			    <!-- Template designer choice -->
+            <actions>
+	          <action>
+	            <trigger name="activate"/>
+	            <event id="p1trigger" name=""/>
+	          </action>
+	        </actions>
+	        <configuration name="content_type" value="image1"/>
+          <property id="prop1" class=""/>
+      	</image>
+      	
+      	<box id="text_container">
+	        <text id="row1" class="text_box" focusable="true" >
+	          <!-- Template designer choice -->
+		        <actions>
+		          <action>
+		            <trigger name="activate"/>
+		            <event id="p2trigger" name=""/>
+		          </action>
+		        </actions>
+		        <configuration name="content_type" value="text1"/>
+	          <property id="prop2" class=""/>
+	      	</text>
+	      	
+	      	<text id="row2" class="text_box" focusable="true" >
+	      	  <!-- Template designer choice -->
+		      	<actions>
+		          <action>
+		            <trigger name="activate"/>
+		            <event id="p3trigger" name=""/>
+		          </action>
+		        </actions>
+		        <configuration name="content_type" value="text2"/>
+	          <property id="prop3" class=""/>
+	      	</text>
+	      	
+	      	<text id="row3" class="text_box" focusable="true" >
+	      	  <!-- Template designer choice -->
+		      	<actions>
+		          <action>
+		            <trigger name="activate"/>
+		            <event id="p4trigger" name=""/>
+		          </action>
+		        </actions>
+		        <configuration name="content_type" value="text3"/>
+	          <property id="prop4" class=""/>
+	      	</text>
+				</box>
+				<menuextension>
+            <!-- dynmenuitems are mapped to HS view.xml menu based on target attribute.
+                 HS view.xml provides localisation for predined items: "settings" and "refresh". -->                
+            <dynmenuitem type="widgetsettings" target="hs_widget_menuitem_settings">
+                <actions>
+                    <action>
+                        <trigger name="activate"/>
+                        <event name="menuitem(widgetsettings)" destination="threerows_plugin"/>  
+                    </action>
+                </actions>
+            </dynmenuitem>                    
+            <dynmenuitem type="refresh" target="hs_widget_menuitem_refresh">
+                <actions>
+                    <action>
+                        <trigger name="activate"/>
+                        <event name="menuitem(refresh)" destination="threerows_plugin"/>  
+                    </action>
+                </actions>
+            </dynmenuitem>        
+        </menuextension>
+    </widget>
+</xmluiml>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/threerows_200315c4/xuikon/37/threerows.css	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,45 @@
+widget#threerows_template
+{
+    direction: rtl;
+    block-progression:rl;
+}
+
+image#image_container
+{
+    height: 95px;
+    width: 95px;
+    margin-top:5px;
+    margin-bottom:5px;
+    margin-left:5px;
+    margin-right:4px;
+    padding-top:5px;
+    padding-bottom:5px;
+    padding-left:5px;
+    padding-right:5px;
+    nav-index:appearance;
+    _s60-aspect-ratio:preserve;
+}
+
+box#text_container
+{
+    direction: ltr;
+    block-progression:tb;
+    margin-left:3px;
+    margin-right:5px;
+}
+
+text.text_box
+{
+    padding-right:5px;
+    padding-left:5px;
+    padding-top:2px;
+    padding-bottom:2px;
+    direction: ltr;
+    text-align: right;
+    font-family: EAknLogicalFontSecondaryFont;
+    font-size: 3.5u;
+    height:35px;
+    color:"SKIN(268458534 13056 74)";
+    nav-index:appearance;
+    _s60-text-valign: top;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/threerows_200315c4/xuikon/50/threerows.css	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,45 @@
+widget#threerows_template
+{
+    direction: rtl;
+    block-progression:rl;
+}
+
+image#image_container
+{
+    height: 95px;
+    width: 95px;
+    margin-top:5px;
+    margin-bottom:5px;
+    margin-left:5px;
+    margin-right:4px;
+    padding-top:5px;
+    padding-bottom:5px;
+    padding-left:5px;
+    padding-right:5px;
+    nav-index:appearance;
+    _s60-aspect-ratio:preserve;
+}
+
+box#text_container
+{
+    direction: ltr;
+    block-progression:tb;
+    margin-left:3px;
+    margin-right:5px;
+}
+
+text.text_box
+{
+    padding-right:5px;
+    padding-left:5px;
+    padding-top:2px;
+    padding-bottom:2px;
+    direction: ltr;
+    text-align: right;
+    font-family: EAknLogicalFontSecondaryFont;
+    font-size: 3.5u;
+    height:35px;
+    color:"SKIN(268458534 13056 74)";
+    nav-index:appearance;
+    _s60-text-valign: top;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/threerows_200315c4/xuikon/57/threerows.css	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,45 @@
+widget#threerows_template
+{
+    direction: rtl;
+    block-progression:rl;
+}
+
+image#image_container
+{
+    height: 95px;
+    width: 95px;
+    margin-top:5px;
+    margin-bottom:5px;
+    margin-left:5px;
+    margin-right:4px;
+    padding-top:5px;
+    padding-bottom:5px;
+    padding-left:5px;
+    padding-right:5px;
+    nav-index:appearance;
+    _s60-aspect-ratio:preserve;
+}
+
+box#text_container
+{
+    direction: ltr;
+    block-progression:tb;
+    margin-left:3px;
+    margin-right:5px;
+}
+
+text.text_box
+{
+    padding-right:5px;
+    padding-left:5px;
+    padding-top:2px;
+    padding-bottom:2px;
+    direction: ltr;
+    text-align: right;
+    font-family: EAknLogicalFontSecondaryFont;
+    font-size: 3.5u;
+    height:35px;
+    color:"SKIN(268458534 13056 74)";
+    nav-index:appearance;
+    _s60-text-valign: top;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/threerows_200315c4/xuikon/94/threerows.css	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,45 @@
+widget#threerows_template
+{
+    direction: rtl;
+    block-progression:rl;
+}
+
+image#image_container
+{
+    height: 95px;
+    width: 95px;
+    margin-top:5px;
+    margin-bottom:5px;
+    margin-left:5px;
+    margin-right:4px;
+    padding-top:5px;
+    padding-bottom:5px;
+    padding-left:5px;
+    padding-right:5px;
+    nav-index:appearance;
+    _s60-aspect-ratio:preserve;
+}
+
+box#text_container
+{
+    direction: ltr;
+    block-progression:tb;
+    margin-left:3px;
+    margin-right:5px;
+}
+
+text.text_box
+{
+    padding-right:5px;
+    padding-left:5px;
+    padding-top:2px;
+    padding-bottom:2px;
+    direction: ltr;
+    text-align: right;
+    font-family: EAknLogicalFontSecondaryFont;
+    font-size: 3.5u;
+    height:35px;
+    color:"SKIN(268458534 13056 74)";
+    nav-index:appearance;
+    _s60-text-valign: top;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/threetextrows_200315c5/group/bld.inf	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,68 @@
+/*
+* Copyright (c) 2002-2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* The information required for building
+*
+*/
+
+#include <platform_paths.hrh>
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_EXPORTS
+// Support for productization and Carbide.Ui customization
+//********************************************************
+../hsps/00/manifest.dat /epoc32/data/Z/resource/homescreen/threetextrows_200315c5/hsps/manifest.dat
+../hsps/00/widgetconfiguration.xml /epoc32/data/Z/resource/homescreen/threetextrows_200315c5/hsps/widgetconfiguration.xml
+../xuikon/00/threetextrows.dat /epoc32/data/Z/resource/homescreen/threetextrows_200315c5/xuikon/threetextrows_200315c5.dat
+../xuikon/00/threetextrows.css /epoc32/data/Z/resource/homescreen/threetextrows_200315c5/xuikon/threetextrows.css
+../xuikon/00/threetextrows.xml /epoc32/data/Z/resource/homescreen/threetextrows_200315c5/xuikon/threetextrows.xml
+
+// Arabic languages
+//*****************
+../xuikon/37/threetextrows.css /epoc32/data/Z/resource/homescreen/threetextrows_200315c5/xuikon/37/threetextrows.css
+../xuikon/50/threetextrows.css /epoc32/data/Z/resource/homescreen/threetextrows_200315c5/xuikon/50/threetextrows.css
+../xuikon/57/threetextrows.css /epoc32/data/Z/resource/homescreen/threetextrows_200315c5/xuikon/57/threetextrows.css
+../xuikon/94/threetextrows.css /epoc32/data/Z/resource/homescreen/threetextrows_200315c5/xuikon/94/threetextrows.css
+
+
+// Support for S60 builds
+//***********************
+../rom/threetextrows_resources.iby LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(threetextrows_200315c5_resources.iby)
+../rom/threetextrows_customer.iby CUSTOMER_APP_LAYER_IBY_EXPORT_PATH(threetextrows_200315c5_customer.iby)
+../rom/threetextrows_variant.iby CUSTOMER_APP_LAYER_IBY_EXPORT_PATH(threetextrows_200315c5_variant.iby)
+../rom/threetextrows.iby CORE_APP_LAYER_IBY_EXPORT_PATH(threetextrows_200315c5.iby)
+
+// Dtd-localization
+//*****************
+PRJ_EXTENSIONS
+START EXTENSION tools/dtd
+OPTION SWITCH_LOC_FILE_NAME threetextrows_200315c5
+OPTION DTD_TYPE widget
+OPTION LOC_FOLDERS yes
+END
+
+
+PRJ_MMPFILES
+
+PRJ_TESTMMPFILES
+
+//#endif
+
+//  End of File  
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/threetextrows_200315c5/hsps/00/manifest.dat	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,65 @@
+<?xml version="1.0"?>
+
+<package version="2.0">
+
+
+
+    <family>vga_tch</family>
+
+
+
+    <type>template</type>
+
+
+
+    <!-- interface uid -->
+
+	<interfaceuid>0x2001f48a</interfaceuid>
+
+
+
+	<!-- vendor uid  -->
+
+	<provideruid>0x101fb657</provideruid>
+
+
+
+	<!-- uid -->
+
+	<configurationuid>0x200315c5</configurationuid>
+
+	
+
+	<!-- description -->
+
+	<fullname>threetextrows</fullname>
+
+	<shortname>thtxtrs</shortname>
+
+	<version>1.0</version>
+
+
+
+	<!-- configuration -->
+
+	<filexml>widgetconfiguration.xml</filexml>
+
+
+
+  <!-- Locale independent/common resources -->
+
+
+
+
+
+  <!-- Locale specific resources -->
+
+	<localization>
+
+  	<fileresource>threetextrows.o0000</fileresource>	
+
+  </localization>
+
+
+
+</package>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/threetextrows_200315c5/hsps/00/widgetconfiguration.xml	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,41 @@
+<configuration>
+    <control>
+        <settings>
+          <item id="threetextrows_plugin" name="ContentSource">
+            <property  name="name" value=""/>
+          </item>
+          <!--Def value "Test_Publisher"-->
+          <item id="pub_id" name="publisher">
+            <property name="value" value=""/> 
+          </item>
+          
+          <!-- Template designer choice -->
+          <item id="prop1" name="contentdata">
+            <property  name="class" value="text1"/>
+          </item>
+				  <!-- Template designer choice -->
+          <item id="p1trigger" name="trigger" > 
+            <property  name="name" value="text1"/> 
+          </item>
+          
+          <!-- Template designer choice -->
+          <item id="prop2" name="contentdata">
+            <property  name="class" value="text2"/>
+          </item>
+          <!-- Template designer choice -->
+          <item id="p2trigger" name="trigger" > 
+            <property  name="name" value="text2"/> 
+          </item>
+          
+          <!-- Template designer choice -->
+          <item id="prop3" name="contentdata">
+            <property  name="class" value="text3"/>
+          </item>
+				  <!-- Template designer choice -->             
+          <item id="p3trigger" name="trigger"> 
+            <property  name="name" value="text3"/> 
+          </item>
+          
+        </settings>
+    </control>
+</configuration>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/threetextrows_200315c5/rom/threetextrows.iby	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,29 @@
+/*
+* Copyright (c) 2005-2007 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* threetextrows widget HSPS-plugin IBY file.
+*
+*/
+
+#ifndef __THREETEXTROWS_200315C5_IBY__
+#define __THREETEXTROWS_200315C5_IBY__
+
+#if defined(FF_LAYOUT_480_640_TOUCH_VGA4) || defined(FF_LAYOUT_640_480_TOUCH_VGA4)          
+
+// Enabled by DTD-localization tools
+data=ZPRIVATE\200159c0\install\threetextrows_200315c5\hsps\00\manifest.dat \private\200159c0\install\threetextrows_200315c5\hsps\00\manifest.dat
+
+#endif // FF_LAYOUT_480_640_TOUCH_VGA4 || FF_LAYOUT_640_480_TOUCH_VGA4
+
+#endif // __THREETEXTROWS_200315C5_IBY__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/threetextrows_200315c5/rom/threetextrows_customer.iby	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,29 @@
+/*
+* Copyright (c) 2005-2007 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* threetextrows widget HSPS-plugin language specific IBY file.
+*
+*/
+
+#ifndef __THREETEXTROWS_200315C5_CUSTOMER_IBY__
+#define __THREETEXTROWS_200315C5_CUSTOMER_IBY__
+
+#if defined(FF_LAYOUT_480_640_TOUCH_VGA4) || defined(FF_LAYOUT_640_480_TOUCH_VGA4)          
+
+// Enabled by DTD-localization tools, language specific
+data=ZPRIVATE\200159c0\install\threetextrows_200315c5\xuikon\00\threetextrows.o0000 \private\200159c0\install\threetextrows_200315c5\xuikon\00\threetextrows.o0000
+
+#endif // FF_LAYOUT_480_640_TOUCH_VGA4 || FF_LAYOUT_640_480_TOUCH_VGA4
+
+#endif // __THREETEXTROWS_200315C5_CUSTOMER_IBY__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/threetextrows_200315c5/rom/threetextrows_resources.iby	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,40 @@
+/*
+* Copyright (c) 2005-2007 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* threetextrows widget HSPS-plugin language specific IBY file.
+*
+*/
+
+#ifndef __THREETEXTROWS_200315C5_RESOURCES_IBY__
+#define __THREETEXTROWS_200315C5_RESOURCES_IBY__
+
+#if defined(FF_LAYOUT_480_640_TOUCH_VGA4) || defined(FF_LAYOUT_640_480_TOUCH_VGA4)          
+
+// Enabled by DTD-localization tools, language specific
+#if defined (__LOCALES_37_IBY__)
+data=ZPRIVATE\200159c0\install\threetextrows_200315c5\xuikon\37\threetextrows.o0037 \private\200159c0\install\threetextrows_200315c5\xuikon\37\threetextrows.o0037
+#endif
+#if defined  (__LOCALES_50_IBY__)
+data=ZPRIVATE\200159c0\install\threetextrows_200315c5\xuikon\50\threetextrows.o0050 \private\200159c0\install\threetextrows_200315c5\xuikon\50\threetextrows.o0050
+#endif
+#if defined  (__LOCALES_57_IBY__)
+data=ZPRIVATE\200159c0\install\threetextrows_200315c5\xuikon\57\threetextrows.o0057 \private\200159c0\install\threetextrows_200315c5\xuikon\57\threetextrows.o0057
+#endif
+#if defined  (__LOCALES_94_IBY__)
+data=ZPRIVATE\200159c0\install\threetextrows_200315c5\xuikon\94\threetextrows.o0094 \private\200159c0\install\threetextrows_200315c5\xuikon\94\threetextrows.o0094
+#endif
+
+#endif // FF_LAYOUT_480_640_TOUCH_VGA4 || FF_LAYOUT_640_480_TOUCH_VGA4
+
+#endif // __THREETEXTROWS_200315C5_RESOURCES_IBY__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/threetextrows_200315c5/rom/threetextrows_variant.iby	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,29 @@
+/*
+* Copyright (c) 2005-2007 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* threetextrows widget HSPS-plugin variant specific IBY file.
+*
+*/
+
+#ifndef __THREETEXTROWS_200315C5_VARIANT_IBY__
+#define __THREETEXTROWS_200315C5_VARIANT_IBY__
+
+#if defined(FF_LAYOUT_480_640_TOUCH_VGA4) || defined(FF_LAYOUT_640_480_TOUCH_VGA4)          
+
+// Enabled by variation tools, variant specific
+data=ZPRIVATE\200159c0\install\threetextrows_200315c5\hsps\00\widgetconfiguration.xml \private\200159c0\install\threetextrows_200315c5\hsps\00\widgetconfiguration.xml
+
+#endif // FF_LAYOUT_480_640_TOUCH_VGA4 || FF_LAYOUT_640_480_TOUCH_VGA4
+
+#endif  // __THREETEXTROWS_200315C5_VARIANT_IBY__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/threetextrows_200315c5/xuikon/00/threetextrows.css	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,11 @@
+text.text_box
+{
+    padding-left:11px;
+    padding-right:11px;
+    text-align:left;
+    font-family: EAknLogicalFontSecondaryFont;
+    font-size: 30px;
+    color: "SKIN(268458534 13056 74)";
+    nav-index:appearance;
+    _s60-text-valign: top;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/threetextrows_200315c5/xuikon/00/threetextrows.dat	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<data>
+    <AppUid>2001CB4F</AppUid>
+    <Provideruid>101FB657</Provideruid>
+    <ThemeUid>110012F9</ThemeUid>
+    <ThemeFullName>threetextrows</ThemeFullName>
+    <ThemeShortName>threetextrows</ThemeShortName>
+    <ThemeVersion>1.0</ThemeVersion>
+    <FileXML>threetextrows.xml</FileXML>
+    <FileCSS>threetextrows.css</FileCSS>
+    
+</data>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/threetextrows_200315c5/xuikon/00/threetextrows.xml	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- <!DOCTYPE xmluiml SYSTEM "AI3_Demo.dtd"> -->
+<xmluiml xmlns="http://www.series60.com/xml/xmluiml/1" version="1.0">
+
+    <widget id="threetextrows_template">
+        <!-- Data plugin in this widget -->
+        <contentsource id="threetextrows_plugin" name="" value="0x20019594" />
+        
+        <configuration name="service" value="Service.ContentPublishing"/>
+        <configuration name="interface" value="IContentPublishing"/>
+        <configuration name="command" value="GetList"/>
+        <configuration id="pub_id" name="publisher" value=""/>
+      	
+      	<box id="text_container">
+	        <text id="row1" class="text_box" focusable="true" _s60-initial-focus="1">
+	         <!-- Template designer choice -->
+		       <actions>
+	           <action>
+	            <trigger name="activate"/>
+	            <event id="p1trigger" name=""/>
+	           </action>
+	          </actions>
+	          <configuration name="content_type" value="text1"/>
+	          <property id="prop1" class=""/>
+	      	</text>
+	      	
+	      	<text id="row2"  class="text_box" focusable="true" >
+	      	  <!-- Template designer choice -->
+	      	  <actions>
+	           <action>
+	            <trigger name="activate"/>
+	            <event id="p2trigger" name=""/>
+	           </action>
+	          </actions>
+	          <configuration name="content_type" value="text2"/>
+	          <property id="prop2" class=""/>
+	      	</text>
+	      	
+	      	<text id="row3"  class="text_box" focusable="true" >
+	      	  <!-- Template designer choice -->
+	      	  <actions>
+	           <action>
+	            <trigger name="activate"/>
+	            <event id="p3trigger" name=""/>
+	           </action>
+	          </actions>
+	          <configuration name="content_type" value="text3"/>
+	          <property id="prop3" class=""/>
+	      	</text>
+				</box>
+				<menuextension>
+            <!-- dynmenuitems are mapped to HS view.xml menu based on target attribute.
+                 HS view.xml provides localisation for predined items: "settings" and "refresh". -->                
+            <dynmenuitem type="widgetsettings" target="hs_widget_menuitem_settings">
+                <actions>
+                    <action>
+                        <trigger name="activate"/>
+                        <event name="menuitem(widgetsettings)" destination="threetextrows_plugin"/>  
+                    </action>
+                </actions>
+            </dynmenuitem>                    
+            <dynmenuitem type="refresh" target="hs_widget_menuitem_refresh">
+                <actions>
+                    <action>
+                        <trigger name="activate"/>
+                        <event name="menuitem(refresh)" destination="threetextrows_plugin"/>  
+                    </action>
+                </actions>
+            </dynmenuitem>        
+        </menuextension>
+    </widget>
+</xmluiml>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/threetextrows_200315c5/xuikon/37/threetextrows.css	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,12 @@
+text.text_box
+{
+    padding-left:11px;
+    padding-right:11px;
+    direction: ltr;
+    text-align: right;
+    font-family: EAknLogicalFontSecondaryFont;
+    font-size: 30px;
+    color: "SKIN(268458534 13056 74)";
+    nav-index:appearance;
+    _s60-text-valign: top;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/threetextrows_200315c5/xuikon/50/threetextrows.css	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,12 @@
+text.text_box
+{
+    padding-left:11px;
+    padding-right:11px;
+    direction: ltr;
+    text-align: right;
+    font-family: EAknLogicalFontSecondaryFont;
+    font-size: 30px;
+    color: "SKIN(268458534 13056 74)";
+    nav-index:appearance;
+    _s60-text-valign: top;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/threetextrows_200315c5/xuikon/57/threetextrows.css	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,12 @@
+text.text_box
+{
+    padding-left:11px;
+    padding-right:11px;
+    direction: ltr;
+    text-align: right;
+    font-family: EAknLogicalFontSecondaryFont;
+    font-size: 30px;
+    color: "SKIN(268458534 13056 74)";
+    nav-index:appearance;
+    _s60-text-valign: top;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/threetextrows_200315c5/xuikon/94/threetextrows.css	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,12 @@
+text.text_box
+{
+    padding-left:11px;
+    padding-right:11px;
+    direction: ltr;
+    text-align: right;
+    font-family: EAknLogicalFontSecondaryFont;
+    font-size: 30px;
+    color: "SKIN(268458534 13056 74)";
+    nav-index:appearance;
+    _s60-text-valign: top;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/tworows_200315c3/group/bld.inf	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,66 @@
+/*
+* Copyright (c) 2002-2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* The information required for building
+*
+*/
+
+#include <platform_paths.hrh>
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_EXPORTS
+// Support for productization and Carbide.Ui customization
+//********************************************************
+../hsps/00/manifest.dat /epoc32/data/Z/resource/homescreen/tworows_200315c3/hsps/manifest.dat
+../hsps/00/widgetconfiguration.xml /epoc32/data/Z/resource/homescreen/tworows_200315c3/hsps/widgetconfiguration.xml
+../xuikon/00/tworows.dat /epoc32/data/Z/resource/homescreen/tworows_200315c3/xuikon/tworows_200315c3.dat
+../xuikon/00/tworows.css /epoc32/data/Z/resource/homescreen/tworows_200315c3/xuikon/tworows.css
+../xuikon/00/tworows.xml /epoc32/data/Z/resource/homescreen/tworows_200315c3/xuikon/tworows.xml
+
+// Arabic languages
+//*****************
+../xuikon/37/tworows.css /epoc32/data/Z/resource/homescreen/tworows_200315c3/xuikon/37/tworows.css
+../xuikon/50/tworows.css /epoc32/data/Z/resource/homescreen/tworows_200315c3/xuikon/50/tworows.css
+../xuikon/57/tworows.css /epoc32/data/Z/resource/homescreen/tworows_200315c3/xuikon/57/tworows.css
+../xuikon/94/tworows.css /epoc32/data/Z/resource/homescreen/tworows_200315c3/xuikon/94/tworows.css
+
+
+// Support for S60 builds
+//***********************
+../rom/tworows_resources.iby LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(tworows_200315c3_resources.iby)
+../rom/tworows_customer.iby CUSTOMER_APP_LAYER_IBY_EXPORT_PATH(tworows_200315c3_customer.iby)
+../rom/tworows_variant.iby CUSTOMER_APP_LAYER_IBY_EXPORT_PATH(tworows_200315c3_variant.iby)
+../rom/tworows.iby CORE_APP_LAYER_IBY_EXPORT_PATH(tworows_200315c3.iby)
+
+// Dtd-localization
+//*****************
+PRJ_EXTENSIONS
+START EXTENSION tools/dtd
+OPTION SWITCH_LOC_FILE_NAME tworows_200315c3
+OPTION DTD_TYPE widget
+OPTION LOC_FOLDERS yes
+END
+
+
+PRJ_MMPFILES
+
+PRJ_TESTMMPFILES
+
+//  End of File  
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/tworows_200315c3/hsps/00/manifest.dat	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,63 @@
+<?xml version="1.0"?>
+
+<package version="2.0">
+
+
+
+    <family>vga_tch</family>
+
+
+
+    <type>template</type>
+
+
+
+    <!-- interface uid -->
+
+	<interfaceuid>0x2001f48a</interfaceuid>
+
+
+
+	<!-- vendor uid  -->
+
+	<provideruid>0x101fb657</provideruid>
+
+
+
+	<!-- uid -->
+
+	<configurationuid>0x200315c3</configurationuid>
+
+	
+
+	<!-- description -->
+
+	<fullname>tworows</fullname>
+
+	<shortname>twrs</shortname>
+
+	<version>1.0</version>
+
+
+
+	<!-- configuration -->
+
+	<filexml>widgetconfiguration.xml</filexml>
+
+
+
+  <!-- Locale independent/common resources -->
+
+
+
+  <!-- Locale specific resources -->
+
+	<localization>
+
+  	<fileresource>tworows.o0000</fileresource>	
+
+  </localization>
+
+
+
+</package>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/tworows_200315c3/hsps/00/widgetconfiguration.xml	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,41 @@
+<configuration>
+    <control>
+        <settings>
+          <item id="tworows_plugin" name="ContentSource">
+            <property  name="name" value=""/>
+          </item>
+          <!--Def value "Test_Publisher"-->
+          <item id="pub_id" name="publisher">
+            <property name="value" value=""/> 
+          </item>
+          
+          <!--Template designer choice-->
+          <item id="prop1" name="contentdata">
+            <property  name="class" value="image1"/>
+          </item>
+          <!--Template designer choice-->
+          <item id="p1trigger" name="trigger"> 
+            <property  name="name" value="image1"/>  
+          </item>
+          
+          <!--Template designer choice-->
+          <item id="prop2" name="contentdata">
+            <property  name="class" value="text1"/>
+          </item>
+					<!--Template designer choice-->
+          <item id="p2trigger" name="trigger" > 
+            <property  name="name" value="text1"/>  
+          </item>
+          
+          <!--Template designer choice-->   
+          <item id="prop3" name="contentdata">
+            <property  name="class" value="text2"/>
+          </item>
+           <!--Template designer choice-->
+          <item id="p3trigger" name="trigger" > 
+            <property  name="name" value="text2"/>  
+          </item>          
+               
+        </settings>
+    </control>
+</configuration>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/tworows_200315c3/rom/tworows.iby	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,29 @@
+/*
+* Copyright (c) 2005-2007 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* tworows widget HSPS-plugin IBY file.
+*
+*/
+
+#ifndef __TWOROWS_200315C3_IBY__
+#define __TWOROWS_200315C3_IBY__
+
+#if defined(FF_LAYOUT_480_640_TOUCH_VGA4) || defined(FF_LAYOUT_640_480_TOUCH_VGA4)
+
+// Enabled by DTD-localization tools
+data=ZPRIVATE\200159c0\install\tworows_200315c3\hsps\00\manifest.dat \private\200159c0\install\tworows_200315c3\hsps\00\manifest.dat
+
+#endif // FF_LAYOUT_480_640_TOUCH_VGA4 || FF_LAYOUT_640_480_TOUCH_VGA4
+
+#endif // __TWOROWS_200315C3_IBY__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/tworows_200315c3/rom/tworows_customer.iby	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,29 @@
+/*
+* Copyright (c) 2005-2007 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* tworows widget HSPS-plugin language specific IBY file.
+*
+*/
+
+#ifndef __TWOROWS_200315C3_CUSTOMER_IBY__
+#define __TWOROWS_200315C3_CUSTOMER_IBY__
+
+#if defined(FF_LAYOUT_480_640_TOUCH_VGA4) || defined(FF_LAYOUT_640_480_TOUCH_VGA4)          
+
+// Enabled by DTD-localization tools, language specific
+data=ZPRIVATE\200159c0\install\tworows_200315c3\xuikon\00\tworows.o0000 \private\200159c0\install\tworows_200315c3\xuikon\00\tworows.o0000
+
+#endif // FF_LAYOUT_480_640_TOUCH_VGA4 || FF_LAYOUT_640_480_TOUCH_VGA4
+
+#endif // __TWOROWS_200315C3_CUSTOMER_IBY__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/tworows_200315c3/rom/tworows_resources.iby	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,40 @@
+/*
+* Copyright (c) 2005-2007 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* tworows widget HSPS-plugin language specific IBY file.
+*
+*/
+
+#ifndef __TWOROWS_200315C3_RESOURCES_IBY__
+#define __TWOROWS_200315C3_RESOURCES_IBY__
+
+#if defined(FF_LAYOUT_480_640_TOUCH_VGA4) || defined(FF_LAYOUT_640_480_TOUCH_VGA4)          
+
+// Enabled by DTD-localization tools, language specific
+#if defined (__LOCALES_37_IBY__)
+data=ZPRIVATE\200159c0\install\tworows_200315c3\xuikon\37\tworows.o0037 \private\200159c0\install\tworows_200315c3\xuikon\37\tworows.o0037
+#endif
+#if defined  (__LOCALES_50_IBY__)
+data=ZPRIVATE\200159c0\install\tworows_200315c3\xuikon\50\tworows.o0050 \private\200159c0\install\tworows_200315c3\xuikon\50\tworows.o0050
+#endif
+#if defined  (__LOCALES_57_IBY__)
+data=ZPRIVATE\200159c0\install\tworows_200315c3\xuikon\57\tworows.o0057 \private\200159c0\install\tworows_200315c3\xuikon\57\tworows.o0057
+#endif
+#if defined  (__LOCALES_94_IBY__)
+data=ZPRIVATE\200159c0\install\tworows_200315c3\xuikon\94\tworows.o0094 \private\200159c0\install\tworows_200315c3\xuikon\94\tworows.o0094
+#endif
+
+#endif // FF_LAYOUT_480_640_TOUCH_VGA4 || FF_LAYOUT_640_480_TOUCH_VGA4
+
+#endif // __TWOROWS_200315C3_RESOURCES_IBY__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/tworows_200315c3/rom/tworows_variant.iby	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,29 @@
+/*
+* Copyright (c) 2005-2007 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* tworows widget HSPS-plugin variant specific IBY file.
+*
+*/
+
+#ifndef __TWOROWS_200315C3_VARIANT_IBY__
+#define __TWOROWS_200315C3_VARIANT_IBY__
+
+#if defined(FF_LAYOUT_480_640_TOUCH_VGA4) || defined(FF_LAYOUT_640_480_TOUCH_VGA4)          
+
+// Enabled by variation tools, variant specific
+data=ZPRIVATE\200159c0\install\tworows_200315c3\hsps\00\widgetconfiguration.xml \private\200159c0\install\tworows_200315c3\hsps\00\widgetconfiguration.xml
+
+#endif // FF_LAYOUT_480_640_TOUCH_VGA4 || FF_LAYOUT_640_480_TOUCH_VGA4
+
+#endif  // __TWOROWS_200315C3_VARIANT_IBY__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/tworows_200315c3/xuikon/00/tworows.css	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,43 @@
+widget#tworows_template
+{
+    block-progression:rl;
+}
+
+image#image_container
+{
+    height: 95px;
+    width: 95px;
+    margin-top:5px;
+    margin-bottom:5px;
+    margin-left:5px;
+    margin-right:4px;
+    padding-top:5px;
+    padding-bottom:5px;
+    padding-left:5px;
+    padding-right:5px;
+    nav-index:appearance;
+    _s60-aspect-ratio:preserve;
+}
+
+box#text_container
+{
+    direction: ltr;
+    block-progression:tb;
+    margin-left:3px;
+    margin-right:5px;
+    margin-top:14px;
+}
+
+text.text_box
+{
+    padding-right:5px;
+    padding-left:5px;
+    padding-top:5px;
+    padding-bottom:5px;
+    font-family: EAknLogicalFontSecondaryFont;
+    font-size: 3.5u;
+    height:30px;
+    color:"SKIN(268458534 13056 74)";
+    nav-index:appearance;
+    _s60-text-valign: top;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/tworows_200315c3/xuikon/00/tworows.dat	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<data>
+    <AppUid>2001CB4F</AppUid>
+    <Provideruid>101FB657</Provideruid>
+    <ThemeUid>110012F7</ThemeUid>
+    <ThemeFullName>tworows</ThemeFullName>
+    <ThemeShortName>tworows</ThemeShortName>
+    <ThemeVersion>1.0</ThemeVersion>
+    <FileXML>tworows.xml</FileXML>
+    <FileCSS>tworows.css</FileCSS>
+    
+</data>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/tworows_200315c3/xuikon/00/tworows.xml	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- <!DOCTYPE xmluiml SYSTEM "AI3_Demo.dtd"> -->
+<xmluiml xmlns="http://www.series60.com/xml/xmluiml/1" version="1.0">
+
+    <widget id="tworows_template">
+        <!-- Data plugin in this widget -->
+        <contentsource id="tworows_plugin" name="" value="0x20019594" />
+        
+        <configuration name="service" value="Service.ContentPublishing"/>
+        <configuration name="interface" value="IContentPublishing"/>
+        <configuration name="command" value="GetList"/>
+        <configuration id="pub_id" name="publisher" value=""/>
+
+ 			  <image id="image_container" focusable="true" _s60-initial-focus="1">
+ 			    <!-- Template designer choice -->
+	 			  <actions>
+	          <action>
+	            <trigger name="activate"/>
+	            <event id="p1trigger" name=""/>
+	          </action>
+	        </actions>
+          <configuration name="content_type" value="image1"/>
+          <property id="prop1" class=""/>
+      	</image>
+      	
+      	<box id="text_container">
+	        <text id="row1" class="text_box" focusable="true" >
+	          <!-- Template designer choice -->
+		        <actions>
+		          <action>
+		            <trigger name="activate"/>
+		            <event id="p2trigger" name=""/>
+		          </action>
+		        </actions>
+		        <configuration name="content_type" value="text1"/>
+	          <property id="prop2" class=""/>
+	      	</text>
+	      	
+	      	<text id="row2" class="text_box"  focusable="true" >
+	      	  <!-- Template designer choice -->
+		      	<actions>
+		          <action>
+		            <trigger name="activate"/>
+		            <event id="p3trigger" name=""/>
+		          </action>
+		        </actions>
+		        <configuration name="content_type" value="text2"/>
+	          <property id="prop3" class=""/>
+	      	</text>
+				</box>
+				<menuextension>
+            <!-- dynmenuitems are mapped to HS view.xml menu based on target attribute.
+                 HS view.xml provides localisation for predined items: "settings" and "refresh". -->                
+            <dynmenuitem type="widgetsettings" target="hs_widget_menuitem_settings">
+                <actions>
+                    <action>
+                        <trigger name="activate"/>
+                        <event name="menuitem(widgetsettings)" destination="tworows_plugin"/>  
+                    </action>
+                </actions>
+            </dynmenuitem>                    
+            <dynmenuitem type="refresh" target="hs_widget_menuitem_refresh">
+                <actions>
+                    <action>
+                        <trigger name="activate"/>
+                        <event name="menuitem(refresh)" destination="tworows_plugin"/>  
+                    </action>
+                </actions>
+            </dynmenuitem>        
+        </menuextension>
+    </widget>
+</xmluiml>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/tworows_200315c3/xuikon/37/tworows.css	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,45 @@
+widget#tworows_template
+{
+    direction: rtl;
+    block-progression:rl;
+}
+
+image#image_container
+{
+    height: 70px;
+    width: 70px;
+    margin-top:3px;
+    margin-bottom:3px;
+    margin-left:3px;
+    margin-right:2px;
+    padding-top:3px;
+    padding-bottom:3px;
+    padding-left:3px;
+    padding-right:3px;
+    nav-index:appearance;
+    _s60-aspect-ratio:preserve;
+}
+
+box#text_container
+{
+    block-progression:tb;
+    margin-left:2px;
+    margin-right:3px;
+    margin-top:10px;
+}
+
+text.text_box
+{
+    padding-right:3px;
+    padding-left:3px;
+    padding-top:3px;
+    padding-bottom:3px;
+    direction: ltr;
+    text-align: right;
+    font-family: EAknLogicalFontSecondaryFont;
+    font-size: 3.5u;
+    height:25px;
+    color:"SKIN(268458534 13056 74)";
+    nav-index:appearance;
+    _s60-text-valign: top;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/tworows_200315c3/xuikon/50/tworows.css	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,45 @@
+widget#tworows_template
+{
+    direction: rtl;
+    block-progression:rl;
+}
+
+image#image_container
+{
+    height: 70px;
+    width: 70px;
+    margin-top:3px;
+    margin-bottom:3px;
+    margin-left:3px;
+    margin-right:2px;
+    padding-top:3px;
+    padding-bottom:3px;
+    padding-left:3px;
+    padding-right:3px;
+    nav-index:appearance;
+    _s60-aspect-ratio:preserve;
+}
+
+box#text_container
+{
+    block-progression:tb;
+    margin-left:2px;
+    margin-right:3px;
+    margin-top:10px;
+}
+
+text.text_box
+{
+    padding-right:3px;
+    padding-left:3px;
+    padding-top:3px;
+    padding-bottom:3px;
+    direction: ltr;
+    text-align: right;
+    font-family: EAknLogicalFontSecondaryFont;
+    font-size: 3.5u;
+    height:25px;
+    color:"SKIN(268458534 13056 74)";
+    nav-index:appearance;
+    _s60-text-valign: top;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/tworows_200315c3/xuikon/57/tworows.css	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,45 @@
+widget#tworows_template
+{
+    direction: rtl;
+    block-progression:rl;
+}
+
+image#image_container
+{
+    height: 70px;
+    width: 70px;
+    margin-top:3px;
+    margin-bottom:3px;
+    margin-left:3px;
+    margin-right:2px;
+    padding-top:3px;
+    padding-bottom:3px;
+    padding-left:3px;
+    padding-right:3px;
+    nav-index:appearance;
+    _s60-aspect-ratio:preserve;
+}
+
+box#text_container
+{
+    block-progression:tb;
+    margin-left:2px;
+    margin-right:3px;
+    margin-top:10px;
+}
+
+text.text_box
+{
+    padding-right:3px;
+    padding-left:3px;
+    padding-top:3px;
+    padding-bottom:3px;
+    direction: ltr;
+    text-align: right;
+    font-family: EAknLogicalFontSecondaryFont;
+    font-size: 3.5u;
+    height:25px;
+    color:"SKIN(268458534 13056 74)";
+    nav-index:appearance;
+    _s60-text-valign: top;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/data/vga_tch/tworows_200315c3/xuikon/94/tworows.css	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,45 @@
+widget#tworows_template
+{
+    direction: rtl;
+    block-progression:rl;
+}
+
+image#image_container
+{
+    height: 70px;
+    width: 70px;
+    margin-top:3px;
+    margin-bottom:3px;
+    margin-left:3px;
+    margin-right:2px;
+    padding-top:3px;
+    padding-bottom:3px;
+    padding-left:3px;
+    padding-right:3px;
+    nav-index:appearance;
+    _s60-aspect-ratio:preserve;
+}
+
+box#text_container
+{
+    block-progression:tb;
+    margin-left:2px;
+    margin-right:3px;
+    margin-top:10px;
+}
+
+text.text_box
+{
+    padding-right:3px;
+    padding-left:3px;
+    padding-top:3px;
+    padding-bottom:3px;
+    direction: ltr;
+    text-align: right;
+    font-family: EAknLogicalFontSecondaryFont;
+    font-size: 3.5u;
+    height:25px;
+    color:"SKIN(268458534 13056 74)";
+    nav-index:appearance;
+    _s60-text-valign: top;
+}
--- a/idlehomescreen/data/vga_tch/view1_2001fdb9/conf/view2001fdb9.confml	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/vga_tch/view1_2001fdb9/conf/view2001fdb9.confml	Wed Sep 15 12:00:00 2010 +0300
@@ -1,6 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <configuration name="VGA Homescreen 1" version="1" xmlns="http://www.s60.com/xml/confml/2" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xs="http://www.w3.org/2001/XMLSchema">
   <feature name="VGA Homescreen 1 widgets" ref="VGA_HomescreenPlugins_1">
+    <setting ref="SupportQhd" name="Qhd Support" type="boolean">
+      <desc>The Qhd touch is a supported display type of the xuikon homescreen</desc>
+    </setting>
+    <setting ref="SupportVga" name="Vga Support" type="boolean">
+      <desc>The Vga touch is a supported display type of the xuikon homescreen</desc>
+    </setting>
     <setting name="Max Widgets" ref="MaxWidgets" type="string">
       <desc>Maximum widget amount in Homescreen 1 page. Customizable</desc>
     </setting>
@@ -29,7 +35,7 @@
       <option name="Empty" value="0x2001F47F" />    
       <option name="ClockDate" value="0x200286E6" />
       <option name="Desktop" value="0x20018EEE" />
-      <option name="Profilemode" value="0x200286e7" />
+      <option name="Profilemode" value="0x200286E7" />
       <option name="wrtplugin_1" value="0x20022FD4"/>
       <option name="wrtplugin_2" value="0x20022FD5"/>
       <option name="wrtplugin_3" value="0x20022FD6"/>
@@ -237,6 +243,8 @@
   </feature>
 <data>
     <VGA_HomescreenPlugins_1>
+      <SupportQhd>true</SupportQhd>
+      <SupportVga>true</SupportVga>
       <MaxWidgets>6</MaxWidgets>
     <UseEmptyWidgets>true</UseEmptyWidgets>
     <ItemIdEmptyWidgets>hs_vga_tch_view</ItemIdEmptyWidgets>
@@ -323,7 +331,7 @@
       <ShortcutPropertyNameParam>param</ShortcutPropertyNameParam>
       </Plugins>
     <Plugins>
-        <Uid>0x2001f47f</Uid>
+        <Uid>0x200255b6</Uid>
       <BundleIdentifier>0</BundleIdentifier>
       <TemplateIdentifier>0</TemplateIdentifier>
       <LockingStatus>permanent</LockingStatus>
--- a/idlehomescreen/data/vga_tch/view1_2001fdb9/conf/view2001fdb9.gcfml	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/vga_tch/view1_2001fdb9/conf/view2001fdb9.gcfml	Wed Sep 15 12:00:00 2010 +0300
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<container xmlns="http://www.symbianfoundation.org/xml/implml/1">
+<container xmlns="http://www.symbianfoundation.org/xml/implml/1" condition="${VGA_HomescreenPlugins_1.SupportVga}">
 	<tag name="target" value="core"/>
 	<tag name="target" value="rofs2"/>
 	<tag name="target" value="rofs3"/>
Binary file idlehomescreen/data/vga_tch/view1_2001fdb9/conf/view2001fdb9manifest.confml has changed
--- a/idlehomescreen/data/vga_tch/view1_2001fdb9/conf/view2001fdb9manifest.gcfml	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/vga_tch/view1_2001fdb9/conf/view2001fdb9manifest.gcfml	Wed Sep 15 12:00:00 2010 +0300
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<container xmlns="http://www.symbianfoundation.org/xml/implml/1">
+<container xmlns="http://www.symbianfoundation.org/xml/implml/1" condition="${VGAHomescreen1manifest.SupportVga}">
 	<tag name="target" value="core"/>
 	<tag name="target" value="rofs2"/>
 	<tag name="target" value="rofs3"/>
Binary file idlehomescreen/data/vga_tch/view1_2001fdb9/conf/view2001fdb9xuikon.confml has changed
--- a/idlehomescreen/data/vga_tch/view1_2001fdb9/conf/view2001fdb9xuikon.gcfml	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/vga_tch/view1_2001fdb9/conf/view2001fdb9xuikon.gcfml	Wed Sep 15 12:00:00 2010 +0300
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<container xmlns="http://www.symbianfoundation.org/xml/implml/1">
+<container xmlns="http://www.symbianfoundation.org/xml/implml/1" condition="${VGAHomescreen1XuikonFolder.SupportVga}">
 	<tag name="target" value="core"/>
 	<tag name="target" value="rofs2"/>
 	<tag name="target" value="rofs3"/>
--- a/idlehomescreen/data/vga_tch/view1_2001fdb9/group/bld.inf	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/vga_tch/view1_2001fdb9/group/bld.inf	Wed Sep 15 12:00:00 2010 +0300
@@ -66,7 +66,7 @@
 //***********************
 ../rom/view_resources.iby LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(view1_2001fdb9_resources.iby)
 ../rom/view_customer.iby CUSTOMER_APP_LAYER_IBY_EXPORT_PATH(view1_2001fdb9_customer.iby)
-../rom/view_variant.iby CUSTOMER_APP_LAYER_IBY_EXPORT_PATH(view1_2001fdb9_variant.iby)
+//../rom/view_variant.iby CUSTOMER_APP_LAYER_IBY_EXPORT_PATH(view1_2001fdb9_variant.iby)
 //../rom/view.iby CORE_APP_LAYER_IBY_EXPORT_PATH(view1_2001fdb9.iby)
 
 
--- a/idlehomescreen/data/vga_tch/view1_2001fdb9/hsps/00/viewconfiguration.xml	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/vga_tch/view1_2001fdb9/hsps/00/viewconfiguration.xml	Wed Sep 15 12:00:00 2010 +0300
@@ -13,7 +13,7 @@
         <plugins>
             <plugin uid="0x200286e6" bundle_id="0" template_id="0" locking_status="permanent"/>
             <plugin uid="0x200286e7" bundle_id="0" template_id="0" locking_status="permanent"/>
-            <plugin uid="0x2001f47f" bundle_id="0" template_id="0" locking_status="permanent"/>
+            <plugin uid="0x200255b6" bundle_id="0" template_id="0" locking_status="permanent"/>
             <plugin uid="0x20018eee" bundle_id="0" template_id="0" locking_status="none">
 		<initial_settings>
 	            <settings>
--- a/idlehomescreen/data/vga_tch/view1_2001fdb9/xuikon/37/view.css	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/vga_tch/view1_2001fdb9/xuikon/37/view.css	Wed Sep 15 12:00:00 2010 +0300
@@ -63,11 +63,12 @@
 
 softkey#msk_ltr
 {
-    display: block;
+    display: none;
 }
 
 softkey#msk_rtl
 {
-    display: none;
+    display: block;
 }
 
+
--- a/idlehomescreen/data/vga_tch/view1_2001fdb9/xuikon/50/view.css	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/vga_tch/view1_2001fdb9/xuikon/50/view.css	Wed Sep 15 12:00:00 2010 +0300
@@ -63,11 +63,11 @@
 
 softkey#msk_ltr
 {
-    display: block;
+    display: none;
 }
 
 softkey#msk_rtl
 {
-    display: none;
+    display: block;
 }
 
--- a/idlehomescreen/data/vga_tch/view1_2001fdb9/xuikon/57/view.css	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/vga_tch/view1_2001fdb9/xuikon/57/view.css	Wed Sep 15 12:00:00 2010 +0300
@@ -63,11 +63,11 @@
 
 softkey#msk_ltr
 {
-    display: block;
+    display: none;
 }
 
 softkey#msk_rtl
 {
-    display: none;
+    display: block;
 }
 
--- a/idlehomescreen/data/vga_tch/view1_2001fdb9/xuikon/94/view.css	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/vga_tch/view1_2001fdb9/xuikon/94/view.css	Wed Sep 15 12:00:00 2010 +0300
@@ -63,11 +63,12 @@
 
 softkey#msk_ltr
 {
-    display: block;
+    display: none;
 }
 
 softkey#msk_rtl
 {
-    display: none;
+    display: block;
 }
 
+
--- a/idlehomescreen/data/vga_tch/view2_200286ea/conf/view200286ea.confml	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/vga_tch/view2_200286ea/conf/view200286ea.confml	Wed Sep 15 12:00:00 2010 +0300
@@ -1,6 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <configuration name="VGA Homescreen 2" version="1" xmlns="http://www.s60.com/xml/confml/2" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xs="http://www.w3.org/2001/XMLSchema">
   <feature name="VGA Homescreen 2 widgets" ref="VGA_HomescreenPlugins_2">
+    <setting ref="SupportQhd" name="Qhd Support" type="boolean">
+      <desc>The Qhd touch is a supported display type of the xuikon homescreen</desc>
+    </setting>
+    <setting ref="SupportVga" name="Vga Support" type="boolean">
+      <desc>The Vga touch is a supported display type of the xuikon homescreen</desc>
+    </setting>
     <setting name="Max Widgets" ref="MaxWidgets" type="string">
       <desc>Maximum widget amount in Homescreen 2 page. Customizable</desc>
     </setting>
@@ -237,6 +243,8 @@
   </feature>
 <data>
     <VGA_HomescreenPlugins_2>
+      <SupportQhd>true</SupportQhd>
+      <SupportVga>true</SupportVga>
       <MaxWidgets>6</MaxWidgets>
     <UseEmptyWidgets>true</UseEmptyWidgets>
     <ItemIdEmptyWidgets>hs_vga_tch_view</ItemIdEmptyWidgets>
@@ -323,85 +331,7 @@
       <ShortcutPropertyNameParam>param</ShortcutPropertyNameParam>
       </Plugins>
     <Plugins>
-        <Uid>0x2001f47f</Uid>
-      <BundleIdentifier>0</BundleIdentifier>
-      <TemplateIdentifier>0</TemplateIdentifier>
-      <LockingStatus>permanent</LockingStatus>
-      <ShortcutWidget>0</ShortcutWidget>
-      <Customize1Shortcut>0</Customize1Shortcut>
-      <Shortcut1Type />
-      <Shortcut1Uid />
-      <Shortcut1View />
-      <Shortcut1Param />
-      <Customize2Shortcut />
-      <Shortcut2Type />
-      <Shortcut2Uid />
-      <Shortcut2View />
-      <Shortcut2Param />
-      <Customize3Shortcut />
-      <Shortcut3Type />
-      <Shortcut3Uid />
-      <Shortcut3View />
-      <Shortcut3Param />
-      <Customize4Shortcut />
-      <Shortcut4Type />
-      <Shortcut4Uid />
-      <Shortcut4View />
-      <Shortcut4Param />
-      <Shortcut1ItemId>first</Shortcut1ItemId>
-      <Shortcut1ItemName>Shortcut1</Shortcut1ItemName>
-      <Shortcut2ItemId>second</Shortcut2ItemId>
-      <Shortcut2ItemName>Shortcut2</Shortcut2ItemName>
-      <Shortcut3ItemId>third</Shortcut3ItemId>
-      <Shortcut3ItemName>Shortcut3</Shortcut3ItemName>
-      <Shortcut4ItemId>fourth</Shortcut4ItemId>
-      <Shortcut4ItemName>Shortcut4</Shortcut4ItemName>
-      <ShortcutPropertyNameType>type</ShortcutPropertyNameType>
-      <ShortcutPropertyNameUid>uid</ShortcutPropertyNameUid>
-      <ShortcutPropertyNameView>view</ShortcutPropertyNameView>
-      <ShortcutPropertyNameParam>param</ShortcutPropertyNameParam>
-      </Plugins>
-    <Plugins>
-        <Uid>0x2001f47f</Uid>
-      <BundleIdentifier>0</BundleIdentifier>
-      <TemplateIdentifier>0</TemplateIdentifier>
-      <LockingStatus>permanent</LockingStatus>
-      <ShortcutWidget>0</ShortcutWidget>
-      <Customize1Shortcut>0</Customize1Shortcut>
-      <Shortcut1Type />
-      <Shortcut1Uid />
-      <Shortcut1View />
-      <Shortcut1Param />
-      <Customize2Shortcut />
-      <Shortcut2Type />
-      <Shortcut2Uid />
-      <Shortcut2View />
-      <Shortcut2Param />
-      <Customize3Shortcut />
-      <Shortcut3Type />
-      <Shortcut3Uid />
-      <Shortcut3View />
-      <Shortcut3Param />
-      <Customize4Shortcut />
-      <Shortcut4Type />
-      <Shortcut4Uid />
-      <Shortcut4View />
-      <Shortcut4Param />
-      <Shortcut1ItemId>first</Shortcut1ItemId>
-      <Shortcut1ItemName>Shortcut1</Shortcut1ItemName>
-      <Shortcut2ItemId>second</Shortcut2ItemId>
-      <Shortcut2ItemName>Shortcut2</Shortcut2ItemName>
-      <Shortcut3ItemId>third</Shortcut3ItemId>
-      <Shortcut3ItemName>Shortcut3</Shortcut3ItemName>
-      <Shortcut4ItemId>fourth</Shortcut4ItemId>
-      <Shortcut4ItemName>Shortcut4</Shortcut4ItemName>
-      <ShortcutPropertyNameType>type</ShortcutPropertyNameType>
-      <ShortcutPropertyNameUid>uid</ShortcutPropertyNameUid>
-      <ShortcutPropertyNameView>view</ShortcutPropertyNameView>
-      <ShortcutPropertyNameParam>param</ShortcutPropertyNameParam>
-      </Plugins>
-    <Plugins>
-        <Uid>0x2001f47f</Uid>
+        <Uid>0x200255b6</Uid>
       <BundleIdentifier>0</BundleIdentifier>
       <TemplateIdentifier>0</TemplateIdentifier>
       <LockingStatus>permanent</LockingStatus>
@@ -478,6 +408,84 @@
       <ShortcutPropertyNameView>view</ShortcutPropertyNameView>
       <ShortcutPropertyNameParam>param</ShortcutPropertyNameParam>
       </Plugins>
+    <Plugins>
+        <Uid>0x2001f47f</Uid>
+      <BundleIdentifier>0</BundleIdentifier>
+      <TemplateIdentifier>0</TemplateIdentifier>
+      <LockingStatus>none</LockingStatus>
+      <ShortcutWidget>0</ShortcutWidget>
+      <Customize1Shortcut>0</Customize1Shortcut>
+      <Shortcut1Type />
+      <Shortcut1Uid />
+      <Shortcut1View />
+      <Shortcut1Param />
+      <Customize2Shortcut />
+      <Shortcut2Type />
+      <Shortcut2Uid />
+      <Shortcut2View />
+      <Shortcut2Param />
+      <Customize3Shortcut />
+      <Shortcut3Type />
+      <Shortcut3Uid />
+      <Shortcut3View />
+      <Shortcut3Param />
+      <Customize4Shortcut />
+      <Shortcut4Type />
+      <Shortcut4Uid />
+      <Shortcut4View />
+      <Shortcut4Param />
+      <Shortcut1ItemId>first</Shortcut1ItemId>
+      <Shortcut1ItemName>Shortcut1</Shortcut1ItemName>
+      <Shortcut2ItemId>second</Shortcut2ItemId>
+      <Shortcut2ItemName>Shortcut2</Shortcut2ItemName>
+      <Shortcut3ItemId>third</Shortcut3ItemId>
+      <Shortcut3ItemName>Shortcut3</Shortcut3ItemName>
+      <Shortcut4ItemId>fourth</Shortcut4ItemId>
+      <Shortcut4ItemName>Shortcut4</Shortcut4ItemName>
+      <ShortcutPropertyNameType>type</ShortcutPropertyNameType>
+      <ShortcutPropertyNameUid>uid</ShortcutPropertyNameUid>
+      <ShortcutPropertyNameView>view</ShortcutPropertyNameView>
+      <ShortcutPropertyNameParam>param</ShortcutPropertyNameParam>
+      </Plugins>
+    <Plugins>
+        <Uid>0x2001f47f</Uid>
+      <BundleIdentifier>0</BundleIdentifier>
+      <TemplateIdentifier>0</TemplateIdentifier>
+      <LockingStatus>none</LockingStatus>
+      <ShortcutWidget>0</ShortcutWidget>
+      <Customize1Shortcut>0</Customize1Shortcut>
+      <Shortcut1Type />
+      <Shortcut1Uid />
+      <Shortcut1View />
+      <Shortcut1Param />
+      <Customize2Shortcut />
+      <Shortcut2Type />
+      <Shortcut2Uid />
+      <Shortcut2View />
+      <Shortcut2Param />
+      <Customize3Shortcut />
+      <Shortcut3Type />
+      <Shortcut3Uid />
+      <Shortcut3View />
+      <Shortcut3Param />
+      <Customize4Shortcut />
+      <Shortcut4Type />
+      <Shortcut4Uid />
+      <Shortcut4View />
+      <Shortcut4Param />
+      <Shortcut1ItemId>first</Shortcut1ItemId>
+      <Shortcut1ItemName>Shortcut1</Shortcut1ItemName>
+      <Shortcut2ItemId>second</Shortcut2ItemId>
+      <Shortcut2ItemName>Shortcut2</Shortcut2ItemName>
+      <Shortcut3ItemId>third</Shortcut3ItemId>
+      <Shortcut3ItemName>Shortcut3</Shortcut3ItemName>
+      <Shortcut4ItemId>fourth</Shortcut4ItemId>
+      <Shortcut4ItemName>Shortcut4</Shortcut4ItemName>
+      <ShortcutPropertyNameType>type</ShortcutPropertyNameType>
+      <ShortcutPropertyNameUid>uid</ShortcutPropertyNameUid>
+      <ShortcutPropertyNameView>view</ShortcutPropertyNameView>
+      <ShortcutPropertyNameParam>param</ShortcutPropertyNameParam>
+      </Plugins>
     </VGA_HomescreenPlugins_2>
   </data>
 </configuration>
\ No newline at end of file
--- a/idlehomescreen/data/vga_tch/view2_200286ea/conf/view200286ea.gcfml	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/vga_tch/view2_200286ea/conf/view200286ea.gcfml	Wed Sep 15 12:00:00 2010 +0300
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<container xmlns="http://www.symbianfoundation.org/xml/implml/1">
+<container xmlns="http://www.symbianfoundation.org/xml/implml/1" condition="${VGA_HomescreenPlugins_2.SupportVga}">
 	<tag name="target" value="core"/>
 	<tag name="target" value="rofs2"/>
 	<tag name="target" value="rofs3"/>
Binary file idlehomescreen/data/vga_tch/view2_200286ea/conf/view200286eamanifest.confml has changed
--- a/idlehomescreen/data/vga_tch/view2_200286ea/conf/view200286eamanifest.gcfml	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/vga_tch/view2_200286ea/conf/view200286eamanifest.gcfml	Wed Sep 15 12:00:00 2010 +0300
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<container xmlns="http://www.symbianfoundation.org/xml/implml/1">
+<container xmlns="http://www.symbianfoundation.org/xml/implml/1" condition="${VGAHomescreen2manifest.SupportVga}">
 	<tag name="target" value="core"/>
 	<tag name="target" value="rofs2"/>
 	<tag name="target" value="rofs3"/>
Binary file idlehomescreen/data/vga_tch/view2_200286ea/conf/view200286eaxuikon.confml has changed
--- a/idlehomescreen/data/vga_tch/view2_200286ea/conf/view200286eaxuikon.gcfml	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/vga_tch/view2_200286ea/conf/view200286eaxuikon.gcfml	Wed Sep 15 12:00:00 2010 +0300
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<container xmlns="http://www.symbianfoundation.org/xml/implml/1">
+<container xmlns="http://www.symbianfoundation.org/xml/implml/1" condition="${VGAHomescreen2XuikonFolder.SupportVga}">
 	<tag name="target" value="core"/>
 	<tag name="target" value="rofs2"/>
 	<tag name="target" value="rofs3"/>
--- a/idlehomescreen/data/vga_tch/view2_200286ea/group/bld.inf	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/vga_tch/view2_200286ea/group/bld.inf	Wed Sep 15 12:00:00 2010 +0300
@@ -66,7 +66,7 @@
 //***********************
 ../rom/view_resources.iby LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(view2_200286ea_resources.iby)
 ../rom/view_customer.iby CUSTOMER_APP_LAYER_IBY_EXPORT_PATH(view2_200286ea_customer.iby)
-../rom/view_variant.iby CUSTOMER_APP_LAYER_IBY_EXPORT_PATH(view2_200286ea_variant.iby)
+//../rom/view_variant.iby CUSTOMER_APP_LAYER_IBY_EXPORT_PATH(view2_200286ea_variant.iby)
 //../rom/view.iby CORE_APP_LAYER_IBY_EXPORT_PATH(view2_200286ea.iby)
 
 
--- a/idlehomescreen/data/vga_tch/view2_200286ea/hsps/00/viewconfiguration.xml	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/vga_tch/view2_200286ea/hsps/00/viewconfiguration.xml	Wed Sep 15 12:00:00 2010 +0300
@@ -13,7 +13,7 @@
         <plugins>
             <plugin uid="0x200286e6" bundle_id="0" template_id="0" locking_status="permanent"/>
             <plugin uid="0x200286e7" bundle_id="0" template_id="0" locking_status="permanent"/>
-            <plugin uid="0x2001f47f" bundle_id="0" template_id="0" locking_status="permanent"/>
+            <plugin uid="0x200255b6" bundle_id="0" template_id="0" locking_status="permanent"/>
             <plugin uid="0x2001f47f" bundle_id="0" template_id="0" locking_status="none"/>  
             <plugin uid="0x2001f47f" bundle_id="0" template_id="0" locking_status="none"/>
             <plugin uid="0x2001f47f" bundle_id="0" template_id="0" locking_status="none"/>  
--- a/idlehomescreen/data/vga_tch/view2_200286ea/xuikon/37/view.css	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/vga_tch/view2_200286ea/xuikon/37/view.css	Wed Sep 15 12:00:00 2010 +0300
@@ -63,11 +63,12 @@
 
 softkey#msk_ltr
 {
-    display: block;
+    display: none;
 }
 
 softkey#msk_rtl
 {
-    display: none;
+    display: block;
 }
 
+
--- a/idlehomescreen/data/vga_tch/view2_200286ea/xuikon/50/view.css	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/vga_tch/view2_200286ea/xuikon/50/view.css	Wed Sep 15 12:00:00 2010 +0300
@@ -63,11 +63,11 @@
 
 softkey#msk_ltr
 {
-    display: block;
+    display: none;
 }
 
 softkey#msk_rtl
 {
-    display: none;
+    display: block;
 }
 
--- a/idlehomescreen/data/vga_tch/view2_200286ea/xuikon/57/view.css	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/vga_tch/view2_200286ea/xuikon/57/view.css	Wed Sep 15 12:00:00 2010 +0300
@@ -63,11 +63,11 @@
 
 softkey#msk_ltr
 {
-    display: block;
+    display: none;
 }
 
 softkey#msk_rtl
 {
-    display: none;
+    display: block;
 }
 
--- a/idlehomescreen/data/vga_tch/view2_200286ea/xuikon/94/view.css	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/vga_tch/view2_200286ea/xuikon/94/view.css	Wed Sep 15 12:00:00 2010 +0300
@@ -63,11 +63,11 @@
 
 softkey#msk_ltr
 {
-    display: block;
+    display: none;
 }
 
 softkey#msk_rtl
 {
-    display: none;
+    display: block;
 }
 
--- a/idlehomescreen/data/vga_tch/view3_200286eb/conf/view200286eb.confml	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/vga_tch/view3_200286eb/conf/view200286eb.confml	Wed Sep 15 12:00:00 2010 +0300
@@ -1,6 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <configuration name="Homescreen 3" version="1" xmlns="http://www.s60.com/xml/confml/2" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xs="http://www.w3.org/2001/XMLSchema">
   <feature name="VGA Homescreen 3 widgets" ref="VGA_HomescreenPlugins_3">
+    <setting ref="SupportQhd" name="Qhd Support" type="boolean">
+      <desc>The Qhd touch is a supported display type of the xuikon homescreen</desc>
+    </setting>
+    <setting ref="SupportVga" name="Vga Support" type="boolean">
+      <desc>The Vga touch is a supported display type of the xuikon homescreen</desc>
+    </setting>
     <setting name="Max Widgets" ref="MaxWidgets" type="string">
       <desc>Maximum widget amount in Homescreen 3 page. Customizable</desc>
     </setting>
@@ -25,11 +31,11 @@
   <setting name="Widgets" ref="Plugins" type="sequence">
       <desc>Widgets in the Homescreen 3</desc>
     <setting name="Widget" ref="Uid" type="string">
-      <desc>Widget name</desc>
-      <option name="Empty" value="0x2001f47f" />
+      <desc>Widget name</desc>  
+      <option name="Empty" value="0x2001F47F" />    
       <option name="ClockDate" value="0x200286E6" />
       <option name="Desktop" value="0x20018EEE" />
-      <option name="Profilemode" value="0x200286e7" />
+      <option name="Profilemode" value="0x200286E7" />
       <option name="wrtplugin_1" value="0x20022FD4"/>
       <option name="wrtplugin_2" value="0x20022FD5"/>
       <option name="wrtplugin_3" value="0x20022FD6"/>
@@ -237,6 +243,8 @@
   </feature>
 <data>
     <VGA_HomescreenPlugins_3>
+      <SupportQhd>true</SupportQhd>
+      <SupportVga>true</SupportVga>
       <MaxWidgets>6</MaxWidgets>
     <UseEmptyWidgets>true</UseEmptyWidgets>
     <ItemIdEmptyWidgets>hs_vga_tch_view</ItemIdEmptyWidgets>
@@ -245,7 +253,46 @@
     <WallpaperPropertyName>path</WallpaperPropertyName>
     <BackGroundPath />
     <Plugins extensionPolicy="replace">
-        <Uid>0x2001f47f</Uid>
+        <Uid>0x200286e6</Uid>
+      <BundleIdentifier>0</BundleIdentifier>
+      <TemplateIdentifier>0</TemplateIdentifier>
+      <LockingStatus>permanent</LockingStatus>
+      <ShortcutWidget>0</ShortcutWidget>
+      <Customize1Shortcut />
+      <Shortcut1Type />
+      <Shortcut1Uid />
+      <Shortcut1View />
+      <Shortcut1Param />
+      <Customize2Shortcut />
+      <Shortcut2Type />
+      <Shortcut2Uid />
+      <Shortcut2View />
+      <Shortcut2Param />
+      <Customize3Shortcut />
+      <Shortcut3Type />
+      <Shortcut3Uid />
+      <Shortcut3View />
+      <Shortcut3Param />
+      <Customize4Shortcut />
+      <Shortcut4Type />
+      <Shortcut4Uid />
+      <Shortcut4View />
+      <Shortcut4Param />
+      <Shortcut1ItemId>first</Shortcut1ItemId>
+      <Shortcut1ItemName>Shortcut1</Shortcut1ItemName>
+      <Shortcut2ItemId>second</Shortcut2ItemId>
+      <Shortcut2ItemName>Shortcut2</Shortcut2ItemName>
+      <Shortcut3ItemId>third</Shortcut3ItemId>
+      <Shortcut3ItemName>Shortcut3</Shortcut3ItemName>
+      <Shortcut4ItemId>fourth</Shortcut4ItemId>
+      <Shortcut4ItemName>Shortcut4</Shortcut4ItemName>
+      <ShortcutPropertyNameType>type</ShortcutPropertyNameType>
+      <ShortcutPropertyNameUid>uid</ShortcutPropertyNameUid>
+      <ShortcutPropertyNameView>view</ShortcutPropertyNameView>
+      <ShortcutPropertyNameParam>param</ShortcutPropertyNameParam>
+      </Plugins>
+    <Plugins>
+        <Uid>0x200286e7</Uid>
       <BundleIdentifier>0</BundleIdentifier>
       <TemplateIdentifier>0</TemplateIdentifier>
       <LockingStatus>permanent</LockingStatus>
@@ -284,7 +331,7 @@
       <ShortcutPropertyNameParam>param</ShortcutPropertyNameParam>
       </Plugins>
     <Plugins>
-        <Uid>0x2001f47f</Uid>
+        <Uid>0x200255b6</Uid>
       <BundleIdentifier>0</BundleIdentifier>
       <TemplateIdentifier>0</TemplateIdentifier>
       <LockingStatus>permanent</LockingStatus>
@@ -326,46 +373,7 @@
         <Uid>0x2001f47f</Uid>
       <BundleIdentifier>0</BundleIdentifier>
       <TemplateIdentifier>0</TemplateIdentifier>
-      <LockingStatus>permanent</LockingStatus>
-      <ShortcutWidget>0</ShortcutWidget>
-      <Customize1Shortcut>0</Customize1Shortcut>
-      <Shortcut1Type />
-      <Shortcut1Uid />
-      <Shortcut1View />
-      <Shortcut1Param />
-      <Customize2Shortcut />
-      <Shortcut2Type />
-      <Shortcut2Uid />
-      <Shortcut2View />
-      <Shortcut2Param />
-      <Customize3Shortcut />
-      <Shortcut3Type />
-      <Shortcut3Uid />
-      <Shortcut3View />
-      <Shortcut3Param />
-      <Customize4Shortcut />
-      <Shortcut4Type />
-      <Shortcut4Uid />
-      <Shortcut4View />
-      <Shortcut4Param />
-      <Shortcut1ItemId>first</Shortcut1ItemId>
-      <Shortcut1ItemName>Shortcut1</Shortcut1ItemName>
-      <Shortcut2ItemId>second</Shortcut2ItemId>
-      <Shortcut2ItemName>Shortcut2</Shortcut2ItemName>
-      <Shortcut3ItemId>third</Shortcut3ItemId>
-      <Shortcut3ItemName>Shortcut3</Shortcut3ItemName>
-      <Shortcut4ItemId>fourth</Shortcut4ItemId>
-      <Shortcut4ItemName>Shortcut4</Shortcut4ItemName>
-      <ShortcutPropertyNameType>type</ShortcutPropertyNameType>
-      <ShortcutPropertyNameUid>uid</ShortcutPropertyNameUid>
-      <ShortcutPropertyNameView>view</ShortcutPropertyNameView>
-      <ShortcutPropertyNameParam>param</ShortcutPropertyNameParam>
-      </Plugins>
-    <Plugins>
-        <Uid>0x2001f47f</Uid>
-      <BundleIdentifier>0</BundleIdentifier>
-      <TemplateIdentifier>0</TemplateIdentifier>
-      <LockingStatus>permanent</LockingStatus>
+      <LockingStatus>none</LockingStatus>
       <ShortcutWidget>0</ShortcutWidget>
       <Customize1Shortcut>0</Customize1Shortcut>
       <Shortcut1Type />
@@ -404,7 +412,7 @@
         <Uid>0x2001f47f</Uid>
       <BundleIdentifier>0</BundleIdentifier>
       <TemplateIdentifier>0</TemplateIdentifier>
-      <LockingStatus>permanent</LockingStatus>
+      <LockingStatus>none</LockingStatus>
       <ShortcutWidget>0</ShortcutWidget>
       <Customize1Shortcut>0</Customize1Shortcut>
       <Shortcut1Type />
@@ -443,7 +451,7 @@
         <Uid>0x2001f47f</Uid>
       <BundleIdentifier>0</BundleIdentifier>
       <TemplateIdentifier>0</TemplateIdentifier>
-      <LockingStatus>permanent</LockingStatus>
+      <LockingStatus>none</LockingStatus>
       <ShortcutWidget>0</ShortcutWidget>
       <Customize1Shortcut>0</Customize1Shortcut>
       <Shortcut1Type />
--- a/idlehomescreen/data/vga_tch/view3_200286eb/conf/view200286eb.gcfml	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/vga_tch/view3_200286eb/conf/view200286eb.gcfml	Wed Sep 15 12:00:00 2010 +0300
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<container xmlns="http://www.symbianfoundation.org/xml/implml/1">
+<container xmlns="http://www.symbianfoundation.org/xml/implml/1" condition="${VGA_HomescreenPlugins_3.SupportVga}">
 	<tag name="target" value="core"/>
 	<tag name="target" value="rofs2"/>
 	<tag name="target" value="rofs3"/>
Binary file idlehomescreen/data/vga_tch/view3_200286eb/conf/view200286ebmanifest.confml has changed
--- a/idlehomescreen/data/vga_tch/view3_200286eb/conf/view200286ebmanifest.gcfml	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/vga_tch/view3_200286eb/conf/view200286ebmanifest.gcfml	Wed Sep 15 12:00:00 2010 +0300
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<container xmlns="http://www.symbianfoundation.org/xml/implml/1">
+<container xmlns="http://www.symbianfoundation.org/xml/implml/1" condition="${VGAHomescreen3manifest.SupportVga}">
 	<tag name="target" value="core"/>
 	<tag name="target" value="rofs2"/>
 	<tag name="target" value="rofs3"/>
Binary file idlehomescreen/data/vga_tch/view3_200286eb/conf/view200286ebxuikon.confml has changed
--- a/idlehomescreen/data/vga_tch/view3_200286eb/conf/view200286ebxuikon.gcfml	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/vga_tch/view3_200286eb/conf/view200286ebxuikon.gcfml	Wed Sep 15 12:00:00 2010 +0300
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<container xmlns="http://www.symbianfoundation.org/xml/implml/1">
+<container xmlns="http://www.symbianfoundation.org/xml/implml/1" condition="${VGAHomescreen3XuikonFolder.SupportVga}">
 	<tag name="target" value="core"/>
 	<tag name="target" value="rofs2"/>
 	<tag name="target" value="rofs3"/>
--- a/idlehomescreen/data/vga_tch/view3_200286eb/group/bld.inf	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/vga_tch/view3_200286eb/group/bld.inf	Wed Sep 15 12:00:00 2010 +0300
@@ -65,7 +65,7 @@
 //***********************
 ../rom/view_resources.iby LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(view3_200286eb_resources.iby)
 ../rom/view_customer.iby CUSTOMER_APP_LAYER_IBY_EXPORT_PATH(view3_200286eb_customer.iby)
-../rom/view_variant.iby CUSTOMER_APP_LAYER_IBY_EXPORT_PATH(view3_200286eb_variant.iby)
+//../rom/view_variant.iby CUSTOMER_APP_LAYER_IBY_EXPORT_PATH(view3_200286eb_variant.iby)
 //../rom/view.iby CORE_APP_LAYER_IBY_EXPORT_PATH(view3_200286eb.iby)
 
 
--- a/idlehomescreen/data/vga_tch/view3_200286eb/hsps/00/viewconfiguration.xml	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/vga_tch/view3_200286eb/hsps/00/viewconfiguration.xml	Wed Sep 15 12:00:00 2010 +0300
@@ -13,7 +13,7 @@
         <plugins>
             <plugin uid="0x200286e6" bundle_id="0" template_id="0" locking_status="permanent"/>
             <plugin uid="0x200286e7" bundle_id="0" template_id="0" locking_status="permanent"/>
-            <plugin uid="0x2001f47f" bundle_id="0" template_id="0" locking_status="permanent"/>
+            <plugin uid="0x200255b6" bundle_id="0" template_id="0" locking_status="permanent"/>
             <plugin uid="0x20018eee" bundle_id="0" template_id="0" locking_status="none"/>
             <plugin uid="0x20018eee" bundle_id="0" template_id="0" locking_status="none"/>
             <plugin uid="0x20018eee" bundle_id="0" template_id="0" locking_status="none"/>
--- a/idlehomescreen/data/vga_tch/view3_200286eb/xuikon/37/view.css	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/vga_tch/view3_200286eb/xuikon/37/view.css	Wed Sep 15 12:00:00 2010 +0300
@@ -63,11 +63,11 @@
 
 softkey#msk_ltr
 {
-    display: block;
+    display: none;
 }
 
 softkey#msk_rtl
 {
-    display: none;
+    display: block;
 }
 
--- a/idlehomescreen/data/vga_tch/view3_200286eb/xuikon/50/view.css	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/vga_tch/view3_200286eb/xuikon/50/view.css	Wed Sep 15 12:00:00 2010 +0300
@@ -63,11 +63,11 @@
 
 softkey#msk_ltr
 {
-    display: block;
+    display: none;
 }
 
 softkey#msk_rtl
 {
-    display: none;
+    display: block;
 }
 
--- a/idlehomescreen/data/vga_tch/view3_200286eb/xuikon/57/view.css	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/vga_tch/view3_200286eb/xuikon/57/view.css	Wed Sep 15 12:00:00 2010 +0300
@@ -63,11 +63,11 @@
 
 softkey#msk_ltr
 {
-    display: block;
+    display: none;
 }
 
 softkey#msk_rtl
 {
-    display: none;
+    display: block;
 }
 
--- a/idlehomescreen/data/vga_tch/view3_200286eb/xuikon/94/view.css	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/data/vga_tch/view3_200286eb/xuikon/94/view.css	Wed Sep 15 12:00:00 2010 +0300
@@ -63,11 +63,11 @@
 
 softkey#msk_ltr
 {
-    display: block;
+    display: none;
 }
 
 softkey#msk_rtl
 {
-    display: none;
+    display: block;
 }
 
--- a/idlehomescreen/inc/xnproperty.h	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/inc/xnproperty.h	Wed Sep 15 12:00:00 2010 +0300
@@ -182,6 +182,7 @@
         _LIT8( KDate, "date" );
         _LIT8( KDay, "day" );
         _LIT8( KAmpm, "ampm" );
+        _LIT8( KFaceAdjustmentValue, "face-adjustment-value" );
         }
     namespace volumecontrol
         {
--- a/idlehomescreen/inc/xnuiengine.h	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/inc/xnuiengine.h	Wed Sep 15 12:00:00 2010 +0300
@@ -82,18 +82,6 @@
     void RenderUIL( CXnNode* aNode = NULL );
 
     /**
-     * Calculates the layout of the UI and renders it. 
-     * This generates full re-layout starting from the given node, 
-     * regardless of the current dirty set or the active view.
-     * I.e. this can be used to layout an inactive view.
-     *
-     * @since Series 60 5.2
-     * @param aNode Starting point for the layout
-     * @exception KXnErrLoadLayoutFileFailed Loading the layout file failed.
-     */
-    void RenderFromNodeL( CXnNode& aNode );
-
-    /**
      * Calculates the layout of the UI.
      *
      * @since Series 60 3.1
@@ -102,17 +90,6 @@
     void LayoutUIL( CXnNode* aNode = NULL );
 
     /**
-     * Calculates the layout of the UI.
-     * This generates full re-layout starting from the given node, 
-     * regardless of the current dirty set or the active view.
-     * I.e. this can be used to layout an inactive view.
-     *
-     * @since Series 60 5.2
-     * @param aNode Starting point for the layout
-     */
-    void LayoutFromNodeL( CXnNode& aNode );
-
-    /**
      * Gets the root node of the UI. Ownership is not transferred.
      *
      * @since Series 60 3.1
--- a/idlehomescreen/inc/xnviewswitcher.h	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/inc/xnviewswitcher.h	Wed Sep 15 12:00:00 2010 +0300
@@ -98,7 +98,11 @@
      */            
     void SizeChanged( TRect aRect );
 
-
+    /**
+     * Stop view switch
+     */            
+    void StopViewSwitchL();
+    
 private: // constructors
     
     /**
Binary file idlehomescreen/widgetmanager/conf/widgetmanager.confml has changed
Binary file idlehomescreen/widgetmanager/conf/widgetmanager_20026F53.crml has changed
--- a/idlehomescreen/widgetmanager/data/widgetmanagerview.rss	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/widgetmanager/data/widgetmanagerview.rss	Wed Sep 15 12:00:00 2010 +0300
@@ -41,7 +41,7 @@
 
 RESOURCE AVKON_VIEW r_wm_main_container_view
     {
-    cba = R_AVKON_SOFTKEYS_OPTIONS_BACK;
+    cba = r_wm_softkeys_options_back__store;
     menubar = r_wm_main_container_options_menu;
     toolbar = 0;
     }
@@ -51,6 +51,28 @@
     txt = qtn_wm_title_text;
     }
 
+RESOURCE CBA r_wm_softkeys_options_back__store
+    {
+    flags = EEikButtonGroupAddToStack | EEikCbaFlagAppMskIcon;    
+    buttons =
+        {
+        CBA_BUTTON {id=EAknSoftkeyOptions; txt = text_softkey_option;},
+        CBA_BUTTON {id=EAknSoftkeyBack; txt = text_softkey_back; },                
+        AVKON_CBA_BUTTON{id=EWmStoreCommand; longpressid=0; txt= ""; }
+        };
+    }
+
+RESOURCE CBA r_wm_softkeys_options_cancel__store
+    {
+    flags = EEikButtonGroupAddToStack | EEikCbaFlagAppMskIcon;
+    buttons =
+        {
+        CBA_BUTTON {id=EAknSoftkeyOptions; txt = text_softkey_option;},
+        CBA_BUTTON {id=EAknSoftkeyCancel; txt = text_softkey_cancel; },
+        AVKON_CBA_BUTTON{id=EWmStoreCommand; longpressid=0; txt= ""; }
+        };
+    }
+
 // ----------------------------------------------------
 // MENU
 // ----------------------------------------------------
@@ -72,12 +94,6 @@
         {
         MENU_ITEM
             {
-            command = EWmMainContainerViewOpenPortalMenuItemCommand;
-            txt = qtn_options_wm_open;
-            flags = EEikMenuItemAction;
-            },
-        MENU_ITEM
-            {
             command = EWmMainContainerViewAddMenuItemCommand;
             txt = qtn_options_wm_add;
             flags = EEikMenuItemAction;
@@ -124,25 +140,21 @@
     }
 
 // ----------------------------------------------------
-// OVI STORE BUTTON
+// Ovi store related
 // ----------------------------------------------------
-
-RESOURCE AVKON_BUTTON r_wm_portal_button
+RESOURCE TBUF r_qtn_wm_ovi_store_title
     {
-    flags = 0;
-    states =
-        {
-        AVKON_BUTTON_STATE
-            {
-            flags = 0;
-            txt = qtn_wm_ovi_store_title;
-            }
-        };
+    buf = qtn_wm_ovi_store_title;
     }
 
-RESOURCE TBUF r_qtn_wm_go_to_ovi_store
+RESOURCE TBUF r_qtn_wm_ovi_store_desc
     {
-    buf = qtn_wm_ovi_store_title;
+    buf = qtn_wm_ovi_store_desc;
+    }
+
+RESOURCE TBUF r_qtn_wm_storelist_title
+    {
+    buf = qtn_wm_storelist_title;
     }
 
 // ----------------------------------------------------
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/gfx/qgn_menu_shopping.svg	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="27px" version="1.1" viewBox="-0.004 -0.003 27 27" width="27px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<path d="M26.492,1.494c0-0.552-0.448-1-1-1h-4c-1.154,0-1.08,1.55-1.273,2H3.992c-0.413,0-0.79,0.172-1.036,0.472  c-0.245,0.3-0.339,0.703-0.258,1.106c0,0-0.051,0.748,0,1l1.607,8.04c0.156,0.774,0.896,1.382,1.687,1.382h12.423l1.058,5H5.492  c-0.552,0-1,0.448-1,1c0,0.187,0,0.813,0,1c0,0.33,0.171,0.608,0.418,0.791c-0.259,0.337-0.418,0.753-0.418,1.209  c0,0.174,0,0.826,0,1c0,1.103,0.897,2,2,2s2-0.897,2-2c0-0.174,0-0.826,0-1c0-0.366-0.105-0.705-0.278-1h9.537  c-0.173,0.295-0.278,0.634-0.278,1c0,0.174,0,0.826,0,1c0,1.103,0.897,2,2,2s2-0.897,2-2c0-0.174,0-0.826,0-1  c0-0.386-0.115-0.743-0.306-1.05c0.891-0.042,0.86-1.306,0.697-2.284l-1.479-7.365l1.875-9.301h3.232c0.552,0,1-0.448,1-1  C26.492,2.308,26.492,1.681,26.492,1.494z" fill-opacity="0.25" stroke-opacity="0.25"/>
+<path d="M6.492,22.994c-0.828,0-1.5,0.672-1.5,1.5s0.672,1.5,1.5,1.5s1.5-0.672,1.5-1.5S7.32,22.994,6.492,22.994z   M19.473,22.994c-0.828,0-1.5,0.672-1.5,1.5s0.672,1.5,1.5,1.5s1.5-0.672,1.5-1.5S20.301,22.994,19.473,22.994z M25.492,1.994h-4  c-0.232,0-0.864,2-0.864,2H3.992c-0.55,0-0.912,0.441-0.804,0.98l1.607,8.039c0.108,0.539,0.646,0.98,1.196,0.98H18.82l1.48,7H5.492  c-0.275,0-0.5,0.225-0.5,0.5s0.225,0.5,0.5,0.5h15.43c0.275,0,0.5-0.225,0.5-0.5c0-0.069-1.647-8.2-1.647-8.2l2.076-10.3h3.642  c0.275,0,0.5-0.225,0.5-0.5S25.768,1.994,25.492,1.994z M12.992,4.994h3.798l-0.404,2h-3.394V4.994z M4.612,6.994l-0.4-2h2.876  l0.293,2H4.612z M5.212,9.994l-0.4-2h2.716l0.293,2H5.212z M5.776,12.816l-0.364-1.822h2.555l0.294,2  C8.261,12.994,5.791,12.89,5.776,12.816z M11.992,12.994H9.27l-0.293-2h3.016V12.994z M11.992,9.994H8.83l-0.293-2h3.455V9.994z   M11.992,6.994H8.391l-0.294-2h3.896V6.994z M15.174,12.994h-2.182v-2h2.586L15.174,12.994z M15.78,9.994h-2.788v-2h3.191  L15.78,9.994z M18.814,12.994h-2.62l0.404-2h2.619L18.814,12.994z M19.496,9.61l-0.077,0.384h-2.618l0.403-2h2.618L19.496,9.61z   M20.023,6.994h-2.617l0.404-2h2.616L20.023,6.994z" fill-opacity="0.5" stroke-opacity="0.5"/>
+<path d="M6.492,21.994c-0.828,0-1.5,0.672-1.5,1.5s0.672,1.5,1.5,1.5s1.5-0.672,1.5-1.5S7.32,21.994,6.492,21.994z   M19.473,21.994c-0.828,0-1.5,0.672-1.5,1.5s0.672,1.5,1.5,1.5s1.5-0.672,1.5-1.5S20.301,21.994,19.473,21.994z" fill="#E6E6E6"/>
+<rect fill="none" height="26.994" width="26.992"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="6.4351" x2="6.4351" y1="24.3105" y2="21.9602">
+<stop offset="0" style="stop-color:#FFFFFF;stop-opacity:0"/>
+<stop offset="1" style="stop-color:#FFFFFF"/>
+</linearGradient>
+<path d="M7.419,22.885c0.157,0,0.311,0.013,0.459,0.036c-0.226-0.544-0.761-0.927-1.386-0.927  c-0.828,0-1.5,0.672-1.5,1.5c0,0.27,0.077,0.519,0.201,0.736C5.454,23.458,6.348,22.885,7.419,22.885z" fill="url(#SVGID_1_)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="19.416" x2="19.416" y1="24.3105" y2="21.9602">
+<stop offset="0" style="stop-color:#FFFFFF;stop-opacity:0"/>
+<stop offset="1" style="stop-color:#FFFFFF"/>
+</linearGradient>
+<path d="M20.399,22.885c0.157,0,0.311,0.013,0.459,0.036c-0.226-0.544-0.761-0.927-1.386-0.927  c-0.828,0-1.5,0.672-1.5,1.5c0,0.27,0.077,0.519,0.201,0.736C18.435,23.458,19.328,22.885,20.399,22.885z" fill="url(#SVGID_2_)"/>
+<path d="M6.492,22.994c-0.276,0-0.5,0.224-0.5,0.5s0.224,0.5,0.5,0.5s0.5-0.224,0.5-0.5S6.769,22.994,6.492,22.994z   M19.473,22.994c-0.276,0-0.5,0.224-0.5,0.5s0.224,0.5,0.5,0.5s0.5-0.224,0.5-0.5S19.749,22.994,19.473,22.994z" fill-opacity="0.5" stroke-opacity="0.5"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="14.5811" x2="14.5811" y1="4.3652" y2="36.1848">
+<stop offset="0" style="stop-color:#E6E6E6"/>
+<stop offset="1" style="stop-color:#B2B2B2"/>
+</linearGradient>
+<path d="M25.492,0.994h-4c-0.292,0-0.52,0.285-0.579,0.589l-0.285,1.411H3.992  c-0.55,0-0.912,0.441-0.804,0.98l1.607,8.039c0.108,0.539,0.646,0.98,1.196,0.98H18.82l1.48,7H5.492c-0.275,0-0.5,0.225-0.5,0.5  s0.225,0.5,0.5,0.5h15.43c0.506,0,0.55-0.486,0.461-0.694l-1.608-8.006l2.076-10.3h3.642c0.275,0,0.5-0.225,0.5-0.5  S25.768,0.994,25.492,0.994z M17.811,3.994h2.616l-0.403,2h-2.617L17.811,3.994z M17.204,6.994h2.618l-0.403,2h-2.618L17.204,6.994z   M12.992,3.994h3.798l-0.404,2h-3.394V3.994z M4.612,5.994l-0.4-2h2.876l0.293,2H4.612z M5.212,8.994l-0.4-2h2.716l0.293,2H5.212z   M5.992,11.994c-0.074,0-0.201-0.104-0.216-0.178L5.412,9.994h2.555l0.294,2H5.992z M11.992,11.994H9.27l-0.293-2h3.016V11.994z   M11.992,8.994H8.83l-0.293-2h3.455V8.994z M11.992,5.994H8.391l-0.294-2h3.896V5.994z M15.174,11.994h-2.182v-2h2.586  L15.174,11.994z M15.78,8.994h-2.788v-2h3.191L15.78,8.994z M16.194,11.994l0.404-2h2.619l-0.403,2H16.194z" fill="url(#SVGID_3_)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="14.918" x2="14.5508" y1="9.8672" y2="2.0019">
+<stop offset="0" style="stop-color:#FFFFFF;stop-opacity:0"/>
+<stop offset="1" style="stop-color:#FFFFFF"/>
+</linearGradient>
+<path d="M5.941,8.994H5.212l-0.4-2h2.716l0.139,0.947c0.308-0.169,0.615-0.338,0.938-0.494L8.537,6.994h1.089  c1.063-0.452,2.188-0.836,3.366-1.145V3.994h3.798l-0.238,1.179c0.346-0.042,0.691-0.083,1.043-0.112l0.216-1.066h2.616  l-0.195,0.967c0.341,0.004,0.677,0.021,1.014,0.036l0.605-3.003h3.642c0.275,0,0.5-0.225,0.5-0.5s-0.225-0.5-0.5-0.5h-4  c-0.235,0-0.506,0.216-0.579,0.589l-0.285,1.411H3.992c-0.55,0-0.912,0.441-0.804,0.98l1.236,6.184  C4.898,9.75,5.406,9.363,5.941,8.994z M11.992,3.994v2H8.391l-0.294-2H11.992z M7.088,3.994l0.293,2H4.612l-0.4-2H7.088z" fill="url(#SVGID_4_)"/>
+</svg>
--- a/idlehomescreen/widgetmanager/group/widgetmanager.mmp	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/widgetmanager/group/widgetmanager.mmp	Wed Sep 15 12:00:00 2010 +0300
@@ -48,7 +48,7 @@
 SOURCE  wmpersistentwidgetorder.cpp
 SOURCE  wmeffectmanager.cpp
 SOURCE  wmdetailsdlg.cpp
-SOURCE	wmportalbutton.cpp
+SOURCE	wmstore.cpp
 SOURCE  wmwidgetloaderao.cpp
 SOURCE  wmconfiguration.cpp
 SOURCE  wminstaller.cpp
--- a/idlehomescreen/widgetmanager/group/wmicons.txt	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/widgetmanager/group/wmicons.txt	Wed Sep 15 12:00:00 2010 +0300
@@ -1,2 +1,3 @@
 -c32,8 qgn_menu_hswidget
 -c32,8 qgn_menu_ovistore.svg
+-c32,8 qgn_menu_shopping.svg
\ No newline at end of file
--- a/idlehomescreen/widgetmanager/inc/widgetmanager.hrh	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/widgetmanager/inc/widgetmanager.hrh	Wed Sep 15 12:00:00 2010 +0300
@@ -32,9 +32,9 @@
     EWmMainContainerViewSortAlphaMenuItemCommand,
     EWmMainContainerViewUninstallMenuItemCommand,
     EWmMainContainerViewHelpMenuItemCommand,
-    EWmMainContainerViewOpenPortalMenuItemCommand,
     EWmMainContainerViewBackMenuItemCommand,
-    EWmMainContainerViewWiddetDetailsMenuItemCommand
+    EWmMainContainerViewWiddetDetailsMenuItemCommand,
+    EWmStoreCommand
     };
 
 enum TWmMenuCmdIDs
--- a/idlehomescreen/widgetmanager/inc/wmcommon.h	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/widgetmanager/inc/wmcommon.h	Wed Sep 15 12:00:00 2010 +0300
@@ -35,12 +35,9 @@
 // UI component ID's
 enum TWmUiControlIds
     {
-    EPortalOne = 0x1,
-    EPortalTwo,
-    ELastPortal,
-    EWidgetsList,
+    EWidgetsList = 0x1,
     EFindBox,
-    EMaximumWidgets = 0xC8
+    ELastCtrl
     };
 
 #endif //WMCOMMON_H
--- a/idlehomescreen/widgetmanager/inc/wmconfiguration.h	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/widgetmanager/inc/wmconfiguration.h	Wed Sep 15 12:00:00 2010 +0300
@@ -21,6 +21,7 @@
 
 // INCLUDE FILES
 #include <e32base.h>
+#include "wmstore.h"
 
 // FORWARD DECLARATIONS
 class CRepository;
@@ -36,10 +37,11 @@
 	
 public: // constructors and destructor
 
-    /** Operator Application type */
-    enum TOpAppType
+    /** Store's Application type */
+    enum TStoreAppType
         {
         EUnknown,
+        EOviCwrt,
         ES60,
         ECwrt,
         EWrt,
@@ -64,70 +66,22 @@
     void ConstructL();
 
 public: // API
-    
-    /**
-     * Number of portal buttons (1 or more)
-     */
-    TInt PortalButtonCount();
-
-    /**
-     * Label text to be displayed on a portal button
-     * @param aIndex index of the button, starting at 0
-     */
-    const TDesC& PortalButtonText( TInt aIndex );
-    
+        
     /**
-     * Icon to be displayed on a portal button
-     * Logo syntax follows the widget icon syntax in CWmImageConverter
-     * @param aIndex index of the button, starting at 0
+     * Number of Stores
      */
-    const TDesC& PortalButtonIcon( TInt aIndex );
-    
-    /**
-     * Returns url to for browser by button index
-     * @param aIndex index of the button, starting at 0
-     */
-    const TDesC& PortalButtonBrowserUrl( TInt aIndex );
-    
-    /**
-     * Returns client uid by button index 
-     * @param aIndex index of the button, starting at 0
-     */
-    TUid PortalButtonClientUid( TInt aIndex );
+    TInt StoreCount();
     
     /**
-     * Returns client parameter by button index 
-     * @param aIndex index of the button, starting at 0
+     * Returns Store configuration array ref
      */
-    const TDesC& PortalButtonClientParam( TInt aIndex );
-    
-    /**
-     * Returns bool if buttons are mirrored.
-     * @return true when operator button on left on portraid and 
-     * on top on landscape.
-     */
-    TBool PortalButtonsMirrored();
+    const RPointerArray<CWmConfItem>& StoreConfArray();
     
     /**
-     * Returns application type by button index
-     * @param aIndex button index
-     * @return application type
-     */
-    TOpAppType PortalButtonApplicationType( TInt aIndex );
-    
-    /**
-     * Returns application id as string
-     * @param aIndex button index
-     * @param aOperatorAppId string to get app id
-     */
-    void PortalButtonApplicationId( TInt aIndex, TDes& aOperatorAppId );
-    
-    /**
-     * Returns application id as uid
-     * @param aIndex button index
-     * @param aOperatorAppId uid to get app id
-     */
-    void PortalButtonApplicationId( TInt aIndex, TUid& aOperatorAppId );
+	 * To compare orders
+	 */
+    static TInt CompareStoreOrder( 
+            const CWmConfItem& aItemOne, const CWmConfItem& aItemTwo );
     
 private: // New functions
     
@@ -137,15 +91,15 @@
     void ReadInt32Parameter( TInt aKey, TInt32& aValue );
     void ReadIntParameter( TInt aKey, TInt& aValue );
     HBufC* ReadLocalisedParameterL( TInt aOffset );
-    void ReadOperatorApplicationInfoL();
+    void ReadApplicationInfoL( TInt aKey, CWmConfItem& aConfItem );
     TUid StringToUid( const TDesC& aStr );
     
     /** Returns uid of the widget with a particular bundle identifier. */
     TUid FetchWidgetUidFromRegistryL( const TDesC& aBundleId );
     
-    /** sets operator icon to button if not already defined */
-    void SetOperatorIconL( TUid aUid );
-	
+    /** sets Store icon to  if not already defined */
+    void SetStoreIconL( CWmConfItem& aConfItem );
+
 private:
 
     /**
@@ -163,73 +117,123 @@
      * system language
      */
     TInt                    iLanguageIndex;
-
-    /**
-     * OVI store button text
-     */
-    HBufC*                  iOviButtonTitle;
-    
-    /**
-     * OVI store button icon
-     */
-    HBufC*                  iOviButtonIcon;
     
     /**
-     * OVI store button widget client param
+     * Array of configuration items. Array is in order as they should appear in UI
+     */    
+    RPointerArray<CWmConfItem> iConfItems;
+	};
+
+
+/**
+ * Configuration item class for Widget Manager
+ * 
+ * @class CWmConfiguration
+ */
+NONSHARABLE_CLASS( CWmConfItem ) : public CBase
+    {
+    public: // constructors and destructor
+
+        /** Two-phased constructors. */
+        static CWmConfItem* NewL();
+
+        static CWmConfItem* NewLC();
+        
+        /** Destructor */
+        ~CWmConfItem();
+        
+    private:
+        /** constructor */
+        CWmConfItem();
+        
+        /** 2nd phase constructor */
+        void ConstructL();
+        
+public: // API
+    /**
+     * Returns Store id
      */
-    HBufC*                  iOviStoreClientParam;
+    CWmStore::TStoreId Id();
     
     /**
-     * OVI store laucher uid
+     * Returns Label text to be displayed on a Store 
      */
-    TUid                    iOviStoreUid;
+    const TDesC& Title();
     
     /**
-     * OPERATOR button text
+     * Returns Icon to be displayed on a Store 
+     * Logo syntax follows the widget icon syntax in CWmImageConverter
      */
-    HBufC*                  iOperatorButtonTitle;
-    
+    const TDesC& Icon();  
+
     /**
-     * OPERATOR store icon
+     * Returns Order of Store
      */
-    HBufC*                  iOperatorButtonIcon;
+    TInt Order();
     
     /**
-     * OPERATOR store button browser Url
+     * Returns url to for browser
+     */
+    const TDesC& BrowserUrl();   
+   
+    /**
+     * Returns application type
      */
-    HBufC*                  iOperatorButtonUrl;
+    CWmConfiguration::TStoreAppType AppType();
+    
+    /**
+     * Returns application uid 
+     */
+    TUid AppUid();
     
     /**
-     * OPERATOR store button application parameter
+     * Returns application parameter by index 
      */
-    HBufC*                  iOperatorParam;
+    const TDesC& AppParam();
+    
+private:    
+    /**
+     * Store Id
+     */
+    CWmStore::TStoreId      iId;
     
     /**
-     * OPERATOR store application id as string. Used for java
+     * Store text
      */
-    HBufC*                  iOperatorAppIdStr;
+    HBufC*                  iTitle;
     
     /**
-     * OPERATOR store application id as uid.
+     * Store icon
      */
-    TUid                    iOperatorAppIdUid;
-        
+    HBufC*                  iIcon;
+    
     /**
-     * OPERATOR store application type
+     * Store order
      */
-    TOpAppType              iOperatorAppType;
-        
+    TInt                    iOrder;
+            
+    /**
+     * Store browser Url
+     */
+    HBufC*                  iUrl;              
+  
     /**
-     * Tells if operator button is enabled. 
+     * Application type
      */
-    TBool                   iOperatorButtonEnabled;
-        
+    CWmConfiguration::TStoreAppType           iAppType;
+    
     /**
-     * Tells if buttons need to be mirrored for operator. 
+     * Application uid
      */
-    TBool                   iButtonsMirrored;
-	};
-
+    TUid                    iAppUid;
+    
+    /**
+     * Application parameter
+     */
+    HBufC*                  iAppParam;
+    
+    friend class CWmConfiguration;
+    };
 #endif // WMCONFIGURATION_H
 
 // End of File
--- a/idlehomescreen/widgetmanager/inc/wmcrkeys.h	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/widgetmanager/inc/wmcrkeys.h	Wed Sep 15 12:00:00 2010 +0300
@@ -20,60 +20,62 @@
 #define __WMCRKEYS_H__
 
 // WidgetManager CR key
-const TUint32 KCrWidgetManagerm = 0x20026F53;
+const TUint32 KCrWidgetManager = 0x20026F53;
+
+// ************************************************************
+// NON-LOCALISED parameters
+// ************************************************************
+
+/**  */
+const TUint32 KOviStoreEnabled = 0x1;
+
+/**  */
+const TUint32 KOviOrder = 0x2;
 
+/**  */
+const TUint32 KOviUid = 0x3;
 
+/**  */
+const TUint32 KOviAppParam = 0x4;
+
+/**  */
+const TUint32 KStoreEnabled = 0x5;
+
+/**  */
+const TUint32 KOrder = 0x6;
 
 // ************************************************************
 // LOCALISED parameters start here
-// Key Id's from 0x1 to 0x1E are reserved for languages.
-// LangId_0                 0x1
-// OperatorUrl_0            0x2
-// OperatorButtonText_0     0x3
+// KLangId_0                 0x7
+// KUrl_0                    0x8
+// KTitle_0                  0x9
 // ...
-// LangId_1                 0x4
+// KLangId_1                 0xA
 // ...
-// LangId_9                 0x1C
-// OperatorUrl_9            0x1D
-// OperatorButtonText_9     0x1E 
+// KLangId_9                 0x22
+// KUrl_9                    0x23
+// KTitle_9                  0x24 
 // ************************************************************
 
 /** localised set #0, language ID */
-const TUint32 KLangId0 = 0x1;
-/** localised set #0, Operator button URL */
-const TUint32 KOperatorButtonUrl0 = 0x2;
-/** localised set #0, Operator button text */
-const TUint32 KOperatorButtonText0 = 0x3;
+const TUint32 KLangId_0 = 0x7;
+/** localised set #0, store  URL */
+const TUint32 KUrl_0 = 0x8;
+/** localised set #0, store  text */
+const TUint32 KTitle_0 = 0x9;
 
 /** localised set #1, language ID */
-const TUint32 KLangId1 = 0x4;
+const TUint32 KLangId_1 = 0xA;
 
 /** localised set #9, language ID */
-const TUint32 KLangId9 = 0x1C;
-
+const TUint32 KLangId_9 = 0x22;
 
 // ************************************************************
-// NON-LOCALISED OVI parameters
+// NON-LOCALISED parameters
 // ************************************************************
 
-/** Key to Ovi Store Client param */
-const TUint32 KOviStoreClientParam = 0x1F;
-
-/** Key to Ovi Store client Uid */
-const TUint32 KOviStoreUid = 0x20;
-
-// ************************************************************
-// NON-LOCALISED Operator parameters
-// ************************************************************
-
-/** Key to Operator button icon */
-const TUint32 KOperatorButtonEnabled = 0x21;
-
-/** Key to Operator button icon */
-const TUint32 KOperatorButtonIcon = 0x22;
-
 /** 
- * Key to Operator application type and id.
+ * Key to Store application type and id.
  * Give ':' as separator between type and id.
  * Type can be s60, cwrt, wrt, java, qt
  * Examples:
@@ -83,16 +85,13 @@
  * java:c:/sys/bin/javastore.jar            full path for java app
  * qt:0x2001A9CA                            Application Uid as id
  */
-const TUint32 KOperatorAppTypeAndId = 0x23;
-
-/** Key to Operator application param */
-const TUint32 KOperatorParam = 0x24;
+const TUint32 KAppTypeAndId = 0x25;
 
-/** 
- * Key to define if operator button needs to be placed to left in landscape and
- * top on portraid. By default it's right and bottom. 
- */
-const TUint32 KOperatorButtonHigherPriority = 0x25;
+/** */
+const TUint32 KAppParam = 0x26;
+
+/** Key to Store icon */
+const TUint32 KIcon = 0x27;
 
 
 #endif // __WMCRKEYS_H__
--- a/idlehomescreen/widgetmanager/inc/wmimageconverter.h	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/widgetmanager/inc/wmimageconverter.h	Wed Sep 15 12:00:00 2010 +0300
@@ -57,6 +57,7 @@
      * @param aIconStr str containing logo icon
 	 * @param aBitmap bitmap to create. Empty if fails
 	 * @param aMask mask to create. Empty if fails
+	 * @param aForceScale force scaling for non-scalable icons.
      * Supported values:
      * - skin(<major id> <minor id>):mif(<path> <bitmapid> <maskid>)
      * - mif(<path> <bitmapid> <maskid>)
@@ -69,7 +70,8 @@
             const TSize& aIconSize,
             const TDesC& aIconStr,
             CFbsBitmap*& aBitmap,
-            CFbsBitmap*& aMask  );
+            CFbsBitmap*& aMask,
+            TBool aForceScale = EFalse );
     
 	/**
      * Parses icon string and resizes given bitmaps if needed.
@@ -85,6 +87,25 @@
             const TDesC& aIconStr, 
             CFbsBitmap& aBitmap, 
             CFbsBitmap& aMask );
+
+    /**
+     * Parses icon string. 
+     * 
+     * @param aIconStr icon string to be parsed
+     * @param aItemId fetched skin id
+     * @param aBitmapId fetched bitmap id
+     * @param aMaskId fetched mask id 
+     * @param aFileName fetched file name 
+     * 
+     * @return ETrue if success with parsing.   
+     */
+    
+    TBool ParseIconString( 
+            const TDesC& aIconStr, 
+            TAknsItemID& aItemId,
+            TInt& aBitmapId, 
+            TInt& aMaskId, 
+            TDes& aFileName );
     
 private:
     CWmImageConverter(); 
@@ -92,20 +113,23 @@
 
 private:
     void CheckSvgErrorL( MSvgError* aError );
-    void HandleIconStringL( const TSize& aIconSize, const TDesC& aIconStr );
+    void HandleIconStringL( 
+            const TSize& aIconSize, 
+            const TDesC& aIconStr, 
+            TBool aForceScale );
     
-    void CreateIconFromUidL( const TUid& aUid );
+    void CreateIconFromUidL( const TUid& aUid, TBool aForceScale );
     void CreateIconFromSvgL( const TDesC& aFileName );
-    void CreateIconFromOtherL( const TDesC& aFileName );
+    void CreateIconFromOtherL( const TDesC& aFileName, TBool aForceScale );
     void CreateSkinOrMifIconL( 
                     const TAknsItemID& aItemId, TInt aBitmapId, 
                     TInt aMaskId, const TDesC& aFileName );
     // resolvers
-    TBool ResolveUid( const TDesC& aPath, TUid& aUid );
-    TBool ResolveSkinId( const TDesC& aPath, TAknsItemID& aItemId );
-    TBool ResolveMifId( const TDesC& aPath, TInt& aBitmapId, 
+    TBool ResolveUid( const TDesC& aStr, TUid& aUid );
+    TBool ResolveSkinId( const TDesC& aStr, TAknsItemID& aItemId );
+    TBool ResolveMifId( const TDesC& aStr, TInt& aBitmapId, 
                         TInt& aMaskId, TDes& aFileName );
-    TBool ResolveSkinIdAndMifId( const TDesC& aPath, TAknsItemID& aItemId,
+    TBool ResolveSkinIdAndMifId( const TDesC& aStr, TAknsItemID& aItemId,
                         TInt& aBitmapId, TInt& aMaskId, TDes& aFileName );
     TBool EndsWith( const TDesC& aString, const TDesC& aPattern );
 
--- a/idlehomescreen/widgetmanager/inc/wmmaincontainer.h	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/widgetmanager/inc/wmmaincontainer.h	Wed Sep 15 12:00:00 2010 +0300
@@ -38,7 +38,7 @@
 class CAknSearchField;
 class CCoeControl;
 class CAknSearchField;
-class CWmPortalButton;
+class CWmStore;
 class CWmMainContainerView;
 class CWmConfiguration;
 
@@ -94,11 +94,6 @@
     TBool IsLoadingWidgets();
     
     /** 
-     * @return true, if portal button is currently selected 
-     */
-    TBool PortalSelected();
-    
-    /** 
      * @return true, if a widget in list is currently selected 
      */
     TBool WidgetSelected();
@@ -174,14 +169,9 @@
     void UninstallWidgetL();
 
     /**
-     * opens currently selected portal
+     * Store menu command.
      */
-    void OpenPortalL();
-
-    /**
-     * Selection key (middle soft key)
-     */
-    void SelectL();
+    void HandleStoreCommandL();
     
     /**
      * Show widget manager help
@@ -226,12 +216,6 @@
      * @see CCoeControl::HandlePointerEventL
      */
     void HandlePointerEventL( const TPointerEvent& aPointerEvent );
-    
-    /**
-     * Moves focus to the OVI button
-     * @param aIndex 0=first button, 1=second (if it exists)
-     */
-    void SetFocusToPortalButton( TInt aIndex );
 
     /**
      * Moves focus to the widgets list, alternatively also setting the currently
@@ -252,17 +236,6 @@
      * To set iClosingDown. See above.
      */
     void SetClosingDown( TBool aClosingDown );
-
-    /**
-     * access to WM configuration
-     */
-    CWmConfiguration& Configuration();
-    
-    /**
-     * Process foregound events.
-     * @param aForeground ETrue indicates foreground
-     */
-    void ProcessForegroundEvent( TBool aForeground );
     
     /**
      * access to WM list
@@ -314,28 +287,22 @@
     
 private: // New functions
     
+    void DisplayAndLaunchStoresL();
+    static void CleanupIconArray( TAny* aIconArray );
+
     void AddControlL( CCoeControl* aControl, TInt aControlId );
     void InitializeControlsL( const TRect& aRect );
     void LayoutControls();
     void StartLoadingWidgetsL();
     void RemoveCtrlsFromStack();
-    void UpdateFocusMode();
-    void ResetFocus( TDrawNow aDrawNow = ENoDrawNow );
     CCoeControl* FindChildControlByPoint( const TPoint& aPoint );
     void HandleFindSizeChanged();
-    TKeyResponse MoveFocusByKeys(
-            const TKeyEvent& aKeyEvent, 
-            TEventCode aType );
-    TKeyResponse HandleButtonKeyEventL( 
-            const TKeyEvent& aKeyEvent, 
-            TEventCode aType );
     TKeyResponse HandleListKeyEventL( 
             const TKeyEvent& aKeyEvent, 
             TEventCode aType );
     TKeyResponse HandleSearchKeyEventL( 
             const TKeyEvent& aKeyEvent, 
             TEventCode aType );
-    TInt OperatorButtonHigherPriority( TInt aIndex );
     
 public: // from MWmWidgetloaderObserver
     void LoadDoneL( TBool aWidgetListChanged );
@@ -366,55 +333,23 @@
      * background
      */
     CAknsBasicBackgroundControlContext* iBgContext;
-    
-    /**
-     * portal button
-     * (if there is only one button, this is it)
-     */
-    CWmPortalButton*         iPortalButtonOne;
 
     /**
-     * portal button
-     * (if there is only one button, this is NULL)
-     */
-    CWmPortalButton*         iPortalButtonTwo;
-
-    /** whether we are orientated in landscape */
-    TBool                   iLandscape;
-
-    /** whether we have mirrored layout */
-    TBool                   iMirrored;
-
-    /** focus modes */
-    enum TWmFocusMode
-        {
-        ENowhere,
-        EPortal,
-        EList,
-        EFind
-        };
-
-    /**
-     * current widget manager focus mode
-     */
-    TWmFocusMode            iFocusMode;
-    
-    /**
      * AO for loading widgets into the list UI
      */
     CWmWidgetLoaderAo*      iWidgetLoader;
-    
+
+    /**
+     * Currectly selected store.
+     */
+    CWmStore*               iSelectedStore;
+
     /**
      * If this is set to ETrue it means wmview is closing and all user inputs
      * should be ignored.
      */
     TBool                   iClosingDown;
     
-    /**
-     * The configuration
-     */
-    CWmConfiguration*       iConfiguration;
-    
 #ifdef _WM_UNIT_TEST
     friend class CWmUnitTest;
 #endif
--- a/idlehomescreen/widgetmanager/inc/wmmaincontainerview.h	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/widgetmanager/inc/wmmaincontainerview.h	Wed Sep 15 12:00:00 2010 +0300
@@ -79,15 +79,7 @@
      * @see CAknView::DoActivateL
      */
     void DoDeactivate();
-		
-public: // from MeikMenuObserver
-	
-    /** 
-     * Foreground event handling function.  
-     * @param aForeground Indicates the required focus state of the control.
-     */ 
-    void HandleForegroundEventL( TBool aForeground );
-	    
+
 private:
     CWmMainContainerView( CWmPlugin& aWmPlugin );    
     void ConstructL();    
@@ -114,7 +106,6 @@
 private:
     
     /** menu commands */
-    TBool HandleOpenMenuItemSelectedL();
     TBool HandleAddMenuItemSelectedL();
     TBool HandleLaunchMenuItemSelectedL();
     TBool HandleSearchMenuItemSelectedL();
@@ -125,6 +116,8 @@
 	TBool HandleDeactivateFindPaneL();
 	/** setup title in status pane */
 	void SetTitleL();
+	/** setup msk icon */
+	void UpdateMSKIconL();
 
 private:
     /** 
@@ -141,7 +134,6 @@
 	 * the plugin root (not owned) 
 	 */
 	CWmPlugin& iWmPlugin;
-
 	};
 
 #endif // WMMAINCONTAINERVIEW_H
--- a/idlehomescreen/widgetmanager/inc/wmplugin.h	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/widgetmanager/inc/wmplugin.h	Wed Sep 15 12:00:00 2010 +0300
@@ -33,6 +33,7 @@
 class CWmEffectManager;
 class CWmWidgetData;
 class CWmInstaller;
+class CWmConfiguration;
 
 /**
  * CWmPlugin 
@@ -167,6 +168,11 @@
     CWmInstaller& WmInstaller();
     
     /**
+     * reference to iWmConfiguration
+     */
+    CWmConfiguration& Configuration();
+    
+    /**
      * Get widget by Uid. Used for getting widget details 
      * when error has occured during uninstallation.
      * @param aUid Uid of widget
@@ -251,6 +257,11 @@
      */
     TInt iExecutionCount;
     
+    /**
+     * The configuration
+     */
+    CWmConfiguration*       iConfiguration;
+    
 #ifdef _WM_UNIT_TEST
     friend class CWmUnitTest;
 #endif
--- a/idlehomescreen/widgetmanager/inc/wmportalbutton.h	Tue Sep 14 20:58:58 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,173 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies)..
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-* Declares portal button for WidgetManager
-*
-*/
-
-#ifndef ___WMPORTALBUTTON_H__
-#define ___WMPORTALBUTTON_H__
-
-#include <aknbutton.h>	// CAknButton
-#include <AknServerApp.h> //MAknServerAppExitObserver
-
-#include "wmcommon.h"
-
-// FORWARD DECLARATIONS
-class CWmMainContainer;
-class CFbsBitmap;
-class CWmConfiguration;
-class CWmProcessMonitor;
-class CBrowserLauncher;
-class CWmImageConverter;
-
-/**
- * Portal button ( ovi, operator ) class for Wm
- * 
- * @class   CWmPortalButton wmportalbutton.h
- */
-NONSHARABLE_CLASS( CWmPortalButton ) : public CAknButton,
-                                       public MCoeControlObserver,
-                                       public MAknServerAppExitObserver
-    {
-public:
-    /*
-     * Two-phased constructor.
-     * 
-     * @param aParent button title text
-     * @param aPortalButtonIndex index of this button (0 or 1)
-     */
-    static CWmPortalButton* NewL(
-            const CCoeControl* aParent,
-            TInt aPortalButtonIndex = 0 );
-    
-    /** Destructor */
-    virtual ~CWmPortalButton();
-                                      
-public: // Functions from base class
-
-    /*
-     * Draws the control.
-     * 
-     * @see CCoeControl::Draw
-     */
-    void Draw( const TRect& /*aRect*/ ) const;
-    
-    /**
-     * Sets the control's extent, specifying a rectangle.
-     * 
-     * @see CCoeControl::SizeChanged
-     */
-    void SizeChanged();
-    
-    /**
-     * Executes action for button pressed
-     */
-    void ExecuteL();
-    
-protected: // from MCoeControlObserver
-
-    /** Observes the button's own activity  */
-    void HandleControlEventL( CCoeControl* aControl, TCoeEvent aEventType );
-    
-protected: // from MAknServerAppExitObserver
-
-    /** Observes when browser is exited  */
-    void HandleServerAppExit( TInt aReason );
-    
-protected: // from CCoeControl
-
-    /** Handles pointer events.  */
-    void HandlePointerEventL( const TPointerEvent& aPointerEvent );
-    
-protected: // Constructors
-    
-    /** Constructor for performing 1st stage construction */
-    CWmPortalButton( const TInt aFlags,
-            TInt aPortalButtonIndex );
-    
-    /** 2nd phase constructor */
-    void ConstructL( 
-            CWmMainContainer* aParent,
-            const TDesC& aText = KNullDesC,
-            const TDesC& aIcon = KNullDesC );
-    
-private:
-
-    /** size of button icon, defined in the layout */
-    TSize LayoutIconSize() const;
-    
-    /** Draws text over button */
-    void DrawText( CWindowGc& aGc,
-                   const TDesC& aText, 
-                   TAknTextComponentLayout& aLayout,
-                   TInt aMargin ) const;
-    
-    /** Runs ovi store launcher */
-    void RunOviL( CWmConfiguration& aConf );
-    
-    /**  Starts browser */ 
-    void StartBrowserL( const TDesC& aUrl );
-    
-	/** Starts operator application */
-    void RunOperatorApplicationL( CWmConfiguration& aConf );
-    
-	/** Starts rprocess by given values */
-    void StartProcessL( TUid aUid, const TDesC& aParam );
-    	
-    /**
-     * Opens cwrt/wrt widget to fullscreen. 
-     * @param aAppUid Uid of the widget
-     * @param aParams Optional parameters
-     * */
-    void StartWidgetL( TUid aAppUid, const TDesC& aParams );
-    
-private: //data members
-
-    /**
-     * the image converter utility
-     */    
-    CWmImageConverter*  iImageConverter;
-
-    /**
-     * Parent control
-     */ 
-    CWmMainContainer* iWmMainContainer;
-
-    /** 
-     * Button index
-     */ 
-    TInt iPortalButtonIndex;
-
-    /** icon */
-    CFbsBitmap* iButtonIcon;
-    
-    /** icon mask */
-    CFbsBitmap* iButtonIconMask;
-	
-    /**
-     * Monitors process 
-     */
-    CWmProcessMonitor* iProcessMonitor;
-
-    /** 
-     * Broswer launcher. 
-     */
-    CBrowserLauncher* iBrowserLauncher;
-
- 	};
-
-#endif //___WMPORTALBUTTON_H__
-
-// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/inc/wmstore.h	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,169 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies)..
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* Declares Store for WidgetManager
+*
+*/
+
+#ifndef ___WMSTORE_H__
+#define ___WMSTORE_H__
+
+#include <AknServerApp.h> //MAknServerAppExitObserver
+
+#include "wmcommon.h"
+
+// FORWARD DECLARATIONS
+class CWmMainContainer;
+class CFbsBitmap;
+class CWmConfiguration;
+class CWmConfItem;
+class CWmProcessMonitor;
+class CBrowserLauncher;
+class CWmImageConverter;
+class CWmResourceLoader;
+
+/**
+ * Store ( ovi, operator ) class for Wm
+ * 
+ * @class CWmStore wmStore.h
+ */
+NONSHARABLE_CLASS( CWmStore ) : public CBase,
+                                 public MAknServerAppExitObserver
+    {
+public:
+    /** Store Id */
+    enum TStoreId
+        {
+        EUnknown = 0,
+        EOvi,
+        EStore1,
+        EStore2, // for future use. Can be extented
+        ELastItem // do not use as store id
+        };
+
+    /*
+     * Two-phased constructor.
+     *
+     * @param aStoreIndex index of this Store (0 or 1)
+     * @param aWmConfiguration Store config 
+     * @param aResourceLoader wm resource loader
+     */
+    static CWmStore* NewL( CWmConfItem& aWmConfItem,
+            CWmResourceLoader& aResourceLoader );
+    
+    /** Destructor */
+    virtual ~CWmStore();
+                                      
+public: // New Functions
+
+    /**
+     * Executes action for store
+     */
+    void ExecuteL();
+    
+    /**
+     * Icon of store
+     * 
+     * @return icon of Store ( ownership not transfered ) 
+     */
+    CFbsBitmap* StoreIcon();
+    
+    /**
+     * Mask for icon of store.
+     * 
+     * @return mask of Store icon ( ownership not transfered ) 
+     */
+    CFbsBitmap* StoreMask();
+
+    /**
+     * Heading of store
+     * 
+     * @return heading of store. 
+     */
+    const TDesC& Heading();
+    
+    /**
+     * Order of store
+     * 
+     * @return order of store. 
+     */
+    TInt Order() const;
+    
+protected: // from MAknServerAppExitObserver
+
+    /** Observes when browser is exited  */
+    void HandleServerAppExit( TInt aReason );
+   
+protected: // Constructors
+    
+    /** Constructor for performing 1st stage construction */
+    CWmStore( CWmConfItem& aWmConfItem );
+    
+    /** 2nd phase constructor */
+    void ConstructL( CWmResourceLoader& aResourceLoader );
+    
+private:
+    
+    /** Runs ovi store launcher */
+    void RunOviL();
+    
+    /**  Starts browser */ 
+    void StartBrowserL( const TDesC& aUrl );
+    
+	/** Starts application */
+    void RunApplicationL();
+    
+	/** Starts rprocess by given values */
+    void StartProcessL( TUid aUid, const TDesC& aParam );
+    	
+    /**
+     * Opens cwrt/wrt widget to fullscreen. 
+     * @param aAppUid Uid of the widget
+     * @param aParams Optional parameters
+     * */
+    void StartWidgetL( TUid aAppUid, const TDesC& aParams );
+    
+private: //data members
+
+    /**
+     * the image converter utility
+     */    
+    CWmImageConverter*  iImageConverter;
+
+    /**
+     * Configuration item for store data
+     */
+    CWmConfItem& iWmConfItem;
+    
+    /** icon */
+    CFbsBitmap* iIcon;
+    
+    /** icon mask */
+    CFbsBitmap* iMask;
+    
+    /**
+     * Monitors process 
+     */
+    CWmProcessMonitor* iProcessMonitor;
+
+    /** 
+     * Broswer launcher. 
+     */
+    CBrowserLauncher* iBrowserLauncher;
+
+ 	};
+
+#endif //___WMSTORE_H__
+
+// End of File
--- a/idlehomescreen/widgetmanager/loc/widgetmanagerview.loc	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/widgetmanager/loc/widgetmanagerview.loc	Wed Sep 15 12:00:00 2010 +0300
@@ -96,16 +96,34 @@
 
 
 // MISC
-
-// d: Text displayed on OVI Store button 
+// d: Name of Ovi Store in storelist
 // d: 
 // d: 
-// l: wgtman_btn_pane_t1
+// l: list_double_large_graphic_pane_t1
 // w:
 // r: TB9.2
 //
 #define qtn_wm_ovi_store_title "Get more"
 
+// d: Description of Ovi Store in storelist
+// d: 
+// d: 
+// l: list_double_large_graphic_pane_t2
+// w:
+// r: TB9.2
+//
+#define qtn_wm_ovi_store_desc "Nokia"
+
+// d: Title of the popup storelist 
+// d: 
+// d: 
+// l: heading_pane_t1
+// w:
+// r: TB9.2
+//
+#define qtn_wm_storelist_title "Select"
+
+
 // d: Info popup to indicate that an item can not be added to home screen
 // d: because current view is full
 // d: 
--- a/idlehomescreen/widgetmanager/src/wmconfiguration.cpp	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/widgetmanager/src/wmconfiguration.cpp	Wed Sep 15 12:00:00 2010 +0300
@@ -27,14 +27,15 @@
 #include "wmconfiguration.h"
 #include "wmresourceloader.h"
 #include "wmcrkeys.h"
+#include "wmstore.h"
 
 // some constants regarging the central repository localised section.
 // these will ensure CR localisation section compatibility even if
 // new strings are added
-const TInt KLangOffsetOperatorUrl = KOperatorButtonUrl0 - KLangId0;
-const TInt KLangOffsetOperatorText = KOperatorButtonText0 - KLangId0;
-const TInt KLangGroupSize = KLangId1 - KLangId0;
-const TUint32 KLastLangId = KLangId9;
+const TInt KLangOffsetStoreUrl = KUrl_0 - KLangId_0;
+const TInt KLangOffsetStoreText = KTitle_0 - KLangId_0;
+const TInt KLangGroupSize = KLangId_1 - KLangId_0;
+const TUint32 KLastLangId = KLangId_9;
 
 _LIT( KOpAppTypeS60, "s60" );
 _LIT( KOpAppTypeCwrt, "cwrt" );
@@ -42,7 +43,7 @@
 _LIT( KOpAppTypeJava, "java" );
 _LIT( KOpAppTypeQt, "qt" );
 _LIT( KSeparator, ":" );
-_LIT( KOperatorIcon, "uid(%d)");
+_LIT( KStoreIconFormat, "uid(%d)");
 _LIT( KHexPrefix, "0x" );
 
 // ---------------------------------------------------------
@@ -67,15 +68,7 @@
         CWmResourceLoader& aResourceLoader )
     : iResourceLoader( aResourceLoader )
 	{
-
-    // ovi
-    iOviStoreUid = KNullUid;
-
-    // operator
-    iOperatorAppIdUid = KNullUid;
-    iOperatorAppType = EUnknown;
-    iOperatorButtonEnabled = EFalse;
-    iButtonsMirrored = EFalse;
+    
 	}
 
 // ---------------------------------------------------------
@@ -84,17 +77,8 @@
 //
 CWmConfiguration::~CWmConfiguration()
 	{
-    delete iRepository;
-    // ovi
-    delete iOviStoreClientParam;
-    delete iOviButtonTitle;
-    delete iOviButtonIcon;
-    // operator
-    delete iOperatorButtonTitle;
-    delete iOperatorButtonIcon;
-    delete iOperatorButtonUrl;
-    delete iOperatorParam;
-    delete iOperatorAppIdStr;
+    delete iRepository;    
+    iConfItems.ResetAndDestroy();
 	}
 
 // ---------------------------------------------------------
@@ -103,24 +87,8 @@
 //
 void CWmConfiguration::ConstructL()
 	{
-	// localised ovistore button text
-    iOviButtonTitle = StringLoader::LoadL( R_QTN_WM_GO_TO_OVI_STORE );
-
-    // ovistore icon descriptor. It will look something like this:
-    // skin( 0x101f86e3 0x23f6 ):mif( z:\resource\apps\widgetmanager.mif 16388 16389 )
-    _LIT( KSkinMifIconFormat, "skin( 0x%x 0x%x ):mif( %S %d %d )");
-    const TInt KMaxIconDescriptorLength = 256;
-    TBuf<KMaxIconDescriptorLength> buf;
-    buf.Format( KSkinMifIconFormat(),
-             EAknsMajorGeneric, EAknsMinorGenericQgnMenuOviStore,
-             &iResourceLoader.IconFilePath(),
-             EMbmWidgetmanagerQgn_menu_ovistore,
-             EMbmWidgetmanagerQgn_menu_ovistore_mask );
-    iOviButtonIcon = buf.AllocL();
-
     // read data from repository
     TRAP_IGNORE( LoadConfigurationL(); );
-
 	}
 
 // ---------------------------------------------------------
@@ -130,25 +98,75 @@
 void CWmConfiguration::LoadConfigurationL()
     {
     iRepository = CRepository::NewL( 
-            TUid::Uid( KCrWidgetManagerm ) );
+            TUid::Uid( KCrWidgetManager ) );
+    
+    TLinearOrder<CWmConfItem> order 
+        = CWmConfiguration::CompareStoreOrder;
 
     // read Ovi parameters
-    ReadInt32Parameter( KOviStoreUid, iOviStoreUid.iUid );
-    iOviStoreClientParam = ReadDescParameterL( KOviStoreClientParam ); 
-    
-    // read operator parameters if operator button enabled
-    ReadIntParameter( KOperatorButtonEnabled, iOperatorButtonEnabled );
-    if ( iOperatorButtonEnabled )
+    TInt oviEnabled;
+    ReadIntParameter( KOviStoreEnabled, oviEnabled );
+    if ( oviEnabled )
         {
-        // determine language and read localised parameters
+        CWmConfItem* ovi = CWmConfItem::NewLC();
+        ovi->iId = CWmStore::EOvi;
+        
+        // localised ovistore text
+        _LIT( KFormatStr, "%S\t%S");
+        HBufC* title = StringLoader::LoadLC( R_QTN_WM_OVI_STORE_TITLE );
+        HBufC* desc = StringLoader::LoadLC( R_QTN_WM_OVI_STORE_DESC );
+        
+        ovi->iTitle = HBufC::NewL( title->Des().Length() +
+                                   desc->Des().Length() + 
+                                   KFormatStr().Length() );
+
+        ovi->iTitle->Des().Format( KFormatStr(), title, desc );
+        
+        CleanupStack::PopAndDestroy( desc );
+        CleanupStack::PopAndDestroy( title );
+        
+        // ovistore icon descriptor. It will look something like this:
+        // skin( 0x101f86e3 0x23f6 ):mif( z:\resource\apps\widgetmanager.mif 16388 16389 )
+        _LIT( KSkinMifIconFormat, "skin( 0x%x 0x%x ):mif( %S %d %d )");
+        const TInt KMaxIconDescriptorLength = 256;
+        TBuf<KMaxIconDescriptorLength> buf;
+        buf.Format( KSkinMifIconFormat(),
+                 EAknsMajorGeneric, EAknsMinorGenericQgnMenuOviStore,
+                 &iResourceLoader.IconFilePath(),
+                 EMbmWidgetmanagerQgn_menu_ovistore,
+                 EMbmWidgetmanagerQgn_menu_ovistore_mask );
+        ovi->iIcon = buf.AllocL();
+        
+        ReadIntParameter( KOviOrder, ovi->iOrder );
+        ReadInt32Parameter( KOviUid, ovi->iAppUid.iUid );
+        ovi->iAppParam = ReadDescParameterL( KOviAppParam );
+
+        // Item to Array
+        iConfItems.InsertInOrderL( ovi, order );
+        CleanupStack::Pop( ovi );
+        }
+    
+    // read Store parameters if Store enabled
+    TInt storeEnabled = 0;
+    ReadIntParameter( KStoreEnabled, storeEnabled );
+    if ( storeEnabled )
+        {
         iLanguageIndex = FindCorrectLanguageId();
-        iOperatorButtonTitle = ReadLocalisedParameterL( KLangOffsetOperatorText );
-        iOperatorButtonUrl = ReadLocalisedParameterL( KLangOffsetOperatorUrl );
+        
+        CWmConfItem* op = CWmConfItem::NewLC();
+        op->iId = CWmStore::EStore1;
+        
+        op->iTitle = ReadLocalisedParameterL( KLangOffsetStoreText );
+        op->iUrl = ReadLocalisedParameterL( KLangOffsetStoreUrl );
         // read non-localised parameters
-        iOperatorButtonIcon = ReadDescParameterL( KOperatorButtonIcon );
-        ReadOperatorApplicationInfoL();
-        iOperatorParam = ReadDescParameterL( KOperatorParam );
-        ReadIntParameter( KOperatorButtonHigherPriority, iButtonsMirrored );
+        op->iIcon = ReadDescParameterL( KIcon );
+        ReadApplicationInfoL( KAppTypeAndId, *op );
+        op->iAppParam = ReadDescParameterL( KAppParam );        
+        ReadIntParameter( KOrder, op->iOrder );
+        
+        // Item to Array
+        iConfItems.InsertInOrderL( op, order );
+        CleanupStack::Pop( op );
         }
 
     delete iRepository;
@@ -167,7 +185,7 @@
     TLanguage sysLang = User::Language();
     
     //read language id's from cenrep, find a match
-    for( TUint32 i=KLangId0; i<=KLastLangId && languageIndex<0; i+=KLangGroupSize )
+    for( TUint32 i=KLangId_0; i<=KLastLangId && languageIndex<0; i+=KLangGroupSize )
         {
         TInt crLang = 0;
         if ( iRepository->Get( i, crLang ) == KErrNone )
@@ -246,7 +264,7 @@
     if ( err != KErrNone || buf.Length() == 0 )
         {
         // This language is empty. Try default language (index 0)
-        err = iRepository->Get( KLangId0 + aOffset, buf );
+        err = iRepository->Get( KLangId_0 + aOffset, buf );
         }
 
     // construct string in heap
@@ -259,12 +277,13 @@
     }
 
 // ---------------------------------------------------------
-// CWmConfiguration::ReadOperatorApplicationInfoL
+// CWmConfiguration::ReadApplicationInfoL
 // ---------------------------------------------------------
 //
-void CWmConfiguration::ReadOperatorApplicationInfoL()
+void CWmConfiguration::ReadApplicationInfoL( 
+        TInt aKey, CWmConfItem& aConfItem )
     {
-    HBufC* applicationInfo = ReadDescParameterL( KOperatorAppTypeAndId );
+    HBufC* applicationInfo = ReadDescParameterL( aKey );
     if ( applicationInfo && applicationInfo->Des().Length() > 0 )
         {
         CleanupStack::PushL( applicationInfo );
@@ -280,34 +299,32 @@
             
             if ( !type.Compare( KOpAppTypeS60 ) )
                 {
-                iOperatorAppType = ES60;
-                iOperatorAppIdUid = StringToUid( appId );
-                SetOperatorIconL( iOperatorAppIdUid );
+                aConfItem.iAppType = ES60;
+                aConfItem.iAppUid = StringToUid( appId );
+                SetStoreIconL( aConfItem );
                 }
             else if ( !type.Compare( KOpAppTypeCwrt ) )
                 {
-                iOperatorAppType = ECwrt;
-                iOperatorAppIdUid = FetchWidgetUidFromRegistryL( appId );
-                SetOperatorIconL( iOperatorAppIdUid );
+                aConfItem.iAppType = ECwrt;
+                aConfItem.iAppUid = FetchWidgetUidFromRegistryL( appId );
+                SetStoreIconL( aConfItem );
                 }
             else if ( !type.Compare( KOpAppTypeWrt ) )
                 {
-                iOperatorAppType = EWrt;
-                iOperatorAppIdUid = FetchWidgetUidFromRegistryL( appId );
-                SetOperatorIconL( iOperatorAppIdUid );
+                aConfItem.iAppType = EWrt;
+                aConfItem.iAppUid = FetchWidgetUidFromRegistryL( appId );
+                SetStoreIconL( aConfItem );
                 }
             else if ( !type.Compare( KOpAppTypeJava ) )
                 {
-                //TODO: java support is not fully implemented
+                // java support is not fully implemented
                 User::Leave( KErrGeneral );
-                iOperatorAppType = EJava;
-                iOperatorAppIdStr = appId.AllocL();
                 }
             else if ( !type.Compare( KOpAppTypeQt ) )
                 {
-                iOperatorAppType = EQt;
-                iOperatorAppIdUid = StringToUid( appId );
-                SetOperatorIconL( iOperatorAppIdUid );
+                aConfItem.iAppType = EQt;
+                aConfItem.iAppUid = StringToUid( appId );
+                SetStoreIconL( aConfItem );
                 }
             }
         CleanupStack::PopAndDestroy( applicationInfo );
@@ -315,20 +332,21 @@
     }
 
 // ---------------------------------------------------------
-// CWmConfiguration::SetOperatorIcon
+// CWmConfiguration::SetStoreIcon
 // ---------------------------------------------------------
 //
-void CWmConfiguration::SetOperatorIconL( TUid aUid )
+void CWmConfiguration::SetStoreIconL( CWmConfItem& aConfItem )
     {
-    if ( iOperatorButtonIcon &&
-        !iOperatorButtonIcon->Des().Length() )
+    if ( aConfItem.iIcon &&
+        !aConfItem.iIcon->Des().Length() )
         {
-        delete iOperatorButtonIcon;
-        iOperatorButtonIcon = NULL;
-        iOperatorButtonIcon = HBufC::NewL(
-                KMaxUidName + KOperatorIcon().Length() );
-        iOperatorButtonIcon->Des().Format(
-                KOperatorIcon(), aUid );
+        delete aConfItem.iIcon;
+        aConfItem.iIcon = NULL;
+        
+        aConfItem.iIcon = HBufC::NewL(
+                KMaxUidName + KStoreIconFormat().Length() );
+        aConfItem.iIcon->Des().Format(
+                KStoreIconFormat(), aConfItem.iAppUid );
         }
     }
 
@@ -347,137 +365,6 @@
     CleanupStack::PopAndDestroy( &clientSession );
     return TUid::Uid( ret );
     }
-     
-// ---------------------------------------------------------
-// CWmConfiguration::PortalButtonCount
-// ---------------------------------------------------------
-//
-TInt CWmConfiguration::PortalButtonCount()
-    {
-    return ( iOperatorButtonEnabled ? 2 : 1 );
-    }
-
-// ---------------------------------------------------------
-// CWmConfiguration::PortalButtonText
-// ---------------------------------------------------------
-//
-const TDesC& CWmConfiguration::PortalButtonText( TInt aIndex )
-    {
-    if ( aIndex == 0 && iOviButtonTitle )
-        return *iOviButtonTitle;
-    if ( aIndex == 1 && iOperatorButtonTitle && iOperatorButtonEnabled )
-        return *iOperatorButtonTitle;
-    return KNullDesC;
-    }
-
-// ---------------------------------------------------------
-// CWmConfiguration::PortalButtonIcon
-// ---------------------------------------------------------
-//
-const TDesC& CWmConfiguration::PortalButtonIcon( TInt aIndex )
-    {
-    if ( aIndex == 0 && iOviButtonIcon )
-        return *iOviButtonIcon;
-    if ( aIndex == 1 && iOperatorButtonIcon && iOperatorButtonEnabled )
-        return *iOperatorButtonIcon;
-    return KNullDesC;
-    }
-
-// ---------------------------------------------------------
-// CWmConfiguration::PortalButtonBrowserUrl
-// ---------------------------------------------------------
-//
-const TDesC& CWmConfiguration::PortalButtonBrowserUrl( TInt aIndex )
-    {
-    // No support for ovi here
-    if ( aIndex == 1 && iOperatorButtonUrl && iOperatorButtonEnabled )
-        return *iOperatorButtonUrl;
-    return KNullDesC;
-    }
-
-// ---------------------------------------------------------
-// CWmConfiguration::PortalButtonClientUid
-// ---------------------------------------------------------
-//
-TUid CWmConfiguration::PortalButtonClientUid( TInt aIndex )
-    {
-    if ( aIndex == 0 )
-        {
-        return iOviStoreUid;
-        } 
-    // operator not supported. Get operator data using 
-    // PortalButtonApplicationInfoL
-    return KNullUid;
-    }
-
-// ---------------------------------------------------------
-// CWmConfiguration::PortalButtonClientParam
-// ---------------------------------------------------------
-//
-const TDesC& CWmConfiguration::PortalButtonClientParam( TInt aIndex )
-    {
-    if ( aIndex == 0 && iOviStoreClientParam )
-        {
-        return *iOviStoreClientParam;
-        }
-    if ( aIndex == 1 && iOperatorParam && iOperatorButtonEnabled )
-        {
-        return *iOperatorParam;
-        }
-    return KNullDesC;
-    }
-
-// ---------------------------------------------------------
-// CWmConfiguration::PortalButtonsMirrored
-// ---------------------------------------------------------
-//
-TBool CWmConfiguration::PortalButtonsMirrored()
-    {
-    return iButtonsMirrored;
-    } 
-   
-// ---------------------------------------------------------
-// CWmConfiguration::PortalButtonApplicationType
-// ---------------------------------------------------------
-//
-CWmConfiguration::TOpAppType CWmConfiguration::PortalButtonApplicationType( 
-        TInt aIndex )
-    {
-    if ( aIndex == 1 )
-        {
-        return iOperatorAppType;
-        }
-    // no support for ovi
-    return EUnknown;
-    }
-
-// ---------------------------------------------------------
-// CWmConfiguration::PortalButtonApplicationId
-// ---------------------------------------------------------
-//
-void CWmConfiguration::PortalButtonApplicationId( 
-        TInt aIndex, TDes& aOperatorAppId )
-    {
-    if ( aIndex == 1 )
-        {
-        aOperatorAppId.Copy( *iOperatorAppIdStr );
-        }
-    // no support for ovi
-    }
-
-// ---------------------------------------------------------
-// CWmConfiguration::PortalButtonApplicationId
-// ---------------------------------------------------------
-//
-void CWmConfiguration::PortalButtonApplicationId( 
-        TInt aIndex, TUid& aOperatorAppId )
-    {
-    if ( aIndex == 1 )
-        {
-        aOperatorAppId = iOperatorAppIdUid; 
-        }
-    // no support for ovi
-    }
 
 // ---------------------------------------------------------
 // CWmConfiguration::StringToUid
@@ -507,6 +394,168 @@
     return KNullUid;
     }
 
+// ---------------------------------------------------------
+// CWmConfiguration::CompareStoreOrder
+// ---------------------------------------------------------
+//
+TInt CWmConfiguration::CompareStoreOrder( 
+        const CWmConfItem& aItemOne, const CWmConfItem& aItemTwo )
+    {
+    // 1. zero, if the two objects are equal.
+    // 2. a negative value, if the first object is less than the second.
+    // 3. a positive value, if the first object is greater than the second.
+    TInt ret = 0;
+    if ( aItemOne.iOrder < aItemTwo.iOrder )
+        {
+        ret = -1;
+        }
+    if ( aItemOne.iOrder > aItemTwo.iOrder )
+        {
+        ret = 1;
+        }
+    return ret;
+    }
+	
+// ---------------------------------------------------------
+// CWmConfiguration::StoreConfArray
+// ---------------------------------------------------------
+//
+const RPointerArray<CWmConfItem>& CWmConfiguration::StoreConfArray()
+    {
+    return iConfItems;
+    }
+
+// ---------------------------------------------------------
+// CWmConfiguration::StoreCount
+// ---------------------------------------------------------
+//
+TInt CWmConfiguration::StoreCount()
+    {
+    return iConfItems.Count();
+    }
+
+// ---------------------------------------------------------
+// CWmConfItem::NewL
+// ---------------------------------------------------------
+//
+CWmConfItem* CWmConfItem::NewL()
+    {
+    CWmConfItem* self = CWmConfItem::NewLC();
+    CleanupStack::Pop(); // self;
+    return self;
+    }
+
+// ---------------------------------------------------------
+// CWmConfItem::NewLC
+// ---------------------------------------------------------
+//
+CWmConfItem* CWmConfItem::NewLC()
+    {
+    CWmConfItem* self = new ( ELeave ) CWmConfItem();
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    return self;
+    }
+
+// ---------------------------------------------------------
+// CWmConfItem::~CWmConfItem
+// ---------------------------------------------------------
+//
+CWmConfItem::~CWmConfItem()
+    {
+    delete iTitle;
+    delete iIcon;
+    delete iUrl;              
+    delete iAppParam;
+    }
+
+// ---------------------------------------------------------
+// CWmConfItem::CWmConfItem
+// ---------------------------------------------------------
+//
+CWmConfItem::CWmConfItem()
+    {
+    }
+
+// ---------------------------------------------------------
+// CWmConfItem::ConstructL
+// ---------------------------------------------------------
+//
+void CWmConfItem::ConstructL()
+    {
+    }
+
+// ---------------------------------------------------------
+// CWmConfItem::Id
+// ---------------------------------------------------------
+//
+CWmStore::TStoreId CWmConfItem::Id()
+    {
+    return iId;
+    }
+
+// ---------------------------------------------------------
+// CWmConfItem::Title
+// ---------------------------------------------------------
+//
+const TDesC& CWmConfItem::Title()
+    {
+    return ( iTitle ? *iTitle : KNullDesC() );
+    }
+
+// ---------------------------------------------------------
+// CWmConfItem::Icon
+// ---------------------------------------------------------
+//
+const TDesC& CWmConfItem::Icon()
+    {
+    return ( iIcon ? *iIcon : KNullDesC() );
+    }
+
+// ---------------------------------------------------------
+// CWmConfItem::Order
+// ---------------------------------------------------------
+//
+TInt CWmConfItem::Order()
+    {
+    return iOrder;
+    }
+
+// ---------------------------------------------------------
+// CWmConfItem::BrowserUrl
+// ---------------------------------------------------------
+//
+const TDesC& CWmConfItem::BrowserUrl() 
+    {
+    return ( iUrl ? *iUrl : KNullDesC() );
+    }
+
+// ---------------------------------------------------------
+// CWmConfItem::AppType
+// ---------------------------------------------------------
+//
+CWmConfiguration::TStoreAppType CWmConfItem::AppType()
+    {
+    return iAppType;
+    }
+
+// ---------------------------------------------------------
+// CWmConfItem::AppUid
+// ---------------------------------------------------------
+//
+TUid CWmConfItem::AppUid()
+    {
+    return iAppUid;
+    }
+
+// ---------------------------------------------------------
+// CWmConfItem::AppParam
+// ---------------------------------------------------------
+//
+const TDesC& CWmConfItem::AppParam()
+    {
+    return ( iAppParam ? *iAppParam : KNullDesC() );
+    }
 
 // End of File
 
--- a/idlehomescreen/widgetmanager/src/wmimageconverter.cpp	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/widgetmanager/src/wmimageconverter.cpp	Wed Sep 15 12:00:00 2010 +0300
@@ -101,13 +101,14 @@
                             const TSize& aIconSize, 
                             const TDesC& aIconStr,
                             CFbsBitmap*& aBitmap,
-                            CFbsBitmap*& aMask )
+                            CFbsBitmap*& aMask,
+                            TBool aForceScale )
     {
     delete aBitmap; aBitmap = NULL;
     delete aMask; aMask = NULL;
 
     TInt err( KErrNone );
-    TRAP( err, HandleIconStringL( aIconSize, aIconStr ); );
+    TRAP( err, HandleIconStringL( aIconSize, aIconStr, aForceScale ); );
     if ( err == KErrNone && iBitmap && iMask )
         {
         // ownership transferred
@@ -139,7 +140,8 @@
 //
 void CWmImageConverter::HandleIconStringL( 
                             const TSize& aIconSize, 
-                            const TDesC& aIconStr )
+                            const TDesC& aIconStr,
+                            TBool aForceScale )
     {
     if ( aIconStr.Length() )
         {
@@ -160,7 +162,7 @@
             }
         else if ( ResolveUid( aIconStr, appUid ) )
             {
-            CreateIconFromUidL( appUid );
+            CreateIconFromUidL( appUid, aForceScale );
             }
         else if ( EndsWith( aIconStr, KSvgExt ) )
             {
@@ -170,7 +172,7 @@
         else if ( BaflUtils::FileExists( iFs, aIconStr ) )
             {
             // filename_with_full_path.png/jpg
-            CreateIconFromOtherL( aIconStr );
+            CreateIconFromOtherL( aIconStr, aForceScale );
             }
         else
             {
@@ -187,7 +189,8 @@
 // CWmImageConverter::CreateIconFromUidL
 // ---------------------------------------------------------
 //
-void CWmImageConverter::CreateIconFromUidL( const TUid& aUid )
+void CWmImageConverter::CreateIconFromUidL( 
+        const TUid& aUid, TBool aForceScale )
     {
     CFbsBitmap* bitmap = NULL;
     CFbsBitmap* mask = NULL;
@@ -220,21 +223,54 @@
 
         CApaMaskedBitmap* maskedBmp = CApaMaskedBitmap::NewLC();
         User::LeaveIfError( lsSession.GetAppIcon( aUid, size, *maskedBmp ) );
-        
+
         // handle bitmap
-        iBitmap = new ( ELeave ) CFbsBitmap;       
-        CopyBitmapL( *iBitmap, *maskedBmp );
+        iBitmap = new ( ELeave ) CFbsBitmap;
+        if ( aForceScale )
+            {
+            // copy and scale
+            TRect scaledRect = TRect( iSize );
+            iBitmap->Create( scaledRect.Size(), maskedBmp->DisplayMode() );
+            CFbsBitmapDevice* bitmapDevice = CFbsBitmapDevice::NewL( iBitmap );
+            CleanupStack::PushL( bitmapDevice );
+            CFbsBitGc* bitmapGc = CFbsBitGc::NewL();
+            CleanupStack::PushL( bitmapGc );
+            bitmapGc->Activate( bitmapDevice );
+            bitmapGc->DrawBitmap( scaledRect, maskedBmp );
+            CleanupStack::PopAndDestroy( bitmapGc );
+            CleanupStack::PopAndDestroy( bitmapDevice );
+            }
+        else
+            {
+            CopyBitmapL( *iBitmap, *maskedBmp );
+            }
         
         // handle mask
         if ( maskedBmp->Mask() )
             {
             iMask = new ( ELeave ) CFbsBitmap;
-            CopyBitmapL( *iMask, *maskedBmp->Mask() );
+            if ( aForceScale )
+                {
+                TRect scaledRect = TRect( iSize );
+                iMask->Create( scaledRect.Size(), maskedBmp->Mask()->DisplayMode() );
+                CFbsBitmapDevice* bitmapDevice = CFbsBitmapDevice::NewL( iMask );
+                CleanupStack::PushL( bitmapDevice );
+                CFbsBitGc* bitmapGc = CFbsBitGc::NewL();
+                CleanupStack::PushL( bitmapGc );
+                bitmapGc->Activate( bitmapDevice );
+                bitmapGc->DrawBitmap( scaledRect, maskedBmp->Mask() );
+                CleanupStack::PopAndDestroy( bitmapGc );
+                CleanupStack::PopAndDestroy( bitmapDevice );
+                }
+            else
+                {
+                CopyBitmapL( *iMask, *maskedBmp->Mask() );
+                }
             }
         
         // cleanup
         CleanupStack::PopAndDestroy( maskedBmp );
-        CleanupStack::PopAndDestroy( sizeArray ); 
+        CleanupStack::PopAndDestroy( sizeArray );
         CleanupStack::PopAndDestroy( &lsSession );
         }
     else if ( aUid.iUid != KNullUid.iUid )
@@ -339,7 +375,8 @@
 // CWmImageConverter::CreateIconFromOtherL
 // ---------------------------------------------------------
 //
-void CWmImageConverter::CreateIconFromOtherL( const TDesC& aFileName )
+void CWmImageConverter::CreateIconFromOtherL( 
+        const TDesC& aFileName, TBool aForceScale )
     {
     if (iBitmap) {delete iBitmap; iBitmap = NULL;}
     if (iMask) {delete iMask; iMask = NULL;}
@@ -372,6 +409,47 @@
         }
     User::LeaveIfError( status.Int() );    
     CleanupStack::PopAndDestroy( imageDecoder );
+    
+    // do scaling
+    if ( aForceScale )
+        {
+        // scale bitmap
+        TRect scaledRect = TRect( iSize );
+        CFbsBitmap* scaledBitmap = new (ELeave) CFbsBitmap();
+        CleanupStack::PushL( scaledBitmap );
+        User::LeaveIfError( 
+                scaledBitmap->Create( scaledRect.Size(), iBitmap->DisplayMode() ) );
+        CFbsBitmapDevice* bitmapDevice = CFbsBitmapDevice::NewL( scaledBitmap );
+        CleanupStack::PushL( bitmapDevice );
+        CFbsBitGc* bitmapGc = CFbsBitGc::NewL();
+        CleanupStack::PushL( bitmapGc );
+        bitmapGc->Activate( bitmapDevice );
+        bitmapGc->DrawBitmap( scaledRect, iBitmap );
+        CleanupStack::PopAndDestroy( bitmapGc );
+        CleanupStack::PopAndDestroy( bitmapDevice );
+        CleanupStack::Pop( scaledBitmap );
+        // take ownership of scaled bitmap
+        delete iBitmap; iBitmap = NULL;
+        iBitmap = scaledBitmap; scaledBitmap = NULL;
+        
+        // scale mask
+        CFbsBitmap* scaledMask = new (ELeave) CFbsBitmap();
+        CleanupStack::PushL( scaledMask );
+        User::LeaveIfError( 
+                scaledMask->Create( scaledRect.Size(), iMask->DisplayMode() ) );
+        bitmapDevice = CFbsBitmapDevice::NewL( scaledMask );
+        CleanupStack::PushL( bitmapDevice );
+        bitmapGc = CFbsBitGc::NewL();
+        CleanupStack::PushL( bitmapGc );
+        bitmapGc->Activate( bitmapDevice );
+        bitmapGc->DrawBitmap( scaledRect, iMask );
+        CleanupStack::PopAndDestroy( bitmapGc );
+        CleanupStack::PopAndDestroy( bitmapDevice );
+        CleanupStack::Pop( scaledMask );
+        // take ownership of scaled bitmap
+        delete iMask; iMask = NULL;
+        iMask = scaledMask; scaledMask = NULL;        
+        }    
     }
 
 // ---------------------------------------------------------------------------
@@ -508,18 +586,18 @@
 // ---------------------------------------------------------------------------
 //
 TBool CWmImageConverter::ResolveUid( 
-                const TDesC& aPath, TUid& aUid )
+                const TDesC& aStr, TUid& aUid )
     {
     // Syntax: uid(0x12345678)
     TInt error = KErrNotFound;
-    TInt pos = aPath.FindF( KUid );
+    TInt pos = aStr.FindF( KUid );
     if( pos == 0 )
         {
         // Skip uid token
         pos += KUid().Length();
 
         // Initialize lexer
-        TLex lex( aPath.Mid( pos ) );
+        TLex lex( aStr.Mid( pos ) );
         lex.SkipSpaceAndMark();
         
         // Check left parenthesis
@@ -537,18 +615,19 @@
 // ---------------------------------------------------------------------------
 //
 TBool CWmImageConverter::ResolveSkinId( 
-                const TDesC& aPath, TAknsItemID& aItemId )
+                const TDesC& aStr, TAknsItemID& aItemId )
     {
     // Syntax: skin(major minor)
+    aItemId = KAknsIIDNone;
     TInt error = KErrNotFound;
-    TInt pos = aPath.FindF( KSkin );
+    TInt pos = aStr.FindF( KSkin );
     if( pos == 0 )
         {
         // Skip skin token
         pos += KSkin().Length();
 
         // Initialize lexer
-        TLex lex( aPath.Mid( pos ) );
+        TLex lex( aStr.Mid( pos ) );
         lex.SkipSpaceAndMark();
         
         // Check left parenthesis
@@ -570,18 +649,22 @@
 // ---------------------------------------------------------------------------
 //
 TBool CWmImageConverter::ResolveMifId( 
-                const TDesC& aPath, TInt& aBitmapId,
+                const TDesC& aStr, TInt& aBitmapId,
                 TInt& aMaskId, TDes& aFileName )
     {
     // Syntax: mif(filename bimapId maskId)
+   aBitmapId = KErrNotFound;
+   aMaskId = KErrNotFound;
+   aFileName.Copy( KNullDesC );
+   
    TInt error = KErrNotFound;
-   TInt pos = aPath.FindF( KMif );
+   TInt pos = aStr.FindF( KMif );
    if( pos == 0 )
         {
         // Skip mif token
         pos += KMif().Length();
         // Initialize lexer
-        TLex lex( aPath.Mid( pos ) );
+        TLex lex( aStr.Mid( pos ) );
         lex.SkipSpaceAndMark();
         
         // Check left parenthesis
@@ -609,23 +692,23 @@
 // ---------------------------------------------------------------------------
 //
 TBool CWmImageConverter::ResolveSkinIdAndMifId( 
-                const TDesC& aPath, TAknsItemID& aItemId,
+                const TDesC& aStr, TAknsItemID& aItemId,
                 TInt& aBitmapId, TInt& aMaskId, TDes& aFileName )
    {
    // Syntax: skin(major minor):mif(filename bimapId maskId) 
-   TBool result = ResolveSkinId( aPath, aItemId );
+   TBool result = ResolveSkinId( aStr, aItemId );
    if ( result )
 	   {
-	   TInt pos = aPath.FindF( KColon );
+	   TInt pos = aStr.FindF( KColon );
 	   if ( pos != KErrNotFound )
 	       {
-	       TPtrC ptr = aPath.Mid( pos+1 );
+	       TPtrC ptr = aStr.Mid( pos+1 );
 	       result = ResolveMifId( ptr, aBitmapId, aMaskId, aFileName );
 	       }
 	   }
    else
        {
-       result = ResolveMifId( aPath, aBitmapId, aMaskId, aFileName );
+       result = ResolveMifId( aStr, aBitmapId, aMaskId, aFileName );
        }
    return result;
    }
@@ -748,5 +831,20 @@
         }
     }
 
+// ---------------------------------------------------------------------------
+// CWmImageConverter::ParseIconString
+// ---------------------------------------------------------------------------
+//
+TBool CWmImageConverter::ParseIconString( 
+        const TDesC& aIconStr, 
+        TAknsItemID& aItemId,
+        TInt& aBitmapId, 
+        TInt& aMaskId, 
+        TDes& aFileName )
+    {
+    return ResolveSkinIdAndMifId( 
+            aIconStr, aItemId, aBitmapId, aMaskId, aFileName );
+    }
+
 // End of file
 
--- a/idlehomescreen/widgetmanager/src/wmlistbox.cpp	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/widgetmanager/src/wmlistbox.cpp	Wed Sep 15 12:00:00 2010 +0300
@@ -184,14 +184,13 @@
     CWindowGc& gc = *Gc();
     MAknsSkinInstance* skin = AknsUtils::SkinInstance();
     TBool highlightEnabled = !( iListBox->ItemDrawer()->Flags() & 
-            CListItemDrawer::ESingleClickDisabledHighlight );
-    TBool listFocused = ((iListBox->IsFocused() && !aViewIsDimmed) ? ETrue : EFalse);
+            CListItemDrawer::ESingleClickDisabledHighlight );    
     TRect itemRect = TRect( aItemRectPos, cellSize );
     
     CFormattedCellListBoxItemDrawer::DrawEmptyItem( 
                             aItemIndex, aItemRectPos, aViewIsDimmed );
     
-    if ( aItemIsCurrent && listFocused && highlightEnabled )
+    if ( aItemIsCurrent && !aViewIsDimmed && highlightEnabled )
         {
         TRect innerRect( itemRect );
         const TInt highlightOffset = 5;
@@ -241,7 +240,7 @@
     // DRAW NAME
     TRgb textColor;
     TAknsQsnTextColorsIndex index =
-        ( aItemIsCurrent && listFocused && highlightEnabled )? 
+        ( aItemIsCurrent && aViewIsDimmed && highlightEnabled )? 
                 EAknsCIQsnTextColorsCG10 : EAknsCIQsnTextColorsCG6;
 
     AknsUtils::GetCachedColor( 
--- a/idlehomescreen/widgetmanager/src/wmmaincontainer.cpp	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/widgetmanager/src/wmmaincontainer.cpp	Wed Sep 15 12:00:00 2010 +0300
@@ -40,6 +40,8 @@
 #include <AknsDrawUtils.h>
 #include <aknenv.h>
 #include <aknlists.h>
+#include <aknpopup.h> 
+#include <badesca.h> 
 #include <eikclbd.h>
 #include <aknsfld.h>
 #include <AknsBasicBackgroundControlContext.h>
@@ -63,7 +65,7 @@
 #include "wmlistbox.h"
 #include "wmpersistentwidgetorder.h"
 #include "wmdetailsdlg.h"
-#include "wmportalbutton.h"
+#include "wmstore.h"
 #include "wmwidgetloaderao.h"
 #include "wmconfiguration.h"
 #include "wminstaller.h"
@@ -75,6 +77,31 @@
 const TInt KTextLimit = 40; // Text-limit for find-field
 const TInt KMinWidgets = 1; // minimum number of widgets to show findpane
 
+// ======== LOCAL FUNCTIONS ========
+
+// ----------------------------------------------------------------------------
+// CleanupResetAndDestroy()
+// ----------------------------------------------------------------------------
+//
+template<class T>
+static void CleanupResetAndDestroy( TAny* aObj )
+    {
+    if( aObj )
+        {
+        static_cast<T*>( aObj )->ResetAndDestroy();
+        }
+    }
+
+// ----------------------------------------------------------------------------
+// CleanupResetAndDestroyPushL
+// ----------------------------------------------------------------------------
+//
+template<class T>
+static void CleanupResetAndDestroyPushL(T& aArray)
+    {
+    CleanupStack::PushL( TCleanupItem( &CleanupResetAndDestroy<T>, &aArray ) );
+    }
+
 // ---------------------------------------------------------
 // CWmMainContainer::CWmMainContainer()
 // ---------------------------------------------------------
@@ -86,7 +113,6 @@
     iFindbox = NULL;
     iFindPaneIsVisible = EFalse;
     iBgContext = NULL;
-    iFocusMode = ENowhere;
     iClosingDown = ETrue;
     }
 
@@ -96,6 +122,11 @@
 //
 CWmMainContainer::~CWmMainContainer()
     {
+    if ( iSelectedStore )
+        {
+        delete iSelectedStore;
+        iSelectedStore = NULL;
+        }
     TRAP_IGNORE(DeactivateFindPaneL(EFalse));
     
     if ( iWidgetLoader )
@@ -108,11 +139,8 @@
     Components().ResetAndDestroy();
     
     iWidgetsList = NULL;
-    iPortalButtonOne = NULL;
-    iPortalButtonTwo = NULL;
     iFindbox = NULL;
     delete iBgContext;
-    delete iConfiguration;
     }
 
 // ---------------------------------------------------------
@@ -179,9 +207,6 @@
     // background context
     iBgContext = CAknsBasicBackgroundControlContext::NewL( 
             KAknsIIDQsnBgScreen, ScreenRect() , ETrue);
-
-    // load configuration
-    iConfiguration = CWmConfiguration::NewL( iWmPlugin.ResourceLoader() );
     
     // set up controls
     InitializeControlsL( aRect );
@@ -211,52 +236,21 @@
     {
     TRect rect( Rect() );
 
-    // determine layout type
-    iLandscape = Layout_Meta_Data::IsLandscapeOrientation();
-    iMirrored = Layout_Meta_Data::IsMirrored();
-    
-    // layout iPortalButtons
-    if ( iConfiguration->PortalButtonCount() == 1 )
-        {
-        // one button
-        TAknWindowLineLayout btnPane = AknLayoutScalable_Apps
-           ::wgtman_btn_pane( iLandscape ? 1 : 0 ).LayoutLine();
-        AknLayoutUtils::LayoutControl( iPortalButtonOne, rect, btnPane );
-        }
-    else
-        {
-        // two buttons
-        TInt variety = (iLandscape ? 3 : 2);
-        TAknWindowLineLayout oviBtnLayout = AknLayoutScalable_Apps
-                ::wgtman_btn_pane( variety ).LayoutLine();
-        TAknWindowLineLayout operatorBtnLayout = AknLayoutScalable_Apps
-                ::wgtman_btn_pane_cp_01( variety ).LayoutLine();
-        
-        // button placement
-        if ( iConfiguration->PortalButtonsMirrored() )
-            {
-            AknLayoutUtils::LayoutControl( iPortalButtonOne, rect, operatorBtnLayout );
-            AknLayoutUtils::LayoutControl( iPortalButtonTwo, rect, oviBtnLayout );
-            }
-        else
-            {
-            AknLayoutUtils::LayoutControl( iPortalButtonOne, rect, oviBtnLayout );
-            AknLayoutUtils::LayoutControl( iPortalButtonTwo, rect, operatorBtnLayout );
-            }
-        }
-    
     // layout iWidgetsList
-    TAknWindowLineLayout listPane = AknLayoutScalable_Apps
-        ::listscroll_wgtman_pane( iLandscape ? 1 : 0 ).LayoutLine();
     if( iFindbox && iFindPaneIsVisible )
         {
-        TAknLayoutRect layoutRect;
-        layoutRect.LayoutRect( rect, listPane );
-        iWidgetsList->SetRect( layoutRect.Rect() );
+        iWidgetsList->SetRect( rect );
         HandleFindSizeChanged();
         }
     else
         {
+        TAknWindowLineLayout listPane;
+        listPane.il = rect.iTl.iX;
+        listPane.it = rect.iTl.iY;
+        listPane.ib = 0;
+        listPane.iH = rect.Height();
+        listPane.iW = rect.Width();
+        listPane.ir = ELayoutEmpty;
         AknLayoutUtils::LayoutControl( iWidgetsList, rect, listPane );
         }
 
@@ -287,28 +281,16 @@
         {
         return EKeyWasConsumed;
         }
-    
+
     // Handle search keyevent
     keyResponse = HandleSearchKeyEventL( aKeyEvent, aType );
-    
-    // Move focus between controls
-    if ( keyResponse == EKeyWasNotConsumed )
-        {
-        keyResponse = MoveFocusByKeys( aKeyEvent, aType );
-        }
-    
+   
     // Handle list keyevent
     if ( keyResponse == EKeyWasNotConsumed )
         {
         keyResponse = HandleListKeyEventL( aKeyEvent, aType );
         }
     
-    // Handle buttons keyevent
-    if ( keyResponse == EKeyWasNotConsumed )
-        {
-        keyResponse = HandleButtonKeyEventL( aKeyEvent, aType );
-        }
-    
     // Update ui if needed 
     if ( keyResponse == EKeyWasConsumed )
         {
@@ -386,429 +368,33 @@
     TKeyResponse keyResponse( EKeyWasNotConsumed );
     
     // pass key event except backpace or delete key event to widgets list if focused
-    if ( iWidgetsList->IsFocused() )
+    if ( ( aType == EEventKey ) && ( aKeyEvent.iCode == EKeyBackspace 
+            || aKeyEvent.iCode == EKeyDelete ) )
         {
-        if ( ( aType == EEventKey ) && ( aKeyEvent.iCode == EKeyBackspace 
-                || aKeyEvent.iCode == EKeyDelete ) )
+        if( CanDoUninstall() )
             {
-            if( CanDoUninstall() )
-                {
-                UninstallWidgetL();
-                }
-            else
-                {
-                CWmWidgetData* data = iWidgetsList->WidgetData();
-                if( data != NULL )
-                    iWmPlugin.ResourceLoader().InfoPopupL(
-                         R_QTN_WM_UNINST_NOT_ALLOWED, data->Name() );
-                }
-            keyResponse = EKeyWasConsumed;
+            UninstallWidgetL();
             }
-        else 
+        else
             {
-            //passing to listbox handler
-            keyResponse = iWidgetsList->OfferKeyEventL( 
-                    aKeyEvent, aType );
+            CWmWidgetData* data = iWidgetsList->WidgetData();
+            if( data != NULL )
+                iWmPlugin.ResourceLoader().InfoPopupL(
+                     R_QTN_WM_UNINST_NOT_ALLOWED, data->Name() );
             }
+        keyResponse = EKeyWasConsumed;
         }
-    
-    return keyResponse;
-    }
-
-// ---------------------------------------------------------
-// CWmMainContainer::HandleButtonKeyEventL
-// ---------------------------------------------------------
-//
-TKeyResponse CWmMainContainer::HandleButtonKeyEventL( 
-        const TKeyEvent& aKeyEvent, 
-        TEventCode aType )
-    {
-    TKeyResponse keyResponse( EKeyWasNotConsumed );
-    
-    // pass key event to portal button if focused
-    if ( iPortalButtonOne->IsFocused() )
+    else 
         {
-        keyResponse = iPortalButtonOne->OfferKeyEventL(
-                            aKeyEvent, aType );
-        }
-
-    // pass key event to the other portal button if exists and focused
-    if ( iPortalButtonTwo && iPortalButtonTwo->IsFocused() )
-        {
-        keyResponse = iPortalButtonTwo->OfferKeyEventL(
-                            aKeyEvent, aType );
+        //passing to listbox handler
+        keyResponse = iWidgetsList->OfferKeyEventL( 
+                aKeyEvent, aType );
         }
     
     return keyResponse;
     }
 
 // ---------------------------------------------------------
-// CWmMainContainer::MoveFocusByKeys
-// ---------------------------------------------------------
-//
-TKeyResponse CWmMainContainer::MoveFocusByKeys(
-                        const TKeyEvent& aKeyEvent, 
-                        TEventCode aType )
-    {
-    TKeyResponse keyResponse( EKeyWasNotConsumed );
-
-    if ( iWidgetsList->IsFocused() )
-        {
-        // ------------------------------------
-        // focus is in the WIDGETS LIST
-        // ------------------------------------
-        if ( !iLandscape &&
-                aKeyEvent.iScanCode == EStdKeyUpArrow &&
-                iWidgetsList->CurrentItemIndex() == 0 )
-            {
-            // widget list top -> up -> ovi button (portrait)
-            if ( aType == EEventKey )
-                SetFocusToPortalButton( OperatorButtonHigherPriority ( 0 ) );
-            keyResponse = EKeyWasConsumed;
-            }
-        else if ( !iLandscape &&
-                aKeyEvent.iScanCode == EStdKeyDownArrow &&
-                iWidgetsList->CurrentItemIndex() ==
-                   iWidgetsList->Model()->NumberOfItems() - 1 )
-            {
-            // widget list bottom -> down -> ovi button (portrait)
-            if ( aType == EEventKey )
-                SetFocusToPortalButton( OperatorButtonHigherPriority ( 0 ) );
-            keyResponse = EKeyWasConsumed;
-            }
-        else if ( iLandscape && !iMirrored &&
-                aKeyEvent.iScanCode == EStdKeyRightArrow )
-            {
-            // widget list -> right -> ovi button (landscape normal)
-            if ( aType == EEventKey )
-                SetFocusToPortalButton( OperatorButtonHigherPriority ( 0 ) );
-            keyResponse = EKeyWasConsumed;
-            }
-        else if ( iLandscape && iMirrored &&
-                aKeyEvent.iScanCode == EStdKeyLeftArrow )
-            {
-            // widget list -> left -> ovi button (landscape mirrored)
-            if ( aType == EEventKey )
-                SetFocusToPortalButton( OperatorButtonHigherPriority ( 0 ) );
-            keyResponse = EKeyWasConsumed;
-            }
-        }
-    else if ( iPortalButtonOne->IsFocused() )
-        {
-        // ------------------------------------
-        // focus is in the FIRST PORTAL BUTTON
-        // ------------------------------------
-        if ( !iLandscape &&
-                aKeyEvent.iScanCode == EStdKeyDownArrow )
-            {
-            // left portal -> down -> widget list top (portrait)
-            if ( aType == EEventKey )
-                SetFocusToWidgetList( 0 );
-            keyResponse = EKeyWasConsumed;
-            }
-        else if ( !iLandscape &&
-                aKeyEvent.iScanCode == EStdKeyUpArrow )
-            {
-            // left portal -> up -> widget list bottom (portrait)
-            if ( aType == EEventKey )
-                SetFocusToWidgetList( iWidgetsList->Model()->NumberOfItems()-1 );
-            keyResponse = EKeyWasConsumed;
-            }
-        else if ( !iLandscape && !iMirrored &&
-                aKeyEvent.iScanCode == EStdKeyLeftArrow &&
-                iConfiguration->PortalButtonCount() > 1 && 
-                iConfiguration->PortalButtonsMirrored() )
-            {
-            // right portal -> left -> left portal
-            // (portrait, operator button higher priority )
-            if ( aType == EEventKey )
-                SetFocusToPortalButton( 1 );
-            keyResponse = EKeyWasConsumed;
-            }
-        else if ( !iLandscape && !iMirrored &&
-                aKeyEvent.iScanCode == EStdKeyRightArrow &&
-                iConfiguration->PortalButtonCount() > 1 && 
-                !iConfiguration->PortalButtonsMirrored() )
-            {
-            // left portal -> right -> right portal (portrait normal)
-            if ( aType == EEventKey )
-                SetFocusToPortalButton( 1 );
-            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->PortalButtonsMirrored() )
-            {
-            // right portal -> left -> left portal (portrait mirrored)
-            if ( aType == EEventKey )
-                SetFocusToPortalButton( 1 );
-            keyResponse = EKeyWasConsumed;
-            }
-        else if ( iLandscape && !iMirrored &&
-                aKeyEvent.iScanCode == EStdKeyLeftArrow )
-            {
-            // upper portal -> left -> widget list (landscape normal)
-            if ( aType == EEventKey )
-                SetFocusToWidgetList();
-            keyResponse = EKeyWasConsumed;
-            }
-        else if ( iLandscape && iMirrored &&
-                aKeyEvent.iScanCode == EStdKeyRightArrow )
-            {
-            // upper portal -> right -> widget list (landscape mirrored)
-            if ( aType == EEventKey )
-                SetFocusToWidgetList();
-            keyResponse = EKeyWasConsumed;
-            }
-        else if ( iLandscape &&
-                aKeyEvent.iScanCode == EStdKeyUpArrow &&
-                iConfiguration->PortalButtonCount() > 1 &&
-                iConfiguration->PortalButtonsMirrored() )
-            {
-            // lower portal -> up -> upper portal 
-            // (landscape, operator button higher priority )
-            if ( aType == EEventKey )
-                SetFocusToPortalButton( 1 );
-            keyResponse = EKeyWasConsumed;
-            }
-        else if ( iLandscape &&
-                aKeyEvent.iScanCode == EStdKeyDownArrow &&
-                iConfiguration->PortalButtonCount() > 1 && 
-                !iConfiguration->PortalButtonsMirrored() )
-            {
-            // upper portal -> down -> lower portal (landscape)
-            if ( aType == EEventKey )
-                SetFocusToPortalButton( 1 );
-            keyResponse = EKeyWasConsumed;
-            }
-        }
-    else if ( iPortalButtonTwo && iPortalButtonTwo->IsFocused() )
-        {
-        // ------------------------------------
-        // focus is in the SECOND PORTAL BUTTON
-        // ------------------------------------
-        if ( !iLandscape &&
-                aKeyEvent.iScanCode == EStdKeyDownArrow )
-            {
-            // right portal -> down -> widget list top (portrait)
-            if ( aType == EEventKey )
-                SetFocusToWidgetList( 0 );
-            keyResponse = EKeyWasConsumed;
-            }
-        else if ( !iLandscape &&
-                aKeyEvent.iScanCode == EStdKeyUpArrow )
-            {
-            // right portal -> up -> widget list bottom (portrait)
-            if ( aType == EEventKey )
-                SetFocusToWidgetList( iWidgetsList->Model()->NumberOfItems()-1 );
-            keyResponse = EKeyWasConsumed;
-            }
-        else if ( !iLandscape && !iMirrored &&
-                aKeyEvent.iScanCode == EStdKeyRightArrow &&
-                iConfiguration->PortalButtonCount() > 1  && 
-                iConfiguration->PortalButtonsMirrored() )
-            {
-            // left portal -> right -> right portal
-            // (portrait, operator button higher priority )
-            if ( aType == EEventKey )
-                SetFocusToPortalButton( 0 );
-            keyResponse = EKeyWasConsumed;
-            }
-        else if ( !iLandscape && !iMirrored &&
-                aKeyEvent.iScanCode == EStdKeyLeftArrow &&
-                iConfiguration->PortalButtonCount() > 1  && 
-                !iConfiguration->PortalButtonsMirrored() )
-            {
-            // right portal -> left -> left portal (portrait normal)
-            if ( aType == EEventKey )
-                SetFocusToPortalButton( 0 );
-            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->PortalButtonsMirrored() )
-            {
-            // left portal -> right -> right portal (portrait mirrored)
-            if ( aType == EEventKey )
-                SetFocusToPortalButton( 0 );
-            keyResponse = EKeyWasConsumed;
-            }
-        else if ( iLandscape && !iMirrored &&
-                aKeyEvent.iScanCode == EStdKeyLeftArrow )
-            {
-            // lower portal -> left -> widget list (landscape normal)
-            if ( aType == EEventKey )
-                SetFocusToWidgetList();
-            keyResponse = EKeyWasConsumed;
-            }
-        else if ( iLandscape && iMirrored &&
-                aKeyEvent.iScanCode == EStdKeyRightArrow )
-            {
-            // lower portal -> right -> widget list (landscape mirrored)
-            if ( aType == EEventKey )
-                SetFocusToWidgetList();
-            keyResponse = EKeyWasConsumed;
-            }
-        else if ( iLandscape &&
-                aKeyEvent.iScanCode == EStdKeyDownArrow &&
-                iConfiguration->PortalButtonsMirrored() )
-            {
-            // upper portal -> down -> lower portal 
-            // ( landscape operator button higher priority )
-            if ( aType == EEventKey )
-                SetFocusToPortalButton( 0 );
-            keyResponse = EKeyWasConsumed;
-            }
-        else if ( iLandscape &&
-                aKeyEvent.iScanCode == EStdKeyUpArrow &&
-                !iConfiguration->PortalButtonsMirrored() )
-            {
-            // lower portal -> up -> upper portal (landscape)
-            if ( aType == EEventKey )
-                SetFocusToPortalButton( 0 );
-            keyResponse = EKeyWasConsumed;
-            }
-        }
-    else
-        {
-        // ------------------------------------
-        // focus is NOWHERE
-        // ------------------------------------
-        if ( aKeyEvent.iScanCode == EStdKeyUpArrow ||
-            aKeyEvent.iScanCode == EStdKeyDownArrow )
-            {
-            // no focus -> key hit -> focus list
-            if ( aType == EEventKey )
-                {
-                SetFocusToWidgetList();
-                keyResponse = EKeyWasNotConsumed;
-                }
-            }
-        }
-
-    return keyResponse;
-    }
-
-
-// ---------------------------------------------------------
-// CWmMainContainer::OperatorButtonHigherPriority
-// ---------------------------------------------------------
-//
-TInt CWmMainContainer::OperatorButtonHigherPriority( TInt aIndex )
-    {
-    TInt ret = aIndex;
-    if ( iConfiguration->PortalButtonsMirrored() )
-        {
-        if ( aIndex == 0 )
-            {
-            ret = 1;
-            }
-        else if ( aIndex == 1 )
-            {
-            ret = 0;
-            }
-        }
-    return ret;
-    }
-
-// ---------------------------------------------------------
-// CWmMainContainer::SetFocusToPortalButton
-// ---------------------------------------------------------
-//
-void CWmMainContainer::SetFocusToPortalButton( TInt aIndex )
-    {
-    if ( aIndex != 0 && iPortalButtonTwo )
-        {
-        iWidgetsList->SetFocus(EFalse);
-        iPortalButtonOne->SetFocus(EFalse);
-        iPortalButtonTwo->SetFocus(ETrue);
-        }
-    else
-        {
-        iWidgetsList->SetFocus(EFalse);
-        if ( iPortalButtonTwo )
-            iPortalButtonTwo->SetFocus(EFalse);
-        iPortalButtonOne->SetFocus(ETrue);
-        }
-    DrawDeferred();
-    UpdateFocusMode();
-    }
-
-// ---------------------------------------------------------
-// CWmMainContainer::SetFocusToWidgetList
-// ---------------------------------------------------------
-//
-void CWmMainContainer::SetFocusToWidgetList( TInt aIndex )
-    {
-    iPortalButtonOne->SetFocus(EFalse);
-    if ( iPortalButtonTwo )
-        iPortalButtonTwo->SetFocus(EFalse);
-    if ( aIndex >= 0 && aIndex < iWidgetsList->Model()->NumberOfItems() )
-        {
-        iWidgetsList->SetCurrentItemIndex( aIndex );
-        }
-    iWidgetsList->SetFocus(ETrue);
-    DrawDeferred();
-    UpdateFocusMode();
-    }
-
-// ---------------------------------------------------------
-// CWmMainContainer::UpdateFocusMode
-// ---------------------------------------------------------
-//
-void CWmMainContainer::UpdateFocusMode()
-    {
-    if ( iPortalButtonOne->IsFocused() )
-        {
-        // PORTAL BUTTON is focused
-        iFocusMode = EPortal;
-        }
-    else if ( iPortalButtonTwo && iPortalButtonTwo->IsFocused() )
-        {
-        // SECOND PORTAL BUTTON is focused
-        iFocusMode = EPortal;
-        }
-    else if( ( iFindPaneIsVisible ) && 
-        ( iFindbox->IsFocused() || iWidgetsList->IsFocused() ) )
-        {
-        // FIND MODE
-        iFocusMode = EFind;
-        }
-    else if ( iWidgetsList->IsFocused() )
-        {
-        // WIDGETS LIST is focused 
-        iFocusMode = EList;
-        }
-    else
-        {
-        // NO focus
-        iFocusMode = ENowhere;
-        }
-    }
-
-// ---------------------------------------------------------
 // CWmMainContainer::FindChildControlByPoint
 // ---------------------------------------------------------
 //
@@ -858,8 +444,6 @@
                 // Set focus to the control that was clicked
                 control->SetFocus( ETrue );
                                 
-                // update focus mode accordingly
-                UpdateFocusMode();
                 // repaint
                 DrawDeferred();
                 }
@@ -903,17 +487,6 @@
 //
 void CWmMainContainer::InitializeControlsL( const TRect& /*aRect*/ )
     {
-    // Create portal buttons
-    iPortalButtonOne = CWmPortalButton::NewL( this, 0 );
-    iPortalButtonOne->SetMopParent( this );    
-    AddControlL( iPortalButtonOne, EPortalOne );
-    if ( iConfiguration->PortalButtonCount() > 1 )
-        {
-        iPortalButtonTwo = CWmPortalButton::NewL( this, 1 );
-        iPortalButtonTwo->SetMopParent( this );    
-        AddControlL( iPortalButtonTwo, EPortalTwo );
-        }
-    
     // Create widget list box
     iWidgetsList = CWmListBox::NewL(
             iWmPlugin,
@@ -935,8 +508,8 @@
                         CAknSearchField::EAdaptiveSearch,
                         0, KTextLimit );
     AddControlL( iFindbox, EFindBox );
-
-    UpdateFocusMode();
+    iFindbox->AddAdaptiveSearchTextObserverL(this);
+   
     StartLoadingWidgetsL();
     }
 
@@ -1045,21 +618,13 @@
     }
 
 // ---------------------------------------------------------
-// CWmMainContainer::PortalSelected
-// ---------------------------------------------------------
-//
-TBool CWmMainContainer::PortalSelected()
-    {    
-    return ( iFocusMode == EPortal );
-    }
-
-// ---------------------------------------------------------
 // CWmMainContainer::WidgetSelected
 // ---------------------------------------------------------
 //
 TBool CWmMainContainer::WidgetSelected() 
     {
-    return ( iFocusMode == EList ) || ( iFocusMode == EFind );
+    return (( iWidgetsList->IsFocused() || iWidgetsList->IsHighlightEnabled())? 
+            ETrue : EFalse );
     }
 
 // ---------------------------------------------------------
@@ -1217,18 +782,6 @@
     if ( iFindbox && !iFindPaneIsVisible &&
             iWidgetsList->Model()->NumberOfItems() > KMinWidgets )
         {
-        // set focus
-        if ( iWidgetsList->ItemDrawer()->Flags() 
-                & CListItemDrawer::ESingleClickDisabledHighlight )
-            {
-            ResetFocus();
-            }
-        else
-            {
-            iWidgetsList->SetFocus( ETrue, EDrawNow );                
-            }
-        
-        
         // set column filter flag
         TBitFlags32 bitFlag;
         bitFlag.ClearAll(); // clear all columns
@@ -1263,14 +816,18 @@
             }
         iFindbox->SetFocus( ETrue );
         iWidgetsList->SetFindPaneIsVisible( ETrue );
-
-        // set soft key set
-        CEikButtonGroupContainer* cbaGroup =
-            CEikButtonGroupContainer::Current();
-        cbaGroup->SetCommandSetL( R_AVKON_SOFTKEYS_OPTIONS_CANCEL__SELECT );
-        cbaGroup->DrawNow();
-
-        UpdateFocusMode();
+        
+        if ( AknLayoutUtils::MSKEnabled() )
+            {
+            // set soft key set
+            CEikButtonGroupContainer* cbaGroup =
+                CEikButtonGroupContainer::Current();            
+            TInt cbaResourceId = ( ( iWmPlugin.Configuration().StoreCount() > 0 )?
+                                        R_WM_SOFTKEYS_OPTIONS_CANCEL__STORE :
+                                        R_AVKON_SOFTKEYS_OPTIONS_CANCEL__SELECT );            
+            cbaGroup->SetCommandSetL( cbaResourceId );            
+            cbaGroup->DrawNow();
+            }
         }
     }
 
@@ -1298,17 +855,6 @@
             m->RemoveFilter();
             }
         
-        //set focus
-        if ( iWidgetsList->ItemDrawer()->Flags() 
-                & CListItemDrawer::ESingleClickDisabledHighlight )
-            {
-            ResetFocus();
-            }
-        else
-            {
-            iWidgetsList->SetFocus( ETrue, EDrawNow );                
-            }
-
         iFindbox->MakeVisible( EFalse );        
         iFindPaneIsVisible = EFalse;        
         iWidgetsList->SetFindPaneIsVisible( EFalse );       
@@ -1317,8 +863,9 @@
         // set soft key set
         CEikButtonGroupContainer* cbaGroup =
             CEikButtonGroupContainer::Current();
-        TInt cbaResourceId = ( AknLayoutUtils::MSKEnabled() ?
-                                    R_AVKON_SOFTKEYS_OPTIONS_BACK__SELECT : 
+        TInt cbaResourceId = ( ( AknLayoutUtils::MSKEnabled() && 
+                                 iWmPlugin.Configuration().StoreCount() > 0 )?
+                                    R_WM_SOFTKEYS_OPTIONS_BACK__STORE :
                                     R_AVKON_SOFTKEYS_OPTIONS_BACK );
         cbaGroup->SetCommandSetL( cbaResourceId );
         
@@ -1327,7 +874,6 @@
             LayoutControls();
             cbaGroup->DrawNow();
     
-            UpdateFocusMode();
             DrawNow();
             }
         }
@@ -1381,35 +927,32 @@
     }
 
 // ---------------------------------------------------------------------------
-// CWmMainContainer::OpenPortalL
+// CWmMainContainer::HandleStoreCommandL
 // ---------------------------------------------------------------------------
 //
-void CWmMainContainer::OpenPortalL()
+void CWmMainContainer::HandleStoreCommandL()
     {
-    if ( !iClosingDown )
-        {
-        // execute whichever of the portal buttons happens to be active
-        if ( iPortalButtonOne->IsFocused() )
-            iPortalButtonOne->ExecuteL();
-        else if ( iPortalButtonTwo && iPortalButtonTwo->IsFocused() )
-            iPortalButtonTwo->ExecuteL();
-        else if ( !iPortalButtonTwo )
-            iPortalButtonOne->ExecuteL();
+    delete iSelectedStore;
+    iSelectedStore = NULL;
+    
+    const RPointerArray<CWmConfItem>& storeConfArray = 
+            iWmPlugin.Configuration().StoreConfArray();
+    
+    if ( storeConfArray.Count() == 1 )
+        {   
+        iSelectedStore = CWmStore::NewL( *storeConfArray[0], 
+                iWmPlugin.ResourceLoader() );
+        
+        iSelectedStore->ExecuteL();
         }
-    }
-
-// ---------------------------------------------------------------------------
-// CWmMainContainer::SelectL
-// ---------------------------------------------------------------------------
-//
-void CWmMainContainer::SelectL()
-    {
-    if ( WidgetSelected() )
-        AddWidgetToHomeScreenL();
-    else if ( PortalSelected() )
-        OpenPortalL();
+    else if ( storeConfArray.Count() > 1 )
+        {
+        DisplayAndLaunchStoresL();
+        }
     else
-        SetFocusToWidgetList();
+        {
+        // do nothing
+        }
     }
 
 // ---------------------------------------------------------------------------
@@ -1499,19 +1042,6 @@
             {
             AddWidgetToHomeScreenL();
             }
-        else
-            {
-            if ( iWidgetsList->ItemDrawer()->Flags() 
-                    & CListItemDrawer::ESingleClickDisabledHighlight )
-                {
-                ResetFocus();
-                }
-            else
-                {
-                iWidgetsList->SetFocus( ETrue, EDrawNow );
-                UpdateFocusMode();
-                }
-            }
         }
     }
 
@@ -1534,15 +1064,6 @@
     }
 
 // ----------------------------------------------------
-// CWmMainContainer::Configuration
-// ----------------------------------------------------
-//
-CWmConfiguration& CWmMainContainer::Configuration()
-    {
-    return *iConfiguration;
-    }
-
-// ----------------------------------------------------
 // CWmMainContainer::HandleFindSizeChanged
 // ----------------------------------------------------
 //
@@ -1572,44 +1093,6 @@
     }
 
 // ----------------------------------------------------
-// CWmMainContainer::ProcessForegroundEvent
-// ----------------------------------------------------
-//
-void CWmMainContainer::ProcessForegroundEvent( TBool aForeground )
-    {
-    if ( iFindbox && iFindPaneIsVisible && 
-        iFindbox->IsFocused() )
-        {
-        // keep focus & do nothing 
-        }
-    else if ( aForeground )
-        {
-        // set init state when wm comes to foreground.
-        // remove focus from all controls when activating view.
-        ResetFocus( EDrawNow );
-        }
-    }
-
-// ----------------------------------------------------
-// CWmMainContainer::ResetFocus
-// ----------------------------------------------------
-//
-void CWmMainContainer::ResetFocus( TDrawNow aDrawNow )
-    {
-    CCoeControl* control = NULL;
-    CCoeControlArray::TCursor cursor = Components().Begin();
-    while( ( control = cursor.Control<CCoeControl>() ) != NULL )
-        {
-        if( control->IsVisible() && control->IsFocused() )
-            {
-            control->SetFocus( EFalse, aDrawNow );
-            }
-        cursor.Next();
-        }
-    UpdateFocusMode();
-    }
-
-// ----------------------------------------------------
 // CWmMainContainer::WmListBox
 // ----------------------------------------------------
 //
@@ -1629,10 +1112,8 @@
     if ( iFindbox && iFindPaneIsVisible && 
         !iFindbox->IsFocused() && IsFocused() )
         {
-        // reset focus to find pane if its lost ( ou1cimx1#308019 )
-        ResetFocus();
+        // set focus to find pane if its lost ( ou1cimx1#308019 )
         iFindbox->SetFocus( ETrue );
-        UpdateFocusMode();
         }
     }
 
@@ -1665,5 +1146,113 @@
         }
     }
 
+// ----------------------------------------------------------
+// CWmMainContainer::CleanupIconArray
+// ----------------------------------------------------------
+//  
+void CWmMainContainer::CleanupIconArray( TAny* aIconArray )
+    {
+    CArrayPtrFlat<CGulIcon>* icons = (CArrayPtrFlat<CGulIcon>*)aIconArray;
+    icons->ResetAndDestroy();
+    delete icons;
+    }
+
+// ----------------------------------------------------
+// CWmMainContainer::DisplayAndLaunchStoresL
+// ----------------------------------------------------
+// 
+void CWmMainContainer::DisplayAndLaunchStoresL()
+    {
+    // prepare stores
+    RPointerArray<CWmStore> storesArray;
+    CleanupResetAndDestroyPushL( storesArray );
+        
+    const RPointerArray<CWmConfItem>& storeConfArray = 
+            iWmPlugin.Configuration().StoreConfArray();
+    
+    for( TInt i = 0; i < storeConfArray.Count(); i++ )
+        {
+        CWmStore* store = CWmStore::NewL( *storeConfArray[i], 
+                iWmPlugin.ResourceLoader() );
+        CleanupStack::PushL( store );
+        storesArray.AppendL( store );
+        CleanupStack::Pop( store );
+        }
+    
+    CEikFormattedCellListBox* listBox = 
+                new (ELeave) CAknDoubleLargeGraphicPopupMenuStyleListBox();
+    CleanupStack::PushL( listBox );
+    
+    CAknPopupList* popupList = CAknPopupList::NewL( 
+            listBox, R_AVKON_SOFTKEYS_SELECT_CANCEL__SELECT, 
+            AknPopupLayouts::EMenuDoubleLargeGraphicWindow );
+
+    CleanupStack::PushL( popupList );
+    
+    listBox->ConstructL( popupList, EAknListBoxMenuList );
+    listBox->CreateScrollBarFrameL(ETrue);
+    listBox->ScrollBarFrame()->SetScrollBarVisibilityL(
+            CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto);
+    
+    // set title
+    HBufC* title = StringLoader::LoadLC( R_QTN_WM_STORELIST_TITLE );
+    popupList->SetTitleL( *title );
+    CleanupStack::PopAndDestroy(); // title
+   
+    // format str
+    _LIT( KFormatStr , "%d\t%S" );
+    
+    // items array
+    CDesCArray* itemArray = 
+            static_cast<CDesCArray*>( listBox->Model()->ItemTextArray( ) );
+
+    // create icons array
+    CArrayPtr<CGulIcon>* iconarray = new (ELeave) CArrayPtrFlat<CGulIcon>( 2 );
+    CleanupStack::PushL( TCleanupItem( CleanupIconArray, iconarray) );
+    
+    for ( TInt i=0; i < storesArray.Count(); i++ )
+        {
+        // prepare icon
+        CGulIcon* icon = CGulIcon::NewL( storesArray[i]->StoreIcon(),  
+                                         storesArray[i]->StoreMask() );
+        CleanupStack::PushL( icon );
+        icon->SetBitmapsOwnedExternally( ETrue );
+        iconarray->AppendL( icon );
+        CleanupStack::Pop( icon );
+        
+        // add store to items array
+        HBufC* buf = HBufC::NewLC( 
+                storesArray[i]->Heading().Length() + 
+                KFormatStr().Length() );
+
+        TPtr ptr = buf->Des();
+        ptr.Format( KFormatStr(), i, &storesArray[i]->Heading() );
+        itemArray->AppendL( ptr );
+        CleanupStack::PopAndDestroy( buf );
+        }
+
+    CleanupStack::Pop(); // iconarray
+    listBox->ItemDrawer()->ColumnData()->SetIconArrayL( iconarray );
+    
+    TBool result = popupList->ExecuteLD();
+    CleanupStack::Pop(); // popupList ( deleted in ExecuteLD)
+    
+    TInt selection = listBox->CurrentItemIndex();
+    CleanupStack::PopAndDestroy(); // listBox
+    
+    if ( result && selection >= 0 && 
+        selection < storesArray.Count() )
+        {        
+        iSelectedStore = storesArray[selection];
+        if ( iSelectedStore )
+            {
+            storesArray.Remove( selection );
+            iSelectedStore->ExecuteL();
+            }
+        }
+
+    CleanupStack::PopAndDestroy(); //storesArray
+    }
+
 // End of File
 
--- a/idlehomescreen/widgetmanager/src/wmmaincontainerview.cpp	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/widgetmanager/src/wmmaincontainerview.cpp	Wed Sep 15 12:00:00 2010 +0300
@@ -30,14 +30,17 @@
 #include <AknUtils.h>
 #include <avkon.rsg>
 #include <layoutmetadata.cdl.h>
-
+#include <widgetmanager.mbg>
 #include "wmplugin.h"
 #include "widgetmanager.hrh"
 #include "wmmaincontainerview.h"
 #include "wmresourceloader.h"
 #include "wmmaincontainer.h"
 #include "wmspbgcleaner.h"
-
+#include "wmconfiguration.h"
+#include "wmimageconverter.h"
+#include "wmstore.h"
+       
 // ---------------------------------------------------------
 // CWmMainContainerView::CWmMainContainerView()
 // ---------------------------------------------------------
@@ -55,7 +58,7 @@
 // ---------------------------------------------------------
 //
 CWmMainContainerView::~CWmMainContainerView()
-	{
+	{    
     if ( iWmMainContainer != NULL )
         {
         AppUi()->RemoveFromStack( iWmMainContainer );
@@ -127,9 +130,7 @@
         {
         switch ( aCommand )
             {
-            case EWmMainContainerViewOpenPortalMenuItemCommand:
-                HandleOpenMenuItemSelectedL();
-                break;
+            case EAknSoftkeySelect:
             case EWmMainContainerViewAddMenuItemCommand:
                 HandleAddMenuItemSelectedL();
                 break;
@@ -162,9 +163,11 @@
             case EWmMainContainerViewWiddetDetailsMenuItemCommand:
                 HandleDetailsMenuItemSelectedL();
                 break;
-            case EAknSoftkeySelect:
+            case EWmStoreCommand:
+                {
 		        if ( iWmMainContainer )
-		            iWmMainContainer->SelectL();
+		            iWmMainContainer->HandleStoreCommandL();
+                }
 		        break;
             case EAknSoftkeyCancel: // flow through
             case EEikCmdCanceled:
@@ -188,7 +191,16 @@
 		const TDesC8& /*aCustomMessage*/ )
 	{
     // setup status pane layout
-    StatusPane()->SwitchLayoutL( R_AVKON_STATUS_PANE_LAYOUT_USUAL_FLAT );    
+    TInt layoutResourceId = ( (iWmPlugin.Configuration().StoreCount() ) ? 
+            R_AVKON_STATUS_PANE_LAYOUT_IDLE_FLAT :
+            R_AVKON_STATUS_PANE_LAYOUT_USUAL_FLAT );
+    StatusPane()->SwitchLayoutL( layoutResourceId );
+    
+    // ToDo: Support for msk in all layout is ongoing, when available in 
+    // sdk use next line and get rid of above.
+    
+    //StatusPane()->SwitchLayoutL( R_AVKON_STATUS_PANE_LAYOUT_USUAL_FLAT );
+    
     // apply changes 
     StatusPane()->ApplyCurrentSettingsL();
     // disable transparancy
@@ -208,14 +220,19 @@
     StatusPane()->DrawNow();
 
     // update cba
-    if ( Layout_Meta_Data::IsMSKEnabled() )
+    if ( !AknLayoutUtils::MSKEnabled() ||
+        iWmPlugin.Configuration().StoreCount() == 0 )
         {
         CEikButtonGroupContainer* bgc( Cba() );
         CEikCba* cba = static_cast< CEikCba* >( bgc->ButtonGroup() );
-        cba->SetCommandSetL( R_AVKON_SOFTKEYS_OPTIONS_BACK__SELECT );
+        cba->SetCommandSetL( R_AVKON_SOFTKEYS_OPTIONS_BACK );
         bgc->SetBoundingRect( TRect() );
         cba->DrawNow();
         }
+    else if ( AknLayoutUtils::MSKEnabled() )
+        {
+        UpdateMSKIconL();
+        }
 
     // create container
     if ( iWmMainContainer == NULL )
@@ -309,27 +326,12 @@
                 !iWmMainContainer->CanDoHelp() );
 		aMenuPane->SetItemDimmed( EWmMainContainerViewUninstallMenuItemCommand,
                 !iWmMainContainer->CanDoUninstall() );
-        if ( !iWmMainContainer->PortalSelected() )
-            aMenuPane->DeleteMenuItem( EWmMainContainerViewOpenPortalMenuItemCommand );
         if ( !iWmMainContainer->WidgetSelected() )
             aMenuPane->DeleteMenuItem( EWmMainContainerViewAddMenuItemCommand );
         }
     }
 
 // ---------------------------------------------------------
-// CWmMainContainerView::HandleOpenMenuItemSelectedL
-// ---------------------------------------------------------
-//
-TBool CWmMainContainerView::HandleOpenMenuItemSelectedL()
-    {
-    if ( iWmMainContainer && iWmMainContainer->PortalSelected() )
-        {       
-        iWmMainContainer->OpenPortalL();
-        }
-    return ETrue;
-    }
-
-// ---------------------------------------------------------
 // CWmMainContainerView::HandleDetailsMenuItemSelectedL
 // ---------------------------------------------------------
 //
@@ -431,16 +433,64 @@
     }
 
 // ---------------------------------------------------------
-// CWmMainContainerView::HandleForegroundEventL
+// CWmMainContainerView::UpdateMSKIconL
 // ---------------------------------------------------------
 //
-void CWmMainContainerView::HandleForegroundEventL( TBool aForeground )
+void CWmMainContainerView::UpdateMSKIconL()
     {
-    CAknView::HandleForegroundEventL( aForeground );
-    if ( iWmMainContainer )
+    CEikButtonGroupContainer* bgc( Cba() );
+    CEikCba* cba = static_cast< CEikCba* >( bgc->ButtonGroup() );
+    TFileName fileName( iWmPlugin.ResourceLoader().IconFilePath() );
+    TAknsItemID skinId = KAknsIIDQgnMenuOviStore;
+    TInt bitmapId( EMbmWidgetmanagerQgn_menu_ovistore );
+    TInt maskId( EMbmWidgetmanagerQgn_menu_ovistore_mask );
+
+    if ( iWmPlugin.Configuration().StoreCount() > 1 )
+        {
+        skinId = KAknsIIDQgnPropLmShopping;        
+        bitmapId = EMbmWidgetmanagerQgn_menu_shopping;
+        maskId = EMbmWidgetmanagerQgn_menu_shopping_mask;
+        }
+    else
         {
-        iWmMainContainer->ProcessForegroundEvent( aForeground );
+        const RPointerArray<CWmConfItem>& storeConfArray = 
+                iWmPlugin.Configuration().StoreConfArray();
+        CWmConfItem* confItem( storeConfArray[0] );
+        
+        if ( confItem && 
+            confItem->Id() != CWmStore::EOvi && 
+            confItem->Icon().Length() )
+            {            
+            CWmImageConverter* imageConverter = CWmImageConverter::NewL();
+            CleanupStack::PushL( imageConverter );
+            
+            // parse icon str      
+            // TODO: now only mif&skin are supported. Later when API is there
+            // we can add support for rest icon types
+            TBool res = imageConverter->ParseIconString(
+                    confItem->Icon(), skinId, bitmapId, maskId, fileName );
+            
+            CleanupStack::PopAndDestroy( imageConverter );
+            
+            if ( !res )
+                {
+                // use default shopping icon
+                skinId = KAknsIIDQgnPropLmShopping;        
+                bitmapId = EMbmWidgetmanagerQgn_menu_shopping;
+                maskId = EMbmWidgetmanagerQgn_menu_shopping_mask;
+                fileName.Copy( iWmPlugin.ResourceLoader().IconFilePath() );
+                }
+            }
         }
+    
+    cba->UpdateMSKIconL(
+                    skinId,
+                    fileName,
+                    bitmapId,
+                    maskId,
+                    ETrue );
+    bgc->SetBoundingRect( TRect() );                   
+    cba->DrawNow();
     }
 
 // End of file
--- a/idlehomescreen/widgetmanager/src/wmplugin.cpp	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/widgetmanager/src/wmplugin.cpp	Wed Sep 15 12:00:00 2010 +0300
@@ -37,6 +37,7 @@
 #include "wmwidgetdata.h"
 #include "wminstaller.h"
 #include "wmlistbox.h"
+#include "wmconfiguration.h"
 
 const TInt KExecuteCommandDelay( 50000 ); // 50ms
 const TInt KMaxCmdExecutionCount( 6 );
@@ -77,6 +78,7 @@
     delete iEffectManager;
     delete iPostponedContent;
     delete iWmInstaller;
+    delete iConfiguration;
     }
 
 // ---------------------------------------------------------
@@ -140,10 +142,15 @@
                 {
                 menuBar->StopDisplayingMenuBar();
                 }
-    
+
+            // load configuration again, there might be change         
+            delete iConfiguration;
+            iConfiguration = NULL;
+            
             TRAP_IGNORE( 
+                iConfiguration = CWmConfiguration::NewL( ResourceLoader() );    
                 iEffectManager->BeginFullscreenEffectL( 
-                    KAppStartEffectStyle );
+                    KAppStartEffectStyle );                
                 iViewAppUi->ActivateLocalViewL(
                     TUid::Uid( EWmMainContainerViewId ) );
                 );
@@ -284,6 +291,10 @@
                 TCallBack( ExecuteCommand, this ) );
             }
         }
+    
+    // delete config
+    delete iConfiguration;
+    iConfiguration = NULL;
     }
 
 // ---------------------------------------------------------
@@ -447,6 +458,15 @@
     return *iWmInstaller;
     }
 
+// ----------------------------------------------------
+// CWmPlugin::Configuration
+// ----------------------------------------------------
+//
+CWmConfiguration& CWmPlugin::Configuration()
+    {
+    return *iConfiguration;
+    }
+
 // ---------------------------------------------------------
 // CWmPlugin::GetUnistalledWidget
 // ---------------------------------------------------------
--- a/idlehomescreen/widgetmanager/src/wmportalbutton.cpp	Tue Sep 14 20:58:58 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,619 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies)..
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-* Implementation of the portal button for WidgetManager
-*
-*/
-
-// INCLUDE FILES
-#include <aknlayoutscalable_apps.cdl.h>
-#include <aknlayoutscalable_avkon.cdl.h>
-#include <layoutmetadata.cdl.h>
-#include <aknbutton.h>
-#include <AknsDrawUtils.h>
-#include <AknBidiTextUtils.h>
-#include <AknsFrameBackgroundControlContext.h>
-#include <gulicon.h>
-#include <avkon.mbg>
-#include <widgetmanager.mbg>
-#include <apgcli.h>
-#include <apgtask.h>
-#include <widgetregistryclient.h> // widgetreqistry
-#include <bacline.h>
-#include <escapeutils.h> 
-#include <browserlauncher.h>
-#include <centralrepository.h>
-
-#include "wmimageconverter.h"
-#include "wmportalbutton.h"
-#include "wmcommon.h"
-#include "wmplugin.h"
-#include "wmresourceloader.h"
-#include "wmmaincontainer.h"
-#include "wmconfiguration.h"
-#include "wmprocessmonitor.h"
-
-// CONSTANTS
-
-// MEMBER FUNCTIONS
-
-// ---------------------------------------------------------
-// CWmPortalButton::NewL
-// ---------------------------------------------------------
-//
-CWmPortalButton* CWmPortalButton::NewL( 
-        const CCoeControl* aParent,
-        TInt aPortalButtonIndex )
-	{
- 	CWmPortalButton* self = new (ELeave) CWmPortalButton( 
-                KAknButtonTextInsideFrame, aPortalButtonIndex );
-
- 	CleanupStack::PushL( self );
-    
-    CWmMainContainer* mainContainer =
-        static_cast <CWmMainContainer*>( 
-            const_cast <CCoeControl*>( aParent ) );
-
-    self->ConstructL( mainContainer,
-            mainContainer->Configuration().PortalButtonText( aPortalButtonIndex ),
-            mainContainer->Configuration().PortalButtonIcon( aPortalButtonIndex ) );
-    
-    CleanupStack::Pop( self );
-    return self;
-	}
-
-// ---------------------------------------------------------
-// CWmPortalButton::~CWmPortalButton
-// ---------------------------------------------------------
-//
-CWmPortalButton::~CWmPortalButton()
-    {
-    delete iButtonIcon;
-    delete iButtonIconMask;
-    
-    // if MAknIconFileProvider was used to create image from icon string
-    // then it'll try accessing imageconverter after bitmap deletion
-    // for de-reference open file count, so it should be deleted last.
-    delete iImageConverter;
-    delete iProcessMonitor;
-    delete iBrowserLauncher;
-    }
-
-// ---------------------------------------------------------
-// CWmPortalButton::CWmPortalButton
-// ---------------------------------------------------------
-//
-CWmPortalButton::CWmPortalButton( 
-                        const TInt aFlags,
-                        TInt aPortalButtonIndex )
-    :CAknButton( aFlags ),
-    iPortalButtonIndex( aPortalButtonIndex )
-    {
-    iButtonIcon = NULL;
-    iButtonIconMask = NULL;
-	iProcessMonitor = NULL;
-	iBrowserLauncher = NULL;
-    }
-
-// ---------------------------------------------------------
-// CWmPortalButton::ConstructL
-// ---------------------------------------------------------
-//
-void CWmPortalButton::ConstructL( 
-        CWmMainContainer* aParent,
-        const TDesC& aText,
-        const TDesC& aIcon )
-    {
-    if (  !aParent )
-        {
-        User::Leave( KErrArgument );
-        }
-    SetContainerWindowL( *aParent );
-    
-    // Obtain pointer to main container.
-    iWmMainContainer = aParent;
-    
-    // construct the button
-    CAknButton::ConstructL( NULL, NULL, NULL, NULL, aText, KNullDesC, 0 );
-
-    SetFrameAndCenterIds( 
-            KAknsIIDQsnFrButtonNormal,
-            KAknsIIDQsnFrButtonCenterNormal,
-            KAknsIIDQsnFrButtonPressed,
-            KAknsIIDQsnFrButtonCenterPressed,
-            KAknsIIDQsnFrButtonInactive,
-            KAknsIIDQsnFrButtonCenterInactive,
-            KAknsIIDQsnFrButtonPressed,
-            KAknsIIDQsnFrButtonCenterPressed,
-            KAknsIIDQsnFrButtonInactive,
-            KAknsIIDQsnFrButtonCenterInactive );
-    
-    // start image converter for the icon
-    iImageConverter = CWmImageConverter::NewL();
-    TSize iconsize( LayoutIconSize() );
-    iImageConverter->HandleIconString(
-            iconsize, 
-            aIcon, 
-            iButtonIcon, 
-            iButtonIconMask );
-    // observe our own press events
-    SetObserver( this );
-    
-    SetFocusing( ETrue );
-    SetRequestExit( ETrue ); // notification request for button up event
-    
-    // ready to be drawn
-    ActivateL();
-    }
-
-// ---------------------------------------------------------
-// CWmPortalButton::ExecuteL
-// ---------------------------------------------------------
-//
-void CWmPortalButton::ExecuteL()
-    {
-    if ( iPortalButtonIndex == 0 )
-        {
-        // OVI button
-        if ( !iProcessMonitor )
-            {
-            iProcessMonitor = CWmProcessMonitor::NewL();
-            }
-        // if process monitor is active laucher was allready started.
-        // this is for ignoring multiple button presses
-        if ( !iProcessMonitor->IsActive() )
-            {
-            RunOviL( iWmMainContainer->Configuration() );
-            }
-        }
-    else if ( iPortalButtonIndex == 1 )
-        {
-        // OPERATOR button
-        // if this leaves it means we need to start browser
-        // becouse application info was not given
-        TRAPD( err, RunOperatorApplicationL( 
-                iWmMainContainer->Configuration() ) )
-        if ( err != KErrNone )        
-            {
-            StartBrowserL( 
-                    iWmMainContainer->Configuration().PortalButtonBrowserUrl( 
-                            iPortalButtonIndex ) );
-            }
-        } 
-    else
-        {
-        // Not supported
-        User::Leave( KErrGeneral );
-        }
-    }
-   
-// ---------------------------------------------------------
-// CWmPortalButton::RunOviL
-// ---------------------------------------------------------
-//
-void CWmPortalButton::RunOviL( CWmConfiguration& aConf )
-    {
-    RApaLsSession session;
-    User::LeaveIfError( session.Connect() );
-    CleanupClosePushL( session );
-    
-    //get app info
-    TApaAppInfo appInfo;
-    TUid launchUid;
-    launchUid = aConf.PortalButtonClientUid( iPortalButtonIndex );
-
-    if ( session.GetAppInfo( appInfo, launchUid ) == KErrNone )
-        {
-        // Form parameter
-        HBufC* param = HBufC::NewLC( aConf.PortalButtonClientParam( iPortalButtonIndex ).Length() );
-        param->Des().Copy( aConf.PortalButtonClientParam( iPortalButtonIndex ) );
-        
-        // do the launch
-        RProcess process;
-        User::LeaveIfError( process.Create( appInfo.iFullName, *param ) );
-    
-        iProcessMonitor->Monitor( process );
-        process.Resume();
-    
-        CleanupStack::PopAndDestroy( param );
-        }
-    
-    CleanupStack::PopAndDestroy( &session );
-    }
-
-// ---------------------------------------------------------
-// CWmPortalButton::StartBrowserL
-// ---------------------------------------------------------
-//
-void CWmPortalButton::StartBrowserL( const TDesC& aUrl )
-    {
-    // already running/or request launch or url is empty
-    if ( iBrowserLauncher || !aUrl.Length() ) { return; } 
-
-    _LIT( KUrlPrefix, "4 ");
-    HBufC* param = HBufC::NewLC( aUrl.Length() + KUrlPrefix().Length() );
-    param->Des().Append( KUrlPrefix );
-    param->Des().Append( aUrl );
-        
-    // Create browser launcher
-    CBrowserLauncher* launcher = CBrowserLauncher::NewLC();
-
-    // Asynchronous operation to launch the browser with given URL
-    launcher->LaunchBrowserEmbeddedL( 
-            *param, NULL, this, NULL );
-    
-    CleanupStack::Pop( launcher ); 
-    iBrowserLauncher = launcher;
-    launcher = NULL;
-
-    CleanupStack::PopAndDestroy( param );
-    }
-
-// ---------------------------------------------------------
-// CWmPortalButton::HandleServerAppExit
-// ---------------------------------------------------------
-//
-void CWmPortalButton::HandleServerAppExit( TInt aReason )
-    {
-    MAknServerAppExitObserver::HandleServerAppExit( aReason );
-    delete iBrowserLauncher;
-    iBrowserLauncher = NULL;
-    }
-
-// ---------------------------------------------------------
-// CWmPortalButton::HandleControlEventL
-// ---------------------------------------------------------
-//
-void CWmPortalButton::HandleControlEventL( CCoeControl* aControl,
-        TCoeEvent aEventType )
-    {
-    if ( aControl == this )
-        {
-        if ( aEventType == EEventStateChanged ||
-            aEventType == ELongPressEndedEvent ||
-            aEventType == EEventRequestCancel )
-            {
-            DrawDeferred();
-            }
-        // execute portal action when button pressed (short or long press)
-        if ( aEventType == EEventRequestExit )
-            {
-            SetFocus( EFalse );
-            DrawNow();
-            ExecuteL();
-            }
-        }
-    }
-
-// ---------------------------------------------------------
-// CWmPortalButton::HandlePointerEventL
-// ---------------------------------------------------------
-//
-void CWmPortalButton::HandlePointerEventL( 
-        const TPointerEvent& aPointerEvent )
-    {
-    CAknButton::HandlePointerEventL( aPointerEvent );
-    
-    // remove focus from button if button is released outside rect 
-    if ( aPointerEvent.iType == TPointerEvent::EDrag )
-        {
-        TBool wasFoucused( IsFocused() );
-        SetFocus( Rect().Contains( aPointerEvent.iPosition ) );
-        if ( wasFoucused != IsFocused() ){ DrawNow(); }
-        }
-    else if ( aPointerEvent.iType == TPointerEvent::EButton1Up )
-        {
-        SetFocus( EFalse ); // remove focus when button released.
-        }
-    }
-
-
-// ---------------------------------------------------------
-// CWmPortalButton::LayoutIconSize
-// ---------------------------------------------------------
-//
-TSize CWmPortalButton::LayoutIconSize() const
-    {
-    TBool landscape = Layout_Meta_Data::IsLandscapeOrientation();
-    TAknLayoutRect imageLayout;
-    if ( iWmMainContainer->Configuration().PortalButtonCount() == 1 )
-        {
-        imageLayout.LayoutRect( Rect(), AknLayoutScalable_Apps::
-                wgtman_btn_pane_g1( landscape ? 1 : 0).LayoutLine() );
-        }
-    else
-        {
-        TInt variety = (landscape ? 5 : 4);
-        imageLayout.LayoutRect( Rect(), AknLayoutScalable_Apps
-                ::wgtman_btn_pane_g1( variety ).LayoutLine() );
-        }
-    
-    return imageLayout.Rect().Size();
-    }
-
-// ---------------------------------------------------------
-// CWmPortalButton::SizeChanged
-// ---------------------------------------------------------
-//
-void CWmPortalButton::SizeChanged()
-    {    
-    CAknButton::SizeChanged();
-
-    SetTextVerticalAlignment( CAknButton::ECenter );
-    
-    // resize icon
-    if ( iButtonIcon && iButtonIconMask )
-        {
-        iImageConverter->UpdateImageSize(
-            LayoutIconSize(),
-            iWmMainContainer->Configuration().PortalButtonIcon(
-                    iPortalButtonIndex ),
-            *iButtonIcon, 
-            *iButtonIconMask );
-        }
-        
-    TBool landscape = Layout_Meta_Data::IsLandscapeOrientation();
-    SetTextAndIconAlignment( 
-            landscape ? CAknButton::EIconOverText : CAknButton::EIconBeforeText );
-    }
-
-// ---------------------------------------------------------
-// CWmPortalButton::Draw
-// ---------------------------------------------------------
-//
-void CWmPortalButton::Draw( const TRect& /*aRect*/ ) const
-    {
-    TRect rect = Rect();
-
-    TAknLayoutRect centerLayout;
-    centerLayout.LayoutRect( rect,
-        AknLayoutScalable_Avkon::toolbar_button_pane_g1().LayoutLine() );
-    TRect innerRect = centerLayout.Rect();
-
-    CWindowGc& gc = SystemGc();
-    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
-
- 	TAknsItemID frameId = ( KAknsIIDQsnFrButtonNormal );
-    TAknsItemID frameCenterId = ( KAknsIIDQsnFrButtonCenterNormal );
- 	
-    if ( iButtonPressed )
-    	{
-        frameId = ( KAknsIIDQsnFrButtonPressed );
-        frameCenterId = ( KAknsIIDQsnFrButtonCenterPressed );
-    	}
-    else if ( IsDimmed() )
-        {
-    	frameId = KAknsIIDQsnFrButtonInactive;
-    	frameCenterId = KAknsIIDQsnFrButtonCenterInactive;
-        }
-    else if ( IsFocused() )
-        {
-        frameId = KAknsIIDQsnFrButtonHighlight;
-        frameCenterId = KAknsIIDQsnFrButtonHighlightCenter;
-        }
-    
-    iBgContext->SetFrame( frameId );
-    iBgContext->SetCenter( frameCenterId );
-    iBgContext->SetFrameRects( rect, innerRect );
-
-    if ( !AknsDrawUtils::Background( skin, iBgContext, NULL, 
-        gc, rect, KAknsDrawParamNoClearUnderImage ) )
-        {
-        gc.SetBrushColor( KRgbRed );
-        gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
-        gc.DrawRect( rect );
-        }
-    gc.SetBrushStyle( CGraphicsContext::ENullBrush );
-	
-    CAknButtonState* state = State();
-    if ( state )
-        {
-        TBool landscape = Layout_Meta_Data::IsLandscapeOrientation();
-        
-        // draw image if one exists
-        if ( iButtonIcon && iButtonIconMask )
-            {
-            TAknLayoutRect imageLayout;
-            if ( iWmMainContainer->Configuration().PortalButtonCount() == 1 )
-                {
-                imageLayout.LayoutRect( rect, AknLayoutScalable_Apps::
-                        wgtman_btn_pane_g1( landscape ? 3 : 0).LayoutLine() );
-                }
-            else
-                {
-                TInt variety = (landscape ? 7 : 4);
-                imageLayout.LayoutRect( rect, AknLayoutScalable_Apps
-                        ::wgtman_btn_pane_g1( variety ).LayoutLine() );
-                }
-            
-            gc.DrawBitmapMasked(
-                imageLayout.Rect(),
-                iButtonIcon,
-                TRect(TPoint( 0, 0 ), iButtonIcon->SizeInPixels() ),
-                iButtonIconMask,
-                EFalse );
-            }
-        
-        // draw text if portrait        
-        if ( !landscape )
-            {
-            TAknTextComponentLayout leftLayout;
-            TInt variety = 
-                ((iWmMainContainer->Configuration().PortalButtonCount()== 2)? 4:0 );
-            leftLayout = AknLayoutScalable_Apps::wgtman_btn_pane_t1( variety  );
-            DrawText( gc, state->Text(), leftLayout, 1 );
-            }
-        }
-    }
-
-// ---------------------------------------------------------
-// CWmPortalButton::DrawText
-// ---------------------------------------------------------
-//
-void CWmPortalButton::DrawText( 
-                        CWindowGc& aGc,
-                        const TDesC& aText,
-                        TAknTextComponentLayout& aLayout,
-                        TInt aMargin ) const
-    {
-    TAknLayoutText layoutText;
-    layoutText.LayoutText(Rect(), aLayout.LayoutLine() );
-    
-    const CFont* font = layoutText.Font();
-    TRect textRect = layoutText.TextRect();
-    
-    aGc.UseFont( font );
-    
-    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
-    
-    TRgb textColor;
-    TInt err = AknsUtils::GetCachedColor( 
-                    skin, 
-                    textColor, 
-                    KAknsIIDQsnTextColors, 
-                    EAknsCIQsnTextColorsCG63 );
-    if ( err != KErrNone )
-        {
-        textColor = layoutText.Color(); 
-        }
-    aGc.SetPenColor( textColor);
-    
-    // Layout data not correct, add some space for text
-    textRect.iBr.iX += aMargin;
-    textRect.iTl.iX -= aMargin;
-    
-    // buffer for visually ordered text
-    TBuf<255 + KAknBidiExtraSpacePerLine> visualText; 
-    TInt clipWidth = textRect.Width();
-
-    // bidi processing - using AknBidiTextUtils.
-    AknBidiTextUtils::ConvertToVisualAndClip(
-        aText,
-        visualText,
-        *font,
-        clipWidth,
-        clipWidth );
-
-    TInt baselineOffset = 0;
-    switch ( iVerticalAlignment )
-        {
-        case ETop:
-            baselineOffset = font->AscentInPixels();
-            break;
-
-        case EBottom:
-            baselineOffset = textRect.Height();
-            break;
-
-        default:  // centered
-            baselineOffset = font->AscentInPixels() +
-                           ( textRect.Height() - font->AscentInPixels() ) / 2;
-        }
-        
-    aGc.DrawText( visualText, textRect, 
-            baselineOffset, layoutText.Align() );    
-    }
-
-// ---------------------------------------------------------
-// CWmPortalButton::RunOperatorApplicationL
-// ---------------------------------------------------------
-//
-void CWmPortalButton::RunOperatorApplicationL( CWmConfiguration& aConf )
-    {
-    CWmConfiguration::TOpAppType type = aConf.PortalButtonApplicationType( 1 );
-    if ( type == CWmConfiguration::EUnknown ||
-        type >= CWmConfiguration::EReserved )
-        {
-        // Leave if not found
-        User::Leave( KErrArgument );
-        }
-    
-    switch( type )
-        {
-        case CWmConfiguration::ES60:
-        case CWmConfiguration::EQt:    
-            {
-            TUid uid = KNullUid;
-            aConf.PortalButtonApplicationId( 1, uid );
-            StartProcessL( uid, aConf.PortalButtonClientParam( 1 ) );
-            }
-            break;
-        case CWmConfiguration::ECwrt:
-            {
-            TUid uid = KNullUid;
-            aConf.PortalButtonApplicationId( 1, uid );
-            StartWidgetL( uid, aConf.PortalButtonClientParam( 1 ) );
-            }
-            break;
-        case CWmConfiguration::EWrt:
-            {
-            TUid uid = KNullUid;
-            aConf.PortalButtonApplicationId( 1, uid );
-            StartWidgetL( uid, KNullDesC );
-            }
-            break;
-        case CWmConfiguration::EJava:
-            {
-            TBuf<NCentralRepositoryConstants::KMaxUnicodeStringLength> appId;
-            aConf.PortalButtonApplicationId( 1, appId );
-            //TODO:
-            }
-            break;
-        }
-    }
-
-// ---------------------------------------------------------
-// CWmPortalButton::StartProcessL
-// ---------------------------------------------------------
-//
-void CWmPortalButton::StartProcessL( TUid aUid, const TDesC& aParam )
-    {
-    RApaLsSession session;
-    User::LeaveIfError( session.Connect() );
-    CleanupClosePushL( session );
-    
-    //get app info
-    TApaAppInfo appInfo;
-    User::LeaveIfError( session.GetAppInfo( appInfo, aUid ) );
-    // do the launch
-    RProcess process;
-    User::LeaveIfError( process.Create( appInfo.iFullName, aParam ) );
-    process.Resume();
-    
-    CleanupStack::PopAndDestroy( &session );
-    }
-
-// ---------------------------------------------------------
-// CWmPortalButton::StartWidgetL
-// ---------------------------------------------------------
-//
-void CWmPortalButton::StartWidgetL( TUid aAppUid, const TDesC& aParams )
-    {
-    if ( aAppUid == KNullUid )
-        User::Leave( KErrArgument );
-    
-    HBufC* params = aParams.AllocLC();
-    
-    RApaLsSession appArc;
-    User::LeaveIfError( appArc.Connect() );
-    CleanupClosePushL( appArc );
-    
-    TThreadId threadId;
-    User::LeaveIfError( appArc.StartDocument( *params, aAppUid, threadId ) );
-    
-    CleanupStack::PopAndDestroy( &appArc );      
-    CleanupStack::PopAndDestroy( params );
-    }
-
-// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/src/wmstore.cpp	Wed Sep 15 12:00:00 2010 +0300
@@ -0,0 +1,367 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies)..
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* Implementation of the store for WidgetManager
+*
+*/
+
+// INCLUDE FILES
+#include <aknlayoutscalable_apps.cdl.h>
+#include <aknlayoutscalable_avkon.cdl.h>
+#include <layoutmetadata.cdl.h>
+#include <AknUtils.h>
+#include <AknsDrawUtils.h>
+#include <AknBidiTextUtils.h>
+#include <AknsFrameBackgroundControlContext.h>
+#include <gulicon.h>
+#include <avkon.mbg>
+#include <widgetmanager.mbg>
+#include <apgcli.h>
+#include <apgtask.h>
+#include <widgetregistryclient.h> // widgetreqistry
+#include <bacline.h>
+#include <escapeutils.h> 
+#include <browserlauncher.h>
+#include <centralrepository.h>
+#include <aknlayoutscalable_avkon.cdl.h>
+
+#include "wmimageconverter.h"
+#include "wmstore.h"
+#include "wmcommon.h"
+#include "wmplugin.h"
+#include "wmresourceloader.h"
+#include "wmmaincontainer.h"
+#include "wmconfiguration.h"
+#include "wmprocessmonitor.h"
+
+// CONSTANTS
+
+// MEMBER FUNCTIONS
+
+// ---------------------------------------------------------
+// CWmStore::NewL
+// ---------------------------------------------------------
+//
+CWmStore* CWmStore::NewL( CWmConfItem& aWmConfItem, 
+        CWmResourceLoader& aResourceLoader )
+	{
+ 	CWmStore* self = new (ELeave) CWmStore( aWmConfItem );
+ 	CleanupStack::PushL( self );    
+    self->ConstructL( aResourceLoader );    
+    CleanupStack::Pop( self );
+    return self;
+	}
+
+// ---------------------------------------------------------
+// CWmStore::~CWmStore
+// ---------------------------------------------------------
+//
+CWmStore::~CWmStore()
+    {
+    delete iIcon;
+    delete iMask;
+        
+    // if MAknIconFileProvider was used to create image from icon string
+    // then it'll try accessing imageconverter after bitmap deletion
+    // for de-reference open file count, so it should be deleted last.
+    delete iImageConverter;
+    delete iProcessMonitor;
+    delete iBrowserLauncher;
+    }
+
+// ---------------------------------------------------------
+// CWmStore::CWmStore
+// ---------------------------------------------------------
+//
+CWmStore::CWmStore( CWmConfItem& aWmConfItem )
+    : iWmConfItem( aWmConfItem )
+    {
+    iIcon = NULL;
+    iMask = NULL;
+	iProcessMonitor = NULL;
+	iBrowserLauncher = NULL;
+    }
+
+// ---------------------------------------------------------
+// CWmStore::ConstructL
+// ---------------------------------------------------------
+//
+void CWmStore::ConstructL( CWmResourceLoader& aResourceLoader )
+    {
+    // start image converter for the icon
+    iImageConverter = CWmImageConverter::NewL();
+    
+    // get size of icon for double large style list
+    TRect rect;
+    TAknLayoutRect layout;
+    
+    layout.LayoutRect( rect,
+        AknLayoutScalable_Avkon::list_double_large_graphic_pane_g1( 0 ).LayoutLine() );
+
+    TSize iconSize( layout.Rect().Width(),
+                    layout.Rect().Height() );
+    
+    // create icon
+    TInt err = iImageConverter->HandleIconString(
+            iconSize,
+            iWmConfItem.Icon(),
+            iIcon, 
+            iMask,
+            ETrue ); // force scaling for non scaleble icons
+    
+    if ( err != KErrNone )
+        {
+        // lets use basket icon
+        // skin( 0x101f86e3 0x23f6 ):mif( z:\resource\apps\widgetmanager.mif 16388 16389 )
+        _LIT( KSkinMifIconFormat, "skin( 0x%x 0x%x ):mif( %S %d %d )");
+        const TInt KMaxIconDescriptorLength = 256;
+        TBuf<KMaxIconDescriptorLength> buf;
+        buf.Format( KSkinMifIconFormat(),
+                 EAknsMajorGeneric, EAknsMinorGenericQgnPropLmShopping,
+                 &aResourceLoader.IconFilePath(),
+                 EMbmWidgetmanagerQgn_menu_shopping,
+                 EMbmWidgetmanagerQgn_menu_shopping_mask );
+        
+        iImageConverter->HandleIconString(
+            iconSize,
+            buf,
+            iIcon, 
+            iMask,
+            EFalse ); // force scaling for non scaleble icons
+        }
+    }
+
+// ---------------------------------------------------------
+// CWmStore::StoreIcon
+// ---------------------------------------------------------
+//
+CFbsBitmap* CWmStore::StoreIcon()
+    {
+    return iIcon;
+    }
+
+// ---------------------------------------------------------
+// CWmStore::StoreMask
+// ---------------------------------------------------------
+//
+CFbsBitmap* CWmStore::StoreMask()
+    {
+    return iMask;
+    }
+
+// ---------------------------------------------------------
+// CWmStore::Heading
+// ---------------------------------------------------------
+//
+const TDesC& CWmStore::Heading()
+    {
+    return iWmConfItem.Title();
+    }
+
+// ---------------------------------------------------------
+// CWmStore::Order
+// ---------------------------------------------------------
+//
+TInt CWmStore::Order() const
+    {
+    return iWmConfItem.Order();
+    }
+
+// ---------------------------------------------------------
+// CWmStore::ExecuteL
+// ---------------------------------------------------------
+//
+void CWmStore::ExecuteL()
+    {
+    if ( iWmConfItem.Id() == EOvi )
+        {
+        if ( !iProcessMonitor )
+            {
+            iProcessMonitor = CWmProcessMonitor::NewL();
+            }
+        // if process monitor is active laucher was allready started.
+        // this is for ignoring multiple presses
+        if ( !iProcessMonitor->IsActive() )
+            {
+            RunOviL();
+            }
+        }
+    else if ( iWmConfItem.Id() >= EStore1 && iWmConfItem.Id() < ELastItem )
+        {
+        // if this leaves it means we need to start browser
+        // becouse application info was not given
+        TRAPD( err, RunApplicationL() )
+        if ( err != KErrNone )        
+            {
+            StartBrowserL( iWmConfItem.BrowserUrl() );
+            }
+        } 
+    else
+        {
+        // Not supported
+        User::Leave( KErrGeneral );
+        }
+    }
+   
+// ---------------------------------------------------------
+// CWmStore::RunOviL
+// ---------------------------------------------------------
+//
+void CWmStore::RunOviL()
+    {
+    RApaLsSession session;
+    User::LeaveIfError( session.Connect() );
+    CleanupClosePushL( session );
+    
+    //get app info
+    TApaAppInfo appInfo;
+    if ( session.GetAppInfo( appInfo, iWmConfItem.AppUid() ) == KErrNone )
+        {
+        // Form parameter
+        HBufC* param = HBufC::NewLC( iWmConfItem.AppParam().Length() );
+        param->Des().Copy( iWmConfItem.AppParam() );
+        
+        // do the launch
+        RProcess process;
+        User::LeaveIfError( process.Create( appInfo.iFullName, *param ) );
+    
+        iProcessMonitor->Monitor( process );
+        process.Resume();
+    
+        CleanupStack::PopAndDestroy( param );
+        }
+    
+    CleanupStack::PopAndDestroy( &session );
+    }
+
+// ---------------------------------------------------------
+// CWmStore::StartBrowserL
+// ---------------------------------------------------------
+//
+void CWmStore::StartBrowserL( const TDesC& aUrl )
+    {
+    // already running/or request launch or url is empty
+    if ( iBrowserLauncher || !aUrl.Length() ) { return; } 
+
+    _LIT( KUrlPrefix, "4 ");
+    HBufC* param = HBufC::NewLC( aUrl.Length() + KUrlPrefix().Length() );
+    param->Des().Append( KUrlPrefix );
+    param->Des().Append( aUrl );
+        
+    // Create browser launcher
+    CBrowserLauncher* launcher = CBrowserLauncher::NewLC();
+
+    // Asynchronous operation to launch the browser with given URL
+    launcher->LaunchBrowserEmbeddedL( 
+            *param, NULL, this, NULL );
+    
+    CleanupStack::Pop( launcher ); 
+    iBrowserLauncher = launcher;
+    launcher = NULL;
+
+    CleanupStack::PopAndDestroy( param );
+    }
+
+// ---------------------------------------------------------
+// CWmStore::HandleServerAppExit
+// ---------------------------------------------------------
+//
+void CWmStore::HandleServerAppExit( TInt aReason )
+    {
+    MAknServerAppExitObserver::HandleServerAppExit( aReason );
+    delete iBrowserLauncher;
+    iBrowserLauncher = NULL;
+    }
+
+// ---------------------------------------------------------
+// CWmStore::RunApplicationL
+// ---------------------------------------------------------
+//
+void CWmStore::RunApplicationL()
+    {
+    CWmConfiguration::TStoreAppType type = iWmConfItem.AppType();
+    if ( type == CWmConfiguration::EUnknown ||
+        type >= CWmConfiguration::EReserved )
+        {
+        // Leave if not found
+        User::Leave( KErrArgument );
+        }
+    
+    switch( type )
+        {
+        case CWmConfiguration::ES60:
+        case CWmConfiguration::EQt:    
+            {
+            StartProcessL( iWmConfItem.AppUid(), 
+                    iWmConfItem.AppParam() );
+            }
+            break;
+        case CWmConfiguration::ECwrt:
+            {
+            StartWidgetL( iWmConfItem.AppUid(), 
+                    iWmConfItem.AppParam() );
+            }
+            break;
+        case CWmConfiguration::EWrt:
+            {
+            StartWidgetL( iWmConfItem.AppUid(), KNullDesC );
+            }
+            break;
+        }
+    }
+
+// ---------------------------------------------------------
+// CWmStore::StartProcessL
+// ---------------------------------------------------------
+//
+void CWmStore::StartProcessL( TUid aUid, const TDesC& aParam )
+    {
+    RApaLsSession session;
+    User::LeaveIfError( session.Connect() );
+    CleanupClosePushL( session );
+    
+    //get app info
+    TApaAppInfo appInfo;
+    User::LeaveIfError( session.GetAppInfo( appInfo, aUid ) );
+    // do the launch
+    RProcess process;
+    User::LeaveIfError( process.Create( appInfo.iFullName, aParam ) );
+    process.Resume();
+    
+    CleanupStack::PopAndDestroy( &session );
+    }
+
+// ---------------------------------------------------------
+// CWmStore::StartWidgetL
+// ---------------------------------------------------------
+//
+void CWmStore::StartWidgetL( TUid aAppUid, const TDesC& aParams )
+    {
+    if ( aAppUid == KNullUid )
+        User::Leave( KErrArgument );
+    
+    HBufC* params = aParams.AllocLC();
+    
+    RApaLsSession appArc;
+    User::LeaveIfError( appArc.Connect() );
+    CleanupClosePushL( appArc );
+    
+    TThreadId threadId;
+    User::LeaveIfError( appArc.StartDocument( *params, aAppUid, threadId ) );
+    
+    CleanupStack::PopAndDestroy( &appArc );      
+    CleanupStack::PopAndDestroy( params );
+    }
+
+// End of file
--- a/idlehomescreen/widgetmanager/src/wmwidgetorderdata.cpp	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/widgetmanager/src/wmwidgetorderdata.cpp	Wed Sep 15 12:00:00 2010 +0300
@@ -86,7 +86,6 @@
     {
     delete iPublisherId;
     delete iName;
-    //delete iPersistentWidgetOrder // TODO: is needed???
     }
 
 // ---------------------------------------------------------
--- a/idlehomescreen/widgetmanager/tsrc/wmunittest/group/wmunittest.mmp	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/widgetmanager/tsrc/wmunittest/group/wmunittest.mmp	Wed Sep 15 12:00:00 2010 +0300
@@ -50,7 +50,7 @@
 SOURCE          wmpersistentwidgetorder.cpp
 SOURCE          wmeffectmanager.cpp
 SOURCE          wmdetailsdlg.cpp
-SOURCE          wmportalbutton.cpp
+SOURCE          wmstore.cpp
 SOURCE          wmwidgetloaderao.cpp
 SOURCE          wmconfiguration.cpp
 SOURCE          wminstaller.cpp
--- a/idlehomescreen/xmluirendering/renderingplugins/xnclockfactory/inc/xnclockadapter.h	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/xmluirendering/renderingplugins/xnclockfactory/inc/xnclockadapter.h	Wed Sep 15 12:00:00 2010 +0300
@@ -70,11 +70,9 @@
      * Create font
      * 
      * @param aNode Node which contains info of font
-     * @param aFontName Font name
      * @param aFont On return points to a created font
      */    
     void CreateFontL( CXnNodePluginIf& aNode,
-                      const TDesC& aFontName,
                       CFont*& aFont );
     
     /*
--- a/idlehomescreen/xmluirendering/renderingplugins/xnclockfactory/inc/xnclockface.h	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/xmluirendering/renderingplugins/xnclockfactory/inc/xnclockface.h	Wed Sep 15 12:00:00 2010 +0300
@@ -216,6 +216,12 @@
         */                       
         void DrawHandsL( CWindowGc& aGc, const TRect& aRect,
                          const TDateTime& aDateTime );
+        
+        /**
+        * Stores clock face adjustment value
+        * @param aNode is current face.
+        */ 
+        TInt FaceAdjustmentValueL( CXnNodePluginIf& aNode );
 
     private:
 
@@ -229,7 +235,10 @@
         */
         void ConstructL();
 
-    private:    // Data                
+    private:    // Data  
+        
+        // Stores face adjustment value
+        TInt iFaceAdjustmentValue;
     };
 
 #endif      // _XNCLOCKFACE_H
--- a/idlehomescreen/xmluirendering/renderingplugins/xnclockfactory/src/xnclockadapter.cpp	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/xmluirendering/renderingplugins/xnclockfactory/src/xnclockadapter.cpp	Wed Sep 15 12:00:00 2010 +0300
@@ -38,6 +38,7 @@
 _LIT8( KDisplay, "display" );
 _LIT8( KNone, "none" );
 _LIT8( KBlock, "block" );
+_LIT( KLogicalSecondaryFont, "EAknLogicalFontSecondaryFont" );
 
 // ============================ LOCAL FUNCTIONS ===============================    
 
@@ -518,7 +519,6 @@
 // -----------------------------------------------------------------------------
 //    
 void CXnClockAdapter::CreateFontL( CXnNodePluginIf& aNode,
-                                   const TDesC& aFontName,
                                    CFont*& aFont )
     {
     TFontSpec spec;
@@ -546,13 +546,41 @@
                 prop, iNode.Rect().Height() );
             }
         }
-                                        
-    // No need to relase avkon font
-    CXnUtils::CreateFontL( aFontName, 
-                           height,
-                           spec.iFontStyle,
-                           aFont,
-                           dummy );
+    
+    TBool fontNotSet( ETrue );
+    prop = aNode.GetPropertyL(
+            XnPropertyNames::appearance::common::KFontFamily );
+    
+    if ( prop )
+        {
+        CXnDomPropertyValue* value = static_cast< CXnDomPropertyValue* >(
+            prop->Property()->PropertyValueList().Item( 0 ) );
+        
+        if ( CXnDomPropertyValue::EIdent == value->PrimitiveValueType()
+                ||CXnDomPropertyValue::EString == value->PrimitiveValueType() )
+            {
+            const TDesC& fontName( prop->StringValueL()->Des() );
+            
+            // No need to relase avkon font
+            CXnUtils::CreateFontL( fontName, 
+                                   height,
+                                   spec.iFontStyle,
+                                   aFont,
+                                   dummy );
+            
+            fontNotSet = EFalse;
+            }
+        }
+    
+    if( fontNotSet )
+        {
+        // No need to relase avkon font
+        CXnUtils::CreateFontL( KLogicalSecondaryFont, 
+                               height,
+                               spec.iFontStyle,
+                               aFont,
+                               dummy );
+        }
     }
 
 // -----------------------------------------------------------------------------
--- a/idlehomescreen/xmluirendering/renderingplugins/xnclockfactory/src/xnclockface.cpp	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/xmluirendering/renderingplugins/xnclockfactory/src/xnclockface.cpp	Wed Sep 15 12:00:00 2010 +0300
@@ -30,6 +30,9 @@
 #include "xnnodepluginif.h"
 #include "xnclockadapter.h"
 #include "xntext.h"
+#include "xnproperty.h"
+#include "xndomproperty.h"
+#include "xndomlist.h"
 
 #include "xnclockface.h"
 
@@ -38,8 +41,7 @@
 _LIT( KAmPmFormat, "%B" );
 _LIT( KTimeFormat, "%J%:1%T" );
 
-_LIT( KClockFont, "EAknLogicalFontSecondaryFont" );
-_LIT( KAmpmFont, "EAknLogicalFontSecondaryFont" );
+const TInt KDefaultFaceAdjustmentValue = 0;
 
 // ============================ MEMBER FUNCTIONS ===============================
 
@@ -167,7 +169,7 @@
         {
         if ( !iClockFont )
             {
-            aAdapter.CreateFontL( aNode, KClockFont, iClockFont );
+            aAdapter.CreateFontL( aNode, iClockFont );
             }
         return CAknLayoutFont::AsCAknLayoutFontOrNull( iClockFont );
         }
@@ -175,7 +177,7 @@
         {
         if ( !iAmpmFont )
             {
-            aAdapter.CreateFontL( aNode, KAmpmFont, iAmpmFont );
+            aAdapter.CreateFontL( aNode, iAmpmFont );
             }
         return CAknLayoutFont::AsCAknLayoutFontOrNull( iAmpmFont );
         }
@@ -228,6 +230,7 @@
 // -----------------------------------------------------------------------------
 //
 CXnClockFaceAnalog::CXnClockFaceAnalog()     
+    :   iFaceAdjustmentValue( KErrNotFound )
     {
     }
 
@@ -272,7 +275,7 @@
 void CXnClockFaceAnalog::DrawL( CXnClockAdapter& /*aAdapter*/, CWindowGc& aGc, 
         CXnNodePluginIf& aNode, const TTime& aTime, CXnNodePluginIf* /*aAmpm*/ )
     {    
-    TSize faceSize( aNode.Rect().Size() );
+    TRect faceRect( aNode.Rect() );
     
     TDateTime dateTime( aTime.DateTime() );
     
@@ -292,14 +295,19 @@
         {
         return;
         }
+    
+    TInt value( FaceAdjustmentValueL( aNode ) );
+    
+    TSize growthSize( value, 0 );
+    faceRect.Grow( growthSize );
 
-    User::LeaveIfError( AknIconUtils::SetSize( skinBmp, faceSize ) );
+    User::LeaveIfError( AknIconUtils::SetSize( skinBmp, faceRect.Size() ) );
 
     if( skinMask )
         {
-        User::LeaveIfError( AknIconUtils::SetSize( skinMask, faceSize ) );
+        User::LeaveIfError( AknIconUtils::SetSize( skinMask, faceRect.Size() ) );
         
-        aGc.BitBltMasked( aNode.Rect().iTl,
+        aGc.BitBltMasked( faceRect.iTl,
                           skinBmp,
                           TRect( TPoint( 0, 0 ), skinBmp->SizeInPixels() ),
                           skinMask,
@@ -307,7 +315,7 @@
         }
     else
         {
-        aGc.BitBlt( aNode.Rect().iTl, skinBmp );
+        aGc.BitBlt( faceRect.iTl, skinBmp );
         }
 
     aGc.SetBrushStyle( CGraphicsContext::ENullBrush );
@@ -369,6 +377,34 @@
     }
 
 // -----------------------------------------------------------------------------
+// CXnClockFaceAnalog::FaceAdjustmentValueL
+// -----------------------------------------------------------------------------
+//
+TInt CXnClockFaceAnalog::FaceAdjustmentValueL( CXnNodePluginIf& aNode )
+    {
+    if( iFaceAdjustmentValue == KErrNotFound )
+        {
+        CXnProperty* prop( aNode.GetPropertyL( XnPropertyNames::clock::KFaceAdjustmentValue ) );
+        
+        if( prop )
+            {        
+            TInt value = static_cast<TInt>( prop->FloatValueL() );
+            
+            if( value > KErrNotFound )
+                {
+                iFaceAdjustmentValue = value;
+                }
+            }
+        
+        if( iFaceAdjustmentValue <= KErrNotFound )
+            {
+            iFaceAdjustmentValue = KDefaultFaceAdjustmentValue;
+            }
+        }
+    
+    return iFaceAdjustmentValue;
+    }
+	
 // CXnClockFaceAnalog::ResetFont
 // -----------------------------------------------------------------------------
 //
--- a/idlehomescreen/xmluirendering/renderingplugins/xnclockfactory/src/xndatecontrol.cpp	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/xmluirendering/renderingplugins/xnclockfactory/src/xndatecontrol.cpp	Wed Sep 15 12:00:00 2010 +0300
@@ -38,7 +38,6 @@
 const TInt KMaxDateStringLength = 100;
 const TInt KMaxDayNumberStringLength = 10;
 
-_LIT( KDateFont, "EAknLogicalFontSecondaryFont" );
 _LIT( KTimeFormat, "%0U %1U" );
 
 
@@ -210,7 +209,7 @@
     {    
     if ( !iDateFont )
         {
-        iAdapter.CreateFontL( aNode, KDateFont, iDateFont );
+        iAdapter.CreateFontL( aNode, iDateFont );
         }
     return CAknLayoutFont::AsCAknLayoutFontOrNull( iDateFont );
     }
--- a/idlehomescreen/xmluirendering/uiengine/eabi/xn3layoutengineu.def	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/eabi/xn3layoutengineu.def	Wed Sep 15 12:00:00 2010 +0300
@@ -277,4 +277,5 @@
 	_ZTVN21CXnControlAdapterImpl13TIconProviderE @ 276 NONAME
 	_ZThn52_N17CXnControlAdapter19HandleControlEventLEP11CCoeControlN19MCoeControlObserver9TCoeEventE @ 277 NONAME
 	_ZThn60_N17CXnControlAdapter19HandleLongTapEventLERK6TPointS2_ @ 278 NONAME
+	_ZN8CXnUtils18ResolveSkinItemIDLERK7TDesC16R11TAknsItemID @ 279 NONAME
 
--- a/idlehomescreen/xmluirendering/uiengine/inc/xnplugindata.h	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/inc/xnplugindata.h	Wed Sep 15 12:00:00 2010 +0300
@@ -34,9 +34,41 @@
 class CXnODT;
 class CXnViewManager;
 class CXnPublisherData;
+class CCoeControl;
 
 // Constants
 
+NONSHARABLE_STRUCT( TXnDirtyRegion )
+    {
+    /** Area that needs to be redrawn */
+    RRegion         iRegion;      
+
+    /** Window owning control 
+     *  Not own.
+     */
+    CCoeControl*    iControl;
+
+    /** Window owning node
+     *  Not own.
+     */
+    CXnNode*        iRootNode; 
+
+    /** List of currently dirty nodes */
+    RPointerArray< CXnNode > iDirtyList;
+
+    /** Controls layouting */
+    TInt iLayoutControl;
+
+    TXnDirtyRegion() : iControl( NULL ), iRootNode( NULL ), 
+        iLayoutControl( 0 ) {}
+
+    ~TXnDirtyRegion()
+        {
+        iRegion.Close();
+        iDirtyList.Reset();
+        }
+    };
+
 // Class declaration
 
 /**
@@ -454,6 +486,20 @@
      */
     void SetLockingStatus( const TDesC8& aStatus );    
         
+    /**
+     * Creates dirty region.
+     * 
+     * @return Created dirty region.
+     */
+    TXnDirtyRegion* CreateDirtyRegionL( CXnNode& aRootNode, CCoeControl& aControl);
+
+    /**
+     * Get dirty region.
+     * 
+     * @return dirty region.
+     */
+    inline TXnDirtyRegion* DirtyRegion() const;
+
 protected:
     // data
         
@@ -493,6 +539,8 @@
     HBufC* iPublisherName;
     /** Flags to define this plugin's state */
     TBitFlags32 iFlags;
+    /** Region pending redraw, Owned */
+    TXnDirtyRegion* iDirtyRegion;
     };
 
 // Inline functions
--- a/idlehomescreen/xmluirendering/uiengine/inc/xnplugindata.inl	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/inc/xnplugindata.inl	Wed Sep 15 12:00:00 2010 +0300
@@ -188,4 +188,13 @@
     return iPluginsData;
     };
 
+// ---------------------------------------------------------------------------
+// Returns dirty region
+// ---------------------------------------------------------------------------
+//
+inline TXnDirtyRegion* CXnPluginData::DirtyRegion() const
+    {
+    return iDirtyRegion;
+    };
+
 #endif // _XNPLUGINDATA_INL_
--- a/idlehomescreen/xmluirendering/uiengine/inc/xnrootdata.h	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/inc/xnrootdata.h	Wed Sep 15 12:00:00 2010 +0300
@@ -122,6 +122,13 @@
     CXnViewData& NextViewData() const;
 
     /**
+     * Gets a view data, where the given node belongs to.
+     * 
+     * @return Acquired view data. NULL if not found.
+     */                
+    CXnViewData* ViewData( CXnNode& aNode ) const;
+
+    /**
      * Sets view data to destroyal list
      *
      * @param aViewData View data to destroy      
--- a/idlehomescreen/xmluirendering/uiengine/inc/xnuiengineimpl.h	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/inc/xnuiengineimpl.h	Wed Sep 15 12:00:00 2010 +0300
@@ -41,6 +41,7 @@
 class CXnViewManager;
 class CXnViewData;
 class CXnPluginData;
+class TXnDirtyRegion;
 
 // Constants
 namespace XnLayoutPhase
@@ -59,18 +60,6 @@
     const TInt EViewDirty = 0x10;
     const TInt EEffectStarted = 0x20;    
     }
-	
-NONSHARABLE_STRUCT( TXnDirtyRegion )
-    {
-    RRegion         iRegion;      
-    CCoeControl*    iControl; // Not own.
-    
-    ~TXnDirtyRegion()
-        {
-        iRegion.Close();
-        }
-    };
-
 
 NONSHARABLE_STRUCT( TXnSplitScreenState )
     {
@@ -147,18 +136,6 @@
     void LayoutUIL( CXnNode* aNode = NULL );
 
     /**
-     * Lays out the UI
-     * 
-     * This generates full re-layout starting from the given node, 
-     * regardless of the current dirty set or the active view.
-     * I.e. this can be used to layout an inactive view.
-     * 
-     * @since Series 60 5.2
-     * @param aNode Starting point of the layout
-     */
-    void LayoutFromNodeL( CXnNode& aNode );
-
-    /**
      * Creates UI implementations for the UI, adjusts control coordinates 
      * according to the layout
      * 
@@ -166,19 +143,6 @@
      * @param aNode Starting point
      */
     void RenderUIL( CXnNode* aNode = NULL );
-
-    /**
-     * Creates UI implementations for the UI, adjusts control coordinates 
-     * according to the layout
-     * 
-     * This generates full re-layout starting from the given node, 
-     * regardless of the current dirty set or the active view.
-     * I.e. this can be used to layout an inactive view.
-     * 
-     * @since Series 60 5.2
-     * @param aNode Starting point
-     */
-    void RenderFromNodeL( CXnNode& aNode );
     
     /**
      * Gets the root node of the UI
@@ -325,6 +289,7 @@
      * @since Series 60 3.1
      */
     void RefreshMenuL();
+    void RefreshMenuL( TXnDirtyRegion* aDirtyRegion );
 
     /**
      * Returns view manager
@@ -555,7 +520,7 @@
 private:
     
     IMPORT_C static void EnableRenderUi( TAny* aAny );
-        
+
 private:
     // constructors
 
@@ -566,51 +531,55 @@
 
 private:
     // new functions
-    
+
+    /**
+     * Lays out the UI
+     */
+    void LayoutL( TXnDirtyRegion& aRegion );
+    void RenderL( TXnDirtyRegion& aRegion );
+
     /**
      * Prepares to the layout algorithm run
      * 
      * @since Series 60 3.2
      */
-    void PrepareRunLayoutL();
-    void PrepareRunLayoutL( CXnNode& aNode );
+    void PrepareRunLayoutL( TXnDirtyRegion& aDirtyRegion );
 
     /**
      * Runs the layout algorithm        
      * 
      * @since Series 60 3.2
      */
-    TInt RunLayoutL( CXnNode* aNode );
-    TInt RunLayoutFromNodeL( CXnNode& aNode );
+    TInt RunLayoutL( TXnDirtyRegion& aDirtyRegion, CXnNode& aNode );
 
     /**
      * Checks if layout is currently disabled
      * 
      * @since Series 60 3.2
      */
-    TBool IsLayoutDisabled();
+    TBool IsLayoutDisabled( TXnDirtyRegion& aDirtyRegion );
 
-    void AddToRedrawListL( CXnNode* aNode, TRect aRect =
-        TRect::EUninitialized );
+    void AddToRedrawListL( TXnDirtyRegion& aRegion, CXnNode& aNode, 
+        TRect aRect = TRect::EUninitialized );
 
-    void AddToDirtyListL( CXnNode* aNode );
+    void AddToDirtyListL( TXnDirtyRegion& aRegion, CXnNode& aNode );
 
     /**
      * Finds a node where to start layout
      *
      * @since Series 60 5.0
      */
-    CXnNode* StartLayoutFromL();
+    CXnNode* StartLayoutFromL( TXnDirtyRegion& aDirtyRegion );
 
     void ForceRenderUIL( TBool aLayoutOnly = EFalse );
 
-    CCoeControl* WindowOwningControl( CXnNode& aNode );
+    CXnNode* WindowOwningNode( CXnNode& aNode );
     
     TXnDirtyRegion* FindDirtyRegionL( CXnNode& aNode );
 
-    void AddRedrawRectL( TRect aRect, CXnNode& aNode );
+    void ReportScreenDeviceChangeL();
 
-    void ReportScreenDeviceChangeL();
+    void EnableRenderUiL();
     
     /**
       * Handle partial touch input
@@ -752,18 +721,12 @@
     CXnKeyEventDispatcher* iKeyEventDispatcher;
     /** ControlAdapters, not owned */
     const RPointerArray< CXnControlAdapter >* iControlAdapterList;
-    /** Region pending redraw */
-    RPointerArray<TXnDirtyRegion> iRedrawRegions;
-    /** List of currently dirty nodes */
-    RPointerArray< CXnNode > iDirtyList;
     /** Array of nodes which can be focused */
     RPointerArray< CXnNode > iFocusCandidateList;
     /** current view */
     CXnNode* iCurrentView;
     /** current view control adapter, not owned */
     CXnControlAdapter* iCurrentViewControlAdapter;
-    /** Controls layouting */
-    TInt iLayoutControl;
     /** Layout algo phase */
     TInt iLayoutPhase;
     /** Unit in pixels (width). */
--- a/idlehomescreen/xmluirendering/uiengine/inc/xnviewadapter.h	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/inc/xnviewadapter.h	Wed Sep 15 12:00:00 2010 +0300
@@ -192,6 +192,14 @@
      */
     void EnterEditStateL( CXnViewData& aView, TBool aEnter );
 
+    /**
+     * Tell if this adapter is on foreground. Returns EFalse immediately after
+	 * adapter is deactivated (Avkon IsForeground has some delay).
+     * @since S60 5.0
+     * @return ETrue if container is on foreground, EFalse otherwise
+     */
+	 TBool IsForegroundAdapter() const;
+            
 private:
     // new functions
     
--- a/idlehomescreen/xmluirendering/uiengine/inc/xnviewdata.h	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/inc/xnviewdata.h	Wed Sep 15 12:00:00 2010 +0300
@@ -26,8 +26,6 @@
 class CXnViewManager;
 class CFbsBitmap;
 
-// Constants
-
 // Class declaration
 
 /**
@@ -212,14 +210,28 @@
      * Loads publishers to this view           
      */
     void LoadPublishers( TInt aReason );    
-                   
+
     /**
      * Destroys all publishers in this view
      * 
      * @param aReason Destroy reason
      */
     void DestroyPublishers( TInt aReason );
-            
+
+    /**
+     * Gets dirty region of a given node. 
+     * 
+     * @return Dirty region if found, otherwise NULL.
+     */
+    TXnDirtyRegion* DirtyRegionL( CXnNode& aNode );
+
+    /**
+     * Gets an array of dirty regions. 
+     * 
+     * @param aList An array for dirty regions.
+     */
+    void GetDirtyRegions( RPointerArray<TXnDirtyRegion>& aList );
+    
 private:
     // data                              
     
--- a/idlehomescreen/xmluirendering/uiengine/src/xnbackgroundmanager.cpp	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnbackgroundmanager.cpp	Wed Sep 15 12:00:00 2010 +0300
@@ -354,6 +354,20 @@
             TRAP_IGNORE( RemovableDiskRemovedL() ); 
             }
         }
+    else if( aEvent.iType == MDiskNotifyHandlerCallback::EDiskAdded )
+        {
+        if( aEvent.iInfo.iType == EMediaHardDisk )
+            {
+            TRAP_IGNORE( RemovableDiskInsertedL() ); 
+            }
+        }
+    else if( aEvent.iType == MDiskNotifyHandlerCallback::EDiskRemoved )
+        {
+        if( aEvent.iInfo.iType == EMediaNotPresent )
+            {
+            TRAP_IGNORE( RemovableDiskRemovedL() ); 
+            }
+        }
     }
 
 // -----------------------------------------------------------------------------
@@ -1135,9 +1149,9 @@
         RFs& fs( CEikonEnv::Static()->FsSession() );
         if ( path != KNullDesC && BaflUtils::FileExists( fs, path ) )
             {
+
             iIntUpdate++;
-            TInt err( AknsWallpaperUtils::SetIdleWallpaper( path, NULL ) ); 
-                  
+            TInt err( AknsWallpaperUtils::SetIdleWallpaper( path, NULL ) );
             if( err )
                 {
                 iIntUpdate--;
@@ -1160,8 +1174,16 @@
             if( err )
                 {
                 iIntUpdate--;
-                }       
-            }
+                }
+
+            // If the drive was formatted or temporarily detached or the image was removed            
+            if( path.Length() )
+                {
+                iViewManager.ActiveViewData().SetWallpaperImage( NULL );
+                iSkinSrv.RemoveWallpaper( path );
+                DrawNow();
+                }                        
+            }        
         }       
     }
 
--- a/idlehomescreen/xmluirendering/uiengine/src/xneditor.cpp	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/src/xneditor.cpp	Wed Sep 15 12:00:00 2010 +0300
@@ -57,7 +57,6 @@
 #include "xnviewdata.h"
 #include "xnwallpaperview.h"
 #include "xnbackgroundmanager.h"
-#include "xnpopupcontroladapter.h"
 
 #include "xneditor.h"
 #include "xnpanic.h"
@@ -629,18 +628,6 @@
         }
     if( ui )
         {
-        CXnNode* popup( iViewManager.UiEngine().StylusPopupNode() );
-        if ( popup )
-            {
-            CXnPopupControlAdapter* control =
-                static_cast< CXnPopupControlAdapter* >(
-                        popup->Control() );
-           
-            if ( control )
-                {
-                control->HideMenuL();
-                }
-            }
         ui->SetContentController( this );
         ui->Activate();
         
--- a/idlehomescreen/xmluirendering/uiengine/src/xnplugindata.cpp	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnplugindata.cpp	Wed Sep 15 12:00:00 2010 +0300
@@ -499,6 +499,9 @@
     {
     // Don't touch to iOwner, because this plugin might be reused later
     
+    delete iDirtyRegion;
+    iDirtyRegion = NULL;
+    
     // clear all flags, except editable and removable
     TBool removable = iFlags.IsSet( EIsRemovable );
     TBool editable = iFlags.IsSet( EIsEditable );
@@ -652,4 +655,21 @@
         }
     }
 
+// -----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
+//
+TXnDirtyRegion* CXnPluginData::CreateDirtyRegionL( CXnNode& aRootNode, 
+    CCoeControl& aControl )
+    {
+    delete iDirtyRegion;
+    iDirtyRegion = NULL;
+    iDirtyRegion = new (ELeave) TXnDirtyRegion;
+    iDirtyRegion->iRegion.Clear();
+    iDirtyRegion->iControl = &aControl;
+    iDirtyRegion->iRootNode = &aRootNode;
+    iDirtyRegion->iDirtyList.Reset();
+    iDirtyRegion->iLayoutControl = 0;
+    return iDirtyRegion;
+    }
+    
 // End of file
--- a/idlehomescreen/xmluirendering/uiengine/src/xnpopupcontroladapter.cpp	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnpopupcontroladapter.cpp	Wed Sep 15 12:00:00 2010 +0300
@@ -204,13 +204,19 @@
     
     CXnViewManager* manager( iUiEngine->ViewManager() );            
     CXnPluginData* plugin( manager->ActiveViewData().Plugin( &aPlugin ) );
-    
+            
     if ( !plugin )
         {
         return;
         }
     
     CXnViewAdapter& adapter( iUiEngine->AppUiAdapter().ViewAdapter() );
+
+    // this is to avoid stylus popup on widget manager   
+    if ( !adapter.IsForegroundAdapter() )
+        {
+        return;
+        }
     
     const TPointerEvent& event( adapter.EventDispatcher()->PointerEvent() );
     
--- a/idlehomescreen/xmluirendering/uiengine/src/xnrootdata.cpp	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnrootdata.cpp	Wed Sep 15 12:00:00 2010 +0300
@@ -426,6 +426,46 @@
     }
 
 // -----------------------------------------------------------------------------
+// CXnRootData::ViewData()
+// -----------------------------------------------------------------------------
+//
+CXnViewData* CXnRootData::ViewData( CXnNode& aNode ) const
+    {
+    CXnNode* tmp( &aNode );
+    CXnNode* viewNode( NULL );
+    while( tmp )
+        {
+        if ( tmp->ViewNodeImpl() )
+            {
+            viewNode = tmp;
+            break;
+            }
+        else
+            {
+            tmp = tmp->Parent();
+            }
+        }
+    if( !viewNode )
+        {
+        return NULL;
+        }
+
+    CXnViewData* viewData( NULL );
+    for ( TInt i = 0; i < iPluginsData.Count(); i++ )
+        {
+        CXnViewData* tmpViewdata( static_cast< CXnViewData* >( iPluginsData[i] ) );
+        if( tmpViewdata->ViewNode() == viewNode )
+            {
+            viewData = tmpViewdata;
+            break;
+            }
+        }
+    
+    return viewData;
+    }
+
+    
+// -----------------------------------------------------------------------------
 // CXnRootData::DestroyViewData()
 // Sets view data to be destroyed
 // -----------------------------------------------------------------------------
--- a/idlehomescreen/xmluirendering/uiengine/src/xnuiengine.cpp	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnuiengine.cpp	Wed Sep 15 12:00:00 2010 +0300
@@ -160,16 +160,6 @@
     }
 
 // -----------------------------------------------------------------------------
-// CXnUiEngine::RenderFromNodeL
-// Forwards the call to the ui engine implementation
-// -----------------------------------------------------------------------------
-void CXnUiEngine::RenderFromNodeL( CXnNode& aNode )
-    {
-    iUiEngineImpl->LayoutFromNodeL( aNode );
-    iUiEngineImpl->RenderFromNodeL( aNode );
-    }
-
-// -----------------------------------------------------------------------------
 // CXnUiEngine::LayoutUIL
 // Forwards the call to the ui engine implementation
 // -----------------------------------------------------------------------------
@@ -180,16 +170,6 @@
     }
 
 // -----------------------------------------------------------------------------
-// CXnUiEngine::LayoutFromNodeL
-// Forwards the call to the ui engine implementation
-// -----------------------------------------------------------------------------
-//
-void CXnUiEngine::LayoutFromNodeL( CXnNode& aNode )
-    {
-    iUiEngineImpl->LayoutFromNodeL( aNode );
-    }
-
-// -----------------------------------------------------------------------------
 // CXnUiEngine::Resources
 // Forwards the call to the ui engine implementation
 // -----------------------------------------------------------------------------
--- a/idlehomescreen/xmluirendering/uiengine/src/xnuiengineimpl.cpp	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnuiengineimpl.cpp	Wed Sep 15 12:00:00 2010 +0300
@@ -7972,7 +7972,7 @@
 // -----------------------------------------------------------------------------
 //
 static void ReportScreenDeviceChangedL( const CXnPluginData& aPluginData )
-    {    
+    {   
     CXnNode* node( NULL );
     
     if ( aPluginData.Node() )
@@ -8211,13 +8211,6 @@
     delete iEditMode;
 
     iFocusCandidateList.Reset();
-
-    if ( iRedrawRegions.Count() )
-        {
-        iRedrawRegions.ResetAndDestroy();
-        }
-
-    iDirtyList.Reset();
     }
 
 // -----------------------------------------------------------------------------
@@ -8233,98 +8226,124 @@
 // CXnUiEngineImpl::LayoutUIL()
 // -----------------------------------------------------------------------------
 //
-void CXnUiEngineImpl::LayoutUIL( CXnNode* /*aNode*/ )
-    {
-    if ( IsLayoutDisabled() )
+void CXnUiEngineImpl::LayoutUIL( CXnNode* aNode )
+    {
+    if( aNode )
+        {
+        TXnDirtyRegion* dirtyRegion = FindDirtyRegionL( *aNode );
+        if( dirtyRegion )
+            {
+            LayoutL( *dirtyRegion );
+            }
+        }
+    else
+        {
+        CXnViewData* viewData = iViewManager.ActiveAppData().ViewData( *iCurrentView );
+        if( viewData )
+            {
+            RPointerArray<TXnDirtyRegion> arr;
+            CleanupClosePushL( arr );
+            viewData->GetDirtyRegions( arr );
+            for( TInt i = 0; i < arr.Count(); i++ )
+                {
+                LayoutL( *arr[i] );            
+                }
+            CleanupStack::PopAndDestroy( &arr );
+            }
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CXnUiEngineImpl::LayoutUIL()
+// -----------------------------------------------------------------------------
+//
+void CXnUiEngineImpl::LayoutL( TXnDirtyRegion& aRegion )
+    {
+    if ( IsLayoutDisabled( aRegion ) )
         {     
-        iLayoutControl |= XnLayoutControl::ELayoutUI;
+        aRegion.iLayoutControl |= XnLayoutControl::ELayoutUI;
         return;
         }
 
-    iLayoutControl &= ~XnLayoutControl::ELayoutUI;
-
-    if ( iDirtyList.Count() == 0 )
+    aRegion.iLayoutControl &= ~XnLayoutControl::ELayoutUI;
+
+    if ( aRegion.iDirtyList.Count() == 0 )
         {
         // Nothing to do, layout is up-to-date
         return;
         }
 
     DisableRenderUiLC();
-    CXnNode* candidate( StartLayoutFromL() );
-    PrepareRunLayoutL();
-    iDirtyList.Reset();
+    
+    CXnNode* candidate( StartLayoutFromL( aRegion ) );
+    if( !candidate )
+        {
+        return;
+        }
+    
+    PrepareRunLayoutL( aRegion );
+    aRegion.iDirtyList.Reset();
 
     // Run layout until it is fully calculated
     do
         {
-        iLayoutPhase = RunLayoutL( candidate );
+        iLayoutPhase = RunLayoutL( aRegion, *candidate );
         }
     while ( iLayoutPhase != XnLayoutPhase::ENone );
 
-    CXnNode* focused( FocusedNode() );
-
-    if ( focused && focused->IsDropped() )
-        {
-        // The currently focused node is dropped, run losevisualization
-        CXnNode* loseVisualisation =
-            BuildTriggerNodeLC( *iUiEngine,
-                XnPropertyNames::action::trigger::name::KLoseVisualisation );
-
-        focused->ReportXuikonEventL( *loseVisualisation );
-        CleanupStack::PopAndDestroy( loseVisualisation );
-
-        if ( FocusedNode() == focused )
-            {
-            // Remove focus as losevisualization trigger didn't
-            // change focus from dropped node to another one
-            SetFocusedNodeL( NULL );
-            }
-        }
-
-    if ( !FocusedNode() && iAppUiAdapter.FocusShown() )
-        {
-        // No focus, try if some of the focus candidates can be focused
-        RootNode()->RunFocusChangeL( iFocusCandidateList );
-        }
-        
-    iFocusCandidateList.Reset();
-
-    iAppUiAdapter.EffectManager()->UiLayouted();
+    // Run these only if the current view is being layouted
+    if( iCurrentView == aRegion.iRootNode )
+        {  
+        CXnNode* focused( FocusedNode() );
+    
+        if ( focused && focused->IsDropped() )
+            {
+            // The currently focused node is dropped, run losevisualization
+            CXnNode* loseVisualisation =
+                BuildTriggerNodeLC( *iUiEngine,
+                    XnPropertyNames::action::trigger::name::KLoseVisualisation );
+    
+            focused->ReportXuikonEventL( *loseVisualisation );
+            CleanupStack::PopAndDestroy( loseVisualisation );
+    
+            if ( FocusedNode() == focused )
+                {
+                // Remove focus as losevisualization trigger didn't
+                // change focus from dropped node to another one
+                SetFocusedNodeL( NULL );
+                }
+            }
+    
+        if ( !FocusedNode() && iAppUiAdapter.FocusShown() )
+            {
+            // No focus, try if some of the focus candidates can be focused
+            RootNode()->RunFocusChangeL( iFocusCandidateList );
+            }
+            
+        iFocusCandidateList.Reset();
+    
+        iAppUiAdapter.EffectManager()->UiLayouted();
+        }
     
     // Layout is now recalculated
     CleanupStack::PopAndDestroy(); // anonymous
     }
 
-// -----------------------------------------------------------------------------
-// CXnUiEngineImpl::LayoutFromNodeL()
-// -----------------------------------------------------------------------------
-//
-void CXnUiEngineImpl::LayoutFromNodeL( CXnNode& aNode )
-    {
-    PrepareRunLayoutL( aNode );
-
-    // Run layout until it is fully calculated
-    do
-        {
-        iLayoutPhase = RunLayoutFromNodeL( aNode );
-        }
-    while ( iLayoutPhase != XnLayoutPhase::ENone );
-    }
 
 // -----------------------------------------------------------------------------
 // PrepareRunLayoutL()
 // Set dropped flags of all nodes in the tree to ENone.
 // -----------------------------------------------------------------------------
 //
-void CXnUiEngineImpl::PrepareRunLayoutL()
+void CXnUiEngineImpl::PrepareRunLayoutL( TXnDirtyRegion& aDirtyRegion )
     {
     if ( iLayoutPhase == XnLayoutPhase::ENone )
         {
         iLayoutPhase = XnLayoutPhase::ELayout;
 
-        for ( TInt i = 0; i < iDirtyList.Count(); i++ )
-            {
-            CXnNode* dirty( iDirtyList[i] );
+        for ( TInt i = 0; i < aDirtyRegion.iDirtyList.Count(); i++ )
+            {
+            CXnNode* dirty( aDirtyRegion.iDirtyList[i] );
 
             // Clear dropped flags recursively
             SetNodeDroppedL( *dirty, XnNodeLayout::ENone );
@@ -8339,135 +8358,10 @@
     }
 
 // -----------------------------------------------------------------------------
-// PrepareRunLayoutL()
-// Set dropped flags of all nodes in the tree to ENone.
-// -----------------------------------------------------------------------------
-//
-void CXnUiEngineImpl::PrepareRunLayoutL( CXnNode& aNode )
-    {
-    if ( iLayoutPhase == XnLayoutPhase::ENone )
-        {
-        iLayoutPhase = XnLayoutPhase::ELayout;
-
-        CXnNode* dirty( &aNode );
-        dirty->ClearRenderedAndLaidOut();
-        
-        // Clear dropped flags recursively
-        SetNodeDroppedL( *dirty, XnNodeLayout::ENone );
-
-        if ( SetAdaptivesL( *dirty ) )
-            {
-            // Adaptive node causes measure phase
-            iLayoutPhase = XnLayoutPhase::EMeasure;
-            }
-        }
-    }
-
-// -----------------------------------------------------------------------------
 // CXnUiEngineImpl::RunLayoutL()
 // -----------------------------------------------------------------------------
 //
-TInt CXnUiEngineImpl::RunLayoutL( CXnNode* aNode )
-    {
-    TRect clientRect( ClientRect() );
-    // Move it to 0, 0
-    clientRect.Move( -clientRect.iTl.iX, -clientRect.iTl.iY );
-
-    RPointerArray< CXnNode > laidOutList;
-    CleanupClosePushL( laidOutList );
-
-    if ( IsNodeDisplayedL( *aNode ) )
-        {
-        if ( aNode->ViewNodeImpl() && !aNode ->IsLaidOut() )
-            {
-            aNode->SetMarginRect( clientRect );
-            aNode->SetBorderRect( clientRect );
-            aNode->SetNormalFlowBorderRect( clientRect );
-            aNode->SetPaddingRect( clientRect );
-            aNode->SetRect( clientRect );
-            }
-
-        // Put areas to place
-        PlaceAreasL( *aNode, laidOutList, iLayoutPhase,
-            *iCurrentGraphicsDevice, iHorizontalUnitInPixels,
-            iVerticalUnitInPixels );
-        }
-
-    TInt nextPhase;
-
-    switch ( iLayoutPhase )
-        {
-        case XnLayoutPhase::EMeasure:
-            nextPhase = XnLayoutPhase::ELayout;
-            break;
-        case XnLayoutPhase::ELayout:
-            // Layout is now calculated
-            iCurrentView->SetLaidOutL();
-            iLayoutControl &= ~XnLayoutControl::EViewDirty;
-            // Check nodes which dimensions are changed
-            for ( TInt i = 0; i < laidOutList.Count(); i++ )
-                {
-                CXnNode* node( laidOutList[i] );
-                if( IsSrollableBox( *node ) && node->ScrollableControl() )
-                    {
-                    node->ScrollableControl()->LayoutChangedL();
-                    }
-                if ( /*IsNodeTooltip( *node ) ||*/ !node->IsLaidOut() )
-                    {
-                    continue;
-                    }
-                CXnControlAdapter* adapter( node->Control() );
-                if ( adapter )
-                    {
-                    TRect rect;
-                    
-                    if ( node->ViewNodeImpl() )
-                        {
-                        rect = ClientRect();
-                        
-                        // Move it to 0, 0
-                        //rect.Move( -rect.iTl.iX, -rect.iTl.iY );                        
-                        }
-                    else
-                        {
-                        rect = node->BorderRect();
-                        }
-                    
-                    if ( adapter->Rect() != rect )
-                        {
-                        AddToRedrawListL( node, rect );
-                        
-                        adapter->SetRect( rect );                        
-
-                        CXnProperty* prop = node->GetPropertyL(
-                            XnPropertyNames::common::KSizeAware );
-                        if ( prop && prop->StringValue() ==
-                             XnPropertyNames::KTrue )
-                            {
-                            CXnNode* sizeChanged =
-                                BuildTriggerNodeLC( *iUiEngine,
-                                XnPropertyNames::action::trigger::name::
-                                KSizeChanged );
-                            node->ReportXuikonEventL( *sizeChanged );
-                            CleanupStack::PopAndDestroy( sizeChanged );
-                            }
-                        }
-                    }
-                }
-            /* flow through */
-        default:
-            nextPhase = XnLayoutPhase::ENone;
-            break;
-        }
-    CleanupStack::PopAndDestroy( &laidOutList );
-    return nextPhase;
-    }
-
-// -----------------------------------------------------------------------------
-// CXnUiEngineImpl::RunLayoutL()
-// -----------------------------------------------------------------------------
-//
-TInt CXnUiEngineImpl::RunLayoutFromNodeL( CXnNode& aNode )
+TInt CXnUiEngineImpl::RunLayoutL( TXnDirtyRegion& aDirtyRegion, CXnNode& aNode )
     {
     TRect clientRect( ClientRect() );
     // Move it to 0, 0
@@ -8502,8 +8396,8 @@
             break;
         case XnLayoutPhase::ELayout:
             // Layout is now calculated
-            aNode.SetLaidOutL();
-
+            aDirtyRegion.iRootNode->SetLaidOutL();
+            aDirtyRegion.iLayoutControl &= ~XnLayoutControl::EViewDirty;
             // Check nodes which dimensions are changed
             for ( TInt i = 0; i < laidOutList.Count(); i++ )
                 {
@@ -8512,7 +8406,7 @@
                     {
                     node->ScrollableControl()->LayoutChangedL();
                     }
-                if ( !node->IsLaidOut() )
+                if ( /*IsNodeTooltip( *node ) ||*/ !node->IsLaidOut() )
                     {
                     continue;
                     }
@@ -8524,14 +8418,33 @@
                     if ( node->ViewNodeImpl() )
                         {
                         rect = ClientRect();
+                        
+                        // Move it to 0, 0
+                        //rect.Move( -rect.iTl.iX, -rect.iTl.iY );                        
                         }
                     else
                         {
                         rect = node->BorderRect();
                         }
+                    
                     if ( adapter->Rect() != rect )
                         {
-                        adapter->SetRect( rect );
+                        AddToRedrawListL( aDirtyRegion, *node, rect );
+                        
+                        adapter->SetRect( rect );                        
+
+                        CXnProperty* prop = node->GetPropertyL(
+                            XnPropertyNames::common::KSizeAware );
+                        if ( prop && prop->StringValue() ==
+                             XnPropertyNames::KTrue )
+                            {
+                            CXnNode* sizeChanged =
+                                BuildTriggerNodeLC( *iUiEngine,
+                                XnPropertyNames::action::trigger::name::
+                                KSizeChanged );
+                            node->ReportXuikonEventL( *sizeChanged );
+                            CleanupStack::PopAndDestroy( sizeChanged );
+                            }
                         }
                     }
                 }
@@ -8548,49 +8461,91 @@
 // CXnUiEngineImpl::RenderUIL()
 // -----------------------------------------------------------------------------
 //
-void CXnUiEngineImpl::RenderUIL( CXnNode* /*aNode*/ )
-    {
-    if ( IsLayoutDisabled() )
+void CXnUiEngineImpl::RenderUIL( CXnNode* aNode )
+    {
+    if( aNode )
+        {
+        TXnDirtyRegion* dirtyRegion = FindDirtyRegionL( *aNode );
+        if( dirtyRegion )
+            {
+            RenderL( *dirtyRegion );
+            }
+        }
+    else
+        {
+        CXnViewData* viewData = iViewManager.ActiveAppData().ViewData( *iCurrentView );
+        if( viewData )
+            {
+            RPointerArray<TXnDirtyRegion> arr;
+            CleanupClosePushL( arr );
+            
+            viewData->GetDirtyRegions( arr );
+            for( TInt i = 0; i < arr.Count(); i++ )
+                {
+                RenderL( *arr[i] );            
+                }
+            CleanupStack::PopAndDestroy( &arr );
+            }
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CXnUiEngineImpl::RenderUIL()
+// -----------------------------------------------------------------------------
+//
+void CXnUiEngineImpl::RenderL( TXnDirtyRegion& aRegion )
+    {
+    if ( IsLayoutDisabled( aRegion ) )
         {
         // Layout is not up-to-date
-        iLayoutControl |= XnLayoutControl::ERenderUI;
+        aRegion.iLayoutControl |= XnLayoutControl::ERenderUI;
         return;
         }
-    
+
+    TBool belongsToCurrentView( EFalse );
+    if( iCurrentView == aRegion.iRootNode )
+        {
+        belongsToCurrentView = ETrue;
+        }
+        
 #ifdef _XN3_DEBUG_
-    TraceTreeL(iCurrentView );
+    TraceTreeL( aRegion.RootNode );
 #endif                          
 
     __PRINTS("*** CXnUiEngineImpl::RenderUIL ***");
     
-    for( TInt i=0; i<iRedrawRegions.Count(); i++)
-        {
-        CCoeControl* control = iRedrawRegions[i]->iControl;
-        RRegion& redrawRegion = iRedrawRegions[i]->iRegion;
+        
+    CCoeControl* control = aRegion.iControl;
+    RRegion& redrawRegion = aRegion.iRegion;
+    
+    if( redrawRegion.CheckError() )
+        {                
+        // Mark tree rendered
+        aRegion.iRootNode->SetRenderedL();
+        // Error occured during dirty set, redraw whole window
+        control->DrawNow();               
         
-        if( redrawRegion.CheckError() )
-            {                
+        __PRINTS("* CXnUiEngineImpl::RenderUIL - redraw region error -> full redraw ***");
+        }                                        
+    else 
+        {
+        if( !redrawRegion.IsEmpty() )                                        
+            {
             // Mark tree rendered
-            iCurrentView->SetRenderedL();
-            // Error occured during dirty set, redraw whole window
-            control->DrawNow();               
+            aRegion.iRootNode->SetRenderedL();
+                
+            TBool effectOngoing( EFalse );
+            if ( iAppUiAdapter.EffectManager()->ControlEffectActive( control ) &&
+                 belongsToCurrentView )
+                {
+                // control effect is ongoing, no need to draw control yet,
+                // if current view in question
+                redrawRegion.Clear();
+                effectOngoing = ETrue;
+                }
             
-            __PRINTS("* CXnUiEngineImpl::RenderUIL - redraw region error -> full redraw ***");
-            }                                        
-        else 
-            {
-            if( !redrawRegion.IsEmpty() )                                        
-                {
-                // Mark tree rendered
-                iCurrentView->SetRenderedL();
-                                
-                if ( iAppUiAdapter.EffectManager()->ControlEffectActive( control ) )
-                    {
-                    // control effect is ongoing, no need to draw control yet
-                    redrawRegion.Clear();
-                    continue;
-                    }
-                
+            if( !effectOngoing )
+                {
                 TInt count( redrawRegion.Count() );
                 
                 if( count > 2 )
@@ -8609,7 +8564,7 @@
                         {
                         // Draw every dirty area separately
                         TRect redrawRect( redrawRegion[i] );
-
+    
                         __PRINT( __DBG_FORMAT( "* CXnUiEngineImpl::RenderUIL - redrawing rect iTl.iX: %d, iTl.iY: %d, iBr.iX: %d, iBr.iY: %d" ),          
                                 redrawRect.iTl.iX, redrawRect.iTl.iY, redrawRect.iBr.iX, redrawRect.iBr.iY );                                         
                         
@@ -8617,38 +8572,28 @@
                         }
                     }  
                 }
-            else
-                {
-                __PRINTS("* CXnUiEngineImpl::RenderUIL - nothing to redraw ***");
-                }
-            }  
-        
-        redrawRegion.Clear();  
-        }
-
-    RefreshMenuL();
-
-    iLayoutControl &= ~XnLayoutControl::ERenderUI;
+            }
+        else
+            {
+            __PRINTS("* CXnUiEngineImpl::RenderUIL - nothing to redraw ***");
+            }
+        }  
     
-    iAppUiAdapter.EffectManager()->UiRendered();
+    redrawRegion.Clear();  
+
+    RefreshMenuL( &aRegion );
+
+    aRegion.iLayoutControl &= ~XnLayoutControl::ERenderUI;
+    
+    if( belongsToCurrentView )
+        {
+        iAppUiAdapter.EffectManager()->UiRendered();
+        }
     
     __PRINTS("*** CXnUiEngineImpl::RenderUIL - done ***");
     }
 
 // -----------------------------------------------------------------------------
-// CXnUiEngineImpl::RenderFromNodeL()
-// -----------------------------------------------------------------------------
-//
-void CXnUiEngineImpl::RenderFromNodeL( CXnNode& aNode )
-    {
-#ifdef _XN3_DEBUG_
-    TraceTreeL( &aNode );
-#endif 
-    CCoeControl* control = WindowOwningControl( aNode );
-    control->DrawNow();                                              
-    }
-
-// -----------------------------------------------------------------------------
 // CXnUiEngineImpl::RootNode()
 // -----------------------------------------------------------------------------
 //
@@ -8913,10 +8858,6 @@
 
     iControlAdapterList = &iViewManager.Controls();
     iCurrentViewControlAdapter = iCurrentView->Control();
-    
-    iDirtyList.Reset();
-
-    iRedrawRegions.ResetAndDestroy();
        
     // Remove previous menubar and stylus popup node
     iMenuNode = NULL;
@@ -8962,7 +8903,12 @@
            
     ForceRenderUIL();
            
-    iLayoutControl &= ~XnLayoutControl::ERefreshMenu;
+    TXnDirtyRegion* dirtyRegion = FindDirtyRegionL( *iCurrentView );
+    if( dirtyRegion )
+        {
+        dirtyRegion->iDirtyList.Reset();
+        dirtyRegion->iLayoutControl &= ~XnLayoutControl::ERefreshMenu;
+        }
     }
 
 // -----------------------------------------------------------------------------
@@ -9179,16 +9125,33 @@
 //
 void CXnUiEngineImpl::RefreshMenuL()
     {
-    if ( IsLayoutDisabled() )
-        {
-        return;
+    RefreshMenuL( NULL );
+    }
+
+// -----------------------------------------------------------------------------
+// CXnUiEngineImpl::RefreshMenuL
+// Refresh current menu
+// -----------------------------------------------------------------------------
+//
+void CXnUiEngineImpl::RefreshMenuL( TXnDirtyRegion* aDirtyRegion )
+    {
+    TXnDirtyRegion* dirtyRegion = aDirtyRegion;
+    if( !dirtyRegion )
+        {
+        dirtyRegion = FindDirtyRegionL( *iCurrentView );
         }
     
-    if ( iLayoutControl & XnLayoutControl::ERefreshMenu )         
+    if ( IsLayoutDisabled( *dirtyRegion ) )
+        {
+        return;
+        }
+
+    if ( dirtyRegion && 
+         dirtyRegion->iLayoutControl & XnLayoutControl::ERefreshMenu )         
         {
         if ( iKeyEventDispatcher )
             {
-            iLayoutControl &= ~XnLayoutControl::ERefreshMenu;
+            dirtyRegion->iLayoutControl &= ~XnLayoutControl::ERefreshMenu;
             iKeyEventDispatcher->RefreshMenuL();        
             }               
         }
@@ -9201,45 +9164,79 @@
 //
 void CXnUiEngineImpl::AddDirtyNodeL( CXnNode* aNode, TInt aLevel )
     {
-    CXnViewData& data( iViewManager.ActiveViewData() );
-    
-    if ( !aNode || ( aNode != RootNode() && !data.Plugin( aNode->Namespace() ) ) )
-        {
-        // No node, or node doesn't belong to active view namespace
-        return;
-        }
-
-    if ( aNode->Type()->Type() == KMenuBar )
-        {
-        iLayoutControl |= XnLayoutControl::ERefreshMenu;
+    if ( !aNode )
+        {
         return;
-        }
-
-    if ( iLayoutControl & XnLayoutControl::EViewDirty )
-        {
-        // nothing to do
-        return;
-        }
-
-    if ( aLevel == XnDirtyLevel::ERender )
-        {
-        if( aNode == RootNode() )        
-            {
-            TXnDirtyRegion* dirtyRegion = FindDirtyRegionL( *iCurrentView );
-            if( dirtyRegion )
-                {
-                dirtyRegion->iRegion.Clear();                
-                }
-            aNode = iCurrentView;        
-            }
-
-        // Add to redraw list
-        AddToRedrawListL( aNode );
+        }    
+    
+    if ( aNode == RootNode() )
+        {
+        // Force relayout and redraw from current view
+        iViewManager.ActiveAppData().PluginData();
+        if ( !iCurrentView )
+            {
+            iCurrentView = iViewManager.ViewNode();
+            }
+
+        TXnDirtyRegion* dirtyRegion = FindDirtyRegionL( *iCurrentView );
+        if( dirtyRegion )
+            {
+            dirtyRegion->iRegion.Clear();        
+            }
+        else
+            {
+            return;        
+            }
+        
+        dirtyRegion->iDirtyList.Reset();
+        dirtyRegion->iDirtyList.AppendL( iCurrentView );
+
+        dirtyRegion->iLayoutControl |= XnLayoutControl::EViewDirty;
+        iCurrentView->ClearRenderedAndLaidOut();
+
+        // Add to draw list for redraw
+        AddToRedrawListL( *dirtyRegion, *iCurrentView );
         }
     else
         {
-        // Add to dirty list for relayout and redraw
-        AddToDirtyListL( aNode );
+        TXnDirtyRegion* dirtyRegion( FindDirtyRegionL( *aNode ) );
+        if( !dirtyRegion )
+            {
+            return;
+            }
+        
+        if ( aNode->Type()->Type() == KMenuBar )
+            {
+            dirtyRegion->iLayoutControl |= XnLayoutControl::ERefreshMenu;
+            return;
+            }
+    
+        if ( dirtyRegion->iLayoutControl & XnLayoutControl::EViewDirty )
+            {
+            // nothing to do
+            return;
+            }
+    
+        if ( aLevel == XnDirtyLevel::ERender )
+            {
+            if( aNode == RootNode() )        
+                {
+                TXnDirtyRegion* dirtyRegion = FindDirtyRegionL( *iCurrentView );
+                if( dirtyRegion )
+                    {
+                    dirtyRegion->iRegion.Clear();                
+                    }
+                aNode = iCurrentView;        
+                }
+    
+            // Add to redraw list
+            AddToRedrawListL( *dirtyRegion, *aNode );
+            }
+        else
+            {
+            // Add to dirty list for relayout and redraw
+            AddToDirtyListL( *dirtyRegion, *aNode );
+            }    
         }
     }
 
@@ -9597,16 +9594,16 @@
 // CXnUiEngineImpl::IsLayoutDisabled
 // -----------------------------------------------------------------------------
 //
-TBool CXnUiEngineImpl::IsLayoutDisabled()
+TBool CXnUiEngineImpl::IsLayoutDisabled( TXnDirtyRegion& aDirtyRegion )
     {
     if ( !iCurrentView )
         {
         return ETrue;
         }
-    
+
     TBool retval( EFalse );
     
-    if ( !( iLayoutControl & XnLayoutControl::EIgnoreState ) )
+    if ( !( aDirtyRegion.iLayoutControl & XnLayoutControl::EIgnoreState ) )
         {
         if ( iDisableCount > 0 )
             {
@@ -9622,9 +9619,10 @@
 // Mark Control's appearance to be redrawn
 // -----------------------------------------------------------------------------    
 //
-void CXnUiEngineImpl::AddToRedrawListL( CXnNode* aNode, TRect aRect )
+void CXnUiEngineImpl::AddToRedrawListL( TXnDirtyRegion& aRegion, 
+    CXnNode& aNode, TRect aRect )
     {   
-    CXnControlAdapter* aAdapter( aNode->Control() );
+    CXnControlAdapter* aAdapter( aNode.Control() );
            
     if( !aAdapter ) 
         {
@@ -9634,7 +9632,8 @@
     if( aRect != TRect::EUninitialized )
         {
         // This is the new rect which will be set by layout algo
-        AddRedrawRectL( aRect, *aNode );
+        aRegion.iRegion.AddRect( aRect );
+        aRegion.iRegion.Tidy();
         }
     
     TRect rect( aAdapter->Rect() );
@@ -9644,39 +9643,11 @@
         // Don't add uninitialized rect
         return;
         }
-
-    /*
-    if( aNode->IsStateSet( XnPropertyNames::style::common::KFocus ) )
-        {
-        const TDesC8& name( aNode->DomNode()->Name() );
-
-        if( name == KPlugin )
-            {
-            rect.Grow( KFocusGrowValue, KFocusGrowValue );
-            }
-        else
-            {
-            TRect marginRect( aNode->MarginRect() );
-            
-            CXnNode* parent( aNode->Parent() );
-            
-            for( ; parent; parent = parent->Parent() )
-                {
-                if( parent->DomNode()->Name() == KPlugin )
-                    {
-                    if( parent->Rect() == marginRect )
-                        {
-                        rect.Grow( KFocusGrowValue, KFocusGrowValue );
-                        }
-                    
-                    break;
-                    } 
-                }                
-            }
-        }
-        */
-    GrowIfNeeded(aNode, rect);    
-    AddRedrawRectL( rect, *aNode );                          
+    
+    GrowIfNeeded( &aNode, rect );   
+
+    aRegion.iRegion.AddRect( rect );        
+    aRegion.iRegion.Tidy();
     }
 
 // -----------------------------------------------------------------------------
@@ -9684,122 +9655,94 @@
 // Mark node to dirty list for relayout
 // -----------------------------------------------------------------------------
 //
-void CXnUiEngineImpl::AddToDirtyListL( CXnNode* aNode )
-    {
-    
-    if ( aNode )
-        {
-        CXnNode* nodeToRedrawList( aNode );
-        CXnNode* nodeToDirtyList( aNode );
-    
-        if ( aNode == RootNode() )
-            {
-            // Force relayout and redraw from current view
-            iDirtyList.Reset();
-            if ( !iCurrentView )
-                {
-                iCurrentView = iViewManager.ViewNode();
-                }
-            iDirtyList.AppendL( iCurrentView );
-            TXnDirtyRegion* dirtyRegion = FindDirtyRegionL( *iCurrentView );
-            if( dirtyRegion )
-                {
-                dirtyRegion->iRegion.Clear();        
-                }
-            iLayoutControl |= XnLayoutControl::EViewDirty;
-            nodeToDirtyList = nodeToRedrawList = iCurrentView;
-            nodeToDirtyList->ClearRenderedAndLaidOut();
-    
-            // Add to draw list for redraw
-            AddToRedrawListL( nodeToRedrawList );
-            }
-        else
-            {
-            if ( !IsAbsoluteL( *aNode ) && !IsNodeTooltip( *aNode ) )
-                {
-                // Check adaptives in normal flow
-                CXnNode* oldest( NULL );
-                CXnNode* adaptive( aNode );
-    
-                if ( !aNode->IsAdaptive( ETrue ) )
-                    {
-                    adaptive = aNode->Parent();
-                    }
-    
-                for ( ; adaptive && adaptive->IsAdaptive( ETrue );
-                    adaptive = adaptive->Parent() )
-                    {
-                    oldest = adaptive;
-                    }
-    
-                // Now we have found the oldest adaptive node if present
-                if ( oldest )
-                    {
-                    nodeToRedrawList = nodeToDirtyList = adaptive;
-                    }
-                }
-    
-            RPointerArray< CXnNode > dirtyList;
-            CleanupClosePushL( dirtyList );
-            TInt count( iDirtyList.Count() );
-            TBool found;
-    
-            // first, check that aNode's children are not in the dirty array
-            for ( TInt i = 0; i < count; ++i )
-                {
-                found = EFalse;
-                CXnNode* candidate( iDirtyList[i] );
-    
-                for ( CXnNode* node = candidate->Parent(); node && !found;
-                    node = node->Parent() )
-                    {
-                    if ( nodeToDirtyList == node )
-                        {
-                        found = ETrue;
-                        }
-                    }
-    
-                if ( !found )
-                    {
-                    // Put candidate back to list as child is not found
-                    dirtyList.AppendL( candidate );
-                    }
-                }
-    
-            found = EFalse;
-    
-            // second, check that aNode's parent is not in dirty array
-            for ( TInt i = 0; i < count && !found; ++i )
-                {
-                CXnNode* candidate( iDirtyList[i] );
-    
-                for ( CXnNode* node = nodeToDirtyList; node && !found;
-                    node = node->Parent() )
-                    {
-                    if ( node == candidate )
-                        {
-                        found = ETrue;
-                        }
-                    }
-                }
-    
-            if ( !found && iDirtyList.Find( nodeToDirtyList ) == KErrNotFound )
-                {
-                // Add node to dirty list as parent is neither found
-                dirtyList.AppendL( nodeToDirtyList );
-                nodeToDirtyList->ClearRenderedAndLaidOut();
-                
-                // Add to draw list for redraw
-                AddToRedrawListL( nodeToRedrawList );
-                }
-    
-            // finally update the dirty list
-            iDirtyList.Reset();
-            iDirtyList = dirtyList;
-    
-            CleanupStack::Pop( &dirtyList );
-            }
-        }
+void CXnUiEngineImpl::AddToDirtyListL( TXnDirtyRegion& aRegion, CXnNode& aNode )
+    {
+    CXnNode* nodeToRedrawList( &aNode );
+    CXnNode* nodeToDirtyList( &aNode );
+
+    if ( !IsAbsoluteL( aNode ) && !IsNodeTooltip( aNode ) )
+        {
+        // Check adaptives in normal flow
+        CXnNode* oldest( NULL );
+        CXnNode* adaptive( &aNode );
+
+        if ( !aNode.IsAdaptive( ETrue ) )
+            {
+            adaptive = aNode.Parent();
+            }
+
+        for ( ; adaptive && adaptive->IsAdaptive( ETrue );
+            adaptive = adaptive->Parent() )
+            {
+            oldest = adaptive;
+            }
+
+        // Now we have found the oldest adaptive node if present
+        if ( oldest )
+            {
+            nodeToRedrawList = nodeToDirtyList = adaptive;
+            }
+        }
+
+    RPointerArray< CXnNode > dirtyList;
+    CleanupClosePushL( dirtyList );
+    TInt count( aRegion.iDirtyList.Count() );
+    TBool found;
+
+    // first, check that aNode's children are not in the dirty array
+    for ( TInt i = 0; i < count; ++i )
+        {
+        found = EFalse;
+        CXnNode* candidate( aRegion.iDirtyList[i] );
+
+        for ( CXnNode* node = candidate->Parent(); node && !found;
+            node = node->Parent() )
+            {
+            if ( nodeToDirtyList == node )
+                {
+                found = ETrue;
+                }
+            }
+
+        if ( !found )
+            {
+            // Put candidate back to list as child is not found
+            dirtyList.AppendL( candidate );
+            }
+        }
+
+    found = EFalse;
+
+    // second, check that aNode's parent is not in dirty array
+    for ( TInt i = 0; i < count && !found; ++i )
+        {
+        CXnNode* candidate( aRegion.iDirtyList[i] );
+
+        for ( CXnNode* node = nodeToDirtyList; node && !found;
+            node = node->Parent() )
+            {
+            if ( node == candidate )
+                {
+                found = ETrue;
+                }
+            }
+        }
+
+    if ( !found && aRegion.iDirtyList.Find( nodeToDirtyList ) == KErrNotFound )
+        {
+        // Add node to dirty list as parent is neither found
+        dirtyList.AppendL( nodeToDirtyList );
+        nodeToDirtyList->ClearRenderedAndLaidOut();
+        
+        // Add to draw list for redraw
+        AddToRedrawListL( aRegion, *nodeToRedrawList );
+        }
+
+    // finally update the dirty list
+    aRegion.iDirtyList.Reset();
+    aRegion.iDirtyList = dirtyList;
+
+    CleanupStack::Pop( &dirtyList );
     }
 
 // -----------------------------------------------------------------------------
@@ -9862,23 +9805,29 @@
 // CXnUiEngineImpl::StartLayoutFromL
 // -----------------------------------------------------------------------------
 //
-CXnNode* CXnUiEngineImpl::StartLayoutFromL()
-    {
-    if ( iLayoutControl & XnLayoutControl::EViewDirty )
-        {
-        return iCurrentView;
+CXnNode* CXnUiEngineImpl::StartLayoutFromL( TXnDirtyRegion& aDirtyRegion )
+    {
+    CXnNode* viewNode( aDirtyRegion.iRootNode );
+    if( !viewNode )
+        {
+        return NULL;    
+        }
+    
+    if ( aDirtyRegion.iLayoutControl & XnLayoutControl::EViewDirty )
+        {
+        return viewNode;
         }
 
     RPointerArray< CXnNode >parentArray;
     CleanupClosePushL( parentArray );
-    TInt dirtyCount = iDirtyList.Count();
+    TInt dirtyCount = aDirtyRegion.iDirtyList.Count();
     CXnNode* startNode( NULL );
 
     for ( TInt dirtyIndex = 0; dirtyIndex < dirtyCount; dirtyIndex++ )
         {
-        startNode = iDirtyList[dirtyIndex];
-
-        for ( ;startNode && startNode != iCurrentView; )
+        startNode = aDirtyRegion.iDirtyList[dirtyIndex];
+
+        for ( ;startNode && startNode != viewNode; )
             {
             parentArray.Append( startNode->Parent() );
             startNode = startNode->Parent();
@@ -9909,7 +9858,7 @@
 
     CleanupStack::PopAndDestroy( &parentArray );
 
-    return iCurrentView;
+    return viewNode;
     }
 
 // -----------------------------------------------------------------------------
@@ -9927,7 +9876,14 @@
 //
 void CXnUiEngineImpl::ForceRenderUIL( TBool aLayoutOnly )
     {
-    iLayoutControl |= XnLayoutControl::EIgnoreState;
+    TXnDirtyRegion* dirtyRegion = FindDirtyRegionL( *iCurrentView );
+    if( !dirtyRegion )
+        {
+        return;
+        }
+    
+    dirtyRegion->iLayoutControl |= XnLayoutControl::EIgnoreState;
+    
     if ( aLayoutOnly )
         {
         LayoutUIL();
@@ -9937,7 +9893,8 @@
         LayoutUIL();
         RenderUIL();
         }
-    iLayoutControl &= ~XnLayoutControl::EIgnoreState;
+    
+    dirtyRegion->iLayoutControl &= ~XnLayoutControl::EIgnoreState;
     }
 
 // -----------------------------------------------------------------------------
@@ -10085,31 +10042,52 @@
         
         if ( self->iDisableCount == 0 )
             {
-            TRAP_IGNORE(                    
+            TRAP_IGNORE( self->EnableRenderUiL() );            
+            }
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
+//               
+void CXnUiEngineImpl::EnableRenderUiL()
+    {
+    CXnViewData* viewData = iViewManager.ActiveAppData().ViewData( *iCurrentView );
+    if( viewData )
+        {
+        RPointerArray<TXnDirtyRegion> arr;
+        CleanupClosePushL( arr );
+        
+        viewData->GetDirtyRegions( arr );
+
+        for( TInt i = 0; i < arr.Count(); i++ )
+            {
+            TXnDirtyRegion* dirtyRegion = arr[i];
+
             // Is menu refresh pending?
-            if ( ( self->iLayoutControl & XnLayoutControl::ERefreshMenu ) &&
-                   !self->IsMenuDisplaying() )
+            if ( ( dirtyRegion->iLayoutControl & XnLayoutControl::ERefreshMenu ) &&
+                   IsMenuDisplaying() )
                 {
                 // RefreshMenuL will reset the state flag
-                self->RefreshMenuL();
-                }
-
+                RefreshMenuL( dirtyRegion );
+                }
+            
             // Is layout pending?
-            if ( self->iLayoutControl & XnLayoutControl::ELayoutUI )
-                {
-                self->LayoutUIL();
-                }
-
+            if ( dirtyRegion->iLayoutControl & XnLayoutControl::ELayoutUI )
+                {
+                LayoutL( *dirtyRegion );
+                }
+        
             // Is render pending?
-            if ( self->iLayoutControl & XnLayoutControl::ERenderUI )
-                {
-                self->RenderUIL();
-                }
-                );
-            }
-        }
-    }
-
+            if ( dirtyRegion->iLayoutControl & XnLayoutControl::ERenderUI )
+                {
+                RenderL( *dirtyRegion );
+                }
+            }
+        CleanupStack::PopAndDestroy( &arr);
+        }
+    }
+                
 // -----------------------------------------------------------------------------
 // -----------------------------------------------------------------------------
 //
@@ -10122,6 +10100,15 @@
     for( TInt i = 0; i < plugins.Count(); i++ )
         {        
         ReportScreenDeviceChangedL( *plugins[i] );
+        CXnDomNode* domNode( plugins[i]->Node() );
+        if( domNode )
+            {
+            CXnNode* node( domNode->LayoutNode() );
+            if( node )
+                {
+                node->SetDirtyL();
+                }
+            }
         }
     }
 
@@ -10235,7 +10222,7 @@
 
 // -----------------------------------------------------------------------------
 // -----------------------------------------------------------------------------
-CCoeControl* CXnUiEngineImpl::WindowOwningControl( CXnNode& aNode )
+CXnNode* CXnUiEngineImpl::WindowOwningNode( CXnNode& aNode )
     {
     CXnNode* parent = &aNode;
     while( parent )
@@ -10246,13 +10233,13 @@
             if( parent->ViewNodeImpl() && 
                 adapter == iCurrentViewControlAdapter )
                 {
-                return adapter;
+                return parent;
                 }
             else if( adapter->OwnsWindow() )
                 {
                 if( !IsNodeTooltip( *parent ) )
                     {
-                    return adapter;
+                    return parent;
                     }
                 else
                     {
@@ -10269,39 +10256,29 @@
 // -----------------------------------------------------------------------------
 TXnDirtyRegion* CXnUiEngineImpl::FindDirtyRegionL( CXnNode& aNode )
     {
-    CCoeControl* control = WindowOwningControl( aNode );
+    CXnNode* node( WindowOwningNode( aNode ) );
+    if( !node )
+        {
+        return NULL;
+        }
+    
+    CCoeControl* control( node->Control() );  
     if( !control )
         {
         return NULL;
         }
-    for( TInt i=0; i<iRedrawRegions.Count(); i++ )
-        {
-        if( iRedrawRegions[i]->iControl == control )
-            {
-            return iRedrawRegions[i];
-            }
-        }
-    TXnDirtyRegion* region = new (ELeave) TXnDirtyRegion;
-    CleanupStack::PushL( region );
-    region->iControl = control;
-    iRedrawRegions.AppendL( region );
-    CleanupStack::Pop();
+
+    TXnDirtyRegion* region( NULL );
+    CXnViewData* viewData = iViewManager.ActiveAppData().ViewData( *node );
+    if( viewData )
+        {
+        region = viewData->DirtyRegionL( *node );
+        }
+    
     return region;
     }
 
 // -----------------------------------------------------------------------------
-// -----------------------------------------------------------------------------
-void CXnUiEngineImpl::AddRedrawRectL( TRect aRect, CXnNode& aNode )
-    {
-    TXnDirtyRegion* dirtyReg = FindDirtyRegionL( aNode );
-    if( dirtyReg )
-        {
-        dirtyReg->iRegion.AddRect( aRect );        
-        dirtyReg->iRegion.Tidy();
-        }
-    }
-
-// -----------------------------------------------------------------------------
 // SetEventDispatcher
 // -----------------------------------------------------------------------------
 void CXnUiEngineImpl::SetEventDispatcher( CXnKeyEventDispatcher* aDispatcher )
--- a/idlehomescreen/xmluirendering/uiengine/src/xnutils.cpp	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnutils.cpp	Wed Sep 15 12:00:00 2010 +0300
@@ -1667,7 +1667,7 @@
 // Resolves skin id (major+minor) from SKIN() declaration.
 // -----------------------------------------------------------------------------
 //
-TBool CXnUtils::ResolveSkinItemIDL( const TDesC& aSkinId, TAknsItemID& aItemID )
+EXPORT_C TBool CXnUtils::ResolveSkinItemIDL( const TDesC& aSkinId, TAknsItemID& aItemID )
     {
     HBufC* str = aSkinId.AllocL();
     TPtr ptrSkin = str->Des();
--- a/idlehomescreen/xmluirendering/uiengine/src/xnviewadapter.cpp	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnviewadapter.cpp	Wed Sep 15 12:00:00 2010 +0300
@@ -48,6 +48,8 @@
 #include "xneditmode.h"
 #include "xnrootdata.h"
 
+#include "xnpopupcontroladapter.h"
+
 #include "debug.h"
 
 // Constants
@@ -584,7 +586,7 @@
         started = mgr->BeginActivateViewEffect( active, aContainer, aEffect );
         }    
     
-    DeactivateContainerL( EFalse );
+    DeactivateContainerL();
         
     // Update  
     iContainer = &aContainer;
@@ -751,18 +753,7 @@
     ChangeControlsStateL( EFalse );
 
     CXnNode* node( iContainer->Node()->LayoutNode() );
-    
-    CXnDomStringPool* sp( node->DomNode()->StringPool() );
-    
-    CXnProperty* prop = CXnProperty::NewL(
-        XnPropertyNames::style::common::KDisplay, 
-        XnPropertyNames::style::common::display::KNone,
-        CXnDomPropertyValue::EString, *sp );
-    CleanupStack::PushL( prop );    
-    
-    node->SetPropertyWithoutNotificationL( prop );
-    CleanupStack::Pop( prop );
-    
+
     if ( !iDeactivate )
         {
         iDeactivate = BuildDeactivateTriggerL( iAppUiAdapter.UiEngine() );
@@ -1018,7 +1009,7 @@
     CleanupClosePushL( popups );
     
     iContainer->PopupNodesL( popups );
-    
+
     for ( TInt i = 0; i < popups.Count(); i++ )
         {
         CXnProperty* display = CXnProperty::NewL(
@@ -1035,7 +1026,24 @@
     CleanupStack::PopAndDestroy( &popups );
     
     iEventDispatcher->SetTextEditorActive( NULL, EFalse );
+    
+    CXnNode* popup( iAppUiAdapter.UiEngine().StylusPopupNode() );
+    if ( popup )
+        {
+        CXnPopupControlAdapter* control =
+            static_cast< CXnPopupControlAdapter* >(
+                    popup->Control() );
+       
+        if ( control )
+            {
+            control->HideMenuL();
+            }
+        }
     }
 
+TBool CXnViewAdapter::IsForegroundAdapter() const
+    {
+    return ( iContainer != NULL );
+    }
 
 // End of file
--- a/idlehomescreen/xmluirendering/uiengine/src/xnviewcontroladapter.cpp	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnviewcontroladapter.cpp	Wed Sep 15 12:00:00 2010 +0300
@@ -194,6 +194,11 @@
         iAppUi.ViewSwitcher() == NULL || // no swipe if VS not available
         !iAppUi.ViewSwitcher()->ProcessPointerEventL( aPointerEvent ) ) ) // no swipe if event not handled by VS
         {
+        if ( IsWidgetGestureDest() && iAppUi.ViewSwitcher() != NULL )
+            {
+            iAppUi.ViewSwitcher()->StopViewSwitchL();
+            }
+        
         iAppUi.UiEngine().DisableRenderUiLC();
             
         CXnControlAdapter::HandlePointerEventL( aPointerEvent );
--- a/idlehomescreen/xmluirendering/uiengine/src/xnviewdata.cpp	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnviewdata.cpp	Wed Sep 15 12:00:00 2010 +0300
@@ -624,4 +624,60 @@
     __PRINTS( "*** CXnViewData::DestroyPublishers - done" );
     }
 
+// -----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
+//
+TXnDirtyRegion* CXnViewData::DirtyRegionL( CXnNode& aNode )
+    {
+    // First make sure that the given node is "window owning"
+    CCoeControl* control( aNode.Control() );  
+    if( !control || !control->OwnsWindow() )
+        {
+        return NULL;
+        }
+
+    if( iDirtyRegion && iDirtyRegion->iControl == control )
+        {
+        return iDirtyRegion;
+        }
+
+    // in case of widget extension / popup, a widget may own window
+    for( TInt i = 0; i < iPluginsData.Count(); i++ )
+        {
+        TXnDirtyRegion* region( iPluginsData[i]->DirtyRegion() );
+        if( region && region->iControl == control )
+            {
+            return region;
+            }
+        }
+
+    // Region not found, create  a new one
+    CXnPluginData* pluginData( Plugin( &aNode ) );
+    if( pluginData )
+        {
+        return pluginData->CreateDirtyRegionL( aNode, *control );
+        }    
+
+    return NULL;
+    }
+
+// -----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
+//
+void CXnViewData::GetDirtyRegions( RPointerArray<TXnDirtyRegion>& aList )
+    {
+    if( iDirtyRegion )
+        {
+        aList.Append( iDirtyRegion );
+        }
+    for( TInt i = 0; i < iPluginsData.Count(); i++ )
+        {
+        TXnDirtyRegion* region( iPluginsData[i]->DirtyRegion() );
+        if( region )
+            {
+            aList.Append( region );
+            }
+        }
+    }
+
 // End of file
--- a/idlehomescreen/xmluirendering/uiengine/src/xnviewswitcher.cpp	Tue Sep 14 20:58:58 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnviewswitcher.cpp	Wed Sep 15 12:00:00 2010 +0300
@@ -544,7 +544,7 @@
     
     iAppUi.ViewAdapter().EnterEditStateL( *aView.iViewData, EFalse );
         
-    viewNode->UiEngine()->RenderFromNodeL( *viewNode );
+    viewNode->UiEngine()->RenderUIL( viewNode );
     aView.iReadyToDraw = ETrue;
     }
 
@@ -982,5 +982,13 @@
     GfxTransEffect::SetDemarcation( &bg, bg.Position() );
     GfxTransEffect::End( &bg ); 
     }
-            
+
+// -----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
+//
+void CXnViewSwitcher::StopViewSwitchL()
+    {
+    ViewSwitchEndedL();
+    }
+
 // End of file
--- a/menufw/hierarchynavigator/hnengine/inc/hnengine.h	Tue Sep 14 20:58:58 2010 +0300
+++ b/menufw/hierarchynavigator/hnengine/inc/hnengine.h	Wed Sep 15 12:00:00 2010 +0300
@@ -11,7 +11,7 @@
 *
 * Contributors:
 *
-* Description:   
+* Description:
 *
 */
 
@@ -36,10 +36,10 @@
 /**
  * @ingroup group_hnengine
  *  Hierarchy Navigator engine - used by Multimedia Menu
- *  to fetch data models. The most commonly used exported method is TriggerHnEventL, 
+ *  to fetch data models. The most commonly used exported method is TriggerHnEventL,
  *  which offers event execution for the framework. This functionality is implemented
- *  through the MHnEventGenerator interface. The class owns the meta data model ( CHnMdModel ) 
- *  and suite container ( CHnSuiteModelContainer ) to manage them. The engine manages 
+ *  through the MHnEventGenerator interface. The class owns the meta data model ( CHnMdModel )
+ *  and suite container ( CHnSuiteModelContainer ) to manage them. The engine manages
  *  the model by processing model events ( HandleModelEventL ) or reseting the models
  *  ( ResetModelsL ).
  *
@@ -66,18 +66,18 @@
      * @since S60 v5.0
      * @param aController Controller handler.
      * @return Fully constructed object.
-     */    
+     */
     IMPORT_C static CHnEngine* NewLC( MHnControllerInterface& aController );
 
     /**
      * Standard C++ destructor.
-     * 
+     *
      * @since S60 v5.0
-     */    
+     */
     ~CHnEngine();
 
     // from CHnInterface
-    
+
     /**
      * Fetches and constructs data structres, needed by Multimedia
      * Menu to display suites.
@@ -86,7 +86,7 @@
      * @return Filled suite model object from the stack.
      */
     CHnSuiteModel* GetLastSuiteModelL();
-    
+
     /**
      * Fetches and constructs data structres, needed by Multimedia
      * Menu to display suites.
@@ -95,23 +95,23 @@
      * @return Filled suite model object from the stack.
      */
     CHnSuiteModel* GetParentSuiteModelL();
-   
+
     /**
      * Get count of suite models on the stack.
-     * 
+     *
      * @since S60 v5.0
      * @return Count of suite models on the stack.
      */
     virtual TInt GetSuiteModelsCountL();
-    
+
     /**
      * Checks if suite model is loaded.
-     * 
+     *
      * @since S60 v5.0
      * @return ETrue if suite model is loaded, otherwise EFalse.
      */
     TBool SuiteModelLoadedL( TInt aId );
-    
+
     /**
      * Loads suite hierarchy specified in URI.
      *
@@ -122,7 +122,7 @@
 
 public:
     // from MHnMdModelEventObserver
-    
+
      /**
      * Handle model event.
      *
@@ -131,9 +131,9 @@
      * @param aParams Event specific parameters used to perform action.
      */
      TInt HandleModelEventL( const TDesC& aEventName, CLiwGenericParamList& aParams );
-     
+
     // from CHnInterface
-     
+
     /**
      * Handle back event.
      *
@@ -147,24 +147,24 @@
 
     /**
      * Loads default root suite
-     * 
+     *
      * @since S60 v5.0
      * @param aSuiteParams Suite parameters.
      * @return Status error code.
      */
     IMPORT_C TInt InitializeL( CLiwGenericParamList& aSuiteParams );
-    
+
     // from MHnEventGenerator
-    
+
     /**
      * Triggers an event inside hierarchy navigator.
-     * 
+     *
      * Used by UI to notify hierarchy navigator of its events,
      * as well as for hierarchy navigator components to notify
      * the module of certain events (such as OnSuiteLoaded etc).
      *
      * @since S60 v5.0
-     * @param aHnEventId Internal id of an event (Event names are 
+     * @param aHnEventId Internal id of an event (Event names are
      *                    mapped to ids).
      * @param aRecipientId The id of the recipient item.
      * @param aEventParameters Event specific parameter.
@@ -172,41 +172,41 @@
      */
      IMPORT_C TInt TriggerHnEventL( const TInt aHnEventId,
              const TInt aRecipientId, CLiwGenericParamList* aEventParameters = NULL );
-     
+
      /**
       * Splits the source descriptor by a separatos
-      * 
+      *
       * @since S60 v5.0
       * @param aSource Source descriptor intended to split.
       * @param aSeparator Separator used to split.
-      * @return Array of descriptors. 
+      * @return Array of descriptors.
       */
      RPointerArray< HBufC8 > SplitL( const TDesC8& aSource,
              const TDesC8& aSeparator );
-     
+
      /**
       * Generate param list according to query param.
-      * 
+      *
       * @param aUriQuery Descriptor consist of param(s) to split
       * @param aUriFragment Descriptor containing an uri fragment.
-      * @param aSuiteName The suite's name.  
+      * @param aSuiteName The suite's name.
       * @return Filled generic param list.
       */
      CLiwGenericParamList* UriQueryToLiwListLC( const TDesC8& aUriQuery,
              const TDesC8& aUriFragment, const TDesC8& aSuiteName );
-     
+
      /**
       * Resets MD Model and Suite Container.
       *
       * @since S60 v5.0
       */
      IMPORT_C void ResetModelsL();
-     
-     // from MHnEditModeInterface 
-     
+
+     // from MHnEditModeInterface
+
      /**
       * Sets edit mode.
-      * 
+      *
       * @since S60 v5.0
       * @param aEditMode Set edit mode member to false/true.
       */
@@ -214,12 +214,12 @@
 
     /**
      * Enables to issue a request to Hn engine.
-     * 
+     *
      * @since S60 v5.0
      * @param aParam Input Parameters.
-     * @param aOutput Target list for output.  
+     * @param aOutput Target list for output.
      */
-     IMPORT_C void HandleRequestL( const CLiwGenericParamList& aParam, 
+     IMPORT_C void HandleRequestL( const CLiwGenericParamList& aParam,
                          CLiwGenericParamList* aOutput = NULL);
 
     //    from MHWRMLightObserver
@@ -238,19 +238,19 @@
 private:
     /**
      * Default constructor.
-     * 
+     *
      * @since S60 v5.0
      * @param aController Controller handler.
      */
     CHnEngine( MHnControllerInterface& aController );
-    
+
     /**
      * Standard 2nd phase constructor.
-     * 
+     *
      * @since S60 v5.0
      */
     void ConstructL();
-         
+
     /**
      * Handle new suite loaded event.
      *
@@ -286,7 +286,7 @@
      * @return Status code.
      */
     TInt HandleSetFocusEventL( const CLiwGenericParamList& aParams );
-    
+
     /**
      * Handles MoveFocusBeforeDelete event.
      *
@@ -296,7 +296,7 @@
      */
     TInt HandleMoveFocusBeforeDeleteEventL(
             const CLiwGenericParamList& aParams );
-    
+
     /**
      * Handles RefreshIcons event.
      *
@@ -308,7 +308,7 @@
 
     /**
      * Handles DisableActionsForItem event.
-     * 
+     *
      * @since S60 v5.0
      * @param aParams Event specific parameters - contains custom item id
      * @return Status code.
@@ -319,14 +319,14 @@
       *  Store widget type to repository.
       *
       * @since S60 v5.0
-      * @param aSuiteName Suite name to that set widget type. 
+      * @param aSuiteName Suite name to that set widget type.
       * @param aType Widget type to store in repository.
       * @return Status code.
-      */    
+      */
     TInt HandleWidgetChangeL( const TDesC& aSuiteName,
             THnSuiteWidgetType aType );
-     
-         
+
+
      /**
       * Parse URI path component containing Suites to be loaded.
       *
@@ -334,10 +334,10 @@
       * @param aUriPath Descriptor URI path which consist of suites' names.
       * @param aOutput Array on output containes parsed suite names.
       */
-     void ParseSuiteUriPathL( const TDesC8& aUriPath, 
+     void ParseSuiteUriPathL( const TDesC8& aUriPath,
          CDesC8ArrayFlat& aOutput );
-   
-     
+
+
      /**
       * Checks if only root configuration is loaded.
       * Used to decide if reloading models is needed.
@@ -347,29 +347,29 @@
       *         otherwise EFalse.
       */
      TBool IsOnlyRootConfLoaded();
-     
+
      /**
       * Resets loaded resources.
       *
       * @since S60 5.0
       */
      void ResetLocalization();
-     
+
      /**
       * Loads suite with given suite name with parameters
-      * from uri query. 
+      * from uri query.
       *
       * @since S60 5.0
-      * @param aSuiteName Name of the suite to load. 
+      * @param aSuiteName Name of the suite to load.
       * @param aUriQuery Descriptor containig parsed part of the uri.
       * @param aUriFragment Descriptor containig parsed part (fragment) of the uri.
       * @return Error code when loading suite.
       */
-     TInt LoadSuiteFromUriL( const TDesC8& aSuiteName, 
+     TInt LoadSuiteFromUriL( const TDesC8& aSuiteName,
          const TDesC8& aUriQuery, const TDesC8& aUriFragment );
-     
+
      /**
-      * Reads highlight position from uri fragment 
+      * Reads highlight position from uri fragment
       * and sets it on the suite model.
       *
       * @since S60 5.0
@@ -387,15 +387,15 @@
 
      /**
       * Handles loading suite from uri if suites names' are the same.
-      * 
+      *
       * @param aNextExists ETrue if the next suite's name exists in uri.
-      * @param aUri The URI's parameters passed to the suite. 
+      * @param aUri The URI's parameters passed to the suite.
       */
      void HandleTheSameSuitesL( TBool aNextExists, const TDesC8& aParams );
-     
+
      /**
       * Checks if suites have the same names.
-      * 
+      *
       * @param aLastSuiteName The last suite's name on the stack.
       * @param aFirstSuiteName The first suite's name in uri.
       * @return ETrue if names are equal
@@ -404,37 +404,44 @@
 
      /**
       * Decides whether to hide menu depending on current state and uri parameters
-      * 
+      *
       * @param aUri The Uri to parse for exit procedure.
       * @return ETrue If exit was consumed.
       */
      TBool HandleActionL( const TDesC8& aUri );
-     
+
      /**
       * Loads suites from uri.
-      * 
+      *
       * @param aUri The uri to parse
       */
      void LoadSuitesL( const TDesC8& aUri );
-     
+
+     /**
+       * Loads item through CR.
+       *
+       * @since S60 v5.0
+       */
+      void LoadItemFromCrL( const TDesC8& aUri );
+
 private: // data
-        
+
     /**
      * Own - Meta data model.
      */
     CHnMdModel* iMetaDataModel;
-    
+
     /**
      * Own - Suite container.
      */
     CHnSuiteModelContainer* iSuiteContainer;
-       
+
     /**
      * Not own.
-     * EikonEnv for displaying popup messages. 
+     * EikonEnv for displaying popup messages.
      */
     CEikonEnv* iEEnv;
-    
+
     /**
      * Not own - Suite observer.
      */
@@ -444,7 +451,7 @@
      * Edit mode
      */
     TBool iEditMode;
-    
+
     /**
      * Light status observer
      */
--- a/menufw/hierarchynavigator/hnengine/src/hnengine.cpp	Tue Sep 14 20:58:58 2010 +0300
+++ b/menufw/hierarchynavigator/hnengine/src/hnengine.cpp	Wed Sep 15 12:00:00 2010 +0300
@@ -268,26 +268,31 @@
 //
 EXPORT_C void CHnEngine::LoadSuitesFromUriL( const TDesC8& aUri )
   {
-  DEBUG(("_MM_:CHnEngine::LoadSuitesFromUriL IN"));
-  DEBUG8(("_MM_:\tURI: %S",&aUri));
+    DEBUG(("_MM_:CHnEngine::LoadSuitesFromUriL IN"));
+    DEBUG8(("_MM_:\tURI: %S",&aUri));
 
-  TBool consumed(EFalse);
+    TBool consumed( EFalse );
 
-    if ( aUri.Find( KSetFocusWithPref ) != KErrNotFound )
-      {
-      LoadFromCrL( aUri );
-      consumed = ETrue;
-      }
+    if( aUri.Find( KSetFocusWithPref ) != KErrNotFound )
+        {
+        LoadFromCrL( aUri );
+        consumed = ETrue;
+        }
+    else if( aUri.Find( KOpenItemWithPref ) != KErrNotFound )
+        {
+        LoadItemFromCrL( aUri );
+        consumed = ETrue;
+        }
 
-    if ( !consumed )
-      {
-      consumed = HandleActionL( aUri );
-      }
+    if( !consumed )
+        {
+        consumed = HandleActionL( aUri );
+        }
 
-    if ( !consumed )
-      {
-      LoadSuitesL( aUri );
-      }
+    if( !consumed )
+        {
+        LoadSuitesL( aUri );
+        }
 
     DEBUG(("_MM_:CHnEngine::LoadSuitesFromUriL OUT"));
     }
@@ -602,8 +607,8 @@
 
     TInt posSuite( 0 );
     TInt posItem( 0 );
-  TInt64 suiteCustomId( KErrNotFound );
-  TInt64 itemCustomId( KErrNotFound );
+    TInt64 suiteCustomId( KErrNotFound );
+    TInt64 itemCustomId( KErrNotFound );
 
   // Get suite's and item's custom ids.
   const TLiwGenericParam* paramSuiteId = aParams.FindFirst( posSuite,  KSuiteCustomId8 );
@@ -888,7 +893,6 @@
     if ( aSource.Length() > 0 && aSeparator.Length() > 0 )
         {
         TPtrC8 tmpSource = aSource;
-
         TPtrC8 token( KNullDesC8 );
 
         while( ETrue )
@@ -899,7 +903,6 @@
                     && length != KErrNotFound )
                 {
                 TInt ampPos( KErrNotFound );
-                TInt eqPos( KErrNotFound );
                 do
                     {
                     ampPos = tmpSource.Mid(
@@ -912,7 +915,7 @@
                         }
                     else if( (length + HnLogicalRelations::KParamUid8().Length())
                                 == tmpSource.Length())
-                        {    
+                        {
                         length = KErrNotFound;
                         }
                     }while( !ampPos );
@@ -1033,7 +1036,7 @@
     const TDesC8& query = parser.Extract( EUriQuery );
     RPointerArray< HBufC8 > params = SplitL( query, HnLogicalRelations::KParamUid8);
 
-    TBuf8<KApaMaxAppGroupName + KTimeStampBufferLength + KUidStringLength + 2> item;
+    TBuf8< KApaMaxAppGroupName + KTimeStampBufferLength + KUidStringLength + 2> item;
 
     for( TInt i = 0; i < params.Count(); i++ )
         {
@@ -1042,12 +1045,12 @@
         ASSERT( paramValue.Count() == 2 );
 
         if ( !paramValue[0]->Compare(KMcsAppGroupName8) )
-        	{
-        	TBuf8<KApaMaxAppGroupName> appgrname;
-        	if( paramValue[1]->Length()<=KApaMaxAppGroupName )
-        	    {
-        	    appgrname.Append( *paramValue[1] );
-        	    }
+          {
+          TBuf8< KApaMaxAppGroupName > appgrname;
+          if( paramValue[1]->Length()<= KApaMaxAppGroupName )
+              {
+              appgrname.Append( *paramValue[1] );
+              }
 
           //get current time
           TTime currentTime;
@@ -1067,7 +1070,7 @@
         CleanupStack::PopAndDestroy( &paramValue );
         }
 
-    TBuf<KApaMaxAppGroupName + KTimeStampBufferLength + KUidStringLength + 2> item1;
+    TBuf< KApaMaxAppGroupName + KTimeStampBufferLength + KUidStringLength + 2> item1;
     item1.Copy(item);
     CRepository *cenRep = CRepository::NewLC( KCRUidMenu );
     cenRep->Set(KMenuShowFolder, item1);
@@ -1075,7 +1078,6 @@
 
     params.ResetAndDestroy();
     CleanupStack::PopAndDestroy( uriBuf );
-
   }
 // ---------------------------------------------------------------------------
 //
@@ -1110,96 +1112,96 @@
 // ---------------------------------------------------------------------------
 //
 TBool CHnEngine::HandleActionL( const TDesC8& aUri )
-  {
-  TBool exitActionConsumed(EFalse);
+    {
+    TBool exitActionConsumed( EFalse );
 
-  HBufC8* uriBuf = HBufC8::NewLC( aUri.Length() );
-  uriBuf->Des().Copy( aUri );
+    HBufC8* uriBuf = HBufC8::NewLC( aUri.Length() );
+    uriBuf->Des().Copy( aUri );
 
-  TUriParser8 parser;
+    TUriParser8 parser;
     parser.Parse( *uriBuf );
     User::LeaveIfError( parser.IsSchemeValid() ? KErrNone : KErrPathNotFound );
 
     const TDesC8& host8 = parser.Extract( EUriHost );
     const TDesC8& query = parser.Extract( EUriQuery );
 
-  RBuf action;
+    RBuf action;
     CleanupClosePushL( action );
     CLiwGenericParamList* paramsUri = UriQueryToLiwListLC( query, KNullDesC8, KNullDesC8 );
     HnLiwUtils::GetStringL( *paramsUri, KActionParams, action );
 
-    if ( !action.Compare( KActionExit ) )
-      {
-      RBuf host;
-    host.CreateL( host8.Length() );
-    CleanupClosePushL( host );
-    host.Copy(host8);
-      CHnSuiteModel* suiteModel = iSuiteContainer->GetSuiteModel( host );
-      TBool exitHideHostNotFound( ETrue  );
-      if( suiteModel  && suiteModel->ExitMode() == EExitModeHide )
-          {
-          exitHideHostNotFound = EFalse;
-          }
+    if( !action.Compare( KActionExit ) )
+        {
+        RBuf host;
+        host.CreateL( host8.Length() );
+        CleanupClosePushL( host );
+        host.Copy( host8 );
+        CHnSuiteModel* suiteModel = iSuiteContainer->GetSuiteModel( host );
+        TBool exitHideHostNotFound( ETrue );
+        if( suiteModel && suiteModel->ExitMode() == EExitModeHide )
+            {
+            exitHideHostNotFound = EFalse;
+            }
 
-    if ( exitHideHostNotFound )
-      {
-      //send to foreground
-      CLiwGenericParamList* pl = CLiwGenericParamList::NewL();
-      CleanupStack::PushL( pl );
-      HandleModelEventL( KAppGainForeground, *pl );
-      CleanupStack::PopAndDestroy( pl );
-      }
-    else
-      {
-      //send to background
-      CLiwGenericParamList* pl = CLiwGenericParamList::NewL();
-      CleanupStack::PushL( pl );
-      HandleModelEventL( KAppGainBackground, *pl );
-      CleanupStack::PopAndDestroy( pl );
-      }
+        if( exitHideHostNotFound )
+            {
+            //send to foreground
+            CLiwGenericParamList* pl = CLiwGenericParamList::NewL();
+            CleanupStack::PushL( pl );
+            HandleModelEventL( KAppGainForeground, *pl );
+            CleanupStack::PopAndDestroy( pl );
+            }
+        else
+            {
+            //send to background
+            CLiwGenericParamList* pl = CLiwGenericParamList::NewL();
+            CleanupStack::PushL( pl );
+            HandleModelEventL( KAppGainBackground, *pl );
+            CleanupStack::PopAndDestroy( pl );
+            }
 
-      if ( exitHideHostNotFound && iSuiteContainer->GetLastSuiteModel() == suiteModel  )
-        {
-            HandleBackEventL( host,  1 );
-        }
-      else
-        {
-          //reset to root
+        if( exitHideHostNotFound && iSuiteContainer->GetLastSuiteModel() == suiteModel )
+            {
+            HandleBackEventL( host, 1 );
+            }
+        else
+            {
+            //reset to root
             CLiwGenericParamList* params = CLiwGenericParamList::NewLC();
             params->AppendL( iMetaDataModel->GetSuiteParameters( 0 ) );
-          ResetModelsL();
+            ResetModelsL();
             InitializeL( *params );
             CleanupStack::PopAndDestroy( params );
-        }
+            }
 
-      CleanupStack::PopAndDestroy( &host );
-      exitActionConsumed = ETrue;
-      }
+        CleanupStack::PopAndDestroy( &host );
+        exitActionConsumed = ETrue;
+        }
 
     CleanupStack::PopAndDestroy( paramsUri );
     CleanupStack::PopAndDestroy( &action );
     CleanupStack::PopAndDestroy( uriBuf );
     return exitActionConsumed;
-  }
+    }
 
 // ---------------------------------------------------------------------------
 //
 // ---------------------------------------------------------------------------
 //
 void CHnEngine::LoadSuitesL( const TDesC8& aUri )
-  {
-  TBool sendToForeground(EFalse);
-  HBufC8* uriBuf = HBufC8::NewLC( aUri.Length() );
-  uriBuf->Des().Copy( aUri );
+    {
+    TBool sendToForeground(EFalse);
+    HBufC8* uriBuf = HBufC8::NewLC( aUri.Length() );
+    uriBuf->Des().Copy( aUri );
 
-  TUriParser8 parser;
-  parser.Parse( *uriBuf );
-  User::LeaveIfError( parser.IsSchemeValid() ? KErrNone : KErrPathNotFound );
+    TUriParser8 parser;
+    parser.Parse( *uriBuf );
+    User::LeaveIfError( parser.IsSchemeValid() ? KErrNone : KErrPathNotFound );
 
-  CDesC8ArrayFlat* suiteNameArray = new( ELeave ) CDesC8ArrayFlat( KDefaultGranularity ) ;
-  CleanupStack::PushL( suiteNameArray );
+    CDesC8ArrayFlat* suiteNameArray = new( ELeave ) CDesC8ArrayFlat( KDefaultGranularity ) ;
+    CleanupStack::PushL( suiteNameArray );
 
-  const TDesC8& host = parser.Extract( EUriHost );
+    const TDesC8& host = parser.Extract( EUriHost );
     RBuf8 host8;
     CleanupClosePushL( host8 );
     if (host.Compare( KNullDesC8 ))
@@ -1210,19 +1212,19 @@
         DEBUG8(( "_MM_:\tURI host part: %S", &host8 ));
         }
 
-  const TDesC8& path = parser.Extract( EUriPath );
-  if (path.Compare( KNullDesC8 ))
-    {
-    HBufC8* path8 = HBufC8::NewLC( path.Length() );
-    path8->Des().Copy( path );
-    path8->Des().LowerCase();
-    ParseSuiteUriPathL( *path8, *suiteNameArray );
-    CleanupStack::PopAndDestroy( path8 );
-    }
+    const TDesC8& path = parser.Extract( EUriPath );
+    if (path.Compare( KNullDesC8 ))
+        {
+        HBufC8* path8 = HBufC8::NewLC( path.Length() );
+        path8->Des().Copy( path );
+        path8->Des().LowerCase();
+        ParseSuiteUriPathL( *path8, *suiteNameArray );
+        CleanupStack::PopAndDestroy( path8 );
+        }
 
-  TBool suiteExists( EFalse );
-  iMetaDataModel->IgnoreEvaluations( ETrue );
-  iMetaDataModel->QueueForeground( CHnMdModel::EWhenAnySuiteIsEvaluated );
+    TBool suiteExists( EFalse );
+    iMetaDataModel->IgnoreEvaluations( ETrue );
+    iMetaDataModel->QueueForeground( CHnMdModel::EWhenAnySuiteIsEvaluated );
 
     if( host8.Length() == 0 || ( host8.Length() > 0 &&
             !iMetaDataModel->SuiteModelExistsL( host8 ) ) )
@@ -1231,101 +1233,141 @@
         suiteNameArray->AppendL( KRoot8 );
         }
 
-  for( TInt i = 0; i < suiteNameArray->Count(); ++i )
-    {
-    suiteExists = iMetaDataModel->SuiteModelExistsL(
-      ( *suiteNameArray )[i] );
-    TBool nextExists = i < suiteNameArray->Count() - 1 &&
-      iMetaDataModel->SuiteModelExistsL( ( *suiteNameArray )[i + 1] );
-    TBool isLast = ( i == ( suiteNameArray->Count() - 1 ) );
+    for( TInt i = 0; i < suiteNameArray->Count(); ++i )
+        {
+        suiteExists = iMetaDataModel->SuiteModelExistsL(
+                ( *suiteNameArray )[i] );
+        TBool nextExists = i < suiteNameArray->Count() - 1 &&
+                iMetaDataModel->SuiteModelExistsL( ( *suiteNameArray )[i + 1] );
+        TBool isLast = ( i == ( suiteNameArray->Count() - 1 ) );
+
+        TBool turnOnEvaluation = ( suiteExists && ( !nextExists || isLast ) );
+        if( turnOnEvaluation || !suiteExists )
+            {
+            iMetaDataModel->IgnoreEvaluations( EFalse );
+            }
 
-    TBool turnOnEvaluation = ( suiteExists && ( !nextExists || isLast ) );
-    if( turnOnEvaluation || !suiteExists )
-      {
-      iMetaDataModel->IgnoreEvaluations( EFalse );
-      }
+        TInt err( KErrNone );
+
+        // Ignore loading new suite if the last suite in model is the same
+        // as first one in the uri.
+        if ( i == 0 )
+            {
+            if ( SuitesAreTheSameL( iMetaDataModel->GetLastSuite()->SuiteName(), (*suiteNameArray)[i] ) )
+                {
+                HandleTheSameSuitesL( nextExists, parser.Extract( EUriQuery ) );
+                sendToForeground = ETrue;
+                continue;
+                }
+            }
 
-    TInt err( KErrNone );
+        if( suiteExists )
+            {
+            if (!nextExists)
+                {
+                // Tricky: queue foreground so that if the suite is evaluated synchronously
+                // the foreground will be gained.
+                iMetaDataModel->QueueForeground( CHnMdModel::EWhenAnySuiteIsEvaluated );
+                }
+            err = LoadSuiteFromUriL(
+                    ( *suiteNameArray )[i], parser.Extract( EUriQuery ), parser.Extract( EUriFragment ) );
+            if ( KErrNone == err && !nextExists && iMetaDataModel->IsForegroundQueued() )
+                {
+                // Tricky: if foreground is still queued it means that the suite is evaluated
+                // asynchronously. Override the previos foreground queue setting with one
+                // that will be effective only if the last loaded suite is evaluated.
+                iMetaDataModel->QueueForeground( CHnMdModel::EWhenCurrentTopSuiteIsEvaluated );
+                }
+            if ( err != KErrNone )
+                {
+                sendToForeground = ETrue;
+                }
+            }
 
-    // Ignore loading new suite if the last suite in model is the same
-    // as first one in the uri.
-    if ( i == 0 )
-      {
-      if ( SuitesAreTheSameL( iMetaDataModel->GetLastSuite()->SuiteName(), (*suiteNameArray)[i] ) )
-        {
-        HandleTheSameSuitesL( nextExists, parser.Extract( EUriQuery ) );
-        sendToForeground = ETrue;
-        continue;
+        if( !suiteExists || err != KErrNone || !nextExists )
+            {
+            CHnFilter* filter = CHnFilter::NewLC();
+
+            filter->SetSuiteId(
+                    iSuiteContainer->GetLastSuiteModel()->CustomId() );
+
+            filter->SetEvaluateSuiteL( ETrue );
+            iMetaDataModel->IgnoreEvaluations( EFalse );
+
+            TRAPD( err, iMetaDataModel->EvaluateL( *filter ) );
+
+            CleanupStack::PopAndDestroy( filter );
+            if( err )
+                {
+                iMetaDataModel->DeleteLastSuite();
+                iSuiteContainer->PopSuiteModelL(
+                        HnConvUtils::Str8ToStr( ( *suiteNameArray )[i] )->Des() );
+                sendToForeground = ETrue;
+                }
+            break;
+            }
         }
-      }
 
+    // set highlight only when path is valid!
     if( suiteExists )
-      {
-      if (!nextExists)
-          {
-          // Tricky: queue foreground so that if the suite is evaluated synchronously
-          // the foreground will be gained.
-          iMetaDataModel->QueueForeground( CHnMdModel::EWhenAnySuiteIsEvaluated );
-          }
-      err = LoadSuiteFromUriL(
-        ( *suiteNameArray )[i], parser.Extract( EUriQuery ), parser.Extract( EUriFragment ) );
-      if ( KErrNone == err && !nextExists && iMetaDataModel->IsForegroundQueued() )
-          {
-          // Tricky: if foreground is still queued it means that the suite is evaluated
-          // asynchronously. Override the previos foreground queue setting with one
-          // that will be effective only if the last loaded suite is evaluated.
-          iMetaDataModel->QueueForeground( CHnMdModel::EWhenCurrentTopSuiteIsEvaluated );
-          }
-      if ( err != KErrNone )
+        {
+        HighlightPlacementFromUriL( parser.Extract( EUriFragment ) );
+        }
+
+    CleanupStack::PopAndDestroy( &host8 );
+    CleanupStack::PopAndDestroy( suiteNameArray );
+    CleanupStack::PopAndDestroy( uriBuf );
+
+    //    send to foreground
+    if ( sendToForeground )
         {
-        sendToForeground = ETrue;
+        CLiwGenericParamList* pl = CLiwGenericParamList::NewL();
+        CleanupStack::PushL( pl );
+        HandleModelEventL( KAppGainForeground, *pl );
+        CleanupStack::PopAndDestroy( pl );
+        iMetaDataModel->QueueForeground( CHnMdModel::ENever );
         }
-      }
+
+    }
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CHnEngine::LoadItemFromCrL( const TDesC8& aUri )
+    {
+    HBufC8* uriBuf = HBufC8::NewLC( aUri.Length() );
+    uriBuf->Des().Copy( aUri );
 
-    if( !suiteExists || err != KErrNone || !nextExists )
-      {
-      CHnFilter* filter = CHnFilter::NewLC();
+    TUriParser8 parser;
+    parser.Parse( *uriBuf );
+    User::LeaveIfError( parser.IsSchemeValid() ? KErrNone : KErrPathNotFound );
+
+    const TDesC8& query = parser.Extract( EUriQuery );
 
-      filter->SetSuiteId(
-        iSuiteContainer->GetLastSuiteModel()->CustomId() );
-
-      filter->SetEvaluateSuiteL( ETrue );
-      iMetaDataModel->IgnoreEvaluations( EFalse );
+    if( query.Compare( KNullDesC8 ) )
+        {
+        TBuf8<KMaxLength> item;
+        RPointerArray<HBufC8> paramValue = SplitL( query,
+                HnLogicalRelations::KLogicalEqual8 );
+        CleanupResetAndDestroyPushL( paramValue );
+        ASSERT( paramValue.Count() == 2 );
 
-      TRAPD( err, iMetaDataModel->EvaluateL( *filter ) );
+        if( !paramValue[0]->Compare( KId8 ) )
+            {
+            if( paramValue[1]->Length() <= KUidStringLength )
+                {
+                item.Append( *paramValue[1] );
+                }
+            }
+        CleanupStack::PopAndDestroy( &paramValue );
 
-      CleanupStack::PopAndDestroy( filter );
-      if( err )
-        {
-        iMetaDataModel->DeleteLastSuite();
-        iSuiteContainer->PopSuiteModelL(
-           HnConvUtils::Str8ToStr( ( *suiteNameArray )[i] )->Des() );
-        sendToForeground = ETrue;
+        TBuf<KMaxLength> item1;
+        item1.Copy( item );
+        CRepository *cenRep = CRepository::NewLC( KCRUidMenu );
+        cenRep->Set( KMenuOpenItem, item1 );
+        CleanupStack::PopAndDestroy( cenRep );
         }
-      break;
-      }
+    CleanupStack::PopAndDestroy( uriBuf );
     }
 
-  // set highlight only when path is valid!
-  if( suiteExists )
-    {
-    HighlightPlacementFromUriL( parser.Extract( EUriFragment ) );
-    }
-
-    CleanupStack::PopAndDestroy( &host8 );
-  CleanupStack::PopAndDestroy( suiteNameArray );
-  CleanupStack::PopAndDestroy( uriBuf );
-
-//    send to foreground
-  if ( sendToForeground )
-    {
-    CLiwGenericParamList* pl = CLiwGenericParamList::NewL();
-    CleanupStack::PushL( pl );
-    HandleModelEventL( KAppGainForeground, *pl );
-    CleanupStack::PopAndDestroy( pl );
-    iMetaDataModel->QueueForeground( CHnMdModel::ENever );
-    }
-
-  }
-
 // End of file
--- a/menufw/hierarchynavigator/hnmetadatamodel/inc/hnglobals.h	Tue Sep 14 20:58:58 2010 +0300
+++ b/menufw/hierarchynavigator/hnmetadatamodel/inc/hnglobals.h	Wed Sep 15 12:00:00 2010 +0300
@@ -292,7 +292,8 @@
 
 _LIT(   KPrefMm,                    "mm://" );
 _LIT8(  KRootWithPref,              "mm://root" );
-_LIT8(  KSetFocusWithPref,              "mm://!setfocus" );
+_LIT8(  KSetFocusWithPref,          "mm://!setfocus" );
+_LIT8(  KOpenItemWithPref,          "mm://!openitem" );
 _LIT8(   KCRepTimeFormat, "%S,%04d%02d%02d:%02d%02d%02d.%06d" );
 
 // images
@@ -513,6 +514,8 @@
 
 const TUint32 KMenuShowFolder = 0x0000000c;
 
+const TUint32 KMenuOpenItem = 0x0000000e;
+
 const TInt KTimeStampBufferLength = 25;
 
 const TInt KUidStringLength = 10;
--- a/menufw/hierarchynavigator/hnmetadatamodel/inc/hnmdmodel.h	Tue Sep 14 20:58:58 2010 +0300
+++ b/menufw/hierarchynavigator/hnmetadatamodel/inc/hnmdmodel.h	Wed Sep 15 12:00:00 2010 +0300
@@ -544,6 +544,11 @@
      */
     CHnSuiteModel* iForegroundTriggeringSuite;
 
+    /**
+     * Repository open item change observer.
+     */
+    CHnRepositoryObserver* iRepositoryOpenItemObserver;
+
     };
 
 #endif // C_HNMDMODEL_H
--- a/menufw/hierarchynavigator/hnmetadatamodel/inc/hnrepositoryobserver.h	Tue Sep 14 20:58:58 2010 +0300
+++ b/menufw/hierarchynavigator/hnmetadatamodel/inc/hnrepositoryobserver.h	Wed Sep 15 12:00:00 2010 +0300
@@ -306,7 +306,7 @@
   /**
      * Folder application group name.
      */
-  TBuf8<KApaMaxAppGroupName> iCRKeyFolderName;
+  TBuf8< KApaMaxAppGroupName > iCRKeyFolderName;
 
     /**
      * Mcs id for an application item in a folder with a given app group name.
@@ -325,6 +325,123 @@
     TInt iNotifyType;
   };
 
+/**
+ * Open item Repository Observer.
+ *
+ * It is used to inform hierarchy navigator of changes in the suites repository.
+ *
+ * @lib hnmetadatamodel
+ * @since S60 5.0
+ * @ingroup group_hnmetadatamodel
+ */
+NONSHARABLE_CLASS( CHnRepositoryOpenItemObserver ):
+    public CHnRepositoryObserver,
+    public MLiwNotifyCallback
+    {
+public:
+
+    /**
+     * Default C++ Destructor.
+     *
+     * @since S60 v5.0
+     */
+    virtual ~CHnRepositoryOpenItemObserver();
+
+    /**
+     * Factory function.
+     *
+     * @param aCmnPtrs Common pointers.
+     * @return Repository Observer.
+     * @since S60 v5.0
+     */
+    static CHnRepositoryOpenItemObserver* NewL(
+            THnMdCommonPointers* aCmnPtrs, const TUid aRepositoryUid,
+            const TUint32 aId );
+
+    /**
+     * Factory function.
+     *
+     * @param aCmnPtrs Common pointers.
+     * @return Repository Observer.
+     * @since S60 v5.0
+     */
+    static CHnRepositoryOpenItemObserver* NewLC(
+            THnMdCommonPointers* aCmnPtrs, const TUid aRepositoryUid,
+            const TUint32 aId );
+
+    /**
+     * Change handler method.
+     * It is invoked whenever notifier detects a change in the CR.
+     *
+     * @param aId Id of the entry in CR.
+     * @since S60 v5.0
+     */
+    void HandleNotifyString( TUint32 aId, const TDesC16& aNewValue );
+
+    /**
+     * Change handler method.
+     * It is invoked whenever notifier detects a change in the CR.
+     *
+     * @param aId Id of the entry in CR.
+     * @since S60 v5.0
+     */
+    void HandleNotifyStringL( TUint32 aId, const TDesC16& aNewValue );
+
+    /**
+     * Handles notifications caused by an asynchronous Execute*CmdL call
+     * or an event.
+     *
+     * @param aCmdId The service command associated to the event.
+     * @param aEventId Occured event, see LiwCommon.hrh.
+     * @param aEventParamList Event parameters, if any, as defined per
+     *        each event.
+     * @param aInParamList Input parameters, if any, given in the
+     *        related HandleCommmandL.
+     * @return Error code for the callback.
+     */
+    virtual TInt HandleNotifyL(
+                TInt aCmdId,
+                TInt aEventId,
+                CLiwGenericParamList& aEventParamList,
+                const CLiwGenericParamList& aInParamList);
+
+private:
+
+    /**
+     * Defautlt C++ Constructor.
+     *
+     * @param aCmnPtrs Common pointers.
+     * @since S60 v5.0
+     */
+    CHnRepositoryOpenItemObserver( THnMdCommonPointers* aCmnPtrs, TUint32 iId );
+
+    /**
+     * Second stage constructor.
+     *
+     * @since S60 v5.0
+     */
+    void ConstructL( const TUid aRepositoryUid );
+
+private:
+
+    /**
+     * Request get list for an folder.
+     *
+     * @param aFolderId A parent folder id
+     * @since S60 v5.0
+     */
+    void ShowFolderL( const TDesC16& aFolderId );
+
+private:
+
+    /**
+     * Own.
+     * Intance of the service handler.
+     */
+    CHnServiceHandler* iServiceHandler;
+
+    };
+
 #endif /*HNREPOSITORYOBSERVER_H_*/
 
 //End of file
--- a/menufw/hierarchynavigator/hnmetadatamodel/src/hnmdmodel.cpp	Tue Sep 14 20:58:58 2010 +0300
+++ b/menufw/hierarchynavigator/hnmetadatamodel/src/hnmdmodel.cpp	Wed Sep 15 12:00:00 2010 +0300
@@ -64,6 +64,7 @@
     iMode = EMdModeNormal;
     iRepositoryWidgetTypeObserver = CHnRepositoryWidgetTypeObserver::NewL( &iCmnPtrs, KMatrixRepositoryUid );
     iRepositoryShowFolderObserver = CHnRepositoryShowFolderObserver::NewL( &iCmnPtrs, KCRUidMenu, KMenuShowFolder );
+    iRepositoryOpenItemObserver = CHnRepositoryOpenItemObserver::NewL( &iCmnPtrs, KCRUidMenu, KMenuOpenItem );
     MMPERF(("CHnMetaDataModel::ConstructL - rep. observer ready"));
     }
 
@@ -111,6 +112,7 @@
     {
     delete iRepositoryWidgetTypeObserver;
     delete iRepositoryShowFolderObserver;
+    delete iRepositoryOpenItemObserver;
     iLoadedSuites.ResetAndDestroy();
     delete iXmlModelProvider;
     delete iLocalization;
--- a/menufw/hierarchynavigator/hnmetadatamodel/src/hnrepositoryobserver.cpp	Tue Sep 14 20:58:58 2010 +0300
+++ b/menufw/hierarchynavigator/hnmetadatamodel/src/hnrepositoryobserver.cpp	Wed Sep 15 12:00:00 2010 +0300
@@ -227,9 +227,8 @@
     {
     CHnRepositoryObserver::ConstructL( aRepositoryUid );
     TInt ret = iRepository->Create( iId, KBlank );
-    iNotifyHandler = CCenRepNotifyHandler::NewL(
-        *this, *iRepository,
-      CCenRepNotifyHandler::EStringKey, iId );
+    iNotifyHandler = CCenRepNotifyHandler::NewL( *this, *iRepository,
+            CCenRepNotifyHandler::EStringKey, iId );
     iNotifyHandler->StartListeningL();
     }
 
@@ -273,129 +272,128 @@
 
     //++Show Folder
     if( aId == iId && aNewValue.Length())
-    {
+        {
         iNotifyType = 0;
-    ExtractCRKeyShowFolderName( aNewValue );
+        ExtractCRKeyShowFolderName( aNewValue );
+
+        // iCRKeyFolderItemUid can contain mcs id or uid
+        // in case of uid it will be replaced whith id in HandleNotifyL callback
+        if( iCRKeyFolderItemUid.Length()>0 )
+            {
+            if( iCRKeyFolderItemUid.FindF( KHexPrefix8 )==0 )
+                {
+                iNotifyType |= EAPP_UID;
+                }
+            else
+                {
+                iNotifyType |= EAPP_ID;
+                }
+            }
+
+            CHnMdBaseKey* inDataKey = HnMdKeyFactory::CreateL(
+                KInData8, KKeyTypeMap, KDefaultParentId8 );
+            CleanupStack::PushL( inDataKey );
+
+            CHnMdBaseKey* filter( NULL );
+            HBufC8* id( NULL );
+            if ( iCRKeyFolderName.Length()>0 && !( iNotifyType & EAPP_UID ) )
+                {
+                // app group name is known
+                // id is optional
+                id = HnConvUtils::NumToStr8LC( KRootId );
+                inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KType8, KKeyTypeString, KMenuFolder8 ) );
+                inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KIdParam, KKeyTypeInteger, *id ) );
+                inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KRecursiveSearch8, KKeyTypeBoolean, KStringTrue8 ) );
+                inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KFlatResult8, KKeyTypeBoolean, KStringTrue8 ) );
+
+                filter = HnMdKeyFactory::CreateL(
+                        KFilter8, KKeyTypeMap, KStringTrue8 );
+                CleanupStack::PushL( filter );
+                filter->AddSubKeyL( HnMdKeyFactory::CreateL( KMcsAppGroupName8, KKeyTypeString, iCRKeyFolderName ) );
+                filter->AddSubKeyL( HnMdKeyFactory::CreateL( KType8, KKeyTypeString, KMenuFolder8 ) );
+                filter->AddSubKeyL( HnMdKeyFactory::CreateL( KHidden8, KKeyTypeBoolean, KStringFalse8 ) );
+                }
+            else if( iNotifyType & EAPP_ID )
+                {
+                // no app group name, id is known
+                inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KType8, KKeyTypeString, KMenuApplication8 ) );
+                inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KIdParam, KKeyTypeInteger, iCRKeyFolderItemUid ) );
+                inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KParentOnly8, KKeyTypeBoolean, KStringTrue8 ) );
+                }
+            else if( iNotifyType & EAPP_UID )
+                {
+                // uid is known
+                // app group name is optional
+                id = HnConvUtils::NumToStr8LC( KRootId );
+                inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KType8, KKeyTypeString, KMenuFolder8 ) );
+                inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KIdParam, KKeyTypeInteger, *id ) );
+                inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KRecursiveSearch8, KKeyTypeBoolean, KStringTrue8 ) );
+                inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KFlatResult8, KKeyTypeBoolean, KStringTrue8 ) );
 
-    // iCRKeyFolderItemUid can contain mcs id or uid
-    // in case of uid it will be replaced whith id in HandleNotifyL callback
-    if( iCRKeyFolderItemUid.Length()>0 )
-        {
-        if( iCRKeyFolderItemUid.FindF( KHexPrefix8 )==0 )
-            {
-            iNotifyType |= EAPP_UID;
-            }
-        else
-            {
-            iNotifyType |= EAPP_ID;
-            }
+                filter = HnMdKeyFactory::CreateL(
+                    KFilter8, KKeyTypeMap, KStringTrue8 );
+                CleanupStack::PushL( filter );
+                filter->AddSubKeyL( HnMdKeyFactory::CreateL( KUid8, KKeyTypeInteger, iCRKeyFolderItemUid ) );
+                filter->AddSubKeyL( HnMdKeyFactory::CreateL( KType8, KKeyTypeString, KMenuApplication8 ) );
+                filter->AddSubKeyL( HnMdKeyFactory::CreateL( KHidden8, KKeyTypeBoolean, KStringFalse8 ) );
+                }
+            else
+                {
+                // No app group name, no uid. Search for root.
+                id = HnConvUtils::NumToStr8LC( KRootId );
+                inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KType8, KKeyTypeString, KMenuFolder8 ) );
+                inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KIdParam, KKeyTypeInteger, *id ) );
+                inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KParentOnly8, KKeyTypeBoolean, KStringTrue8 ) );
+                }
+
+            RPointerArray< CHnMdBaseKey > data;
+            CleanupClosePushL( data );
+            data.AppendL( inDataKey );
+            if ( filter )
+                {
+                data.AppendL( filter );
+                }
+
+            CHnMdBaseKey* serviceData = HnMdKeyFactory::CreateL(
+                KServiceContentName, KKeyTypeString, KMatrixMenuData );
+            CleanupStack::PushL( serviceData );
+
+            RPointerArray< CHnMdBaseKey> constructor;
+            CleanupClosePushL( constructor );
+            constructor.AppendL( serviceData );
+            CLiwGenericParamList* constructorLiw = CLiwGenericParamList::NewLC();
+            CLiwGenericParamList* commandLiw = CLiwGenericParamList::NewLC();
+            HnLiwUtils::SetGenericParamListL( constructor, *constructorLiw );
+            HnLiwUtils::SetGenericParamListL( data, *commandLiw );
+
+            TBuf8< KMaxLength > interface( KMCSDataSourceInterface8 );
+
+            delete iServiceHandler;
+            iServiceHandler = NULL;
+            iServiceHandler = CHnServiceHandler::NewL(
+                    KMCSService8, interface, KCmdGetList8,
+                    EServiceModeAsynchronous, constructorLiw, commandLiw );
+
+            CleanupStack::Pop( commandLiw );
+            CleanupStack::Pop( constructorLiw );
+
+            iServiceHandler->ExecuteL( this );
+
+            CleanupStack::PopAndDestroy( &constructor );
+            CleanupStack::PopAndDestroy( serviceData );
+            CleanupStack::PopAndDestroy( &data );
+            if( filter )
+                {
+                CleanupStack::PopAndDestroy( filter );
+                }
+            if( id )
+                {
+                CleanupStack::PopAndDestroy( id );
+                }
+            CleanupStack::PopAndDestroy( inDataKey );
         }
 
-        CHnMdBaseKey* inDataKey = HnMdKeyFactory::CreateL(
-            KInData8, KKeyTypeMap, KDefaultParentId8 );
-        CleanupStack::PushL( inDataKey );
-
-        CHnMdBaseKey* filter( NULL );
-        HBufC8* id( NULL );
-        if ( iCRKeyFolderName.Length()>0 && !( iNotifyType & EAPP_UID ) )
-            {
-            // app group name is known
-            // id is optional
-            id = HnConvUtils::NumToStr8LC( KRootId );
-            inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KType8, KKeyTypeString, KMenuFolder8 ) );
-            inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KIdParam, KKeyTypeInteger, *id ) );
-            inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KRecursiveSearch8, KKeyTypeBoolean, KStringTrue8 ) );
-            inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KFlatResult8, KKeyTypeBoolean, KStringTrue8 ) );
-
-            filter = HnMdKeyFactory::CreateL(
-                    KFilter8, KKeyTypeMap, KStringTrue8 );
-            CleanupStack::PushL( filter );
-            filter->AddSubKeyL( HnMdKeyFactory::CreateL( KMcsAppGroupName8, KKeyTypeString, iCRKeyFolderName ) );
-            filter->AddSubKeyL( HnMdKeyFactory::CreateL( KType8, KKeyTypeString, KMenuFolder8 ) );
-            filter->AddSubKeyL( HnMdKeyFactory::CreateL( KHidden8, KKeyTypeBoolean, KStringFalse8 ) );
-            }
-        else if( iNotifyType & EAPP_ID )
-            {
-            // no app group name, id is known
-            inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KType8, KKeyTypeString, KMenuApplication8 ) );
-            inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KIdParam, KKeyTypeInteger, iCRKeyFolderItemUid ) );
-            inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KParentOnly8, KKeyTypeBoolean, KStringTrue8 ) );
-            }
-        else if( iNotifyType & EAPP_UID )
-            {
-            // uid is known
-            // app group name is optional
-            id = HnConvUtils::NumToStr8LC( KRootId );
-            inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KType8, KKeyTypeString, KMenuFolder8 ) );
-            inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KIdParam, KKeyTypeInteger, *id ) );
-            inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KRecursiveSearch8, KKeyTypeBoolean, KStringTrue8 ) );
-            inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KFlatResult8, KKeyTypeBoolean, KStringTrue8 ) );
-
-            filter = HnMdKeyFactory::CreateL(
-                KFilter8, KKeyTypeMap, KStringTrue8 );
-            CleanupStack::PushL( filter );
-            filter->AddSubKeyL( HnMdKeyFactory::CreateL( KUid8, KKeyTypeInteger, iCRKeyFolderItemUid ) );
-            filter->AddSubKeyL( HnMdKeyFactory::CreateL( KType8, KKeyTypeString, KMenuApplication8 ) );
-            filter->AddSubKeyL( HnMdKeyFactory::CreateL( KHidden8, KKeyTypeBoolean, KStringFalse8 ) );
-            }
-        else
-            {
-            // No app group name, no uid. Search for root.
-            id = HnConvUtils::NumToStr8LC( KRootId );
-            inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KType8, KKeyTypeString, KMenuFolder8 ) );
-            inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KIdParam, KKeyTypeInteger, *id ) );
-            inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KParentOnly8, KKeyTypeBoolean, KStringTrue8 ) );
-            }
-
-        RPointerArray< CHnMdBaseKey > data;
-        CleanupClosePushL( data );
-        data.AppendL( inDataKey );
-        if ( filter )
-            {
-            data.AppendL( filter );
-            }
-
-        CHnMdBaseKey* serviceData = HnMdKeyFactory::CreateL(
-            KServiceContentName, KKeyTypeString, KMatrixMenuData );
-        CleanupStack::PushL( serviceData );
-
-        RPointerArray< CHnMdBaseKey> constructor;
-        CleanupClosePushL( constructor );
-        constructor.AppendL( serviceData );
-        CLiwGenericParamList* constructorLiw = CLiwGenericParamList::NewLC();
-        CLiwGenericParamList* commandLiw = CLiwGenericParamList::NewLC();
-        HnLiwUtils::SetGenericParamListL( constructor, *constructorLiw );
-        HnLiwUtils::SetGenericParamListL( data, *commandLiw );
-
-        TBuf8< KMaxLength > interface( KMCSDataSourceInterface8 );
-
-        delete iServiceHandler;
-        iServiceHandler = NULL;
-        iServiceHandler = CHnServiceHandler::NewL(
-                KMCSService8, interface, KCmdGetList8,
-                EServiceModeAsynchronous, constructorLiw, commandLiw );
-
-        CleanupStack::Pop( commandLiw );
-        CleanupStack::Pop( constructorLiw );
-
-        iServiceHandler->ExecuteL( this );
-
-        CleanupStack::PopAndDestroy( &constructor );
-        CleanupStack::PopAndDestroy( serviceData );
-        CleanupStack::PopAndDestroy( &data );
-        if( filter )
-            {
-            CleanupStack::PopAndDestroy( filter );
-            }
-        if( id )
-            {
-            CleanupStack::PopAndDestroy( id );
-            }
-        CleanupStack::PopAndDestroy( inDataKey );
-    }
-
     DEBUG(("_MM_:CHnRepositoryShowFolderObserver::HandleNotifyStringL OUT"));
-
     }
 
 // ---------------------------------------------------------------------------
@@ -403,91 +401,91 @@
 // ---------------------------------------------------------------------------
 //
 void CHnRepositoryShowFolderObserver::ExtractCRKeyShowFolderName( const TDesC& aNewValue )
-  {
-  DEBUG(( "_MM_:CHnRepositoryShowFolderObserver::ExtractCRKeyShowFolderName IN" ));
-  iCRKeyFolderName.Copy( KBlank );
-  iCRKeyFolderItemUid.Copy( KBlank );
+    {
+    DEBUG(( "_MM_:CHnRepositoryShowFolderObserver::ExtractCRKeyShowFolderName IN" ));
+    iCRKeyFolderName.Copy( KBlank );
+    iCRKeyFolderItemUid.Copy( KBlank );
 
-  int keyValueLength = aNewValue.Length();
-  if( keyValueLength )
-    {
-      TApaAppGroupName folder;
-          TBuf<KTimeStampBufferLength + KUidStringLength + 1> tempBuf;
-          TBuf<KTimeStampBufferLength> timeStamp;
+    int keyValueLength = aNewValue.Length();
+    if( keyValueLength )
+        {
+        TApaAppGroupName folder;
+        TBuf<KTimeStampBufferLength + KUidStringLength + 1> tempBuf;
+        TBuf<KTimeStampBufferLength> timeStamp;
 
-          TInt ret = aNewValue.Find( KComma );
-          if( (ret == KErrNotFound )|| ( ret == ( keyValueLength-1 ) ) )
-              {
-              DEBUG(( "_MM_:CHnRepositoryShowFolderObserver::ExtractCRKeyShowFolderName (bad CR key value input) OUT" ));
-            return;	//bad CR key value input
-              }
-          if( ret>KApaMaxAppGroupName )
-              {
-              return;
-              }
-          folder.Copy(aNewValue.Left(ret));
-          if( aNewValue.Length()-ret > tempBuf.MaxLength() )
-              {
-              return;
-              }
-          tempBuf.Copy(aNewValue.Mid( ret + 1 ) );
+        TInt ret = aNewValue.Find( KComma );
+        if( ( ret == KErrNotFound ) || ( ret == ( keyValueLength - 1 ) ) )
+            {
+            DEBUG(( "_MM_:CHnRepositoryShowFolderObserver::ExtractCRKeyShowFolderName (bad CR key value input) OUT" ));
+            return; //bad CR key value input
+            }
+        if( ret > KApaMaxAppGroupName )
+            {
+            return;
+            }
+        folder.Copy( aNewValue.Left( ret ) );
+        if( aNewValue.Length() - ret > tempBuf.MaxLength() )
+            {
+            return;
+            }
+        tempBuf.Copy( aNewValue.Mid( ret + 1 ) );
 
-          TInt posUid = tempBuf.Find( KComma );
-          if ( KErrNotFound != posUid )
+        TInt posUid = tempBuf.Find( KComma );
+        if( KErrNotFound != posUid )
             {
-            if( posUid>KTimeStampBufferLength )
+            if( posUid > KTimeStampBufferLength )
                 {
                 return;
                 }
-            timeStamp.Copy( tempBuf.Left(posUid) );
-            if( tempBuf.Length()-(posUid+1) > KUidStringLength )
+            timeStamp.Copy( tempBuf.Left( posUid ) );
+            if( tempBuf.Length() - ( posUid + 1 ) > KUidStringLength )
                 {
                 return;
                 }
             iCRKeyFolderItemUid.Copy( tempBuf.Mid( posUid + 1 ) );
             }
-          else
+        else
             {
-                if( tempBuf.Length()>KTimeStampBufferLength )
-                    {
-                    return;
-                    }
+            if( tempBuf.Length() > KTimeStampBufferLength )
+                {
+                return;
+                }
             timeStamp.Copy( tempBuf );
             }
 
-          TTime currentTime;
-          currentTime.HomeTime();
-          TTimeIntervalSeconds interval;
+        TTime currentTime;
+        currentTime.HomeTime();
+        TTimeIntervalSeconds interval;
 
-          TTime timeStampTime;
-          ret = timeStampTime.Set(timeStamp);
+        TTime timeStampTime;
+        ret = timeStampTime.Set( timeStamp );
 
-          if(ret == KErrGeneral )
-              {
-              DEBUG(( "_MM_:CHnRepositoryShowFolderObserver::ExtractCRKeyShowFolderName (bad timestamp) OUT" ));
+        if( ret == KErrGeneral )
+            {
+            DEBUG(( "_MM_:CHnRepositoryShowFolderObserver::ExtractCRKeyShowFolderName (bad timestamp) OUT" ));
             return; // bad time stamp value
-              }
+            }
 
-          ret = currentTime.SecondsFrom( timeStampTime, interval );
+        ret = currentTime.SecondsFrom( timeStampTime, interval );
 
-          if( interval.Int() < 0 )
-              {//negative timestamp is set ahead of current time...!
-              DEBUG(( "_MM_:CHnRepositoryShowFolderObserver::ExtractCRKeyShowFolderName (negative interval) OUT" ));
+        if( interval.Int() < 0 )
+            {//negative timestamp is set ahead of current time...!
+            DEBUG(( "_MM_:CHnRepositoryShowFolderObserver::ExtractCRKeyShowFolderName (negative interval) OUT" ));
             return;
-              }
+            }
 
-          if(( interval.Int()) > KTimeStampCutOff )
-              {//positive timestamp but more than 5 seconds
-              DEBUG(( "_MM_:CHnRepositoryShowFolderObserver::ExtractCRKeyShowFolderName (more than 5 seconds) OUT" ));
+        if( ( interval.Int() ) > KTimeStampCutOff )
+            {//positive timestamp but more than 5 seconds
+            DEBUG(( "_MM_:CHnRepositoryShowFolderObserver::ExtractCRKeyShowFolderName (more than 5 seconds) OUT" ));
             return;
-              }
-          else
-              {
-            iCRKeyFolderName.Copy(folder);
-              }
+            }
+        else
+            {
+            iCRKeyFolderName.Copy( folder );
+            }
+        }
+    DEBUG(( "_MM_:CHnRepositoryShowFolderObserver::ExtractCRKeyShowFolderName OUT" ));
     }
-  DEBUG(( "_MM_:CHnRepositoryShowFolderObserver::ExtractCRKeyShowFolderName OUT" ));
-  }
 
 // ---------------------------------------------------------------------------
 //
@@ -547,7 +545,6 @@
 //
 void CHnRepositoryShowFolderObserver::GetShowFolderGroupNameL()
     {
-
     CHnMdBaseKey* inDataKey = HnMdKeyFactory::CreateL(
         KInData8, KKeyTypeMap, KDefaultParentId8 );
     CleanupStack::PushL( inDataKey );
@@ -611,13 +608,13 @@
 // ---------------------------------------------------------------------------
 //
 TInt CHnRepositoryShowFolderObserver::HandleNotifyL(
-    TInt /*aCmdId*/,
-    TInt aEventId,
-    CLiwGenericParamList& aEventParamList,
-    const CLiwGenericParamList& /*aInParamList*/)
-  {
-  DEBUG(("_MM_:CHnRepositoryShowFolderObserver::HandleNotifyL IN"));
-  if( aEventId == KLiwEventCanceled )
+        TInt /*aCmdId*/,
+        TInt aEventId,
+        CLiwGenericParamList& aEventParamList,
+        const CLiwGenericParamList& /*aInParamList*/)
+    {
+    DEBUG(("_MM_:CHnRepositoryShowFolderObserver::HandleNotifyL IN"));
+    if( aEventId == KLiwEventCanceled )
         {
         return KErrNotFound;
         }
@@ -772,4 +769,248 @@
   return KErrNone;
   }
 
+// class CHnRepositoryOpenItemObserver
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+CHnRepositoryOpenItemObserver * CHnRepositoryOpenItemObserver::NewL(
+        THnMdCommonPointers* aCmnPtrs, const TUid aRepositoryUid, const TUint32 aId )
+    {
+    CHnRepositoryOpenItemObserver * self = CHnRepositoryOpenItemObserver::NewLC(
+            aCmnPtrs, aRepositoryUid, aId );
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+CHnRepositoryOpenItemObserver * CHnRepositoryOpenItemObserver::NewLC(
+        THnMdCommonPointers* aCmnPtrs, const TUid aRepositoryUid, const TUint32 aId )
+    {
+    CHnRepositoryOpenItemObserver * self = new (ELeave) CHnRepositoryOpenItemObserver(
+            aCmnPtrs, aId );
+    CleanupStack::PushL(self);
+    self->ConstructL( aRepositoryUid );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CHnRepositoryOpenItemObserver::ConstructL( const TUid aRepositoryUid )
+    {
+    CHnRepositoryObserver::ConstructL( aRepositoryUid );
+    TInt ret = iRepository->Create( iId, KBlank );
+    iNotifyHandler = CCenRepNotifyHandler::NewL( *this, *iRepository,
+            CCenRepNotifyHandler::EStringKey, iId );
+    iNotifyHandler->StartListeningL();
+    }
+
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+CHnRepositoryOpenItemObserver::CHnRepositoryOpenItemObserver( 
+        THnMdCommonPointers* aCmnPtrs, TUint32 aId  ) :
+            CHnRepositoryObserver( aCmnPtrs, aId )
+    {
+    }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+CHnRepositoryOpenItemObserver::~CHnRepositoryOpenItemObserver()
+    {
+    iRepository->Delete( iId );
+    delete iServiceHandler;
+    }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CHnRepositoryOpenItemObserver::HandleNotifyString(
+        TUint32 aId, const TDesC16& aNewValue )
+    {
+    TRAP_IGNORE( HandleNotifyStringL( aId, aNewValue ) );
+    }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CHnRepositoryOpenItemObserver::HandleNotifyStringL(
+        TUint32 aId, const TDesC16& aNewValue )
+    {
+    DEBUG(("_MM_:CHnRepositoryOpenItemObserver::HandleNotifyStringL IN"));
+    DEBUG(("\tID: %d : %S", aId, &aNewValue));
+
+    // Open item
+    if( aId == iId && aNewValue.Length())
+        {
+        ShowFolderL( aNewValue );
+        }
+    }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+TInt CHnRepositoryOpenItemObserver::HandleNotifyL(
+        TInt /*aCmdId*/,
+        TInt aEventId,
+        CLiwGenericParamList& aEventParamList,
+        const CLiwGenericParamList& /*aInParamList*/)
+    {
+    DEBUG(("_MM_:CHnRepositoryOpenItemObserver::HandleNotifyL IN"));
+    if( aEventId == KLiwEventCanceled )
+        {
+        return KErrNotFound;
+        }
+    else
+        {
+        TInt pos( 0 );
+        const TLiwGenericParam* first = aEventParamList.FindFirst(
+                pos, KReturnValue8() );
+        if( pos == KErrNotFound )
+            {
+            return KErrNotFound;
+            }
+
+        TInt count = first->Value().AsList()->Count();
+        if( count == 0 )
+            {
+            return KErrNotFound;
+            }
+
+        TLiwVariant varId;
+        varId.PushL();
+        TLiwVariant varAppGroupName;
+        varAppGroupName.PushL();
+        TLiwVariant varSuiteName;
+        varSuiteName.PushL();
+        TLiwVariant varChildrenCount;
+        varChildrenCount.PushL();
+
+        HnLiwUtils::GetVariantL( aEventParamList, KIdPath8, 0, varId );
+        HnLiwUtils::GetVariantL( aEventParamList, KAppGroupNamePath8, 0, varAppGroupName );
+        HnLiwUtils::GetVariantL( aEventParamList, KTitleNamePath8, 0, varSuiteName );
+        HnLiwUtils::GetVariantL( aEventParamList, KChildrenCountPath8, 0, varChildrenCount );
+
+        CLiwGenericParamList* paramList = CLiwGenericParamList::NewL();
+        CleanupStack::PushL( paramList );
+
+        CLiwDefaultMap* map = CLiwDefaultMap::NewLC();
+
+        paramList->AppendL( TLiwGenericParam( KSuiteName8, TLiwVariant(
+                KFolderSuite ) ) );
+
+        map->InsertL( KSuiteName8, varSuiteName );
+        map->InsertL( KFolderId8, varId );
+        map->InsertL( KRemoveLocked8, TLiwVariant( KStringFalse8 ) );
+        map->InsertL( KParentFolderId8, varId );
+        map->InsertL( KTmpParentFolderId8, varId );
+        map->InsertL( KMcsAppGroupName8, varAppGroupName );
+
+        paramList->AppendL( TLiwGenericParam( KParams8, TLiwVariant( map ) ) );
+
+        CleanupStack::PopAndDestroy( map );
+
+        while( iCmnPtrs->iModel->LoadedSuitesCount() > 1 )
+            {
+            CHnMdSuite* suite = iCmnPtrs->iModel->GetLastSuite();
+            iCmnPtrs->iContainer->PopSuiteModelL( suite->SuiteName() );
+            iCmnPtrs->iModel->DeleteLastSuite();
+            }
+
+        if( iCmnPtrs->iContainer->GetLastSuiteModel()->CustomId()
+                != varId.AsTInt64() )
+            {
+            iCmnPtrs->iModelEventObserver->HandleModelEventL(
+                    KNewSuiteLoadedMdEvent, *paramList );
+            iCmnPtrs->iModel->QueueForeground(
+                    CHnMdModel::EWhenCurrentTopSuiteIsEvaluated );
+            }
+        else
+            {
+            iCmnPtrs->iContainer->GetLastSuiteModel()->NotifyObserversL(
+                    ESuiteModelInitialized );
+            CLiwGenericParamList* paramList = CLiwGenericParamList::NewL();
+            CleanupStack::PushL( paramList );
+            iCmnPtrs->iModelEventObserver->HandleModelEventL(
+                    KAppGainForeground, *paramList );
+            CleanupStack::PopAndDestroy( paramList );
+            }
+
+        iRepository->Set( iId, KBlank ); // reset key repository to empty string
+
+        CleanupStack::PopAndDestroy( paramList );
+        CleanupStack::PopAndDestroy( &varChildrenCount );
+        CleanupStack::PopAndDestroy( &varSuiteName );
+        CleanupStack::PopAndDestroy( &varAppGroupName );
+        CleanupStack::PopAndDestroy( &varId );
+        }
+
+    DEBUG(("_MM_:CHnRepositoryOpenItemObserver::HandleNotifyL OUT"));
+    return KErrNone;
+    }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CHnRepositoryOpenItemObserver::ShowFolderL( const TDesC16& aFolderId )
+    {
+    CHnMdBaseKey* inDataKey = HnMdKeyFactory::CreateL(
+            KInData8, KKeyTypeMap, KDefaultParentId8 );
+    CleanupStack::PushL( inDataKey );
+    inDataKey->AddSubKeyL(
+            HnMdKeyFactory::CreateL( KType8, KKeyTypeString, KMenuFolder8 ) );
+    inDataKey->AddSubKeyL(
+            HnMdKeyFactory::CreateL( KIdParam, KKeyTypeInteger, aFolderId ) );
+    inDataKey->AddSubKeyL(
+            HnMdKeyFactory::CreateL( KParentOnly8, KKeyTypeBoolean, KStringTrue8 ) );
+
+    RPointerArray< CHnMdBaseKey > data;
+    CleanupClosePushL( data );
+    data.Append( inDataKey );
+
+    CHnMdBaseKey* serviceData = HnMdKeyFactory::CreateL(
+        KServiceContentName, KKeyTypeString, KMatrixMenuData );
+    CleanupStack::PushL( serviceData );
+
+    RPointerArray< CHnMdBaseKey> constructor;
+    CleanupClosePushL( constructor );
+    constructor.Append( serviceData );
+    CLiwGenericParamList* constructorLiw = CLiwGenericParamList::NewLC();
+    CLiwGenericParamList* commandLiw = CLiwGenericParamList::NewLC();
+    HnLiwUtils::SetGenericParamListL( constructor, *constructorLiw );
+    HnLiwUtils::SetGenericParamListL( data, *commandLiw );
+
+    TBuf8< KMaxLength > interface( KMCSDataSourceInterface8 );
+
+    delete iServiceHandler;
+    iServiceHandler = NULL;
+    iServiceHandler = CHnServiceHandler::NewL(
+            KMCSService8, interface, KCmdGetList8,
+            EServiceModeAsynchronous, constructorLiw, commandLiw );
+
+    CleanupStack::Pop( commandLiw );
+    CleanupStack::Pop( constructorLiw );
+
+    iServiceHandler->ExecuteL( this );
+
+    CleanupStack::PopAndDestroy( &constructor );
+    CleanupStack::PopAndDestroy( serviceData );
+    CleanupStack::PopAndDestroy( &data );
+    CleanupStack::PopAndDestroy( inDataKey );
+
+    }
+
 // End of File
Binary file menufw/menusuites/foldersuite/loc/matrixmenudata.loc has changed
--- a/taskswitcher/taskswitcherui/taskswitcherapp/inc/tsfastswaparea.h	Tue Sep 14 20:58:58 2010 +0300
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/inc/tsfastswaparea.h	Wed Sep 15 12:00:00 2010 +0300
@@ -303,6 +303,11 @@
     void RenderContentL( );
     
     /**
+     * Prepare bitmap for item.
+     */
+    CGulIcon* CreateItemIconLC( CTsFswEntry* aEntry, TBool aIsScreenshot );
+    
+    /**
      * Creates the ganes grid control.
      */
     void ReCreateGridL();
@@ -384,6 +389,11 @@
      */
     TBool LongTapAnimForPos( const TPoint& aHitPoint );
     
+    /**
+     * Count grid rectangle based on given item position
+     */
+    TRect CountCenteredGridRect( TPoint aItemPosition);
+    
 private: // Data
     
     // parent control
@@ -458,6 +468,7 @@
     
     // Screenshot handling
     RArray<TInt> iPrevScreenshots;
+    RArray<TInt> iPrevWgIds;
     };
 
 #endif // TSFASTSWAPAREA_H
--- a/taskswitcher/taskswitcherui/taskswitcherapp/inc/tsfastswapareautils.h	Tue Sep 14 20:58:58 2010 +0300
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/inc/tsfastswapareautils.h	Wed Sep 15 12:00:00 2010 +0300
@@ -198,6 +198,17 @@
     CFbsBitmap* CopyBitmapL( TInt aFbsHandle, TSize aSize, TBool aIsScreenshot );
     
     /**
+     * Duplicates handle to bitmap.
+     */
+    CFbsBitmap* DuplicateBitmapLC( TInt aFbsHandle );
+    
+    /**
+     * Duplicates handle to bitmap.
+     */
+    void ScaleBitmapL( CFbsBitmap* aSourceBitmap,
+            CFbsBitmap* aTargetBitmap );
+    
+    /**
      * Cancels ongoing scale tasks
      */
     void CancelScaleTasks();
--- a/taskswitcher/taskswitcherui/taskswitcherapp/src/tsappui.cpp	Tue Sep 14 20:58:58 2010 +0300
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/src/tsappui.cpp	Wed Sep 15 12:00:00 2010 +0300
@@ -584,10 +584,8 @@
     TSLOG_CONTEXT( MoveAppToForeground, TSLOG_LOCAL );
     TSLOG_IN();
 
-    if ( !iUiStarted )
-        {
-        TRAP_IGNORE( iUnderAppWgId = WgIdOfUnderlyingAppL(EFalse) );
-        }
+    TRAP_IGNORE( iUnderAppWgId = WgIdOfUnderlyingAppL(EFalse) );
+    
     iUiStarted = ETrue;
     
     // Request window server to bring our application
--- a/taskswitcher/taskswitcherui/taskswitcherapp/src/tsfastswaparea.cpp	Tue Sep 14 20:58:58 2010 +0300
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/src/tsfastswaparea.cpp	Wed Sep 15 12:00:00 2010 +0300
@@ -140,6 +140,7 @@
     delete iLongTapAnimationTimer;
     delete iFastSwapExt;
     iPrevScreenshots.Close();
+    iPrevWgIds.Close();
     delete iEventSupressor;
     }
 
@@ -273,7 +274,10 @@
 
     CleanupStack::PopAndDestroy(&rects);
     
-    iGrid->SetRect(gridAppPane.Rect());
+    TPoint position = iFastSwapExt->ItemViewPosition( SelectedIndex() );
+    iGrid->SetRect( CountCenteredGridRect( position ) );
+
+    
     
     CTsAppUi* appUi = static_cast<CTsAppUi*>(iEikonEnv->AppUi());
     
@@ -692,6 +696,8 @@
     CleanupClosePushL(strokeItemArray);
     RArray<TInt> screenshotList;
     CleanupClosePushL(screenshotList);
+    RArray<TInt> wgIdList;
+    CleanupClosePushL(wgIdList);
     
     // Update view based on number of items
     LayoutGridViewL( iArray.Count() );
@@ -711,20 +717,15 @@
         formAppName.Append(appName);
         textArray->AppendL(formAppName);
         CleanupStack::PopAndDestroy(&formAppName);
-        TSize sz = iFastSwapExt->PreferredImageSize();
         
         // take the screenshot or appicon+mask and make a copy and scale
-        CFbsBitmap* bitmap = 0;
         TInt h = iArray[i]->ScreenshotHandle();
         TSLOG2( TSLOG_INFO, "'%S' screenshot handle %d", &appName, h );
-        TInt maskh = 0;
-        CFbsBitmap* mask = 0;
         TBool isScreenshot( ETrue );
         if ( !h )
             {
             // No screenshot, take app icon
             h = iArray[i]->AppIconBitmapHandle();
-            maskh = iArray[i]->AppIconMaskHandle();
             isScreenshot = EFalse;
             TSLOG1( TSLOG_INFO, "using appicon, handle = %d", h );
             }
@@ -737,36 +738,13 @@
         
         // check screenshot - if it exists already, use it
         // so there is no unnecessary scaling performed
+        CGulIcon* icon = CreateItemIconLC( iArray[i], isScreenshot );
+        iconArray->AppendL(icon);
+        CleanupStack::Pop( icon ); //icon
+        
         screenshotList.AppendL( h );
-        TInt idx = iPrevScreenshots.Find( h );
-        if ( idx != KErrNotFound && oldIconArray && idx < oldIconArray->Count() )
-            {
-            CGulIcon* existingIcon = oldIconArray->At( idx );
-            if ( existingIcon->Bitmap() )
-                {
-                h = existingIcon->Bitmap()->Handle();
-                if ( existingIcon->Mask() )
-                    {
-                    maskh = existingIcon->Mask()->Handle();
-                    }
-                isScreenshot = EFalse;
-                }
-            }
-        
-        // create bitmap for grid item
-        bitmap = iFastSwapExt->CopyBitmapL( h, sz, isScreenshot );
-        CleanupStack::PushL( bitmap );
-        if ( maskh )
-            {
-            mask = iFastSwapExt->CopyBitmapL( maskh, sz, EFalse );
-            }
-        CleanupStack::PushL( mask );
-
-        CGulIcon* icon = CGulIcon::NewL( bitmap, mask );
-        CleanupStack::PushL(icon);
-        iconArray->AppendL(icon);
-        CleanupStack::Pop( 3, bitmap ); // mask, bitmap, icon
-        
+        wgIdList.AppendL( iArray[i]->WgId() );
+                
         // Check if item can be closed
         if ( CanClose(i) && AknLayoutUtils::PenEnabled() )
             {
@@ -775,10 +753,14 @@
         }
     // Update screenshot list
     iPrevScreenshots.Reset();
-    for ( TInt i = 0; i < screenshotList.Count(); i++ )
+    iPrevWgIds.Reset();
+    for ( TInt i = 0; 
+            i < screenshotList.Count() && i < wgIdList.Count(); i++ )
         {
         iPrevScreenshots.AppendL( screenshotList[i] );
+        iPrevWgIds.AppendL( wgIdList[i] );
         }
+    CleanupStack::PopAndDestroy( &wgIdList );
     CleanupStack::PopAndDestroy( &screenshotList );
     
     // Setup grid
@@ -814,6 +796,87 @@
     TSLOG_OUT();
     }
 
+// --------------------------------------------------------------------------
+// CTsFastSwapArea::CreateItemIconLC
+// --------------------------------------------------------------------------
+//
+CGulIcon* CTsFastSwapArea::CreateItemIconLC( CTsFswEntry* aEntry,
+                TBool aIsScreenshot )
+    {
+    TSize sz = iFastSwapExt->PreferredImageSize();
+    CArrayPtr<CGulIcon>* oldIconArray =
+            iGrid->ItemDrawer()->FormattedCellData()->IconArray();
+    
+    CFbsBitmap* bitmap = NULL;
+    CFbsBitmap* mask = NULL;
+    
+    TInt h = 0;
+    TInt maskh = 0;
+    if ( aIsScreenshot )
+        {
+        h = aEntry->ScreenshotHandle();
+        }
+    else
+        {
+        h = aEntry->AppIconBitmapHandle();
+        maskh = aEntry->AppIconMaskHandle();
+        }
+        
+    TInt idx = iPrevScreenshots.Find( h );
+    TInt wgIdIdx = iPrevWgIds.Find( aEntry->WgId() );
+        
+    if ( idx != KErrNotFound && idx == wgIdIdx 
+            && oldIconArray && idx < oldIconArray->Count() )
+        {
+        CGulIcon* existingIcon = oldIconArray->At( idx );
+        if ( existingIcon->Bitmap() )
+            {
+            bitmap = iFastSwapExt->DuplicateBitmapLC(
+                    existingIcon->Bitmap()->Handle() );
+            if ( existingIcon->Mask() )
+                {
+                maskh = existingIcon->Mask()->Handle();
+                mask = iFastSwapExt->DuplicateBitmapLC( maskh );
+                }
+            }
+        }
+    else if ( idx == KErrNotFound && wgIdIdx != KErrNotFound
+            && oldIconArray && wgIdIdx < oldIconArray->Count() )
+        {
+        CGulIcon* existingIcon = oldIconArray->At( wgIdIdx );
+        if ( existingIcon->Bitmap() 
+                && !existingIcon->Mask() )
+            {
+            bitmap = iFastSwapExt->DuplicateBitmapLC(
+                    existingIcon->Bitmap()->Handle() );
+            CFbsBitmap* source = iFastSwapExt->DuplicateBitmapLC( h );
+            iFastSwapExt->ScaleBitmapL( source, bitmap );
+            CleanupStack::Pop( source );
+            }
+        }
+    
+    // create bitmap for grid item
+    if ( !bitmap )
+        {
+        bitmap = iFastSwapExt->CopyBitmapL( h, sz, aIsScreenshot );
+        CleanupStack::PushL( bitmap );
+        }
+    if ( !mask && maskh )
+        {
+        mask = iFastSwapExt->CopyBitmapL( maskh, sz, EFalse );
+        CleanupStack::PushL( mask );
+        }
+    else if ( !mask )
+        {
+        CleanupStack::PushL( mask );
+        }
+    
+    CGulIcon* icon = CGulIcon::NewL( bitmap, mask );
+    CleanupStack::Pop( 2, bitmap );
+    CleanupStack::PushL( icon );
+    return icon;
+    }
+
 
 // --------------------------------------------------------------------------
 // CTsFastSwapArea::CountComponentControls
@@ -1074,13 +1137,18 @@
     else if ( aPointerEvent.iType == TPointerEvent::EButton1Up )
         {
         CancelLongTapAnimation( EFalse );
-        if( iActivateOnPointerRelease != TPoint() ||
-            iSupressDrag)
+        if( iActivateOnPointerRelease != TPoint() )
             {
             iHandlePointerCandidate = ETrue;
-            TapL(iActivateOnPointerRelease);
+            TapL( iActivateOnPointerRelease );
             iActivateOnPointerRelease = TPoint();
             }
+        else if( iSupressDrag )
+            {
+            iSupressDrag = EFalse;
+            iHandlePointerCandidate = ETrue;
+            TapL( iTapEvent.iParentPosition );
+            }
         }
     }
 
@@ -1525,17 +1593,7 @@
     
     if ( aDrawNow )
         {
-        TInt currentXPos = aPoint.iX;
-        currentXPos -= Rect().Width() / 2;
-        TRect gridViewRect = Rect();
-        gridViewRect.iTl.iX = -currentXPos;
-        // Take edge offset into account
-        gridViewRect.iTl.iX += Rect().iTl.iX;
-        if(GridItemCount() && GridItemCount() <= iMaxItemsOnScreen)
-            {
-            // Center view
-            gridViewRect.iTl.iX += ( Rect().Width() - GridItemCount() * iGridItemWidth ) / 2;
-            }
+        TRect gridViewRect = CountCenteredGridRect( aPoint );
         //iParent.DrawDeferred();
         iGrid->DrawDeferred();
         iGrid->SetRect( gridViewRect );
@@ -1598,6 +1656,10 @@
             {
             iActivateOnPointerRelease = aPoint;
             }
+        else
+            {
+            iSupressDrag = EFalse;
+            }
         iGrid->ShowHighlight();
         DrawNow();
         }
@@ -1761,4 +1823,24 @@
     return EFalse;
     }
 
+// -----------------------------------------------------------------------------
+// CTsFastSwapArea::CountCenteredGridRect
+// -----------------------------------------------------------------------------
+//
+TRect CTsFastSwapArea::CountCenteredGridRect( TPoint aItemPosition)
+    {
+    TInt currentXPos = aItemPosition.iX;
+    currentXPos -= Rect().Width() / 2;
+    TRect gridViewRect = Rect();
+    gridViewRect.iTl.iX = -currentXPos;
+    // Take edge offset into account
+    gridViewRect.iTl.iX += Rect().iTl.iX;
+    if(GridItemCount() && GridItemCount() <= iMaxItemsOnScreen)
+        {
+        // Center view
+        gridViewRect.iTl.iX += ( Rect().Width() - GridItemCount() * iGridItemWidth ) / 2;
+        }
+    return gridViewRect;
+    }
+
 // End of file
--- a/taskswitcher/taskswitcherui/taskswitcherapp/src/tsfastswapareautils.cpp	Tue Sep 14 20:58:58 2010 +0300
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/src/tsfastswapareautils.cpp	Wed Sep 15 12:00:00 2010 +0300
@@ -514,9 +514,7 @@
     CFbsBitmap* ret = new (ELeave) CFbsBitmap();
     CleanupStack::PushL( ret );
 
-    CFbsBitmap* bmp = new (ELeave) CFbsBitmap();
-    CleanupStack::PushL( bmp );
-    User::LeaveIfError( bmp->Duplicate( aFbsHandle ) );
+    CFbsBitmap* bmp = DuplicateBitmapLC( aFbsHandle );
     
     // First scale using normal method, to show "draft" screenshots.
     // Do not always use aSize, preserving the aspect ratio is quite
@@ -528,11 +526,7 @@
     // Second, if it is screenshot, perform quality improvement scaling
     if ( aIsScreenshot )
         {
-        CTsBitmapScaleTask* rotaTask = new (ELeave) CTsBitmapScaleTask( *this );
-        CleanupStack::PushL( rotaTask );
-        iScaleTasks.AppendL( rotaTask );
-        rotaTask->StartLD( bmp, ret ); // ownership of bmp transferred
-        CleanupStack::Pop( rotaTask );
+        ScaleBitmapL( bmp, ret );
         CleanupStack::Pop( bmp );
         }
     else
@@ -544,6 +538,32 @@
     return ret;
     }
 
+// --------------------------------------------------------------------------
+// CTsFastSwapAreaExtension::DuplicateBitmapL
+// --------------------------------------------------------------------------
+//
+CFbsBitmap* CTsFastSwapAreaExtension::DuplicateBitmapLC( TInt aFbsHandle  )
+    {
+    CFbsBitmap* bmp = new (ELeave) CFbsBitmap();
+    CleanupStack::PushL( bmp );
+    User::LeaveIfError( bmp->Duplicate( aFbsHandle ) );
+    return bmp;
+    }
+
+// --------------------------------------------------------------------------
+// CTsFastSwapAreaExtension::ScaleBitmapL
+// --------------------------------------------------------------------------
+//
+void CTsFastSwapAreaExtension::ScaleBitmapL( CFbsBitmap* aSourceBitmap,
+        CFbsBitmap* aTargetBitmap )
+    {
+    CTsBitmapScaleTask* rotaTask = new (ELeave) CTsBitmapScaleTask( *this );
+    CleanupStack::PushL( rotaTask );
+    iScaleTasks.AppendL( rotaTask );
+    rotaTask->StartLD( aSourceBitmap, aTargetBitmap ); 
+    // ownership of bmp transferred
+    CleanupStack::Pop( rotaTask );
+    }
 
 // --------------------------------------------------------------------------
 // CTsFastSwapAreaExtension::CancelScaleTasks