# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1268649694 -7200 # Node ID 9f56a4e1b8ab173170f47f69604ae95774ef2e74 # Parent aabf2c525e0f1fbe180d087c559954a34e5b1cdb Revision: 201009 Kit: 201010 diff -r aabf2c525e0f -r 9f56a4e1b8ab classicui_plat/avkon_settings_api/inc/AvkonInternalCRKeys.h --- a/classicui_plat/avkon_settings_api/inc/AvkonInternalCRKeys.h Fri Mar 12 15:43:43 2010 +0200 +++ b/classicui_plat/avkon_settings_api/inc/AvkonInternalCRKeys.h Mon Mar 15 12:41:34 2010 +0200 @@ -299,6 +299,18 @@ */ const TUint32 KAknServiceCallNumber = 0x00000018; +/** + * Value indicates the feature replacing 3.5G icon with 3G icon, + * required by ATT, is enabled. + * + * Possible values are: + * + * 0: 3.5G signal icon is replaced by 3G signal icon while in hsdpa network. + * 1: 3.5G signal icon is used in hsdpa network. + * + */ +const TUint32 KAknATTSignalIconEnable = 0x00000019; + const TUid KCRUidLeaveAppsInMemory = { 0x102858F2 }; /** diff -r aabf2c525e0f -r 9f56a4e1b8ab classicui_plat/extended_editors_api/inc/aknedwincustomdrawbase.h --- a/classicui_plat/extended_editors_api/inc/aknedwincustomdrawbase.h Fri Mar 12 15:43:43 2010 +0200 +++ b/classicui_plat/extended_editors_api/inc/aknedwincustomdrawbase.h Mon Mar 15 12:41:34 2010 +0200 @@ -25,6 +25,7 @@ class CTextView; class CTextLayout; +class MAknsSkinInstance; #include #include @@ -192,6 +193,7 @@ CWindowGc* iSysGc; CAknPictographInterface* iPictographDrawer; // owned TInt iWsBufferRequestId; + MAknsSkinInstance* iSkinInstance; }; #endif diff -r aabf2c525e0f -r 9f56a4e1b8ab classicui_plat/ganes_api/inc/ganes/HgDoubleGraphicList.h --- a/classicui_plat/ganes_api/inc/ganes/HgDoubleGraphicList.h Fri Mar 12 15:43:43 2010 +0200 +++ b/classicui_plat/ganes_api/inc/ganes/HgDoubleGraphicList.h Mon Mar 15 12:41:34 2010 +0200 @@ -62,6 +62,7 @@ protected: // CHgScroller void HandleSizeChanged(); + void HandleScrollbarVisibilityChange(TBool aVisible); protected: // CHgList void DrawItem(TInt aIndex, const TRect& aRect) const; diff -r aabf2c525e0f -r 9f56a4e1b8ab classicui_plat/ganes_api/inc/ganes/HgDoubleTextList.h --- a/classicui_plat/ganes_api/inc/ganes/HgDoubleTextList.h Fri Mar 12 15:43:43 2010 +0200 +++ b/classicui_plat/ganes_api/inc/ganes/HgDoubleTextList.h Mon Mar 15 12:41:34 2010 +0200 @@ -53,6 +53,7 @@ protected: // CHgScroller void HandleSizeChanged(); + void HandleScrollbarVisibilityChange(TBool aVisible); protected: // CHgList void DrawItem(TInt aIndex, const TRect& aRect) const; diff -r aabf2c525e0f -r 9f56a4e1b8ab classicui_plat/ganes_api/inc/ganes/HgGrid.h --- a/classicui_plat/ganes_api/inc/ganes/HgGrid.h Fri Mar 12 15:43:43 2010 +0200 +++ b/classicui_plat/ganes_api/inc/ganes/HgGrid.h Mon Mar 15 12:41:34 2010 +0200 @@ -77,6 +77,7 @@ void FitTopItemToView( TInt aIndex ); TInt CurrentIndex(); TBool IsDisplayed( TInt aIndex ); + void HandleScrollbarVisibilityChange(TBool aVisible); private: // Constructors CHgGrid( TInt aItemCount, diff -r aabf2c525e0f -r 9f56a4e1b8ab classicui_plat/ganes_api/inc/ganes/HgScroller.h --- a/classicui_plat/ganes_api/inc/ganes/HgScroller.h Fri Mar 12 15:43:43 2010 +0200 +++ b/classicui_plat/ganes_api/inc/ganes/HgScroller.h Mon Mar 15 12:41:34 2010 +0200 @@ -348,6 +348,7 @@ virtual TInt CurrentIndex() = 0; virtual TBool IsDisplayed( TInt aIndex ) = 0; virtual void FitTopItemToView( TInt aIndex ) = 0; + virtual void HandleScrollbarVisibilityChange(TBool aVisible) = 0; protected: // Constructors CHgScroller( TInt aItemCount, diff -r aabf2c525e0f -r 9f56a4e1b8ab classicui_plat/ganes_api/inc/ganes/HgSingleGraphicList.h --- a/classicui_plat/ganes_api/inc/ganes/HgSingleGraphicList.h Fri Mar 12 15:43:43 2010 +0200 +++ b/classicui_plat/ganes_api/inc/ganes/HgSingleGraphicList.h Mon Mar 15 12:41:34 2010 +0200 @@ -53,6 +53,7 @@ protected: // CHgScroller void HandleSizeChanged(); + void HandleScrollbarVisibilityChange(TBool aVisible); protected: // CHgList void DrawItem(TInt aIndex, const TRect& aRect) const; diff -r aabf2c525e0f -r 9f56a4e1b8ab classicui_plat/ganes_api/inc/ganes/HgSingleLargeList.h --- a/classicui_plat/ganes_api/inc/ganes/HgSingleLargeList.h Fri Mar 12 15:43:43 2010 +0200 +++ b/classicui_plat/ganes_api/inc/ganes/HgSingleLargeList.h Mon Mar 15 12:41:34 2010 +0200 @@ -53,6 +53,7 @@ protected: // CHgScroller void HandleSizeChanged(); + void HandleScrollbarVisibilityChange(TBool aVisible); protected: // CHgList void DrawItem(TInt aIndex, const TRect& aRect) const; diff -r aabf2c525e0f -r 9f56a4e1b8ab classicui_plat/ganes_api/inc/ganes/HgSingleTextList.h --- a/classicui_plat/ganes_api/inc/ganes/HgSingleTextList.h Fri Mar 12 15:43:43 2010 +0200 +++ b/classicui_plat/ganes_api/inc/ganes/HgSingleTextList.h Mon Mar 15 12:41:34 2010 +0200 @@ -47,8 +47,8 @@ IMPORT_C virtual ~CHgSingleTextList( ); protected: // CHgScroller - void HandleSizeChanged(); + void HandleScrollbarVisibilityChange(TBool aVisible); protected: // CHgList diff -r aabf2c525e0f -r 9f56a4e1b8ab classicui_plat/ganes_api/inc/ganes/HgSingleTextListWithIcon.h --- a/classicui_plat/ganes_api/inc/ganes/HgSingleTextListWithIcon.h Fri Mar 12 15:43:43 2010 +0200 +++ b/classicui_plat/ganes_api/inc/ganes/HgSingleTextListWithIcon.h Mon Mar 15 12:41:34 2010 +0200 @@ -47,8 +47,8 @@ IMPORT_C virtual ~CHgSingleTextListWithIcon( ); protected: // CHgScroller - void HandleSizeChanged(); + void HandleScrollbarVisibilityChange(TBool aVisible); protected: // CHgList diff -r aabf2c525e0f -r 9f56a4e1b8ab classicui_plat/ganes_api/inc/ganes/HgVgMediaWall.h --- a/classicui_plat/ganes_api/inc/ganes/HgVgMediaWall.h Fri Mar 12 15:43:43 2010 +0200 +++ b/classicui_plat/ganes_api/inc/ganes/HgVgMediaWall.h Mon Mar 15 12:41:34 2010 +0200 @@ -666,8 +666,16 @@ */ void InitPopupL(TInt aLayoutVariant); + /** + * + */ static TInt DelayedInit( TAny* aSelf); + /** + * + */ + void FillSystemGcWithSkin( ) const; + protected: CHgScrollBufferManager* iManager; // Own @@ -780,6 +788,15 @@ CFbsBitmap* iSurfaceBitmap; CPeriodic* iDelayedInit; + + + TBool iFirstTime; + + TReal iSpringDragVel; + TReal iSpringVelAtDragStart; + TInt iDragFrames; + TBool iObserverNotified; + }; diff -r aabf2c525e0f -r 9f56a4e1b8ab classicui_pub/common_file_dialogs_api/inc/caknmemoryselectionsettingitemmultidrive.h --- a/classicui_pub/common_file_dialogs_api/inc/caknmemoryselectionsettingitemmultidrive.h Fri Mar 12 15:43:43 2010 +0200 +++ b/classicui_pub/common_file_dialogs_api/inc/caknmemoryselectionsettingitemmultidrive.h Mon Mar 15 12:41:34 2010 +0200 @@ -88,6 +88,16 @@ */ void UpdateSettingItemContentL(); + /** + * Set which medias are included in the dialog. + * NOTE: DO NOT call this function when settingitem is being edited. + * + * @param aIncludedMedias bit flag definition of which medias are + * included in the dialog. See AknCommonDialogsDynMem::TMemoryTypes. + * Value -1 indicates the default dialog value will be used. + */ + IMPORT_C void SetIncludedMediasL( TInt aIncludedMedias ); + protected: // Data // Ref: External data diff -r aabf2c525e0f -r 9f56a4e1b8ab classicui_pub/editors_api/inc/EIKEDWIN.H --- a/classicui_pub/editors_api/inc/EIKEDWIN.H Fri Mar 12 15:43:43 2010 +0200 +++ b/classicui_pub/editors_api/inc/EIKEDWIN.H Mon Mar 15 12:41:34 2010 +0200 @@ -65,6 +65,7 @@ class CSmileyCustomWrap; class CAknEdwinPhysicsHandler; class CEdwinAsyncFormat; +class MAknsSkinInstance; // Forward declaration of now removed (Series 60 2.0) custom drawer class for CEikEdwin class CEikAvkonCustomDraw; @@ -482,6 +483,12 @@ * Record formatted height of layout */ TInt iRecordFormattedHeight; + + /** + * Skins instance. + * Not own. + */ + MAknsSkinInstance* iSkinInstance; }; public: @@ -2337,14 +2344,11 @@ public: void EnableSmileySupportL( TBool aEnableSmiley ); TBool IsSmileyEnabled() const; - void DrawSmileyInTextL( CBitmapContext& aGc, CFont& aFont, - const TDesC& aText, const TPoint& aPt ); - void ConvertVisibleTextForSmileyL( TBool aTextToCode ); - void HandleScrollForSmileyL(); + void DrawSmileyInTextL( RRegion& rgn, const TRect& aDrawRect, + CBitmapContext& aGc, CFont& aFont, const TDesC& aText, const TPoint& aPt ); + void ConvertVisibleTextForSmileyL( TBool aTextToCode ); TBool AdjustCursorForSmileyL( TInt aOldCursor, TCursorSelection& aSelect ); TRect AdjustDrawRectForSmiley( const TRect& aRect ) const; - void GetClipRegionForSmiley( RRegion& rgn, CFont& aFont, const TDesC& aText, - const TPoint& aPt, const TRect& aRect ) const; HBufC* ExtractTextLC( TCursorSelection aSelect ); void ConvertSmileyIconToTextL( TInt aStartPos, TDes& aText ); @@ -2740,7 +2744,7 @@ void ScrollViewToCursorLineL(); void PerformRecordedOperationL(); void ScrollIfAtTopOrBottomL(); - void SetSelectionVisibilityL(TBool isVisable); + void SetSelectionVisibilityL( TBool aIsVisable ); /** * Sets scrollbars with kinetic scrolling. @@ -3030,7 +3034,18 @@ */ TBool KineticScrollingEnabled() const; - + /** + * Draws background to the whole view area. Call with parameter value ETrue + * must be followed by a call with EFalse or otherwise window's redraw + * isn't ended properly and graphics context is not deactivated. + * + * @param aStart If true then window area occupied by editor's view is + * invalidated and redraw is began. Also graphics context is + * activated. EFalse ends the redraw and deactivates graphics + * context. + */ + void DrawViewBackground( TBool aStart ) const; + protected: /** diff -r aabf2c525e0f -r 9f56a4e1b8ab classicui_pub/editors_api/inc/EikCcpu.h --- a/classicui_pub/editors_api/inc/EikCcpu.h Fri Mar 12 15:43:43 2010 +0200 +++ b/classicui_pub/editors_api/inc/EikCcpu.h Mon Mar 15 12:41:34 2010 +0200 @@ -28,7 +28,7 @@ class CEikButtonGroupContainer; class CEikMenuBar; - +class CAknCcpuSupportExtension; /** * Interface for cut, copy, paste and undo functionality. @@ -218,15 +218,11 @@ IMPORT_C void* ExtensionInterface( TUid aInterface ); private: TBitFlags iFlags; - TBool isCbaEmded; // Owned - CEikButtonGroupContainer* iCba; - - + CAknCcpuSupportExtension* iExtention;//put isCbaEmded,iCba,iDialogCba in extension // Not owned CEikMenuBar* iMenu; MEikCcpuEditor* iEditor; - CEikButtonGroupContainer* iDialogCba; }; #endif // EIKCCPU_H diff -r aabf2c525e0f -r 9f56a4e1b8ab classicui_pub/indicators_api/inc/AknIndicatorContainer.h --- a/classicui_pub/indicators_api/inc/AknIndicatorContainer.h Fri Mar 12 15:43:43 2010 +0200 +++ b/classicui_pub/indicators_api/inc/AknIndicatorContainer.h Mon Mar 15 12:41:34 2010 +0200 @@ -290,6 +290,8 @@ void SetIncallBubbleDisabled( TBool aDisabled ); void ResetAnimTicker( TBool bForeground ); + + TInt CountShownIndicator() const; public: diff -r aabf2c525e0f -r 9f56a4e1b8ab classicui_pub/ui_framework_definitions_api/inc/avkon.hrh --- a/classicui_pub/ui_framework_definitions_api/inc/avkon.hrh Fri Mar 12 15:43:43 2010 +0200 +++ b/classicui_pub/ui_framework_definitions_api/inc/avkon.hrh Mon Mar 15 12:41:34 2010 +0200 @@ -366,6 +366,7 @@ EPenInputCmdVITUT, EPeninputCmdFSQ, + EPeninputCmdHwr, /** * Command id for dealing with discreet popup's close diff -r aabf2c525e0f -r 9f56a4e1b8ab classicui_pub/ui_framework_utilities_api/inc/AknUtils.h --- a/classicui_pub/ui_framework_utilities_api/inc/AknUtils.h Fri Mar 12 15:43:43 2010 +0200 +++ b/classicui_pub/ui_framework_utilities_api/inc/AknUtils.h Mon Mar 15 12:41:34 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" @@ -81,6 +81,7 @@ class TAknWindowLineLayout; class TAknMultiLineTextLayout; class TAknTextLineLayout; +class MAknsSkinInstance; /** * Egul library had methods to clip text from right side, this class includes methods to clip from both sides. @@ -2716,9 +2717,13 @@ * @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. + * @param aSkin Skin instance used to get the alpha value + * for the separator line color. */ IMPORT_C static void DrawSeparator( CGraphicsContext& aGc, - const TRect& aRect, const TRgb& aColor ); + const TRect& aRect, + const TRgb& aColor, + MAknsSkinInstance* aSkin = NULL ); }; #endif // __AKNUTILS_H__ diff -r aabf2c525e0f -r 9f56a4e1b8ab commonuis/CommonDialogs/BWINS/COMMONDIALOGSU.DEF --- a/commonuis/CommonDialogs/BWINS/COMMONDIALOGSU.DEF Fri Mar 12 15:43:43 2010 +0200 +++ b/commonuis/CommonDialogs/BWINS/COMMONDIALOGSU.DEF Mon Mar 15 12:41:34 2010 +0200 @@ -113,26 +113,28 @@ ?RunSelectDlgLD@AknCommonDialogsDynMem@@SAHHAAVTDes16@@HHPAVMAknFileSelectionObserver@@@Z @ 112 NONAME ; int AknCommonDialogsDynMem::RunSelectDlgLD(int, class TDes16 &, int, int, class MAknFileSelectionObserver *) ?RunSelectDlgLD@AknCommonDialogsDynMem@@SAHHAAVTDes16@@HPAVMAknFileFilter@@PAVMAknFileSelectionObserver@@@Z @ 113 NONAME ; int AknCommonDialogsDynMem::RunSelectDlgLD(int, class TDes16 &, int, class MAknFileFilter *, class MAknFileSelectionObserver *) ?RunSelectDlgLD@AknCommonDialogsDynMem@@SAHHAAVTDes16@@HPAVMAknFileSelectionObserver@@@Z @ 114 NONAME ; int AknCommonDialogsDynMem::RunSelectDlgLD(int, class TDes16 &, int, class MAknFileSelectionObserver *) - ?RenameL@CAknFileNamePromptDialog@@QAEHAAVTDes16@@@Z @ 115 NONAME ; int CAknFileNamePromptDialog::RenameL(class TDes16 &) - ??0CAknMemorySelectionSettingItemMultiDrive@@QAE@HAAW4TDriveNumber@@@Z @ 116 NONAME ; CAknMemorySelectionSettingItemMultiDrive::CAknMemorySelectionSettingItemMultiDrive(int, enum TDriveNumber &) - ??1CAknMemorySelectionDialogMultiDrive@@UAE@XZ @ 117 NONAME ; CAknMemorySelectionDialogMultiDrive::~CAknMemorySelectionDialogMultiDrive(void) - ??1CAknMemorySelectionSettingItemMultiDrive@@UAE@XZ @ 118 NONAME ; CAknMemorySelectionSettingItemMultiDrive::~CAknMemorySelectionSettingItemMultiDrive(void) - ?AddDrivePathsL@CAknMemorySelectionDialogMultiDrive@@QAEHABVTDesC16@@0@Z @ 119 NONAME ; int CAknMemorySelectionDialogMultiDrive::AddDrivePathsL(class TDesC16 const &, class TDesC16 const &) - ?CompleteConstructionL@CAknMemorySelectionSettingItemMultiDrive@@UAEXXZ @ 120 NONAME ; void CAknMemorySelectionSettingItemMultiDrive::CompleteConstructionL(void) - ?EditItemL@CAknMemorySelectionSettingItemMultiDrive@@UAEXH@Z @ 121 NONAME ; void CAknMemorySelectionSettingItemMultiDrive::EditItemL(int) - ?ExecuteL@CAknMemorySelectionDialogMultiDrive@@UAE?AW4TReturnKey@CAknCommonDialogsBase@@AAW4TDriveNumber@@@Z @ 122 NONAME ; enum CAknCommonDialogsBase::TReturnKey CAknMemorySelectionDialogMultiDrive::ExecuteL(enum TDriveNumber &) - ?ExecuteL@CAknMemorySelectionDialogMultiDrive@@UAE?AW4TReturnKey@CAknCommonDialogsBase@@AAW4TDriveNumber@@PAVTDes16@@1@Z @ 123 NONAME ; enum CAknCommonDialogsBase::TReturnKey CAknMemorySelectionDialogMultiDrive::ExecuteL(enum TDriveNumber &, class TDes16 *, class TDes16 *) - ?FindIndexByDrive@CAknMemorySelectionDialogMultiDrive@@QAEHABW4TDriveNumber@@@Z @ 124 NONAME ; int CAknMemorySelectionDialogMultiDrive::FindIndexByDrive(enum TDriveNumber const &) - ?GetItem@CAknMemorySelectionDialogMultiDrive@@QAEXHAAVTDes16@@@Z @ 125 NONAME ; void CAknMemorySelectionDialogMultiDrive::GetItem(int, class TDes16 &) - ?LoadL@CAknMemorySelectionSettingItemMultiDrive@@UAEXXZ @ 126 NONAME ; void CAknMemorySelectionSettingItemMultiDrive::LoadL(void) - ?NewL@CAknMemorySelectionDialogMultiDrive@@SAPAV1@W4TCommonDialogType@@H@Z @ 127 NONAME ; class CAknMemorySelectionDialogMultiDrive * CAknMemorySelectionDialogMultiDrive::NewL(enum TCommonDialogType, int) - ?NewL@CAknMemorySelectionDialogMultiDrive@@SAPAV1@W4TCommonDialogType@@HH@Z @ 128 NONAME ; class CAknMemorySelectionDialogMultiDrive * CAknMemorySelectionDialogMultiDrive::NewL(enum TCommonDialogType, int, int) - ?NewL@CAknMemorySelectionDialogMultiDrive@@SAPAV1@W4TCommonDialogType@@HHH@Z @ 129 NONAME ; class CAknMemorySelectionDialogMultiDrive * CAknMemorySelectionDialogMultiDrive::NewL(enum TCommonDialogType, int, int, int) - ?RunDlgLD@CAknMemorySelectionDialogMultiDrive@@SAHAAW4TDriveNumber@@@Z @ 130 NONAME ; int CAknMemorySelectionDialogMultiDrive::RunDlgLD(enum TDriveNumber &) - ?RunDlgLD@CAknMemorySelectionDialogMultiDrive@@SAHAAW4TDriveNumber@@ABVTDesC16@@@Z @ 131 NONAME ; int CAknMemorySelectionDialogMultiDrive::RunDlgLD(enum TDriveNumber &, class TDesC16 const &) - ?RunDlgLD@CAknMemorySelectionDialogMultiDrive@@SAHAAW4TDriveNumber@@HPAVTDes16@@1@Z @ 132 NONAME ; int CAknMemorySelectionDialogMultiDrive::RunDlgLD(enum TDriveNumber &, int, class TDes16 *, class TDes16 *) - ?SetLeftSoftkeyL@CAknMemorySelectionDialogMultiDrive@@QAEXABVTDesC16@@@Z @ 133 NONAME ; void CAknMemorySelectionDialogMultiDrive::SetLeftSoftkeyL(class TDesC16 const &) - ?SetRightSoftkeyL@CAknMemorySelectionDialogMultiDrive@@QAEXABVTDesC16@@@Z @ 134 NONAME ; void CAknMemorySelectionDialogMultiDrive::SetRightSoftkeyL(class TDesC16 const &) - ?SetTitleL@CAknMemorySelectionDialogMultiDrive@@QAEXABVTDesC16@@@Z @ 135 NONAME ; void CAknMemorySelectionDialogMultiDrive::SetTitleL(class TDesC16 const &) - ?SettingTextL@CAknMemorySelectionSettingItemMultiDrive@@UAEABVTDesC16@@XZ @ 136 NONAME ; class TDesC16 const & CAknMemorySelectionSettingItemMultiDrive::SettingTextL(void) - ?StoreL@CAknMemorySelectionSettingItemMultiDrive@@UAEXXZ @ 137 NONAME ; void CAknMemorySelectionSettingItemMultiDrive::StoreL(void) + ?RenameL@CAknFileNamePromptDialog@@QAEHAAVTDes16@@@Z @ 115 NONAME ; int CAknFileNamePromptDialog::RenameL(class TDes16 &) + ??0CAknMemorySelectionSettingItemMultiDrive@@QAE@HAAW4TDriveNumber@@@Z @ 116 NONAME ; CAknMemorySelectionSettingItemMultiDrive::CAknMemorySelectionSettingItemMultiDrive(int, enum TDriveNumber &) + ??1CAknMemorySelectionDialogMultiDrive@@UAE@XZ @ 117 NONAME ; CAknMemorySelectionDialogMultiDrive::~CAknMemorySelectionDialogMultiDrive(void) + ??1CAknMemorySelectionSettingItemMultiDrive@@UAE@XZ @ 118 NONAME ; CAknMemorySelectionSettingItemMultiDrive::~CAknMemorySelectionSettingItemMultiDrive(void) + ?AddDrivePathsL@CAknMemorySelectionDialogMultiDrive@@QAEHABVTDesC16@@0@Z @ 119 NONAME ; int CAknMemorySelectionDialogMultiDrive::AddDrivePathsL(class TDesC16 const &, class TDesC16 const &) + ?CompleteConstructionL@CAknMemorySelectionSettingItemMultiDrive@@UAEXXZ @ 120 NONAME ; void CAknMemorySelectionSettingItemMultiDrive::CompleteConstructionL(void) + ?EditItemL@CAknMemorySelectionSettingItemMultiDrive@@UAEXH@Z @ 121 NONAME ; void CAknMemorySelectionSettingItemMultiDrive::EditItemL(int) + ?ExecuteL@CAknMemorySelectionDialogMultiDrive@@UAE?AW4TReturnKey@CAknCommonDialogsBase@@AAW4TDriveNumber@@@Z @ 122 NONAME ; enum CAknCommonDialogsBase::TReturnKey CAknMemorySelectionDialogMultiDrive::ExecuteL(enum TDriveNumber &) + ?ExecuteL@CAknMemorySelectionDialogMultiDrive@@UAE?AW4TReturnKey@CAknCommonDialogsBase@@AAW4TDriveNumber@@PAVTDes16@@1@Z @ 123 NONAME ; enum CAknCommonDialogsBase::TReturnKey CAknMemorySelectionDialogMultiDrive::ExecuteL(enum TDriveNumber &, class TDes16 *, class TDes16 *) + ?FindIndexByDrive@CAknMemorySelectionDialogMultiDrive@@QAEHABW4TDriveNumber@@@Z @ 124 NONAME ; int CAknMemorySelectionDialogMultiDrive::FindIndexByDrive(enum TDriveNumber const &) + ?GetItem@CAknMemorySelectionDialogMultiDrive@@QAEXHAAVTDes16@@@Z @ 125 NONAME ; void CAknMemorySelectionDialogMultiDrive::GetItem(int, class TDes16 &) + ?LoadL@CAknMemorySelectionSettingItemMultiDrive@@UAEXXZ @ 126 NONAME ; void CAknMemorySelectionSettingItemMultiDrive::LoadL(void) + ?NewL@CAknMemorySelectionDialogMultiDrive@@SAPAV1@W4TCommonDialogType@@H@Z @ 127 NONAME ; class CAknMemorySelectionDialogMultiDrive * CAknMemorySelectionDialogMultiDrive::NewL(enum TCommonDialogType, int) + ?NewL@CAknMemorySelectionDialogMultiDrive@@SAPAV1@W4TCommonDialogType@@HH@Z @ 128 NONAME ; class CAknMemorySelectionDialogMultiDrive * CAknMemorySelectionDialogMultiDrive::NewL(enum TCommonDialogType, int, int) + ?NewL@CAknMemorySelectionDialogMultiDrive@@SAPAV1@W4TCommonDialogType@@HHH@Z @ 129 NONAME ; class CAknMemorySelectionDialogMultiDrive * CAknMemorySelectionDialogMultiDrive::NewL(enum TCommonDialogType, int, int, int) + ?RunDlgLD@CAknMemorySelectionDialogMultiDrive@@SAHAAW4TDriveNumber@@@Z @ 130 NONAME ; int CAknMemorySelectionDialogMultiDrive::RunDlgLD(enum TDriveNumber &) + ?RunDlgLD@CAknMemorySelectionDialogMultiDrive@@SAHAAW4TDriveNumber@@ABVTDesC16@@@Z @ 131 NONAME ; int CAknMemorySelectionDialogMultiDrive::RunDlgLD(enum TDriveNumber &, class TDesC16 const &) + ?RunDlgLD@CAknMemorySelectionDialogMultiDrive@@SAHAAW4TDriveNumber@@HPAVTDes16@@1@Z @ 132 NONAME ; int CAknMemorySelectionDialogMultiDrive::RunDlgLD(enum TDriveNumber &, int, class TDes16 *, class TDes16 *) + ?SetLeftSoftkeyL@CAknMemorySelectionDialogMultiDrive@@QAEXABVTDesC16@@@Z @ 133 NONAME ; void CAknMemorySelectionDialogMultiDrive::SetLeftSoftkeyL(class TDesC16 const &) + ?SetRightSoftkeyL@CAknMemorySelectionDialogMultiDrive@@QAEXABVTDesC16@@@Z @ 134 NONAME ; void CAknMemorySelectionDialogMultiDrive::SetRightSoftkeyL(class TDesC16 const &) + ?SetTitleL@CAknMemorySelectionDialogMultiDrive@@QAEXABVTDesC16@@@Z @ 135 NONAME ; void CAknMemorySelectionDialogMultiDrive::SetTitleL(class TDesC16 const &) + ?SettingTextL@CAknMemorySelectionSettingItemMultiDrive@@UAEABVTDesC16@@XZ @ 136 NONAME ; class TDesC16 const & CAknMemorySelectionSettingItemMultiDrive::SettingTextL(void) + ?StoreL@CAknMemorySelectionSettingItemMultiDrive@@UAEXXZ @ 137 NONAME ; void CAknMemorySelectionSettingItemMultiDrive::StoreL(void) + ?SetIncludedMediasL@CAknMemorySelectionSettingItemMultiDrive@@QAEXH@Z @ 138 NONAME ; void CAknMemorySelectionSettingItemMultiDrive::SetIncludedMediasL(int) + diff -r aabf2c525e0f -r 9f56a4e1b8ab commonuis/CommonDialogs/EABI/COMMONDIALOGSU.DEF --- a/commonuis/CommonDialogs/EABI/COMMONDIALOGSU.DEF Fri Mar 12 15:43:43 2010 +0200 +++ b/commonuis/CommonDialogs/EABI/COMMONDIALOGSU.DEF Mon Mar 15 12:41:34 2010 +0200 @@ -166,4 +166,5 @@ _ZN40CAknMemorySelectionSettingItemMultiDriveD2Ev @ 165 NONAME _ZTI40CAknMemorySelectionSettingItemMultiDrive @ 166 NONAME ; ## _ZTV40CAknMemorySelectionSettingItemMultiDrive @ 167 NONAME ; ## + _ZN40CAknMemorySelectionSettingItemMultiDrive18SetIncludedMediasLEi @ 168 NONAME diff -r aabf2c525e0f -r 9f56a4e1b8ab commonuis/CommonDialogs/src/CAknFileSelectionEventHandler.cpp --- a/commonuis/CommonDialogs/src/CAknFileSelectionEventHandler.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/commonuis/CommonDialogs/src/CAknFileSelectionEventHandler.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -288,17 +288,17 @@ { case ERightSoftkeyPress: // USER HAS HIT RIGHT SOFTKEY { + while( iModel->DirectoryLevel() > 0 ) // Find until existing contents + { + entries = iModel->GotoParentFolderL(); + PopIndices( aTopItemIndex, aFocusedItemIndex ); + if( entries > 0 || entries < KErrNotFound ) + { + break; + } + } if( iModel->DirectoryLevel() > 0 ) // We are not in the root folder { - while( ETrue ) // Find until existing contents - { - entries = iModel->GotoParentFolderL(); - PopIndices( aTopItemIndex, aFocusedItemIndex ); - if( entries > 0 || entries < KErrNotFound ) - { - break; - } - } if( entries > 0 ) { if (aFocusedItemIndex >= entries) diff -r aabf2c525e0f -r 9f56a4e1b8ab commonuis/CommonDialogs/src/caknmemoryselectiondialogmultidrive.cpp --- a/commonuis/CommonDialogs/src/caknmemoryselectiondialogmultidrive.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/commonuis/CommonDialogs/src/caknmemoryselectiondialogmultidrive.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -115,11 +115,11 @@ layout = MAknMemorySelectionModel::ELayoutDoublePopup; } + // Create model of listbox listing the drives in iRootPathArray: iModel = CAknMemorySelectionModelMultiDrive::NewL( iCoeEnv, &iRootPathArray, &iDefaultFolderArray, iIncludedMedias, aShowUnavailableDrives, layout ); - // Create model of listbox listing the drives in iRootPathArray: GetSystemDrivesL( userDefinedId ); iEventHandler = CAknMemorySelectionEventHandler::NewL( diff -r aabf2c525e0f -r 9f56a4e1b8ab commonuis/CommonDialogs/src/caknmemoryselectionsettingitemmultidrive.cpp --- a/commonuis/CommonDialogs/src/caknmemoryselectionsettingitemmultidrive.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/commonuis/CommonDialogs/src/caknmemoryselectionsettingitemmultidrive.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -26,26 +26,45 @@ #include "MAknCFDFileSystemObserver.h" -NONSHARABLE_CLASS(CAknMemorySelectionSettingItemExtension) : public CBase, - public MAknCFDFileSystemObserver +NONSHARABLE_CLASS(CAknMemorySelectionSettingItemExtension) + : public CBase, + public MAknCFDFileSystemObserver { public: - CAknMemorySelectionSettingItemExtension(CAknMemorySelectionSettingItemMultiDrive* aSettingItem); + CAknMemorySelectionSettingItemExtension( + CAknMemorySelectionSettingItemMultiDrive* aSettingItem ); ~CAknMemorySelectionSettingItemExtension(); - // second phase construct - void ConstructL(); + /** + * second phase construct + * + * @param aIncludedMedias bit flag definition of which medias are + * included in the dialog. See AknCommonDialogsDynMem::TMemoryTypes. + */ + void ConstructL( TInt aIncludedMedias ); /** * Static constructor. * * @since S60 5.0 * @param aSettingItem defines a pointer to the setting item. + * @param aIncludedMedias bit flag definition of which medias are + * included in the dialog. See AknCommonDialogsDynMem::TMemoryTypes. + * if not set, use dialog default value. * @return Returns a pointer to an instance of itself. */ - static CAknMemorySelectionSettingItemExtension* NewL(CAknMemorySelectionSettingItemMultiDrive* aSettingItem); + static CAknMemorySelectionSettingItemExtension* NewL( + CAknMemorySelectionSettingItemMultiDrive* aSettingItem, + TInt aIncludedMedias = -1 ); + /** + * Construct memory selection dialog + * + * @param aIncludedMedias bit flag definition of which medias are + * included in the dialog. See AknCommonDialogsDynMem::TMemoryTypes. + */ + void ConstructDialogL( TInt aIncludedMedias ); // Functions from base interface MAknCFDFileSystemObserver /** @@ -61,6 +80,9 @@ // Own: The extension of setting item CAknCFDFileSystemEvent* iFSEvent; + + // Own: Indicate which media types of drives could be visible. + TInt iIncludedMedias; }; // ======== MEMBER FUNCTIONS ======== @@ -94,7 +116,10 @@ // EXPORT_C void CAknMemorySelectionSettingItemMultiDrive::CompleteConstructionL() { - iExtension = CAknMemorySelectionSettingItemExtension::NewL(this); + if ( !iExtension ) + { + iExtension = CAknMemorySelectionSettingItemExtension::NewL( this ); + } } @@ -119,28 +144,30 @@ else { // Changed with selection key - if( ( iExtension->iDialog->NumberOfItems() == 2 ) && - ( !iExtension->iDialog->HasUnavailbleMMC() ) ) + if( ( iExtension->iDialog->NumberOfItems() == 2 ) ) { // Two items in list, function as binary pop-up setting page TInt selectedIndex = - iExtension->iDialog->FindIndexByDrive( - iInternalData ); + iExtension->iDialog->FindIndexByDrive( iInternalData ); if ( selectedIndex == KErrNotFound ) { selectedIndex = 0; } else { - selectedIndex = 1 - selectedIndex; // switch to another one. + TDriveNumber driveNum = + iExtension->iDialog->FindDriveByIndex( 1 - selectedIndex ); + if ( AknCFDUtility::DriveStatusL( driveNum ) == EDriveOK ) + { + selectedIndex = 1 - selectedIndex; // switch to another one. + } } iInternalData = iExtension->iDialog->FindDriveByIndex( selectedIndex ); } else { - iExtension->iDialog->ExecuteL( - iInternalData, NULL, NULL ); + iExtension->iDialog->ExecuteL( iInternalData, NULL, NULL ); } } @@ -182,25 +209,46 @@ CompleteConstructionL(); } - TInt memoryIndex = iExtension->iDialog->FindIndexByDrive( - iInternalData ); - if ( AknCFDUtility::DriveStatusL( iInternalData ) - != EDriveOK ) + TInt memoryIndex = iExtension->iDialog->FindIndexByDrive( iInternalData ); + if ( AknCFDUtility::DriveStatusL( iInternalData ) != EDriveOK ) { - TInt drive; - User::LeaveIfError( DriveInfo::GetDefaultDrive( - DriveInfo::EDefaultSystem, drive ) ); - memoryIndex = iExtension->iDialog->FindIndexByDrive( - TDriveNumber( drive ) ); + // Find the first proper drive in the dialog list. + memoryIndex = 0; + while ( memoryIndex < iExtension->iDialog->NumberOfItems() ) + { + iInternalData = iExtension->iDialog->FindDriveByIndex( memoryIndex ); + if ( AknCFDUtility::DriveStatusL( iInternalData ) == EDriveOK ) + { + break; + } + memoryIndex++; + } + // Not find the proper drive. + if ( memoryIndex == iExtension->iDialog->NumberOfItems() ) + { + iInternalData = EDriveC; + memoryIndex = KErrNotFound; + } } + + if ( memoryIndex == KErrNotFound ) + { + return KNullDesC; + } + if( !iSettingText ) iSettingText = HBufC::NewL( KMaxName ); TPtr ptrSettingText( iSettingText->Des() ); iExtension->iDialog->GetItem( memoryIndex, ptrSettingText ); + return *iSettingText; } +// --------------------------------------------------------------------------- +// CAknMemorySelectionSettingItemMultiDrive::UpdateSettingItemContentL +// --------------------------------------------------------------------------- +// void CAknMemorySelectionSettingItemMultiDrive::UpdateSettingItemContentL() { if ( iExtension->iDialog != NULL ) @@ -210,22 +258,37 @@ // Update setting item value. TInt selectedIndex = iExtension->iDialog-> - FindIndexByDrive(iInternalData); + FindIndexByDrive( iInternalData ); - if (selectedIndex == KErrNotFound) + if ( selectedIndex == KErrNotFound ) { - iInternalData = EDriveC; + // If the selected index is not found, set it to the first one + selectedIndex = 0; } - else - { - iInternalData = iExtension->iDialog-> - FindDriveByIndex(selectedIndex); - } + iInternalData = iExtension->iDialog->FindDriveByIndex( selectedIndex ); UpdateListBoxTextL(); } } +// --------------------------------------------------------------------------- +// CAknMemorySelectionSettingItemMultiDrive::SetIncludedMediasL +// --------------------------------------------------------------------------- +// +EXPORT_C void CAknMemorySelectionSettingItemMultiDrive::SetIncludedMediasL( + TInt aIncludedMedias ) + { + if ( !iExtension ) + { + iExtension = CAknMemorySelectionSettingItemExtension::NewL( + this, aIncludedMedias ); + } + else if ( iExtension->iIncludedMedias != aIncludedMedias ) + { + iExtension->ConstructDialogL( aIncludedMedias ); + } + } + // --------------------------------------------------------------------------- // CAknMemorySelectionSettingItemExtension @@ -233,7 +296,8 @@ // --------------------------------------------------------------------------- // CAknMemorySelectionSettingItemExtension:: - CAknMemorySelectionSettingItemExtension(CAknMemorySelectionSettingItemMultiDrive* aSettingItem) + CAknMemorySelectionSettingItemExtension( + CAknMemorySelectionSettingItemMultiDrive* aSettingItem ) : iSettingItem( aSettingItem ) { } @@ -276,16 +340,43 @@ // --------------------------------------------------------------------------- // CAknMemorySelectionSettingItemExtension +// ConstructDialogL +// --------------------------------------------------------------------------- +// +void CAknMemorySelectionSettingItemExtension::ConstructDialogL( + TInt aIncludedMedias ) + { + if ( iDialog ) + { + delete iDialog; + iDialog = NULL; + } + + iIncludedMedias = aIncludedMedias; + + if ( aIncludedMedias == -1 ) + { + iDialog = CAknMemorySelectionDialogMultiDrive::NewL( + ECFDDialogTypeNormal, ETrue ); + } + else + { + iDialog = CAknMemorySelectionDialogMultiDrive::NewL( + ECFDDialogTypeNormal, 0, ETrue, aIncludedMedias ); + } + } + +// --------------------------------------------------------------------------- +// CAknMemorySelectionSettingItemExtension // ConstructL // --------------------------------------------------------------------------- // -void CAknMemorySelectionSettingItemExtension::ConstructL() +void CAknMemorySelectionSettingItemExtension::ConstructL( TInt aIncludedMedias ) { + ConstructDialogL( aIncludedMedias ); - iDialog = CAknMemorySelectionDialogMultiDrive::NewL( - ECFDDialogTypeNormal, ETrue); - - iFSEvent = CAknCFDFileSystemEvent::NewL(CCoeEnv::Static()->FsSession(), *this, ENotifyDisk); + iFSEvent = CAknCFDFileSystemEvent::NewL( + CCoeEnv::Static()->FsSession(), *this, ENotifyDisk ); } // --------------------------------------------------------------------------- @@ -293,13 +384,16 @@ // NewL // --------------------------------------------------------------------------- // -CAknMemorySelectionSettingItemExtension* CAknMemorySelectionSettingItemExtension::NewL(CAknMemorySelectionSettingItemMultiDrive* aSettingItem) +CAknMemorySelectionSettingItemExtension* + CAknMemorySelectionSettingItemExtension::NewL( + CAknMemorySelectionSettingItemMultiDrive* aSettingItem, + TInt aIncludedMedias ) { CAknMemorySelectionSettingItemExtension* self = - new( ELeave ) CAknMemorySelectionSettingItemExtension(aSettingItem); + new( ELeave ) CAknMemorySelectionSettingItemExtension( aSettingItem ); CleanupStack::PushL( self ); - self->ConstructL(); + self->ConstructL( aIncludedMedias ); CleanupStack::Pop( self ); return self; diff -r aabf2c525e0f -r 9f56a4e1b8ab commonuis/CommonUi/src/DocumentHandler.cpp --- a/commonuis/CommonUi/src/DocumentHandler.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/commonuis/CommonUi/src/DocumentHandler.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -1396,7 +1396,7 @@ TInt err = aSharableFile.Open(iSharableFS,aFileName,EFileShareReadersOnly); if (err == KErrInUse) { - User::LeaveIfError(aSharableFile.Open(iSharableFS,aFileName,EFileShareReadersOrWriters)); + err = aSharableFile.Open( iSharableFS,aFileName,EFileShareReadersOrWriters ); } else if ( err == KErrTooBig ) { @@ -1407,7 +1407,7 @@ err = file64->Open(iSharableFS,aFileName,EFileShareReadersOnly); if( err == KErrInUse ) { - User::LeaveIfError(aSharableFile.Open(iSharableFS,aFileName,EFileShareReadersOrWriters)); + err = aSharableFile.Open( iSharableFS,aFileName,EFileShareReadersOrWriters ); } } } diff -r aabf2c525e0f -r 9f56a4e1b8ab commonuis/CommonUi/src/FindItemDialog.cpp --- a/commonuis/CommonUi/src/FindItemDialog.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/commonuis/CommonUi/src/FindItemDialog.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -1968,6 +1968,18 @@ iTappingOffset = iEdwin->Rect().iTl - Rect().iTl; + CFindItemEngine::SFoundItem item; + TBool anyFound = iController->Item( item ); + if( anyFound ) + { + TInt pos = 0; + TInt length = iEdwin->TextLayout()->PosRangeInBand( pos ); + if( item.iStartPos >= pos + length ) + { + TRAP_IGNORE( iEdwin->MoveDisplayL( TCursorPosition::EFPageDown ) ); + } + } + TRAP_IGNORE( UpdateScrollIndicatorL() ); } diff -r aabf2c525e0f -r 9f56a4e1b8ab commonuisupport/uikon/srvsrc/EIKNFYSV.CPP --- a/commonuisupport/uikon/srvsrc/EIKNFYSV.CPP Fri Mar 12 15:43:43 2010 +0200 +++ b/commonuisupport/uikon/srvsrc/EIKNFYSV.CPP Mon Mar 15 12:41:34 2010 +0200 @@ -19,6 +19,7 @@ #include #include #include +#include #include "EIKSRV.PAN" #include "eiknotapi.h" #include diff -r aabf2c525e0f -r 9f56a4e1b8ab lafagnosticuifoundation/cone/inc/COECNTRL.H --- a/lafagnosticuifoundation/cone/inc/COECNTRL.H Fri Mar 12 15:43:43 2010 +0200 +++ b/lafagnosticuifoundation/cone/inc/COECNTRL.H Mon Mar 15 12:41:34 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" @@ -359,9 +359,10 @@ inline CWindowGc* GetGc() const; private: friend class CCoeRedrawer; - void DrawComponents(const TRect& aRect) const; + void Constructor(CCoeEnv* aCoeEnv); + void DrawComponents(const TRect& aRect) const; void DrawWindowOwningComponentsNow() const; - void DrawWindowOwningComponentsNow(const TRect &aRect) const; + void DrawWindowOwningComponentsNow(const TRect& aRect) const; void SetGrabbed(TBool aGrabbed, TInt aPointerNumber); TBool IsGrabbed(TInt aPointerNumber = 0) const; void DoMakeVisible(TBool aVisible); diff -r aabf2c525e0f -r 9f56a4e1b8ab lafagnosticuifoundation/cone/inc/CoeDynamicStorage.inl --- a/lafagnosticuifoundation/cone/inc/CoeDynamicStorage.inl Fri Mar 12 15:43:43 2010 +0200 +++ b/lafagnosticuifoundation/cone/inc/CoeDynamicStorage.inl Mon Mar 15 12:41:34 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" @@ -57,7 +57,7 @@ { public: RCoeDynamicDataStorage(); - void Open(); + TInt Open(); void Close(); TInt Count() const; void ResetCount(); @@ -98,17 +98,22 @@ ResetCount(); } -void RCoeDynamicDataStorage::Open() +TInt RCoeDynamicDataStorage::Open() { ASSERT(!iDynamicData); - ReserveData(); - + TInt err = ReserveData(); + #ifdef PROFILE_MEMORY - MEMORY_SAVED += KCurrentNumberOfOptionalVaraiblesInCCoeControl*sizeof(TAny*); - MEMORY_SAVED -= sizeof(RCoeDynamicDataStorage); -#endif + if (err==KErrNone) + { + MEMORY_SAVED += KCurrentNumberOfOptionalVaraiblesInCCoeControl*sizeof(TAny*); + MEMORY_SAVED -= sizeof(RCoeDynamicDataStorage); + } +#endif + + return err; } - + void RCoeDynamicDataStorage::Close() { #ifdef PROFILE_MEMORY @@ -181,14 +186,14 @@ inline TAny* RCoeDynamicDataStorage::Data(TInt aSlotIndex, TAny* aDefaultValue) const { - if(!this) + if (!this) return aDefaultValue; - + const TInt dataIndex = DataIndex(aSlotIndex); - if(dataIndex != KUndefinedIndex) + if (dataIndex!=KUndefinedIndex && iDynamicData!=NULL) //Defensive Code return iDynamicData[dataIndex]; else - return aDefaultValue; + return aDefaultValue; } inline TInt RCoeDynamicDataStorage::DataIndex(TInt aSlotIndex) const diff -r aabf2c525e0f -r 9f56a4e1b8ab lafagnosticuifoundation/cone/src/COECNTRL.CPP --- a/lafagnosticuifoundation/cone/src/COECNTRL.CPP Fri Mar 12 15:43:43 2010 +0200 +++ b/lafagnosticuifoundation/cone/src/COECNTRL.CPP Mon Mar 15 12:41:34 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" @@ -69,12 +69,12 @@ inline CCoeControlStorage(); inline RCoeDynamicDataStorage& DynamicDataStorage(); inline const RCoeDynamicDataStorage& DynamicDataStorage() const; - inline void Open(); + inline TInt Open(); inline void Close(); inline void AttemptCompress(); void SetPointerGrab(TUint aSet, TUint aClear); TUint8& PointerGrab(); - + private: RCoeDynamicDataStorage iDynamicDataStorage; TUint8 iPointerGrabFlags; // The grab-status of each of the supported pointers @@ -103,8 +103,8 @@ inline const RCoeDynamicDataStorage& CCoeControlStorage::DynamicDataStorage() const { return iDynamicDataStorage; } -inline void CCoeControlStorage::Open() - { iDynamicDataStorage.Open(); } +inline TInt CCoeControlStorage::Open() + { return iDynamicDataStorage.Open(); } inline void CCoeControlStorage::Close() { iDynamicDataStorage.Close(); } @@ -121,19 +121,7 @@ control classes are derived. However, it can also be instantiated as a concrete class. */ { - iCoeEnv = TheCoe(); - - iData = new CCoeControlStorage; // Non-leaving allocation - if (iData) - { - iData->Open(); - } - else - { - iFlags |= EMemoryAllocationFailed; // Handle OOM later - } - - SetFocusing(CCoeControlStaticSettings::FocusedByDefault(iCoeEnv)); + Constructor(TheCoe()); } EXPORT_C CCoeControl::CCoeControl(CCoeEnv* aCoeEnv) @@ -147,14 +135,17 @@ @param aCoeEnv The control environment.*/ { + Constructor(aCoeEnv); + } + +void CCoeControl::Constructor(CCoeEnv* aCoeEnv) + { iCoeEnv = aCoeEnv; - + iData = new CCoeControlStorage; // Non-leaving allocation - if(iData) - iData->Open(); - else + if (!iData || iData->Open()!=KErrNone) iFlags |= EMemoryAllocationFailed; // Handle OOM later - + SetFocusing(CCoeControlStaticSettings::FocusedByDefault(iCoeEnv)); } diff -r aabf2c525e0f -r 9f56a4e1b8ab lafagnosticuifoundation/cone/tef/TCONE2STEP.CPP --- a/lafagnosticuifoundation/cone/tef/TCONE2STEP.CPP Fri Mar 12 15:43:43 2010 +0200 +++ b/lafagnosticuifoundation/cone/tef/TCONE2STEP.CPP Mon Mar 15 12:41:34 2010 +0200 @@ -1,4 +1,4 @@ -// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2007-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" @@ -49,22 +49,31 @@ Creates a control's window.\n The created window is the child of the application's window group.\n iDisplayed is set to ETrue to make the control visible.\n -*/ +*/ void CTestCone2Control::ConstructL() - { + { CreateWindowL(); iDisplayed = ETrue; - } + } +/** + Function to give access to the CCoeControl's protected CreateWindowL function. + This is intended for use only with Low Memory tests. +*/ +TInt CTestCone2Control::CreateWindow() + { + TRAPD(err,CreateWindowL()); + return err; + } /** Sets this control as visible or invisible.\n This causes the control to disappear or reappear.\n When a control is created, it is made visible by default.\n -*/ +*/ void CTestCone2Control::MakeVisible(TBool aVisible) - { + { iDisplayed = aVisible; DrawNow(); - } + } /** Destructor for the container control.\n Deletes the component control "CTestCone2Control".\n @@ -604,7 +613,7 @@ __UHEAP_MARKEND; } - + /** @SYMTestCaseID UIF-TCone2Step-TestSetandGetCCoeControlAPIsL @@ -624,26 +633,92 @@ and retrieved correctly. */ - void CTestDriver::TestSetandGetCCoeControlAPIsL() { - // Create a new CCoeControl object + // Create a new CCoeControl object CCoeControl* testCtrl = new (ELeave) CCoeControl(); CleanupStack::PushL(testCtrl); - + // Part 1: Check that a default value of 0 is returned when no - // max width value has been set yet. + // max width value has been set yet. iStep->TEST(testCtrl->MaximumWidth() == 0); - + // Part 2: Set the maximum width to a new value. TInt newMaxWidth = 5; iStep->TEST(testCtrl->SetMaximumWidth(newMaxWidth) == KErrNone); - - // Part 3: Access maximum width. Test that it equals the - // value previously set. - iStep->TEST(testCtrl->MaximumWidth() == newMaxWidth); - - CleanupStack::PopAndDestroy(testCtrl); + + // Part 3: Access maximum width. Test that it equals the + // value previously set. + iStep->TEST(testCtrl->MaximumWidth() == newMaxWidth); + + CleanupStack::PopAndDestroy(testCtrl); + } + +/** + @SYMTestCaseID UIF-TCone2Step-TestSetandGetCCoeControlAPIsL + + @SYMDEF ou1cimx1#261261 + + @SYMTestCaseDesc Tests creating a CCoeControl in low memory conditions. + In particular it tries to trip up the RCoeDynamicDataStorage mechanism. + + @SYMTestPriority High + + @SYMTestStatus Implemented + + @SYMTestActions The test creates a CCoeControl object in an OOM loop with different burst values. + And sets and reads back a property that is stored in the DynamicDataStoreage. + Note: This test didn't actually suceed in producing the crash reported in the defect. + I couldn't see anyway to get to the crashing line with things in a bad state. + + @SYMTestExpectedResults. The code doesn't crash. + */ +void CTestDriver::TestLowMemoryCoeControl() + { + CCoeControl* const parentVal=NULL; + CTestCone2Control* cnt; + CCoeControl* parent; + TInt burst; + TInt failRate; + TInt sucesses; + TBool sucess=EFalse; + TInt setErr; + TInt creErr; + for (burst=1;burst<15;++burst) + { + failRate=burst>1 ? 1:0; + sucesses=0; + do { + cnt=NULL; + parent=reinterpret_cast(KMaxTUint); + setErr=99; + creErr=99; + __UHEAP_BURSTFAILNEXT(failRate,burst); + __UHEAP_MARK; + cnt=new CTestCone2Control(); + if (cnt) + { + setErr=cnt->SetParent(parentVal); + parent=cnt->Parent(); + creErr=cnt->CreateWindow(); + if (parent==parentVal && setErr==KErrNone && creErr==KErrNone) + sucess=ETrue; + delete cnt; + } + __UHEAP_MARKEND; + __UHEAP_RESET; + if (sucess) + { + ++sucesses; + sucess=EFalse; + } + else + sucesses=0; + //Useful logging to see more details of what this code does + //INFO_PRINTF7(_L("FR=% 2d S=% 2d C=0x%x SE=%d WCE=%d PAR=0x%x"),failRate,sucesses,cnt,setErr,creErr,parent); + ++failRate; + } while (sucesses<10); + } } /** @@ -693,121 +768,113 @@ 8. TestConeInputCapabilitiesAPIs 9. TestSetAndGetSystemDefaultViewAPIsL 10. TestSetandGetCCoeControlAPIsL + 11. TestLowMemoryCoeControl */ void CCone2TestAppUi::RunTestStepL(TInt aStepNum) { + _LIT(KTest11Name,"UIF-TCone2Step-LowMemoryCoeControlConstruction"); + _LIT(KTest11Desc,"Test creating CCoeControl in low memory"); + _LIT(KReturn,"...completed with return value '%d'\n"); + _LIT(KFinished,"Test Finished\n"); + TInt ret; switch(aStepNum) - { - case 1: - { - SetTestStepID(_L("UIF-TCone2Step-TestIsDisplayingDialogAndRemoveFromStackAPIsL")); - INFO_PRINTF1(_L("Test IsDisplayingDialog() and RemoveFromStack() APIs")); - TRAPD(ret, iDriver->TestIsDisplayingDialogAndRemoveFromStackAPIsL()); - INFO_PRINTF2(_L("...completed with return value '%d'\n"), ret); - TEST(ret==KErrNone); - RecordTestResultL(); - break; - } - case 2: - { - SetTestStepID(_L("UIF-TCone2Step-TestMakeVisibleOnChildControlsL")); - INFO_PRINTF1(_L("Test makevisible on its child controls")); - TRAPD(ret, iDriver->TestMakeVisibleOnChildControlsL()); - INFO_PRINTF2(_L("...completed with return value '%d'\n"), ret); - TEST(ret==KErrNone); - RecordTestResultL(); - break; - } - case 3: - { - SetTestStepID(_L("UIF-TCone2Step-TestAppHelpContextAPIL")); - INFO_PRINTF1(_L("Test AppHelpContext API")); - TRAPD(ret, iDriver->TestAppHelpContextAPIL()); - INFO_PRINTF2(_L("...completed with return value '%d'\n"), ret); - TEST(ret==KErrNone); - RecordTestResultL(); - break; - } - case 4: - { - SetTestStepID(_L("UIF-TCone2Step-TestReadResourceAPIsL")); - INFO_PRINTF1(_L("Test ReadResource APIs")); - TRAPD(ret, iDriver->TestReadResourceAPIsL()); - INFO_PRINTF2(_L("...completed with return value '%d'\n"), ret); - TEST(ret==KErrNone); - RecordTestResultL(); - break; - } - case 5: - { - SetTestStepID(_L("UIF-TCone2Step-TestCoeControlAPIsL")); - INFO_PRINTF1(_L("Test SetContainerWindow APIs")); - TRAPD(ret, iDriver->TestCoeControlAPIsL()); - INFO_PRINTF2(_L("...completed with return value '%d'\n"), ret); - TEST(ret==KErrNone); - RecordTestResultL(); - break; - } - case 6: - { - SetTestStepID(_L("UIF-TCone2Step-TestColorUseAPIsL")); - INFO_PRINTF1(_L("Test ColorUse APIs")); - TRAPD(ret, iDriver->TestColorUseAPIsL()); - INFO_PRINTF2(_L("...completed with return value '%d'\n"), ret); - TEST(ret==KErrNone); - RecordTestResultL(); - break; - } - case 7: - { - SetTestStepID(_L("UIF-TCone2Step-TestConeAppUiSimpleAndMiscAPIsL")); - INFO_PRINTF1(_L("Test Cone Misc APIs")); - TRAPD(ret, iDriver->TestConeMiscAPIsL()); - INFO_PRINTF2(_L("...completed with return value '%d'\n"), ret); - TEST(ret==KErrNone); - RecordTestResultL(); - break; - } - case 8: - { - SetTestStepID(_L("UIF-TCone2Step-TestConeInputCapabilitiesAPIs")); - INFO_PRINTF1(_L("Test InputCapabilities APIs")); - TRAPD(ret, iDriver->TestConeInputCapabilitiesAPIs()); - INFO_PRINTF2(_L("...completed with return value '%d'\n"), ret); - TEST(ret==KErrNone); - RecordTestResultL(); - break; - } - case 9: - { - SetTestStepID(_L("UIF-TCone2Step-TestSetAndGetSystemDefaultViewAPIsL")); - INFO_PRINTF1(_L("Test Set and Get system default view APIs")); - TRAPD(ret, iDriver->TestSetAndGetSystemDefaultViewAPIsL()); - INFO_PRINTF2(_L("...completed with return value '%d'\n"), ret); - TEST(ret==KErrNone); - RecordTestResultL(); - break; - } - case 10: - { - SetTestStepID(_L("UIF-TCone2Step-TestSetandGetCCoeControlAPIsL")); - INFO_PRINTF1(_L("Test Set and Get APIs for CCoeControl")); - TRAPD(ret, iDriver->TestSetandGetCCoeControlAPIsL()); - INFO_PRINTF2(_L("...completed with return value '%d'\n"), ret); - TEST(ret==KErrNone); - RecordTestResultL(); - CloseTMSGraphicsStep(); - break; - } - case 11: - AutoTestManager().FinishAllTestCases(CAutoTestManager::EPass); - break; - default: - break; + { + case 1: + SetTestStepID(_L("UIF-TCone2Step-TestIsDisplayingDialogAndRemoveFromStackAPIsL")); + INFO_PRINTF1(_L("Test IsDisplayingDialog() and RemoveFromStack() APIs")); + TRAP(ret,iDriver->TestIsDisplayingDialogAndRemoveFromStackAPIsL()); + INFO_PRINTF2(KReturn,ret); + TEST(ret==KErrNone); + RecordTestResultL(); + break; + case 2: + SetTestStepID(_L("UIF-TCone2Step-TestMakeVisibleOnChildControlsL")); + INFO_PRINTF1(_L("Test makevisible on its child controls")); + TRAP(ret,iDriver->TestMakeVisibleOnChildControlsL()); + INFO_PRINTF2(KReturn,ret); + TEST(ret==KErrNone); + RecordTestResultL(); + break; + case 3: + SetTestStepID(_L("UIF-TCone2Step-TestAppHelpContextAPIL")); + INFO_PRINTF1(_L("Test AppHelpContext API")); + TRAP(ret,iDriver->TestAppHelpContextAPIL()); + INFO_PRINTF2(KReturn,ret); + TEST(ret==KErrNone); + RecordTestResultL(); + break; + case 4: + SetTestStepID(_L("UIF-TCone2Step-TestReadResourceAPIsL")); + INFO_PRINTF1(_L("Test ReadResource APIs")); + TRAP(ret,iDriver->TestReadResourceAPIsL()); + INFO_PRINTF2(KReturn,ret); + TEST(ret==KErrNone); + RecordTestResultL(); + break; + case 5: + SetTestStepID(_L("UIF-TCone2Step-TestCoeControlAPIsL")); + INFO_PRINTF1(_L("Test SetContainerWindow APIs")); + TRAP(ret,iDriver->TestCoeControlAPIsL()); + INFO_PRINTF2(KReturn,ret); + TEST(ret==KErrNone); + RecordTestResultL(); + break; + case 6: + SetTestStepID(_L("UIF-TCone2Step-TestColorUseAPIsL")); + INFO_PRINTF1(_L("Test ColorUse APIs")); + TRAP(ret,iDriver->TestColorUseAPIsL()); + INFO_PRINTF2(KReturn,ret); + TEST(ret==KErrNone); + RecordTestResultL(); + break; + case 7: + SetTestStepID(_L("UIF-TCone2Step-TestConeAppUiSimpleAndMiscAPIsL")); + INFO_PRINTF1(_L("Test Cone Misc APIs")); + TRAP(ret,iDriver->TestConeMiscAPIsL()); + INFO_PRINTF2(KReturn,ret); + TEST(ret==KErrNone); + RecordTestResultL(); + break; + case 8: + SetTestStepID(_L("UIF-TCone2Step-TestConeInputCapabilitiesAPIs")); + INFO_PRINTF1(_L("Test InputCapabilities APIs")); + TRAP(ret,iDriver->TestConeInputCapabilitiesAPIs()); + INFO_PRINTF2(KReturn,ret); + TEST(ret==KErrNone); + RecordTestResultL(); + break; + case 9: + SetTestStepID(_L("UIF-TCone2Step-TestSetAndGetSystemDefaultViewAPIsL")); + INFO_PRINTF1(_L("Test Set and Get system default view APIs")); + TRAP(ret,iDriver->TestSetAndGetSystemDefaultViewAPIsL()); + INFO_PRINTF2(KReturn,ret); + TEST(ret==KErrNone); + RecordTestResultL(); + break; + case 10: + SetTestStepID(_L("UIF-TCone2Step-TestSetandGetCCoeControlAPIsL")); + INFO_PRINTF1(_L("Test Set and Get APIs for CCoeControl")); + TRAP(ret,iDriver->TestSetandGetCCoeControlAPIsL()); + INFO_PRINTF2(KReturn,ret); + TEST(ret==KErrNone); + RecordTestResultL(); + break; + case 11: + SetTestStepID(KTest11Name); + INFO_PRINTF1(KTest11Desc); + iDriver->TestLowMemoryCoeControl(); + INFO_PRINTF1(KFinished); + RecordTestResultL(); + CloseTMSGraphicsStep(); + break; + case 12: + AutoTestManager().FinishAllTestCases(CAutoTestManager::EPass); + break; + default: + break; } - } /** diff -r aabf2c525e0f -r 9f56a4e1b8ab lafagnosticuifoundation/cone/tef/TCone2Step.h --- a/lafagnosticuifoundation/cone/tef/TCone2Step.h Fri Mar 12 15:43:43 2010 +0200 +++ b/lafagnosticuifoundation/cone/tef/TCone2Step.h Mon Mar 15 12:41:34 2010 +0200 @@ -1,4 +1,4 @@ -// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2007-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" @@ -48,12 +48,13 @@ { public: DECLARE_TYPE_ID(0x10004C77) - void ConstructL(); + void ConstructL(); + TInt CreateWindow(); private: // from CCoeControl void MakeVisible(TBool aVisible); public: - TBool iDisplayed; - }; + TBool iDisplayed; + }; //! A CCoeControl Derived Class.\n @@ -97,7 +98,8 @@ void TestConeInputCapabilitiesAPIs(); void TestReadResourceAPIsL(); void TestSetandGetCCoeControlAPIsL(); - CTestExecuteLogger& Logger(){return iStep->Logger();}; + void TestLowMemoryCoeControl(); + inline CTestExecuteLogger& Logger() {return iStep->Logger();} private: //! Handle to AppUi Class.\n CCoeAppUi& iAppUi; diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/AknGlobalUI/AknCapServer/src/AknMemoryCardDialogImpl.cpp --- a/uifw/AknGlobalUI/AknCapServer/src/AknMemoryCardDialogImpl.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/AknGlobalUI/AknCapServer/src/AknMemoryCardDialogImpl.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -19,7 +19,7 @@ #include #include #include -#include +#include #include "AknCapServerEntry.h" #include "AknCapServerDefs.h" #include "AknMemoryCardDialogImpl.h" diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/AknGlobalUI/NotifierWrapper/src/AknNotiferAppServerApplication.cpp --- a/uifw/AknGlobalUI/NotifierWrapper/src/AknNotiferAppServerApplication.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/AknGlobalUI/NotifierWrapper/src/AknNotiferAppServerApplication.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -33,7 +33,7 @@ #include "AknNotiferAppServerApplicationInterface.h" #include -#include +#include #include //---- Awkward, but declaring base classes otherwise in Akncapserver entry would break app fw. diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/AknGlobalUI/OldStyleNotif/Inc/AknNotifyPlugin.h --- a/uifw/AknGlobalUI/OldStyleNotif/Inc/AknNotifyPlugin.h Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/AknGlobalUI/OldStyleNotif/Inc/AknNotifyPlugin.h Mon Mar 15 12:41:34 2010 +0200 @@ -28,7 +28,7 @@ #include #include #include -#include +#include class CAknIndicatorData; diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/AknGlobalUI/OldStyleNotif/Inc/AknSoftNotificationPlugin.h --- a/uifw/AknGlobalUI/OldStyleNotif/Inc/AknSoftNotificationPlugin.h Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/AknGlobalUI/OldStyleNotif/Inc/AknSoftNotificationPlugin.h Mon Mar 15 12:41:34 2010 +0200 @@ -27,7 +27,7 @@ #include #include #include // Not the best for the purpose but will do just fine. -#include +#include #include #include "AknSystemPopup.h" #include "AknGroupedNotifierNote.h" diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/AknGlobalUI/OldStyleNotif/Src/AknSystemListMsgPopup.cpp --- a/uifw/AknGlobalUI/OldStyleNotif/Src/AknSystemListMsgPopup.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/AknGlobalUI/OldStyleNotif/Src/AknSystemListMsgPopup.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -35,7 +35,7 @@ #include #include -#include +#include #include "AknAppsKeyCleanup.inl" diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/AknGlobalUI/OldStyleNotif/Src/AknSystemListPopup.cpp --- a/uifw/AknGlobalUI/OldStyleNotif/Src/AknSystemListPopup.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/AknGlobalUI/OldStyleNotif/Src/AknSystemListPopup.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -32,7 +32,7 @@ #include #include -#include +#include #include "AknAppsKeyCleanup.inl" diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/AknGlobalUI/OldStyleNotif/Src/AknSystemPopup.cpp --- a/uifw/AknGlobalUI/OldStyleNotif/Src/AknSystemPopup.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/AknGlobalUI/OldStyleNotif/Src/AknSystemPopup.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -49,7 +49,7 @@ #include #include -#include +#include #include #include #include "GlobalWindowPriorities.h" @@ -1445,7 +1445,7 @@ void CAknGlobalNoteSubject::TryDisplayNextNoteL(TBool aShowAsynch) { - if ( iGlobalNoteList && iGlobalNoteList->Count() == 0 ) + if ( !iGlobalNoteList || iGlobalNoteList->Count() == 0 ) { return; } diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/AknGlobalUI/OldStyleNotif/Src/aknkeylocknotifier.cpp --- a/uifw/AknGlobalUI/OldStyleNotif/Src/aknkeylocknotifier.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/AknGlobalUI/OldStyleNotif/Src/aknkeylocknotifier.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -33,7 +33,7 @@ #include #include -#include +#include #include // KPSUidAvkonDomain, KAknKeyguardStatus, TAknKeyguardStatus #include // KStartupSecurityCodeQueryStatus #include // KCoreAppUIsAutolockStatus @@ -1383,8 +1383,6 @@ { if ( !iAutolockEnabled ) { - iKeypadLockedNote->ShowNote( KKeyLockCustomShortTimeout, - CAknNoteDialog::ENoTone ); } } @@ -1397,8 +1395,6 @@ { if ( !iAutolockEnabled ) { - iKeypadUnlockedNote->ShowNote( KKeyLockCustomShortTimeout, - CAknNoteDialog::ENoTone ); } } @@ -1849,9 +1845,6 @@ { if ( !iAutolockEnabled ) { - iLockedNote->ShowNote( KKeyLockDisplayLockedTimeout, - CAknNoteDialog::ENoTone ); - iLockedNoteDisplayed = ETrue; } } diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/AknGlobalUI/OldStyleNotif/Src/aknsystemconfirmationpopup.cpp --- a/uifw/AknGlobalUI/OldStyleNotif/Src/aknsystemconfirmationpopup.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/AknGlobalUI/OldStyleNotif/Src/aknsystemconfirmationpopup.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -35,7 +35,7 @@ #include #include -#include +#include const TInt KCharsInTInt = 4; // TInt32 takes 4 chars. diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/AknGlobalUI/OldStyleNotif/Src/aknsystemmsgpopup.cpp --- a/uifw/AknGlobalUI/OldStyleNotif/Src/aknsystemmsgpopup.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/AknGlobalUI/OldStyleNotif/Src/aknsystemmsgpopup.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -34,7 +34,7 @@ #include #include #include -#include +#include #include "AknAppsKeyCleanup.inl" const TInt KCharsInTInt = 4; // TInt32 takes 4 chars. diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/AknGlobalUI/OldStyleNotif/Src/aknsystemprogresspopup.cpp --- a/uifw/AknGlobalUI/OldStyleNotif/Src/aknsystemprogresspopup.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/AknGlobalUI/OldStyleNotif/Src/aknsystemprogresspopup.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -38,7 +38,7 @@ #include #include #include -#include +#include #include "AknAppsKeyCleanup.inl" const TInt KCharsInTInt = 4; // TInt32 takes 4 chars. diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/AvKon/Avkon2MifHeader/mifheader.cdl.custom.h --- a/uifw/AvKon/Avkon2MifHeader/mifheader.cdl.custom.h Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/AvKon/Avkon2MifHeader/mifheader.cdl.custom.h Mon Mar 15 12:41:34 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 aabf2c525e0f -r 9f56a4e1b8ab uifw/AvKon/EABI/AVKONU.DEF --- a/uifw/AvKon/EABI/AVKONU.DEF Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/AvKon/EABI/AVKONU.DEF Mon Mar 15 12:41:34 2010 +0200 @@ -4578,7 +4578,7 @@ _ZNK13CAknAppUiBase23IsSingleClickCompatibleEv @ 4577 NONAME _ZN19CAknBitmapAnimation15StartAnimationLEi @ 4578 NONAME _ZN14CAknPopupField19CloseSelectionListLEv @ 4579 NONAME - _ZN12AknListUtils13DrawSeparatorER16CGraphicsContextRK5TRectRK4TRgb @ 4580 NONAME + _ZN12AknListUtils13DrawSeparatorER16CGraphicsContextRK5TRectRK4TRgbP17MAknsSkinInstance @ 4580 NONAME _ZN17CAknSmileyManager13SetSizeByFontEPK5CFont @ 4581 NONAME _ZN17CAknSmileyManager19ConvertCodesToTextLER6TDes16 @ 4582 NONAME _ZN17CAknSmileyManager19ConvertTextToCodesLER6TDes16 @ 4583 NONAME diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/AvKon/aknhlist/inc/akntreelistview.h --- a/uifw/AvKon/aknhlist/inc/akntreelistview.h Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/AvKon/aknhlist/inc/akntreelistview.h Mon Mar 15 12:41:34 2010 +0200 @@ -448,12 +448,9 @@ TInt& TopIndex(); TInt& BottomIndex(); -void UpdateIndexes(); - TInt iItemCountLimit; TInt iHighlightIndex; TInt iTopIndex; -TInt iBottomIndex; #endif //RD_UI_TRANSITION_EFFECTS_LIST @@ -866,6 +863,12 @@ */ void UpdateViewItemAsVisible( CAknTreeItem* aItem ); + /** + * Updates indexes + */ + void UpdateIndexes(); + + // from base class CCoeControl /** @@ -1083,6 +1086,11 @@ * Long tap detector */ CAknLongTapDetector* iLongTapDetector; + + /** + * Last visible item index + */ + TInt iBottomIndex; }; diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/AvKon/aknhlist/inc/akntreenode.h --- a/uifw/AvKon/aknhlist/inc/akntreenode.h Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/AvKon/aknhlist/inc/akntreenode.h Mon Mar 15 12:41:34 2010 +0200 @@ -181,6 +181,13 @@ */ void Sort(); + /** + * Are all children marked + * + * @return @c ETrue if all children are marked + */ + TBool AllChildrenMarked(); + // from base class CAknTreeItem /** diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/AvKon/aknhlist/src/akntreelist.cpp --- a/uifw/AvKon/aknhlist/src/akntreelist.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/AvKon/aknhlist/src/akntreelist.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -391,6 +391,29 @@ { Window().Invalidate( View().Rect() ); } + + // Update the marking of upper level node + CAknTreeItem* item = Tree().Item( aItem ); + if ( item && item->Parent() && item->Parent()->IsNode() ) + { + CAknTreeNode* node = item->Parent()->Node(); + TBool wasMarked = node->IsMarked(); + if ( node && node->IsMarkable() ) + { + if ( node->AllChildrenMarked() ) + { + node->SetMarked( ETrue ); + } + else + { + node->SetMarked( EFalse ); + } + } + if ( wasMarked != node->IsMarked() ) + { + Window().Invalidate( View().Rect() ); + } + } } diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/AvKon/aknhlist/src/akntreelistphysicshandler.cpp --- a/uifw/AvKon/aknhlist/src/akntreelistphysicshandler.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/AvKon/aknhlist/src/akntreelistphysicshandler.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -389,11 +389,8 @@ { iItemToBeSelected = item; iTreeListView->SetFocusedItem( item, ii, EFalse ); - // Start long tap detector - if ( !iTreeListView->HasMarkedItemsL() ) - { - iTreeListView->LongTapPointerEventL( aPointerEvent ); - } + // Start long tap detector + iTreeListView->LongTapPointerEventL( aPointerEvent ); } if ( ii != iTreeListView->FocusedItemIndex() ) { diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/AvKon/aknhlist/src/akntreelistview.cpp --- a/uifw/AvKon/aknhlist/src/akntreelistview.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/AvKon/aknhlist/src/akntreelistview.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2006, 2007 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" @@ -1159,9 +1159,7 @@ // Update scrollbars. UpdateScrollbars(); -#ifdef RD_UI_TRANSITION_EFFECTS_LIST UpdateIndexes(); -#endif AknsUtils::RegisterControlPosition( this, PositionRelativeToScreen() ); TRAP_IGNORE( InitPhysicsL() ); @@ -1493,9 +1491,7 @@ SetFocusIndex( KMinTInt ); if ( !iItems.Count() ) { -#ifdef RD_UI_TRANSITION_EFFECTS_LIST UpdateIndexes(); -#endif return; } @@ -1533,9 +1529,7 @@ SetFocusIndex( ii ); } } -#ifdef RD_UI_TRANSITION_EFFECTS_LIST UpdateIndexes(); -#endif } @@ -1581,9 +1575,7 @@ item = iterator.Next(); } } -#ifdef RD_UI_TRANSITION_EFFECTS_LIST UpdateIndexes(); -#endif } else if ( itemCount && iItems.Count() ) { @@ -2778,8 +2770,10 @@ // text color, used to draw the separator line between list items TRgb textColor( KRgbBlack ); - AknsUtils::GetCachedColor( AknsUtils::SkinInstance(), textColor, - KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG6 ); + AknsUtils::GetCachedColor( skin, + textColor, + KAknsIIDQsnTextColors, + EAknsCIQsnTextColorsCG6 ); const TInt itemCount = iItems.Count(); for ( TInt ii = 0; ii < itemCount; ++ii ) @@ -2823,7 +2817,7 @@ #endif if ( ii < iBottomIndex ) { - AknListUtils::DrawSeparator( gc, tfxDrawRect, textColor ); + AknListUtils::DrawSeparator( gc, drawRect, textColor, skin ); } TBool focused = ( IsFocused() && FocusedItem() && @@ -3168,10 +3162,19 @@ { return iBottomIndex; } - + +#endif //RD_UI_TRANSITION_EFFECTS_LIST +// --------------------------------------------------------------------------- +// CAknTreeListView::UpdateIndexes +// --------------------------------------------------------------------------- +// void CAknTreeListView::UpdateIndexes() { +#ifdef RD_UI_TRANSITION_EFFECTS_LIST iTopIndex = iBottomIndex = iHighlightIndex = 0; +#else + iBottomIndex = 0; +#endif //RD_UI_TRANSITION_EFFECTS_LIST if ( iItems.Count() ) { @@ -3184,9 +3187,10 @@ } } +#ifdef RD_UI_TRANSITION_EFFECTS_LIST iTopIndex = iTree.VisibleItemIndex(iItems[0].Item()); iHighlightIndex = iTree.VisibleItemIndex(FocusedItem()); +#endif //RD_UI_TRANSITION_EFFECTS_LIST } } -#endif //RD_UI_TRANSITION_EFFECTS_LIST diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/AvKon/aknhlist/src/akntreenode.cpp --- a/uifw/AvKon/aknhlist/src/akntreenode.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/AvKon/aknhlist/src/akntreenode.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -218,6 +218,27 @@ iChild.Sort( order ); } +// --------------------------------------------------------------------------- +// AllChildrenMarked +// --------------------------------------------------------------------------- +// +TBool CAknTreeNode::AllChildrenMarked() + { + TInt count = iChild.Count(); + TInt marked ( 0 ); + for ( TInt ii = count - 1; ii >= 0; --ii ) + { + if ( iChild[ii]->IsMarked() ) + { + marked++; + } + } + if ( count == marked ) + { + return ETrue; + } + return EFalse; + } // --------------------------------------------------------------------------- // From class CAknTreeItem. diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/AvKon/bwins/AVKONU.def --- a/uifw/AvKon/bwins/AVKONU.def Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/AvKon/bwins/AVKONU.def Mon Mar 15 12:41:34 2010 +0200 @@ -3452,7 +3452,7 @@ ?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 &) + ?DrawSeparator@AknListUtils@@SAXAAVCGraphicsContext@@ABVTRect@@ABVTRgb@@PAVMAknsSkinInstance@@@Z @ 3454 NONAME ; void AknListUtils::DrawSeparator(class CGraphicsContext &, class TRect const &, class TRgb const &, class MAknsSkinInstance *) ?SetSize@CAknSmileyManager@@QAEXABVTSize@@@Z @ 3455 NONAME ; void CAknSmileyManager::SetSize(class TSize const &) ?DrawText@CAknSmileyManager@@QBEXAAVCWindowGc@@ABVTDesC16@@PBVCFont@@ABVTPoint@@@Z @ 3456 NONAME ; void CAknSmileyManager::DrawText(class CWindowGc &, class TDesC16 const &, class CFont const *, class TPoint const &) const ?NewL@CAknSmileyManager@@SAPAV1@PAVMAknSmileyObserver@@@Z @ 3457 NONAME ; class CAknSmileyManager * CAknSmileyManager::NewL(class MAknSmileyObserver *) diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/AvKon/conf/s60/avkon.confml Binary file uifw/AvKon/conf/s60/avkon.confml has changed diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/AvKon/conf/s60/avkon_101F876E.crml Binary file uifw/AvKon/conf/s60/avkon_101F876E.crml has changed diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/AvKon/group/avkon.mmp --- a/uifw/AvKon/group/avkon.mmp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/AvKon/group/avkon.mmp Mon Mar 15 12:41:34 2010 +0200 @@ -347,7 +347,7 @@ LIBRARY HWRMLightClient.lib LIBRARY aiwdialdata.lib -DEFFILE AVKON.DEF +DEFFILE AVKON.def START WINS baseaddress 0x7dc00000 diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/AvKon/inc/AknAdaptiveSearchGrid.h --- a/uifw/AvKon/inc/AknAdaptiveSearchGrid.h Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/AvKon/inc/AknAdaptiveSearchGrid.h Mon Mar 15 12:41:34 2010 +0200 @@ -100,15 +100,6 @@ */ void HandleResourceChange( TInt aType ); - /** - * From CCoeControl. - * Retrieves an object of the same type as that encapsulated in aId. - * - * @param aId An encapsulated object type ID. - * @return Encapsulated pointer to the object provided. - * Note that the encapsulated pointer may be NULL. - */ - TTypeUid::Ptr MopSupplyObject( TTypeUid aId ); /** * From MCoeControlObserver. @@ -200,12 +191,6 @@ */ void SetButtonGridChars( const TDesC& aGridChars ); - /** - * Sets text into search field. - * - * @param const aSearchTxt Reference to the text buffer. - */ - void SetSearchTextToFindPane( const TDesC& aSearchTxt ); /** * Initiates buttons for adaptive search grid @@ -363,9 +348,6 @@ CEikEdwin* iEditor; TInt iTextLimit; - // skin context for find pane - CAknsListBoxBackgroundControlContext* iSkinContextOfFindPane; - CAknsFrameBackgroundControlContext* iBgContextOfFindPane; // contex for control pane CAknsBasicBackgroundControlContext* iBgContextOfControlPane; diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/AvKon/inc/AknPreviewPopUp.h --- a/uifw/AvKon/inc/AknPreviewPopUp.h Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/AvKon/inc/AknPreviewPopUp.h Mon Mar 15 12:41:34 2010 +0200 @@ -242,6 +242,10 @@ // It is true when user clicks the popup, transfer pointer up event to its child control TBool iAllowUpEvent; + + // Used to remember the local variable address which used to be + // mark whether this object is deleted + TBool * iIsDeleted; }; diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/AvKon/inc/AknSignalIcon.h --- a/uifw/AvKon/inc/AknSignalIcon.h Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/AvKon/inc/AknSignalIcon.h Mon Mar 15 12:41:34 2010 +0200 @@ -179,6 +179,15 @@ */ void ConstructL(); + /** + * Loads the AT&T signal icon to be displayed. + * + * @param aIconState ID of the signal state, @see signal indicator + * states in @c avkon.hrh. + * @param aIconColorIndex Color index of the icon. + */ + void LoadATTIconL( TInt aIconState, TInt aIconColorIndex ); + private: /** @@ -207,6 +216,9 @@ /** Flag defining whether or not the offline icon is drawn. */ TBool iShowOffLineIcon; + + /** Flag defining whether or not the ATT is enable. */ + TInt iATTEnable; }; #endif // AKNSIGNALICON_H diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/AvKon/notifsrc/AknSDData.cpp --- a/uifw/AvKon/notifsrc/AknSDData.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/AvKon/notifsrc/AknSDData.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -15,7 +15,7 @@ * */ -#include +#include #include #include "aknSDData.h" diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/AvKon/notifsrc/aknNotify.mmp --- a/uifw/AvKon/notifsrc/aknNotify.mmp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/AvKon/notifsrc/aknNotify.mmp Mon Mar 15 12:41:34 2010 +0200 @@ -64,7 +64,7 @@ LIBRARY akntransitionutils.lib #endif -DEFFILE AKNNOTIFY.DEF +DEFFILE AknNotify.DEF START WINS BASEADDRESS 0x7dd30000 diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/AvKon/src/AknAdaptiveSearch.cpp --- a/uifw/AvKon/src/AknAdaptiveSearch.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/AvKon/src/AknAdaptiveSearch.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -257,7 +257,6 @@ TBuf criteria; if ( iSearchField->Editor().SelectionLength() > 0 ) { - iAdaptiveSearchGrid->SetSearchTextToFindPane( criteria ); iSearchField->SetSearchTextL( criteria ); iSearchField->HandleControlEventL( iSearchField, EEventStateChanged ); } @@ -288,13 +287,8 @@ { criteria = criteria.Mid( 0, (length-1) ); } - // Update the AS search field first to be ready for redraw - iAdaptiveSearchGrid->SetSearchTextToFindPane( criteria ); iSearchField->SetSearchTextL( criteria ); iSearchField->HandleControlEventL( iSearchField, EEventStateChanged ); - iSearchField->SetFocus( EFalse ); - iSearchField->MakeVisible ( EFalse ); - iAdaptiveSearchGrid->SetSearchTextToFindPane( criteria ); iSearchField->DrawNow(); if( iAdaptiveSearchTextObserver ) { @@ -356,12 +350,8 @@ if ( IsIndicIndependentChar( criteria[length-1] ) ) criteria.Append( KLitHyphen ); - // Update the AS search field first to be ready for redraw - iAdaptiveSearchGrid->SetSearchTextToFindPane( criteria ); iSearchField->SetSearchTextL( criteria ); iSearchField->HandleControlEventL( iSearchField, EEventStateChanged ); - iSearchField->SetFocus( EFalse ); - iSearchField->MakeVisible ( EFalse ); iSearchField->DrawNow(); if( iAdaptiveSearchTextObserver ) { @@ -450,47 +440,7 @@ void CAknAdaptiveSearch::InvertAdaptiveSearchGridVisibilityL( TBool aSelectAll ) { _AKNTRACE_FUNC_ENTER; - // update the search text here if showing - TInt textLength = 0; - if( !iAdaptiveSearchGrid->IsShown() && &(iSearchField->Editor()) ) - { - textLength = iSearchField->Editor().TextLength(); - HBufC* searchText = NULL; - TPtrC finalText( KNullDesC ); - if( textLength > 0 ) - { - TRAP_IGNORE( searchText = iSearchField->Editor().GetTextInHBufL() ); - if( searchText ) - { - finalText.Set( *searchText ); // set the value - _AKNDEBUG( - _LIT( KClassName, "CAknAdaptiveSearch" ); - _LIT( KFunctionName, "InvertAdaptiveSearchGridVisibilityL" ); - _LIT( KFormat, "[%S][%S] Final text is: %S"); - _AKNTRACE( KFormat, - &KClassName, &KFunctionName, &finalText ); - ); - } - } - iAdaptiveSearchGrid->SetSearchTextToFindPane( finalText ); - if( searchText ) - { - delete searchText; - searchText = NULL; - } - } - TBool shown( !(iAdaptiveSearchGrid->IsShown()) ); - if ( shown ) - { - iSearchField->SetFocus( EFalse ); - iSearchField->MakeVisible( EFalse ); - } - else - { - iSearchField->Editor().RemoveFlagFromUserFlags( CEikEdwin::EAvkonDisableVKB ); - iSearchField->MakeVisible( ETrue ); - iSearchField->SetFocus( ETrue ); - } + TBool shown ( !iAdaptiveSearchGrid->IsShown() ); iAdaptiveSearchGrid->SetVisibilityL( shown, aSelectAll ); _AKNTRACE_FUNC_EXIT; } diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/AvKon/src/AknAdaptiveSearchGrid.cpp --- a/uifw/AvKon/src/AknAdaptiveSearchGrid.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/AvKon/src/AknAdaptiveSearchGrid.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -124,21 +124,12 @@ { _AKNTRACE_FUNC_ENTER; CEikonEnv::Static()->EikAppUi()->RemoveFromStack( this ); - delete iBgContextOfFindPane; delete iBgContextOfControlPane; - delete iSkinContextOfFindPane; - delete iInputFrame; // Clear current region of AS iCurrentRegion.Clear(); iButtonArray.ResetAndDestroy(); - if ( iEditor ) - { - TRAP_IGNORE(iEditor->TextView()->SetCursorVisibilityL( - TCursor::EFCursorInvisible, TCursor::EFCursorInvisible )); - delete iEditor; - } if( iGridChars ) { delete iGridChars; @@ -197,20 +188,12 @@ Window().SetBackgroundColor(~0); } } + Window().SetPointerGrab( ETrue ); CAknWsEventMonitor* eventMonitor = iAppUi->EventMonitor(); eventMonitor->AddObserverL( this ); eventMonitor->Enable(); - iSkinContextOfFindPane = CAknsListBoxBackgroundControlContext::NewL( KAknsIIDQsnBgAreaControlPopup, - TRect(0,0,0,0), - EFalse, - KAknsIIDNone, - TRect(0,0,0,0) ); - iBgContextOfFindPane = CAknsFrameBackgroundControlContext::NewL( KAknsIIDQsnFrInput, - TRect(0,0,0,0), - TRect(0,0,0,0), - EFalse ); iBgContextOfControlPane = CAknsBasicBackgroundControlContext::NewL( KAknsIIDQgnGrafAdaptSearchPageBg, TRect(0,0,0,0), EFalse ); // Init components @@ -277,59 +260,6 @@ flags |= CAknInputFrame::EFixedFindWithoutLine; break; } - iEditor = new (ELeave) CEikEdwin; - - iInputFrame = CAknInputFrame::NewL( iEditor, - EFalse, - KAvkonBitmapFile, - EMbmAvkonQgn_indi_find_glass, - EMbmAvkonQgn_indi_find_glass_mask, - flags ); - - iEditor->SetContainerWindowL( *this ); - iInputFrame->SetContainerWindowL( *this ); - - AknEditUtils::ConstructEditingL( iEditor, - iTextLimit, - 1, - EAknEditorCharactersLowerCase, - EAknEditorAlignLeft, - EFalse, - ETrue, - EFalse ); - iEditor->SetObserver( this ); - iEditor->SetBorder( TGulBorder::ENone ); - iEditor->SetAknEditorInputMode( EAknEditorTextInputMode ); - iEditor->SetAknEditorAllowedInputModes( EAknEditorTextInputMode | - EAknEditorNumericInputMode ); - iEditor->AddFlagToUserFlags( CEikEdwin::EAvkonDisableVKB ); - - if ( FeatureManager::FeatureSupported( KFeatureIdJapanese ) ) - { - iEditor->SetAknEditorPermittedCaseModes( EAknEditorCharactersLowerCase ); - } - - TInt editorFlags = EAknEditorFlagNoT9 | - EAknEditorFlagNoLRNavigation | - EAknEditorFlagForceTransparentFepModes | - EAknEditorFlagNoEditIndicators | - EAknEditorFlagFindPane; - - iEditor->SetAknEditorFlags( editorFlags ); - iEditor->CreateTextViewL(); - - iInputFrame->SetInputContext( iBgContextOfFindPane ); - iEditor->SetSkinBackgroundControlContextL( iBgContextOfFindPane ); - - TRgb textColor = KRgbBlack; - TInt error = AknsUtils::GetCachedColor( AknsUtils::SkinInstance(), - textColor, - KAknsIIDQsnTextColors, - EAknsCIQsnTextColorsCG19); - if( !error ) - { - TRAP_IGNORE( AknLayoutUtils::OverrideControlColorL(*iEditor, EColorLabelText, textColor) ); - } // Create label for page indicator iPageIndicator = new (ELeave) CEikLabel; @@ -652,59 +582,17 @@ } // ----------------------------------------------------------------------------- -// CAknAdaptiveSearchGrid::MopSupplyObject -// Retrieves an object of the same type as that encapsulated in aId. -// ----------------------------------------------------------------------------- -// -TTypeUid::Ptr CAknAdaptiveSearchGrid::MopSupplyObject( TTypeUid aId ) - { - if ( aId.iUid == MAknsControlContext::ETypeId && iSkinContextOfFindPane ) - { - return MAknsControlContext::SupplyMopObject( aId, iSkinContextOfFindPane ); - } - return MAknsControlContext::SupplyMopObject( aId, NULL ); - } - -// ----------------------------------------------------------------------------- // CAknAdaptiveSearchGrid::CountComponentControls // Gets the number of controls contained in a compound control. // ----------------------------------------------------------------------------- // TInt CAknAdaptiveSearchGrid::CountComponentControls() const { - // buttons + controls + search field ( editor, input frame ) - return iButtonArray.Count()+5+2; + // buttons + controls + return iButtonArray.Count()+5; } // ----------------------------------------------------------------------------- -// Sets text into search field. -// Gets one parameters: -// const TDesC& aSearchTxt - Reference to the text buffer. -// ----------------------------------------------------------------------------- -// -void CAknAdaptiveSearchGrid::SetSearchTextToFindPane( const TDesC& aSearchTxt ) - { - _AKNDEBUG( - _LIT( KClassName, "CAknAdaptiveSearchGrid" ); - _LIT( KFunctionName, "SetSearchTextToFindPane" ); - _LIT( KFormat, "[%S][%S] search text is: %S"); - _AKNTRACE( KFormat, - &KClassName, &KFunctionName, &aSearchTxt ); - ); - - TRAP_IGNORE( iEditor->SetTextL( &aSearchTxt ) ); - if ( iShown ) - { - TRAP_IGNORE(iEditor->TextView()->SetCursorVisibilityL( TCursor::EFCursorFlashing, - TCursor::EFCursorFlashing )); - } - TInt curPos = iEditor->TextLength(); - //This set selection all off - TRAP_IGNORE( iEditor->SetSelectionL( curPos, curPos ) ); - iEditor->DrawNow(); - } - -// ----------------------------------------------------------------------------- // CAknAdaptiveSearchGrid::ComponentControlh // Gets the specified component of a compound control. // ----------------------------------------------------------------------------- @@ -729,10 +617,6 @@ return iDeleteButton; case 4: return iPageIndicator; - case 5: - return iInputFrame; - case 6: - return iEditor; default: return NULL; } @@ -753,16 +637,6 @@ SetFocus( ETrue); iCurrentPage = 1; ShowL(); - if ( iEditor ) - { - iEditor->SetFocus( ETrue ); - TInt curPos = iEditor->TextLength(); - iEditor->SetCursorPosL( curPos, EFalse ); - if ( aSelectAll) - { - iEditor->SelectAllL(); - } - } } else { @@ -849,20 +723,6 @@ TRect cell_pane; TRect grid_pane = RectFromLayout( Rect(), AknLayoutScalable_Apps::grid_afind_pane( iLayoutOption ) ); - TRect find_pane; - - if(iPopupFindpane) - { - find_pane = RectFromLayout( Rect(), AknLayoutScalable_Avkon::popup_find_window() ); - } - else - { - find_pane = RectFromLayout( Rect(), AknLayoutScalable_Apps::find_pane_cp01( iLayoutOption ) ); - } - _AKNTRACE( "[%s][%s] rect of find pane is %d %d %d %d ", "CAknAdaptiveSearchGrid", __FUNCTION__, - find_pane.iTl.iX, find_pane.iTl.iY, find_pane.iBr.iX, find_pane.iBr.iY ); - iInputFrame->SetRect( find_pane ); - iSkinContextOfFindPane->SetRect( find_pane ); // Backspace and close buttons cell_pane = RectFromLayout( grid_pane, AknLayoutScalable_Apps::cell_afind_pane(iLayoutOption, iNumOfCols-2, iNumOfRows-1) ); @@ -1128,8 +988,6 @@ } iCloseButton->MakeVisible( ETrue ); iDeleteButton->MakeVisible( ETrue ); - iInputFrame->MakeVisible( ETrue ); - iEditor->MakeVisible( ETrue ); } // ----------------------------------------------------------------------------- @@ -1237,10 +1095,6 @@ { return; } - - iEditor->TextView()->SetCursorVisibilityL( - TCursor::EFCursorInvisible, TCursor::EFCursorInvisible); - SetFocus( EFalse ); //fix for TSW error EKDN-7KW9P2 SetShown( EFalse ); @@ -1267,8 +1121,6 @@ } if ( !IsFocused() && iLastFocusedButton ) iLastFocusedButton->ResetState(); - - iInputFrame->SetFocus( IsFocused(), aDrawNow ); } @@ -1297,8 +1149,8 @@ if( pointerEvent.iType == TPointerEvent::EButton1Down ) { - if( iInputFrame->Rect().Contains(pointerEvent.iPosition) || - aDestination != this ) + if ( !iFindpaneRect.Contains( pointerEvent.iPosition ) && + aDestination != this ) { MTouchFeedback* feedback = MTouchFeedback::Instance(); @@ -1628,10 +1480,6 @@ _AKNTRACE( "[%s][%s] rect of close button is %d %d %d %d ", "CAknAdaptiveSearchGrid", __FUNCTION__, button_rect.iTl.iX, button_rect.iTl.iY, button_rect.iBr.iX, button_rect.iBr.iY ); iCurrentRegion.AddRect( button_rect ); - button_rect = iInputFrame->Rect(); - _AKNTRACE( "[%s][%s] rect of Input Frame is %d %d %d %d ", "CAknAdaptiveSearchGrid", __FUNCTION__, - button_rect.iTl.iX, button_rect.iTl.iY, button_rect.iBr.iX, button_rect.iBr.iY ); - iCurrentRegion.AddRect( button_rect ); if( iNumOfPages > 1 ) { TRect page_pane; @@ -1793,10 +1641,6 @@ // void CAknAdaptiveSearchGrid::SaveFindPaneRect( const TRect &aRect ) { - //Now we just deal with the landscape conditions - if ( !Layout_Meta_Data::IsLandscapeOrientation() ) - return; - //When width is zero, no need to deal with. if ( 0 == aRect.Size().iWidth ) return; diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/AvKon/src/AknAppUi.cpp --- a/uifw/AvKon/src/AknAppUi.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/AvKon/src/AknAppUi.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -69,7 +69,7 @@ #include #include -#include +#include #include #include "transitionmanager.h" diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/AvKon/src/AknCharMap.cpp --- a/uifw/AvKon/src/AknCharMap.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/AvKon/src/AknCharMap.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -3973,6 +3973,9 @@ { if (aType == KEikDynamicLayoutVariantSwitch) { + + SetSmileyAnimationActivityInCurrentPageL(EFalse); + TInt cursorIndexBeforeSwitch = (iFirstVisibleRow + iCursorPos.iY) * iMaxColumns + iCursorPos.iX; TInt recentLengthBeforeSwitch = iMaxColumns; TBool recentWasSetBeforeSwitch = iSetRecentSct; @@ -3988,6 +3991,9 @@ // Sets the character case because the buffer content may have changed. SetCharacterCaseL(iSpecialCharCase); + + SetSmileyAnimationActivityInCurrentPageL(ETrue); + TInt cursorIndexAfterSwitch; if ( !iExtension->iKeyBrdEvent ) { diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/AvKon/src/AknForm.cpp --- a/uifw/AvKon/src/AknForm.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/AvKon/src/AknForm.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -231,9 +231,18 @@ else { if ( mayExitEditMode ) - SetEditableL(EFalse); // go out of edit mode of Form + { + SetEditableL( EFalse ); // go out of edit mode of Form + CEikCaptionedControl* line = Line( IdOfFocusControl() ); + if ( line ) + { + line->SetEditableL( EFalse ); + line->SetCurrent( EFalse ); + line->DrawDeferred(); // otherwise will be partly redrawn + } + } return EFalse; // remain in form ( but in view mode if save was OK). - } + } } // end of if (IsEditable()) diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/AvKon/src/AknIndicatorContainer.cpp --- a/uifw/AvKon/src/AknIndicatorContainer.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/AvKon/src/AknIndicatorContainer.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -835,7 +835,23 @@ EXPORT_C TInt CAknIndicatorContainer::CountComponentControls() const { - return (iIndicatorsShown); + TInt n = CountShownIndicator(); + //__ASSERT_DEBUG ( n == iIndicatorsShown, User::Panic(_L( "indicatorshow"),n ) ); + return n; + } + +TInt CAknIndicatorContainer::CountShownIndicator() const + { + TInt count = iIndicators->Count(); + TInt indicatorShown = 0; + for ( TInt i = 0; i< count; i++ ) + { + if( iIndicators->At(i)->IndicatorState() && iIndicators->At( i )->Priority() != KIndicatorNotShown ) + { + indicatorShown++; + } + } + return indicatorShown; } @@ -863,11 +879,17 @@ } -EXPORT_C void CAknIndicatorContainer::Draw( const TRect& /*aRect*/ ) const +EXPORT_C void CAknIndicatorContainer::Draw( const TRect& aRect ) const { if ( iExtension->iStatusPane && iExtension->iStatusPane->IsTransparent() ) { + CWindowGc& gc = SystemGc(); + TRgb rgb(TRgb::Color16MA(0)); + gc.SetDrawMode(CGraphicsContext::EDrawModeWriteAlpha); + gc.SetBrushStyle(CGraphicsContext::ESolidBrush); + gc.SetBrushColor(rgb); + gc.Clear(aRect); return; } @@ -1191,30 +1213,29 @@ return; } - CAknIndicator* temp; - for(TInt ii = 1; ii < count; ii++) + // Bubble sorted + for (TInt i = 0; i < ( count - 1 ); i++) { - temp = iIndicators->At(ii); - TInt tempPriority = temp->Priority(); - if (tempPriority >= 0) + TBool swaped = EFalse; + for (TInt j = count - 1; j > i; j--) { - for(TInt jj = 0; jj <= ii; jj++) + if ( iIndicators->At( j )->Priority() + < iIndicators->At( j - 1 )->Priority() ) { - if (tempPriority < iIndicators->At(jj)->Priority()) - { - iIndicators->Delete( ii ); - CleanupStack::PushL( temp ); - iIndicators->InsertL( jj, temp ); - CleanupStack::Pop( temp ); - break; - } - else if ( jj == (ii-1) ) - { - break; - } + CAknIndicator* temp = iIndicators->At( j ); + iIndicators->Delete( j ); + CleanupStack::PushL( temp ); + iIndicators->InsertL( j - 1, temp ); + CleanupStack::Pop( temp ); + swaped = ETrue; } } + if( !swaped ) + { + break; + } } + } @@ -2973,8 +2994,7 @@ { if ( extendedFlatLayout ) { - indicatorLayout = - AknLayoutScalable_Avkon::indicator_nsta_pane_cp_g4( 0 ); + showIndicator = EFalse; } else { @@ -2987,8 +3007,7 @@ { if ( extendedFlatLayout ) { - indicatorLayout = - AknLayoutScalable_Avkon::indicator_nsta_pane_cp_g5( 0 ); + showIndicator = EFalse; } else { @@ -3001,8 +3020,7 @@ { if ( extendedFlatLayout ) { - indicatorLayout = - AknLayoutScalable_Avkon::indicator_nsta_pane_cp_g6( 0 ); + showIndicator = EFalse; } else { diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/AvKon/src/AknPopupSettingPage.cpp --- a/uifw/AvKon/src/AknPopupSettingPage.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/AvKon/src/AknPopupSettingPage.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -44,7 +44,7 @@ #include #endif //RD_UI_TRANSITION_EFFECTS_LIST -#include +#include // ---------------------------------------------------------------------------- // Extension class definition diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/AvKon/src/AknPreviewPopUp.cpp --- a/uifw/AvKon/src/AknPreviewPopUp.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/AvKon/src/AknPreviewPopUp.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -67,7 +67,8 @@ : iContent( aContent ), iController( aController ), iFlags( aStyle ), - iAllowUpEvent(EFalse) + iAllowUpEvent(EFalse), + iIsDeleted(0) { GfxTransEffect::Register( this, KGfxPreviewPopupControlUid ); } @@ -79,6 +80,12 @@ CAknPreviewPopUp::~CAknPreviewPopUp() { AKNTASHOOK_REMOVE(); + + if( iIsDeleted ) + { + *iIsDeleted = ETrue ; + iIsDeleted = 0 ; + } GfxTransEffect::Deregister( this ); @@ -509,6 +516,9 @@ // void CAknPreviewPopUp::HandlePointerEventL( const TPointerEvent& aPointerEvent ) { + TBool isDelete = EFalse; + iIsDeleted = &isDelete; + if ( AknLayoutUtils::PenEnabled() ) { iCloseMenu = EFalse; @@ -522,6 +532,10 @@ { iAllowUpEvent = ETrue; CCoeControl::HandlePointerEventL( aPointerEvent ); + if( isDelete ) + { + return; + } if ( !( iFlags & CAknPreviewPopUpController::EPermanentMode ) && aPointerEvent.iType == TPointerEvent::EButton1Up && IsVisible() ) { // if pointer up is already redirected to the content, but the popup is still visible, @@ -593,6 +607,10 @@ (aPointerEvent.iType == TPointerEvent::EButton1Up && iAllowUpEvent ) ) { CCoeControl::HandlePointerEventL( aPointerEvent ); + if( isDelete ) + { + return; + } } } else @@ -601,6 +619,10 @@ aPointerEvent.iType == TPointerEvent::EButtonRepeat ) { CCoeControl::HandlePointerEventL( aPointerEvent ); + if( isDelete ) + { + return; + } } } @@ -610,6 +632,8 @@ iAllowUpEvent = EFalse; } } + + iIsDeleted = 0; } // ----------------------------------------------------------------------------- diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/AvKon/src/AknSignalIcon.cpp --- a/uifw/AvKon/src/AknSignalIcon.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/AvKon/src/AknSignalIcon.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -24,6 +24,9 @@ #include #include +#include +#include + #include "AknSignalIcon.h" #include "aknconsts.h" #include "AknUtils.h" @@ -162,6 +165,93 @@ return iColorIndex; } +void CAknSignalIcon::LoadATTIconL(TInt aIconState, + TInt aIconColorIndex ) + { + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + CFbsBitmap* bitmap = NULL; + CFbsBitmap* mask = NULL; + + switch ( aIconState ) + { + case EAknSignalHsdpaIndicatorAvailable: + AknsUtils::CreateColorIconL( skin, + KAknsIIDQgnIndiSignalWcdmaIcon, + KAknsIIDQsnIconColors, + aIconColorIndex, + bitmap, + mask, + AknIconUtils::AvkonIconFileName(), + EMbmAvkonQgn_indi_signal_wcdma_icon, + EMbmAvkonQgn_indi_signal_wcdma_icon_mask, + KRgbGray ); + break; + case EAknSignalHsdpaIndicatorAttached: + case EAknSignalHsdpaIndicatorEstablishingContext: + AknsUtils::CreateColorIconL( skin, + KAknsIIDQgnIndiSignalWcdmaAttach, + KAknsIIDQsnIconColors, + aIconColorIndex, + bitmap, + mask, + AknIconUtils::AvkonIconFileName(), + EMbmAvkonQgn_indi_signal_wcdma_attach, + EMbmAvkonQgn_indi_signal_wcdma_attach_mask, + KRgbGray ); + break; + case EAknSignalHsdpaIndicatorContext: + AknsUtils::CreateColorIconL( skin, + KAknsIIDQgnIndiSignalWcdmaContext, + KAknsIIDQsnIconColors, + aIconColorIndex, + bitmap, + mask, + AknIconUtils::AvkonIconFileName(), + EMbmAvkonQgn_indi_signal_wcdma_context, + EMbmAvkonQgn_indi_signal_wcdma_context_mask, + KRgbGray ); + break; + case EAknSignalHsdpaIndicatorMultipdp: + AknsUtils::CreateColorIconL( skin, + KAknsIIDQgnIndiSignalWcdmaMultipdp, + KAknsIIDQsnIconColors, + aIconColorIndex, + bitmap, + mask, + AknIconUtils::AvkonIconFileName(), + EMbmAvkonQgn_indi_signal_wcdma_multipdp, + EMbmAvkonQgn_indi_signal_wcdma_multipdp_mask, + KRgbGray ); + break; + case EAknSignalHsdpaIndicatorSuspended: + AknsUtils::CreateColorIconL( skin, + KAknsIIDQgnIndiSignalWcdmaSuspended, + KAknsIIDQsnIconColors, + aIconColorIndex, + bitmap, + mask, + AknIconUtils::AvkonIconFileName(), + EMbmAvkonQgn_indi_signal_wcdma_suspended, + EMbmAvkonQgn_indi_signal_wcdma_suspended_mask, + KRgbGray ); + break; + } + if ( bitmap ) + { + delete iSignalIcon; + iSignalIcon = bitmap; + AknIconUtils::SetSize( iSignalIcon, Size() ); + } + + if ( mask ) + { + delete iSignalIconMask; + iSignalIconMask = mask; + } + + iIconState = aIconState; + iColorIndex = aIconColorIndex; + } // --------------------------------------------------------------------------- // CAknSignalIcon::LoadIconL // --------------------------------------------------------------------------- @@ -182,6 +272,8 @@ CFbsBitmap* bitmap = NULL; CFbsBitmap* mask = NULL; + TBool isHsdpa = ( aIconState >= EAknSignalHsdpaIndicatorAvailable + && aIconState <= EAknSignalHsdpaIndicatorMultipdp ); if ( iOffLine ) { // Offline mode is not an actual signal state in the signal icon @@ -200,6 +292,11 @@ } else { + if( iATTEnable && isHsdpa) + { + LoadATTIconL( aIconState, aIconColorIndex ); + return; + } switch( aIconState ) { // Old legacy GPRS icons. @@ -678,6 +775,17 @@ // void CAknSignalIcon::ConstructL() { + CRepository* repo = CRepository::NewL( KCRUidAvkon ); + + TInt aTTEnabled = EFalse; + iATTEnable = EFalse; + TInt crErr = repo->Get( KAknATTSignalIconEnable, aTTEnabled ); + if ( crErr == KErrNone ) + { + iATTEnable = aTTEnabled; + } + delete repo; + repo = NULL; } // End of File diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/AvKon/src/AknSmileyModel.cpp --- a/uifw/AvKon/src/AknSmileyModel.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/AvKon/src/AknSmileyModel.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -707,7 +707,7 @@ while(ptr.Length()) { TInt i = 0; - for(; iEnableKineticScrollingL( ETrue ); // Inhibit predictive text entry unless allowed by API if ( !(iTextSettingPageFlags & EPredictiveTextEntryPermitted) ) editor->SetAknEditorFlags( EAknEditorFlagNoT9 | editor->AknEdwinFlags() ); diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/AvKon/src/aknbattery.cpp --- a/uifw/AvKon/src/aknbattery.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/AvKon/src/aknbattery.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -104,7 +104,7 @@ iBatteryStrengthControl->SetContainerWindowL( *this ); iPrivateFlags = 0; // reset flags iDataObserver = new (ELeave) CAknBatteryDataObserver( this ); - iIsActiveIdle = AknStatuspaneUtils::IsActiveIdle(); + iStatusPane = CEikStatusPaneBase::Current(); MTouchFeedback* feedback = MTouchFeedback::Instance(); if ( feedback ) @@ -394,11 +394,17 @@ // Draws the battery pane. // --------------------------------------------------------------------------- // -EXPORT_C void CAknBatteryPane::Draw( const TRect& /*aRect*/ ) const +EXPORT_C void CAknBatteryPane::Draw( const TRect& aRect ) const { if ( iStatusPane && iStatusPane->IsTransparent() ) { + CWindowGc& gc = SystemGc(); + TRgb rgb(TRgb::Color16MA(0)); + gc.SetDrawMode(CGraphicsContext::EDrawModeWriteAlpha); + gc.SetBrushStyle(CGraphicsContext::ESolidBrush); + gc.SetBrushColor(rgb); + gc.Clear(aRect); return; } diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/AvKon/src/aknchoicelist.cpp --- a/uifw/AvKon/src/aknchoicelist.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/AvKon/src/aknchoicelist.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -165,7 +165,8 @@ */ NONSHARABLE_CLASS( CAknChoiceListPopup ) : public CCoeControl, public MEikListBoxObserver, - MEikCommandObserver + MEikCommandObserver, + public MCoeForegroundObserver { public: CAknChoiceListPopup() : iIndex( -1 ), iCancelled( EFalse ) @@ -245,6 +246,8 @@ iAvkonAppUi->RemoveFromStack( this ); iEikonEnv->BringForwards( EFalse ); AknGlobalPopupPriorityController::ShowPopup(*this, EFalse); + DrawableWindow()->SetNonFading( EFalse ); + iCoeEnv->RemoveForegroundObserver( *this ); if ( AknLayoutUtils::PenEnabled() ) { @@ -391,7 +394,9 @@ iEikonEnv->BringForwards( ETrue ); DrawableWindow()->SetOrdinalPosition( 0 ); AknGlobalPopupPriorityController::ShowPopup(*this, ETrue); - + DrawableWindow()->SetNonFading( ETrue ); + iCoeEnv->AddForegroundObserverL( *this ); + // this will fix possibly corrupted index if ( iIndex < iList->Model()->ItemTextArray()->MdcaCount() && iIndex >= 0 ) { @@ -481,6 +486,15 @@ } return EKeyWasNotConsumed; } + + void HandleGainingForeground() + { + } + + void HandleLosingForeground() + { + CloseChoiceList(); + } private: diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/AvKon/src/akncolourselectiongrid.cpp --- a/uifw/AvKon/src/akncolourselectiongrid.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/AvKon/src/akncolourselectiongrid.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -192,7 +192,196 @@ #endif aGc.DrawRect( gridRect ); }; - + +// CLASS DECLARATION + +/** +* CMainTextArray +* +* +* +* @lib avkon +* @since 2.0 +*/ + +NONSHARABLE_CLASS(CMainTextArray) : public MDesCArray, public CBase + { + public: + + /** + * C++ default constructor. + */ + CMainTextArray(TBool &aNoneExist); + /** + * Destructor. + */ + ~CMainTextArray(); + + /** + * MdcaCount + * @since 2.0 + * @return + */ + virtual TInt MdcaCount() const; + + /** + * MdcaPoint + * @since 2.0 + * @param aIndex + * @return + */ + virtual TPtrC MdcaPoint(TInt aIndex) const; + + /** + * ConstructL + * @since 2.0 + * @param aColours Array of colours to be in grid + */ + void ConstructL(CArrayFixFlat* aColours); + + /** + * ReSizeIcons + * @since 5.2 + * @param aWidth the width of icon + * @param aheight the height of icon + */ + void ReSizeIcons( TInt aWidth, TInt aHeight ); + + public: // Data + CGulIcon* iIcon[16]; + + private: // Data + mutable TInt iIndex; + TInt iColourNmbr; + TBool iNoneExist; + CArrayFixFlat* iColours; + CFbsBitmap* iBitmap[16]; + CFbsBitmapDevice* iBmpDevice[16]; + HBufC *iString; + + }; + +// --------------------------------------------------------- +// CMainTextArray::CMainTextArray() +// +// --------------------------------------------------------- +// +CMainTextArray::CMainTextArray(TBool &aNoneExist) + : iNoneExist(aNoneExist) + { + } +// --------------------------------------------------------- +// CMainTextArray::~CMainTextArray() +// +// --------------------------------------------------------- +// +CMainTextArray::~CMainTextArray() + { + for (TInt i = 0;i* aColours) + { + + this->iColours = aColours; + iColourNmbr = aColours->Count(); + if (iColourNmbr > 16) + { + iColourNmbr = 16; + } + TAknLayoutRect r; + TAknLayoutRect rectPane; + rectPane.LayoutRect( TRect( 0, 0, 0, 0 ), + AknLayoutScalable_Avkon::cell_large_graphic_colour_popup_pane( + iNoneExist, + 0, + 0).LayoutLine()); + r.LayoutRect( rectPane.Rect(), + AknLayoutScalable_Avkon::cell_large_graphic_colour_popup_pane_g1().LayoutLine()); + TSize bmpsize( r.Rect().Width(), r.Rect().Height() ); + for ( TInt i = 0; i < iColourNmbr; i++ ) + { + iBitmap[i] = new (ELeave) CFbsBitmap(); + iBitmap[i]->Create(bmpsize,EColor4K); + iIcon[i] = CGulIcon::NewL(iBitmap[i]); + iIcon[i]->SetBitmapsOwnedExternally(ETrue); + iBmpDevice[i] = CFbsBitmapDevice::NewL(iBitmap[i]); + iBmpDevice[i]->Resize(iBitmap[i]->SizeInPixels()); + } + iString = HBufC::NewL(10); + } + +// --------------------------------------------------------- +// CMainTextArray::ReSizeIcons() +// +// --------------------------------------------------------- +// +void CMainTextArray::ReSizeIcons( TInt aWidth, TInt aHeight ) + { + TSize bmpsize( aWidth, aHeight ); + for ( TInt i = 0; i < iColourNmbr; i++ ) + { + if ( iBitmap[i] ) + { + iBitmap[i]->Resize( bmpsize ); + } + if ( iBmpDevice[i] ) + { + iBmpDevice[i]->Resize( iBitmap[i]->SizeInPixels() ); + } + } + } + +// --------------------------------------------------------- +// CMainTextArray::MdcaCount() +// +// --------------------------------------------------------- +// +TInt CMainTextArray::MdcaCount() const + { + return(iColourNmbr); + } + +// --------------------------------------------------------- +// CMainTextArray::MdcaPoint() +// +// --------------------------------------------------------- +// +TPtrC CMainTextArray::MdcaPoint(TInt aIndex) const + { + TRAP_IGNORE( + { + + CFbsBitGc* fbsBitGc = CFbsBitGc::NewL(); + CleanupStack::PushL( fbsBitGc ); + + fbsBitGc->Activate(iBmpDevice[aIndex]); + + fbsBitGc->SetBrushStyle(CGraphicsContext::ESolidBrush); + if (aIndex < iColourNmbr) + { + fbsBitGc->SetBrushColor(iColours->At(aIndex)); + } + fbsBitGc->Clear(); + + CleanupStack::PopAndDestroy(); // fbsBitGc + }); + //fix for TSW error AJUA-7MTAXE + iString->Des().Num(aIndex); + + return *iString; + } + // CLASS DECLARATION /** @@ -395,6 +584,18 @@ TInt cellWidth = colourCellSize.Rect().Width() - 1; TInt cellHeight = colourCellSize.Rect().Height() - 1; + TAknLayoutRect r; + TAknLayoutRect rectPane; + rectPane.LayoutRect( gridRect, + AknLayoutScalable_Avkon::cell_large_graphic_colour_popup_pane( + iNoneExist, + 0, + 0 ).LayoutLine() ); + r.LayoutRect( rectPane.Rect(), + AknLayoutScalable_Avkon::cell_large_graphic_colour_popup_pane_g1().LayoutLine() ); + MDesCArray* iconArray = Model()->ItemTextArray(); + static_cast(iconArray)->ReSizeIcons( r.Rect().Width(), r.Rect().Height() ); + // Define the overall size of the cell AknListBoxLayouts::SetupGridPos(*this, 0, 0, 0, 0, cellWidth, cellHeight); @@ -1338,168 +1539,7 @@ } -// CLASS DECLARATION -/** -* CMainTextArray -* -* -* -* @lib avkon -* @since 2.0 -*/ - -NONSHARABLE_CLASS(CMainTextArray) : public MDesCArray, public CBase - { - public: - - /** - * C++ default constructor. - */ - CMainTextArray(TBool &aNoneExist); - /** - * Destructor. - */ - ~CMainTextArray(); - - /** - * MdcaCount - * @since 2.0 - * @return - */ - virtual TInt MdcaCount() const; - - /** - * MdcaPoint - * @since 2.0 - * @param aIndex - * @return - */ - virtual TPtrC MdcaPoint(TInt aIndex) const; - - /** - * ConstructL - * @since 2.0 - * @param aColours Array of colours to be in grid - */ - void ConstructL(CArrayFixFlat* aColours); - - public: // Data - CGulIcon* iIcon[16]; - - private: // Data - mutable TInt iIndex; - TInt iColourNmbr; - TBool iNoneExist; - CArrayFixFlat* iColours; - CFbsBitmap* iBitmap[16]; - CFbsBitmapDevice* iBmpDevice[16]; - HBufC *iString; - - }; - -// --------------------------------------------------------- -// CMainTextArray::CMainTextArray() -// -// --------------------------------------------------------- -// -CMainTextArray::CMainTextArray(TBool &aNoneExist) - : iNoneExist(aNoneExist) - { - } -// --------------------------------------------------------- -// CMainTextArray::~CMainTextArray() -// -// --------------------------------------------------------- -// -CMainTextArray::~CMainTextArray() - { - for (TInt i = 0;i* aColours) - { - - this->iColours = aColours; - iColourNmbr = aColours->Count(); - if (iColourNmbr > 16) - { - iColourNmbr = 16; - } - - TAknLayoutRect r; - TAknLayoutRect r_pane; - TInt w, h; - r_pane.LayoutRect(TRect(0,0,0,0), AknLayoutScalable_Avkon::cell_large_graphic_colour_popup_pane(iNoneExist, 0, 0).LayoutLine()); - r.LayoutRect(r_pane.Rect(), AknLayoutScalable_Avkon::cell_large_graphic_colour_popup_pane_g1().LayoutLine()); - w = r.Rect().Width(); - h = r.Rect().Height(); - TSize bmpsize(w,h); - - for (TInt i = 0;iCreate(bmpsize,EColor4K); - iIcon[i] = CGulIcon::NewL(iBitmap[i]); - iIcon[i]->SetBitmapsOwnedExternally(ETrue); - iBmpDevice[i] = CFbsBitmapDevice::NewL(iBitmap[i]); - iBmpDevice[i]->Resize(iBitmap[i]->SizeInPixels()); - } - - iString = HBufC::NewL(10); - } - - -// --------------------------------------------------------- -// CMainTextArray::MdcaCount() -// -// --------------------------------------------------------- -// -TInt CMainTextArray::MdcaCount() const - { - return(iColourNmbr); - } - -// --------------------------------------------------------- -// CMainTextArray::MdcaPoint() -// -// --------------------------------------------------------- -// -TPtrC CMainTextArray::MdcaPoint(TInt aIndex) const - { - TRAP_IGNORE( - { - - CFbsBitGc* fbsBitGc = CFbsBitGc::NewL(); - CleanupStack::PushL( fbsBitGc ); - - fbsBitGc->Activate(iBmpDevice[aIndex]); - - fbsBitGc->SetBrushStyle(CGraphicsContext::ESolidBrush); - if (aIndex < iColourNmbr) - { - fbsBitGc->SetBrushColor(iColours->At(aIndex)); - } - - fbsBitGc->Clear(); - - CleanupStack::PopAndDestroy(); // fbsBitGc - }); - //fix for TSW error AJUA-7MTAXE - iString->Des().Num(aIndex); - - return *iString; - } // ============================ MEMBER FUNCTIONS =============================== diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/AvKon/src/aknindicator.cpp --- a/uifw/AvKon/src/aknindicator.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/AvKon/src/aknindicator.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -608,6 +608,13 @@ } MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + + if ( iIndicatorBitmaps[layoutMode]->Count() <= 0 || !iIndicatorBitmaps[layoutMode]->At( 0 ) ) + { + + __ASSERT_DEBUG( EFalse, User::Panic( _L("indicatorcount"),iIndicatorBitmaps[layoutMode]->Count())); + return; + } TSize iconSize( iIndicatorBitmaps[layoutMode]->At( 0 )->SizeInPixels() ); TInt iconWidth = iconSize.iWidth; TInt iconHeight = iconSize.iHeight; @@ -652,8 +659,9 @@ } } - if ( iIndicatorBitmaps[layoutMode]->At( iAnimState * 2 ) && - iIndicatorBitmaps[layoutMode]->At( iAnimState * 2 + 1 ) ) + if ( ( iAnimState * 2 + 1 ) < iIndicatorBitmaps[layoutMode]->Count() + && iIndicatorBitmaps[layoutMode]->At(iAnimState * 2) + && iIndicatorBitmaps[layoutMode]->At(iAnimState * 2 + 1)) { CFbsBitmap* mask = iIndicatorBitmaps[layoutMode]->At( iAnimState * 2 + 1 ); if ( iExtension && iExtension->iFader ) @@ -671,7 +679,8 @@ mask, ETrue ); } - else if ( iIndicatorBitmaps[layoutMode]->At( iAnimState * 2 ) ) + else if (( iAnimState * 2 ) < iIndicatorBitmaps[layoutMode]->Count() + && iIndicatorBitmaps[layoutMode]->At(iAnimState * 2) ) { // Draw editor indicator bitmap without mask CFbsBitmap* mask = iIndicatorBitmaps[layoutMode]->At( iAnimState * 2 ); diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/AvKon/src/akninfrm.cpp --- a/uifw/AvKon/src/akninfrm.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/AvKon/src/akninfrm.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -278,7 +278,7 @@ TBool apac( AknLayoutUtils::Variant() == EApacVariant && ( iFlags & EShowIndicators ) ); - TAknWindowComponentLayout outline = AknLayoutScalable_Avkon::input_find_pane(); + TAknWindowComponentLayout outline = AknLayoutScalable_Avkon::find_pane(); TAknWindowLineLayout iconPos = AknLayoutScalable_Avkon::find_popup_pane_g1().LayoutLine(); TAknTextComponentLayout editor = AknLayoutScalable_Avkon::input_popup_find_pane_t1( apac ? 2 : 0 ); @@ -331,7 +331,7 @@ { _AKNTRACE( "[%s][%s] Standard Layout", "CAknInputFrame", __FUNCTION__ ); - outline = AknLayoutScalable_Avkon::input_find_pane(); + outline = AknLayoutScalable_Avkon::find_pane(); iconPos = AknLayoutScalable_Avkon::find_pane_g1(); editor = AknLayoutScalable_Avkon::input_find_pane_t2( apac ? 1: 0 ); r.LayoutRect( rect, AknLayoutScalable_Avkon::input_find_pane() ); diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/AvKon/src/aknlistquerydialog.cpp --- a/uifw/AvKon/src/aknlistquerydialog.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/AvKon/src/aknlistquerydialog.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -19,7 +19,7 @@ #include #include #include -#include +#include #include "aknPopupHeadingPane.h" #include "aknlistquerycontrol.h" diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/AvKon/src/aknlists.cpp --- a/uifw/AvKon/src/aknlists.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/AvKon/src/aknlists.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -3674,7 +3674,7 @@ d->SetStretchableTextSubCellL( 3, AknLayoutScalable_Avkon::list_double_time_pane_t2( 0 ), - AknLayoutScalable_Avkon::list_double_time_pane_vc_t2( 0 ) ); + AknLayoutScalable_Avkon::list_double_time_pane_vc_t2( 3 ) ); d->SetStretchableGraphicSubCellL( 4, AknLayoutScalable_Avkon::list_double_time_pane_g1( 0 ), @@ -3687,11 +3687,11 @@ // Conditional subcells must be added in priority order! d->SetStretchableConditionalSubCellL( 5, AknLayoutScalable_Avkon::list_double_time_pane_t1( 2 ), - AknLayoutScalable_Avkon::list_double_time_pane_vc_t2( 2 ), 2, 3 ); + AknLayoutScalable_Avkon::list_double_time_pane_vc_t2( 5 ), 2, 3 ); d->SetStretchableConditionalSubCellL( 4, AknLayoutScalable_Avkon::list_double_time_pane_t1( 1 ), - AknLayoutScalable_Avkon::list_double_time_pane_vc_t2( 1 ), 2, 3 ); + AknLayoutScalable_Avkon::list_double_time_pane_vc_t2( 4 ), 2, 3 ); _AKNTRACE_FUNC_EXIT; } diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/AvKon/src/aknnavi.cpp --- a/uifw/AvKon/src/aknnavi.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/AvKon/src/aknnavi.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -1579,11 +1579,17 @@ // --------------------------------------------------------------------------- // EXPORT_C void CAknNavigationControlContainer::Draw( - const TRect& /*aRect*/ ) const + const TRect& aRect ) const { if ( iExtension->iStatusPane && iExtension->iStatusPane->IsTransparent() ) { + CWindowGc& gc = SystemGc(); + TRgb rgb(TRgb::Color16MA(0)); + gc.SetDrawMode(CGraphicsContext::EDrawModeWriteAlpha); + gc.SetBrushStyle(CGraphicsContext::ESolidBrush); + gc.SetBrushColor(rgb); + gc.Clear(aRect); return; } @@ -1866,7 +1872,7 @@ // void CAknNavigationControlContainer::NotifyNaviWipeStatusL() { - if ( iExtension && iExtension->iDestructionOngoing ) + if ( !iExtension || iExtension->iDestructionOngoing ) { return; } diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/AvKon/src/aknsignal.cpp --- a/uifw/AvKon/src/aknsignal.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/AvKon/src/aknsignal.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -531,11 +531,17 @@ // Draws the signal pane. // --------------------------------------------------------------------------- // -EXPORT_C void CAknSignalPane::Draw( const TRect& /*aRect*/ ) const +EXPORT_C void CAknSignalPane::Draw( const TRect& aRect ) const { if ( iExtension->iStatusPane && iExtension->iStatusPane->IsTransparent() ) { + CWindowGc& gc = SystemGc(); + TRgb rgb(TRgb::Color16MA(0)); + gc.SetDrawMode(CGraphicsContext::EDrawModeWriteAlpha); + gc.SetBrushStyle(CGraphicsContext::ESolidBrush); + gc.SetBrushColor(rgb); + gc.Clear(aRect); return; } diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/AvKon/src/akntitle.cpp --- a/uifw/AvKon/src/akntitle.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/AvKon/src/akntitle.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -214,9 +214,7 @@ // set flags to default values iExtension->iFlags = 0; } - - iExtension->iStatusPane = CEikStatusPaneBase::Current(); - + iExtension->iStatusPane = CEikStatusPaneBase::Current(); } @@ -229,6 +227,7 @@ { CommonConstructL(); ReadFromResourceFileL( aReader ); + iExtension->iStatusPane = CEikStatusPaneBase::Current(); } @@ -919,7 +918,12 @@ TPtr ptr = iText->Des(); AknBidiTextUtils::ConvertToVisualAndWrapToStringL( aText, *iLineWidthArray, *font, ptr, ETrue ); - + + TInt len = iText->Length(); + if (( aLineNum == 1 ) && ( iText->LocateReverseF( '\n' ) == len -1 ) && len >= 1 ) + { + ptr.Delete( len - 1, 1 ); + } } diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/AvKon/src/aknutils.cpp --- a/uifw/AvKon/src/aknutils.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/AvKon/src/aknutils.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -119,7 +119,7 @@ #include "AknAdaptiveSearch.h" #include -#include +#include "akntrace.h" #ifdef RD_HINDI_PHONETIC_INPUT #include @@ -134,6 +134,10 @@ const TInt KFontHeightComparisonDivisor = 20; const TInt KInvalidIndex = -1; +// Default for list separator line color's alpha value, used if not +// found from skin. +const TInt KDefaultSeparatorAlpha = 32; + enum TAknLayoutEdwinPanic { EAknLayoutEdwinPanicNoEdwin, @@ -3407,24 +3411,28 @@ { TAknWindowComponentLayout line; TAknLayoutRect rect; - TRect screenRect(0, 0, AKN_LAYOUT_WINDOW_screen.iW, AKN_LAYOUT_WINDOW_screen.iH); - aRect.SetRect( 0, 0, 0, 0 ); + rect.LayoutRect( TRect( 0, 0, 0, 0 ), AknLayoutScalable_Avkon::Screen() ); + TRect screenRect( rect.Rect() ); // No stacon pane active etc. cheking is done here before the switch-case so that we can // have slightly better performance for some other lookups (e.g. screen). - switch (aParam) + switch ( aParam ) { case EScreen: + { aRect = screenRect; return ETrue; + } case EApplicationWindow: - rect.LayoutRect( - screenRect, - AknLayoutScalable_Avkon::application_window( 0 ) ); - aRect = rect.Rect(); + { + // Application window is always the same as screen, so skip + // reading the application_window from layout data for + // performance improvement. + aRect = screenRect; return ETrue; + } case EStatusPane: { @@ -3433,118 +3441,126 @@ if ( statusPane ) { TInt currentStatusPaneLayoutResId = statusPane->CurrentLayoutResId(); - - if ( AknStatuspaneUtils::StaconPaneActive() ) + + TAknWindowComponentLayout parent; + + switch ( currentStatusPaneLayoutResId ) { - // flat status pane in landscape mode is the whole top pane area - if ( currentStatusPaneLayoutResId == R_AVKON_STATUS_PANE_LAYOUT_USUAL_FLAT || - currentStatusPaneLayoutResId == R_AVKON_STATUS_PANE_LAYOUT_IDLE_FLAT ) + case R_AVKON_STATUS_PANE_LAYOUT_USUAL_WITH_BATTERY_PANE: + case R_AVKON_STATUS_PANE_LAYOUT_USUAL: + case R_AVKON_STATUS_PANE_LAYOUT_POWER_OFF_RECHARGE: + case R_AVKON_STATUS_PANE_LAYOUT_USUAL_MIRRORED: + case R_AVKON_STATUS_PANE_LAYOUT_POWER_OFF_RECHARGE_MIRRORED: + case R_AVKON_STATUS_PANE_LAYOUT_VT: + case R_AVKON_STATUS_PANE_LAYOUT_VT_MIRRORED: + case R_AVKON_STATUS_PANE_LAYOUT_USUAL_EXT: + default: + { + parent = AknLayoutScalable_Avkon::area_top_pane( 0 ); + line = AknLayoutScalable_Avkon::status_pane( 0 ); + break; + } + + case R_AVKON_STATUS_PANE_LAYOUT_IDLE: + case R_AVKON_STATUS_PANE_LAYOUT_IDLE_MIRRORED: + { + parent = AknLayoutScalable_Avkon::area_top_pane( 7 ); + line = AknLayoutScalable_Avkon::status_idle_pane(); // idle status pane + break; + } + + case R_AVKON_STATUS_PANE_LAYOUT_SMALL: + case R_AVKON_STATUS_PANE_LAYOUT_SMALL_WITH_SIGNAL_PANE: + case R_AVKON_STATUS_PANE_LAYOUT_SMALL_WITH_SIGNAL_PANE_MIRRORED: + { + // Small status pane is the whole top area. + parent = AknLayoutScalable_Avkon::application_window( 0 ); + if ( Layout_Meta_Data::IsLandscapeOrientation() && + AknLayoutUtils::CbaLocation() == AknLayoutUtils::EAknCbaLocationBottom ) + { + line = AknLayoutScalable_Avkon::area_top_pane( 2 ); + } + else + { + line = AknLayoutScalable_Avkon::area_top_pane( 1 ); + } + + break; + } + + case R_AVKON_STATUS_PANE_LAYOUT_USUAL_FLAT: + case R_AVKON_STATUS_PANE_LAYOUT_IDLE_FLAT: // fallthrough { - rect.LayoutRect( screenRect, AknLayoutScalable_Avkon::area_top_pane(8) ); // flat area_top_pane in lsc + if ( Layout_Meta_Data::IsLandscapeOrientation() ) + { + parent = AknLayoutScalable_Avkon::area_top_pane( 2 ); + } + else + { + parent = AknLayoutScalable_Avkon::area_top_pane( 6 ); + } + line = AknLayoutScalable_Avkon::status_pane( 1 ); // flat status pane + break; + } + + case R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL: + case R_AVKON_WIDESCREEN_PANE_LAYOUT_IDLE: // fallthrough + { + parent = AknLayoutScalable_Avkon::area_top_pane( 8 ); + line = AknLayoutScalable_Avkon::status_pane( 1 ); + break; + } + + case R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL_FLAT: + case R_AVKON_WIDESCREEN_PANE_LAYOUT_IDLE_FLAT: // fallthrough + { + parent = AknLayoutScalable_Avkon::area_top_pane( 2 ); + line = AknLayoutScalable_Avkon::status_pane( 1 ); + break; + } + + case R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL_FLAT_NO_SOFTKEYS: + case R_AVKON_WIDESCREEN_PANE_LAYOUT_IDLE_FLAT_NO_SOFTKEYS: // fallthrough + { + parent = AknLayoutScalable_Avkon::area_top_pane( 20 ); + line = AknLayoutScalable_Avkon::status_pane( 5 ); + break; + } + + case R_AVKON_STACON_PANE_LAYOUT_USUAL_SOFTKEYS_RIGHT: + case R_AVKON_STACON_PANE_LAYOUT_USUAL_SOFTKEYS_LEFT: + case R_AVKON_STACON_PANE_LAYOUT_EMPTY_SOFTKEYS_RIGHT: + case R_AVKON_STACON_PANE_LAYOUT_EMPTY_SOFTKEYS_LEFT: + case R_AVKON_STACON_PANE_LAYOUT_IDLE_SOFTKEYS_RIGHT: + case R_AVKON_STACON_PANE_LAYOUT_IDLE_SOFTKEYS_LEFT: + { + rect.LayoutRect( + screenRect, + TAknWindowComponentLayout::Compose( + AknLayoutScalable_Avkon::area_top_pane( 2 ), + AknLayoutScalable_Avkon::stacon_top_pane() ) ); aRect = rect.Rect(); + + rect.LayoutRect( + aRect, + AknLayoutScalable_Avkon::control_top_pane_stacon( 0 ) ); + + // Status pane top = stacon top - control pane top. + aRect.iBr.iX = rect.Rect().iTl.iX; return ETrue; - } - else - { - rect.LayoutRect( screenRect, AknLayoutScalable_Avkon::area_top_pane(2) ); // classic area_top_pane in lsc - aRect = rect.Rect(); - rect.LayoutRect( aRect, AknLayoutScalable_Avkon::stacon_top_pane() ); - aRect = rect.Rect(); - rect.LayoutRect( aRect, AknLayoutScalable_Avkon::control_top_pane_stacon(0) ); - aRect.iBr.iX = rect.Rect().iTl.iX; // Status pane top = stacon top - control pane top. - return ETrue; } } - else - { - TAknWindowComponentLayout parent; - - switch ( currentStatusPaneLayoutResId ) - { - case R_AVKON_STATUS_PANE_LAYOUT_USUAL_WITH_BATTERY_PANE: - case R_AVKON_STATUS_PANE_LAYOUT_USUAL: - case R_AVKON_STATUS_PANE_LAYOUT_POWER_OFF_RECHARGE: - case R_AVKON_STATUS_PANE_LAYOUT_USUAL_MIRRORED: - case R_AVKON_STATUS_PANE_LAYOUT_POWER_OFF_RECHARGE_MIRRORED: - case R_AVKON_STATUS_PANE_LAYOUT_VT: - case R_AVKON_STATUS_PANE_LAYOUT_VT_MIRRORED: - case R_AVKON_STATUS_PANE_LAYOUT_USUAL_EXT: - default: - parent = AknLayoutScalable_Avkon::area_top_pane(0); - line = AknLayoutScalable_Avkon::status_pane(0); // classic status pane - break; - - case R_AVKON_STATUS_PANE_LAYOUT_IDLE: - case R_AVKON_STATUS_PANE_LAYOUT_IDLE_MIRRORED: - parent = AknLayoutScalable_Avkon::area_top_pane(7); - line = AknLayoutScalable_Avkon::status_idle_pane(); // idle status pane - break; - - case R_AVKON_STATUS_PANE_LAYOUT_SMALL: - case R_AVKON_STATUS_PANE_LAYOUT_SMALL_WITH_SIGNAL_PANE: - case R_AVKON_STATUS_PANE_LAYOUT_SMALL_WITH_SIGNAL_PANE_MIRRORED: - // Small status pane is the whole top area. - parent = AknLayoutScalable_Avkon::application_window(0); - if ( Layout_Meta_Data::IsLandscapeOrientation() && - AknLayoutUtils::CbaLocation() == AknLayoutUtils::EAknCbaLocationBottom ) - { - line = AknLayoutScalable_Avkon::area_top_pane(2); - } - else - { - line = AknLayoutScalable_Avkon::area_top_pane(1); - } - - break; - - case R_AVKON_STATUS_PANE_LAYOUT_USUAL_FLAT: - case R_AVKON_STATUS_PANE_LAYOUT_IDLE_FLAT: // fallthrough - { - if ( Layout_Meta_Data::IsLandscapeOrientation() && - Layout_Meta_Data::IsPenEnabled() ) - { - parent = AknLayoutScalable_Avkon::area_top_pane( 2 ); - } - else - { - parent = AknLayoutScalable_Avkon::area_top_pane( 6 ); - } - line = AknLayoutScalable_Avkon::status_pane( 1 ); // flat status pane - break; - } - - case R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL: - case R_AVKON_WIDESCREEN_PANE_LAYOUT_IDLE: // fallthrough - { - parent = AknLayoutScalable_Avkon::area_top_pane( 8 ); - line = AknLayoutScalable_Avkon::status_pane( 1 ); - break; - } - - case R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL_FLAT: - case R_AVKON_WIDESCREEN_PANE_LAYOUT_IDLE_FLAT: // fallthrough - { - parent = AknLayoutScalable_Avkon::area_top_pane( 2 ); - line = AknLayoutScalable_Avkon::status_pane( 1 ); - break; - } - - case R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL_FLAT_NO_SOFTKEYS: - case R_AVKON_WIDESCREEN_PANE_LAYOUT_IDLE_FLAT_NO_SOFTKEYS: // fallthrough - { - parent = AknLayoutScalable_Avkon::area_top_pane( 20 ); - line = AknLayoutScalable_Avkon::status_pane( 5 ); - break; - } - } - - rect.LayoutRect( screenRect, TAknWindowComponentLayout::Compose( parent, line ) ); - aRect = rect.Rect(); - } + + rect.LayoutRect( + screenRect, + TAknWindowComponentLayout::Compose( parent, line ) ); + aRect = rect.Rect(); return ETrue; } - return EFalse; + + return EFalse; // no status pane } + case EPopupParent: { if ( screenRect.iBr.iX == 640 && screenRect.iBr.iY == 360 ) @@ -3578,6 +3594,7 @@ return LayoutMetricsRect( EMainPane, aRect ); } } + case EMainPane: { TInt variety = 3; // classic main pane variety by default @@ -3626,30 +3643,24 @@ case R_AVKON_STATUS_PANE_LAYOUT_VT_MIRRORED: case R_AVKON_STATUS_PANE_LAYOUT_USUAL_EXT: { - // main pane variety for usual portrait main pane with - // 'area_top_pane' and 'area_bottom_pane' -#ifdef RD_SCALABLE_UI_V2 - variety = 3; - if ( iAvkonAppUi && iAvkonAppUi->TouchPane() && iAvkonAppUi->TouchPane()->IsVisible() ) + // Main pane variety for usual portrait main pane with + // 'area_top_pane' and 'area_bottom_pane'. + variety = 3; + + if ( iAvkonAppUi ) { - variety = 15; - } - else if ( iAvkonAppUi && iAvkonAppUi->CurrentFixedToolbar() ) - { - if ( AknLayoutUtils::PenEnabled() ) - { - CAknToolbar* toolbar = iAvkonAppUi->CurrentFixedToolbar(); - TInt flags = toolbar->ToolbarFlags(); - if ( flags & KAknToolbarFixed && !( flags & KAknToolbarDefault ) - && toolbar->IsShown() ) + CAknToolbar* toolbar = iAvkonAppUi->CurrentFixedToolbar(); + if ( toolbar ) + { + TInt flags = toolbar->ToolbarFlags(); + if ( flags & KAknToolbarFixed && + !( flags & KAknToolbarDefault ) && + toolbar->IsShown() ) { variety = 18; } - } + } } -#else - variety = 3; -#endif // RD_SCALABLE_UI_V2 } break; @@ -3684,19 +3695,10 @@ { if ( Layout_Meta_Data::IsLandscapeOrientation() ) { - if ( PenEnabled() ) - { - // main pane variety with small status pane in landscape - // mode with 'area_top_pane', 'area_bottom_pane' and - // touch pane - variety = 4; - } - else - { - // main pane variety with 'area_top_pane' and - // 'area_bottom_pane' in landscape (without touch pane) - variety = 9; - } + // main pane variety with small status pane in landscape + // mode with 'area_top_pane', 'area_bottom_pane' and + // touch pane + variety = 4; } else { @@ -3704,8 +3706,9 @@ // (with 'area_top_pane' and 'area_bottom_pane'). variety = 6; } + + break; } - break; case R_AVKON_STATUS_PANE_EMPTY: case R_AVKON_STATUS_PANE_LAYOUT_EMPTY: @@ -3781,9 +3784,11 @@ break; } - rect.LayoutRect( screenRect, TAknWindowComponentLayout::Compose( - AknLayoutScalable_Avkon::application_window( 0 ), - AknLayoutScalable_Avkon::main_pane( variety ) ) ); + // Application window is always the same as screen, so use screen + // as parent and skip reading the application_window from layout + // data for performance improvement. + rect.LayoutRect( screenRect, + AknLayoutScalable_Avkon::main_pane( variety ) ); aRect = rect.Rect(); return ETrue; @@ -6548,13 +6553,19 @@ else { // On portrait popup is located on top of the control pane if it doesn't - // have softkeys visible. + // have softkeys visible and there's enough room i.e. the popup still + // fits to the screen. if ( !aSoftkeysVisible ) { TSize controlPane; AknLayoutUtils::LayoutMetricsSize( AknLayoutUtils::EControlPane, controlPane ); y -= controlPane.iHeight; + + if ( y < 0 ) + { + y = 0; + } } } @@ -6586,16 +6597,26 @@ // ----------------------------------------------------------------------------- -// AknListUtils::DrawSeparator +// Draws the separator line between list items. // ----------------------------------------------------------------------------- // EXPORT_C void AknListUtils::DrawSeparator( CGraphicsContext& aGc, - const TRect& aRect, const TRgb& aColor ) + const TRect& aRect, + const TRgb& aColor, + MAknsSkinInstance* aSkin ) { aGc.SetBrushStyle( CGraphicsContext::ENullBrush ); aGc.SetPenStyle( CGraphicsContext::ESolidPen ); TRgb color( aColor ); - color.SetAlpha( 32 ); + + // Get the alpha value from skin. + TRgb colorFromSkin; + TInt err = AknsUtils::GetCachedColor( aSkin ? aSkin : AknsUtils::SkinInstance(), + colorFromSkin, + KAknsIIDQsnLineColors, + EAknsCIQsnLineColorsCG15 ); + + color.SetAlpha( !err ? colorFromSkin.Red() : KDefaultSeparatorAlpha ); aGc.SetPenColor( color ); TRect lineRect( aRect ); @@ -6603,7 +6624,7 @@ lineRect.Shrink( gap, 0 ); lineRect.Move( 0, -1 ); aGc.DrawLine( TPoint( lineRect.iTl.iX, lineRect.iBr.iY ), - TPoint( lineRect.iBr.iX, lineRect.iBr.iY ) ); + TPoint( lineRect.iBr.iX, lineRect.iBr.iY ) ); } // End of file diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/AvKon/src/eikfrlb.cpp --- a/uifw/AvKon/src/eikfrlb.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/AvKon/src/eikfrlb.cpp Mon Mar 15 12:41:34 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" @@ -1420,7 +1420,7 @@ if ( aDrawSeparator && static_cast( control )->ItemsInSingleLine() == 1 ) { - AknListUtils::DrawSeparator( *iGc, aItemTextRect, iTextColor ); + AknListUtils::DrawSeparator( *iGc, aItemTextRect, iTextColor, skin ); } } } diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/AvKon/src/eikfrlbd.cpp --- a/uifw/AvKon/src/eikfrlbd.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/AvKon/src/eikfrlbd.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -2234,7 +2234,6 @@ } } #else - CListBoxView* view = static_cast( iExtension->iControl )->View(); aGc.SetClippingRect( view->ViewRect() ); #endif //RD_UI_TRANSITION_EFFECTS_LIST @@ -3547,8 +3546,8 @@ { iExtension->iMarginRect.BoundingRect( r ); } +#ifdef RD_UI_TRANSITION_EFFECTS_LIST CEikFormattedCellListBox* list = static_cast( iExtension->iControl ); -#ifdef RD_UI_TRANSITION_EFFECTS_LIST MAknListBoxTfxInternal* transApi = CAknListLoader::TfxApiInternal( list->View()->ItemDrawer()->Gc() ); if ( transApi ) diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/AvKon/src/transitionmanager.cpp --- a/uifw/AvKon/src/transitionmanager.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/AvKon/src/transitionmanager.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -438,7 +438,7 @@ iFlags &= ~EffectsEnabled; iCRListen->Listen(); } - else if(!aWait || CServerWait::WaitL()) + else { iFlags |= EffectsEnabled; } diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/AvKon/srcdata/avkon.rss --- a/uifw/AvKon/srcdata/avkon.rss Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/AvKon/srcdata/avkon.rss Mon Mar 15 12:41:34 2010 +0200 @@ -1517,7 +1517,19 @@ bmpfile = AVKON_BITMAP_FILE; states = INDICATOR_STATE { - id = EAknIndicatorStateOn; + id = EAknIndicatorStateAnimate; + icons = INDICATOR_ICON + { + // IR indicator blank image used here to avoid having + // multiple instances of the same icon in the Avkon bitmap + // file. This is ok because the blank image is essentially + // the same for all the animated universal indicators, + // and it won't change. + widebmpid = EMbmAvkonQgn_stat_ir_uni_blank; + widebmpmask = EMbmAvkonQgn_stat_ir_uni_blank_mask; + narrowbmpid = EMbmAvkonQgn_stat_ir_uni_blank; + narrowbmpmask = EMbmAvkonQgn_stat_ir_uni_blank_mask; + }; icons = INDICATOR_ICON { widebmpid = EMbmAvkonQgn_stat_usb_uni; @@ -9808,6 +9820,7 @@ MENU_ITEM { command=EPenInputCmdHwrTraining; txt=qtn_tin_option_menu_training;}, MENU_ITEM { command=EPenInputCmdVITUT; flags=EEikMenuItemDimmed; txt=qtn_input_switcher_itu_t; }, MENU_ITEM { command=EPeninputCmdFSQ; flags=EEikMenuItemDimmed; txt=qtn_input_switcher_fs_qwerty; }, + MENU_ITEM { command=EPeninputCmdHwr; flags=EEikMenuItemDimmed; txt=qtn_input_switcher_hwr; }, MENU_ITEM { command=EFepInputCmdHelp; txt=qtn_tin_option_menu_help; }, MENU_ITEM { command=EAknCmdEditModeEnglish; flags=EEikMenuItemDimmed; txt=qtn_activate_english_mode; } }; diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/EikStd/coctlinc/AknDoubleSpanScrollIndicator.h --- a/uifw/EikStd/coctlinc/AknDoubleSpanScrollIndicator.h Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/EikStd/coctlinc/AknDoubleSpanScrollIndicator.h Mon Mar 15 12:41:34 2010 +0200 @@ -301,6 +301,7 @@ TBool iTransparentBackground; // A flag which tells if we have transparent bg TBool iDrawBackground; // do we draw any background + TBool iForceDrawBackground; // draw background TBool iHandleHighlight; // is handle drag highlight on? diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/EikStd/coctlinc/aknitemactionmenuregister.h --- a/uifw/EikStd/coctlinc/aknitemactionmenuregister.h Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/EikStd/coctlinc/aknitemactionmenuregister.h Mon Mar 15 12:41:34 2010 +0200 @@ -310,6 +310,15 @@ * @return Item action menu register instance. */ static AknItemActionMenuRegister* CreateInstanceL(); + + /** + * Sets constructing menu bar owner and checks if the current is a dialog. + * And when setting the correct menu bar owner from a dialog to NULL + * checking if a correct menubar can be found for the unregistered + * item action menu. + */ + void DoSetConstructingMenuBarOwnerL( MObjectProvider* aMenuBarOwner ); + private: // data /** @@ -371,6 +380,11 @@ MObjectProvider* iMenuBarOwner; /** + * Indicates if current menubar owner is a dialog + */ + TBool iIsConstructingDialog; + + /** * Unregistered menu data. */ RArray iUnregisteredMenus; diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/EikStd/coctlinc/smileydrawer.h --- a/uifw/EikStd/coctlinc/smileydrawer.h Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/EikStd/coctlinc/smileydrawer.h Mon Mar 15 12:41:34 2010 +0200 @@ -83,12 +83,6 @@ void SetPlayTimes( TInt aPlayTimes ){ iPlayTimes = aPlayTimes; }; - void SetVisibleRange( TInt aDocPos, TInt aLength ) - { - iVisibleStart = aDocPos; - iVisibleLength = aLength; - }; - void StartAnimTimerL(); static TInt AnimTimerCallbackL( TAny* aPtr ); void CheckAnimStatusL(); @@ -110,8 +104,6 @@ TRgb iHighlightColor; TInt iPlayTimes; - TInt iVisibleStart; - TInt iVisibleLength; // own CSmileyAsyncDraw* iAsyncDraw; // own diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/EikStd/coctlinc/smileymanager.h --- a/uifw/EikStd/coctlinc/smileymanager.h Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/EikStd/coctlinc/smileymanager.h Mon Mar 15 12:41:34 2010 +0200 @@ -66,7 +66,6 @@ //new functions TBool ConvertTextForSmileyL( TInt aStart, TDes& aText, TBool aStringToCodes = ETrue ); - void SetVisibleRange( TInt aDocPos, TInt aLength ); void DrawIconL( CBitmapContext& aGc, const TRect& aRect, TInt aDocPos ); diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/EikStd/coctlsrc/AknDoubleSpanScrollIndicator.cpp --- a/uifw/EikStd/coctlsrc/AknDoubleSpanScrollIndicator.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/EikStd/coctlsrc/AknDoubleSpanScrollIndicator.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -69,8 +69,8 @@ void CAknDoubleSpanScrollIndicator::Draw(const TRect& /*aRect*/) const { CWindowGc& gc = SystemGc(); + if( iDrawBackground || iForceDrawBackground ) - if(iDrawBackground) { DrawBackground(); } @@ -218,12 +218,29 @@ checkedFieldPosition, checkedFieldSize); + TBool wasEmpty = iBackgroundRect.IsEmpty(); + TBool isEmpty = EFalse; + // If span (max number of items) is zero, then draw only the background if ( checkedScrollSpan == 0 || ( checkedScrollSpan <= checkedWindowSize ) ) { iBackgroundRect = TRect( 0, 0, 0, 0 ); iHandleBackgroundRect = TRect(0,0,0,0); iHandleRect = TRect(0,0,0,0); + iForceDrawBackground = ETrue; // to enable background drawing + isEmpty = ETrue; + } + else + { + iForceDrawBackground = EFalse; + } + if ( wasEmpty != isEmpty || iForceDrawBackground ) + { + DrawDeferred(); + } + + if ( isEmpty ) + { return; } diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/EikStd/coctlsrc/AknToolbar.cpp --- a/uifw/EikStd/coctlsrc/AknToolbar.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/EikStd/coctlsrc/AknToolbar.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -3114,13 +3114,21 @@ aCellPaneRect = RectFromLayout( aGridPaneRect, AknLayoutScalable_Avkon::cell_sctrl_middle_pane( 0, 0, 0 ) ); + + // + // fixing bug: ELJG-7XX8RE + // (Two extra black lines are displayed around toolbar area at first) + // extend the toolbar size by hard code + // + aToolbarRect.iTl.iY -= 1; + aToolbarRect.iBr.iY += 1; } } - else + else { if ( iOrientation == EAknOrientationHorizontal ) - { - variety = 4; + { + variety = 4; aToolbarRect = RectFromLayout( aMainPaneRect, AknLayoutScalable_Avkon::popup_toolbar_window( variety ) ); diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/EikStd/coctlsrc/EIKCOLIB.CPP --- a/uifw/EikStd/coctlsrc/EIKCOLIB.CPP Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/EikStd/coctlsrc/EIKCOLIB.CPP Mon Mar 15 12:41:34 2010 +0200 @@ -1,5 +1,5 @@ /* -* Copyright (c) 1997-1999 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" @@ -523,15 +523,9 @@ CCoeEnv* env = CCoeEnv::Static(); TRect rect = LafAppUi::ClientRect( *env, *this ); -#ifdef RD_SCALABLE_UI_V2 - if ( TouchPane() ) - { - TouchPane()->ReduceRect( rect ); - } - CAknToolbar* toolbar = CurrentFixedToolbar(); - // reduce fixed toolbar's area + // Reduce fixed toolbar's area. if ( toolbar ) { TInt flags = toolbar->ToolbarFlags(); @@ -542,35 +536,37 @@ } } - // recaculate the client rect is splitinput is enabled. + // Recalculate the client rect is split input is enabled. if ( iExtension && iExtension->iSplitInput ) { TInt inputTop = rect.iBr.iY; TAknLayoutRect splitwnd; - TRect screenRect ; - AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EScreen, screenRect ); + TRect screenRect ; + AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EScreen, screenRect ); if ( Layout_Meta_Data::IsLandscapeOrientation() ) { - splitwnd.LayoutRect( screenRect, AknLayoutScalable_Avkon::popup_fep_vkbss_window (0).LayoutLine() ); - TRect wndRc = splitwnd.Rect(); - inputTop = wndRc.iTl.iY; + splitwnd.LayoutRect( + screenRect, + AknLayoutScalable_Avkon::popup_fep_vkbss_window( 0 ).LayoutLine() ); } else { - splitwnd.LayoutRect( screenRect, AknLayoutScalable_Avkon::popup_fep_ituss_window(0).LayoutLine() ); - TRect wndRc = splitwnd.Rect(); - inputTop = wndRc.iTl.iY; + splitwnd.LayoutRect( + screenRect, + AknLayoutScalable_Avkon::popup_fep_ituss_window( 0 ).LayoutLine() ); } + + TRect wndRc( splitwnd.Rect() ); + inputTop = wndRc.iTl.iY; rect.iBr.iY = rect.iBr.iY > inputTop ? inputTop : rect.iBr.iY; rect.iTl.iY = 0; } -#endif // RD_SCALABLE_UI_V2 - return rect; } + void CEikAppUiFactory::ReadAppInfoResourceL(TInt aResourceFileOffset, CEikAppUi* aAppUi) { const TInt resourceFileOffset=(aResourceFileOffset)? aResourceFileOffset : aAppUi->Application()->ResourceFileOffset(); diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/EikStd/coctlsrc/EIKEDWIN.CPP --- a/uifw/EikStd/coctlsrc/EIKEDWIN.CPP Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/EikStd/coctlsrc/EIKEDWIN.CPP Mon Mar 15 12:41:34 2010 +0200 @@ -572,7 +572,6 @@ TRAPD(error,iEdwin.iText->UpdateFepInlineTextL(paragraphContainingStartPositionOfInlineTextHasChangedFormat,numberOfCharactersSuccessfullyDeleted,numberOfCharactersSuccessfullyInserted,iPositionOfInsertionPointInDocument,iPositionOfInlineTextInDocument+aPositionOfInsertionPointInInlineText,aNewInlineText)); iLengthOfInlineText=numberOfCharactersSuccessfullyInserted; UpdateTextViewAfterChangeInInlineTextL(paragraphContainingStartPositionOfInlineTextHasChangedFormat,numberOfCharactersSuccessfullyDeleted,numberOfCharactersSuccessfullyInserted,error); - iEdwin.ReportEdwinEventL( MEikEdwinObserver::EEventTextUpdate ); } void CEikEdwinFepSupport::SetInlineEditingCursorVisibilityL(TBool aCursorVisibility) @@ -1042,6 +1041,7 @@ iCenRep->Get(KAknFepClearDirection, iClearDirection); } iSmileyWrap = new ( ELeave ) CSmileyCustomWrap; + iSkinInstance = AknsUtils::SkinInstance(); } void CEikEdwin::CEikEdwinExtension::CreateFormExtendedInterfaceProviderIfNeededL() @@ -2772,7 +2772,10 @@ } Window().RequestPointerRepeatEvent(KPointerRepeatRate,rect); navigation = ETrue; - iEdwinExtension->iThumbPos = KErrNotFound; + if ( iLayout && !iLayout->IsFormattingBand() ) + { + iEdwinExtension->iThumbPos = KErrNotFound; + } } else if (iEdwinInternalFlags&EDragDouble) { @@ -3379,12 +3382,6 @@ for (TInt ii=0;iiHandleEdwinEventL(this,aEventType); } - if ( aEventType == MEikEdwinObserver::EEventScroll || - aEventType == MEikEdwinObserver::EEventNavigation - ) - { - HandleScrollForSmileyL(); - } if ( aEventType == MEikEdwinObserver::EEventTextUpdate ) { iEdwinExtension->iExtendedInputCapabilities->ReportEventL( @@ -5681,6 +5678,7 @@ aVertModel.iThumbSpan = bottomPos - topPos; aVertModel.iScrollSpan = totalChars; aVertModel.iThumbPosition = topPos; + iEdwinExtension->iThumbPos = topPos; } return; } @@ -8259,8 +8257,8 @@ return ( iEdwinExtension->iSmiley != NULL ); } -void CEikEdwin::DrawSmileyInTextL( CBitmapContext& aGc, CFont& aFont, - const TDesC& aText, const TPoint& aPt ) +void CEikEdwin::DrawSmileyInTextL( RRegion& rgn, const TRect& aDrawRect, + CBitmapContext& aGc, CFont& aFont, const TDesC& aText, const TPoint& aPt ) { TRect viewRect( AdjustedViewRect() ); TInt topY( aPt.iY - aFont.AscentInPixels() ); @@ -8290,8 +8288,11 @@ if ( CSmileyManager::IsSmileyCode( text[i] ) ) { TInt x( pt.iX + aFont.TextWidthInPixels( text.Left( i ) ) ); - TRect rect( x, topY, x + smileyWidth, bottomY ); - iEdwinExtension->iSmiley->DrawIconL( aGc, rect, i + pos ); + TRect clipRect( x, aDrawRect.iTl.iY, x + smileyWidth, + aDrawRect.iBr.iY ); + rgn.SubRect( clipRect, NULL ); + TRect iconRect( x, topY, x + smileyWidth, bottomY ); + iEdwinExtension->iSmiley->DrawIconL( aGc, iconRect, i + pos ); } } } @@ -8476,23 +8477,6 @@ CleanupStack::PopAndDestroy( buf ); } -void CEikEdwin::HandleScrollForSmileyL() - { - if ( !iEdwinExtension->iSmiley ) - { - return; - } - TCursorSelection select( GetVisibleTextRangeL() ); - if ( select.LowerPos() != iEdwinExtension->iVisibleRange.LowerPos() || - select.HigherPos() != iEdwinExtension->iVisibleRange.HigherPos() ) - { - iEdwinExtension->iVisibleRange.iCursorPos = select.iCursorPos; - iEdwinExtension->iVisibleRange.iAnchorPos = select.iAnchorPos; - } - iEdwinExtension->iSmiley->SetVisibleRange( select.LowerPos(), - select.Length() ); - } - TBool CEikEdwin::AdjustCursorForSmileyL( TInt aOldCursor, TCursorSelection& aSelect ) { TBool ret( EFalse ); @@ -8518,23 +8502,6 @@ return TRect( viewRect.iTl.iX, aRect.iTl.iY, viewRect.iBr.iX, aRect.iBr.iY ); } -void CEikEdwin::GetClipRegionForSmiley( RRegion& rgn, CFont& aFont, - const TDesC& aText, const TPoint& aPt, const TRect& aDrawRect ) const - { - TInt smileyWidth( aFont.TextWidthInPixels( KSmileyString ) ); - TInt topY( aDrawRect.iTl.iY ); - TInt bottomY( aDrawRect.iBr.iY ); - for ( TInt i( 0 ); i < aText.Length(); i++ ) - { - if ( CSmileyManager::IsSmileyCode( aText[i] ) ) - { - TInt x( aPt.iX + aFont.TextWidthInPixels( aText.Left( i ) ) ); - TRect rect( x, topY, x + smileyWidth, bottomY ); - rgn.SubRect( rect, NULL ); - } - } - } - TBool CEikEdwin::AdjustCursorPosByMovementL( TCursorPosition::TMovementType aMovement, TBool aSelect ) { @@ -8561,21 +8528,34 @@ return ret; } -void CEikEdwin::SetSelectionVisibilityL( TBool isVisable ) - { - iTextView->SetSelectionVisibilityL(isVisable); +void CEikEdwin::SetSelectionVisibilityL( TBool aIsVisable ) + { + if ( iEdwinExtension->iSmiley && !aIsVisable ) + { + iTextView->SetSelectionVisibilityL( aIsVisable ); + HandleSelectionForSmiley( TCursorSelection( 0, 0 ) ); + } + else + { + if ( iEdwinExtension->iSmiley ) + { + HandleSelectionForSmiley( Selection() ); + } + iTextView->SetSelectionVisibilityL( aIsVisable ); + } + CAknEdwinState*edwinState = EditorState(); - if( !edwinState ) - return; - if(isVisable) - { - SetAknEditorFlags( edwinState->Flags() | EAknEditorFlagSelectionVisible ); - } - else - { - HandleSelectionForSmiley( TCursorSelection( 0, 0 ) ); - SetAknEditorFlags( edwinState->Flags() & ~EAknEditorFlagSelectionVisible ); - } + if ( edwinState ) + { + if ( aIsVisable ) + { + SetAknEditorFlags( edwinState->Flags() | EAknEditorFlagSelectionVisible ); + } + else + { + SetAknEditorFlags( edwinState->Flags() & ~EAknEditorFlagSelectionVisible ); + } + } return; } TBool CEikEdwin::IsSelectionVisible() @@ -8793,6 +8773,50 @@ } +// --------------------------------------------------------------------------- +// CEikEdwin::DrawViewBackground +// --------------------------------------------------------------------------- +// +void CEikEdwin::DrawViewBackground( TBool aStart ) const + { + CWindowGc& gc = SystemGc(); + RWindow& window = Window(); + + if ( aStart ) + { + TRect viewRect( iTextView->ViewRect() ); + window.Invalidate( viewRect ); + window.BeginRedraw( viewRect ); + gc.Activate( window ); + + if ( !AknsDrawUtils::DrawBackground( + iEdwinExtension->iSkinInstance, + SkinBackgroundControlContext(), + this, + gc, + viewRect.iTl, + viewRect, + KAknsDrawParamNoClearUnderImage ) ) + { + gc.SetBrushStyle( CGraphicsContext::ESolidBrush ); + gc.SetPenStyle( CGraphicsContext::ESolidPen ); + + TRgb dummyColor; + TRgb backgroundColor = EditorBackgroundColor( dummyColor ); + + gc.SetBrushColor( backgroundColor ); + gc.SetPenColor( backgroundColor ); + gc.DrawRect( iTextView->ViewRect() ); + } + } + else + { + gc.Deactivate(); + window.EndRedraw(); + } + } + + void CEikEdwin::HandleSelectionForSmiley( TCursorSelection aSelect ) { if ( !iEdwinExtension->iSmiley ) diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/EikStd/coctlsrc/EIKLBX.CPP --- a/uifw/EikStd/coctlsrc/EIKLBX.CPP Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/EikStd/coctlsrc/EIKLBX.CPP Mon Mar 15 12:41:34 2010 +0200 @@ -944,6 +944,7 @@ { EnableHighlight( EFalse ); iListBox.iView->DrawItem( iLongTappedItem ); + iListBox.iView->SetCurrentItemIndex( 0 ); iLongTappedItem = KErrNotFound; } } @@ -2098,7 +2099,19 @@ || iListBoxExt && iListBoxExt->iPhysics && currentItemIndex == ( topItemIndex + numberOfItems - 1 ) ) { - newTopItemIndex = iView->CalcNewTopItemIndexSoItemIsVisible( currentItemIndex ); + if ( iListBoxExt && iListBoxExt->iSingleClickEnabled ) + { + // is single click is enabled, highlight must also be visible + if ( iListBoxExt->CollectionState() + & MAknCollection::EStateHighlightVisible ) + { + newTopItemIndex = iView->CalcNewTopItemIndexSoItemIsVisible( currentItemIndex ); + } + } + else + { + newTopItemIndex = iView->CalcNewTopItemIndexSoItemIsVisible( currentItemIndex ); + } } else { @@ -3162,7 +3175,8 @@ EXPORT_C void CEikListBox::HandleItemAdditionL() { _AKNTRACE_FUNC_ENTER; - //fix the bug EGGO-7SQA4S and EVSG-7TD9WZ + __ASSERT_DEBUG( iView, Panic( EEikPanicListBoxNoView ) ); + //fix the bug EGGO-7SQA4S and EVSG-7TD9WZ TInt curItemIndex = iView->CurrentItemIndex(); if(curItemIndex >= 0 && curItemIndex < iModel->NumberOfItems() ) { @@ -5795,6 +5809,11 @@ { Window().Invalidate( TRect( View()->ItemPos(index), View()->ItemSize() ) ); + if( iItemDrawer->Flags() & + CListItemDrawer::ESingleClickDisabledHighlight ) + { + iView->SetCurrentItemIndex( 0 ); + } } break; } @@ -6340,7 +6359,7 @@ TBool blockEvent = EFalse; - TBool allowDragEvent( ( iListBoxFlags & ELeftDownInViewRect ) && iSBFrame && !iListBoxExt->iScrollingDisabled ); + TBool allowDragEvent( ( iListBoxFlags & ELeftDownInViewRect ) && !iListBoxExt->iScrollingDisabled ); switch ( aPointerEvent.iType ) diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/EikStd/coctlsrc/EIKMENUP.CPP --- a/uifw/EikStd/coctlsrc/EIKMENUP.CPP Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/EikStd/coctlsrc/EIKMENUP.CPP Mon Mar 15 12:41:34 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" @@ -2481,13 +2481,8 @@ _AKNTRACE( "previousTopItem = %d", previousTopItem ); _AKNTRACE( "previousSelectedItem = %d", previousSelectedItem ); - ActivateGc(); - CWindowGc& gc = SystemGc(); - PrepareGcForDrawingItems( gc ); - - // Scrollers top item index must be updated first because setting selected - // item results in animation redraw (which requires knowledge about the - // current top item). + SetSelectedItem( aNewSelectedItem ); + if ( aNewSelectedItem >= 0 ) { ScrollToMakeItemVisible( aNewSelectedItem ); @@ -2497,6 +2492,10 @@ ScrollToMakeItemVisible( 0 ); } + ActivateGc(); + CWindowGc& gc = SystemGc(); + PrepareGcForDrawingItems( gc ); + TInt topItem = iScroller->TopItemIndex(); TInt bottomItem = topItem + NumberOfItemsThatFitInView(); if( bottomItem > NumberOfItemsInPane() ) @@ -2512,7 +2511,6 @@ DrawItem( gc, topItem, ERemoveHighlight ); DrawItem( gc, (bottomItem-1), ERemoveHighlight ); } - SetSelectedItem( aNewSelectedItem ); PrepareHighlightFrame(); @@ -2529,32 +2527,6 @@ DrawItem( gc, aNewSelectedItem, EDrawHighlight ); } } - else - { - /*TBool skipHighlight = EFalse; - - if (iExtension && iExtension->iSct && aNewSelectedItem == 0 && - previousSelectedItem > 1) - { - skipHighlight = ETrue; - } - - for( TInt i = topItem; iViewPositionChanged( iExtension->iViewPosition ); -// UpdateScrollBarThumbs(); - } DeactivateGc(); @@ -2718,8 +2690,10 @@ if ( !drawingInitiated && !iExtension->iFullRedraw ) { - window.Invalidate( itemRect ); - window.BeginRedraw( itemRect ); + TRect drawRect( itemRect ); + drawRect.Intersection( iExtension->iItemAreaRect ); + window.Invalidate( drawRect ); + window.BeginRedraw( drawRect ); } MAknsSkinInstance* skin = AknsUtils::SkinInstance(); @@ -2982,7 +2956,7 @@ // don't draw separator line for the last item if ( drawSeparator ) { - AknListUtils::DrawSeparator( aGc, itemRect, textColor ); + AknListUtils::DrawSeparator( aGc, itemRect, textColor, skin ); } if ( !drawingInitiated && !iExtension->iFullRedraw ) @@ -4019,12 +3993,17 @@ _AKNTRACE( "[%s]", "TPointerEvent::EButton1Up" ); if ( !innerRect.Contains( aPointerEvent.iPosition ) ) { + TBool highlightWasEnabled = iExtension->HighlightEnabled(); // remove highlight in case highlight is outside of menu pane iExtension->EnableHighlight( EFalse ); if ( iOwner ) { RepaintHighlight(); } + else if ( highlightWasEnabled ) + { + DrawItem( SelectedItem(), ENoHighlight ); + } } if ( iOwner && !innerRect.Contains( aPointerEvent.iPosition ) && @@ -5159,13 +5138,13 @@ iScroller->SetTopItemIndex( newTop ); _AKNTRACE( "newTop = %d", newTop ); - // Menu moved with keys, update panning/flicking data iExtension->iListTopIndex = iScroller->TopItemIndex() * iItemHeight; - iExtension->iViewPosition.iY = - iExtension->iListTopIndex + iExtension->iViewHeight / 2; + TPoint newPosition( iExtension->iViewPosition ); + newPosition.iY = iExtension->iListTopIndex + iExtension->iViewHeight / 2; iExtension->SetOffset( 0 ); - + iExtension->ViewPositionChanged( newPosition ); + _AKNTRACE( "iExtension->iListTopIndex = %d", iExtension->iListTopIndex ); _AKNTRACE( "iExtension->iViewPosition.iY = %d", iExtension->iViewPosition.iY ); _AKNTRACE( "[%s]", "iExtension->SetOffset( 0 )" ); @@ -5359,12 +5338,6 @@ TRect rect( CalculateSizeAndPosition() ); SetExtent( rect.iTl, rect.Size() ); - TRAP_IGNORE( DoUpdateScrollBarL() ); - - UpdateBackgroundContext( Rect() ); - PrepareHighlightFrame(); - SetCascadedIconSize(); - //Initialize physics engine if ( iExtension->iPhysics ) { @@ -5372,9 +5345,14 @@ iExtension->iListTopIndex = iScroller->TopItemIndex() * iItemHeight; iExtension->iViewPosition.iY = iExtension->iListTopIndex + iExtension->iViewHeight / 2; - iExtension->ViewPositionChanged( iExtension->iViewPosition ); - } - + } + + TRAP_IGNORE( DoUpdateScrollBarL() ); + + UpdateBackgroundContext( Rect() ); + PrepareHighlightFrame(); + SetCascadedIconSize(); + if ( iCascadeMenuPane ) { iCascadeMenuPane->HandleResourceChange( aType ); @@ -6403,6 +6381,15 @@ EXPORT_C void CEikMenuPane::SetItemSpecific( TInt aCommandId, TBool aItemSpecific ) { + if ( !iExtension ) + { + TRAPD( err, CheckCreateExtensionL() ); + if ( err ) + { + return; + } + } + if ( iExtension->iFlags.IsSet( CEikMenuPaneExtension::ESingleClickEnabled ) ) { diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/EikStd/coctlsrc/EikCcpu.cpp --- a/uifw/EikStd/coctlsrc/EikCcpu.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/EikStd/coctlsrc/EikCcpu.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -25,10 +25,40 @@ #include #include #include -const TInt ELeftSoftkeyIndex = 0; -const TInt ERightSoftkeyIndex = 2; -const TInt ENullCommandId = -1; +const TInt KLeftSoftkeyIndex = 0; +const TInt KRightSoftkeyIndex = 2; +const TInt KNullCommandId = -1; + +/** +* Internal extension class for CAknCcpuSupport. +* +* @since 9.2 +* +* @internal +*/ +NONSHARABLE_CLASS( CAknCcpuSupportExtension ) : public CBase + { +public: // Construction and destruction + CAknCcpuSupportExtension(); + ~CAknCcpuSupportExtension(); + +public: // Data + TBool iIsCbaEmded; + // Owned + CEikButtonGroupContainer* iCba; + // not owned + CEikButtonGroupContainer* iDialogCba; + }; + +CAknCcpuSupportExtension::CAknCcpuSupportExtension() + { + } + +CAknCcpuSupportExtension::~CAknCcpuSupportExtension() + { + delete iCba; + } // // CAknCcpuSupport @@ -39,77 +69,85 @@ EFocused }; -EXPORT_C CAknCcpuSupport::CAknCcpuSupport(MEikCcpuEditor* aEditor) -: iEditor(aEditor) +EXPORT_C CAknCcpuSupport::CAknCcpuSupport( MEikCcpuEditor* aEditor ) +: iEditor( aEditor ) { } EXPORT_C CAknCcpuSupport::~CAknCcpuSupport() { - if (iMenu) + if ( iMenu ) + { iMenu->RemoveEditMenuObserver(this); - //delete iCba; - TRAP_IGNORE(DeleteCBAL()); - iEikonEnv->EikAppUi()->RemoveFromStack(this); + } + TRAP_IGNORE( DeleteCBAL() ); + iEikonEnv->EikAppUi()->RemoveFromStack( this ); + delete iExtention; } EXPORT_C void CAknCcpuSupport::ConstructL() { - iEikonEnv->EikAppUi()->AddToStackL(this, ECoeStackPriorityFep-1, ECoeStackFlagRefusesFocus); + iExtention = new ( ELeave ) CAknCcpuSupportExtension; + iEikonEnv->EikAppUi()->AddToStackL( this, ECoeStackPriorityFep-1, ECoeStackFlagRefusesFocus ); HandleFocusChangeL(); } EXPORT_C void CAknCcpuSupport::HandleSelectionChangeL() { - if (iCba) + if ( iExtention->iCba ) + { UpdateCBALabelsL(); + } } EXPORT_C void CAknCcpuSupport::HandleFocusChangeL() { TBool focused = iEditor->CcpuIsFocused(); - if (COMPARE_BOOLS(focused, iFlags[EFocused])) + if ( COMPARE_BOOLS( focused, iFlags[EFocused] ) ) + { return; + } - iFlags.Assign(EFocused, focused); + iFlags.Assign( EFocused, focused ); - if (focused) + if ( focused ) { - MopGetObject(iMenu); - - if (iMenu) - iMenu->SetEditMenuObserver(this); + MopGetObject( iMenu ); + if ( iMenu ) + { + iMenu->SetEditMenuObserver( this ); + } } else { - if (iMenu) + if ( iMenu ) { - iMenu->RemoveEditMenuObserver(this); + iMenu->RemoveEditMenuObserver( this ); iMenu = NULL; } } - if (iCba && !focused) + if ( iExtention->iCba && !focused ) { // something has caused loss of focus while shift is pressed - drop everything. - //delete iCba; - //iCba = NULL; DeleteCBAL(); } } -EXPORT_C TKeyResponse CAknCcpuSupport::OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType) +EXPORT_C TKeyResponse CAknCcpuSupport::OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType ) { - if (!iFlags[EFocused]) + if ( !iFlags[EFocused] ) + { return EKeyWasNotConsumed; + } - if (aKeyEvent.iCode == EKeyF21) // FEP generates F21 on long shift press + if ( aKeyEvent.iCode == EKeyF21 ) // FEP generates F21 on long shift press { - if (aType == EEventKey) + if ( aType == EEventKey ) { DeleteCBAL(); CEikAppUi* eikAppUi = (CEikAppUi *)CCoeEnv::Static()->AppUi(); - if( eikAppUi!= NULL && eikAppUi->IsDisplayingDialog() && eikAppUi->TopFocusedControl() ) + if( eikAppUi && eikAppUi->IsDisplayingDialog() && eikAppUi->TopFocusedControl() ) { CEikDialog* dlg = eikAppUi->TopFocusedControl()->MopGetObject( dlg ); if ( dlg ) @@ -121,76 +159,81 @@ CEikCba* dlgcba = static_cast( currentCba->ButtonGroup() ); TUint flags( 0 ); flags |= CEikButtonGroupContainer::EIsEmbedded | CEikButtonGroupContainer::EAddToStack; - iCba = CEikButtonGroupContainer::NewL(CEikButtonGroupContainer::ECba, CEikButtonGroupContainer::EHorizontal, + iExtention->iCba = CEikButtonGroupContainer::NewL( + CEikButtonGroupContainer::ECba, + CEikButtonGroupContainer::EHorizontal, this, R_AVKON_SOFTKEYS_EMPTY, flags ); CEikCba* cba = static_cast( - iCba->ButtonGroup() ); + iExtention->iCba->ButtonGroup() ); - if( ! isCbaEmded ) + if( !iExtention->iIsCbaEmded ) { - currentCba->AddCommandToStackL(ELeftSoftkeyIndex, -1, _L(""), NULL, NULL); - currentCba->AddCommandToStackL(ERightSoftkeyIndex, -1, _L(""), NULL, NULL); + currentCba->AddCommandToStackL( KLeftSoftkeyIndex, -1, KNullDesC, NULL, NULL ); + currentCba->AddCommandToStackL( KRightSoftkeyIndex, -1, KNullDesC, NULL, NULL ); currentCba->ActivateL(); currentCba->DrawNow(); - iDialogCba = currentCba; - isCbaEmded = ETrue; + iExtention->iDialogCba = currentCba; + iExtention->iIsCbaEmded = ETrue; } - cba->SetButtonGroupFlags( ~(EEikCbaFlagTransparent | EEikCbaFlagOutlineFont) ); + 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()); + iExtention->iCba->SetRect( currentCba->Rect()); + iExtention->iCba->SetPosition( + TPoint( dlg->DrawableWindow()->Position().iX, + dlg->DrawableWindow()->Position().iY + dlgRect.Height() - cbaRect.Height() ) ); + iExtention->iCba->SetBoundingRect( dlg->Rect() ); - } - - } - + } + } } - if(iCba == NULL)//if iCba was not create in the above branch but was deleted by DeleteCBA + if( !iExtention->iCba )//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()); + iExtention->iCba = CEikButtonGroupContainer::NewL( + CEikButtonGroupContainer::ECba, + CEikButtonGroupContainer::EHorizontal, + this, R_AVKON_SOFTKEYS_EMPTY ); + iExtention->iCba->SetBoundingRect( iEikonEnv->EikAppUi()->ApplicationRect() ); } UpdateCBALabelsL(); } return EKeyWasConsumed; } - else if (aType == EEventKey && - aKeyEvent.iCode == EKeyF18 && - (aKeyEvent.iModifiers & EModifierCtrl)) + else if ( aType == EEventKey && + aKeyEvent.iCode == EKeyF18 && + ( aKeyEvent.iModifiers & EModifierCtrl ) ) { // FEP requests Ccpu actions with CTRL + F18 // Requested action is encoded in iScanCode. - ProcessCommandL(aKeyEvent.iScanCode); + ProcessCommandL( aKeyEvent.iScanCode ); return EKeyWasConsumed; } - else if ((aKeyEvent.iScanCode == EStdKeyLeftShift || aKeyEvent.iScanCode == EStdKeyRightShift) && aType == EEventKeyUp) + else if ( ( aKeyEvent.iScanCode == EStdKeyLeftShift || + aKeyEvent.iScanCode == EStdKeyRightShift ) && + aType == EEventKeyUp ) { - //delete iCba; - //iCba = NULL; DeleteCBAL(); } return EKeyWasNotConsumed; } -EXPORT_C void CAknCcpuSupport::DynInitMenuPaneL(TInt aResourceId,CEikMenuPane* aMenuPane) +EXPORT_C void CAknCcpuSupport::DynInitMenuPaneL( TInt aResourceId,CEikMenuPane* aMenuPane ) { - if (aResourceId == R_AVKON_EDIT_MODE_MENU || - aResourceId == R_AVKON_EDIT_TEXT_MENU) + if ( aResourceId == R_AVKON_EDIT_MODE_MENU || + aResourceId == R_AVKON_EDIT_TEXT_MENU ) { - aMenuPane->SetItemDimmed(EEikCmdEditCut,!iEditor->CcpuCanCut()); - aMenuPane->SetItemDimmed(EEikCmdEditCopy,!iEditor->CcpuCanCopy()); - aMenuPane->SetItemDimmed(EEikCmdEditPaste,!iEditor->CcpuCanPaste()); + aMenuPane->SetItemDimmed( EEikCmdEditCut,!iEditor->CcpuCanCut() ); + aMenuPane->SetItemDimmed( EEikCmdEditCopy,!iEditor->CcpuCanCopy() ); + aMenuPane->SetItemDimmed( EEikCmdEditPaste,!iEditor->CcpuCanPaste() ); } } -EXPORT_C void CAknCcpuSupport::ProcessCommandL(TInt aCommandId) +EXPORT_C void CAknCcpuSupport::ProcessCommandL( TInt aCommandId ) { - switch (aCommandId) + switch ( aCommandId ) { case EEikCmdEditCut: iEditor->CcpuCutL(); @@ -213,41 +256,49 @@ { TBool change = EFalse; - if (iEditor->CcpuCanCopy()) - change = UpdateCBALabelL(ELeftSoftkeyIndex, EEikCmdEditCopy, R_TEXT_SOFTKEY_COPY) || change; + if ( iEditor->CcpuCanCopy() ) + { + change = UpdateCBALabelL( KLeftSoftkeyIndex, EEikCmdEditCopy, R_TEXT_SOFTKEY_COPY ) || change; + } else - change = UpdateCBALabelL(ELeftSoftkeyIndex, ENullCommandId, R_TEXT_SOFTKEY_EMPTY) || change; + { + change = UpdateCBALabelL( KLeftSoftkeyIndex, KNullCommandId, R_TEXT_SOFTKEY_EMPTY ) || change; + } - if (iEditor->CcpuCanPaste()) - change = UpdateCBALabelL(ERightSoftkeyIndex, EEikCmdEditPaste, R_TEXT_SOFTKEY_PASTE) || change; + if ( iEditor->CcpuCanPaste() ) + { + change = UpdateCBALabelL( KRightSoftkeyIndex, EEikCmdEditPaste, R_TEXT_SOFTKEY_PASTE ) || change; + } else - change = UpdateCBALabelL(ERightSoftkeyIndex, ENullCommandId, R_TEXT_SOFTKEY_EMPTY) || change; + { + change = UpdateCBALabelL( KRightSoftkeyIndex, KNullCommandId, R_TEXT_SOFTKEY_EMPTY ) || change; + } - if (change) + if ( change ) { - iCba->DrawNow(); + iExtention->iCba->DrawNow(); } } -TBool CAknCcpuSupport::UpdateCBALabelL(TInt aPosition, TInt aCommandId, TInt aTextResId) +TBool CAknCcpuSupport::UpdateCBALabelL( TInt aPosition, TInt aCommandId, TInt aTextResId ) { - if (iCba->ButtonGroup()->CommandId(aPosition) != aCommandId) + if ( iExtention->iCba->ButtonGroup()->CommandId(aPosition) != aCommandId ) { - HBufC* buf = iEikonEnv->AllocReadResourceLC(aTextResId); - iCba->SetCommandL(aPosition, aCommandId, *buf); - CleanupStack::PopAndDestroy(buf); + HBufC* buf = iEikonEnv->AllocReadResourceLC( aTextResId ); + iExtention->iCba->SetCommandL( aPosition, aCommandId, *buf ); + CleanupStack::PopAndDestroy( buf ); return ETrue; } return EFalse; } -void CAknCcpuSupport::SetEmphasis(CCoeControl* /*aMenuControl*/,TBool /*aEmphasis*/) +void CAknCcpuSupport::SetEmphasis( CCoeControl* /*aMenuControl*/, TBool /*aEmphasis*/ ) { } -EXPORT_C void CAknCcpuSupport::HandlePointerEventL(const TPointerEvent& aPointerEvent) +EXPORT_C void CAknCcpuSupport::HandlePointerEventL( const TPointerEvent& aPointerEvent ) { - CAknControl::HandlePointerEventL(aPointerEvent); + CAknControl::HandlePointerEventL( aPointerEvent ); } EXPORT_C void* CAknCcpuSupport::ExtensionInterface( TUid /*aInterface*/ ) @@ -256,35 +307,32 @@ } void CAknCcpuSupport::DeleteCBAL() { - if ( iCba != NULL ) + if ( iExtention->iCba ) { - delete iCba; - iCba = NULL; + delete iExtention->iCba; + iExtention->iCba = NULL; } - if (isCbaEmded) + if ( iExtention->iIsCbaEmded ) { 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; - } - } - } + if( eikAppUi && 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 && iExtention->iDialogCba == currentCba ) + { + currentCba->RemoveCommandFromStack( KLeftSoftkeyIndex, -1 ); + currentCba->RemoveCommandFromStack( KRightSoftkeyIndex, -1 ); + currentCba->DrawNow(); + currentCba->ActivateL(); + iExtention->iDialogCba = NULL; + iExtention->iIsCbaEmded = EFalse; + } + } + } } - } diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/EikStd/coctlsrc/aknedwincustomdrawbase.cpp --- a/uifw/EikStd/coctlsrc/aknedwincustomdrawbase.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/EikStd/coctlsrc/aknedwincustomdrawbase.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -78,6 +78,8 @@ iPictographDrawer = CAknPictographInterface::NewL( static_cast( const_cast( iEdwin ) ), *static_cast( this ) ); + + iSkinInstance = AknsUtils::SkinInstance(); } // ----------------------------------------------------------------------------- @@ -191,33 +193,26 @@ CFont* font = NULL; aParam.iMap.GetNearestFontInTwips( font, aFormat.iFontSpec ); RRegion rgn; - if ( iEdwin.IsSmileyEnabled() && font ) + TBool drawSmiley( iEdwin.IsSmileyEnabled() && font && ( &aParam.iGc == + static_cast( iTextView->BitmapContext() ) ) ); + if ( drawSmiley ) { + TPoint startPt( aParam.iDrawRect.iTl ); + startPt.iY = aLineInfo.iBaseline; + CBitmapContext* bitmapGc( iTextView->BitmapContext() ); + CEikEdwin& edwin = const_cast( iEdwin ); rgn.AddRect( iEdwin.AdjustDrawRectForSmiley( aParam.iDrawRect ) ); - iEdwin.GetClipRegionForSmiley( rgn, *font, aText, aTextOrigin, - aParam.iDrawRect ); + TRAP_IGNORE( edwin.DrawSmileyInTextL( rgn, aParam.iDrawRect, *bitmapGc, + *font, aText, startPt ) ); aParam.iGc.SetClippingRegion( rgn ); } CLafEdwinCustomDrawBase::DrawText( aParam, aLineInfo, alteredFormat, aText, aTextOrigin, aExtraPixels ); - if ( iEdwin.IsSmileyEnabled() ) + if ( drawSmiley ) { aParam.iGc.CancelClippingRegion(); } rgn.Close(); - - if ( iEdwin.IsSmileyEnabled() && font && ( &aParam.iGc == - static_cast( iTextView->BitmapContext() ) ) ) - { - CBitmapContext* bitmapGc( iTextView->BitmapContext() ); - CEikEdwin& edwin = const_cast( iEdwin ); - TPoint startPt( aParam.iDrawRect.iTl ); - startPt.iY = aLineInfo.iBaseline; - TRAP_IGNORE( { - edwin.HandleScrollForSmileyL(); - edwin.DrawSmileyInTextL( *bitmapGc, *font, aText, startPt ); - } ); - } // Draw pictographs if the feature is supported. // Character justification is not supported. @@ -328,10 +323,9 @@ TRgb ret = aDefaultColor; if (aColorIndex==TLogicalRgb::ESystemForegroundIndex) { - MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - if (skin && iEdwin.SkinColorId() != KErrNotFound) + if (iSkinInstance && iEdwin.SkinColorId() != KErrNotFound) { - AknsUtils::GetCachedColor(skin, ret, KAknsIIDQsnTextColors, iEdwin.SkinColorId()); + AknsUtils::GetCachedColor(iSkinInstance, ret, KAknsIIDQsnTextColors, iEdwin.SkinColorId()); } } else if (aColorIndex==TLogicalRgb::ESystemBackgroundIndex) @@ -345,32 +339,32 @@ else if (aColorIndex==TLogicalRgb::ESystemSelectionForegroundIndex) { ret = KRgbWhite; - MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - if (skin) + + if (iSkinInstance) { if ( iEdwin.HighlightStyle() == EEikEdwinHighlightLink ) { - AknsUtils::GetCachedColor(skin, ret, KAknsIIDQsnHighlightColors, EAknsCIQsnTextColorsCG3); + AknsUtils::GetCachedColor(iSkinInstance, ret, KAknsIIDQsnHighlightColors, EAknsCIQsnTextColorsCG3); } else // default { - AknsUtils::GetCachedColor(skin, ret, KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG24); + AknsUtils::GetCachedColor(iSkinInstance, ret, KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG24); } } } else if (aColorIndex==TLogicalRgb::ESystemSelectionBackgroundIndex) { ret = KRgbBlue; - MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - if (skin) + + if (iSkinInstance) { if ( iEdwin.HighlightStyle() == EEikEdwinHighlightLink ) { - AknsUtils::GetCachedColor(skin, ret, KAknsIIDQsnHighlightColors, EAknsCIQsnTextColorsCG1); + AknsUtils::GetCachedColor(iSkinInstance, ret, KAknsIIDQsnHighlightColors, EAknsCIQsnTextColorsCG1); } else // default { - AknsUtils::GetCachedColor(skin, ret, KAknsIIDQsnHighlightColors, EAknsCIQsnHighlightColorsCG2); + AknsUtils::GetCachedColor(iSkinInstance, ret, KAknsIIDQsnHighlightColors, EAknsCIQsnHighlightColorsCG2); } } } @@ -407,19 +401,14 @@ #endif //RD_UI_TRANSITION_EFFECTS_POPUPS if ( bitmapGc && iEdwin.SkinEnabled() ) { - MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - // Edwin manages the skin background - MAknsControlContext* edCc = iEdwin.SkinBackgroundControlContext(); - - TInt drawFlags = KAknsDrawParamDefault; - if( CAknEnv::Static()->TransparencyEnabled() ) - { - drawFlags |= KAknsDrawParamNoClearUnderImage; - } - - if( AknsDrawUtils::DrawBackground( skin, edCc, - &iControl, *bitmapGc, aRect.iTl, aRect, - drawFlags )) + if ( AknsDrawUtils::DrawBackground( + iSkinInstance, + iEdwin.SkinBackgroundControlContext(), + &iControl, + *bitmapGc, + aRect.iTl, + aRect, + KAknsDrawParamNoClearUnderImage ) ) { aDrawnRect = aRect; drawn = ETrue; diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/EikStd/coctlsrc/aknedwinphysicshandler.cpp --- a/uifw/EikStd/coctlsrc/aknedwinphysicshandler.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/EikStd/coctlsrc/aknedwinphysicshandler.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -87,7 +87,6 @@ // Pointer down inside view rect, set flag to allow dragging // and initialize values iFlags.Set( EFlagDraggingAllowed ); - iPrevPosition = aPointerEvent.iPosition; iStartPosition = aPointerEvent.iPosition; StopPhysics(); @@ -112,15 +111,15 @@ iDragThresholdExceeded = ETrue; } } - - if ( iDragThresholdExceeded ) + else { TInt deltaY( iPrevPosition.iY - aPointerEvent.iPosition.iY ); - iPrevPosition = aPointerEvent.iPosition; TPoint deltaPoint( 0, deltaY ); iPhysics->RegisterPanningPosition( deltaPoint ); } + + iPrevPosition = aPointerEvent.iPosition; } else if ( aPointerEvent.iType == TPointerEvent::EButton1Up ) { @@ -242,8 +241,12 @@ { BlockEvents( ETrue ); } - // Scroll view based on values from aknphysics + + // Disable background drawing while panning or flicking. Instead, + // background is drawn in one frame. + iEdwin.DrawViewBackground( ETrue ); ScrollView( ETrue ); + iEdwin.DrawViewBackground( EFalse ); } // --------------------------------------------------------------------------- diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/EikStd/coctlsrc/aknitemactionmenu.cpp --- a/uifw/EikStd/coctlsrc/aknitemactionmenu.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/EikStd/coctlsrc/aknitemactionmenu.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -28,6 +28,7 @@ #include "akncollectionobserver.h" #include "aknitemactionmenudata.h" #include "aknitemactionmenuregister.h" +#include "akntrace.h" /** * Index for invalid list index. @@ -41,9 +42,11 @@ CAknItemActionMenu* CAknItemActionMenu::NewL( MAknCollection& aCollection, MObjectProvider* aOwner ) { + _AKNTRACE_FUNC_ENTER; CAknItemActionMenu* self = CAknItemActionMenu::NewLC( aCollection, aOwner ); CleanupStack::Pop( self ); + _AKNTRACE_FUNC_EXIT; return self; } @@ -55,9 +58,11 @@ CAknItemActionMenu* CAknItemActionMenu::NewLC( MAknCollection& aCollection, MObjectProvider* aOwner ) { + _AKNTRACE_FUNC_ENTER; CAknItemActionMenu* self = new ( ELeave ) CAknItemActionMenu( aOwner ); CleanupStack::PushL( self ); self->ConstructL( aCollection ); + _AKNTRACE_FUNC_EXIT; return self; } @@ -68,6 +73,7 @@ // CAknItemActionMenu::~CAknItemActionMenu() { + _AKNTRACE_FUNC_ENTER; AKNTASHOOK_REMOVE(); delete iPopupMenu; delete iMenuPane; @@ -80,6 +86,7 @@ } iObservers.Close(); + _AKNTRACE_FUNC_EXIT; } @@ -90,6 +97,8 @@ EXPORT_C CAknItemActionMenu* CAknItemActionMenu::RegisterCollectionL( MAknCollection& aCollection ) { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_EXIT; return AknItemActionMenuRegister::RegisterCollectionL( aCollection ); } @@ -101,6 +110,7 @@ EXPORT_C void CAknItemActionMenu::RemoveCollection( MAknCollection& aCollection ) { + _AKNTRACE_FUNC_ENTER; for ( TInt i = 0; i < iStates.Count(); i++ ) { MAknCollection* state( iStates[ i ] ); @@ -111,6 +121,7 @@ } } UnregisterMenu(); + _AKNTRACE_FUNC_EXIT; } @@ -120,6 +131,7 @@ // EXPORT_C TBool CAknItemActionMenu::InitMenuL() { + _AKNTRACE_FUNC_ENTER; iMenuData->Reset(); if ( !iMenuBar ) { @@ -139,6 +151,7 @@ return EFalse; } + _AKNTRACE_FUNC_EXIT; return iMenuData->Count(); } @@ -151,6 +164,7 @@ const TPoint& aPosition, TUint /*aFlags*/ ) { + _AKNTRACE_FUNC_ENTER; if ( iMenuData->Count() ) { if ( !iPopupMenu ) @@ -164,6 +178,7 @@ CAknStylusPopUpMenu::EPositionTypeRightBottom ); iPopupMenu->ShowMenu(); } + _AKNTRACE_FUNC_EXIT; } @@ -174,12 +189,14 @@ EXPORT_C void CAknItemActionMenu::CollectionChanged( MAknCollection& aCollection ) { + _AKNTRACE_FUNC_ENTER; if ( iObservers.Count() && iStates.Find( &aCollection ) != KErrNotFound ) { TBool collectionVisible( aCollection.CollectionState() & MAknCollection::EStateCollectionVisible ); NotifyChangeToActiveObserver( collectionVisible ); } + _AKNTRACE_FUNC_EXIT; } @@ -190,10 +207,12 @@ void CAknItemActionMenu::AddCollectionStateL( MAknCollection& aCollection ) { + _AKNTRACE_FUNC_ENTER; if ( iStates.Find( &aCollection ) == KErrNotFound ) { iStates.InsertL( &aCollection, 0 ); } + _AKNTRACE_FUNC_EXIT; } @@ -205,8 +224,10 @@ MEikMenuObserver* aMenuObserver, CEikMenuBar* aMenuBar ) { + _AKNTRACE_FUNC_ENTER; iMenuBarObserver = aMenuObserver; iMenuBar = aMenuBar; + _AKNTRACE_FUNC_EXIT; } @@ -216,6 +237,7 @@ // TBool CAknItemActionMenu::CollectionHighlightVisible() const { + _AKNTRACE_FUNC_ENTER; TBool highlightVisible( ETrue ); for ( TInt i = 0; i < iStates.Count(); i++ ) { @@ -231,6 +253,7 @@ break; } } + _AKNTRACE_FUNC_EXIT; return highlightVisible; } @@ -242,6 +265,7 @@ TBool CAknItemActionMenu::CollectionSoftkeyVisible( TBool aVisibleCollection ) const { + _AKNTRACE_FUNC_ENTER; TBool softkeyVisible( ETrue ); for ( TInt i = 0; i < iStates.Count(); i++ ) { @@ -262,6 +286,7 @@ break; } } + _AKNTRACE_FUNC_EXIT; return softkeyVisible; } @@ -272,6 +297,8 @@ // CAknItemActionMenuData& CAknItemActionMenu::MenuData() { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_EXIT; return *iMenuData; } @@ -283,11 +310,13 @@ void CAknItemActionMenu::RegisterCollectionObserverL( MAknCollectionObserver& aObserver ) { + _AKNTRACE_FUNC_ENTER; if ( iObservers.Find( &aObserver ) == KErrNotFound ) { iObservers.InsertL( &aObserver, 0 ); aObserver.SetItemActionMenu( this ); } + _AKNTRACE_FUNC_EXIT; } @@ -298,12 +327,14 @@ void CAknItemActionMenu::RemoveCollectionObserver( MAknCollectionObserver& aObserver ) { + _AKNTRACE_FUNC_ENTER; TInt index( iObservers.Find( &aObserver ) ); if ( index != KErrNotFound ) { iObservers.Remove( index ); UnregisterMenu(); } + _AKNTRACE_FUNC_EXIT; } @@ -313,6 +344,8 @@ // TInt CAknItemActionMenu::CollectionCount() const { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_EXIT; return iStates.Count(); } @@ -323,6 +356,8 @@ // MObjectProvider* CAknItemActionMenu::Owner() const { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_EXIT; return iOwner; } @@ -339,7 +374,9 @@ iMenuData( NULL ), iOwner( aOwner ) { + _AKNTRACE_FUNC_ENTER; AKNTASHOOK_ADD( this, "CAknItemActionMenu" ); + _AKNTRACE_FUNC_EXIT; } @@ -349,8 +386,10 @@ // void CAknItemActionMenu::ConstructL( MAknCollection& aCollection ) { + _AKNTRACE_FUNC_ENTER; AddCollectionStateL( aCollection ); iMenuData = CAknItemActionMenuData::NewL(); + _AKNTRACE_FUNC_EXIT; } @@ -360,6 +399,7 @@ // TInt CAknItemActionMenu::LaunchSubMenuQueryL( const TDesC& aHeading ) { + _AKNTRACE_FUNC_ENTER; TInt selectedIndex( KInvalidListIndex ); if ( iMenuData->Count() ) { @@ -375,6 +415,7 @@ } queryDialog->RunLD(); } + _AKNTRACE_FUNC_EXIT; return ++selectedIndex; } @@ -386,6 +427,7 @@ void CAknItemActionMenu::NotifyChangeToActiveObserver( TBool aCollectionVisible ) { + _AKNTRACE_FUNC_ENTER; for ( TInt i = 0; i < iObservers.Count(); i++ ) { MAknCollectionObserver* observer( iObservers[ i ] ); @@ -395,6 +437,7 @@ break; } } + _AKNTRACE_FUNC_EXIT; } @@ -406,6 +449,8 @@ CCoeControl* /*aMenuControl*/, TBool /*aEmphasis*/ ) { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_EXIT; } @@ -415,6 +460,7 @@ // void CAknItemActionMenu::ProcessCommandL( TInt aCommandId ) { + _AKNTRACE_FUNC_ENTER; MAknCollection* informState ( NULL ); // Store collection state before sending the command for ( TInt i = 0; i < iStates.Count(); i++ ) @@ -454,6 +500,7 @@ informState->ItemActionMenuClosed(); } UnregisterMenu(); + _AKNTRACE_FUNC_EXIT; } @@ -463,6 +510,7 @@ // void CAknItemActionMenu::UnregisterMenu() { + _AKNTRACE_FUNC_ENTER; if ( !iProcessingCommand && !iStates.Count() && !iObservers.Count() ) { delete iPopupMenu; @@ -471,6 +519,7 @@ iMenuPane = NULL; AknItemActionMenuRegister::UnregisterItemActionMenu( *this ); } + _AKNTRACE_FUNC_EXIT; } // End of File diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/EikStd/coctlsrc/aknitemactionmenudata.cpp --- a/uifw/EikStd/coctlsrc/aknitemactionmenudata.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/EikStd/coctlsrc/aknitemactionmenudata.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -20,6 +20,7 @@ #include #include "aknitemactionmenudata.h" +#include "akntrace.h" // --------------------------------------------------------------------------- // CAknItemActionMenuData::NewL @@ -27,7 +28,9 @@ // CAknItemActionMenuData* CAknItemActionMenuData::NewL() { + _AKNTRACE_FUNC_ENTER; CAknItemActionMenuData* self = new ( ELeave ) CAknItemActionMenuData(); + _AKNTRACE_FUNC_EXIT; return self; } @@ -38,7 +41,9 @@ // CAknItemActionMenuData::~CAknItemActionMenuData() { + _AKNTRACE_FUNC_ENTER; iMenuData.Close(); + _AKNTRACE_FUNC_EXIT; } @@ -49,11 +54,13 @@ void CAknItemActionMenuData::AddMenuItemToDataArrayL( TInt aCommandId, TInt aCascadeId, const TDesC& aText ) { + _AKNTRACE_FUNC_ENTER; TAknItemActionMenuData newData; newData.iCommandId = aCommandId; newData.iCascadeId = aCascadeId; newData.iText = aText; iMenuData.AppendL( newData ); + _AKNTRACE_FUNC_EXIT; } @@ -64,6 +71,7 @@ void CAknItemActionMenuData::AddMenuItemsToStylusPopupMenuL( CAknStylusPopUpMenu* aPopupMenu ) { + _AKNTRACE_FUNC_ENTER; if ( aPopupMenu ) { for ( TInt i = 0; i < iMenuData.Count(); i++ ) @@ -71,6 +79,7 @@ aPopupMenu->AddMenuItemL( iMenuData[ i ].iText, i + 1 ); } } + _AKNTRACE_FUNC_EXIT; } @@ -80,6 +89,7 @@ // MDesCArray* CAknItemActionMenuData::MenuItemsForQueryDialogL() { + _AKNTRACE_FUNC_ENTER; CDesCArrayFlat* itemArray( NULL ); TInt itemCount( iMenuData.Count() ); if ( itemCount ) @@ -93,6 +103,7 @@ } CleanupStack::Pop( itemArray ); } + _AKNTRACE_FUNC_EXIT; return itemArray; } @@ -103,10 +114,12 @@ // TInt CAknItemActionMenuData::MenuItemCascadeId( TInt aIndex ) { + _AKNTRACE_FUNC_ENTER; aIndex--; __ASSERT_ALWAYS( ( aIndex >= 0 && aIndex < iMenuData.Count() ), Panic( EEikPanicOutOfRange ) ); + _AKNTRACE_FUNC_EXIT; return iMenuData[ aIndex ].iCascadeId; } @@ -117,10 +130,12 @@ // TDesC& CAknItemActionMenuData::MenuItemText( TInt aIndex ) { + _AKNTRACE_FUNC_ENTER; aIndex--; __ASSERT_ALWAYS( ( aIndex >= 0 && aIndex < iMenuData.Count() ), Panic( EEikPanicOutOfRange ) ); + _AKNTRACE_FUNC_EXIT; return iMenuData[ aIndex ].iText; } @@ -131,10 +146,12 @@ // TInt CAknItemActionMenuData::MenuItemCommandId( TInt aIndex ) { + _AKNTRACE_FUNC_ENTER; aIndex--; __ASSERT_ALWAYS( ( aIndex >= 0 && aIndex < iMenuData.Count() ), Panic( EEikPanicOutOfRange ) ); + _AKNTRACE_FUNC_EXIT; return iMenuData[ aIndex ].iCommandId; } @@ -145,7 +162,9 @@ // void CAknItemActionMenuData::Reset() { + _AKNTRACE_FUNC_ENTER; iMenuData.Reset(); + _AKNTRACE_FUNC_EXIT; } @@ -155,6 +174,8 @@ // TInt CAknItemActionMenuData::Count() const { + _AKNTRACE_FUNC_ENTER;; + _AKNTRACE_FUNC_EXIT; return iMenuData.Count(); } diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/EikStd/coctlsrc/aknitemactionmenuregister.cpp --- a/uifw/EikStd/coctlsrc/aknitemactionmenuregister.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/EikStd/coctlsrc/aknitemactionmenuregister.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -41,7 +41,7 @@ if ( instance ) { - instance->iMenuBarOwner = aMenuBarOwner; + instance->DoSetConstructingMenuBarOwnerL( aMenuBarOwner ); } _AKNTRACE_FUNC_EXIT; @@ -346,17 +346,20 @@ for ( TInt i = 0; i < iUnregisteredMenus.Count(); i++ ) { TAknUnregisteredMenuData& data( iUnregisteredMenus[ i ] ); - CEikMenuBar* ownerMenubar( NULL ); - data.iOwner->MopGetObjectNoChaining( ownerMenubar ); - if ( ownerMenubar == &aMenuBar ) + if ( data.iOwner ) { - menu = data.iMenu; - if ( menu ) + CEikMenuBar* ownerMenubar( NULL ); + data.iOwner->MopGetObjectNoChaining( ownerMenubar ); + if ( ownerMenubar == &aMenuBar ) { - AddRegisterEntryL( aMenuBar, *menu ); - iUnregisteredMenus.Remove( i ); + menu = data.iMenu; + if ( menu ) + { + AddRegisterEntryL( aMenuBar, *menu ); + iUnregisteredMenus.Remove( i ); + } + break; } - break; } } @@ -393,11 +396,14 @@ TAknUnregisteredMenuData& data( iUnregisteredMenus[ i ] ); if ( data.iMenu == &aItemActionMenu ) { - data.iOwner->MopGetObjectNoChaining( menuBar ); - if ( menuBar ) + if ( data.iOwner ) { - AddRegisterEntryL( *menuBar, aItemActionMenu ); - iUnregisteredMenus.Remove( i ); + data.iOwner->MopGetObjectNoChaining( menuBar ); + if ( menuBar ) + { + AddRegisterEntryL( *menuBar, aItemActionMenu ); + iUnregisteredMenus.Remove( i ); + } } break; } @@ -877,6 +883,48 @@ return instance; } +// --------------------------------------------------------------------------- +// AknItemActionMenuRegister::DoSetConstructingMenuBarOwnerL +// --------------------------------------------------------------------------- +// +void AknItemActionMenuRegister::DoSetConstructingMenuBarOwnerL( + MObjectProvider* aMenuBarOwner ) + { + if ( aMenuBarOwner ) + { + CEikDialog* dialog( NULL ); + aMenuBarOwner->MopGetObjectNoChaining( dialog ); + // Get information if the constructing menu bar owner is a dialog + // and store it to iIsConstructingDialog + if ( dialog ) + { + iIsConstructingDialog = ETrue; + } + } + else if ( !aMenuBarOwner && iIsConstructingDialog ) + { + // When setting constructing menubar owner to NULL from a dialog check + // if there is item with the same menubar owner in iUnregisteredMenus + // and try to find correct menubar for it. + for ( TInt i = 0; i < iUnregisteredMenus.Count(); i++ ) + { + TAknUnregisteredMenuData& data( iUnregisteredMenus[ i ] ); + if ( data.iOwner == iMenuBarOwner ) + { + data.iOwner = iMenuBarOwner = NULL; + CEikMenuBar* menuBar = FindCurrentMenuBarL(); + if ( menuBar ) + { + AddRegisterEntryL( *menuBar, *data.iMenu ); + iUnregisteredMenus.Remove( i ); + } + iIsConstructingDialog = EFalse; + return; + } + } + } + iMenuBarOwner = aMenuBarOwner; + } // --------------------------------------------------------------------------- // AknItemActionMenuRegister::TAknUnregisteredObserverData diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/EikStd/coctlsrc/aknitemactionmenuregisterarray.cpp --- a/uifw/EikStd/coctlsrc/aknitemactionmenuregisterarray.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/EikStd/coctlsrc/aknitemactionmenuregisterarray.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -19,6 +19,7 @@ #include #include "aknitemactionmenuregisterarray.h" +#include "akntrace.h" // --------------------------------------------------------------------------- // CCAknItemActionMenuRegisterArray::NewL @@ -26,9 +27,11 @@ // CAknItemActionMenuRegisterArray* CAknItemActionMenuRegisterArray::NewL() { + _AKNTRACE_FUNC_ENTER; CAknItemActionMenuRegisterArray* self = CAknItemActionMenuRegisterArray::NewLC(); CleanupStack::Pop( self ); + _AKNTRACE_FUNC_EXIT; return self; } @@ -39,9 +42,11 @@ // CAknItemActionMenuRegisterArray* CAknItemActionMenuRegisterArray::NewLC() { + _AKNTRACE_FUNC_ENTER; CAknItemActionMenuRegisterArray* self = new ( ELeave ) CAknItemActionMenuRegisterArray(); CleanupStack::PushL( self ); + _AKNTRACE_FUNC_EXIT; return self; } @@ -52,8 +57,10 @@ // CAknItemActionMenuRegisterArray::~CAknItemActionMenuRegisterArray() { + _AKNTRACE_FUNC_ENTER; iRegisterArray.ResetAndDestroy(); iRegisterArray.Close(); + _AKNTRACE_FUNC_EXIT; } @@ -64,10 +71,12 @@ void CAknItemActionMenuRegisterArray::AddEntryL( CEikMenuBar& aMenuBar, CAknItemActionMenu& aItemActionMenu ) { + _AKNTRACE_FUNC_ENTER; CRegisterEntry* newEntry = CRegisterEntry::NewLC( aMenuBar, aItemActionMenu ); iRegisterArray.AppendL( newEntry ); CleanupStack::Pop( newEntry ); + _AKNTRACE_FUNC_EXIT; } @@ -78,6 +87,7 @@ void CAknItemActionMenuRegisterArray::UnregisterMenuBar( CEikMenuBar& aMenuBar ) { + _AKNTRACE_FUNC_ENTER; CRegisterEntry* entry( NULL ); for ( TInt i = 0; i < iRegisterArray.Count(); i++ ) { @@ -97,6 +107,7 @@ break; } } + _AKNTRACE_FUNC_EXIT; } @@ -107,6 +118,7 @@ void CAknItemActionMenuRegisterArray::UnregisterItemActionMenu( CAknItemActionMenu& aItemActionMenu ) { + _AKNTRACE_FUNC_ENTER; CRegisterEntry* entry( NULL ); for ( TInt i = 0; i < iRegisterArray.Count(); i++ ) @@ -122,6 +134,7 @@ break; } } + _AKNTRACE_FUNC_EXIT; } @@ -132,6 +145,7 @@ TBool CAknItemActionMenuRegisterArray::RegisterCollectionObserverL( CEikMenuBar& aMenuBar, MAknCollectionObserver& aObserver ) { + _AKNTRACE_FUNC_ENTER; TBool menuBarFound( EFalse ); CRegisterEntry* entry( NULL ); for ( TInt i = 0; i < iRegisterArray.Count(); i++ ) @@ -148,6 +162,7 @@ break; } } + _AKNTRACE_FUNC_EXIT; return menuBarFound; } @@ -159,6 +174,7 @@ void CAknItemActionMenuRegisterArray::UnregisterCollectionObserver( MAknCollectionObserver& aObserver ) { + _AKNTRACE_FUNC_ENTER; CRegisterEntry* entry( NULL ); for ( TInt i = 0; i < iRegisterArray.Count(); i++ ) @@ -169,6 +185,7 @@ entry->ItemActionMenu()->RemoveCollectionObserver( aObserver ); } } + _AKNTRACE_FUNC_EXIT; } @@ -196,6 +213,7 @@ // void CAknItemActionMenuRegisterArray::RemoveEntry( TInt aIndex ) { + _AKNTRACE_FUNC_ENTER; if ( aIndex >= 0 && aIndex < iRegisterArray.Count() ) { CRegisterEntry* entry = iRegisterArray[ aIndex ]; @@ -203,6 +221,7 @@ entry = NULL; iRegisterArray.Remove( aIndex ); } + _AKNTRACE_FUNC_EXIT; } @@ -214,8 +233,10 @@ CAknItemActionMenuRegisterArray::CRegisterEntry::NewL( CEikMenuBar& aMenuBar, CAknItemActionMenu& aItemActionMenu ) { + _AKNTRACE_FUNC_ENTER; CRegisterEntry* self = CRegisterEntry::NewLC( aMenuBar, aItemActionMenu ); CleanupStack::Pop( self ); + _AKNTRACE_FUNC_EXIT; return self; } @@ -228,9 +249,11 @@ CAknItemActionMenuRegisterArray::CRegisterEntry::NewLC( CEikMenuBar& aMenuBar, CAknItemActionMenu& aItemActionMenu ) { + _AKNTRACE_FUNC_ENTER; CRegisterEntry* self = new ( ELeave ) CRegisterEntry( aMenuBar, aItemActionMenu ); CleanupStack::PushL( self ); + _AKNTRACE_FUNC_EXIT; return self; } @@ -241,7 +264,9 @@ // CAknItemActionMenuRegisterArray::CRegisterEntry::~CRegisterEntry() { + _AKNTRACE_FUNC_ENTER; delete iActionMenu; + _AKNTRACE_FUNC_EXIT; } @@ -251,7 +276,9 @@ // void CAknItemActionMenuRegisterArray::CRegisterEntry::RemoveMenuBar() { + _AKNTRACE_FUNC_ENTER; iMenuBar = NULL; + _AKNTRACE_FUNC_EXIT; } @@ -261,6 +288,8 @@ // CEikMenuBar* CAknItemActionMenuRegisterArray::CRegisterEntry::MenuBar() { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_EXIT; return iMenuBar; } @@ -271,8 +300,10 @@ // void CAknItemActionMenuRegisterArray::CRegisterEntry::RemoveItemActionMenu() { + _AKNTRACE_FUNC_ENTER; delete iActionMenu; iActionMenu = NULL; + _AKNTRACE_FUNC_EXIT; } @@ -283,6 +314,8 @@ CAknItemActionMenu* CAknItemActionMenuRegisterArray::CRegisterEntry::ItemActionMenu() { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_EXIT; return iActionMenu; } diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/EikStd/coctlsrc/aknstyluspopupmenucontent.cpp --- a/uifw/EikStd/coctlsrc/aknstyluspopupmenucontent.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/EikStd/coctlsrc/aknstyluspopupmenucontent.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -795,6 +795,10 @@ { if ( Observer() ) { + if ( iExtension ) + { + iExtension->iInformObserver = EFalse; + } // this will close the stylus popup menu TRAP_IGNORE( Observer()->HandleControlEventL( this, MCoeControlObserver::EEventRequestExit ) ); @@ -804,6 +808,10 @@ { if ( Observer() ) { + if ( iExtension ) + { + iExtension->iInformObserver = EFalse; + } // this will close the stylus popup menu TRAP_IGNORE( Observer()->HandleControlEventL( this, MCoeControlObserver::EEventRequestCancel ) ); @@ -1020,7 +1028,7 @@ if ( aItem < iLastVisibleItem ) { - AknListUtils::DrawSeparator( aGc, rect, textColor ); + AknListUtils::DrawSeparator( aGc, rect, textColor, skin ); } } } @@ -1287,7 +1295,7 @@ iItems[i]->iRect = itemRect; } - if ( lastItem == iItems.Count() ) + if ( lastItem == iItems.Count() || ( Rect().Height() % singleItemHeight ) == 0 ) { // substract the partially visible item --lastItem; @@ -1404,6 +1412,10 @@ { if ( Observer() ) { + if ( iExtension ) + { + iExtension->iInformObserver = EFalse; + } // this will close the stylus popup menu TRAP_IGNORE( Observer()->HandleControlEventL( this, MCoeControlObserver::EEventRequestExit ) ); diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/EikStd/coctlsrc/eikcba.cpp --- a/uifw/EikStd/coctlsrc/eikcba.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/EikStd/coctlsrc/eikcba.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -56,7 +56,7 @@ #include #include "akncollectionobserver.h" #include "aknitemactionmenuregister.h" - +#include "akntrace.h" /** * Color value for transparent pixel (ARGB format). */ @@ -76,12 +76,16 @@ inline TAknWindowComponentLayout DoCompose(TAknWindowComponentLayout aLine1, TAknWindowComponentLayout aLine2) { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_EXIT; return TAknWindowComponentLayout::Compose(aLine1, aLine2); } inline TAknTextComponentLayout DoComposeText(TAknWindowComponentLayout aLine1, TAknTextComponentLayout aLine2) { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_EXIT; return TAknWindowComponentLayout::ComposeText(aLine1, aLine2); } @@ -91,6 +95,8 @@ */ static TBool IsAreaSideRightPaneActive() { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_EXIT; return EFalse; } @@ -100,6 +106,7 @@ */ static TBool IsMskEnabledLayoutActive() { + _AKNTRACE_FUNC_ENTER; TBool result( EFalse ); if ( Layout_Meta_Data::IsMSKEnabled() ) @@ -125,6 +132,7 @@ } } + _AKNTRACE_FUNC_EXIT; return result; } @@ -135,6 +143,8 @@ */ static TBool IsBitmapUpdateNeeded( CFbsBitmap* aOldBitmap, const TSize& aSize ) { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_EXIT; return !aOldBitmap || ( aOldBitmap->SizeInPixels() != aSize ); } @@ -240,19 +250,24 @@ iRightFrameMask( NULL ), iItemActionMenu( NULL ) { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_EXIT; }; static CEikCbaExtension* NewL( CEikCba& aOwner ) { + _AKNTRACE_FUNC_ENTER; CEikCbaExtension* self = new (ELeave) CEikCbaExtension( aOwner ); CleanupStack::PushL( self ); self->ConstructL(); CleanupStack::Pop( self ); + _AKNTRACE_FUNC_EXIT; return self; } void ConstructL() { + _AKNTRACE_FUNC_ENTER; // Wallpaper is not drawn by embedded CBA. if ( !iOwner.Flags().IsSet( ECbaEmbedded ) ) { @@ -276,10 +291,12 @@ AknItemActionMenuRegister::RegisterCollectionObserverL( *this ); } + _AKNTRACE_FUNC_EXIT; } ~CEikCbaExtension() { + _AKNTRACE_FUNC_ENTER; if ( iOwner.Flags().IsSet( ECbaSingleClickEnabled ) ) { AknItemActionMenuRegister::UnregisterCollectionObserver( *this ); @@ -297,19 +314,24 @@ delete iLskPostingOverlayBitmap; delete iRskPostingOverlayBitmap; delete iBmpFile; + _AKNTRACE_FUNC_EXIT; } /** From base class MCenRepNotifyHandlerCallback */ void HandleNotifyInt( TUint32 /*aId*/, TInt aNewValue ) { + _AKNTRACE_FUNC_ENTER; iWallpaperInUse = aNewValue; iOwner.SetSkinBackgroundId( KAknsIIDNone ); + _AKNTRACE_FUNC_EXIT; } void UpdateSoftkeyFrameL( TBool aForcedUpdate ) { + _AKNTRACE_FUNC_ENTER; if ( !AknLayoutUtils::PenEnabled() ) { + _AKNTRACE_FUNC_EXIT; return; } TAknLayoutRect cbarect; @@ -439,6 +461,7 @@ iUpdateFrameInnerRect = innerRect; iUpdateMSKFrameOuterRect = mskOuterRect; iUpdateMskFrameInnerRect = mskInnerRect; + _AKNTRACE_FUNC_EXIT; } @@ -453,6 +476,7 @@ */ static void MergeMaskInto16MA( CFbsBitmap* aMask, CFbsBitmap* aDestBitmap ) { + _AKNTRACE_FUNC_ENTER; // aMask display mode must be EGray256. // aMask must not be compressed in RAM. // aDestBitmap display mode must be EColor16MA. @@ -490,6 +514,7 @@ } aDestBitmap->UnlockHeap(); aMask->UnlockHeap(); + _AKNTRACE_FUNC_EXIT; } /** @@ -506,6 +531,7 @@ const TRect& aRect, CEikCbaButton* aButton ) { + _AKNTRACE_FUNC_ENTER; delete aBitmap; aBitmap = NULL; @@ -559,6 +585,7 @@ CleanupStack::PopAndDestroy( 2, bitmapDevice ); CleanupStack::Pop( bitmap ); aBitmap = bitmap; + _AKNTRACE_FUNC_EXIT; } /** @@ -573,6 +600,7 @@ CEikCbaButton* aRightButton, TInt aAknLayoutFlags ) { + _AKNTRACE_FUNC_ENTER; TRect rightSoftKeyButtonRect; TRect leftSoftKeyButtonRect; if( aAknLayoutFlags & EAknLayoutCbaInRightPane ) @@ -685,6 +713,7 @@ iRskPostingOverlayBitmap, rightSoftKeyButtonRect, aRightButton ); + _AKNTRACE_FUNC_EXIT; } /** @@ -695,7 +724,9 @@ */ void SetItemActionMenu( CAknItemActionMenu* aItemActionMenu ) { + _AKNTRACE_FUNC_ENTER; iItemActionMenu = aItemActionMenu; + _AKNTRACE_FUNC_EXIT; } /** @@ -707,12 +738,14 @@ */ void CollectionChanged( TBool aCollectionVisible ) { + _AKNTRACE_FUNC_ENTER; // Do not update state if invisible collection tries to enable sk if ( aCollectionVisible || iOwner.Flags().IsClear( ECbaItemSoftkeyDisabled ) ) { iOwner.UpdateItemSpecificSoftkey(); } + _AKNTRACE_FUNC_EXIT; } /** @@ -723,15 +756,18 @@ */ TBool Active() const { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_EXIT; return iOwner.IsVisible() && !iOwner.IsEmpty(); } /* * Using the special theme Id draw background */ - void DrawSemiTransparencyL(CWindowGc& aGc, - const TRect& aRect) - { + void DrawSemiTransparency( CWindowGc& aGc, + const TRect& aRect ) + { + _AKNTRACE_FUNC_ENTER; aGc.SetBrushStyle( CGraphicsContext::ESolidBrush ); aGc.SetBrushColor( TRgb(128, 128, 128, 64) ); aGc.Clear(); @@ -810,7 +846,8 @@ SemiButtonID, SemiButtonCenterID); } - } + _AKNTRACE_FUNC_EXIT; + } public: CEikCba& iOwner; @@ -891,22 +928,28 @@ CEikCba* CEikCba::NewL(const CEikCba* aPrevious, MEikCommandObserver* aCommandObserver, RWindowGroup* aParentWg) { + _AKNTRACE_FUNC_ENTER; CEikCba* self = CEikCba::NewLC(aPrevious, aCommandObserver, aParentWg); // static CleanupStack::Pop( self ); + _AKNTRACE_FUNC_EXIT; return self; } CEikCba* CEikCba::NewL(TInt aResourceId, const CEikCba* aPrevious, MEikCommandObserver* aCommandObserver, RWindowGroup* aParentWg) { + _AKNTRACE_FUNC_ENTER; CEikCba* self = CEikCba::NewLC(aResourceId, aPrevious, aCommandObserver, aParentWg); // static CleanupStack::Pop( self ); + _AKNTRACE_FUNC_EXIT; return self; } CEikCba* CEikCba::NewLC(const CEikCba* aPrevious, MEikCommandObserver* aCommandObserver, RWindowGroup* aParentWg) { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_EXIT; return CEikCba::NewLC(KNoResource, aPrevious, aCommandObserver, aParentWg); // static } @@ -914,6 +957,8 @@ MEikCommandObserver* aCommandObserver, RWindowGroup* aParentWg, TUint aFlags) { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_EXIT; return CEikCba::NewLC(KNoResource, aPrevious, aCommandObserver, aParentWg, aFlags); } @@ -921,10 +966,12 @@ CEikCba* CEikCba::NewLC(TInt aResourceId, const CEikCba* aPrevious, MEikCommandObserver* aCommandObserver, RWindowGroup* aParentWg) { + _AKNTRACE_FUNC_ENTER; CEikCba* self = new(ELeave) CEikCba(aPrevious, aCommandObserver, aParentWg); // static CleanupStack::PushL(self); self->ConstructL(aResourceId); AKNTASHOOK_ADDL( self, "CEikCba" ); + _AKNTRACE_FUNC_EXIT; return self; } @@ -932,11 +979,13 @@ MEikCommandObserver* aCommandObserver, RWindowGroup* aParentWg, TUint aFlags) { + _AKNTRACE_FUNC_ENTER; CEikCba* self = new(ELeave) CEikCba(aPrevious, aCommandObserver, aParentWg, aFlags); CleanupStack::PushL(self); self->ConstructL(aResourceId); AKNTASHOOK_ADDL( self, "CEikCba" ); + _AKNTRACE_FUNC_EXIT; return self; } @@ -946,6 +995,7 @@ */ CEikCba::~CEikCba() { + _AKNTRACE_FUNC_ENTER; AKNTASHOOK_REMOVE(); // Revert the clock and indicator pane area of status pane // to use the previous skin background. @@ -990,6 +1040,7 @@ #endif // RD_ENHANCED_CBA delete iExtension; + _AKNTRACE_FUNC_EXIT; } /** @@ -1000,6 +1051,7 @@ TUint aFlags) : iLink(aPrevious), iCommandObserver(aCommandObserver), iParentWg(aParentWg) { + _AKNTRACE_FUNC_ENTER; if (aFlags & CEikButtonGroupContainer::EIsEmbedded) { // CBA is embedded in another component (eg. dialog/popup/setting page @@ -1011,7 +1063,7 @@ iFlags.Set( ECbaParentAsControl ); } - if ( aFlags & CEikButtonGroupContainer::EDelayActivation ) + if ( aFlags & CEikButtonGroupContainer::EDelayActivation ) { iFlags.Set( ECbaActivationDelayed ); } @@ -1024,11 +1076,13 @@ } SetNonFocusing(); + _AKNTRACE_FUNC_EXIT; } void CEikCba::SetContainerWindowL( const CCoeControl& aContainer ) { + _AKNTRACE_FUNC_ENTER; // CCoeControl::SetContainerWindowL closes the previously own window and // deactivates control. Therefore store the activation status and re-set // it after the container window has been set. @@ -1212,15 +1266,19 @@ { CCoeControl::SetContainerWindowL( aContainer ); } + _AKNTRACE_FUNC_EXIT; } void CEikCba::ActivateL() { + _AKNTRACE_FUNC_ENTER; CCoeControl::ActivateL(); + _AKNTRACE_FUNC_EXIT; } void CEikCba::BaseConstructL() { + _AKNTRACE_FUNC_ENTER; if ( iFlags.IsSet( ECbaEmbedded ) && iFlags.IsSet( ECbaParentAsControl ) ) { __ASSERT_DEBUG( iParentWg, User::Invariant() ); @@ -1383,27 +1441,18 @@ } } } + _AKNTRACE_FUNC_EXIT; } void CEikCba::ConstructL(TInt aResourceId) { + _AKNTRACE_FUNC_ENTER; if (aResourceId != KNoResource) { 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 ) { @@ -1559,11 +1608,13 @@ // Set CBA faded in case the softkeys are empty. SetFadeState(); + _AKNTRACE_FUNC_EXIT; } void CEikCba::ConstructFromResourceL(TResourceReader& aReader) { + _AKNTRACE_FUNC_ENTER; BaseConstructL(); CreateScrollBarFrameL(); TGulAlignmentValue anAlignment[3] = {EHLeftVCenter, EHRightVCenter, EHCenterVCenter}; @@ -1654,16 +1705,21 @@ // Set CBA faded in case the softkeys are empty. SetFadeState(); + _AKNTRACE_FUNC_EXIT; } TInt CEikCba::MaxCommands() const { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_EXIT; return KMaxSeries60Softkeys; } TInt CEikCba::MSKEnabledInPlatform() const { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_EXIT; return iMSKEnabledInPlatform; } @@ -1674,32 +1730,38 @@ // void CEikCba::SetMSKIconL() { + _AKNTRACE_FUNC_ENTER; // MSK is not supported by dialog-embedded CBAs. if ( iFlags.IsSet( ECbaInsideDialog ) || iFlags.IsSet( ECbaEmbedded ) ) { + _AKNTRACE_FUNC_EXIT; return; } if ( !MskAllowed() ) { + _AKNTRACE_FUNC_EXIT; return; } MAknsSkinInstance* skin = AknsUtils::SkinInstance(); if ( !skin ) { + _AKNTRACE_FUNC_EXIT; return; } if( iExtension->iIfMskIconSet ) { - // UpdateIconL(); - return; + // UpdateIconL(); + _AKNTRACE_FUNC_EXIT; + return; } TEikGroupControl &gCtrl = iControlArray->At( KControlArrayCBAButtonMSKPosn ); CEikCbaButton *button = static_cast( gCtrl.iControl ); if ( !button ) { + _AKNTRACE_FUNC_EXIT; return; } @@ -1836,6 +1898,7 @@ } button->SetContainerWindowL( *this ); + _AKNTRACE_FUNC_EXIT; } EXPORT_C TBool CEikCba::UpdateMSKIconL( const TAknsItemID& aId, @@ -1844,13 +1907,15 @@ const TInt32 aBmpM, TBool aEnable ) { + _AKNTRACE_FUNC_ENTER; iExtension->iIfMskIconSet = EFalse; // MSK is not supported by dialog-embedded CBAs. if (!aEnable) { - SetMSKIconL(); - return ETrue; + SetMSKIconL(); + _AKNTRACE_FUNC_EXIT; + return ETrue; } delete iExtension->iBmpFile; @@ -1863,6 +1928,7 @@ iExtension->iBmp = aBmp; iExtension->iBmpM = aBmpM; + _AKNTRACE_FUNC_EXIT; return UpdateIconL(); } @@ -1873,6 +1939,7 @@ // EXPORT_C void CEikCba::EnableItemSpecificSoftkey( TBool aEnable ) { + _AKNTRACE_FUNC_ENTER; if ( iFlags.IsSet( ECbaSingleClickEnabled ) ) { iFlags.Assign( ECbaItemSpecificSoftkeyInUse, aEnable ); @@ -1897,21 +1964,26 @@ } } } + _AKNTRACE_FUNC_EXIT; } void CEikCba::SetMSKCommandObserver(MEikCommandObserver* aCommandObserver) { + _AKNTRACE_FUNC_ENTER; // aCommandObserver set to NULL when removing observer. iMSKCommandObserver = aCommandObserver; + _AKNTRACE_FUNC_EXIT; } void CEikCba::UpdateCbaLabels(TBool aScrollerOn) { + _AKNTRACE_FUNC_ENTER; // This method is called only from scrollbar that has nothing to do with // dialog-embedded CBAs -> ignore the call. if ( iFlags.IsSet( ECbaInsideDialog ) ) { + _AKNTRACE_FUNC_EXIT; return; } @@ -1928,37 +2000,48 @@ // Change of text may affect layout. SizeChanged(); DrawDeferred() ; + _AKNTRACE_FUNC_EXIT; } void CEikCba::SetSBFrameObserver(MEikScrollBarObserver* aObserver) { + _AKNTRACE_FUNC_ENTER; if(iSBFrame) { iSBFrame->SetScrollBarFrameObserver(aObserver); } + _AKNTRACE_FUNC_EXIT; } void CEikCba::SetScrollBarModelL(TEikScrollBarModel* aModel) { + _AKNTRACE_FUNC_ENTER; if(iSBFrame) { VScrollBarAsControl()->SetModelL(aModel); } + _AKNTRACE_FUNC_EXIT; } const CEikCbaScrollBarFrame* CEikCba::ScrollBarFrame() const { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_EXIT; return STATIC_CAST(const CEikCbaScrollBarFrame*, iSBFrame); } CAknScrollBar* CEikCba::VScrollBarAsControl() { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_EXIT; return STATIC_CAST(CAknScrollBar*, VScrollBarAsGroupControl().iControl); } void CEikCba::InsertControlL(TEikGroupControl& aGroupControl,TInt aIndex) { + _AKNTRACE_FUNC_ENTER; iControlArray->InsertL(aIndex,aGroupControl); // Takes ownership at this point. + _AKNTRACE_FUNC_EXIT; } @@ -1968,6 +2051,7 @@ const CFbsBitmap* /*aBitmap*/, const CFbsBitmap* /*aMask*/ ) { + _AKNTRACE_FUNC_ENTER; // We need to check if this call changes the softkeys from being // empty to having a command or vice versa to be able to maintain // correct fade state. @@ -2010,11 +2094,13 @@ } ReportContentChangedEvent(); + _AKNTRACE_FUNC_EXIT; } void CEikCba::SetCommandL(TInt aPosition,TInt aResourceId) { + _AKNTRACE_FUNC_ENTER; TResourceReader reader; iCoeEnv->CreateResourceReaderLC(reader,aResourceId); TInt version = reader.ReadInt8(); // version @@ -2053,6 +2139,7 @@ CleanupStack::PopAndDestroy(); // reader ReportContentChangedEvent(); + _AKNTRACE_FUNC_EXIT; } /** @@ -2062,6 +2149,7 @@ */ void CEikCba::SetCommandSetL(TInt aResourceId) { + _AKNTRACE_FUNC_ENTER; TResourceReader reader; iCoeEnv->CreateResourceReaderLC(reader, aResourceId); @@ -2071,6 +2159,7 @@ { CleanupStack::PopAndDestroy(); // reader OfferCommandListL( aResourceId ); + _AKNTRACE_FUNC_EXIT; return; } @@ -2172,12 +2261,15 @@ // Force labels to be re-formatted... SizeChanged(); ReportContentChangedEvent(); + _AKNTRACE_FUNC_EXIT; } void CEikCba::AddCommandL(TInt /*aPosition*/, TInt /*aCommandId*/, const TDesC* /*aText*/, const CFbsBitmap* /*aBitmap*/, const CFbsBitmap* /*aMask*/) { + _AKNTRACE_FUNC_ENTER; User::Leave(KErrNotSupported); + _AKNTRACE_FUNC_EXIT; } @@ -2185,6 +2277,7 @@ TInt aCommandId, const TDesC* aText) { + _AKNTRACE_FUNC_ENTER; // We need to check if this call changes the softkeys from being // empty to having a command or vice versa to be able to maintain // correct fade state. @@ -2232,6 +2325,7 @@ } ReportContentChangedEvent(); + _AKNTRACE_FUNC_EXIT; } void CEikCba::AddCommandToStackL( TInt aPosition, @@ -2240,15 +2334,18 @@ const CFbsBitmap* /*aBitmap*/, const CFbsBitmap* /*aMask*/ ) { + _AKNTRACE_FUNC_ENTER; AddCommandToStackWithoutSizeChangedL( aPosition, aCommandId, aText); // Force labels to be re-formatted... SizeChanged(); + _AKNTRACE_FUNC_EXIT; } void CEikCba::AddCommandToStackL(TInt aPosition, TInt aResourceId) { + _AKNTRACE_FUNC_ENTER; TResourceReader reader; iCoeEnv->CreateResourceReaderLC(reader,aResourceId); TUint8 version = (TUint8)reader.ReadInt8(); @@ -2267,10 +2364,12 @@ CleanupStack::PopAndDestroy(); // reader ReportContentChangedEvent(); + _AKNTRACE_FUNC_EXIT; } void CEikCba::AddCommandSetToStackL(TInt aResourceId) { + _AKNTRACE_FUNC_ENTER; TResourceReader reader; iCoeEnv->CreateResourceReaderLC(reader,aResourceId); @@ -2340,20 +2439,26 @@ // Force labels to be re-formatted... SizeChanged(); ReportContentChangedEvent(); + _AKNTRACE_FUNC_EXIT; } void CEikCba::SetDefaultCommand(TInt /*aCommandId*/) { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_EXIT; } TSize CEikCba::CalcMinimumSizeL(TInt /*aResourceId*/) { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_EXIT; return MinimumSize(); } void CEikCba::RemoveCommandFromStack( TInt aPosition, TInt aCommandId ) { + _AKNTRACE_FUNC_ENTER; // We need to check if this call changes the softkeys from being // empty to having a command or vice versa to be able to maintain // correct fade state. @@ -2406,16 +2511,20 @@ DrawDeferred(); ReportContentChangedEvent(); + _AKNTRACE_FUNC_EXIT; } void CEikCba::RemovePreviousCommandWithoutSizeChanged(TInt aPosition) { + _AKNTRACE_FUNC_ENTER; TEikGroupControl& groupCtrl = (*iControlArray)[aPosition]; STATIC_CAST(CEikCbaButton*, groupCtrl.iControl)->RemovePreviousCommand(); + _AKNTRACE_FUNC_EXIT; } void CEikCba::RemovePreviousCommand(TInt aPosition) { + _AKNTRACE_FUNC_ENTER; RemovePreviousCommandWithoutSizeChanged( aPosition ); // If MSK or left CBA was changed, this sets MSK icon accordingly. TRAP_IGNORE( SetMSKIconL() ); @@ -2423,16 +2532,20 @@ // Force labels to be re-formatted... SizeChanged(); ReportContentChangedEvent(); + _AKNTRACE_FUNC_EXIT; } TInt CEikCba::CommandPos(TInt aCommandId) const { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_EXIT; return IndexById(aCommandId); } void CEikCba::DimCommand(TInt aCommandId,TBool aDimmed) { + _AKNTRACE_FUNC_ENTER; CCoeControl* control( ButtonById( aCommandId ) ); if ( control ) { @@ -2441,19 +2554,24 @@ control->SetDimmed( aDimmed ); } } + _AKNTRACE_FUNC_EXIT; } TBool CEikCba::IsCommandDimmed(TInt aCommandId) const { + _AKNTRACE_FUNC_ENTER; if( ButtonById(aCommandId) ) { + _AKNTRACE_FUNC_EXIT; return ButtonById(aCommandId)->IsDimmed(); } + _AKNTRACE_FUNC_EXIT; return EFalse; } void CEikCba::MakeCommandVisible(TInt aCommandId, TBool aVisible) { + _AKNTRACE_FUNC_ENTER; CCoeControl* control( ButtonById( aCommandId ) ); if ( control ) { @@ -2462,19 +2580,25 @@ control->MakeVisible( aVisible ); } } + _AKNTRACE_FUNC_EXIT; } TBool CEikCba::IsCommandVisible(TInt aCommandId) const { + _AKNTRACE_FUNC_ENTER; if( ButtonById(aCommandId) ) { + _AKNTRACE_FUNC_EXIT; return ButtonById(aCommandId)->IsVisible(); } + _AKNTRACE_FUNC_EXIT; return EFalse; } void CEikCba::AnimateCommand(TInt /*aCommandId*/) { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_EXIT; } @@ -2484,8 +2608,10 @@ // void CEikCba::DimCommandByPosition( TInt aPosition, TBool aDimmed ) { + _AKNTRACE_FUNC_ENTER; if ( aPosition >= iControlArray->Count() ) { + _AKNTRACE_FUNC_EXIT; return; } @@ -2494,6 +2620,7 @@ TEikGroupControl& groupCtrl = ( *iControlArray )[ aPosition ]; groupCtrl.iControl->SetDimmed( aDimmed ); } + _AKNTRACE_FUNC_EXIT; } @@ -2503,12 +2630,15 @@ // TBool CEikCba::IsCommandDimmedByPosition( TInt aPosition ) const { + _AKNTRACE_FUNC_ENTER; if ( aPosition >= iControlArray->Count() ) { + _AKNTRACE_FUNC_EXIT; return EFalse; } TEikGroupControl& groupCtrl = (*iControlArray)[aPosition]; + _AKNTRACE_FUNC_EXIT; return groupCtrl.iControl->IsDimmed(); } @@ -2519,8 +2649,10 @@ // void CEikCba::MakeCommandVisibleByPosition( TInt aPosition, TBool aVisible ) { + _AKNTRACE_FUNC_ENTER; if ( aPosition >= iControlArray->Count() ) { + _AKNTRACE_FUNC_EXIT; return; } @@ -2539,27 +2671,34 @@ groupCtrl.iControl->DrawDeferred(); } } + _AKNTRACE_FUNC_EXIT; } TBool CEikCba::IsCommandVisibleByPosition(TInt aPosition) const { + _AKNTRACE_FUNC_ENTER; if (aPosition >= iControlArray->Count()) { + _AKNTRACE_FUNC_EXIT; return EFalse; } TEikGroupControl& groupCtrl = (*iControlArray)[aPosition]; if ( !iFlags.IsSet( ECbaInsideDialog ) ) { + _AKNTRACE_FUNC_EXIT; return STATIC_CAST(CEikCbaButton*, groupCtrl.iControl)->IsVisible(); } + _AKNTRACE_FUNC_EXIT; return !groupCtrl.iControl->IsDimmed(); } void CEikCba::AnimateCommandByPosition(TInt /*aPosition*/) { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_EXIT; } /*CCoeControl* CEikCba::GroupControlByPosition(TInt aPosition) const @@ -2580,10 +2719,12 @@ // TRect CEikCba::ButtonRectByPosition( TInt aPosition, TBool aRelativeToScreen ) { + _AKNTRACE_FUNC_ENTER; TRect rect( 0, 0, 0, 0 ); if ( aPosition >= iControlArray->Count() || aPosition < 0 ) { + _AKNTRACE_FUNC_EXIT; return rect; } @@ -2753,25 +2894,32 @@ } } + _AKNTRACE_FUNC_EXIT; return rect; } CCoeControl* CEikCba::AsControl() { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_EXIT; return this; } const CCoeControl* CEikCba::AsControl() const { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_EXIT; return this; } void CEikCba::SetBoundingRect( const TRect& /*aBoundingRect*/ ) { + _AKNTRACE_FUNC_ENTER; if ( iFlags.IsSet( ECbaEmbedded ) ) { + _AKNTRACE_FUNC_EXIT; return; } @@ -2788,6 +2936,7 @@ // query control. if ( iFlags.IsSet( ECbaInsideDialog ) ) { + _AKNTRACE_FUNC_EXIT; return; } @@ -3062,6 +3211,7 @@ DrawDeferred(); } + _AKNTRACE_FUNC_EXIT; } @@ -3072,14 +3222,17 @@ // void CEikCba::ReduceRect( TRect& aBoundingRect ) const { + _AKNTRACE_FUNC_ENTER; // CBA inside Popup/Query Input does not reduce bounding rect if ( iFlags.IsSet( ECbaEmbedded ) || iFlags.IsSet( ECbaInsideDialog ) ) { + _AKNTRACE_FUNC_EXIT; return; } if ( !IsVisible() ) { + _AKNTRACE_FUNC_EXIT; return; } @@ -3201,49 +3354,68 @@ } } } + _AKNTRACE_FUNC_EXIT; } CCoeControl* CEikCba::GroupControlById(TInt aCommandId) { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_EXIT; return ButtonById(aCommandId); } CCoeControl* CEikCba::GroupControlById(TInt aCommandId) const { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_EXIT; return ButtonById(aCommandId); } TInt CEikCba::CommandId(TInt aCommandPos) const { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_EXIT; return (*iControlArray)[aCommandPos].iId; } TInt CEikCba::ButtonCount() const { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_EXIT; return (iControlArray->Count()-1); // -1 for scroll bar; } CEikCommandButton* CEikCba::GroupControlAsButton(TInt /*aCommandId*/) const { + _AKNTRACE_FUNC_ENTER; // It is not possible to convert a CBA button to a CEikCommandButton. // Please use an interface that does not use a CEikCommandButton conversion, // e.g. CEikButtonGroupContainer::SetCommandL(). #if defined(_DEBUG) Panic(EEikPanicCBACannotConvertToCEikCommandButton); #endif + _AKNTRACE_FUNC_EXIT; return NULL; } TUint CEikCba::ButtonGroupFlags() const { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_EXIT; return iCbaFlags ; } EXPORT_C void CEikCba::SetButtonGroupFlags(TInt aFlags) { + _AKNTRACE_FUNC_ENTER; iCbaFlags = aFlags; + + //has not supported semi-transparent, ignore the flag at this moment. + //TODO: if the tranparent style CBA is approved and the new icon was delivered, open it again. + iCbaFlags &= ~EEikCbaFlagSemiTransparent; + if (( iCbaFlags & EEikCbaFlagTransparent || iCbaFlags & EEikCbaFlagSemiTransparent ) && CAknEnv::Static()->TransparencyEnabled() ) { @@ -3254,13 +3426,13 @@ Window().SetBackgroundColor( ~0 ); if ( iExtension && iExtension->iEnablePostingTransparency ) { - iExtension->iEnablePostingTransparency = EFalse; - delete iExtension->iLskPostingOverlayBitmap; - iExtension->iLskPostingOverlayBitmap = NULL; - delete iExtension->iRskPostingOverlayBitmap; - iExtension->iRskPostingOverlayBitmap = NULL; - BroadcastPostingTransparency( EFalse ); - } + iExtension->iEnablePostingTransparency = EFalse; + delete iExtension->iLskPostingOverlayBitmap; + iExtension->iLskPostingOverlayBitmap = NULL; + delete iExtension->iRskPostingOverlayBitmap; + iExtension->iRskPostingOverlayBitmap = NULL; + BroadcastPostingTransparency( EFalse ); + } } else { @@ -3273,6 +3445,7 @@ } UpdateFonts(); + _AKNTRACE_FUNC_EXIT; } // ----------------------------------------------------------------------------- @@ -3282,11 +3455,18 @@ // EXPORT_C void CEikCba::SetSkinBackgroundId( const TAknsItemID& aIID ) { + _AKNTRACE_FUNC_ENTER; // Skin background is not drawn by embedded CBA. if ( iFlags.IsSet( ECbaEmbedded ) ) { + iPopupVisible = ETrue; + _AKNTRACE_FUNC_EXIT; return; } + else + { + iPopupVisible = EFalse; + } if ( iBgIID != KAknsIIDNone ) { @@ -3337,18 +3517,22 @@ iBgIID, CEikStatusPaneBase::EDrawDeferred ); } + _AKNTRACE_FUNC_EXIT; } TKeyResponse CEikCba::OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType) { + _AKNTRACE_FUNC_ENTER; if (aType != EEventKey) { + _AKNTRACE_FUNC_EXIT; return EKeyWasNotConsumed; } // Return immediately if the control is invisible. if (!IsVisible() && !(iCbaFlags&EAknCBAFlagRespondWhenInvisible)) { + _AKNTRACE_FUNC_EXIT; return EKeyWasNotConsumed; } @@ -3390,6 +3574,7 @@ !(*iControlArray)[KControlArrayCBAButton1Posn].iControl->IsVisible() && !(iCbaFlags & EAknCBAFlagRespondWhenInvisible) ) { + _AKNTRACE_FUNC_EXIT; return EKeyWasConsumed; } TInt shortCommand = (*iControlArray)[KControlArrayCBAButton1Posn].iId; @@ -3398,6 +3583,7 @@ // This will pass key event to application - no softkey command is processed. if (shortCommand == EAknSoftkeyForwardKeyEvent) { + _AKNTRACE_FUNC_EXIT; return EKeyWasNotConsumed; } @@ -3425,6 +3611,7 @@ !(*iControlArray)[KControlArrayCBAButton2Posn].iControl->IsVisible() && !(iCbaFlags&EAknCBAFlagRespondWhenInvisible) ) { + _AKNTRACE_FUNC_EXIT; return EKeyWasConsumed; } TInt shortCommand = (*iControlArray)[KControlArrayCBAButton2Posn].iId; @@ -3439,6 +3626,7 @@ // This will pass key event to application - no softkey command is processed. if (shortCommand == EAknSoftkeyForwardKeyEvent) { + _AKNTRACE_FUNC_EXIT; return EKeyWasNotConsumed; } @@ -3474,6 +3662,7 @@ !(*iControlArray)[KControlArrayCBAButtonMSKPosn].iControl->IsVisible() && !(iCbaFlags&EAknCBAFlagRespondWhenInvisible) ) { + _AKNTRACE_FUNC_EXIT; return EKeyWasConsumed; } @@ -3483,6 +3672,7 @@ // This will pass key event to application - no softkey command is processed. if (shortCommand == EAknSoftkeyForwardKeyEvent) { + _AKNTRACE_FUNC_EXIT; return EKeyWasNotConsumed; } @@ -3530,6 +3720,7 @@ !(*iControlArray)[KControlArrayCBAButton1Posn].iControl->IsVisible() && !(iCbaFlags&EAknCBAFlagRespondWhenInvisible) ) { + _AKNTRACE_FUNC_EXIT; return EKeyWasConsumed; } @@ -3539,6 +3730,7 @@ // This will pass key event to application - no softkey command is processed. if (shortCommand == EAknSoftkeyForwardKeyEvent) { + _AKNTRACE_FUNC_EXIT; return EKeyWasNotConsumed; } @@ -3570,11 +3762,14 @@ } } + _AKNTRACE_FUNC_EXIT; return response; } EXPORT_C void* CEikCba::ExtensionInterface( TUid /*aInterface*/ ) { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_EXIT; return NULL; } @@ -3587,13 +3782,16 @@ // void CEikCba::HandlePointerEventL( const TPointerEvent& aPointerEvent ) { + _AKNTRACE_FUNC_ENTER; if ( !AknLayoutUtils::PenEnabled() ) { + _AKNTRACE_FUNC_EXIT; return; } else if ( iFlags.IsSet( ECbaInsideDialog ) ) { CCoeControl::HandlePointerEventL( aPointerEvent ); + _AKNTRACE_FUNC_EXIT; return; } @@ -3681,8 +3879,8 @@ { if( button1->IsDimmed() ) { - CCoeControl::HandlePointerEventL( aPointerEvent ); - return; + CCoeControl::HandlePointerEventL( aPointerEvent ); + return; } if ( button1->IsVisible() ) { @@ -3745,8 +3943,8 @@ { if( button2->IsDimmed() ) { - CCoeControl::HandlePointerEventL( aPointerEvent ); - return; + CCoeControl::HandlePointerEventL( aPointerEvent ); + return; } if ( button2->IsVisible() ) { @@ -3811,8 +4009,8 @@ { if( buttonMSK->IsDimmed() ) { - CCoeControl::HandlePointerEventL( aPointerEvent ); - return; + CCoeControl::HandlePointerEventL( aPointerEvent ); + return; } if ( buttonMSK->IsVisible() ) { @@ -3963,8 +4161,10 @@ if ( (*iControlArray)[i].iControl == grabber ) { if ( !IsVisible() ) + { + _AKNTRACE_FUNC_EXIT; return; - + } // Send the button command to command observer. TInt shortCommand = (*iControlArray)[i].iId; if ( shortCommand && @@ -3984,11 +4184,13 @@ } } } + _AKNTRACE_FUNC_EXIT; } TSize CEikCba::MinimumSize() { + _AKNTRACE_FUNC_ENTER; TSize size = CEikControlGroup::MinimumSize(); size.iWidth = iAvkonAppUi->ApplicationRect().Width(); const TInt count = iControlArray->Count(); @@ -4000,6 +4202,7 @@ { size.iHeight = Max(size.iHeight, iLink->Size().iHeight); } + _AKNTRACE_FUNC_EXIT; // Add a standard margin from the laf. return size; } @@ -4012,6 +4215,7 @@ */ void CEikCba::GetColorUseListL(CArrayFix& aColorUseList) const { + _AKNTRACE_FUNC_ENTER; CEikControlGroup::GetColorUseListL(aColorUseList); TInt commonAttributes = TCoeColorUse::ESurrounds|TCoeColorUse::EActive|TCoeColorUse::ENormal| @@ -4026,6 +4230,7 @@ colorUse.SetLogicalColor(EColorToolbarBackground); colorUse.SetUse(TCoeColorUse::EBack|commonAttributes); aColorUseList.AppendL(colorUse); + _AKNTRACE_FUNC_EXIT; } @@ -4036,6 +4241,7 @@ // void CEikCba::HandleResourceChange( TInt aType ) { + _AKNTRACE_FUNC_ENTER; CEikControlGroup::HandleResourceChange( aType ); switch ( aType ) @@ -4097,6 +4303,7 @@ { if ( iFlags.IsSet( ECbaInsideDialog ) ) { + _AKNTRACE_FUNC_EXIT; return; } @@ -4193,11 +4400,13 @@ break; } } + _AKNTRACE_FUNC_EXIT; } void CEikCba::DoSkinChange() { + _AKNTRACE_FUNC_ENTER; iExtension->iIfSkinChanged = ETrue; DoSetLayers( KAknsIIDNone ); iExtension->iIfSkinChanged = EFalse; @@ -4214,10 +4423,12 @@ //Skin change uses DrawNow to flus draw cache before layoutchange. DrawNow(); iFlags.Clear(ECbaChangeRecordedSkin); + _AKNTRACE_FUNC_EXIT; } void CEikCba::DoColorChange() { + _AKNTRACE_FUNC_ENTER; iBrushAndPenContext->SetBrushColor(iEikonEnv->ControlColor(EColorToolbarBackground, *this)); iBrushAndPenContext->SetPenColor(iEikonEnv->ControlColor(EColorToolbarText, *this)); Window().SetBackgroundColor(iEikonEnv->ControlColor(EColorToolbarBackground, *this)); @@ -4226,11 +4437,13 @@ TRAP_IGNORE( SetMSKIconL() ); SizeChanged(); iFlags.Clear(ECbaChangeRecordedColor); + _AKNTRACE_FUNC_EXIT; } void CEikCba::DoLayoutChange() { + _AKNTRACE_FUNC_ENTER; SetBoundingRect( TRect() ); UpdateFonts(); @@ -4274,21 +4487,26 @@ } iFlags.Clear( ECbaChangeRecordedLayout ); + _AKNTRACE_FUNC_EXIT; } void CEikCba::HandleScrollEventL(CEikScrollBar* /*aScrollBar*/, TEikScrollEvent /*aEventType*/) { + _AKNTRACE_FUNC_ENTER; User::Leave(KErrNotSupported); + _AKNTRACE_FUNC_EXIT; } TTypeUid::Ptr CEikCba::MopSupplyObject(TTypeUid aId) { + _AKNTRACE_FUNC_ENTER; if (aId.iUid == MAknsControlContext::ETypeId) { if ( AknLayoutFlags() & EAknLayoutCbaInControlPane || AknLayoutFlags() & EAknLayoutCbaInRightPane ) { + _AKNTRACE_FUNC_EXIT; return MAknsControlContext::SupplyMopObject( aId, iMLBgContext ); } else @@ -4296,34 +4514,38 @@ // Always provide top object to mop-chain. // Bottom is parent of Top, so bottom is re-drawn // automatically when top is drawn. + _AKNTRACE_FUNC_EXIT; return MAknsControlContext::SupplyMopObject( aId, iStaconBgContextTop ); } } if ( aId.iUid == CEikCba::ETypeId ) { + _AKNTRACE_FUNC_EXIT; return aId.MakePtr( this ); } + _AKNTRACE_FUNC_EXIT; return CEikControlGroup::MopSupplyObject(aId); } void CEikCba::Draw( const TRect& aRect ) const { + _AKNTRACE_FUNC_ENTER; // Embedded CBA doesn't draw anything if ( iFlags.IsSet( ECbaInsideDialog ) ) { return; } - if ( iCbaFlags & EEikCbaFlagSemiTransparent ) - { - CWindowGc &gc = SystemGc(); - - iExtension->DrawSemiTransparencyL( gc, Rect() ); - return; - } +// if ( iCbaFlags & EEikCbaFlagSemiTransparent ) +// { +// CWindowGc &gc = SystemGc(); +// +// iExtension->DrawSemiTransparency( gc, Rect() ); +// return; +// } MAknsSkinInstance* skin = AknsUtils::SkinInstance(); @@ -4399,14 +4621,18 @@ CEikCbaButton* button2 = static_cast( (*iControlArray)[KControlArrayCBAButton2Posn].iControl ); - if ( IsMskEnabledLayoutActive() ) + if ( IsMskEnabledLayoutActive() ) { CEikCbaButton* buttonMSK = static_cast( (*iControlArray)[KControlArrayCBAButtonMSKPosn].iControl ); CFbsBitmap* middleMask = AknsUtils::GetCachedBitmap( skin, KAknsIIDQgnIndiSctrlSkMaskMiddlePrt ); - AknIconUtils::SetSize( middleMask, middleSKSize, EAspectRatioNotPreserved ); + if ( middleMask ) + { + AknIconUtils::SetSize( middleMask, + middleSKSize, EAspectRatioNotPreserved ); + } if( buttonMSK && buttonMSK->PressedDown() ) { @@ -4724,6 +4950,7 @@ } } gc.SetOpaque( EFalse ); + _AKNTRACE_FUNC_EXIT; } @@ -4733,6 +4960,8 @@ // CCoeControl* CEikCba::ButtonById( TInt aCommandId ) const { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_EXIT; return ControlById( aCommandId ); } @@ -4743,27 +4972,33 @@ // void CEikCba::CreateScrollBarFrameL() { + _AKNTRACE_FUNC_ENTER; if ( !iSBFrame ) { iSBFrame = new (ELeave) CEikCbaScrollBarFrame( this, this, ETrue ); } iSBFrame->ConstructL(); + _AKNTRACE_FUNC_EXIT; } TEikGroupControl CEikCba::VScrollBarAsGroupControl() { + _AKNTRACE_FUNC_ENTER; // Extracts vertical scroll bar from the scroll bar frame. TEikGroupControl groupCtrl(iSBFrame->VerticalScrollBar(), 0, KCbaScrollBarButtonWidth,TEikGroupControl::ESetLength); + _AKNTRACE_FUNC_EXIT; return groupCtrl; } void CEikCba::InsertScrollBarL() { + _AKNTRACE_FUNC_ENTER; TEikGroupControl SBGroupCtrl = VScrollBarAsGroupControl(); // Insert vertical scroll bar into cba control group. InsertControlL(SBGroupCtrl, KControlArrayScrollBarPosn); + _AKNTRACE_FUNC_EXIT; } @@ -4773,6 +5008,7 @@ // void CEikCba::CreateArrowHeadScrollBarL() { + _AKNTRACE_FUNC_ENTER; if ( iSBFrame ) { iSBFrame->SwitchToArrowHeadScrollBarL(); @@ -4783,21 +5019,25 @@ } InsertScrollBarL(); } + _AKNTRACE_FUNC_EXIT; } void CEikCba::SizeChanged() { + _AKNTRACE_FUNC_ENTER; if ( iFlags.IsSet( ECbaInsideDialog ) ) { Window().SetNonFading( EFalse ); SizeChangedInsideDialog(); + _AKNTRACE_FUNC_EXIT; return; } else if ( iFlags.IsSet( ECbaEmbedded ) ) { Window().SetNonFading( EFalse ); SizeChangedInPopup(); + _AKNTRACE_FUNC_EXIT; return; } @@ -4862,6 +5102,7 @@ // Broadcast current state to CEikCbaButtons BroadcastPostingTransparency( enabled ); } + _AKNTRACE_FUNC_EXIT; } // ----------------------------------------------------------------------------- @@ -4871,6 +5112,7 @@ // void CEikCba::CheckSkinAndUpdateContext() { + _AKNTRACE_FUNC_ENTER; if (AknsUtils::SkinInstance()) { // Use ENullBrush if there is skin background available. @@ -4880,18 +5122,24 @@ { iBrushAndPenContext->SetBrushStyle(CGraphicsContext::ESolidBrush); } + _AKNTRACE_FUNC_EXIT; } void CEikCba::Reserved_MtsmPosition() { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_EXIT; } void CEikCba::Reserved_MtsmObject() { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_EXIT; } TInt CEikCba::AknLayoutFlags() const { + _AKNTRACE_FUNC_ENTER; TInt flags = 0; TBool controlPane = ETrue; @@ -4960,6 +5208,7 @@ flags |= EAknLayoutCbaInRightPane; } + _AKNTRACE_FUNC_EXIT; return flags; } @@ -4970,6 +5219,7 @@ // void CEikCba::SizeChangedInControlPane() { + _AKNTRACE_FUNC_ENTER; TRect screen; AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EScreen, screen ); @@ -5051,7 +5301,7 @@ rect, AknLayoutScalable_Avkon::bg_sctrl_sk_pane_cp1().LayoutLine() ); frameSizeChanged = layoutRect.Rect() != iExtension->iRightFrameOuterRect; - iExtension->iRightFrameOuterRect = layoutRect.Rect(); + iExtension->iRightFrameOuterRect = layoutRect.Rect(); layoutRect.LayoutRect( iExtension->iRightFrameOuterRect, AknLayoutScalable_Avkon::bg_sctrl_sk_pane_g1() .LayoutLine() ); @@ -5446,11 +5696,13 @@ } AknsUtils::RegisterControlPosition( this, posInScreen.iTl ); + _AKNTRACE_FUNC_EXIT; } void CEikCba::SizeChangedInStaconPane() { + _AKNTRACE_FUNC_ENTER; TRect screen( iAvkonAppUi->ApplicationRect() ); TBool softKeysUpAndDownMirrored = EFalse; @@ -5799,6 +6051,7 @@ } AknsUtils::RegisterControlPosition( this, TPoint(0,0) ); + _AKNTRACE_FUNC_EXIT; } @@ -5808,6 +6061,7 @@ // void CEikCba::SizeChangedInRightPane() { + _AKNTRACE_FUNC_ENTER; TRect screen; AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EScreen, screen ); @@ -6072,12 +6326,14 @@ } AknsUtils::RegisterControlPosition( this, TPoint( 0, 0 ) ); + _AKNTRACE_FUNC_EXIT; } void CEikCba::SizeChangedInsideDialog() { + _AKNTRACE_FUNC_ENTER; // Give both LSK and RSK buttons half of the available space. // if ( iControlArray ) @@ -6100,11 +6356,13 @@ (*iControlArray)[KControlArrayCBAButton2Posn].iControl->SetRect( buttonRect2 ); } } + _AKNTRACE_FUNC_EXIT; } void CEikCba::SizeChangedInPopup() { + _AKNTRACE_FUNC_ENTER; TRAP_IGNORE( iExtension->UpdateSoftkeyFrameL( EFalse ) ); TAknLayoutRect layoutRect; @@ -6132,7 +6390,6 @@ AknLayoutScalable_Avkon::bg_sctrl_sk_pane_g1() .LayoutLine() ); iExtension->iLeftFrameInnerRect = layoutRect.Rect(); - UpdateLabels( ETrue ); layoutRect.LayoutRect( iExtension->iRightFrameOuterRect, AknLayoutScalable_Avkon::bg_sctrl_sk_pane_g1() @@ -6150,11 +6407,13 @@ msk->SetRect( TRect() ); } } + _AKNTRACE_FUNC_EXIT; } void CEikCba::UpdateFonts() { + _AKNTRACE_FUNC_ENTER; // Control pane: // Use the layout dll to get the right font for the CBA. TAknTextLineLayout layout( @@ -6203,6 +6462,7 @@ iRightPaneLabelFont = AknLayoutUtils::FontFromId( rightPaneTextLayout.FontId(), rightPaneCustomFont ); + _AKNTRACE_FUNC_EXIT; } // Enhanced CBA @@ -6215,6 +6475,7 @@ #ifdef RD_ENHANCED_CBA EXPORT_C void CEikCba::OfferCommandListL(const RArray& aCommandList) { + _AKNTRACE_FUNC_ENTER; if( !iCommandTable ) { iCommandTable = CEikCommandTable::NewL(); @@ -6351,11 +6612,14 @@ } CleanupStack::PopAndDestroy(); // previousIds + _AKNTRACE_FUNC_EXIT; } #else // !RD_ENHANCED_CBA EXPORT_C void CEikCba::OfferCommandListL(const RArray& /*aCommandList*/) { + _AKNTRACE_FUNC_ENTER; User::Leave( KErrNotSupported ); + _AKNTRACE_FUNC_EXIT; } #endif // RD_ENHANCED_CBA @@ -6367,6 +6631,7 @@ #ifdef RD_ENHANCED_CBA EXPORT_C void CEikCba::OfferCommandListL(const TInt aResourceId) { + _AKNTRACE_FUNC_ENTER; if ( !iCommandTable ) // This is needed if cba was not constructed with enhanced cba. { iCommandTable = CEikCommandTable::NewL(); @@ -6512,11 +6777,14 @@ } CleanupStack::PopAndDestroy(); // previousIds + _AKNTRACE_FUNC_EXIT; } #else // !RD_ENHANCED_CBA EXPORT_C void CEikCba::OfferCommandListL(const TInt /*aResourceId*/) { + _AKNTRACE_FUNC_ENTER; User::Leave( KErrNotSupported ); + _AKNTRACE_FUNC_EXIT; } #endif // RD_ENHANCED_CBA @@ -6528,11 +6796,15 @@ #ifdef RD_ENHANCED_CBA EXPORT_C TBool CEikCba::IsCommandInGroup(const TInt aCommandId) const { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_EXIT; return ButtonById(aCommandId) ? ETrue : EFalse; // check the iControlArray } #else // !RD_ENHANCED_CBA EXPORT_C TBool CEikCba::IsCommandInGroup(const TInt /*aCommandId*/) const { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_EXIT; return EFalse; } #endif // RD_ENHANCED_CBA @@ -6546,20 +6818,26 @@ #ifdef RD_ENHANCED_CBA EXPORT_C void CEikCba::ReplaceCommand(const TInt aReplaceCommandId, const TInt aResourceId) { + _AKNTRACE_FUNC_ENTER; TInt index = IndexById( aReplaceCommandId ); TRAPD(err, SetCommandL( index, aResourceId ) ); + _AKNTRACE_FUNC_EXIT; } #else EXPORT_C void CEikCba::ReplaceCommand(const TInt /*aReplaceCommandId*/, const TInt /*aResourceId*/) { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_EXIT; } #endif // RD_ENHANCED_CBA void CEikCba::HandleControlEventL( CCoeControl* aControl, TCoeEvent aEventType ) { + _AKNTRACE_FUNC_ENTER; if ( !iFlags.IsSet( ECbaInsideDialog ) ) { //User::Panic( _L( "CBA inside dialog" ), KErrNotSupported ); + _AKNTRACE_FUNC_EXIT; return; } @@ -6594,11 +6872,13 @@ iCommandObserver->ProcessCommandL( command ); } } + _AKNTRACE_FUNC_EXIT; } void CEikCba::MakeVisible( TBool aVisible ) { + _AKNTRACE_FUNC_ENTER; if ( aVisible ) { TBool redrawNeeded( EFalse ); @@ -6680,6 +6960,7 @@ } ReportContentChangedEvent(); + _AKNTRACE_FUNC_EXIT; } @@ -6689,9 +6970,11 @@ // ----------------------------------------------------------------------------- void CEikCba::DoSetLayers( const TAknsItemID& aIID ) { + _AKNTRACE_FUNC_ENTER; // Skin background is not drawn by embedded CBA. if ( iFlags.IsSet( ECbaEmbedded ) ) { + _AKNTRACE_FUNC_EXIT; return; } @@ -6910,11 +7193,13 @@ } DrawDeferred(); + _AKNTRACE_FUNC_EXIT; } void CEikCba::LayoutControl( CCoeControl* aControl, const TRect& aRect ) { + _AKNTRACE_FUNC_ENTER; if ( !iFlags.IsSet( ECbaInsideDialog ) ) { TRect rect( aRect ); @@ -6929,10 +7214,12 @@ aControl->SetRect( rect ); aControl->ComponentControl( 0 )->SetRect( rect ); } + _AKNTRACE_FUNC_EXIT; } void CEikCba::BroadcastPostingTransparency( TBool aEnable ) { + _AKNTRACE_FUNC_ENTER; // Communicate change to CBA buttons. for ( TInt i = 0; i < iControlArray->Count(); i++ ) { @@ -6946,6 +7233,7 @@ } } } + _AKNTRACE_FUNC_EXIT; } @@ -6956,6 +7244,7 @@ // void CEikCba::SetFadeState() { + _AKNTRACE_FUNC_ENTER; TBool canBeFaded = IsEmpty() && !( ( iCbaFlags & EEikCbaFlagTransparent ) || ( iExtension && iExtension->iEnablePostingTransparency ) ); @@ -6966,6 +7255,7 @@ { Window().SetFaded( canBeFaded, RWindowTreeNode::EFadeIncludeChildren ); } + _AKNTRACE_FUNC_EXIT; } @@ -6976,6 +7266,7 @@ // void CEikCba::UpdateLabels( TBool aDrawDeferred ) { + _AKNTRACE_FUNC_ENTER; if ( iControlArray->Count() != 0) { CCoeControl *leftSoftkey = ( *iControlArray ) @@ -7098,6 +7389,7 @@ DrawDeferred(); } } + _AKNTRACE_FUNC_EXIT; } @@ -7109,6 +7401,7 @@ CEikButtonGroupContainer& aButtonGroupContainer, TBool aEnable ) { + _AKNTRACE_FUNC_ENTER; CEikCba* cba = dynamic_cast( aButtonGroupContainer.ButtonGroup() ); TInt ret = KErrNone; if ( cba ) @@ -7124,6 +7417,7 @@ cba->EnablePostingTransparency( aEnable ); } } + _AKNTRACE_FUNC_EXIT; return ret; } @@ -7134,6 +7428,7 @@ // void CEikCba::EnablePostingTransparency( TBool aEnable ) { + _AKNTRACE_FUNC_ENTER; if ( iExtension ) { if ( iExtension->iEnablePostingTransparency != aEnable ) @@ -7166,6 +7461,7 @@ DrawDeferred(); } } + _AKNTRACE_FUNC_EXIT; } @@ -7176,6 +7472,7 @@ // EXPORT_C TBool CEikCba::IsEmpty() const { + _AKNTRACE_FUNC_ENTER; TBool isEmpty( ETrue ); if ( iFlags.IsSet( ECbaInsideDialog ) ) @@ -7210,6 +7507,7 @@ } } + _AKNTRACE_FUNC_EXIT; return isEmpty; } @@ -7221,6 +7519,8 @@ // TBitFlags CEikCba::Flags() { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_EXIT; return iFlags; } @@ -7232,10 +7532,12 @@ // void CEikCba::SetContentObserver( TCallBack aCallBack ) { + _AKNTRACE_FUNC_ENTER; if ( iExtension ) { iExtension->iContentObserver = aCallBack; } + _AKNTRACE_FUNC_EXIT; } @@ -7247,6 +7549,7 @@ // void CEikCba::ReportContentChangedEvent() { + _AKNTRACE_FUNC_ENTER; if ( ItemSpecificSoftkey() ) { UpdateItemSpecificSoftkey( @@ -7255,6 +7558,7 @@ if ( !iFlags.IsSet( ECbaEmbedded ) ) { + _AKNTRACE_FUNC_EXIT; return; } @@ -7282,6 +7586,7 @@ iExtension->iContentObserver.CallBack(); // return value ignored } } + _AKNTRACE_FUNC_EXIT; } // --------------------------------------------------------------------------- @@ -7294,6 +7599,7 @@ CWindowGc& aGc, CFbsBitmap* /*aMask*/ ) const { + _AKNTRACE_FUNC_ENTER; CEikCbaButton* button = static_cast( aGroupControl.iControl ); @@ -7323,24 +7629,29 @@ KAknsIIDQgnFrSctrlSkButton, KAknsIIDQgnFrSctrlSkButtonCenter); } + _AKNTRACE_FUNC_EXIT; } TBool CEikCba::UpdateIconL() { + _AKNTRACE_FUNC_ENTER; if ( iFlags.IsSet( ECbaInsideDialog ) ) { + _AKNTRACE_FUNC_EXIT; return EFalse; } if ( !iExtension->iIfMskIconSet || !MskAllowed() ) { + _AKNTRACE_FUNC_EXIT; return EFalse; } MAknsSkinInstance* skin = AknsUtils::SkinInstance(); if ( !skin ) { + _AKNTRACE_FUNC_EXIT; return EFalse; } @@ -7349,6 +7660,7 @@ CEikCbaButton *button = static_cast( gCtrl.iControl ); if ( !button ) { + _AKNTRACE_FUNC_EXIT; return EFalse; } @@ -7395,8 +7707,9 @@ button->SetContainerWindowL( *this ); + _AKNTRACE_FUNC_EXIT; return ETrue; - + } @@ -7408,6 +7721,8 @@ // TBool CEikCba::MskAllowed() const { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_EXIT; return ( iMSKEnabledInPlatform && AknLayoutUtils::MSKEnabled() && IsMskEnabledLayoutActive() ); @@ -7422,6 +7737,7 @@ TBool CEikCba::SoftkeyStatusChangeAllowed( TInt aSoftkeyPosition, TBool aDisabled ) { + _AKNTRACE_FUNC_ENTER; TBool allowChange( ETrue ); if ( aSoftkeyPosition == KControlArrayCBAButton1Posn ) { @@ -7439,6 +7755,7 @@ } } } + _AKNTRACE_FUNC_EXIT; return allowChange; } @@ -7450,6 +7767,7 @@ // TEikGroupControl* CEikCba::ItemSpecificSoftkey() const { + _AKNTRACE_FUNC_ENTER; TEikGroupControl* lsk( NULL ); if ( iFlags.IsSet( ECbaItemSpecificSoftkeyInUse ) ) { @@ -7461,6 +7779,7 @@ lsk = &leftSoftkey; } } + _AKNTRACE_FUNC_EXIT; return lsk; } @@ -7472,6 +7791,7 @@ // void CEikCba::UpdateItemSpecificSoftkey( TBool aVisibleCollection ) { + _AKNTRACE_FUNC_ENTER; if ( iFlags.IsSet( ECbaSingleClickEnabled ) && iExtension && iExtension->iItemActionMenu ) { @@ -7484,6 +7804,7 @@ UpdateItemSpecificSoftkey( *leftSk->iControl, enableSk ); } } + _AKNTRACE_FUNC_EXIT; } @@ -7494,6 +7815,7 @@ // void CEikCba::UpdateItemSpecificSoftkey( CCoeControl& aControl, TBool aEnable ) { + _AKNTRACE_FUNC_ENTER; TBool skEnabled( aControl.IsVisible() && !aControl.IsDimmed() ); TBool changeState( EFalse ); if ( !aEnable ) @@ -7525,6 +7847,7 @@ aControl.DrawDeferred(); } } + _AKNTRACE_FUNC_EXIT; } @@ -7534,6 +7857,7 @@ CEikCbaButton::~CEikCbaButton() { + _AKNTRACE_FUNC_ENTER; AKNTASHOOK_REMOVE(); delete iLabel; if ( iImage ) @@ -7545,10 +7869,12 @@ delete iButtonOptions; delete iText; + _AKNTRACE_FUNC_EXIT; } void CEikCbaButton::ConstructL(TGulAlignmentValue aAlignment) { + _AKNTRACE_FUNC_ENTER; iLabel = new(ELeave) CEikLabel; iPressedDown = EFalse; iLabel->SetBufferReserveLengthL(KMaxCbaLabelLength); @@ -7563,11 +7889,14 @@ iLabel->MakeVisible( EFalse ); } AKNTASHOOK_ADDL( this, "CEikCbaButton" ); + _AKNTRACE_FUNC_EXIT; } void CEikCbaButton::AddCommandL(const TDesC& aText) { + _AKNTRACE_FUNC_ENTER; UpdateLabelText(aText); + _AKNTRACE_FUNC_EXIT; } struct STempCleanup @@ -7578,6 +7907,7 @@ LOCAL_C void CleanupTemp(TAny* aPtr) { + _AKNTRACE_FUNC_ENTER; STempCleanup& temp = *(STempCleanup*)aPtr; const TInt count = temp.iText->Count(); if (temp.iButtonOptions->Count() == count) @@ -7585,10 +7915,12 @@ temp.iButtonOptions->Delete(count - 1); } temp.iText->Delete(count - 1); + _AKNTRACE_FUNC_EXIT; } void CEikCbaButton::PushCommandL(TInt aCommandId,const TDesC& aText) { + _AKNTRACE_FUNC_ENTER; if (!iButtonOptions) { iButtonOptions = new(ELeave) CArrayFixFlat(1); @@ -7611,12 +7943,15 @@ iButtonOptions->AppendL(options); UpdateLabelText(aText); CleanupStack::Pop(); // temp + _AKNTRACE_FUNC_EXIT; } TInt CEikCbaButton::PopCommand() { + _AKNTRACE_FUNC_ENTER; if (!iButtonOptions) { + _AKNTRACE_FUNC_EXIT; return -1; } @@ -7625,6 +7960,7 @@ if (count < 0) { + _AKNTRACE_FUNC_EXIT; return -1; } @@ -7649,13 +7985,16 @@ { iImage->DrawNow(); } + _AKNTRACE_FUNC_EXIT; return buttonOptions.iCommandId; } void CEikCbaButton::RemoveCommand(TInt aCommandId) { + _AKNTRACE_FUNC_ENTER; if (!iButtonOptions) { + _AKNTRACE_FUNC_EXIT; return; } TInt index = IndexFromCommandId(aCommandId); @@ -7671,12 +8010,15 @@ iText = NULL; } } + _AKNTRACE_FUNC_EXIT; } void CEikCbaButton::RemovePreviousCommand() { + _AKNTRACE_FUNC_ENTER; if (!iButtonOptions) { + _AKNTRACE_FUNC_EXIT; return; } TInt index = iButtonOptions->Count() - 2; @@ -7685,26 +8027,31 @@ iButtonOptions->Delete(index); iText->Delete(index); } + _AKNTRACE_FUNC_EXIT; } TInt CEikCbaButton::IndexFromCommandId(TInt aCommandId) { + _AKNTRACE_FUNC_ENTER; TInt index; TKeyArrayFix key(0, ECmpTInt); SButtonOptions options; options.iCommandId = aCommandId; if (iButtonOptions->Find(options, key, index) == KErrNone) { + _AKNTRACE_FUNC_EXIT; return index; } else { + _AKNTRACE_FUNC_EXIT; return KErrNotFound; - } + } } void CEikCbaButton::SetContainerWindowL(const CCoeControl& aContainer) { + _AKNTRACE_FUNC_ENTER; CCoeControl::SetContainerWindowL(aContainer); if (!iDoImage) { @@ -7714,40 +8061,50 @@ { iImage->SetContainerWindowL(aContainer); } + _AKNTRACE_FUNC_EXIT; } void CEikCbaButton::ConstructFromResourceL(TResourceReader& aReader, TGulAlignmentValue anAlignment) { + _AKNTRACE_FUNC_ENTER; ConstructL(anAlignment); UpdateLabelText(aReader.ReadTPtrC()); aReader.ReadTPtrC(); // bmp filename aReader.ReadInt16(); // bmp id aReader.ReadInt16(); // bmp mask id + _AKNTRACE_FUNC_EXIT; } TSize CEikCbaButton::MinimumSize() { + _AKNTRACE_FUNC_ENTER; if (!iDoImage) { + _AKNTRACE_FUNC_EXIT; return iLabel->MinimumSize(); } else { + _AKNTRACE_FUNC_EXIT; return iImage->MinimumSize(); } } TInt CEikCbaButton::CountComponentControls() const { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_EXIT; return 1; } CCoeControl* CEikCbaButton::ComponentControl(TInt aIndex) const { + _AKNTRACE_FUNC_ENTER; if (aIndex==0) { if (!iDoImage) { + _AKNTRACE_FUNC_EXIT; return iLabel; } else @@ -7767,6 +8124,7 @@ return iImage; } } + _AKNTRACE_FUNC_EXIT; return 0; } @@ -7777,25 +8135,31 @@ // void CEikCbaButton::SizeChanged() { + _AKNTRACE_FUNC_ENTER; // Resizing is done at CEikCba::SizeChanged(). // We cannot resize here because this control has wrong // coordinate system available. - + _AKNTRACE_FUNC_EXIT; } EXPORT_C void CEikCbaButton::HandlePointerEventL(const TPointerEvent& aPointerEvent) { + _AKNTRACE_FUNC_ENTER; CCoeControl::HandlePointerEventL(aPointerEvent); + _AKNTRACE_FUNC_EXIT; } EXPORT_C void* CEikCbaButton::ExtensionInterface( TUid /*aInterface*/ ) { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_EXIT; return NULL; } void CEikCbaButton::SetDimmed(TBool aDimmed) { + _AKNTRACE_FUNC_ENTER; CCoeControl::SetDimmed(aDimmed); if (!iDoImage) { @@ -7806,6 +8170,7 @@ // Drawing dimmed CEikImages don't work (problem in uiklaf). //iImage->SetDimmed(aDimmed); } + _AKNTRACE_FUNC_EXIT; } @@ -7815,6 +8180,7 @@ // void CEikCbaButton::UpdateLabelText( TPtrC aLabelText ) { + _AKNTRACE_FUNC_ENTER; // Updates the label text with the given label, using tab delimited // label text to identify normal / alternative labels. if ( aLabelText.Length() > KMaxCbaLabelLength ) @@ -7847,20 +8213,24 @@ { TruncateLabelText(); } + _AKNTRACE_FUNC_EXIT; } void CEikCbaButton::SetTextBitmapMode( TBool aEnableBitmap ) { + _AKNTRACE_FUNC_ENTER; iUseTextBitmap = aEnableBitmap; if ( iLabel ) { iLabel->MakeVisible( !aEnableBitmap ); } + _AKNTRACE_FUNC_EXIT; } void CEikCbaButton::DrawToContext( CBitmapContext& aContext, CBitmapContext& aMaskContext, const TPoint& aOffset ) const { + _AKNTRACE_FUNC_ENTER; if ( iLabel ) { // Draw text into EColor16MA bitmap @@ -7873,10 +8243,12 @@ aMaskContext.SetOrigin( -aOffset ); iLabel->DrawToContext( aMaskContext, &maskColor ); } + _AKNTRACE_FUNC_EXIT; } void CEikCbaButton::SwitchToShortTextL(TBool aShortText) { + _AKNTRACE_FUNC_ENTER; if (aShortText) { iLabel->SetTextL(iShortLabelText); @@ -7899,24 +8271,31 @@ { iImage->DrawDeferred(); } + _AKNTRACE_FUNC_EXIT; } void CEikCbaButton::SetLabelFont(const CFont* aLabelFont) { + _AKNTRACE_FUNC_ENTER; iLabel->SetFont(aLabelFont); + _AKNTRACE_FUNC_EXIT; } void CEikCbaButton::TruncateLabelText() { + _AKNTRACE_FUNC_ENTER; // Truncation removed from here, as it was not bidi-text compatible. // Let CEikLabel handle truncation instead. iLabel->CropText(); + _AKNTRACE_FUNC_EXIT; } TBool CEikCbaButton::IsEmptyText() const { + _AKNTRACE_FUNC_ENTER; if ( iDoImage ) { + _AKNTRACE_FUNC_EXIT; return EFalse; } @@ -7932,25 +8311,32 @@ } } + _AKNTRACE_FUNC_EXIT; return allSpaces; } void CEikCbaButton::ConstructEmptyButtonL() { + _AKNTRACE_FUNC_ENTER; ConstructL( EHRightVCenter ); // creates label _LIT(KEmptyText, ""); TPtrC16 ptr(KEmptyText); UpdateLabelText( ptr ); + _AKNTRACE_FUNC_EXIT; } TBool CEikCbaButton::PressedDown() const { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_EXIT; return iPressedDown; } void CEikCbaButton::SetPressedDown( const TBool aPressedDown ) { + _AKNTRACE_FUNC_ENTER; iPressedDown = aPressedDown; + _AKNTRACE_FUNC_EXIT; } // ----------------------------------------------------------------------------- @@ -7963,6 +8349,7 @@ CEikImage& aImage, TBool aLeft) { // static + _AKNTRACE_FUNC_ENTER; TInt commandPos = aLeft ? 0 : 2; TInt commandId = aButtonGroupContainer->ButtonGroup()->CommandId(commandPos); CEikCbaButton* cbaButton = (CEikCbaButton*) aButtonGroupContainer->ControlOrNull(commandId); @@ -7977,6 +8364,7 @@ cbaButton->DrawNow(); aButtonGroupContainer->DrawNow(); } + _AKNTRACE_FUNC_EXIT; } // ----------------------------------------------------------------------------- @@ -7988,6 +8376,7 @@ CEikButtonGroupContainer* aButtonGroupContainer, TBool aLeft) { // static + _AKNTRACE_FUNC_ENTER; TInt commandPos = aLeft ? 0 : 2; TInt commandId = aButtonGroupContainer->ButtonGroup()->CommandId(commandPos); CEikCbaButton* cbaButton = (CEikCbaButton*) aButtonGroupContainer->ControlOrNull(commandId); @@ -8003,6 +8392,7 @@ cbaButton->DrawNow(); aButtonGroupContainer->DrawNow(); } + _AKNTRACE_FUNC_EXIT; } // ----------------------------------------------------------------------------- @@ -8012,6 +8402,7 @@ // void CEikCbaButton::SetImage(CEikImage &aImage) { + _AKNTRACE_FUNC_ENTER; iDoImage = ETrue; if ( iImage ) @@ -8030,6 +8421,7 @@ { ReplaceImageByLabel(); } + _AKNTRACE_FUNC_EXIT; } // ----------------------------------------------------------------------------- @@ -8040,6 +8432,7 @@ // void CEikCbaButton::PrepareImageL() { + _AKNTRACE_FUNC_ENTER; // 50% transparent pressed down image is made with a alternative mask // which is created when a image is set to CEikCbaButton. // Original mask is copied and each of its pixels color components is @@ -8050,6 +8443,7 @@ if ( !iMask ) { + _AKNTRACE_FUNC_EXIT; return; } @@ -8085,6 +8479,7 @@ CleanupStack::PopAndDestroy( device ); // device delete gc; + _AKNTRACE_FUNC_EXIT; } // ----------------------------------------------------------------------------- // CEikCbaButton::ReplaceImageByLabel @@ -8093,6 +8488,7 @@ // void CEikCbaButton::ReplaceImageByLabel() { + _AKNTRACE_FUNC_ENTER; iDoImage = EFalse; if ( iImage ) { @@ -8103,6 +8499,7 @@ delete iSfeMask; iSfeMask = NULL; } + _AKNTRACE_FUNC_EXIT; } // @@ -8114,6 +8511,8 @@ // ----------------------------------------------------------------------------- CEikEnhancedCbaButton::CEikEnhancedCbaButton() { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_EXIT; } // ----------------------------------------------------------------------------- @@ -8121,6 +8520,8 @@ // ----------------------------------------------------------------------------- CEikEnhancedCbaButton::~CEikEnhancedCbaButton() { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_EXIT; } // ----------------------------------------------------------------------------- @@ -8130,11 +8531,15 @@ #ifdef RD_ENHANCED_CBA void CEikEnhancedCbaButton::SetCommandType( const TInt aCommandType ) { + _AKNTRACE_FUNC_ENTER; iCommandType = aCommandType; + _AKNTRACE_FUNC_EXIT; } #else void CEikEnhancedCbaButton::SetCommandType( const TInt /*aCommandType*/ ) { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_EXIT; } #endif // RD_ENHANCED_CBA // ----------------------------------------------------------------------------- @@ -8144,6 +8549,8 @@ TInt CEikEnhancedCbaButton::CommandType() const { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_EXIT; #ifdef RD_ENHANCED_CBA return iCommandType; #else @@ -8157,6 +8564,8 @@ // ----------------------------------------------------------------------------- TInt CEikEnhancedCbaButton::CommandId() const { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_EXIT; #ifdef RD_ENHANCED_CBA return iCommandId; #else @@ -8171,6 +8580,7 @@ #ifdef RD_ENHANCED_CBA void CEikEnhancedCbaButton::ConstructFromResourceL(TResourceReader& aReader) { + _AKNTRACE_FUNC_ENTER // Alignment set to right. ConstructL( EHRightVCenter ); // creates label iCommandType = aReader.ReadUint8(); @@ -8181,10 +8591,13 @@ aReader.ReadTPtrC(); // bmp filename aReader.ReadInt16(); // bmp id aReader.ReadInt16(); // bmp mask id + _AKNTRACE_FUNC_EXIT; } #else void CEikEnhancedCbaButton::ConstructFromResourceL(TResourceReader&) { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_EXIT; } #endif // RD_ENHANCED_CBA @@ -8193,6 +8606,8 @@ // ----------------------------------------------------------------------------- void CEikEnhancedCbaButton::ConstructEmptyButtonL() { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_EXIT; #ifdef RD_ENHANCED_CBA ConstructL( EHRightVCenter ); // creates label iCommandType = EEikCommandTypeAnyCommand; @@ -8209,6 +8624,8 @@ // ----------------------------------------------------------------------------- TPtrC* CEikEnhancedCbaButton::LabelText() { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_EXIT; #ifdef RD_ENHANCED_CBA return &iLongLabelText; #else @@ -8222,6 +8639,8 @@ CEikCommandTable* CEikCommandTable::NewL() { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_EXIT; #ifdef RD_ENHANCED_CBA CEikCommandTable* self = CEikCommandTable::NewLC(); CleanupStack::Pop( self ); @@ -8233,6 +8652,8 @@ CEikCommandTable* CEikCommandTable::NewLC() { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_EXIT; #ifdef RD_ENHANCED_CBA CEikCommandTable* self = new (ELeave) CEikCommandTable; CleanupStack::PushL( self ); @@ -8249,6 +8670,7 @@ // ----------------------------------------------------------------------------- void CEikCommandTable::ConstructL() { + _AKNTRACE_FUNC_ENTER; #ifdef RD_ENHANCED_CBA // Get the cba priority configuration TResourceReader reader; @@ -8274,6 +8696,7 @@ CleanupStack::PopAndDestroy(); // reader #endif + _AKNTRACE_FUNC_EXIT; } #ifdef RD_ENHANCED_CBA @@ -8287,6 +8710,7 @@ CEikCommandTable::~CEikCommandTable() { + _AKNTRACE_FUNC_ENTER; #ifdef RD_ENHANCED_CBA iCommandButtons.Reset(); // Reset array for(TInt i = 0; i < iPriorities.Count(); i++) @@ -8295,6 +8719,7 @@ } iPriorities.Reset(); #endif + _AKNTRACE_FUNC_EXIT; } // ----------------------------------------------------------------------------- @@ -8304,11 +8729,14 @@ #ifndef RD_ENHANCED_CBA TInt CEikCommandTable::AddCommandL(CEikEnhancedCbaButton* /*aButton*/) { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_EXIT; return KErrNone; } #else TInt CEikCommandTable::AddCommandL(CEikEnhancedCbaButton* aButton) { + _AKNTRACE_FUNC_ENTER; // CommandType tells in which button this command should be placed TInt commandType( aButton->CommandType() ); TInt index( KErrNotFound ); @@ -8349,6 +8777,7 @@ delete aButton; aButton = NULL; } + _AKNTRACE_FUNC_EXIT; return KErrNone; } #endif // RD_ENHANCED_CBA @@ -8360,9 +8789,11 @@ #ifndef RD_ENHANCED_CBA TBool CEikCommandTable::IsCommandPlaced(const TInt /*aCommandId*/) const { + _AKNTRACE_FUNC_ENTER; #else // !RD_ENHANCED_CBA TBool CEikCommandTable::IsCommandPlaced(const TInt aCommandId) const { + _AKNTRACE_FUNC_ENTER; TInt count( iCommandButtons.Count() ); for ( TInt i = 0; i < count; i++ ) @@ -8371,11 +8802,13 @@ { if ( iCommandButtons[i]->CommandId() == aCommandId ) { + _AKNTRACE_FUNC_EXIT; return ETrue; } } } #endif // RD_ENHANCED_CBA + _AKNTRACE_FUNC_EXIT; return EFalse; // if no match for command id } @@ -8387,12 +8820,15 @@ #ifndef RD_ENHANCED_CBA void CEikCommandTable::ReplaceCommandL( const TInt /*aCommandId*/, const TInt /*aResourceId*/ ) { + _AKNTRACE_FUNC_ENTER; #else // !RD_ENHANCED_CBA void CEikCommandTable::ReplaceCommandL( const TInt aCommandId, const TInt aResourceId ) { + _AKNTRACE_FUNC_ENTER; // If the command is not in the command table, return. if( !IsCommandPlaced( aCommandId ) ) { + _AKNTRACE_FUNC_EXIT; return; } @@ -8431,6 +8867,7 @@ // Delete old button. delete oldButton; #endif // !RD_ENHANCED_CBA + _AKNTRACE_FUNC_EXIT; } // ----------------------------------------------------------------------------- @@ -8441,11 +8878,15 @@ #ifdef RD_ENHANCED_CBA CEikEnhancedCbaButton* CEikCommandTable::Command( const TInt aCommandIndex ) { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_EXIT; return iCommandButtons[aCommandIndex]; } #else // RD_ENHANCED_CBA CEikEnhancedCbaButton* CEikCommandTable::Command( const TInt /*aCommandIndex*/ ) { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_EXIT; return NULL; } #endif // RD_ENHANCED_CBA @@ -8455,6 +8896,8 @@ // ----------------------------------------------------------------------------- void CEikCommandTable::Reset() { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE_FUNC_EXIT; #ifdef RD_ENHANCED_CBA iCommandButtons.Reset(); #endif // RD_ENHANCED_CBA @@ -8467,10 +8910,12 @@ CEikCba* aCba, TCallBack aCallBack ) { + _AKNTRACE_FUNC_ENTER; if ( aCba ) { aCba->SetContentObserver( aCallBack ); } + _AKNTRACE_FUNC_EXIT; } // End of file diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/EikStd/coctlsrc/eikspane.cpp --- a/uifw/EikStd/coctlsrc/eikspane.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/EikStd/coctlsrc/eikspane.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -69,8 +69,6 @@ /** This flag is used to turn redraw storing on/off in status pane. */ const TInt KEnableRedrawStoring = ETrue; -const TUid KActiveIdle2Uid = {0x102750F0}; - inline void CEikStatusPaneBase::TPaneCapabilities::SetPresent() { iFlags |= KStatusPaneCapsPresentBit; @@ -1178,26 +1176,21 @@ * @param aRedrawStoreHandler Pointer to the redraw store handler should * be also passed if @c aParentWindowGroup * is specified. + * @param aTransparent Whether or not the control is transparent. */ void SetParentWindowL( RWindowGroup* aParentWindowGroup, CCoeControl* aParentControl, - CRedrawStoreHandler* aRedrawStoreHandler ); + CRedrawStoreHandler* aRedrawStoreHandler, + TBool aTransparent ); /** - * Sets the background drawer for the container control. + * Sets the container control transparency. + * The background drawer is used if transparency is not enabled. * * @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(); + void SetTransparency( TBool aTransparent, + MCoeControlBackground* aBackground ); public: // From base class @c CCoeControl. @@ -1394,18 +1387,6 @@ SetMopParent( iEikonEnv->EikAppUi() ); CreateWindowL( aParent ); - - // This is added for homescreen transparency support. - if ( InIdleApplication() ) - { - if( KErrNone == Window().SetTransparencyAlphaChannel()) - Window().SetBackgroundColor(~0); - } - else - { - Window().SetBackgroundColor( - iEikonEnv->ControlColor( EColorStatusPaneBackground, *this ) ); - } // This helps for unsyncronized undimming problems. aRedrawStoreHandler.SetStore( &Window(), KEnableRedrawStoring ); @@ -2622,7 +2603,8 @@ void CEikStatusPaneContainer::SetParentWindowL( RWindowGroup* aParentWindowGroup, CCoeControl* aParentControl, - CRedrawStoreHandler* aRedrawStoreHandler ) + CRedrawStoreHandler* aRedrawStoreHandler, + TBool aTransparent ) { if ( aParentWindowGroup ) { @@ -2638,24 +2620,24 @@ 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 ); } + // Enable the transparency only in HomeScreen where it's needed + // for performance reasons. + if ( aTransparent && window.SetTransparencyAlphaChannel() == KErrNone ) + { + window.SetBackgroundColor( ~0 ); + } + else + { + window.SetBackgroundColor( + iEikonEnv->ControlColor( EColorStatusPaneBackground, *this ) ); + } + window.SetPointerGrab( ETrue ); window.SetShadowDisabled( ETrue ); window.SetNonFading( !LafStatusPaneContainer::AllowFading() ); @@ -2673,38 +2655,32 @@ // --------------------------------------------------------------------------- -// Sets the background drawer for the container control. +// Sets the container control transparency. // --------------------------------------------------------------------------- // -void CEikStatusPaneContainer::SetBackgroundDrawer( +void CEikStatusPaneContainer::SetTransparency( + TBool aTransparent, MCoeControlBackground* aBackground ) { - if ( aBackground && InIdleApplication() ) + RWindow& window = Window(); + + if ( aTransparent ) { - // In Home Screen the application draws also the status - // pane background. - aBackground = NULL; + if ( window.SetTransparencyAlphaChannel() == KErrNone ) + { + window.SetBackgroundColor( ~0 ); + } + } + else + { + window.SetBackgroundColor( + iEikonEnv->ControlColor( EColorStatusPaneBackground, *this ) ); } - 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; + // Skin background is not drawn for the subpane if it's transparent + // OR if it's a child of another subpane. + TBool drawBackground( Parent() ? NULL : !aTransparent ); + SetBackground( drawBackground ? aBackground : NULL ); } @@ -2923,9 +2899,9 @@ AknsDrawUtils::ControlContext( &aControl ), &aControl, aGc, - TPoint( 0, 0 ), + aRect.iTl, aRect, - KAknsDrawParamDefault ); + KAknsDrawParamNoClearUnderImage ); } } @@ -3404,7 +3380,7 @@ iExtension->iDataSubscriber, *iExtension->iRedrawStoreHandler ); - cont->SetBackgroundDrawer( iExtension ); + cont->SetBackground( iExtension ); CleanupStack::PushL( cont ); iControls->AppendL( cont ); @@ -3803,7 +3779,9 @@ if ( combinedPane ) { CCoeControl* combinedPaneControl = combinedPane->Control(); - + + TBool transparencyEnabled( IsTransparent() ); + // The subpane container controls inside combined pane are it's // component controls. TInt count( combinedPaneControl->CountComponentControls() ); @@ -3819,18 +3797,22 @@ { subPane->SetParentWindowL( NULL, combinedPaneControl, - NULL ); + NULL, + transparencyEnabled ); // Background is drawn by the combined pane so remove // the subpane's own background drawer. - subPane->SetBackgroundDrawer( NULL ); + subPane->SetBackground( NULL ); } else { subPane->SetParentWindowL( iParentWindowGroup, NULL, - iExtension ? iExtension->iRedrawStoreHandler : NULL ); - subPane->SetBackgroundDrawer( iExtension ); + iExtension ? iExtension->iRedrawStoreHandler : NULL, + transparencyEnabled ); + + subPane->SetBackground( transparencyEnabled ? NULL : + iExtension ); } } } @@ -3932,13 +3914,19 @@ EnableTransparent( aFlags & KStatusPaneTransparentBit ); } +// --------------------------------------------------------------------------- +// CEikStatusPaneBase::EnableTransparent +// Enables transparency in the status pane. +// --------------------------------------------------------------------------- +// EXPORT_C void CEikStatusPaneBase::EnableTransparent( TBool aTransparent ) { if ( COMPARE_BOOLS( aTransparent, IsTransparent() ) ) - { - return; - } - if( aTransparent ) + { + return; + } + + if ( aTransparent ) { iFlags |= KStatusPaneTransparentBit; } @@ -3946,14 +3934,30 @@ { iFlags &= ~KStatusPaneTransparentBit; } - DoDrawNow( EDrawDeferred ); + + // Change the subpane window background colour and background drawer + // based on the transparency. + const TInt count = iControls->Count(); + for ( TInt ii = 0; ii < count; ++ii ) + { + iControls->At( ii )->SetTransparency( aTransparent, iExtension ); + } + DoDrawNow( EDrawDeferred ); } + +// --------------------------------------------------------------------------- +// CEikStatusPaneBase::IsTransparent +// Checks if the status pane has transparency enabled. +// --------------------------------------------------------------------------- +// EXPORT_C TBool CEikStatusPaneBase::IsTransparent() const { return iFlags & KStatusPaneTransparentBit; } + + // --------------------------------------------------------------------------- // CEikStatusPaneBase::Flags // Returns the status pane flags. diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/EikStd/coctlsrc/smileydrawer.cpp --- a/uifw/EikStd/coctlsrc/smileydrawer.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/EikStd/coctlsrc/smileydrawer.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -206,11 +206,6 @@ void CSmileyDrawer::DrawImageByIconL( CBitmapContext& aGc, CSmileyIcon* aIcon ) { - if ( aIcon->DocPos() < iVisibleStart && aIcon->DocPos() >= - iVisibleStart + iVisibleLength ) - { - return; - } CSmileyImageData* image( aIcon->ImageData() ); CFbsBitmap* bmp( image->Bitmap() ); CFbsBitmap* mask( image->Mask() ); diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/EikStd/coctlsrc/smileymanager.cpp --- a/uifw/EikStd/coctlsrc/smileymanager.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/EikStd/coctlsrc/smileymanager.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -270,15 +270,6 @@ } // --------------------------------------------------------------------------- -// CSmileyManager::SetVisibleRange -// --------------------------------------------------------------------------- -// -void CSmileyManager::SetVisibleRange( TInt aDocPos, TInt aLength ) - { - iDrawer->SetVisibleRange( aDocPos, aLength ); - } - -// --------------------------------------------------------------------------- // CSmileyManager::TextBlockLength // --------------------------------------------------------------------------- // diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/EikStd/dlgsrc/AknMediatorFacade.cpp --- a/uifw/EikStd/dlgsrc/AknMediatorFacade.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/EikStd/dlgsrc/AknMediatorFacade.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -20,7 +20,7 @@ #include #include #include -#include +#include #include "AknMediatorFacade.h" #include "AknMediatorObserver.h" diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/EikStd/dlgsrc/EIKCAPC.CPP --- a/uifw/EikStd/dlgsrc/EIKCAPC.CPP Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/EikStd/dlgsrc/EIKCAPC.CPP Mon Mar 15 12:41:34 2010 +0200 @@ -3906,7 +3906,7 @@ if ( !iIsCurrentLine ) { - AknListUtils::DrawSeparator( aGc, Rect(), textColor ); + AknListUtils::DrawSeparator( aGc, Rect(), textColor, skin ); aGc.SetBrushStyle( CGraphicsContext::ENullBrush ) ; } else // Highlight Skinning. Requires Frame @@ -3920,7 +3920,7 @@ MAknsControlContext* parentCc = GetDialogControlContext( iDialogPage ) ; AknsDrawUtils::Background( skin, parentCc, this, aGc, Rect() ) ; - AknListUtils::DrawSeparator( aGc, Rect(), textColor ); + AknListUtils::DrawSeparator( aGc, Rect(), textColor, skin ); // Set the rectangle(s) for the Frame context iExtension->iEditModeHighlightControlContext->SetFrameRects( EditRect(), innerRect ) ; @@ -3944,7 +3944,7 @@ AknsDrawUtils::BackgroundBetweenRects( skin, parentCc, this, aGc, Rect(), innerRect ); - AknListUtils::DrawSeparator( aGc, Rect(), textColor ); + AknListUtils::DrawSeparator( aGc, Rect(), textColor, skin ); // Draw the animation itself if ( iExtension->IsHighlightAnimated() diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/EikStd/dlgsrc/EIKDIALG.CPP --- a/uifw/EikStd/dlgsrc/EIKDIALG.CPP Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/EikStd/dlgsrc/EIKDIALG.CPP Mon Mar 15 12:41:34 2010 +0200 @@ -1759,12 +1759,17 @@ if (button) { - if (button->IsDimmed() || !button->IsVisible()) - { + TBool animateCommand = ( !button->IsDimmed() && button->IsVisible() ); + + if ( !animateCommand && buttonId != EEikBidCancel ) + { _AKNTRACE_FUNC_EXIT; - return EKeyWasNotConsumed; - } - buttonGroupContainer.AnimateCommand(buttonId); + return EKeyWasNotConsumed; + } + else if ( animateCommand ) + { + buttonGroupContainer.AnimateCommand( buttonId ); + } } if (button || buttonId==EEikBidCancel || buttonId==EEikBidOk) diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/eikctl/src/EIKCLBD.CPP --- a/uifw/eikctl/src/EIKCLBD.CPP Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/eikctl/src/EIKCLBD.CPP Mon Mar 15 12:41:34 2010 +0200 @@ -1,5 +1,5 @@ /* -* 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" @@ -2007,7 +2007,7 @@ if ( iExtension->iCurrentRow < list->BottomItemIndex() ) { - AknListUtils::DrawSeparator( aGc, aRect, aColors.iText ); + AknListUtils::DrawSeparator( aGc, aRect, aColors.iText, skin ); } DrawHighLight( aGc, aRect, aHighlight, skin ); @@ -2473,7 +2473,7 @@ if ( iExtension->iCurrentRow < list->BottomItemIndex() ) { - AknListUtils::DrawSeparator( aGc, aRect, aColors.iText ); + AknListUtils::DrawSeparator( aGc, aRect, aColors.iText, skin ); } // LISTBOX LINES NEED TO BE DRAWN HERE. diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/ganes/inc/HgVgButton.h --- a/uifw/ganes/inc/HgVgButton.h Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/ganes/inc/HgVgButton.h Mon Mar 15 12:41:34 2010 +0200 @@ -94,6 +94,11 @@ */ void Draw(const TRect& aWindowRect, TReal aAlpha=1); + /** + * + */ + void EnableLandscapeRendering(TBool aEnabled); + private: TSize iSize; @@ -101,6 +106,7 @@ VGImage iImage; TBool iEnabled; TBool iPointerDown; + TBool iLandscape; }; diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/ganes/inc/HgVgConstants.h --- a/uifw/ganes/inc/HgVgConstants.h Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/ganes/inc/HgVgConstants.h Mon Mar 15 12:41:34 2010 +0200 @@ -28,7 +28,7 @@ const TReal KMaxSpringVelocity(300.0f); // - const TReal KSpringVelocityToAnimationFactor(20.0f); + const TReal KSpringVelocityToAnimationFactor(10.0f); // maximum quads in coverflow @@ -40,7 +40,7 @@ // fi const TReal KMinFlickSpeed(0.5f); - const TInt KViewUpdateInterval( 16000 ); // > ~60 fps + const TInt KViewUpdateInterval( 15000 ); // > ~60 fps // The amound of pixels one item (virtually) takes on the screen (if you think coverflow as uniform list) const TReal KRowHeight(1.0f); @@ -50,16 +50,16 @@ const TReal PI(3.1415926535897932f); // Spring constant - const TReal KSpringK(35.0f); + const TReal KSpringK(20.0f); // Spring damping const TReal KSpringDamping(11.0f); // maximum distance from target to snap - const TReal KPositionSnap(0.02); + const TReal KPositionSnap(0.01); // maximum speed where to snap to item - const TReal KMinSpringVelocity(0.05); + const TReal KMinSpringVelocity(0.01); // how far user must have dragged an item before // we move to next item when user has stopped dragging gesture. @@ -70,7 +70,7 @@ const TReal KItemsToDragOnFullScreenDrag(5.0f); // Physics update timestep - const TReal KTimeStep(0.01f); // we update physics 100 fps + const TReal KTimeStep(0.008333333333f); // we update physics 120 fps // Width of one quad in 3d space const TReal KWorldQuadWidth(1); @@ -95,11 +95,11 @@ // how long it user must press to move one index further const TInt KKeyPressDuration(800000); // factor used for converting swipe speed to view movement - const TReal KSwipeSpeedFactor(0.4f); + const TReal KSwipeSpeedFactor(0.5f); // Camera rotation factor to use in animation // when swiping - const TReal KCameraRotationFactor(PI/8.0f); + const TReal KCameraRotationFactor(PI/12.0f); // zooming factor to use in animation const TReal KCameraZoomFactor(0); @@ -122,6 +122,13 @@ // blur deviation factor for blur in zoom animation const TReal KDefaultBlurDeviation(4); + // + const TReal KSpringVelocityToZAlpha(10.0f); + + const TInt KFramesToZeroVelocity(60); + + const TReal KHalfItemWidth(0.5); + // Specific constants for full screen coverflow mediawall const TInt KMediaWallFullScreenItemsOnScreen(5); const TReal KMediaWallFullScreenCameraZoomFactor(1.5); @@ -129,7 +136,7 @@ const TReal KMediaWallFullScreenSpringVelocityToAnimationFactor(10); const TReal KMediaWallFullScreenZOffset(1); const TInt KMediaWallFullScreenRowCount(1); - const TReal KMediaWallFullScreenSpringK(28); + const TReal KMediaWallFullScreenSpringK(KSpringK); const TReal KMediaWallFullScreenSpringDamping(KSpringDamping); const TReal KMediaWallFullScreenSpringMaxVelocity(KMaxSpringVelocity); const TReal KMediaWallFullScreenItemsToMoveOnFullScreenDrag(5); diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/ganes/inc/HgVgEGL.h --- a/uifw/ganes/inc/HgVgEGL.h Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/ganes/inc/HgVgEGL.h Mon Mar 15 12:41:34 2010 +0200 @@ -62,7 +62,7 @@ EGLConfig CurrentConfig() const; - CFbsBitmap* GetSurfaceToBitmap(const TRect& aRect) const; + CFbsBitmap* GetSurfaceToBitmap(const TRect& aRect, TBool aLandscape = EFalse) const; protected: // Constructors diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/ganes/inc/HgVgHelper.h --- a/uifw/ganes/inc/HgVgHelper.h Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/ganes/inc/HgVgHelper.h Mon Mar 15 12:41:34 2010 +0200 @@ -213,7 +213,8 @@ * @param aPos position where to draw (in symbian screen coordinates). * @param aWindowRect drawing windows rectangle. */ - void DrawImage(VGImage aImage, const TPoint& aPos, const TRect& aWindowRect, TBool aCentered = EFalse); + void DrawImage(VGImage aImage, const TPoint& aPos, const TRect& aWindowRect, TBool aCentered = EFalse, + TBool iLanscape = EFalse); /** * Draws vg image to current vg surface multiplying its colors by a color. @@ -225,7 +226,8 @@ * @param aWindowRect drawing windows renctangle. */ void DrawImageColorized(VGImage aImage, const TRgb& aColor, - const TPoint& aPos, const TRect& aWindowRect, TBool aCentered = EFalse); + const TPoint& aPos, const TRect& aWindowRect, TBool aCentered = EFalse, + TBool iLanscape = EFalse); /** diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/ganes/inc/HgVgLabel.h --- a/uifw/ganes/inc/HgVgLabel.h Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/ganes/inc/HgVgLabel.h Mon Mar 15 12:41:34 2010 +0200 @@ -57,6 +57,8 @@ void DrawEmptyText(const TRect& aClientRect, const TDesC& aText); + void EnableLandscapeRendering(TBool enabled); + protected: // Constructors CHgVgLabel(const TRect& aRect); @@ -84,6 +86,8 @@ TAknTextComponentLayout iLayout; TRect iParentRect; + + TBool iLandscape; }; #endif /* HGVGLABEL */ diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/ganes/inc/HgVgLetterPopup.h --- a/uifw/ganes/inc/HgVgLetterPopup.h Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/ganes/inc/HgVgLetterPopup.h Mon Mar 15 12:41:34 2010 +0200 @@ -80,6 +80,11 @@ void SetLayouts(const TAknWindowComponentLayout& aPopupLayout, const TAknTextComponentLayout& aTextLayout, const TRect& aParentRect); + /** + * + */ + void EnableLanscapeRendering(TBool enabled); + protected: // Constructors CHgVgPopup(); @@ -98,6 +103,7 @@ TAknWindowComponentLayout iPopupLayout; TAknTextComponentLayout iTextLayout; TRect iParentRect; + TBool iLandscape; }; #endif /* HGVGLETTERPOPUP_H */ diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/ganes/inc/HgVgMediaWallRenderer.h --- a/uifw/ganes/inc/HgVgMediaWallRenderer.h Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/ganes/inc/HgVgMediaWallRenderer.h Mon Mar 15 12:41:34 2010 +0200 @@ -68,7 +68,8 @@ CHgVgMediaWall::THgVgAnimationState aAnimationState, CHgVgMediaWall::THgVgOpeningAnimationType aSelectionAnimationType, CHgVgMediaWall::THgVgMediaWallStyle aStyle, - TReal aStartIndex); + TReal aStartIndex, + TReal aSpringVelocity); /** * @@ -168,6 +169,12 @@ */ void EnableFlipXY(TBool aEnabled); + /** + * + */ + void EnableLandscapeMode(TBool enabled); + + private: class TQuad @@ -233,7 +240,8 @@ VGfloat aAnimationAlpha, CHgVgMediaWall::THgVgAnimationState aState, CHgVgMediaWall::THgVgOpeningAnimationType aAnimationType, - TReal aStartIndex); + TReal aStartIndex, + TReal aSpringVelocity); /** @@ -355,6 +363,8 @@ TPoint iOffset; TBool iFlipXY; + + TBool iLandscape; }; #endif /* HGVGMEDIAWALLRENDERER */ diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/ganes/inc/HgVgScrollBar.h --- a/uifw/ganes/inc/HgVgScrollBar.h Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/ganes/inc/HgVgScrollBar.h Mon Mar 15 12:41:34 2010 +0200 @@ -68,6 +68,8 @@ TSize aViewSize, TBool aLandscapeScrolling, CHgScroller::THgScrollBarType aScrollBarType); + + void EnableLandscapeRendering(TBool aEnabled); protected: // Constructors CHgVgScrollBar( ); @@ -95,6 +97,8 @@ VGImage iScrollbarHandle; VGImage iScrollbarBgSelected; VGImage iScrollbarHandleSelected; + + TBool iLandscape; }; diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/ganes/inc/HgVgSkinRenderer.h --- a/uifw/ganes/inc/HgVgSkinRenderer.h Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/ganes/inc/HgVgSkinRenderer.h Mon Mar 15 12:41:34 2010 +0200 @@ -64,7 +64,11 @@ */ void Draw() const; - + + /** + * + */ + void EnableLanscapeRendering(TBool aLandscape); protected: // Constructors CHgVgSkinRenderer(const TRect& aRect); @@ -77,6 +81,8 @@ VGImage iSkinImage; TRect iRect; + + TBool iLandscape; }; #endif /* HGVGSKINRENDERER */ diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/ganes/src/HgDoubleGraphicList.cpp --- a/uifw/ganes/src/HgDoubleGraphicList.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/ganes/src/HgDoubleGraphicList.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -23,6 +23,7 @@ #include "HgIndicatorManager.h" #include "HgDrawUtils.h" #include "HgConstants.h" +#include "HgScrollbar.h" #include @@ -101,7 +102,8 @@ iLayoutData->SetTitleLayout(i, list_double_large_graphic_pane_t1( i )); iLayoutData->SetTextLayout(list_double_large_graphic_pane_t2( 2 )); iLayoutData->SetFirstIndicatorLayout(list_double_large_graphic_pane_g3(0)); - iLayoutData->SetSecondIndicatorLayout(list_double_large_graphic_pane_g2(1)); + TInt variety = iScrollbar && !iScrollbar->IsStatic() ? 1 : 0; + iLayoutData->SetSecondIndicatorLayout(list_double_large_graphic_pane_g2(variety)); // Get the Row rect. TAknLayoutRect layout; @@ -230,3 +232,14 @@ } } +// ----------------------------------------------------------------------------- +// CHgDoubleGraphicList::HandleScrollbarVisibilityChange() +// ----------------------------------------------------------------------------- +// +void CHgDoubleGraphicList::HandleScrollbarVisibilityChange( TBool aVisible ) + { + TInt variety = aVisible ? 1 : 0; + iLayoutData->SetSecondIndicatorLayout(list_double_large_graphic_pane_g2(variety)); + } + +// End of file diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/ganes/src/HgDoubleTextList.cpp --- a/uifw/ganes/src/HgDoubleTextList.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/ganes/src/HgDoubleTextList.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -24,6 +24,7 @@ #include "HgIndicatorManager.h" #include "HgDrawUtils.h" #include "HgConstants.h" +#include "HgScrollbar.h" #include #include @@ -87,7 +88,8 @@ iLayoutData->SetTitleLayout(i, list_double_pane_t1( i )); iLayoutData->SetTextLayout(list_double_pane_t2( 2 )); iLayoutData->SetFirstIndicatorLayout(list_double_pane_g2(0)); - iLayoutData->SetSecondIndicatorLayout(list_double_pane_g1(1)); + TInt variety = iScrollbar && !iScrollbar->IsStatic() ? 1 : 0; + iLayoutData->SetSecondIndicatorLayout(list_double_pane_g1(variety)); // Get the Row rect. TAknLayoutRect layout; @@ -183,3 +185,14 @@ } +// ----------------------------------------------------------------------------- +// CHgDoubleTextList::HandleScrollbarVisibilityChange() +// ----------------------------------------------------------------------------- +// +void CHgDoubleTextList::HandleScrollbarVisibilityChange( TBool aVisible ) + { + TInt variety = aVisible ? 1 : 0; + iLayoutData->SetSecondIndicatorLayout(list_double_pane_g1(variety)); + } + +// End of file diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/ganes/src/HgGrid.cpp --- a/uifw/ganes/src/HgGrid.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/ganes/src/HgGrid.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -673,8 +673,11 @@ void CHgGrid::SelectDefaultItem() { iSelectedIndex = CurrentIndex(); - FitSelectionToView(); - DrawDeferred(); + if( iSelectedIndex >= 0 && iSelectedIndex < iItems.Count() ) + { + FitSelectionToView(); + DrawDeferred(); + } } // ----------------------------------------------------------------------------- @@ -760,6 +763,10 @@ iLandScapeScrollingSupported = aSupportLandscapeScrolling; } +// ----------------------------------------------------------------------------- +// CHgGrid::ChangeSelectedIndex() +// ----------------------------------------------------------------------------- +// void CHgGrid::ChangeSelectedIndex( TInt aMove ) { TInt nextIndex = 0; @@ -792,4 +799,13 @@ iSelectedIndex = nextIndex; } +// ----------------------------------------------------------------------------- +// CHgGrid::HandleScrollbarVisibilityChange() +// ----------------------------------------------------------------------------- +// +void CHgGrid::HandleScrollbarVisibilityChange( TBool /*aVisible*/ ) + { + + } + // End of File diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/ganes/src/HgList.cpp --- a/uifw/ganes/src/HgList.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/ganes/src/HgList.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -399,11 +399,14 @@ // void CHgList::SelectDefaultItem() { - iSelectedIndex = iCurrentRow; - FitSelectionToView(); - SelectionChanged(); - - DrawDeferred(); + if( iCurrentRow >= 0 && iCurrentRow < iItems.Count() ) + { + iSelectedIndex = iCurrentRow; + FitSelectionToView(); + SelectionChanged(); + + DrawDeferred(); + } } TInt CHgList::CurrentIndex() diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/ganes/src/HgScroller.cpp --- a/uifw/ganes/src/HgScroller.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/ganes/src/HgScroller.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -207,6 +207,9 @@ { if( aIndex >= 0 && aIndex < iItems.Count() ) { + iSelectedIndex = iItems.Count() - 1; + FitSelectionToView(); + iSelectedIndex = aIndex; // Move view position so that it is fully visible. FitSelectionToView(); @@ -540,12 +543,16 @@ { if( iScrollbar && iItemCount ) { + TBool prevStatic = iScrollbar->IsStatic(); iScrollbar->InitScrollBarL( Rect(), TotalSize(), TSize(iWidth, iHeight), iLandscapeScrolling); iScrollbar->SetViewPosition( iViewPosition - TPoint(iWidth/2, iHeight/2)); + + if(prevStatic != iScrollbar->IsStatic()) + HandleScrollbarVisibilityChange(iScrollbar->IsStatic()); } } // ----------------------------------------------------------------------------- @@ -1755,5 +1762,4 @@ } } - // End of File diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/ganes/src/HgSingleGraphicList.cpp --- a/uifw/ganes/src/HgSingleGraphicList.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/ganes/src/HgSingleGraphicList.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -23,6 +23,7 @@ #include "HgIndicatorManager.h" #include "HgDrawUtils.h" #include "HgConstants.h" +#include "HgScrollbar.h" #include #include @@ -87,7 +88,8 @@ for(TInt i = 0; i <= KMaxNumberOfTitleIndicators; ++i) iLayoutData->SetTitleLayout( i, list_single_graphic_pane_t1( i )); iLayoutData->SetFirstIndicatorLayout(list_single_graphic_pane_g3(0)); - iLayoutData->SetSecondIndicatorLayout(list_single_graphic_pane_g2(1)); + TInt variety = iScrollbar && !iScrollbar->IsStatic() ? 1 : 0; + iLayoutData->SetSecondIndicatorLayout(list_single_graphic_pane_g2(variety)); // Get the Row rect. TAknLayoutRect layout; @@ -174,4 +176,14 @@ } +// ----------------------------------------------------------------------------- +// CHgSingleGraphicList::HandleScrollbarVisibilityChange() +// ----------------------------------------------------------------------------- +// +void CHgSingleGraphicList::HandleScrollbarVisibilityChange( TBool aVisible ) + { + TInt variety = aVisible ? 1 : 0; + iLayoutData->SetSecondIndicatorLayout(list_single_graphic_pane_g2(variety)); + } + // End of file diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/ganes/src/HgSingleLargeList.cpp --- a/uifw/ganes/src/HgSingleLargeList.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/ganes/src/HgSingleLargeList.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -23,6 +23,7 @@ #include "HgIndicatorManager.h" #include "HgDrawUtils.h" #include "HgConstants.h" +#include "HgScrollbar.h" #include #include @@ -87,7 +88,8 @@ for(TInt i = 0; i <= KMaxNumberOfTitleIndicators; ++i) iLayoutData->SetTitleLayout( i, list_single_large_graphic_pane_t1( i )); iLayoutData->SetFirstIndicatorLayout(list_single_large_graphic_pane_g3(0)); - iLayoutData->SetSecondIndicatorLayout(list_single_large_graphic_pane_g2(1)); + TInt variety = iScrollbar && !iScrollbar->IsStatic() ? 1 : 0; + iLayoutData->SetSecondIndicatorLayout(list_single_large_graphic_pane_g2(variety)); // Get the Row rect. TAknLayoutRect layout; @@ -175,6 +177,14 @@ } - +// ----------------------------------------------------------------------------- +// CHgSingleLargeList::HandleScrollbarVisibilityChange() +// ----------------------------------------------------------------------------- +// +void CHgSingleLargeList::HandleScrollbarVisibilityChange( TBool aVisible ) + { + TInt variety = aVisible ? 1 : 0; + iLayoutData->SetSecondIndicatorLayout(list_single_large_graphic_pane_g2(variety)); + } // End of file diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/ganes/src/HgSingleTextList.cpp --- a/uifw/ganes/src/HgSingleTextList.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/ganes/src/HgSingleTextList.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -21,6 +21,7 @@ #include "HgLayoutData.h" #include "HgIndicatorManager.h" #include "HgDrawUtils.h" +#include "HgScrollbar.h" #include #include @@ -73,7 +74,8 @@ for(TInt i = 0; i <= KMaxNumberOfTitleIndicators; ++i) iLayoutData->SetTitleLayout( i, list_single_pane_t1( i ) ); iLayoutData->SetFirstIndicatorLayout(list_single_pane_g2(0)); - iLayoutData->SetSecondIndicatorLayout(list_single_pane_g1(1)); + TInt variety = iScrollbar && !iScrollbar->IsStatic() ? 1 : 0; + iLayoutData->SetSecondIndicatorLayout(list_single_pane_g1(variety)); // Get the Row rect. TAknLayoutRect layout; @@ -155,4 +157,14 @@ } -// EOF +// ----------------------------------------------------------------------------- +// CHgSingleTextList::HandleScrollbarVisibilityChange() +// ----------------------------------------------------------------------------- +// +void CHgSingleTextList::HandleScrollbarVisibilityChange( TBool aVisible ) + { + TInt variety = aVisible ? 1 : 0; + iLayoutData->SetSecondIndicatorLayout(list_single_pane_g1(variety)); + } + +// End of file diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/ganes/src/HgSingleTextListWithIcon.cpp --- a/uifw/ganes/src/HgSingleTextListWithIcon.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/ganes/src/HgSingleTextListWithIcon.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -21,6 +21,7 @@ #include "HgLayoutData.h" #include "HgIndicatorManager.h" #include "HgDrawUtils.h" +#include "HgScrollbar.h" #include #include @@ -33,7 +34,7 @@ using namespace AknLayoutScalable_Avkon; // ----------------------------------------------------------------------------- -// CHgSingleTextList::NewL() +// CHgSingleTextListWithIcon::NewL() // ----------------------------------------------------------------------------- // EXPORT_C CHgSingleTextListWithIcon* CHgSingleTextListWithIcon::NewL( @@ -62,7 +63,7 @@ } // ----------------------------------------------------------------------------- -// CHgSingleTextList::HandleSizeChanged() +// CHgSingleTextListWithIcon::HandleSizeChanged() // ----------------------------------------------------------------------------- // void CHgSingleTextListWithIcon::HandleSizeChanged() @@ -73,7 +74,8 @@ for(TInt i = 0; i <= KMaxNumberOfTitleIndicators; ++i) iGraphicLayoutData->SetTitleLayout( i, list_single_graphic_pane_t1( i )); iGraphicLayoutData->SetFirstIndicatorLayout(list_single_graphic_pane_g3(0)); - iGraphicLayoutData->SetSecondIndicatorLayout(list_single_graphic_pane_g2(1)); + TInt variety = iScrollbar && !iScrollbar->IsStatic() ? 1 : 0; + iGraphicLayoutData->SetSecondIndicatorLayout(list_single_graphic_pane_g2(variety)); // Get the Row rect. TAknLayoutRect layout; @@ -89,7 +91,7 @@ } // ----------------------------------------------------------------------------- -// CHgSingleTextList::DrawItem() +// CHgSingleTextListWithIcon::DrawItem() // ----------------------------------------------------------------------------- // void CHgSingleTextListWithIcon::DrawItem( TInt aIndex, const TRect& aRect ) const @@ -146,7 +148,7 @@ } // ----------------------------------------------------------------------------- -// CHgSingleTextList::CHgSingleTextList() +// CHgSingleTextListWithIcon::CHgSingleTextList() // ----------------------------------------------------------------------------- // CHgSingleTextListWithIcon::CHgSingleTextListWithIcon( TInt aItemCount, @@ -156,11 +158,25 @@ SetFlags( EHgScrollerFlatStatusPane ); // Set Flat status pane on } +// ----------------------------------------------------------------------------- +// CHgSingleTextListWithIcon::CHgSingleTextList() +// ----------------------------------------------------------------------------- +// void CHgSingleTextListWithIcon::ConstructL( const TRect& aRect, RWsSession* aSession ) { iGraphicLayoutData = CHgListLayoutData::NewL(); CHgList::ConstructL( aRect, aSession ); } +// ----------------------------------------------------------------------------- +// CHgSingleTextListWithIcon::HandleScrollbarVisibilityChange() +// ----------------------------------------------------------------------------- +// +void CHgSingleTextListWithIcon::HandleScrollbarVisibilityChange( TBool aVisible ) + { + CHgSingleTextList::HandleScrollbarVisibilityChange(aVisible); + TInt variety = aVisible ? 1 : 0; + iGraphicLayoutData->SetSecondIndicatorLayout(list_single_graphic_pane_g2(variety)); + } -// EOF +// End of file diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/ganes/src/HgVgButton.cpp --- a/uifw/ganes/src/HgVgButton.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/ganes/src/HgVgButton.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -169,8 +169,18 @@ { TRgb color(KRgbWhite); color.SetAlpha(aAlpha * 255.0f); - HgVgHelper::DrawImageColorized(iImage, color, iPosition, aWindowRect, EFalse); + HgVgHelper::DrawImageColorized(iImage, color, iPosition, aWindowRect, EFalse, iLandscape); } } +// ----------------------------------------------------------------------------- +// CHgVgButton::EnableLanscapeRendering() +// ----------------------------------------------------------------------------- +// +void CHgVgButton::EnableLandscapeRendering(TBool aEnabled) +{ + iLandscape = aEnabled; +} + + // End of File diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/ganes/src/HgVgEGL.cpp --- a/uifw/ganes/src/HgVgEGL.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/ganes/src/HgVgEGL.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -280,12 +280,11 @@ // CHgVgEGL::GetSurfaceToBitmap() // --------------------------------------------------------------------------- // -CFbsBitmap* CHgVgEGL::GetSurfaceToBitmap(const TRect& aRect) const +CFbsBitmap* CHgVgEGL::GetSurfaceToBitmap(const TRect& aRect, TBool aLandscape) const { // make sure every thing is in back buffer vgFinish(); - VGuint dataStride = 4 * aRect.Width(); CFbsBitmap* bitmap = new CFbsBitmap(); @@ -293,23 +292,49 @@ { // create temporary buffer for data RBuf8 buf; - buf.Create(aRect.Height() * dataStride); + buf.Create(aRect.Width() * aRect.Height() * 4); buf.Fill(0xFF); - // read data from vg (this is sloooww) - vgReadPixels((void*)buf.Ptr(), - dataStride, VG_sARGB_8888, 0, 0, aRect.Width(), aRect.Height()); + // read data back from vg (this is sloooww) + VGint dataStride = 0; + if (aLandscape) + { + dataStride = 4 * aRect.Height(); + vgReadPixels((void*)buf.Ptr(), + dataStride, VG_sARGB_8888, 0, 0, aRect.Height(), aRect.Width()); + } + else + { + dataStride = 4 * aRect.Width(); + vgReadPixels((void*)buf.Ptr(), + dataStride, VG_sARGB_8888, 0, 0, aRect.Width(), aRect.Height()); + } // because of bug in vg driver we need to swap memory using for loop, because - // negative datastrides case crash + // negative datastrides cause crash bitmap->Create(TSize(aRect.Width(), aRect.Height()), EColor16MA); bitmap->BeginDataAccess(); - TUint8* ptrTrg = (TUint8*)bitmap->DataAddress(); - TUint8* ptrSrc = (TUint8*)buf.Ptr(); - for (TInt i = 0; i < aRect.Height(); i++) + if (!aLandscape) { - Mem::Copy(ptrTrg + dataStride * i, - ptrSrc + dataStride * (aRect.Height() - i - 1), dataStride); + TUint8* ptrTrg = (TUint8*)bitmap->DataAddress(); + TUint8* ptrSrc = (TUint8*)buf.Ptr(); + for (TInt i = 0; i < aRect.Height(); i++) + { + Mem::Copy(ptrTrg + dataStride * i, + ptrSrc + dataStride * (aRect.Height() - i - 1), dataStride); + } + } + else + { + TUint32* ptrTrg = (TUint32*)bitmap->DataAddress(); + TUint32* ptrSrc = (TUint32*)buf.Ptr(); + for (TInt i = 0; i < aRect.Height(); i++) + { + for (TInt j = 0; j < aRect.Width(); j++) + { + ptrTrg[(aRect.Height() - i - 1)*aRect.Width()+(aRect.Width()-j-1)] = ptrSrc[j*aRect.Height()+i]; + } + } } bitmap->EndDataAccess(); buf.Close(); diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/ganes/src/HgVgHelper.cpp --- a/uifw/ganes/src/HgVgHelper.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/ganes/src/HgVgHelper.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -435,11 +435,16 @@ // --------------------------------------------------------------------------- // void DrawImage(VGImage aImage, - const TPoint& aPos, const TRect& aWindowRect, TBool aCentered) + const TPoint& aPos, const TRect& aWindowRect, TBool aCentered, TBool aLandscape) { vgSeti(VG_MATRIX_MODE, VG_MATRIX_IMAGE_USER_TO_SURFACE); vgLoadIdentity(); + if (aLandscape) + { + vgTranslate(0.0f, 640.0f); + vgRotate(-90.0f); + } if (!aCentered) { @@ -464,7 +469,7 @@ // --------------------------------------------------------------------------- // void DrawImageColorized(VGImage aImage, const TRgb& aColor, - const TPoint& aPos, const TRect& aWindowRect, TBool aCentered) + const TPoint& aPos, const TRect& aWindowRect, TBool aCentered, TBool aLandscape) { VGfloat values[] = { 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0 }; @@ -477,7 +482,7 @@ vgSetfv(VG_COLOR_TRANSFORM_VALUES, KNumColorTransformValues, values); vgSeti(VG_COLOR_TRANSFORM, VG_TRUE); - HgVgHelper::DrawImage(aImage, aPos, aWindowRect, aCentered); + HgVgHelper::DrawImage(aImage, aPos, aWindowRect, aCentered, aLandscape); vgSeti(VG_COLOR_TRANSFORM, VG_FALSE); } diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/ganes/src/HgVgLabel.cpp --- a/uifw/ganes/src/HgVgLabel.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/ganes/src/HgVgLabel.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -155,7 +155,7 @@ shadowColor.SetAlpha(255.0f * aAlpha); //HgVgHelper::DrawImageColorized(iTextImage, shadowColor, iRect.iTl+TPoint(1,1), aWindowRect); - HgVgHelper::DrawImageColorized(iTextImage, color, iRect.iTl, aWindowRect); + HgVgHelper::DrawImageColorized(iTextImage, color, iRect.iTl, aWindowRect, EFalse, iLandscape); } // ----------------------------------------------------------------------------- @@ -200,6 +200,10 @@ Draw(aClientRect, 1.0f); } +void CHgVgLabel::EnableLandscapeRendering(TBool enabled) +{ + iLandscape = enabled; +} // End of File diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/ganes/src/HgVgLetterPopup.cpp --- a/uifw/ganes/src/HgVgLetterPopup.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/ganes/src/HgVgLetterPopup.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -187,6 +187,11 @@ // draw background vgSeti(VG_MATRIX_MODE, VG_MATRIX_PATH_USER_TO_SURFACE); vgLoadIdentity(); + if (iLandscape) + { + vgTranslate(0.0f, 640.0f); + vgRotate(-90.0f); + } vgTranslate(iRect.iTl.iX, (aWindowRect.Height() - iRect.iBr.iY)); @@ -203,7 +208,7 @@ // draw letter color.SetAlpha(aAlpha * 255.0f); HgVgHelper::DrawImageColorized(iLetterImage, - color, iRect.iTl, aWindowRect, EFalse); + color, iRect.iTl, aWindowRect, EFalse, iLandscape); } void CHgVgPopup::SetLayouts(const TAknWindowComponentLayout& aPopupLayout, @@ -216,5 +221,10 @@ iParentRect = aParentRect; } +void CHgVgPopup::EnableLanscapeRendering(TBool enabled) +{ + iLandscape = enabled; +} + // End of File diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/ganes/src/HgVgMediaWall.cpp --- a/uifw/ganes/src/HgVgMediaWall.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/ganes/src/HgVgMediaWall.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -123,7 +123,7 @@ InitScreenL( aRect ); InitItemsL(); - + HandleViewPositionChanged(ETrue); iCoeEnv->AddForegroundObserverL( *this ); @@ -135,9 +135,13 @@ AknTouchGestureFw::EAknTouchGestureFwGroupFlick); ActivateL ( ); - +#ifdef MEDIAWALL_ORIENTATION_FIX + iCoeEnv->WsSession().Flush(); +#endif + SetMopParent( aParent ); SetFlags( EHgVgMediaWallDrawToWindowGC | EHgVgMediaWallUninitialized ); + } // ----------------------------------------------------------------------------- @@ -145,10 +149,19 @@ // ----------------------------------------------------------------------------- // EXPORT_C void CHgVgMediaWall::InitScreenL( const TRect& aRect ) - { + { + // Set the windows size SetRect ( aRect ); - + +#ifdef MEDIAWALL_ORIENTATION_FIX + TSize screenSize = iCoeEnv->ScreenDevice()->SizeInPixels(); + if (aRect == TRect(TPoint(0,0), screenSize) && iMediaWallStyle == EHgVgMediaWallStyleCoverflowFullScreen) + { + Window().FixNativeOrientation(); + } +#endif + } // ----------------------------------------------------------------------------- @@ -162,8 +175,6 @@ { return; } - - //RDebug::Print(_L("\t\tMediaWall FirstIndexOnScreen=%d"), FirstIndexOnScreen()); if( !iAnimationTimer->IsActive() ) { @@ -353,14 +364,10 @@ // void CHgVgMediaWall::Draw ( const TRect& /*aRect*/ ) const { - //RDebug::Print(_L("CHgVgMediaWall::Draw begin")); if(iFlags & EHgVgMediaWallUninitialized) { - MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - MAknsControlContext* cc = AknsDrawUtils::ControlContext( this ); - AknsDrawUtils::DrawBackground( skin, cc, this, SystemGc(), TPoint(0,0), - Rect(), KAknsDrawParamDefault ); + FillSystemGcWithSkin( ); return; } @@ -379,8 +386,7 @@ } else { - SystemGc().SetBrushColor(KRgbRed); - SystemGc().Clear(); + FillSystemGcWithSkin( ); } } else @@ -398,23 +404,22 @@ { if (iSurfaceBitmap) { - //RDebug::Print(_L("CHgVgMediaWall::Draw blit screenshot")); - SystemGc().BitBlt( Rect().iTl, iSurfaceBitmap ); } else { - //RDebug::Print(_L("CHgVgMediaWall::Draw clear red")); - - // we should not get here, ever - // still, clear with red color for debug purposes - SystemGc().SetBrushColor(KRgbRed); - SystemGc().Clear(); + FillSystemGcWithSkin( ); } } + + } - //RDebug::Print(_L("CHgVgMediaWall::Draw end")); - +void CHgVgMediaWall::FillSystemGcWithSkin( ) const + { + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + MAknsControlContext* cc = AknsDrawUtils::ControlContext( this ); + AknsDrawUtils::DrawBackground( skin, cc, this, SystemGc(), TPoint(0,0), + Rect(), KAknsDrawParamDefault ); } // ----------------------------------------------------------------------------- @@ -1087,9 +1092,13 @@ if (!DrawAll()) return NULL; - - return iEGL->GetSurfaceToBitmap(iRect); - + +#ifdef MEDIAWALL_ORIENTATION_FIX + return iEGL->GetSurfaceToBitmap(iRect, iMediaWallStyle == EHgVgMediaWallStyleCoverflowFullScreen); +#else + return iEGL->GetSurfaceToBitmap(iRect, EFalse); +#endif + } // ----------------------------------------------------------------------------- @@ -1201,6 +1210,7 @@ // void CHgVgMediaWall::HandleGainingForeground() { + if(iIsForeground) return; // don't react to gaining foreground without losing it // draw previous screenshot DrawNow(); @@ -1228,6 +1238,7 @@ // void CHgVgMediaWall::HandleLosingForeground() { + if(!iIsForeground) return; // don't react to losing foreground without gaining it // make sure we are not animating HandleTransitionAnimationStop(); @@ -1277,8 +1288,6 @@ CHgVgMediaWall* self = const_cast(this); - //RDebug::Print(_L("\t\tMediaWall FirstIndexOnScreen=%d"), self->FirstIndexOnScreen()); - if (!self->DrawAll()) return; @@ -1385,6 +1394,17 @@ { // update view position dependant stuff HandleViewPositionChanged(ETrue); + + // inform observer when needed + if (!iObserverNotified) + { + if (Abs(iSpring->GetX() - iSpring->EndX()) < KHalfItemWidth) + { + iObserverNotified = ETrue; + TRAP_IGNORE( + iSelectionObserver->HandleSelectL((int)iSpring->EndX(), this); ) + } + } } } @@ -1402,7 +1422,7 @@ iAnimationTimer->Cancel(); // handle view position change - HandleViewPositionChanged(); + HandleViewPositionChanged(EFalse); } } @@ -1557,7 +1577,8 @@ TSize(MaxViewPosition(), 1), TSize(1, 1), ETrue, CHgScroller::EHgScrollerScrollBar); - iScrollBar->SetViewPosition( TPoint(iSelectedIndex, 0) ); + iScrollBar->SetViewPosition( TPoint(iSelectedIndex, 0) ); + } // --------------------------------------------------------------------------- @@ -1578,6 +1599,7 @@ iEGL->InitWindowSurfaceL(Window()); } + delete iRenderer; iRenderer = NULL; delete iArtistLabel; iArtistLabel = NULL; delete iAlbumLabel; iAlbumLabel = NULL; @@ -1640,7 +1662,7 @@ iHideSKButton = CHgVgButton::NewL(rect.Rect().Size(), rect.Rect().iTl, *icon); CleanupStack::PopAndDestroy(icon); - + } @@ -1900,13 +1922,20 @@ void CHgVgMediaWall::DrawScene() { - TReal t = iSpring->VelX() / iSpringVelocityToAnimationFactor; - if (Abs(t) > 1.0f) - t = t / Abs(t); - + TReal springVel = iSpring->VelX(); + if (iPointerDown) + springVel = iSpringDragVel; + + TReal t = springVel / iSpringVelocityToAnimationFactor; + if (t > 1.0f) + t = 1.0f; + else if (t < -1.0f) + t = -1.0f; + if (AknLayoutUtils::LayoutMirrored()) t = -t; + iRenderer->SetCameraRotation(-t * iCameraRotationFactor); if (iMediaWallStyle == EHgVgMediaWallStyleGrid) @@ -1921,9 +1950,10 @@ } else { + iRenderer->Draw(iItems, /*iSelectedIndex*/iSpring->GetX(), iSpring->EndX(), iSpring->GetInterpolatedX(), iAnimationAlpha, iAnimationState, - iOpeningAnimationType, iMediaWallStyle, iSpring->StartX()); + iOpeningAnimationType, iMediaWallStyle, iSpring->StartX(), springVel); } } @@ -1941,10 +1971,17 @@ if (iMediaWallStyle != EHgVgMediaWallStyleGrid) { iSpring->SetEnd(iSelectedIndex, iSpring->EndY()); - } + } + + iSpringVelAtDragStart = iSpringDragVel = iSpring->VelX(); } + else + { + iSpringVelAtDragStart = iSpringDragVel = 0; + } iPointerDown = ETrue; + iDragFrames = 0; iViewPositionAtDragStart = iSpring->GetX(); } @@ -1978,6 +2015,14 @@ TReal x = iViewPositionAtDragStart + fDelta * iItemsToMoveOnFullScreenDrag; iUpdateScrollBar = ETrue; iSpring->Reset(x, 0); + + // interpolate velocity during frame count to zero + TReal t = (TReal)iDragFrames/(TReal)KFramesToZeroVelocity; + if (t > 1.0f) t = 1.0f; + iSpringDragVel = iSpringVelAtDragStart * (1.0f - t); + + iDragFrames++; + HandleViewPositionChanged(ETrue); // draw view at new view position DrawOpenVG(); @@ -2200,6 +2245,7 @@ iSpring->SetEnd(aX, aY); iUpdateScrollBar = aUpdateScrollBar; iAnimationState = EHgVgMediaWallAnimationStateTransition; + iObserverNotified = EFalse; StartAnimationTimer(); } @@ -2358,6 +2404,17 @@ KMediaWallFullScreenSpringMaxVelocity, KPositionSnap, KMinSpringVelocity); +#ifdef MEDIAWALL_ORIENTATION_FIX + iRenderer->EnableLandscapeMode(ETrue); + iAlbumLabel->EnableLandscapeRendering(ETrue); + iArtistLabel->EnableLandscapeRendering(ETrue); + iEmptyLabel->EnableLandscapeRendering(ETrue); + iSkinRenderer->EnableLanscapeRendering(ETrue); + iScrollBar->EnableLandscapeRendering(ETrue); + iHideSKButton->EnableLandscapeRendering(ETrue); + iLetterPopup->EnableLandscapeRendering(ETrue); +#endif + } // ----------------------------------------------------------------------------- @@ -2458,7 +2515,9 @@ iArtistLabel = CHgVgLabel::NewL( t1.TextRect() ); iAlbumLabel->SetLayout(l0, iRect); - iArtistLabel->SetLayout(l1, iRect); + iArtistLabel->SetLayout(l1, iRect); + + } void CHgVgMediaWall::InitPopupL(TInt aLayoutVariant) @@ -2469,7 +2528,8 @@ &ScreenFont( TCoeFont( KMediaWallTBonePopupFontSize, TCoeFont::EPlain ))); iLetterPopup->SetLayouts(AknLayoutScalable_Apps::cf0_flow_pane_g2(aLayoutVariant), - AknLayoutScalable_Apps::cf0_flow_pane_t1(aLayoutVariant), iRect); + AknLayoutScalable_Apps::cf0_flow_pane_t1(aLayoutVariant), iRect); + } // ----------------------------------------------------------------------------- @@ -2494,4 +2554,5 @@ } + // End of File diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/ganes/src/HgVgMediaWallRenderer.cpp --- a/uifw/ganes/src/HgVgMediaWallRenderer.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/ganes/src/HgVgMediaWallRenderer.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -64,6 +64,29 @@ }; +VGfloat EaseOutQuad(VGfloat start, VGfloat end, VGfloat t) +{ + VGfloat s = t - 1.0f; + VGfloat f = -(s*s*s*s) + 1.0f; + return start * (1.0f - f) + end * f; +} + +VGfloat EaseInQuad(VGfloat start, VGfloat end, VGfloat t) +{ + VGfloat s = t; + VGfloat f = (s*s*s*s); + return start * (1.0f - f) + end * f; +} + + +VGfloat BoundValue(VGfloat value, VGfloat min, VGfloat max) +{ + if (value > max) return max; + if (value < min) return min; + + return value; +} + // ============================ MEMBER FUNCTIONS =============================== // ----------------------------------------------------------------------------- @@ -436,11 +459,18 @@ // void CHgVgMediaWallRenderer::DrawQuad(CHgVgMediaWallRenderer::TQuad* q, TBool aDrawMirrored) { - vgSeti(VG_MATRIX_MODE, VG_MATRIX_IMAGE_USER_TO_SURFACE); + vgSeti(VG_MATRIX_MODE, VG_MATRIX_IMAGE_USER_TO_SURFACE); vgLoadIdentity(); - //vgTranslate(iOffset.iX, iOffset.iY); + if (iLandscape) + { + vgTranslate(0.0f, 640.0f); + vgRotate(-90.0f); + } + + vgTranslate(iOffset.iX, iOffset.iY); + VGImage image = q->iImage; if (q->iNoImage) { @@ -478,7 +508,8 @@ CHgVgMediaWall::THgVgAnimationState aState, CHgVgMediaWall::THgVgOpeningAnimationType aSelectionAnimationType, CHgVgMediaWall::THgVgMediaWallStyle /*aStyle*/, - TReal aStartIndex) + TReal aStartIndex, + TReal aSpringVelocity) { TInt itemsOnScreen = 0; @@ -486,7 +517,18 @@ aSelectedIndex, aNextIndex, aViewPosition, aAnimationAlpha, - aState, aSelectionAnimationType, aStartIndex); + aState, aSelectionAnimationType, aStartIndex, aSpringVelocity); + + vgSeti(VG_MATRIX_MODE, VG_MATRIX_PATH_USER_TO_SURFACE); + vgLoadIdentity(); + vgRotate(-90.0f); + vgTranslate(0.0f, -640.0f); + + vgSeti(VG_MATRIX_MODE, VG_MATRIX_IMAGE_USER_TO_SURFACE); + vgLoadIdentity(); + vgRotate(-90.0f); + vgTranslate(0.0f, -640.0f); + TransformAndDraw(itemsOnScreen, aSelectionAnimationType); } @@ -586,6 +628,12 @@ { vgSeti(VG_MATRIX_MODE, VG_MATRIX_PATH_USER_TO_SURFACE); vgLoadIdentity(); + if (iLandscape) + { + vgTranslate(0.0f, 640.0f); + vgRotate(-90.0f); + } + //vgTranslate(iOffset.iX, iOffset.iY); vgScale(aWidth, aHeight); vgSetPaint(iGroundPaint, VG_FILL_PATH); @@ -753,12 +801,13 @@ // --------------------------------------------------------------------------- // TInt CHgVgMediaWallRenderer::SetupQuads(RPointerArray& aItems, - TInt aSelectedIndex, TReal aNextIndex, + TInt aSelectedIndex, TReal /*aNextIndex*/, VGfloat aViewPosition, VGfloat aAnimationAlpha, CHgVgMediaWall::THgVgAnimationState aState, CHgVgMediaWall::THgVgOpeningAnimationType aOpeningAnimationType, - TReal aStartIndex) + TReal /*aStartIndex*/, + TReal aSpringVelocity) { @@ -796,6 +845,9 @@ TInt itemsOnScreen = 0; TInt currentRow = (TInt)aViewPosition - KSelectedItemIndex; + TReal zAlpha = Abs(aSpringVelocity / KSpringVelocityToZAlpha); + VGfloat zNear = HgVgHelper::Lerp(iZFar, iZNear, 1.0f - BoundValue(zAlpha, 0, 1)); + while (itemsOnScreen < iQuads.Count()) { TInt itemIndex = currentRow + i; @@ -827,23 +879,24 @@ q->iX = leftX - step * (leftIndex - fi); - if (aStartIndex != aNextIndex) + /*if (aStartIndex != aNextIndex) { // if start and next index are not same, we can just interpolate // items at these indices. if (itemIndex == (TInt)aStartIndex || itemIndex == (TInt)aNextIndex) { - q->iZ = HgVgHelper::Lerp((VGfloat)iZNear, (VGfloat)iZFar, Abs(q->iX / leftX)); + q->iZ = EaseInQuad((VGfloat)zNear, (VGfloat)iZFar, BoundValue(Abs(q->iX / leftX), 0, 1)); q->iZ = Min(q->iZ, (VGfloat)iZFar); } } - else + else*/ { // in this case we are just dragging and startindex and left index are // same so we need to interpolate z for all items coming/leaving center // of the screen. - q->iZ = HgVgHelper::Lerp((VGfloat)iZNear, (VGfloat)iZFar, Abs(q->iX / leftX)); + + q->iZ = EaseInQuad((VGfloat)zNear, (VGfloat)iZFar, BoundValue(Abs(q->iX / leftX), 0, 1)); q->iZ = Min(q->iZ, (VGfloat)iZFar); } @@ -1139,4 +1192,10 @@ iFlipXY = aEnabled; } +void CHgVgMediaWallRenderer::EnableLandscapeMode(TBool enabled) +{ + iLandscape = enabled; +} + + // End of File diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/ganes/src/HgVgScrollBar.cpp --- a/uifw/ganes/src/HgVgScrollBar.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/ganes/src/HgVgScrollBar.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -169,7 +169,7 @@ const TSize& /*aSize*/, const TRect& aWindowRect, TReal aAlpha) const { TRgb color(255, 255, 255, aAlpha * 255.0f); - HgVgHelper::DrawImageColorized(aImage, color, aPosition, aWindowRect, EFalse); + HgVgHelper::DrawImageColorized(aImage, color, aPosition, aWindowRect, EFalse, iLandscape); } TBool CHgVgScrollBar::IsEnabled() const @@ -195,6 +195,10 @@ iScrollbar->InitScrollBarL(aScrollbarRect, aTotalSize, aViewSize, aLandscapeScrolling); } +void CHgVgScrollBar::EnableLandscapeRendering(TBool aEnabled) +{ + iLandscape = aEnabled; +} // End of File diff -r aabf2c525e0f -r 9f56a4e1b8ab uifw/ganes/src/HgVgSkinRenderer.cpp --- a/uifw/ganes/src/HgVgSkinRenderer.cpp Fri Mar 12 15:43:43 2010 +0200 +++ b/uifw/ganes/src/HgVgSkinRenderer.cpp Mon Mar 15 12:41:34 2010 +0200 @@ -137,7 +137,13 @@ // void CHgVgSkinRenderer::Draw() const { - HgVgHelper::DrawImage(iSkinImage, TPoint(0, 0), iRect); + HgVgHelper::DrawImage(iSkinImage, TPoint(0, 0), iRect, EFalse, iLandscape); } +void CHgVgSkinRenderer::EnableLanscapeRendering(TBool aLandscape) +{ + iLandscape = aLandscape; +} + + // End of File