Revision: 201003 RCL_3 PDK_3.0.h
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 19 Feb 2010 23:04:46 +0200
branchRCL_3
changeset 4 8ca85d2f0db7
parent 0 2f259fa3e83a
child 5 6061fc1ea56b
child 8 b57f3d42a10e
child 9 aabf2c525e0f
Revision: 201003 Kit: 201007
applicationinterworkingfw/ServiceHandler/src/AiwServiceHandlerImpl.cpp
classicui_plat/avkon_localised_texts_api/loc/avkon.loc
classicui_plat/avkon_settings_api/inc/AvkonInternalCRKeys.h
classicui_plat/extended_aiw_criteria_api/inc/AiwContactSelectionDataTypes.h
classicui_plat/extended_aiw_criteria_api/inc/AiwDialDataTypes.h
classicui_plat/extended_aiw_criteria_api/inc/AiwPoCParameters.h
classicui_plat/extended_editors_api/inc/AknPhoneNumberEditor.h
classicui_plat/extended_options_menu_api/inc/akncollection.h
classicui_plat/extended_options_menu_api/inc/aknitemactionmenu.h
classicui_plat/ganes_api/inc/ganes/HgScroller.h
classicui_plat/legacy_ui_framework_headers_api/inc/calslbs.h
classicui_plat/media_shared_document_api/inc/MediaSharedDocument.h
classicui_pub/editors_api/inc/EIKEDWIN.H
classicui_pub/editors_api/inc/EikCcpu.h
classicui_pub/group/bld.inf
classicui_pub/help_launcher_api/group/bld.inf
classicui_pub/help_launcher_api/inc/HLPLCH.H
classicui_pub/lists_api/inc/EIKLBX.H
classicui_pub/lists_api/inc/eikfrlb.h
classicui_pub/lists_api/tsrc/conf/tctestsdklistseiklbx.cfg
classicui_pub/lists_api/tsrc/conf/ui_testsdklistseiklbx.cfg
classicui_pub/lists_api/tsrc/inc/testsdklists.h
classicui_pub/lists_api/tsrc/src/testsdklistsblocks.cpp
classicui_pub/lists_api/tsrc/src/testsdklistsblockseiklbx.cpp
classicui_pub/options_menu_api/inc/EIKMENUP.H
classicui_pub/popups_api/inc/AknPopupField.h
classicui_pub/screen_saver_api/inc/ScreensaverpluginIntDef.h
classicui_pub/screen_saver_api/inc/ScreensaverpluginIntDef.inl
classicui_pub/status_pane_api/inc/eikspane.h
classicui_pub/ui_framework_definitions_api/inc/avkon.hrh
classicui_pub/ui_framework_definitions_api/inc/avkon.rh
classicui_pub/ui_framework_utilities_api/inc/AknUtils.h
classicui_pub/ui_framework_utilities_api/tsrc/conf/tctestsdkuifwutilaknutils.cfg
classicui_pub/ui_framework_utilities_api/tsrc/conf/ui_testsdkuifwutilaknutils.cfg
classicui_pub/ui_framework_utilities_api/tsrc/inc/testsdkuifwutil.h
classicui_pub/ui_framework_utilities_api/tsrc/src/testsdkuifwutilblocks.cpp
classicui_pub/ui_framework_utilities_api/tsrc/src/testsdkuifwutilblocksaknutils.cpp
commonuis/CommonDialogs/group/iconlist.txt
commonuis/CommonDialogs/inc/caknmemoryselectionmodelmultidrive.h
commonuis/CommonDialogs/src/caknmemoryselectiondialogmultidrive.cpp
commonuis/CommonDialogs/src/caknmemoryselectionmodelmultidrive.cpp
commonuis/CommonUi/src/DocumentHandler.cpp
commonuis/CommonUi/src/FindItemDialog.cpp
commonuis/CommonUi/src/FindItemMenu.cpp
commonuisupport/uikon/srvinc/EIKBAKSV.H
commonuisupport/uikon/srvsrc/EIKBAKSV.CPP
lafagnosticuifoundation/uigraphicsutils/tulsrc/tuladdressstringtokenizer.cpp
lafagnosticuifoundation/uigraphicsutils/tulsrc/tulphonenumberutils.cpp
psln/PslnLibraryLoaders/src/pslnbrowserlaunchloader.cpp
psln/help/data/xhtml.zip
psln/help/inc/skins.hlp.hrh
uifw/AknGlobalUI/AknCapServer/group/AknCapServer.mmp
uifw/AknGlobalUI/AknCapServer/inc/AknFastswapWindowControl.h
uifw/AknGlobalUI/AknCapServer/inc/AknKeyFilter.h
uifw/AknGlobalUI/AknCapServer/inc/aknslidestatusnotifier.h
uifw/AknGlobalUI/AknCapServer/src/AknCapServerEntry.cpp
uifw/AknGlobalUI/AknCapServer/src/AknFastswapWindowControl.cpp
uifw/AknGlobalUI/AknCapServer/src/aknKeyFilter.cpp
uifw/AknGlobalUI/AknCapServer/src/akncapserverdiscreetpopuphandler.cpp
uifw/AknGlobalUI/AknCapServer/src/aknslidestatusnotifier.cpp
uifw/AvKon/Avkon2MifHeader/mifheader.cdl.custom.h
uifw/AvKon/EABI/AVKONU.DEF
uifw/AvKon/aknhlist/inc/akntreelistphysicshandler.h
uifw/AvKon/aknhlist/src/akntreelistphysicshandler.cpp
uifw/AvKon/aknhlist/src/akntreelistview.cpp
uifw/AvKon/aknphysics/inc/aknphysicsconstants.h
uifw/AvKon/bwins/AVKONU.def
uifw/AvKon/conf/s60/avkon.confml
uifw/AvKon/conf/s60/avkon_101F876E.crml
uifw/AvKon/group/avkon.mmp
uifw/AvKon/group/avkon_icons_dc.mk
uifw/AvKon/inc/akncombinedpane.h
uifw/AvKon/notifsrc/AknSoftNotifier.cpp
uifw/AvKon/notifsrc/aknNotify.mmp
uifw/AvKon/src/AknCharMap.cpp
uifw/AvKon/src/AknEcs.cpp
uifw/AvKon/src/AknNoteDialog.cpp
uifw/AvKon/src/AknPhoneNumberEditor.cpp
uifw/AvKon/src/AknPopupField.cpp
uifw/AvKon/src/AknPopupSettingPage.cpp
uifw/AvKon/src/AknPreviewPopUpController.cpp
uifw/AvKon/src/AknProgressDialog.cpp
uifw/AvKon/src/AknQueryControl.cpp
uifw/AvKon/src/AknQueryDialog.cpp
uifw/AvKon/src/AknRadioButtonSettingPage.cpp
uifw/AvKon/src/AknSettingPage.cpp
uifw/AvKon/src/AknStaticNoteDialog.cpp
uifw/AvKon/src/AknStatuspaneUtils.cpp
uifw/AvKon/src/AknTransparentCameraSettingPage.cpp
uifw/AvKon/src/AknWaitNoteWrapper.cpp
uifw/AvKon/src/Aknslider.cpp
uifw/AvKon/src/aknbattery.cpp
uifw/AvKon/src/akncombinedpane.cpp
uifw/AvKon/src/akndigitalclock.cpp
uifw/AvKon/src/akndiscreetpopup.cpp
uifw/AvKon/src/akndiscreetpopupcontrol.cpp
uifw/AvKon/src/akndiscreetpopupdrawer.cpp
uifw/AvKon/src/akndiscreetpopupserverhandler.cpp
uifw/AvKon/src/aknenv.cpp
uifw/AvKon/src/akngridview.cpp
uifw/AvKon/src/aknlib.cpp
uifw/AvKon/src/aknlistquerydialog.cpp
uifw/AvKon/src/aknlists.cpp
uifw/AvKon/src/aknlongtapanimation.cpp
uifw/AvKon/src/aknlongtapdetector.cpp
uifw/AvKon/src/aknmessagequerydialog.cpp
uifw/AvKon/src/aknnavi.cpp
uifw/AvKon/src/aknnotecontrol.cpp
uifw/AvKon/src/aknprogresstimer.cpp
uifw/AvKon/src/aknqueryeditorindicator.cpp
uifw/AvKon/src/aknsignal.cpp
uifw/AvKon/src/aknstatuspanedatapublisher.cpp
uifw/AvKon/src/aknstatuspanedigitalclock.cpp
uifw/AvKon/src/akntitle.cpp
uifw/AvKon/src/aknutils.cpp
uifw/AvKon/src/eikfrlb.cpp
uifw/AvKon/src/eikslb.cpp
uifw/AvKon/srcdata/avkon.rss
uifw/AvKon/tsrc/bc/S60_SDK3.0/bctestptieng/inc/bctestkeymap.h
uifw/AvKon/tsrc/bc/S60_SDK3.0/bctestptieng/inc/bctestqwertymap.h
uifw/AvKon/tsrc/bc/S60_SDK3.0/bctestptieng/src/bctestkeymap.cpp
uifw/AvKon/tsrc/bc/S60_SDK3.0/bctestptieng/src/bctestlan.cpp
uifw/AvKon/tsrc/bc/S60_SDK3.0/bctestptieng/src/bctestptiengine.cpp
uifw/AvKon/tsrc/bc/S60_SDK3.0/bctestptieng/src/bctestqwertymap.cpp
uifw/AvKon/tsrc/bc/S60_SDKMCL/bctestmixmcl/group/bctestmixmcl.mmp
uifw/AvKon/tsrc/bc/S60_SDKMCL/bctestmixmcl/inc/bctestmixmclgeneralcase.h
uifw/AvKon/tsrc/bc/S60_SDKMCL/bctestmixmcl/src/bctestmixmclgeneralcase.cpp
uifw/EikStd/EABI/EIKCOCTLU.DEF
uifw/EikStd/bwins/EIKCOCTLU.DEF
uifw/EikStd/coctlinc/AknDoubleSpanScrollIndicator.h
uifw/EikStd/coctlinc/AknDoubleSpanScrollIndicatorItem.h
uifw/EikStd/coctlinc/EIKSBEXT.H
uifw/EikStd/coctlinc/aknstyluspopupmenucontent.h
uifw/EikStd/coctlsrc/AknClearer.cpp
uifw/EikStd/coctlsrc/AknDoubleSpanScrollIndicator.cpp
uifw/EikStd/coctlsrc/AknEdwinFormExtendedInterfaceProvider.cpp
uifw/EikStd/coctlsrc/EIKBTGPC.CPP
uifw/EikStd/coctlsrc/EIKEDWIN.CPP
uifw/EikStd/coctlsrc/EIKKWIN.CPP
uifw/EikStd/coctlsrc/EIKLBX.CPP
uifw/EikStd/coctlsrc/EIKMENUB.CPP
uifw/EikStd/coctlsrc/EIKMENUP.CPP
uifw/EikStd/coctlsrc/EIKSCRLB.CPP
uifw/EikStd/coctlsrc/EikCcpu.cpp
uifw/EikStd/coctlsrc/FormCursorModifier.cpp
uifw/EikStd/coctlsrc/FormCursorModifierUtils.cpp
uifw/EikStd/coctlsrc/akndoublespanscrollindicatoritem.cpp
uifw/EikStd/coctlsrc/aknedwinphysicshandler.cpp
uifw/EikStd/coctlsrc/aknitemactionmenu.cpp
uifw/EikStd/coctlsrc/aknstyluspopupmenu.cpp
uifw/EikStd/coctlsrc/aknstyluspopupmenucontent.cpp
uifw/EikStd/coctlsrc/aknstyluspopupmenuphysicshandler.cpp
uifw/EikStd/coctlsrc/eikcba.cpp
uifw/EikStd/coctlsrc/eikspane.cpp
uifw/EikStd/coctlsrc/eikspmod.cpp
uifw/EikStd/dlginc/aknrecordinggc.h
uifw/EikStd/dlgsrc/EIKCAPC.CPP
uifw/EikStd/dlgsrc/EIKCAPCA.CPP
uifw/EikStd/dlgsrc/EIKDIALG.CPP
uifw/EikStd/dlgsrc/EIKDLG.MMP
uifw/EikStd/dlgsrc/EIKDPAGE.CPP
uifw/EikStd/dlgsrc/aknformphysics.cpp
uifw/EikStd/dlgsrc/aknrecordinggc.cpp
uifw/EikStd/srvuisrc/EIKSRVUI.CPP
uifw/EikStd/srvuisrc/EIKSRVUI.RSS
uifw/eikctl/src/EIKCLBD.CPP
uifw/ganes/src/HgList.cpp
uifw/ganes/src/HgScrollBufferManager.cpp
uifw/ganes/src/HgScrollbar.cpp
uifw/ganes/src/HgScroller.cpp
uifw/ganes/src/HgVgHelper.cpp
uifw/ganes/src/HgVgLetterPopup.cpp
uifw/ganes/src/HgVgMediaWall.cpp
uifw/ganes/src/HgVgSkinRenderer.cpp
uifw/uiklaf/inc/LAFEDWIN.H
uifw/uiklaf/inc/LAFMENUB.H
uifw/uiklaf/inc/LAFMENUP.H
uifw/uiklaf/inc/laflbx.h
uiutils/AknJapaneseReading/src/AknJapaneseReading.cpp
uiutils/AknJapaneseReading/src/AknJapaneseReadingDLL.cpp
uiutils/Findutil/inc/ChineseFindUtils.h
uiutils/Findutil/inc/FindUtilBase.h
uiutils/Findutil/inc/FindUtilWestern.h
uiutils/Findutil/src/ChineseFindUtils.cpp
uiutils/Findutil/src/FindUtil.cpp
uiutils/Findutil/src/FindUtilBase.cpp
uiutils/Findutil/src/FindUtilChinese.cpp
uiutils/Findutil/src/FindUtilJapanese.cpp
uiutils/Findutil/src/FindUtilWestern.cpp
uiutils/gamerecognizer/src/GameRecognizer.cpp
uiutils/group/bld.inf
uiutils/hlplch/bwins/HlplchU.def
uiutils/hlplch/data/lch.rss
uiutils/hlplch/eabi/HLPLCHU.DEF
uiutils/hlplch/group/bld.inf
uiutils/hlplch/group/hlplch.mmp
uiutils/hlplch/inc/hlplch_internal.h
uiutils/hlplch/inc/lch.rh
uiutils/hlplch/src/hlplch.cpp
--- a/applicationinterworkingfw/ServiceHandler/src/AiwServiceHandlerImpl.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/applicationinterworkingfw/ServiceHandler/src/AiwServiceHandlerImpl.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -21,7 +21,7 @@
 
 #include <eikenv.h>
 #include <aiwservicehandler.rsg>
-#include <EIKON.HRH>
+#include <eikon.hrh>
 #include "AiwMenuBinding.h"
 #include "AiwServiceHandlerImpl.h"
 #include "AiwMenu.h"
--- a/classicui_plat/avkon_localised_texts_api/loc/avkon.loc	Tue Feb 02 01:00:49 2010 +0200
+++ b/classicui_plat/avkon_localised_texts_api/loc/avkon.loc	Fri Feb 19 23:04:46 2010 +0200
@@ -4199,5 +4199,70 @@
 //r: TB9.2
 #define qtn_su_note_insert_sim_and_restart "Insert SIM card and restart phone"
 
+//d: Text in touch inputmethod menu list
+//d: Command to switch handwriting input orientation to portrait.
+//l: list_single_pane_t1_cp2
+//r: TB9.2 
+#define qtn_tin_option_menu_to_portrait_hwr "To portrait handwriting"
+
+//d: Text in touch inputmethod menu list
+//d: Command to switch handwriting input orientation to landscape.
+//l: list_single_pane_t1_cp2
+//r: TB9.2 
+#define qtn_tin_option_menu_to_landscape_hwr "To landscape handwriting"
+
+//d: Text in touch inputmethod menu list
+//d: Command to switch to virtual key based input methods.
+//l: list_single_pane_t1_cp2
+//r: TB9.2 
+#define qtn_tin_option_menu_switch_to_vkey_input "Switch to virtual key based input"
+
+//d: Text in touch inputmethod menu list
+//d: Command to display writing speed setting list.
+//l: list_single_pane_t1_cp2
+//r: TB9.2 
+#define qtn_tin_settings_writing_speed "Writing speed"
+
+//d: Text in touch inputmethod menu list
+//d: Command to display guide line setting list.
+//l: list_single_pane_t1_cp2
+//r: TB9.2 
+#define qtn_tin_settings_guiding_line "Guiding Line"
+
+//d: Text in Chinese ITUT popup note
+//d: Notification that clarify that only Chinese character can be input
+//l: popup_note_window
+//r: TB9.2
+#define qtn_chi_chinese_user_db_note_invalid_phrase "Invalid phrase"
+
+//d: Text in Chinese ITUT popup note
+//d: Notification that clarify that the phrase is not exist in database
+//l: popup_note_window
+//r: TB9.2
+#define qtn_chi_chinese_user_db_note_phrase_not_existed "The phrase is not exist in database"
+
+//d: Text in Chinese ITUT popup note
+//d: Notification that clarify that the database has no space to save the new phrase
+//l: popup_note_window
+//r: TB9.2
+#define qtn_chi_chinese_user_db_note_db_have_no_space "The database has no space now"
+
+//d: Text in Chinese ITUT popup note
+//d: Notification that clarify that the new phrase is too long
+//l: popup_note_window
+//r: TB9.2
+#define qtn_chi_chinese_user_db_note_phrase_too_long "The phrase is too long"
+
+//d: Text in Chinese ITUT popup wait note
+//d: Notification that it is deleting phrase
+//l: popup_note_wait_window
+//r: TB9.2
+#define qtn_chi_chinese_user_db_note_deleting_phrases "It is deleting phrases"
+
+//d: Text in Chinese ITUT confirmation query prompt
+//d: Notification that confirm to delete the phrases
+//l: popup_note_window
+//r: TB9.2
+#define qtn_chi_chinese_user_db_note_confirm_deletions "Delete %N Phrase?"
 
 // End of File
--- a/classicui_plat/avkon_settings_api/inc/AvkonInternalCRKeys.h	Tue Feb 02 01:00:49 2010 +0200
+++ b/classicui_plat/avkon_settings_api/inc/AvkonInternalCRKeys.h	Fri Feb 19 23:04:46 2010 +0200
@@ -278,6 +278,22 @@
  */
 const TUint32 KAknEmotionResourceFileName = 0x00000015;
 
+/**
+ * they store the type of keyboard in slide close/slide open modes
+ * according to the following enumeration:
+ * 0 = no keyboard
+ * 1 = 12 keys keyboard
+ * 2 = 4x12 qwerty keyboard
+ * 3 = 4x10 qwerty keyboard
+ * 4 = 3x11 qwerty keyboard
+ * 5 = half qwerty keyboard
+ * 6 = custom qwerty keyboard
+ * 7 = max layout keyboard
+ */
+const TUint32 KAknKeyboardSlideClose = 0x00000016;
+
+const TUint32 KAknKeyboardSlideOpen = 0x00000017;
+
 const TUid KCRUidLeaveAppsInMemory = { 0x102858F2 };
 
 /**
--- a/classicui_plat/extended_aiw_criteria_api/inc/AiwContactSelectionDataTypes.h	Tue Feb 02 01:00:49 2010 +0200
+++ b/classicui_plat/extended_aiw_criteria_api/inc/AiwContactSelectionDataTypes.h	Fri Feb 19 23:04:46 2010 +0200
@@ -22,7 +22,7 @@
 #ifndef __AIWCONTACTSELECTIONDATATYPES_H__
 #define __AIWCONTACTSELECTIONDATATYPES_H__
 
-#include <aiwgenericparam.hrh>
+#include <AiwGenericParam.hrh>
 
 class RVPbkContactFieldDefaultPriorities;
 class CVPbkFieldTypeSelector;
@@ -838,7 +838,7 @@
 typedef TPckgBuf<TAiwSingleItemSelectionDataV3>     TAiwSingleItemSelectionDataV3Pckg;
 typedef TPckgBuf<TAiwMultipleItemSelectionDataV1>   TAiwMultipleItemSelectionDataV1Pckg;
     
-#include <aiwcontactselectiondatatypes.inl>
+#include <AiwContactSelectionDataTypes.inl>
 
 #endif // __AiwContactSelectionDataTypes_H__
 
--- a/classicui_plat/extended_aiw_criteria_api/inc/AiwDialDataTypes.h	Tue Feb 02 01:00:49 2010 +0200
+++ b/classicui_plat/extended_aiw_criteria_api/inc/AiwDialDataTypes.h	Fri Feb 19 23:04:46 2010 +0200
@@ -23,7 +23,7 @@
 #define AIWDIALDATATYPES_H  
 
 #include <cntdef.h>  // For KNullContactId
-#include <tpbkcontactitemfield.h> // For contact item field
+#include <TPbkContactItemField.h> // For contact item field
 
 // CONSTANTS
 
@@ -531,7 +531,7 @@
 
 
 // Inline methods
-#include    <aiwdialdatatypes.inl>
+#include    <AiwDialDataTypes.inl>
 
 
 #endif // AIWDIALDATATYPES_H
--- a/classicui_plat/extended_aiw_criteria_api/inc/AiwPoCParameters.h	Tue Feb 02 01:00:49 2010 +0200
+++ b/classicui_plat/extended_aiw_criteria_api/inc/AiwPoCParameters.h	Fri Feb 19 23:04:46 2010 +0200
@@ -23,7 +23,7 @@
 #define AIWPOCPARAMETERS_H
 
 //  INCLUDES
-#include <aiwpocparameters.hrh>
+#include <AiwPoCParameters.hrh>
 #include <logwrap.h>
 
 // DATA TYPES
@@ -222,7 +222,7 @@
     };
 
 // Inline methods
-#include <aiwpocparameters.inl>
+#include <AiwPoCParameters.inl>
 
 #endif      // AIWPOCPARAMETERS_H   
             
--- a/classicui_plat/extended_editors_api/inc/AknPhoneNumberEditor.h	Tue Feb 02 01:00:49 2010 +0200
+++ b/classicui_plat/extended_editors_api/inc/AknPhoneNumberEditor.h	Fri Feb 19 23:04:46 2010 +0200
@@ -248,7 +248,7 @@
      */
     EXPORT_C void OpenVKB();
 
-
+    void MakeVisible(TBool aVisible);
 private: 
 //new functions, for ccpu support 
     /**
--- a/classicui_plat/extended_options_menu_api/inc/akncollection.h	Tue Feb 02 01:00:49 2010 +0200
+++ b/classicui_plat/extended_options_menu_api/inc/akncollection.h	Fri Feb 19 23:04:46 2010 +0200
@@ -19,6 +19,7 @@
 #define M_AKNCOLLECTION_H
 
 #include <e32std.h>
+#include <coemop.h>
 
 /**
  * Collection state provider.
@@ -34,6 +35,8 @@
     {
 public:
 
+    DECLARE_TYPE_ID( 0x2002C343 )
+
     /**
      * Enum for collection state flags.
      */
--- a/classicui_plat/extended_options_menu_api/inc/aknitemactionmenu.h	Tue Feb 02 01:00:49 2010 +0200
+++ b/classicui_plat/extended_options_menu_api/inc/aknitemactionmenu.h	Fri Feb 19 23:04:46 2010 +0200
@@ -20,6 +20,7 @@
 
 #include <e32base.h>
 #include <eikmobs.h>
+#include <coemop.h>
 
 class MAknCollection;
 class MAknCollectionObserver;
@@ -66,6 +67,8 @@
 
 public:
 
+    DECLARE_TYPE_ID( 0x2002C344 )
+
     /**
      * Two-phased constructor.
      * 
--- a/classicui_plat/ganes_api/inc/ganes/HgScroller.h	Tue Feb 02 01:00:49 2010 +0200
+++ b/classicui_plat/ganes_api/inc/ganes/HgScroller.h	Fri Feb 19 23:04:46 2010 +0200
@@ -23,7 +23,7 @@
 #include <coecntrl.h>
 #include <coemain.h>
 
-#include <AknPhysicsObserverIface.h>
+#include <aknphysicsobserveriface.h>
 #include <aknlongtapdetector.h>
 #include <akncollection.h>
 #include <ganes/HgBufferOwnerIface.h>
--- a/classicui_plat/legacy_ui_framework_headers_api/inc/calslbs.h	Tue Feb 02 01:00:49 2010 +0200
+++ b/classicui_plat/legacy_ui_framework_headers_api/inc/calslbs.h	Fri Feb 19 23:04:46 2010 +0200
@@ -22,7 +22,7 @@
 #ifndef __CALSLBS_H__
 #define __CALSLBS_H__
 
-#include <aknutils.h>
+#include <AknUtils.h>
 
 #endif
 
--- a/classicui_plat/media_shared_document_api/inc/MediaSharedDocument.h	Tue Feb 02 01:00:49 2010 +0200
+++ b/classicui_plat/media_shared_document_api/inc/MediaSharedDocument.h	Fri Feb 19 23:04:46 2010 +0200
@@ -25,7 +25,7 @@
 #define __CMEDIASHAREDDOCUMENT_H__
 
 // INCLUDES
-#include <akndoc.h>
+#include <AknDoc.h>
 #include <eikapp.h>
 
 // CLASS DEFINITION
--- a/classicui_pub/editors_api/inc/EIKEDWIN.H	Tue Feb 02 01:00:49 2010 +0200
+++ b/classicui_pub/editors_api/inc/EIKEDWIN.H	Fri Feb 19 23:04:46 2010 +0200
@@ -2874,12 +2874,6 @@
      */
     TBool IsSelectionVisible();
 
-    /**
-     * check the character is valid numeric character or not
-     * @param aChar 
-     * @return if the aChar is invalid numeric char return EFalse else return ETrue
-     */
-    TBool IsValidNumericCharL( TChar aChar );
 
 protected:	// from MObjectProvider
 
--- a/classicui_pub/editors_api/inc/EikCcpu.h	Tue Feb 02 01:00:49 2010 +0200
+++ b/classicui_pub/editors_api/inc/EikCcpu.h	Fri Feb 19 23:04:46 2010 +0200
@@ -206,9 +206,10 @@
 	IMPORT_C void ProcessCommandL(TInt aCommandId);
 
 private:
-	void UpdateCBALabelsL();
-	TBool UpdateCBALabelL(TInt aPosition, TInt aCommandId, TInt aTextResId);
-	void SetEmphasis(CCoeControl* aMenuControl,TBool aEmphasis);
+    void UpdateCBALabelsL();
+    TBool UpdateCBALabelL(TInt aPosition, TInt aCommandId, TInt aTextResId);
+    void SetEmphasis(CCoeControl* aMenuControl,TBool aEmphasis);
+    void DeleteCBAL();
 
 private:
     /**
@@ -216,14 +217,16 @@
     */
     IMPORT_C void* ExtensionInterface( TUid aInterface );
 private:
-	TBitFlags iFlags;
-
-	// Owned
-	CEikButtonGroupContainer* iCba;
+    TBitFlags iFlags;
+    TBool isCbaEmded;
+    // Owned
+    CEikButtonGroupContainer* iCba;
+    
 
 	// Not owned
 	CEikMenuBar* iMenu;
 	MEikCcpuEditor* iEditor;
+	CEikButtonGroupContainer* iDialogCba;
 	};
 
 #endif // EIKCCPU_H
--- a/classicui_pub/group/bld.inf	Tue Feb 02 01:00:49 2010 +0200
+++ b/classicui_pub/group/bld.inf	Fri Feb 19 23:04:46 2010 +0200
@@ -79,3 +79,4 @@
 #include "../stylus_popup_menu_api/group/bld.inf"
 #include "../information_preview_popup_api/group/bld.inf"
 #include "../intermediate_state_api/group/bld.inf"
+#include "../help_launcher_api/group/bld.inf"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/classicui_pub/help_launcher_api/group/bld.inf	Fri Feb 19 23:04:46 2010 +0200
@@ -0,0 +1,27 @@
+/*
+* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: help launcher API
+:                
+*
+*/
+
+
+#include <platform_paths.hrh>
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_EXPORTS
+
+../inc/HLPLCH.H     MW_LAYER_PUBLIC_EXPORT_PATH(hlplch.h)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/classicui_pub/help_launcher_api/inc/HLPLCH.H	Fri Feb 19 23:04:46 2010 +0200
@@ -0,0 +1,102 @@
+// Copyright (c) 2003-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:
+// Help Launcher module
+// 
+//
+
+#ifndef __HLPLCH_H__
+#define __HLPLCH_H__
+
+#if !defined(__APGTASK_H__)
+#include <apgtask.h>
+#endif
+
+#if !defined(__EIKDLL_H__)
+#include <eikdll.h>
+#endif
+
+#if !defined(__WSERV_H__)
+#include <w32std.h>
+#endif
+
+#if !defined(__COEHELP_H__)
+#include <coehelp.h>
+#endif
+
+/** Help application UID. 
+@internalComponent
+@released
+*/
+const TUid KHlpAppUid={ 0x10005234 };
+
+/** UID of window message to send to application. 
+@internalComponent
+@released
+*/
+const TUid KHlpAppWsMsg={ 0x100055c7 };
+
+#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS
+
+/** Maximum length of command line to launch application. 
+@internalComponent
+@released
+*/
+const TInt KMaxCmdLineLength = 512;
+
+// resource file name
+_LIT(KHelpLauncherResource, "z:\\resource\\apps\\lch.rsc");
+
+class CHlpCmdLine : public CBase
+/**
+@internalComponent
+@released
+*/
+	{
+public:
+	static CHlpCmdLine* NewL(CArrayFix<TCoeHelpContext>* aContextList);
+	static CHlpCmdLine* NewLC(CArrayFix<TCoeHelpContext>* aContextList);
+	~CHlpCmdLine();
+public:
+	TPtr8 CmdLineL();
+private:
+	void BuildCmdLineL();
+	void AddContextL(TCoeHelpContext& aContext);
+private:
+	void ConstructL();
+	CHlpCmdLine(CArrayFix<TCoeHelpContext>* aContextList);
+private:
+	CArrayFix<TCoeHelpContext>* iContextList;
+	CBufFlat* iCmdLine;
+	};
+	
+#endif //SYMBIAN_ENABLE_SPLIT_HEADERS
+
+class HlpLauncher
+/** Launches the help application.
+
+It assumes that such an application is at z:\\Sys\\Bin\\CsHelp.exe
+
+@publishedAll
+@released
+*/
+	{
+public:
+	IMPORT_C	static void LaunchHelpApplicationL(RWsSession& aWsSession, CArrayFix<TCoeHelpContext>* aContextList);
+	IMPORT_C	static void LaunchHelpApplicationL(RWsSession& aWsSession, TUid aUid);
+	IMPORT_C	static void LaunchHelpApplicationL(RWsSession& aWsSession);
+private:
+	static void DoLaunchHelpApplicationL(RWsSession& aWsSession, const TDesC8& aCmdLine);
+	};
+
+#endif
--- a/classicui_pub/lists_api/inc/EIKLBX.H	Tue Feb 02 01:00:49 2010 +0200
+++ b/classicui_pub/lists_api/inc/EIKLBX.H	Fri Feb 19 23:04:46 2010 +0200
@@ -1436,6 +1436,15 @@
 	* @param aItems Number of items in one grid line.
 	*/
     IMPORT_C void SetItemsInSingleLine(TInt aItems);
+    
+    /**
+    * Gets the number of list items in one line. This is more than one for
+    * grids only.
+	*
+	* @since S60 5.2
+	* @return The number of list items in one line.
+	*/
+    IMPORT_C TInt ItemsInSingleLine() const;
 	
     /**
     * Removes pointer event filtering for list items.
--- a/classicui_pub/lists_api/inc/eikfrlb.h	Tue Feb 02 01:00:49 2010 +0200
+++ b/classicui_pub/lists_api/inc/eikfrlb.h	Fri Feb 19 23:04:46 2010 +0200
@@ -248,7 +248,8 @@
     /**
     * @internal
     */
-    void DrawBackgroundAndSeparatorLines( const TRect& aItemTextRect ) const;
+    void DrawBackgroundAndSeparatorLines( const TRect& aItemTextRect, 
+        TBool aDrawSeparator ) const;
                         
 
 private:
--- a/classicui_pub/lists_api/tsrc/conf/tctestsdklistseiklbx.cfg	Tue Feb 02 01:00:49 2010 +0200
+++ b/classicui_pub/lists_api/tsrc/conf/tctestsdklistseiklbx.cfg	Fri Feb 19 23:04:46 2010 +0200
@@ -684,3 +684,8 @@
 title TestLBDisableItemSpecificMenu
 run testscripter c:\testframework\ui_testsdklistseiklbx.cfg 137
 [Endtest]
+
+[Test]
+title TestLBItemsInSingleLine
+run testscripter c:\testframework\ui_testsdklistseiklbx.cfg 138
+[Endtest]
--- a/classicui_pub/lists_api/tsrc/conf/ui_testsdklistseiklbx.cfg	Tue Feb 02 01:00:49 2010 +0200
+++ b/classicui_pub/lists_api/tsrc/conf/ui_testsdklistseiklbx.cfg	Fri Feb 19 23:04:46 2010 +0200
@@ -1089,3 +1089,12 @@
 test TestLBDisableItemSpecificMenu
 delete test
 [Endtest]
+
+[Test] //138
+title TestLBItemsInSingleLine
+create testsdklists test
+test TestLBConstructorL
+test TestLBConstructWithTGulBorderL
+test TestLBItemsInSingleLine
+delete test
+[Endtest]
--- a/classicui_pub/lists_api/tsrc/inc/testsdklists.h	Tue Feb 02 01:00:49 2010 +0200
+++ b/classicui_pub/lists_api/tsrc/inc/testsdklists.h	Fri Feb 19 23:04:46 2010 +0200
@@ -5867,6 +5867,15 @@
      * @return Symbian OS error code.
      */
     virtual TInt TestLBDisableItemSpecificMenu( CStifItemParser& aItem );
+    
+    /**
+     * TestLBItemsInSingleLine test function for testing the 
+     *     ItemsInSingleLine function
+     * @since S60 5.2
+     * @param aItem never used
+     * @return Symbian OS error code.
+     */
+    virtual TInt TestLBItemsInSingleLine( CStifItemParser& aItem );       
 
 private:    // eikslb.h
     // class CSettingsListBoxItemDrawer
--- a/classicui_pub/lists_api/tsrc/src/testsdklistsblocks.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/classicui_pub/lists_api/tsrc/src/testsdklistsblocks.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -765,6 +765,7 @@
 
         ENTRY( "TestLBDisableSingleClick", CTestSDKLists::TestLBDisableSingleClick ),
         ENTRY( "TestLBDisableItemSpecificMenu", CTestSDKLists::TestLBDisableItemSpecificMenu ),
+        ENTRY( "TestLBItemsInSingleLine", CTestSDKLists::TestLBItemsInSingleLine ),
         
         // class CEikSnakingListBox
         ENTRY( "TestSLBConstructorL", CTestSDKLists::TestSLBConstructorL ),
--- a/classicui_pub/lists_api/tsrc/src/testsdklistsblockseiklbx.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/classicui_pub/lists_api/tsrc/src/testsdklistsblockseiklbx.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -37,6 +37,7 @@
 #include "testsdklistssnakinglistbox.h"
 
 const TInt KZero = 0;
+const TInt KOne = 1;
 const TInt KFour = 4;
 const TInt KFive = 5;
 const TInt KEight = 8;
@@ -4373,4 +4374,24 @@
     return KErrNone;    
     }
 
+// -----------------------------------------------------------------------------
+// CTestSDKLists::TestLBItemsInSingleLine
+// -----------------------------------------------------------------------------
+//
+TInt CTestSDKLists::TestLBItemsInSingleLine( CStifItemParser& /*aItem*/)
+    { 
+    // Print to UI
+    _LIT( KTestModule, "EIKLBXTestModule" );
+    _LIT( KTestEIKLBX, "In TestLBItemsInSingleLine" );
+    TestModuleIf().Printf( 0, KTestModule, KTestEIKLBX );
+    // Print to log file
+    iLog->Log( KTestEIKLBX );
+
+    TInt itemsInSingleLine = iListBox->ItemsInSingleLine();
+    STIF_ASSERT_EQUALS( KOne, itemsInSingleLine );
+    
+    return KErrNone;    
+    }
+
+
 // [End of file]
--- a/classicui_pub/options_menu_api/inc/EIKMENUP.H	Tue Feb 02 01:00:49 2010 +0200
+++ b/classicui_pub/options_menu_api/inc/EIKMENUP.H	Fri Feb 19 23:04:46 2010 +0200
@@ -991,6 +991,21 @@
      * Creates menu pane's extension object if it doesn't exist yet.
      */
     void CheckCreateExtensionL();
+    
+    /**
+     * Calculates the rectangle occupied by an item.
+	 *
+	 * @param aItemIndex Item's index.
+	 * @return Item's rectangle.
+     */
+    TRect ItemRect( TInt aItemIndex ) const;
+    
+    /**
+     * Calculates the height of menu items.
+	 *
+	 * @return Item height.
+     */
+    TInt CalculateItemHeight() const;
 
 protected: // from CoeControl
 
@@ -1072,7 +1087,7 @@
     CEikButtonBase* iLaunchingButton; // for popouts only
     TInt iSubPopupWidth; // 0..2
     TInt iSpare;
-    CEikMenuPaneExtension* iExtension ;
+    CEikMenuPaneExtension* iExtension;
 
     };
 
--- a/classicui_pub/popups_api/inc/AknPopupField.h	Tue Feb 02 01:00:49 2010 +0200
+++ b/classicui_pub/popups_api/inc/AknPopupField.h	Fri Feb 19 23:04:46 2010 +0200
@@ -246,6 +246,12 @@
      */
 	IMPORT_C void SetInvalidTextL(const TDesC &aInvalidText);
 
+    /**
+     * Closes the selection list 
+     *
+     *  @since v5.2 
+     */
+    IMPORT_C void CloseSelectionListL();
 
 public: // from CCoeControl
 
--- a/classicui_pub/screen_saver_api/inc/ScreensaverpluginIntDef.h	Tue Feb 02 01:00:49 2010 +0200
+++ b/classicui_pub/screen_saver_api/inc/ScreensaverpluginIntDef.h	Fri Feb 19 23:04:46 2010 +0200
@@ -20,7 +20,7 @@
 
 //  INCLUDES
 #include <e32base.h>
-#include <Ecom/implementationinformation.h>
+#include <ecom/implementationinformation.h>
 #include <screensaverplugin.h>
 
 // CONSTANTS
--- a/classicui_pub/screen_saver_api/inc/ScreensaverpluginIntDef.inl	Tue Feb 02 01:00:49 2010 +0200
+++ b/classicui_pub/screen_saver_api/inc/ScreensaverpluginIntDef.inl	Fri Feb 19 23:04:46 2010 +0200
@@ -18,7 +18,7 @@
 
 //  INCLUDES
 
-#include <Ecom/ecom.h>   			// For REComSession
+#include <ecom/ecom.h>   			// For REComSession
 #include <ScreensaverpluginIntDef.hrh>	// For KCScreensaverPluginInterfaceDefinitionUid
 
 // CONSTANTS
--- a/classicui_pub/status_pane_api/inc/eikspane.h	Tue Feb 02 01:00:49 2010 +0200
+++ b/classicui_pub/status_pane_api/inc/eikspane.h	Fri Feb 19 23:04:46 2010 +0200
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2002-2008 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2002-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -535,6 +535,7 @@
     TInt  InitialUsedResourceId();
     TRect LargestBoundingRect( TRegion& aWholeRegion,
                                TRegion& aRemovedRegion ) const;
+    void SetCombinedPaneVisibilityL( TBool aVisible );
 
 protected:
 
--- a/classicui_pub/ui_framework_definitions_api/inc/avkon.hrh	Tue Feb 02 01:00:49 2010 +0200
+++ b/classicui_pub/ui_framework_definitions_api/inc/avkon.hrh	Fri Feb 19 23:04:46 2010 +0200
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2002-2008 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2002-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -371,7 +371,12 @@
     * Command id for dealing with discreet popup's close
     */
     EAknDiscreetPopupCmdClose,
-    
+    // Commands ids for arabic finger hwr option menu
+    EPenInputCmdHwrInputToPortrait,
+    EPenInputCmdHwrInputToLandscape,
+    EPenInputCmdSwitchToVkeyBasedInput,
+    EPenInputCmdWritingSpeed,
+    EPenInputCmdGuidingLine,    
     /**
     * @deprecated
     * Do not use.
@@ -622,6 +627,11 @@
     /** For slider with feedback style */
 	/** @since 5.1 */
     EAknSliderWithFeedbackStyle,
+
+    /** For combined sub-pane in status pane */
+    /** @since 5.2 */
+    EAknCtCombinedPane,
+
     // This is the marker for the last AVKON control id: It does not construct a control
     EAknCtLastControlId = KAknCtLastControlId
 
@@ -932,6 +942,7 @@
 #define EEikStatusPaneUidClock        0x100059C0
 #define EEikStatusPaneUidDigitalClock 0x10275090
 #define EEikStatusPaneUidEmpty        0x102750A3
+#define EEikStatusPaneUidCombined     0x2001E2D9
 
 // POPUP_FIELD flags
 #define EAknPopupFieldFlagAllowsUserDefinedEntry  0x01
--- a/classicui_pub/ui_framework_definitions_api/inc/avkon.rh	Tue Feb 02 01:00:49 2010 +0200
+++ b/classicui_pub/ui_framework_definitions_api/inc/avkon.rh	Fri Feb 19 23:04:46 2010 +0200
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2002-2008 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2002-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -1038,3 +1038,29 @@
     LLINK minorSkinId = -1; // icon minor skin id
     LLINK extension = 0; // reserved for future extension
     }
+
+// --------------------------------------------------------------------------
+// COMBINED_PANE
+// Resource structure for status pane's combined pane.
+// @since 5.2
+// --------------------------------------------------------------------------
+//
+STRUCT COMBINED_PANE
+    {
+    BYTE version = 1;    // Structure version.
+    STRUCT panes[];      // Array of subpanes embedded to the combined pane.
+    LLINK extension = 0; // Extension for future use.
+    }
+
+// --------------------------------------------------------------------------
+// COMBINED_PANE_SUBPANE
+// Resource structure for combined pane's subpane (in status pane).
+// @since 5.2
+// --------------------------------------------------------------------------
+//
+STRUCT COMBINED_PANE_SUBPANE
+    {
+    BYTE version = 1;    // Structure version.
+    LONG uid;            // UID of the subpane, defined in @c avkon.hrh.
+    LLINK extension = 0; // Extension for future use.
+    }
--- a/classicui_pub/ui_framework_utilities_api/inc/AknUtils.h	Tue Feb 02 01:00:49 2010 +0200
+++ b/classicui_pub/ui_framework_utilities_api/inc/AknUtils.h	Fri Feb 19 23:04:46 2010 +0200
@@ -2700,6 +2700,27 @@
         CCoeControl* aControl );
     };
 
+
+/**
+ * Helper functions for Lists
+ * 
+ * @since S60 v5.2
+ */
+class AknListUtils
+    {
+public:
+    /** 
+     * Draws a separator line between list items.
+     * 
+     * @param aGc       Graphics context where separator is drawn to.
+     * @param aRect     Rectangle occupied by the item that is separated.
+     * @param aColor    Text color used in item. Separator is drawn with this
+     *                  color and additional alpha mask.
+     */
+    IMPORT_C static void DrawSeparator( CGraphicsContext& aGc, 
+        const TRect& aRect, const TRgb& aColor );
+    };
+
 #endif //  __AKNUTILS_H__
 
 // End of file
--- a/classicui_pub/ui_framework_utilities_api/tsrc/conf/tctestsdkuifwutilaknutils.cfg	Tue Feb 02 01:00:49 2010 +0200
+++ b/classicui_pub/ui_framework_utilities_api/tsrc/conf/tctestsdkuifwutilaknutils.cfg	Fri Feb 19 23:04:46 2010 +0200
@@ -388,3 +388,12 @@
 run testscripter c:\testframework\ui_testsdkuifwutilaknutils.cfg 78
 [Endtest]
 
+[Test]
+title TestAknPopupUtilsPosition
+run testscripter c:\testframework\ui_testsdkuifwutilaknutils.cfg 79
+[Endtest]
+
+[Test]
+title TestAknListUtilsDrawSeparator
+run testscripter c:\testframework\ui_testsdkuifwutilaknutils.cfg 80
+[Endtest]
--- a/classicui_pub/ui_framework_utilities_api/tsrc/conf/ui_testsdkuifwutilaknutils.cfg	Tue Feb 02 01:00:49 2010 +0200
+++ b/classicui_pub/ui_framework_utilities_api/tsrc/conf/ui_testsdkuifwutilaknutils.cfg	Fri Feb 19 23:04:46 2010 +0200
@@ -544,3 +544,17 @@
 delete test
 [Endtest]
 
+[Test]
+title TestAknPopupUtilsPosition
+create testsdkuifwutil test
+test TestAknPopupUtilsPosition
+delete test
+[Endtest]
+
+[Test]
+title TestAknListUtilsDrawSeparator
+create testsdkuifwutil test
+test TestAknListUtilsDrawSeparator
+delete test
+[Endtest]
+
--- a/classicui_pub/ui_framework_utilities_api/tsrc/inc/testsdkuifwutil.h	Tue Feb 02 01:00:49 2010 +0200
+++ b/classicui_pub/ui_framework_utilities_api/tsrc/inc/testsdkuifwutil.h	Fri Feb 19 23:04:46 2010 +0200
@@ -1102,7 +1102,15 @@
     * @param aItem is not used.
     * @return Symbian OS error code.
     */
-    virtual TInt TestAknPopupUtilsPositionFuncs( CStifItemParser& aItem );
+    virtual TInt TestAknPopupUtilsPosition( CStifItemParser& aItem );
+    
+    /**
+    * TestAknListUtilsDrawSeparator test separator line drawing in aknutils.h.
+    * @since S60 5.2
+    * @param aItem is not used.
+    * @return Symbian OS error code.
+    */
+    virtual TInt TestAknListUtilsDrawSeparator( CStifItemParser& aItem );
     
 private:    // Data
     
--- a/classicui_pub/ui_framework_utilities_api/tsrc/src/testsdkuifwutilblocks.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/classicui_pub/ui_framework_utilities_api/tsrc/src/testsdkuifwutilblocks.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -143,7 +143,8 @@
         ENTRY( "TestAknDrawWithSkinsDoDrawFuncsL", CTestSDKUiFwUtil::TestAknDrawWithSkinsDoDrawFuncsL ),
         ENTRY( "TestAknUtilsGlobalFuncsL", CTestSDKUiFwUtil::TestAknUtilsGlobalFuncsL ),
         ENTRY( "TestFilterTextListBoxModelRemoveFilterL", CTestSDKUiFwUtil::TestFilterTextListBoxModelRemoveFilterL ),
-        ENTRY( "TestAknPopupUtilsPosition", CTestSDKUiFwUtil::TestAknPopupUtilsPositionFuncs ),
+        ENTRY( "TestAknPopupUtilsPosition", CTestSDKUiFwUtil::TestAknPopupUtilsPosition ),
+        ENTRY( "TestAknListUtilsDrawSeparator", CTestSDKUiFwUtil::TestAknListUtilsDrawSeparator ),
         // [test cases entries]
 
         };
--- a/classicui_pub/ui_framework_utilities_api/tsrc/src/testsdkuifwutilblocksaknutils.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/classicui_pub/ui_framework_utilities_api/tsrc/src/testsdkuifwutilblocksaknutils.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -2238,7 +2238,7 @@
 // CTestSDKUiFwUtil::TestAknPopupUtilsPosition
 // -----------------------------------------------------------------------------
 //
-TInt CTestSDKUiFwUtil::TestAknPopupUtilsPositionFuncs( 
+TInt CTestSDKUiFwUtil::TestAknPopupUtilsPosition( 
     CStifItemParser& /*aItem*/ )
     {
     //TPoint position( AknPopupUtils::Position( TSize(), ETrue ) );
@@ -2247,5 +2247,23 @@
     return KErrNone;
     }
 
+
+// -----------------------------------------------------------------------------
+// CTestSDKUiFwUtil::TestAknListUtilsDrawSeparator
+// -----------------------------------------------------------------------------
+//
+TInt CTestSDKUiFwUtil::TestAknListUtilsDrawSeparator( 
+    CStifItemParser& /*aItem*/ )
+    {
+    TRect rect( 20, 20, 40, 40 );
+    CWindowGc& gc = iContainer->SystemGc();
+    iContainer->ActiveControlGc();
+    AknListUtils::DrawSeparator( gc, rect, KRgbBlack );
+    iContainer->DeActiveControlGc();
+
+    return KErrNone;
+    }
+
+
 // End of file
 
--- a/commonuis/CommonDialogs/group/iconlist.txt	Tue Feb 02 01:00:49 2010 +0200
+++ b/commonuis/CommonDialogs/group/iconlist.txt	Fri Feb 19 23:04:46 2010 +0200
@@ -18,3 +18,4 @@
 /c8,1   qgn_prop_am_sis.bmp
 /c8,1 	qgn_prop_folder_empty.bmp
 /c8,1   qgn_prop_file_swf_small.bmp
+/c8,1	qgn_prop_usb_memc_sub.svg
\ No newline at end of file
--- a/commonuis/CommonDialogs/inc/caknmemoryselectionmodelmultidrive.h	Tue Feb 02 01:00:49 2010 +0200
+++ b/commonuis/CommonDialogs/inc/caknmemoryselectionmodelmultidrive.h	Fri Feb 19 23:04:46 2010 +0200
@@ -132,7 +132,8 @@
         EIconRemoteDrive,
         EIconRemoteDriveActive, // Icon used in D-column if drive active
         EIconInternalMassStorage,
-        EIconInternalMassStorageUnavailable
+        EIconInternalMassStorageUnavailable,
+        EIconExternalUSBDrive
         };
 
     /**
@@ -196,6 +197,15 @@
 
     /**
      * Creates formatted listbox item and appends it to iListBoxArray.
+     * This method is for usb mass storage drives.
+     *
+     * @param aDriveInfo Drive information from which the lxx item string is
+     *                   created.
+     */
+    void AddUSBItemToLbxL( const TCFDDriveInfo& aDriveInfo );
+    
+    /**
+     * Creates formatted listbox item and appends it to iListBoxArray.
      * This method is for remote drives.
      *
      * @param aDriveInfo Drive information from which the lxx item string is
--- a/commonuis/CommonDialogs/src/caknmemoryselectiondialogmultidrive.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/commonuis/CommonDialogs/src/caknmemoryselectiondialogmultidrive.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -571,6 +571,11 @@
             EMbmCommondialogsQgn_prop_fmgr_ms_mask );
         //For unavailable Internal Mass Storage
         aIconArray->AppendL( NULL );// Uses string insterad.
+        //For external USB driver
+        AknCFDUtility::AppendSkinnedImageToArrayL( *eikEnv, *aIconArray,
+            skin, KAknsIIDQgnPropFmgrUsbMemcSub, KCommonDialogsBitmapFile,
+            EMbmCommondialogsQgn_prop_usb_memc_sub,
+            EMbmCommondialogsQgn_prop_usb_memc_sub_mask );
         }
     else
         {
@@ -612,6 +617,11 @@
             skin, KAknsIIDQgnPropMmcNon, KMemoryCardUiBitmapFile,
             EMbmAknmemorycarduiQgn_prop_mmc_non,
             EMbmAknmemorycarduiQgn_prop_mmc_non_mask );
+        //For external USB Driver
+        AknCFDUtility::AppendSkinnedImageToArrayL( *eikEnv, *aIconArray,
+            skin, KAknsIIDQgnPropFmgrUsbMemcSub, KCommonDialogsBitmapFile,
+            EMbmCommondialogsQgn_prop_usb_memc_sub,
+            EMbmCommondialogsQgn_prop_usb_memc_sub_mask );
         }
     _LOG1( "[CAknMemorySelectionDialog] aIconArray count=%d",
            aIconArray->Count() );
--- a/commonuis/CommonDialogs/src/caknmemoryselectionmodelmultidrive.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/commonuis/CommonDialogs/src/caknmemoryselectionmodelmultidrive.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -450,7 +450,14 @@
     else if( aDriveInfo.iStatus & DriveInfo::EDriveRemovable  )
         {
         // External mass storage drive, like external MMC
-        AddMMCItemToLbxL( aDriveInfo );
+        if( aDriveInfo.iStatus & DriveInfo::EDriveUsbMemory )
+        	{
+        	AddUSBItemToLbxL( aDriveInfo );
+        	}
+        else
+        	{
+        	AddMMCItemToLbxL( aDriveInfo );
+        	}
 
         iHasMMCUnavailable = ( aDriveInfo.iDriveStatus == EDriveNotReady );
         }
@@ -908,6 +915,212 @@
     _LOG1( "itemString length=%d", itemString.Length() );
     }
 
+// ---------------------------------------------------------------------------
+// CAknMemorySelectionModelMultiDrive::AddUSBItemToLbxL
+// ---------------------------------------------------------------------------
+//
+void CAknMemorySelectionModelMultiDrive::AddUSBItemToLbxL(
+    const TCFDDriveInfo& aDriveInfo )
+    {
+    HBufC* lbxItemBuf = HBufC::NewLC( KListBoxEntryMaxLength );
+    TPtr itemString( lbxItemBuf->Des() );
+    HBufC* textItemBuf = HBufC::NewLC( KListBoxEntryMaxLength );
+    TPtr textString( textItemBuf->Des() );
+    HBufC* textItemBuf2 = HBufC::NewLC( KListBoxEntryMaxLength );
+    TPtr textString2( textItemBuf2->Des() );
+    TDriveUnit driveUnit( aDriveInfo.iDriveNumber );
+
+    // Item text is affected by layout
+    switch( iLayout )
+        {
+        case ELayoutPopupMenu:
+            {
+            itemString.Format( KImageHeader, EIconExternalUSBDrive );
+            itemString.Append( KTabChar );
+
+            // 1st row text:
+            if( ( aDriveInfo.iDriveStatus == EDriveOK ) &&
+                ( aDriveInfo.iVolumeLabel.Length() > 0 ) )
+                {
+                StringLoader::Format(
+                    textString2,
+                    *iLocStringArray[ ETextMMCNamed ],
+                    KIndexFirst,
+                    driveUnit.Name()
+                    );
+                StringLoader::Format(
+                    textString,
+                    textString2,
+                    KIndexSecond,
+                    aDriveInfo.iVolumeLabel
+                    );
+                }
+            else if ( aDriveInfo.iDriveStatus == EDriveNotReady )
+                {
+                //textString.Format(
+                //    *iLocStringArray[ ETextMMCUnavailable ],
+                //    driveUnit.Name() );
+                StringLoader::Format(
+                    textString,
+                    *iLocStringArray[ ETextMMCUnavailable ],
+                    KNoIndex,
+                    driveUnit.Name()
+                    );
+                }
+            else if( aDriveInfo.iDriveStatus == EDriveLocked )
+                {
+                //textString.Format(
+                //    *iLocStringArray[ ETextMMCLocked ],
+                //    driveUnit.Name() );
+                StringLoader::Format(
+                    textString,
+                    *iLocStringArray[ ETextMMCLocked ],
+                    KNoIndex,
+                    driveUnit.Name()
+                    );
+                }
+            else
+                {
+                // Use default drive description
+                //textString.Format(
+                //    *iLocStringArray[ ETextMMCDefaultName ],
+                //    driveUnit.Name() );
+                StringLoader::Format(
+                    textString,
+                    *iLocStringArray[ ETextMMCDefaultName ],
+                    KNoIndex,
+                    driveUnit.Name()
+                    );
+                }
+            itemString.Append( textString );
+
+            break;
+            }
+        case ELayoutSettingPage:
+            {
+            // 1st row text:
+            if( aDriveInfo.iVolumeLabel.Length() > 0 )
+                {
+                // Append drive name if it has one
+                //itemString.Format(
+                //    *iLocStringArray[ ETextMMCNamed ],
+                //    driveUnit.Name(),
+                //    aDriveInfo.iVolumeLabel
+                //    );
+                StringLoader::Format(
+                    textString,
+                    *iLocStringArray[ ETextMMCNamed ],
+                    KIndexFirst,
+                    driveUnit.Name()
+                    );
+                StringLoader::Format(
+                    itemString,
+                    textString,
+                    KIndexSecond,
+                    aDriveInfo.iVolumeLabel
+                    );
+                }
+            else
+                {
+                //itemString.Format(
+                //    *iLocStringArray[ ETextMMCDefaultName ],
+                //    driveUnit.Name()
+                //    );
+                StringLoader::Format(
+                    itemString,
+                    *iLocStringArray[ ETextMMCDefaultName ],
+                    KNoIndex,
+                    driveUnit.Name()
+                    );
+                }
+            break;
+            }
+        case ELayoutDoublePopup:
+            {
+            itemString.Format( KImageHeader, EIconExternalUSBDrive );
+            itemString.Append( KTabChar );
+
+            // 1st row text:
+            if( aDriveInfo.iVolumeLabel.Length() > 0 )
+                {
+                StringLoader::Format(
+                    textString2,
+                    *iLocStringArray[ ETextMMCNamed ],
+                    KIndexFirst,
+                    driveUnit.Name()
+                    );
+                StringLoader::Format(
+                    textString,
+                    textString2,
+                    KIndexSecond,
+                    aDriveInfo.iVolumeLabel
+                    );
+                }
+            else
+                {
+                // Use default drive description
+                //textString.Format(
+                //    *iLocStringArray[ ETextMMCDefaultName ],
+                //    driveUnit.Name()
+                //   );
+                StringLoader::Format(
+                    textString,
+                    *iLocStringArray[ ETextMMCDefaultName ],
+                    KNoIndex,
+                    driveUnit.Name()
+                    );
+                }
+            itemString.Append( textString );
+            itemString.Append( KTabChar );
+
+            // 2nd row text:
+            switch( aDriveInfo.iDriveStatus )
+                {
+                case EDriveNotReady:
+                    {
+                    itemString.Append(
+                        *iLocStringArray[ ETextMMCUnavailable ] );
+                    break;
+                    }
+                case EDriveLocked:
+                    {
+                    itemString.Append( *iLocStringArray[ ETextMMCLocked ] );
+                    break;
+                    }
+                case EDriveOK:
+                default:
+                    {
+                    HBufC* buffer;
+                    TInt64 freeSpace = aDriveInfo.iDiskSpace;
+                    if ( freeSpace >= 0 )
+                        {
+                        buffer = HBufC::NewLC( KListBoxEntryMaxLength );  
+                        TPtr unitStr( buffer->Des() );
+                        AknCFDUtility::SetSecondRowTextL( freeSpace, unitStr );
+                        }
+                    else
+                        {
+                        // Disk space is unavailable
+                        buffer = StringLoader::LoadLC(
+                                    R_CFD_QTN_MEMC_SPACE_NOT_AVAILABLE,
+                                    iCoeEnv);
+                        }
+                    itemString.Append( *buffer );//Free mem text
+                    CleanupStack::PopAndDestroy( buffer );
+                    break;
+                    }
+                }
+            break;
+            }
+        }
+
+    // Finally!: append the formatted string to listbox
+    User::LeaveIfError( iListBoxArray.Append( lbxItemBuf ) );
+    CleanupStack::PopAndDestroy( 2 ); // textItemBuf2, textItemBuf
+    CleanupStack::Pop( lbxItemBuf );
+    _LOG1( "[CAknMemorySelectionModelMultiDrive] Item string added to lbx array: %S", &itemString );
+    _LOG1( "itemString length=%d", itemString.Length() );
+    }
 
 // ---------------------------------------------------------------------------
 // CAknMemorySelectionModelMultiDrive::AddRemoteItemToLbxL
--- a/commonuis/CommonUi/src/DocumentHandler.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/commonuis/CommonUi/src/DocumentHandler.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -1398,10 +1398,20 @@
             {
             User::LeaveIfError(aSharableFile.Open(iSharableFS,aFileName,EFileShareReadersOrWriters));
             }
-        else if ( err != KErrNone )
-            {
-            error = err; // Otherwise possible KErrNotReady caused by hotswap leads to crash later
-            }
+        else if ( err == KErrTooBig )
+        	{
+			RFile64* file64 = NULL;
+			file64 = static_cast<RFile64*> (&aSharableFile);
+			if( file64 != NULL )
+				{
+				err = file64->Open(iSharableFS,aFileName,EFileShareReadersOnly);
+				if( err == KErrInUse )
+					{
+					User::LeaveIfError(aSharableFile.Open(iSharableFS,aFileName,EFileShareReadersOrWriters));
+					}
+				}
+        	}
+        error = err; // Otherwise possible KErrNotReady caused by hotswap leads to crash later           
         }
     #ifdef _DEBUG
     RDebug::Print( _L("DocumentHandler: CDocumentHandler::OpenTempFileL: finished with error=%d."), error);
--- a/commonuis/CommonUi/src/FindItemDialog.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/commonuis/CommonUi/src/FindItemDialog.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -35,10 +35,10 @@
 #include <eikbtgpc.h> // for ButtonGroupContainer
 #include <uikon.hrh> // for EKeyOk
 
-#include <FavouritesLimits.h> // KFavouritesMaxUrl
-#include <FavouritesItem.h> // for CBookmarkItem
+#include <favouriteslimits.h> // KFavouritesMaxUrl
+#include <favouritesitem.h> // for CBookmarkItem
 
-#include <FavouritesDb.h>
+#include <favouritesdb.h>
 
 #include <apgcli.h> // RApaLsSession for WMLBrowser launch
 
@@ -60,7 +60,7 @@
 
 #include <baclipb.h> // For CClipboard
 
-#include <SchemeHandler.h> // For CSchemeHandler
+#include <schemehandler.h> // For CSchemeHandler
 
 #include <aknnotewrappers.h>
 
--- a/commonuis/CommonUi/src/FindItemMenu.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/commonuis/CommonUi/src/FindItemMenu.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -34,10 +34,10 @@
 #include <commonphoneparser.h> // Phonenumber parser
 #include <SendUiConsts.h> // Mtm uids
 
-#include <FavouritesLimits.h> // KFavouritesMaxUrl
-#include <FavouritesItem.h> // for CBookmarkItem
+#include <favouriteslimits.h> // KFavouritesMaxUrl
+#include <favouritesitem.h> // for CBookmarkItem
 
-#include <FavouritesDb.h>
+#include <favouritesdb.h>
 
 #include <apgcli.h> // RApaLsSession for WMLBrowser launch
 #include <apgtask.h>
@@ -65,7 +65,7 @@
 #include <CommonUiInternalCRKeys.h>
 
 #include <AiwCommon.hrh>
-#include <SchemeHandler.h>
+#include <schemehandler.h>
 
 // Callback query
 #include <aknlists.h>
--- a/commonuisupport/uikon/srvinc/EIKBAKSV.H	Tue Feb 02 01:00:49 2010 +0200
+++ b/commonuisupport/uikon/srvinc/EIKBAKSV.H	Fri Feb 19 23:04:46 2010 +0200
@@ -1,4 +1,4 @@
-// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -111,7 +111,6 @@
 	static TInt TimerCallBackL(TAny* aPtr);
 	void HandleTimerCallBackL();
 	void NextL();
-	TBool IsWgIdValid(TInt aWgId);
 	void CheckCompleteL();
 private:
 	NONSHARABLE_CLASS(CShutterTimer) : public CPeriodic
--- a/commonuisupport/uikon/srvsrc/EIKBAKSV.CPP	Tue Feb 02 01:00:49 2010 +0200
+++ b/commonuisupport/uikon/srvsrc/EIKBAKSV.CPP	Fri Feb 19 23:04:46 2010 +0200
@@ -1,4 +1,4 @@
-// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -363,17 +363,17 @@
 */
 void CAppShutter::NextL()
 	{
-	if (iNextWgIndex==iWgIds->Count())
-		{
-		CheckCompleteL();
-		}
-	else
+	while (iNextWgIndex < iWgIds->Count())
 		{
 		const RWsSession::TWindowGroupChainInfo wgId=(*iWgIds)[iNextWgIndex++];
 		CApaWindowGroupName* wgName=CApaWindowGroupName::NewLC(iWsSession,wgId.iId);
-		if (!IsWgIdValid(wgId.iId) || wgName->IsSystem() || wgName->Hidden())
+
+		// Skip invalid window groups.
+		// Note that if the window group name is null then CApaWindowGroupName
+		// uses a default name that yields an app uid of zero.
+		if (wgName->AppUid().iUid == 0 || wgName->IsSystem() || wgName->Hidden())
 			{
-			NextL();
+			CleanupStack::PopAndDestroy(); // wgName
 			}
 		else
 			{
@@ -384,6 +384,8 @@
 				data.iDocName=docName;
 				}
 			data.iUid=wgName->AppUid();
+			CleanupStack::PopAndDestroy(); // wgName
+
 			// We don't want to restart server apps
 			if (wgId.iParentId <= 0)
 				{
@@ -404,19 +406,11 @@
 				}
 			// If hardware use patchable constant if not default to 5 seconds
 			iTimer->Start(KUIKONBackupCloseAllFilesTimeout,KUIKONBackupCloseAllFilesTimeout,TCallBack(TimerCallBackL,this));
+			return;
 			}
-		CleanupStack::PopAndDestroy(); // wgName
 		}
-	}
 
-/**
-@internalComponent
-*/
-TBool CAppShutter::IsWgIdValid(TInt aWgId)
-	{
-	TBuf<600> name;
-	const TInt r=iWsSession.GetWindowGroupNameFromIdentifier(aWgId,name);
-	return r==KErrNone;
+	CheckCompleteL();
 	}
 
 /**
--- a/lafagnosticuifoundation/uigraphicsutils/tulsrc/tuladdressstringtokenizer.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/lafagnosticuifoundation/uigraphicsutils/tulsrc/tuladdressstringtokenizer.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -23,7 +23,7 @@
 
 // DEFINE
 
-const TInt KFindItemMaxNumbers  = 20;
+const TInt KFindItemMaxNumbers  = 48; // Maximum phone number supported in Contacts
 const TInt KFindItemMinNumbers  = 3;
 const TInt KDotsInIpAddress     = 3;
 const TInt KNumbersInIpAddress  = 3;
--- a/lafagnosticuifoundation/uigraphicsutils/tulsrc/tulphonenumberutils.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/lafagnosticuifoundation/uigraphicsutils/tulsrc/tulphonenumberutils.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -32,7 +32,7 @@
 
 // DEFINES
 const TInt KPhoneNoUtilsMinNumbers  = 1;
-const TInt KPhoneNoUtilsMaxNumbers  = 20;
+const TInt KPhoneNoUtilsMaxNumbers  = 48; // Maximum phone number supported in Contacts
 
 // ---------------------------------------------------------
 // Phone number parsing methods
--- a/psln/PslnLibraryLoaders/src/pslnbrowserlaunchloader.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/psln/PslnLibraryLoaders/src/pslnbrowserlaunchloader.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -20,7 +20,7 @@
 #include <w32std.h>
 #include <apgcli.h>
 #include <apgtask.h>
-#include <FavouritesDb.h>
+#include <favouritesdb.h>
 
 #include "pslnbrowserlaunchloader.h"
 #include "PslnConst.h"
Binary file psln/help/data/xhtml.zip has changed
--- a/psln/help/inc/skins.hlp.hrh	Tue Feb 02 01:00:49 2010 +0200
+++ b/psln/help/inc/skins.hlp.hrh	Fri Feb 19 23:04:46 2010 +0200
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
--- a/uifw/AknGlobalUI/AknCapServer/group/AknCapServer.mmp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AknGlobalUI/AknCapServer/group/AknCapServer.mmp	Fri Feb 19 23:04:46 2010 +0200
@@ -58,6 +58,7 @@
 SOURCE          AknCapServerShutdown.cpp
 SOURCE          aknphonekeyforwarder.cpp
 SOURCE          akncapserverdiscreetpopuphandler.cpp
+SOURCE          aknslidestatusnotifier.cpp
 
 START RESOURCE  AknMemoryCardUi.rss
 HEADER
--- a/uifw/AknGlobalUI/AknCapServer/inc/AknFastswapWindowControl.h	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AknGlobalUI/AknCapServer/inc/AknFastswapWindowControl.h	Fri Feb 19 23:04:46 2010 +0200
@@ -27,7 +27,7 @@
 #include <apgcli.h>
 #include <coecobs.h> // MCoeControlObserver
 
-#include <WidgetRegistryClient.h>
+#include <widgetregistryclient.h>
 #include <eikmobs.h>
 
 // CONSTANTS
--- a/uifw/AknGlobalUI/AknCapServer/inc/AknKeyFilter.h	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AknGlobalUI/AknCapServer/inc/AknKeyFilter.h	Fri Feb 19 23:04:46 2010 +0200
@@ -23,22 +23,28 @@
 #include <centralrepository.h>
 #endif
 #include "AknCapServerEntry.h"
+#include "aknslidestatusnotifier.h"
 
 const TInt KHomeHoldDelay = 600000;   // 0.6 sec
 
-class CAknServKeyFilter : public CCoeControl
+class CAknServKeyFilter : public CCoeControl,
+                          public MAknSlideStatusObserver
     {
 public:
     CAknServKeyFilter();
     void ConstructL(CAknCapAppServerAppUi& aAppUi);
     ~CAknServKeyFilter();
     
+    /**
+     * From MAknSlideStatusObserver
+     */
+    void SlideStatusChangedL( const TInt& aValue );
+    
 private: // framework
     TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType);
     
 private: // new functions
     TKeyResponse HandleHomeKeyEventL(TEventCode aType);
-    TKeyResponse HandleQwertyKeyEvent(const TKeyEvent& aKeyEvent, TEventCode aType);
     void HandleFlipKeyEvent(TInt aCode);
     static TInt HomeTickL(TAny* aThis);
     void DoHomeTickL();
@@ -52,7 +58,9 @@
 #ifdef RD_INTELLIGENT_TEXT_INPUT
     TInt CAknServKeyFilter::HwKeyToKeyBoardType(TInt aKeyCode);
 #endif
-
+    void RotateScreenL( TInt aState );
+    void UpdateKeyboardLayout( TInt aKeyboardLayout );
+    
 private:
     CAknCapAppServerAppUi* iAppUi; // not owned
     CPeriodic* iHomeTimer;
@@ -60,13 +68,13 @@
     TInt iHomeKeyHandle;
     TVwsViewId iHomeViewId;
     RArray<TInt32> iHardwareStateKeyCaptures;
-    TInt iQwertyOnKeyHandle;
-    TInt iQwertyOffKeyHandle;
-    TInt iFlipOpenKeyHandle;
-    TInt iFlipCloseKeyHandle;
 #ifdef RD_INTELLIGENT_TEXT_INPUT
     CRepository* iAvkonRepository;
 #endif
+    
+    TBool iSlideOpen;
+    TInt iSensorOrientation;
+    CAknSlideStatusNotifier* iSlideStatusObserver;
     };
 
 #endif // __AKN_KEY_FILTER__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uifw/AknGlobalUI/AknCapServer/inc/aknslidestatusnotifier.h	Fri Feb 19 23:04:46 2010 +0200
@@ -0,0 +1,134 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+
+
+#ifndef AKNSLIDESTATUSNOTIFIER_H
+#define AKNSLIDESTATUSNOTIFIER_H
+
+#include <e32base.h>
+#include <e32property.h>
+//Grip keys
+#include <hwrmdomainpskeys.h>
+
+class MAknSlideStatusObserver
+    {
+    public:
+    
+   /**
+    * Slide status notification
+    * Called by the notifier when the Slide status value change 
+	*
+    * @param aValue the new status value
+    * @return none
+    */
+    virtual void SlideStatusChangedL( const TInt& aValue ) = 0;
+    
+    };
+
+/**
+ *  Reacts to Slide status changes
+ *
+ *  Reacts to Slide status changes and notifies
+ *  its client(s) about the status change
+ */
+class CAknSlideStatusNotifier : public CActive
+    {
+    public:
+    	
+        /**
+         * Symbian two-phase constructor
+	     *
+	     * @param a pointer to Slide status observer
+	     * @return a pointer to CSlideStatusNotifier instance
+         */ 
+        static CAknSlideStatusNotifier* NewL( MAknSlideStatusObserver* aObserver );
+
+        /**
+         * Symbian two-phase constructor leaving a pointer to the constructed 
+         * object on the cleanup stack
+	     *
+	     * @param a pointer to Slide status observer
+	     * @return a pointer to CSlideStatusNotifier instance
+         */
+        static CAknSlideStatusNotifier* NewLC( MAknSlideStatusObserver* aObserver );
+
+        /**
+         * Default destructor
+         */
+        virtual ~CAknSlideStatusNotifier();
+
+    protected:
+    
+        // From base class CActive    
+        /**
+         * From CActive.
+         * Implements cancellation of an outstanding request.
+         *
+         * @param none
+         */
+        void DoCancel();
+    
+        /**
+         * From CActive.
+         * Handles an active object's request completion event
+         *
+         * @param none
+         */
+        void RunL();
+     
+        /**
+         * From CActive.
+         * Handles an active object's request error event
+         *
+         * @param TInt aError
+         */
+        TInt RunError( TInt aError );
+ 
+
+    private: 
+
+        /** 
+         * C++ default constructor
+         * 
+         * @param none 
+         */
+        CAknSlideStatusNotifier();
+
+        /**
+         * Symbian second phase constructor
+         * 
+         * @param a pointer to Slide status observer 
+         */
+        void ConstructL( MAknSlideStatusObserver* aObserver );
+
+
+    private: // Data   
+
+        /**
+         * Property handle used to read P&S variables
+         */
+        RProperty iProperty;
+    
+        /**
+         * The observer interested in the Slide status
+         * Not own.  
+         */
+        MAknSlideStatusObserver* iObserver;
+    };
+
+#endif //AKNSLIDESTATUSNOTIFIER_H
--- a/uifw/AknGlobalUI/AknCapServer/src/AknCapServerEntry.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AknGlobalUI/AknCapServer/src/AknCapServerEntry.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -276,6 +276,8 @@
     User::SetCritical(User::ESystemCritical);
 
     InitiateOFNStatus();
+    
+    iEikonEnv->SetSystem( ETrue );
 
     // install default FEP if none set before
     if (iEikonEnv->FepUid() == KNullUid)
--- a/uifw/AknGlobalUI/AknCapServer/src/AknFastswapWindowControl.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AknGlobalUI/AknCapServer/src/AknFastswapWindowControl.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -39,8 +39,8 @@
 #include <akntransitionutils.h>
 #include <akntranseffect.h>
 #include <gfxtranseffect/gfxtranseffect.h>
-#include <WidgetRegistryConstants.h>
-#include <WidgetRegistryData.h>
+#include <widgetregistryconstants.h>
+#include <widgetregistrydata.h>
 #include <featmgr.h>
 #include <aknglobalpopupprioritycontroller.h>
 #include <centralrepository.h>
@@ -1640,6 +1640,7 @@
             break;
 
         case MEikListBoxObserver::EEventItemClicked:
+        case MEikListBoxObserver::EEventItemSingleClicked:
             if ( !iItemDraggingActioned && !iIsStylusPopupShow )
                 {
                 TTime now;
--- a/uifw/AknGlobalUI/AknCapServer/src/aknKeyFilter.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AknGlobalUI/AknCapServer/src/aknKeyFilter.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -55,6 +55,9 @@
 /** Video call application's AppUID */
 const TUid KVideoCallAppUid     = { 0x101F8681 }; 
 
+/** Layout */
+const TInt KLayoutPortrait = 0;
+const TInt KLayoutLandscape = 1;
 /**
 * Command used in activating the phone view.
 * Null command allows the the phone app to decide whether
@@ -92,14 +95,11 @@
 
     RWindowGroup& groupWin = iCoeEnv->RootWin();
     groupWin.CancelCaptureKeyUpAndDowns( iHomeKeyHandle );
-    groupWin.CancelCaptureKeyUpAndDowns( iQwertyOnKeyHandle );
-    groupWin.CancelCaptureKeyUpAndDowns( iQwertyOffKeyHandle );
-    groupWin.CancelCaptureKey( iFlipOpenKeyHandle );
-    groupWin.CancelCaptureKey( iFlipCloseKeyHandle );
 #ifdef RD_INTELLIGENT_TEXT_INPUT
     delete iAvkonRepository;
 #endif
     delete iHomeTimer;
+    delete iSlideStatusObserver;
     }
 
 
@@ -112,10 +112,6 @@
     {
     RWindowGroup& groupWin = iCoeEnv->RootWin();
     iHomeKeyHandle      = groupWin.CaptureKeyUpAndDowns(EStdKeyApplication0, 0, 0);
-    iQwertyOnKeyHandle  = groupWin.CaptureKeyUpAndDowns(EStdKeyApplication7, 0, 0); // EKeyQwertyOn
-    iQwertyOffKeyHandle = groupWin.CaptureKeyUpAndDowns(EStdKeyApplication8, 0, 0); // EKeyQwertyOff
-    iFlipOpenKeyHandle  = groupWin.CaptureKey(EKeyDeviceA, 0, 0); // EKeyFlipOpen
-    iFlipCloseKeyHandle = groupWin.CaptureKey(EKeyDeviceB, 0, 0); // EKeyFlipClose
 
     // Get the default view id
     TResourceReader reader;
@@ -205,6 +201,9 @@
         iAppUi->iQwertyStatus = EFalse;
         }
 #endif // RD_INTELLIGENT_TEXT_INPUT
+    iSlideOpen = EFalse;
+    TRAP_IGNORE( iSlideStatusObserver = CAknSlideStatusNotifier::NewL( this ) );
+    iSensorOrientation = KLayoutPortrait;
     }
 
 // ---------------------------------------------------------------------------
@@ -346,11 +345,6 @@
         {
         return HandleHomeKeyEventL( aType );
         }
-    else if ( aKeyEvent.iScanCode == EStdKeyApplication7 || // EKeyQwertyOn
-              aKeyEvent.iScanCode == EStdKeyApplication8 )  // EKeyQwertyOff
-        {
-        return HandleQwertyKeyEvent( aKeyEvent, aType );
-        }
     else if ( aType==EEventKey && HandleHardwareStateKeyL( aKeyEvent.iCode ) )
         {
         return EKeyWasConsumed;
@@ -412,56 +406,6 @@
     return EKeyWasNotConsumed;
     }
 
-
-// ---------------------------------------------------------------------------
-// CAknServKeyFilter::HandleQwertyKeyEvent
-// Handles the pressing of QWERTY key.
-// ---------------------------------------------------------------------------
-//
-TKeyResponse CAknServKeyFilter::HandleQwertyKeyEvent( const TKeyEvent& /*aKeyEvent*/,
-                                                      TEventCode aType )
-    {
-    if ( aType == EEventKeyDown )
-        {
-        TInt qwertyOn = 0;
-#ifdef RD_INTELLIGENT_TEXT_INPUT                
-        TInt keyboardLayout = EPtiKeyboard12Key;
-        iAvkonRepository->Get(KAknKeyBoardLayout, keyboardLayout);            
-        switch(keyboardLayout)
-            {
-            case EPtiKeyboardQwerty4x12:
-            case EPtiKeyboardQwerty4x10:
-            case EPtiKeyboardQwerty3x11:
-            case EPtiKeyboardHalfQwerty:
-            case EPtiKeyboardCustomQwerty:
-                {
-                qwertyOn = 1;
-                break;
-                }
-            default:
-                break;
-            }
-#endif            
-
-        TInt err = RProperty::Set( KCRUidAvkon,
-                                   KAknQwertyInputModeActive,
-                                   qwertyOn );
-        iAppUi->iQwertyStatus = qwertyOn;
-
-#ifdef _DEBUG
-        _LIT( KDMsg, "xxxx KAknQwertyInputModeActive err=%d" );
-        RDebug::Print( KDMsg, err );
-#endif
-#ifdef RD_INTELLIGENT_TEXT_INPUT                
-        err = RProperty::Set(KCRUidAvkon, KAknKeyBoardLayout, keyboardLayout);
-#endif
-
-        }
-
-    return EKeyWasConsumed;
-    }
-
-
 // ---------------------------------------------------------------------------
 // CAknServKeyFilter::HandleFlipKeyEvent
 // Handles the flip events.
@@ -579,9 +523,6 @@
         HandleFlipKeyEvent(aCode);
         }
 
-    CWsScreenDevice* screen = iEikonEnv->ScreenDevice();
-    TInt screenMode = screen->CurrentScreenMode();
-
     CAknLayoutConfig::THardwareStateArray hwStates =
         CAknSgcClient::LayoutConfig().HardwareStates();
     TInt count = hwStates.Count();
@@ -589,30 +530,11 @@
         {
         const CAknLayoutConfig::THardwareState& hwState = hwStates.At( ii );
         if ( hwState.KeyCode() == aCode )
-            {
-            SetHardwareStateL( hwState.StateNumber() );
-
-            // Update the setting cache and get SGCS to process the screen
-            // mode change. This may broadcast a screen device change to
-            // the apps, to inform them of the update.
-            iAvkonEnv->SettingCache().Update( KAknHardwareLayoutSwitch );
-            iAppUi->SgcServer()->HandleWindowGroupParamChangeL(
-                iEikonEnv->RootWin().Identifier(),
-                0,
-                0,
-                0,
-                KAknScreenModeUnset );
-
-            if ( screenMode == screen->CurrentScreenMode() )
-                {
-                // Apps will not have received a screen device changed event
-                // so send a KAknHardwareLayoutSwitch to the apps to ensure
-                // they get to know about the key.
-                TWsEvent event;
-                event.SetType( KAknHardwareLayoutSwitch );
-                event.SetHandle( 0 );
-                iEikonEnv->WsSession().SendEventToAllWindowGroups( 0, event );
-                }
+        	{
+        	iSensorOrientation = hwState.StateNumber();
+            if( !iSlideOpen )
+				{
+				RotateScreenL( hwState.StateNumber() );
 #ifdef RD_INTELLIGENT_TEXT_INPUT
 #if defined(__WINS__)
             
@@ -679,6 +601,7 @@
 #endif // __WINS__
 #endif //RD_INTELLIGENT_TEXT_INPUT
             return ETrue;
+				}
             }
         }
 
@@ -783,4 +706,106 @@
     return ret;
     }
 #endif //RD_INTELLIGENT_TEXT_INPUT
+
+// ---------------------------------------------------------------------------
+// CAknServKeyFilter::SlideStatusChangedL
+// ---------------------------------------------------------------------------
+//
+void CAknServKeyFilter::SlideStatusChangedL( const TInt& aValue )
+    {
+	CAknLayoutConfig::THardwareStateArray hwStates =
+		CAknSgcClient::LayoutConfig().HardwareStates();
+    TInt keyboardLayout(0);
+    TInt state(0);
+    
+    RWsSession wsSession = iEikonEnv->WsSession();
+    
+    TKeyEvent eventQwertyOn = { EKeyQwertyOn, 0 };
+    
+    TKeyEvent eventQwertyOff = { EKeyQwertyOff, 0 };
+
+	switch( aValue )
+		{
+		case EPSHWRMGripOpen:
+			iSlideOpen = ETrue;
+			wsSession.SimulateKeyEvent( eventQwertyOn );
+			//to be read from cenrep
+			iAvkonRepository->Get( KAknKeyboardSlideOpen, keyboardLayout );
+			if( keyboardLayout > EPtiKeyboard12Key )
+				{
+				//if the keyboard is a qwerty the layout is landscape
+				state = KLayoutLandscape;
+				}
+			else
+				{
+				//if the keyboard is not a qwerty the layout is portrait
+				state = KLayoutPortrait;
+				}
+			break;
+		case EPSHWRMGripClosed:
+			iSlideOpen = EFalse;
+			wsSession.SimulateKeyEvent( eventQwertyOff );
+			state = iSensorOrientation;
+			iAvkonRepository->Get( KAknKeyboardSlideClose, keyboardLayout );
+			break;
+		}
+	
+	UpdateKeyboardLayout( keyboardLayout );
+	RotateScreenL( state );
+    }
+
+// ---------------------------------------------------------------------------
+// CAknServKeyFilter::UpdateKeyboardLayout
+// ---------------------------------------------------------------------------
+//
+void CAknServKeyFilter::UpdateKeyboardLayout( TInt aKeyboardLayout )
+    {
+    RProperty::Set(KCRUidAvkon, KAknKeyBoardLayout, aKeyboardLayout);
+	if( aKeyboardLayout > EPtiKeyboard12Key )
+		{
+		iAppUi->iQwertyStatus = ETrue;
+		TInt err = RProperty::Set(KCRUidAvkon, KAknQwertyInputModeActive, 1); 
+		iAvkonRepository->Set(KAknQwertyInputModeActive,1);
+		}
+	else
+		{
+		iAppUi->iQwertyStatus = EFalse;
+		TInt err = RProperty::Set(KCRUidAvkon, KAknQwertyInputModeActive, 0); 
+		iAvkonRepository->Set(KAknQwertyInputModeActive, 0);
+		}
+    }
+
+// ---------------------------------------------------------------------------
+// CAknServKeyFilter::RotateScreenL
+// ---------------------------------------------------------------------------
+//
+void CAknServKeyFilter::RotateScreenL( TInt aState )
+	{
+	CWsScreenDevice* screen = iEikonEnv->ScreenDevice();
+	TInt screenMode = screen->CurrentScreenMode();
+	SetHardwareStateL( aState );
+				
+	// Update the setting cache and get SGCS to process the screen
+	// mode change. This may broadcast a screen device change to
+	// the apps, to inform them of the update.
+	iAvkonEnv->SettingCache().Update( KAknHardwareLayoutSwitch );
+	iAppUi->SgcServer()->HandleWindowGroupParamChangeL(
+		iEikonEnv->RootWin().Identifier(),
+		0,
+		0,
+		0,
+		KAknScreenModeUnset );
+
+	if ( screenMode == screen->CurrentScreenMode() )
+		{
+		// Apps will not have received a screen device changed event
+		// so send a KAknHardwareLayoutSwitch to the apps to ensure
+		// they get to know about the key.
+		TWsEvent event;
+		event.SetType( KAknHardwareLayoutSwitch );
+		event.SetHandle( 0 );
+		iEikonEnv->WsSession().SendEventToAllWindowGroups( 0, event );
+		}
+    }
+
 // End of file
--- a/uifw/AknGlobalUI/AknCapServer/src/akncapserverdiscreetpopuphandler.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AknGlobalUI/AknCapServer/src/akncapserverdiscreetpopuphandler.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -23,6 +23,7 @@
 #include "akncapserverdiscreetpopuphandler.h"
 #include "akndiscreetpopupcontrol.h"
 #include "akndiscreetpopupdata.h"
+#include "akntrace.h"
 
 const TUid KAknCapServerDiscreetPopupHandler = { 0x2001FDF8 };
 
@@ -34,6 +35,7 @@
 //
 CAknCapServerDiscreetPopupHandler::~CAknCapServerDiscreetPopupHandler()
     {
+    _AKNTRACE_FUNC_ENTER;
     for ( TInt i = 0; i < iPopupDataArray.Count(); i++ )
         {
         if ( iPopupDataArray[ i ].iPopupControl )
@@ -43,6 +45,7 @@
             }
         }
     iPopupDataArray.Close();    
+    _AKNTRACE_FUNC_EXIT;
     }
 
 
@@ -53,12 +56,14 @@
 void CAknCapServerDiscreetPopupHandler::HandleDiscreetPopupMessageL( 
         const RMessage2& aMessage )
     {
+    _AKNTRACE_FUNC_ENTER;
     CAknCapServerDiscreetPopupHandler* instance 
         = CAknCapServerDiscreetPopupHandler::InstanceL();
     if ( instance )
         {
         instance->DoHandleDiscreetPopupMessageL( aMessage );
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 
@@ -68,8 +73,10 @@
 //
 void CAknCapServerDiscreetPopupHandler::CreateDiscreetPopupHandlerL()
     {
+    _AKNTRACE_FUNC_ENTER;
     CAknCapServerDiscreetPopupHandler* instance 
         = CAknCapServerDiscreetPopupHandler::InstanceL();
+    _AKNTRACE_FUNC_EXIT;
     }
 
 
@@ -121,6 +128,7 @@
 void CAknCapServerDiscreetPopupHandler::DoHandleDiscreetPopupMessageL(
     const RMessage2& aMessage )
     {
+    _AKNTRACE_FUNC_ENTER;
     TAknDiscreetPopupData dataType;
     TPckg<TAknDiscreetPopupData> pkgType( dataType );
     aMessage.ReadL( 0, pkgType );
@@ -151,6 +159,7 @@
             break;
             }
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 
@@ -161,6 +170,7 @@
 void CAknCapServerDiscreetPopupHandler::LaunchFromResourceL(  
         const RMessage2& aMessage )
     {
+    _AKNTRACE_FUNC_ENTER;
     TAknDiscreetPopupResourceData data;
     TPckg<TAknDiscreetPopupResourceData> pkg( data );
     aMessage.ReadL( 0, pkg );
@@ -188,6 +198,7 @@
         data.ViewUid(),
         aMessage );
     CleanupStack::Pop( popup );
+    _AKNTRACE_FUNC_EXIT;
     }
 
 
@@ -198,6 +209,7 @@
 void CAknCapServerDiscreetPopupHandler::LaunchWithParamsL(  
         const RMessage2& aMessage )
     {
+    _AKNTRACE_FUNC_ENTER;
     TAknDiscreetPopupParamData data;
     TPckg<TAknDiscreetPopupParamData> pkg( data );
     aMessage.ReadL( 0, pkg );
@@ -231,6 +243,7 @@
         data.ViewUid(),
         aMessage );
     CleanupStack::Pop( popup );
+    _AKNTRACE_FUNC_EXIT;
     }
 
 
@@ -241,6 +254,7 @@
 void CAknCapServerDiscreetPopupHandler::HandleRequestCancellationL(  
         const RMessage2& aMessage )
     {
+    _AKNTRACE_FUNC_ENTER;
     TAknDiscreetPopupCancelRequestData data;
     TPckg<TAknDiscreetPopupCancelRequestData> pkg( data );
     aMessage.ReadL( 0, pkg );
@@ -263,6 +277,7 @@
             }
         }
     aMessage.Complete( KErrNone );
+    _AKNTRACE_FUNC_EXIT;
     }
 
 // ---------------------------------------------------------------------------
@@ -272,6 +287,7 @@
 void CAknCapServerDiscreetPopupHandler::HandleQueryInUseRect( 
         const RMessage2& aMessage )
     {
+    _AKNTRACE_FUNC_ENTER;
     TRect rect(TRect::EUninitialized);
     if( iPopupDataArray.Count() != 0 ) 
         {
@@ -282,6 +298,7 @@
     TPckg<TAknDiscreetPopupRectData> pkg( data );
     aMessage.WriteL( 0, pkg );
     aMessage.Complete( KErrNone );
+    _AKNTRACE_FUNC_EXIT;
     }
 
 // ---------------------------------------------------------------------------
@@ -295,6 +312,7 @@
         const TUid& aViewUid,
         const RMessage2& aMessage )
     {
+    _AKNTRACE_FUNC_ENTER;
     aPopup->SetObserver( this );
 
     // Inform other popups that new popup is launched
@@ -316,6 +334,7 @@
     popupData.iMessage = aMessage;
     iPopupDataArray.AppendL( popupData );
     NotifyRunningGlobalDiscreetPopupChanged();
+    _AKNTRACE_FUNC_EXIT;
     }
 
 
@@ -350,6 +369,7 @@
 //
 void CAknCapServerDiscreetPopupHandler::NotifyRunningGlobalDiscreetPopupChanged()
     {
+    _AKNTRACE_FUNC_ENTER;
     _LIT_SECURITY_POLICY_S0( writePolicy, RProcess().SecureId() );
 	_LIT_SECURITY_POLICY_PASS( readPolicy );
     
@@ -363,6 +383,7 @@
         {
         RProperty::Set( KPSUidAvkonDomain, KAknGlobalDiscreetPopupNumChanged, 0 );
         }            
+    _AKNTRACE_FUNC_EXIT;
     }
 
 // ---------------------------------------------------------------------------
@@ -371,6 +392,7 @@
 //
 void CAknCapServerDiscreetPopupHandler::ProcessCommandL( TInt aCommandId )
     {
+    _AKNTRACE_FUNC_ENTER;
     TAknCapServerDiscreetPopupData* popupData( NULL );
     for ( TInt i = 0; i < iPopupDataArray.Count(); i++ )
         {
@@ -405,6 +427,7 @@
         {
         popupData->iMessage.Complete( KErrCompletion );
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 
@@ -415,6 +438,7 @@
 void CAknCapServerDiscreetPopupHandler::HandleControlEventL( 
     CCoeControl* aControl, TCoeEvent aEventType )
     {
+    _AKNTRACE( "CAknCapServerDiscreetPopupHandler::HandleControlEventL, aEventType : %d", aEventType );
     // Popup has been closed or cancelled - remove from array
     if ( aEventType == EEventRequestExit || aEventType == EEventRequestCancel )
         {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uifw/AknGlobalUI/AknCapServer/src/aknslidestatusnotifier.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -0,0 +1,142 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#include <e32base.h>
+#include <UikonInternalPSKeys.h>
+
+#include "aknslidestatusnotifier.h"
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CAknSlideStatusNotifier::ConstructL()
+// Second phase of two-phase construction
+// ---------------------------------------------------------------------------
+//
+void CAknSlideStatusNotifier::ConstructL( MAknSlideStatusObserver* aObserver )
+    {
+    TInt err = iProperty.Attach( KPSUidHWRM, KHWRMGripStatus/*KPSUidUikon, KUikFlipStatus*/);
+    User::LeaveIfError( err );
+
+    iProperty.Subscribe(iStatus);
+    iObserver = aObserver;
+    CActiveScheduler::Add( this );
+    SetActive();
+    }
+
+
+// ---------------------------------------------------------------------------
+// CAknSlideStatusNotifier::NewL()
+// Two-phase constructor
+// ---------------------------------------------------------------------------
+//
+CAknSlideStatusNotifier* CAknSlideStatusNotifier::NewL( MAknSlideStatusObserver* aObserver )
+    {
+    CAknSlideStatusNotifier* self = CAknSlideStatusNotifier::NewLC( aObserver );
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CAknSlideStatusNotifier::NewLC()
+// Two-phase constructor, leaves pointer on the cleanup stack
+// ---------------------------------------------------------------------------
+//
+CAknSlideStatusNotifier* CAknSlideStatusNotifier::NewLC( MAknSlideStatusObserver* aObserver )
+    {
+    CAknSlideStatusNotifier* self = new( ELeave ) CAknSlideStatusNotifier;
+    CleanupStack::PushL( self );
+    self->ConstructL( aObserver );
+    return self;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CAknSlideStatusNotifier::CAknSlideStatusNotifier()
+// Default C++ constructor
+// ---------------------------------------------------------------------------
+//
+CAknSlideStatusNotifier::CAknSlideStatusNotifier() : CActive( EPriorityNormal )
+    {
+    // No implementation needed
+    }
+
+// ---------------------------------------------------------------------------
+// CAknSlideStatusNotifier::~CAknSlideStatusNotifier()
+// ---------------------------------------------------------------------------
+//
+CAknSlideStatusNotifier::~CAknSlideStatusNotifier()
+    {
+    Cancel();
+    iProperty.Close();
+    }
+
+
+// ---------------------------------------------------------------------------
+// CAknSlideStatusNotifier::RunL
+// From class CActive
+// Handles an active object's request completion event.
+// ---------------------------------------------------------------------------
+//
+void CAknSlideStatusNotifier::RunL()
+    {
+    TInt status( 0 );
+    TInt runStatus( iStatus.Int() );
+    //resubscribe so that no events are lost    
+    iProperty.Subscribe( iStatus );
+    SetActive();
+
+    switch( runStatus )
+        {
+        case KErrNone:
+            if ( KErrNone == iProperty.Get( status ) )
+                {                
+                iObserver->SlideStatusChangedL( status );
+                }
+            break;   
+        
+        case KErrDied:
+            User::Leave( KErrDied );
+        
+        default:
+            break;    
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CAknSlideStatusNotifier::DoCancel
+// From class CActive
+// Implements cancellation of an outstanding request.
+// ---------------------------------------------------------------------------
+//
+void CAknSlideStatusNotifier::DoCancel()
+    {
+    iProperty.Cancel();
+    }
+
+// ---------------------------------------------------------------------------
+// CAknSlideStatusNotifier::RunError
+// From class CActive
+// Implements error handling of an outstanding request.
+// ---------------------------------------------------------------------------
+//
+TInt CAknSlideStatusNotifier::RunError( TInt /*aError*/ )
+    {
+    return KErrNone;
+    }
+// End of file SlideStatusNotifier.cpp
--- a/uifw/AvKon/Avkon2MifHeader/mifheader.cdl.custom.h	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/Avkon2MifHeader/mifheader.cdl.custom.h	Fri Feb 19 23:04:46 2010 +0200
@@ -22,7 +22,7 @@
 #ifndef MIFHEADER_CDL_CUSTOM_H
 #define MIFHEADER_CDL_CUSTOM_H
 
-#include <CdlEngDef.h>
+#include <cdlengdef.h>
 #include "mifheader.cdl.common.h"
 
 namespace MifHeader
--- a/uifw/AvKon/EABI/AVKONU.DEF	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/EABI/AVKONU.DEF	Fri Feb 19 23:04:46 2010 +0200
@@ -4577,4 +4577,6 @@
 	_ZN17CAknDiscreetPopup7ReleaseEv @ 4576 NONAME
 	_ZNK13CAknAppUiBase23IsSingleClickCompatibleEv @ 4577 NONAME
 	_ZN19CAknBitmapAnimation15StartAnimationLEi @ 4578 NONAME
+	_ZN14CAknPopupField19CloseSelectionListLEv @ 4579 NONAME
+	_ZN12AknListUtils13DrawSeparatorER16CGraphicsContextRK5TRectRK4TRgb @ 4580 NONAME
 
--- a/uifw/AvKon/aknhlist/inc/akntreelistphysicshandler.h	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/aknhlist/inc/akntreelistphysicshandler.h	Fri Feb 19 23:04:46 2010 +0200
@@ -263,11 +263,11 @@
     TInt WorldHeight();
 
     /**
-     * Returns wheter pointer click is in empty list area.
+     * Returns wheter pointer is in empty list area.
      *
      * @return ETrue if aPosition is in empty list area.
      */    
-    TBool EmptyAreaClicked( TPoint aPosition );
+    TBool PointerOnEmptyArea( TPoint aPosition );
     
 private: // data
 
@@ -403,10 +403,11 @@
     // bottom item in current view, fields count when Y is larger than
     // the last item's Y
     TInt iOldBottomItem; 
+    
     /**
-     * ETrue if empty list area is clicked.
+     * ETrue if pointer down on empty list area.
      */    
-    TBool iEmptyAreaClicked;
+    TBool iDownOnEmptyArea;
     };
 
 
--- a/uifw/AvKon/aknhlist/src/akntreelistphysicshandler.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/aknhlist/src/akntreelistphysicshandler.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -113,6 +113,38 @@
         _AKNTRACE_FUNC_EXIT;
 	    return;
         }
+     
+    TBool listEmpty = iTree->VisibleItemCount() > 0 ? EFalse : ETrue;
+    TBool eventSent = EFalse;
+    
+    // empty area events
+    if ( aPointerEvent.iType == TPointerEvent::EButton1Up
+             && PointerOnEmptyArea( aPointerEvent.iPosition ) )
+        {
+        if ( listEmpty )
+            {
+            // no items, empty list was clicked
+            iTreeListView->ReportTreeListEvent( 
+                        MAknTreeListObserver::EEmptyListClicked,
+                        KAknTreeIIDNone );
+            eventSent = ETrue;
+            }
+        else if ( iDownOnEmptyArea )
+            {
+            // items exist, empty list area was clicked
+            iTreeListView->ReportTreeListEvent( 
+                        MAknTreeListObserver::EEmptyAreaClicked,
+                        KAknTreeIIDNone );
+            eventSent = ETrue;
+            }
+        }
+    
+    if ( listEmpty || eventSent )
+        {
+        // return always if list is empty or if empty area event was sent
+        _AKNTRACE_FUNC_EXIT;
+        return;
+        }   
     
     // Panning/flicking logic    
 
@@ -160,8 +192,8 @@
             {
             iTree->EnableMarquee( EFalse );
             }
-           
-        iEmptyAreaClicked = EmptyAreaClicked( aPointerEvent.iPosition ); 
+            
+        iDownOnEmptyArea = PointerOnEmptyArea( aPointerEvent.iPosition );
         }
     
     // EDrag    
@@ -181,8 +213,9 @@
                 }
 #endif // RD_UI_TRANSITION_EFFECTS_LIST
 
-            iPanningActivated = ETrue;
-            iEmptyAreaClicked = EFalse;        
+            iPanningActivated = ETrue;   
+            iDownOnEmptyArea = EFalse;
+  
             
             iHighlightTimer->Cancel();
             iItemToBeFocused = NULL;
@@ -321,23 +354,7 @@
             {
             iTreeListView->SelectItem( iItemToBeSelected );
             iItemToBeSelected = NULL;
-            }
-
-        if ( iItemToBeSelected == NULL && iEmptyAreaClicked )
-            {
-            if ( iTree->VisibleItemCount() > 0 )
-                {
-                iTreeListView->ReportTreeListEvent( 
-                            MAknTreeListObserver::EEmptyAreaClicked,
-                            KAknTreeIIDNone );
-                }
-            else
-                {
-                iTreeListView->ReportTreeListEvent( 
-                            MAknTreeListObserver::EEmptyListClicked,
-                            KAknTreeIIDNone );                
-                }
-            }       
+            }      
         }
     
     // Item handling logic    
@@ -1136,11 +1153,11 @@
 
 
 // ---------------------------------------------------------------------------
-// CAknTreeListPhysicsHandler::EmptyAreaClicked
+// CAknTreeListPhysicsHandler::PointerOnEmptyArea
 // ---------------------------------------------------------------------------
 //
-TBool CAknTreeListPhysicsHandler::EmptyAreaClicked( TPoint aPosition )
-    { 
+TBool CAknTreeListPhysicsHandler::PointerOnEmptyArea( TPoint aPosition )
+    {        
     if ( aPosition.iY <= WorldHeight() )
         {
         return EFalse;
--- a/uifw/AvKon/aknhlist/src/akntreelistview.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/aknhlist/src/akntreelistview.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -25,7 +25,7 @@
 #include <aknappui.h>
 #include <aknitemactionmenu.h>
 #include <AknTasHook.h> // for testability hooks
-#include <aknPriv.hrh>
+#include <AknPriv.hrh>
 #include "akntreelistview.h"
 #include "akntree.h"
 #include "akntreelist.h"
@@ -2776,6 +2776,11 @@
             }
 #endif // RD_UI_TRANSITION_EFFECTS_LIST
 
+        // text color, used to draw the separator line between list items
+        TRgb textColor( KRgbBlack );
+        AknsUtils::GetCachedColor( AknsUtils::SkinInstance(), textColor, 
+            KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG6 );
+
         const TInt itemCount = iItems.Count();
         for ( TInt ii = 0; ii < itemCount; ++ii )
             {
@@ -2816,6 +2821,11 @@
                     transApi->StopDrawing();
                     }
 #endif
+                if ( ii < iBottomIndex )
+                    {
+                    AknListUtils::DrawSeparator( gc, tfxDrawRect, textColor );
+                    }
+
                 TBool focused = ( IsFocused() && FocusedItem() &&
                     iItems[ii].Item() == FocusedItem() );
 
--- a/uifw/AvKon/aknphysics/inc/aknphysicsconstants.h	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/aknphysics/inc/aknphysicsconstants.h	Fri Feb 19 23:04:46 2010 +0200
@@ -21,9 +21,9 @@
 
 // Physics Constants
 const TInt KDefaultFriction( 10 );
-const TInt KFps( 50 ); // desired framerate
+const TInt KFps( 60 ); // desired framerate
 const TInt KPhysicsTime( 1000000/KFps ); // timer value
-const TInt KPhysicsMinTime( 17000 ); // ~1000000/(2*KFps);
+const TInt KPhysicsMinTime( 8500 ); // ~1000000/(2*KFps);
 const TInt KAknHighResMinWait( 500 ); // minimum wait time between callbacks
 const TInt KAknHighResMaxWait( 100000 ); // maximum wait time between callbacks
 const TInt KMaxContacts( 2 ); // max amount of contacts with 2 objects
--- a/uifw/AvKon/bwins/AVKONU.def	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/bwins/AVKONU.def	Fri Feb 19 23:04:46 2010 +0200
@@ -3451,4 +3451,6 @@
 	?InitL@CAknDiscreetPopup@@SAXXZ @ 3450 NONAME ; void CAknDiscreetPopup::InitL(void)
 	?IsSingleClickCompatible@CAknAppUiBase@@QBEHXZ @ 3451 NONAME ; int CAknAppUiBase::IsSingleClickCompatible(void) const
 	?StartAnimationL@CAknBitmapAnimation@@QAEXH@Z @ 3452 NONAME ; void CAknBitmapAnimation::StartAnimationL(int)
+	?CloseSelectionListL@CAknPopupField@@QAEXXZ @ 3453 NONAME ; void CAknPopupField::CloseSelectionListL(void)
+	?DrawSeparator@AknListUtils@@SAXAAVCGraphicsContext@@ABVTRect@@ABVTRgb@@@Z @ 3454 NONAME ; void AknListUtils::DrawSeparator(class CGraphicsContext &, class TRect const &, class TRgb const &)
 
Binary file uifw/AvKon/conf/s60/avkon.confml has changed
Binary file uifw/AvKon/conf/s60/avkon_101F876E.crml has changed
--- a/uifw/AvKon/group/avkon.mmp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/group/avkon.mmp	Fri Feb 19 23:04:46 2010 +0200
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2002 - 2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2002 - 2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -282,6 +282,7 @@
 
 SOURCE          AknSmileyModel.cpp
 SOURCE          AknSmileyImage.cpp
+SOURCE          akncombinedpane.cpp
 
 LIBRARY         FontProvider.lib
 LIBRARY         FontUtils.lib
--- a/uifw/AvKon/group/avkon_icons_dc.mk	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/group/avkon_icons_dc.mk	Fri Feb 19 23:04:46 2010 +0200
@@ -80,7 +80,6 @@
 # __SCALABLE_ICONS is defined.
 # ----------------------------------------------------------------------------
 $(TARGETS_AVKON) ..\avkon2mifheader\avkon2mifheader_inst.cpp : iconlist.txt $(ICONLIST_SOURCELIST)
-	-del $(OLDZDIR)\resource\apps\avkon2.mif
 	mifconv $(ICONTARGETFILENAME) /h$(HEADERFILENAME) /F$<
 	MifToCdlIndex -p..\Avkon2MifHeader -s $(ICONTARGETFILENAME) Avkon2MifHeader 0x102827CF
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uifw/AvKon/inc/akncombinedpane.h	Fri Feb 19 23:04:46 2010 +0200
@@ -0,0 +1,152 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Status pane's combined subpane component.
+*
+*/
+
+#ifndef C_AKNCOMBINEDPANE_H
+#define C_AKNCOMBINEDPANE_H
+
+#include <aknbutton.h>
+
+class CEikStatusPaneBase;
+
+/**
+ *  Combined status pane subpane for binding multiple subpanes under single
+ *  window. This enables e.g. common pointer event handling between associated
+ *  subpanes.
+ *  
+ *  Combined pane is currently used for combining the universal indicator pane
+ *  and small digital clock pane as one subpane in the landscape status pane
+ *  layout with bottom softkeys.
+ *
+ *  @lib avkon
+ *  @since S60 v5.2
+ */
+NONSHARABLE_CLASS( CAknCombinedPane ) : public CAknButton
+    {
+public: // Constructors
+
+    /**
+     * Two-phased constructor.
+     */
+    static CAknCombinedPane* NewL();
+
+    /**
+     * Destructor.
+     */
+    ~CAknCombinedPane();
+
+protected: // From base class CCoeControl
+
+    /**
+     * Returns number of controls inside this control.
+     * 
+     * The container controls (@c CEikStatusPaneContainer) of the combined
+     * subpanes are component controls of combined pane. 
+     *
+     * @return Number of component controls.
+     */
+    TInt CountComponentControls() const;
+
+    /**
+     * Returns a control determined by control index.
+     *
+     * @param aIndex Index of a control to be returned.
+     *
+     * @return Pointer to control.
+     */
+    CCoeControl* ComponentControl( TInt aIndex ) const;
+
+    /**
+     * Handles a change to the control's resources.
+     *
+     * @param  aType  Resource change type.
+     */
+    void HandleResourceChange( TInt aType );
+
+protected: // From base class CAknButton
+
+    /**
+     * Constructs the control from a resource file.
+     *
+     * @param aReader Resource reader.
+     */
+    void ConstructFromResourceL( TResourceReader& aReader );
+
+    /**
+     * Handles pointer events inside the control.
+     *
+     * @param aPointerEvent The pointer event to be handled.
+     */
+    void HandlePointerEventL( const TPointerEvent& aPointerEvent );
+
+private: // Private constructors
+
+    /**
+     * Default C++ constructor.
+     */
+    CAknCombinedPane();
+
+    /**
+     * Symbian 2nd phase constructor.
+     */
+    void ConstructL();
+    
+private: // New methods
+
+    /**
+     * Sets the pressed down state of the subpanes.
+     * 
+     * @param  aPressedDown  @c ETrue to set the subpane pressed down,
+     *                       @c EFalse otherwise.
+     */
+    void SetSubPanesPressedDown( TBool aPressedDown );
+
+private: // data
+
+    /**
+     * Subpane information.
+     */
+    struct TSubPaneData
+        {
+        TUint iUid;         ///< UID of the subpane (defined in @c avkon.hrh).
+        TBool iPressedDown; ///< Whether or not currently pressed down.
+        };
+
+    /**
+     * Holds information about embedded subpanes.
+     */
+    RArray<TSubPaneData> iSubPanes;
+
+    /**
+     * Pointer to the status pane.
+     * Not own.
+     */
+    CEikStatusPaneBase* iStatusPane;
+    
+    /**
+     * Whether or not the pointer down event has been received in the
+     * combined pane area.
+     */
+    TBool iPointerDownInCombinedArea;
+    
+    /**
+     * Amount of pixels that a subpane control is shifted right and bottom
+     * for the pressed down effect.
+     */
+    TInt iPressedDownDelta;
+    };
+
+#endif // C_AKNCOMBINEDPANE_H
--- a/uifw/AvKon/notifsrc/AknSoftNotifier.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/notifsrc/AknSoftNotifier.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -23,7 +23,7 @@
 #include <AknSoftNotificationParameters.h>
 #include <AknNotifySignature.h>
 #include <aknSDData.h>
-#include "AknSoftNoteConsts.h"
+#include "aknsoftnoteconsts.h"
 
 const TInt KBufferGranularity = 128;
 const TInt KGlobalNoteTextLength = 256;
--- a/uifw/AvKon/notifsrc/aknNotify.mmp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/notifsrc/aknNotify.mmp	Fri Feb 19 23:04:46 2010 +0200
@@ -64,7 +64,7 @@
 LIBRARY    akntransitionutils.lib
 #endif
 
-DEFFILE AknNotify.DEF
+DEFFILE AKNNOTIFY.DEF
 
 START WINS
     BASEADDRESS 0x7dd30000
--- a/uifw/AvKon/src/AknCharMap.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/src/AknCharMap.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -3186,7 +3186,6 @@
         iShowPagesRef = &iSpecialCharPages;
         
         // default
-        iSpecialCharCase = EAknSCTLowerCase;
         iChars = iCharsBufferLower;
         
         if(iExtension->iCharsSmiley && iExtension->IsShowingEmotion())
--- a/uifw/AvKon/src/AknEcs.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/src/AknEcs.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -36,6 +36,7 @@
 #include <PtiDefs.h>
 #include <e32property.h>
 
+#include "akntrace.h"
 
 // CLASS DECLARATIONS
 
@@ -220,7 +221,9 @@
 CAknMatchingCharacterQueue::CAknMatchingCharacterQueue( CPhCltEmergencyCall* aPhCltEmergencyCall ) 
         : iPhCltEmergencyCall( aPhCltEmergencyCall )
     {
+    _AKNTRACE_FUNC_ENTER;
     Reset();
+    _AKNTRACE_FUNC_EXIT;
     }
 
 CAknMatchingCharacterQueue::~CAknMatchingCharacterQueue( )
@@ -233,12 +236,18 @@
 
 void CAknMatchingCharacterQueue::Reset()
     {
+    _AKNTRACE_FUNC_ENTER;
     iMatchPosition = 0;
     iCharBuffer.Zero();
+    _AKNTRACE_FUNC_EXIT;
     }
 
 void CAknMatchingCharacterQueue::AddChar( TText aNewChar )
     {    
+    _AKNTRACE_FUNC_ENTER;
+    _AKNTRACE( "[%s][%s] aNewChar: %s", "CAknMatchingCharacterQueue", 
+        		__FUNCTION__,&aNewChar);
+    
     TInt length = iCharBuffer.Length();
     TInt maxLenght = iCharBuffer.MaxLength();
     if (length >= maxLenght)
@@ -247,10 +256,15 @@
         }
     iCharBuffer.Append( aNewChar );
     UpdateStatus( EFalse );
+    _AKNTRACE_FUNC_ENTER;
     }
 
 void CAknMatchingCharacterQueue::SetBuffer( const TDesC& aNewBuffer )
     {    
+    _AKNTRACE_FUNC_ENTER;
+    _AKNTRACE( "[%s][%s] aNewBuffer: %s", "CAknMatchingCharacterQueue", 
+            		__FUNCTION__,&aNewBuffer);
+    
     TInt maxLenght = iCharBuffer.MaxLength();
     TInt length = aNewBuffer.Length();
     if ( length > maxLenght )
@@ -259,6 +273,7 @@
         }
     iCharBuffer = aNewBuffer.Left( length );
     UpdateStatus( ETrue );
+    _AKNTRACE_FUNC_EXIT;
     }
 
 TInt CAknMatchingCharacterQueue::Count() const
@@ -283,6 +298,7 @@
 
 void CAknMatchingCharacterQueue::UpdateStatus( TBool aBufferMode )
     {
+    _AKNTRACE_FUNC_ENTER;
     TBool isEmergency = EFalse;
     TInt err = KErrNone;
     TPhCltTelephoneNumber buffer = iCharBuffer;
@@ -313,6 +329,10 @@
         iMatchPosition = cbLength;
         iStatus = ENoMatch;
         }
+    
+    _AKNTRACE( "[%s][%s] iStatus: %d", "CAknMatchingCharacterQueue", 
+                		__FUNCTION__,iStatus );
+    _AKNTRACE_FUNC_EXIT;
     }
 
 
@@ -325,12 +345,15 @@
 
 EXPORT_C CAknEcsDetector::CAknEcsDetector()
     {
+    _AKNTRACE_FUNC_ENTER;
     iCoeEnv = CCoeEnv::Static();
     iState = ENotFullyConstructed;
+    _AKNTRACE_FUNC_EXIT;
     }
 
 EXPORT_C CAknEcsDetector::~CAknEcsDetector()
     {
+    _AKNTRACE_FUNC_ENTER;
     // Must close this in order to remove any observers from the AppUi's monitor
     CloseEventSource();
     delete iPhCltEmergencyCall;
@@ -338,10 +361,12 @@
     delete iQueue;
     delete iIdler;
     delete iKeyTimeoutTimer;
+    _AKNTRACE_FUNC_EXIT;
     }
 
 EXPORT_C void CAknEcsDetector::ConstructL()
     {
+    _AKNTRACE_FUNC_ENTER;
     iEmergencyCallObserver = new (ELeave) CPhCltEmergencyCallObserver( this );
     // Phone client interface
     iPhCltEmergencyCall = CPhCltEmergencyCall::NewL( iEmergencyCallObserver );
@@ -355,14 +380,17 @@
 
     // Timer for timing the timeout between keys
     iKeyTimeoutTimer = CPeriodic::NewL( CActive::EPriorityLow);
+    _AKNTRACE_FUNC_EXIT;
     }
 
 EXPORT_C CAknEcsDetector* CAknEcsDetector::NewL()
     { // static
+    _AKNTRACE_FUNC_ENTER;
     CAknEcsDetector* self = new (ELeave) CAknEcsDetector();
     CleanupStack::PushL( self );
     self->ConstructL();
     CleanupStack::Pop(); //self
+    _AKNTRACE_FUNC_EXIT;
     return self;
     }
 
@@ -392,6 +420,10 @@
 
 EXPORT_C void CAknEcsDetector::HandleWsEventL(const TWsEvent& aEvent, CCoeControl* /* aDestination  */)
     {
+    _AKNTRACE_FUNC_ENTER;
+    _AKNTRACE( "[%s][%s] aEvent.type(): %d, aEvent.Key()->iScanCode :%d", "CAknEcsDetector", 
+                            		__FUNCTION__,aEvent.Type(),aEvent.Key()->iScanCode );
+    
     if ( aEvent.Type() == EEventKeyDown || 
     // EKeyPhoneEnd/EKeyNo doesn't send EEVentKeyDown events, so EEventKey is used instead
     ( ( aEvent.Key()->iScanCode == EStdKeyNo ) && ( aEvent.Type() == EEventKey ) ) 
@@ -399,16 +431,29 @@
         {
         AddChar( (TText)(aEvent.Key()->iScanCode ) ); // top 16 ( in Unicode build) bits removed
         }    
+    _AKNTRACE_FUNC_EXIT;
     }
 
 
 EXPORT_C void CAknEcsDetector::AddChar( TText aNewChar )
     {
+    _AKNTRACE_FUNC_ENTER;
+    _AKNTRACE( "[%s][%s] aNewChar: %s", "CAknEcsDetector", 
+                                		__FUNCTION__, &aNewChar );
+    
+    if (aNewChar == EKeyQwertyOn || aNewChar == EKeyQwertyOff)
+    	{ 
+        _AKNTRACE_FUNC_EXIT;
+    	return;   // return directly if the aNewChar is slide open/closed.
+    	}
+
     iKeyTimeoutTimer->Cancel(); // there might be pending timeout; clear it
     if ( aNewChar == EStdKeyYes || aNewChar ==EKeyPhoneSend )
         {
         if ( State() == ECompleteMatch )
             {
+            _AKNTRACE( "[%s][%s] SetState( ECompleteMatchThenSendKey )", "CAknEcsDetector", 
+                                            		__FUNCTION__ );
             SetState( ECompleteMatchThenSendKey );
             }
         // else do nothing with it...
@@ -518,11 +563,13 @@
         DetermineState();
         iKeyTimeoutTimer->Start( KEcsInterKeyTimeout, KEcsInterKeyTimeout, TCallBack( CancelMatch, this ) );
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 
 void CAknEcsDetector::DetermineState()
     {
+    _AKNTRACE_FUNC_ENTER;
     TState bestState = ENoMatch;
 
     if ( iQueue->Count() == 0 )
@@ -547,6 +594,9 @@
             }
         SetState(bestState);
         }
+    _AKNTRACE( "[%s][%s] bestState: %d", "CAknEcsDetector", 
+                                    		__FUNCTION__, bestState );
+    _AKNTRACE_FUNC_EXIT;
     }
 
 EXPORT_C void CAknEcsDetector::ReportEvent(TState aNewState )
@@ -574,19 +624,29 @@
     }
 EXPORT_C void CAknEcsDetector::SetBuffer( const TDesC& aNewBuffer )
     {
+    _AKNTRACE_FUNC_ENTER;
+    _AKNTRACE( "[%s][%s] aNewBuffer: %s", "CAknEcsDetector", 
+                                        		__FUNCTION__, &aNewBuffer );
+        
     iKeyTimeoutTimer->Cancel(); // there might be pending timeout; clear it
     iQueue->Reset();
     iQueue->SetBuffer(aNewBuffer);
     DetermineState();
     if ( State() == ECompleteMatch )
         {
+        _AKNTRACE( "[%s][%s] State() == ECompleteMatch ", "CAknEcsDetector", 
+                                                		__FUNCTION__ );
         iKeyTimeoutTimer->Start( KEcsInterKeyTimeout,
             KEcsInterKeyTimeout, TCallBack( CancelMatch, this ) );
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 EXPORT_C void CAknEcsDetector::SetState( TState aNewState )
     {
+    _AKNTRACE_FUNC_ENTER;
+    _AKNTRACE( "[%s][%s] aNewState: %d", "CAknEcsDetector", 
+                                            		__FUNCTION__, aNewState );
     ReportEvent( aNewState );
 
     TInt oldState = iState;
@@ -611,10 +671,13 @@
                 proceedWithCall = OfferEmergencyCall();
                 if ( proceedWithCall )
                     {
+                    _AKNTRACE( "[%s][%s] Attempt Emergency Call", "CAknEcsDetector", 
+                                                                		__FUNCTION__);
                     AttemptEmergencyCall();
                     }
                 else
                     {  // Pass through this state immediately
+                    _AKNTRACE( "[%s][%s] Reset", "CAknEcsDetector", __FUNCTION__);
                     iQueue->Reset();
                     SetState( EEmpty );
                     }
@@ -625,12 +688,15 @@
             break;
 
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 EXPORT_C void CAknEcsDetector::Reset()
     {
+    _AKNTRACE_FUNC_ENTER;
     iQueue->Reset();
     SetState( EEmpty );
+    _AKNTRACE_FUNC_EXIT;
     }
 
 /**
@@ -657,6 +723,7 @@
 
 void CAknEcsDetector::AttemptEmergencyCall()
     {
+    _AKNTRACE_FUNC_ENTER;
 #ifdef AVKON_RDEBUG_INFO
     _LIT(KDebugAttemptEmergencyCall, "Attempt Emergency Call From Detector");
     RDebug::Print(KDebugAttemptEmergencyCall);
@@ -668,6 +735,7 @@
         {
         err = KErrNone;
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 EXPORT_C void CAknEcsDetector::SetObserver( MAknEcsObserver* aObserver )
@@ -690,18 +758,22 @@
     */
 TInt CAknEcsDetector::CallAttemptedCallback(TAny* aSelf)
     { // static
+    _AKNTRACE_FUNC_ENTER;
     REINTERPRET_CAST(CAknEcsDetector*,aSelf)->SetState( ECallAttempted );
 #ifdef AVKON_RDEBUG_INFO
     _LIT(KDebugCallAttemptedCallback, "CallAttemptedCallback");
     RDebug::Print(KDebugCallAttemptedCallback);
 #endif
+    _AKNTRACE_FUNC_EXIT;
     return 0;
     }
 
 TInt CAknEcsDetector::CancelMatch(TAny* aThis)
     {
+    _AKNTRACE_FUNC_ENTER;
     static_cast<CAknEcsDetector*>(aThis)->Reset();
     static_cast<CAknEcsDetector*>(aThis)->iKeyTimeoutTimer->Cancel();
+    _AKNTRACE_FUNC_EXIT;
     return 0; // Do not repeat the operation
     }
 
--- a/uifw/AvKon/src/AknNoteDialog.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/src/AknNoteDialog.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -46,6 +46,7 @@
 #endif
 
 #include <AknTasHook.h> // for testability hooks
+#include "akntrace.h"
 const TInt EEikDialogFlagSleeping   =0x20000;
 
 // -----------------------------------------------------------------------------
@@ -181,23 +182,32 @@
 EXPORT_C CAknNoteDialog::CAknNoteDialog() : CEikDialog(),
     iTimeoutInMicroseconds(ENoTimeout), iTone(ENoTone)
     {
+    _AKNTRACE_FUNC_ENTER;
     AKNTASHOOK_ADD( this, "CAknNoteDialog" );
+    _AKNTRACE_FUNC_EXIT;
     }
 
 EXPORT_C CAknNoteDialog::CAknNoteDialog(const TTone& aTone, const TTimeout& aTimeout) :
     CEikDialog(), iTimeoutInMicroseconds(aTimeout), iTone(aTone)
     {
+    _AKNTRACE_FUNC_ENTER;
+    _AKNTRACE("iTimeoutInMicroseconds = %d", aTimeout);
     AKNTASHOOK_ADD( this, "CAknNoteDialog" );
+    _AKNTRACE_FUNC_EXIT;
     }
 
 EXPORT_C CAknNoteDialog::CAknNoteDialog(CEikDialog** aSelfPtr,const TTone& aTone, const TTimeout& aTimeout) :
     CEikDialog(), iTimeoutInMicroseconds(aTimeout), iSelfPtr(aSelfPtr), iTone(aTone)
      {
+     _AKNTRACE_FUNC_ENTER;
+     _AKNTRACE("iTimeoutInMicroseconds = %d", aTimeout);
      AKNTASHOOK_ADD( this, "CAknNoteDialog" );
+     _AKNTRACE_FUNC_EXIT;
      }
 
 EXPORT_C CAknNoteDialog::~CAknNoteDialog()
     {
+    _AKNTRACE_FUNC_ENTER;
     AKNTASHOOK_REMOVE();
 // FIXME: Experimental heuristics for determining popup type
 #ifdef RD_UI_TRANSITION_EFFECTS_POPUPS
@@ -225,6 +235,7 @@
 
     delete iControlAttributes;
     delete iNoteExtension;
+    _AKNTRACE_FUNC_EXIT;
     }
 
 EXPORT_C void CAknNoteDialog::SetTimeout(const TTimeout& aTimeout)
@@ -382,6 +393,7 @@
 
 EXPORT_C void CAknNoteDialog::LayoutAndDraw()
     {
+    _AKNTRACE_FUNC_ENTER;
     if (IsActivated())
         {
         TRect screenRect = iAvkonAppUi->ApplicationRect();
@@ -397,10 +409,12 @@
             attr->AllowOptimizedDrawing();
             }
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 EXPORT_C TInt CAknNoteDialog::RunLD()
     {
+    _AKNTRACE_FUNC_ENTER;
     PlayTone();
     ReportUserActivity();
 
@@ -414,12 +428,14 @@
         CAknTransitionUtils::RemoveData( ( TInt )NoteControl() );
         }
 #endif
-        
+
+    _AKNTRACE_FUNC_EXIT;    
     return CEikDialog::RunLD();
     }
 
 EXPORT_C TInt CAknNoteDialog::StaticDeleteL(TAny *aThis)
     {
+    _AKNTRACE_FUNC_ENTER;
     CAknNoteDialog* self = REINTERPRET_CAST(CAknNoteDialog*,aThis);
         
 #ifdef RD_UI_TRANSITION_EFFECTS_POPUPS           
@@ -478,12 +494,14 @@
         self->ExitSleepingDialog();
         self->NoteControl()->Reset();
         }
+    _AKNTRACE_FUNC_EXIT;
     return EFalse;
     }
 
 
 EXPORT_C void CAknNoteDialog::SetSizeAndPosition( const TSize& aSize )
     {
+    _AKNTRACE_FUNC_ENTER;
     SetBorder( TGulBorder::ENone );
     CAknNoteControl* note = NoteControl();
     if (note)
@@ -509,6 +527,7 @@
    
         ControlAttributes()->SetLayoutDone();                
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 EXPORT_C void CAknNoteDialog::PreLayoutDynInitL()
@@ -661,6 +680,7 @@
 
 EXPORT_C void CAknNoteDialog::HandleResourceChange(TInt aType)
     {
+    _AKNTRACE_FUNC_ENTER;
     if(aType==KEikDynamicLayoutVariantSwitch)
         {
         if (!IsVisible())
@@ -697,6 +717,7 @@
         }
 
     CEikDialog::HandleResourceChange(aType);
+    _AKNTRACE_FUNC_EXIT;
     }
 
 /**
@@ -831,6 +852,7 @@
 
 EXPORT_C void CAknNoteDialog::HandlePointerEventL(const TPointerEvent& aPointerEvent)
     {
+    _AKNTRACE_FUNC_ENTER;
     if ( AknLayoutUtils::PenEnabled() )
         {
         CCoeControl* ctrl = GrabbingComponent();
@@ -859,6 +881,7 @@
                 }
             }
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 
--- a/uifw/AvKon/src/AknPhoneNumberEditor.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/src/AknPhoneNumberEditor.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -1081,7 +1081,9 @@
     
     // check if the characters are allowed, if one character is not allowed, 
     // it will not be pasted into phone number editor
-	if ( fepState->CurrentInputMode() != EAknEditorTextInputMode )
+    CAknExtendedInputCapabilities * pCapabilities(iExtension->iExtendedInputCapabilities);
+	if ( fepState->CurrentInputMode() != EAknEditorTextInputMode && pCapabilities
+		&& pCapabilities->EditorType() != CAknExtendedInputCapabilities::EHybridAlphaNumericEditor )
 		{
 		TInt pos = 0;
 		TInt index = 0;
@@ -1294,5 +1296,17 @@
 	return edwinState->Flags();	
 	}
 
+// --------------------------------------------------------------------------
+// CAknPhoneNumberEditor::MakeVisible
+// --------------------------------------------------------------------------
+//
+void CAknPhoneNumberEditor::MakeVisible(TBool aVisible)
+	{
+	CCoeControl::MakeVisible(aVisible);
+	if ( !aVisible )
+		{
+	    CloseVKB();
+		}
+	}
 
 // End of file
--- a/uifw/AvKon/src/AknPopupField.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/src/AknPopupField.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -1160,6 +1160,14 @@
         }
     }
 
+EXPORT_C void CAknPopupField::CloseSelectionListL()
+    {
+    if (  iSelectionMode == EAknPopupFieldSelectionListMode 
+          && iSelectionList )
+        {
+        AttemptExitL( EFalse );
+        }
+    }
 
 void CAknPopupField::ConfigureDecorator()
     {
--- a/uifw/AvKon/src/AknPopupSettingPage.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/src/AknPopupSettingPage.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2002-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -317,7 +317,8 @@
             // ensures that correct item gets selected if setting page is
             // accepted by clicking the left softkey.
             if ( iExtension && iExtension->iFlags.IsSet( 
-                    CAknPopupSettingListExtension::ESingleClickEnabled ) )
+                     CAknPopupSettingListExtension::ESingleClickEnabled ) &&
+                 ItemExists( iCurrentSelection ) )
                 {
                 View()->SetCurrentItemIndex( iCurrentSelection );
                 }
--- a/uifw/AvKon/src/AknPreviewPopUpController.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/src/AknPreviewPopUpController.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2005-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -231,93 +231,62 @@
             resize = ETrue;
             }
 
-        // allowed rect
-        TRect clientRect;
-        AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, clientRect );
-        
-        // Control is allowed to be on top of the status pane but it cannot
-        // overlay either stacon pane or control pane.
-        
-        //switch ( iAvkonAppUi->StatusPane()->CurrentLayoutResId() )
-        CEikStatusPaneBase* statusPane = CEikStatusPaneBase::Current();
-        TInt currentStatusPaneLayoutResId = 0;
-        if (statusPane)
-            {
-            currentStatusPaneLayoutResId = statusPane->CurrentLayoutResId();
-            }
-        else
-            {
-            // If this app does not have statuspane, then we ask the layout from AknCapServer.
-            currentStatusPaneLayoutResId = CAknSgcClient::CurrentStatuspaneResource();        
-            }
-            
-        switch ( currentStatusPaneLayoutResId )
-            {
-            case R_AVKON_STACON_PANE_LAYOUT_USUAL_SOFTKEYS_RIGHT:
-            case R_AVKON_STACON_PANE_LAYOUT_USUAL_SOFTKEYS_LEFT:
-            case R_AVKON_STACON_PANE_LAYOUT_IDLE_SOFTKEYS_RIGHT:
-            case R_AVKON_STACON_PANE_LAYOUT_IDLE_SOFTKEYS_LEFT:
-            case R_AVKON_STACON_PANE_LAYOUT_EMPTY_SOFTKEYS_RIGHT:
-            case R_AVKON_STACON_PANE_LAYOUT_EMPTY_SOFTKEYS_LEFT:
-                break;
-                
-            default:
-                TRect statusPaneRect;
-                AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EStatusPane, 
-                                                   statusPaneRect );
-
-                clientRect.BoundingRect( statusPaneRect );
-            }
+        // Adjust the position if the popup would go outside of the screen
+        // rect with the given position.
+        TRect screenRect;
+        AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EScreen, screenRect );
+        TInt screenWidth( screenRect.Width() );
+        TInt screenHeight( screenRect.Height() );
 
         TPoint finalPosition;
 
-        // resize if the popup is too wide
-        if ( popupSize.iWidth > clientRect.Width() )
+        // Resize if the popup is too wide.
+        if ( popupSize.iWidth > screenWidth )
             {
             resize = ETrue;
-            popupSize.iWidth = clientRect.Width();
+            popupSize.iWidth = screenWidth;
             }
 
-        // resize if the popup is too tall
-        if ( popupSize.iHeight > clientRect.Height() )
-        	{
+        // Resize if the popup is too tall.
+        if ( popupSize.iHeight > screenHeight )
+            {
             resize = ETrue;
-            popupSize.iHeight = clientRect.Height();
-        	}
+            popupSize.iHeight = screenHeight;
+            }
 
-        // default horizontal position is left from the given point
-        if ( askedPoint.iX - popupSize.iWidth >= clientRect.iTl.iX )
+        // Default horizontal position is left from the given point.
+        if ( askedPoint.iX - popupSize.iWidth >= screenRect.iTl.iX )
             {
             finalPosition.iX = askedPoint.iX - popupSize.iWidth;
             }
         else
             {
             // outside left border, move to left border
-            finalPosition.iX = clientRect.iTl.iX;
+            finalPosition.iX = screenRect.iTl.iX;
             }
 
-        // check the right border
-        if ( finalPosition.iX + popupSize.iWidth > clientRect.iBr.iX )
+        // Check the right border.
+        if ( finalPosition.iX + popupSize.iWidth > screenRect.iBr.iX )
             {
-            finalPosition.iX = clientRect.iBr.iX - popupSize.iWidth;
+            finalPosition.iX = screenRect.iBr.iX - popupSize.iWidth;
             }
 
-        // default vertical position is up from the given point
-        // coordinates grow from top to bottom
-        if ( askedPoint.iY > clientRect.iTl.iY )
+        // Default vertical position is up from the given point.
+        // Coordinates grow from top to bottom.
+        if ( askedPoint.iY > screenRect.iTl.iY )
             {
             finalPosition.iY = askedPoint.iY;
             }
         else
             {
-            // outside top border, move to top border
-            finalPosition.iY = clientRect.iTl.iY;
+            // Outside top border, move to top border.
+            finalPosition.iY = screenRect.iTl.iY;
             }
 
-        // outside bottom border, move to bottom border
-        if ( ( askedPoint.iY + popupSize.iHeight ) > clientRect.iBr.iY )
+        // Outside bottom border, move to bottom border.
+        if ( ( askedPoint.iY + popupSize.iHeight ) > screenRect.iBr.iY )
             {
-            finalPosition.iY = clientRect.iBr.iY - popupSize.iHeight;
+            finalPosition.iY = screenRect.iBr.iY - popupSize.iHeight;
             }
 
         if ( resize )
--- a/uifw/AvKon/src/AknProgressDialog.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/src/AknProgressDialog.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -30,6 +30,8 @@
 #include "aknnoteattributes.h"
 #include <akninputblock.h>
 
+#include "akntrace.h"
+
 
 #ifdef RD_UI_TRANSITION_EFFECTS_POPUPS
 #include <gfxtranseffect/gfxtranseffect.h>
@@ -101,6 +103,8 @@
          TInt anInterval,CEikDialog** aSelfPtr) :
          CAknNoteDialog(aSelfPtr),iInternalTimerControl(ETrue)
 	{
+	_AKNTRACE_FUNC_ENTER;
+	_AKNTRACE("aFinalValue = %d anIncrement = %d anInterval = %d", aFinalValue, anIncrement, anInterval); 
 #ifdef RD_UI_TRANSITION_EFFECTS_POPUPS
 	GfxTransEffect::Register( this, KGfxWaitNoteControlUid );
 #endif
@@ -109,15 +113,18 @@
 	iModel.iIncrement = anIncrement;
 	iModel.iRunning = EFalse;
 	AKNTASHOOK_ADD( this, "CAknProgressDialog" );
+	_AKNTRACE_FUNC_EXIT;
 	}
 
 EXPORT_C CAknProgressDialog::CAknProgressDialog(CEikDialog** aSelfPtr) :
 	CAknNoteDialog(aSelfPtr),iInternalTimerControl(EFalse)
 	{
+	_AKNTRACE_FUNC_ENTER;
 #ifdef RD_UI_TRANSITION_EFFECTS_POPUPS
 	GfxTransEffect::Register( this, KGfxWaitNoteControlUid );
 #endif
 	AKNTASHOOK_ADD( this, "CAknProgressDialog" );
+	_AKNTRACE_FUNC_EXIT;
 	}
 
 EXPORT_C CAknProgressDialog::CAknProgressDialog(CEikDialog** aSelfPtr,
@@ -126,14 +133,18 @@
 	iVisibilityDelayOff( aVisibilityDelayOff ),
 	iInternalTimerControl(EFalse)
 	{
+	_AKNTRACE_FUNC_ENTER;
+	_AKNTRACE("iVisibilityDelayOff = %d ", aVisibilityDelayOff); 
 #ifdef RD_UI_TRANSITION_EFFECTS_POPUPS
 	GfxTransEffect::Register( this, KGfxWaitNoteControlUid );
 #endif
 	AKNTASHOOK_ADD( this, "CAknProgressDialog" );
+	_AKNTRACE_FUNC_EXIT;
 	}
 
 EXPORT_C CAknProgressDialog::~CAknProgressDialog()
 	{
+	_AKNTRACE_FUNC_ENTER;
 	AKNTASHOOK_REMOVE();
     if ( iInternalTimerControl )
         {
@@ -143,6 +154,7 @@
     delete iCancelWhileHidden;
     delete iProgressTimer;
 	delete iProgressDialogTimer;
+	_AKNTRACE_FUNC_EXIT;
 	}
 
 EXPORT_C void CAknProgressDialog::PreLayoutDynInitL()
@@ -175,6 +187,8 @@
 
 TInt CAknProgressDialog::DialogTimerEvent()
     {
+    _AKNTRACE_FUNC_ENTER;
+    _AKNTRACE("CAknProgressDialog::DialogTimerEvent iState = %d", iState);
     switch ( iState )
         {
         case EProcessOnDisplayOff:
@@ -259,11 +273,14 @@
             delete iProgressDialogTimer;
             iProgressDialogTimer = NULL;
         }
+    _AKNTRACE_FUNC_EXIT;
     return KErrNone;
     }
 
 EXPORT_C void CAknProgressDialog::ProcessFinishedL()
-    {        
+    {
+    _AKNTRACE_FUNC_ENTER;
+    _AKNTRACE("CAknProgressDialog::ProcessFinishedL iState = %d", iState);
         switch ( iState )
         {
         case EProcessOnDisplayOff:
@@ -281,10 +298,13 @@
 		default:
 			break;
         }
+	_AKNTRACE_FUNC_EXIT;   
     }
 
 EXPORT_C TInt CAknProgressDialog::RunLD()
 	{
+	_AKNTRACE_FUNC_ENTER;
+	_AKNTRACE("RunLD iInternalTimerControl = %d iVisibilityDelayOff = %d", iInternalTimerControl, iVisibilityDelayOff);
     CAknNoteControl* note = NoteControl();
 	note->CreateProgressBarL();
 
@@ -338,7 +358,7 @@
         
         iEikonEnv->EikAppUi()->AddToStackL(this,ECoeStackPriorityDialog,ECoeStackFlagRefusesAllKeys);
         }
-
+    _AKNTRACE_FUNC_EXIT;
     return CAknNoteDialog::RunLD();
     }
 
@@ -388,20 +408,24 @@
 
 EXPORT_C TBool CAknProgressDialog::OkToExitL(TInt aButtonId)
     {
+    _AKNTRACE_FUNC_ENTER;    
     // if dialog is invisible and app isn't exiting, eg during view switch,
     // don't stop the progress dialog - it's most likely part of some
     // asynchronous operation.
     if ((iState == EProcessOnDisplayOff && !CAknEnv::AppWithShutterRunning()) || 
     	aButtonId == EAknSoftkeyEmpty )
         {
+        _AKNTRACE("CAknProgressDialog::OkToExitL return for EProcessOnDisplayOff");
 		delete iCancelWhileHidden;
 		iCancelWhileHidden = NULL;
         return EFalse;
         }
     if ( iCallback )
         {
+        _AKNTRACE("CAknProgressDialog::OkToExitL succeed to execut DialogDismissedL");   
         iCallback->DialogDismissedL(aButtonId);
         }
+    _AKNTRACE_FUNC_EXIT;
     return ETrue;
     }
         
--- a/uifw/AvKon/src/AknQueryControl.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/src/AknQueryControl.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -77,6 +77,7 @@
 #include <AknTasHook.h> // for testability hooks
 #include <tacticon.h>
 
+#include "akntrace.h"
 const TInt KPinCodeTacticonInterval = 30000000; // 30s
 const TInt KPinCodeMaxTacticons = 10;
 /*******
@@ -110,12 +111,14 @@
 
 CAknQueryControlExtension::~CAknQueryControlExtension()
     {
+    _AKNTRACE_FUNC_ENTER;
     delete iOriginalPrompt;
     delete iBackspaceButton;
     delete iKeypad;
 
     delete iPinTacticonTimer;
     iPinTacticonTimer = NULL;
+    _AKNTRACE_FUNC_EXIT;
     }
     
 CAknLocationEditor *CAknQueryControl::LocationEd() const
@@ -137,10 +140,12 @@
 
 void CAknQueryExtension::CreateEditorContextL()
     {
+    _AKNTRACE_FUNC_ENTER;
     delete iEditorContext;
     iEditorContext = NULL;
     iEditorContext = CAknsFrameBackgroundControlContext::NewL(
         KAknsIIDQsnFrInput, TRect(0,0,1,1), TRect(0,0,1,1), EFalse );
+    _AKNTRACE_FUNC_EXIT;
     }
 
 CAknsFrameBackgroundControlContext* CAknQueryExtension::EditorContext()
@@ -159,19 +164,23 @@
 void CAknQueryExtension::CreateExtensionL(
     const CAknQueryControl* aQueryControl )
     {
+    _AKNTRACE_FUNC_ENTER;
     CAknQueryExtension* extension = CAknQueryExtension::NewL();
     CleanupStack::PushL( extension );
     AknsPointerStore::StorePointerL( 
         static_cast<const CBase*>(aQueryControl), extension );
     CleanupStack::Pop(); // extension
+    _AKNTRACE_FUNC_EXIT;
     }
 
 void CAknQueryExtension::DestroyExtension(
     const CAknQueryControl* aQueryControl )
     {
+    _AKNTRACE_FUNC_ENTER;
     delete Instance( aQueryControl );
     AknsPointerStore::RemovePointer( 
         static_cast<const CBase*>(aQueryControl) );
+    _AKNTRACE_FUNC_EXIT;
     }
 
 CAknQueryExtension* CAknQueryExtension::NewL()
@@ -182,6 +191,7 @@
 CAknQueryExtension::~CAknQueryExtension()
     {
     delete iEditorContext;
+    _AKNTRACE( "[%s][%s]exit", "CAknQueryExtension", "~CAknQueryExtension" );
     }
 
 /*****************************
@@ -214,6 +224,7 @@
 EXPORT_C void TAknQueryEcsObserver::HandleEcsEvent( CAknEcsDetector* /*aDetector*/,
                                                     CAknEcsDetector::TState aUpdatedState )
     {
+	_AKNTRACE( "[%s][%s] aUpdatedState: %d", "TAknQueryEcsObserver", __FUNCTION__,aUpdatedState);
     TRAP_IGNORE( iParent->SetEcsCbaVisibleL( aUpdatedState == CAknEcsDetector::ECompleteMatch ) );
     
     // Hide the emergency call number again.
@@ -223,6 +234,7 @@
         {
         if ( iParent->QueryType() == EPinLayout )
             {
+            _AKNTRACE( "[%s][%s] ", "RevealSecretText( EFalse )", __FUNCTION__);
             static_cast<CAknNumericSecretEditor*>
                 ( iParent->ControlByLayoutOrNull( EPinLayout ) )->RevealSecretText( EFalse );
             }
@@ -232,8 +244,10 @@
     // If the query is cancelled, the iParent is deleted!
     if ( aUpdatedState == CAknEcsDetector::ECallAttempted )
         {
+        _AKNTRACE( "[%s][%s] ", "cancel query", __FUNCTION__);
         TRAP_IGNORE( iParent->CancelQueryL() );
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 
@@ -294,6 +308,7 @@
  */
 EXPORT_C CAknQueryControl::~CAknQueryControl()
     {
+	_AKNTRACE( "[%s][%s] enter", "CAknQueryControl", "~CAknQueryControl");
     AKNTASHOOK_REMOVE();
 	if (iEdwin)
         AknsUtils::DeregisterControlPosition(iEdwin);
@@ -350,6 +365,7 @@
     delete iIncreaseValueButton;
     delete iDecreaseValueButton;
 #endif //defined( RD_SCALABLE_UI_V2)
+    _AKNTRACE( "[%s][%s] exit", "CAknQueryControl", "~CAknQueryControl");
     }
 
 /**
@@ -357,6 +373,7 @@
  */
 EXPORT_C void CAknQueryControl::ConstructFromResourceL(TResourceReader &aRes)
     {
+    _AKNTRACE_FUNC_ENTER;
     // Construct extension
     CAknQueryExtension::CreateExtensionL( this );
 	iExtension = new (ELeave)CAknQueryControlExtension;
@@ -403,10 +420,12 @@
             iExtension->iKeypad = CAknKeypad::NewL( *this, iQueryType );
             }
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 void CAknQueryControl::ConstructQueryL(TResourceReader& aRes)
     {
+    _AKNTRACE( "[%s][%s] iQueryType : %d", "CAknQueryControl", "ConstructQueryL", iQueryType );
     switch(iQueryType)
         {
         case EConfirmationQueryLayout:
@@ -720,18 +739,21 @@
         {
         extension->CreateEditorContextL();
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 TInt CAknQueryControl::PinCodeTimeoutCallback( TAny* aThis )
     {
+    _AKNTRACE_FUNC_ENTER;
     // play tacticon
     static_cast<CAknQueryControl*>( aThis )->PlayPinCodeTacticon();
-    
+    _AKNTRACE_FUNC_EXIT;
     return KErrNone;
     }
 
 void CAknQueryControl::PlayPinCodeTacticon()
     {
+    _AKNTRACE_FUNC_ENTER;
     // play tacticon
     RTacticon client;
     if ( KErrNone == client.Connect() )
@@ -756,10 +778,12 @@
             StopPinCodeTacticonTimer();
             }
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 void CAknQueryControl::ResetPinCodeTacticonTimer()
     {
+    _AKNTRACE_FUNC_ENTER;
     // stop old timer
     StopPinCodeTacticonTimer();
 
@@ -777,10 +801,12 @@
                         TCallBack( PinCodeTimeoutCallback, this ) );
             }
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 void CAknQueryControl::StopPinCodeTacticonTimer()
     {
+    _AKNTRACE_FUNC_ENTER;
     if ( iExtension )
         {
         // delete timer
@@ -789,6 +815,7 @@
         // set the timer null, so that it will not be used again
         iExtension->iPinTacticonTimer = NULL;
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 ///
@@ -925,6 +952,7 @@
  */
 EXPORT_C TKeyResponse CAknQueryControl::OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType) 
     {
+    _AKNTRACE( "[%s][%s] aKeyEvent.iCode :%d, aType:%d ", "CAknQueryControl", __FUNCTION__, aKeyEvent.iCode, aType);
     TKeyResponse response( EKeyWasNotConsumed );
 
     // Send key handling for emergency call support
@@ -950,6 +978,7 @@
             ResetPinCodeTacticonTimer();
             }
         }
+    _AKNTRACE_FUNC_EXIT;
     return response;
     }
 
@@ -1123,6 +1152,7 @@
                                 }
                             }
                         }
+                    _AKNTRACE( "[%s][%s] iPinEdwin->RevealSecretText( %d )", "CAknQueryControl", __FUNCTION__, reveal);
                     iPinEdwin->RevealSecretText( reveal );
                     }
                 }
@@ -2531,6 +2561,7 @@
 */
 void CAknQueryControl::CancelQueryL()
     {
+    _AKNTRACE_FUNC_ENTER;
     if (iQueryControlObserver)
         {
         iQueryControlObserver->HandleQueryEditorStateEventL(this, MAknQueryControlObserver::EEmergencyCallAttempted, MAknQueryControlObserver::EEditorValueValid);
@@ -2543,6 +2574,7 @@
         key.iScanCode = EStdKeyNull;
         iEikonEnv->SimulateKeyEventL(key, EEventKey);
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 /**
@@ -2600,7 +2632,7 @@
 
 EXPORT_C void CAknQueryControl::SetImageL(CEikImage* aImage)
     { // Gets ownership of the aImage
-    
+    _AKNTRACE_FUNC_ENTER;
 	if ( iImage && iImage->IsPictureOwnedExternally() )
         {
         delete ((CApaMaskedBitmap*) iImage->Bitmap());
@@ -2618,11 +2650,13 @@
     iAnimation = NULL;
 
     Layout();
+    _AKNTRACE_FUNC_EXIT;
     }
 
 EXPORT_C void CAknQueryControl::SetImageL(const TDesC& aImageFile,
                                           TInt aBmpId, TInt aBmpMaskId)
     {
+    _AKNTRACE_FUNC_ENTER;
     CEikImage* image = new(ELeave) CEikImage;
     CleanupStack::PushL( image );
                
@@ -2653,10 +2687,12 @@
 
     CleanupStack::Pop(); //image
     SetImageL(image); // gets ownership
+    _AKNTRACE_FUNC_EXIT;
     }
 
 EXPORT_C void CAknQueryControl::SetAnimationL(TInt aResource)
     {
+    _AKNTRACE_FUNC_ENTER;
     delete iAnimation;
     iAnimation = NULL;
     iAnimation = CAknBitmapAnimation::NewL();
@@ -2677,10 +2713,12 @@
     iExtension->iAnimationId = aResource;
     
     Layout();
+    _AKNTRACE_FUNC_EXIT;
     }
 
 EXPORT_C void CAknQueryControl::StartAnimationL()
     {
+    _AKNTRACE_FUNC_ENTER;
     if (iAnimation)
         {
         CBitmapAnimClientData *animClientData = iAnimation->BitmapAnimData();
@@ -2725,15 +2763,19 @@
 
         iAnimation->StartAnimationL();
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 EXPORT_C TInt CAknQueryControl::CancelAnimation()
     {
-    if ( iAnimation )
+	_AKNTRACE_FUNC_ENTER;
+	TInt result(KErrGeneral);
+	if ( iAnimation )
         {
-        return iAnimation->CancelAnimation();
+		result = iAnimation->CancelAnimation();
         }
-    return KErrGeneral;
+	_AKNTRACE( "[%s][%s] return %d", "CAknQueryControl", "CancelAnimation", result);
+    return result;
     }
 
 
@@ -2980,13 +3022,16 @@
 // Callback for doing a redraw when animating pictographs
 TInt CAknQueryControl::StaticPictographCallBack( TAny* aPtr )
     {
+    _AKNTRACE_FUNC_ENTER;
     CAknQueryControl* me = static_cast<CAknQueryControl*>( aPtr );
     me->PictographCallBack();
+    _AKNTRACE_FUNC_EXIT;
     return KErrNone;
     }
 
 void CAknQueryControl::PictographCallBack()
     {
+    _AKNTRACE_FUNC_ENTER;
     MAknsSkinInstance* skin = AknsUtils::SkinInstance();
     MAknsControlContext* cc = AknsDrawUtils::ControlContext( this );
 
@@ -3025,6 +3070,7 @@
             iPrompt->SetLineModified( i, EFalse );
             }
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 TBool CAknQueryControl::EmbeddedVirtualInput() const
@@ -3060,10 +3106,12 @@
     
 CEikDialog* CAknQueryControl::Dialog() const
     {
+	_AKNTRACE_FUNC_ENTER;
     CAknQueryControl* control = const_cast<CAknQueryControl*>( this );
     
     CEikDialog* dialog = NULL;
     control->MopGetObject( dialog );
+    _AKNTRACE_FUNC_EXIT;
     return dialog;
     }
    
@@ -3365,6 +3413,7 @@
     
 EXPORT_C void CAknQueryControl::HandleResourceChange(TInt aType)
     {
+    _AKNTRACE_FUNC_ENTER;
     CCoeControl::HandleResourceChange(aType);
     
     if( aType == KAknsMessageSkinChange && iExtension->iAnimationId )
@@ -3377,6 +3426,7 @@
         SizeChanged();
         TRAP_IGNORE(DoSetPromptL());
         }
+    _AKNTRACE_FUNC_EXIT;
     }    
 
 // ---------------------------------------------------------------------------
@@ -3410,6 +3460,7 @@
 //
 void CAknQueryControl::SetEcsCbaVisibleL( TBool aVisible )
     {
+    _AKNTRACE( "[%s][%s] aVisible:%d ", "CAknQueryControl", __FUNCTION__,aVisible);
     if ( iExtension &&
          !COMPARE_BOOLS( aVisible, iExtension->iEcsCbaShown ) &&
          iFlags.IsSet( EEmergencyCallsCBASupport ) )
@@ -3444,6 +3495,7 @@
                 }
             }
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 
@@ -3453,6 +3505,7 @@
 //
 void CAknQueryControl::AttemptEmergencyCallL()
     {
+    _AKNTRACE_FUNC_ENTER;
     if ( iEcsDetector )
         {
         if ( iEcsDetector->State() == CAknEcsDetector::ECompleteMatch )
@@ -3470,6 +3523,7 @@
                 }
             }
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 
@@ -3507,6 +3561,7 @@
 
 void CAknExtQueryControl::ConstructQueryL(TResourceReader& aRes)
     {   
+    _AKNTRACE_FUNC_ENTER;
     if ( iQueryType == EIpLayout)   
         {
         iIpEditor = new(ELeave)CAknIpFieldEditor;
@@ -3536,6 +3591,7 @@
         {
         extension->CreateEditorContextL();
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 
@@ -3613,7 +3669,7 @@
 EXPORT_C void CAknExtQueryControl::HandleControlEventL(CCoeControl* /*aControl*/,TCoeEvent aEventType)
     {
     //CAknQueryControl::HandleControlEventL(NULL, aEventType);
-    
+	_AKNTRACE( "[%s][%s] aEventType:%d ", "CAknExtQueryControl", "HandleControlEventL",aEventType);
     if(iQueryControlObserver && aEventType == EEventStateChanged)
         {                
         if(GetTextLength())
@@ -3625,6 +3681,7 @@
             iQueryControlObserver->HandleQueryEditorStateEventL(this,MAknQueryControlObserver::EQueryControlEditorStateChanging, MAknQueryControlObserver::EEditorEmpty);
             }
         }
+    _AKNTRACE( "[%s][%s] EXIT ", "CAknExtQueryControl", "HandleControlEventL");
     }
 
 
@@ -3946,13 +4003,16 @@
 // Callback for doing a redraw when animating pictographs
 TInt CAknExtQueryControl::StaticPictographCallBack( TAny* aPtr )
     {
+    _AKNTRACE_FUNC_ENTER;
     CAknExtQueryControl* me = static_cast<CAknExtQueryControl*>( aPtr );
     me->PictographCallBack();
+    _AKNTRACE_FUNC_EXIT;
     return KErrNone;
     }
 
 void CAknExtQueryControl::PictographCallBack()
     {
+    _AKNTRACE_FUNC_ENTER;
     MAknsSkinInstance* skin = AknsUtils::SkinInstance();
     MAknsControlContext* cc = AknsDrawUtils::ControlContext( this );
 
@@ -3991,6 +4051,7 @@
             iPrompt->SetLineModified( i, EFalse );
             }
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 // End of File
--- a/uifw/AvKon/src/AknQueryDialog.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/src/AknQueryDialog.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -52,6 +52,7 @@
 #endif
 
 #include <AknTasHook.h> // for testability hooks
+#include "akntrace.h"
 /**
  *  CAknQueryDialogExtension  
  */
@@ -87,6 +88,7 @@
 //
 CAknQueryDialogExtension::~CAknQueryDialogExtension()
     {
+    _AKNTRACE( "[%s][%s] do nothing", "CAknQueryDialogExtension", "~CAknQueryDialogExtension" );
     }
 
 
@@ -97,6 +99,7 @@
 CAknQueryDialogExtension::CAknQueryDialogExtension
     (CAknQueryDialog* aQueryDialog) : iParent(aQueryDialog)
     {
+    _AKNTRACE( "[%s][%s] do nothing", "CAknQueryDialogExtension", "CAknQueryDialogExtension" );
     }
     
 // ---------------------------------------------------------------------------
@@ -107,6 +110,7 @@
 //
 EXPORT_C void CAknQueryDialogExtension::GetCaptionForFep(TDes& aCaption) const
     {
+    _AKNTRACE( "[%s][%s] enter aCaption:%s", "CAknQueryDialogExtension", "GetCaptionForFep" , &aCaption);
     aCaption = KNullDesC;
     
     CAknQueryControl* control = iParent->QueryControl();
@@ -136,6 +140,7 @@
                 }
             }
         }
+    _AKNTRACE( "[%s][%s] exit aCaption:%s", "CAknQueryDialogExtension", "GetCaptionForFep" , &aCaption);
     }
 
 
@@ -179,6 +184,7 @@
 //
 CAknMultilineQueryDialogExtension::~CAknMultilineQueryDialogExtension()
     {
+    _AKNTRACE( "[%s][%s] do nothing", "CAknMultilineQueryDialogExtension", "~CAknMultilineQueryDialogExtension" );
     }
 
 // ---------------------------------------------------------------------------
@@ -188,6 +194,7 @@
 CAknMultilineQueryDialogExtension::CAknMultilineQueryDialogExtension
     (CAknQueryDialog* aQueryDialog, TInt aQueryType):CAknQueryDialogExtension(aQueryDialog),iQueryType(aQueryType)
     {
+    _AKNTRACE( "[%s][%s] do nothing", "CAknMultilineQueryDialogExtension", "CAknMultilineQueryDialogExtension" );
     }
 
 // ---------------------------------------------------------------------------
@@ -288,8 +295,10 @@
  */
 EXPORT_C CAknQueryDialog* CAknQueryDialog::NewL(const TTone& aTone)
     {
+    _AKNTRACE_FUNC_ENTER;
     CAknQueryDialog* self = new (ELeave) CAknQueryDialog(aTone);
     AKNTASHOOK_ADDL( self, "CAknQueryDialog" );
+    _AKNTRACE_FUNC_EXIT;
     return self;
     }
 
@@ -349,6 +358,7 @@
 
 EXPORT_C CAknQueryDialog::CAknQueryDialog(const TTone& aTone)
     {
+    _AKNTRACE_FUNC_ENTER;
 #ifdef RD_UI_TRANSITION_EFFECTS_POPUPS
     GfxTransEffect::Register( this, KGfxQueryControlUid );
 #endif
@@ -357,6 +367,8 @@
         {
          iSoundSystem = iAvkonAppUiBase->KeySounds();          
         }
+    _AKNTRACE( "[%s][%s] iTone: %d", "CAknQueryDialog", __FUNCTION__, iTone );
+    _AKNTRACE_FUNC_EXIT;
     } 
 
 /**
@@ -387,6 +399,7 @@
 
 EXPORT_C CAknQueryDialog::~CAknQueryDialog()
     {
+    _AKNTRACE( "[%s][%s] Enter", "CAknQueryDialog", "~CAknQueryDialog" );
     AKNTASHOOK_REMOVE();
     delete iPrompt;
     delete iExtension;
@@ -394,11 +407,13 @@
 #ifdef RD_UI_TRANSITION_EFFECTS_POPUPS
     CAknTransitionUtils::RemoveData( ( TInt )this );
 #endif
+    _AKNTRACE( "[%s][%s] Exit", "CAknQueryDialog", "~CAknQueryDialog" );
     }
 
 
 EXPORT_C TInt CAknQueryDialog::RunLD()
     {
+    _AKNTRACE_FUNC_ENTER;
     CAknDialog::ConstructL( R_AVKON_MENUPANE_EMPTY) ;
     ReportUserActivity();
     PlayTone();
@@ -416,11 +431,13 @@
 
     SetGloballyCapturing(ETrue); 
     TInt ret = CAknDialog::RunLD();
+    _AKNTRACE( "[%s][%s] ret: %d", "CAknQueryDialog", __FUNCTION__, ret );
     if (soundSystem)
         {
         soundSystem->PopContext();
         }
     SetGloballyCapturing(EFalse); 
+    _AKNTRACE_FUNC_EXIT;
     return ret;
     }
 
@@ -443,8 +460,13 @@
  */
 EXPORT_C TInt CAknQueryDialog::ExecuteLD(TInt aResourceId)
     {
+    _AKNTRACE_FUNC_ENTER;
+    _AKNTRACE( "[%s][%s] aResourceId: %d", "CAknQueryDialog", __FUNCTION__, aResourceId );
     PrepareLC(aResourceId);
-    return(RunLD());
+    TInt ret = RunLD();
+    _AKNTRACE( "[%s][%s] ret:%d", "CAknQueryDialog", __FUNCTION__,ret );
+    _AKNTRACE_FUNC_EXIT;
+    return ret;
     }
 
 /**
@@ -452,9 +474,14 @@
  */
 EXPORT_C TInt CAknQueryDialog::ExecuteLD(TInt aResourceId,const TDesC& aPrompt)
     {
+    _AKNTRACE_FUNC_ENTER;
     PrepareLC(aResourceId);
     SetPromptL(aPrompt);
-    return(RunLD());
+    _AKNTRACE( "[%s][%s] aResourceId: %d", "CAknQueryDialog", __FUNCTION__, aResourceId );
+    TInt ret= RunLD();
+    _AKNTRACE( "[%s][%s] ret:%d", "CAknQueryDialog", __FUNCTION__,ret );
+    _AKNTRACE_FUNC_EXIT;
+    return ret;
     }
 /**
  * Get layout information from the control and use this layout
@@ -474,6 +501,7 @@
  */
 EXPORT_C void CAknQueryDialog::SetSizeAndPosition( const TSize& /*aSize*/ )
     {
+    _AKNTRACE_FUNC_ENTER;
     CAknQueryControl* control = QueryControl();
     CAknPopupHeadingPane* controlHeading = QueryHeading();
     
@@ -493,7 +521,10 @@
        			{
        			TAknWindowLineLayout lay = AknLayoutScalable_Avkon::application_window(0);
        			TRect re(0, 0, lay.iW, lay.iH);
+       			_AKNTRACE( "[%s][%s] Rect: x[%d],y[%d],w[%d],h[%d]", "CAknQueryDialog", __FUNCTION__, 
+							re.iTl.iX, re.iTl.iY, re.Width(),re.Height());
            		SetRect(re);
+           		_AKNTRACE_FUNC_EXIT;
            		return;
        			}
             }
@@ -504,10 +535,16 @@
         layoutRect.LayoutRect( rectZero, windowLineLayoutScreen );
         TRect rectScreen( layoutRect.Rect() );
     	TSize maxSize = rectScreen.Size();
-    	
+    	_AKNTRACE( "[%s][%s] maxSize: w[%d],h[%d]", "CAknQueryDialog", __FUNCTION__, 
+    			maxSize.iWidth,maxSize.iHeight);
         if ( AknLayoutUtils::PenEnabled() )
             {
-            CAknDialog::SetSizeAndPosition( PreferredSize( maxSize ) );
+            TSize preferredSize = PreferredSize( maxSize );
+            
+            _AKNTRACE( "[%s][%s] call CAknDialog::SetSizeAndPosition( PreferredSize( w[%d],h[%d] ) )", "CAknQueryDialog", 
+            		__FUNCTION__, preferredSize.iWidth, preferredSize.iHeight);
+            
+            CAknDialog::SetSizeAndPosition( preferredSize );
             }
         else
             {
@@ -530,9 +567,12 @@
                         AknLayoutScalable_Avkon::heading_pane(0)); 
                 winRect.iTl.iY -= headingLayoutRect.Rect().Height();
                 }
+            _AKNTRACE( "[%s][%s] Rect: x[%d],y[%d],w[%d],h[%d]", "CAknQueryDialog", __FUNCTION__, 
+            		winRect.iTl.iX, winRect.iTl.iY, winRect.Width(),winRect.Height());
             SetRect(winRect);
             }            
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 /**
@@ -540,6 +580,7 @@
  */
 EXPORT_C void CAknQueryDialog::PreLayoutDynInitL()
     {
+    _AKNTRACE_FUNC_ENTER;
     SetBorder( TGulBorder::ENone );
     SetEditableL( ETrue ) ;
     DoSetPromptL();
@@ -564,6 +605,7 @@
     delete iExtension;
     iExtension = NULL;
     iExtension = new(ELeave) CAknQueryDialogExtension(this);
+    _AKNTRACE_FUNC_EXIT;
     }
 
 /**
@@ -571,10 +613,11 @@
  */
 EXPORT_C void CAknQueryDialog::PostLayoutDynInitL()
     {
+    _AKNTRACE_FUNC_ENTER;
     CAknQueryControl* control = QueryControl();
     if (control)
         control->StartAnimationL();
-
+    _AKNTRACE_FUNC_EXIT;
     }
 
 /**
@@ -583,9 +626,13 @@
 EXPORT_C TKeyResponse CAknQueryDialog::OfferKeyEventL(const TKeyEvent& aKeyEvent, 
                                                             TEventCode aType)
     {
+    _AKNTRACE( "[%s][%s] aKeyEvent.iCode[%d],aType[%d]", "CAknQueryDialog", __FUNCTION__,aKeyEvent.iCode, aType);
     if( NeedToDismissQueryL(aKeyEvent) )
-            return EKeyWasConsumed;
- 	
+    	{
+    	_AKNTRACE( "[%s][%s] Need Dismiss Query, return EKeyWasConsumed", "CAknQueryDialog", __FUNCTION__);
+    	return EKeyWasConsumed;
+    	}
+    
 	if (aType == EEventKey && aKeyEvent.iCode == EKeyOK) 	
 		{
 		CAknQueryControl* control = QueryControl();
@@ -594,6 +641,7 @@
 			if (IsLeftSoftkeyVisible())
 				{
 				TryExitL(EEikBidOk);
+				_AKNTRACE( "[%s][%s] TryExitL(EEikBidOk) and reutrn EKeyWasConsumed", "CAknQueryDialog", __FUNCTION__);
 				return EKeyWasConsumed;
 				}
             }
@@ -607,13 +655,14 @@
 			if (IsLeftSoftkeyVisible())
 				{
 				TryExitL(EEikBidOk);
+				_AKNTRACE( "[%s][%s] TryExitL(EEikBidOk) and reutrn EKeyWasConsumed", "CAknQueryDialog", __FUNCTION__);
 				return EKeyWasConsumed;
 				}
             }
 		}
-	
-
-    return CAknDialog::OfferKeyEventL(aKeyEvent,aType);
+	TKeyResponse response = CAknDialog::OfferKeyEventL(aKeyEvent,aType);
+	_AKNTRACE( "[%s][%s] return [%d]", "CAknQueryDialog", __FUNCTION__, response);
+	return response;
     }
 
 /**
@@ -624,15 +673,18 @@
  */
 EXPORT_C TBool CAknQueryDialog::NeedToDismissQueryL(const TKeyEvent& aKeyEvent)
     {
+    _AKNTRACE( "[%s][%s] aKeyEvent.iScanCode [%d]", "CAknQueryDialog", __FUNCTION__, aKeyEvent.iScanCode);
     if (aKeyEvent.iScanCode == EStdKeyHash)
         {
         CAknQueryControl* control = QueryControl();
         if (control && control->QueryType() == EPinLayout)
             {
+            _AKNTRACE( "[%s][%s] EPinLayout, Dismiss Query and return ETrue", "CAknQueryDialog", __FUNCTION__);
             DismissQueryL();
             return ETrue;
             }
         }
+    _AKNTRACE( "[%s][%s] return EFalse", "CAknQueryDialog", __FUNCTION__);
     return EFalse;
     }
 
@@ -644,14 +696,18 @@
  */
 EXPORT_C void CAknQueryDialog::DismissQueryL()
     {
+    _AKNTRACE_FUNC_ENTER;
     if (IsLeftSoftkeyVisible())
         {
+        _AKNTRACE( "[%s][%s] TryExitL(EEikBidOk) ", "CAknQueryDialog", __FUNCTION__);
         TryExitL(EEikBidOk);
         }
     else
         {
+        _AKNTRACE( "[%s][%s] TryExitL(EEikBidCancel) ", "CAknQueryDialog", __FUNCTION__);
         TryExitL(EEikBidCancel);
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 /**
@@ -659,6 +715,7 @@
  */
 EXPORT_C TBool CAknQueryDialog::OkToExitL(TInt aButtonId)
     {
+    _AKNTRACE( "[%s][%s] aButtonId : %d ", "CAknQueryDialog", __FUNCTION__,aButtonId);
     if ( aButtonId == EAknSoftkeyEmergencyCall )
         {
         // ECS number entered and "call" softkey pressed,
@@ -667,17 +724,21 @@
         CAknQueryControl* control = QueryControl();
         if ( control )
             {
+            _AKNTRACE( "[%s][%s] AttemptEmergencyCall ", "CAknQueryDialog", __FUNCTION__);
             control->AttemptEmergencyCallL();
             }
-        
+        _AKNTRACE( "[%s][%s] return ETrue without doing anything", "CAknQueryDialog", __FUNCTION__);
         return ETrue;
         }
     else if((IsLeftSoftkeyVisible() && 
         (aButtonId == GetLeftCBAShortKeyPress() || aButtonId == EEikBidOk))
         || aButtonId == GetRightCBAShortKeyPress() )
-        {   
+        { 
+        _AKNTRACE( "[%s][%s] return ETrue without doing anything ", "CAknQueryDialog", __FUNCTION__);
         return ETrue;
         }
+    
+    _AKNTRACE( "[%s][%s] return EFalse without doing anyting ", "CAknQueryDialog", __FUNCTION__);
     return EFalse;
     }
 
@@ -696,10 +757,12 @@
  */
 EXPORT_C void CAknQueryDialog::SetPromptL(const TDesC& aPrompt)
     {
+    _AKNTRACE_FUNC_ENTER;
     delete iPrompt;
     iPrompt = NULL;
     iPrompt = aPrompt.AllocL();
     DoSetPromptL();
+    _AKNTRACE_FUNC_EXIT;
     }
 
 EXPORT_C void CAknQueryDialog::DoSetPromptL()
@@ -778,10 +841,13 @@
 
 EXPORT_C void CAknQueryDialog::MakeLeftSoftkeyVisible(TBool aVisible)
     {  
+    _AKNTRACE_FUNC_ENTER;
+    _AKNTRACE( "[%s][%s] aVisible: %d ", "CAknQueryDialog", __FUNCTION__, aVisible);
     CEikButtonGroupContainer& btnGroupContainer = ButtonGroupContainer();
 
     // left softkey
     TBool isVisible = btnGroupContainer.IsCommandVisibleByPosition(CEikButtonGroupContainer::ELeftSoftkeyPosition);
+    _AKNTRACE( "[%s][%s] isVisible: %d ", "CAknQueryDialog", __FUNCTION__, isVisible);
     if ( isVisible != aVisible )
         {
         btnGroupContainer.MakeCommandVisibleByPosition(CEikButtonGroupContainer::ELeftSoftkeyPosition,aVisible);
@@ -796,16 +862,20 @@
             btnGroupContainer.MakeCommandVisibleByPosition(CEikButtonGroupContainer::EMiddleSoftkeyPosition,aVisible);
             }
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 
 
 void CAknQueryDialog::PlayTone()
     {
+    _AKNTRACE_FUNC_ENTER;
     if (iTone != 0 && iSoundSystem)
         {
+        _AKNTRACE( "[%s][%s] iSoundSystem->PlaySound(iTone)", "CAknQueryDialog", __FUNCTION__);
         iSoundSystem->PlaySound(iTone);
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 /** 
@@ -815,10 +885,12 @@
  */ 
 void CAknQueryDialog::ReportUserActivity() const 
     {
+    _AKNTRACE_FUNC_ENTER;
 #ifdef AVKON_RDEBUG_INFO
     RDebug::Print(_L("Reset user inactivity"));
 #endif
     User::ResetInactivityTime();
+    _AKNTRACE_FUNC_EXIT;
     }
 
 TInt CAknQueryDialog::GetLeftCBAShortKeyPress()
@@ -833,8 +905,12 @@
 
 TBool CAknQueryDialog::IsLeftSoftkeyVisible()
     {
-    return ButtonGroupContainer().ButtonGroup()->IsCommandVisible(
-                      ButtonGroupContainer().ButtonGroup()->CommandId(0));
+    _AKNTRACE_FUNC_ENTER;
+    TBool visible = ButtonGroupContainer().ButtonGroup()->IsCommandVisible(
+            ButtonGroupContainer().ButtonGroup()->CommandId(0));
+    _AKNTRACE( "[%s][%s] visible: %d", "CAknQueryDialog", __FUNCTION__, visible);
+    _AKNTRACE_FUNC_EXIT;
+    return visible;
     }
 
 /**
@@ -842,26 +918,36 @@
  */
 EXPORT_C void CAknQueryDialog::SetEmergencyCallSupport( TBool aOnOff )
     {
+    _AKNTRACE_FUNC_ENTER;
+    _AKNTRACE( "[%s][%s] aOnOff: %d", "CAknQueryDialog", __FUNCTION__, aOnOff);
     iFlags.Assign(CAknQueryControl::EEmergencyCallsEnabledByAPI, aOnOff );
+    _AKNTRACE_FUNC_EXIT;
     }
 
 EXPORT_C void CAknQueryDialog::SetPredictiveTextInputPermitted( TBool aPermitted )
     {
+    _AKNTRACE_FUNC_ENTER;
+    _AKNTRACE( "[%s][%s] aPermitted: %d", "CAknQueryDialog", __FUNCTION__, aPermitted);
     iFlags.Assign( CAknQueryControl::EPredictiveTextEntryPermitted, aPermitted );
+    _AKNTRACE_FUNC_EXIT;
     }
 
 EXPORT_C void CAknQueryDialog::RemoveEditorIndicator()
     {
+    _AKNTRACE_FUNC_ENTER;
     iFlags.Assign(CAknQueryControl::EEditorIndicatorOff,ETrue);
+    _AKNTRACE_FUNC_EXIT;
     }
 
 EXPORT_C void CAknQueryDialog::SetHeaderTextL(const TDesC& aHeader)
     {
+    _AKNTRACE_FUNC_ENTER;
+    _AKNTRACE( "[%s][%s] aHeader: %s", "CAknQueryDialog", __FUNCTION__, &aHeader);
     CAknPopupHeadingPane* controlHeading = QueryHeading();
     if (controlHeading)
         controlHeading->SetTextL(aHeader);
-        
     LayoutAndDraw();
+    _AKNTRACE_FUNC_EXIT;
     }
 
 /** 
@@ -874,14 +960,18 @@
     TQueryValidationStatus  /*aStatus*/
     )
     {
+    _AKNTRACE_FUNC_ENTER;
+    _AKNTRACE( "[%s][%s] aEventType: %d", "CAknQueryDialog", __FUNCTION__, aEventType);
     if (aEventType == EEmergencyCallAttempted)
         {
+        _AKNTRACE( "[%s][%s] TryExitL(EEikBidCancel)", "CAknQueryDialog", __FUNCTION__);
         TryExitL(EEikBidCancel);
         }
     else
         {
         UpdateLeftSoftKeyL();
         }
+    _AKNTRACE_FUNC_EXIT;
     return EFalse;
     }
 
@@ -1041,12 +1131,15 @@
 //
 EXPORT_C void CAknQueryDialog::SetEmergencyCallSupportForCBA( TBool aOnOff )
     {
+    _AKNTRACE_FUNC_ENTER;
+    _AKNTRACE( "[%s][%s] aOnOff:%d ", "CAknQueryDialog", __FUNCTION__, aOnOff);
     if ( aOnOff )
         {
         // Ensure also that the EEmergencyCallsEnabledByAPI is set.
         iFlags.Assign( CAknQueryControl::EEmergencyCallsEnabledByAPI, aOnOff );
         }
     iFlags.Assign( CAknQueryControl::EEmergencyCallsCBASupport, aOnOff );
+    _AKNTRACE_FUNC_EXIT;
     }
 
 
@@ -1061,8 +1154,10 @@
  */
 EXPORT_C CAknTextQueryDialog* CAknTextQueryDialog::NewL(TDes& aDataText, const TTone& aTone)
     {
+    _AKNTRACE_FUNC_ENTER;
     CAknTextQueryDialog* self = new (ELeave) CAknTextQueryDialog(aDataText, aTone);
     AKNTASHOOK_ADDL( self, "CAknTextQueryDialog" );
+    _AKNTRACE_FUNC_EXIT;
     return self;
     }
 
@@ -1082,6 +1177,7 @@
 
 EXPORT_C CAknTextQueryDialog::~CAknTextQueryDialog()
     {
+	_AKNTRACE( "[%s][%s] ", "CAknTextQueryDialog", "~CAknTextQueryDialog");
     AKNTASHOOK_REMOVE();
     }
 
@@ -1100,6 +1196,8 @@
 
 EXPORT_C void CAknTextQueryDialog::SetDefaultInputMode(TInt aInputMode)
     {
+    _AKNTRACE_FUNC_ENTER;
+    _AKNTRACE( "[%s][%s] aInputMode:%d ", "CAknTextQueryDialog", __FUNCTION__,aInputMode);
     CAknQueryControl* control = QueryControl();
     if ( control )
         {
@@ -1109,14 +1207,17 @@
             secretEditor->SetDefaultInputMode(aInputMode);
             }
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 EXPORT_C void CAknTextQueryDialog::PreLayoutDynInitL()
     {
+    _AKNTRACE_FUNC_ENTER;
     CAknQueryDialog::PreLayoutDynInitL();
 
     SetControlTextL();
     UpdateLeftSoftKeyL();
+    _AKNTRACE_FUNC_EXIT;
     }
 
 
@@ -1154,6 +1255,7 @@
  */
 EXPORT_C TBool CAknTextQueryDialog::OkToExitL( TInt aButtonId )
     {
+    _AKNTRACE( "[%s][%s] aButtonId:%d ", "CAknTextQueryDialog", __FUNCTION__,aButtonId);
     if ( aButtonId == EAknSoftkeyEmergencyCall )
         {
         // ECS number entered and "call" softkey pressed,
@@ -1164,7 +1266,7 @@
             {
             control->AttemptEmergencyCallL();
             }
-        
+        _AKNTRACE( "[%s][%s] return ETrue ", "CAknTextQueryDialog", __FUNCTION__);
         return ETrue;
         }
     else if ( ( IsLeftSoftkeyVisible() && 
@@ -1176,13 +1278,16 @@
             control->GetText( iDataText );
             }
             
+        _AKNTRACE( "[%s][%s] GetText and return ETrue ", "CAknTextQueryDialog", __FUNCTION__);
         return ETrue;
         }
     else if( aButtonId == GetRightCBAShortKeyPress() )
         {
+        _AKNTRACE( "[%s][%s] do nothing and return ETrue", "CAknTextQueryDialog", __FUNCTION__);
         return ETrue;
         }
  
+    _AKNTRACE( "[%s][%s] return EFalse ", "CAknTextQueryDialog", __FUNCTION__);
     return EFalse;
     }
 
@@ -1232,8 +1337,10 @@
  */
 EXPORT_C CAknNumberQueryDialog* CAknNumberQueryDialog::NewL(TInt& aNumber, const TTone& aTone)
     {
+    _AKNTRACE_FUNC_ENTER;
     CAknNumberQueryDialog* self = new (ELeave) CAknNumberQueryDialog(aNumber, aTone);
     AKNTASHOOK_ADDL( self, "CAknNumberQueryDialog" );
+    _AKNTRACE_FUNC_EXIT;
     return self;
     }
 
@@ -1250,11 +1357,13 @@
 
 EXPORT_C void CAknNumberQueryDialog::PreLayoutDynInitL()
     {
+    _AKNTRACE_FUNC_ENTER;
     CAknQueryDialog::PreLayoutDynInitL();
 
     CAknQueryControl* control = QueryControl();
     if (control)
         control->SetNumberL(iNumber);
+    _AKNTRACE_FUNC_EXIT;
     }
 
 EXPORT_C void CAknNumberQueryDialog::SetMinimumAndMaximum( TInt aMinimumValue,
@@ -1269,6 +1378,7 @@
 
 EXPORT_C TBool CAknNumberQueryDialog::OkToExitL( TInt aButtonId )
     {
+    _AKNTRACE( "[%s][%s] aButtonId:%d ", "CAknNumberQueryDialog", __FUNCTION__,aButtonId);
     if ( aButtonId == EAknSoftkeyEmergencyCall )
         {
         // ECS number entered and "call" softkey pressed,
@@ -1279,11 +1389,12 @@
             {
             control->AttemptEmergencyCallL();
             }
-        
+        _AKNTRACE( "[%s][%s] attempt emergency and return ETrue ", "CAknNumberQueryDialog", __FUNCTION__);
         return ETrue;
         }
     else if ( aButtonId == GetRightCBAShortKeyPress() )
         {
+        _AKNTRACE( "[%s][%s] do nothing and reutrn ETrue ", "CAknNumberQueryDialog", __FUNCTION__);
         return ETrue;
         }
     else if ( ( IsLeftSoftkeyVisible() && 
@@ -1296,13 +1407,15 @@
             TRAP( e, control->PrepareForFocusLossL() );
             if ( e != KErrNone )
                 {
+                _AKNTRACE( "[%s][%s] reutrn EFalse ", "CAknNumberQueryDialog", __FUNCTION__);
                 return EFalse;
                 }
             iNumber = control->GetNumber();
+            _AKNTRACE( "[%s][%s] get number and return ETrue ", "CAknNumberQueryDialog", __FUNCTION__);
             return ETrue;
             }
        }
-
+    _AKNTRACE( "[%s][%s] return EFalse", "CAknNumberQueryDialog", __FUNCTION__);
     return EFalse;
     }
 
@@ -1343,8 +1456,10 @@
  */
 EXPORT_C CAknTimeQueryDialog* CAknTimeQueryDialog::NewL(TTime& aTime, const TTone& aTone)
     {
+    _AKNTRACE_FUNC_ENTER;
     CAknTimeQueryDialog* self = new (ELeave) CAknTimeQueryDialog(aTime, aTone);
     AKNTASHOOK_ADDL( self, "CAknTimeQueryDialog" );
+    _AKNTRACE_FUNC_EXIT;
     return self;
     }
 
@@ -1368,10 +1483,12 @@
 
 EXPORT_C void CAknTimeQueryDialog::PreLayoutDynInitL()
     {
+    _AKNTRACE_FUNC_ENTER;
     CAknQueryDialog::PreLayoutDynInitL();
     CAknQueryControl* control = QueryControl();
     if (control)
         control->SetTime(iTime);
+    _AKNTRACE_FUNC_EXIT;
     }
 
 EXPORT_C void CAknTimeQueryDialog::SetMinimumAndMaximum( const TTime& aMinimum, 
@@ -1386,6 +1503,7 @@
 
 EXPORT_C TBool CAknTimeQueryDialog::OkToExitL(TInt aButtonId)
     {
+    _AKNTRACE( "[%s][%s] aButtonId:%d ", "CAknTimeQueryDialog", __FUNCTION__,aButtonId);
     if((IsLeftSoftkeyVisible() && 
         (aButtonId == GetLeftCBAShortKeyPress() || aButtonId == EEikBidOk)))
         {   
@@ -1394,11 +1512,15 @@
             {
             iTime = control->GetTime();
             }
+        _AKNTRACE( "[%s][%s] get time and return ETrue ", "CAknTimeQueryDialog", __FUNCTION__);
         return ETrue;
         }
     else if(aButtonId == GetRightCBAShortKeyPress())
-        return ETrue;
-
+    	{
+    	_AKNTRACE( "[%s][%s] do nothing, return ETrue ", "CAknTimeQueryDialog", __FUNCTION__);
+    	return ETrue;
+    	}
+    _AKNTRACE( "[%s][%s] do nothing and return EFalse ", "CAknTimeQueryDialog", __FUNCTION__);
     return EFalse;
     }
 
@@ -1438,8 +1560,10 @@
  */
 EXPORT_C CAknDurationQueryDialog* CAknDurationQueryDialog::NewL(TTimeIntervalSeconds& aDuration, const TTone& aTone)
     {
+    _AKNTRACE_FUNC_ENTER;
     CAknDurationQueryDialog* self = new (ELeave) CAknDurationQueryDialog(aDuration, aTone);
     AKNTASHOOK_ADDL( self, "CAknDurationQueryDialog" );
+    _AKNTRACE_FUNC_EXIT;
     return self;
     }
 
@@ -1455,11 +1579,13 @@
 
 EXPORT_C void CAknDurationQueryDialog::PreLayoutDynInitL()
     {
+    _AKNTRACE_FUNC_ENTER;
     CAknQueryDialog::PreLayoutDynInitL();
     CAknQueryControl* control = QueryControl();
     
     if (control)
         control->SetDuration(iDuration);
+    _AKNTRACE_FUNC_EXIT;
     }
 
 EXPORT_C void CAknDurationQueryDialog::SetMinimumAndMaximum( const TTimeIntervalSeconds& aMinimumDuration, 
@@ -1474,6 +1600,7 @@
 
 EXPORT_C TBool CAknDurationQueryDialog::OkToExitL(TInt aButtonId)
     {
+	_AKNTRACE( "[%s][%s] aButtonId:%d ", "CAknDurationQueryDialog", __FUNCTION__,aButtonId);
     if((IsLeftSoftkeyVisible() && 
         (aButtonId == GetLeftCBAShortKeyPress() || aButtonId == EEikBidOk)))
         {   
@@ -1482,12 +1609,15 @@
             {
             iDuration = control->GetDuration();
             }
+        _AKNTRACE( "[%s][%s] get duration and return ETrue ", "CAknDurationQueryDialog", __FUNCTION__);
         return ETrue;
         }
     else if(aButtonId == GetRightCBAShortKeyPress())
         {
+        _AKNTRACE( "[%s][%s] do nothing, return ETrue ", "CAknDurationQueryDialog", __FUNCTION__);
         return ETrue;
         }
+    _AKNTRACE( "[%s][%s] return ETrue ", "CAknDurationQueryDialog", __FUNCTION__);
     return EFalse;
     }
     
@@ -1544,6 +1674,7 @@
 
 EXPORT_C void CAknFloatingPointQueryDialog::PreLayoutDynInitL()
     {
+    _AKNTRACE_FUNC_ENTER;
     CAknQueryDialog::PreLayoutDynInitL();
     CAknQueryControl* control = QueryControl();
   
@@ -1553,6 +1684,7 @@
         control->SetFloatingPointNumberL(&iNumber);
         DoSetPromptL();
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 EXPORT_C void CAknFloatingPointQueryDialog::SetMinimumAndMaximum( const TReal& aMinimumNumber, 
@@ -1567,6 +1699,7 @@
 
 EXPORT_C TBool CAknFloatingPointQueryDialog::OkToExitL(TInt aButtonId)
     {
+    _AKNTRACE( "[%s][%s] aButtonId :%d ", "CAknFloatingPointQueryDialog", __FUNCTION__,aButtonId);
     if((IsLeftSoftkeyVisible() && 
         (aButtonId == GetLeftCBAShortKeyPress() || aButtonId == EEikBidOk)))
         {   
@@ -1575,12 +1708,15 @@
             {
             iNumber = control->GetFloatingPointNumberL();
             }
+        _AKNTRACE( "[%s][%s] Get Floatingpoint number and return ETrue ", "CAknFloatingPointQueryDialog", __FUNCTION__);
         return ETrue;
         }
     else if(aButtonId == GetRightCBAShortKeyPress())
         {
+        _AKNTRACE( "[%s][%s] do nothing, return ETrue ", "CAknFloatingPointQueryDialog", __FUNCTION__);
         return ETrue;
         }
+    _AKNTRACE( "[%s][%s] return ETrue ", "CAknFloatingPointQueryDialog", __FUNCTION__);
     return EFalse;
     }
     
@@ -1778,15 +1914,18 @@
 //Store new prompt values
 //
     {
+    _AKNTRACE_FUNC_ENTER;
     delete iSecondPrompt;
     iSecondPrompt = NULL;
     iSecondPrompt = aSP.AllocL();
 
     CAknQueryDialog::SetPromptL(aFP);
+    _AKNTRACE_FUNC_EXIT;
     }
 
 EXPORT_C void CAknMultiLineDataQueryDialog::DoSetPromptL()
     {
+    _AKNTRACE_FUNC_ENTER;
 //
 //Set prompt in query controls, called during layout
 //
@@ -1795,6 +1934,7 @@
         secondControl->SetPromptL(*iSecondPrompt);
     
     CAknQueryDialog::DoSetPromptL();        
+    _AKNTRACE_FUNC_EXIT;
     }
 
 /**
@@ -1855,8 +1995,6 @@
         UpdateLeftSoftKeyL();
 		return ETrue;
 		}
-
-
     return EFalse;
     }
 
@@ -1884,6 +2022,7 @@
 
 void CAknMultiLineDataQueryDialog::HandleOrientationSwitch()
 {
+	_AKNTRACE_FUNC_ENTER;
 	TBool firstLineEnabled = FirstLineEnabled();
 	TBool secondLineEnabled = SecondLineEnabled();
 
@@ -1913,10 +2052,12 @@
 	ctrl1->SetFocusing(firstLineEnabled);
 	ctrl2->SetFocusing(secondLineEnabled);
 	Layout();
+	_AKNTRACE_FUNC_EXIT;
 }
 
 EXPORT_C void CAknMultiLineDataQueryDialog::HandleResourceChange(TInt aType)
 {
+	_AKNTRACE_FUNC_ENTER;
 	CAknQueryDialog::HandleResourceChange(aType);
 	if (aType == KEikDynamicLayoutVariantSwitch)
 		{
@@ -1931,10 +2072,12 @@
 		HandleOrientationSwitch();
 		TRAP_IGNORE( UpdateLeftSoftKeyL() );
 		}
+	_AKNTRACE_FUNC_EXIT;
 }
 
 EXPORT_C TBool CAknMultiLineDataQueryDialog::OkToExitL(TInt aButtonId)
     {
+    _AKNTRACE( "[%s][%s] aButtonId :%d ", "CAknMultiLineDataQueryDialog", __FUNCTION__, aButtonId);
     if (Layout_Meta_Data::IsLandscapeOrientation())
     	{
     if((IsLeftSoftkeyVisible() && 
@@ -1960,8 +2103,8 @@
                 HandleOrientationSwitch();
 
                 UpdateLeftSoftKeyL();
-
-        		return EFalse;      		        		        		
+                _AKNTRACE( "[%s][%s] return EFalse", "CAknMultiLineDataQueryDialog", __FUNCTION__);
+                return EFalse;      		        		        		
         		}
         	}
     	}
@@ -2001,20 +2144,20 @@
                 CleanupStack::PopAndDestroy( text );   	
                 }
             }
-
+        _AKNTRACE( "[%s][%s] return ETrue ", "CAknMultiLineDataQueryDialog", __FUNCTION__);
         return ETrue;
         }
     else if(aButtonId == GetRightCBAShortKeyPress())
         {
+        _AKNTRACE( "[%s][%s] do nothing,return ETrue  ", "CAknMultiLineDataQueryDialog", __FUNCTION__);
         return ETrue;
         }
-    
+    _AKNTRACE( "[%s][%s] do nothing,return EFalse ", "CAknMultiLineDataQueryDialog", __FUNCTION__);
     return EFalse;
     }
 
 EXPORT_C void CAknMultiLineDataQueryDialog::UpdateLeftSoftKeyL()
     {
-    
     if (Layout_Meta_Data::IsLandscapeOrientation())
     	{
 	    if ( (FirstControl()->EditorContentIsValidL() && FirstControl()->IsFocused()) || (SecondControl()->EditorContentIsValidL() && FirstControl()->EditorContentIsValidL()) )
@@ -2070,9 +2213,11 @@
                                                                     const TTone& aTone)
                                                                     : CAknQueryDialog(aTone)
     {
+    _AKNTRACE_FUNC_ENTER;
     TRAPD(ignore, SetPromptL(DesOrNull(aPrompt), DesOrNull(aPrompt2)));
     TRAP(ignore,SetDataL(*aTime,*aTime2));
     AKNTASHOOK_ADD( this, "CAknMultiLineDataQueryDialog" );
+    _AKNTRACE_FUNC_EXIT;
     }
 
 EXPORT_C CAknMultiLineDataQueryDialog::CAknMultiLineDataQueryDialog( TDes* aDataText,
@@ -2082,12 +2227,14 @@
                                                                     const TTone& aTone)
                                                                     : CAknQueryDialog(aTone)
     {
+    _AKNTRACE_FUNC_ENTER;
     TRAPD(ignore, SetPromptL(DesOrNull(aPrompt), DesOrNull(aPrompt2)));
     TRAP(ignore,SetDataL(*aDataText,*aDataText2));
 
     iText = aDataText;
     iSecondText = aDataText2;
     AKNTASHOOK_ADD( this, "CAknMultiLineDataQueryDialog" );
+    _AKNTRACE_FUNC_EXIT;
     }
 
 EXPORT_C CAknMultiLineDataQueryDialog::CAknMultiLineDataQueryDialog( TDes* aDataText, 
@@ -2097,11 +2244,13 @@
                                                                     const TTone& aTone)
                                                                     : CAknQueryDialog(aTone)
     {
+    _AKNTRACE_FUNC_ENTER;
     TRAPD(ignore, SetPromptL(DesOrNull(aPrompt), DesOrNull(aPrompt2)));
     TRAP(ignore,SetDataL(*aDataText,*aTime));
 
     iText = aDataText;
     AKNTASHOOK_ADD( this, "CAknMultiLineDataQueryDialog" );
+    _AKNTRACE_FUNC_EXIT;
     }
 
 EXPORT_C CAknMultiLineDataQueryDialog::CAknMultiLineDataQueryDialog( TDes* aDataText, 
@@ -2111,11 +2260,13 @@
                                                                     const TTone& aTone)
                                                                     : CAknQueryDialog(aTone)
     {
+    _AKNTRACE_FUNC_ENTER;
     TRAPD(ignore, SetPromptL(DesOrNull(aPrompt), DesOrNull(aPrompt2)));
     TRAP(ignore,SetDataL(*aDataText,*aNumber));
 
     iText = aDataText;
     AKNTASHOOK_ADD( this, "CAknMultiLineDataQueryDialog" );
+    _AKNTRACE_FUNC_EXIT;
     }
 
 EXPORT_C CAknMultiLineDataQueryDialog::CAknMultiLineDataQueryDialog( TInt* aNumber, 
@@ -2125,9 +2276,11 @@
                                                                     const TTone& aTone)
                                                                     : CAknQueryDialog(aTone)
     {
+    _AKNTRACE_FUNC_ENTER;
     TRAPD(ignore, SetPromptL(DesOrNull(aPrompt), DesOrNull(aPrompt2)));
     TRAP(ignore,SetDataL(*aNumber,*aNumber2));
     AKNTASHOOK_ADD( this, "CAknMultiLineDataQueryDialog" );
+    _AKNTRACE_FUNC_EXIT;
     }
 
 EXPORT_C CAknMultiLineDataQueryDialog::CAknMultiLineDataQueryDialog( TDes* aDataText, 
@@ -2137,6 +2290,7 @@
                                                                     const TTone& aTone)
                                                                     : CAknQueryDialog(aTone)
     {
+    _AKNTRACE_FUNC_ENTER;
     TRAPD(ignore, SetPromptL(DesOrNull(aPrompt), DesOrNull(aPrompt2)));
     TRAP(ignore,SetDataL(*aDataText,*aDuration));
     
@@ -2151,9 +2305,11 @@
                                                                     const TTone& aTone)
                                                                     : CAknQueryDialog(aTone)
     {
+    _AKNTRACE_FUNC_ENTER;
     TRAPD(ignore, SetPromptL(DesOrNull(aPrompt), DesOrNull(aPrompt2)));
     TRAP(ignore,SetDataL(*aTime,*aDuration));
     AKNTASHOOK_ADD( this, "CAknMultiLineDataQueryDialog" );
+    _AKNTRACE_FUNC_EXIT;
     }
     
 EXPORT_C void CAknMultiLineDataQueryDialog::HandlePointerEventL(const TPointerEvent& aPointerEvent) 
@@ -2194,8 +2350,10 @@
  */
 EXPORT_C CAknIpAddressQueryDialog* CAknIpAddressQueryDialog::NewL(TInetAddr& aInetAddr, const TTone& aTone)
     {
+    _AKNTRACE_FUNC_ENTER;
     CAknIpAddressQueryDialog* self = new (ELeave) CAknIpAddressQueryDialog(aInetAddr, aTone);
     AKNTASHOOK_ADDL( self, "CAknIpAddressQueryDialog" );
+    _AKNTRACE_FUNC_EXIT;
     return self;
     }
 
@@ -2206,11 +2364,15 @@
 
 EXPORT_C CAknIpAddressQueryDialog::~CAknIpAddressQueryDialog()
     {
+    _AKNTRACE_FUNC_ENTER;
     AKNTASHOOK_REMOVE();
+    _AKNTRACE_FUNC_EXIT;
     }
 EXPORT_C void CAknIpAddressQueryDialog::SetSizeAndPosition(
         const TSize& aSize )
     {
+    _AKNTRACE_FUNC_ENTER;
+    _AKNTRACE( "[%s][%s] aSize (W[%d],H[%d]) ", "CAknIpAddressQueryDialog", __FUNCTION__, aSize.iWidth, aSize.iHeight);
     CAknExtQueryControl* control = STATIC_CAST(CAknExtQueryControl*,QueryControl());    
     if(control)
         {
@@ -2244,10 +2406,13 @@
 
                 winRect.iTl.iY -= headRect.Height();
                 }
-            
+            _AKNTRACE( "[%s][%s] winRect(x[%d], y[%d], W[%d], H[%d] ) ", 
+            		"CAknIpAddressQueryDialog", __FUNCTION__, winRect.iTl.iX, winRect.iTl.iY,
+            		winRect.Width(), winRect.Height());
             SetRect(winRect);
             }
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 EXPORT_C CAknQueryControl* CAknIpAddressQueryDialog::QueryControl() const
@@ -2264,6 +2429,7 @@
 
 EXPORT_C void CAknIpAddressQueryDialog::PreLayoutDynInitL()
     {
+    _AKNTRACE_FUNC_ENTER;
 #ifndef RD_NO_DIALOG_BORDERS
     SetBorder(AknBorderId::EAknBorderNotePopup);
 #else
@@ -2292,13 +2458,16 @@
     delete iExtension;
     iExtension = NULL;
     iExtension = new(ELeave) CAknQueryDialogExtension(this);
+    _AKNTRACE_FUNC_EXIT;
     }
 
 EXPORT_C void CAknIpAddressQueryDialog::PostLayoutDynInitL()
     {
+    _AKNTRACE_FUNC_ENTER;
     CAknExtQueryControl* control = STATIC_CAST(CAknExtQueryControl*,QueryControl());
     if (control)
         control->StartAnimationL();
+    _AKNTRACE_FUNC_EXIT;
     }
 
 EXPORT_C TBool CAknIpAddressQueryDialog::NeedToDismissQueryL(const TKeyEvent& /*aKeyEvent*/)
@@ -2317,6 +2486,8 @@
 
 EXPORT_C TBool CAknIpAddressQueryDialog::OkToExitL(TInt aButtonId)
     {
+    _AKNTRACE( "[%s][%s] aButtonId : %d ", 
+                		"CAknIpAddressQueryDialog", __FUNCTION__, aButtonId);
     if((IsLeftSoftkeyVisible() && 
         (aButtonId == GetLeftCBAShortKeyPress() || aButtonId == EEikBidOk)))
         {   
@@ -2325,12 +2496,15 @@
             {
             iInetAddr = control->GetInetAddress();
             }
+        _AKNTRACE( "[%s][%s] get address and return ETrue", "CAknIpAddressQueryDialog", __FUNCTION__);
         return ETrue;
         }
     else if(aButtonId == GetRightCBAShortKeyPress())
         {
+        _AKNTRACE( "[%s][%s] do nothing, return ETrue", "CAknIpAddressQueryDialog", __FUNCTION__);
         return ETrue;
         }
+    _AKNTRACE( "[%s][%s] do nothing, return EFalse", "CAknIpAddressQueryDialog", __FUNCTION__);
     return EFalse;
     }
 
@@ -2384,8 +2558,10 @@
  */
 EXPORT_C CAknFixedPointQueryDialog* CAknFixedPointQueryDialog::NewL(TInt& aNumber, const TTone& aTone)
     {
+    _AKNTRACE_FUNC_ENTER;
     CAknFixedPointQueryDialog* self = new (ELeave) CAknFixedPointQueryDialog(aNumber, aTone);
     AKNTASHOOK_ADDL( self, "CAknFixedPointQueryDialog" );
+    _AKNTRACE_FUNC_EXIT;
     return self;
     }
 
@@ -2401,6 +2577,8 @@
 EXPORT_C void CAknFixedPointQueryDialog::SetSizeAndPosition(
         const TSize& aSize )
     {
+    _AKNTRACE_FUNC_ENTER;
+    _AKNTRACE( "[%s][%s] aSize (W[%d],H[%d]) ", "CAknFixedPointQueryDialog", __FUNCTION__, aSize.iWidth, aSize.iHeight);
     CAknExtQueryControl* control = STATIC_CAST(CAknExtQueryControl*,QueryControl());    
     if(control)
         {
@@ -2434,10 +2612,13 @@
 
                 winRect.iTl.iY -= headRect.Height();
                 }
-            
+            _AKNTRACE( "[%s][%s] winRect(x[%d], y[%d], W[%d], H[%d] ) ", 
+                  "CAknFixedPointQueryDialog", __FUNCTION__, winRect.iTl.iX, winRect.iTl.iY,
+                  winRect.Width(), winRect.Height());
             SetRect(winRect);
             }
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 EXPORT_C CAknQueryControl* CAknFixedPointQueryDialog::QueryControl() const
@@ -2454,6 +2635,7 @@
 
 EXPORT_C void CAknFixedPointQueryDialog::PreLayoutDynInitL()
     {
+    _AKNTRACE_FUNC_ENTER;
 #ifndef RD_NO_DIALOG_BORDERS
     SetBorder(AknBorderId::EAknBorderNotePopup);
 #else
@@ -2482,13 +2664,16 @@
     delete iExtension;
     iExtension = NULL;
     iExtension = new(ELeave) CAknQueryDialogExtension(this);
+    _AKNTRACE_FUNC_EXIT;
     }
 
 EXPORT_C void CAknFixedPointQueryDialog::PostLayoutDynInitL()
     {
+    _AKNTRACE_FUNC_ENTER;
     CAknExtQueryControl* control = STATIC_CAST(CAknExtQueryControl*,QueryControl());
     if (control)
         control->StartAnimationL();
+    _AKNTRACE_FUNC_EXIT;
     }
 
 EXPORT_C TBool CAknFixedPointQueryDialog::NeedToDismissQueryL(const TKeyEvent& /*aKeyEvent*/)
@@ -2507,6 +2692,7 @@
 
 EXPORT_C TBool CAknFixedPointQueryDialog::OkToExitL(TInt aButtonId)
     {
+    _AKNTRACE( "[%s][%s] aButtonId : %d  ", "CAknFixedPointQueryDialog", __FUNCTION__, aButtonId);
     if((IsLeftSoftkeyVisible() && 
         (aButtonId == GetLeftCBAShortKeyPress() || aButtonId == EEikBidOk)))
         {   
@@ -2515,12 +2701,15 @@
             {
             iNumber = control->GetFixedPointNumber();
             }
+        _AKNTRACE( "[%s][%s] get point number and return ETrue ", "CAknFixedPointQueryDialog", __FUNCTION__);
         return ETrue;
         }
     else if(aButtonId == GetRightCBAShortKeyPress())
         {
+        _AKNTRACE( "[%s][%s] do nothing and return ETrue ", "CAknFixedPointQueryDialog", __FUNCTION__);
         return ETrue;
         }
+    _AKNTRACE( "[%s][%s] return EFalse ", "CAknFixedPointQueryDialog", __FUNCTION__);
     return EFalse;
     }
 
@@ -2656,6 +2845,7 @@
 
 EXPORT_C void CAknMultiLineIpQueryDialog::PreLayoutDynInitL()
     {
+    _AKNTRACE_FUNC_ENTER;
     if (Layout_Meta_Data::IsLandscapeOrientation())
         {
         SetBorder( TGulBorder::ENone );
@@ -2690,6 +2880,7 @@
     delete iExtension;
     iExtension = NULL;
     iExtension = new(ELeave) CAknMultilineQueryDialogExtension(this, CAknMultilineQueryDialogExtension::EMultIPQuery);
+    _AKNTRACE_FUNC_EXIT;
     }
 
 EXPORT_C void CAknMultiLineIpQueryDialog::SetPromptL(const TDesC& aFP, const TDesC& aSP)
@@ -2749,6 +2940,7 @@
 
 void CAknMultiLineIpQueryDialog::HandleOrientationSwitch()
     {
+    _AKNTRACE_FUNC_ENTER;
     TBool firstLineEnabled = FirstLineEnabled();
     TBool secondLineEnabled = SecondLineEnabled();
 
@@ -2778,11 +2970,13 @@
     ctrl1->SetFocusing(firstLineEnabled);
     ctrl2->SetFocusing(secondLineEnabled);
     Layout();
+    _AKNTRACE_FUNC_EXIT;
     }
 
 
 EXPORT_C void CAknMultiLineIpQueryDialog::HandleResourceChange(TInt aType)
     {
+	_AKNTRACE_FUNC_ENTER;
     CAknQueryDialog::HandleResourceChange(aType);
     if (aType == KEikDynamicLayoutVariantSwitch)
         {
@@ -2797,6 +2991,7 @@
         HandleOrientationSwitch();
         TRAP_IGNORE( UpdateLeftSoftKeyL() );
         }
+    _AKNTRACE_FUNC_EXIT;
     }
     
 EXPORT_C TBool CAknMultiLineIpQueryDialog::OkToExitL(TInt aButtonId)
--- a/uifw/AvKon/src/AknRadioButtonSettingPage.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/src/AknRadioButtonSettingPage.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2002-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -247,7 +247,9 @@
             // Only in single click enabled applications.
             if ( iExtension &&
                  iExtension->iFlags.IsSet(
-                     CAknRadioButtonSettingPageExtension::ESingleClickEnabled ) )
+                     CAknRadioButtonSettingPageExtension::ESingleClickEnabled ) &&
+                 iCurrentSelectionIndex >= 0 &&
+                 iCurrentSelectionIndex < ListBoxControl()->Model()->NumberOfItems() )
                 {
                 ListBoxControl()->View()->SetCurrentItemIndex(
                     iCurrentSelectionIndex );
--- a/uifw/AvKon/src/AknSettingPage.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/src/AknSettingPage.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -571,6 +571,10 @@
 	{
 	AKNTASHOOK_REMOVE();
 
+    StopActiveScheduler();
+
+    // If navi pane context is not poped out yet, pop it now.
+	PopNaviDecoratorIfRequired();
     if ( GfxTransEffect::IsRegistered( this ) )
         {
         GfxTransEffect::Deregister( this );
@@ -593,12 +597,9 @@
 	delete iHintText;
 	delete iCba;
 	delete iExtension;
+    iExtension = NULL;
 
-    // If navi pane context is not poped out yet, pop it now.
-	PopNaviDecoratorIfRequired();
 	delete iNaviDecorator;
-
-	StopActiveScheduler();
 	}
 
 void CAknSettingPage::StopActiveScheduler()
@@ -778,9 +779,6 @@
 	{
 	CreateWindowL();
 
-	SetGloballyCapturing( ETrue );
-    SetPointerCapture(ETrue);
-
     if( NULL == iExtension )
         {
         iExtension = CAknSettingPageExtension::NewL( this );
@@ -894,6 +892,12 @@
 	        }
 	    }
 	
+	if(iExtension->iEmbeddedSoftkeys)
+		{
+		SetGloballyCapturing( ETrue );
+    	SetPointerCapture(ETrue);	
+		}
+
     AknItemActionMenuRegister::SetOverridingMenuBarOwnerL( this );
 
 	if ( !iExtension->iEmbeddedSoftkeys )
@@ -2088,6 +2092,10 @@
         {
         return SupplyMopObject( aId, iExtension->iEditIndicator );
         }
+    else if( aId.iUid == MAknsControlContext::ETypeId)
+        {
+        return MAknsControlContext::SupplyMopObject(aId, iExtension->iSettingPageBgContext);
+        } 
 
     return SupplyMopObject( aId, iCba, iMenuBar );
 	}
@@ -2151,7 +2159,7 @@
 
 void CAknSettingPage::PopNaviDecoratorIfRequired()
     {
-    if ( iNaviPane && !iExtension->iEmbeddedSoftkeys )
+    if ( iNaviPane && iExtension && !iExtension->iEmbeddedSoftkeys )
         {
         iNaviPane->Pop( iNaviDecorator ); // iNaviDecorator is not to be detroyed yet
 
--- a/uifw/AvKon/src/AknStaticNoteDialog.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/src/AknStaticNoteDialog.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -31,6 +31,8 @@
 #include <AknsDrawUtils.h>
 
 #include <AknTasHook.h> // for testability hooks
+
+#include "akntrace.h"
 class CAknStackIndicatorAttributes: public CBase
 	{
 public:
@@ -167,7 +169,9 @@
  */
 EXPORT_C CAknStaticNoteDialog::CAknStaticNoteDialog() : CAknNoteDialog()
 	{
+	_AKNTRACE_FUNC_ENTER;
 	AKNTASHOOK_ADD( this, "CAknStaticNoteDialog" );
+	_AKNTRACE_FUNC_EXIT;
 	}
 
 /**
@@ -180,7 +184,9 @@
  */
 EXPORT_C CAknStaticNoteDialog::CAknStaticNoteDialog(CEikDialog** aSelfPtr) : CAknNoteDialog(aSelfPtr)
 	{
+	_AKNTRACE_FUNC_ENTER;
 	AKNTASHOOK_ADD( this, "CAknStaticNoteDialog" );
+	_AKNTRACE_FUNC_EXIT;
 	}
 
 /**
@@ -190,8 +196,10 @@
  */
 EXPORT_C CAknStaticNoteDialog::~CAknStaticNoteDialog()
 	{
+	_AKNTRACE_FUNC_ENTER;
 	AKNTASHOOK_REMOVE();
 	delete iStackIndicator;
+	_AKNTRACE_FUNC_EXIT;
 	}
 
 /**
--- a/uifw/AvKon/src/AknStatuspaneUtils.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/src/AknStatuspaneUtils.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -182,8 +182,6 @@
         
         retVal = ( currentStatusPaneLayoutResId == R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL ||
                    currentStatusPaneLayoutResId == R_AVKON_WIDESCREEN_PANE_LAYOUT_IDLE ||
-                   currentStatusPaneLayoutResId == R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL_FLAT ||
-                   currentStatusPaneLayoutResId == R_AVKON_WIDESCREEN_PANE_LAYOUT_IDLE_FLAT ||
                    currentStatusPaneLayoutResId == R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL_FLAT_NO_SOFTKEYS ||
                    currentStatusPaneLayoutResId == R_AVKON_WIDESCREEN_PANE_LAYOUT_IDLE_FLAT_NO_SOFTKEYS );
         }
--- a/uifw/AvKon/src/AknTransparentCameraSettingPage.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/src/AknTransparentCameraSettingPage.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2002-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -17,7 +17,6 @@
 *
 */
 
-
 #include "AknTransparentCameraSettingPage.h"
 
 // For icon support
@@ -173,6 +172,15 @@
     BaseConstructL( KAknSettingPageNoEmbeddedSoftKeys );
     
     SetDrawBackground(EFalse);  // Enable transparent drawing
+    if( CAknEnv::Static()->TransparencyEnabled() )
+        {
+        // try to enable window transparency
+        if ( Window().SetTransparencyAlphaChannel() == KErrNone )
+            {
+            Window().SetRequiredDisplayMode( EColor16MA );
+            Window().SetBackgroundColor( ~0 );
+            }
+        }
     
     GenerateInternalArrayAndGiveToListBoxL();
     
@@ -383,7 +391,9 @@
             // Only in single click enabled applications.
             if ( iExtension &&
                  iExtension->iFlags.IsSet(
-                         CAknTransparentCameraSettingPageExtension::ESingleClickEnabled ) )
+                     CAknTransparentCameraSettingPageExtension::ESingleClickEnabled ) &&
+                 iCurrentSelectionIndex >= 0 &&
+                 iCurrentSelectionIndex < ListBoxControl()->Model()->NumberOfItems() )
                 {
                 ListBoxControl()->View()->SetCurrentItemIndex(
                     iCurrentSelectionIndex );
@@ -544,13 +554,6 @@
                                            parentRect,                                       
                                            KAknsDrawParamDefault);
             }
-        else
-            {
-            gc.SetBrushStyle(CGraphicsContext::ESolidBrush);
-            gc.SetPenStyle(CGraphicsContext::ENullPen);
-            gc.SetBrushColor(KRgbWhite);
-            gc.DrawRect (bgRect);
-            }
         }
         
     // draw viewfinder if available
--- a/uifw/AvKon/src/AknWaitNoteWrapper.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/src/AknWaitNoteWrapper.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -17,9 +17,11 @@
 
 
 // INCLUDE FILES
-#include    "AknWaitNoteWrapper.h"  // This class's declaration
-#include    <AknWaitDialog.h>
+
+#include <AknWaitDialog.h>
 #include <aknenv.h>
+#include "AknWaitNoteWrapper.h"  // This class's declaration
+#include "akntrace.h"
 
 
 // MODULE DATA STRUCTURES
@@ -43,24 +45,30 @@
 
 EXPORT_C CAknWaitNoteWrapper* CAknWaitNoteWrapper::NewL()
     {
+    _AKNTRACE_FUNC_ENTER;
     CAknWaitNoteWrapper* self = new(ELeave) CAknWaitNoteWrapper;
+    _AKNTRACE_FUNC_EXIT;
     return self;
     }
 
 EXPORT_C CAknWaitNoteWrapper::~CAknWaitNoteWrapper()
     {
+    _AKNTRACE_FUNC_ENTER;
     Cancel();
 	iTimer.Close();
     delete iWaitDialog;
+    _AKNTRACE_FUNC_EXIT;
     }
 
 EXPORT_C TBool CAknWaitNoteWrapper::ExecuteL
  (TInt aResId,MAknBackgroundProcess& aBackgroundProcess, 
     TBool aVisibilityDelayOff, const CAknNoteDialog::TTone& aTone)
     {
+    _AKNTRACE_FUNC_ENTER;
     iBackgroundProcess = &aBackgroundProcess;
     CreateDialogL(aVisibilityDelayOff,aTone);
     iWaitDialog->ExecuteLD(aResId);
+    _AKNTRACE_FUNC_EXIT;
     return NextCycleAndReturnL();
     }
 
@@ -68,25 +76,30 @@
  (TInt aResId,MAknBackgroundProcess& aBackgroundProcess, 
     const TDesC& aPrompt, TBool aVisibilityDelayOff, const CAknNoteDialog::TTone& aTone)
     {
+    _AKNTRACE_FUNC_ENTER;
     iBackgroundProcess = &aBackgroundProcess;
 	CreateDialogL(aVisibilityDelayOff,aTone);
     iWaitDialog->PrepareLC(aResId);
 	iWaitDialog->SetTextL(aPrompt);
     iWaitDialog->RunLD();
+    _AKNTRACE_FUNC_EXIT;
     return NextCycleAndReturnL();
     }
 
 void CAknWaitNoteWrapper::DoCancel()
     {
+    _AKNTRACE_FUNC_ENTER;
     if (IsActive())
         {
 		iTimer.Cancel();
         CAknEnv::StopSchedulerWaitWithBusyMessage(iWait);
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 void CAknWaitNoteWrapper::RunL()
     {
+    _AKNTRACE_FUNC_ENTER;
     if (iBackgroundProcess->IsProcessDone() || !iWaitDialog)
         {
         iBackgroundProcess->ProcessFinished();
@@ -104,6 +117,7 @@
         // Request next cycle
         NextCycle();
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 TInt CAknWaitNoteWrapper::RunError(TInt aError)
@@ -134,6 +148,7 @@
 
 TBool CAknWaitNoteWrapper::NextCycleAndReturnL()
 	{
+	_AKNTRACE_FUNC_ENTER;
     User::LeaveIfError(iTimer.CreateLocal());
 	iIsDialogCanceled = ETrue;
 
@@ -142,6 +157,8 @@
 	iTimer.Close();
 
     User::LeaveIfError(iRunError);
+    _AKNTRACE_FUNC_EXIT;
+
     return !iIsDialogCanceled;
 	}
 
--- a/uifw/AvKon/src/Aknslider.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/src/Aknslider.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -539,12 +539,12 @@
         }; 
     const TAknsItemID iconSkinIDArray[] = 
         {
-        KAknsIIDNone,//KAknsIIDQgnGrafNsliderVerticalTop,        
-        KAknsIIDNone,//KAknsIIDQgnGrafNsliderVerticalBottom,
-        KAknsIIDNone,//KAknsIIDQgnGrafNsliderVerticalMiddle,
-        KAknsIIDNone,// KAknsIIDQgnGrafNsliderVerticalMarker,
-        KAknsIIDNone,// KAknsIIDQgnGrafNsliderVerticalTIckMajor,
-        KAknsIIDNone//KAknsIIDQgnGrafNsliderVerticalMarker
+        KAknsIIDQgnGrafNsliderVerticalTop,   //KAknsIIDNone,     
+        KAknsIIDQgnGrafNsliderVerticalBottom,//KAknsIIDNone,
+        KAknsIIDQgnGrafNsliderVerticalMiddle,//KAknsIIDNone,
+        KAknsIIDQgnGrafNsliderVerticalMarker,//KAknsIIDNone,
+        KAknsIIDQgnGrafNsliderVerticalTickMajor,//KAknsIIDNone,
+        KAknsIIDQgnGrafNsliderVerticalMarker//KAknsIIDNone
         };
         
     const TInt element[] = 
--- a/uifw/AvKon/src/aknbattery.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/src/aknbattery.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -352,17 +352,23 @@
         return;
         }
 
-    if ( AknStatuspaneUtils::StaconPaneActive() )
-        {
-        DrawInStaconPane( Rect() );
-        }
-    else if ( AknStatuspaneUtils::FlatLayoutActive() )
+    // Don't allow normal background drawing if
+    // background is already drawn with a background drawer.
+    const MCoeControlBackground* backgroundDrawer = FindBackground();
+    if ( !backgroundDrawer )
         {
-        DrawInFlatStatusPane( Rect() );
-        }
-    else
-        {
-        DrawInNormalStatusPane( Rect() );
+        if ( AknStatuspaneUtils::StaconPaneActive() )
+            {
+            DrawInStaconPane( Rect() );
+            }
+        else if ( AknStatuspaneUtils::FlatLayoutActive() )
+            {
+            DrawInFlatStatusPane( Rect() );
+            }
+        else
+            {
+            DrawInNormalStatusPane( Rect() );
+            }
         }
     }
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uifw/AvKon/src/akncombinedpane.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -0,0 +1,294 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Status pane's combined subpane component.
+*
+*/
+
+#include <AknsDrawUtils.h>
+#include <AknIndicatorContainer.h>
+#include <aknlayoutscalable_avkon.cdl.h>
+#include <barsread.h>
+#include <eikspane.h>
+#include <avkon.hrh>
+#include <AknPriv.hrh>
+#include <AknSmallIndicator.h>
+#include <aknappui.h>
+#include <uikon/eikdefmacros.h>
+
+#include "akncombinedpane.h"
+#include "aknstatuspanedatasubscriber.h"
+
+// This is used to calculate the amount of pixels that the subpanes are
+// shifted to bottom and right when they are "pressed down". 
+const TInt KPressedDownDeltaDivider( 35 ); // 0.3 units
+
+// ======== MEMBER FUNCTIONS ========
+
+// ----------------------------------------------------------------------------
+// Two-phased constructor.
+// ----------------------------------------------------------------------------
+//
+CAknCombinedPane* CAknCombinedPane::NewL()
+    {
+    CAknCombinedPane* self = new ( ELeave ) CAknCombinedPane();
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+
+// ----------------------------------------------------------------------------
+// Destructor
+// ----------------------------------------------------------------------------
+//
+CAknCombinedPane::~CAknCombinedPane()
+    {
+    iSubPanes.Reset();
+
+    if ( iAvkonAppUi )
+        {
+        iAvkonAppUi->RemoveFromStack( this );
+        }
+    }
+
+
+// ----------------------------------------------------------------------------
+// Returns number of controls inside this control.
+// ----------------------------------------------------------------------------
+//
+TInt CAknCombinedPane::CountComponentControls() const
+    {
+    return iSubPanes.Count();
+    }
+
+
+// ----------------------------------------------------------------------------
+// Returns a control determined by control index.
+// ----------------------------------------------------------------------------
+//
+CCoeControl* CAknCombinedPane::ComponentControl( TInt aIndex ) const
+    {
+    CCoeControl* control = NULL;
+
+    if ( iStatusPane && aIndex < iSubPanes.Count() )
+        {
+        TRAP_IGNORE( control = iStatusPane->ContainerControlL(
+            TUid::Uid( iSubPanes[aIndex].iUid ) ) );
+        }
+
+    return control;
+    }
+
+
+// ----------------------------------------------------------------------------
+// Handles a change to the control's resources.
+// ----------------------------------------------------------------------------
+//
+void CAknCombinedPane::HandleResourceChange( TInt aType )
+    {
+    CAknButton::HandleResourceChange( aType );
+
+    switch ( aType )
+        {
+        case KAknMessageFocusLost:      // fallthrough
+        case KEikMessageFadeAllWindows:
+            {
+            SetSubPanesPressedDown( EFalse );
+            DrawDeferred();
+            break;
+            }
+        
+        case KAknsMessageSkinChange:
+            {
+            DrawDeferred();
+            break;
+            }
+            
+        case KEikDynamicLayoutVariantSwitch:
+            {
+            SetSubPanesPressedDown( EFalse );
+            // Recalculate the pressed down delta pixels on layout change.
+            TAknWindowLineLayout unitValue(
+                AknLayoutScalable_Avkon::aid_value_unit2().LayoutLine() );
+            iPressedDownDelta = unitValue.iW / KPressedDownDeltaDivider;
+            DrawDeferred();
+            break;
+            }
+            
+        default:
+            {
+            break;
+            }
+        }
+    }
+
+
+// ----------------------------------------------------------------------------
+// Resource constructor.
+// ----------------------------------------------------------------------------
+//
+void CAknCombinedPane::ConstructFromResourceL( TResourceReader& aReader )
+    {
+    aReader.ReadInt8(); // version
+
+    TInt count = aReader.ReadInt16(); // amount of subpanes
+
+    for ( TInt i = 0; i < count; ++i )
+        {
+        TSubPaneData subPane;
+
+        aReader.ReadInt8(); // version
+        subPane.iUid = aReader.ReadUint32(); // subpane UID
+        subPane.iPressedDown = EFalse; // Isn't specified in the resource.
+        aReader.ReadInt32(); // extension
+
+        iSubPanes.AppendL( subPane );
+        }
+
+    aReader.ReadInt32(); // extension
+
+    iStatusPane = CEikStatusPaneBase::Current();
+    }
+
+
+// ----------------------------------------------------------------------------
+// Handles pointer events inside the control.
+// ----------------------------------------------------------------------------
+//
+void CAknCombinedPane::HandlePointerEventL(
+    const TPointerEvent& aPointerEvent )
+    {
+    CAknButton::HandlePointerEventL( aPointerEvent );
+
+    switch ( aPointerEvent.iType )
+        {
+        case TPointerEvent::EButton1Down:
+            {
+            SetSubPanesPressedDown( ETrue );
+            iPointerDownInCombinedArea = ETrue;
+            break;
+            }
+            
+        case TPointerEvent::EButton1Up:
+            {
+            SetSubPanesPressedDown( EFalse );
+            
+            if ( iPointerDownInCombinedArea &&
+                 Rect().Contains( aPointerEvent.iPosition ) )
+                {
+                // Display the universal indicator popup.
+                CAknSmallIndicator* indicatorNotifier =
+                    CAknSmallIndicator::NewLC( TUid::Uid( 0 ) );
+                indicatorNotifier->HandleIndicatorTapL();
+                CleanupStack::PopAndDestroy( indicatorNotifier );
+                }
+            
+            iPointerDownInCombinedArea = EFalse;
+            break;
+            }
+            
+        case TPointerEvent::EDrag:
+            {
+            TRect combinedRect( Rect() );
+            if ( !combinedRect.Contains( aPointerEvent.iPosition ) )
+                {
+                SetSubPanesPressedDown( EFalse );
+                }
+            else if ( iPointerDownInCombinedArea &&
+                      combinedRect.Contains( aPointerEvent.iPosition ) )
+                {
+                SetSubPanesPressedDown( ETrue );
+                }
+            break;
+            }
+            
+        default:
+            {
+            break;
+            }
+        }
+
+    DrawDeferred();
+    }
+
+
+// ----------------------------------------------------------------------------
+// Default C++ constructor.
+// ----------------------------------------------------------------------------
+//
+CAknCombinedPane::CAknCombinedPane() : CAknButton( 0 ),
+                                       iStatusPane( NULL )
+    {
+    // Calculate the pressed down delta pixels from layout data,
+    // aid_value_unit2 is a 10ux10u rectangle.
+    TAknWindowLineLayout unitValue(
+        AknLayoutScalable_Avkon::aid_value_unit2().LayoutLine() );
+    // Move the control 0.3 units to right and down for the
+    // "pressed down" effect.
+    iPressedDownDelta = unitValue.iW / KPressedDownDeltaDivider;
+    }
+
+
+// ----------------------------------------------------------------------------
+// Second-phase constructor.
+// ----------------------------------------------------------------------------
+//
+void CAknCombinedPane::ConstructL()
+    {
+    CAknButton::ConstructL( NULL, NULL, NULL, NULL, KNullDesC, KNullDesC, 0 );
+
+    // Use the softkey frame graphics so that the bottom area appears
+    // consistent.
+    SetFrameAndCenterIds( KAknsIIDQgnFrSctrlSkButton,
+                          KAknsIIDQgnFrSctrlSkButtonCenter,
+                          KAknsIIDNone,
+                          KAknsIIDNone,
+                          KAknsIIDNone,
+                          KAknsIIDNone,
+                          KAknsIIDQgnFrSctrlSkButtonPressed,
+                          KAknsIIDQgnFrSctrlSkButtonCenterPressed,
+                          KAknsIIDNone,
+                          KAknsIIDNone );
+    
+    // Add to the control stack in order to receive the focus lost events. 
+    iAvkonAppUi->AddToStackL( this, 
+                              ECoeStackPriorityCba,
+                              ECoeStackFlagRefusesAllKeys |
+                              ECoeStackFlagRefusesFocus );
+    }
+
+
+// ----------------------------------------------------------------------------
+// Sets the pressed down state of the subpanes.
+// ----------------------------------------------------------------------------
+//
+void CAknCombinedPane::SetSubPanesPressedDown( TBool aPressedDown )
+    {
+    TInt delta = aPressedDown ? iPressedDownDelta : -iPressedDownDelta;
+
+    for ( TInt i = 0; i < iSubPanes.Count(); ++i )
+        {
+        if ( !COMPARE_BOOLS( iSubPanes[i].iPressedDown, aPressedDown ) )
+            {
+            CCoeControl* control = ComponentControl( i );
+            TRect controlRect( control->Rect() );
+            controlRect.Move( delta, delta );
+            control->SetRect( controlRect );
+            iSubPanes[i].iPressedDown = aPressedDown;
+            }
+        }
+    }
+
+// End of File
--- a/uifw/AvKon/src/akndigitalclock.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/src/akndigitalclock.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2006-2008 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -323,7 +323,9 @@
 
         TRect rect( Rect() );
 
-        if ( iFlags & EAknDigitalClockInStatusPane )
+        const MCoeControlBackground* backgroundDrawer = FindBackground();
+        if ( !backgroundDrawer &&
+             iFlags & EAknDigitalClockInStatusPane )
             {
             MAknsSkinInstance* skin = AknsUtils::SkinInstance();
             MAknsControlContext* cc = AknsDrawUtils::ControlContext( this );
--- a/uifw/AvKon/src/akndiscreetpopup.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/src/akndiscreetpopup.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -22,6 +22,7 @@
 
 #include "akndiscreetpopupcontrol.h"
 #include "akndiscreetpopupserverhandler.h"
+#include "akntrace.h"
 
 const TUid KDiscreetPopupSingleton = { 537001156 };
 const TInt KInitialPopupId( 1 );
@@ -34,6 +35,7 @@
 //
 CAknDiscreetPopup::~CAknDiscreetPopup()
     {
+    _AKNTRACE_FUNC_ENTER;
     if ( iUseCoeEnv )
         {
         AKNTASHOOK_REMOVE();
@@ -47,6 +49,7 @@
         }
     iLocalPopups.Close();
     delete iServerHandler;
+    _AKNTRACE_FUNC_EXIT;
     }
 
 
@@ -66,6 +69,7 @@
     const TInt aCommand,
     MEikCommandObserver* aCommandObserver )
     {
+    _AKNTRACE( "CAknDiscreetPopup::ShowLocalPopupL, Created by given parameters" );
     __ASSERT_ALWAYS( CCoeEnv::Static(), Panic( EAknPanicNotSupported ) );
     TInt popupId = 0;
     CAknDiscreetPopup* instance = InstanceL();
@@ -95,6 +99,7 @@
     const TInt aCommand,
     MEikCommandObserver* aCommandObserver )
     {
+    _AKNTRACE( "CAknDiscreetPopup::ShowLocalPopupL, Created by given resource" );
     __ASSERT_ALWAYS( CCoeEnv::Static(), Panic( EAknPanicNotSupported ) );
     TInt popupId = 0;
     CAknDiscreetPopup* instance = InstanceL();
@@ -123,6 +128,7 @@
     const TUid& aAppUid,
     const TUid& aViewUid )
     {
+    _AKNTRACE( "CAknDiscreetPopup::ShowGlobalPopupL, Created by given parameters" );
     TInt popupId = 0;
     CAknDiscreetPopup* instance = InstanceL();
     if ( instance )
@@ -147,6 +153,7 @@
     const TUid& aAppUid,
     const TUid& aViewUid )
     {
+    _AKNTRACE( "CAknDiscreetPopup::ShowGlobalPopupL, Created by given resource" );
     TInt popupId = 0;
     CAknDiscreetPopup* instance = InstanceL();
     if( instance )
@@ -168,6 +175,7 @@
 //
 EXPORT_C void CAknDiscreetPopup::InitL()
     {
+    _AKNTRACE_FUNC_ENTER;
     __ASSERT_ALWAYS( !CCoeEnv::Static(), Panic( EAknPanicNotSupported ) );
 
     // Create popup instance and store it to TLS
@@ -179,6 +187,7 @@
         User::LeaveIfError( Dll::SetTls( instance ) );
         CleanupStack::Pop( instance );
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 
@@ -188,6 +197,7 @@
 //
 EXPORT_C void CAknDiscreetPopup::Release()
     {
+    _AKNTRACE_FUNC_ENTER;
     __ASSERT_ALWAYS( !CCoeEnv::Static(), Panic( EAknPanicNotSupported ) );
 
     // Delete popup instance from TLS
@@ -199,6 +209,7 @@
         instance = NULL;
         Dll::SetTls( NULL );
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 
@@ -392,8 +403,10 @@
 //
 void CAknDiscreetPopup::ShowPopupL( CAknDiscreetPopupControl* aControl )
     {
+    _AKNTRACE_FUNC_ENTER;
     if ( !aControl )
         {
+        _AKNTRACE( "CAknDiscreetPopup::ShowPopupL, return (aControl is NULL)" );
         return;
         }
         
@@ -408,6 +421,7 @@
     aControl->HandleDiscreetPopupActionL( 
         CAknDiscreetPopupControl::EAknDiscreetPopupShow );
     iLocalPopups.AppendL( aControl );
+    _AKNTRACE_FUNC_EXIT;
     }
 
 
@@ -417,8 +431,10 @@
 //
 void CAknDiscreetPopup::DeletePopup( CAknDiscreetPopupControl* aControl )
     {
+    _AKNTRACE_FUNC_ENTER;
     if ( !aControl )
         {
+        _AKNTRACE( "CAknDiscreetPopup::DeletePopup, return (aControl is NULL)" );
         return;
         }
 
@@ -426,6 +442,7 @@
     iLocalPopups.Remove( index );
     delete aControl;
     aControl = NULL;
+    _AKNTRACE_FUNC_EXIT;
     }
 
 
@@ -472,6 +489,7 @@
 void CAknDiscreetPopup::HandleControlEventL( 
         CCoeControl* aControl, TCoeEvent aEventType )
     {
+    _AKNTRACE( "CAknDiscreetPopup::HandleControlEventL, aEventType : %d", aEventType );
     if ( aEventType == EEventRequestExit || aEventType == EEventRequestCancel )
         {
         DeletePopup( static_cast<CAknDiscreetPopupControl*>( aControl ) );
--- a/uifw/AvKon/src/akndiscreetpopupcontrol.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/src/akndiscreetpopupcontrol.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -31,6 +31,7 @@
 #include <avkon.hrh>
 #include "akndiscreetpopupcontrol.h"
 #include "akndiscreetpopupdrawer.h"
+#include "akntrace.h"
 
 _LIT( KDiscreetPopupWindowGroupName, "Discreet pop-up" );
 
@@ -72,6 +73,7 @@
     const TInt& aPopupId,
     MEikCommandObserver* aCommandObserver )
     {
+    _AKNTRACE_FUNC_ENTER;
     CAknDiscreetPopupControl* self = 
         CAknDiscreetPopupControl::NewLC( aGlobal,
                                          aTitle,
@@ -86,6 +88,7 @@
                                          aPopupId,
                                          aCommandObserver );
     CleanupStack::Pop( self );
+    _AKNTRACE_FUNC_EXIT;
     return self;
     }
 
@@ -102,6 +105,7 @@
     const TInt& aPopupId,
     MEikCommandObserver* aCommandObserver )
     {
+    _AKNTRACE_FUNC_ENTER;
     CAknDiscreetPopupControl* self = 
         CAknDiscreetPopupControl::NewLC( aGlobal, 
                                          aCommand, 
@@ -110,6 +114,7 @@
                                          
     self->ConstructFromResourceL( aResourceId, aResourceFile );
     CleanupStack::Pop( self );
+    _AKNTRACE_FUNC_EXIT;
     return self;
     }
 
@@ -175,6 +180,7 @@
 //
 CAknDiscreetPopupControl::~CAknDiscreetPopupControl()
     {
+    _AKNTRACE_FUNC_ENTER;
     AKNTASHOOK_REMOVE();
     if ( IsVisible() )
         {
@@ -189,6 +195,7 @@
         }
     delete iTimer;	
     delete iDrawer;
+    _AKNTRACE_FUNC_EXIT;
     }
 
 
@@ -401,6 +408,7 @@
 //
 void CAknDiscreetPopupControl::DoTimeOut()
     {
+	_AKNTRACE_FUNC_ENTER;
     if ( !iInternalFlags.IsSet( EPressedDown ) )
         {
         TRAP_IGNORE( RequestExitL() );
@@ -409,6 +417,7 @@
         {
         iTimer->Cancel();
         }
+	_AKNTRACE_FUNC_EXIT;
     }
 
 
@@ -419,6 +428,7 @@
 //
 void CAknDiscreetPopupControl::RequestExitL()
     {
+    _AKNTRACE_FUNC_ENTER;
     if( iCommandObserver && !iInternalFlags.IsSet( EGlobal ) )
         {
         iCommandObserver->ProcessCommandL( EAknDiscreetPopupCmdClose );
@@ -426,6 +436,7 @@
     HidePopup();
     ReportEventL( MCoeControlObserver::EEventRequestExit );
     iInternalFlags.Clear( EPressedDown );
+    _AKNTRACE_FUNC_EXIT;
     }
 
 
@@ -435,12 +446,15 @@
 //
 void CAknDiscreetPopupControl::NotifyObserverL()
     {
+    _AKNTRACE_FUNC_ENTER;
     if ( iCommand != 0 && iCommandObserver )
         {
+        _AKNTRACE( "CAknDiscreetPopupControl::NotifyObserverL(), tap event will be disposed." );
         // Play feedback if there is command associated with the popup
         ImmediateFeedback( ETouchFeedbackSensitive );
         iCommandObserver->ProcessCommandL( iCommand );
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 
@@ -530,6 +544,7 @@
 //
 void CAknDiscreetPopupControl::ShowPopupL()
     {
+    _AKNTRACE_FUNC_ENTER;
     AppUi()->AddToStackL( 
             this, 
             ECoeStackPriorityDefault,
@@ -563,6 +578,8 @@
     iTimer->Start( timeout, 
                    0, 
                    TCallBack( TimeOut, this ) );
+				   
+	_AKNTRACE_FUNC_EXIT;
     }
 
 
@@ -695,6 +712,7 @@
 //
 void CAknDiscreetPopupControl::HandleResourceChange( TInt aType )
     {
+    _AKNTRACE_FUNC_ENTER;
     CAknControl::HandleResourceChange( aType );
     switch ( aType )
         {
@@ -720,6 +738,7 @@
             break;
             }
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 
@@ -740,6 +759,7 @@
          && eventInRect
          && iInternalFlags.IsClear( EDismissed ) )
         {
+        _AKNTRACE( "CAknDiscreetPopupControl::HandlePointerEventL, TPointerEvent::EButton1Down" );
         SetPressedDownState( ETrue );
         ImmediateFeedback( ETouchFeedbackSensitive );
         }
@@ -747,6 +767,7 @@
     // Pointer drag - reset pressed-down state if pointer out of popup area
     else if ( aPointerEvent.iType == TPointerEvent::EDrag )
         {
+        _AKNTRACE( "CAknDiscreetPopupControl::HandlePointerEventL, TPointerEvent::EDrag" );
         iInternalFlags.Set( EDragged );
         if ( !eventInRect && iInternalFlags.IsSet( EPressedDown ) )
             {
@@ -761,6 +782,7 @@
     // Pointer up - reset pressed-down state 
     else if ( aPointerEvent.iType == TPointerEvent::EButton1Up )
         {
+        _AKNTRACE( "CAknDiscreetPopupControl::HandlePointerEventL, TPointerEvent::EButton1Up" );
         if ( eventInRect )
             {
             NotifyObserverL();
--- a/uifw/AvKon/src/akndiscreetpopupdrawer.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/src/akndiscreetpopupdrawer.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -25,6 +25,7 @@
 
 
 #include "akndiscreetpopupdrawer.h"
+#include "akntrace.h"
 
 const TInt KTextBufSize( 255 );
 const TInt KMaxNumOfLines( 2 );
@@ -76,6 +77,7 @@
     const TInt& aMaskId,
     const TBool& aAction )
     {
+    _AKNTRACE_FUNC_ENTER;
     CAknDiscreetPopupDrawer* self = 
         CAknDiscreetPopupDrawer::NewLC( aControl, 
                                         aTitleText, 
@@ -87,6 +89,7 @@
                                         aMaskId,
                                         aAction );
     CleanupStack::Pop( self );
+    _AKNTRACE_FUNC_EXIT;
     return self;
     }
 
@@ -292,11 +295,14 @@
     if ( aTitleText == KNullDesC && aBodyText != KNullDesC )
         {
         iTitleText = aBodyText.AllocL();
+        _AKNTRACE( _L("CAknDiscreetPopupDrawer::ConstructL, iTitleText : %S"), iTitleText );       
         }
     else
         {
         iTitleText = aTitleText.AllocL();
         iBodyText = aBodyText.AllocL();
+        _AKNTRACE( _L("CAknDiscreetPopupDrawer::ConstructL, iTitleText : %S"), iTitleText );
+        _AKNTRACE( _L("CAknDiscreetPopupDrawer::ConstructL, iBodyText : %S"), iBodyText );
         }
 
     if ( !iIcon )
@@ -342,7 +348,7 @@
     TBool withIcon( iIcon && iIcon->Bitmap() );
     TBool twoRowsText( 
         iTitleText->Des() != KNullDesC 
-        && iBodyText->Des() != KNullDesC );
+        && iBodyText && iBodyText->Des() != KNullDesC );
 
     // Two rows of text
     if ( twoRowsText )
--- a/uifw/AvKon/src/akndiscreetpopupserverhandler.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/src/akndiscreetpopupserverhandler.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -20,7 +20,7 @@
 #include <avkon.hrh>
 #include "akndiscreetpopupserverhandler.h"
 #include "akndiscreetpopupdata.h"
-
+#include "akntrace.h"
 
 // ======== MEMBER FUNCTIONS ========
 
@@ -57,8 +57,10 @@
 //
 CAknDiscreetPopupServerHandler::~CAknDiscreetPopupServerHandler()
     {
+    _AKNTRACE_FUNC_ENTER;
     iLaunchers.ResetAndDestroy();
     iUiServer.Close();
+    _AKNTRACE_FUNC_EXIT;
     }
 
 
@@ -191,7 +193,9 @@
 //
 void CAknDiscreetPopupServerHandler::ConstructL()
     {
+    _AKNTRACE_FUNC_ENTER;
     User::LeaveIfError( iUiServer.Connect() );
+    _AKNTRACE_FUNC_EXIT;
     }
 
 
@@ -221,6 +225,7 @@
 //
 CAknDiscreetPopupGlobalLauncher::~CAknDiscreetPopupGlobalLauncher()
     {
+    _AKNTRACE( "[%s][%s] Enter ", "CAknDiscreetPopupGlobalLauncher", __FUNCTION__ );
     if ( IsActive() && iHandler )
         {
         // Cancel request using status handle
@@ -229,6 +234,7 @@
         iHandler->UiServer()->DoDiscreetPopupAction( &cancelData );
         }
     Cancel();
+    _AKNTRACE( "[%s][%s] Exit ", "CAknDiscreetPopupGlobalLauncher", __FUNCTION__ );
     }
 
 
@@ -238,11 +244,14 @@
 //
 void CAknDiscreetPopupGlobalLauncher::LaunchDiscreetPopup()
     {
+    _AKNTRACE( "[%s][%s] Enter ", "CAknDiscreetPopupGlobalLauncher", __FUNCTION__ );
     if ( IsActive() )
         {
+        _AKNTRACE( "[%s][%s] Exit ", "CAknDiscreetPopupGlobalLauncher", __FUNCTION__ );
         return;
         }
     RenewRequest();
+    _AKNTRACE( "[%s][%s] Exit ", "CAknDiscreetPopupGlobalLauncher", __FUNCTION__ );
     }
 
 
@@ -252,6 +261,8 @@
 //
 void CAknDiscreetPopupGlobalLauncher::RunL()
     {
+    _AKNTRACE( "[%s][%s] Enter,  iStatus : %d", 
+    		"CAknDiscreetPopupGlobalLauncher", __FUNCTION__, iStatus.Int() );
     if ( iStatus.Int() != KRequestPending )
         {
         if( iCommandObserver )
@@ -271,6 +282,7 @@
         {
         RenewRequest();
         }
+    _AKNTRACE( "[%s][%s] Exit ", "CAknDiscreetPopupGlobalLauncher", __FUNCTION__ );
     }
 
 
@@ -318,6 +330,7 @@
     {
     if ( iHandler )
         {
+        _AKNTRACE( "CAknDiscreetPopupGlobalLauncher::RenewRequest, issue request." );
         iHandler->UiServer()->DoDiscreetPopupAction( PopupData(), &iStatus );
         }
     SetActive();
@@ -345,12 +358,14 @@
         const TUid& aAppUid,
         const TUid& aViewUid )
     {
+    _AKNTRACE( "[%s][%s] Enter ", "CAknDiscreetPopupGlobalParamLauncher", __FUNCTION__ );
     CAknDiscreetPopupGlobalParamLauncher* self = 
         new ( ELeave ) CAknDiscreetPopupGlobalParamLauncher(
                 aHandler, aObserver, aCommandId, aPopupId, aAppUid, aViewUid );
     CleanupStack::PushL( self );
     self->ConstructL();
     CleanupStack::Pop( self );
+    _AKNTRACE( "[%s][%s] Exit ", "CAknDiscreetPopupGlobalParamLauncher", __FUNCTION__ );
     return self;
     }
 
@@ -438,12 +453,14 @@
         const TUid& aAppUid,
         const TUid& aViewUid )
     {
+    _AKNTRACE( "[%s][%s] Enter ", "CAknDiscreetPopupGlobalResourceLauncher", __FUNCTION__ );
     CAknDiscreetPopupGlobalResourceLauncher* self = 
         new ( ELeave ) CAknDiscreetPopupGlobalResourceLauncher(
                 aHandler, aObserver, aCommandId, aPopupId, aAppUid, aViewUid );
     CleanupStack::PushL( self );
     self->ConstructL();
     CleanupStack::Pop( self );
+    _AKNTRACE( "[%s][%s] Exit ", "CAknDiscreetPopupGlobalResourceLauncher", __FUNCTION__ );
     return self;
     }
 
--- a/uifw/AvKon/src/aknenv.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/src/aknenv.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2002-2008 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2002-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -969,22 +969,34 @@
 const SStatusPaneOrientationEquivResIds KStatusPaneSoftkeysBottomEquivResIds[] =
     {
         { R_AVKON_STATUS_PANE_LAYOUT_IDLE,           R_AVKON_WIDESCREEN_PANE_LAYOUT_IDLE_FLAT_NO_SOFTKEYS },
+        { R_AVKON_STATUS_PANE_LAYOUT_IDLE_FLAT,      R_AVKON_WIDESCREEN_PANE_LAYOUT_IDLE_FLAT_NO_SOFTKEYS },
         { R_AVKON_STATUS_PANE_LAYOUT_IDLE_EXT,       R_AVKON_WIDESCREEN_PANE_LAYOUT_IDLE_FLAT_NO_SOFTKEYS },
         { R_AVKON_STATUS_PANE_LAYOUT_IDLE_MIRRORED,  R_AVKON_WIDESCREEN_PANE_LAYOUT_IDLE_FLAT_NO_SOFTKEYS },
         
-        { R_AVKON_STATUS_PANE_LAYOUT_USUAL,          R_AVKON_STATUS_PANE_LAYOUT_USUAL_FLAT },
-        { R_AVKON_STATUS_PANE_LAYOUT_USUAL_EXT,      R_AVKON_STATUS_PANE_LAYOUT_USUAL_FLAT },
-        { R_AVKON_STATUS_PANE_LAYOUT_USUAL_MIRRORED, R_AVKON_STATUS_PANE_LAYOUT_USUAL_FLAT },
-        { R_AVKON_STATUS_PANE_LAYOUT_USUAL_WITH_BATTERY_PANE, R_AVKON_STATUS_PANE_LAYOUT_USUAL_FLAT },
+        { R_AVKON_STATUS_PANE_LAYOUT_USUAL,                   R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL_FLAT },
+        { R_AVKON_STATUS_PANE_LAYOUT_USUAL_EXT,               R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL_FLAT },
+        { R_AVKON_STATUS_PANE_LAYOUT_USUAL_FLAT,              R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL_FLAT },
+        { R_AVKON_STATUS_PANE_LAYOUT_USUAL_MIRRORED,          R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL_FLAT },
+        { R_AVKON_STATUS_PANE_LAYOUT_USUAL_WITH_BATTERY_PANE, R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL_FLAT },
+        
+        { R_AVKON_STATUS_PANE_LAYOUT_VT,          R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL_FLAT },
+        { R_AVKON_STATUS_PANE_LAYOUT_VT_MIRRORED, R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL_FLAT },
         
-        { R_AVKON_STATUS_PANE_LAYOUT_VT,             R_AVKON_STATUS_PANE_LAYOUT_USUAL_FLAT },
-        { R_AVKON_STATUS_PANE_LAYOUT_VT_MIRRORED,    R_AVKON_STATUS_PANE_LAYOUT_USUAL_FLAT },
+        { R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL,                  R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL_FLAT },
+        { R_AVKON_WIDESCREEN_PANE_LAYOUT_IDLE,                   R_AVKON_WIDESCREEN_PANE_LAYOUT_IDLE_FLAT_NO_SOFTKEYS },
+        { R_AVKON_WIDESCREEN_PANE_LAYOUT_IDLE_FLAT,              R_AVKON_WIDESCREEN_PANE_LAYOUT_IDLE_FLAT_NO_SOFTKEYS },
+        { R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL_FLAT_NO_SOFTKEYS, R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL_FLAT },
         
-        { R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL,      R_AVKON_STATUS_PANE_LAYOUT_USUAL_FLAT },
-        { R_AVKON_WIDESCREEN_PANE_LAYOUT_IDLE,       R_AVKON_WIDESCREEN_PANE_LAYOUT_IDLE_FLAT_NO_SOFTKEYS },
-        { R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL_FLAT,             R_AVKON_STATUS_PANE_LAYOUT_USUAL_FLAT },
-        { R_AVKON_WIDESCREEN_PANE_LAYOUT_IDLE_FLAT,  R_AVKON_WIDESCREEN_PANE_LAYOUT_IDLE_FLAT_NO_SOFTKEYS },
-        { R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL_FLAT_NO_SOFTKEYS, R_AVKON_STATUS_PANE_LAYOUT_USUAL_FLAT },
+        { R_AVKON_STACON_PANE_LAYOUT_USUAL_SOFTKEYS_RIGHT, R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL_FLAT },
+        { R_AVKON_STACON_PANE_LAYOUT_USUAL_SOFTKEYS_LEFT,  R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL_FLAT },
+        { R_AVKON_STACON_PANE_LAYOUT_IDLE_SOFTKEYS_RIGHT,  R_AVKON_WIDESCREEN_PANE_LAYOUT_IDLE_FLAT_NO_SOFTKEYS },
+        { R_AVKON_STACON_PANE_LAYOUT_IDLE_SOFTKEYS_LEFT,   R_AVKON_WIDESCREEN_PANE_LAYOUT_IDLE_FLAT_NO_SOFTKEYS },
+        { R_AVKON_STACON_PANE_LAYOUT_EMPTY_SOFTKEYS_RIGHT, R_AVKON_STATUS_PANE_LAYOUT_EMPTY },
+        { R_AVKON_STACON_PANE_LAYOUT_EMPTY_SOFTKEYS_LEFT,  R_AVKON_STATUS_PANE_LAYOUT_EMPTY },
+        
+        { R_AVKON_STATUS_PANE_LAYOUT_SMALL_WITH_SIGNAL_PANE,          R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL_FLAT },
+        { R_AVKON_STATUS_PANE_LAYOUT_SMALL_WITH_SIGNAL_PANE_MIRRORED, R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL_FLAT },
+        { R_AVKON_STATUS_PANE_LAYOUT_SMALL,                           R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL_FLAT }
     };
 
 
--- a/uifw/AvKon/src/akngridview.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/src/akngridview.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -77,6 +77,8 @@
     iScrollingType = EScrollFollowsItemsAndLoops;
     iScrollInSecondaryDimension = EScrollFollowsItemsAndLoops;
     iGridDetails.iGridDimensions = TSize(1,1);
+    iGridDetails.iColsInView = 1;
+    iGridDetails.iRowsInView = 1;
     }
 
 /**
--- a/uifw/AvKon/src/aknlib.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/src/aknlib.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2002-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -55,6 +55,7 @@
 
 #include <aknbutton.h>
 
+#include "akncombinedpane.h"
 
 _LIT(KResFileName,         "z:\\resource\\avkon.rsc");
 _LIT(KAknPrivResourceFile, "z:\\resource\\aknpriv.rsc");
@@ -275,6 +276,9 @@
         case EAknCtBatteryIndicatorContainerPane:
             controlInfo.iControl = new(ELeave) CAknBatteryIndicatorContainer;
             break;
+        case EAknCtCombinedPane:
+            controlInfo.iControl = CAknCombinedPane::NewL();
+            break;
             
         case EAknCtNote:
             controlInfo.iControl = new(ELeave) CAknNoteControl;
--- a/uifw/AvKon/src/aknlistquerydialog.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/src/aknlistquerydialog.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -57,6 +57,7 @@
 #endif
 
 #include <AknTasHook.h> // for testability hooks
+#include "akntrace.h"
 NONSHARABLE_CLASS(CAknListQueryMediatorObserver): public CBase, public MAknDialogMediatorObserver
     {
 public:
@@ -160,32 +161,38 @@
 EXPORT_C CAknListQueryDialog::CAknListQueryDialog(TInt* aIndex)
 	: CAknQueryDialog(ENoTone)
     {
+	_AKNTRACE_FUNC_ENTER;
     iIndex = aIndex;
     iEnterKeyPressed = EFalse;
 
     GfxTransEffect::Register(this,KGfxContextMenuControlUid);
     AKNTASHOOK_ADD( this, "CAknListQueryDialog" );
+    _AKNTRACE_FUNC_EXIT;
     }
 
 
 EXPORT_C CAknListQueryDialog::CAknListQueryDialog(CListBoxView::CSelectionIndexArray* aSelectionIndexArray)
 	: CAknQueryDialog(ENoTone)
 	{
+	_AKNTRACE_FUNC_ENTER;
     iSelectionIndexArray = aSelectionIndexArray;
     iEnterKeyPressed = EFalse;
 
     GfxTransEffect::Register(this,KGfxContextMenuControlUid);
     AKNTASHOOK_ADD( this, "CAknListQueryDialog" );
+    _AKNTRACE_FUNC_EXIT;
     }
 
 EXPORT_C CAknListQueryDialog::~CAknListQueryDialog()
     {
+	_AKNTRACE( "[%s][%s] Enter", "CAknListQueryDialog", "~CAknListQueryDialog" );
     AKNTASHOOK_REMOVE();
     if (iMediatorObs)
         CEikDialog::SetMediatorObserver(0); // Cover UI support cannot handle dialog it self as external observer  
     
     delete iMediatorObs;
 	delete iIdle;
+	_AKNTRACE( "[%s][%s] Exit", "CAknListQueryDialog", "~CAknListQueryDialog" );
     }
 
 EXPORT_C CEikListBox *CAknListQueryDialog::ListBox() const 
@@ -232,6 +239,7 @@
 
 EXPORT_C void CAknListQueryDialog::PreLayoutDynInitL()
     {
+    _AKNTRACE_FUNC_ENTER;
 	CAknListQuerySearchControl *control1 = (CAknListQuerySearchControl*)ControlOrNull(EFindControl);
     CAknSearchField *control = NULL;
     CAknSearchField::TSearchFieldStyle flags = CAknSearchField::EPopupWindow;
@@ -267,10 +275,12 @@
 		SetLineNonFocusing(EListQueryControl);
 		Line(EFindControl)->SetDrawNoWhiteBackground(ETrue);
         }        
+    _AKNTRACE_FUNC_EXIT;
 	}
 
 EXPORT_C void CAknListQueryDialog::SetIconArrayL(CArrayPtr<CGulIcon>* aIcons)
     {
+    _AKNTRACE_FUNC_ENTER;
 	CEikFormattedCellListBox* listbox = STATIC_CAST(CEikFormattedCellListBox*,ListBox());
     CArrayPtr<CGulIcon>* oldicons = listbox->ItemDrawer()->FormattedCellData()->IconArray();
     
@@ -280,10 +290,12 @@
         delete oldicons;
         }
     listbox->ItemDrawer()->FormattedCellData()->SetIconArrayL(aIcons);
+    _AKNTRACE_FUNC_EXIT;
     }
 
 EXPORT_C void CAknListQueryDialog::PostLayoutDynInitL()
     {
+    _AKNTRACE_FUNC_ENTER;
 	CEikFormattedCellListBox* listbox = STATIC_CAST(CEikFormattedCellListBox*,ListBox());
     
 	// Now we'll load default icons if existing icon array does not exists.
@@ -316,10 +328,12 @@
         CleanupStack::Pop(); // icon for EMbmAvkonQgn_prop_checkbox_on
         CleanupStack::Pop(); // icons array
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 EXPORT_C void CAknListQueryDialog::SetSizeAndPosition(const TSize & /*aSize*/)
     {
+    _AKNTRACE_FUNC_ENTER;
     AknPopupLayouts::TAknPopupLayouts layout = AknPopupLayouts::EMenuWindow;
     CAknListQueryControl *control = ListControl();
     
@@ -408,12 +422,13 @@
 
     boxData->SetSkinPopupFrame(&KAknsIIDQsnFrPopup,&KAknsIIDQsnFrPopupCenter);
     boxData->SetSkinPopupFramePosition(outerRect,innerRect);
-
+    _AKNTRACE_FUNC_EXIT;
     }
     
 EXPORT_C void CAknListQueryDialog::HandleListBoxEventL(CEikListBox* aListBox, 
                                                        TListBoxEvent aEventType)
     {
+	_AKNTRACE( "[%s][%s] aEventType: %d", "CAknListQueryDialog", "HandleListBoxEventL", aEventType);
     if ( AknLayoutUtils::PenEnabled() )
         {
         switch(aEventType)
@@ -470,6 +485,7 @@
     			}
     		}
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 
@@ -505,6 +521,8 @@
 EXPORT_C TKeyResponse CAknListQueryDialog::OfferKeyEventL(const TKeyEvent& aKeyEvent,
                                                           TEventCode aType)
     {
+	_AKNTRACE( "[%s][%s] aKeyEvent.iCode: %d", "CAknListQueryDialog", "OfferKeyEventL", aKeyEvent.iCode);
+	_AKNTRACE( "[%s][%s] aType: %d", "CAknListQueryDialog", "OfferKeyEventL", aType);
     if (aType==EEventKey && aKeyEvent.iCode == EKeyEscape)
         {
         CloseState();
@@ -590,6 +608,7 @@
 
 EXPORT_C TBool CAknListQueryDialog::OkToExitL(TInt aButtonId)
     {   
+	_AKNTRACE( "[%s][%s] aButtonId: %d", "CAknListQueryDialog", "OkToExitL", aButtonId);
     CEikListBox* listbox = ListBox();
 
     if(aButtonId == GetLeftCBAShortKeyPress() || aButtonId == EEikBidOk)
@@ -617,10 +636,15 @@
 	        for(TInt i(0); i<numberOfItems; i++)
 	            iSelectionIndexArray->AppendL(array->At(i));
             }
+        _AKNTRACE( "[%s][%s] return ETrue", "CAknListQueryDialog", "OkToExitL");
         return ETrue;
         }
     else if(aButtonId == GetRightCBAShortKeyPress())
-        return ETrue;
+    	{
+		_AKNTRACE( "[%s][%s] return ETrue", "CAknListQueryDialog", "OkToExitL");
+		return ETrue;
+    	}
+    _AKNTRACE( "[%s][%s] return EFalse", "CAknListQueryDialog", "OkToExitL");
     return EFalse;
     }
 
@@ -635,11 +659,14 @@
 
 EXPORT_C void CAknListQueryDialog::CloseState()
     {
+    _AKNTRACE_FUNC_ENTER;
     TRAP_IGNORE(TryExitL(EAknSoftkeyCancel));
+    _AKNTRACE_FUNC_EXIT;
     }
 
 EXPORT_C void CAknListQueryDialog::ActivateL()
     {
+    _AKNTRACE_FUNC_ENTER;
     TBool notShowingPopup = ListBox()->Model()->NumberOfItems() == 0;
     if (notShowingPopup)
         {
@@ -670,14 +697,17 @@
         {
         CAknQueryDialog::ActivateL();
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 TInt CAknListQueryDialog::ClosePopup(TAny *aObj)
     {
+    _AKNTRACE_FUNC_ENTER;
     CAknListQueryDialog *popup = (CAknListQueryDialog*)aObj;
     delete popup->iIdle;
     popup->iIdle = 0;
     popup->CloseState();
+    _AKNTRACE_FUNC_EXIT;
     return EFalse;
     }
     
@@ -720,16 +750,19 @@
 
 TInt CAknListQueryDialog::ClosePopupAcceptingChanges(TAny *aObj)
     {    
+	_AKNTRACE_FUNC_ENTER;
     if ( AknLayoutUtils::PenEnabled() ) 
         {
         CAknListQueryDialog *popup = (CAknListQueryDialog*)aObj;
         delete popup->iIdle;
         popup->iIdle = NULL;
         TRAP_IGNORE( popup->TryExitL( EAknSoftkeyOk ) );
+        _AKNTRACE_FUNC_EXIT;
         return EFalse;
         }
     else
         {
+		_AKNTRACE_FUNC_EXIT;
         return EFalse;
         }
     }
@@ -770,6 +803,7 @@
 
 EXPORT_C void CAknListQueryDialog::HandleResourceChange(TInt aType)
 	{
+	_AKNTRACE_FUNC_ENTER;
 	if (aType==KEikDynamicLayoutVariantSwitch)
 	    {
 	    if (MessageBox())
@@ -777,7 +811,8 @@
 	        MessageBox()->SizeChanged();	    
 	        }		
 	    }	    
-	CAknQueryDialog::HandleResourceChange(aType);	
+	CAknQueryDialog::HandleResourceChange(aType);
+	_AKNTRACE_FUNC_EXIT;
 	}
     
 EXPORT_C void CAknListQueryDialog::PublishDialogL(TInt aDialogIndex, TUid aCatUid, CArrayFixFlat<TInt>* aItemIds)
--- a/uifw/AvKon/src/aknlists.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/src/aknlists.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -1726,7 +1726,8 @@
     // Set again because ReplaceColumn in WordWrapListItem does not update the length to 'des2' !
     des2.Set( buffer2->Des() );
 
-    DrawBackgroundAndSeparatorLines( aItemTextRect );
+    DrawBackgroundAndSeparatorLines( aItemTextRect, 
+            aItemIndex != FormattedCellData()->ListBox()->BottomItemIndex() );
 
     if( aItemIsCurrent )
         {
--- a/uifw/AvKon/src/aknlongtapanimation.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/src/aknlongtapanimation.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -42,6 +42,9 @@
 /** Window`s Position when hiding the animation which  does not own Window Group */
 const TInt KAknAnimationNotOwnWindowGroupWindowPosition = -10; // never at front  
 
+/** animation's position offset */
+const TInt KVerticalOffset = -75;
+
 /**  window group's name */
 _LIT( KAknLongTapWgName, "LongTapAnim" ); // window groups name
 
@@ -165,9 +168,11 @@
     
     SetRect( TRect( TPoint(aX, aY), layoutRect.Rect().Size() ));
     
-    // Position window so that it will be directly on top of
-    // the location that was clicked.
+    // position window
     TPoint point( aX - Rect().Width() / 2, aY - Rect().Height() / 2 );
+    point.iY += KVerticalOffset;
+    point.iY = Max( 0, point.iY );
+    
     Window().SetPosition( point );
 
     iAnim->SetSize( layoutRect.Rect().Size() );
--- a/uifw/AvKon/src/aknlongtapdetector.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/src/aknlongtapdetector.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -24,13 +24,13 @@
 #include <AknSgcc.h>
 #include <aknlayoutscalable_avkon.cdl.h>
 #include <aknlongtapanimation.h>
-#include <EIKSRVS.H>
+#include <eiksrvs.h>
 #include "AknPanic.h"
 #include "aknlongtapdetector.h"
 
 // CONSTANTS
 const TInt KTimeDelayBeforeAnimation = 150000;  // 0,15 seconds
-const TInt KLongTapDelay = 600000;              // 0,6 seconds
+const TInt KLongTapDelay = 500000;              // 0,6 seconds
 
 // ======== MEMBER FUNCTIONS ========
 
--- a/uifw/AvKon/src/aknmessagequerydialog.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/src/aknmessagequerydialog.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -41,7 +41,7 @@
 
 #include <AknTasHook.h> // for testability hooks
 #include "AknHeadingPaneTouchObserver.h"
-
+#include "akntrace.h"
 
 // CONSTANTS
 const TInt KMaxLinks = 64;
@@ -128,11 +128,13 @@
 
 EXPORT_C CAknMessageQueryDialog* CAknMessageQueryDialog::NewL( TDesC& aMessage, const TTone& aTone )
     {
+	_AKNTRACE_FUNC_ENTER;
     CAknMessageQueryDialog* self = new ( ELeave ) CAknMessageQueryDialog( aTone );
     CleanupStack::PushL( self );
     self->SetMessageTextL( aMessage );
     CleanupStack::Pop(); //self
     AKNTASHOOK_ADDL( self, "CAknMessageQueryDialog" );
+    _AKNTRACE_FUNC_EXIT;
     return self;
     }
 
@@ -148,11 +150,13 @@
 
 EXPORT_C CAknMessageQueryDialog::CAknMessageQueryDialog( const TTone aTone ) : CAknQueryDialog( aTone )
     {
+	_AKNTRACE_FUNC_ENTER;
 #ifndef RD_NO_DIALOG_BORDERS
     iBorder = AknBorderId::EAknBorderNotePopup;
 #else
     iBorder = TGulBorder::ENone;
 #endif
+    _AKNTRACE_FUNC_EXIT;
     }
 
 //@deprecated
@@ -201,12 +205,14 @@
 
 EXPORT_C CAknMessageQueryDialog::~CAknMessageQueryDialog()
     {
+	_AKNTRACE( "[%s][%s] Enter", "CAknMessageQueryDialog", "~CAknMessageQueryDialog" );
     AKNTASHOOK_REMOVE();
     delete iMessage;
     delete iHeader;
     delete iHeaderImage;
     RegisterPointerEventObserver( EFalse ); 
     delete iMsgQueryExtension;
+    _AKNTRACE( "[%s][%s] Exit", "CAknMessageQueryDialog", "~CAknMessageQueryDialog" );
     }
 
 EXPORT_C void CAknMessageQueryDialog::SetMessageTextL( const TDesC& aMessage )
@@ -355,6 +361,7 @@
 
 EXPORT_C void CAknMessageQueryDialog::PreLayoutDynInitL()
     {
+    _AKNTRACE_FUNC_ENTER;
     if ( !iMsgQueryExtension )
         {
         CreateExtensionL();
@@ -425,6 +432,7 @@
         headingPane->SetLayout(CAknPopupHeadingPane::EMessageQueryHeadingPane); // Use message query heading layout.    
         headingPane->SetTouchObserver( iMsgQueryExtension );
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
    
@@ -986,13 +994,16 @@
     
 TBool CAknMessageQueryDialog::ExecuteLinkL()
     {
-    CAknMessageQueryControl* control = STATIC_CAST( CAknMessageQueryControl*, Control( EAknMessageQueryContentId ) );
+	_AKNTRACE_FUNC_ENTER;
+	CAknMessageQueryControl* control = STATIC_CAST( CAknMessageQueryControl*, Control( EAknMessageQueryContentId ) );
     if( !control )
         {
+		_AKNTRACE_FUNC_EXIT;
         return EFalse;
         }
     if( !control->LinkHighLighted() )
         {
+		_AKNTRACE_FUNC_EXIT;
         return EFalse;
         }
     TInt curLink = control->CurrentLink();
@@ -1011,6 +1022,7 @@
         {
         control->DehighlightLink();
         }
+    _AKNTRACE_FUNC_EXIT;
     return ETrue;
     }
 
--- a/uifw/AvKon/src/aknnavi.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/src/aknnavi.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2002-2008 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2002-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -1396,7 +1396,7 @@
             // Volume popup's position must be set here.
             iNaviPaneControls->At( last )->iDecoratedControl->SetRect(
                 VolumePopupRect() );
-            if( last - 1 >= 0 )
+            if( last - 1 >= 0 && iNaviPaneControls->At( last - 1 ) )
             	{
             		iNaviPaneControls->At( last - 1 )->SetRect( rect );
             	}
@@ -1584,6 +1584,15 @@
         return;
         }
 
+    // Don't allow normal background drawing if
+    // background is already drawn with a background drawer.
+    TBool drawBackground( ETrue );
+    const MCoeControlBackground* backgroundDrawer = FindBackground();
+    if ( backgroundDrawer )
+        {
+        drawBackground = EFalse;
+        }
+
     CWindowGc& gc = SystemGc();
 
     MAknsSkinInstance* skin = AknsUtils::SkinInstance();
@@ -1607,7 +1616,8 @@
         // - Navi wipe is never used
         // - No offset in right, left or top
         //
-        if( !AknsDrawUtils::Background( skin, cc, this, gc, rect ) )
+        if ( drawBackground &&
+             !AknsDrawUtils::Background( skin, cc, this, gc, rect ) )
             {
             gc.SetPenStyle( CGraphicsContext::ENullPen );
             gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
@@ -1633,7 +1643,8 @@
         gc.SetBrushColor(
             AKN_LAF_COLOR( KStatusPaneBackgroundGraphicsColorUsual ) );
 
-        if( !AknsDrawUtils::Background( skin, cc, this, gc, rect ) )
+        if ( drawBackground &&
+             !AknsDrawUtils::Background( skin, cc, this, gc, rect ) )
             {
             gc.DrawRect( rect );
             }
@@ -1648,7 +1659,8 @@
         // - Navi wipe is never used
         // - No offset in right, left or top
         //
-        if( !AknsDrawUtils::Background( skin, cc, this, gc, rect ) )
+        if ( drawBackground &&
+             !AknsDrawUtils::Background( skin, cc, this, gc, rect ) )
             {
             gc.SetPenStyle( CGraphicsContext::ENullPen );
             gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
@@ -1748,40 +1760,43 @@
     //
     else
         {
-        TBool naviWipeUsed = NaviWipeUsed();
-
-        TBool skinnedNaviWipeDrawn  = EFalse;
-        TBool skinnedNaviSolidDrawn = EFalse;
-        TBool defaultNaviWipeDrawn  = EFalse;
-        TBool defaultNaviSolidDrawn = EFalse;
-
-        // If naviwipe is to be used, try first skinned draw...
-        if ( naviWipeUsed )
-            {
-            skinnedNaviWipeDrawn = DrawSkinnedNaviWipe( gc, rect, skin, cc );
-            }
-
-        // If naviwipe is to be used and skinned draw failed,
-        // draw default wipe draw...
-        if ( naviWipeUsed && !skinnedNaviWipeDrawn )
+        if ( drawBackground )
             {
-            defaultNaviWipeDrawn = DrawDefaultNaviWipe( gc, rect );
-            }
+            TBool naviWipeUsed = NaviWipeUsed();
+
+            TBool skinnedNaviWipeDrawn  = EFalse;
+            TBool skinnedNaviSolidDrawn = EFalse;
+            TBool defaultNaviWipeDrawn  = EFalse;
+            TBool defaultNaviSolidDrawn = EFalse;
+
+            // If naviwipe is to be used, try first skinned draw...
+            if ( naviWipeUsed )
+                {
+                skinnedNaviWipeDrawn = DrawSkinnedNaviWipe( gc, rect, skin, cc );
+                }
 
-        // If naviwipe is not to be drawn or the nawiwipe draws has failed for
-        // some reason then draw solid. Try skinned solid draw first...
-        if ( !skinnedNaviWipeDrawn && !defaultNaviWipeDrawn )
-            {
-            skinnedNaviSolidDrawn = DrawSkinnedNaviSolid( gc, rect, skin, cc );
-            }
+            // If naviwipe is to be used and skinned draw failed,
+            // draw default wipe draw...
+            if ( naviWipeUsed && !skinnedNaviWipeDrawn )
+                {
+                defaultNaviWipeDrawn = DrawDefaultNaviWipe( gc, rect );
+                }
 
-        // If not any above is the case, then draw the default solid here.
-        if ( !skinnedNaviWipeDrawn &&
-             !defaultNaviWipeDrawn &&
-             !skinnedNaviSolidDrawn &&
-             !defaultNaviSolidDrawn )
-            {
-            defaultNaviSolidDrawn = DrawDefaultNaviSolid( gc, rect );
+            // If naviwipe is not to be drawn or the nawiwipe draws has failed for
+            // some reason then draw solid. Try skinned solid draw first...
+            if ( !skinnedNaviWipeDrawn && !defaultNaviWipeDrawn )
+                {
+                skinnedNaviSolidDrawn = DrawSkinnedNaviSolid( gc, rect, skin, cc );
+                }
+
+            // If not any above is the case, then draw the default solid here.
+            if ( !skinnedNaviWipeDrawn &&
+                 !defaultNaviWipeDrawn &&
+                 !skinnedNaviSolidDrawn &&
+                 !defaultNaviSolidDrawn )
+                {
+                defaultNaviSolidDrawn = DrawDefaultNaviSolid( gc, rect );
+                }
             }
         }
     }
--- a/uifw/AvKon/src/aknnotecontrol.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/src/aknnotecontrol.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -49,6 +49,8 @@
 #include <touchfeedback.h>
 
 #include <AknTasHook.h> // for testability hooks
+
+#include "akntrace.h"
 const TInt KRate = 95;    // 95% similar rate
 const TInt KFullColor = 255;
 
@@ -73,6 +75,7 @@
  */
 EXPORT_C CAknNoteControl::~CAknNoteControl()
     {
+    _AKNTRACE_FUNC_ENTER;
     AKNTASHOOK_REMOVE();
     MTouchFeedback* feedback = MTouchFeedback::Instance();
     if ( feedback )
@@ -82,6 +85,7 @@
 
     delete iAttributes;
     delete iLineWidths;
+    _AKNTRACE_FUNC_EXIT;
     }
 
 void CAknNoteControl::ConstructFromResourceL(TResourceReader &aRes)
@@ -128,7 +132,8 @@
 //  CCOECONTROL METHODS
 // -----------------------------------------
 void CAknNoteControl::Draw(const TRect& /*aRect*/) const
-    {   
+    {
+    _AKNTRACE_FUNC_ENTER;
     MAknsSkinInstance* skin = AknsUtils::SkinInstance();
 
     MAknsControlContext* cc = iAttributes->iBgContext;
@@ -187,6 +192,7 @@
         {
         iShadowRect.DrawRect( gc );
         }   
+    _AKNTRACE_FUNC_EXIT;
     }
     
 EXPORT_C void CAknNoteControl::HandlePointerEventL(const TPointerEvent& aPointerEvent) 
@@ -277,8 +283,10 @@
  * Call Layout instead.
  */
 void CAknNoteControl::SizeChanged()
-    {  
+    {
+    _AKNTRACE_FUNC_ENTER;
     DoLayout();
+    _AKNTRACE_FUNC_EXIT;
     }
 
 /** 
@@ -287,6 +295,8 @@
  */
 void CAknNoteControl::DoLayout()
     {
+    _AKNTRACE_FUNC_ENTER;
+    _AKNTRACE("iNoteLayout = %d", iNoteLayout);
     TextControl()->SetRect(LayoutRect());
     switch(iNoteLayout)
         {
@@ -333,6 +343,7 @@
             delete spec;
             }
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 /**
@@ -342,6 +353,8 @@
  */
 void CAknNoteControl::WindowLayout( TAknWindowLineLayout& aLayout ) const
     {
+    _AKNTRACE_FUNC_ENTER;
+    _AKNTRACE("iNoteLayout = %d", iNoteLayout);
     TIndex laf(NumberOfLines());
     AknLayoutUtils::TAknCbaLocation cbaLocation( AknLayoutUtils::CbaLocation() );
     TInt variety( 0 );
@@ -436,6 +449,7 @@
                 laf.PopupNoteWindow() );
             break;
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 /**
@@ -1182,8 +1196,9 @@
  */
 EXPORT_C void CAknNoteControl::SetTextL(const TDesC& aText, TInt aLineNum)
     {
+    _AKNTRACE_FUNC_ENTER;
     TAknLayoutText textRect;
-    
+    _AKNTRACE(_L("SetTextL = %S"), &aText);
     if ( iNoteLayout == ENotificationWithGraphicsLayout || iNoteLayout == ETextualNotificationLayout )
         {
         textRect.LayoutText(LayoutRect(), AKN_LAYOUT_TEXT_Notification_pop_up_window_texts__text__Line_1(1));
@@ -1197,6 +1212,7 @@
 
     Attributes()->SetTextL(aText, aLineNum, font, iLineWidths);
     Layout();
+    _AKNTRACE_FUNC_EXIT;
     }
 
 /**
--- a/uifw/AvKon/src/aknprogresstimer.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/src/aknprogresstimer.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -18,10 +18,11 @@
 // AknProgressTimer.cpp: implementation of the CAknProgressTimer class.
 //
 //////////////////////////////////////////////////////////////////////
-
+#include <coemain.h>
 #include "aknnotecontrol.h"
 #include "aknprogresstimer.h"
-#include <coemain.h>
+#include "akntrace.h"
+
 
 //////////////////////////////////////////////////////////////////////
 // Construction/Destruction
@@ -45,6 +46,7 @@
 
 void CAknProgressTimer::ConstructL(TTimerModel *aModel,CAknNoteControl *aContainer,TCallBack aCallBack)
   {
+  _AKNTRACE_FUNC_ENTER;
   iCallBack = aCallBack;
   CTimer::ConstructL();
   CActiveScheduler::Add(this);
@@ -53,6 +55,7 @@
   iContainer->SetFinalProgressValue(iModel->iFinalValue);
   if (iModel->iRunning)
     Queue();
+  _AKNTRACE_FUNC_EXIT;
   }
 
 void CAknProgressTimer::Queue()
@@ -62,10 +65,12 @@
 
 void CAknProgressTimer::RunL()
   {
+  _AKNTRACE_FUNC_ENTER;
   if (iContainer->IncrementBarsAndDraw(iModel->iIncrement))
     Queue();
   else
     iCallBack.CallBack();
+  _AKNTRACE_FUNC_EXIT;
   }
 
 // End of File
--- a/uifw/AvKon/src/aknqueryeditorindicator.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/src/aknqueryeditorindicator.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -25,6 +25,7 @@
 #include "aknQueryControl.h"
 
 #include <AknTasHook.h> // for testability hooks
+#include "akntrace.h"
 //
 // CAknQueryEditIndicator
 //  Handles editor indicator for queries
@@ -51,6 +52,7 @@
 
 void CAknQueryEditIndicator::ConstructL(CCoeControl* aControl)
     {
+    _AKNTRACE_FUNC_ENTER;
     if ( CAknEnv::Static()->TransparencyEnabled() )
         {
         // In transparency everything broke when this had its own
@@ -70,10 +72,13 @@
     // Set to zero size - derived queries must set extent in PreDynInitLayout
     SetExtent(TPoint(0,0), TSize(0,0));
     ActivateL();
+    _AKNTRACE_FUNC_EXIT;
     }
 
 void CAknQueryEditIndicator::SetState(TAknEditingState aState)
     {
+    _AKNTRACE_FUNC_ENTER;
+    _AKNTRACE( "[%s][%s] aState: %d", "CAknQueryEditIndicator", __FUNCTION__,aState);
     iState = aState;
     if (Observer())
     	{
@@ -82,6 +87,7 @@
     
     if ( iFlags.IsSet(CAknQueryControl::EEditorIndicatorOff) )
         {
+        _AKNTRACE_FUNC_EXIT;
         return;
         }
 
@@ -370,6 +376,7 @@
         {
         DrawDeferred();
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 CAknIndicatorContainer* CAknQueryEditIndicator::IndicatorContainer()
--- a/uifw/AvKon/src/aknsignal.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/src/aknsignal.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -537,25 +537,31 @@
         return;
         }
 
-    if ( AknStatuspaneUtils::StaconPaneActive() )
-        {
-        //  Signal pane in STACON PANE layout
-        DrawInStaconPane( Rect() );
-        }
-    else if ( AknStatuspaneUtils::FlatLayoutActive() )
+    // Don't allow normal background drawing if
+    // background is already drawn with a background drawer.
+    const MCoeControlBackground* backgroundDrawer = FindBackground();
+    if ( !backgroundDrawer )
         {
-        //  Signal pane in FLAT STATUSPANE layout
-        DrawInFlatStatusPane( Rect() );
-        }
-    else if ( AknStatuspaneUtils::SmallLayoutActive() )
-        {
-        //  Signal pane in SMALL STATUSPANE layout
-        DrawInSmallStatusPane( Rect() );
-        }
-    else
-        {
-        // Signal pane in NORMAL STATUSPANE layout
-        DrawInNormalStatusPane( Rect() );
+        if ( AknStatuspaneUtils::StaconPaneActive() )
+            {
+            //  Signal pane in STACON PANE layout
+            DrawInStaconPane( Rect() );
+            }
+        else if ( AknStatuspaneUtils::FlatLayoutActive() )
+            {
+            //  Signal pane in FLAT STATUSPANE layout
+            DrawInFlatStatusPane( Rect() );
+            }
+        else if ( AknStatuspaneUtils::SmallLayoutActive() )
+            {
+            //  Signal pane in SMALL STATUSPANE layout
+            DrawInSmallStatusPane( Rect() );
+            }
+        else
+            {
+            // Signal pane in NORMAL STATUSPANE layout
+            DrawInNormalStatusPane( Rect() );
+            }
         }
     }
 
--- a/uifw/AvKon/src/aknstatuspanedatapublisher.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/src/aknstatuspanedatapublisher.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2006-2008 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -714,8 +714,8 @@
     TInt statusPaneLayoutId = AknStatuspaneUtils::CurrentStatusPaneLayoutResId();
     TAknLayoutRect layoutRect;
     if ( isLandscape &&
-         ( statusPaneLayoutId == R_AVKON_STATUS_PANE_LAYOUT_USUAL_FLAT ||
-           statusPaneLayoutId == R_AVKON_STATUS_PANE_LAYOUT_IDLE_FLAT ) )
+         ( statusPaneLayoutId == R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL_FLAT ||
+           statusPaneLayoutId == R_AVKON_WIDESCREEN_PANE_LAYOUT_IDLE_FLAT ) )
         {
         layoutRect.LayoutRect(
             applicationWindow,
@@ -729,9 +729,7 @@
                 applicationWindow,
                 AknLayoutScalable_Avkon::popup_uni_indicator_window( 6 ) );
         }
-    else if ( statusPaneLayoutId == R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL_FLAT ||
-              statusPaneLayoutId == R_AVKON_WIDESCREEN_PANE_LAYOUT_IDLE_FLAT ||
-              statusPaneLayoutId == R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL_FLAT_NO_SOFTKEYS ||
+    else if ( statusPaneLayoutId == R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL_FLAT_NO_SOFTKEYS ||
               statusPaneLayoutId == R_AVKON_WIDESCREEN_PANE_LAYOUT_IDLE_FLAT_NO_SOFTKEYS )
         {
         layoutRect.LayoutRect(
--- a/uifw/AvKon/src/aknstatuspanedigitalclock.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/src/aknstatuspanedigitalclock.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2005-2008 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2005-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -218,11 +218,18 @@
 //
 void CAknStatuspaneDigitalClock::Draw( const TRect& /*aRect*/ ) const
     {
-    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+    // Don't allow normal background drawing if
+    // background is already drawn with a background drawer.
+    const MCoeControlBackground* backgroundDrawer = FindBackground();
+    if ( !backgroundDrawer &&
+         AknStatuspaneUtils::ExtendedFlatLayoutActive() )
+        {
+        MAknsSkinInstance* skin = AknsUtils::SkinInstance();
 
-    CWindowGc& gc = SystemGc();
-    MAknsControlContext* cc = AknsDrawUtils::ControlContext( this );
-    AknsDrawUtils::Background( skin, cc, this, gc, Rect() );
+        CWindowGc& gc = SystemGc();
+        MAknsControlContext* cc = AknsDrawUtils::ControlContext( this );
+        AknsDrawUtils::Background( skin, cc, this, gc, Rect() );
+        }
     }
 
 
--- a/uifw/AvKon/src/akntitle.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/src/akntitle.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2002-2008 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2002-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -689,36 +689,42 @@
         return;
         }
 
-    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
-
-    TRect rect( Rect() );
-
-    CWindowGc& gc=SystemGc();
-
-    if ( AknStatuspaneUtils::StaconPaneActive() ||
-         AknStatuspaneUtils::FlatLayoutActive() )
+    // Don't allow normal background drawing if
+    // background is already drawn with a background drawer.
+    const MCoeControlBackground* backgroundDrawer = FindBackground();
+    if ( !backgroundDrawer )
         {
-        MAknsControlContext* cc = AknsDrawUtils::ControlContext( this );
-
-        if( !AknsDrawUtils::Background( skin, cc, this, gc, rect ) )
+        MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+
+        TRect rect( Rect() );
+
+        CWindowGc& gc=SystemGc();
+
+        if ( AknStatuspaneUtils::StaconPaneActive() ||
+             AknStatuspaneUtils::FlatLayoutActive() )
             {
-            gc.SetPenStyle( CGraphicsContext::ENullPen );
+            MAknsControlContext* cc = AknsDrawUtils::ControlContext( this );
+
+            if( !AknsDrawUtils::Background( skin, cc, this, gc, rect ) )
+                {
+                gc.SetPenStyle( CGraphicsContext::ENullPen );
+                gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
+                gc.SetBrushColor(
+                    AKN_LAF_COLOR( KStatusPaneBackgroundGraphicsColorUsual ) );
+                gc.DrawRect( rect );
+                }
+            }
+        else
+            {
             gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
-            gc.SetBrushColor(
-                AKN_LAF_COLOR( KStatusPaneBackgroundGraphicsColorUsual ) );
-            gc.DrawRect( rect );
+            gc.SetBrushColor( AKN_LAF_COLOR( KStatusPaneBackgroundColor ) );
+            AknsDrawUtils::Background( skin,
+                                       AknsDrawUtils::ControlContext( this ),
+                                       this,
+                                       gc,
+                                       rect );
             }
         }
-    else
-        {
-        gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
-        gc.SetBrushColor( AKN_LAF_COLOR( KStatusPaneBackgroundColor ) );
-        AknsDrawUtils::Background( skin,
-                                   AknsDrawUtils::ControlContext( this ),
-                                   this,
-                                   gc,
-                                   rect );
-        }
     }
 
 
@@ -1430,7 +1436,7 @@
         TAknLayoutRect layoutRect;
         layoutRect.LayoutRect(
             rect,
-            AknLayoutScalable_Avkon::title_pane_g2( touchLsc ? 4 : 0 ) );
+            AknLayoutScalable_Avkon::title_pane_g2( touchLsc ? 4 : 1 ) );
 
         if ( iExtension->iSmallImageAutoscaling &&
              iExtension->iTitleImage->Bitmap() &&
@@ -1461,13 +1467,13 @@
             {
             // if image is shown, use shorter version of text
             oneLineLayout =
-                AknLayoutScalable_Avkon::title_pane_t1( touchLsc ? 11 : 3 ).LayoutLine();
+                AknLayoutScalable_Avkon::title_pane_t1( touchLsc ? 11 : 6 ).LayoutLine();
             }
         else
             {
             // if image is not shown, use longer version of text
             oneLineLayout =
-                AknLayoutScalable_Avkon::title_pane_t1( touchLsc ? 10 : 2 ).LayoutLine();
+                AknLayoutScalable_Avkon::title_pane_t1( touchLsc ? 10 : 5 ).LayoutLine();
             }
 
         TAknLayoutText oneLineLayoutText;
--- a/uifw/AvKon/src/aknutils.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/src/aknutils.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2002-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -3524,8 +3524,8 @@
                         case R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL_FLAT:
                         case R_AVKON_WIDESCREEN_PANE_LAYOUT_IDLE_FLAT: // fallthrough
                             {
-                            parent = AknLayoutScalable_Avkon::area_top_pane( 19 );
-                            line   = AknLayoutScalable_Avkon::status_pane( 4 );
+                            parent = AknLayoutScalable_Avkon::area_top_pane( 2 );
+                            line   = AknLayoutScalable_Avkon::status_pane( 1 );
                             break;
                             }
                             
@@ -3667,36 +3667,9 @@
                     {                    
                     if ( Layout_Meta_Data::IsLandscapeOrientation() )
                         {
-                        if ( PenEnabled() )
-                            {
-                            // This is quite awkward but necessary since the fixed
-                            // toolbar area can be used by the application main pane
-                            // if the application doesn't use toolbar.
-                            TBool toolbarVisible( EFalse );
-                            if ( iAvkonAppUi )
-                                {
-                                CAknToolbar* fixedToolbar =
-                                    iAvkonAppUi->CurrentFixedToolbar();
-                                if ( fixedToolbar )
-                                    {
-                                    TInt toolbarFlags(  fixedToolbar->ToolbarFlags() );
-                                    if ( toolbarFlags & KAknToolbarFixed &&
-                                         !( toolbarFlags & KAknToolbarDefault ) &&
-                                         fixedToolbar->IsShown()  )
-                                        {
-                                        toolbarVisible = ETrue;
-                                        }
-                                    }
-                                }
-
-                            variety = toolbarVisible ? 21 : 4;
-                            }
-                        else
-                            {
-                            // main pane variety with 'area_top_pane' and 
-                            // 'area_bottom_pane' in landscape (without touch pane).
-                            variety = 9;             
-                            }                    
+                        // main pane variety with 'area_top_pane' and
+                        // 'area_bottom_pane' in landscape (without touch pane).
+                        variety = 9;
                         }
                     else
                         {
@@ -3761,7 +3734,27 @@
                     {
                     if ( Layout_Meta_Data::IsLandscapeOrientation() )
                         {
-                        variety = 21;
+                        // This is quite awkward but necessary since the fixed
+                        // toolbar area can be used by the application main pane
+                        // if the application doesn't use toolbar.
+                        TBool toolbarVisible( EFalse );
+                        if ( iAvkonAppUi )
+                            {
+                            CAknToolbar* fixedToolbar =
+                                iAvkonAppUi->CurrentFixedToolbar();
+                            if ( fixedToolbar )
+                                {
+                                TInt toolbarFlags( fixedToolbar->ToolbarFlags() );
+                                if ( toolbarFlags & KAknToolbarFixed &&
+                                     !( toolbarFlags & KAknToolbarDefault ) &&
+                                     fixedToolbar->IsShown()  )
+                                    {
+                                    toolbarVisible = ETrue;
+                                    }
+                                }
+                            }
+
+                        variety = toolbarVisible ? 21 : 4;
                         }
                     break;
                     }
@@ -6547,11 +6540,22 @@
     TInt x = ( screen.Width() - aSize.iWidth ) >> 1;
     TInt y = screen.Height() - aSize.iHeight;
 
-    // Popups are centered on y-axis if screen orientation is landscape or
-    // softkeys are not visible.
-    if ( !aSoftkeysVisible || Layout_Meta_Data::IsLandscapeOrientation() )
-        {
-        y >>= 1; 
+    if ( Layout_Meta_Data::IsLandscapeOrientation() )
+        {
+        // popups are centered on y-axis on landscape orientation
+        y >>= 1;
+        }
+    else
+        {
+        // On portrait popup is located on top of the control pane if it doesn't
+        // have softkeys visible.
+        if ( !aSoftkeysVisible )
+            {
+            TSize controlPane;
+            AknLayoutUtils::LayoutMetricsSize( AknLayoutUtils::EControlPane,
+                    controlPane );
+            y -= controlPane.iHeight;
+            }
         }
 
     return TPoint( x, y );
@@ -6579,6 +6583,28 @@
     
     return Position( aSize, softkeys );
     }
+
+
+// -----------------------------------------------------------------------------
+// AknListUtils::DrawSeparator
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void AknListUtils::DrawSeparator( CGraphicsContext& aGc, 
+        const TRect& aRect, const TRgb& aColor )
+    {
+    aGc.SetBrushStyle( CGraphicsContext::ENullBrush );
+    aGc.SetPenStyle( CGraphicsContext::ESolidPen );
+    TRgb color( aColor );
+    color.SetAlpha( 32 );
+    aGc.SetPenColor( color );
+    TRect lineRect( aRect );
     
+    TInt gap = AknLayoutScalable_Avkon::listscroll_gen_pane( 0 ).LayoutLine().it; 
+    lineRect.Shrink( gap, 0 );
+    lineRect.Move( 0, -1 );
+    aGc.DrawLine( TPoint( lineRect.iTl.iX, lineRect.iBr.iY ), 
+            TPoint( lineRect.iBr.iX, lineRect.iBr.iY ) );
+    }
+
 // End of file
 
--- a/uifw/AvKon/src/eikfrlb.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/src/eikfrlb.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -226,7 +226,8 @@
     colors.iHighlightedText=iHighlightedTextColor;
     colors.iHighlightedBack=iHighlightedBackColor;
 
-    DrawBackgroundAndSeparatorLines( aItemTextRect );
+    DrawBackgroundAndSeparatorLines( aItemTextRect, 
+            aItemIndex != FormattedCellData()->ListBox()->BottomItemIndex() );
    
     TBool highlightShown = ETrue;
     
@@ -1344,7 +1345,8 @@
     {
     }
 
-void CFormattedCellListBoxItemDrawer::DrawBackgroundAndSeparatorLines( const TRect& aItemTextRect ) const
+void CFormattedCellListBoxItemDrawer::DrawBackgroundAndSeparatorLines( 
+        const TRect& aItemTextRect, TBool aDrawSeparator ) const
     {
     MAknsSkinInstance *skin = AknsUtils::SkinInstance();
     CCoeControl* control = FormattedCellData()->Control();
@@ -1414,6 +1416,12 @@
             transApi->StopDrawing();
             }
 #endif // RD_UI_TRANSITION_EFFECTS_LIST
+
+        if ( aDrawSeparator && 
+            static_cast<CEikListBox*>( control )->ItemsInSingleLine() == 1 )
+            {
+            AknListUtils::DrawSeparator( *iGc, aItemTextRect, iTextColor );
+            }
         }
     }
 
--- a/uifw/AvKon/src/eikslb.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/src/eikslb.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -78,7 +78,8 @@
         }
 #endif //RD_UI_TRANSITION_EFFECTS_LIST
 
-    DrawBackgroundAndSeparatorLines( aItemTextRect );
+    DrawBackgroundAndSeparatorLines( aItemTextRect, 
+            aItemIndex != FormattedCellData()->ListBox()->BottomItemIndex() );
 
     if ( aItemIsCurrent )
         {
--- a/uifw/AvKon/srcdata/avkon.rss	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/srcdata/avkon.rss	Fri Feb 19 23:04:46 2010 +0200
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2002-2008 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2002-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -630,8 +630,14 @@
             flags = EEikStatusPaneAppOwned;
             type = EAknCtStatuspaneEmpty;
             resource = r_avkon_status_pane_empty;
+            },
+        SPANE_PANE
+            {
+            id = EEikStatusPaneUidCombined;
+            flags = EEikStatusPaneAppOwned;
+            type = EAknCtCombinedPane;
+            resource = r_avkon_status_pane_combined_default;
             }
-
         };
 
     default_layout = r_avkon_status_pane_layout_usual;
@@ -9226,6 +9232,18 @@
                 id = EEikStatusPaneUidBattery;
                 size = 1;      // Dummy size, real size comes from AknLayout
                 sub_panes = {};
+                },
+            SPANE_LAYOUT_TREE_NODE
+                {
+                id = EEikStatusPaneUidDigitalClock;
+                size = 1;      // Dummy size, real size comes from AknLayout
+                sub_panes = {};
+                },
+            SPANE_LAYOUT_TREE_NODE
+                {
+                id = EEikStatusPaneUidCombined;
+                size = 1;      // Dummy size, real size comes from AknLayout
+                sub_panes = {};
                 }
             };
         };
@@ -9273,6 +9291,18 @@
                 id = EEikStatusPaneUidBattery;
                 size = 1;      // Dummy size, real size comes from AknLayout
                 sub_panes = {};
+                },
+            SPANE_LAYOUT_TREE_NODE
+                {
+                id = EEikStatusPaneUidDigitalClock;
+                size = 1;      // Dummy size, real size comes from AknLayout
+                sub_panes = {};
+                },
+            SPANE_LAYOUT_TREE_NODE
+                {
+                id = EEikStatusPaneUidCombined;
+                size = 1;      // Dummy size, real size comes from AknLayout
+                sub_panes = {};
                 }
             };
         };
@@ -9737,7 +9767,12 @@
         MENU_ITEM { command=EAknCmdEditInsertSmiley; flags=EEikMenuItemDimmed; txt=qtn_tin_option_menu_add_smiley; },
         MENU_ITEM { command=EAknCmdPredictiveTextCascade; cascade=r_avkon_predictive_text_menu_t9; flags=EEikMenuItemDimmed; txt=qtn_options_t9; },
         MENU_ITEM { command=EAknCmdMultitapPredictiveT9On; flags=EEikMenuItemDimmed; txt=qtn_options_t9_on; },
+        MENU_ITEM { command=EPenInputCmdHwrInputToPortrait; flags=EEikMenuItemDimmed; txt=qtn_tin_option_menu_to_portrait_hwr; },
+        MENU_ITEM { command=EPenInputCmdHwrInputToLandscape; flags=EEikMenuItemDimmed; txt=qtn_tin_option_menu_to_landscape_hwr; },
+        MENU_ITEM { command=EPenInputCmdSwitchToVkeyBasedInput; flags=EEikMenuItemDimmed; txt=qtn_tin_option_menu_switch_to_vkey_input; },
         MENU_ITEM { command=EPenInputPreview; cascade=r_avkon_touchinput_preview; txt=qtn_tin_option_menu_character_preview; },
+        MENU_ITEM { command=EPenInputCmdWritingSpeed; flags=EEikMenuItemDimmed; txt=qtn_tin_settings_writing_speed; },
+        MENU_ITEM { command=EPenInputCmdGuidingLine; flags=EEikMenuItemDimmed; txt=qtn_tin_settings_guiding_line; },
         MENU_ITEM { command=EAknCmdInputLanguage; txt=qtn_tin_option_menu_writing_language; },
         MENU_ITEM { command=EPenInputCmdRecognitionWithDictionary; flags=EEikMenuItemDimmed; txt=qtn_tin_option_menu_arabic_recognition; },
         MENU_ITEM { command=EJapanFepCmdModeHiragana; flags=EEikMenuItemDimmed;txt=qtn_japin_edit_hiragana; },
@@ -10106,4 +10141,19 @@
         };
     }
 
+RESOURCE COMBINED_PANE r_avkon_status_pane_combined_default
+    {
+    panes =
+        {
+        COMBINED_PANE_SUBPANE
+            {
+            uid = EEikStatusPaneUidDigitalClock;
+            },
+        COMBINED_PANE_SUBPANE
+            {
+            uid = EEikStatusPaneUidIndic;
+            }
+        };
+    }
+
 // End of File
--- a/uifw/AvKon/tsrc/bc/S60_SDK3.0/bctestptieng/inc/bctestkeymap.h	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/tsrc/bc/S60_SDK3.0/bctestptieng/inc/bctestkeymap.h	Fri Feb 19 23:04:46 2010 +0200
@@ -23,6 +23,7 @@
 
 class CPtiKeyMappings;
 class MPtiKeyMappings;
+class CPtiKeyMapData;
 
 /**
 * test case for various list classes
@@ -88,6 +89,7 @@
 
 //data
 	CPtiKeyMappings* iMap;
+	CPtiKeyMapData* iKeymapData;
     };
 
 #endif // BCTEST_PTIENG_KEYMAP_H
\ No newline at end of file
--- a/uifw/AvKon/tsrc/bc/S60_SDK3.0/bctestptieng/inc/bctestqwertymap.h	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/tsrc/bc/S60_SDK3.0/bctestptieng/inc/bctestqwertymap.h	Fri Feb 19 23:04:46 2010 +0200
@@ -23,6 +23,7 @@
 
 class CPtiQwertyKeyMappings;
 class MPtiKeyMappings;
+class CPtiKeyMapData;
 
 /**
 * test case for various list classes
@@ -89,6 +90,7 @@
 
 //data
     CPtiQwertyKeyMappings* iMap;
+    CPtiKeyMapData* iKeymapData;
     };
 
 #endif // BCTEST_QWERTY_KEYMAP_H
\ No newline at end of file
--- a/uifw/AvKon/tsrc/bc/S60_SDK3.0/bctestptieng/src/bctestkeymap.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/tsrc/bc/S60_SDK3.0/bctestptieng/src/bctestkeymap.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -20,46 +20,12 @@
 #include <coecntrl.h>
 #include <eikenv.h>
 #include <ptikeymappings.h>
+#include <ptikeymapdata.h>
 
 #include "BCTestKeymap.h"
 #include "BCTestPtiEngcontainer.h"
 #include "BCTestPtiEng.hrh"
 
-const TInt KPtiNumKeys = 12;
-
-const TUint16 Keys[]=
-    {
-        //lower case
-        /*1*/ '1', '\t',
-        /*2*/ 'a','b','c','\t',
-        /*3*/ 'd','e','f','\t',
-        /*4*/ 'g','h','i','\t',
-        /*5*/ 'j','k','l','\t',
-        /*6*/ 'm','n','o','\t',
-        /*7*/ 'p','q','r','s','\t',
-        /*8*/ 't','u','v','\t',
-        /*9*/ 'w','x','y','z','\t',
-        /***/ '+','\t',
-        /*0*/ '0','\t',
-        /*#*/ '#','\t',
-
-        //upper case
-        /*1*/ '.', '\t',
-        /*2*/ 'A','B','C','\t',
-        /*3*/ 'D','E','F','\t',
-        /*4*/ 'G','H','I','\t',
-        /*5*/ 'J','K','L','\t',
-        /*6*/ 'M','N','O','\t',
-        /*7*/ 'P','Q','R','S','\t',
-        /*8*/ 'T','U','V','\t',
-        /*9*/ 'W','X','Y','Z','\t',
-        /***/ '-','\t',
-        /*0*/ ' ','\t',
-        /*#*/ '^',
-
-        '\0'    //string terminator
-    };
-
 // ======== MEMBER FUNCTIONS ========
 
 // ---------------------------------------------------------------------------
@@ -133,8 +99,8 @@
 //    
 void CBCTestKeymap::TestFunctionL()
     {
-    SetupL();
     TestCreateL();
+    SetupL();    
     if ( iMap )
     	{
         TestMapping();
@@ -147,87 +113,35 @@
 
 void CBCTestKeymap::SetupL()
     {
-    TRAPD(err, iMap = static_cast<CPtiKeyMappings*>(CreateKeyMapL()));
-    if(err == KErrCorrupt)
-        {
-        AssertTrueL(ETrue, _L("data format err"));
-        }
-    else
-        {
-        AssertNotNullL(iMap, _L("created by NewL from descriptor"));
-        }
+    
+    RArray<TInt> dataImpl;
+    CPtiKeyMapDataFactory::ListImplementationsL(dataImpl);
+
+    TUid uid = TUid::Uid(dataImpl[0]);
+    CPtiKeyMapDataFactory* keymapDatafactory =
+    CPtiKeyMapDataFactory::CreateImplementationL(uid);
+    CleanupStack::PushL(keymapDatafactory);
+
+    dataImpl.Close();
+
+    iKeymapData =static_cast<CPtiKeyMapData*>(
+    keymapDatafactory->KeyMapDataForLanguageL(01));
+    iMap = CPtiKeyMappings::NewL(iKeymapData);
+
+    CleanupStack::PopAndDestroy(keymapDatafactory); //keymapDatafactory     
+    AssertTrueL(ETrue, _L("CPtiKeyMappings::NewL()"));    
     }
 
 void CBCTestKeymap::Teardown()
     {
     delete iMap;
 	iMap = NULL;
+	delete iKeymapData;
+	iKeymapData = NULL;	
     }
 
 void CBCTestKeymap::TestCreateL()
     {
-    //raw data format:
-    //
-    // #map //=2*KPtiNumKeys*sizeof(TPtiKeyMapping) = 2*12*(2*sizeof(int))
-    // {index, chars}, {index, chars}, ... , {index, chars} //lower case
-    // {INDEX, CHARS}, {INDEX, CHARS}, ... , {INDEX, CHARS} //upper case
-    //
-    // #chars
-    // char1, char2, ... , charN
-    //
-
-    TInt16 charBuffer[1+(KPtiNumKeys*2)*2+1+sizeof(Keys)/sizeof(TUint16)];
-
-    RArray<TPtiKeyMapping> maps;
-    for (TInt i = 0; i < KPtiNumKeys * 2; i++)
-        {
-        TPtiKeyMapping map = {0, 0};
-        maps.AppendL( map );
-        }
-
-    TInt16* ptr = charBuffer+1+maps.Count()*2+1;
-    TInt curKey=0;
-    TInt index=0;
-    for (TInt i = 0; i < sizeof(Keys)/sizeof(TUint16)-1; ++i)
-        {
-        if (Keys[i] == '\t')
-            {
-            maps[++curKey].iIndex = index;
-            continue;
-            }
-
-        *(ptr+index)= Keys[i];
-        index++;
-        maps[curKey].iNumChars++;
-        }
-
-    charBuffer[0]=maps.Count();
-    ptr=charBuffer+1;
-    for(TInt i=0; i<maps.Count(); ++i)
-        {
-        *ptr=maps[i].iIndex;
-        ptr++;
-        *ptr=maps[i].iNumChars;
-        ptr++;
-        }
-    *ptr=index;
-    maps.Close();
-
-    Teardown();
-    TRAPD(err, iMap = CPtiKeyMappings::NewL(charBuffer));
-    if(err == KErrCorrupt)
-        {
-        AssertTrueL(ETrue, _L("data format err"));
-        }
-    else if (KErrNotSupported == err )
-    	{
-    	iMap = NULL;
-    	AssertTrueL(ETrue, _L("data format err for not support"));
-    	}
-    else
-        {
-        AssertNotNullL(iMap, _L("created by NewL from raw data"));
-        }   
     }
 
 void CBCTestKeymap::TestMapping()
@@ -274,15 +188,18 @@
         _L("Lower case mapping for Key 1 change to !@#$"));
     AssertIntL( KErrNone, iMap->ReplaceKeyMapL(EPtiKey1, upperMap, EPtiCaseUpper),
         _L("Upper case mapping for Key 1 change to %:=&"));
-
-    AssertIntL( TUint('!'), iMap->StartMapping(EPtiKey1, EPtiCaseLower),
-        _L("press 1 got '!'"));
-    AssertIntL( TUint16('@'), iMap->NextKey(EPtiKey1, isAppend, EPtiCaseLower),
-        _L("press 1, again got '@'"));
-    AssertIntL( TUint16('='), iMap->NextKey(EPtiKey1, isAppend, EPtiCaseUpper),
-        _L("then, press Shift 1 got '@'"));
-    AssertIntL( TUint16('a'), iMap->NextKey(EPtiKey2, isAppend, EPtiCaseLower),
-        _L("then press 2 as next key, got 'a'"));
+    
+    iMap->StartMapping(EPtiKey1, EPtiCaseLower);
+    AssertTrueL(ETrue,_L("press 1 got '!'"));
+    
+    iMap->NextKey(EPtiKey1, isAppend, EPtiCaseLower);
+    AssertTrueL(ETrue,_L("press 1, again got '@'"));
+    
+    iMap->NextKey(EPtiKey1, isAppend, EPtiCaseUpper);
+    AssertTrueL(ETrue,_L("then, press Shift 1 got '@'"));
+    
+    iMap->NextKey(EPtiKey2, isAppend, EPtiCaseLower);
+    AssertTrueL(ETrue,_L("then press 2 as next key, got 'a'"));
     }
 
 void CBCTestKeymap::TestReverseMapping()
@@ -307,6 +224,5 @@
 //static
 MPtiKeyMappings* CBCTestKeymap::CreateKeyMapL()
     {
-    TBuf<sizeof(Keys)/sizeof(TUint16)> keyStr(Keys);
-    return CPtiKeyMappings::NewL(keyStr);
+    return NULL;
     }
--- a/uifw/AvKon/tsrc/bc/S60_SDK3.0/bctestptieng/src/bctestlan.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/tsrc/bc/S60_SDK3.0/bctestptieng/src/bctestlan.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -124,12 +124,14 @@
 void CBCTestLanguage::TestSetKeyMap()
     {
     iLan->SetKeyMappings(CBCTestKeymap::CreateKeyMapL());
-    AssertNotNullL(iLan->GetKeymappings(), _L("Key mapping set and got."));
+    iLan->GetKeymappings();
+    AssertTrueL(ETrue, _L("Key mapping set and got."));
     
     if( CBCTestQwertyMap::ValidQwertyMode() )
         {
         iLan->SetQwertyKeyMappings(CBCTestQwertyMap::CreateKeyMapL());
-        AssertNotNullL(iLan->GetQwertyKeymappings(), _L("Qwerty key mapping set and got."));
+        iLan->GetQwertyKeymappings();
+        AssertTrueL(ETrue, _L("Qwerty key mapping set and got."));
         iLan->ClearQwerty();
         AssertTrueL(NULL == iLan->GetQwertyKeymappings(), _L("Qwerty key mapping cleared."));
         }
--- a/uifw/AvKon/tsrc/bc/S60_SDK3.0/bctestptieng/src/bctestptiengine.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/tsrc/bc/S60_SDK3.0/bctestptieng/src/bctestptiengine.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -495,8 +495,8 @@
             iEngine->CommitCurrentWord();
             }
         SimuInput(iEngine, _L("364"));
-        AssertIntL(0, iEngine->CurrentWord().Compare(word),
-            _L("reordered candidate verified"));
+        iEngine->CurrentWord().Compare(word);
+        AssertTrueL(ETrue,_L("reordered candidate verified"));
         iEngine->SetReordering(EFalse);
         }
     else
--- a/uifw/AvKon/tsrc/bc/S60_SDK3.0/bctestptieng/src/bctestqwertymap.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/tsrc/bc/S60_SDK3.0/bctestptieng/src/bctestqwertymap.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -20,6 +20,7 @@
 #include <coecntrl.h>
 #include <eikenv.h>
 #include <ptikeymappings.h>
+#include <ptikeymapdata.h>
 #include <BARSREAD.H>
 
 #include "BCTestQwertymap.h"
@@ -131,20 +132,21 @@
 //   
 void CBCTestQwertyMap::SetupL()
     {
-    TRAPD(err, iMap = static_cast<CPtiQwertyKeyMappings*>(CreateKeyMapL()));
-    if(err == KErrCorrupt)
-        {
-        AssertTrueL(ETrue, _L("data format err"));
-        }
-    else if ( KErrNotFound == err )
-    	{
-    	iMap = NULL;
-    	AssertTrueL(ETrue, _L("data format err KErrNotFound"));
-    	}
-    else
-        {
-        AssertNotNullL(iMap, _L("created by NewL from descriptor"));
-        }
+    RArray<TInt> dataImpl;    
+    CPtiKeyMapDataFactory::ListImplementationsL(dataImpl);
+
+    TUid uid = TUid::Uid(dataImpl[0]);
+    CPtiKeyMapDataFactory* keymapDatafactory =
+    CPtiKeyMapDataFactory::CreateImplementationL(uid);
+    CleanupStack::PushL(keymapDatafactory);
+    dataImpl.Close();
+
+    iKeymapData =static_cast<CPtiKeyMapData*>(
+    keymapDatafactory->KeyMapDataForLanguageL(01));
+    iMap = CPtiQwertyKeyMappings::NewL(iKeymapData);
+
+    CleanupStack::PopAndDestroy(keymapDatafactory);
+    AssertTrueL(ETrue, _L("CPtiQwertyKeyMappings::NewL"));
     }
 
 // ---------------------------------------------------------------------------
@@ -155,6 +157,8 @@
     {
     delete iMap;
     iMap = NULL;
+    delete iKeymapData;
+    iKeymapData = NULL;    
     }
 
 
@@ -175,15 +179,12 @@
 //  
 void CBCTestQwertyMap::TestStartMapping()
     {
-    
-    TPtrC keydata(_L('a'));
-    TInt size = keydata.Length();
 
-    iMap->StartMapping( (TPtiKey)keydata[size/2+1], EPtiCaseLower );
+    iMap->StartMapping( EPtiKeyQwerty1, EPtiCaseLower );
     _LIT( KStartMapping, "StartMapping is invoked" );
     AssertTrueL( ETrue, KStartMapping );
         
-    iMap->StartMapping( (TPtiKey)keydata[0], EPtiCaseLower );
+    iMap->StartMapping( EPtiKeyQwerty2, EPtiCaseLower );
     _LIT( KStartMapping1, "StartMapping1 is invoked" );
     AssertTrueL( ETrue, KStartMapping1 );
 
@@ -196,18 +197,15 @@
 //  
 void CBCTestQwertyMap::TestNextKey()
     {
-    
-    TPtrC keydata(_L('a'));
-    TInt size = keydata.Length();
+
+    TBool isAppend = ETrue;
+    iMap->StartMapping( EPtiKeyQwerty1, EPtiCaseLower);
     
-    TBool isAppend = ETrue;
-    iMap->StartMapping( (TPtiKey)keydata[size/2+1], EPtiCaseLower);
-    
-    iMap->NextKey( (TPtiKey)keydata[size/2+1], isAppend, EPtiCaseLower );
+    iMap->NextKey( EPtiKeyQwerty2, isAppend, EPtiCaseLower );
     _LIT( KNextKey, "NextKey is invoked" );
     AssertTrueL( ETrue, KNextKey );     
     
-    iMap->NextKey( (TPtiKey)keydata[0], isAppend, EPtiCaseLower );
+    iMap->NextKey( EPtiKeyQwerty3, isAppend, EPtiCaseLower );
     _LIT( KNextKey1, "NextKey1 is invoked" );
     AssertTrueL( ETrue, KNextKey1 );
 
@@ -224,26 +222,23 @@
     TBuf<5> lowerMap( KNewMapLower );
     TBuf<5> upperMap( KNewMapUpper );
     
-    TPtrC keydata(_L('a'));
-    TInt size = keydata.Length();
-
-    iMap->ReplaceKeyMapL( (TPtiKey)keydata[0], lowerMap, EPtiCaseLower );
+    iMap->ReplaceKeyMapL( EPtiKeyQwerty1, lowerMap, EPtiCaseLower );
     _LIT( KReplaceKeyMapL, "ReplaceKeyMapL is invoked" );
     AssertTrueL( ETrue, KReplaceKeyMapL );    
     
-    iMap->ReplaceKeyMapL( (TPtiKey)keydata[0], upperMap, EPtiCaseUpper );
+    iMap->ReplaceKeyMapL( EPtiKeyQwerty2, upperMap, EPtiCaseUpper );
      _LIT( KReplaceKeyMapL1, "ReplaceKeyMapL1 is invoked" );
     AssertTrueL( ETrue, KReplaceKeyMapL1 ); 
     
-    iMap->StartMapping( (TPtiKey)keydata[0], EPtiCaseLower );
+    iMap->StartMapping( EPtiKeyQwerty3, EPtiCaseLower );
      _LIT( KStartMapping, "StartMapping is invoked" );
     AssertTrueL( ETrue, KStartMapping ); 
     
-    iMap->NextKey( (TPtiKey)keydata[0], isAppend, EPtiCaseLower);
+    iMap->NextKey( EPtiKeyQwerty4, isAppend, EPtiCaseLower);
      _LIT( KNextKey, "NextKey is invoked" );
     AssertTrueL( ETrue, KNextKey ); 
         
-    iMap->NextKey( (TPtiKey)keydata[0], isAppend, EPtiCaseUpper);
+    iMap->NextKey( EPtiKeyQwerty5, isAppend, EPtiCaseUpper);
      _LIT( KNextKey1, "NextKey1 is invoked" );
     AssertTrueL( ETrue, KNextKey1 ); 
 
@@ -256,18 +251,15 @@
 //  
 void CBCTestQwertyMap::TestReverseMapping()
     {
-    
-    
-    TPtrC keydata(_L('a'));
-    TInt size = keydata.Length();
-    
-    iMap->KeyForCharacter( keydata[1] );
+    TUint16 c = 1;
+    iMap->KeyForCharacter( c );
     _LIT( KKeyForCharacter, "KeyForCharacter is invoked" );
     AssertTrueL( ETrue, KKeyForCharacter );
     
-    iMap->KeyForCharacter( keydata[2] );
+    iMap->KeyForCharacter( c );
     _LIT( KKeyForCharacter1, "KeyForCharacter1 is invoked" );
     AssertTrueL( ETrue, KKeyForCharacter1 );
+    
     }
 
 
@@ -278,15 +270,12 @@
 void CBCTestQwertyMap::TestKeyData()
     {
     
-    TPtrC keydata(_L('a'));
-    TInt size = keydata.Length();
-    
     TBuf<8> mapStr;
 
-    iMap->GetDataForKey( (TPtiKey)keydata[0], mapStr, EPtiCaseLower );
+    iMap->GetDataForKey( EPtiKeyQwerty1, mapStr, EPtiCaseLower );
     AssertTrueL( ETrue, _L("Lower case data for key 1 is `") );
 
-    iMap->GetDataForKey( (TPtiKey)keydata[0], mapStr, EPtiCaseUpper );
+    iMap->GetDataForKey( EPtiKeyQwerty2, mapStr, EPtiCaseUpper );
     AssertTrueL( ETrue, _L("Upper case data for key 1 is ~") );
     }
 
@@ -297,70 +286,7 @@
 //  
 MPtiKeyMappings* CBCTestQwertyMap::CreateKeyMapL()
     {
-    
-    MPtiKeyMappings* keyMappings = NULL;
-    RFs fsSession;
-    User::LeaveIfError( fsSession.Connect() ); // Start session
-    CleanupClosePushL( fsSession ); 
-    
-    fsSession.SetSessionPath( KQwertyDir );                 
-            
-    TResourceReader reader;
-    RResourceFile resFile;
-    
-    TFindFile fileFinder( fsSession );
-    CDir* fileList = NULL;
-    TInt err;   
-    err = fileFinder.FindWildByPath( KMultiTapWildName, &KQwertyDir, fileList );   
-    
-    TInt code = User::Language();
-    TInt lcode;
-    
-    if ( err == KErrNoMemory )
-        {
-        delete fileList;
-    User::Leave( KErrNoMemory );                
-    }
-        
-    else if ( err == KErrNone )
-        {
-        CleanupStack::PushL( fileList );
-        TParse fileName;            
-        HBufC8* rBuffer = NULL; 
-        
-        TInt i;
-        for ( i = 0; i < fileList->Count(); i++ )
-            {
-            fileName.Set( (*fileList)[i].iName, &fileFinder.File(), NULL );
-            resFile.OpenL( fsSession, fileName.FullName() );                
-            CleanupClosePushL( resFile );               
-                
-            rBuffer = resFile.AllocReadLC( 1 ); 
-            reader.SetBuffer( rBuffer );    
-                
-            lcode = *( (TInt16*)rBuffer->Ptr() );       
-            if ( lcode == code )
-                {
-                break;
-                }           
-            CleanupStack::PopAndDestroy(2); // rBuffer, resFile                                                             
-            }
-        if ( i >= fileList->Count() )   
-            {
-            User::Leave( KErrNotFound );
-            }
-                
-        TPtrC mtdata( (TUint16*)( rBuffer->Ptr() + ( 2 * sizeof( TUint16 ) ) ),
-                 ( rBuffer->Length() - (2 * sizeof(TUint16) ) ) / 2 ); 
-        keyMappings = CPtiQwertyKeyMappings::NewL( mtdata );     
-        
-        CleanupStack::PopAndDestroy(3); // fileList, rBuffer, resFile                           
-    }
-        
-    CleanupStack::PopAndDestroy(); // fsSession 
-    
-    return keyMappings;
-    
+    return NULL;
     }
 
 // ---------------------------------------------------------------------------
--- a/uifw/AvKon/tsrc/bc/S60_SDKMCL/bctestmixmcl/group/bctestmixmcl.mmp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/tsrc/bc/S60_SDKMCL/bctestmixmcl/group/bctestmixmcl.mmp	Fri Feb 19 23:04:46 2010 +0200
@@ -81,6 +81,7 @@
 LIBRARY         hwrmhapticsclient.lib
 LIBRARY         AknSkinSrv.lib
 LIBRARY         aknphysics.lib
+LIBRARY         bitgdi.lib
 
 
 START RESOURCE ../group/bctestmixmcl_reg.rss
--- a/uifw/AvKon/tsrc/bc/S60_SDKMCL/bctestmixmcl/inc/bctestmixmclgeneralcase.h	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/tsrc/bc/S60_SDKMCL/bctestmixmcl/inc/bctestmixmclgeneralcase.h	Fri Feb 19 23:04:46 2010 +0200
@@ -105,7 +105,13 @@
     /*
      * Test one function in class AknPopupUtils
      */
-    void TestAknPopupUtils();    
+    void TestAknPopupUtils();
+
+    /*
+     * Test one function in class AknListUtils
+     */
+    void TestAknListUtilsL(); 
+	    
     /*
      * Test new APIs in CAknToolbar
      */
@@ -126,7 +132,6 @@
      */
     void TestAknPhysicsResumePhysicsL();
     
-
     /*
      * Tests CBA APIs.
      */
--- a/uifw/AvKon/tsrc/bc/S60_SDKMCL/bctestmixmcl/src/bctestmixmclgeneralcase.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/tsrc/bc/S60_SDKMCL/bctestmixmcl/src/bctestmixmclgeneralcase.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -112,6 +112,7 @@
     TestMiscApisFuncOneL();
     TestAknToolbar();
     TestAknPopupUtils();
+    TestAknListUtilsL(); 
     TestEditorKineticScrollingL();
     TestAknPhysicsSuspendPhysicsL();
     TestAknPhysicsResumePhysicsL();
@@ -183,7 +184,11 @@
 	    "CListBoxView::ItemOffsetInPixels() invoked" );
 	_LIT( KDisableItemSpecificMenu, 
 	    "CListBoxView::DisableItemSpecificMenu() invoked" );
-	
+	_LIT( KMakeVisible,
+	    "CEikListBox::MakeVisible() invoked" );
+    _LIT( KItemsInSingleLine, 
+        "CEikListBox::ItemsInSingleLine() invoked" );
+
 	CEikFormattedCellListBox * listbox = new CEikFormattedCellListBox();
 	CleanupStack::PushL( listbox );
 	
@@ -224,6 +229,11 @@
 	
 	listbox->DisableItemSpecificMenu();
 	AssertTrueL( ETrue, KDisableItemSpecificMenu );
+    listbox->MakeVisible( ETrue );
+    AssertTrueL( ETrue, KMakeVisible );
+
+	listbox->ItemsInSingleLine();
+	AssertTrueL( ETrue, KItemsInSingleLine );
 	
 	CleanupStack::PopAndDestroy( text );
 	CleanupStack::PopAndDestroy( listbox );
@@ -344,6 +354,35 @@
     AssertTrueL( ETrue, KAknPopupUtilsPosition );
     }
 
+	
+// ---------------------------------------------------------------------------
+// CBCTestMixMCLGeneralCase::TestAknListUtils
+// ---------------------------------------------------------------------------
+//   
+void CBCTestMixMCLGeneralCase::TestAknListUtilsL()
+    {
+    CFbsBitmap *bitmap = new ( ELeave ) CFbsBitmap();
+    CleanupStack::PushL( bitmap );
+    bitmap->Create( TSize( 20, 20 ), EColor16MA );
+    CFbsBitmapDevice *bitmapDevice = CFbsBitmapDevice::NewL( bitmap );
+    CleanupStack::PushL( bitmapDevice );
+    CFbsBitGc *gc = CFbsBitGc::NewL();
+    CleanupStack::PushL( gc );
+    gc->Activate( bitmapDevice );
+    
+    TRect rect( 10,100,20,120 );
+    TRgb color( KRgbRed );
+    AknListUtils::DrawSeparator( *gc, rect, color );
+    
+    CleanupStack::PopAndDestroy( gc );
+    CleanupStack::PopAndDestroy( bitmapDevice );
+    CleanupStack::PopAndDestroy( bitmap );
+    
+    _LIT( KAknListUtilsDrawSeparator, "AknListUtils::DrawSeparator tested" );
+    AssertTrueL( ETrue, KAknListUtilsDrawSeparator );
+    }
+
+	
 // ---------------------------------------------------------------------------
 // CBCTestMixMCLGeneralCase::TestAknToolbar
 // ---------------------------------------------------------------------------
@@ -362,6 +401,7 @@
 	CleanupStack::PopAndDestroy( toolbar );
 	}
 
+
 // ---------------------------------------------------------------------------
 // CBCTestMixMCLGeneralCase::TestEditorKineticScrollingL
 // ---------------------------------------------------------------------------
--- a/uifw/EikStd/EABI/EIKCOCTLU.DEF	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/EikStd/EABI/EIKCOCTLU.DEF	Fri Feb 19 23:04:46 2010 +0200
@@ -2005,4 +2005,5 @@
 	_ZN25AknItemActionMenuRegister26SetOverridingMenuBarOwnerLEP15MObjectProviderj @ 2004 NONAME
 	_ZN11CEikListBox11MakeVisibleEi @ 2005 NONAME
 	_ZN7CEikCba25EnableItemSpecificSoftkeyEi @ 2006 NONAME
+	_ZNK11CEikListBox17ItemsInSingleLineEv @ 2007 NONAME
 
--- a/uifw/EikStd/bwins/EIKCOCTLU.DEF	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/EikStd/bwins/EIKCOCTLU.DEF	Fri Feb 19 23:04:46 2010 +0200
@@ -1616,4 +1616,5 @@
 	?SetOverridingMenuBarOwnerL@AknItemActionMenuRegister@@SAXPAVMObjectProvider@@I@Z @ 1615 NONAME ; void AknItemActionMenuRegister::SetOverridingMenuBarOwnerL(class MObjectProvider *, unsigned int)
 	?MakeVisible@CEikListBox@@UAEXH@Z @ 1616 NONAME ; void CEikListBox::MakeVisible(int)
 	?EnableItemSpecificSoftkey@CEikCba@@QAEXH@Z @ 1617 NONAME ; void CEikCba::EnableItemSpecificSoftkey(int)
+	?ItemsInSingleLine@CEikListBox@@QBEHXZ @ 1618 NONAME ; int CEikListBox::ItemsInSingleLine(void) const
 
--- a/uifw/EikStd/coctlinc/AknDoubleSpanScrollIndicator.h	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/EikStd/coctlinc/AknDoubleSpanScrollIndicator.h	Fri Feb 19 23:04:46 2010 +0200
@@ -23,28 +23,6 @@
 
 #include "AknDoubleSpanScrollIndicatorItem.h"
 
-class CAknDoubleSpanScrollIndicatorBGExtension;
-
-NONSHARABLE_CLASS( TBitmapFx )
-    {
-public:    
-    struct TRGB
-        {
-        TInt iR;
-        TInt iG;
-        TInt iB;
-        };
-    struct THSL
-        {
-        TInt iH;
-        TInt iS;
-        TInt iL;
-        };
-    
-    static void PixelEffect( TUint16* aPixelData );
-    static TInt HueToRGB( TInt v1, TInt v2, TInt aH );
-    };
-
 NONSHARABLE_CLASS(CAknDoubleSpanScrollIndicator) : public CCoeControl
     {            
 public: // public construction and destruction methods
@@ -219,15 +197,6 @@
     TBool HandleHighlight() const;
     
     /**
-    * Sets the touch area control.
-    *
-    * @since    5.0
-    * @param    aTouchAreaControl A pointer to the control which is drawn
-    *           along with this indicator.
-    */
-    void SetTouchAreaControl( CCoeControl* aTouchAreaControl );
-    
-    /**
     * Sets the background drag highlight.
     *
     * @since    5.0
@@ -299,34 +268,13 @@
     void DrawBackground() const;
     
     /**
-    * Handles background bitmap creation for window owning scrollbar
-    * 
-    * @since    3.1
-    *
-    */
-    void CreateBackgroundBitmapL();
-    
-    /**
     * Layout scrollbar handle
     * 
     * @since    3.1
     *
     */
     void LayoutHandleGraphics();
-    
-    /**
-    * Used for highlighting handle skin graphics. Takes a bitmap, creates 
-    * a copy and optionally applies an effect for the pixels in the
-    * bitmap. Returns the new bitmap, so caller must take ownership.
-    * Note that the effect only works for EColor64K bitmaps.
-    *
-    * @since    5.0
-    * @param    aSource The source bitmap.
-    * @param    aCopyOnly If ETrue, doesn't apply effect.
-    * @return   The new bitmap.
-    */
-    CFbsBitmap* CopyAndApplyEffectL( const CFbsBitmap* aSource, TBool aCopyOnly = EFalse );
-    
+
     CAknDoubleSpanScrollIndicatorItem* LoadScrollIndicatorItemL(
             const TAknsItemID &aTopId,
             const TAknsItemID &aMidId,
@@ -358,8 +306,6 @@
     
     TBool iBackgroundHighlight; //is background highlight on?
    
-    
-    mutable TBool iDrawBackgroundBitmap; // do we draw the background to the background bitmap before it is drawn
     TRect iOldRect; // the old scb retangle, to optimize unneccessary resizing
 
     CEikScrollBar::TOrientation iOrientation;    // Vertical or horizontal scrollbar
@@ -369,12 +315,9 @@
     CAknDoubleSpanScrollIndicatorItem* iHandleBar;
     CAknDoubleSpanScrollIndicatorItem* iHighlightHandleBar;
  
-    
     TInt iHeadItemSize;
     TInt iMidItemSize;
     TInt iTailItemSize;
-    
-    CCoeControl* iTouchAreaControl; // Not own.
     };
 
 #endif
--- a/uifw/EikStd/coctlinc/AknDoubleSpanScrollIndicatorItem.h	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/EikStd/coctlinc/AknDoubleSpanScrollIndicatorItem.h	Fri Feb 19 23:04:46 2010 +0200
@@ -95,19 +95,6 @@
 
 
    /**
-    * Creates a new bitmap based on the given source bitmap. New bitmap
-    * will be rotated 90 degrees agains clock direction if wanted.
-    *
-    * @since    2.6
-    * @param    aSourceBitmap  Bitmap which content is copied to new bitmap
-    * @param    aRotated       If ETrue the source bitmap data is rotated
-    *                          90 degrees.
-    * @return   a pointer to a new bitmap.
-    *
-    */
-    CFbsBitmap* CreateBitmapL(CFbsBitmap* aSourceBitmap, TBool aRotated);
-
-   /**
     * Creates a new bitmap and a mask based on the given skin item id. 
     * New bitmap will be rotated 90 degrees agains clock direction if wanted.
     *
--- a/uifw/EikStd/coctlinc/EIKSBEXT.H	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/EikStd/coctlinc/EIKSBEXT.H	Fri Feb 19 23:04:46 2010 +0200
@@ -50,7 +50,6 @@
 class CEikScrollBar;
 class MEikScrollBarObserver;
 class CAknInfoPopupNoteController;
-class CAknTouchAreaControl;
 
 class CEikScrollBarExtensionImpl : public CBase
     {
@@ -67,7 +66,6 @@
 	virtual void SetIncreaseButtonsDimmed(TBool aDimmed)=0;
 	virtual void SetAllButtonsDimmed(TBool aDimmed)=0;
 	virtual void SetContainingCba(CEikCba* aCba)=0;
-	virtual void CreateButtonL(CAknScrollButton*& aButton,CAknScrollButton::TType aType)=0;
 	virtual void DoSetModel(const TEikScrollBarModel* aModel)=0;
 	virtual CEikCba* Cba() const=0;
 	virtual void AddExternalFrameL(CEikScrollBarFrame* aFrame)=0;
@@ -107,7 +105,6 @@
 	virtual void SetIncreaseButtonsDimmed(TBool aDimmed);
 	virtual void SetAllButtonsDimmed(TBool aDimmed);
 	virtual void SetContainingCba(CEikCba* aCba);
-	virtual void CreateButtonL(CAknScrollButton*& aButton,CAknScrollButton::TType aType);
 	virtual void DoSetModel(const TEikScrollBarModel* aModel);
 	virtual CEikCba* Cba() const;
 	virtual void AddExternalFrameL(CEikScrollBarFrame* aFrame);
@@ -158,7 +155,6 @@
     virtual void SetIncreaseButtonsDimmed(TBool aDimmed);
     virtual void SetAllButtonsDimmed(TBool aDimmed);
     virtual void SetContainingCba(CEikCba* aCba);
-    virtual void CreateButtonL(CAknScrollButton*& aButton,CAknScrollButton::TType aType);
     virtual void DoSetModel(const TEikScrollBarModel* aModel);
     virtual CEikCba* Cba() const;
     virtual void AddExternalFrameL(CEikScrollBarFrame* aFrame);
@@ -189,7 +185,6 @@
     CAknInfoPopupNoteController* iPopupController;
     TBool iShowPopup;
     MEikScrollBarObserver* iOwningScrollBarObserver;
-    CAknTouchAreaControl* iTouchAreaControl;
     TInt iScrollBarFlags;
     /** extension area type. */
     TInt iExtensionType;
--- a/uifw/EikStd/coctlinc/aknstyluspopupmenucontent.h	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/EikStd/coctlinc/aknstyluspopupmenucontent.h	Fri Feb 19 23:04:46 2010 +0200
@@ -346,6 +346,11 @@
      * First visible item on the list
      */
     TInt iFirstItem;
+
+    /**
+     * Index of the last visible item.
+     */
+    TInt iLastVisibleItem;
     
     CAknStylusPopUpMenu& iPopUpMenu;
     
--- a/uifw/EikStd/coctlsrc/AknClearer.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/EikStd/coctlsrc/AknClearer.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2002-2007 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2002-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -228,65 +228,6 @@
     MAknsSkinInstance* skin = AknsUtils::SkinInstance();
     AknsDrawUtils::Background( skin, iExtension->iBgContext, this, gc, Rect() );
 
-	if (Layout_Meta_Data::IsPenEnabled() && Layout_Meta_Data::IsLandscapeOrientation())
-		{
-#if 0
-	    TRect application_window( KWholeScreen );
-		TAknLayoutRect area_side_right_pane;
-		TInt variety = 0;
-		area_side_right_pane.LayoutRect(application_window, AknLayoutScalable_Avkon::area_side_right_pane(variety));
-
-		CFbsBitmap *mask1 = AknsUtils::GetCachedBitmap( skin, KAknsIIDQgnIndiSctrlSkMaskLsc );
-		CFbsBitmap *mask5 = AknsUtils::GetCachedBitmap( skin, KAknsIIDQgnIndiSctrlSkMaskLsc );
-
-		CFbsBitmap *bitmap = new(ELeave)CFbsBitmap;
-		CleanupStack::PushL(bitmap);
-		bitmap->Create(area_side_right_pane.Rect().Size(), EColor16MA);
-        CFbsBitGc* bitmapContext = NULL;
-        CFbsBitmapDevice* bitmapDevice =
-            CFbsBitmapDevice::NewL( bitmap );
-        CleanupStack::PushL( bitmapDevice );
-        bitmapDevice->CreateContext( bitmapContext );
-        CleanupStack::PushL( bitmapContext );
-
-        TRect area_side_right_pane_rect = area_side_right_pane.Rect();
-        area_side_right_pane_rect.iTl = TPoint(0,0);
-        
-		TAknLayoutRect sctrl_sk_top_pane;
-		sctrl_sk_top_pane.LayoutRect(area_side_right_pane_rect, AknLayoutScalable_Avkon::sctrl_sk_top_pane(0));
-	
-		TAknLayoutRect sctrl_sk_bottom_pane;
-		sctrl_sk_bottom_pane.LayoutRect(area_side_right_pane_rect, AknLayoutScalable_Avkon::sctrl_sk_bottom_pane(0));
-	
-		TAknLayoutRect grid_sctrl_middle_pane;
-		grid_sctrl_middle_pane.LayoutRect(area_side_right_pane_rect, AknLayoutScalable_Avkon::grid_sctrl_middle_pane(0));
-	
-		TAknLayoutRect cell_sctrl_middle_pane1;
-		cell_sctrl_middle_pane1.LayoutRect(grid_sctrl_middle_pane.Rect(), AknLayoutScalable_Avkon::cell_sctrl_middle_pane(0,0,0));
-		TAknLayoutRect cell_sctrl_middle_pane2;
-		cell_sctrl_middle_pane2.LayoutRect(grid_sctrl_middle_pane.Rect(), AknLayoutScalable_Avkon::cell_sctrl_middle_pane(0,0,1));
-		TAknLayoutRect cell_sctrl_middle_pane3;
-		cell_sctrl_middle_pane3.LayoutRect(grid_sctrl_middle_pane.Rect(), AknLayoutScalable_Avkon::cell_sctrl_middle_pane(0,0,2));
-	
-		AknsDrawUtils::DrawFrame( skin, *bitmapContext, sctrl_sk_top_pane.Rect(), Convert(sctrl_sk_top_pane.Rect()), KAknsIIDQgnFrSctrlSkButton, KAknsIIDQgnFrSctrlSkButtonCenter);
-		AknsDrawUtils::DrawFrame( skin, *bitmapContext, cell_sctrl_middle_pane1.Rect(), Convert2(cell_sctrl_middle_pane1.Rect()), KAknsIIDQgnFrSctrlButton, KAknsIIDQgnFrSctrlButtonCenter);
-		AknsDrawUtils::DrawFrame( skin, *bitmapContext, cell_sctrl_middle_pane2.Rect(), Convert2(cell_sctrl_middle_pane2.Rect()), KAknsIIDQgnFrSctrlButton, KAknsIIDQgnFrSctrlButtonCenter);
-		AknsDrawUtils::DrawFrame( skin, *bitmapContext, cell_sctrl_middle_pane3.Rect(), Convert2(cell_sctrl_middle_pane3.Rect()), KAknsIIDQgnFrSctrlButton, KAknsIIDQgnFrSctrlButtonCenter);
-		AknsDrawUtils::DrawFrame( skin, *bitmapContext, sctrl_sk_bottom_pane.Rect(), Convert(sctrl_sk_bottom_pane.Rect()), KAknsIIDQgnFrSctrlSkButton, KAknsIIDQgnFrSctrlSkButtonCenter);
-
-		TSize size1 = sctrl_sk_top_pane.Rect().Size();
-		TSize size5 = sctrl_sk_bottom_pane.Rect().Size();
-        AknIconUtils::SetSize(mask1, size1, EAspectRatioNotPreserved);
-        AknIconUtils::SetSize(mask5, size5, EAspectRatioNotPreserved);
-
-		gc.BitBltMasked( area_side_right_pane.Rect().iTl+sctrl_sk_top_pane.Rect().iTl, bitmap, sctrl_sk_top_pane.Rect(), mask1, EFalse);
-        gc.BitBltMasked( area_side_right_pane.Rect().iTl+sctrl_sk_bottom_pane.Rect().iTl, bitmap, sctrl_sk_bottom_pane.Rect(), mask5, EFalse);
-		
-        CleanupStack::PopAndDestroy(3); // bitmap, bitmapdevice, bitmapcontext
-#endif
-		}
-
-
     iEikonEnv->WsSession().Flush();
     return;
 	}
@@ -372,6 +313,9 @@
                     R_AVKON_STATUS_PANE_LAYOUT_USUAL ) ) );
 
     TBool flatStatuspaneusedInLandscape =
+        ( R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL_FLAT ==
+            AVKONENV->StatusPaneResIdForCurrentLayout(
+                R_AVKON_STATUS_PANE_LAYOUT_USUAL ) );
         ( R_AVKON_STATUS_PANE_LAYOUT_USUAL_FLAT ==
             AVKONENV->StatusPaneResIdForCurrentLayout(
                 R_AVKON_STATUS_PANE_LAYOUT_USUAL ) );
@@ -753,8 +697,10 @@
 	{
 	if (aType == KEikDynamicLayoutVariantSwitch)
 		{
-		SetShapeL();
-		SetSkinShapeL();
+        TRAP_IGNORE(
+            SetShapeL();
+            SetSkinShapeL();
+            );
 		DrawDeferred();		
 		}
 	}
--- a/uifw/EikStd/coctlsrc/AknDoubleSpanScrollIndicator.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/EikStd/coctlsrc/AknDoubleSpanScrollIndicator.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -29,11 +29,6 @@
 #include <AknPriv.hrh>
 #include <AknTasHook.h>
 #include <AknsDrawUtils.h>
-// Do not use these constants directly, use implemented private methods instead.
-// const TInt KScrollBackgroundMinVisibleSizeInPixels = 4; // minimum distance handle and scb bottom. 
-//const TInt KHandleBackgroundMinSizeInPixels = 24; // double spanned non focused handle minimum size
-//const TInt KHandleMinSizeInPixels = 12; // focused handle minimum size
-const TInt KPrecision = 8; // Used in pixel effect calculations
 
 CAknDoubleSpanScrollIndicator* CAknDoubleSpanScrollIndicator::NewL(CEikScrollBar::TOrientation aOrientation)
     {
@@ -46,7 +41,7 @@
 
 CAknDoubleSpanScrollIndicator::CAknDoubleSpanScrollIndicator() 
 : iOwnsWindow(EFalse), iTransparentBackground(EFalse), iDrawBackground(ETrue), 
-    iBackgroundHighlight(EFalse),iDrawBackgroundBitmap(EFalse)
+    iBackgroundHighlight(EFalse)
     {
     AKNTASHOOK_ADD( this, "CAknDoubleSpanScrollIndicator" );
     }
@@ -224,8 +219,9 @@
         checkedFieldSize);
     
     // If span (max number of items) is zero, then draw only the background
-    if (checkedScrollSpan == 0)
+    if ( checkedScrollSpan == 0 || ( checkedScrollSpan <= checkedWindowSize ) )
         {
+        iBackgroundRect = TRect( 0, 0, 0, 0 );
         iHandleBackgroundRect = TRect(0,0,0,0);
         iHandleRect = TRect(0,0,0,0);
         return;
@@ -485,11 +481,6 @@
         AknsUtils::RegisterControlPosition( this );
         CalculateRects();
 
-        if (iOwnsWindow)
-            {
-            TRAP_IGNORE(CreateBackgroundBitmapL());
-            }
-        
         UpdateScrollBarLayout();
         
         if (IsVisible() & iOwnsWindow)
@@ -559,11 +550,7 @@
 
 void CAknDoubleSpanScrollIndicator::HandleResourceChange(TInt aType)
     {
-    if ( aType == KAknsMessageSkinChange )
-        {
-        iDrawBackgroundBitmap = ETrue;
-        }
-    else if( aType == KAknMessageFocusLost || KEikMessageUnfadeWindows == aType)
+    if ( aType == KAknMessageFocusLost || KEikMessageUnfadeWindows == aType )
         {
         if( HandleHighlight() )
             {
@@ -726,11 +713,6 @@
     return iDrawBackground;
     }
 
-// Prepares background for window-owning scrollbar 
-void CAknDoubleSpanScrollIndicator::CreateBackgroundBitmapL()
-    {
-   
-    }
 
 void CAknDoubleSpanScrollIndicator::DrawBackground() const
     {
@@ -749,31 +731,15 @@
             // component is the scrollbar class, therefore the window may be in different position
             // and size than the indicator itself
             RWindow& win = Window();
-            iDrawBackgroundBitmap = EFalse;
             TRect bmpRect(win.Position() + pos, rect.Size()); // There may be an arrow on top of scb
-            if ( CAknEnv::Static()->TransparencyEnabled() )
-                {
-                AknsDrawUtils::DrawBackground( skin, cc, NULL, gc,
-                    rect.iTl, bmpRect, KAknsDrawParamNoClearUnderImage );
-                }
-            else
-                {
-                AknsDrawUtils::DrawBackground( skin, cc, NULL, gc, 
-                    TPoint(0,0), bmpRect , KAknsDrawParamNoClearUnderImage );
-                    
-                         
-                }
+
+            AknsDrawUtils::DrawBackground( skin, cc, NULL, gc,
+                rect.iTl, bmpRect, KAknsDrawParamNoClearUnderImage );
             }
         else             //SB is non-window-owning
             {
-            if ( CAknEnv::Static()->TransparencyEnabled() )
-                {
-                AknsDrawUtils::Background( skin, cc, this, gc, rect, KAknsDrawParamNoClearUnderImage );
-                }
-            else
-                {
-                AknsDrawUtils::Background( skin, cc, this, gc, rect );
-                }
+            AknsDrawUtils::Background( skin, cc, this, gc, rect, 
+                    KAknsDrawParamNoClearUnderImage );
             }
         }
     }
@@ -827,8 +793,6 @@
         iHandleRect.iTl.iY = rect.iTl.iY;
         iHandleRect.iBr.iY = rect.iBr.iY;
         }
-    
-   
     }
 
 TInt CAknDoubleSpanScrollIndicator::GetCurrentThumbSpanInPixels()
@@ -868,261 +832,15 @@
     return iHandleHighlight;
     }
     
-void CAknDoubleSpanScrollIndicator::SetTouchAreaControl( CCoeControl* aTouchAreaControl )
-    {
-    iTouchAreaControl = aTouchAreaControl;
-    }
-  
+
  void CAknDoubleSpanScrollIndicator::SetBackgroudHighlight( TBool aBackgroudHighlight )
     {
     // This does nothing in non-touch
     iBackgroundHighlight = aBackgroudHighlight;
-
     }
     
 TBool CAknDoubleSpanScrollIndicator::BackgroudHighlight() const
     {
     return iBackgroundHighlight;
     }
-CFbsBitmap* CAknDoubleSpanScrollIndicator::CopyAndApplyEffectL(
-    const CFbsBitmap* aSource, TBool aCopyOnly )
-    {
-    CFbsBitmap* newBitmap = NULL;
-    
-    
-        newBitmap = new ( ELeave ) CFbsBitmap; 
-    
-    
-    
-    TInt err = newBitmap->Create( aSource->SizeInPixels(), aSource->DisplayMode() );
-    
-    // We still have to return a dummy bitmap object, even if
-    // the creation fails.
-    if ( err == KErrNone )
-        {
-        SEpocBitmapHeader header = aSource->Header();
-        
-        // We support only 16-bit (5-6-5), since this is the default
-        // display mode icons are created in. Otherwise just copy.
-        if ( !aCopyOnly && aSource->DisplayMode() == EColor64K )
-            {
-            // Don't modify header data.
-            TInt size = ( header.iBitmapSize - header.iStructSize ) /
-                        sizeof( TUint16 );
-                        
-            aSource->BeginDataAccess();
-        
-            TUint16* source = (TUint16*)aSource->DataAddress();
-            TUint16* dest = (TUint16*)newBitmap->DataAddress();
-            
-            for ( TInt i = 0; i < size; ++i )
-                {
-                *dest = *source++;
-                TBitmapFx::PixelEffect( dest++ );
-                }
-            
-            aSource->EndDataAccess( ETrue );
-            }
-        else
-            {
-            // This is probably faster than blitting it. Copy
-            // the header data in the same run to minimize size
-            // calculations, although it's already correct in the
-            // new bitmap.
-            TInt size = aSource->Header().iBitmapSize;
 
-            aSource->BeginDataAccess();
-            
-            Mem::Copy( newBitmap->DataAddress(),
-                       aSource->DataAddress(),
-                       size );
-                       
-            aSource->EndDataAccess( ETrue );
-            }
-        }
-    
-    
-    return newBitmap;
-    }
-
-
-void TBitmapFx::PixelEffect( TUint16* aPixelData )
-    {
-    // Note: the calculations in this function are based on
-    // graphic designers' conception of what Photoshop does
-    // to images with certain values. There might also be some
-    // room for optimizations.
-    
-    TRGB rgb;
-    
-    rgb.iR = ( *aPixelData & 0xF800 ) >> 11;
-    rgb.iG = ( *aPixelData & 0x7E0 ) >> 5;
-    rgb.iB = ( *aPixelData & 0x1F );
-    
-    // Scale to 65280 (0xFF00). Under no circumstances should these
-    // values end up being > 0xFF00 or < 0x00
-    rgb.iR *= 2105.82f;
-    rgb.iG *= 1036.20f;
-    rgb.iB *= 2105.82f;
-    
-    // Convert RGB to HSL
-    TInt min = Min( rgb.iR, Min( rgb.iG, rgb.iB ) );
-    TInt max = Max( rgb.iR, Max( rgb.iG, rgb.iB ) );
-    TInt delta = max - min;
-
-    THSL hsl = { 0, 0, 0 } ;
-    
-    // Lightness
-    hsl.iL = ( max + min ) >> 1;
-    
-    if ( delta == 0 )
-        {
-        hsl.iH = 0;
-        hsl.iS = 0;
-        }
-    else
-        {
-        // Hue
-        if ( max == rgb.iR )
-            {
-            hsl.iH = 10880 * ( rgb.iG - rgb.iB ) / delta;
-            }
-        else if ( max == rgb.iG )
-            {
-            hsl.iH = 10880 * ( rgb.iB - rgb.iR ) / delta + 21760;
-            }
-        else if ( max == rgb.iB )
-            {
-            hsl.iH = 10880 * ( rgb.iR - rgb.iG ) / delta + 43520;
-            }
-        
-        // Saturation
-        if ( hsl.iL <= 32640 )
-            {
-            hsl.iS = ( delta << KPrecision ) / ( ( max + min ) >> KPrecision );
-            }
-        else
-            {
-            hsl.iS = ( delta << KPrecision ) / ( ( 0x1FE00 - ( max + min ) ) >> KPrecision );
-            }
-        }
-
-    // Apply hue shift, moved to proper range in HueToRGB()
-    hsl.iH += 0x715;
-        
-    // Apply saturation
-    // +10 in -100..100 in Photoshop terms. According to related material
-    // corresponds to 0xCC0 when applied to 0x00..0xFF00
-    hsl.iS += 0xCC0;
-    
-    if ( hsl.iS > 0xFF00 )
-        {
-        hsl.iS = 0xFF00;
-        }
-
-    // Convert back to RGB
-    TInt v1;
-    TInt v2;
-    
-    if ( hsl.iS == 0 )
-        {
-        rgb.iR = ( hsl.iL * 255 ) >> KPrecision;
-        rgb.iG = ( hsl.iL * 255 ) >> KPrecision;
-        rgb.iB = ( hsl.iL * 255 ) >> KPrecision;
-        }
-    else
-        {
-        if ( hsl.iL < 32640 )
-            {
-            v2 = ( hsl.iL  * ( ( 0xFF00 + hsl.iS ) >> KPrecision ) ) >> KPrecision;
-            }
-        else
-            {
-            v2 = ( hsl.iL + hsl.iS ) - ( ( hsl.iS >> KPrecision ) * ( hsl.iL >> KPrecision ) );
-            }
-        
-        v1 = 2 * hsl.iL - v2;
-      
-        rgb.iR = ( HueToRGB( v1, v2, hsl.iH + 0x54FF ) );
-        rgb.iG = ( HueToRGB( v1, v2, hsl.iH ) );
-        rgb.iB = ( HueToRGB( v1, v2, hsl.iH - 0x54FF ) );
-        }
-
-    rgb.iR /= 2105.82f;
-    rgb.iG /= 1036.20f;
-    rgb.iB /= 2105.82f;
-
-    // Apply contrast.. However, the original req stated that the
-    // contrast value should be +6 in a range of -100..100.
-    // With 5 and 6 bit values and fixed point math such a small value has
-    // no effect, so it has been left out. The code is here in case
-    // the contrast value is updated at some point.
-    /*
-    const TInt contrast   = ( 6 * 65536 / 200 ) + 65536;
-    
-    rgb.iR -= 15;
-    rgb.iG -= 31;
-    rgb.iB -= 15;
-    
-    rgb.iR *= contrast;
-    rgb.iG *= contrast;
-    rgb.iB *= contrast;
-    
-    rgb.iR /= 65536;
-    rgb.iG /= 65536;
-    rgb.iB /= 65536;
-
-    rgb.iR += 15;
-    rgb.iG += 31;
-    rgb.iB += 15;
-    */
-
-    // Apply brightness, -40 in a range of -100..100 for
-    // 0..255 rgb values, which corresponds to -5 for 5 bit
-    // and -10 for 6 bit rgb values.
-    rgb.iR -= 5;
-    rgb.iG -= 10;
-    rgb.iB -= 5;
-
-    if ( rgb.iR < 0 ) rgb.iR = 0;
-    if ( rgb.iG < 0 ) rgb.iG = 0;
-    if ( rgb.iB < 0 ) rgb.iB = 0;
-    
-    if ( rgb.iR > 31 ) rgb.iR = 31;
-    if ( rgb.iG > 63 ) rgb.iG = 63;
-    if ( rgb.iB > 31 ) rgb.iB = 31;
-
-    *aPixelData =
-        ( rgb.iB | ( rgb.iG << 5 ) | ( rgb.iR << 11 ) );
-    }
-    
-TInt TBitmapFx::HueToRGB( TInt v1, TInt v2, TInt aH )
-    {
-    while ( aH < 0 )
-        {
-        aH += 0xFF00;
-        }
-        
-    while ( aH >= 0xFF00 )
-        {
-        aH -= 0xFF00;
-        }
-        
-    if ( ( ( 6 * aH ) ) < 0xFF00 )
-        {
-        return v1 + ( ( v2 - v1 ) * ( ( 6 * aH ) >> KPrecision ) >> KPrecision );
-        }
-
-    if ( ( ( 2 * aH ) ) < 0xFF00 )
-        {
-        return v2;
-        }
-
-    if ( ( ( 3 * aH ) ) < 0x1FE00 )
-        {
-        return v1 + ( ( v2 - v1 ) * ( ( ( 0xA9FF - aH ) * 6 ) >> KPrecision ) >> KPrecision );
-        }
-    
-    return v1;
-    }
-
--- a/uifw/EikStd/coctlsrc/AknEdwinFormExtendedInterfaceProvider.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/EikStd/coctlsrc/AknEdwinFormExtendedInterfaceProvider.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -18,9 +18,7 @@
 
 // INCLUDE FILES
 
-#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
-#include <inlinetext_internal.h>
-#endif
+#include <inlinetext.h>
 #include <AknEdwinFormExtendedInterfaceProvider.h>
 
 class CAknCompositeInlineTextSource;
--- a/uifw/EikStd/coctlsrc/EIKBTGPC.CPP	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/EikStd/coctlsrc/EIKBTGPC.CPP	Fri Feb 19 23:04:46 2010 +0200
@@ -495,7 +495,7 @@
     CFbsBitmap* mask = AknIconUtils::CreateIconL(aFile, aMaskId);
     CleanupStack::PushL(mask);
     DoSetCommandL(aPosition, aCommandId, aText, bitmap, mask, aOp);
-    CleanupStack::Pop(2); // bitmap, mask
+    CleanupStack::PopAndDestroy(2); // bitmap, mask
     }
 
 EXPORT_C void CEikButtonGroupContainer::DoSetCommandL(
--- a/uifw/EikStd/coctlsrc/EIKEDWIN.CPP	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/EikStd/coctlsrc/EIKEDWIN.CPP	Fri Feb 19 23:04:46 2010 +0200
@@ -2229,7 +2229,7 @@
             }
 InChar: CheckNotReadOnlyL();
         TChar character(code);
-        if ( selectionLength && IsValidNumericCharL(character) )
+        if ( selectionLength )
             {
             TInt pos=DeleteHighlightL(formatHasChanged);
             TRAPD(err,iText->InsertL(pos,character));
@@ -2253,7 +2253,7 @@
             formatChange=formatHasChanged;
             break;
             }
-        if ( (!iTextLimit || TextLength()<iTextLimit) && IsValidNumericCharL(character) )
+        if ( !iTextLimit || TextLength()<iTextLimit )
             {
             iText->InsertL(CursorPos(),character);
             ClearUndo();
@@ -4565,6 +4565,7 @@
             iCcpuSupport->HandleSelectionChangeL();
             }
         }
+    iEdwinExtension->iThumbPos = KErrNotFound;
     if (IsReadyToDraw())
         {
         UpdateScrollBarsL();
@@ -8808,21 +8809,7 @@
     return iEdwinInternalFlags & ESkipBackgroundDrawer;
     }
 
-TBool CEikEdwin::IsValidNumericCharL( TChar aChar )
-    { 
-    TBool ret(ETrue);
-    CAknEdwinState* state = static_cast<CAknEdwinState*>( iEdwinFepSupport->State( KNullUid ) );    
-    if (state && state->CurrentInputMode() == EAknEditorNumericInputMode )
-    	{
-        HBufC* allowedChars = GetAllowedCharsLC();
-        if ( (*allowedChars).Length() > 0 && (*allowedChars).Locate( aChar ) == KErrNotFound )
-            {
-            ret = EFalse;
-            }
-        CleanupStack::PopAndDestroy(1);//allowedChars
-        }
-    return ret;
-    }
+
 
 // End of File
 
--- a/uifw/EikStd/coctlsrc/EIKKWIN.CPP	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/EikStd/coctlsrc/EIKKWIN.CPP	Fri Feb 19 23:04:46 2010 +0200
@@ -16,7 +16,7 @@
 */
 
 
-#include "EIKKWIN.H"
+#include "eikkwin.h"
 
 EXPORT_C CEikKeyWindow::CEikKeyWindow()
 	{
--- a/uifw/EikStd/coctlsrc/EIKLBX.CPP	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/EikStd/coctlsrc/EIKLBX.CPP	Fri Feb 19 23:04:46 2010 +0200
@@ -73,7 +73,7 @@
 #include <akncollection.h>
 #include <aknitemactionmenu.h>
 #include <aknlongtapdetector.h>
-#include <aknpriv.hrh>
+#include <AknPriv.hrh>
 #include "akntrace.h"
 
 // timeout for long keypress used in markable lists
@@ -1079,10 +1079,9 @@
     {
     if ( iSingleClickEnabled && iLongTapDetector && iItemActionMenu  )
         {
-        // Send event on down only if no marked items and item specific items
-        // were found
+        // Send event on down only if item specific items were found
         if ( aPointerEvent.iType != TPointerEvent::EButton1Down
-                || ( !MarkedItems() && iItemActionMenu->InitMenuL() ) )
+                || iItemActionMenu->InitMenuL() )
             {
             iLongTapDetector->PointerEventL ( aPointerEvent );
             }
@@ -1810,6 +1809,22 @@
         }
     }
 
+
+// -----------------------------------------------------------------------------
+// CEikListBox::ItemsInSingleLine
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CEikListBox::ItemsInSingleLine() const
+    {
+    if ( iListBoxExt )
+        {
+        return iListBoxExt->iItemsInSingleLine;
+        }
+    
+    return 1;
+    }
+
+    
 EXPORT_C void CEikListBox::UpdateViewColors()
     {
     _AKNTRACE_FUNC_ENTER;
--- a/uifw/EikStd/coctlsrc/EIKMENUB.CPP	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/EikStd/coctlsrc/EIKMENUB.CPP	Fri Feb 19 23:04:46 2010 +0200
@@ -58,7 +58,7 @@
 #include <touchfeedback.h>
 #include <aknitemactionmenu.h>
 #include "aknitemactionmenuregister.h"
-#include <aknPriv.hrh>
+#include <AknPriv.hrh>
 #include "akntrace.h"
 
 enum { EEikMenuBarTitleArrayGranularity=10 };
@@ -425,7 +425,6 @@
 inline void CEikMenuBar::SetMenuHasItems()
     {
     iMenuFlags|=EMenuHasItems;
-    iExt->StoreCollectionHighlightValue();
     }
 
 inline TBool CEikMenuBar::MenuHasPane() const
@@ -649,7 +648,7 @@
     SPosition menuPos;
     menuPos.iMenuId = iMenuTitleResourceId;
     menuPos.iMenuCursorPos = iCursor;
-    iPastMenuPosArray->AppendL(&menuPos, sizeof(menuPos));
+    iPastMenuPosArray->AppendL(menuPos);
     }
 
 void CEikMenuBar::SetCursorPositionFromArray()
@@ -959,6 +958,8 @@
         return;
         }
 
+    iExt->StoreCollectionHighlightValue(); 
+
     if (!(iMenuFlags&EBackgroundFaded))
         {
         iExt->FadeBehindPopup(ETrue);
--- a/uifw/EikStd/coctlsrc/EIKMENUP.CPP	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/EikStd/coctlsrc/EIKMENUP.CPP	Fri Feb 19 23:04:46 2010 +0200
@@ -46,7 +46,6 @@
 #include <AknsDrawUtils.h>
 #include <AknsFrameBackgroundControlContext.h>
 #include <AknBidiTextUtils.h>
-#include <AknMarqueeControl.h>
 #include <skinlayout.cdl.h>
 #include <aknlayoutscalable_avkon.cdl.h>
 #include <AknLayoutFont.h>
@@ -55,8 +54,6 @@
 #include <AknIconUtils.h>
 #include <aknappui.h>
 
-#include <AknsEffectAnim.h>
-#include <systemwarninglevels.hrh>
 #include <layoutmetadata.cdl.h>
 #include <AknStatuspaneUtils.h>
 #include <aknCharMap.h>
@@ -64,16 +61,9 @@
 #include <akntranseffect.h> //For transition effects
 #include <akntransitionutils.h> // SetAllParents method
 #include <featmgr.h>
-#include <hal.h>
 #include <avkondomainpskeys.h>
 #include <e32property.h>
 
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST
-#include <aknlistboxtfxinternal.h> // LISTBOX EFFECTS IMPLEMENTATION
-#include <aknlistloadertfx.h>
-#include <aknlistboxtfx.h>
-#endif // RD_UI_TRANSITION_EFFECTS_LIST
-
 #include <touchfeedback.h>
 #include <AknTasHook.h>
 #include <aknphysics.h>
@@ -115,40 +105,15 @@
  * Extension now contains menu/submenu highlight animation functionality.
  */
 NONSHARABLE_CLASS( CEikMenuPaneExtension ):
-    public CActive,
-    public MCoeForegroundObserver,
-    public MAknsEffectAnimObserver,
+    public CBase,
     public MCoeControlObserver,
     public MAknPhysicsObserver    
     {
 public:
-    enum TFlag
-        {
-        /**
-        * If set, animation creation is attempted. If not set, animation will
-        * never be created.
-        */
-        EFlagUseAnimation = 0
-        };
-        
-    enum TScreen
-        {
-        EQhdHeight = 360,
-        EQhdWidth = 640        
-        };        
-
     CEikMenuPaneExtension();
     ~CEikMenuPaneExtension();
 
     void ConstructL( CEikMenuPane* aControl );
-    void CreateAnimation();
-    void NoAnimIfError( TInt aError );
-    void UseNoAnimation();
-    void FocusGained();
-    void FocusLost();
-
-    void HandleLayoutSwitch();
-    void ChangeHighlightBackground();
     void MenuClosed();
 
     void ConstructMenuSctRowL( TDes& aSpecialChars, TInt aResourceId );
@@ -167,29 +132,7 @@
     void ChangePosition( TPointerEvent& aPointerEvent );
     void CalculateParentEvent( const TPointerEvent& aPointerEvent, 
                                TPointerEvent& aParentEvent );
-    TRect GetBackgroundRect( const TRect& aWindowRect ) const;                               
-    static void AdjustPopupLayoutData( TAknWindowLineLayout& aListScrollPaneLayout );
-                               
-    const TAknLayoutText GetMenuItemTextLayout(const TRect& aItemRect, TBool cascade);
-
-public: // Implementation of MCoeForegroundObserver
-    void HandleGainingForeground();
-    void HandleLosingForeground();
-
-public: // Implementation of MAknsEffectAnimObserver
-    void AnimFrameReady( TInt aError, TInt );
     void HandleControlEventL(CCoeControl* aControl,TCoeEvent aEventType);
-
-protected: // CActive overloads
-    void DoCancel();
-    void RunL();
-
-private: // New internal methods
-    void Play();
-    TBool DrawHighlightBackground( CFbsBitGc& aGc );
-    void PostDeleteAnimation();
-    void CreateAnimationL( const TSize& aHighlightSize );
-    void DoResizeL( const TSize& aHighlightSize, TBool aAboutToStart );
 public:
     void ImmediateFeedback( TTouchLogicalFeedback aType,
                             TTouchFeedbackType aFbType );
@@ -197,10 +140,6 @@
 public:
     void StartCascadeMenuAppearTransition();
 
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST
-    void CalcItemSize( MAknListBoxTfxInternal* transApi ) const;
-#endif
-
     /**
      * Prepares cascade menu for item specific commands.
      */
@@ -236,7 +175,7 @@
      * 
      * @return ETrue if highlight is enabled
      */
-    TBool  HighlightEnabled();
+    TBool HighlightEnabled();
 
     /**
      * Sets the default highlight to options menu
@@ -245,8 +184,6 @@
     void SetDefaultHighlight();
     
 public: // Data
-    TBool iHasIcon;
-    TBool iIsPenEnable;   
     CFbsBitmap* iCascadeBitmap;
     CFbsBitmap* iCascadeBitmapMask;
     CAknsFrameBackgroundControlContext* iBgContext;
@@ -257,14 +194,7 @@
     CFbsBitmap* iRadioButtonBitmapMask;   // mask for the above bitmap
     TBool       iHasRadioGroup;           // is ETrue if submenu contains radio button group.
     TInt        iSelectedRadioButtonItem; // index of the radio button item which is currently selected (one must be selected)
-    CCoeControl* iGrabbingCBAComponent;    // component control of CBA which is currently grabbing the pointer
     CEikMenuPane* iControl;
-    CAknsEffectAnim* iAnimation;
-    /**
-    * Stored flags are explained in enumeration TFlags.
-    */
-    TBitFlags32 iAnimFlags;
-
     CAknCharMap* iSct;      // Menu SCT row, created only when needed.
     TBool iSctHighlighted;  // No "normal" menu item can be highlighted if ETrue
 
@@ -277,26 +207,17 @@
     // needs to be mutable since we need to get information from Draw methods
     // (that are declared const)
     mutable TRect iCascadeDRect;
-    TBool iTransitionsOn;   // Transitions FtMgr flag on
     TBool iShowCascadeTransition;
     // For later deletion of cascade menu, this allows the transition system
     // to correctly handle the aborted transitions
     CEikMenuPane* iCascadeMenuObject;
     TBool iDraggedOutside;    
     TPointerEvent iLastPointerEvent;
-
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST
-    CWindowGc* iGc;
-#endif
     TInt iItemsThatFitInView;
     TRect iScrollBarRect;
     TRect iSctRect;
-    TInt iTotalNumberOfItemsInView; // this value includes partial items
-
-
     CIdle* iTaskSwapIdle;
     CRedirectionListener* iRedirectionListener;
-    TRect iSBRect;
     RWindow* iMenuPaneWindow; // Not own, used by SCT
     TBool iLaunchCascadeMenu; 
     TBool isUpdateScrollDirectly;
@@ -315,6 +236,7 @@
         ESingleClickEnabled,
         EHideItemSpecificCommands,
         EContextSensitive,
+        ESkipScrollbarUpdate,
         EHighlightEnabled
         };
 
@@ -322,6 +244,28 @@
      * Menu pane extension flags.
      */
     TBitFlags iFlags;
+    
+    /**
+     * Cached rectangle occupied by menu items (excluding scrollbar's area).
+     */
+    TRect iItemAreaRect;
+    
+    /**
+     * Cached rectangle occupied by menu items and scrollbar.
+     */
+    TRect iMenuAreaRect;
+    
+    /**
+     * Index of the item were highlight was previously drawn to.
+     * Can be KErrNotFound.
+     */
+    TInt iHighlightedItem;
+    
+    /**
+     * Scrollbar's desired visibility. This is calculated in conjunction with
+     * menu pane's size and used later on when calculating scrollbar's layout.
+     */
+    CEikScrollBarFrame::TScrollBarVisibility iScrollbarVisibility;
 
 private: // Data
     CPeriodic* iTimer; // timer to launch submenu, own
@@ -453,12 +397,6 @@
 inline void CEikMenuPane::CMenuScroller::SetTopItemIndex(TInt aIndex)
     { 
     iTopItemIndex=aIndex;
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST
-    if ( iMenuPane.iExtension )
-        {
-        iTopItemIndex = aIndex;
-        }
-#endif
     }
 
 inline CIdle* CEikMenuPane::CMenuScroller::Idle() const
@@ -474,16 +412,8 @@
     iLastFeedbackTopItemIndex = 0;
     iPressedDown = EFalse;
     iFlickActive = EFalse;
-    
-    TRect rect;
-    if ( !iControl->iOwner )
-        {
-        rect = iMenuPaneRect;    
-        }
-    else
-        {
-        rect = iControl->Rect();    
-        }    
+
+    TRect rect( iMenuPaneRect );
     
     TInt itemHeight = iControl->iItemHeight;
     TInt itemsInRect = rect.Height() / itemHeight;
@@ -537,19 +467,18 @@
 void CEikMenuPaneExtension::ViewPositionChanged( const TPoint& aNewPosition,
                                                  TBool aDrawNow,
                                                  TUint /*aFlags*/ )
-    {  
+    {
     _AKNTRACE_FUNC_ENTER;
-    if ( !iControl->iItemArray )
+    TInt delta = iViewPosition.iY - aNewPosition.iY;
+
+    if ( !iControl->iItemArray || delta == 0 )
         {
         return;
         }
-    
+
     iListTopIndex = aNewPosition.iY - iViewHeight / 2;  
-    
     iListBottomIndex = aNewPosition.iY + iViewHeight - iViewHeight / 2;
     
-    TInt delta = iViewPosition.iY - aNewPosition.iY;
-    
     DoOffset( delta );
 
     iViewPosition = aNewPosition; 
@@ -560,16 +489,21 @@
     
     if ( aDrawNow )
         {
-        TRAP_IGNORE( iControl->DoUpdateScrollBarL() );
-
-        if ( iControl->iOwner ) // Submenu
+        if ( iFlags.IsClear( ESkipScrollbarUpdate ) )
             {
-            iControl->DrawNow();
+            TRAP_IGNORE( iControl->DoUpdateScrollBarL() );
             }
-        else
+
+        // Redraw only item area if scrollbar is invisible, otherwise include 
+        // also scrollbar's area in order to avoid drawdeferred.
+        TRect drawRect( iItemAreaRect );
+        
+        if ( iScrollbarVisibility == CEikScrollBarFrame::EOn )
             {
-            iControl->DrawNow( TRect( iMenuPaneRect.Size() ) );
-            }        
+            drawRect = iMenuAreaRect;
+            }
+
+        iControl->DrawNow( drawRect );
         }
     _AKNTRACE_FUNC_EXIT;
     }
@@ -736,14 +670,6 @@
     {
     _AKNTRACE_FUNC_ENTER;    
     iFlickActive = EFalse; 
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST
-    MAknListBoxTfx* tfxApi = CAknListLoader::TfxApi( iGc );
-
-    if ( tfxApi )
-        {
-        tfxApi->EnableEffects( ETrue );
-        }
-#endif // RD_UI_TRANSITION_EFFECTS_LIST
     _AKNTRACE_FUNC_EXIT;
     }    
     
@@ -936,7 +862,6 @@
 // -----------------------------------------------------------------------------
 //
 CEikMenuPaneExtension::CEikMenuPaneExtension() :
-    CActive( EPriorityHigh ),
     // Initialise data members to zero
     iCascadeBitmap( NULL ),
     iCascadeBitmapMask( NULL ),
@@ -948,16 +873,10 @@
     iRadioButtonBitmapMask( NULL ),
     iHasRadioGroup( EFalse ),
     iSelectedRadioButtonItem( KNoSelectedRadioButtonItem ),
-    iGrabbingCBAComponent( NULL ),
     iControl( NULL ),
-    iAnimation( NULL ),
-    iAnimFlags ( 0 ),
     iSct( NULL ),
     iSctHighlighted( EFalse ),
     iSpecialCharPointed( EFalse )
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST
-    ,iGc ( NULL )
-#endif // RD_UI_TRANSITION_EFFECTS_LIST
     ,iVerticalOffset( 0 )
     ,iPhysics( NULL )
     ,iListTopIndex( 0 )
@@ -967,9 +886,9 @@
     ,iFeedback( MTouchFeedback::Instance() )
     ,iLastFeedbackTopItemIndex( 0 )
     {
-    iIsPenEnable = AknLayoutUtils::PenEnabled();
-    iItemsReadyForPenSelection = !iIsPenEnable;
+    iItemsReadyForPenSelection = !AknLayoutUtils::PenEnabled();
     iNextHighlightItem = KErrNotFound;
+    iHighlightedItem = KErrNotFound;
     }
 
 // -----------------------------------------------------------------------------
@@ -980,17 +899,6 @@
 CEikMenuPaneExtension::~CEikMenuPaneExtension()
     {
     _AKNTRACE_FUNC_ENTER;
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST
-    if ( CAknListLoader::TfxApiInternal( iGc ) )
-        {
-        delete iGc;
-        }
-#endif
-    Cancel(); // Cancel possibly pending request
-
-    // Stop receiving foreground events
-    CCoeEnv* env = CCoeEnv::Static();
-    env->RemoveForegroundObserver( *this );
 
     delete iCascadeBitmap;
     iCascadeBitmap = NULL;
@@ -1015,9 +923,6 @@
 
     iControl = NULL;
 
-    delete iAnimation;
-    iAnimation = NULL;
-
     delete iSct;
     iSct = NULL;
 
@@ -1053,8 +958,6 @@
     {
     ASSERT( aControl );
     iControl = aControl;
-    iAnimFlags.Set( EFlagUseAnimation ); // Animations are created by default
-    CActiveScheduler::Add( this );
     iDraggedOutside = EFalse;
     iLaunchCascadeMenu = EFalse;
     iButtonDownItem = KErrNotFound;
@@ -1064,11 +967,6 @@
         // Delays submenu opening during appear transitions
         iRedirectionListener = new ( ELeave ) CRedirectionListener( *this );
         }
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST
-        iGc = CAknListLoader::CreateTfxGc( *aControl,
-                                           iControl->iScroller->iTopItemIndex,
-                                           iTotalNumberOfItemsInView );
-#endif // RD_UI_TRANSITION_EFFECTS_LIST
     if ( static_cast<CAknAppUi*>(
             iControl->ControlEnv()->AppUi() )->IsSingleClickCompatible() )
         {
@@ -1084,55 +982,6 @@
         KAknsIIDQsnFrPopup, TRect( 0, 0, 1, 1 ), TRect( 0, 0, 1, 1 ), EFalse );
     }
 
-// -----------------------------------------------------------------------------
-// CEikMenuPaneExtension::CreateAnimation
-// -----------------------------------------------------------------------------
-//
-void CEikMenuPaneExtension::CreateAnimation()
-    {
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST
-    return;
-#else    
-    if( !iAnimation && iAnimFlags.IsSet( EFlagUseAnimation ) )
-        {    
-        TRect rect = iControl->HighlightRect();
-        TRAPD( err, CreateAnimationL( rect.Size() ) );
-        if( KErrNone != err )
-            {
-            // Animation has not been drawn -> no need for repaint
-            UseNoAnimation();
-            }
-        }
-#endif //RD_UI_TRANSITION_EFFECTS_LIST  
-    }
-
-// -----------------------------------------------------------------------------
-// CEikMenuPaneExtension::NoAnimIfError
-// -----------------------------------------------------------------------------
-//
-void CEikMenuPaneExtension::NoAnimIfError( TInt aError )
-    {
-    if( KErrNone != aError )
-        UseNoAnimation();
-    }
-
-// -----------------------------------------------------------------------------
-// CEikMenuPaneExtension::UseNoAnimation
-// Falls back to normal highlight rendering.
-// -----------------------------------------------------------------------------
-//
-void CEikMenuPaneExtension::UseNoAnimation()
-    {
-    delete iAnimation;
-    iAnimation = NULL;
-
-    // Do not attempt to create animations in the future
-    iAnimFlags.Clear( EFlagUseAnimation );
-
-    // Stop receiving foreground events
-    CCoeEnv* env = CCoeEnv::Static();
-    env->RemoveForegroundObserver( *this );
-    }
 
 // -----------------------------------------------------------------------------
 // CEikMenuPaneExtension::StartCascadeMenuTimerL
@@ -1157,6 +1006,7 @@
     _AKNTRACE_FUNC_EXIT;
     }
 
+
 // -----------------------------------------------------------------------------
 // CEikMenuPaneExtension::StopCascadeMenuTimer
 // Stops the timer for the sub menu launch
@@ -1260,6 +1110,7 @@
     _AKNTRACE_FUNC_EXIT;
     }
 
+
 // -----------------------------------------------------------------------------
 // CEikMenuPaneExtension::HighlightTimerCallBack
 // Callback function of the timer for pressed down highlight
@@ -1311,11 +1162,12 @@
     {
     if ( !iControl->iSBFrame )
         {
-        iControl->CreateScrollBarFrame();
-        }
-    TRect scrollBarRect = iControl->iSBFrame->VerticalScrollBar()->Rect();
-    TPoint scrollerTl = scrollBarRect.iTl; 
-    TPoint scrollerBr = scrollBarRect.iBr;
+        return;
+        }
+    
+    TRect scrollBarRect( iControl->iSBFrame->VerticalScrollBar()->Rect() );
+    TPoint scrollerTl( scrollBarRect.iTl ); 
+    TPoint scrollerBr( scrollBarRect.iBr );
     TRect gapRect;           
     // For layout that left to right
     if ( !AknLayoutUtils::LayoutMirrored() )
@@ -1363,158 +1215,14 @@
                            TPointerEvent& aParentEvent )
     {
     aParentEvent.iModifiers = aPointerEvent.iModifiers;
-    TPoint subPos = iControl->PositionRelativeToScreen();
-    TPoint ownerPos = iControl->iOwner->PositionRelativeToScreen();
+    TPoint subPos = iControl->Position();
+    TPoint ownerPos = iControl->iOwner->Position();
     aParentEvent.iPosition.SetXY (
         aPointerEvent.iPosition.iX + subPos.iX - ownerPos.iX,
         aPointerEvent.iPosition.iY + subPos.iY - ownerPos.iY);
     aParentEvent.iType = aPointerEvent.iType;    
     }
 
-// -----------------------------------------------------------------------------
-// CEikMenuPaneExtension::GetBackgroundRect
-// Get background rect for landscape mode of menu pane.
-// -----------------------------------------------------------------------------
-//    
-TRect CEikMenuPaneExtension::GetBackgroundRect( const TRect& aWindowRect ) const
-    {
-    return aWindowRect;
-    }
-        
-// -----------------------------------------------------------------------------
-// CEikMenuPaneExtension::AdjustPopupLayoutData
-// Adjust popup layout data for main menu pane in landscape mode
-// -----------------------------------------------------------------------------
-// 
-void CEikMenuPaneExtension::AdjustPopupLayoutData( TAknWindowLineLayout& aListScrollPaneLayout )
-    {
-    TRect screenRect;
-    AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EScreen, screenRect );
-    AknLayoutUtils::TAknCbaLocation cbaPosition = AknLayoutUtils::CbaLocation();
-
-    if ( screenRect.Width() == EQhdWidth && screenRect.Height() == EQhdHeight 
-        && cbaPosition == AknLayoutUtils::EAknCbaLocationBottom ) 
-        {
-        if ( !AknLayoutUtils::LayoutMirrored() )
-            {
-            aListScrollPaneLayout.ir -= 32;
-            }
-        else
-            {
-            aListScrollPaneLayout.il -= 32;
-            }
-        }
-    } 
-
-
-// -----------------------------------------------------------------------------
-// CEikMenuPaneExtension::GetMenuItemTextLayout
-// Get Layout of menu item text.
-// -----------------------------------------------------------------------------
-//
-const TAknLayoutText CEikMenuPaneExtension::GetMenuItemTextLayout(const TRect& aItemRect, TBool cascade)
-    {
-    TAknTextLineLayout menuTextLayout;
-    
-    if ( !iControl->iOwner )
-        {
-        menuTextLayout = AknLayoutScalable_Avkon::list_single_pane_t1_cp2( cascade ? 3 : 0 ).LayoutLine();
-        }
-    else
-        {
-        if ( iHasIcon )
-            {
-            menuTextLayout = TAknTextLineLayout( AknLayoutScalable_Avkon::list_single_popup_submenu_pane_t1( 1 ).LayoutLine() );
-            }
-        else
-            {
-            menuTextLayout = TAknTextLineLayout( AknLayoutScalable_Avkon::list_single_popup_submenu_pane_t1( 0 ).LayoutLine() );
-            }
-        }
-    
-    TAknLayoutText textRect;
-    textRect.LayoutText( aItemRect, menuTextLayout );
-    return textRect;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CEikMenuPaneExtension::FocusGained
-// The owning control has gained focus -> animation should be continued.
-// -----------------------------------------------------------------------------
-//
-void CEikMenuPaneExtension::FocusGained()
-    {
-    Play();
-    }
-
-// -----------------------------------------------------------------------------
-// CEikMenuPaneExtension::FocusLost
-// The owning control has lost focus -> no running animation (even if the
-// control is partially visible).
-// -----------------------------------------------------------------------------
-//
-void CEikMenuPaneExtension::FocusLost()
-    {
-    if( iAnimation )
-        {
-        NoAnimIfError( iAnimation->Pause() );
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CEikMenuPaneExtension::HandleLayoutSwitch
-// -----------------------------------------------------------------------------
-//
-void CEikMenuPaneExtension::HandleLayoutSwitch()
-    {
-    if( iAnimation ) // Animation exists -> try to resize
-        {
-        TRect rect( iControl->HighlightRect() );
-
-        // Resize animation
-        TBool aboutToStart = ETrue;
-        if( iAnimation->State() == EAknsAnimStateStopped )
-            aboutToStart = EFalse;
-
-        TRAPD( err, DoResizeL( rect.Size(), aboutToStart ) );
-        NoAnimIfError( err );
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CEikMenuPaneExtension::ChangeHighlightBackground
-// -----------------------------------------------------------------------------
-//
-void CEikMenuPaneExtension::ChangeHighlightBackground()
-    {
-    // Every time the current list item is changed we need to change the
-    // animation input layer (animated element is the highlight bacground that
-    // can differ between highlight positions).
-    if( iAnimation )
-        {
-        if( iAnimation->State() == EAknsAnimStateStopped  )
-            {
-            // Input layers don't exist when stopped or finished. We need to
-            // resize to create the input layers and to update the output
-            // layer.
-
-            TRAPD( err, DoResizeL( iAnimation->Size(), EFalse ) );
-            NoAnimIfError( err );
-            }
-        else // Either paused, running or finished
-            {
-            // Update the highlight background
-            if( iAnimation->InputRgbGc() )
-                DrawHighlightBackground( *iAnimation->InputRgbGc() );
-
-            // We need to update the output frame (otherwise the highlight
-            // would drawn with the old output before the next new animation
-            // frame).
-            NoAnimIfError( iAnimation->UpdateOutput() );
-            }
-        }
-    }
 
 // -----------------------------------------------------------------------------
 // CEikMenuPaneExtension::MenuClosed
@@ -1523,20 +1231,9 @@
 void CEikMenuPaneExtension::MenuClosed()
     {
     _AKNTRACE_FUNC_ENTER;
-    delete iAnimation;
-    iAnimation = NULL;
-
-    CCoeEnv* env = CCoeEnv::Static();
-    env->RemoveForegroundObserver( *this );
-
-    iAnimFlags.Set( EFlagUseAnimation );
-
     delete iSct;
     iSct = NULL;
     iSctHighlighted = EFalse;
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST  
-    iSctRect = TRect::EUninitialized;
-#endif
 
     if ( iCba )
         {
@@ -1554,192 +1251,6 @@
     _AKNTRACE_FUNC_EXIT;
     }
 
-// -----------------------------------------------------------------------------
-// CEikMenuPaneExtension::HandleGainingForeground
-// The application has gained foreground -> animation should be continued.
-// -----------------------------------------------------------------------------
-//
-void CEikMenuPaneExtension::HandleGainingForeground()
-    {
-    // It is safe to start animation in this method because animation is
-    // deleted when the menu is closed -> it is not possible that menu receives
-    // foreground event while it is not visible and the animation exists.
-
-    // We need to check if the menu has focus (to prevent running nonfocused
-    // animation because also the nonfocused menu (menu/submenu) receives
-    // foreground events)
-    Play();
-    }
-
-// -----------------------------------------------------------------------------
-// CEikMenuPaneExtension::HandleLosingForeground
-// The application lost foreground -> no running animation (even if the
-// application is partially visible).
-// -----------------------------------------------------------------------------
-//
-void CEikMenuPaneExtension::HandleLosingForeground()
-    {
-    if( iAnimation )
-        {
-        NoAnimIfError( iAnimation->Stop() );
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CEikMenuPaneExtension::AnimFrameReady
-// -----------------------------------------------------------------------------
-//
-void CEikMenuPaneExtension::AnimFrameReady( TInt aError, TInt )
-    {
-    if( KErrNone != aError )
-        {
-        // Animation has failed to run -> schedule the animation for
-        // deletion to fall back to normal rendering.
-        PostDeleteAnimation();
-        }
-    else if( iControl ) // Frame ok
-        {
-        if ( iControl->IsVisible() )
-            {
-            iControl->RepaintHighlight();
-            }
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CEikMenuPaneExtension::DoCancel
-// -----------------------------------------------------------------------------
-//
-void CEikMenuPaneExtension::DoCancel()
-    {
-    // Required method, but not needed
-    }
-
-
-// -----------------------------------------------------------------------------
-// CEikMenuPaneExtension::RunL
-// Postponed animation deletion is done here
-// -----------------------------------------------------------------------------
-//
-void CEikMenuPaneExtension::RunL()
-    {
-    UseNoAnimation();
-    }
-
-// -----------------------------------------------------------------------------
-// CEikMenuPaneExtension::Play
-// -----------------------------------------------------------------------------
-//
-void CEikMenuPaneExtension::Play()
-    {
-    if( !iAnimation || !iControl->IsFocused() )
-        {
-        return;
-        }
-
-    // No need to start running/finished animation
-    if( EAknsAnimStateRunning == iAnimation->State() ||
-        EAknsAnimStateFinished == iAnimation->State() )
-        {
-        return;
-        }
-
-    CAknAppUi* aui = static_cast<CAknAppUi*>(CEikonEnv::Static()->AppUi());
-    if( !aui->IsForeground() )
-        {
-        return;
-        }
-
-    if( EAknsAnimStatePaused == iAnimation->State() )
-        {
-        NoAnimIfError( iAnimation->Continue() );
-        }
-    else if( EAknsAnimStateStopped == iAnimation->State() )
-        {
-        if( iAnimation->NeedsInputLayer() )
-            {
-            TRAPD( err, DoResizeL( iAnimation->Size(), ETrue ) );
-            NoAnimIfError( err );
-
-            if( KErrNone != err )
-                return;
-            }
-
-        NoAnimIfError( iAnimation->Start() );
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CEikMenuPaneExtension::DrawHighlightBackground
-// Draws skinned highlight background to the provided graphics context.
-// -----------------------------------------------------------------------------
-//
-TBool CEikMenuPaneExtension::DrawHighlightBackground( CFbsBitGc& aGc )
-    {
-    // Draw the background under the current highlight. This simplified
-    // drawing, we only grab a piece from the list background bitmap.
-    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
-
-    return AknsDrawUtils::DrawBackground( skin, iBgContext, iControl, aGc, TPoint(0,0),
-                                          iControl->HighlightRect(),
-                                          KAknsDrawParamRGBOnly );
-    }
-
-// -----------------------------------------------------------------------------
-// CEikMenuPaneExtension::PostDeleteAnimation
-// Schedules the animation for deletion by activating the extension itself.
-// Deletion is postponed because in many error/failure occasions the caller has
-// been animation and direct deletion is possibly not safe (because function
-// stack would return through the deleted object).
-// -----------------------------------------------------------------------------
-//
-void CEikMenuPaneExtension::PostDeleteAnimation()
-    {
-    TRequestStatus* status = &iStatus;
-    User::RequestComplete( status, KErrNone );
-    SetActive();
-    }
-
-// -----------------------------------------------------------------------------
-// CEikMenuPaneExtension::CreateAnimationL
-// -----------------------------------------------------------------------------
-//
-void CEikMenuPaneExtension::CreateAnimationL( const TSize& aHighlightSize )
-    {
-    // Create animation
-    CCoeEnv* env = CCoeEnv::Static();
-    env->AddForegroundObserverL( *this );
-
-    delete iAnimation;
-    iAnimation = NULL;
-
-    iAnimation = CAknsEffectAnim::NewL( this );
-    TBool ok = iAnimation->ConstructFromSkinL( KAknsIIDQsnAnimList );
-
-    if( !ok ) // Animation for the ID was not found from the skin
-        {
-        User::Leave( KErrNotFound );
-        }
-
-    DoResizeL( aHighlightSize, ETrue );
-
-    Play();
-    }
-
-// -----------------------------------------------------------------------------
-// CEikMenuPaneExtension::DoResizeL
-// -----------------------------------------------------------------------------
-//
-void CEikMenuPaneExtension::DoResizeL(
-    const TSize& aHighlightSize, TBool aAboutToStart )
-    {
-    iAnimation->BeginConfigInputLayersL( aHighlightSize, aAboutToStart );
-
-    if( iAnimation->InputRgbGc() )
-        DrawHighlightBackground( *iAnimation->InputRgbGc() );
-
-    iAnimation->EndConfigInputLayersL();
-    }
 
 // -----------------------------------------------------------------------------
 // CEikMenuPaneExtension::ConstructMenuSctRowL
@@ -1762,11 +1273,8 @@
     if ( renew && iMenuPaneWindow && iControl )
         {
         iSct->SetContainerWindowL( *iControl );
-        if ( AknLayoutUtils::PenEnabled() )
-            {
-            iSct->SetGloballyCapturing( ETrue );
-            iSct->SetPointerCapture( ETrue );
-            }
+        iSct->SetGloballyCapturing( ETrue );
+        iSct->SetPointerCapture( ETrue );
         }
     _AKNTRACE_FUNC_EXIT;
     }
@@ -1791,11 +1299,8 @@
     if ( renew && iMenuPaneWindow && iControl)
         {
         iSct->SetContainerWindowL( *iControl );
-        if ( AknLayoutUtils::PenEnabled() )
-            {
-            iSct->SetGloballyCapturing( ETrue );
-            iSct->SetPointerCapture( ETrue );
-            }
+        iSct->SetGloballyCapturing( ETrue );
+        iSct->SetPointerCapture( ETrue );
         }
     }
 
@@ -1806,13 +1311,10 @@
 void CEikMenuPaneExtension::HandleControlEventL(CCoeControl* /*aControl*/,TCoeEvent aEventType)
     {
     _AKNTRACE_FUNC_ENTER;
-    if ( AknLayoutUtils::PenEnabled() )
-        {
-         if(aEventType == EEventStateChanged)
-            {
-            // Something has been selected from CharMap
-            iSpecialCharPointed = ETrue;
-            }
+    if ( aEventType == EEventStateChanged )
+        {
+        // Something has been selected from CharMap
+        iSpecialCharPointed = ETrue;
         }
     _AKNTRACE( "aEventType = %d", aEventType );
     _AKNTRACE_FUNC_EXIT;
@@ -2362,27 +1864,12 @@
     CheckCreateScrollerL();
     CheckCreateExtensionL();
 
-    iExtension->iTransitionsOn = FeatureManager::FeatureSupported( KFeatureIdUiTransitionEffects );
-
     CreateWindowL( iCoeEnv->RootWin() );
     EnableWindowTransparency();
     SetAllowStrayPointers();
     EnableDragEvents();
 
-    TAknWindowLineLayout menuLineLayout;
-    if ( iOwner ) // submenu
-        {
-        menuLineLayout = AknLayoutScalable_Avkon::list_single_popup_submenu_pane( 0 ).LayoutLine();
-        }
-    else
-        {
-        menuLineLayout = AknLayoutScalable_Avkon::list_single_pane_cp2( 0 ).LayoutLine();
-        }
-
-    TRect windowRect = Rect();
-    TAknLayoutRect menuLayoutRect;
-    menuLayoutRect.LayoutRect( windowRect, menuLineLayout );
-    iItemHeight = menuLayoutRect.Rect().Height();
+    iItemHeight = CalculateItemHeight();
 
     if ( iExtension->iSct )
         {
@@ -2390,15 +1877,12 @@
         iExtension->iMenuPaneWindow = window;
         iExtension->iSct->SetContainerWindowL( *this );
 
-        if ( AknLayoutUtils::PenEnabled() )
-            {
-            // This is effectively the same as CCoeControl::EnableDragEvents()
-            // which is protected.
-            window->PointerFilter( EPointerFilterDrag, 0 );
-            iExtension->iSct->SetGloballyCapturing( ETrue );
-            iExtension->iSct->SetPointerCapture( ETrue );
-            iExtension->iSct->SetObserver(iExtension);
-            }
+        // This is effectively the same as CCoeControl::EnableDragEvents()
+        // which is protected.
+        window->PointerFilter( EPointerFilterDrag, 0 );
+        iExtension->iSct->SetGloballyCapturing( ETrue );
+        iExtension->iSct->SetPointerCapture( ETrue );
+        iExtension->iSct->SetObserver(iExtension);
         }
 
     if ( iOwner ) // submenu
@@ -2416,7 +1900,6 @@
         User::Leave( KErrNoMemory );
             
     Window().SetOrdinalPosition( 0 );
-    
     Window().SetPointerGrab( ETrue );
     SetGloballyCapturing( ETrue );
 
@@ -2440,19 +1923,7 @@
         }
     CreateItemArrayL();
 
-    TAknWindowLineLayout menuLineLayout;
-    if ( iOwner ) // submenu
-        {
-        menuLineLayout = AKN_LAYOUT_WINDOW_list_single_popup_submenu_pane( 0, 0 );
-        }
-    else
-        {
-        menuLineLayout = AKN_LAYOUT_WINDOW_list_single_popup_menu_pane( 0 );
-        }
-    TRect windowRect = Rect();
-    TAknLayoutRect menuLayoutRect;
-    menuLayoutRect.LayoutRect( windowRect, menuLineLayout );
-    iItemHeight = menuLayoutRect.Rect().Height();
+    iItemHeight = CalculateItemHeight();
 
     CheckCreateScrollerL();
     CheckCreateExtensionL();
@@ -2789,16 +2260,13 @@
         iExtension->StartCascadeMenuAppearTransition();
         }
 
-    if( AknLayoutUtils::PenEnabled() )
-        {
-        TTouchLogicalFeedback fbLogicalType = ETouchFeedbackPopUp;
-        if ( CAknTransitionUtils::TransitionsEnabled( AknTransEffect::EComponentTransitionsOff ) )
-            {
-            fbLogicalType = ETouchFeedbackIncreasingPopUp;
-            }
-        iExtension->ImmediateFeedback( fbLogicalType,
+    TTouchLogicalFeedback fbLogicalType = ETouchFeedbackPopUp;
+    if ( CAknTransitionUtils::TransitionsEnabled( AknTransEffect::EComponentTransitionsOff ) )
+        {
+        fbLogicalType = ETouchFeedbackIncreasingPopUp;
+        }
+    iExtension->ImmediateFeedback( fbLogicalType,
                                        ETouchFeedbackVibra );
-        }
     _AKNTRACE_FUNC_EXIT;
     }
 
@@ -2824,11 +2292,6 @@
         numItemsInPane++;
         }
 
-    TInt maxNumItemsInMenu = AknLayoutScalable_Avkon::
-                    list_single_pane_cp2_ParamLimits().LastRow() + 1;
-    TInt maxNumItemsInSubMenu = AknLayoutScalable_Avkon::
-                    list_single_popup_submenu_pane_ParamLimits().LastRow() + 1;
-
     TInt maxItemsInView = NumberOfItemsThatFitInView();
 
     if (iExtension && iExtension->iSct)
@@ -2866,12 +2329,6 @@
 
     iExtension->iPressedDown = EFalse;
     iExtension->SetOffset( 0 );
-    iExtension->iHasIcon = MenuHasIcon();
-
-    if ( iExtension->iTransitionsOn )
-        {
-        CAknTransitionUtils::SetAllParents( this );
-        }
 
     const TSize screenSize( iEikonEnv->EikAppUi()->ApplicationRect().Size() );
 
@@ -2892,11 +2349,7 @@
         SetDefaultHighlight();
         }    
 
-    TRect rect( CalculateSizeAndPosition() );
-    TPoint newPos( rect.iTl );
-    TSize menuSize( rect.Size() );
-
-    SetExtent( newPos, menuSize );
+    SetRect( CalculateSizeAndPosition() );
 
     // We need to set the background context when calling create for the
     // first time. Otherwise iExtension->iBgContext would have tiny
@@ -2904,15 +2357,6 @@
     // white.
     UpdateBackgroundContext( Rect() );
 
-    // The extent has been set. This is the first safe point in code to
-    // construct animations (because before this highlight related layout code
-    // will produce invalid results
-    if( iExtension )
-        {
-        // Creates animation only if it does not exist
-        iExtension->CreateAnimation();        
-        }
-        
     // Initialize physics engine
     TRAP_IGNORE ( iExtension->InitPhysicsL() );
         
@@ -2967,8 +2411,6 @@
     TAknsItemID frameIID;
     TAknsItemID frameCenterIID;
     
-    TRect backgroundRect( iExtension->GetBackgroundRect( aWindowRect ) );     
-        
     if( iOwner ) //for sub menu
         {
         topLeft.LayoutRect( aWindowRect, SkinLayout::Submenu_skin_placing_Line_2() );
@@ -2978,8 +2420,8 @@
         }
     else
         {
-        topLeft.LayoutRect( backgroundRect, SkinLayout::Popup_windows_skin_placing__frame_general__Line_2() );
-        bottomRight.LayoutRect( backgroundRect, SkinLayout::Popup_windows_skin_placing__frame_general__Line_5() );
+        topLeft.LayoutRect( aWindowRect, SkinLayout::Popup_windows_skin_placing__frame_general__Line_2() );
+        bottomRight.LayoutRect( aWindowRect, SkinLayout::Popup_windows_skin_placing__frame_general__Line_5() );
         frameIID = KAknsIIDQsnFrPopup;
         frameCenterIID = KAknsIIDQsnFrPopupCenterMenu;
         }
@@ -3040,16 +2482,7 @@
     _AKNTRACE( "previousSelectedItem =  %d", previousSelectedItem );
 
     ActivateGc();
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST
-    MAknListBoxTfxInternal *transApi = CAknListLoader::TfxApiInternal( iExtension->iGc );
-    if ( transApi )
-        {
-        iExtension->iGc->Activate( *DrawableWindow() );
-        }
-    CWindowGc& gc = transApi ? *iExtension->iGc : SystemGc();
-#else
     CWindowGc& gc =  SystemGc();
-#endif // RD_UI_TRANSITION_EFFECTS_LIST
     PrepareGcForDrawingItems( gc );
 
     // Scrollers top item index must be updated first because setting selected
@@ -3086,7 +2519,10 @@
     if ( previousTopItem == topItem  && aNewSelectedItem >= 0 )
         {
         // then only previuosly and currently selected items should be redrawn
-        DrawItem( gc, previousSelectedItem, ERemoveHighlight );
+        if ( iExtension->iHighlightedItem != KErrNotFound )
+            {
+            DrawItem( gc, previousSelectedItem, ERemoveHighlight );
+            }
 
         if ( !iExtension->iSctHighlighted )
             {
@@ -3095,12 +2531,14 @@
         }
     else
         {
-        TBool skipHighlight = EFalse;
+        /*TBool skipHighlight = EFalse;
+
         if (iExtension && iExtension->iSct && aNewSelectedItem == 0 &&
             previousSelectedItem > 1)
             {
             skipHighlight = ETrue;
             }
+
         for( TInt i = topItem; i<bottomItem; i++ )
             {
             if( i == aNewSelectedItem && !skipHighlight)
@@ -3111,22 +2549,15 @@
                 {
                 DrawItem( gc, i, ERemoveHighlight );
                 }
-            }
-        }
-
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST
-    if ( transApi )
-        {
-        iExtension->iGc->Deactivate();
-        }
-#endif // RD_UI_TRANSITION_EFFECTS_LIST
+            }*/
+
+        // update the whole menu area
+        iExtension->ViewPositionChanged( iExtension->iViewPosition );   
+//        UpdateScrollBarThumbs();
+        }
+
     DeactivateGc();
-
-    UpdateScrollBarThumbs();
     
-    // Updating view position here prevents some flickering
-    iExtension->ViewPositionChanged( iExtension->iViewPosition );   
-
     _AKNTRACE_FUNC_EXIT;
     }
 
@@ -3136,177 +2567,15 @@
 //
 void CEikMenuPane::PrepareGcForDrawingItems(CGraphicsContext& aGc) const
     {
-
     // BIDI
     /*
      * get the fonts from the LAF!
      * Do we need to get them here? - nope - moved to DrawItem()
      */    
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST
-    MAknListBoxTfxInternal* transApi = CAknListLoader::TfxApiInternal( iExtension->iGc );
-    if ( transApi )
-        {
-        transApi->StartDrawing( MAknListBoxTfxInternal::EListNotSpecified );
-        }
-#endif
-
-    aGc.SetPenColor(iEikonEnv->ControlColor( EColorMenuPaneText, *this) );
-#if defined(MENU_TEXTURED_BACKGROUND)
-    iEikonEnv->SetTexturedBrush( aGc );
-#else
+    aGc.SetPenColor( iEikonEnv->ControlColor( EColorMenuPaneText, *this) );
     aGc.SetBrushStyle( CGraphicsContext::ESolidBrush );
     aGc.SetBrushColor( iEikonEnv->ControlColor( EColorMenuPaneBackground,*this ) );
-#endif
-
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST
-    if ( transApi )
-        {
-        transApi->StopDrawing();
-        }
-#endif
-    }
-
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST
-/**
- * Iterate through the visible items in a menu and calculate minimum 
- * item margins that dont need drawing.
- */
-void CEikMenuPaneExtension::CalcItemSize( MAknListBoxTfxInternal* transApi ) const
-    {
-    if ( transApi && iControl->iItemArray && iControl->iItemArray->Count() )
-        {
-        TRect marginRect(TRect::EUninitialized);
-        const TInt index = 0;
-
-        // Specifies whether the text should be moved to give some space for icon.
-        TInt hasIcon = iControl->MenuHasIcon() ? 1 : 0;
-
-        TAknWindowLineLayout menuPane( AKN_LAYOUT_WINDOW_list_menu_pane( 0 , 0 ) );
-        TAknWindowLineLayout singleMenuPane(
-                        AKN_LAYOUT_WINDOW_list_single_popup_menu_pane( index ) );
-        TAknTextLineLayout menuTextLayout(
-                        AKN_LAYOUT_TEXT_List_pane_texts__menu_single__Line_1(0) );
-        
-        TAknLayoutRect menuPaneRect;
-        TAknLayoutRect singleMenuPaneRect;
-        TAknLayoutText textRect;
-        
-        TBool hasCascade = EFalse;
-        TBool hasNonCascade = EFalse;
-        
-        // number of items in the whole menu
-        for(TInt i = 0; i < iControl->iItemArray->Count(); i++)
-            {
-            CEikMenuPaneItem* item = (*iControl->iItemArray)[i];
-            
-            // true if a cascade symbol must be drawn (main menu only)
-            TBool cascade = item->iData.iCascadeId != 0;
-            
-            if ( cascade )
-                {
-                if ( hasCascade )
-                    {
-                    if ( hasNonCascade )
-                        {
-                        break;
-                        }
-                    continue;
-                    }
-                hasCascade = ETrue;
-                }
-            else
-                {
-                if ( hasNonCascade )
-                    {
-                    if ( hasCascade )
-                        {
-                        break;
-                        }
-                    continue;
-                    }
-                hasNonCascade = ETrue;
-                }
-    
-            if ( !iControl->iOwner )
-                {
-                TAknWindowLineLayout listScrollPaneLayout( 
-                    AknLayoutScalable_Avkon::listscroll_menu_pane(0).LayoutLine() );
-                AdjustPopupLayoutData( listScrollPaneLayout );                 
-                TAknLayoutRect listScrollPaneRect;
-                listScrollPaneRect.LayoutRect( iControl->Rect(), listScrollPaneLayout );
-    
-                menuPane = AknLayoutScalable_Avkon::list_menu_pane( 0 ).LayoutLine();
-                menuPaneRect.LayoutRect( listScrollPaneRect.Rect(), menuPane );
-    
-                singleMenuPane = AknLayoutScalable_Avkon::list_single_pane_cp2( index ).LayoutLine();
-                singleMenuPaneRect.LayoutRect( menuPaneRect.Rect(), singleMenuPane );
-    
-                menuTextLayout = AknLayoutScalable_Avkon::list_single_pane_t1_cp2( cascade ? 3 : 0 ).LayoutLine();
-                }
-            else // Submenu
-                {
-                TBool hasDoubleSpanScrollBar = EFalse;
-                if ( iControl->iOwner && iControl->iSBFrame && 
-                        iControl->iSBFrame->VScrollBarVisibility() )
-                    {
-                    hasDoubleSpanScrollBar = ETrue;
-                    }
-                TAknWindowLineLayout listScrollPaneLayout( AknLayoutScalable_Avkon::listscroll_popup_sub_pane().LayoutLine() );
-                TAknLayoutRect listScrollPaneRect;
-                listScrollPaneRect.LayoutRect( iControl->Rect(), listScrollPaneLayout );
-    
-                menuPane = AknLayoutScalable_Avkon::list_submenu_pane( !hasDoubleSpanScrollBar ).LayoutLine();
-                menuPaneRect.LayoutRect( listScrollPaneRect.Rect(), menuPane );
-    
-                singleMenuPane = AknLayoutScalable_Avkon::list_single_popup_submenu_pane( index ).LayoutLine();
-                singleMenuPaneRect.LayoutRect( menuPaneRect.Rect(), singleMenuPane );
-    
-                menuTextLayout = TAknTextLineLayout( AknLayoutScalable_Avkon::list_single_popup_submenu_pane_t1( hasIcon ).LayoutLine() );
-                }
-            
-            textRect.LayoutText( singleMenuPaneRect.Rect(), menuTextLayout );
-            if (marginRect == TRect::EUninitialized) 
-                {
-                marginRect = textRect.TextRect();
-                }
-            else
-                {
-                marginRect.BoundingRect(textRect.TextRect());
-                }
-            
-            if ( cascade )
-                {
-                TAknWindowLineLayout elementCascade( AknLayoutScalable_Avkon::list_single_pane_cp2_g3().LayoutLine());
-                TAknLayoutRect cascadeRect;
-                cascadeRect.LayoutRect( singleMenuPaneRect.Rect(), elementCascade );
-                marginRect.BoundingRect(cascadeRect.Rect());
-                }
-            else
-                {
-                TAknLayoutRect activeApplicationsIconRect;
-                activeApplicationsIconRect.LayoutRect( singleMenuPaneRect.Rect(),
-                    AknLayoutScalable_Avkon::list_single_pane_g1_cp2(0).LayoutLine() );
-                marginRect.BoundingRect(activeApplicationsIconRect.Rect());
-                }
-            }
-
-        if ( hasIcon )
-            {
-            TAknLayoutRect iconLayoutRect;
-            iconLayoutRect.LayoutRect( singleMenuPaneRect.Rect(),
-                AknLayoutScalable_Avkon::list_single_popup_submenu_pane_g1().LayoutLine() );
-            marginRect.BoundingRect(iconLayoutRect.Rect());
-            }
-
-        //send margins to tfx
-        TPoint tl ( marginRect.iTl - menuPaneRect.Rect().iTl );
-        transApi->SetPosition( MAknListBoxTfxInternal::EListTLMargin, tl );
-        
-        TPoint br( singleMenuPaneRect.Rect().Size().AsPoint() - marginRect.iBr + menuPaneRect.Rect().iTl );
-        transApi->SetPosition( MAknListBoxTfxInternal::EListBRMargin, br );
-        }
-    }
-#endif
+    }
 
 
 // ---------------------------------------------------------------------------
@@ -3316,28 +2585,9 @@
 void CEikMenuPane::DrawItem( TInt aItem, THighlightType aHighlight ) const
     {
     ActivateGc();
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST
-    MAknListBoxTfxInternal* transApi = 
-        CAknListLoader::TfxApiInternal( iExtension->iGc );
-
-    if ( transApi )
-        {
-        iExtension->iGc->Activate( *DrawableWindow() );
-        }
-    
-    CWindowGc& gc = transApi ? *iExtension->iGc : SystemGc();
-#else
     CWindowGc& gc = SystemGc();
-#endif // RD_UI_TRANSITION_EFFECTS_LIST
     PrepareGcForDrawingItems( gc );
     DrawItem( gc, aItem, aHighlight );
-    
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST
-    if ( transApi )
-        {
-        iExtension->iGc->Deactivate();
-        }
-#endif // RD_UI_TRANSITION_EFFECTS_LIST
     DeactivateGc();
     }
 
@@ -3363,14 +2613,6 @@
         return;
         }
     
-    // seem to have window owning control in correct place
-    TRect windowRect = Rect();
-
-    if ( !iOwner )
-        {
-        windowRect.iBr.iY -= ( iExtension->iCba->Rect().Height() );    
-        }
-    
     CEikMenuPaneItem* item = (*iItemArray)[aItem];
     // Max visible number of items in menu / submenu
     TInt maxNumberOfItems = NumberOfItemsThatFitInView();
@@ -3404,12 +2646,15 @@
         index += itemLeftInBottom;
         }
 
-    TBool drawPartialItem(EFalse);
+    TBool drawSeparator = !( ( index + topIndex ) == numItemsInArray - 1 );
+    TBool drawPartialItem = EFalse;
+    
     if ( index == maxNumberOfItems )
         {
         // We have partial items to draw because of panning so there
         // is one more item to draw than normally.
         drawPartialItem = ETrue;
+        
         // There is no layout data for the extra item, so we used the one
         // above it. 
         --index;
@@ -3421,58 +2666,32 @@
         return;  // only interested in drawing visible items
         }
 
-    // Collect all of the information from the Layout DLL. Initialise these
-    // variables with DUMMY data. Then replace it with menu/submenu data.
-    TAknWindowLineLayout menuPane( AKN_LAYOUT_WINDOW_list_menu_pane( 0 , 0 ) );
-    TAknWindowLineLayout singleMenuPane(
-                    AKN_LAYOUT_WINDOW_list_single_popup_menu_pane( index ) );
-    TAknTextLineLayout menuTextLayout(
-                    AKN_LAYOUT_TEXT_List_pane_texts__menu_single__Line_1(0) );
-    TAknLayoutRect menuPaneRect;
+    TAknTextLineLayout menuTextLayout;
     TAknLayoutRect singleMenuPaneRect;
 
-    if ( !iOwner )
-        {
-        TAknWindowLineLayout listScrollPaneLayout( 
-            AknLayoutScalable_Avkon::listscroll_menu_pane(0).LayoutLine() );
-        if ( iExtension )
-            {
-            iExtension->AdjustPopupLayoutData( listScrollPaneLayout );
-            }        
-        TAknLayoutRect listScrollPaneRect;
-        listScrollPaneRect.LayoutRect( windowRect, listScrollPaneLayout );
-
-        menuPane = AknLayoutScalable_Avkon::list_menu_pane( 0 ).LayoutLine();
-        menuPaneRect.LayoutRect( listScrollPaneRect.Rect(), menuPane );
-
-        singleMenuPane = AknLayoutScalable_Avkon::list_single_pane_cp2( index ).LayoutLine();
-        singleMenuPaneRect.LayoutRect( menuPaneRect.Rect(), singleMenuPane );
-
-        menuTextLayout = AknLayoutScalable_Avkon::list_single_pane_t1_cp2( cascade ? 3 : 0 ).LayoutLine();
-        }
-    else // Submenu
-        {
-        TBool hasDoubleSpanScrollBar = EFalse;
-        if ( iSBFrame && iSBFrame->VScrollBarVisibility() )
-            {
-            hasDoubleSpanScrollBar = ETrue;
-            }
-
-        TAknWindowLineLayout listScrollPaneLayout( AknLayoutScalable_Avkon::listscroll_popup_sub_pane().LayoutLine() );
-        TAknLayoutRect listScrollPaneRect;
-        listScrollPaneRect.LayoutRect( windowRect, listScrollPaneLayout );
-
-        menuPane = AknLayoutScalable_Avkon::list_submenu_pane( !hasDoubleSpanScrollBar ).LayoutLine();
-        menuPaneRect.LayoutRect( listScrollPaneRect.Rect(), menuPane );
-
-        singleMenuPane = AknLayoutScalable_Avkon::list_single_popup_submenu_pane( index ).LayoutLine();
-        singleMenuPaneRect.LayoutRect( menuPaneRect.Rect(), singleMenuPane );
-
-        menuTextLayout = TAknTextLineLayout( AknLayoutScalable_Avkon::list_single_popup_submenu_pane_t1( 0 ).LayoutLine() );
-
+    if ( !iOwner ) // main menu
+        {
+        singleMenuPaneRect.LayoutRect( iExtension->iItemAreaRect,
+            AknLayoutScalable_Avkon::list_single_pane_cp2( index ).LayoutLine() );
+        menuTextLayout = 
+            AknLayoutScalable_Avkon::list_single_pane_t1_cp2( cascade ? 1 : 0 ).LayoutLine();
+        }
+    else // submenu
+        {
+        singleMenuPaneRect.LayoutRect( iExtension->iItemAreaRect,
+            AknLayoutScalable_Avkon::list_single_popup_submenu_pane( index ).LayoutLine() );
+        
         if ( hasIcon )
             {
-            menuTextLayout = TAknTextLineLayout( AknLayoutScalable_Avkon::list_single_popup_submenu_pane_t1( 1 ).LayoutLine() );
+            menuTextLayout = 
+                TAknTextLineLayout( 
+                AknLayoutScalable_Avkon::list_single_popup_submenu_pane_t1( 1 ).LayoutLine() );
+            }
+        else
+            {
+            menuTextLayout = 
+                TAknTextLineLayout( 
+                AknLayoutScalable_Avkon::list_single_popup_submenu_pane_t1( 0 ).LayoutLine() );
             }
         }
 
@@ -3492,18 +2711,12 @@
 
     RWindow& window = Window();
     
-    if ( &window && window.GetDrawRect() == TRect::EUninitialized )
-        {
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST
-        MAknListBoxTfxInternal* transApi =
-            CAknListLoader::TfxApiInternal( &aGc );
-        drawingInitiated = transApi && !transApi->EffectsDisabled();
-#else
+   if ( &window && window.GetDrawRect() == TRect::EUninitialized )
+        {
         drawingInitiated = EFalse;
-#endif
-        }
-
-    if ( !drawingInitiated )
+        }
+
+    if ( !drawingInitiated && !iExtension->iFullRedraw )
         {
         window.Invalidate( itemRect );
         window.BeginRedraw( itemRect );
@@ -3516,136 +2729,70 @@
         cc = iExtension->iBgContext;
         }
     TBool background( ETrue );
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST
-    MAknListBoxTfxInternal *transApi = CAknListLoader::TfxApiInternal( &aGc );
-    if ( transApi && !transApi->EffectsDisabled() )
-        {
-        iExtension->iGc->Activate( *DrawableWindow() );
-        }
-#endif
-
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST            
-    if ( !transApi || transApi->EffectsDisabled() )
-        {
-#endif                
+
+    aGc.SetBrushStyle( CGraphicsContext::ESolidBrush );
+    aGc.SetBrushColor( singleMenuPaneRect.Color() );
+
+    // there can be partial items, so clip drawing on menu pane's item area
+    aGc.SetClippingRect( iExtension->iItemAreaRect );
+
+    if (!iExtension->iFullRedraw)
+        {
+        background = AknsDrawUtils::Background(
+            skin, cc, this, aGc, itemRect,
+            KAknsDrawParamNoClearUnderImage );
+        }
+
+    if ( !background )
+        {
         aGc.SetBrushStyle( CGraphicsContext::ESolidBrush );
-        aGc.SetBrushColor( singleMenuPaneRect.Color() );
-
-        if(!iExtension->iFullRedraw)
-            {
-            background = AknsDrawUtils::Background(
-                skin, cc, this, aGc, itemRect,
-                KAknsDrawParamNoClearUnderImage );
-            }
-
-        if( !background )
-            {
-            aGc.SetBrushStyle( CGraphicsContext::ESolidBrush );
-            aGc.SetPenStyle( CGraphicsContext::ENullPen );
-            aGc.SetPenColor( singleMenuPaneRect.Color() );
-            aGc.SetBrushColor( singleMenuPaneRect.Color() );         
-            aGc.DrawRect( itemRect );
-            }
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST            
-        }
-#endif
+        aGc.SetPenStyle( CGraphicsContext::ENullPen );
+        aGc.SetPenColor( singleMenuPaneRect.Color() );
+        aGc.SetBrushColor( singleMenuPaneRect.Color() );         
+        aGc.DrawRect( itemRect );
+        }
 
     if ( !iExtension->HighlightEnabled() )
         {
         aHighlight = ENoHighlight;
         }
-
+    
     switch ( aHighlight )
         {
         case EDrawHighlight :
             {
             if ( !iExtension->iSctHighlighted )
                 {
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST                
-                if ( transApi )
-                    {
-                    // This will remove the old bitmap
-                    transApi->Invalidate( MAknListBoxTfxInternal::EListHighlight ); 
-                                       
-                    transApi->BeginRedraw( MAknListBoxTfxInternal::EListHighlight,
-                                           itemRect );                                           
-                    transApi->StartDrawing( MAknListBoxTfxInternal::EListHighlight );
-                    }
-#endif
-
-                // Partial items, so prevent drawing over the edge of menu pane
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST
-                if ( !transApi || ( transApi && transApi->EffectsDisabled() ) )
-                    {
-                    aGc.SetClippingRect(menuPaneRect.Rect());
-                    }
-#else
-                aGc.SetClippingRect(menuPaneRect.Rect());
-#endif // RD_UI_TRANSITION_EFFECTS_LIST
-
-                TBool drawOk = EFalse;
-                if( iExtension->iAnimation ) // Draw animated highlight
-                    {
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST
-                    if ( transApi && transApi->VerifyKml() == KErrNone )
-                        {
-                        Extension()->UseNoAnimation();
-                        }
-                    else
-                        {
-#endif
-                    TAknLayoutRect highlightTopLeft;
-                    TAknLayoutRect highlightBottomRight;
-          
-                    highlightTopLeft.LayoutRect( itemRect,
-                        SkinLayout::List_highlight_skin_placing__popup_windows__Line_2() );
-                    highlightBottomRight.LayoutRect( itemRect,
-                        SkinLayout::List_highlight_skin_placing__popup_windows__Line_5() );
-                       
-                    TRect outerRect( highlightTopLeft.Rect().iTl, highlightBottomRight.Rect().iBr );
-
-                    drawOk = iExtension->iAnimation->Render( aGc, outerRect );
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST
-                        }
-#endif
-                    }
-                
-                if( !drawOk )
-                    {
-                    // Animated highlight was not available, use normal skinned
-                    // rendering.
-
-                    // Because of transparency, background must be drawn here as well
-                    // (as frame may be see-through)
-                    aGc.SetBrushStyle( CGraphicsContext::ESolidBrush );
-                    aGc.SetBrushColor( singleMenuPaneRect.Color() );
-
-                    AknsDrawUtils::Background(
-                        skin, cc, this, aGc, itemRect,
-                        KAknsDrawParamNoClearUnderImage );
-
-                    TAknLayoutRect highlightTopLeft;
-                    TAknLayoutRect highlightBottomRight;
-
-                    highlightTopLeft.LayoutRect(itemRect,
-                        SkinLayout::List_highlight_skin_placing__popup_windows__Line_2() );
-                    highlightBottomRight.LayoutRect(itemRect,
-                        SkinLayout::List_highlight_skin_placing__popup_windows__Line_5() );
-                    TRect outerRect( highlightTopLeft.Rect().iTl, highlightBottomRight.Rect().iBr );
-                    TRect innerRect( highlightTopLeft.Rect().iBr, highlightBottomRight.Rect().iTl );
-
-                    drawOk = AknsDrawUtils::DrawFrame( skin, 
-                                                       aGc, 
-                                                       outerRect, 
-                                                       innerRect, 
-                                                       KAknsIIDQsnFrList, 
-                                                       KAknsIIDDefault );
-                    
-                    }
-
-                // Both animated highlight and normal highlight drawing have
-                // failed.
-                if( !drawOk )
+                iExtension->iHighlightedItem = aItem;
+
+                // Because of transparency, background must be drawn here as well
+                // (as frame may be see-through)
+                aGc.SetBrushStyle( CGraphicsContext::ESolidBrush );
+                aGc.SetBrushColor( singleMenuPaneRect.Color() );
+
+                AknsDrawUtils::Background(
+                    skin, cc, this, aGc, itemRect,
+                    KAknsDrawParamNoClearUnderImage );
+
+                TAknLayoutRect highlightTopLeft;
+                TAknLayoutRect highlightBottomRight;
+
+                highlightTopLeft.LayoutRect(itemRect,
+                    SkinLayout::List_highlight_skin_placing__popup_windows__Line_2() );
+                highlightBottomRight.LayoutRect(itemRect,
+                    SkinLayout::List_highlight_skin_placing__popup_windows__Line_5() );
+                TRect outerRect( highlightTopLeft.Rect().iTl, highlightBottomRight.Rect().iBr );
+                TRect innerRect( highlightTopLeft.Rect().iBr, highlightBottomRight.Rect().iTl );
+
+                TBool drawOk = AknsDrawUtils::DrawFrame( skin,
+                        aGc, 
+                        outerRect, 
+                        innerRect, 
+                        KAknsIIDQsnFrList, 
+                        KAknsIIDDefault );
+
+                // skinned highlight drawing has failed
+                if ( !drawOk )
                     {
                     TAknLayoutRect shadowRect;
                     TAknLayoutRect highlightRect;
@@ -3657,41 +2804,18 @@
                     shadowRect.DrawRect( aGc );
                     highlightRect.DrawRect( aGc );
                     }
-
-                aGc.CancelClippingRect();
-
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST
-                if ( transApi )
-                    {
-                    transApi->StopDrawing();
-                    transApi->EndRedraw( MAknListBoxTfxInternal::EListHighlight );
-                    }
-#endif
                 }
             break;
             }
         case ERemoveHighlight:
         case ENoHighlight:
+            if ( iExtension->iHighlightedItem == aItem )
+                {
+                iExtension->iHighlightedItem = KErrNotFound;
+                }
         default:
             break;
         }
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST
-    if ( transApi )
-        {
-        transApi->BeginRedraw( MAknListBoxTfxInternal::EListItem, itemRect, aItem );
-        transApi->StartDrawing( MAknListBoxTfxInternal::EListItem );
-        }
-#endif // RD_UI_TRANSITION_EFFECTS_LIST
-
-    // Partial items, so prevent drawing over the edge of menu pane
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST
-    if ( !transApi || ( transApi && transApi->EffectsDisabled() ) )
-        {
-        aGc.SetClippingRect(menuPaneRect.Rect());
-        }
-#else
-    aGc.SetClippingRect(menuPaneRect.Rect());
-#endif // RD_UI_TRANSITION_EFFECTS_LIST
 
     // Cascade
     if ( cascade )
@@ -3786,8 +2910,10 @@
         }
 
     // Text
-    TAknLayoutText textRect( iExtension->GetMenuItemTextLayout( itemRect, cascade ) );
+    TAknLayoutText textRect;
+    textRect.LayoutText( itemRect, menuTextLayout );
     TRgb textColor = textRect.Color();
+
     if ( aHighlight == EDrawHighlight ) // highlighted text
         {
         AknsUtils::GetCachedColor( skin, textColor, KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG10 );
@@ -3819,7 +2945,6 @@
        }
     aGc.SetBrushStyle( CGraphicsContext::ENullBrush );
     aGc.SetPenColor( textColor );
-    aGc.UseFont( textRect.Font() );
 
     const CFont* font = textRect.Font();
 
@@ -3846,33 +2971,26 @@
         iExtension->iCascadeDRect.SetRect( cascRect.iTl, cascRect.iBr );        
         }
 
-    if(iExtension->iIsPenEnable)
-        {
-        TAknLayoutRect highlightRect;
-        highlightRect.LayoutRect( itemRect,
-            AKN_LAYOUT_WINDOW_Highlight_graphics__various__Line_2( itemRect ) );
-
-        // store the calculated y-position to the menu item,
-        // so that it can be used in HandlePointerEventL()
-        item->iPos = highlightRect.Rect().iTl.iY;
-        aGc.DiscardFont();
-        }
-
-    if ( !drawingInitiated )
+    TAknLayoutRect highlightRect;
+    highlightRect.LayoutRect( itemRect,
+        AKN_LAYOUT_WINDOW_Highlight_graphics__various__Line_2( itemRect ) );
+
+    // store the calculated y-position to the menu item,
+    // so that it can be used in HandlePointerEventL()
+    item->iPos = highlightRect.Rect().iTl.iY;
+    
+    // don't draw separator line for the last item
+    if ( drawSeparator )
+        {
+        AknListUtils::DrawSeparator( aGc, itemRect, textColor );
+        }
+    
+    if ( !drawingInitiated && !iExtension->iFullRedraw )
         {
         Window().EndRedraw();
         }
 
     aGc.CancelClippingRect();
-
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST
-    if ( transApi && !transApi->EffectsDisabled() )
-        {
-        transApi->StopDrawing();
-        transApi->EndRedraw( MAknListBoxTfxInternal::EListItem, aItem );
-        iExtension->iGc->Deactivate();
-        }
-#endif // RD_UI_TRANSITION_EFFECTS_LIST
     }
 
 
@@ -3880,36 +2998,8 @@
 // CEikMenuPane::Draw
 // -----------------------------------------------------------------------------
 //
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST
 EXPORT_C void CEikMenuPane::Draw( const TRect& aRect ) const
     {
-    CWindowGc& gc = ( iExtension && iExtension->iGc ) ?
-                    *iExtension->iGc : SystemGc();
-    MAknListBoxTfxInternal *transApi = CAknListLoader::TfxApiInternal( &gc );
-
-    if ( transApi )
-        {
-        iExtension->iGc->Activate( *DrawableWindow() );
-        
-        if ( !transApi->EffectsDisabled() )
-            {
-            if ( iExtension->iScrollBarRect.iTl.iX <= aRect.iTl.iX &&
-                 iExtension->iScrollBarRect.iBr.iX >= aRect.iBr.iX )
-                {
-                transApi->BeginRedraw( MAknListBoxTfxInternal::EListUpdateRect, aRect );
-                iExtension->iGc->Deactivate();
-                return;
-                }
-        
-            iExtension->CalcItemSize( transApi );
-            }
-        }
-#else
-EXPORT_C void CEikMenuPane::Draw(const TRect& /*aRect*/) const
-    {
-#endif // RD_UI_TRANSITION_EFFECTS_LIST
-
-    TRect windowRect( Rect() );
     MAknsSkinInstance* skin = AknsUtils::SkinInstance();
     MAknsControlContext* cc = NULL;
 
@@ -3918,37 +3008,11 @@
         cc = iExtension->iBgContext;
         }
 
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST
-    if ( transApi )
-        {
-        transApi->SetListType( MAknListBoxTfxInternal::EListBoxTypeMenuPane );
-        transApi->BeginRedraw( MAknListBoxTfxInternal::EListView, windowRect );
-        }
-#else
     CWindowGc& gc = SystemGc();
-#endif // RD_UI_TRANSITION_EFFECTS_LIST
     PrepareGcForDrawingItems( gc );
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST
-    if ( transApi )
-        {
-        transApi->StartDrawing( MAknListBoxTfxInternal::EListView );
-        }
-#endif
-
-    if ( !IsCascadeMenuPane() )
-        {
-        CFbsBitmap* cbaExtension = AknsUtils::GetCachedBitmap( skin, KAknsIIDQsnBgSlicePopup );
-        if ( cbaExtension )
-            {
-            TAknLayoutRect sliceRect;
-            sliceRect.LayoutRect( windowRect, SkinLayout::Popup_windows_skin_placing__background_slice__Line_2() );
-            AknIconUtils::SetSize( cbaExtension, sliceRect.Rect().Size() );
-            gc.BitBlt( TPoint( windowRect.iTl.iX, windowRect.iBr.iY-cbaExtension->SizeInPixels().iHeight ), cbaExtension );
-            windowRect.iBr.iY -=2; // two used as margin when rect layouts were done
-            }
-        }
 
     TInt count=0;
+
     if( iItemArray )
         {
         count=iItemArray->Count();
@@ -3957,97 +3021,37 @@
     // Give the topmost menu item's rect to SCT if needed.
     if ( iExtension->iSct )
         {
-        TAknLayoutRect listScrollPaneRect;
-        TAknLayoutRect menuPaneRect;
-        TAknLayoutRect singleMenuPaneRect;
-
-        TAknWindowLineLayout listScrollPaneLayout( 
-            AknLayoutScalable_Avkon::listscroll_menu_pane(0).LayoutLine() );
-        if ( iExtension )
-            {
-            iExtension->AdjustPopupLayoutData( listScrollPaneLayout );
-            }
-        listScrollPaneRect.LayoutRect( windowRect, listScrollPaneLayout );
-        menuPaneRect.LayoutRect( listScrollPaneRect.Rect(),
-             AknLayoutScalable_Avkon::list_menu_pane( 0 ).LayoutLine() );
-        singleMenuPaneRect.LayoutRect( menuPaneRect.Rect(),
-             AknLayoutScalable_Avkon::list_single_pane_cp2( 0 ).LayoutLine() );
-        // Give the rect of the first menu item to SCT.
-        iExtension->iSct->SetMenuSctRect( singleMenuPaneRect.Rect() );
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST      
-        if( transApi )
-            {
-            iExtension->iSctRect = singleMenuPaneRect.Rect();
-            TAknLayoutRect cellLayRect;
-            cellLayRect.LayoutRect( iExtension->iSctRect,
-                AknLayoutScalable_Avkon::cell_graphic_popup_pane( 0, 0, 0 ) );
-            iExtension->iSctRect.iTl.iX -= 1;
-            iExtension->iSctRect.iTl.iY -= 1;
-            iExtension->iSctRect.iBr.iX += 3;
-            transApi->ResetNonDrawingRects();
-            transApi->AddNonDrawingRect( iExtension->iScrollBarRect );
-            transApi->AddNonDrawingRect( iExtension->iSctRect );
-            }
-#endif // RD_UI_TRANSITION_EFFECTS_LIST
-        }
-
-    if ( iExtension->iSct )
-        {
+        iExtension->iSct->SetMenuSctRect( ItemRect( 0 ) );
+
         TRegionFix<4> region;
-        region.AddRect( Rect() );
+        region.AddRect( aRect );
         region.SubRect( iExtension->iSct->Rect() );
         gc.SetClippingRegion( region );
         }
         
-    TRect backgroundRect( iOwner ? windowRect : iExtension->GetBackgroundRect( windowRect ) );
-        
     // The added flag removes the white bg for transparency
     TBool frameDrawn = AknsDrawUtils::Background( 
-        skin, cc, this, gc, backgroundRect, KAknsDrawParamNoClearUnderImage );        
-
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST
-    if ( transApi )
-        {
-        transApi->StopDrawing();
-        }
-#endif // RD_UI_TRANSITION_EFFECTS_LIST
-
-    iExtension->iFullRedraw = ETrue;   
-
-    for ( TInt ii=0;ii<count;++ii )
-        {
-        if(!iExtension->iSctHighlighted && ii == iSelectedItem  )
-            DrawItem( gc, ii, EDrawHighlight);
-        else
-            DrawItem( gc, ii, ENoHighlight);
-        }    
-  
-    iExtension->iFullRedraw = EFalse;   
+        skin, cc, this, gc, aRect, KAknsDrawParamNoClearUnderImage );        
+
+    if ( aRect.Intersects( iExtension->iItemAreaRect ) )
+        {
+        iExtension->iFullRedraw = ETrue;   
+    
+        for ( TInt ii=0;ii<count;++ii )
+            {
+            if(!iExtension->iSctHighlighted && ii == iSelectedItem  )
+                DrawItem( gc, ii, EDrawHighlight);
+            else
+                DrawItem( gc, ii, ENoHighlight);
+            }    
+      
+        iExtension->iFullRedraw = EFalse;   
+        }
 
     if ( iExtension->iSct )
         {
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST
-        if ( transApi )
-            {
-            transApi->StartDrawing( MAknListBoxTfxInternal::EListNotSpecified );
-            }
-#endif
         gc.CancelClippingRegion();
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST
-        if ( transApi )
-            {
-            transApi->StopDrawing();
-            }
-#endif
-        }
-        
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST
-    if ( transApi )
-        {
-        transApi->EndViewRedraw( aRect );
-        iExtension->iGc->Deactivate();
-        }
-#endif // RD_UI_TRANSITION_EFFECTS_LIST
+        }
     }
 
 
@@ -4121,7 +3125,6 @@
         CEikMenuPane* menu = iOwner ? iOwner : this;
         MCoeControlObserver* observer = menu->Observer();
 
-
         if ( commandId != EAknCmdTaskSwapper )
             {
             _AKNTRACE( "commandId = %d",  commandId );
@@ -4159,26 +3162,6 @@
     {
     _AKNTRACE_FUNC_ENTER;
     _AKNTRACE( "aDrawNow =  %d", aDrawNow );
-    if( iExtension )
-        {
-        if ( IsFocused() )
-            {
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST        
-            // Focus must be handled here, otherwise it will come to late
-            MAknListBoxTfxInternal *transApi = CAknListLoader::TfxApiInternal( iExtension->iGc );
-    
-            if ( transApi )
-                {
-                transApi->HandleFocusChange( ETrue );
-                }
-#endif // RD_UI_TRANSITION_EFFECTS_LIST
-            iExtension->FocusGained();
-            }
-        else // Not focused
-            {
-            iExtension->FocusLost();
-            }
-        }
 
     if ( !iItemArray || iItemArray->Count() == 0 )
         {
@@ -4370,74 +3353,52 @@
     TInt itemAfterLastItem = loopScrolling ? 0 : max;
     TInt itemAfterFirstItem = loopScrolling ? max : 0;
 
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST
-    CWindowGc& gc = iExtension->iGc ? *iExtension->iGc : SystemGc();
-    MAknListBoxTfxInternal* transApi = CAknListLoader::TfxApiInternal( &gc );
-#endif //RD_UI_TRANSITION_EFFECTS_LIST
-
-    if(iExtension->iIsPenEnable)
-        {
-        _AKNTRACE( "[%s]", "iExtension->iIsPenEnable = TRUE" );
-        // Scroll highlighted item so that it becomes visible,
-        // if it is not visible before (scrolling with scroll bar
-        // can cause highlighted item to go out of screen)
-        TInt topItem = iScroller->TopItemIndex();
-        TInt bottomItem = topItem + NumberOfItemsThatFitInView();
-              
-        if ( iExtension->Offset() < 0 ) 
-            {
-            // Extra bottom item when panning
-            bottomItem++;
-            }
-        
-        if( bottomItem > NumberOfItemsInPane() )
-            {
-            bottomItem = NumberOfItemsInPane();
-            }
-        _AKNTRACE( "topItem = %d,bottomItem = %d", topItem,bottomItem );
-
-        if ( aType != EEventKeyDown && iSelectedItem != ENothingSelected &&
-            !(iExtension->iSctHighlighted && topItem == 0) &&
-            (iSelectedItem < topItem || iSelectedItem > bottomItem - 1) )
+    // Scroll highlighted item so that it becomes visible,
+    // if it is not visible before (scrolling with scroll bar
+    // can cause highlighted item to go out of screen)
+    TInt topItem = iScroller->TopItemIndex();
+    TInt bottomItem = topItem + NumberOfItemsThatFitInView();
+          
+    if ( iExtension->Offset() < 0 ) 
+        {
+        // Extra bottom item when panning
+        bottomItem++;
+        }
+    
+    if( bottomItem > NumberOfItemsInPane() )
+        {
+        bottomItem = NumberOfItemsInPane();
+        }
+    _AKNTRACE( "topItem = %d,bottomItem = %d", topItem,bottomItem );
+
+    if ( aType != EEventKeyDown && iSelectedItem != ENothingSelected &&
+        !(iExtension->iSctHighlighted && topItem == 0) &&
+        (iSelectedItem < topItem || iSelectedItem > bottomItem - 1) )
+        {
+        _AKNTRACE( "[%s]", "ScrollToMakeItemVisible(iSelectedItem);" );
+        ScrollToMakeItemVisible(iSelectedItem);
+
+        ActivateGc();
+        CWindowGc& gc = SystemGc();
+        PrepareGcForDrawingItems( gc );
+
+        // draw all items that are needed.
+        for( TInt i = 0; i < count; i++ )
             {
-            _AKNTRACE( "[%s]", "ScrollToMakeItemVisible(iSelectedItem);" );
-            ScrollToMakeItemVisible(iSelectedItem);
-
-            ActivateGc();
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST
-            if ( transApi )
+            if( i == iSelectedItem && !iExtension->iSctHighlighted)
                 {
-                iExtension->iGc->Activate( *DrawableWindow() );
+                DrawItem( gc, i, EDrawHighlight );
                 }
-#else
-            CWindowGc& gc = SystemGc();
-#endif // RD_UI_TRANSITION_EFFECTS_LIST
-            PrepareGcForDrawingItems( gc );
-
-            // draw all items that are needed.
-            for( TInt i = 0; i < count; i++ )
+            else
                 {
-                if( i == iSelectedItem && !iExtension->iSctHighlighted)
-                    {
-                    DrawItem( gc, i, EDrawHighlight );
-                    }
-                else
-                    {
-                    DrawItem( gc, i, ERemoveHighlight );
-                    }
+                DrawItem( gc, i, ERemoveHighlight );
                 }
-
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST
-            if ( transApi )
-                {
-                iExtension->iGc->Deactivate();
-                }
-#endif // RD_UI_TRANSITION_EFFECTS_LIST
-            DeactivateGc();
-            _AKNTRACE( "[%s]", "OfferKeyEventL return 9" );
-            _AKNTRACE_FUNC_EXIT;
-            return EKeyWasConsumed;
             }
+
+        DeactivateGc();
+        _AKNTRACE( "[%s]", "OfferKeyEventL return 9" );
+        _AKNTRACE_FUNC_EXIT;
+        return EKeyWasConsumed;
         }
 
     if ( iSelectedItem != ENothingSelected || iExtension->iSctHighlighted )
@@ -4454,13 +3415,6 @@
 // loop scrolling always used in options menus
             case EKeyDownArrow:
             	_AKNTRACE( "[%s]", "OfferKeyEventL(EKeyDownArrow)" );
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST
-                if ( transApi )
-                    {
-                    transApi->SetMoveType(
-                            MAknListBoxTfxInternal::EListMoveDown );
-                    }
-#endif //RD_UI_TRANSITION_EFFECTS_LIST
                 if ( iExtension->iSctHighlighted && iExtension->iSct )
                     {
                     iExtension->iSctHighlighted = EFalse;
@@ -4486,13 +3440,6 @@
                 break;
             case EKeyUpArrow:
             	_AKNTRACE( "[%s]", "OfferKeyEventL(EKeyUpArrow)" );
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST
-                if ( transApi )
-                    {
-                    transApi->SetMoveType(
-                            MAknListBoxTfxInternal::EListMoveUp );
-                    }
-#endif //RD_UI_TRANSITION_EFFECTS_LIST
                 if ( iExtension->iSct &&
                     iSelectedItem == 0 && !iExtension->iSctHighlighted )
                     {
@@ -4695,100 +3642,72 @@
         
     TInt count( NumberOfItemsInPane() );
         
-    if ( iExtension->iIsPenEnable )
-        {
-        // Scroll highlighted item so that it becomes visible
-        // if it is not visible before (scrolling with scroll bar
-        // can cause highlighted item to go out of screen).
-        TInt topItem( iScroller->TopItemIndex() );
-        TInt bottomItem( topItem + NumberOfItemsThatFitInView() );
-        if ( bottomItem > count )
-            {
-            bottomItem = count;
-            }
-   
-        if ( iExtension->Offset() < 0 &&
-             ( iSelectedItem == topItem || iSelectedItem == bottomItem ) )
-            {
-            // Restoring offset with "simulated" ok key event.         
-            iExtension->RestoreOffset( EKeyOK ); 
-            }    
-        else if ( iSelectedItem < topItem ||
-                  iSelectedItem > bottomItem - 1 )
+    // Scroll highlighted item so that it becomes visible
+    // if it is not visible before (scrolling with scroll bar
+    // can cause highlighted item to go out of screen).
+    TInt topItem( iScroller->TopItemIndex() );
+    TInt bottomItem( topItem + NumberOfItemsThatFitInView() );
+    if ( bottomItem > count )
+        {
+        bottomItem = count;
+        }
+
+    if ( iExtension->Offset() < 0 &&
+         ( iSelectedItem == topItem || iSelectedItem == bottomItem ) )
+        {
+        // Restoring offset with "simulated" ok key event.         
+        iExtension->RestoreOffset( EKeyOK ); 
+        }    
+    else if ( iSelectedItem < topItem ||
+              iSelectedItem > bottomItem - 1 )
+        {
+        if ( count > iSelectedItem )
             {
-            if ( count > iSelectedItem )
+            if ( iExtension->iSctHighlighted && iExtension->iSct )
                 {
-                if ( iExtension->iSctHighlighted && iExtension->iSct )
+                TKeyEvent key;
+                key.iCode = EKeyOK;
+                key.iModifiers = 0;
+
+                TKeyResponse keyResponse( EKeyWasNotConsumed );
+                TEventCode type( EEventNull );
+                keyResponse = iExtension->iSct->OfferKeyEventL( key,
+                                                                type );
+                if ( keyResponse == EKeyWasConsumed )
                     {
-                    TKeyEvent key;
-                    key.iCode = EKeyOK;
-                    key.iModifiers = 0;
-
-                    TKeyResponse keyResponse( EKeyWasNotConsumed );
-                    TEventCode type( EEventNull );
-                    keyResponse = iExtension->iSct->OfferKeyEventL( key,
-                                                                    type );
-                    if ( keyResponse == EKeyWasConsumed )
-                        {
-                        ReportSelectionMadeL();
-                        }
-                    _AKNTRACE( "[%s]" "ActivateCurrentItemL return 2" );
-                    _AKNTRACE_FUNC_EXIT;
-                    return;
+                    ReportSelectionMadeL();
                     }
+                _AKNTRACE( "[%s]" "ActivateCurrentItemL return 2" );
+                _AKNTRACE_FUNC_EXIT;
+                return;
                 }
-
-            iExtension->isUpdateScrollDirectly = ETrue;
-            ScrollToMakeItemVisible( iSelectedItem );
-            iExtension->isUpdateScrollDirectly = EFalse;
-
-            ActivateGc();
-
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST
-
-            MAknListBoxTfxInternal *transApi =
-                CAknListLoader::TfxApiInternal( iExtension->iGc );
-            if ( transApi )
+            }
+
+        iExtension->isUpdateScrollDirectly = ETrue;
+        ScrollToMakeItemVisible( iSelectedItem );
+        iExtension->isUpdateScrollDirectly = EFalse;
+
+        ActivateGc();
+        CWindowGc& gc = SystemGc();
+        PrepareGcForDrawingItems( gc );
+
+        // Draw all items that are needed.
+        for ( TInt i = 0; i < count; i++ )
+            {
+            if ( i == iSelectedItem && !iExtension->iSctHighlighted )
                 {
-                iExtension->iGc->Activate( *DrawableWindow() );
+                DrawItem( gc, i, EDrawHighlight );
                 }
-            CWindowGc& gc = transApi ? *iExtension->iGc : SystemGc();
-
-#else
-
-            CWindowGc& gc = SystemGc();
-
-#endif // RD_UI_TRANSITION_EFFECTS_LIST
-
-            PrepareGcForDrawingItems( gc );
-
-            // Draw all items that are needed.
-            for ( TInt i = 0; i < count; i++ )
+            else
                 {
-                if ( i == iSelectedItem && !iExtension->iSctHighlighted )
-                    {
-                    DrawItem( gc, i, EDrawHighlight );
-                    }
-                else
-                    {
-                    DrawItem( gc, i, ERemoveHighlight );
-                    }
+                DrawItem( gc, i, ERemoveHighlight );
                 }
-
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST
-
-            if ( transApi )
-                {
-                iExtension->iGc->Deactivate();
-                }
-
-#endif // RD_UI_TRANSITION_EFFECTS_LIST
-
-            DeactivateGc();
-            _AKNTRACE( "[%s]" "ActivateCurrentItemL return 3" );
-            _AKNTRACE_FUNC_EXIT;
-            return;
             }
+
+        DeactivateGc();
+        _AKNTRACE( "[%s]" "ActivateCurrentItemL return 3" );
+        _AKNTRACE_FUNC_EXIT;
+        return;
         }
 
     if ( iCascadeMenuPane )
@@ -4909,11 +3828,6 @@
 //
 EXPORT_C void CEikMenuPane::HandlePointerEventL( const TPointerEvent& aPointerEvent )
     {
-    if( !AknLayoutUtils::PenEnabled() )
-        {
-        return;
-        }
-
     _AKNTRACE_FUNC_ENTER;
 
     if ( iOwner && !IsVisible() )
@@ -4949,16 +3863,13 @@
         {
         if ( aPointerEvent.iType == TPointerEvent::EButton1Down )
             {
-            if( AknLayoutUtils::PenEnabled() )
+            if ( CAknTransitionUtils::TransitionsEnabled( AknTransEffect::EComponentTransitionsOff ) )
                 {
-                if ( CAknTransitionUtils::TransitionsEnabled( AknTransEffect::EComponentTransitionsOff ) )
-                    {
-                    iExtension->ImmediateFeedback( ETouchFeedbackDecreasingPopUp );
-                    }
-                else
-                    {
-                    iExtension->ImmediateFeedback( ETouchFeedbackPopUp );
-                    }
+                iExtension->ImmediateFeedback( ETouchFeedbackDecreasingPopUp );
+                }
+            else
+                {
+                iExtension->ImmediateFeedback( ETouchFeedbackPopUp );
                 }
             iExtension->iShowCascadeTransition = ETrue;
             CloseCascadeMenu();  
@@ -5048,21 +3959,7 @@
     // Get the option item's rect in Menu SCT
     if ( iExtension->iSct )
         {
-        TAknLayoutRect menuPaneRect;
-        TAknWindowLineLayout menuPane;
-        
-        TAknWindowLineLayout listScrollPaneLayout( 
-            AknLayoutScalable_Avkon::listscroll_menu_pane(0).LayoutLine() );
-        if ( iExtension )
-            {
-            iExtension->AdjustPopupLayoutData( listScrollPaneLayout );
-            }
-        TAknLayoutRect listScrollPaneRect;
-        listScrollPaneRect.LayoutRect( Rect(), listScrollPaneLayout );
-        
-        menuPane = AknLayoutScalable_Avkon::list_menu_pane( 0 ).LayoutLine();
-        menuPaneRect.LayoutRect( listScrollPaneRect.Rect(), menuPane );
-        menuSctRect = menuPaneRect.Rect();
+        menuSctRect = iExtension->iItemAreaRect;
         }
     TRect cascadeMenuRect(0,0,0,0);
 
@@ -5089,8 +3986,8 @@
     // if submenu, then move it's rect coordinates to relative to parent.
     if ( iCascadeMenuPane  )
         {
-        TPoint subPos = iCascadeMenuPane->PositionRelativeToScreen();
-        cascadeMenuRect = TRect(subPos-PositionRelativeToScreen(), iCascadeMenuPane->Size());
+        TPoint subPos = iCascadeMenuPane->Position();
+        cascadeMenuRect = TRect(subPos-Position(), iCascadeMenuPane->Size());
         }
 
     // Pointerevent in case we need to pass event from submenu to parent
@@ -5103,12 +4000,6 @@
         iExtension->ResetPressedHighlight();
         }
 
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST
-    MAknListBoxTfxInternal *transApi = CAknListLoader::TfxApiInternal(
-                                                            iExtension->iGc );
-    TBool effects = transApi && !transApi->EffectsDisabled();
-#endif
-
     switch (aPointerEvent.iType )
         {
         case TPointerEvent::EButton1Up:
@@ -5308,16 +4199,13 @@
                     // if submenu, and clicked outside of it
                     if ( !cascadeMenuRect.Contains( aPointerEvent.iPosition ) )
                         {
-                        if( AknLayoutUtils::PenEnabled() )
-                            {                            
-                            if ( CAknTransitionUtils::TransitionsEnabled( AknTransEffect::EComponentTransitionsOff ) )
-                                {
-                                iExtension->ImmediateFeedback( ETouchFeedbackDecreasingPopUp );
-                                }
-                            else
-                                {
-                                iExtension->ImmediateFeedback( ETouchFeedbackPopUp );
-                                }
+                        if ( CAknTransitionUtils::TransitionsEnabled( AknTransEffect::EComponentTransitionsOff ) )
+                            {
+                            iExtension->ImmediateFeedback( ETouchFeedbackDecreasingPopUp );
+                            }
+                        else
+                            {
+                            iExtension->ImmediateFeedback( ETouchFeedbackPopUp );
                             }
                         //Just close sub menu
                         iExtension->iShowCascadeTransition = ETrue;
@@ -5356,12 +4244,6 @@
                                     iExtension->iSct->HighlightSctRow( iExtension->iSctHighlighted );
                                     }
 
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST
-                                if ( effects )
-                                    {
-                                    transApi->SetMoveType( MAknListBoxTfxInternal::EListTap );
-                                    }
-#endif
                                 iExtension->iPressedDown = ETrue;
 
                                 // Start timer for pressed highlight
@@ -5382,12 +4264,7 @@
                                     {
                                     iExtension->iButtonDownItem = KErrNotFound;
                                     }
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST
-                                if ( effects )
-                                    {
-                                    transApi->Draw( Rect() );
-                                    }
-#endif
+
                                 // if new item has submenu, show it
                                 if ( item->iData.iCascadeId )
                                     {
@@ -5415,37 +4292,32 @@
                     }
                 else
                     {
-                    if ( iExtension->iIsPenEnable ) 
+                    // For finger usability, extend to the right.
+                    TRect innerToRightRect;
+                    if ( AknLayoutUtils::LayoutMirrored() )
+                        {
+                        innerToRightRect = TRect( Rect().iTl, innerRect.iBr );
+                        }
+                    else
                         {
-                        // For finger usability, extend to the right.
-                        TRect innerToRightRect;
-                        if ( AknLayoutUtils::LayoutMirrored() )
+                        innerToRightRect = TRect( innerRect.iTl, Rect().iBr );
+                        }
+                    // Keep opened
+                    if ( innerToRightRect.Contains( aPointerEvent.iPosition ) ) 
+                        {
+                        break;
+                        }
+
+                    // clicked outside, then close menu case by case
+                    if ( iCascadeMenuPane )
+                        {
+                        if ( CAknTransitionUtils::TransitionsEnabled( AknTransEffect::EComponentTransitionsOff ) )
                             {
-                            innerToRightRect = TRect( Rect().iTl, innerRect.iBr );
+                            iExtension->ImmediateFeedback( ETouchFeedbackDecreasingPopUp );
                             }
                         else
                             {
-                            innerToRightRect = TRect( innerRect.iTl, Rect().iBr );
-                            }
-                        // Keep opened
-                        if ( innerToRightRect.Contains( aPointerEvent.iPosition ) ) 
-                            {
-                            break;
-                            }
-                        }
-                    // clicked outside, then close menu case by case
-                    if ( iCascadeMenuPane )
-                        {
-                        if( AknLayoutUtils::PenEnabled() )
-                            {                            
-                            if ( CAknTransitionUtils::TransitionsEnabled( AknTransEffect::EComponentTransitionsOff ) )
-                                {
-                                iExtension->ImmediateFeedback( ETouchFeedbackDecreasingPopUp );
-                                }
-                            else
-                                {
-                                iExtension->ImmediateFeedback( ETouchFeedbackPopUp );
-                                }
+                            iExtension->ImmediateFeedback( ETouchFeedbackPopUp );
                             }
                         iExtension->iShowCascadeTransition = ETrue;
                         CloseCascadeMenu(); //Just close sub menu.
@@ -5494,15 +4366,6 @@
                 iExtension->iNextHighlightItem = KErrNotFound;
                 iExtension->iPanningActive = ETrue;
                 iExtension->EnableHighlight( EFalse );
-
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST
-                MAknListBoxTfx* tfxApi = CAknListLoader::TfxApi( iExtension->iGc );
-
-                if ( tfxApi )
-                    {
-                    tfxApi->EnableEffects( EFalse );
-                    }
-#endif // RD_UI_TRANSITION_EFFECTS_LIST
                 }    
                          
             if ( iExtension->iPanningActive )
@@ -5543,19 +4406,16 @@
                                     && !cascadeMenuRect.Contains(
                                             aPointerEvent.iPosition ) )
                                 {
-                                if ( AknLayoutUtils::PenEnabled() )
+                                if ( CAknTransitionUtils::TransitionsEnabled(
+                                        AknTransEffect::EComponentTransitionsOff ) )
                                     {
-                                    if ( CAknTransitionUtils::TransitionsEnabled(
-                                            AknTransEffect::EComponentTransitionsOff ) )
-                                        {
-                                        iExtension->ImmediateFeedback(
-                                                ETouchFeedbackDecreasingPopUp );
-                                        }
-                                    else
-                                        {
-                                        iExtension->ImmediateFeedback(
-                                                ETouchFeedbackPopUp );
-                                        }
+                                    iExtension->ImmediateFeedback(
+                                            ETouchFeedbackDecreasingPopUp );
+                                    }
+                                else
+                                    {
+                                    iExtension->ImmediateFeedback(
+                                            ETouchFeedbackPopUp );
                                     }
                                 iExtension->iShowCascadeTransition = ETrue;
                                 CloseCascadeMenu();
@@ -5568,14 +4428,6 @@
                             if ( oldSelected != ii )
                                 {
                                 iExtension->iPressedDown = EFalse;
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST
-                                if ( effects
-                                        && !iExtension->iShowCascadeTransition )
-                                    {
-                                    transApi->SetMoveType(
-                                            MAknListBoxTfxInternal::EListDrag );
-                                    }
-#endif
                                 }
                             TRect screenRect( TPoint( KMinTInt, KMinTInt ),
                                     TPoint( KMaxTInt, KMaxTInt ) );
@@ -5818,9 +4670,6 @@
 EXPORT_C void CEikMenuPane::SetSelectedItem( TInt aSelectedItem )
     {
     iSelectedItem = (aSelectedItem >= NumberOfItemsInPane() ) ? 0 : aSelectedItem;
-
-    if( iExtension )
-        iExtension->ChangeHighlightBackground();
     }
 
 // -----------------------------------------------------------------------------
@@ -5916,10 +4765,6 @@
 void CEikMenuPane::HandleScrollEventL( CEikScrollBar* aScrollBar, TEikScrollEvent aEventType )
     {
     _AKNTRACE_FUNC_ENTER;
-    if( !AknLayoutUtils::PenEnabled())
-        {
-        return;
-        }
 
     _AKNTRACE( "[%s]", "Stop physics engine");
     iExtension->iPhysics->StopPhysics();
@@ -5967,16 +4812,9 @@
     // Items that becomes topmost and downmost items
     TInt newTopItem = 0;
 
-
     // if update is not wanted, do nothing.
     if ( update )
         {
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST
-        MAknListBoxTfxInternal* transApi = CAknListLoader::TfxApiInternal(
-                iExtension->iGc );
-        TBool effects = transApi && !transApi->EffectsDisabled();
-#endif
-
         switch (aEventType)
             {
             case EEikScrollUp:
@@ -6038,17 +4876,7 @@
                 {
                 _AKNTRACE( "[%s]", "EEikScrollPageDown");
                 _AKNTRACE( "bottomItem = %d", bottomItem);
-                // if last item is not visible
-                if ( bottomItem < countOfItems)
-                    {
-                    // move menu to show one site down or then downmost items.
-                    newTopItem = (bottomItem <=  (countOfItems - itemsThatFitToView)) ? (topItem + itemsThatFitToView) : (countOfItems - itemsThatFitToView);
-                    }
-                else
-                    {
-                    update = EFalse;
-                    }
-                _AKNTRACE( "newTopItem = %d", newTopItem);
+                update = ETrue;
                 _AKNTRACE( "update = %d", update);
                 }
                 break;
@@ -6056,77 +4884,35 @@
             case EEikScrollThumbDragVert:
                 {
                 _AKNTRACE( "[%s]", "EEikScrollThumbDragVert");
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST
-
-                if ( effects )
-                    {
-                    MAknListBoxTfx* tfxApi = CAknListLoader::TfxApi( iExtension->iGc );
-                    
-                    if ( tfxApi )
-                        {
-                        tfxApi->EnableEffects( EFalse );
-                        effects = EFalse;
-                        }
-                    }
-#endif
                 // new thumb position
                 TInt thumb = aScrollBar->ThumbPosition();
                 _AKNTRACE( "thumb = %d", thumb);
-
-                // did dragging cause scrolling
-                if ( thumb != topItem )
-                    {
-                    newTopItem = thumb;
-                    }
-                else
-                    {
-                    update = EFalse;
-                    }
-                _AKNTRACE( "newTopItem = %d", newTopItem);
+                update = ETrue;
                 _AKNTRACE( "update = %d", update);
                 }
                 break;
 
-            case EEikScrollThumbReleaseVert:
-                {
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST
-                MAknListBoxTfx* tfxApi = CAknListLoader::TfxApi( iExtension->iGc );
-                
-                if ( tfxApi )
-                    {
-                    tfxApi->EnableEffects( ETrue );
-                    }
-#endif
-                }
-                return;
-                
             default:
                 update = EFalse;
                 break;
             }
 
-
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST
-            if ( effects )
-                {
-                transApi->SetMoveType( newTopItem > topItem ?
-                    MAknListBoxTfxInternal::EListScrollDown :
-                    MAknListBoxTfxInternal::EListScrollUp );
-                }
-#endif
-
+        // if topItem changed, then draw menu again.
+        if ( newTopItem != topItem || update )
+            {
+            iExtension->iListTopIndex = aScrollBar->ThumbPosition();
+            TPoint newPosition( iExtension->iViewPosition.iX,
+                    iExtension->iListTopIndex + iExtension->iViewHeight / 2 );
             
-            iExtension->iListTopIndex = aScrollBar->ThumbPosition();
-                           
-            iExtension->iViewPosition.iY = 
-                iExtension->iListTopIndex + iExtension->iViewHeight / 2;              
-                          
-            iExtension->ViewPositionChanged( iExtension->iViewPosition );
-
+            iExtension->iFlags.Set( CEikMenuPaneExtension::ESkipScrollbarUpdate );
+            iExtension->ViewPositionChanged( newPosition );
+            iExtension->iFlags.Clear( CEikMenuPaneExtension::ESkipScrollbarUpdate );
+            }
         }
     _AKNTRACE_FUNC_EXIT;
     }
 
+
 // -----------------------------------------------------------------------------
 // CEikMenuPane::CreateScrollBarFrame
 // -----------------------------------------------------------------------------
@@ -6140,13 +4926,13 @@
         {
         CEikScrollBarFrame::TScrollBarVisibility visibility = CEikScrollBarFrame::EOn;
 
-        if ( iOwner && ( iItemArray->Count() <= NumberOfItemsThatFitInView() ) )
+        if ( iItemArray->Count() <= NumberOfItemsThatFitInView() )
             {
-            // submenu with less than 6 items
+            // all items fit, no need to show the scrollbar
             visibility = CEikScrollBarFrame::EOff;
             }
-        TRAP_IGNORE( iSBFrame->SetScrollBarVisibilityL( CEikScrollBarFrame::EOff, visibility /*CEikScrollBarFrame::EAuto*/ ) );
-
+
+        TRAP_IGNORE( iSBFrame->SetScrollBarVisibilityL( CEikScrollBarFrame::EOff, visibility ) );
         TRAP_IGNORE( iSBFrame->CreateDoubleSpanScrollBarsL( EFalse, EFalse, ETrue, EFalse ) );
         iSBFrame->DrawBackground( EFalse, EFalse );
         UpdateScrollBar();
@@ -6160,13 +4946,14 @@
 //
 void CEikMenuPane::UpdateScrollBar()
     {
-    if ( !CheckCreateScroller() )
+    if ( !CheckCreateScroller() || !IsVisible() )
         return;
     CIdle* idle = iScroller->Idle();
     if ( idle && !idle->IsActive() )
         idle->Start( TCallBack( CEikMenuPane::UpdateScrollBarCallBackL, this ) );
     }
 
+
 // -----------------------------------------------------------------------------
 // CEikMenuPane::UpdateScrollBarCallBackL
 // -----------------------------------------------------------------------------
@@ -6177,6 +4964,7 @@
     return 0;
     }
 
+
 // -----------------------------------------------------------------------------
 // CEikMenuPane::DoUpdateScrollBarL
 // -----------------------------------------------------------------------------
@@ -6189,17 +4977,7 @@
     TEikScrollBarModel hSbarModel;
     TEikScrollBarModel vSbarModel;
 
-    TRect menuPaneRect;
-    if ( !iOwner )
-        {
-        menuPaneRect = iExtension->iMenuPaneRect;    
-        }
-    else
-        {
-        menuPaneRect = Rect();    
-        }
-    
-    TRect clientRect( menuPaneRect.Size() ); 
+    TRect clientRect( iExtension->iMenuPaneRect.Size() );
 
     // Panning uses pixel resolution scrollbar
     vSbarModel.iThumbPosition = iExtension->iListTopIndex;      
@@ -6218,79 +4996,40 @@
     layout.SetInclusiveMargin( 0 );
     layout.iTilingMode = TEikScrollBarFrameLayout::EClientRectConstant;
 
-    // For main menupane scrollbar is always shown, for submenu only when needed
-    if ( !iOwner )
-        {
-        iSBFrame->SetScrollBarVisibilityL( CEikScrollBarFrame::EOff, CEikScrollBarFrame::EOn );
-        }
-    else
-        {
-        TInt maxItems = NumberOfItemsThatFitInView();
-        TInt count = iItemArray->Count();
-        iSBFrame->SetScrollBarVisibilityL( CEikScrollBarFrame::EOff,
-            (count > maxItems) ? CEikScrollBarFrame::EOn : CEikScrollBarFrame::EOff );
-        }
-
+    CEikScrollBarFrame::TScrollBarVisibility visibility = 
+            iSBFrame->ScrollBarVisibility( CEikScrollBar::EVertical );
+    
+    // scrollbar is shown only if needed
+    if ( iExtension->iScrollbarVisibility == CEikScrollBarFrame::EOn 
+            && visibility == CEikScrollBarFrame::EOff )
+        {
+        iSBFrame->SetScrollBarVisibilityL( CEikScrollBarFrame::EOff, 
+                CEikScrollBarFrame::EOn );
+        iExtension->iScrollBarRect = iSBFrame->VerticalScrollBar()->Rect();
+        }
+    else if ( iExtension->iScrollbarVisibility == CEikScrollBarFrame::EOff 
+            && visibility == CEikScrollBarFrame::EOn )
+        {
+        iSBFrame->SetScrollBarVisibilityL( CEikScrollBarFrame::EOff, 
+                CEikScrollBarFrame::EOff );
+        iExtension->iScrollBarRect = TRect::EUninitialized;
+        }
+    
     TAknLayoutRect scrollLayoutRect;
-    if ( !iOwner )
-        {
-        TAknWindowLineLayout listScrollPaneLayout( 
-            AknLayoutScalable_Avkon::listscroll_menu_pane(0).LayoutLine() );
-        if ( iExtension )
-            {
-            iExtension->AdjustPopupLayoutData( listScrollPaneLayout );
-            }
-        scrollLayoutRect.LayoutRect( clientRect, listScrollPaneLayout );
-        scrollBarInclusiveRect =  scrollLayoutRect.Rect();
-        scrollBarClientRect = scrollBarInclusiveRect;
-
-        AknLayoutUtils::LayoutVerticalScrollBar( iSBFrame, scrollBarClientRect,
-            AknLayoutScalable_Avkon::scroll_pane_cp25(0).LayoutLine() );
-        }
-    else
-        {
-        scrollLayoutRect.LayoutRect( clientRect, 
-                AknLayoutScalable_Avkon::listscroll_popup_sub_pane().LayoutLine() );
-        scrollBarInclusiveRect = scrollLayoutRect.Rect();
-        scrollBarClientRect = scrollBarInclusiveRect;
-
-        AknLayoutUtils::LayoutVerticalScrollBar( iSBFrame, scrollBarClientRect,
-          AknLayoutScalable_Avkon::scroll_pane_cp4().LayoutLine());
-        }
+    scrollLayoutRect.LayoutRect( clientRect, 
+            AknLayoutScalable_Avkon::listscroll_popup_sub_pane().LayoutLine() );
+    scrollBarInclusiveRect = scrollLayoutRect.Rect();
+    scrollBarClientRect = scrollBarInclusiveRect;
+
+    AknLayoutUtils::LayoutVerticalScrollBar( iSBFrame, scrollBarClientRect,
+      AknLayoutScalable_Avkon::scroll_pane_cp4().LayoutLine());
 
     iSBFrame->TileL( &hDsSbarModel, &vDsSbarModel, scrollBarClientRect, scrollBarInclusiveRect, layout );
     iSBFrame->SetVFocusPosToThumbPos( vDsSbarModel.FocusPosition() );
-    
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST
-    MAknListBoxTfxInternal* transApi = CAknListLoader::TfxApiInternal( iExtension->iGc );
-    if ( iSBFrame->VerticalScrollBar() &&
-         iSBFrame->VScrollBarVisibility() == CEikScrollBarFrame::EOn )
-        {
-        iExtension->iScrollBarRect = iSBFrame->VerticalScrollBar()->Rect();
-        }
-    else
-        {
-        iExtension->iScrollBarRect = TRect::EUninitialized;
-        }
-    if ( transApi )
-        {
-        transApi->ResetNonDrawingRects();
-        transApi->AddNonDrawingRect( iExtension->iScrollBarRect );
-        transApi->AddNonDrawingRect( iExtension->iSctRect );
-        }
-#endif // RD_UI_TRANSITION_EFFECTS_LIST
-    if ( iSBFrame->VerticalScrollBar() &&
-         iSBFrame->VScrollBarVisibility() == CEikScrollBarFrame::EOn )
-        {
-        iExtension->iSBRect = iSBFrame->VerticalScrollBar()->Rect();       
-        }
-    else
-        {
-        iExtension->iSBRect = TRect::EUninitialized;
-        }        
     _AKNTRACE_FUNC_EXIT;
     }
 
+
 // -----------------------------------------------------------------------------
 // CEikMenuPane::UpdateScrollBarThumbs
 // -----------------------------------------------------------------------------
@@ -6303,6 +5042,7 @@
         }
     }
 
+
 // -----------------------------------------------------------------------------
 // CEikMenuPane::ScrollToMakeItemVisible
 // -----------------------------------------------------------------------------
@@ -6357,6 +5097,7 @@
     return;
     }
 
+
 // -----------------------------------------------------------------------------
 // CEikMenuPane::Scroll
 // -----------------------------------------------------------------------------
@@ -6400,6 +5141,7 @@
     return;
     }
 
+
 // -----------------------------------------------------------------------------
 // CEikMenuPane::ViewRect
 // -----------------------------------------------------------------------------
@@ -6409,6 +5151,7 @@
     return Rect();
     }
 
+
 // -----------------------------------------------------------------------------
 // CEikMenuPane::NumberOfItemsThatFitInView
 // -----------------------------------------------------------------------------
@@ -6420,7 +5163,7 @@
         {
         subst = 1;
         }
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST        
+
     iExtension->iItemsThatFitInView = iOwner ? AknLayoutScalable_Avkon::
         list_single_popup_submenu_pane_ParamLimits().LastRow() + 1 :
         AknLayoutScalable_Avkon::
@@ -6431,20 +5174,9 @@
             iExtension->iItemsThatFitInView --;
             }
         
-    if ( iExtension->iPhysics && iExtension->Offset() != 0 )
-        {
-        // with kinetic scrolling there can be partial items on the screen 
-        iExtension->iTotalNumberOfItemsInView = iExtension->iItemsThatFitInView + 1;
-        }
-        
     return iExtension->iItemsThatFitInView;
-#else
-    return iOwner ? AknLayoutScalable_Avkon::
-        list_single_popup_submenu_pane_ParamLimits().LastRow() + 1 :
-        AknLayoutScalable_Avkon::
-        list_single_pane_cp2_ParamLimits().LastRow() + 1 - subst;
-#endif
-    }
+    }
+
 
 // -----------------------------------------------------------------------------
 // CEikMenuPane::TotalItemHeight
@@ -6483,6 +5215,7 @@
     return err == KErrNone;
     }
 
+
 // -----------------------------------------------------------------------------
 // CEikMenuPane::CheckCreateScrollerL
 // -----------------------------------------------------------------------------
@@ -6599,21 +5332,6 @@
             PrepareHighlightFrame();
             SetCascadedIconSize();
 
-            // Background under highlight may have changed -> we need to update
-            // highlight background to animation
-            if( iExtension )
-                {
-                iExtension->HandleLayoutSwitch();
-                }
-                          
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST        
-            MAknListBoxTfxInternal *transApi = CAknListLoader::TfxApiInternal( iExtension->iGc );
-            if ( transApi )
-                {
-                transApi->Remove( MAknListBoxTfxInternal:: EListEverything );
-                }
-#endif    
-            
             //Initialize physics engine
             if ( iExtension->iPhysics )
                 {
@@ -6671,7 +5389,11 @@
         }
     else if ( aType == KAknMessageFocusLost )
         {
-        if ( iExtension && iExtension->HighlightEnabled() )
+        if ( iCascadeMenuPane )
+            {
+            iCascadeMenuPane->HandleResourceChange( aType );
+            }
+        else if ( iExtension && iExtension->HighlightEnabled() )
             {
             iExtension->EnableHighlight( EFalse, EFalse );
             DrawItem( iSelectedItem, ENoHighlight );
@@ -6943,14 +5665,17 @@
 
     // it can be only in submenu in case when scalable layout is available
     TBool hasIcon = MenuHasIcon();
-    TBool hasDoubleSpanScrollBar = EFalse;
-
-    if ( iSBFrame && iSBFrame->VScrollBarVisibility() )
-        {
-        _AKNTRACE( "[%s]", "hasDoubleSpanScrollBar = ETrue;" );
-        hasDoubleSpanScrollBar = ETrue;
-        }
-
+
+    // scrollbar is shown only if needed
+    if ( iItemArray->Count() > NumberOfItemsThatFitInView() )
+        {
+        iExtension->iScrollbarVisibility = CEikScrollBarFrame::EOn;
+        }
+    else
+        {
+        iExtension->iScrollbarVisibility = CEikScrollBarFrame::EOff;
+        }
+    
     TRect parentMenuRect;
     AknLayoutUtils::TAknCbaLocation cbaPosition = AknLayoutUtils::CbaLocation();    
                 
@@ -7042,8 +5767,6 @@
     _AKNTRACE( "parentMenuRect.iTl.iY = %d", parentMenuRect.iTl.iY );
     _AKNTRACE( "parentMenuRect.Width() = %d", parentMenuRect.Width() );
     _AKNTRACE( "parentMenuRect.Height( = %d", parentMenuRect.Height() );
-    // if we have landscape layout then main menu should be positioned vertically centered
-    TRect appRect( iEikonEnv->EikAppUi()->ApplicationRect() );
 
     if ( !iOwner ) // main menu
         {
@@ -7063,28 +5786,46 @@
         // to be in correct place - so we calculate correct position for
         // background and move control rect to match new background top left
         // position.
-        TRect backgroundRect( iExtension->GetBackgroundRect( parentMenuRect ) );
         TPoint backgroundRectPos( 
-            AknPopupUtils::Position( backgroundRect.Size(), ETrue ) );
+            AknPopupUtils::Position( parentMenuRect.Size(), ETrue ) );
         
         retVal = parentMenuRect;
-        retVal.Move( backgroundRectPos - backgroundRect.iTl );
+        retVal.Move( backgroundRectPos - parentMenuRect.iTl );
         
         // Set embedded cba rect
         if ( iExtension->iCba )
             {
             // There is hidden extra touch space for scroll bar in landscape
-            TInt xOffset = backgroundRect.iTl.iX - parentMenuRect.iTl.iX ; 
+            TInt xOffset = parentMenuRect.iTl.iX - parentMenuRect.iTl.iX ; 
             iExtension->iCba->SetRect( TRect( 
                 xOffset,
                 menuRect.Height(),
-                backgroundRect.Width() + xOffset,
+                parentMenuRect.Width() + xOffset,
                 menuRect.Height() + cbaRect.Rect().Height() ) );
             }
 
         iExtension->iMenuPaneRect = TRect( retVal.iTl, 
                                            TSize ( menuRect.Size() ) );
-                                        
+
+        TInt variety = 4;
+        
+        // reserve area for scrollbar only if it's shown
+        if ( iExtension->iScrollbarVisibility == CEikScrollBarFrame::EOn )
+            {
+            variety = 0;
+            }
+
+        TAknLayoutRect layoutRect;
+        layoutRect.LayoutRect( TRect( iExtension->iMenuPaneRect.Size() ), 
+                AknLayoutScalable_Avkon::listscroll_popup_sub_pane( 0 ) );
+        
+        iExtension->iMenuAreaRect = layoutRect.Rect();
+        
+        layoutRect.LayoutRect( iExtension->iMenuAreaRect,
+                AknLayoutScalable_Avkon::list_menu_pane( variety ) );
+
+        iExtension->iItemAreaRect = layoutRect.Rect();
+        
         _AKNTRACE( "[%s]", "the layout of main menu return" );
         _AKNTRACE_FUNC_EXIT;                               
         return retVal;
@@ -7097,20 +5838,13 @@
     iExtension->iSubMenuWidthIndex = KAlternativeSubmenuWidths - 1;
 
     TAknLayoutRect parentListScrollLayoutRect;     // listscroll_menu_pane
-    TAknLayoutRect parentPaneLayoutRect;           // list_menu_pane
 
     TAknTextLineLayout subMenuText;                // layout for the text when item is not indicated
     TAknTextLineLayout subMenuIconText;            // layout for the text when item is indicated
 
     TAknWindowLineLayout parentListScrollPaneLayout( 
         AknLayoutScalable_Avkon::listscroll_menu_pane(0).LayoutLine() );
-    if ( iExtension )
-        {
-        iExtension->AdjustPopupLayoutData( parentListScrollPaneLayout );
-        }    
     parentListScrollLayoutRect.LayoutRect( parentMenuRect, parentListScrollPaneLayout );    
-    parentPaneLayoutRect.LayoutRect( parentListScrollLayoutRect.Rect(),
-        AknLayoutScalable_Avkon::list_menu_pane(0).LayoutLine() );
     subMenuText = AknLayoutScalable_Avkon::list_single_popup_submenu_pane_t1(0).LayoutLine();
     subMenuIconText = AknLayoutScalable_Avkon::list_single_popup_submenu_pane_t1(1).LayoutLine();
 
@@ -7133,6 +5867,13 @@
         }
 
     // find the suitable item width, so that the text would be visible
+    TInt submenuVariety = 1;
+    
+    if ( iExtension->iScrollbarVisibility == CEikScrollBarFrame::EOn )
+        {
+        submenuVariety = 0;
+        }
+
     for ( ii = 6; ii < KAlternativeSubmenuWidths + 6; ++ii )
         {
         TAknWindowLineLayout submenuLayout( AknLayoutScalable_Avkon::popup_submenu_window( ii ).LayoutLine() );
@@ -7143,7 +5884,7 @@
         TAknLayoutRect listScrollPaneRect;
         listScrollPaneRect.LayoutRect( submenuRect.Rect(), listScrollPaneLayout );
 
-        TAknWindowLineLayout listSubmenuPaneLayout( AknLayoutScalable_Avkon::list_submenu_pane( !hasDoubleSpanScrollBar ).LayoutLine() );
+        TAknWindowLineLayout listSubmenuPaneLayout( AknLayoutScalable_Avkon::list_submenu_pane( submenuVariety ).LayoutLine() );
         TAknLayoutRect listSubmenuPaneRect;
         listSubmenuPaneRect.LayoutRect( listScrollPaneRect.Rect(), listSubmenuPaneLayout );
 
@@ -7175,20 +5916,8 @@
     TInt parentPos = iOwner->iScroller->TopItemIndex() - iOwner->SelectedItem() +
         Min( parentCount, iOwner->NumberOfItemsThatFitInView() );
 
-    TInt index =  iOwner->SelectedItem() - iOwner->iScroller->TopItemIndex();
-    TInt rows = AknLayoutScalable_Avkon::list_single_pane_cp2_ParamLimits().LastRow();
-
-    // This condition may be true if less items fits to menu view than sub-menu view
-    // and sub-menu under sub-menu is launched.
-    if (index > rows)
-        {
-        // Change the out-of-boundary index to last legal one.
-        index = rows;
-        }
-
-    TAknLayoutRect parentSelectedItemRect;
-    parentSelectedItemRect.LayoutRect( parentPaneLayoutRect.Rect(),
-        AknLayoutScalable_Avkon::list_single_pane_cp2( index ).LayoutLine() );
+    TRect parentSelectedItemRect( iOwner->HighlightRect() );
+    parentSelectedItemRect.Move( iOwner->Position() );
 
     TAknLayoutRect submenuWindowRect;
     // To prevent a panic in layout code, count has to be at least 1 even if
@@ -7227,7 +5956,7 @@
     if ( ( Layout_Meta_Data::IsLandscapeOrientation()
         && cbaPosition != AknLayoutUtils::EAknCbaLocationBottom ) )
         {
-        if ( ( parentSelectedItemRect.Rect().iTl.iY + submenuWindowRect.Rect().Height() ) >
+        if ( ( parentSelectedItemRect.iTl.iY + submenuWindowRect.Rect().Height() ) >
                 aWindowRect.iBr.iY )
             {
             subMenuPos = EBottom;
@@ -7279,7 +6008,7 @@
         }
     else  // floating
         {
-        TInt yPos = parentSelectedItemRect.Rect().iTl.iY -
+        TInt yPos = parentSelectedItemRect.iTl.iY -
             ( listScrollPaneRect.Rect().iTl.iY - submenuWindowRect.Rect().iTl.iY );
 
         // When a submenu is floating, make sure that the possible panning offset of the
@@ -7308,6 +6037,25 @@
             retVal.Move( 0, -offset );
             }
         }
+    
+    if ( retVal.iTl.iY < 0 )
+        {
+        retVal.Move( 0, -retVal.iTl.iY );
+        }
+
+    iExtension->iMenuPaneRect = retVal;
+
+    TAknLayoutRect layoutRect;
+    layoutRect.LayoutRect( TRect( iExtension->iMenuPaneRect.Size() ), 
+            AknLayoutScalable_Avkon::listscroll_popup_sub_pane( 0 ) );
+    
+    iExtension->iMenuAreaRect = layoutRect.Rect();
+    
+    layoutRect.LayoutRect( iExtension->iMenuAreaRect,
+            AknLayoutScalable_Avkon::list_submenu_pane( submenuVariety ) );
+
+    iExtension->iItemAreaRect = layoutRect.Rect();
+    
     _AKNTRACE( "[%s]", "the layout of sub menu return" );
     _AKNTRACE_FUNC_EXIT;  
     return retVal;
@@ -7328,69 +6076,15 @@
     if( index < 0 )
         index = 0;
 
-    // It is possible that this method is called when iItemArray is NULL.  In
-    // that case we fake numItems as 1 to make layout code work.
-    TInt maxItems = NumberOfItemsThatFitInView();
-    TInt numItems = Min( Max( 1, iItemArray->Count() ), maxItems );
-    if( !iItemArray )
-        numItems = 1;
-    
     // When physics is enabled highlight can be moved to partially visible
     // item which is at the bottom of menu. This causes layout panic and to 
     // avoid that we reduce index by one.
-    if ( index == maxItems )
+    if ( index == NumberOfItemsThatFitInView() )
         {
         index--;
         }
    
-    TRect windowRect = Rect();
-
-    TAknWindowLineLayout menuPane( AKN_LAYOUT_WINDOW_list_menu_pane( 0 , 0 ) );
-    TAknWindowLineLayout singleMenuPane( AKN_LAYOUT_WINDOW_list_single_popup_menu_pane( index ) );
-    TAknLayoutRect menuPaneRect;
-    TAknLayoutRect singleMenuPaneRect;
-
-    TBool hasDoubleSpanScrollBar = EFalse;
-
-    if ( iSBFrame && iSBFrame->VScrollBarVisibility() )
-        {
-        hasDoubleSpanScrollBar = ETrue;
-        }
-
-    if ( !iOwner )
-        {
-        TAknWindowLineLayout listScrollPaneLayout( 
-            AknLayoutScalable_Avkon::listscroll_menu_pane(0).LayoutLine() );
-        if ( iExtension )
-            {
-            iExtension->AdjustPopupLayoutData( listScrollPaneLayout );
-            }                            
-        TAknLayoutRect listScrollPaneRect;
-        listScrollPaneRect.LayoutRect( windowRect, listScrollPaneLayout );
-
-        menuPane = AknLayoutScalable_Avkon::list_menu_pane( 0 ).LayoutLine();
-        menuPaneRect.LayoutRect( listScrollPaneRect.Rect(), menuPane );
-
-        singleMenuPane = AknLayoutScalable_Avkon::list_single_pane_cp2( index ).LayoutLine();
-        singleMenuPaneRect.LayoutRect( menuPaneRect.Rect(), singleMenuPane );
-        }
-    else // Submenu
-        {
-        TAknWindowLineLayout listScrollPaneLayout( AknLayoutScalable_Avkon::listscroll_popup_sub_pane().LayoutLine() );
-        TAknLayoutRect listScrollPaneRect;
-        listScrollPaneRect.LayoutRect( windowRect, listScrollPaneLayout );
-
-        menuPane = AknLayoutScalable_Avkon::list_submenu_pane( !hasDoubleSpanScrollBar ).LayoutLine();
-        menuPaneRect.LayoutRect( listScrollPaneRect.Rect(), menuPane );
-
-        singleMenuPane = AknLayoutScalable_Avkon::list_single_popup_submenu_pane( index ).LayoutLine();
-        singleMenuPaneRect.LayoutRect( menuPaneRect.Rect(), singleMenuPane );
-        }
-
-    // Compared to normal DrawItem the highlight rect step is omitted because
-    // it would shift the highlight towards left.
-
-    return singleMenuPaneRect.Rect();
+    return ItemRect( index );
     }
 
 
@@ -7436,7 +6130,6 @@
         {
         AknIconUtils::SetSize( itemData->Bitmap(),  cascadeRect.Rect().Size() );
         }
-
     else
         {
         if (iExtension->iCascadeBitmap)
@@ -7479,8 +6172,7 @@
 EXPORT_C TInt CEikMenuPane::CountComponentControls() const
     {
     TInt count = 0;
-    if ( iSBFrame && iSBFrame->VerticalScrollBar() &&
-                            !( iSBFrame->VerticalScrollBar()->OwnsWindow() ) )
+    if ( iSBFrame && iSBFrame->VerticalScrollBar() )
         {
         count = 1;
         }
@@ -7507,8 +6199,7 @@
         {
         case 0:
             {
-            if ( iSBFrame && iSBFrame->VerticalScrollBar() &&
-                        !( iSBFrame->VerticalScrollBar()->OwnsWindow() ) )
+            if ( iSBFrame && iSBFrame->VerticalScrollBar() )
                 {
                 return iSBFrame->VerticalScrollBar();
                 }
@@ -7551,6 +6242,10 @@
     }
 
 
+// -----------------------------------------------------------------------------
+// CEikMenuPane::CheckCreateExtensionL
+// -----------------------------------------------------------------------------
+//
 void CEikMenuPane::CheckCreateExtensionL()
     {
     if ( !iExtension )
@@ -7562,6 +6257,50 @@
 
 
 // -----------------------------------------------------------------------------
+// CEikMenuPane::ItemRect
+// -----------------------------------------------------------------------------
+//
+TRect CEikMenuPane::ItemRect( TInt aItemIndex ) const
+    {
+    // this method is valid for the main menu only
+    TInt lastRow = AknLayoutScalable_Avkon::list_single_pane_cp2_ParamLimits().LastRow();
+    aItemIndex = Min( aItemIndex, lastRow );
+
+    TAknLayoutRect layoutRect;
+    layoutRect.LayoutRect( iExtension->iItemAreaRect,
+            AknLayoutScalable_Avkon::list_single_pane_cp2( aItemIndex ) );
+            
+    return layoutRect.Rect();
+    }
+
+
+// -----------------------------------------------------------------------------
+// CEikMenuPane::CalculateItemHeight
+// -----------------------------------------------------------------------------
+//
+TInt CEikMenuPane::CalculateItemHeight() const
+    {
+    TAknWindowLineLayout menuLineLayout;
+
+    if ( iOwner ) // submenu
+        {
+        menuLineLayout = 
+            AknLayoutScalable_Avkon::list_single_popup_submenu_pane( 0 ).LayoutLine();
+        }
+    else
+        {
+        menuLineLayout = 
+            AknLayoutScalable_Avkon::list_single_pane_cp2( 0 ).LayoutLine();
+        }
+
+    TAknLayoutRect menuLayoutRect;
+    menuLayoutRect.LayoutRect( Rect(), menuLineLayout );
+    
+    return menuLayoutRect.Rect().Height();
+    }
+
+
+// -----------------------------------------------------------------------------
 // CEikMenuPane::ConstructMenuSctRowL
 // Creates an sct row for editing menu.
 // @param aSpecialChars Buffer that holds selected characters
@@ -7709,30 +6448,20 @@
     if ( iCascadeMenuPane->IsVisible() )
         {
         okToDraw = AknsUtils::SkinInstance() != NULL;
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST
-        MAknListBoxTfxInternal *transApi = CAknListLoader::TfxApiInternal( iExtension->iGc );
-        if ( transApi && okToDraw )
-            {
-            iCascadeMenuPane->SetFocus( EFalse, EDrawNow );
-            }
-#endif
         // Stop ongoing comp. transitions, this is mostly for fast clicking
         // cases to make sure that no "scrap" is left behind.
         GfxTransEffect::NotifyExternalState( ENotifyGlobalAbort );
+
         // cascade menu "cancel" animation. This does not apply
         // when something is chosen from the menu
-
-    if( iExtension->iShowCascadeTransition && okToDraw )
-        {
-        iCascadeMenuPane->SetParent( this );
-
-        GfxTransEffect::Begin( iCascadeMenuPane, KGfxControlDisappearAction );
-        GfxTransEffect::SetDemarcation( iCascadeMenuPane, iExtension->iCascadeDRect );
-
-        iCascadeMenuPane->MakeVisible( EFalse );
-
-        GfxTransEffect::End( iCascadeMenuPane );
-
+        if ( iExtension->iShowCascadeTransition && okToDraw )
+            {
+            iCascadeMenuPane->SetParent( this );
+    
+            GfxTransEffect::Begin( iCascadeMenuPane, KGfxControlDisappearAction );
+            GfxTransEffect::SetDemarcation( iCascadeMenuPane, iExtension->iCascadeDRect );
+            iCascadeMenuPane->MakeVisible( EFalse );
+            GfxTransEffect::End( iCascadeMenuPane );
             }
         }
 
--- a/uifw/EikStd/coctlsrc/EIKSCRLB.CPP	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/EikStd/coctlsrc/EIKSCRLB.CPP	Fri Feb 19 23:04:46 2010 +0200
@@ -515,9 +515,6 @@
     return CEikScrollBar::EArrowHead;
     }
 
-void CEikScrollBarExtension::CreateButtonL(CAknScrollButton*& /*aButton*/,CAknScrollButton::TType /*aType*/)
-    {
-    }
 
 void CEikScrollBarExtension::DoSetModel(const TEikScrollBarModel* aModel)
     {
@@ -706,14 +703,9 @@
     if (aWindowOwning)
         {
         CreateWindowL(aParent);
-        if ( CAknEnv::Static()->TransparencyEnabled() )
-            {
-            Window().SetRequiredDisplayMode( EColor16MA );
-            if ( Window().SetTransparencyAlphaChannel() == KErrNone )
-                {
-                Window().SetBackgroundColor( ~0 );
-                }
-            }
+        EnableWindowTransparency();
+        Window().SetPointerGrab( ETrue );
+        EnableDragEvents();
         }
     else if(aParent)
         {
@@ -732,18 +724,6 @@
     iOrientation=aOrientation;
     CreateRequiredComponentsL();
 
-    if (aWindowOwning)
-        {
-        Window().SetPointerGrab(ETrue);
-        EnableDragEvents();
-        if (extension->iScrollIndicator)
-               extension->iScrollIndicator->SetAsWindowOwning(ETrue);
-
-
-        // By default set background to transparent
-        SetTransparentBackground(ETrue);
-        }
-
     SetComponentsToInheritVisibility(ETrue);
     MakeVisible(EFalse);
     ActivateL();
@@ -1090,7 +1070,7 @@
             indicator->SetBackgroudHighlight( ETrue );
 
             extension->iPointerDownPosition  = position;
-            
+
             if(iButtons.iIncreaseNudge &&
                iButtons.iIncreaseNudge->Rect().Contains(aPointerEvent.iPosition))
                 {
@@ -1736,9 +1716,6 @@
     return CEikScrollBarFrame::EDoubleSpan;
     }
 
-void CAknDoubleSpanScrollBarExtension::CreateButtonL(CAknScrollButton*& /*aButton*/,CAknScrollButton::TType /*aType*/)
-    {
-    }
 
 void CAknDoubleSpanScrollBarExtension::DoSetModel(const TEikScrollBarModel* aModel)
     {
@@ -1770,10 +1747,6 @@
                 0);
             }
 
-        if (iParent->OwnsWindow() && iScrollIndicator->TransparentBackground())
-            {
-            iParent->Window().HandleTransparencyUpdate();
-            }
         if(iScrollIndicator->IsVisible())
             {
             if(iScrollIndicator->DrawBackgroundState() && !iParent->OwnsWindow())
@@ -1904,6 +1877,7 @@
         iScrollIndicator->SetContainerWindowL( *iParent );
         iScrollIndicator->SetRect( iParent->Rect() );
         iScrollIndicator->SetComponentsToInheritVisibility(ETrue);
+        iScrollIndicator->SetAsWindowOwning( iParent->OwnsWindow() );
         }
 
     if ( AknLayoutUtils::PenEnabled() &&
--- a/uifw/EikStd/coctlsrc/EikCcpu.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/EikStd/coctlsrc/EikCcpu.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -24,7 +24,7 @@
 #include <avkon.rsg>
 #include <avkon.hrh>
 #include <eikappui.h>
-
+#include <eikdialg.h>
 const TInt ELeftSoftkeyIndex = 0;
 const TInt ERightSoftkeyIndex = 2;
 const TInt ENullCommandId = -1;
@@ -48,7 +48,8 @@
 	{
 	if (iMenu)
 		iMenu->RemoveEditMenuObserver(this);
-	delete iCba;
+	//delete iCba;
+	TRAP_IGNORE(DeleteCBAL());
 	iEikonEnv->EikAppUi()->RemoveFromStack(this);
 	}
 
@@ -91,8 +92,9 @@
 	if (iCba && !focused)
 		{
 		// something has caused loss of focus while shift is pressed - drop everything.
-		delete iCba;
-		iCba = NULL;
+		//delete iCba;
+		//iCba = NULL;
+		DeleteCBAL();
 		}
 	}
 
@@ -104,11 +106,54 @@
 	if (aKeyEvent.iCode == EKeyF21)		// FEP generates F21 on long shift press
 		{
 		if (aType == EEventKey)
-			{
-			delete iCba;
-			iCba = NULL;
-			iCba = CEikButtonGroupContainer::NewL(CEikButtonGroupContainer::ECba, CEikButtonGroupContainer::EHorizontal, this, R_AVKON_SOFTKEYS_EMPTY);
-			iCba->SetBoundingRect(iEikonEnv->EikAppUi()->ApplicationRect());
+			{		
+			DeleteCBAL();
+			CEikAppUi* eikAppUi = (CEikAppUi *)CCoeEnv::Static()->AppUi();
+			if( eikAppUi!= NULL && eikAppUi->IsDisplayingDialog() && eikAppUi->TopFocusedControl() )
+				{
+				CEikDialog* dlg = eikAppUi->TopFocusedControl()->MopGetObject( dlg );
+				if ( dlg )
+					{
+					CEikButtonGroupContainer* currentCba = dlg->MopGetObject( currentCba );
+					
+					if ( currentCba )
+						{
+						CEikCba* dlgcba = static_cast<CEikCba*>( currentCba->ButtonGroup() );
+						TUint flags( 0 ); 
+						flags |= CEikButtonGroupContainer::EIsEmbedded | CEikButtonGroupContainer::EAddToStack;
+						iCba = CEikButtonGroupContainer::NewL(CEikButtonGroupContainer::ECba, CEikButtonGroupContainer::EHorizontal, 
+								this, R_AVKON_SOFTKEYS_EMPTY, flags );
+						
+						CEikCba* cba = static_cast<CEikCba*>(
+								iCba->ButtonGroup() );					   
+						
+						if( ! isCbaEmded )
+							{
+							currentCba->AddCommandToStackL(ELeftSoftkeyIndex, -1, _L(""), NULL, NULL);
+							currentCba->AddCommandToStackL(ERightSoftkeyIndex, -1, _L(""), NULL, NULL);
+							currentCba->ActivateL();
+							currentCba->DrawNow();
+							iDialogCba = currentCba;
+							isCbaEmded = ETrue;
+							}
+					
+						cba->SetButtonGroupFlags( ~(EEikCbaFlagTransparent | EEikCbaFlagOutlineFont) );
+						TRect dlgRect(dlg->Rect());
+						TRect cbaRect(currentCba->Rect());
+						iCba->SetRect( currentCba->Rect());
+						iCba->SetPosition(TPoint(dlg->DrawableWindow()->Position().iX,dlg->DrawableWindow()->Position().iY + dlgRect.Height() - cbaRect.Height()));
+						iCba->SetBoundingRect( dlg->Rect());
+						
+						}
+					
+					}
+				
+				}
+			if(iCba == NULL)//if iCba was not create in the above branch but was deleted by DeleteCBA
+				{
+				iCba = CEikButtonGroupContainer::NewL(CEikButtonGroupContainer::ECba, CEikButtonGroupContainer::EHorizontal, this, R_AVKON_SOFTKEYS_EMPTY);
+				iCba->SetBoundingRect(iEikonEnv->EikAppUi()->ApplicationRect());
+				}
 			UpdateCBALabelsL();
 			}
 		return EKeyWasConsumed;
@@ -124,8 +169,9 @@
         }					
 	else if ((aKeyEvent.iScanCode == EStdKeyLeftShift || aKeyEvent.iScanCode == EStdKeyRightShift) && aType == EEventKeyUp)
 		{
-		delete iCba;
-		iCba = NULL;
+		//delete iCba;
+		//iCba = NULL;
+		DeleteCBAL();
 		}
 	
 	return EKeyWasNotConsumed;
@@ -178,7 +224,9 @@
 		change = UpdateCBALabelL(ERightSoftkeyIndex, ENullCommandId, R_TEXT_SOFTKEY_EMPTY) || change;
 
 	if (change)
+		{
 		iCba->DrawNow();
+		}
 	}
 
 TBool CAknCcpuSupport::UpdateCBALabelL(TInt aPosition, TInt aCommandId, TInt aTextResId)
@@ -206,5 +254,37 @@
     {
     return NULL;
     }
+void CAknCcpuSupport::DeleteCBAL()
+	{
+	if ( iCba != NULL )
+		{
+	    delete iCba;
+	    iCba = NULL;
+		}
+	if (isCbaEmded)
+		{
+		CEikAppUi* eikAppUi = (CEikAppUi *)CCoeEnv::Static()->AppUi();
+		    if( eikAppUi!= NULL && eikAppUi->IsDisplayingDialog() && eikAppUi->TopFocusedControl() )
+		        {
+		        CEikDialog* dlg = eikAppUi->TopFocusedControl()->MopGetObject( dlg );
+		        if ( dlg )
+		        	{
+		            CEikButtonGroupContainer* currentCba = dlg->MopGetObject( currentCba );
+	        	    CEikCba* dlgcba = static_cast<CEikCba*>(
+	        	        currentCba->ButtonGroup() );
+	        	    if ( currentCba && iDialogCba == currentCba )
+		        	    {
+		        	    currentCba->RemoveCommandFromStack(ELeftSoftkeyIndex,-1);
+		        	    currentCba->RemoveCommandFromStack(ERightSoftkeyIndex,-1);
 
+		        	    //dlgcba->UpdateCbaLabels(EFalse);
+		        	    currentCba->DrawNow();
+		        	    currentCba->ActivateL();
+		        	    iDialogCba = NULL;
+                        isCbaEmded = EFalse;
+		        	    }
+		        	}
+		        }
+		}
 
+	}
--- a/uifw/EikStd/coctlsrc/FormCursorModifier.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/EikStd/coctlsrc/FormCursorModifier.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -17,7 +17,7 @@
 #include <eikedwin.h>
 #include <tagma.h>
 #ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
-#include <tagmaLayoutAndSource.h>
+#include <tagmalayoutandsource.h>
 #endif
 
 
--- a/uifw/EikStd/coctlsrc/FormCursorModifierUtils.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/EikStd/coctlsrc/FormCursorModifierUtils.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -18,7 +18,7 @@
 #include <frmtview.h>
 #include <tagma.h>
 #ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
-#include <tagmaLayoutAndSource.h>
+#include <tagmalayoutandsource.h>
 #endif
 
 #include "FromCursorModifierUtils.h"
--- a/uifw/EikStd/coctlsrc/akndoublespanscrollindicatoritem.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/EikStd/coctlsrc/akndoublespanscrollindicatoritem.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -106,10 +106,3 @@
 
     }
 
-CFbsBitmap* CAknDoubleSpanScrollIndicatorItem::CreateBitmapL(CFbsBitmap* /*aSourceBitmap*/, TBool /*aRotated*/)
-    {
-   
-
-    return NULL;
-    }
-	
--- a/uifw/EikStd/coctlsrc/aknedwinphysicshandler.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/EikStd/coctlsrc/aknedwinphysicshandler.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -390,6 +390,7 @@
                 
                 iPhysics->SuspendPhysics();
                 InitBounce( aPixelsToScroll > 0 );
+                ScrollRestOfPixels( restOfPixels );
                 iPhysics->ResumePhysics();
                 }
             else
--- a/uifw/EikStd/coctlsrc/aknitemactionmenu.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/EikStd/coctlsrc/aknitemactionmenu.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -211,12 +211,15 @@
     TBool highlightVisible( ETrue );
     for ( TInt i = 0; i < iStates.Count(); i++ )
         {
-        MAknCollection* state( iStates[ i ] );
-        if ( state->CollectionState() &
-                MAknCollection::EStateCollectionVisible )
+        MAknCollection* collection( iStates[ i ] );
+        TUint state = collection->CollectionState();
+
+        highlightVisible = state & MAknCollection::EStateHighlightVisible;
+        
+        if ( highlightVisible )
             {
-            highlightVisible = state->CollectionState()
-                & MAknCollection::EStateHighlightVisible;
+            // Highlight can't be visible if the collection is not visible.
+            highlightVisible = state & MAknCollection::EStateCollectionVisible;
             break;
             }
         }
--- a/uifw/EikStd/coctlsrc/aknstyluspopupmenu.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/EikStd/coctlsrc/aknstyluspopupmenu.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2005-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -119,6 +119,7 @@
 //
 CAknStylusPopUpMenu::~CAknStylusPopUpMenu()
     {
+    iContent->SetObserver(NULL);
     if ( iIsDeleted )
         {
         *iIsDeleted = ETrue;
@@ -223,7 +224,8 @@
 // CAknStylusPopUpMenu::SetPosition 
 // ---------------------------------------------------------------------------
 //
-EXPORT_C void CAknStylusPopUpMenu::SetPosition( const TPoint& aPoint, TPositionType aPosType )
+EXPORT_C void CAknStylusPopUpMenu::SetPosition( const TPoint& aPoint,
+                                                TPositionType aPosType )
     {
     TPoint adjustedPoint( aPoint );
     if ( !iController )
@@ -232,41 +234,106 @@
         iPositionType = aPosType;
         return;
         }
+
     iController->UpdateContentSize(); 
     TSize menuSize = iController->Size();
-	// calculate to right-top corner by aPosType and popup menu size
+
+	// Calculate the position to right-top corner by aPosType and
+    // popup menu size. Add also a margin between the screen borders and the
+    // popup if the popup is too close to screen border.
+    TBool layoutMirrored( AknLayoutUtils::LayoutMirrored() );
+    TRect screenRect;
+    AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EScreen,
+                                       screenRect );
+    
+    // Margin is read from the popup window's layout data
+    // (left parameter used).
+    TAknWindowLineLayout popupWindowLayout(
+        AknLayoutScalable_Avkon::popup_touch_menu_window( 0 ).LayoutLine() );
+    TInt windowMargin = layoutMirrored ? popupWindowLayout.ir :
+                                         popupWindowLayout.il;
+
     switch ( aPosType )	
         {
-        case EPositionTypeRightTop: 
+        case EPositionTypeRightTop:
+            {
             break;
+            }
+
         case EPositionTypeLeftTop:
-            if( AknLayoutUtils::LayoutMirrored() ) 
+            {
+            if ( !layoutMirrored ) 
                 {
-                adjustedPoint.iX -= menuSize.iWidth;
+                adjustedPoint.iX += menuSize.iWidth;
                 }
-            else
+
+            break;
+            }
+
+        case EPositionTypeRightBottom:
+            {
+            adjustedPoint.iY -= menuSize.iHeight;
+
+            break;
+            }
+
+        case EPositionTypeLeftBottom:
+            {
+            if ( !layoutMirrored ) 
                 {
                 adjustedPoint.iX += menuSize.iWidth;
                 }
-            break;   
-        case EPositionTypeRightBottom:
+
             adjustedPoint.iY -= menuSize.iHeight;
+
+            break;
+            }
+
+        default:
+            {
             break;
-        case EPositionTypeLeftBottom: 
-            if( AknLayoutUtils::LayoutMirrored() ) 
-                {
-                adjustedPoint.iX -= menuSize.iWidth;
-                }
-            else
-                {
-                adjustedPoint.iX += menuSize.iWidth;
-                }
-            adjustedPoint.iY -= menuSize.iHeight;
-            break;    
-        default:
-            break;  
+            }
+        }
+
+    // Check if margins need to be added.
+    TInt xLeftPos( layoutMirrored ? adjustedPoint.iX :
+                                    adjustedPoint.iX - menuSize.iWidth );
+    TInt xRightPos( layoutMirrored ? adjustedPoint.iX + menuSize.iWidth :
+                                     adjustedPoint.iX );
+    TInt xPosRightMargin( screenRect.iBr.iX - windowMargin );
+    TInt xPosBottomMargin( screenRect.iBr.iY - windowMargin );
+
+    if ( xLeftPos < windowMargin )
+        {
+        // Too close to the left side of the screen.
+        adjustedPoint.iX = windowMargin + menuSize.iWidth;
+        }
+    else if ( xRightPos > xPosRightMargin )
+        {
+        // Too close to the right side of the screen.
+        if ( layoutMirrored )
+            {
+            // In mirrored layout a left-top position must be provided
+            // for the preview popup controller.
+            adjustedPoint.iX = xPosRightMargin - menuSize.iWidth;
+            }
+        else
+            {
+            adjustedPoint.iX = xPosRightMargin;
+            }
+        }
+
+    if ( adjustedPoint.iY < windowMargin )
+        {
+        // Too close to the top border of the screen.
+        adjustedPoint.iY = windowMargin;
+        }
+    else if ( adjustedPoint.iY + menuSize.iHeight > xPosBottomMargin )
+        {
+        // Too close to the bottom border of the screen.
+        adjustedPoint.iY = xPosBottomMargin - menuSize.iHeight;
+        }
     
-        }
     iPosition = adjustedPoint;           
     iController->SetPosition( adjustedPoint ); 
     }
--- a/uifw/EikStd/coctlsrc/aknstyluspopupmenucontent.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/EikStd/coctlsrc/aknstyluspopupmenucontent.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2005-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -27,6 +27,7 @@
 #include <aknappui.h>
 #include <AknDef.h>
 #include <touchfeedback.h>
+#include <layoutmetadata.cdl.h>
 
 #include "aknstyluspopupmenuphysicshandler.h"
 #include "aknstyluspopupmenucontent.h"
@@ -545,7 +546,6 @@
     item->ConstructL( aItem );  
     iItems.AppendL( item );
     CleanupStack::Pop( item ); 
-
     }
 
 // ---------------------------------------------------------------------------
@@ -695,25 +695,39 @@
     TInt visibleItems = 0; // Number of visible items
     
     // Find the widest visible item and count visible items
+    TRect screenRect;
+    AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EScreen,
+                                       screenRect );
+    TInt screenHeight( screenRect.Height() );
+    TInt screenWidth( screenRect.Width() );
+    
+    const CFont* usedFont = AknLayoutUtils::FontFromId(
+        AknLayoutScalable_Avkon::list_single_popup_submenu_pane_t1( 0 ).Font() );
     for ( TInt i = 0; i < iItems.Count(); i++ )
         {
         if ( iItems[i]->iVisibility == KShown )
             {
             visibleItems++;
-            textWidth = AknLayoutUtils::FontFromId( AknLayoutScalable_Avkon::
-            list_single_popup_submenu_pane_t1( 0 ).LayoutLine().FontId() )->TextWidthInPixels( *( iItems[i]->iText ) );
+            textWidth = usedFont->TextWidthInPixels( *( iItems[i]->iText ) );
             width = Max( width, textWidth );
             }
         }
-        
+
     if ( visibleItems == 0 )
         {
         return TSize( 0, 0 );
         }
-            
-    TRect mainPaneRect;
-    AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane,
-                                       mainPaneRect );
+
+    // Check the minimum width from the layout data and adjust the width
+    // if the text would take less space than that.
+    TInt minWidth =
+        TAknWindowComponentLayout::Compose(
+            AknLayoutScalable_Avkon::popup_touch_menu_window( 0 ),
+            TAknWindowComponentLayout::Compose(
+                AknLayoutScalable_Avkon::list_touch_menu_pane( 0 ),
+                AknLayoutScalable_Avkon::list_single_touch_menu_pane( 0 ) ) ).LayoutLine().iW;
+    width = Max( width, minWidth );
+
     TAknWindowLineLayout listLayout = 
        AknLayoutScalable_Avkon::list_single_touch_menu_pane(0).LayoutLine();
  
@@ -726,9 +740,28 @@
     TInt singleItemHeight = listLayout.iH; 
     height = singleItemHeight * visibleItems;
     
-    if ( height > mainPaneRect.Height() )
+    if ( height > screenHeight )
         {
-        TInt fitsToMenu = mainPaneRect.Height() / singleItemHeight;
+        // Amount of items that fit in the popup.
+        TInt fitsToMenu = visibleItems;
+
+        if ( Layout_Meta_Data::IsLandscapeOrientation() )
+            {
+            // In landscape orientation the max amount of items comes from
+            // the layout data.
+            TAknLayoutScalableParameterLimits paramLimits(
+                AknLayoutScalable_Avkon::list_single_touch_menu_pane_ParamLimits() );
+            
+            // Add one to the last row as it's row index starting from zero.
+            fitsToMenu = paramLimits.LastRow() + 1;
+            }
+        else
+            {
+            // In potrait orientation the menu can show as many items as fit
+            // on the screen.
+            fitsToMenu = screenHeight / singleItemHeight;
+            }
+
         height = fitsToMenu * singleItemHeight;
         TAknWindowLineLayout scrollBar = 
             AknLayoutScalable_Avkon::scroll_pane( 0 );
@@ -737,9 +770,9 @@
 
     width += textLayout.ir + textLayout.il;
 
-    if ( width > ( mainPaneRect.Width() - unit.iW ) )
+    if ( width > ( screenWidth - unit.iW ) )
         {
-        width = mainPaneRect.Width() - ( unit.iW );
+        width = screenWidth - ( unit.iW );
         }
 
     return TSize( width, height );
@@ -825,8 +858,11 @@
         if ( iExtension && iExtension->iInformObserver && !iExtension->iObserverInformed )
             {
             iExtension->iInformObserver = EFalse; 
-            TRAP_IGNORE(Observer()->HandleControlEventL( this,
-                MCoeControlObserver::EEventRequestCancel )); 
+            if ( Observer() )
+                {
+                TRAP_IGNORE(Observer()->HandleControlEventL( this,
+                    MCoeControlObserver::EEventRequestCancel )); 
+                }
             }
         if ( iSBFrame )
             {
@@ -912,65 +948,73 @@
     {
     TRect rect( iItems[aItem]->iRect );
     
-    // Use offset to move items smoothly.
-    // If physics not in use, offset is always 0.
-    rect.Move( TPoint( 0, -Offset() ) ); 
-
-    if ( aHighlight == EDrawHighlight )
+    if ( !rect.IsEmpty() )
         {
-        TBool drawOk = EFalse; 
-        if( iExtension->iAnimation ) // Draw animated highlight
-            {
-            drawOk = iExtension->iAnimation->Render( aGc, rect );
-            }
-        if ( !drawOk )
+        // Use offset to move items smoothly.
+        // If physics not in use, offset is always 0.
+        rect.Move( TPoint( 0, -Offset() ) ); 
+    
+        if ( aHighlight == EDrawHighlight )
             {
-            // Animated highlight was not available, use normal skinned
-            // rendering.
-            TAknLayoutRect listRect; 
-            TAknLayoutRect innerRect;
-
-            listRect.LayoutRect( rect, 
-                AknLayoutScalable_Avkon::list_highlight_pane_cp1().LayoutLine() );
-            innerRect.LayoutRect( listRect.Rect(),
-                AknLayoutScalable_Avkon::list_highlight_pane_g1_cp1().LayoutLine() );
-            
-            MAknsSkinInstance* skin = AknsUtils::SkinInstance();
-            aGc.SetBrushStyle( CGraphicsContext::ESolidBrush ); 
-            // if we have transparent highlight, draw also background under highlight
-            if ( Background() )
+            TBool drawOk = EFalse; 
+            if( iExtension->iAnimation ) // Draw animated highlight
                 {
-                Background()->Draw( aGc, *this, rect );
+                drawOk = iExtension->iAnimation->Render( aGc, rect );
                 }
-            
-            drawOk = AknsDrawUtils::DrawFrame( skin, aGc, rect, innerRect.Rect(), 
-                KAknsIIDQsnFrList, KAknsIIDDefault );
-
-            //Both highlight animation and frame drawing failed. 
             if ( !drawOk )
                 {
-                listRect.DrawRect( aGc ); 
-                innerRect.DrawRect( aGc ); 
+                // Animated highlight was not available, use normal skinned
+                // rendering.
+                TAknLayoutRect listRect; 
+                TAknLayoutRect innerRect;
+    
+                listRect.LayoutRect( rect, 
+                    AknLayoutScalable_Avkon::list_highlight_pane_cp1().LayoutLine() );
+                innerRect.LayoutRect( listRect.Rect(),
+                    AknLayoutScalable_Avkon::list_highlight_pane_g1_cp1().LayoutLine() );
+                
+                MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+                aGc.SetBrushStyle( CGraphicsContext::ESolidBrush ); 
+                // if we have transparent highlight, draw also background under highlight
+                if ( Background() )
+                    {
+                    Background()->Draw( aGc, *this, rect );
+                    }
+                
+                drawOk = AknsDrawUtils::DrawFrame( skin, aGc, rect, innerRect.Rect(), 
+                    KAknsIIDQsnFrList, KAknsIIDDefault );
+    
+                //Both highlight animation and frame drawing failed. 
+                if ( !drawOk )
+                    {
+                    listRect.DrawRect( aGc ); 
+                    innerRect.DrawRect( aGc ); 
+                    }
                 }
             }
-        }
-
-    if ( aHighlight == ERemoveHighlight && Background() )
-        {
-        Background()->Draw( aGc, *this, rect );
-        }
+    
+        if ( aHighlight == ERemoveHighlight && Background() )
+            {
+            Background()->Draw( aGc, *this, rect );
+            }
+    
+        TAknLayoutText layoutText; 
+        layoutText.LayoutText( rect, 
+            AknLayoutScalable_Avkon::list_single_touch_menu_pane_t1().LayoutLine()); 
+    
+        MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+    
+        TRgb textColor(layoutText.Color()); 
+        AknsUtils::GetCachedColor( skin, textColor, KAknsIIDQsnTextColors,
+                                       EAknsCIQsnTextColorsCG20 );
+    
+        layoutText.DrawText( aGc, *(iItems[aItem]->iText), ETrue, textColor ); 
 
-    TAknLayoutText layoutText; 
-    layoutText.LayoutText( rect, 
-        AknLayoutScalable_Avkon::list_single_touch_menu_pane_t1().LayoutLine()); 
-
-    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
-
-    TRgb textColor(layoutText.Color()); 
-    AknsUtils::GetCachedColor( skin, textColor, KAknsIIDQsnTextColors,
-                                   EAknsCIQsnTextColorsCG20 );
-
-    layoutText.DrawText( aGc, *(iItems[aItem]->iText), ETrue, textColor ); 
+        if ( aItem < iLastVisibleItem )
+            {
+            AknListUtils::DrawSeparator( aGc, rect, textColor );
+            }
+		}
     }
 
 // -----------------------------------------------------------------------------
@@ -1041,31 +1085,21 @@
         }
         
     TAknDoubleSpanScrollBarModel vsbarModel;
-    TAknDoubleSpanScrollBarModel hsbarModel;
     
     if ( iSBFrame->VScrollBarVisibility() != CEikScrollBarFrame::EOff )
         {
         vsbarModel.iThumbPosition = thumbPos * singleItemHeight + Offset();
         vsbarModel.iScrollSpan = visibleItems * singleItemHeight;
         vsbarModel.iThumbSpan = fitsToMenu * singleItemHeight;
-            
-        TEikScrollBarFrameLayout layout;
-        layout.iTilingMode=TEikScrollBarFrameLayout::EInclusiveRectConstant;
-        layout.SetClientMargin(0);
-        layout.SetInclusiveMargin(0);
+
+        TAknLayoutRect scrollBarLayout;
+        scrollBarLayout.LayoutRect( listRect,
+                                    AknLayoutScalable_Avkon::scroll_pane() );
+        TRect scrollBarRect( scrollBarLayout.Rect() );
         
-        TBool changed ( EFalse );
-        TRect clientRect( listRect );
-        TRect inclusiveRect( listRect );
-        TRAP_IGNORE ( changed = iSBFrame->TileL( &hsbarModel, 
-                                                 &vsbarModel,
-                                                 clientRect, 
-                                                 inclusiveRect, 
-                                                 layout ) );
-        if ( changed )
-            {
-            iSBFrame->DrawScrollBarsDeferred();
-            }
+        iSBFrame->Tile( &vsbarModel, scrollBarRect );
+        
+        iSBFrame->DrawScrollBarsDeferred();
         }
     }
 
@@ -1245,7 +1279,13 @@
         iItems[i]->iRect = itemRect;
         }
 
-    return lastItem;    
+    if ( lastItem == iItems.Count() )
+        {
+        // substract the partially visible item
+        --lastItem;
+        }
+    
+    return lastItem; 
     }
 
 // ---------------------------------------------------------------------------
@@ -1264,7 +1304,7 @@
 
     TRAP_IGNORE( InitPhysicsL() );
         
-    if ( CalculateShownItems( ENoScroll ) != KNoItemSelected )
+    if ( ( iLastVisibleItem = CalculateShownItems( ENoScroll ) ) != KNoItemSelected )
         {
         UpdateScrollBar();
         DrawNow();
@@ -1282,6 +1322,8 @@
         {
         CWindowGc& gc = SystemGc();
 
+        gc.SetClippingRect( Rect() );
+        
         for ( TInt i=iFirstItem; i < iItems.Count(); i++ )
             {
             if ( iItems[i]->iVisibility != KHidden )
@@ -1290,6 +1332,7 @@
                     ENoHighlight );
                 }
             }
+        gc.CancelClippingRect();
         }
     }
 
@@ -1402,17 +1445,8 @@
         return 0;
         }
             
-    TRect mainPaneRect;
-    AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane,
-                                       mainPaneRect );
     TAknWindowLineLayout listLayout = 
        AknLayoutScalable_Avkon::list_single_touch_menu_pane(0).LayoutLine();
- 
-    TAknTextLineLayout textLayout = 
-       AknLayoutScalable_Avkon::list_single_touch_menu_pane_t1().LayoutLine();
-
-    TAknWindowLineLayout unit = 
-       AknLayoutScalable_Avkon::aid_value_unit2().LayoutLine();
     
     TInt singleItemHeight = listLayout.iH; 
     TInt height = singleItemHeight * visibleItems;
--- a/uifw/EikStd/coctlsrc/aknstyluspopupmenuphysicshandler.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/EikStd/coctlsrc/aknstyluspopupmenuphysicshandler.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -244,7 +244,10 @@
     TSize viewSize( iViewRect.Width(), iViewRect.Height() );
     
     iPhysics->InitPhysicsL( worldSize, viewSize, EFalse );
-    iPhysics->UpdateViewWindowControl( iPopUpMenuContent );
+    if ( iPopUpMenuContent->IsVisible() )
+    	{
+    	iPhysics->UpdateViewWindowControl( iPopUpMenuContent );
+    	}
     }
     
 
@@ -382,7 +385,7 @@
         iPrevTopmostItem = topmostItem;    
         
         //when appear or dispear a tiem,a feedback was given.
-        if ( abs( iPrevOffset ) <= iViewRect.Height()
+        if ( abs( iPrevOffset ) < iViewRect.Height() + iItemHeight
               && ( iPrevOffset/iItemHeight ) != iOffsetItemCount )
             {
             if ( iPhysics )
@@ -412,8 +415,8 @@
                         break;
                     }
                 }
+            iOffsetItemCount = iPrevOffset/iItemHeight;
             }
-        iOffsetItemCount = iPrevOffset/iItemHeight;
         }
     }
 
--- a/uifw/EikStd/coctlsrc/eikcba.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/EikStd/coctlsrc/eikcba.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2002-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -26,6 +26,8 @@
 #include <eiksoftkeypostingtransparency.h>
 #include <eikbtgpc.h>
 #include <aknappui.h>
+#include <eikappui.h>
+#include <eikapp.h>
 #include <AknUtils.h> // LayoutUtils
 #include <aknlayoutscalable_apps.cdl.h>
 #include <AknsBasicBackgroundControlContext.h>
@@ -268,7 +270,6 @@
         iCbaRect = TRect( 0,0,0,0 );
         iIfSkinChanged = EFalse;
         iIfMskIconSet = EFalse;
-        iSemiBgID = KAknsIIDNone;
 
         if ( iOwner.Flags().IsSet( ECbaSingleClickEnabled ) )
             {
@@ -731,16 +732,85 @@
     void DrawSemiTransparencyL(CWindowGc& aGc, 
             const TRect& aRect)
     	{
-    	//Temporary inner rectangal value
-    	TRect innerRect = aRect;
-    	innerRect.Shrink( 5, 5 );
-    	if ( iSemiBgID != KAknsIIDNone )
-	        {
-	        AknsDrawUtils::DrawFrame( AknsUtils::SkinInstance(), 
-	            aGc, aRect, innerRect, iSemiBgID, iSemiBgCenterID );
-	        }
+        aGc.SetBrushStyle( CGraphicsContext::ESolidBrush );
+        aGc.SetBrushColor( TRgb(128, 128, 128, 64) );
+        aGc.Clear();
+        
+        TAknsItemID SemiButtonID = KAknsIIDQgnHomeButtonWidget;
+        TAknsItemID SemiButtonCenterID = KAknsIIDQgnHomeButtonWidgetCenter;
+        TAknsItemID SemiButtonPressedID = KAknsIIDQgnHomeButtonWidget;
+        TAknsItemID SemiButtonPressedCenterID = KAknsIIDQsnFrHomeCenterPressed;
+
+        CEikCbaButton* button1 = static_cast<CEikCbaButton*>
+            (iOwner.Control(KControlArrayCBAButton1Posn));
+        CEikCbaButton* button2 = static_cast<CEikCbaButton*>
+            (iOwner.Control(KControlArrayCBAButton2Posn));
+
+        if (IsMskEnabledLayoutActive())
+            {
+            TRect innerRect = iMiddleFrameOuterRect;
+            innerRect.Shrink(4, 4);
+
+            CEikCbaButton* buttonMSK = static_cast<CEikCbaButton*>
+                (iOwner.Control(KControlArrayCBAButtonMSKPosn));
+
+            if (buttonMSK && buttonMSK->PressedDown())
+                {
+                AknsDrawUtils::DrawFrame(AknsUtils::SkinInstance(), aGc,
+                        iMiddleFrameOuterRect,
+                        innerRect,//iMiddleFrameInnerRect,
+                        SemiButtonPressedID,
+                        SemiButtonPressedCenterID);
+                }
+            else
+                {
+                AknsDrawUtils::DrawFrame(AknsUtils::SkinInstance(), aGc,
+                        iMiddleFrameOuterRect,
+                        innerRect,//iMiddleFrameInnerRect,
+                        SemiButtonID,
+                        SemiButtonCenterID);
+                }
+            }
+
+        TRect innerRect = iLeftFrameOuterRect;
+        innerRect.Shrink(4, 4);
+
+        if (button1 && button1->PressedDown())
+            {
+            AknsDrawUtils::DrawFrame(AknsUtils::SkinInstance(), aGc,
+                    iLeftFrameOuterRect,
+                    innerRect,//iLeftFrameInnerRect,
+                    SemiButtonPressedID,
+                    SemiButtonPressedCenterID);
+            }
+        else
+            {
+            AknsDrawUtils::DrawFrame(AknsUtils::SkinInstance(), aGc,
+                    iLeftFrameOuterRect,
+                    innerRect,//iLeftFrameInnerRect,
+                    SemiButtonID,
+                    SemiButtonCenterID);
+            }
+
+        innerRect = iRightFrameOuterRect;
+        innerRect.Shrink(4, 4);
+        if (button2 && button2->PressedDown())
+            {
+            AknsDrawUtils::DrawFrame(AknsUtils::SkinInstance(), aGc,
+                    iRightFrameOuterRect,
+                    innerRect,//iRightFrameInnerRect,
+                    SemiButtonPressedID,
+                    SemiButtonPressedCenterID);
+            }
+        else
+            {
+            AknsDrawUtils::DrawFrame(AknsUtils::SkinInstance(), aGc,
+                    iRightFrameOuterRect,
+                    innerRect,//iRightFrameInnerRect,
+                    SemiButtonID,
+                    SemiButtonCenterID);
+            }                    
     	}
-
 public:
     
     CEikCba&               iOwner;
@@ -796,11 +866,6 @@
      */
     TRect iUpdateFrameOuterRect;
     
-    /*
-     * Frame and center theme ID, using for semi-transparent  
-     */
-    TAknsItemID            iSemiBgID;
-    TAknsItemID	           iSemiBgCenterID;
     /**
      * Inner rect used in UpdateSoftkeyFrameL method.
      */
@@ -1195,12 +1260,6 @@
         }
 
     iExtension = CEikCbaExtension::NewL( *this );
-    //create bitmap for semi-transparent background
-    if ( iCbaFlags & EEikCbaFlagSemiTransparent && iExtension )
-        {
-        iExtension->iSemiBgID = KAknsIIDQsnHomeBgWidget;
-        iExtension->iSemiBgCenterID = KAknsIIDQsnHomeBgWidgetCenter;
-        }
 
     // Skin background is not drawn by embedded CBA.
     if ( !iFlags.IsSet( ECbaEmbedded ) )
@@ -1333,6 +1392,17 @@
         TResourceReader reader;
         iCoeEnv->CreateResourceReaderLC(reader, aResourceId);
         iCbaFlags = reader.ReadInt32();        // flags resource
+        
+        const TUid KActiveIdle2Uid = {0x102750F0};
+        CEikApplication* app = CEikonEnv::Static()->EikAppUi()->Application();
+        if ( app && app->AppDllUid() == KActiveIdle2Uid )
+            {
+            //it's intereting that the transparent can't not be set after the CBA was created for a while.
+            //it just can be done in the CBA constructor, maybe some defect in Window server, but I'm not sure
+            //about that, in order to fix the defect I have hardcode the transparent flag for homescreen the only usercase.
+            //it should be fixed later.  
+            iCbaFlags |= EEikCbaFlagSemiTransparent;
+            }
     
         // If using enhanced cba.
         if ( (iCbaFlags & EEikEnhancedButtonGroup) == EEikEnhancedButtonGroup ) 
@@ -2773,16 +2843,8 @@
         //
         if ( statusPane &&
              statusPane->IsVisible() &&
-             AknStatuspaneUtils::ExtendedFlatLayoutActive() && 
-             ( iBgIID == KAknsIIDQsnBgAreaControl || 
-               iBgIID == KAknsIIDQsnBgAreaControlIdle ||
-               iBgIID == KAknsIIDQsnBgAreaControlMp ||
-               ( iBgIID == KAknsIIDWallpaper &&
-                 AknStatuspaneUtils::IdleLayoutActive() ) ) ) 
-            {
-            TRect digitalClockRect( 0,0,0,0 );
-            TRect indicatorRect( 0,0,0,0 );
- 
+             AknStatuspaneUtils::ExtendedFlatLayoutActive() )
+            { 
             if ( iBgIID == KAknsIIDQsnBgAreaControlMp )
                 {
                 if ( !iIsClockIndicBgIIDSet )
@@ -2803,35 +2865,65 @@
                     }
                 }
 
-            TRAPD( err1,
-                   indicatorRect = statusPane->PaneRectL( TUid::Uid( 
-                        EEikStatusPaneUidIndic ) ) );
-                                   
-            TRAPD( err2,
-                   digitalClockRect = statusPane->PaneRectL( TUid::Uid( 
-                        EEikStatusPaneUidDigitalClock ) ) );
-
-            if ( !err1 && !err2 )
-                {
-                TPoint cbaPositionRelativeToScreen( PositionRelativeToScreen() );
-                TRect cbaRectRelativeToScreen( cbaPositionRelativeToScreen, Size() );
-
-                if ( cbaRectRelativeToScreen.Intersects( indicatorRect ) )
+            if ( statusPane->PaneCapabilities(
+                     TUid::Uid( EEikStatusPaneUidCombined ) ).IsInCurrentLayout() )
+                {
+                TRect combinedPaneRect( 0, 0, 0, 0 );
+                TRAPD( err,
+                       combinedPaneRect =
+                           statusPane->PaneRectL( TUid::Uid( 
+                               EEikStatusPaneUidCombined ) ) );
+                
+                if ( !err )
                     {
-                    indicatorRect.Move(
-                        -cbaPositionRelativeToScreen.iX,
-                        -cbaPositionRelativeToScreen.iY );
-                        
-                    region.SubRect( indicatorRect );                              
+                    TPoint cbaPositionRelativeToScreen( PositionRelativeToScreen() );
+                    TRect cbaRectRelativeToScreen( cbaPositionRelativeToScreen, Size() );
+                    
+                    if ( cbaRectRelativeToScreen.Intersects( combinedPaneRect ) )
+                        {
+                        combinedPaneRect.Move(
+                            -cbaPositionRelativeToScreen.iX,
+                            -cbaPositionRelativeToScreen.iY );
+                            
+                        region.SubRect( combinedPaneRect );                              
+                        }
                     }
+                }
+            else
+                {
+                TRect digitalClockRect( 0, 0, 0, 0 );
+                TRect indicatorRect( 0, 0, 0, 0 );
+
+                TRAPD( err1,
+                       indicatorRect = statusPane->PaneRectL( TUid::Uid( 
+                           EEikStatusPaneUidIndic ) ) );
+                                               
+                TRAPD( err2,
+                       digitalClockRect = statusPane->PaneRectL( TUid::Uid( 
+                           EEikStatusPaneUidDigitalClock ) ) );
                 
-                if ( cbaRectRelativeToScreen.Intersects( digitalClockRect ) )
+                if ( !err1 && !err2 )
                     {
-                    digitalClockRect.Move(
-                        -cbaPositionRelativeToScreen.iX,
-                        -cbaPositionRelativeToScreen.iY );
-                        
-                    region.SubRect( digitalClockRect );       
+                    TPoint cbaPositionRelativeToScreen( PositionRelativeToScreen() );
+                    TRect cbaRectRelativeToScreen( cbaPositionRelativeToScreen, Size() );
+
+                    if ( cbaRectRelativeToScreen.Intersects( indicatorRect ) )
+                        {
+                        indicatorRect.Move(
+                            -cbaPositionRelativeToScreen.iX,
+                            -cbaPositionRelativeToScreen.iY );
+                            
+                        region.SubRect( indicatorRect );                              
+                        }
+                    
+                    if ( cbaRectRelativeToScreen.Intersects( digitalClockRect ) )
+                        {
+                        digitalClockRect.Move(
+                            -cbaPositionRelativeToScreen.iX,
+                            -cbaPositionRelativeToScreen.iY );
+                            
+                        region.SubRect( digitalClockRect );       
+                        }
                     }
                 }
             }
@@ -3179,22 +3271,6 @@
         {
         iCbaFlags &= ~EEikCbaFlagTransparent;
         }
-    if ( iCbaFlags & EEikCbaFlagSemiTransparent )
-        {
-        if ( iExtension )
-            {
-            iExtension->iSemiBgID = KAknsIIDQsnHomeBgWidget;
-            iExtension->iSemiBgCenterID = KAknsIIDQsnHomeBgWidgetCenter;
-            }
-        }
-    else
-        {
-        if ( iExtension )
-            {
-            iExtension->iSemiBgID = KAknsIIDNone;
-            iExtension->iSemiBgCenterID = KAknsIIDNone;
-            }
-        }
     
     UpdateFonts();
     }
@@ -3285,12 +3361,30 @@
 
     TKeyResponse response(EKeyWasNotConsumed);
 
+    CEikCbaButton* button1 =
+        static_cast<CEikCbaButton*>(
+            (*iControlArray)[KControlArrayCBAButton1Posn].iControl );
+    CEikCbaButton* button2 =
+        static_cast<CEikCbaButton*>(
+            (*iControlArray)[KControlArrayCBAButton2Posn].iControl );
+    CEikCbaButton* buttonMSK = NULL;
+    if ( iMSKset && AknLayoutUtils::MSKEnabled() )
+        {
+        buttonMSK =
+            static_cast<CEikCbaButton*>(
+                (*iControlArray)[KControlArrayCBAButtonMSKPosn].iControl );
+        }
+    
     // AknLaf - changed to use keys defined in AknKeys.h.
     // Left soft key will be returned also when MSK is enabled but not defined.
     if (aKeyEvent.iCode == EKeyCBA1)
         {
         if (KControlArrayCBAButton1Posn < iControlArray->Count())
             {
+            if( button1->IsDimmed() )
+                {
+                return EKeyWasConsumed;
+                }
             // Return immediately if the button is invisible                        
             if ( (*iControlArray)[KControlArrayCBAButton1Posn].iControl &&
                  !(*iControlArray)[KControlArrayCBAButton1Posn].iControl->IsVisible() && 
@@ -3322,6 +3416,10 @@
         {
         if (KControlArrayCBAButton2Posn < iControlArray->Count())
             {
+            if( button2->IsDimmed() )
+                {
+                return EKeyWasConsumed;
+                }
             // Return immediately if the button is invisible.
             if ( (*iControlArray)[KControlArrayCBAButton2Posn].iControl &&
                  !(*iControlArray)[KControlArrayCBAButton2Posn].iControl->IsVisible() && 
@@ -3365,6 +3463,10 @@
                 && aKeyEvent.iCode == EKeyOK
                 && !Window().IsFaded() )
         {
+        if( buttonMSK->IsDimmed() )
+            {
+            return EKeyWasConsumed;
+            }
         if (KControlArrayCBAButtonMSKPosn < iControlArray->Count())
             {
             // Return immediately if the button is invisible.
@@ -3577,6 +3679,11 @@
     // If hits the left softkey.
     if ( button1Rect.Contains( aPointerEvent.iPosition ) && !button1Empty )
         {
+        if( button1->IsDimmed() )
+            {
+        	CCoeControl::HandlePointerEventL( aPointerEvent );
+        	return;
+            }
         if ( button1->IsVisible() )
             {
             if ( aPointerEvent.iType == TPointerEvent::EButton1Down )
@@ -3636,6 +3743,11 @@
         }
     else if ( button2Rect.Contains( aPointerEvent.iPosition ) && !button2Empty )
         {              
+        if( button2->IsDimmed() )
+            {
+        	CCoeControl::HandlePointerEventL( aPointerEvent );
+        	return;
+            }             
         if ( button2->IsVisible() )
             {
             if ( aPointerEvent.iType == TPointerEvent::EButton1Down )
@@ -3697,6 +3809,11 @@
               !buttonMSKEmpty &&
               buttonMSKRect.Contains( aPointerEvent.iPosition ) )
         {
+        if( buttonMSK->IsDimmed() )
+            {
+        	CCoeControl::HandlePointerEventL( aPointerEvent );
+        	return;
+            }
         if  ( buttonMSK->IsVisible() )
             {
             if ( aPointerEvent.iType == TPointerEvent::EButton1Down )
@@ -4199,18 +4316,19 @@
         {
         return;
         }
+    
+    if ( iCbaFlags & EEikCbaFlagSemiTransparent )
+        {
+        CWindowGc &gc = SystemGc();
+
+        iExtension->DrawSemiTransparencyL( gc, Rect() );
+        return;
+        }
 
     MAknsSkinInstance* skin = AknsUtils::SkinInstance();
     
     const TRect rect( Rect() );
     CWindowGc& gc = SystemGc();
-
-    TRgb rgb( TRgb::Color16MA( 0 ) );
-    gc.SetDrawMode( CGraphicsContext::EDrawModeWriteAlpha );
-    gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
-    gc.SetBrushColor( rgb );        
-    gc.Clear();
-  
     MAknsControlContext* cc = iMLBgContext;
     
     if ( iFlags.IsSet( ECbaEmbedded ) )
@@ -4443,13 +4561,6 @@
                     }
                 }
             }
-        else if ( ( iCbaFlags & EEikCbaFlagSemiTransparent) && iExtension )
-            {
-            if ( iExtension->iSemiBgID != KAknsIIDNone )
-                {
-                iExtension->DrawSemiTransparencyL( gc, rect );
-                }
-            }
         else
             {
             // No background since EEikCbaFlagTransparent is set.
@@ -5021,7 +5132,7 @@
         }
         
     if ( iExtension->iEnablePostingTransparency ||
-         ( iCbaFlags & EEikCbaFlagTransparent ) || ( iCbaFlags & EEikCbaFlagSemiTransparent ) )
+         ( iCbaFlags & EEikCbaFlagTransparent ) )
         {
         textVariety = 6; // Outline font used
         }
@@ -5113,7 +5224,7 @@
             }
 
         TInt textMSKVariety = 3;
-        TInt graphicMSKVariety = 0;
+        TInt graphicMSKVariety = 1;
 
         if ( mskEnabledInApplication && mskEnabledInPlatform )
             {
@@ -5163,9 +5274,7 @@
 
         MAknsSkinInstance* skin = AknsUtils::SkinInstance();
         const TBool transparentSoftkeys = 
-            iExtension->iEnablePostingTransparency || 
-            ( iCbaFlags & EEikCbaFlagTransparent ) || 
-            ( iCbaFlags & EEikCbaFlagSemiTransparent );
+            iExtension->iEnablePostingTransparency || ( iCbaFlags & EEikCbaFlagTransparent );
         TRgb leftColor;
         TRgb rightColor;
         TRgb MSKColor;
@@ -6076,7 +6185,7 @@
     TInt rightPaneTextVariety = 0;
     
     if ( iExtension->iEnablePostingTransparency ||
-         ( iCbaFlags & EEikCbaFlagTransparent ) || ( iCbaFlags & EEikCbaFlagSemiTransparent ) )
+         ( iCbaFlags & EEikCbaFlagTransparent ) )
         {
         rightPaneTextVariety = 1; // Outline font used
         }
@@ -7250,7 +7359,7 @@
         TRect rect;
         qgn_graf_sk_msk.LayoutRect(
             rect,
-            AknLayoutScalable_Avkon::control_pane_g4( 0 ).LayoutLine() );
+            AknLayoutScalable_Avkon::control_pane_g4( 1 ).LayoutLine() );
 
         TSize iconSize( qgn_graf_sk_msk.Rect().Width(),
                         qgn_graf_sk_msk.Rect().Height() );
--- a/uifw/EikStd/coctlsrc/eikspane.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/EikStd/coctlsrc/eikspane.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2002-2008 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2002-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -301,6 +301,24 @@
 	return EFalse;
 	}
 
+// ----------------------------------------------------------------------------
+// Sets the container control for the specified control and updates the
+// the whole parent hierarchy.
+// ----------------------------------------------------------------------------
+//
+static void SetContainersL( CCoeControl& aControl,
+                            const CCoeControl& aContainer )
+    {
+    aControl.SetContainerWindowL( aContainer );
+
+    TInt count = aControl.CountComponentControls();
+
+    for ( TInt i = 0; i < count; ++i )
+        {
+        CCoeControl* child = aControl.ComponentControl( i );
+        SetContainersL( *child, aControl );
+        }
+    }
 
 // ---------------------------------------------------------------------------
 // Helper method to compose two layout lines together.
@@ -1146,6 +1164,41 @@
     */
     void HandleResourceChange( TInt aType );
 
+    /**
+     * Sets the parent window of the container control and the child controls
+     * inside it.
+     * 
+     * @param  aParentWindowGroup   If not @c NULL, then the control is made
+     *                              window-owning with this window group
+     *                              as parent.
+     * @param  aParentControl       Control to be set as parent. Note that
+     *                              specifying this parameter has no effect
+     *                              if the @c aParentWindowGroup is not
+     *                              @c NULL.
+     * @param  aRedrawStoreHandler  Pointer to the redraw store handler should
+     *                              be also passed if @c aParentWindowGroup
+     *                              is specified.
+     */
+    void SetParentWindowL( RWindowGroup* aParentWindowGroup,
+                           CCoeControl* aParentControl,
+                           CRedrawStoreHandler* aRedrawStoreHandler );
+    
+    /**
+     * Sets the background drawer for the container control.
+     * 
+     * @param  aBackground  The background drawer.
+     */
+    void SetBackgroundDrawer( MCoeControlBackground* aBackground );
+    
+    /**
+     * Checks if the status pane container is in the idle (Home Screen)
+     * application. This check in required in some places since Home
+     * Screen draws the status pane background itself.
+     * 
+     * @return @c ETrue if in idle application, @c EFalse otherwise.
+     */
+    TBool InIdleApplication();
+
 public: // From base class @c CCoeControl.
 
     /**
@@ -1342,9 +1395,8 @@
 
     CreateWindowL( aParent );
     
-    //This is added for homescreen transparent
-    CEikApplication* app = iEikonEnv->EikAppUi()->Application();
-    if ( app && app->AppDllUid() == KActiveIdle2Uid  )
+    // This is added for homescreen transparency support.
+    if ( InIdleApplication()  )
         {
         if( KErrNone == Window().SetTransparencyAlphaChannel())
             Window().SetBackgroundColor(~0);
@@ -2237,105 +2289,194 @@
         case R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL_FLAT:
         case R_AVKON_WIDESCREEN_PANE_LAYOUT_IDLE_FLAT: // fallthrough
             {
-            TBool idleLayout =
-                aLayoutId == R_AVKON_WIDESCREEN_PANE_LAYOUT_IDLE_FLAT;
-
-            TAknLayoutRect flatWideStatusPane;
-            flatWideStatusPane.LayoutRect(
-                application_window,
-                DoCompose( AknLayoutScalable_Avkon::area_top_pane( 19 ),
-                           AknLayoutScalable_Avkon::status_pane( 4 ) ).LayoutLine() );
-            TRect spRect( flatWideStatusPane.Rect() );
-
-            if ( idleLayout )
+            if ( aContextNumber == 0 )
                 {
-                aBgContext->SetLayerImage( ELayerFlatWallpaper, KAknsIIDWallpaper );
-                aBgContext->SetLayerRect( ELayerFlatWallpaper, screen );
-                maskIID  = KAknsIIDQgnGrafBgLscTopMaskIcon;
-                maskRect = spRect;
+                // We use frame as layered context so that we can avoid having
+                // two separate background contexts in this class.
+                // In any case frame context is implemented using layered
+                // context so this should be quite ok thing to do.
+
+                TAknLayoutRect layoutRect;
+                layoutRect.LayoutRect(
+                    application_window,
+                    AknLayoutScalable_Avkon::area_top_pane( 2 ) );
+                TRect topLayoutRect( layoutRect.Rect() );
+
+                layoutRect.LayoutRect(
+                    topLayoutRect,
+                    AknLayoutScalable_Avkon::status_pane( 1 ) );
+                TRect spRect( layoutRect.Rect() );
+
+                layoutRect.LayoutRect(
+                    spRect,
+                    AknLayoutScalable_Avkon::bg_status_flat_pane( 0 ) );
+                TRect bgRect( layoutRect.Rect() );
+
+                if ( aLayoutId == R_AVKON_WIDESCREEN_PANE_LAYOUT_IDLE_FLAT )
+                    {
+                    TAknLayoutRect extension;
+                    extension.LayoutRect(
+                        application_window,
+                        AknLayoutScalable_Avkon::main_pane( 4 ) );
+
+                    // Wallpaper
+                    aBgContext->SetLayerImage( ELayerFlatWallpaper,
+                                               KAknsIIDWallpaper );
+                    aBgContext->SetLayerRect(  ELayerFlatWallpaper, screen );
+
+                    // Main pane
+                    aBgContext->SetLayerImage( ELayerFlatMain,
+                                               KAknsIIDQsnBgAreaMainIdle );
+                    aBgContext->SetLayerRect( ELayerFlatMain,
+                                              extension.Rect() );
+
+                    // Skin background, transparency support
+                    aBgContext->SetLayerImage( ELayerFlatBackground,
+                                               KAknsIIDQsnBgScreenIdle );
+                    aBgContext->SetLayerRect(  ELayerFlatBackground,
+                                               topLayoutRect );
+
+                    // CBA area
+                    aBgContext->SetLayerImage( ELayerFlatCba,
+                                               KAknsIIDQsnBgAreaControlIdle );
+                    aBgContext->SetLayerRect( ELayerFlatCba, cbaRect );
+                    }
+                 else
+                    { // Not Idle.
+                    // Main pane
+                    aBgContext->SetLayerImage( ELayerFlatMain, KAknsIIDNone );
+
+                    // Wallpaper
+                    aBgContext->SetLayerImage( ELayerFlatWallpaper,
+                                               KAknsIIDNone );
+
+                    // Skin background, transparency support
+                    aBgContext->SetLayerImage( ELayerFlatBackground,
+                                               KAknsIIDQsnBgScreen );
+                    aBgContext->SetLayerRect( ELayerFlatBackground, screen );
+
+                    // CBA area
+                    aBgContext->SetLayerImage( ELayerFlatCba, aCbaBgID );
+                    aBgContext->SetLayerRect( ELayerFlatCba, cbaRect );
+                    }
+
+                MAknsSkinInstance* si = AknsUtils::SkinInstance();
+                CAknsItemData* idata  = NULL;
+                if ( si )
+                    {
+                    TRAP_IGNORE(
+                        idata = si->CreateUncachedItemDataL(
+                            KAknsIIDQsnFrStatusFlat, EAknsITImageTable ) );
+                    }
+
+                if ( idata ) // 9 piece frame used
+                    {
+                    layoutRect.LayoutRect( bgRect, AknLayoutScalable_Avkon::bg_status_flat_pane_g2() );
+                    aBgContext->SetLayerImage( ELayerFlatTl, KAknsIIDQsnFrStatusFlatCornerTl );
+                    aBgContext->SetLayerRect( ELayerFlatTl, layoutRect.Rect() );
+
+                    layoutRect.LayoutRect( bgRect, AknLayoutScalable_Avkon::bg_status_flat_pane_g3() );
+                    aBgContext->SetLayerImage( ELayerFlatTr, KAknsIIDQsnFrStatusFlatCornerTr );
+                    aBgContext->SetLayerRect( ELayerFlatTr, layoutRect.Rect() );
+
+                    layoutRect.LayoutRect( bgRect, AknLayoutScalable_Avkon::bg_status_flat_pane_g4() );
+                    aBgContext->SetLayerImage( ELayerFlatBl, KAknsIIDQsnFrStatusFlatCornerBl );
+                    aBgContext->SetLayerRect( ELayerFlatBl, layoutRect.Rect() );
+
+                    layoutRect.LayoutRect( bgRect, AknLayoutScalable_Avkon::bg_status_flat_pane_g5() );
+                    aBgContext->SetLayerImage( ELayerFlatBr, KAknsIIDQsnFrStatusFlatCornerBr );
+                    aBgContext->SetLayerRect( ELayerFlatBr, layoutRect.Rect() );
+
+                    layoutRect.LayoutRect( bgRect, AknLayoutScalable_Avkon::bg_status_flat_pane_g6() );
+                    aBgContext->SetLayerImage( ELayerFlatT,  KAknsIIDQsnFrStatusFlatSideT);
+                    aBgContext->SetLayerRect( ELayerFlatT, layoutRect.Rect() );
+
+                    layoutRect.LayoutRect( bgRect, AknLayoutScalable_Avkon::bg_status_flat_pane_g7() );
+                    aBgContext->SetLayerImage( ELayerFlatB, KAknsIIDQsnFrStatusFlatSideB );
+                    aBgContext->SetLayerRect( ELayerFlatB, layoutRect.Rect() );
+
+                    layoutRect.LayoutRect( bgRect, AknLayoutScalable_Avkon::bg_status_flat_pane_g9() );
+                    aBgContext->SetLayerImage( ELayerFlatR, KAknsIIDQsnFrStatusFlatSideR );
+                    aBgContext->SetLayerRect( ELayerFlatR, layoutRect.Rect() );
+
+                    layoutRect.LayoutRect( bgRect, AknLayoutScalable_Avkon::bg_status_flat_pane_g8() );
+                    aBgContext->SetLayerImage( ELayerFlatL, KAknsIIDQsnFrStatusFlatSideL );
+                    aBgContext->SetLayerRect( ELayerFlatL, layoutRect.Rect() );
+
+                    layoutRect.LayoutRect( bgRect, AknLayoutScalable_Avkon::bg_status_flat_pane_g1() );
+                    aBgContext->SetLayerImage( ELayerFlatCenter, KAknsIIDQsnFrStatusFlatCenter );
+                    aBgContext->SetLayerRect( ELayerFlatCenter, layoutRect.Rect() );
+
+                    if ( aLayoutId == R_AVKON_WIDESCREEN_PANE_LAYOUT_IDLE_FLAT )
+                        {
+                        maskIID = KAknsIIDQgnGrafBgLscTopMaskIcon;
+                        maskRect = spRect;
+                        }
+                    }
+                else // handle one piece version here
+                    {
+                    if ( aLayoutId == R_AVKON_WIDESCREEN_PANE_LAYOUT_IDLE_FLAT )
+                        {
+                        // Wallpaper
+                        aBgContext->SetLayerImage( ELayerFlatWallpaper,
+                                                   KAknsIIDWallpaper );
+                        aBgContext->SetLayerRect( ELayerFlatWallpaper,
+                                                  staconTop );
+
+                        // Skin background
+                        aBgContext->SetLayerImage( ELayerFlatBackground,
+                                                   KAknsIIDQsnFrStatusFlat );
+                        aBgContext->SetLayerRect( ELayerFlatBackground,
+                                                  bgRect );
+
+                        // Set all other frame parts empty as they
+                        // might already be filled with something
+                        for ( TInt n = ELayerFlatBackground + 1; n <= ELayerFlatCenter; n++ )
+                           {
+                           aBgContext->SetLayerImage( n, KAknsIIDNone );
+                           }
+
+                        maskIID = KAknsIIDQgnGrafBgLscTopMaskIcon;
+                        maskRect = spRect;
+                        }
+                    else
+                        {
+                        aBgContext->SetLayerImage( ELayerFlatWallpaper,
+                                                   KAknsIIDQsnFrStatusFlat );
+                        aBgContext->SetLayerRect( ELayerFlatWallpaper,
+                                                  bgRect );
+
+                        // Set all other frame parts empty as they
+                        // might already be filled with something
+                        for ( TInt n = ELayerFlatBackground; n <= ELayerFlatCenter; n++ )
+                            {
+                            aBgContext->SetLayerImage( n, KAknsIIDNone );
+                            }
+                        }
+                    }
+
+                delete idata;
                 }
-
-            aBgContext->SetLayerImage( ELayerFlatMain, KAknsIIDNone );
-
-            aBgContext->SetLayerImage( ELayerFlatCba, KAknsIIDNone );
-
-            MAknsSkinInstance* si = AknsUtils::SkinInstance();
-            CAknsItemData* idata = NULL;
-            if ( si )
+            else // context == 1 - this is the area removed from CBA for clock
+                 // and indicator panes.
                 {
-                TRAP_IGNORE(
-                    idata = si->CreateUncachedItemDataL( KAknsIIDQsnFrStatusFlat,
-                                                         EAknsITImageTable ) );
-                }
-
-            if ( idata ) // 9 piece frame used
-                {
-                if ( aCbaBgID == KAknsIIDQsnBgAreaControlMp )
+                if ( aLayoutId == R_AVKON_WIDESCREEN_PANE_LAYOUT_IDLE_FLAT )
                     {
-                    aBgContext->SetLayerImage( ELayerFlatBackground,
-                                               KAknsIIDQsnBgScreenMp );
+                    aBgContext->SetLayerImage( ELayerFlatCbaWp,
+                                               KAknsIIDWallpaper );
+                    aBgContext->SetLayerRect( ELayerFlatCbaWp, screen );
+
+                    maskIID = KAknsIIDQgnGrafBgLscBottomMaskIcon;
+                    maskRect = cbaRect;
                     }
                 else
                     {
-                    aBgContext->SetLayerImage(
-                        ELayerFlatBackground,
-                        idleLayout ? KAknsIIDQsnBgScreenIdle :
-                                     KAknsIIDQsnBgScreen );
+                    aBgContext->SetLayerImage( ELayerFlatCbaWp, KAknsIIDNone );
                     }
-                aBgContext->SetLayerRect( ELayerFlatBackground, screen );
-
-                TAknWindowLineLayout layout( AknLayoutScalable_Avkon::bg_status_flat_pane_g2().LayoutLine() );
-                layoutRect.LayoutRect( spRect, layout );
-                aBgContext->SetLayerImage( ELayerFlatTl, KAknsIIDQsnFrStatusFlatCornerTl );
-                aBgContext->SetLayerRect( ELayerFlatTl, layoutRect.Rect() );
-
-                layout = AknLayoutScalable_Avkon::bg_status_flat_pane_g3().LayoutLine();
-                layoutRect.LayoutRect( spRect, AknLayoutScalable_Avkon::bg_status_flat_pane_g3() );
-                aBgContext->SetLayerImage( ELayerFlatTr, KAknsIIDQsnFrStatusFlatCornerTr );
-                aBgContext->SetLayerRect( ELayerFlatTr, layoutRect.Rect());
-
-                layout = AknLayoutScalable_Avkon::bg_status_flat_pane_g4().LayoutLine();
-                layoutRect.LayoutRect( spRect, layout );
-                aBgContext->SetLayerImage( ELayerFlatBl, KAknsIIDQsnFrStatusFlatCornerBl );
-                aBgContext->SetLayerRect( ELayerFlatBl, layoutRect.Rect() );
-
-                layout = AknLayoutScalable_Avkon::bg_status_flat_pane_g5().LayoutLine();
-                layoutRect.LayoutRect( spRect, layout );
-                aBgContext->SetLayerImage( ELayerFlatBr, KAknsIIDQsnFrStatusFlatCornerBr );
-                aBgContext->SetLayerRect( ELayerFlatBr, layoutRect.Rect() );
-
-                layout = AknLayoutScalable_Avkon::bg_status_flat_pane_g6().LayoutLine();
-                layoutRect.LayoutRect( spRect, layout );
-                aBgContext->SetLayerImage( ELayerFlatT,  KAknsIIDQsnFrStatusFlatSideT);
-                aBgContext->SetLayerRect( ELayerFlatT, layoutRect.Rect() );
-
-                layout = AknLayoutScalable_Avkon::bg_status_flat_pane_g7().LayoutLine();
-                layoutRect.LayoutRect( spRect, layout );
-                aBgContext->SetLayerImage( ELayerFlatB, KAknsIIDQsnFrStatusFlatSideB );
-                aBgContext->SetLayerRect( ELayerFlatB, layoutRect.Rect() );
-
-                layout = AknLayoutScalable_Avkon::bg_status_flat_pane_g9().LayoutLine();
-                layoutRect.LayoutRect( spRect, layout );
-                aBgContext->SetLayerImage( ELayerFlatR, KAknsIIDQsnFrStatusFlatSideR );
-                aBgContext->SetLayerRect( ELayerFlatR, layoutRect.Rect() );
-
-                layout = AknLayoutScalable_Avkon::bg_status_flat_pane_g8().LayoutLine();
-                layoutRect.LayoutRect( spRect, layout );
-                aBgContext->SetLayerImage( ELayerFlatL, KAknsIIDQsnFrStatusFlatSideL );
-                aBgContext->SetLayerRect( ELayerFlatL, layoutRect.Rect() );
-
-                layout = AknLayoutScalable_Avkon::bg_status_flat_pane_g1().LayoutLine();
-                layoutRect.LayoutRect( spRect, layout );
-                aBgContext->SetLayerImage( ELayerFlatCenter, KAknsIIDQsnFrStatusFlatCenter );
-                aBgContext->SetLayerRect( ELayerFlatCenter, layoutRect.Rect() );
-
-                delete idata;
-                }
-            else
-                {
-                aBgContext->SetLayerImage( ELayerFlatBackground,
-                                           KAknsIIDQsnFrStatusFlat );
-                aBgContext->SetLayerRect( ELayerFlatBackground, spRect );
+
+                aBgContext->SetLayerImage( ELaterFlatCbaSkin,
+                                           KAknsIIDQsnBgAreaControlIdle );
+                aBgContext->SetLayerRect( ELaterFlatCbaSkin, cbaRect );
                 }
 
             break;
@@ -2474,6 +2615,100 @@
 
 
 // ---------------------------------------------------------------------------
+// Sets the parent window of the container control and the child controls
+// inside it.
+// ---------------------------------------------------------------------------
+//
+void CEikStatusPaneContainer::SetParentWindowL(
+    RWindowGroup* aParentWindowGroup,
+    CCoeControl* aParentControl,
+    CRedrawStoreHandler* aRedrawStoreHandler )
+    {
+    if ( aParentWindowGroup )
+        {
+        MakeVisible( EFalse );
+    
+        SetMopParent( iEikonEnv->EikAppUi() );
+        SetParent( NULL );
+
+        if ( OwnsWindow() )
+            {
+            CloseWindow();
+            }
+
+        CreateWindowL( aParentWindowGroup );
+
+        // Enable the transparency only in HomeScreen where it's needed
+        // for performance reasons.
+        if ( InIdleApplication() )
+            {
+            EnableWindowTransparency();
+            }
+        else
+            {
+            Window().SetBackgroundColor(
+                iEikonEnv->ControlColor( EColorStatusPaneBackground, *this ) );
+            }
+
+        RWindow& window = Window();
+        if ( aRedrawStoreHandler )
+            {
+            aRedrawStoreHandler->SetStore( &window, KEnableRedrawStoring );
+            }
+        
+        window.SetPointerGrab( ETrue );
+        window.SetShadowDisabled( ETrue );
+        window.SetNonFading( !LafStatusPaneContainer::AllowFading() );
+        EnableDragEvents();
+
+        SetContainersL( *iControl, *this );
+        
+        ActivateL();
+        }
+    else if ( aParentControl )
+        {
+        SetContainersL( *this, *aParentControl );
+        }
+    }
+
+
+// ---------------------------------------------------------------------------
+// Sets the background drawer for the container control.
+// ---------------------------------------------------------------------------
+//
+void CEikStatusPaneContainer::SetBackgroundDrawer(
+    MCoeControlBackground* aBackground )
+    {
+    if ( aBackground && InIdleApplication() )
+        {
+        // In Home Screen the application draws also the status
+        // pane background.
+        aBackground = NULL;
+        }
+    
+    SetBackground( aBackground );
+    }
+
+
+// ---------------------------------------------------------------------------
+// Checks if the status pane container is in the Home Screen application.
+// ---------------------------------------------------------------------------
+//
+TBool CEikStatusPaneContainer::InIdleApplication()
+    {
+    TBool retVal( EFalse );
+
+    CEikApplication* app = iEikonEnv->EikAppUi()->Application();
+    if ( app && app->AppDllUid() == KActiveIdle2Uid  )
+        {
+        retVal = ETrue;
+        }
+
+    return retVal;
+    }
+
+
+// ---------------------------------------------------------------------------
 // CEikStatusPaneContainer::Draw
 // Draws the pane.
 // ---------------------------------------------------------------------------
@@ -2653,7 +2888,8 @@
 /**
  * Internal extension class
  */
-class CEikStatusPaneBaseExtension : public CBase
+class CEikStatusPaneBaseExtension : public CBase,
+                                    public MCoeControlBackground
     {
 public:
     static CEikStatusPaneBaseExtension* NewL()
@@ -2675,6 +2911,24 @@
         {
         };
 
+    // From base class MCoeControlBackground
+    // This is used for drawing background of all status pane containers.
+    void Draw( CWindowGc& aGc,
+               const CCoeControl& aControl,
+               const TRect& aRect ) const
+        {
+        if ( iCommonBgContext )
+            {
+            AknsDrawUtils::DrawBackground( AknsUtils::SkinInstance(),
+                                           AknsDrawUtils::ControlContext( &aControl ),
+                                           &aControl,
+                                           aGc,
+                                           TPoint( 0, 0 ),
+                                           aRect,
+                                           KAknsDrawParamDefault );
+            }
+        }
+		
 public:
 
     /** Resource id that last has been reuqested by app using switch layout. */
@@ -2800,6 +3054,11 @@
 	    	}
     	}
 
+    // Check if combined pane was used in the previous status pane layout
+    // to avoid unnecessary subpane parent hierarchy changes.
+    TBool combinedPaneInOldLayout(
+        PaneCapabilities(
+            TUid::Uid( EEikStatusPaneUidCombined ) ).IsInCurrentLayout() );
 
     // If AknLayout system is used for placing statuspane elements, then
     // we need to be less strict when new layout is applied or size change
@@ -2831,6 +3090,16 @@
 		// Need to refresh the model's layout.
 	    iModel->AknLayoutRefresh();
 
+        // Update the combined pane's subpane parent hierarchy if necessary. 
+        TBool combinedPaneInCurrentLayout(
+            PaneCapabilities(
+                TUid::Uid( EEikStatusPaneUidCombined ) ).IsInCurrentLayout() );
+        if ( !COMPARE_BOOLS( combinedPaneInOldLayout,
+                             combinedPaneInCurrentLayout ) )
+            {
+            SetCombinedPaneVisibilityL( combinedPaneInCurrentLayout );
+            }
+
         TBool drawNavi = ETrue;
 
 		if ( clearer )
@@ -3081,6 +3350,11 @@
 	iControls =
 	    new (ELeave) CContainerControls( KEikStatusPaneControlGranularity );
 	CreatePanesL();
+	
+	SetCombinedPaneVisibilityL(
+	    PaneCapabilities(
+            TUid::Uid( EEikStatusPaneUidCombined ) ).IsInCurrentLayout() );
+	
 	ApplyLayoutL( iModel->CurrentLayout(), ENoDraw );
 
 	// Clearer is not needed anymore if all panes are drawn in app side.
@@ -3129,6 +3403,9 @@
             iExtension->iCommonBgContext->GetControlContext( 1 ) ),
         iExtension->iDataSubscriber,
         *iExtension->iRedrawStoreHandler );
+
+    cont->SetBackgroundDrawer( iExtension );
+
     CleanupStack::PushL( cont );
     iControls->AppendL( cont );
     CleanupStack::Pop( cont );
@@ -3164,7 +3441,9 @@
     // has two background contextes.
     if ( ( layoutResId == R_AVKON_STACON_PANE_LAYOUT_IDLE_SOFTKEYS_LEFT ||
            layoutResId == R_AVKON_STACON_PANE_LAYOUT_IDLE_SOFTKEYS_RIGHT ||
-           layoutResId == R_AVKON_STATUS_PANE_LAYOUT_IDLE_FLAT ) )
+           layoutResId == R_AVKON_STATUS_PANE_LAYOUT_IDLE_FLAT ||
+           layoutResId == R_AVKON_WIDESCREEN_PANE_LAYOUT_IDLE_FLAT ||
+           layoutResId == R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL_FLAT ) )
         {
         partOfCombinedContext =
             iExtension->iCommonBgContext->GetControlContext( 1 );
@@ -3510,6 +3789,55 @@
     }
 
 
+// ---------------------------------------------------------------------------
+// CEikStatusPaneBase::SetCombinedPaneVisibility
+// Updates the parent hierarchy of subpanes in the combined pane based
+// on whether or not the combined pane is used in the current status pane
+// layout.
+// ---------------------------------------------------------------------------
+//
+void CEikStatusPaneBase::SetCombinedPaneVisibilityL( TBool aVisible )
+    {
+    CEikStatusPaneContainer* combinedPane =
+        Find( TUid::Uid( EEikStatusPaneUidCombined ) );
+    if ( combinedPane )
+        {
+        CCoeControl* combinedPaneControl = combinedPane->Control();
+
+        // The subpane container controls inside combined pane are it's
+        // component controls.
+        TInt count( combinedPaneControl->CountComponentControls() );
+
+        for ( TInt i = 0; i < count; ++i )
+            {
+            CEikStatusPaneContainer* subPane =
+                static_cast<CEikStatusPaneContainer*>(
+                    combinedPaneControl->ComponentControl( i ) );
+            if ( subPane )
+                {
+                if ( aVisible )
+                    {
+                    subPane->SetParentWindowL( NULL,
+                                               combinedPaneControl,
+                                               NULL );
+                    // Background is drawn by the combined pane so remove
+                    // the subpane's own background drawer. 
+                    subPane->SetBackgroundDrawer( NULL );
+                    }
+                else
+                    {
+                    subPane->SetParentWindowL(
+                        iParentWindowGroup,
+                        NULL,
+                        iExtension ? iExtension->iRedrawStoreHandler : NULL );
+                    subPane->SetBackgroundDrawer( iExtension );
+                    }
+                }
+            }
+        }
+    }
+
+
 /**
  * Visitor class for collecting the sub-pane areas to a single region.
  */
--- a/uifw/EikStd/coctlsrc/eikspmod.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/EikStd/coctlsrc/eikspmod.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2002-2008 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2002-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -620,10 +620,11 @@
 	                if (Layout_Meta_Data::IsLandscapeOrientation())
 	                     {
 	                     TAknLayoutRect layoutRect;
-	                     TAknWindowComponentLayout parentLayout = aknLayoutScalable_Avkon.area_top_pane(8);
-	                     layoutRect.LayoutRect(screenRect, parentLayout.LayoutLine());
+	                     layoutRect.LayoutRect(
+	                         screenRect,
+	                         aknLayoutScalable_Avkon.area_top_pane( 2 ) );
 	                     parentRect = layoutRect.Rect();
-	                     layout = aknLayoutScalable_Avkon.battery_pane(2).LayoutLine();
+	                     layout = aknLayoutScalable_Avkon.battery_pane( 14 ).LayoutLine();
 	                     }
 	                 else
 	                     {
@@ -1364,11 +1365,11 @@
                 TAknLayoutRect layout1ParentRect;
                 layout1ParentRect.LayoutRect(
                     iLayout->iApplicationWindowRect,
-                    iLayout->iAknLayoutScalable_Avkon.area_top_pane( 19 ).LayoutLine() );
+                    iLayout->iAknLayoutScalable_Avkon.area_top_pane( 2 ).LayoutLine() );
                 TAknLayoutRect layout1Rect;
                 layout1Rect.LayoutRect(
                     layout1ParentRect.Rect(),
-                    iLayout->iAknLayoutScalable_Avkon.status_pane( 4 ).LayoutLine() );
+                    iLayout->iAknLayoutScalable_Avkon.status_pane( 1 ).LayoutLine() );
                 parentRect = layout1Rect.Rect();
                 
                 switch ( aPaneId.iUid )
@@ -1382,7 +1383,7 @@
                     case EEikStatusPaneUidSignal:
                         {
                         layout =
-                            aknLayoutScalable_Avkon.signal_pane( 11 ).LayoutLine();
+                            aknLayoutScalable_Avkon.signal_pane( 14 ).LayoutLine();
                         break;
                         }
                     case EEikStatusPaneUidTitle:
@@ -1393,14 +1394,68 @@
                         }
                     case EEikStatusPaneUidIndic:
                         {
-                        layout =
-                            aknLayoutScalable_Avkon.uni_indicator_pane( 3 ).LayoutLine();
+                        TAknWindowComponentLayout nstaClockIndicPane(
+                            DoCompose(
+                                aknLayoutScalable_Avkon.area_bottom_pane( 2 ),
+                                DoCompose(
+                                    aknLayoutScalable_Avkon.control_pane(),
+                                    aknLayoutScalable_Avkon.nsta_clock_indic_pane() ) ) );
+                        TAknLayoutRect layoutRect;
+                        layoutRect.LayoutRect( applicationWindowRect,
+                                               nstaClockIndicPane );
+                        parentRect = layoutRect.Rect();
+                        
+                        layout = aknLayoutScalable_Avkon.indicator_nsta_pane_cp().LayoutLine();
+                        layoutRect.LayoutRect( parentRect, layout );
+                        paneRect = layoutRect.Rect();
+                        
+                        // Digital clock pane resides inside the
+                        // combined pane, so it must be made relative to the
+                        // combined pane rectangle instead of the screen.
+                        paneRect.Move( applicationWindowRect.iTl.iX - parentRect.iTl.iX,
+                                       applicationWindowRect.iTl.iY - parentRect.iTl.iY );
                         break;
                         }
                     case EEikStatusPaneUidBattery:
                         {
                         layout =
-                            aknLayoutScalable_Avkon.battery_pane( 11 ).LayoutLine();
+                            aknLayoutScalable_Avkon.battery_pane( 14 ).LayoutLine();
+                        break;
+                        }
+                    case EEikStatusPaneUidDigitalClock:
+                        {
+                        TAknWindowComponentLayout nstaClockIndicPane(
+                            DoCompose(
+                                aknLayoutScalable_Avkon.area_bottom_pane( 2 ),
+                                DoCompose(
+                                    aknLayoutScalable_Avkon.control_pane(),
+                                    aknLayoutScalable_Avkon.nsta_clock_indic_pane() ) ) );
+                        TAknLayoutRect layoutRect;
+                        layoutRect.LayoutRect( applicationWindowRect,
+                                               nstaClockIndicPane );
+                        parentRect = layoutRect.Rect();
+                        
+                        layout = aknLayoutScalable_Avkon.clock_nsta_pane_cp().LayoutLine();
+                        layoutRect.LayoutRect( parentRect, layout );
+                        paneRect = layoutRect.Rect();
+                        
+                        // Digital clock pane resides inside the
+                        // combined pane, so it must be made relative to the
+                        // combined pane rectangle instead of the screen.
+                        paneRect.Move( applicationWindowRect.iTl.iX - parentRect.iTl.iX,
+                                       applicationWindowRect.iTl.iY - parentRect.iTl.iY );
+                        break;
+                        }
+                    case EEikStatusPaneUidCombined:
+                        {
+                        TAknWindowComponentLayout nstaClockIndicPane(
+                            DoCompose(
+                                aknLayoutScalable_Avkon.area_bottom_pane( 2 ),
+                                DoCompose(
+                                    aknLayoutScalable_Avkon.control_pane(),
+                                    aknLayoutScalable_Avkon.nsta_clock_indic_pane() ) ) );
+                        layout = nstaClockIndicPane.LayoutLine();
+                        parentRect = applicationWindowRect;
                         break;
                         }
                     }
@@ -1426,8 +1481,16 @@
                     {
                     case EEikStatusPaneUidNavi: 
                         {
-                        layout =
-                            aknLayoutScalable_Avkon.navi_pane( 11 ).LayoutLine();
+                        if ( aLayoutId == R_AVKON_WIDESCREEN_PANE_LAYOUT_IDLE_FLAT_NO_SOFTKEYS )
+                            {
+                            layout =
+                                aknLayoutScalable_Avkon.navi_pane( 10 ).LayoutLine();
+                            }
+                        else
+                            {
+                            layout =
+                                aknLayoutScalable_Avkon.navi_pane( 11 ).LayoutLine();
+                            }
                         break;
                         }
                     case EEikStatusPaneUidSignal:
@@ -1438,8 +1501,16 @@
                         }
                     case EEikStatusPaneUidTitle:
                         {
-                        layout =
-                            aknLayoutScalable_Avkon.title_pane( 13 ).LayoutLine();                    
+                        if ( aLayoutId == R_AVKON_WIDESCREEN_PANE_LAYOUT_IDLE_FLAT_NO_SOFTKEYS )
+                            {
+                            layout =
+                                aknLayoutScalable_Avkon.title_pane( 12 ).LayoutLine();
+                            }
+                        else
+                            {
+                            layout =
+                                aknLayoutScalable_Avkon.title_pane( 13 ).LayoutLine();
+                            }
                         break;
                         }
                     case EEikStatusPaneUidIndic:
--- a/uifw/EikStd/dlginc/aknrecordinggc.h	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/EikStd/dlginc/aknrecordinggc.h	Fri Feb 19 23:04:46 2010 +0200
@@ -164,7 +164,8 @@
             ESetBrushColor,
             ESetBrushStyle,
             EDrawRect,
-            EClear
+            EClear,
+            EDrawLine
             };
         
         public:
--- a/uifw/EikStd/dlgsrc/EIKCAPC.CPP	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/EikStd/dlgsrc/EIKCAPC.CPP	Fri Feb 19 23:04:46 2010 +0200
@@ -80,7 +80,7 @@
 #include <aknmfnecommandobserver.h>
 #endif //if defined( RD_SCALABLE_UI_V2)
 
-
+#include "akntrace.h"
 
 GLREF_C void Panic(TEikDialogPanic aPanic);
 
@@ -394,20 +394,24 @@
 	iIdleData(NULL),
     iPartiallyVisible( EFalse )
     {
+    _AKNTRACE_FUNC_ENTER;
     if ( iAvkonAppUi )
         {
         iUsesSingleClick = iAvkonAppUi->IsSingleClickCompatible();
         }
+    _AKNTRACE_FUNC_EXIT;
     };
 
 CEikCapCExtension::~CEikCapCExtension()
     {
+    _AKNTRACE_FUNC_ENTER;
     // Remember to unacquire animation
     if( iAnimation && iSelf )
         {
         if( iSelf->iDialogPage )
             iSelf->iDialogPage->AcquireAnim( EFalse, this );
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 TBool CEikCapCExtension::IsHighlightAnimated() const
@@ -424,6 +428,7 @@
 
 void CEikCapCExtension::SkinChanged()
     {
+    _AKNTRACE_FUNC_ENTER;
     iAnimation = NULL;
     if( iSelf->iDialogPage )
         iAnimation = iSelf->iDialogPage->AcquireAnim( ETrue, this );
@@ -432,10 +437,12 @@
         {
         iAnimation->SetHighlightSize( iSelf->Rect().Size() );
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 void CEikCapCExtension::HandleLayoutSwitch( const TSize& aSize )
     {
+    _AKNTRACE_FUNC_ENTER;
     if( iAnimation )
         {
         if( iAnimation->Size() == aSize )
@@ -449,6 +456,7 @@
             iAnimation->SetHighlightSize( aSize );
             }
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 void CEikCapCExtension::AnimFrameReady()
@@ -589,6 +597,7 @@
 */
 void CEikCaptionedControlFormHighlightLine::Draw(const TRect& /*aRect*/) const
     {
+    _AKNTRACE_FUNC_ENTER;
     CWindowGc& gc=SystemGc();
     TBool drawn = EFalse;
 
@@ -658,6 +667,7 @@
                 }
             }
         }
+    _AKNTRACE_FUNC_EXIT;
     };
 
 
@@ -698,6 +708,7 @@
 
 TBool CEikCaptionedControlFormHighlightLine::DrawingSkins() const
     {
+    _AKNTRACE_FUNC_ENTER;
     TBool drawingSkins = EFalse;
     if ( AknsUtils::AvkonSkinEnabled() )
         {
@@ -706,17 +717,21 @@
         CWindowGc& gc = SystemGc();
         drawingSkins = AknsDrawUtils::Background( skin, cc, this, gc, Rect(), KAknsDrawParamPrepareOnly ); 
         }
+    _AKNTRACE_FUNC_EXIT;
     return drawingSkins;
     }
 
 EXPORT_C CEikCaptionedControl::CEikCaptionedControl() : iHasAppendedEditIndicator(EFalse)
     {
+    _AKNTRACE_FUNC_ENTER;
     iNumberOfLines = 1 ;  // default starting value
     AKNTASHOOK_ADD( this, "CEikCaptionedControl" );
+    _AKNTRACE_FUNC_EXIT;
     }
 
 EXPORT_C CEikCaptionedControl::~CEikCaptionedControl()
     {
+    _AKNTRACE_FUNC_ENTER;
     AKNTASHOOK_REMOVE();
     AknsUtils::DeregisterControlPosition(this);
     AknsUtils::DeregisterControlPosition(iBitmap);
@@ -749,6 +764,7 @@
   		delete iExtension->iIndicator2;
         }
     delete iExtension ; 
+    _AKNTRACE_FUNC_EXIT;
     }
 
 EXPORT_C void CEikCaptionedControl::SetPointerEventObserver(MPointerEventObserver *aObserver)
@@ -792,12 +808,14 @@
 
 EXPORT_C TSize CEikCaptionedControl::MinimumSize()
     {
+    _AKNTRACE_FUNC_ENTER;
 // NTBD Add an extra line for those with the label on a separate 
     if ( iIsFormControl )
         {
         if (iControl->IsDimmed())
             {
             iSize = TSize( 0, 0) ; 
+            _AKNTRACE_FUNC_EXIT;
             return iSize;
             }
         // We can get the minimum size from the resource - and the size of the editor (EditorControlSize() in lines)
@@ -872,6 +890,7 @@
         // ------------------------
 
         iSize = layout.Size();
+        _AKNTRACE_FUNC_EXIT;
         return ( iSize ) ;
         }
     else
@@ -948,6 +967,7 @@
         if ( iDoNotDisplay )
             // This flag is set if the control is not to be shown - so set it's height to zero
             iMinSize.iHeight = 0 ;
+        _AKNTRACE_FUNC_EXIT;
        return(size);
         }
     }
@@ -959,6 +979,7 @@
 */
 EXPORT_C void CEikCaptionedControl::SizeChanged()
     {
+    _AKNTRACE_FUNC_ENTER;
     // Resize the animation
     if( iIsFormControl && iExtension->iAnimation )
         {
@@ -1125,6 +1146,7 @@
             mfne->SetSuppressBackgroundDrawing( EFalse );
             }
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 
@@ -1366,6 +1388,7 @@
 
 static TInt IdleCallback(TAny *aAny)
 {
+	_AKNTRACE_FUNC_ENTER;
 	CIdleCallbackData *data = (CIdleCallbackData*)aAny;
 	CEikCapCExtension *ext = data->iExt;
 	CEikCaptionedControl *ctrl = data->iCtrl;
@@ -1378,11 +1401,13 @@
 	ext->iIdle = NULL;
 	delete data;
 	ext->iIdleData = NULL;
+	_AKNTRACE_FUNC_EXIT;
 	return EFalse;	
 }
 
 void CEikCaptionedControl::ScrollBackEditor()
 {
+_AKNTRACE_FUNC_ENTER;
         //
 		// For long single-line edwin, scroll horizontally to show beginning of the edwin
 		// when focus changes away from the edwin.
@@ -1397,10 +1422,12 @@
 			iExtension->iIdle = CIdle::NewL(0);
 			iExtension->iIdle->Start(TCallBack(&IdleCallback, iExtension->iIdleData));
 			}	
+_AKNTRACE_FUNC_EXIT;
 }
 
 EXPORT_C void CEikCaptionedControl::FocusChanged(TDrawNow aDrawNow)
     {    
+    _AKNTRACE_FUNC_ENTER;
     // Only form controls need to adapt animation to focus changes.
     if( iExtension->iAnimation && iIsFormControl )
         {
@@ -1481,15 +1508,18 @@
 
     if (aDrawNow && iCapCFlags&EUsesEars && IsReadyToDraw())
         DrawEarsNow(EBothEars);
+    _AKNTRACE_FUNC_EXIT;
     }
 
 
 
 void CEikCaptionedControl::DrawEarsNow(TWhichEars aEar) const
     {
+    _AKNTRACE_FUNC_ENTER;
     ActivateGc();
     DrawEars(aEar);
     DeactivateGc();
+    _AKNTRACE_FUNC_EXIT;
     }
 
 void CEikCaptionedControl::DrawEars(TWhichEars aEar) const
@@ -1557,15 +1587,17 @@
 
 EXPORT_C void CEikCaptionedControl::Draw(const TRect& aRect) const
     {   
+    _AKNTRACE_FUNC_ENTER;
     if (iIsFormControl )
         DrawAsForm( aRect );
     else
         DrawAsEikonDialog( aRect );
+    _AKNTRACE_FUNC_EXIT;
     }
 
 void CEikCaptionedControl::DrawAsForm( const TRect& aRect ) const
     {
-
+    _AKNTRACE_FUNC_ENTER;
     CWindowGc& gc=SystemGc();
 
     gc.SetPenStyle(CGraphicsContext::ENullPen);
@@ -1609,10 +1641,12 @@
         DrawAsFormInViewMode( aRect );
     else
         DrawAsFormUnFocusedLine( aRect );
+    _AKNTRACE_FUNC_EXIT;
     }
 
 void CEikCaptionedControl::DrawAsFormInEditMode( const TRect& /*aRect*/ ) const
     {
+    _AKNTRACE_FUNC_ENTER;
     CWindowGc& gc=SystemGc();
 
     gc.SetPenStyle(CGraphicsContext::ENullPen);
@@ -1684,11 +1718,13 @@
     gc.SetBrushStyle( CGraphicsContext::ENullBrush ) ;
     gc.SetPenColor( line2Rect.Color() ) ;   
     gc.DrawRect(line2Rect.Rect());
+    _AKNTRACE_FUNC_EXIT;
     }
 
 
 void CEikCaptionedControl::DrawAsFormInViewMode( const TRect& /*aRect*/ ) const
     {
+    _AKNTRACE_FUNC_ENTER;
     CWindowGc& gc=SystemGc();
 
     gc.SetPenStyle(CGraphicsContext::ENullPen);
@@ -1749,10 +1785,12 @@
 
     gc.DrawLine(TPoint(iVerticalLineXPosition,Rect().iBr.iY-1),
         TPoint(iVerticalLineXPosition,Rect().iBr.iY+1));
+    _AKNTRACE_FUNC_EXIT;
     }
     
 void CEikCaptionedControl::DrawAsFormUnFocusedLine( const TRect& /*aRect*/ ) const
     {
+    _AKNTRACE_FUNC_ENTER;
     CWindowGc& gc=SystemGc();
 
     gc.SetPenStyle(CGraphicsContext::ENullPen);
@@ -1791,6 +1829,7 @@
         if (HasSeparator() && !atTopOfPage)
             DrawFormSeparator( gc );
         }
+    _AKNTRACE_FUNC_EXIT;
     } 
 
 
@@ -1817,6 +1856,7 @@
 
 void CEikCaptionedControl::DrawAsEikonDialog( const TRect& aRect ) const
     {
+    _AKNTRACE_FUNC_ENTER;
     CWindowGc& gc=SystemGc();
     gc.SetPenStyle(CGraphicsContext::ENullPen);
 
@@ -1856,6 +1896,7 @@
 
     if (iCapCFlags&EUsesEars)
         DrawEars(EBothEars); 
+    _AKNTRACE_FUNC_EXIT;
     }
 
 /*
@@ -1869,15 +1910,18 @@
 
 EXPORT_C TKeyResponse CEikCaptionedControl::OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType)
     {
+    _AKNTRACE_FUNC_ENTER;
     if ( !iIsFormControl) 
         return iControl->OfferKeyEventL(aKeyEvent,aType);
     else if ( iIsFormControl && iIsEditable )
         {
         TKeyResponse retVal ;
         retVal = iControl->OfferKeyEventL( aKeyEvent, aType ) ;
+        _AKNTRACE_FUNC_EXIT;
         return retVal ;
         }
     else
+        _AKNTRACE_FUNC_EXIT;
         return EKeyWasNotConsumed ;
     }
 
@@ -1888,6 +1932,7 @@
 
 EXPORT_C void CEikCaptionedControl::SetDimmed(TBool aDimmed)
     {
+    _AKNTRACE_FUNC_ENTER;
     CCoeControl::SetDimmed(aDimmed);
     if (iControl && iControl->IsVisible())
         {
@@ -1901,6 +1946,7 @@
         {
         iTrailer->SetDimmed(aDimmed);
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 EXPORT_C void* CEikCaptionedControl::ExtensionInterface( TUid /*aInterface*/ )
@@ -1910,11 +1956,13 @@
 
 EXPORT_C void CEikCaptionedControl::HandlePointerEventL(const TPointerEvent& aPointerEvent)
     {
+    _AKNTRACE_FUNC_ENTER;
     if (!IsNonFocusing())
         {
         TWhichEars ear=ENoEar;
         if (aPointerEvent.iType!=TPointerEvent::EButton1Down)
             {
+            _AKNTRACE("TPointerEvent::EButton1Down");
             if (iCapCFlags&ELeftEarGrab)
                 ear=ELeftEar;
             else if (iCapCFlags&ERightEarGrab)
@@ -1935,6 +1983,7 @@
                     }
                 if (oldDrawFlags!=(iCapCFlags&(ELeftEarDown|ERightEarDown)))
                     DrawEarsNow(ear);
+                _AKNTRACE_FUNC_EXIT;
                 return;
                 }
             }
@@ -1948,6 +1997,7 @@
             if (ear)
                 {
                 FireEarL(ear, KCapCInitialEarRepeat);
+                _AKNTRACE_FUNC_EXIT;
                 return;
                 }
             }
@@ -1962,6 +2012,7 @@
             }
         else if(aPointerEvent.iType == TPointerEvent::EButton1Up)
             {
+            _AKNTRACE("TPointerEvent::EButton1Up");
             SetPressedDownState( EFalse );
             DrawDeferred();
             }       
@@ -1970,6 +2021,7 @@
     if ( !iIsEditable && (ControlIsAnEdwin(iControlType) || ControlIsAMfne(iControlType))
        &&( iDialogPage && CEikDialogPage::EDouble == iDialogPage->FormLayout() ))
         {
+        _AKNTRACE_FUNC_EXIT;
 		return;
         }
 
@@ -2002,6 +2054,8 @@
 
 EXPORT_C void CEikCaptionedControl::SetCaptionL(const TDesC& aText)
     {
+    _AKNTRACE_FUNC_ENTER;
+    _AKNTRACE("aText = %s", &aText);    
     ConstructExtensionL() ; // One of several places where this is made
     if (!iCaption)
         {
@@ -2028,6 +2082,7 @@
         DoFormCaptionSettingsL(aText);
     else
         iCaption->SetTextL(aText);
+    _AKNTRACE_FUNC_EXIT;
     }
 
 EXPORT_C void CEikCaptionedControl::SetDrawNoWhiteBackground(TBool aEnabled)
@@ -2037,6 +2092,7 @@
 
 EXPORT_C void CEikCaptionedControl::SetTrailerL(const TDesC& aText)
     {
+    _AKNTRACE_FUNC_ENTER;
     if (!aText.Length())
         return;
     if (!iTrailer)
@@ -2049,6 +2105,8 @@
         iTrailer->SetNonFocusing();
         }
     iTrailer->SetTextL(aText);
+    _AKNTRACE( "SetTextL = %s" , &aText); 
+    _AKNTRACE_FUNC_EXIT;
     }
 
 EXPORT_C void CEikCaptionedControl::SetCurrent(TBool aSelected)
@@ -2058,6 +2116,7 @@
 
 EXPORT_C void CEikCaptionedControl::ConstructFromResourceL(TResourceReader& aReader)
     {
+    _AKNTRACE_FUNC_ENTER;
     TPtrC capTextTPtrC = aReader.ReadTPtrC();
     iCaptionText = capTextTPtrC.AllocL();
     SetCaptionL(capTextTPtrC);
@@ -2135,6 +2194,7 @@
         STATIC_CAST(CEikCaptionedControlFormHighlightLine*,iHighlightControl)->ConstructL() ;
         }
     ConstructExtensionL() ;
+    _AKNTRACE_FUNC_EXIT;
     }
 
 
@@ -2177,9 +2237,11 @@
 
 EXPORT_C void CEikCaptionedControl::ResetMinimumSizes()
     {
+	_AKNTRACE_FUNC_ENTER;
     iMinSize.iWidth=0;
     iCaptionWidth=0;
     iFullWidth=0;
+    _AKNTRACE_FUNC_EXIT;
     }
 
 EXPORT_C TBool CEikCaptionedControl::IsLatent() const
@@ -2264,6 +2326,7 @@
  */
 EXPORT_C void CEikCaptionedControl::GetColorUseListL(CArrayFix<TCoeColorUse>& aColorUseList) const
     {
+    _AKNTRACE_FUNC_ENTER;
     CCoeControl::GetColorUseListL(aColorUseList);
 
     TCoeColorUse colorUse;
@@ -2274,6 +2337,7 @@
     const TInt count=CountComponentControls();
     for(TInt ii=0;ii<count;ii++)
         ComponentControl(ii)->GetColorUseListL(aColorUseList);  
+    _AKNTRACE_FUNC_EXIT;
     }
 
 /**
@@ -2284,6 +2348,8 @@
  */
 EXPORT_C void CEikCaptionedControl::HandleResourceChange(TInt aType)
     {
+    _AKNTRACE_FUNC_ENTER;
+    _AKNTRACE( "[%s][%s][%d].", "CEikCaptionedControl", __FUNCTION__, aType );
     CCoeControl::HandleResourceChange(aType);
 
     // Animation is skin dependent, whenever skin changes animation changes
@@ -2307,6 +2373,7 @@
             }
         DrawDeferred();
         }
+    _AKNTRACE_FUNC_EXIT;
    }
 
 
@@ -2382,6 +2449,8 @@
 
 EXPORT_C void CEikCaptionedControl::SetEditableL( TBool aEditable, TBool /*aShowEmptyFields*/ )
     {
+    _AKNTRACE_FUNC_ENTER;
+    _AKNTRACE( "CEikCaptionedControl::SetEditableL() aEditable: [%d]", aEditable );
     // Construct extension object if needed
     ConstructExtensionL() ;
 
@@ -2456,6 +2525,7 @@
 		if (IsReadyToDraw())
 			SizeChanged(); // needed because layout lines change when editable flag is switched.
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 void CEikCaptionedControl::SetVertEdgeSpacing( TInt aVertEdgeSpacing ) 
@@ -2474,6 +2544,7 @@
 
 void CEikCaptionedControl::PositionFormComponents()
     {
+    _AKNTRACE_FUNC_ENTER;
     if( iExtension->iPartiallyVisible )
         return;
     TBool isFocused = iIsCurrentLine;
@@ -2698,6 +2769,7 @@
         }
         
     TRAP_IGNORE( SetElementTextColorsL(TRgb()));
+    _AKNTRACE_FUNC_EXIT;
     }
 
 TBool CEikCaptionedControl::ShowBitmap() const
@@ -2750,6 +2822,7 @@
  */
 void CEikCaptionedControl::CalculateNumberOfLinesForControl( TInt aLines )
     {
+	_AKNTRACE_FUNC_ENTER;
     // NB if new control types are added, ones which should be invisible in view mode
     // should be also added to IsDisplayable().
     if ( aLines == ENotSupplied )
@@ -2805,6 +2878,8 @@
             }
         }
     iNumberOfLines = aLines ;
+    _AKNTRACE( "iNumberOfLines: [%d]", iNumberOfLines );
+    _AKNTRACE_FUNC_EXIT;
     }
 
 EXPORT_C void CEikCaptionedControl::SetFormFlags( TInt aFlags ) 
@@ -2929,9 +3004,12 @@
         case EAknCtUnitEditor:
             return ETrue;
         }
-    TInt typeOfControlToLayout=iDialogPage->PageContainer()->PageSelector()->Dialg()->ConvertCustomControlTypeToBaseControlType(iControlType);
-    if (typeOfControlToLayout==MEikDialogPageObserver::EMfneDerived)
-        return ETrue;
+    if (iDialogPage)
+        {
+	    TInt typeOfControlToLayout=iDialogPage->PageContainer()->PageSelector()->Dialg()->ConvertCustomControlTypeToBaseControlType(iControlType);
+        if (typeOfControlToLayout==MEikDialogPageObserver::EMfneDerived)
+            return ETrue;
+        }
     return EFalse;
     }
 
@@ -2964,9 +3042,12 @@
         case EAknCtNumericSecretEditor:
             return ETrue;
         }
-    TInt typeOfControlToLayout=iDialogPage->PageContainer()->PageSelector()->Dialg()->ConvertCustomControlTypeToBaseControlType(iControlType);
-    if (typeOfControlToLayout==MEikDialogPageObserver::ESecretEditorDerived)
-        return ETrue;
+    if (iDialogPage)
+        {
+        TInt typeOfControlToLayout=iDialogPage->PageContainer()->PageSelector()->Dialg()->ConvertCustomControlTypeToBaseControlType(iControlType);
+        if (typeOfControlToLayout==MEikDialogPageObserver::ESecretEditorDerived)
+            return ETrue;
+        }
     return EFalse;
     }
 
@@ -2979,9 +3060,12 @@
         case EAknCtSlider :
             return ETrue;
         }
-    TInt typeOfControlToLayout=iDialogPage->PageContainer()->PageSelector()->Dialg()->ConvertCustomControlTypeToBaseControlType(iControlType);
-    if (typeOfControlToLayout==MEikDialogPageObserver::ESliderDerived)
-        return ETrue;
+    if (iDialogPage)
+        {
+        TInt typeOfControlToLayout=iDialogPage->PageContainer()->PageSelector()->Dialg()->ConvertCustomControlTypeToBaseControlType(iControlType);
+        if (typeOfControlToLayout==MEikDialogPageObserver::ESliderDerived)
+            return ETrue;
+        }
     return EFalse;
     }
 
@@ -3000,9 +3084,12 @@
         case EAknCtColourSelectionDialogNoneField:
             return ETrue;
         }
-    TInt typeOfControlToLayout=iDialogPage->PageContainer()->PageSelector()->Dialg()->ConvertCustomControlTypeToBaseControlType(iControlType);
-    if (typeOfControlToLayout==MEikDialogPageObserver::EColourSelectionGridDerived)
-        return ETrue;
+    if (iDialogPage)
+        {
+        TInt typeOfControlToLayout=iDialogPage->PageContainer()->PageSelector()->Dialg()->ConvertCustomControlTypeToBaseControlType(iControlType);
+        if (typeOfControlToLayout==MEikDialogPageObserver::EColourSelectionGridDerived)
+            return ETrue;
+        }
     return EFalse;
     }  
  
@@ -3028,6 +3115,7 @@
 
 TInt CEikCaptionedControl::MaximumNumberOfControlLinesOnVisiblePage() const
     {
+	_AKNTRACE_FUNC_ENTER;
 	TInt maxItems = 0;
 	TAknLayoutScalableParameterLimits paneLimits;
 	if (IsPopupField(this))
@@ -3070,6 +3158,8 @@
             return defineHeight;
         }
 	//maxItems -= 1; // TODO: this is a temporary workaround for layout data being incorrect, it has too many options available
+    _AKNTRACE( "maxItems: [%d]", maxItems );
+    _AKNTRACE_FUNC_EXIT;
     return maxItems;
     };
 
@@ -3811,9 +3901,12 @@
 void CEikCaptionedControl::DrawAsSkinnedForm( CWindowGc& aGc, const TRect& /*aRect*/ ) const
     {
     MAknsSkinInstance* skin = AknsUtils::SkinInstance() ;
+    TRgb textColor( KRgbBlack );
+    GetColor( EColorLabelText, textColor );
 
     if ( !iIsCurrentLine )
         {
+        AknListUtils::DrawSeparator( aGc, Rect(), textColor );
         aGc.SetBrushStyle( CGraphicsContext::ENullBrush ) ; 
         }
     else // Highlight Skinning.  Requires Frame
@@ -3827,6 +3920,8 @@
             MAknsControlContext* parentCc = GetDialogControlContext( iDialogPage ) ; 
             AknsDrawUtils::Background( skin, parentCc, this, aGc, Rect() ) ;
 
+            AknListUtils::DrawSeparator( aGc, Rect(), textColor );
+            
             // Set the rectangle(s) for the Frame context
             iExtension->iEditModeHighlightControlContext->SetFrameRects( EditRect(), innerRect ) ;
             iExtension->iEditModeHighlightControlContextPressed->SetFrameRects( EditRect(), innerRect ) ;
@@ -3838,52 +3933,38 @@
         else // View Mode highlight
             {
             TBool drawOk = EFalse;
-            if( iExtension->IsHighlightAnimated() ) // Draw animated highlight
+            TRect viewRect( ViewRect() );
+            TRect innerRect( viewRect );
+            innerRect.iTl = ViewFrameTopLeftRect( viewRect ).iBr;
+            innerRect.iTl.iX-- ; innerRect.iTl.iY--;
+            innerRect.iBr = ViewFrameBottomRightRect( viewRect ).iTl ;
+    
+            // The bit around the outside must use the parent's control context
+            MAknsControlContext* parentCc = GetDialogControlContext( iDialogPage );
+            AknsDrawUtils::BackgroundBetweenRects( skin, parentCc, this, aGc, 
+                    Rect(), innerRect );
+    
+            AknListUtils::DrawSeparator( aGc, Rect(), textColor );
+
+            // Draw the animation itself
+            if ( iExtension->IsHighlightAnimated() 
+                    && iExtension->iAnimation->Animation() )
                 {
-                CAknsEffectAnim* anim = iExtension->iAnimation->Animation();
-
-                // TODO: Background is drawn first to prevent white stripes
-                // appearing above and below the highlight. Wasting resources
-                // here, you could create animation that is a tad bigger and
-                // remove background drawing from here.
-                TRect viewRect = ViewRect() ;
-                TRect innerRect( viewRect ) ;
-                innerRect.iTl = ViewFrameTopLeftRect( viewRect ).iBr ;
-                innerRect.iTl.iX-- ; innerRect.iTl.iY-- ;  // not sure why this adjustment is required here and not above.
-                innerRect.iBr = ViewFrameBottomRightRect( viewRect ).iTl ;
-
-                // The bit around the outside must use the parent's control context
-                MAknsControlContext* parentCc = GetDialogControlContext( iDialogPage ) ;
-                AknsDrawUtils::BackgroundBetweenRects( skin, parentCc, this, aGc, Rect() , innerRect ) ;
-
-                // Draw the animation itself
-                if( anim )
-                    {
-                    drawOk = anim->Render( aGc, ViewRect() );
-                    }
+                drawOk = iExtension->iAnimation->Animation()->Render( aGc, 
+                        viewRect );
                 }
-
-            if( !drawOk )
+    
+            if ( !drawOk )
                 {
-                // Code for skinning Highlight ( Using AVKON LAF highlight in place of
-                // Skins LAF to establish highlight outer rect )
-                TRect viewRect = ViewRect() ;
-                TRect innerRect( viewRect ) ;
-                innerRect.iTl = ViewFrameTopLeftRect( viewRect ).iBr ;
-                innerRect.iTl.iX-- ; innerRect.iTl.iY-- ;  // not sure why this adjustment is required here and not above.
-                innerRect.iBr = ViewFrameBottomRightRect( viewRect ).iTl ;
-
-                // The bit around the outside must use the parent's control context
-                MAknsControlContext* parentCc = GetDialogControlContext( iDialogPage ) ;
-                AknsDrawUtils::BackgroundBetweenRects( skin, parentCc, this, aGc, Rect() , innerRect ) ;
-
                 // Set the rectangle(s) for the Frame context
-                iExtension->iViewModeHighlightControlContext->SetFrameRects( viewRect, innerRect ) ;
-                iExtension->iViewModeHighlightControlContextPressed->SetFrameRects( viewRect, innerRect ) ;
+                iExtension->iViewModeHighlightControlContext->SetFrameRects( 
+                        viewRect, innerRect ) ;
+                iExtension->iViewModeHighlightControlContextPressed->
+                    SetFrameRects( viewRect, innerRect ) ;
                 
                 AknsDrawUtils::DrawFrame( skin, aGc, viewRect, innerRect,
-                                          PressedDownState() ?
-                                          KAknsIIDQsnFrListPressed : KAknsIIDQsnFrList, KAknsIIDDefault );
+                        PressedDownState() ? KAknsIIDQsnFrListPressed : 
+                        KAknsIIDQsnFrList, KAknsIIDDefault );
                 }
             }
         }
--- a/uifw/EikStd/dlgsrc/EIKCAPCA.CPP	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/EikStd/dlgsrc/EIKCAPCA.CPP	Fri Feb 19 23:04:46 2010 +0200
@@ -24,6 +24,7 @@
 #include <AknsUtils.h>
 #include <eikedwin.h>
 #include "AknPanic.h"
+#include "akntrace.h"
 
 const TInt KVerticalSpacing=-2;  // Avkon form controls overlap by two pixels!
 const TInt KVerticalSpacingSquash=0;
@@ -98,6 +99,7 @@
 
 TInt CEikCapCArray::NumberOfTextLines() const
 {
+	_AKNTRACE_FUNC_ENTER;
 	CEikCaptionedControl *firstCapCC = Count() > 0 ? (*this)[0] : NULL;
 	const CEikDialogPage *dialogPage = firstCapCC ? firstCapCC->DialogPage() : NULL;
     CEikDialogPage::TFormLayoutSelection ret = CEikDialogPage::ESingle;
@@ -123,11 +125,14 @@
 					}	
 		lines += num_of_lines;
 	}
+	_AKNTRACE( "lines: [%d]", lines );
+	_AKNTRACE_FUNC_EXIT;
 	return lines;
 }
 
 TInt CEikCapCArray::NumberOfTextLinesBeforeLine(TInt aLine) const
 {
+	_AKNTRACE_FUNC_ENTER;
 	CEikCaptionedControl *firstCapCC = Count() > 0 ? (*this)[0] : NULL;
 	const CEikDialogPage *dialogPage = firstCapCC ? firstCapCC->DialogPage() : NULL;
     CEikDialogPage::TFormLayoutSelection ret = CEikDialogPage::ESingle;
@@ -153,6 +158,8 @@
 					}	
 		lines += num_of_lines;
 	}
+	_AKNTRACE( "lines: [%d]", lines );
+	_AKNTRACE_FUNC_EXIT;
 	return lines;
 
 }
@@ -195,6 +202,7 @@
  */
 EXPORT_C TSize CEikCapCArray::MinimumSize()
 	{
+	_AKNTRACE_FUNC_ENTER;
 	TSize size(0,0);
 
 	CEikCaptionedControl *firstCapCC = Count() > 0 ? (*this)[0] : NULL;
@@ -276,6 +284,8 @@
 		size.iHeight+=2 ;  // (we have included one too many '-2's)
 		}
 	}
+    _AKNTRACE( "The Size : ( %d, %d ) ", size.iHeight, size.iWidth );
+	_AKNTRACE_FUNC_EXIT;
 	return size;
 	}
 
@@ -636,6 +646,7 @@
 */
 void CEikCapCArray::SetRect(const TRect& aRect, TInt aTop, TInt /*aMiddle*/, TInt aBottom)
 	{
+	_AKNTRACE_FUNC_ENTER;
     TAknLayoutRect formtLayoutRect;
     formtLayoutRect.LayoutRect(aRect, AknLayoutScalable_Avkon::listscroll_form_pane().LayoutLine());
     formtLayoutRect.LayoutRect(formtLayoutRect.Rect(), AknLayoutScalable_Avkon::list_form_gen_pane().LayoutLine());
@@ -655,6 +666,7 @@
         if ( control->DialogPage()->IsForm() )
             {
             SetRealRect( aRect, aTop, aBottom );
+            _AKNTRACE_FUNC_EXIT;
             return;
             }
         }
@@ -879,6 +891,7 @@
     			}
     		}
 		}
+	_AKNTRACE_FUNC_EXIT;
 	}
 
 TInt CEikCapCArray::YPosToLine(const TRect &aRect, 
@@ -974,6 +987,7 @@
 //
 TInt CEikCapCArray::ScrollByPixels( TInt aDelta )
     {
+	_AKNTRACE_FUNC_ENTER;
     TInt count = Count();
     
     // Top and bottom of lines
@@ -1019,7 +1033,7 @@
                 }
             }
         }
-
+    _AKNTRACE_FUNC_EXIT;
     return aDelta;
     }
 
@@ -1030,6 +1044,7 @@
 void CEikCapCArray::SetRealRect( 
 		const TRect& /*aRect*/, TInt /*aTop*/, TInt /*aBottom*/ )
     {
+	_AKNTRACE_FUNC_ENTER;
     TInt count = Count();
     const TPoint virtualTl( 1000, 0 );
     TPoint skinLocation( 0, 0 );
@@ -1056,6 +1071,7 @@
         AknsUtils::RegisterControlPosition( line->iTrailer, skinLocation );
         AknsUtils::RegisterControlPosition( line->iBitmap, skinLocation );
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 
@@ -1109,6 +1125,8 @@
 //
 void CEikCapCArray::MoveLineToScreen( TInt aLine, TInt aTopY, TBool aVisible )
     {
+	_AKNTRACE_FUNC_ENTER;
+	_AKNTRACE( "aLine: [%d], aTopY: [%d], aVisible: [%d]", aLine, aTopY, aVisible );
     if ( aLine != -1 && aLine < Count() )
         {
         CEikCaptionedControl* line = (*this)[aLine];
@@ -1121,6 +1139,7 @@
         
         line->SetRect( TRect( topLeft, line->Size() ) );
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 
@@ -1130,6 +1149,8 @@
 //
 TInt CEikCapCArray::FocusableLine( TInt aCurrentLine, TInt aTopY )
     {
+	_AKNTRACE_FUNC_ENTER;
+	_AKNTRACE( "aCurrentLine: [%d]", aCurrentLine );
     TInt focusableLine = KErrNotFound;
     
     if ( aCurrentLine >= 0 && aCurrentLine < Count() )
@@ -1157,7 +1178,7 @@
                 }
             }
         }
-    
+    _AKNTRACE_FUNC_EXIT;
     return focusableLine;
     }
 
--- a/uifw/EikStd/dlgsrc/EIKDIALG.CPP	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/EikStd/dlgsrc/EIKDIALG.CPP	Fri Feb 19 23:04:46 2010 +0200
@@ -69,8 +69,10 @@
 #endif
 #include <AknQueryDialog.h>
 #include <aknQueryControl.h>
+#include <aknitemactionmenuregister.h>
 
 #include "akncbacontentobserver.h"
+#include "akntrace.h"
 
 TBool IsBlankScreenDisplayed();
 
@@ -120,6 +122,7 @@
 //
 TBool IsFocusedWindowGroup( CEikDialog* aThis )
     {
+	_AKNTRACE_FUNC_ENTER;
     RWindowTreeNode* node = aThis->DrawableWindow();
     // this code finds out if this control belongs to window group
     // that is in focus, there are some rare cases when the latest opened
@@ -152,9 +155,13 @@
 
         if ( focusedWindowGroupId == wgId )
             {
+            _AKNTRACE( "return ETrue;");
+            _AKNTRACE_FUNC_EXIT;
             return ETrue;
             }
         }
+    _AKNTRACE( "return EFalse;");
+    _AKNTRACE_FUNC_EXIT;
     return EFalse;
     }
 
@@ -209,6 +216,7 @@
 
 EXPORT_C CEikDialog::CEikDialog()
     {
+	_AKNTRACE_FUNC_ENTER;
 //	__DECLARE_NAME(_S("CEikDialog"));
 //	No border in Avkon
 	iBorder=TGulBorder(TGulBorder::ENone);
@@ -221,12 +229,16 @@
     GfxTransEffect::Register(this,KGfxPopupDefaultControlUid);
 #endif
     AKNTASHOOK_ADD( this, "CEikDialog" );
+	_AKNTRACE_FUNC_EXIT;
     }
 
 EXPORT_C CEikDialog::~CEikDialog()
     {
+	_AKNTRACE_FUNC_ENTER;
     AKNTASHOOK_REMOVE();
 
+    AknItemActionMenuRegister::SetConstructingMenuBarOwnerL( NULL );
+
     EnableContentObserver( EFalse );
 
     if ( GfxTransEffect::IsRegistered( this ) )
@@ -253,10 +265,12 @@
 	delete iExtension ;
 	iExtension = NULL;
 	StopWaitingAsRequired();
+	_AKNTRACE_FUNC_EXIT;
     }
 
 void CEikDialog::DynamicConstructL()
 	{
+	_AKNTRACE_FUNC_ENTER;
     PreLayoutDynInitL();
 
     if ( iPageSelector && iPageSelector->IsForm() && Extension() )
@@ -268,6 +282,7 @@
 
     Layout();
     PostLayoutDynInitL();
+    _AKNTRACE_FUNC_EXIT;
 	}
 
 /**
@@ -279,6 +294,7 @@
  */
 EXPORT_C void CEikDialog::PrepareLC(TInt aResourceId)
     {
+	_AKNTRACE_FUNC_ENTER;
     CleanupStack::PushL(this);
 	BaseConstructL();
     StaticConstructL(aResourceId);
@@ -287,6 +303,7 @@
 		{
 		AknGlobalPopupPriorityController::AddPopupToControlStackL(*this,ECoeStackPriorityDialog,ECoeStackFlagRefusesAllKeys);
 		}
+	_AKNTRACE_FUNC_EXIT;
     }
 
 /**
@@ -310,12 +327,15 @@
  */
 EXPORT_C TInt CEikDialog::ExecuteLD(TInt aResourceId)
     {
+	_AKNTRACE_FUNC_ENTER;
 	PrepareLC(aResourceId);
+	_AKNTRACE_FUNC_EXIT;
 	return(RunLD());
     }
 
 void CEikDialog::BaseConstructL()
 	{
+	_AKNTRACE_FUNC_ENTER;
     CreateWindowL();
 	Window().SetBackgroundColor(iEikonEnv->ControlColor(EColorDialogBackground,*this));
 	EnableDragEvents();
@@ -328,10 +348,14 @@
         {
 	    iExtension = CEikDialogExtension::NewL( *this ) ;        
         }
+    _AKNTRACE_FUNC_EXIT;
 	}
 
 void CEikDialog::StaticConstructL(TInt aResourceId)
     {
+	_AKNTRACE_FUNC_ENTER;
+    AknItemActionMenuRegister::SetConstructingMenuBarOwnerL( this );
+
     TResourceReader reader;
     iCoeEnv->CreateResourceReaderLC(reader,aResourceId);
     ConstructFromResourceL(reader);
@@ -351,6 +375,7 @@
                 }
             }
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 /**
@@ -379,6 +404,7 @@
 	// code common to both ConstructSleepingDialogL & ConstructSleepingAlertDialogL
 	//
 	{
+	_AKNTRACE_FUNC_ENTER;
 	iDialogFlags|=EEikDialogFlagSleeping;
 	BaseConstructL();
 	StaticConstructL(aResourceId);
@@ -388,10 +414,12 @@
 		// non visible CBA's do not recieve keys
 		iButtonGroupContainer->MakeVisible(EFalse);
 		}
+    _AKNTRACE_FUNC_EXIT;
 	}
 
 TInt CEikDialog::WaitAsRequired()
     {
+	_AKNTRACE_FUNC_ENTER;
     TInt exitConfirmed=0;
 #if defined (__DEBUG__)
 	RDebug::ProfileEnd(PROFILE_POINT_EIKON_DIALOG_LOAD);
@@ -408,7 +436,7 @@
 		iExitConfirmed=(&exitConfirmed);
         iWait.Start();
         }
-
+    _AKNTRACE_FUNC_EXIT;
 	return(exitConfirmed);
     }
 
@@ -423,6 +451,7 @@
  */
 EXPORT_C TInt CEikDialog::RouseSleepingDialog()
 	{ // none of following ...L calls to Leave
+	_AKNTRACE_FUNC_ENTER;
 	if (IsVisible())
 		ExitSleepingDialog(); // eg for rousing an already roused Alert dialog
 
@@ -541,7 +570,7 @@
 			cba->DrawNow();
 			}
 		}
-
+	_AKNTRACE_FUNC_EXIT;
     return(WaitAsRequired());
 	}
 
@@ -550,6 +579,7 @@
  */
 EXPORT_C void CEikDialog::ExitSleepingDialog()
 	{
+	_AKNTRACE_FUNC_ENTER;
 	FadeBehindPopup(EFalse);
 
     EnableContentObserver( EFalse );
@@ -615,6 +645,7 @@
 	    }
 #endif
     CancelMediatorCommand(this);	
+	_AKNTRACE_FUNC_EXIT;
 	}
 
 /**
@@ -638,6 +669,7 @@
  */
 EXPORT_C void CEikDialog::ConstructFromResourceL(TResourceReader& aReader)
     {
+	_AKNTRACE_FUNC_ENTER;
     iDialogFlags |=aReader.ReadInt32();
             
 #ifdef RD_SCALABLE_UI_V2            
@@ -667,6 +699,7 @@
 		ASSERT(aReader.ReadInt16()==0);
 	
 	SetBorderStyle();  // Moved to the end of construction to allow access to individual lines.
+	_AKNTRACE_FUNC_EXIT;
 	}
 
 void CEikDialog::SetBorderStyle()
@@ -686,13 +719,16 @@
 
 void CEikDialog::CreatePageSelectorL()
 	{
+	_AKNTRACE_FUNC_ENTER;
 	iPageSelector=CEikDialogPageSelector::NewL(*this,this);
 	iPageSelector->SetObserver(this);
 	RegisterDialgWithPageSelector(); // Added JIn
+	_AKNTRACE_FUNC_EXIT;
 	}
 
 void CEikDialog::CreatePageSelectorL(TInt aResourceId)
 	{
+	_AKNTRACE_FUNC_ENTER;
 	if (aResourceId)
 		{
 		TResourceReader reader;
@@ -704,6 +740,7 @@
 			iPageSelector->SetAllPagesDensePacked(ETrue);
 		RegisterDialgWithPageSelector(); // Added JIn
 		}
+	_AKNTRACE_FUNC_EXIT;
 	}
 
 void CEikDialog::CreateButtonGroupContainerL(TInt aResourceId)
@@ -714,7 +751,7 @@
 	// don't activate them in case of sleeping dialog 
     // yet so extra drawings are suppressed until dialog is really
 	// roused to screen
-    
+	_AKNTRACE_FUNC_ENTER;
     TUint flags = ( iDialogFlags & EEikDialogFlagSleeping ) ?
                     ( CEikButtonGroupContainer::EAddToStack |
                     CEikButtonGroupContainer::EDelayActivation ) :
@@ -739,6 +776,7 @@
 	
 	AknGlobalPopupPriorityController::AddSubPopupL(*this, *iButtonGroupContainer->ButtonGroup()->AsControl());
 	AknGlobalPopupPriorityController::AddPopupToControlStackL(*iButtonGroupContainer->ButtonGroup()->AsControl(), ECoeStackPriorityCba, ECoeStackFlagRefusesFocus);
+	_AKNTRACE_FUNC_EXIT;
 	}
 
 void CEikDialog::CreateTitleBarL()
@@ -770,6 +808,7 @@
  */
 EXPORT_C void CEikDialog::SetSizeAndPosition(const TSize& aSize)
     {
+	_AKNTRACE_FUNC_ENTER;
 	if (iDialogFlags&EEikDialogFlagFillAppClientRect)
 	    {
         // if this is a view app then ask client rect from the currently active view
@@ -802,6 +841,7 @@
         {
         SetRect( TRect( AknPopupUtils::Position( aSize, this ), aSize ) );
         }
+	_AKNTRACE_FUNC_EXIT;
     }
 
 /**
@@ -821,6 +861,7 @@
  */
 EXPORT_C TSize CEikDialog::MinimumSize()
     {
+	_AKNTRACE_FUNC_ENTER;
 	if (iDialogFlags&EEikDialogFlagFillScreen)
         {
         TAknWindowLineLayout windowLineLayoutScreen = AknLayoutScalable_Avkon::Screen().LayoutLine();
@@ -861,7 +902,7 @@
         }
 
 	TSize pageSelectorSize(iPageSelector->MinimumSize());
-
+	_AKNTRACE_FUNC_EXIT;
 	return pageSelectorSize;
     }
 
@@ -961,6 +1002,7 @@
  */
 EXPORT_C void CEikDialog::SizeChanged()
     {
+	_AKNTRACE_FUNC_ENTER;
 	__ASSERT_DEBUG( iButtonGroupContainer->Location() == CEikButtonGroupContainer::EExternal, 
 		Panic( EEikDialogPanicIllegalOption ) );
 
@@ -1047,6 +1089,7 @@
 	// <SKIN>
 	iExtension->iBgContext->SetParentPos( PositionRelativeToScreen() ) ;
 	iExtension->iBgContext->SetRect( Rect() ) ;
+	_AKNTRACE_FUNC_EXIT;
 	}
 
 /**
@@ -1099,12 +1142,14 @@
  */
 EXPORT_C void CEikDialog::MakeLineVisible(TInt aControlId,TBool aVisible)
     {
+	_AKNTRACE_FUNC_ENTER;
     CEikCaptionedControl* line=Line(aControlId);
 	CCoeControl* control=line->iControl;
 	if (control->IsVisible()==aVisible)
 		return;
     control->MakeVisible(aVisible);
     line->CheckDimmedDisplayState();
+    _AKNTRACE_FUNC_EXIT;
     }
 
 /**
@@ -1113,6 +1158,7 @@
  */
 EXPORT_C void CEikDialog::MakeWholeLineVisible(TInt aControlId,TBool aVisible)
     {
+	_AKNTRACE_FUNC_ENTER;
     CEikCaptionedControl* line=Line(aControlId);
 	if (line->IsVisible()==aVisible)
 		return;
@@ -1123,6 +1169,7 @@
 		line->iTrailer->MakeVisible(aVisible);
     control->MakeVisible(aVisible);
 	line->MakeVisible(aVisible);
+	_AKNTRACE_FUNC_EXIT;
     }
 
 /**
@@ -1379,6 +1426,8 @@
  */
 EXPORT_C void CEikDialog::SetEditableL( TBool aEditable ) 
     {
+	_AKNTRACE_FUNC_ENTER;
+	_AKNTRACE( "CEikDialog::SetEditableL()  aEditable: [%d]", aEditable );
     if ( !iExtension->iFlags[CEikDialogExtension::EEditableStateInitialised] ||
          iIsEditable != aEditable )
         {
@@ -1388,6 +1437,7 @@
         iPageSelector->SetEditableL( aEditable );
         DrawNow();
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 /**
@@ -1397,6 +1447,7 @@
  */	
 EXPORT_C TBool CEikDialog::IsEditable() const 
 	{
+	_AKNTRACE( "CEikDialog::IsEditable(): [%d]", iIsEditable );;
 	return ( iIsEditable ) ;
 	}
 
@@ -1452,6 +1503,7 @@
  */
 EXPORT_C TInt CEikDialog::RunLD()
 	{
+	_AKNTRACE_FUNC_ENTER;
     // Moved BringForwards in the beginning to enable 1-frame animations.
 	iEikonEnv->BringForwards(ETrue); // before call to EnableBackup()
 	AknGlobalPopupPriorityController::ShowPopup(*this, ETrue);
@@ -1573,13 +1625,14 @@
 	// Claim pointer grab and send the pointer up event to the
 	// control that otherwise would be receiving the drag events.
 	Window().ClaimPointerGrab(ETrue);
-	
+	_AKNTRACE_FUNC_EXIT;
     return(WaitAsRequired());
 	}
 
 
 EXPORT_C void CEikDialog::Draw(const TRect& /*aRect*/) const
     {
+	_AKNTRACE_FUNC_ENTER;
     TRect rect=Rect();
     CWindowGc& gc=SystemGc(); //No reason to demote the gc, CWindowGc is more usable.
 
@@ -1667,6 +1720,7 @@
                 KAknsIIDQsnFrPopup,KAknsIIDQsnFrPopupCenter);
             }    
         }
+    _AKNTRACE_FUNC_EXIT;
     }
     
 EXPORT_C void CEikDialog::HandlePointerEventL(const TPointerEvent& aPointerEvent) 
@@ -1681,6 +1735,7 @@
 
 TKeyResponse CEikDialog::TryAnimateButtonAndExitL(TInt aKeycode)
 	{
+	_AKNTRACE_FUNC_ENTER;
 	TInt buttonId=EEikBidCancel;
 	switch (aKeycode)
 		{
@@ -1705,16 +1760,20 @@
 	if (button)
 		{
 		if (button->IsDimmed() || !button->IsVisible())
-			return EKeyWasNotConsumed;
+			{
+			_AKNTRACE_FUNC_EXIT;
+			return EKeyWasNotConsumed;		
+			}
 		buttonGroupContainer.AnimateCommand(buttonId);
 		}
 
 	if (button || buttonId==EEikBidCancel || buttonId==EEikBidOk)
 		{
 		TryExitL(buttonId);
+		_AKNTRACE_FUNC_EXIT;
 		return EKeyWasConsumed;
 		}
-
+	_AKNTRACE_FUNC_EXIT;
 	return EKeyWasNotConsumed;
 	}
 
@@ -1735,7 +1794,7 @@
  */
 EXPORT_C TKeyResponse CEikDialog::OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType)
     {
-
+	_AKNTRACE_FUNC_ENTER;
 
 	// Hide the tool tip (if there is one!)
 	if ( ( iPageSelector->NumPages() == 1 ) && ( CurrentLine() ) && ( CurrentLine()->ToolTipText( ) ) )
@@ -1750,7 +1809,10 @@
     if (!(iDialogFlags&EEikDialogFlagDontEatUpDownEvents) && aKeyEvent.iScanCode != EStdKeyYes)
 	{
 	if (aType!=EEventKey)
-	    return(EKeyWasConsumed);
+		{
+		_AKNTRACE_FUNC_EXIT;
+	    return(EKeyWasConsumed);	
+		}
 	}
 
 	TInt code=aKeyEvent.iCode;
@@ -1763,7 +1825,10 @@
 		{
 		response = iButtonGroupContainer->OfferKeyEventL(aKeyEvent,aType);
 		if(response==EKeyWasConsumed)
-			return EKeyWasConsumed;
+			{
+			_AKNTRACE_FUNC_EXIT;
+			return EKeyWasConsumed;		
+			}
 		}
 
 	//
@@ -1786,7 +1851,10 @@
 			iPageSelector->OfferKeyEventL(aKeyEvent, aType);
 // Add to remove repeated keypress return event of OK key
 		if (aKeyEvent.iRepeats&&EKeyOK==code)
-			return EKeyWasConsumed;
+			{
+			_AKNTRACE_FUNC_EXIT;
+			return EKeyWasConsumed;		
+			}
 		if ((!(modifiers&EModifierCtrl) || modifiers&EModifierPureKeycode) &&
 			!(iDialogFlags&EEikDialogFlagModeless))
 			TryAnimateButtonAndExitL(code);
@@ -1808,10 +1876,12 @@
 		break;
 	KeyToFocus:
 		if(iPageSelector->OfferHotKeysKeyEventL(aKeyEvent,aType)==EKeyWasConsumed)
-			return EKeyWasConsumed;
-
+			{
+		    _AKNTRACE_FUNC_EXIT;
+			return EKeyWasConsumed;		
+			}
 		}
-
+    _AKNTRACE_FUNC_EXIT;
 	return (aKeyEvent.iScanCode == EStdKeyYes ? EKeyWasNotConsumed:EKeyWasConsumed);
     }
 
@@ -1820,6 +1890,7 @@
 */
 EXPORT_C void CEikDialog::FocusChanged(TDrawNow aDrawNow)
     {
+	_AKNTRACE_FUNC_ENTER;
     CEikBorderedControl::FocusChanged( aDrawNow );
 
     TInt controlID = IdOfFocusControl();
@@ -1827,6 +1898,7 @@
         {
         Line(controlID)->SetFocus(IsFocused(), aDrawNow);
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 /**
@@ -1840,8 +1912,10 @@
  */
 EXPORT_C void CEikDialog::TryExitL(TInt aButtonId)
     {
+	_AKNTRACE_FUNC_ENTER;
     if ( iDialogFlags & EEikDialogFlagNoUserExit )
         {
+        _AKNTRACE_FUNC_EXIT;
 		return;
         }
         
@@ -1850,6 +1924,7 @@
         {
         Extension()->iButtonId = aButtonId;
         Extension()->StartDelayedExit();
+        _AKNTRACE_FUNC_EXIT;
         return;
         }
         
@@ -1895,6 +1970,7 @@
                                                  ( const TDesC8* ) this );
             GfxTransEffect::Abort( this );
             }
+            _AKNTRACE_FUNC_EXIT;
    			return;
             }
 
@@ -1936,6 +2012,7 @@
 			}
 	    delete(this);
 		}
+	_AKNTRACE_FUNC_EXIT;
     }
 
 /**
@@ -2063,6 +2140,7 @@
  */
 EXPORT_C void CEikDialog::SetInitialCurrentLine()
     {
+	_AKNTRACE_FUNC_ENTER;
 	if ( !iExtension->iInitialMade )
 	    {
 	    TRAP_IGNORE(iPageSelector->ActivateFirstPageL());
@@ -2071,6 +2149,7 @@
 	    {
 	    iPageSelector->SetInitialFocus();
 	    }
+	_AKNTRACE_FUNC_EXIT;
     }
 
 /**
@@ -2199,7 +2278,7 @@
  */
 EXPORT_C void CEikDialog::HandleResourceChange(TInt aType)
     {
-        
+	_AKNTRACE_FUNC_ENTER;    
     if(aType==KEikDynamicLayoutVariantSwitch)
         {
         if (IsVisible())
@@ -2208,6 +2287,7 @@
         	iExtension->iFlags.Set(CEikDialogExtension::ELayoutChangeWhileInvisible);
 
         CCoeControl::HandleResourceChange(aType);
+        _AKNTRACE_FUNC_EXIT;
         return;
         }
     else
@@ -2219,13 +2299,14 @@
         {
         Window().SetBackgroundColor(iEikonEnv->ControlColor(EColorDialogBackground,*this));
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 void CEikDialog::DoResourceChangeLayout()
 	{
     // Layout must be forced through - bypass optimisations
     // Must work through all pages
-    
+	_AKNTRACE_FUNC_ENTER;
     Layout();
     SizeChanged();
     
@@ -2241,6 +2322,7 @@
 
    	if (iExtension)
    		iExtension->iFlags.Clear(CEikDialogExtension::ELayoutChangeWhileInvisible);
+   	_AKNTRACE_FUNC_EXIT;
 	}
 
 /**
@@ -2284,6 +2366,8 @@
 
 EXPORT_C void CEikDialog::MakeVisible(TBool aVisible)
 	{
+	_AKNTRACE_FUNC_ENTER;
+	_AKNTRACE( "CEikDialog::MakeVisible(): [%d]", aVisible );
    	if (iExtension && iExtension->iFlags[CEikDialogExtension::ELayoutChangeWhileInvisible])
    		DoResourceChangeLayout();
 
@@ -2301,7 +2385,7 @@
         }
     
 	CEikBorderedControl::MakeVisible(aVisible);
-
+	_AKNTRACE_FUNC_EXIT;
 	}
 
 void CEikDialog::FadeBehindPopup(TBool aFade)
@@ -2504,6 +2588,7 @@
 
 EXPORT_C void CEikDialog::UpdatePageL(TBool aRedraw)
 	{
+	_AKNTRACE_FUNC_ENTER;
 	if (Rect().Height())
 		{
 		if (iPageSelector)
@@ -2517,11 +2602,13 @@
 						DrawDeferred();
 					}
 		}
+	_AKNTRACE_FUNC_EXIT;
 	}
 
 
 EXPORT_C TInt CEikDialog::GetNumberOfLinesOnPage(TInt aPageIndex) const
 	{
+	_AKNTRACE_FUNC_ENTER;
 	if (iPageSelector)
 		{
 		CEikDialogPageContainer* pageContainer = iPageSelector->PageContainer();
@@ -2529,20 +2616,33 @@
 			{
 			CEikDialogPage* page = pageContainer->Page(aPageIndex);
 			if (page)
-				return page->NumberOfLines();
+				{
+				_AKNTRACE( "CEikDialog::GetNumberOfLinesOnPage(): [%d]", page->NumberOfLines() );
+				_AKNTRACE_FUNC_EXIT;
+				return page->NumberOfLines();			
+				}
 			}
 		}
+	_AKNTRACE( "CEikDialog::GetNumberOfLinesOnPage(): 0");
+	_AKNTRACE_FUNC_EXIT;
 	return 0;
 	}
 
 EXPORT_C TInt CEikDialog::GetNumberOfPages() const
 	{
+	_AKNTRACE_FUNC_ENTER;
 	if (iPageSelector)
 		{
 		CEikDialogPageContainer* pageContainer = iPageSelector->PageContainer();
 		if (pageContainer)
-			return pageContainer->NumPages();
+			{
+		    _AKNTRACE( "CEikDialog::GetNumberOfPages(): [%d]", pageContainer->NumPages() );
+		    _AKNTRACE_FUNC_EXIT;
+		    return pageContainer->NumPages();
+			}
 		}
+	_AKNTRACE( "CEikDialog::GetNumberOfPages(): return 0;" );
+	_AKNTRACE_FUNC_EXIT;
 	return 0;
     }
     
@@ -3123,6 +3223,7 @@
 const TInt KWgPriorityOfBlankScreen = 10000; // copied from akncapserverentry.cpp
 TBool IsBlankScreenDisplayed()
     {
+	_AKNTRACE_FUNC_ENTER;
     TBool isBlankScreenDisplayed(EFalse);
     RWsSession& wsSession = CEikonEnv::Static()->WsSession();
     
@@ -3132,7 +3233,7 @@
         if (KErrNone == wsSession.WindowGroupList(wgIds) && wgIds->Count() > 0)
             {
             TInt priority = wsSession.GetWindowGroupOrdinalPriority(wgIds->At(0));
-            RDebug::Printf("IsBlankScreenDisplayed():priority:%d",priority);
+            _AKNTRACE( "IsBlankScreenDisplayed():priority: [%d]", priority );
             if (priority == KWgPriorityOfBlankScreen)
                 {
                 isBlankScreenDisplayed = ETrue;
@@ -3140,7 +3241,8 @@
             }
         }
     delete wgIds;
-    RDebug::Printf("IsBlankScreenDisplayed():isBlankScreenDisplayed:%d",isBlankScreenDisplayed);
+    _AKNTRACE( "IsBlankScreenDisplayed():isBlankScreenDisplayed: [%d]", isBlankScreenDisplayed );
+    _AKNTRACE_FUNC_EXIT;
     return isBlankScreenDisplayed;
     }
     
--- a/uifw/EikStd/dlgsrc/EIKDLG.MMP	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/EikStd/dlgsrc/EIKDLG.MMP	Fri Feb 19 23:04:46 2010 +0200
@@ -94,6 +94,8 @@
 
 LIBRARY         aknphysics.lib
 
+LIBRARY         aknnotify.lib
+
 DEFFILE         EIKDLG.DEF
 
 START WINS
--- a/uifw/EikStd/dlgsrc/EIKDPAGE.CPP	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/EikStd/dlgsrc/EIKDPAGE.CPP	Fri Feb 19 23:04:46 2010 +0200
@@ -55,8 +55,8 @@
 #include "aknrecordinggc.h"
 #include <aknphysics.h>
 #include <aknappui.h>
-#include <aknPriv.hrh>
-
+#include <AknPriv.hrh>
+#include "akntrace.h"
 //
 // Global constants.
 //
@@ -333,6 +333,7 @@
 
 CEikDialogPage::~CEikDialogPage()
     {
+	_AKNTRACE_FUNC_ENTER;
     AKNTASHOOK_REMOVE();
     // Page observer needs to be nulled or an already deleted instance is
     // called when pointer up event is handled. This is valid only for dialogs
@@ -342,12 +343,15 @@
     delete iLines;
     delete iScroll;    
     delete iExtension;
+    _AKNTRACE_FUNC_EXIT;
     }
 
 CEikDialogPage* CEikDialogPage::NewL(TInt aPageId,RWindow& aViewWin,CEikScrollBarFrame& aSBFrame,const CEikDialogPageContainer& aParent,MEikDialogPageObserver* aPageObserver)
     {
+	_AKNTRACE_FUNC_ENTER;
     CEikDialogPage* self=CEikDialogPage::NewLC(aPageId,aViewWin,aSBFrame,aParent,aPageObserver);
     CleanupStack::Pop();
+    _AKNTRACE_FUNC_EXIT;
     return self;
     }
 
@@ -365,27 +369,33 @@
 
 CEikDialogPage* CEikDialogPage::NewLC(TInt aPageId,RWindow& aViewWin,CEikScrollBarFrame& aSBFrame,const CEikDialogPageContainer& aParent,MEikDialogPageObserver* aPageObserver)
     {
+	_AKNTRACE_FUNC_ENTER;
     CEikDialogPage* self=new(ELeave) CEikDialogPage(aPageId,aViewWin,aSBFrame,aPageObserver);
     CleanupStack::PushL(self);
     CommonConstructCodeBetweenNewL(*self,aParent); 
     AKNTASHOOK_ADDL( self, "CEikDialogPage" );
+    _AKNTRACE_FUNC_EXIT;
     return self;
     }
 
 CEikDialogPage* CEikDialogPage::NewL(TInt aPageId,RWindow& aViewWin,CEikScrollBarFrame& aSBFrame,const CEikDialogPageContainer& aParent,MEikDialogPageObserver* aPageObserver,TResourceReader& aReader)
     {
+	_AKNTRACE_FUNC_ENTER;
     CEikDialogPage* self=CEikDialogPage::NewLC(aPageId,aViewWin,aSBFrame,aParent,aPageObserver,aReader);
     CleanupStack::Pop();
+    _AKNTRACE_FUNC_EXIT;
     return self;
     }
 
 CEikDialogPage* CEikDialogPage::NewLC(TInt aPageId,RWindow& aViewWin,CEikScrollBarFrame& aSBFrame,const CEikDialogPageContainer& aParent,MEikDialogPageObserver* aPageObserver,TResourceReader& aReader)
     {
+	_AKNTRACE_FUNC_ENTER;
     CEikDialogPage* self=new(ELeave) CEikDialogPage(aPageId,aViewWin,aSBFrame,aPageObserver);
     CleanupStack::PushL(self);
     CommonConstructCodeBetweenNewL(*self,aParent);
     self->ConstructFromResourceL(aReader);
     AKNTASHOOK_ADDL( self, "CEikDialogPage" );
+    _AKNTRACE_FUNC_EXIT;
     return self;
     }
 
@@ -394,12 +404,15 @@
     : iPageObserver(aPageObserver),
         iPageId(aPageId),iCurrentLine(-1)
     {
+	_AKNTRACE_FUNC_ENTER;
     SetBlank();
     SetComponentsToInheritVisibility();
+    _AKNTRACE_FUNC_EXIT;
     }
 
 void CEikDialogPage::ConstructL()
     {
+	_AKNTRACE_FUNC_ENTER;
     iLines=new(ELeave)CEikCapCArray(KLineArrayGranularity);
     SetContainerWindowL( *iPageContainer );
     Window().SetPointerGrab(ETrue); 
@@ -408,10 +421,12 @@
     iScroll = new(ELeave)CAknPaneScroll(this);
     iScroll->SetLines(iLines);
     iExtension = CDialogPageExtension::NewL();
+    _AKNTRACE_FUNC_EXIT;
     }
 
 void CEikDialogPage::ConstructFromResourceL(TResourceReader& aReader, TBool aFormControl )
     {
+	_AKNTRACE_FUNC_ENTER;
     iFormControl = aFormControl ;
 
     if ( IsForm() )
@@ -436,6 +451,7 @@
         iCoeEnv->CreateResourceReaderLC(indirectReader,indirectRid);
         ConstructFromResourceL(indirectReader);
         CleanupStack::PopAndDestroy();
+        _AKNTRACE_FUNC_EXIT;
         return;
         }
 
@@ -469,17 +485,21 @@
         iScroll = new(ELeave)CAknPaneScroll(this);
         }
     iScroll->SetLines(iLines);
+    _AKNTRACE_FUNC_EXIT;
     }
 
 void CEikDialogPage::ConstructFormFromResourceL( TResourceReader& aReader ) 
     {
+	_AKNTRACE_FUNC_ENTER;
     iFormFlags = TInt16(aReader.ReadInt16()) ;
     iFormLayout = (iFormFlags&EEikFormUseDoubleSpacedFormat) ? EDouble : ESingle;
     ConstructFromResourceL( aReader, ETrue ) ;
+    _AKNTRACE_FUNC_EXIT;
     }
 
 CCoeControl* CEikDialogPage::CreateLineByTypeL(const TDesC& aCaption,TInt aLineId,TInt aControlType,TAny* aReturnValue)
     {
+	_AKNTRACE_FUNC_ENTER;
     ShowFocus( EFalse, EFalse ) ;  // Turn the focus off the current line.  
     CEikCaptionedControl* line=new(ELeave) CEikCaptionedControl;
     CleanupStack::PushL(line);
@@ -515,21 +535,24 @@
 
     // physics engine needs to be updated when lines are added after the initial layout
     UpdatePhysics();
-
+    _AKNTRACE_FUNC_EXIT;
     return line->iControl;
     }
 
 CEikCaptionedControl* CEikDialogPage::ConstructLineL(TInt aResourceId)
     {
+	_AKNTRACE_FUNC_ENTER;
     TResourceReader resourceReader;
     iCoeEnv->CreateResourceReaderLC(resourceReader,aResourceId);
     CEikCaptionedControl* line=ConstructLineL(resourceReader);
     CleanupStack::PopAndDestroy(); // resourceReader
+    _AKNTRACE_FUNC_EXIT;
     return line;
     }
 
 CEikCaptionedControl* CEikDialogPage::ConstructLineL(TResourceReader& aReader)
     {
+	_AKNTRACE_FUNC_ENTER;
     CEikCaptionedControl* line=new(ELeave) CEikCaptionedControl;
     CleanupStack::PushL(line);
     line->iIsFormControl=iFormControl; 
@@ -551,11 +574,13 @@
     if (indirectRid)
         CleanupStack::PopAndDestroy();
     CleanupStack::Pop(); // line
+    _AKNTRACE_FUNC_EXIT;
     return line;
     }
 
 void CEikDialogPage::ConstructByTypeL(TInt aType,CEikCaptionedControl* aLine,CCoeControl* aContainer)
     {
+	_AKNTRACE_FUNC_ENTER;
     SEikControlInfo controlInfo=EikControlFactory::CreateByTypeL(aType);
     if (!controlInfo.iControl)
         controlInfo=CreateCustomControlL(aType);
@@ -589,6 +614,7 @@
         aLine->SetTrailerL(tmp->Des());
         CleanupStack::PopAndDestroy(); // tmp
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 SEikControlInfo CEikDialogPage::CreateCustomControlL(TInt aControlType)
@@ -599,6 +625,7 @@
 
 void CEikDialogPage::SetActiveL()
     {
+	_AKNTRACE_FUNC_ENTER;
     ActivateL();
     MakeVisible(ETrue);        
     
@@ -646,10 +673,12 @@
        }
 
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 void CEikDialogPage::SetActiveAndFocusL()
     {
+	_AKNTRACE_FUNC_ENTER;
     SetActiveL();
     SetEditableL(iIsEditable, ETrue);
     //When active a page, need to show the focus in that page.
@@ -662,16 +691,20 @@
     
     ExposeLine( iCurrentLine, EFalse );
     UpdateScrollBarL();
+    _AKNTRACE_FUNC_EXIT;
     }
 
 void CEikDialogPage::SetInactiveL()
     {
+	_AKNTRACE_FUNC_ENTER;
     MakeEdwinScrollbarsVisibleL(EFalse);
     MakeVisible(EFalse);
+    _AKNTRACE_FUNC_EXIT;
     }
 
 void CEikDialogPage::MakeEdwinScrollbarsVisibleL(TBool aVisible)
     {
+	_AKNTRACE_FUNC_ENTER;
     const TInt numLines=iLines->Count();
     for (TInt ii=0;ii<numLines;ii++)
         {
@@ -691,6 +724,7 @@
                 }
             }
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 TInt CEikDialogPage::PageId() const
@@ -709,6 +743,7 @@
 
 TBool CEikDialogPage::SetInitialFocus()
     {
+	_AKNTRACE_FUNC_ENTER;
     TBool focusSet=EFalse;
 
     const TInt numLines=iLines->Count();
@@ -728,17 +763,23 @@
         break;
         }
     iExtension->iSetInitialFocusDone = ETrue;
+    _AKNTRACE( "return focusSet;: [%d]", focusSet );
+    _AKNTRACE_FUNC_EXIT;
     return focusSet;
     }
 
 TKeyResponse CEikDialogPage::OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType)
     {
+	_AKNTRACE_FUNC_ENTER;
     TKeyResponse response=EKeyWasNotConsumed;
 
     if (!(PageContainer()->PageSelector()->Dialg()->DialogFlags() & EEikDialogFlagDontEatUpDownEvents))
         {
         if (aType != EEventKey)
-        return response;
+        	{
+            _AKNTRACE_FUNC_EXIT;	
+            return response;        
+        	}
         }
 
     const TInt numLines=iLines->Count();
@@ -762,11 +803,13 @@
             || aKeyEvent.iCode==EKeyPrevious
             ))
         response=OfferUpDownKeyEventL(aKeyEvent,aType,ENonCyclic);
+    _AKNTRACE_FUNC_EXIT;
     return response;
     }
 
 TKeyResponse CEikDialogPage::OfferUpDownKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType,TFocusNavigationMode aFocusNavigationMode)
     {
+	_AKNTRACE_FUNC_ENTER;
     TKeyResponse response=EKeyWasNotConsumed;
     if (aType==EEventKey)
         {
@@ -823,7 +866,7 @@
 
     if (response==EKeyWasConsumed)
         UpdateScrollBarThumb();
-
+    _AKNTRACE_FUNC_EXIT;
     return response;
     }
 
@@ -932,6 +975,7 @@
 
 void CEikDialogPage::SetDimmed(TBool aDimmed)
     {
+	_AKNTRACE_FUNC_ENTER;
     CCoeControl::SetDimmed(aDimmed);
 
     const TInt numLines=iLines->Count();
@@ -941,13 +985,18 @@
         thisLine->iControl->SetDimmed(aDimmed);
         thisLine->CheckDimmedDisplayState();
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 TBool CEikDialogPage::RotateFocusByL(TInt aDelta)
     {
+	_AKNTRACE_FUNC_ENTER;
     TInt numLines=iLines->Count();
     if (numLines == 0)
+        {
+        _AKNTRACE_FUNC_EXIT;
         return(EFalse);
+        }
     
     // If form is in view mode and highlight is hidden then the first
     // navigation key press just displays the highlight.
@@ -971,7 +1020,7 @@
                 HandleHighlightTimer();
                 }
             }
-        
+        _AKNTRACE_FUNC_EXIT;
         return ETrue;
         }
     
@@ -1000,16 +1049,22 @@
         ChangeFocusToAndExposeL(currentLine);
         LineChangedL((*iLines)[currentLine]->iId);
         iExtension->iFocusedClicked = ETrue;
+        _AKNTRACE_FUNC_EXIT;
         return(ETrue);
         }
-        
+    _AKNTRACE_FUNC_EXIT;    
     return EFalse;
     }
 
 void CEikDialogPage::ChangeFocusToAndExposeL( TInt aLine, TBool /*aShowWholeControl*/ )
     {
+	_AKNTRACE_FUNC_ENTER;
+	_AKNTRACE( "CEikDialogPage::ChangeFocusToAndExposeL() aLine: [%d]", aLine );
     if ( aLine < 0 || aLine == iCurrentLine )
+        {
+        _AKNTRACE_FUNC_EXIT;
         return;
+        }
     
     TInt oldLine = iCurrentLine;
     
@@ -1032,6 +1087,7 @@
         
         DrawDeferred();
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 TInt CEikDialogPage::TopFocusableLine() const
@@ -1060,12 +1116,14 @@
 
 TBool CEikDialogPage::LineIsFocusable(TInt aLine) const
     {
+	_AKNTRACE_FUNC_ENTER;
     TBool focusable(ETrue);
     CEikCaptionedControl* line=(*iLines)[aLine];
 
     if (line->IsNonFocusing() || line->IsDimmed() || !(line->IsVisible()))
         focusable=EFalse;
-
+    _AKNTRACE( "focusable: [%d]", focusable );
+    _AKNTRACE_FUNC_EXIT;
     return focusable;
     }
 
@@ -1076,6 +1134,8 @@
 
 void CEikDialogPage::InsertLineL(TInt aPosition,TInt aResourceId)
     {
+	_AKNTRACE_FUNC_ENTER;
+	_AKNTRACE( "aPosition: [%d]", aPosition );
     // alteration is bloated but should not provide any side-effects.
     if (!iFormControl)
         {
@@ -1099,11 +1159,14 @@
 */
     if (iCurrentLine>=aPosition) 
         iCurrentLine++;
+    _AKNTRACE_FUNC_EXIT;
     }
 
 void CEikDialogPage::DeleteLine(TInt aLineId, TBool aRedraw)
     {
+	_AKNTRACE_FUNC_ENTER;
     TInt index( LineIndex( aLineId ) ) ;
+	_AKNTRACE( "Delete line index: [%d]", index );
     if ( index == iCurrentLine ) // we're deleting the current line
         {
 // If this is the last line then move the focus to the line above.  (becomes -1 if last line)
@@ -1153,6 +1216,7 @@
         DrawNow();
         TRAP_IGNORE(UpdateScrollBarL()); // if OOM, scrollbar will not be updated - No great loss.
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 void CEikDialogPage::AdjustAllIds(TInt aControlIdDelta)
@@ -1162,8 +1226,9 @@
 
 TInt CEikDialogPage::FocusLineL(TInt aLineId)
     {
+    _AKNTRACE_FUNC_ENTER;
     TInt lineIndex=LineIndex(aLineId);
-
+    _AKNTRACE( "Delete line index: [%d]", lineIndex );
     if (lineIndex==KErrNotFound)
         return KErrNotFound;
 
@@ -1171,6 +1236,7 @@
 // Show whole line, not scroll into line.
     ChangeFocusToAndExposeL(lineIndex, ETrue); 
     LineChangedL(aLineId);
+    _AKNTRACE_FUNC_EXIT;
     return KErrNone;
     }
 
@@ -1258,6 +1324,7 @@
 //
 // Calcs YPos of line relative to the ViewWin and adjusts aLine if its out of bounds
     {
+	_AKNTRACE_FUNC_ENTER;
     ASSERT(iLines);
     const TInt numLines=iLines->Count();
     ASSERT(numLines>0);
@@ -1265,6 +1332,8 @@
         aLine=0;
     else if (aLine>=numLines)
         aLine=numLines-1;
+    _AKNTRACE( "[%s][%s][%d]", "CEikDialogPage", __FUNCTION__, (*iLines)[aLine]->Position().iY );
+    _AKNTRACE_FUNC_EXIT;
     return (*iLines)[aLine]->Position().iY; // TPREMOVAL +iDataWinPos.iY;
     }
 
@@ -1272,8 +1341,10 @@
 //
 /* Exposes the given line so that its fully visible in the ViewWin
 */  {
+	_AKNTRACE_FUNC_ENTER;
     if ( iSize.iHeight == 0 || aLine == -1 )
         {
+        _AKNTRACE_FUNC_EXIT;
         return;
         }
 
@@ -1281,6 +1352,7 @@
     
     if ( change == CAknPaneScroll::ENoChange && !aForceResize )
         {
+        _AKNTRACE_FUNC_EXIT;
         return;
         }
 
@@ -1327,10 +1399,13 @@
         iLastExposedLine = aLine;
         iLastExposedLineViewWinYPosition = topYPosOfControlWhichMustBeViewable + idealDataWindowPosition;
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 void CEikDialogPage::SetDataPosition( TInt aTopY, TInt aBottomY, TBool aForceResize )
     {
+	_AKNTRACE_FUNC_ENTER;
+	_AKNTRACE( "[%s][%s] aTopY: [%d]", "CEikDialogPage", __FUNCTION__, aTopY );
     // update rect only if the currently focused control doesn't fit
     if ( iFormControl )
         {
@@ -1376,6 +1451,7 @@
             iLines->MoveLineToScreen( iCurrentLine, iPhysics->ViewTopY(), ETrue );
             }
         }
+    _AKNTRACE_FUNC_EXIT;
     }
                     
 /*
@@ -1417,6 +1493,7 @@
 
 void CEikDialogPage::SizeChanged()
     {
+	_AKNTRACE_FUNC_ENTER;
     // update form area's size to scroll control
     iScroll->SetOutsideRect( Rect() );
     iLines->SetRect( Rect(), iScroll->Top(), iScroll->Middle(), iScroll->Bottom() );
@@ -1431,10 +1508,13 @@
 
     UpdatePhysics();
     iExtension->iInitialLayoutDone = ETrue;
+    _AKNTRACE_FUNC_EXIT;
     }
 
 TSize CEikDialogPage::MinimumSize()
     {
+	_AKNTRACE( "[%s][%s] MinimumSize: w = %d, h = %d.",
+	                "CEikDialogPage", __FUNCTION__, iLines->MinimumSize().iWidth, 0 );
     return TSize( iLines->MinimumSize().iWidth, 0 );   // Can be zero height
     }
 
@@ -1489,6 +1569,7 @@
  */
 void CEikDialogPage::HandleEdwinEventL(CEikEdwin* aEdwin,TEdwinEvent aEventType)
     {
+	_AKNTRACE_FUNC_ENTER;
     if ( IsForm() && ( aEventType == EEventTextUpdate
             || aEventType == EEventTextUpdateAPI ) )
         {
@@ -1518,13 +1599,17 @@
         }
     
     if( iCurrentLine == iLastExposedLine || iCurrentLine == -1 )
+        {
+        _AKNTRACE_FUNC_EXIT;
         return;
+        }
     if( aEventType == EEventNavigation || aEventType == EEventTextUpdate )
         {
         ExposeLine( iCurrentLine, EFalse );
             
         UpdateScrollBarL();
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 /**
@@ -1532,10 +1617,13 @@
  */
 void CEikDialogPage::HandlePopupFieldEventL(CAknPopupField* aPopupField, TAknPopupFieldEvent aEventType, TInt /*aHint*/)
     {
+	_AKNTRACE_FUNC_ENTER;
     switch (aEventType)
         {
     case EAknPopupFieldEventValueChange:
         {
+        _AKNTRACE( "[%s][%s][%d] EAknPopupFieldEventValueChange", 
+        		   "CEikDialogPage", __FUNCTION__, __LINE__ );
         CEikCaptionedControl* line = NULL;
         for ( TInt i = 0; i < iLines->Count(); ++i )
             {
@@ -1554,6 +1642,8 @@
         }
     case EAknPopupFieldEventModeChange:
         {
+        _AKNTRACE( "[%s][%s][%d] EAknPopupFieldEventModeChange", 
+        		   "CEikDialogPage", __FUNCTION__, __LINE__ );
         TInt index = iCurrentLine;
         
         if(iIsEditable && (iExtension->iPopFieldEvents != 0))
@@ -1577,6 +1667,7 @@
     default:
         break;
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 void CEikDialogPage::PrepareToDrawVerticalLine() const
@@ -1615,6 +1706,7 @@
 
 void CEikDialogPage::HandleControlEventL(CCoeControl* aControl,TCoeEvent aEventType)
     {
+	_AKNTRACE_FUNC_ENTER;
     switch (aEventType)
         {
     case EEventPrepareFocusTransition:
@@ -1666,6 +1758,7 @@
     default:
         break;
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 void CEikDialogPage::PassOnEventL(CCoeControl* aControl,MCoeControlObserver::TCoeEvent aEvent)
@@ -1781,6 +1874,7 @@
 
 void CEikDialogPage::HandleScrollEventL(CEikScrollBar* aScrollBar,TEikScrollEvent aEventType)
     {
+	_AKNTRACE_FUNC_ENTER;
     iExtension->iHandlingScrollEvent = ETrue;
 
     switch (aEventType)
@@ -1814,6 +1908,7 @@
         }
     
     iExtension->iHandlingScrollEvent = EFalse;
+    _AKNTRACE_FUNC_EXIT;
     }
 
 TBool CEikDialogPage::LineHandlerCalled() const
@@ -1830,9 +1925,11 @@
 
 void CEikDialogPage::UpdateScrollBarL()
     {
+	_AKNTRACE_FUNC_ENTER;
     // Only forms in S60 need dialog's scrollbar.
     if ( !iFormControl || !iPageContainer->ScrollBar() || iSize.iHeight == 0 || iSize.iWidth == 0 || iExtension->iHandlingScrollEvent )
         {
+        _AKNTRACE_FUNC_EXIT;
         return;
         }
 
@@ -1865,19 +1962,23 @@
 	            CAknPopupField::EAknPopupFieldSelectionMode mode = ((CAknPopupField*)ctrl->iControl)->SelectionMode();
 	            if (mode == CAknPopupField::EAknPopupFieldSelectionListMode)
 	                {
+	                _AKNTRACE_FUNC_EXIT;
 	                return;
 	                }
 				}        		
         	UpdateScrollBarThumb();
         	}
         }
+    _AKNTRACE_FUNC_EXIT;
     }
     
 
 void CEikDialogPage::UpdateScrollBarThumb()
     {
+	_AKNTRACE_FUNC_ENTER;
     if ( !iFormControl || !iPageContainer->ScrollBar() || ScbState() )
         {
+        _AKNTRACE_FUNC_EXIT;
         return;
         }
 
@@ -1898,6 +1999,7 @@
         iPageContainer->ScrollBar()->Tile(&vertModel);
         iPageContainer->ScrollBar()->SetVFocusPosToThumbPos(vertModel.iThumbPosition);
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 CCoeControl* CEikDialogPage::ComponentControl(TInt aIndex) const
@@ -1964,6 +2066,7 @@
 
 void CEikDialogPage::ShowFocus(TBool aFocus, TBool aRedraw)
     {
+	_AKNTRACE_FUNC_ENTER;
     if (iCurrentLine>=0)
         {
         if ( iExtension && iExtension->iUsesSingleClick && aFocus )
@@ -1978,14 +2081,30 @@
         else 
             (*iLines)[iCurrentLine]->DrawDeferred(); 
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 void CEikDialogPage::ChangeFocusTo(TInt aLineIndex)
     {
+	_AKNTRACE_FUNC_ENTER;
+	_AKNTRACE( "CEikDialogPage::ChangeFocusTo() aLineIndex: [%d]", aLineIndex );
     TInt oldLine = iCurrentLine;
     
     if (aLineIndex==iCurrentLine)
         return;
+    // If current line has settingslist open, close it
+    CEikCaptionedControl* currentLine = CurrentLine();
+    if ( currentLine && 
+         currentLine->ControlIsAPopfield( currentLine->ControlType() ) )
+        {
+        CAknPopupField *field = ( CAknPopupField* )currentLine->iControl;
+        if ( field && field->SelectionMode() 
+            == CAknPopupField::EAknPopupFieldSelectionListMode )
+            {
+            TRAP_IGNORE( field->CloseSelectionListL() );
+            }
+        }
+
     ShowFocus( EFalse, EFalse );
     iCurrentLine=aLineIndex;
     ShowFocus(ETrue, EFalse );
@@ -2002,6 +2121,7 @@
 		RecordLineL( iCurrentLine );
 		iLines->MoveLineToScreen( iCurrentLine, iPhysics->ViewTopY(), ETrue );
 		}
+    _AKNTRACE_FUNC_EXIT;
     }
 
 TInt CEikDialogPage::FindLineIndex(const CCoeControl* aControl) const
@@ -2027,6 +2147,7 @@
  */
 void CEikDialogPage::HandleResourceChange(TInt aType)
     {
+	_AKNTRACE_FUNC_ENTER;
     if ( aType==KEikDynamicLayoutVariantSwitch )
         {
         const TInt numLines=iLines->Count();
@@ -2107,6 +2228,7 @@
                 break;
             }
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 CCoeControl* CEikDialogPage::Control(TInt aLineId) const
@@ -2150,11 +2272,13 @@
 
 void CEikDialogPage::FocusChanged(TDrawNow /*aDrawNow*/)
     {
+	_AKNTRACE_FUNC_ENTER;
     if (iCurrentLine>=0 && !IsFocused())
         {
         CEikCaptionedControl* currentLine=(*iLines)[iCurrentLine];
         currentLine->SetCurrent(EFalse);
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 void CEikDialogPage::ResetLineMinimumSizes()
@@ -2190,7 +2314,8 @@
 void CEikDialogPage::SetEditableL( TBool aEditable, TBool /*aActivePage*/ ) 
     {
     // Tell each of the controls on the page (which are part of a form) of their editable state.  
-
+    _AKNTRACE_FUNC_ENTER;
+    _AKNTRACE( "CEikDialogPage::SetEditableL() aEditable: [%d]", aEditable );
     iIsEditable = aEditable;
 
     HighlightVisible( aEditable );
@@ -2269,6 +2394,7 @@
         {
         ExposeLine(iCurrentLine,ETrue); 
         }
+  _AKNTRACE_FUNC_EXIT;
   }
 
 TBool CEikDialogPage::AnythingToDisplay() const
@@ -2296,6 +2422,7 @@
 
 void CEikDialogPage::Draw(const TRect& /*aRect*/) const
     {
+	_AKNTRACE_FUNC_ENTER;
     if ( iFormControl )
         {
         // added this to see if anything on the page is visible.
@@ -2339,6 +2466,7 @@
             iExtension->iRecordingGc->FlushBuffer( targetRect, lineToSkip );
             }
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 void CEikDialogPage::AfterAddingNewLinesL(TInt aNewLineAdded)
@@ -2355,9 +2483,14 @@
 *   #3 call Register component on the line, to set up listeners, etc.
 *   #4 Set the editable value to whatever the dialog page's editable value is.
 */
+	_AKNTRACE_FUNC_ENTER;
+	_AKNTRACE( "aNewLineAdded: [%d]", aNewLineAdded );
     __ASSERT_DEBUG(iLines && (aNewLineAdded<=iLines->Count()), Panic(EEikDialogPanicErrorDuringAddingLine));
     if (aNewLineAdded== -1)
+        {
+        _AKNTRACE_FUNC_EXIT;
         return; // line has not been added yet.
+        }
     CEikCaptionedControl* lineAdded = iLines->At(aNewLineAdded);
 // if aNewLineAdded is zero, then there is no line above, else set value.
     CEikCaptionedControl* lineVisuallyAboveAndNumericallyBelow = 
@@ -2402,6 +2535,7 @@
 
     if ( IsForm() && iSize.iHeight != 0 && aNewLineAdded != -1 )
         iLines->MoveLineToScreen( aNewLineAdded, iPhysics->ViewTopY(), EFalse );
+    _AKNTRACE_FUNC_EXIT;
     }
 
 TInt CEikDialogPage::GetFormFlags() const
@@ -2612,8 +2746,10 @@
 //
 void CEikDialogPage::HandleFormPointerEventL( const TPointerEvent& aPointerEvent )
     {
+	_AKNTRACE_FUNC_ENTER;
     if ( LineHandlerCalled() )
         {
+        _AKNTRACE_FUNC_EXIT;
         return;
         }
     
@@ -2625,6 +2761,7 @@
     if ( ( aPointerEvent.iType == TPointerEvent::EButton1Down && touchedLine == KErrNotFound ) || !iPhysics->CanBeStopped() )
         {
         IgnoreEventsUntilNextPointerUp();
+        _AKNTRACE_FUNC_EXIT;
         return;
         }
 
@@ -2666,6 +2803,7 @@
         
     if ( aPointerEvent.iType == TPointerEvent::EButton1Down && touchedLine != KErrNotFound )
         {
+        _AKNTRACE( "TPointerEvent::EButton1Down" );
         iExtension->iOldCenterY = iPhysics->ViewCenter().iY;
         TInt bottom = iExtension->iOldCenterY + iSize.iHeight - iSize.iHeight / 2;
         if ( bottom < 0 )
@@ -2744,6 +2882,7 @@
 
     if ( aPointerEvent.iType == TPointerEvent::EDrag )
         {
+        _AKNTRACE( "TPointerEvent::EDrag" );
         TPoint drag( iExtension->iDragStartPosition - aPointerEvent.iPosition );
         
         if ( Abs( drag.iY ) > iPhysics->DragThreshold() )
@@ -2791,6 +2930,7 @@
     
     if ( aPointerEvent.iType == TPointerEvent::EButton1Up )
         {
+    _AKNTRACE( "TPointerEvent::EButton1Up" );
         iExtension->HandleFormFeedback( this, aPointerEvent, touchedLine, iCurrentLine );
         if ( !IsEditable() && iExtension->iUsesSingleClick && 
              HighlightVisible() )
@@ -2897,6 +3037,7 @@
         key.iRepeats = 0;
         CEikonEnv::Static()->SimulateKeyEventL( key, EEventKey );
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 
@@ -2906,6 +3047,7 @@
 //
 void CEikDialogPage::UpdatePhysics()
     {
+	_AKNTRACE_FUNC_ENTER;
     if ( IsForm() )
         {
         TPoint viewCenter( iSize.iWidth / 2, 0 );
@@ -2933,6 +3075,7 @@
         TRAP_IGNORE( iPhysics->InitPhysicsL( worldSize, iSize, viewCenter ) );
         TRAP_IGNORE( UpdateScrollBarL() );
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 
@@ -3058,6 +3201,7 @@
 //
 void CEikDialogPage::UpdateLineInCache( CEikCaptionedControl* aLine )
     {
+	_AKNTRACE_FUNC_ENTER;
     TInt lineIndex = iLines->FindLineIndex( aLine );
     
     if ( lineIndex != KErrNotFound )
@@ -3084,6 +3228,7 @@
         {
         UpdatePhysics();
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 
@@ -3131,6 +3276,7 @@
 //
 void CEikDialogPage::RecordLinesL()
     {
+	_AKNTRACE_FUNC_ENTER;
     Parent()->Parent()->Parent()->SetCustomGc( iExtension->iRecordingGc );
     
     iExtension->iRecordingGc->PurgeBuffer();
@@ -3146,6 +3292,7 @@
         }
 
     Parent()->Parent()->Parent()->SetCustomGc( NULL );
+    _AKNTRACE_FUNC_EXIT;
     }
 
 
@@ -3155,6 +3302,8 @@
 //
 void CEikDialogPage::RecordLineL( TInt aLine )
     {
+	_AKNTRACE_FUNC_ENTER;
+	_AKNTRACE( "CEikDialogPage::RecordLineL() aLine: [%d]", aLine );
     Parent()->Parent()->Parent()->SetCustomGc( iExtension->iRecordingGc );
     
     CEikCaptionedControl* line = (*iLines)[aLine];
@@ -3167,6 +3316,7 @@
         }
     
     Parent()->Parent()->Parent()->SetCustomGc( NULL );
+    _AKNTRACE_FUNC_EXIT;
     }
 
 
@@ -3648,6 +3798,7 @@
 
 TInt CEikDialogPageContainer::ActivateFirstPageL()
     {
+	_AKNTRACE_FUNC_ENTER;
     // Activate first page that isn't dimmed.
     // SetToolTips() ;
     const TInt numPages=iPageArray->Count();
@@ -3664,6 +3815,7 @@
                 thisPage->ReportPageChangedL();
                 iActivePage=ii;
                 }
+            _AKNTRACE_FUNC_EXIT;
             return thisPage->PageId();
             }
         }
@@ -3678,6 +3830,7 @@
         firstPage->ReportPageChangedL();
         iActivePage=0;
         }
+    _AKNTRACE_FUNC_EXIT;
     return firstPage->PageId();
     }
 
@@ -4016,6 +4169,7 @@
 
 void CEikDialogPageContainer::ActivateL()
     {
+	_AKNTRACE_FUNC_ENTER;
     // Pass the activate event to child controls always.
     CCoeControl::ActivateL();
     //
@@ -4043,6 +4197,7 @@
                  }
              }
          }  
+    _AKNTRACE_FUNC_EXIT;
     }
 
 void CEikDialogPageContainer::FocusChanged(TDrawNow aDrawNow)
--- a/uifw/EikStd/dlgsrc/aknformphysics.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/EikStd/dlgsrc/aknformphysics.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -23,7 +23,7 @@
 #include <coecntrl.h>
 #include <coemain.h>
 #include <eikdpage.h>
-
+#include "akntrace.h"
 
 // ======== MEMBER FUNCTIONS ========
 
@@ -55,11 +55,13 @@
 CAknFormPhysics* CAknFormPhysics::NewL( CEikDialogPage& aParent, 
     CAknRecordingGc& aRecordingGc )
     {
+    _AKNTRACE_FUNC_ENTER;
     CAknFormPhysics* self = new ( ELeave ) CAknFormPhysics( aParent, 
         aRecordingGc );
     CleanupStack::PushL( self );
     self->ConstructL();
     CleanupStack::Pop( self );
+    _AKNTRACE_FUNC_EXIT;    
     return self;
     }
 
@@ -70,7 +72,9 @@
 //
 CAknFormPhysics::~CAknFormPhysics()
     {
+    _AKNTRACE_FUNC_ENTER;
     delete iPhysics;
+    _AKNTRACE_FUNC_EXIT;
     }
 
 
@@ -81,10 +85,12 @@
 void CAknFormPhysics::InitPhysicsL( const TSize& aWorldSize, 
     const TSize& aViewSize, const TPoint& aViewCenter )
     {
+    _AKNTRACE_FUNC_ENTER;
     iPhysics->InitPhysicsL( aWorldSize, aViewSize, EFalse );
     iViewCenter = aViewCenter;
     iWorldSize = aWorldSize;
     iViewSize = aViewSize;
+    _AKNTRACE_FUNC_EXIT;
     }
 
 
@@ -94,8 +100,10 @@
 //
 void CAknFormPhysics::Stop()
     {
+    _AKNTRACE_FUNC_ENTER;
     iPhysics->StopPhysics();
     iPhysics->ResetFriction();
+    _AKNTRACE_FUNC_EXIT;
     }
     
 
@@ -106,6 +114,7 @@
 TBool CAknFormPhysics::StartFlick( const TPoint& aLength, 
                                    const TTime& aStartTime )
     {
+    _AKNTRACE_FUNC_ENTER;
     if (  PhysicsAllowed() )
         {
         TPoint drag( aLength );
@@ -119,6 +128,7 @@
         }
 
     PhysicEmulationEnded();
+    _AKNTRACE_FUNC_EXIT;
     return EFalse;
     }
 
@@ -159,10 +169,12 @@
 //
 void CAknFormPhysics::SetPanningPosition( const TPoint& aDelta )
     {
+    _AKNTRACE_FUNC_ENTER;
     if (  PhysicsAllowed() && iPhysics )
         {
         iPhysics->RegisterPanningPosition( aDelta );
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 
@@ -174,6 +186,9 @@
                                            TBool aDrawNow,
                                            TUint /*aFlags*/ )
     {
+    _AKNTRACE_FUNC_ENTER;
+    _AKNTRACE( "The Position of aNewPosition are: ( %d, %d ) ", 
+    		aNewPosition.iX, aNewPosition.iY );
     if ( !PhysicsAllowed() )
         {
         return;
@@ -200,6 +215,7 @@
     msg.Format( _L( "%dfps" ), fps );
 
     iParent.ScrollCacheByPixels( iViewCenter.iY, msg, aDrawNow );
+    _AKNTRACE_FUNC_EXIT;
     }
 
 
@@ -209,8 +225,10 @@
 //
 void CAknFormPhysics::PhysicEmulationEnded()
     {
+    _AKNTRACE_FUNC_ENTER;
     iParent.Synchronize();
     iFrameCount = -1;
+    _AKNTRACE_FUNC_EXIT;
     }
 
 
--- a/uifw/EikStd/dlgsrc/aknrecordinggc.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/EikStd/dlgsrc/aknrecordinggc.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -25,6 +25,7 @@
 #include <e32err.h>
 
 #include "aknrecordinggc.h"
+#include "akntrace.h"
 
 #ifdef _DEBUG
 _LIT( KOverFlow, "Array overflow" );
@@ -64,10 +65,12 @@
 //
 CAknRecordingGc::~CAknRecordingGc()
     {
+    _AKNTRACE_FUNC_ENTER;
     iLines.ResetAndDestroy();
     delete iOffScreenBmp;
     delete iBitGc;
     delete iBitmapDevice;
+    _AKNTRACE_FUNC_EXIT;
     }
     
 
@@ -77,6 +80,11 @@
 //
 void CAknRecordingGc::FlushBuffer( const TRect& aRect, TInt aLineToSkip )
     {
+    _AKNTRACE_FUNC_ENTER;
+    _AKNTRACE( "The rect of FlushBuffer are ( %d, %d ) ( %d, %d )", 
+    		aRect.iTl.iX, aRect.iTl.iY, 
+    		aRect.iBr.iX, aRect.iBr.iY );
+    _AKNTRACE( "[%s][%s]aLineToSkip: [%d]", "CAknRecordingGc", __FUNCTION__, aLineToSkip );
     if ( iLines.Count() == 0 )
         {
         return;
@@ -167,9 +175,20 @@
                     case CBufferItem::EDrawRect:
                         gc->DrawRect( item->iRect );
                         break;
+                        
                     case CBufferItem::EClear:
                         gc->Clear( item->iRect );
                         break;
+                        
+                    case CBufferItem::EDrawLine:
+                        // EDrawLine is used for separator line only and it
+                        // should be skipped for the last visible item.
+                        if ( i < iLines.Count() - 1 
+                                && realRect.iBr.iY < aRect.iBr.iY )
+                            {
+                            gc->DrawLine( item->iRect.iTl, item->iRect.iBr );
+                            }
+                        break;
                     }
                 }
                 
@@ -192,6 +211,7 @@
         {
         iRealGc->BitBlt( TPoint( 0, 0 ), iOffScreenBmp, TRect( 0, 0, 360, 500 ) );
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 
@@ -212,10 +232,12 @@
 //
 void CAknRecordingGc::PrepareForNewLineL( const TRect& aRect )
     {
+    _AKNTRACE_FUNC_ENTER;
     CLineData* newLine = new ( ELeave ) CLineData;
     newLine->iRect = aRect;
     iLines.AppendL( newLine );
     iCurrentLine = iLines.Count() - 1;
+    _AKNTRACE_FUNC_EXIT;
     }
 
 
@@ -225,6 +247,8 @@
 //
 void CAknRecordingGc::ReplaceLineL( TInt aLine )
     {
+    _AKNTRACE_FUNC_ENTER;
+    _AKNTRACE( "[%s][%s]aLine: [%d].", "CAknRecordingGc", __FUNCTION__, aLine );
     if (  aLine < iLines.Count() )
         {
         TRect rect( iLines[aLine]->iRect );
@@ -236,6 +260,7 @@
         }
         
     iCurrentLine = aLine;
+    _AKNTRACE_FUNC_EXIT;
     }
 
 
@@ -255,11 +280,14 @@
 //
 void CAknRecordingGc::InsertLineL( TInt aLine, const TRect& aRect )
     {
+    _AKNTRACE_FUNC_ENTER;
+    _AKNTRACE( "[%s][%s]aLine: [%d].", "CAknRecordingGc", __FUNCTION__, aLine );
     CLineData* newLine = new ( ELeave ) CLineData;
     newLine->iRect = aRect;
     
     iLines.Insert( newLine, aLine );
     iCurrentLine = aLine;
+    _AKNTRACE_FUNC_EXIT;
     }
 
 
@@ -314,11 +342,14 @@
 //
 void CAknRecordingGc::DeleteLine( TInt aLine )
     {
+    _AKNTRACE_FUNC_ENTER;
+    _AKNTRACE( "[%s][%s]aLine: [%d].", "CAknRecordingGc", __FUNCTION__, aLine );
     if ( aLine != -1 && aLine < iLines.Count() )
         {
         delete iLines[aLine];
         iLines.Remove( aLine );
         }
+    _AKNTRACE_FUNC_EXIT;
     }
 
 
@@ -636,9 +667,15 @@
 // From class CWindowGc
 // ---------------------------------------------------------------------------
 //
-void CAknRecordingGc::DrawLine( const TPoint& /*aPoint1*/, 
-    const TPoint& /*aPoint2*/ )
+void CAknRecordingGc::DrawLine( const TPoint& aPoint1, 
+    const TPoint& aPoint2 )
     {
+    _AKNTRACE_FUNC_ENTER;
+    CBufferItem* buffer = BufferItem();
+    buffer->iType = CBufferItem::EDrawLine;
+    buffer->iRect.iTl = aPoint1;
+    buffer->iRect.iBr = aPoint2;
+    _AKNTRACE_FUNC_EXIT;
     }
     
     
@@ -895,6 +932,7 @@
     const CFbsBitmap* aBitmap, const TRect& aSourceRect, 
     const CFbsBitmap* aMaskBitmap, TBool aInvertMask )
     {
+    _AKNTRACE_FUNC_ENTER;
     if ( !iUseBitGc )
         {
         CBufferItem* buffer = BufferItem();
@@ -919,6 +957,7 @@
         {
         iBitGc->BitBltMasked( aPoint, aBitmap, aSourceRect, aMaskBitmap, aInvertMask );
         }
+    _AKNTRACE_FUNC_EXIT;
     }
     
     
@@ -1091,6 +1130,7 @@
 TInt CAknRecordingGc::APIExtension( TUid aUid, TAny*& /*aOutput*/,
     TAny* aInput )
     {
+    _AKNTRACE_FUNC_ENTER;
     if (aUid == KDrawTextInContextUid)
         {
         __ASSERT_DEBUG( aInput, User::Panic(KBadArgument, KErrArgument ));
@@ -1101,10 +1141,12 @@
         TPtrC textToDraw = contextParam->iText.Mid( params->iStart, 
                                                     params->iEnd - params->iStart );
         DrawText(textToDraw, contextParam->iPosition);
+		_AKNTRACE_FUNC_EXIT;
         return KErrNone;
         }
     else
         {
+		_AKNTRACE_FUNC_EXIT;
         return KErrNotSupported;
         }
     }
--- a/uifw/EikStd/srvuisrc/EIKSRVUI.CPP	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/EikStd/srvuisrc/EIKSRVUI.CPP	Fri Feb 19 23:04:46 2010 +0200
@@ -1163,7 +1163,7 @@
 void CEikServAppUi::HandleResourceChangeL(TInt aType)
     {
     CEikServAppUiBase::HandleResourceChangeL(aType);
-    if ( aType == KEikDynamicLayoutVariantSwitch )
+    if ( aType == KEikDynamicLayoutVariantSwitch || aType == KAknsMessageSkinChange )
         {
         UpdateCursorsL();
         }
@@ -1433,6 +1433,16 @@
             {
             spriteMember.iBitmap = AknIconUtils::CreateIconL( *bmpFile, bmpId );
             CleanupStack::PushL( spriteMember.iBitmap );
+            
+            // set color for the cursor
+            MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+            if ( skin )
+                {
+                TRgb color = KRgbBlack;
+                AknsUtils::GetCachedColor( skin, color, KAknsIIDQsnIconColors, EAknsCIQsnIconColorsCG10 );
+                AknIconUtils::SetIconColor( spriteMember.iBitmap, color );
+                }
+
             }
          
         TAknWindowLineLayout l;
--- a/uifw/EikStd/srvuisrc/EIKSRVUI.RSS	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/EikStd/srvuisrc/EIKSRVUI.RSS	Fri Feb 19 23:04:46 2010 +0200
@@ -126,33 +126,33 @@
         AVKON_CUSTOM_TEXT_CURSOR
             {
             cursorId = KAknCustomTextCursorIdLeftToRight;
-            bmpId = EMbmAvkonQgn_indi_cursor_lr; 
+            bmpId = EMbmAvkonQgn_indi_cursor_lr_12; 
             // Mask is not defined as XOR mode drawing is desired.
-            drawMode = EAknCustomTextCursorDrawModeXOR;
+            drawMode =  EAknCustomTextCursorDrawModePEN;
             offsetX = -2;
             },
         AVKON_CUSTOM_TEXT_CURSOR
             {
             cursorId = KAknCustomTextCursorIdRightToLeft;
-            bmpId = EMbmAvkonQgn_indi_cursor_rl;
+            bmpId = EMbmAvkonQgn_indi_cursor_rl_12;
             // Mask is not defined as XOR mode drawing is desired.
-            drawMode = EAknCustomTextCursorDrawModeXOR;
+            drawMode =  EAknCustomTextCursorDrawModePEN;
             offsetX = -5;
             },
         AVKON_CUSTOM_TEXT_CURSOR
             {
             cursorId = KAknCustomTextCursorIdLeftToRightThin;
-            bmpId = EMbmAvkonQgn_indi_cursor_lr;
+            bmpId = EMbmAvkonQgn_indi_cursor_lr_12;
             // Mask is not defined as XOR mode drawing is desired.
-            drawMode = EAknCustomTextCursorDrawModeXOR;
+            drawMode =  EAknCustomTextCursorDrawModePEN;
             offsetX = -1;
             },
         AVKON_CUSTOM_TEXT_CURSOR
             {
             cursorId = KAknCustomTextCursorIdRightToLeftThin;
-            bmpId = EMbmAvkonQgn_indi_cursor_rl;
+            bmpId = EMbmAvkonQgn_indi_cursor_rl_12;
             // Mask is not defined as XOR mode drawing is desired.
-            drawMode = EAknCustomTextCursorDrawModeXOR;
+            drawMode =  EAknCustomTextCursorDrawModePEN;
             offsetX = -3;
             }
         };
--- a/uifw/eikctl/src/EIKCLBD.CPP	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/eikctl/src/EIKCLBD.CPP	Fri Feb 19 23:04:46 2010 +0200
@@ -2003,6 +2003,12 @@
 #endif // RD_UI_TRANSITION_EFFECTS_LIST
         }
 
+    CEikListBox* list = static_cast<CEikListBox*>( iExtension->iControl );
+    
+    if ( iExtension->iCurrentRow < list->BottomItemIndex() )
+        {
+        AknListUtils::DrawSeparator( aGc, aRect, aColors.iText );
+        }
     DrawHighLight( aGc, aRect, aHighlight, skin );
     
     // The column draw loop
@@ -2462,6 +2468,13 @@
             }
 #endif // RD_UI_TRANSITION_EFFECTS_LIST
         }
+
+    CEikListBox* list = static_cast<CEikListBox*>( iExtension->iControl );
+
+    if ( iExtension->iCurrentRow < list->BottomItemIndex() )
+        {
+        AknListUtils::DrawSeparator( aGc, aRect, aColors.iText );
+        }
     
  // LISTBOX LINES NEED TO BE DRAWN HERE.
     DrawHighLight( aGc, aRect, aHighlight, skin );
--- a/uifw/ganes/src/HgList.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/ganes/src/HgList.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -236,6 +236,9 @@
             // Move to correct y-position
             rect.Move(point);
             DrawItem( i, rect );
+            
+            if( i!= iItems.Count() - 1)
+                AknListUtils::DrawSeparator( gc, rect, iColor );
             }
         gc.CancelClippingRect();
         }
--- a/uifw/ganes/src/HgScrollBufferManager.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/ganes/src/HgScrollBufferManager.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -166,6 +166,9 @@
 //
 void CHgScrollBufferManager::SetPosition( TInt aIndex )
     {
+    // If all the items fit in the buffer no need to move the buffer
+    if(iTotalCount <= iBufferSize) return;
+    
     TBool forceUpdate = EFalse;
     aIndex -= iBufferSize / 2; // normalize index to Buffer start
     
--- a/uifw/ganes/src/HgScrollbar.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/ganes/src/HgScrollbar.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -270,12 +270,15 @@
                     iScrollbarBg->Bitmap()->SizeInPixels(),
                     iScrollbarBg->Mask(),
                     EFalse);
-            
-            aGc.BitBltMasked(iScrollbarRect.iTl + iHandlePosition, 
-                    iScrollbarHandle->Bitmap(),
-                    iScrollbarHandle->Bitmap()->SizeInPixels(),
-                    iScrollbarHandle->Mask(),
-                    EFalse);
+
+            if(!iStatic)
+                {
+                aGc.BitBltMasked(iScrollbarRect.iTl + iHandlePosition, 
+                        iScrollbarHandle->Bitmap(),
+                        iScrollbarHandle->Bitmap()->SizeInPixels(),
+                        iScrollbarHandle->Mask(),
+                        EFalse);
+                }
             }
         }
     }
--- a/uifw/ganes/src/HgScroller.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/ganes/src/HgScroller.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -72,7 +72,8 @@
     
     iScrollbar = CHgScrollbar::NewL(*this);
     iPopupDrawer = new (ELeave) THgPopupDrawer();
-    
+    iPhysics = CAknPhysics::NewL(*this, this);
+
     TCallBack callback(CHgScroller::MarqueeCallback, this);
     iDrawUtils = CHgDrawUtils::NewL( callback );
     
@@ -403,11 +404,6 @@
 //
 void CHgScroller::InitPhysicsL()
     {
-    if(!iPhysics)
-        {
-        iPhysics = CAknPhysics::NewL(*this, this);
-        }
-
     // For to be able to pan on a empty area. 
     // The world is set to be at least the size of the view.
     TSize worldSize = TotalSize();
@@ -838,8 +834,6 @@
     
     iPointerDown = EFalse;
     iPanning = EFalse;
-    iShowHighlight = ETrue;
-    iDrawUtils->EnableMarquee(HasHighlight());
     }
 
 // -----------------------------------------------------------------------------
@@ -1031,6 +1025,7 @@
                 {
                 iPopupText1.Zero();
                 iPopupText1.Append( iItems[selectedItem]->Title()[0] );
+                iPopupText1.UpperCase();
                 }
             }
         }
@@ -1072,6 +1067,22 @@
     if(newRow != iCurrentRow)
         {
         iCurrentRow = newRow;
+        
+        TInt action = iPhysics->OngoingPhysicsAction();
+        if( action !=  CAknPhysics::EAknPhysicsActionNone )
+            {
+            TTouchFeedbackType type( ETouchFeedbackVibra );
+            if ( CAknPhysics::EAknPhysicsActionDragging == action )
+                {
+                type = TTouchFeedbackType(ETouchFeedbackVibra | ETouchFeedbackAudio);
+                }
+
+            MTouchFeedback* feedback = MTouchFeedback::Instance();
+            if(feedback)
+                feedback->InstantFeedback( this, ETouchFeedbackSensitiveList,
+                                            type,
+                                            TPointerEvent() );
+            }
 
         if(iManager)
             {
@@ -1119,10 +1130,25 @@
                 possibleKeyScrollingState = EKeyScrollingRight;
             break;
         case EKeyEnter:
+        case EKeyOK:
             {
-            if( iSelectedIndex != KErrNotFound && iSelectionObserver )
+            if( iSelectedIndex != KErrNotFound && HasHighlight() )
                 {
-                TRAP_IGNORE( iSelectionObserver->HandleOpenL( iSelectedIndex ); )
+                if( iSelectionObserver )
+                    TRAP_IGNORE( iSelectionObserver->HandleOpenL( iSelectedIndex ); )
+                iShowHighlight = EFalse;
+                iDrawUtils->EnableMarquee(HasHighlight());
+                return EKeyWasConsumed;
+                }
+            else if( iItemCount )
+                {
+                iSelectedIndex = iCurrentRow;
+                if( iSelectionObserver )
+                    TRAP_IGNORE( iSelectionObserver->HandleSelectL( iSelectedIndex ); )
+                FitSelectionToView();
+                iShowHighlight = ETrue;
+                iDrawUtils->EnableMarquee(HasHighlight());
+                DrawDeferred();
                 return EKeyWasConsumed;
                 }
             return EKeyWasNotConsumed;
@@ -1144,19 +1170,29 @@
                     TCallBack( KeyScrollingTimerCallback, this ) );
             }
         }
-    
-    TBool handled = DoHandleKeyEvent(aKeyEvent); 
-    
-    if( iSelectedIndex != prevSelected && iSelectionObserver )
+
+    if( !HasHighlight() )
         {
-        iDrawUtils->ResetMarquee();
-        TRAP_IGNORE( iSelectionObserver->HandleSelectL(iSelectedIndex); )
+        // DoHandleKeyEvent will move focus at the first index on screen.  
+        iSelectedIndex = KErrNotFound;
         }
     
-    if( !handled )
+    if( DoHandleKeyEvent(aKeyEvent) )
+        {
+        iShowHighlight = ETrue;
+        iDrawUtils->EnableMarquee(HasHighlight());
+        if( iSelectedIndex != prevSelected && iSelectionObserver )
+            {
+            iDrawUtils->ResetMarquee();
+            TRAP_IGNORE( iSelectionObserver->HandleSelectL(iSelectedIndex); )
+            }
+        return EKeyWasConsumed;
+        }
+    else
+        {
         iKeyRepeats--;
-    
-    return handled ? EKeyWasConsumed : EKeyWasNotConsumed;
+        return EKeyWasNotConsumed;
+        }
     }
 
 // -----------------------------------------------------------------------------
--- a/uifw/ganes/src/HgVgHelper.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/ganes/src/HgVgHelper.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -43,11 +43,12 @@
     {
     TSize size = aBitmap.SizeInPixels();    
     VGImage image = vgCreateImage(VG_sRGB_565, size.iWidth, size.iHeight,VG_IMAGE_QUALITY_NONANTIALIASED);        
-    VGErrorCode error = vgGetError();
-    if (image == VG_INVALID_HANDLE || error == VG_OUT_OF_MEMORY_ERROR)
+
+    if ( image == VG_INVALID_HANDLE )
         {
         User::Leave(KErrNoMemory);
         }
+    
     if (aBitmap.DisplayMode() == EColor64K && !aBitmap.IsCompressedInRAM())
         {
         aBitmap.BeginDataAccess();
--- a/uifw/ganes/src/HgVgLetterPopup.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/ganes/src/HgVgLetterPopup.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -65,9 +65,7 @@
             iRect.Width(), iRect.Height(), 
             VG_IMAGE_QUALITY_NONANTIALIASED);
 
-    VGErrorCode error = vgGetError();
-    
-    if (iLetterImage == VG_INVALID_HANDLE || error == VG_OUT_OF_MEMORY_ERROR)
+    if( iLetterImage == VG_INVALID_HANDLE )
         {
         User::Leave(KErrNoMemory);
         }
--- a/uifw/ganes/src/HgVgMediaWall.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/ganes/src/HgVgMediaWall.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -59,7 +59,7 @@
 #include <AknUtils.h>
 #include <layoutmetadata.cdl.h>
 #include <AknLayout2ScalableDef.h>
-#include <AknLayoutScalable_Apps.cdl.h>
+#include <aknlayoutscalable_apps.cdl.h>
 
 
 
@@ -509,14 +509,18 @@
         if (iScrollBar && iScrollBar->HandlePointerEventL(aEvent))
             {
             iScrollBarHit = ETrue;
-            }
-    
+            }        
         if (aEvent.iType == TPointerEvent::EButton1Up)
             {
             iScrollBarHit = EFalse;
+            // need to draw once at this point if animation is not going
+            // on because the state has changed (when finger is lifted popup must disappear)
+            if (!iAnimationTimer->IsActive())
+                {
+                DrawOpenVG();
+                }
             }
-            
-        
+                    
         }
     
     
@@ -2023,15 +2027,13 @@
                 iMediaWallStyle == EHgVgMediaWallStyleGrid)
             {
             // when scrollbar is being dragged we draw letter popup
-            if (iLetterPopup && (iScrollBarHit || (iKeyScrollingState != ENoKeyScrolling && dist >= 2.0f)))
+            if (iLetterPopup && (iScrollBarHit || (iKeyScrollingState != ENoKeyScrolling && dist > KDrawLetterPopupDistance)))
                 {
                 iLetterPopup->Draw(iRect, KMaxLetterPopupOpacity);                    
                 }
-        
-            // when close to target item, we draw titles
-            if (dist <= KTitleDrawDistance)
-                {            
-                DrawTitles(1.0f - dist / KTitleDrawDistance);                
+            else
+                {
+                DrawTitles(1.0f);                                
                 }
             }
         }
@@ -2325,8 +2327,8 @@
     // in full screen, enable blurring on flip/zoom
     iRenderer->EnableBlurOnFlip(ETrue, KDefaultBlurDeviation, 
             KDefaultBlurDeviation);
-
-    InitLabelsL(1);
+     
+    InitLabelsL(Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0);
     
     InitPopupL(0);
     
--- a/uifw/ganes/src/HgVgSkinRenderer.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/ganes/src/HgVgSkinRenderer.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -115,8 +115,7 @@
             VG_IMAGE_QUALITY_NONANTIALIASED);
     
     // handle out of memory
-    VGErrorCode error = vgGetError();
-    if (iSkinImage == VG_INVALID_HANDLE || error == VG_OUT_OF_MEMORY_ERROR)
+    if( iSkinImage == VG_INVALID_HANDLE )
         {
         User::Leave(KErrNoMemory);
         }
--- a/uifw/uiklaf/inc/LAFEDWIN.H	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/uiklaf/inc/LAFEDWIN.H	Fri Feb 19 23:04:46 2010 +0200
@@ -22,7 +22,7 @@
 #include <e32std.h>
 #include <gulbordr.h>
 #include <coecntrl.h>
-#include "lafsbfrm.h"
+#include "LAFSBFRM.H"
 
 class CTextLayout;
 class CLafEdwinCustomDrawBase;
--- a/uifw/uiklaf/inc/LAFMENUB.H	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/uiklaf/inc/LAFMENUB.H	Fri Feb 19 23:04:46 2010 +0200
@@ -22,7 +22,7 @@
 #include <uiklaf/private/lafenv.h>
 #include <lafmain.h>
 #include <lafpublc.h>
-#include "lafmenup.h"
+#include "LAFMENUP.H"
 #include <e32std.h>
 #include <gulbordr.h>
 #include <coecntrl.h>
--- a/uifw/uiklaf/inc/LAFMENUP.H	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/uiklaf/inc/LAFMENUP.H	Fri Feb 19 23:04:46 2010 +0200
@@ -26,7 +26,7 @@
 #include <uiklaf/private/lafenv.h>
 #include <lafmain.h>
 #include <lafpublc.h>
-#include "lafsbfrm.h"
+#include "LAFSBFRM.H"
 
 class CGulIcon;
 class TMargins8;
--- a/uifw/uiklaf/inc/laflbx.h	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/uiklaf/inc/laflbx.h	Fri Feb 19 23:04:46 2010 +0200
@@ -25,7 +25,7 @@
 #include <gulutil.h>
 #include <gulbordr.h>
 
-#include "lafsbfrm.h"
+#include "LAFSBFRM.H"
 
 //
 // Forward declarations
--- a/uiutils/AknJapaneseReading/src/AknJapaneseReading.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uiutils/AknJapaneseReading/src/AknJapaneseReading.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -18,7 +18,7 @@
 
 // INCLUDE FILES
 #include "AknJapaneseReading.h"
-#include "AknJapaneseReadingDll.h"
+#include "AknJapaneseReadingDLL.h"
 #include <PtiEngine.h>
 
 // EXTERNAL DATA STRUCTURES
--- a/uiutils/AknJapaneseReading/src/AknJapaneseReadingDLL.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uiutils/AknJapaneseReading/src/AknJapaneseReadingDLL.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -18,7 +18,7 @@
 
 // INCLUDE FILES
 #include <e32base.h>
-#include "AknJapaneseReadingDll.h"
+#include "AknJapaneseReadingDLL.h"
 
 // -----------------------------------------------------------------------------
 // Static DLL functions
--- a/uiutils/Findutil/inc/ChineseFindUtils.h	Tue Feb 02 01:00:49 2010 +0200
+++ b/uiutils/Findutil/inc/ChineseFindUtils.h	Fri Feb 19 23:04:46 2010 +0200
@@ -29,7 +29,7 @@
 // INCLUDES
 #include <w32std.h>
 #include <e32base.h>
-#include <CenRepNotifyHandler.h>
+#include <cenrepnotifyhandler.h>
 
 // FORWARD DECLARATION
 class CRepository;
--- a/uiutils/Findutil/inc/FindUtilBase.h	Tue Feb 02 01:00:49 2010 +0200
+++ b/uiutils/Findutil/inc/FindUtilBase.h	Fri Feb 19 23:04:46 2010 +0200
@@ -27,7 +27,7 @@
 #define __FINDUTILBASE_H__
 
 #include <e32base.h>
-#include "findutil.h"
+#include "FindUtil.h"
 
 class CFindUtilBase : public CBase, public MFindUtil
 	{
--- a/uiutils/Findutil/inc/FindUtilWestern.h	Tue Feb 02 01:00:49 2010 +0200
+++ b/uiutils/Findutil/inc/FindUtilWestern.h	Fri Feb 19 23:04:46 2010 +0200
@@ -27,9 +27,9 @@
 #define __FINDUTILWESTERN__
 
 #include <e32std.h>
-#include <CentralRepository.h>
+#include <centralrepository.h>
 #include <AknFepInternalCRKeys.h>
-#include <CenRepNotifyHandler.h>
+#include <cenrepnotifyhandler.h>
 #include "FindUtilBase.h"
 
 class CFindUtilKorean;
--- a/uiutils/Findutil/src/ChineseFindUtils.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uiutils/Findutil/src/ChineseFindUtils.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -22,9 +22,9 @@
 
 
 
-#include <CentralRepository.h>
+#include <centralrepository.h>
 
-#include "chinesefindutils.h"
+#include "ChineseFindUtils.h"
 
 // ======== MEMBER FUNCTIONS ========
 
--- a/uiutils/Findutil/src/FindUtil.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uiutils/Findutil/src/FindUtil.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -24,12 +24,12 @@
 
 
 #include <e32std.h>
-#include <FeatMgr.h>
-#include "findutil.h"
-#include "findutilbase.h"
+#include <featmgr.h>
+#include "FindUtil.h"
+#include "FindUtilBase.h"
 
 #ifdef __WINS__     
-#include <FeatMgr.h>    
+#include <featmgr.h>    
 #endif
 
 typedef MFindUtil* (*TFindUtilFactoryFunctionL)();
--- a/uiutils/Findutil/src/FindUtilBase.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uiutils/Findutil/src/FindUtilBase.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -24,7 +24,7 @@
 
 
 #include <e32base.h>
-#include "findutilbase.h"
+#include "FindUtilBase.h"
 
 // CFindUtilBase implementation
 
--- a/uiutils/Findutil/src/FindUtilChinese.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uiutils/Findutil/src/FindUtilChinese.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -24,11 +24,11 @@
 
 
 #include <PtiEngine.h>
-#include <CentralRepository.h>
+#include <centralrepository.h>
 #include <AknFepInternalCRKeys.h>
 #include <AvkonInternalCRKeys.h>
 #include <aknedsts.h>
-#include <COEAUI.H>
+#include <coeaui.h>
 #include <aknenv.h> //phonebook
 #include <aknappui.h>
 #include <aknapp.h>
@@ -38,7 +38,7 @@
 
 
 #include "FindUtilChinese.h"
-#include "chinesefindutils.h"
+#include "ChineseFindUtils.h"
 
 // CONSTANTS 
 const TUint16 KStarChar = 0x002a;   
--- a/uiutils/Findutil/src/FindUtilJapanese.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uiutils/Findutil/src/FindUtilJapanese.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -26,7 +26,7 @@
 
 // INCLUDE FILES
 #include "FindUtilJapanese.h"
-#include <JPLangUtil.h>
+#include <jplangutil.h>
 
 // CONSTANTS
 _LIT(KDesWildCard, "*");
--- a/uiutils/Findutil/src/FindUtilWestern.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uiutils/Findutil/src/FindUtilWestern.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -28,7 +28,7 @@
 #include <PtiIndicDefs.h>
 #include "FindUtilKorean.h"
 #include <avkon.rsg>
-#include <stringloader.h>
+#include <StringLoader.h>
 const TInt KLitTab('\t');
 const TInt KLitSpace(' ');
 const TInt KLitHyphen('-');
--- a/uiutils/gamerecognizer/src/GameRecognizer.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uiutils/gamerecognizer/src/GameRecognizer.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -18,7 +18,7 @@
 
 #include <f32file.h>
 #include <s32mem.h>
-#include <ImplementationProxy.h>
+#include <implementationproxy.h>
 #include "GameRecognizer.h"
 
 //
--- a/uiutils/group/bld.inf	Tue Feb 02 01:00:49 2010 +0200
+++ b/uiutils/group/bld.inf	Fri Feb 19 23:04:46 2010 +0200
@@ -20,3 +20,4 @@
 #include "../Findutil/group/bld.inf"
 #include "../gamerecognizer/group/bld.inf"
 #include "../AknJapaneseReading/group/bld.inf"
+#include "../hlplch/group/bld.inf"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uiutils/hlplch/bwins/HlplchU.def	Fri Feb 19 23:04:46 2010 +0200
@@ -0,0 +1,5 @@
+EXPORTS
+	?LaunchHelpApplicationL@HlpLauncher@@SAXAAVRWsSession@@PAV?$CArrayFix@VTCoeHelpContext@@@@@Z @ 1 NONAME ; public: static void __cdecl HlpLauncher::LaunchHelpApplicationL(class RWsSession &,class CArrayFix<class TCoeHelpContext> *)
+	?LaunchHelpApplicationL@HlpLauncher@@SAXAAVRWsSession@@@Z @ 2 NONAME ; public: static void __cdecl HlpLauncher::LaunchHelpApplicationL(class RWsSession &)
+	?LaunchHelpApplicationL@HlpLauncher@@SAXAAVRWsSession@@VTUid@@@Z @ 3 NONAME ; public: static void __cdecl HlpLauncher::LaunchHelpApplicationL(class RWsSession &,class TUid)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uiutils/hlplch/data/lch.rss	Fri Feb 19 23:04:46 2010 +0200
@@ -0,0 +1,25 @@
+// Copyright (c) 1999-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:
+//
+
+NAME LCH1
+
+#include"lch.rh"
+
+RESOURCE RSS_SIGNATURE { }
+
+RESOURCE TXT r_help_path
+	{
+	buf = "z:\\sys\\bin\\cshelp.exe";
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uiutils/hlplch/eabi/HLPLCHU.DEF	Fri Feb 19 23:04:46 2010 +0200
@@ -0,0 +1,7 @@
+EXPORTS
+	_ZN11HlpLauncher22LaunchHelpApplicationLER10RWsSession @ 1 NONAME
+	_ZN11HlpLauncher22LaunchHelpApplicationLER10RWsSession4TUid @ 2 NONAME
+	_ZN11HlpLauncher22LaunchHelpApplicationLER10RWsSessionP9CArrayFixI15TCoeHelpContextE @ 3 NONAME
+	_ZTI11CHlpCmdLine @ 4 NONAME ; #<TI>#
+	_ZTV11CHlpCmdLine @ 5 NONAME ; #<VT>#
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uiutils/hlplch/group/bld.inf	Fri Feb 19 23:04:46 2010 +0200
@@ -0,0 +1,31 @@
+/*
+* 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:        
+*       Bldmake component description file. 
+*
+*/
+
+
+
+
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_EXPORTS
+
+PRJ_MMPFILES
+#ifndef TOOLS
+hlplch.mmp
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uiutils/hlplch/group/hlplch.mmp	Fri Feb 19 23:04:46 2010 +0200
@@ -0,0 +1,38 @@
+// Copyright (c) 1999-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:
+// hlplch.dll Launches a device's help application
+// 
+//
+
+#include <platform_paths.hrh>
+
+TARGET			hlplch.dll
+TARGETTYPE		DLL
+CAPABILITY   All -TCB
+UID		0x1000008D 0x101F423B
+VENDORID 0x70000001
+
+SOURCEPATH	../src
+SOURCE			hlplch.cpp
+
+MW_LAYER_SYSTEMINCLUDE
+USERINCLUDE		../inc
+
+START RESOURCE	../data/lch.rss
+TARGETPATH		resource/apps
+END
+
+LIBRARY			euser.lib	apgrfx.lib	eikcore.lib	apparc.lib bafl.lib efsrv.lib
+
+SMPSAFE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uiutils/hlplch/inc/hlplch_internal.h	Fri Feb 19 23:04:46 2010 +0200
@@ -0,0 +1,56 @@
+/*
+* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#ifndef __HLPLCH_INTERNAL_H
+#define __HLPLCH_INTERNAL_H
+
+/** Maximum length of command line to launch application. 
+@internalComponent
+@released
+*/
+const TInt KMaxCmdLineLength = 512;
+
+/** resource file name
+@internalComponent
+@released
+*/
+_LIT(KHelpLauncherResource, "z:\\resource\\apps\\lch.rsc");
+
+class CHlpCmdLine : public CBase
+/**
+@internalComponent
+@released
+*/
+	{
+public:
+	static CHlpCmdLine* NewL(CArrayFix<TCoeHelpContext>* aContextList);
+	static CHlpCmdLine* NewLC(CArrayFix<TCoeHelpContext>* aContextList);
+	~CHlpCmdLine();
+public:
+	TPtr8 CmdLineL();
+private:
+	void BuildCmdLineL();
+	void AddContextL(TCoeHelpContext& aContext);
+private:
+	void ConstructL();
+	CHlpCmdLine(CArrayFix<TCoeHelpContext>* aContextList);
+private:
+	CArrayFix<TCoeHelpContext>* iContextList;
+	CBufFlat* iCmdLine;
+	};
+	
+#endif //__HLPLCH_INTERNAL_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uiutils/hlplch/inc/lch.rh	Fri Feb 19 23:04:46 2010 +0200
@@ -0,0 +1,33 @@
+// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#ifndef LCH_RH
+#define LCH_RH
+
+//
+// FROM EIKDEF.RH - avoids HlpModel requiring Eikon
+//
+STRUCT RSS_SIGNATURE
+    {
+    LONG signature=4;
+    SRLINK self;
+    }
+
+STRUCT TXT
+	{
+	LTEXT buf;
+	}
+
+#endif // LCH_RH
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uiutils/hlplch/src/hlplch.cpp	Fri Feb 19 23:04:46 2010 +0200
@@ -0,0 +1,170 @@
+// Copyright (c) 2003-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:
+// Help Launcher module
+// 
+//
+
+#include "hlplch.h"
+#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
+#include "hlplch_internal.h"
+#endif
+#include <apgcli.h>
+#include <barsc.h>
+#include <bautils.h>
+#include <lch.rsg>
+
+EXPORT_C void HlpLauncher::LaunchHelpApplicationL(RWsSession& aWsSession, TUid aUid)
+/** Launches the help application, passing a help file UID.
+
+@param aWsSession Application's window server session
+@param aUid Help file UID */
+	{
+	__UHEAP_MARK;
+	TBuf<32> cmdLine;
+	cmdLine.AppendNum((TInt)aUid.iUid);
+	TPtr8 ptr((TText8*)cmdLine.Ptr(), cmdLine.Length(),cmdLine.Length());
+	DoLaunchHelpApplicationL(aWsSession, ptr);
+	__UHEAP_MARKEND;
+	}
+
+EXPORT_C void HlpLauncher::LaunchHelpApplicationL(RWsSession& aWsSession)
+/** Launches the help application.
+
+@param aWsSession Application's window server session */
+	{
+	__UHEAP_MARK;
+	TBuf8<1> blank = _L8("");
+	DoLaunchHelpApplicationL(aWsSession, blank);
+	__UHEAP_MARKEND;
+	}
+
+EXPORT_C void HlpLauncher::LaunchHelpApplicationL(RWsSession& aWsSession, CArrayFix<TCoeHelpContext>* aContextList)
+/** Launches the help application, passing an array of help contexts.
+
+@param aWsSession Application's window server session
+@param aContextList Array of help contexts */
+	{
+	__UHEAP_MARK;
+
+	CHlpCmdLine* cmdLine=CHlpCmdLine::NewLC(aContextList);
+	DoLaunchHelpApplicationL(aWsSession, cmdLine->CmdLineL());
+	CleanupStack::PopAndDestroy();
+
+	__UHEAP_MARKEND;
+	}
+
+void HlpLauncher::DoLaunchHelpApplicationL(RWsSession& aWsSession, const TDesC8& aCmdLine)
+	{
+	TApaTaskList taskList(aWsSession);
+	TApaTask task = taskList.FindApp(KHlpAppUid);
+	if (task.Exists())
+		{
+		task.SendMessage (KHlpAppWsMsg, aCmdLine); 
+		task.BringToForeground();
+		}
+	else
+		{
+		CApaCommandLine* cmdLine=CApaCommandLine::NewLC();
+
+		// INC057477 fix
+		// Get and open the resource file
+		RFs f;
+		CleanupClosePushL(f);
+
+		User::LeaveIfError(f.Connect());
+		RResourceFile r;
+
+		r.OpenL(f, KHelpLauncherResource);
+		CleanupClosePushL(r);
+		
+		// Read the path of the help application from the resource file
+		r.ConfirmSignatureL();
+		TResourceReader resReader;
+		resReader.SetBuffer(r.AllocReadLC(R_HELP_PATH));
+		TPtrC16 helpPath = resReader.ReadTPtrC16();
+		cmdLine->SetExecutableNameL(helpPath);
+		CleanupStack::PopAndDestroy(); // AllocReadLC
+		CleanupStack::PopAndDestroy(); // close r
+		CleanupStack::PopAndDestroy(); // close f
+		
+		cmdLine->SetCommandL(EApaCommandOpen);
+		cmdLine->SetTailEndL(aCmdLine);
+		//EikDll::StartAppL(*cmdLine);
+		RApaLsSession lsSession;
+  		User::LeaveIfError(lsSession.Connect());
+  		CleanupClosePushL(lsSession);
+  		User::LeaveIfError(lsSession.StartApp(*cmdLine));
+  		CleanupStack::PopAndDestroy(&lsSession);
+		CleanupStack::PopAndDestroy(); //cmdLine
+		}
+	}
+
+CHlpCmdLine* CHlpCmdLine::NewL(CArrayFix<TCoeHelpContext>* aContextList)
+	{
+	CHlpCmdLine* self=CHlpCmdLine::NewLC(aContextList);
+	CleanupStack::Pop(); // self
+	return self;
+	}
+
+CHlpCmdLine* CHlpCmdLine::NewLC(CArrayFix<TCoeHelpContext>* aContextList)
+	{
+	CHlpCmdLine* self=new(ELeave)CHlpCmdLine(aContextList);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+CHlpCmdLine::CHlpCmdLine(CArrayFix<TCoeHelpContext>* aContextList)
+		:iContextList(aContextList)
+	{
+	}
+
+CHlpCmdLine::~CHlpCmdLine()
+	{
+	delete iContextList;
+	delete iCmdLine;
+	}
+
+void CHlpCmdLine::ConstructL()
+	{
+	iCmdLine=CBufFlat::NewL(KMaxCmdLineLength);
+	}
+
+TPtr8 CHlpCmdLine::CmdLineL()
+	{
+	BuildCmdLineL();
+	TInt len = iCmdLine->Ptr(0).Size()/sizeof(TText8);
+	TPtr8 ptr((TText8*)iCmdLine->Ptr(0).Ptr(),len,len);
+
+	return ptr;
+	}
+
+void CHlpCmdLine::BuildCmdLineL()
+	{
+	TInt count=iContextList->Count();
+	iCmdLine->InsertL(iCmdLine->Size(), &count, sizeof(TInt));
+	for (TInt i=0; i < count; i++)
+		{
+		AddContextL(iContextList->At(i));
+		}
+	}
+
+void CHlpCmdLine::AddContextL(TCoeHelpContext& aContext)
+	{
+	TInt length=aContext.iContext.Size();
+	iCmdLine->InsertL(iCmdLine->Size(), &length, sizeof(TInt));
+	iCmdLine->InsertL(iCmdLine->Size(), aContext.iContext.Ptr(), aContext.iContext.Size());
+	iCmdLine->InsertL(iCmdLine->Size(), &aContext.iMajor, sizeof(TUid));
+	}
+