# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1266613486 -7200 # Node ID 8ca85d2f0db77f35f45982a37deb4bd5dc3f3df5 # Parent 2f259fa3e83a8fb1dcb4f4c8e2366b3842603599 Revision: 201003 Kit: 201007 diff -r 2f259fa3e83a -r 8ca85d2f0db7 applicationinterworkingfw/ServiceHandler/src/AiwServiceHandlerImpl.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 #include -#include +#include #include "AiwMenuBinding.h" #include "AiwServiceHandlerImpl.h" #include "AiwMenu.h" diff -r 2f259fa3e83a -r 8ca85d2f0db7 classicui_plat/avkon_localised_texts_api/loc/avkon.loc --- 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 diff -r 2f259fa3e83a -r 8ca85d2f0db7 classicui_plat/avkon_settings_api/inc/AvkonInternalCRKeys.h --- 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 }; /** diff -r 2f259fa3e83a -r 8ca85d2f0db7 classicui_plat/extended_aiw_criteria_api/inc/AiwContactSelectionDataTypes.h --- 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 +#include class RVPbkContactFieldDefaultPriorities; class CVPbkFieldTypeSelector; @@ -838,7 +838,7 @@ typedef TPckgBuf TAiwSingleItemSelectionDataV3Pckg; typedef TPckgBuf TAiwMultipleItemSelectionDataV1Pckg; -#include +#include #endif // __AiwContactSelectionDataTypes_H__ diff -r 2f259fa3e83a -r 8ca85d2f0db7 classicui_plat/extended_aiw_criteria_api/inc/AiwDialDataTypes.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 // For KNullContactId -#include // For contact item field +#include // For contact item field // CONSTANTS @@ -531,7 +531,7 @@ // Inline methods -#include +#include #endif // AIWDIALDATATYPES_H diff -r 2f259fa3e83a -r 8ca85d2f0db7 classicui_plat/extended_aiw_criteria_api/inc/AiwPoCParameters.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 +#include #include // DATA TYPES @@ -222,7 +222,7 @@ }; // Inline methods -#include +#include #endif // AIWPOCPARAMETERS_H diff -r 2f259fa3e83a -r 8ca85d2f0db7 classicui_plat/extended_editors_api/inc/AknPhoneNumberEditor.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 /** diff -r 2f259fa3e83a -r 8ca85d2f0db7 classicui_plat/extended_options_menu_api/inc/akncollection.h --- 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 +#include /** * Collection state provider. @@ -34,6 +35,8 @@ { public: + DECLARE_TYPE_ID( 0x2002C343 ) + /** * Enum for collection state flags. */ diff -r 2f259fa3e83a -r 8ca85d2f0db7 classicui_plat/extended_options_menu_api/inc/aknitemactionmenu.h --- 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 #include +#include class MAknCollection; class MAknCollectionObserver; @@ -66,6 +67,8 @@ public: + DECLARE_TYPE_ID( 0x2002C344 ) + /** * Two-phased constructor. * diff -r 2f259fa3e83a -r 8ca85d2f0db7 classicui_plat/ganes_api/inc/ganes/HgScroller.h --- 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 #include -#include +#include #include #include #include diff -r 2f259fa3e83a -r 8ca85d2f0db7 classicui_plat/legacy_ui_framework_headers_api/inc/calslbs.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 +#include #endif diff -r 2f259fa3e83a -r 8ca85d2f0db7 classicui_plat/media_shared_document_api/inc/MediaSharedDocument.h --- 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 +#include #include // CLASS DEFINITION diff -r 2f259fa3e83a -r 8ca85d2f0db7 classicui_pub/editors_api/inc/EIKEDWIN.H --- 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 diff -r 2f259fa3e83a -r 8ca85d2f0db7 classicui_pub/editors_api/inc/EikCcpu.h --- 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 diff -r 2f259fa3e83a -r 8ca85d2f0db7 classicui_pub/group/bld.inf --- 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" diff -r 2f259fa3e83a -r 8ca85d2f0db7 classicui_pub/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 + +PRJ_PLATFORMS +DEFAULT + +PRJ_EXPORTS + +../inc/HLPLCH.H MW_LAYER_PUBLIC_EXPORT_PATH(hlplch.h) diff -r 2f259fa3e83a -r 8ca85d2f0db7 classicui_pub/help_launcher_api/inc/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 +#endif + +#if !defined(__EIKDLL_H__) +#include +#endif + +#if !defined(__WSERV_H__) +#include +#endif + +#if !defined(__COEHELP_H__) +#include +#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* aContextList); + static CHlpCmdLine* NewLC(CArrayFix* aContextList); + ~CHlpCmdLine(); +public: + TPtr8 CmdLineL(); +private: + void BuildCmdLineL(); + void AddContextL(TCoeHelpContext& aContext); +private: + void ConstructL(); + CHlpCmdLine(CArrayFix* aContextList); +private: + CArrayFix* 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* 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 diff -r 2f259fa3e83a -r 8ca85d2f0db7 classicui_pub/lists_api/inc/EIKLBX.H --- 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. diff -r 2f259fa3e83a -r 8ca85d2f0db7 classicui_pub/lists_api/inc/eikfrlb.h --- 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: diff -r 2f259fa3e83a -r 8ca85d2f0db7 classicui_pub/lists_api/tsrc/conf/tctestsdklistseiklbx.cfg --- 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] diff -r 2f259fa3e83a -r 8ca85d2f0db7 classicui_pub/lists_api/tsrc/conf/ui_testsdklistseiklbx.cfg --- 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] diff -r 2f259fa3e83a -r 8ca85d2f0db7 classicui_pub/lists_api/tsrc/inc/testsdklists.h --- 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 diff -r 2f259fa3e83a -r 8ca85d2f0db7 classicui_pub/lists_api/tsrc/src/testsdklistsblocks.cpp --- 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 ), diff -r 2f259fa3e83a -r 8ca85d2f0db7 classicui_pub/lists_api/tsrc/src/testsdklistsblockseiklbx.cpp --- 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] diff -r 2f259fa3e83a -r 8ca85d2f0db7 classicui_pub/options_menu_api/inc/EIKMENUP.H --- 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; }; diff -r 2f259fa3e83a -r 8ca85d2f0db7 classicui_pub/popups_api/inc/AknPopupField.h --- 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 diff -r 2f259fa3e83a -r 8ca85d2f0db7 classicui_pub/screen_saver_api/inc/ScreensaverpluginIntDef.h --- 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 -#include +#include #include // CONSTANTS diff -r 2f259fa3e83a -r 8ca85d2f0db7 classicui_pub/screen_saver_api/inc/ScreensaverpluginIntDef.inl --- 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 // For REComSession +#include // For REComSession #include // For KCScreensaverPluginInterfaceDefinitionUid // CONSTANTS diff -r 2f259fa3e83a -r 8ca85d2f0db7 classicui_pub/status_pane_api/inc/eikspane.h --- 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: diff -r 2f259fa3e83a -r 8ca85d2f0db7 classicui_pub/ui_framework_definitions_api/inc/avkon.hrh --- 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 diff -r 2f259fa3e83a -r 8ca85d2f0db7 classicui_pub/ui_framework_definitions_api/inc/avkon.rh --- 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. + } diff -r 2f259fa3e83a -r 8ca85d2f0db7 classicui_pub/ui_framework_utilities_api/inc/AknUtils.h --- 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 diff -r 2f259fa3e83a -r 8ca85d2f0db7 classicui_pub/ui_framework_utilities_api/tsrc/conf/tctestsdkuifwutilaknutils.cfg --- 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] diff -r 2f259fa3e83a -r 8ca85d2f0db7 classicui_pub/ui_framework_utilities_api/tsrc/conf/ui_testsdkuifwutilaknutils.cfg --- 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] + diff -r 2f259fa3e83a -r 8ca85d2f0db7 classicui_pub/ui_framework_utilities_api/tsrc/inc/testsdkuifwutil.h --- 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 diff -r 2f259fa3e83a -r 8ca85d2f0db7 classicui_pub/ui_framework_utilities_api/tsrc/src/testsdkuifwutilblocks.cpp --- 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] }; diff -r 2f259fa3e83a -r 8ca85d2f0db7 classicui_pub/ui_framework_utilities_api/tsrc/src/testsdkuifwutilblocksaknutils.cpp --- 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 diff -r 2f259fa3e83a -r 8ca85d2f0db7 commonuis/CommonDialogs/group/iconlist.txt --- 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 diff -r 2f259fa3e83a -r 8ca85d2f0db7 commonuis/CommonDialogs/inc/caknmemoryselectionmodelmultidrive.h --- 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 diff -r 2f259fa3e83a -r 8ca85d2f0db7 commonuis/CommonDialogs/src/caknmemoryselectiondialogmultidrive.cpp --- 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() ); diff -r 2f259fa3e83a -r 8ca85d2f0db7 commonuis/CommonDialogs/src/caknmemoryselectionmodelmultidrive.cpp --- 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 diff -r 2f259fa3e83a -r 8ca85d2f0db7 commonuis/CommonUi/src/DocumentHandler.cpp --- 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 (&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); diff -r 2f259fa3e83a -r 8ca85d2f0db7 commonuis/CommonUi/src/FindItemDialog.cpp --- 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 // for ButtonGroupContainer #include // for EKeyOk -#include // KFavouritesMaxUrl -#include // for CBookmarkItem +#include // KFavouritesMaxUrl +#include // for CBookmarkItem -#include +#include #include // RApaLsSession for WMLBrowser launch @@ -60,7 +60,7 @@ #include // For CClipboard -#include // For CSchemeHandler +#include // For CSchemeHandler #include diff -r 2f259fa3e83a -r 8ca85d2f0db7 commonuis/CommonUi/src/FindItemMenu.cpp --- 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 // Phonenumber parser #include // Mtm uids -#include // KFavouritesMaxUrl -#include // for CBookmarkItem +#include // KFavouritesMaxUrl +#include // for CBookmarkItem -#include +#include #include // RApaLsSession for WMLBrowser launch #include @@ -65,7 +65,7 @@ #include #include -#include +#include // Callback query #include diff -r 2f259fa3e83a -r 8ca85d2f0db7 commonuisupport/uikon/srvinc/EIKBAKSV.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 diff -r 2f259fa3e83a -r 8ca85d2f0db7 commonuisupport/uikon/srvsrc/EIKBAKSV.CPP --- 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(); } /** diff -r 2f259fa3e83a -r 8ca85d2f0db7 lafagnosticuifoundation/uigraphicsutils/tulsrc/tuladdressstringtokenizer.cpp --- 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; diff -r 2f259fa3e83a -r 8ca85d2f0db7 lafagnosticuifoundation/uigraphicsutils/tulsrc/tulphonenumberutils.cpp --- 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 diff -r 2f259fa3e83a -r 8ca85d2f0db7 psln/PslnLibraryLoaders/src/pslnbrowserlaunchloader.cpp --- 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 #include #include -#include +#include #include "pslnbrowserlaunchloader.h" #include "PslnConst.h" diff -r 2f259fa3e83a -r 8ca85d2f0db7 psln/help/data/xhtml.zip Binary file psln/help/data/xhtml.zip has changed diff -r 2f259fa3e83a -r 8ca85d2f0db7 psln/help/inc/skins.hlp.hrh --- 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" diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AknGlobalUI/AknCapServer/group/AknCapServer.mmp --- 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 diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AknGlobalUI/AknCapServer/inc/AknFastswapWindowControl.h --- 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 #include // MCoeControlObserver -#include +#include #include // CONSTANTS diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AknGlobalUI/AknCapServer/inc/AknKeyFilter.h --- 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 #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 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__ diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AknGlobalUI/AknCapServer/inc/aknslidestatusnotifier.h --- /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 +#include +//Grip keys +#include + +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 diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AknGlobalUI/AknCapServer/src/AknCapServerEntry.cpp --- 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) diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AknGlobalUI/AknCapServer/src/AknFastswapWindowControl.cpp --- 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 #include #include -#include -#include +#include +#include #include #include #include @@ -1640,6 +1640,7 @@ break; case MEikListBoxObserver::EEventItemClicked: + case MEikListBoxObserver::EEventItemSingleClicked: if ( !iItemDraggingActioned && !iIsStylusPopupShow ) { TTime now; diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AknGlobalUI/AknCapServer/src/aknKeyFilter.cpp --- 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 diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AknGlobalUI/AknCapServer/src/akncapserverdiscreetpopuphandler.cpp --- 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 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 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 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 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 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 ) { diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AknGlobalUI/AknCapServer/src/aknslidestatusnotifier.cpp --- /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 +#include + +#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 diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/Avkon2MifHeader/mifheader.cdl.custom.h --- 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 +#include #include "mifheader.cdl.common.h" namespace MifHeader diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/EABI/AVKONU.DEF --- 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 diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/aknhlist/inc/akntreelistphysicshandler.h --- 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; }; diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/aknhlist/src/akntreelistphysicshandler.cpp --- 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; diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/aknhlist/src/akntreelistview.cpp --- 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 #include #include // for testability hooks -#include +#include #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() ); diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/aknphysics/inc/aknphysicsconstants.h --- 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 diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/bwins/AVKONU.def --- 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 &) diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/conf/s60/avkon.confml Binary file uifw/AvKon/conf/s60/avkon.confml has changed diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/conf/s60/avkon_101F876E.crml Binary file uifw/AvKon/conf/s60/avkon_101F876E.crml has changed diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/group/avkon.mmp --- 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 diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/group/avkon_icons_dc.mk --- 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 diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/inc/akncombinedpane.h --- /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 + +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 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 diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/notifsrc/AknSoftNotifier.cpp --- 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 #include #include -#include "AknSoftNoteConsts.h" +#include "aknsoftnoteconsts.h" const TInt KBufferGranularity = 128; const TInt KGlobalNoteTextLength = 256; diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/notifsrc/aknNotify.mmp --- 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 diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/src/AknCharMap.cpp --- 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()) diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/src/AknEcs.cpp --- 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 #include +#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(aThis)->Reset(); static_cast(aThis)->iKeyTimeoutTimer->Cancel(); + _AKNTRACE_FUNC_EXIT; return 0; // Do not repeat the operation } diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/src/AknNoteDialog.cpp --- 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 // 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; } diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/src/AknPhoneNumberEditor.cpp --- 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 diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/src/AknPopupField.cpp --- 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() { diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/src/AknPopupSettingPage.cpp --- 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 ); } diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/src/AknPreviewPopUpController.cpp --- 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 ) diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/src/AknProgressDialog.cpp --- 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 +#include "akntrace.h" + #ifdef RD_UI_TRANSITION_EFFECTS_POPUPS #include @@ -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; } diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/src/AknQueryControl.cpp --- 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 // for testability hooks #include +#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(aQueryControl), extension ); CleanupStack::Pop(); // extension + _AKNTRACE_FUNC_EXIT; } void CAknQueryExtension::DestroyExtension( const CAknQueryControl* aQueryControl ) { + _AKNTRACE_FUNC_ENTER; delete Instance( aQueryControl ); AknsPointerStore::RemovePointer( static_cast(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 ( 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( 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( 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( 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( 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 diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/src/AknQueryDialog.cpp --- 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 // 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) diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/src/AknRadioButtonSettingPage.cpp --- 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 ); diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/src/AknSettingPage.cpp --- 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 diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/src/AknStaticNoteDialog.cpp --- 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 #include // 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; } /** diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/src/AknStatuspaneUtils.cpp --- 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 ); } diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/src/AknTransparentCameraSettingPage.cpp --- 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 diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/src/AknWaitNoteWrapper.cpp --- 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 + +#include #include +#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; } diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/src/Aknslider.cpp --- 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[] = diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/src/aknbattery.cpp --- 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() ); + } } } diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/src/akncombinedpane.cpp --- /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 +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#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 diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/src/akndigitalclock.cpp --- 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 ); diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/src/akndiscreetpopup.cpp --- 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( aControl ) ); diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/src/akndiscreetpopupcontrol.cpp --- 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 #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(); diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/src/akndiscreetpopupdrawer.cpp --- 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 ) diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/src/akndiscreetpopupserverhandler.cpp --- 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 #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; } diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/src/aknenv.cpp --- 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 } }; diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/src/akngridview.cpp --- 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; } /** diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/src/aknlib.cpp --- 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 +#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; diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/src/aknlistquerydialog.cpp --- 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 // 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* aIcons) { + _AKNTRACE_FUNC_ENTER; CEikFormattedCellListBox* listbox = STATIC_CAST(CEikFormattedCellListBox*,ListBox()); CArrayPtr* 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); iAppendL(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* aItemIds) diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/src/aknlists.cpp --- 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 ) { diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/src/aknlongtapanimation.cpp --- 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() ); diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/src/aknlongtapdetector.cpp --- 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 #include #include -#include +#include #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 ======== diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/src/aknmessagequerydialog.cpp --- 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 // 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; } diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/src/aknnavi.cpp --- 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 ); + } } } } diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/src/aknnotecontrol.cpp --- 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 #include // 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; } /** diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/src/aknprogresstimer.cpp --- 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 #include "aknnotecontrol.h" #include "aknprogresstimer.h" -#include +#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 diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/src/aknqueryeditorindicator.cpp --- 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 // 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() diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/src/aknsignal.cpp --- 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() ); + } } } diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/src/aknstatuspanedatapublisher.cpp --- 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( diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/src/aknstatuspanedigitalclock.cpp --- 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() ); + } } diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/src/akntitle.cpp --- 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; diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/src/aknutils.cpp --- 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 diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/src/eikfrlb.cpp --- 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( control )->ItemsInSingleLine() == 1 ) + { + AknListUtils::DrawSeparator( *iGc, aItemTextRect, iTextColor ); + } } } diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/src/eikslb.cpp --- 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 ) { diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/srcdata/avkon.rss --- 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 diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/tsrc/bc/S60_SDK3.0/bctestptieng/inc/bctestkeymap.h --- 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 diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/tsrc/bc/S60_SDK3.0/bctestptieng/inc/bctestqwertymap.h --- 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 diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/tsrc/bc/S60_SDK3.0/bctestptieng/src/bctestkeymap.cpp --- 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 #include #include +#include #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(CreateKeyMapL())); - if(err == KErrCorrupt) - { - AssertTrueL(ETrue, _L("data format err")); - } - else - { - AssertNotNullL(iMap, _L("created by NewL from descriptor")); - } + + RArray dataImpl; + CPtiKeyMapDataFactory::ListImplementationsL(dataImpl); + + TUid uid = TUid::Uid(dataImpl[0]); + CPtiKeyMapDataFactory* keymapDatafactory = + CPtiKeyMapDataFactory::CreateImplementationL(uid); + CleanupStack::PushL(keymapDatafactory); + + dataImpl.Close(); + + iKeymapData =static_cast( + 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 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; iReplaceKeyMapL(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 keyStr(Keys); - return CPtiKeyMappings::NewL(keyStr); + return NULL; } diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/tsrc/bc/S60_SDK3.0/bctestptieng/src/bctestlan.cpp --- 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.")); } diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/tsrc/bc/S60_SDK3.0/bctestptieng/src/bctestptiengine.cpp --- 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 diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/tsrc/bc/S60_SDK3.0/bctestptieng/src/bctestqwertymap.cpp --- 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 #include #include +#include #include #include "BCTestQwertymap.h" @@ -131,20 +132,21 @@ // void CBCTestQwertyMap::SetupL() { - TRAPD(err, iMap = static_cast(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 dataImpl; + CPtiKeyMapDataFactory::ListImplementationsL(dataImpl); + + TUid uid = TUid::Uid(dataImpl[0]); + CPtiKeyMapDataFactory* keymapDatafactory = + CPtiKeyMapDataFactory::CreateImplementationL(uid); + CleanupStack::PushL(keymapDatafactory); + dataImpl.Close(); + + iKeymapData =static_cast( + 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; } // --------------------------------------------------------------------------- diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/tsrc/bc/S60_SDKMCL/bctestmixmcl/group/bctestmixmcl.mmp --- 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 diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/tsrc/bc/S60_SDKMCL/bctestmixmcl/inc/bctestmixmclgeneralcase.h --- 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. */ diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/AvKon/tsrc/bc/S60_SDKMCL/bctestmixmcl/src/bctestmixmclgeneralcase.cpp --- 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 // --------------------------------------------------------------------------- diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/EikStd/EABI/EIKCOCTLU.DEF --- 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 diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/EikStd/bwins/EIKCOCTLU.DEF --- 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 diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/EikStd/coctlinc/AknDoubleSpanScrollIndicator.h --- 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 diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/EikStd/coctlinc/AknDoubleSpanScrollIndicatorItem.h --- 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. * diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/EikStd/coctlinc/EIKSBEXT.H --- 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; diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/EikStd/coctlinc/aknstyluspopupmenucontent.h --- 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; diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/EikStd/coctlsrc/AknClearer.cpp --- 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(); } } diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/EikStd/coctlsrc/AknDoubleSpanScrollIndicator.cpp --- 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 #include #include -// 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; - } - diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/EikStd/coctlsrc/AknEdwinFormExtendedInterfaceProvider.cpp --- 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 -#endif +#include #include class CAknCompositeInlineTextSource; diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/EikStd/coctlsrc/EIKBTGPC.CPP --- 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( diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/EikStd/coctlsrc/EIKEDWIN.CPP --- 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()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( 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 diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/EikStd/coctlsrc/EIKKWIN.CPP --- 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() { diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/EikStd/coctlsrc/EIKLBX.CPP --- 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 #include #include -#include +#include #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; diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/EikStd/coctlsrc/EIKMENUB.CPP --- 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 #include #include "aknitemactionmenuregister.h" -#include +#include #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); diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/EikStd/coctlsrc/EIKMENUP.CPP --- 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 #include #include -#include #include #include #include @@ -55,8 +54,6 @@ #include #include -#include -#include #include #include #include @@ -64,16 +61,9 @@ #include //For transition effects #include // SetAllParents method #include -#include #include #include -#ifdef RD_UI_TRANSITION_EFFECTS_LIST -#include // LISTBOX EFFECTS IMPLEMENTATION -#include -#include -#endif // RD_UI_TRANSITION_EFFECTS_LIST - #include #include #include @@ -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( 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(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; iiGc->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;iiiSctHighlighted && 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;iiiSctHighlighted && 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 ); } } diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/EikStd/coctlsrc/EIKSCRLB.CPP --- 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() && diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/EikStd/coctlsrc/EikCcpu.cpp --- 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 #include #include - +#include 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( 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( + 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( + 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; + } + } + } + } + } diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/EikStd/coctlsrc/FormCursorModifier.cpp --- 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 #include #ifdef SYMBIAN_ENABLE_SPLIT_HEADERS -#include +#include #endif diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/EikStd/coctlsrc/FormCursorModifierUtils.cpp --- 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 #include #ifdef SYMBIAN_ENABLE_SPLIT_HEADERS -#include +#include #endif #include "FromCursorModifierUtils.h" diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/EikStd/coctlsrc/akndoublespanscrollindicatoritem.cpp --- 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; - } - diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/EikStd/coctlsrc/aknedwinphysicshandler.cpp --- 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 diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/EikStd/coctlsrc/aknitemactionmenu.cpp --- 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; } } diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/EikStd/coctlsrc/aknstyluspopupmenu.cpp --- 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 ); } diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/EikStd/coctlsrc/aknstyluspopupmenucontent.cpp --- 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 #include #include +#include #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; diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/EikStd/coctlsrc/aknstyluspopupmenuphysicshandler.cpp --- 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; } } diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/EikStd/coctlsrc/eikcba.cpp --- 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 #include #include +#include +#include #include // LayoutUtils #include #include @@ -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 + (iOwner.Control(KControlArrayCBAButton1Posn)); + CEikCbaButton* button2 = static_cast + (iOwner.Control(KControlArrayCBAButton2Posn)); + + if (IsMskEnabledLayoutActive()) + { + TRect innerRect = iMiddleFrameOuterRect; + innerRect.Shrink(4, 4); + + CEikCbaButton* buttonMSK = static_cast + (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( + (*iControlArray)[KControlArrayCBAButton1Posn].iControl ); + CEikCbaButton* button2 = + static_cast( + (*iControlArray)[KControlArrayCBAButton2Posn].iControl ); + CEikCbaButton* buttonMSK = NULL; + if ( iMSKset && AknLayoutUtils::MSKEnabled() ) + { + buttonMSK = + static_cast( + (*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() ); diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/EikStd/coctlsrc/eikspane.cpp --- 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( + 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. */ diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/EikStd/coctlsrc/eikspmod.cpp --- 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: diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/EikStd/dlginc/aknrecordinggc.h --- 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: diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/EikStd/dlgsrc/EIKCAPC.CPP --- 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 #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& aColorUseList) const { + _AKNTRACE_FUNC_ENTER; CCoeControl::GetColorUseListL(aColorUseList); TCoeColorUse colorUse; @@ -2274,6 +2337,7 @@ const TInt count=CountComponentControls(); for(TInt ii=0;iiGetColorUseListL(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 ); } } } diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/EikStd/dlgsrc/EIKCAPCA.CPP --- 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 #include #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; } diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/EikStd/dlgsrc/EIKDIALG.CPP --- 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 #include +#include #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 @@ // 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; } diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/EikStd/dlgsrc/EIKDLG.MMP --- 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 diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/EikStd/dlgsrc/EIKDPAGE.CPP --- 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 #include -#include - +#include +#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;iiCount(); @@ -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) diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/EikStd/dlgsrc/aknformphysics.cpp --- 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 #include #include - +#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; } diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/EikStd/dlgsrc/aknrecordinggc.cpp --- 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 #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; } } diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/EikStd/srvuisrc/EIKSRVUI.CPP --- 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; diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/EikStd/srvuisrc/EIKSRVUI.RSS --- 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; } }; diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/eikctl/src/EIKCLBD.CPP --- 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( 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( 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 ); diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/ganes/src/HgList.cpp --- 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(); } diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/ganes/src/HgScrollBufferManager.cpp --- 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 diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/ganes/src/HgScrollbar.cpp --- 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); + } } } } diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/ganes/src/HgScroller.cpp --- 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; + } } // ----------------------------------------------------------------------------- diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/ganes/src/HgVgHelper.cpp --- 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(); diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/ganes/src/HgVgLetterPopup.cpp --- 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); } diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/ganes/src/HgVgMediaWall.cpp --- 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 #include #include -#include +#include @@ -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); diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/ganes/src/HgVgSkinRenderer.cpp --- 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); } diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/uiklaf/inc/LAFEDWIN.H --- 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 #include #include -#include "lafsbfrm.h" +#include "LAFSBFRM.H" class CTextLayout; class CLafEdwinCustomDrawBase; diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/uiklaf/inc/LAFMENUB.H --- 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 #include #include -#include "lafmenup.h" +#include "LAFMENUP.H" #include #include #include diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/uiklaf/inc/LAFMENUP.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 #include #include -#include "lafsbfrm.h" +#include "LAFSBFRM.H" class CGulIcon; class TMargins8; diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/uiklaf/inc/laflbx.h --- 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 #include -#include "lafsbfrm.h" +#include "LAFSBFRM.H" // // Forward declarations diff -r 2f259fa3e83a -r 8ca85d2f0db7 uiutils/AknJapaneseReading/src/AknJapaneseReading.cpp --- 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 // EXTERNAL DATA STRUCTURES diff -r 2f259fa3e83a -r 8ca85d2f0db7 uiutils/AknJapaneseReading/src/AknJapaneseReadingDLL.cpp --- 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 -#include "AknJapaneseReadingDll.h" +#include "AknJapaneseReadingDLL.h" // ----------------------------------------------------------------------------- // Static DLL functions diff -r 2f259fa3e83a -r 8ca85d2f0db7 uiutils/Findutil/inc/ChineseFindUtils.h --- 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 #include -#include +#include // FORWARD DECLARATION class CRepository; diff -r 2f259fa3e83a -r 8ca85d2f0db7 uiutils/Findutil/inc/FindUtilBase.h --- 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 -#include "findutil.h" +#include "FindUtil.h" class CFindUtilBase : public CBase, public MFindUtil { diff -r 2f259fa3e83a -r 8ca85d2f0db7 uiutils/Findutil/inc/FindUtilWestern.h --- 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 -#include +#include #include -#include +#include #include "FindUtilBase.h" class CFindUtilKorean; diff -r 2f259fa3e83a -r 8ca85d2f0db7 uiutils/Findutil/src/ChineseFindUtils.cpp --- 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 +#include -#include "chinesefindutils.h" +#include "ChineseFindUtils.h" // ======== MEMBER FUNCTIONS ======== diff -r 2f259fa3e83a -r 8ca85d2f0db7 uiutils/Findutil/src/FindUtil.cpp --- 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 -#include -#include "findutil.h" -#include "findutilbase.h" +#include +#include "FindUtil.h" +#include "FindUtilBase.h" #ifdef __WINS__ -#include +#include #endif typedef MFindUtil* (*TFindUtilFactoryFunctionL)(); diff -r 2f259fa3e83a -r 8ca85d2f0db7 uiutils/Findutil/src/FindUtilBase.cpp --- 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 -#include "findutilbase.h" +#include "FindUtilBase.h" // CFindUtilBase implementation diff -r 2f259fa3e83a -r 8ca85d2f0db7 uiutils/Findutil/src/FindUtilChinese.cpp --- 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 -#include +#include #include #include #include -#include +#include #include //phonebook #include #include @@ -38,7 +38,7 @@ #include "FindUtilChinese.h" -#include "chinesefindutils.h" +#include "ChineseFindUtils.h" // CONSTANTS const TUint16 KStarChar = 0x002a; diff -r 2f259fa3e83a -r 8ca85d2f0db7 uiutils/Findutil/src/FindUtilJapanese.cpp --- 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 +#include // CONSTANTS _LIT(KDesWildCard, "*"); diff -r 2f259fa3e83a -r 8ca85d2f0db7 uiutils/Findutil/src/FindUtilWestern.cpp --- 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 #include "FindUtilKorean.h" #include -#include +#include const TInt KLitTab('\t'); const TInt KLitSpace(' '); const TInt KLitHyphen('-'); diff -r 2f259fa3e83a -r 8ca85d2f0db7 uiutils/gamerecognizer/src/GameRecognizer.cpp --- 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 #include -#include +#include #include "GameRecognizer.h" // diff -r 2f259fa3e83a -r 8ca85d2f0db7 uiutils/group/bld.inf --- 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" diff -r 2f259fa3e83a -r 8ca85d2f0db7 uiutils/hlplch/bwins/HlplchU.def --- /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 *) + ?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) + diff -r 2f259fa3e83a -r 8ca85d2f0db7 uiutils/hlplch/data/lch.rss --- /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"; + } diff -r 2f259fa3e83a -r 8ca85d2f0db7 uiutils/hlplch/eabi/HLPLCHU.DEF --- /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 ; ## + _ZTV11CHlpCmdLine @ 5 NONAME ; ## + diff -r 2f259fa3e83a -r 8ca85d2f0db7 uiutils/hlplch/group/bld.inf --- /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 diff -r 2f259fa3e83a -r 8ca85d2f0db7 uiutils/hlplch/group/hlplch.mmp --- /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 + +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 diff -r 2f259fa3e83a -r 8ca85d2f0db7 uiutils/hlplch/inc/hlplch_internal.h --- /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* aContextList); + static CHlpCmdLine* NewLC(CArrayFix* aContextList); + ~CHlpCmdLine(); +public: + TPtr8 CmdLineL(); +private: + void BuildCmdLineL(); + void AddContextL(TCoeHelpContext& aContext); +private: + void ConstructL(); + CHlpCmdLine(CArrayFix* aContextList); +private: + CArrayFix* iContextList; + CBufFlat* iCmdLine; + }; + +#endif //__HLPLCH_INTERNAL_H diff -r 2f259fa3e83a -r 8ca85d2f0db7 uiutils/hlplch/inc/lch.rh --- /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 diff -r 2f259fa3e83a -r 8ca85d2f0db7 uiutils/hlplch/src/hlplch.cpp --- /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 +#include +#include +#include + +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* 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* aContextList) + { + CHlpCmdLine* self=CHlpCmdLine::NewLC(aContextList); + CleanupStack::Pop(); // self + return self; + } + +CHlpCmdLine* CHlpCmdLine::NewLC(CArrayFix* aContextList) + { + CHlpCmdLine* self=new(ELeave)CHlpCmdLine(aContextList); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +CHlpCmdLine::CHlpCmdLine(CArrayFix* 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)); + } +